Bitcoin is hitting new all-time highs, and lots of people are suddenly interested. When they start asking general questions, I either explain what I can or point them to an “Intro to Bitcoin” podcast I did. Some questions require more elaborate answers – one of those topics is Coinjoin.

Coinjoin is an idea that goes way back, to at least 2014. The basic idea is to combine transaction inputs and outputs in order to obscure the source of those transactions. So instead of n number of users creating separate transactions, all n inputs and outputs are combined into a single transaction. If you look at the transaction detail, you’ll see a transaction where one input is no longer associated with a one set of inputs and outputs. Now those inputs are associated with the true outputs only with a certain probability.

Read MoreDedicated OSINT linux distros seem to be getting more popular now, bundled with tools for the job. Today I tried one from Trace Labs based on Kali linux. Kali linux is a debian-based distro loved by pentesters, and usually comes bundled with lots of tools for scanning, attacking, persisting and reporting.

This distro has very few of the pentesting tools you normally expect with Kali. That makes sense, since the main area of overlap is reconnaisance, and there are few programs that you would normally expect to see in Kali.

Read MoreBokeh is a python module designed for plotting and graphing data in a web browser. I played around with this using Jupyter notebooks, Bokeh server scripts, and embedded in a Flask app.

I was able to generate a plot with a Bitcoin price ticker, which seems like a nice accomplishment for a starter project. I added some buttons to choose alternate cryptocurrencies to chart. It was a good experience, read on for the details.

Read MoreCurrent “NISQ” quantum computers often produce errors when measurements are taken or gating operations are applied, and it is very costly in every sense of the term to deal with them. The ‘N’ in NISQ refers to “noisy; a reference to the fact that they are not capable of error correction.

High error rates are costly because you cannot copy a qubit during critical steps in the computational process. High error rates are also costly because error correction involves either redundancy in systems where there is a premium on qubits to begin with, or sending and receiving signals to and from the control systems into and out of the quantum processor hardware. Keep in mind also that these computations are often run thousands of times to give decisive results since those results are probabilistic in nature, and high error rates tend to increase the number of times these are run.

Read MoreThe makers of Autopsy and The Sleuth Kit forensic software are offering their Autopsy training course for a month for all those of us who are staying at home due to Covid-19. The course is from Basis Technology and the offer ends on May 15th. Go here for details: https://autopsy.com/support/training/covid-19-free-autopsy-training/

Autopsy is a general purpose toolkit for digital forensic investigations. It provides a GUI for their Sleth Kit software and other software, and is extensible via modules. The nice thing about Autopsy is the ability to automate the process of churning through and organizing large amounts of data like images from laptops and smartphones.

Read MoreI recently recorded a podcast on this topic, and provided the obvious answer: because they will be able to do things that conventional computers can never do. I offered huge numbers to convey the potential, and analogies to illustrate the key differences, since the math required to really understand quantum computing is not compatible with audio podcasts.

The podcast, called *What is quantum computing and why should we care?* was published on HPR.

My strategy was to use an analogy I got from Talia Gershon from IBM. She talks about qubits by having the audience imagine spinning coins. Normal bits in conventional computers are just coins that are laying on a surface with either heads or tails facing up, that we can consider to be like 0 or 1. A quantum bit, or qubit, is a spinning coin. It’s not exactly a heads or a tails, but some combination of both of those possibilities.

The entry level explanation of quantum computing is that two spooky properties of quantum mechanics are used to do things current computers cannot. I mention those two quantum effects by name: superposition and entanglement, and proceed to use the spinning coins on a tabletop analogy to explain them.

Read MoreWelcome back for another look at the basics of quantum computer programming. We’re going to continue to use IBM’s excellent programming framework called Qiskit, and Jupyter notebooks to demonstrate with the usual disclaimer that you can code this without the notebook, and the same ideas can be realized in any quantum programming language. If you need a refresher on the basic math of quantum programming, we covered it in the previous two posts, although there is much more to it. If you want to review the entanglement program we wrote, first ran on a local simulator and then ran on a real quantum computer, feel free to review those as well, or maybe just review how to get started uing IBM Q.

The issue for this post is what can a quantum computer do that a conventional computer cannot? If Richard Feynman was the father of quantum computing, then David Deutsch was probably the uncle. Deutsch described a problem that takes multiple steps to solve on a classical computer and can be solved in a single step on a quantum computer. In this post we’ll describe the original version of the problem and show the quantum computer solution with hopefully a solid explanation.

Read MoreMimblewimble is the funny sounding and unconventional blockchain protocol that emphasizes scalability, privacy and fungeability. It is full of Harry Potter lore, cryptography and bright new ideas for cryptocurrency.

Due to the way mimblewimble is constructed, it’s best suited for comparisons to Bitcoin. If you need a quick refresher, consider giving my Intro to Bitcoin podcast a listen. Also, if you’re interested in learning more about the mimblewimble protocol you might want to listen to my Intro to Mimblewimble podcast on HPR as well.

Read MoreIn the previous post we started to explain how to understand quantum computing from a computer science perspective, even without knowing the underlying quantum mechanics. We did so by explaining that you can consider everything in terms of the math, and we began the process of explaining what happened in the quantum entanglement program we introduced in earlier posts.

It’s a useful technique to keep explaining things in a little more depth as we go down the rabbit hole. You may have noticed that I avoided qubits that are in a state of superposition in the last post, and chose to show the `CNOT`

gate instead of the `Hadamard`

gate. In fact I used `|0⟩`

$and$`|1⟩`

$$ which are special cases where the qubits will collapse down to 0 and 1 with 100% probability. Qubits that have been put into a state of superposition will have a different probability distribution.

I won’t pretend to understand the physics of quantum mechanics, it baffles me to be honest. I only know the words that the physics people use to describe what happens. My limited understanding of quantum computing comes purely from a computer science perspective, so that’s all I can try to share.

A quantum bit, or *qubit*, is conceptually just the particle-wave duality of matter at very small scales. That is to say that a particle does not exist as a tiny billiard ball at a specific place, but rather has a probabilistic existence as a waveform. That’s the case until it is interacted with, otherwise known as being observed, which causes the quantum information to be lost and the probabilistic set of possible values to collapse into a single value.

I’m not going to try to explain why that is, or what is really happening here, since it’s beyond my understanding. Instead, I want to look at just the basic math that we need to understand how the qubits are affected by our gate operations. So let’s stick to the math, and explain exactly what happened in our quantum entanglement program used in our previous posts.

Read MoreWe ran our quantum enatnglement program on a simulator in the previous post, so it’s pretty obvious what we need to do now. Qiskit is made for interacting with IBM’s quantum resources, so this is going to be easy. Let’s get started!

Qiskit has four main parts: *Aer*, *Aqua*, *Terra*, and *Ignis*. It is fashionable to name your quantum computing libraries and modules after the elemental forces it seems – others in the industry do it as well. The official qiskit documentation is the place to read up on this, but for our purposes let’s just point out that *Aer* has the simulator that we used in the previous post and handles management of the backends for us.

Qiskit is IBM’s open source, quantum computing environment for Python. We can use Qiskit to write programs to run in our local environment and run them on a simulator. We can also run them on IBM’s quantum computing resources via the IBM Q project. This currently includes six 5-qubit machines and one 14-qubit machine.

First we’ll need to install Qiskit, then create an account at the IBM Q site so that we can also run our programs on their quantum computers. *You can skip this if you have a quantum computer of your own to use instead.* We covered getting started with IBM Q Experience in the previous post. We used the quantum circuit builder to create two quantum registers and apply gates, then measure the result.