Quantum Computing: A Blessing or a Curse
In recent years we have seen a lot of the big technology companies taking an interest in this subject and starting a race for the first quantum computer to be used in the industry. Quantum computers promise to offer a great speedup and solve a lot of the problems in the technology industry. For example, it could improve areas like artificial intelligence, cybersecurity, drug development, and much more.
Although it can be seen as an element of improvement it also creates some serious problems while trying to fix the existing ones especially when we think about its impact in the Cyber Security field. We will compare its impact in Cryptography by supplying a good use of quantum randomness while keeping in mind the harm that it might do when talking about the possibility to break encryption.
However, as John Gribbin states in his book: In Search of Schrödinger’s Cat: Quantum Physics and Reality: “It is better to debate a question without settling it than to settle a question without debating it.” Therefore, we will evaluate the randomness of a Boolean sequence that was generated on a real quantum computer with the help of cloud quantum computing.
What is Quantum Computing?
Quantum computing is harnessing the power of quantum mechanics to help us get past the limitations that the current computing world has met. However, because the quantum state of a particle is a natural occurring phenomenon, it means that it can be reproduced in different ways. We will look at the variety of quantum computers and try to understand how the quantum processor works. Understanding the hardware part might help us understand the reason why quantum computing might be far from being complete.
Even though I am sure most of you already know the key terms behind quantum computing, I will briefly describe them before diving into the hardware and software part of quantum computing:
- Qubits – Can be seen as the bits of a classical computer. They have the ability to be 1 and 0 at the same time (more like a probability of 1 and a probability of 0)
- Superposition – Known as the Quantum State or Cat State (it is the moment when a qubit enters the quantum realm) in physics it is seen as the moment a particle can also be a wave
- Entanglement – Described by Einstein as “spooky action at a distance.” Is the invisible bond that two particles have (They spin in different directions). From a computer science perspective, anything that is applied to one entangled qubit will also be applied to the other end of the entanglement in the mirror.
- Gates – Similar to logical gates of a classical computer, but they have the propriety to be reversable. Can also be seen as a means to control the qubits.
For a more in-depth explanation of the concepts above, I suggest this article about Azure Quantum.
State of Quantum Computing
Quantum Computing Hardware
As I am writing this article, the fight for the first quantum computer or for “quantum supremacy” is still in progress. There are a lot of big tech companies or research laboratories that are trying to make a viable quantum computer. But this competitive spirit is also excellent for our cause because everyone is trying a different approach.
The reason there are so many approaches is that the end goal is to obtain and measure the quantum state of a particle which is a natural phenomenon. However, this is not the only restriction; they also take into consideration the scalability of the quantum computer because, in the end, for quantum computers to offer significant speedups, we either need to increase the coherence length (the amount of time that a qubit can maintain the quantum state) or to increase the maximum number of qubits that can achieve that state. I have conducted a survey on the types of quantum computers present on the market and grouped them by the quantum computer type, and here are the results:
One thing worth talking about is that most of the quantum computers from companies like Google, Intel, and IBM are using Gates model of quantum computers, which relies on low temperature to function therefore the scaling is challenging. On the other hand, companies like D-wave, Qilimanjaro Quantum Tech, NEC Corporation are using quantum annealing which relies on quantum fluctuations or to explain it in simple terms they try to find low-energy states of a problem and therefore the optimal or near-optimal combination of elements. Which is a great approach for optimizations problem.
But let’s focus on Trapped Ion Quantum computers because they are the ones that Azure Quantum is using as external providers. At its core, we have an Ion which is an atom that carries a positive or negative electric charge. We can change the state of the ion with pulses of energy, meaning that we can make an Ion to switch from state 0 to State 1 and then utilize a laser that wouldn’t affect the state 0 of our Ion but the 1 state. By charging the opposite state we will make the ion enter the quantum state and emit a photon that is a particle of light that can be detected. These ions are stabilized using electric fields to avoid entanglement with the environment. The whole process is happening inside a vacuum chamber to protect everything from the atmosphere. The quantum computing photons are then measured in order to obtain a value in our system.
Quantum Computing Software
In the past, programming of a simple analogical computer could mean some direct changes to the hardware components, in a similar fashion, the programming of a quantum computer means rearranging some components from the hardware part. In the industry, most approaches were an editor that allows you to directly rearrange the gates and would require specific operations like initialization and resets to create something known as a quantum circuit.
We have various SDK’s like Qiskit from IBM, Ocean from D-Wave, Cirq from Google, Bracket SDK from Amazon, and so on, but in my opinion, Microsoft offers’ the best SDK with Quantum Development Kit (QDK) that is based on Q#. But why Q#? Rather than supplying a way to arrange the entities interactively, Microsoft created Q# which is abstracting different concepts from the physical hardware of a quantum computer (most of them being procedures that must be implemented every time). Q# is best suited for algorithms offering a clean expression because a lot of the times, the adaptive algorithms are delicate to express with quantum circuit format.
Another key feature of Q# quantum programming language is the versatility that comes with not deciding the target hardware from the start or if a qubit is physical or logical. All that is decided at the runtime, including the state transfer of any qubit, the mappings required for the algorithm to execute, and even the remapping that might appear during the execution. Another bonus that it brings is its versatility, being able to be used in Jupyter Notebook (multiple notebooks support is in development), as a standalone application, in the command line, or with a host language.
The goal is to create a quantum program that would be able to run on any quantum computer because we have already seen how many types of quantum computers are in development. We have talked a lot about the philosophical and physical problems because they are closely related to our objective, but at the end of the day, we are writing this from a Computer Science perspective. The development of quantum computing is growing at a fast pace, and it could get to a point where we have multiple variations of quantum computers from a hardware perspective meaning that the quantum programs must be executed correctly on any type of quantum computer (discovered or not).
The fact that Microsoft took this into consideration when developing Q# is quite remarkable, and because of this, Q# focuses on hardware abstraction allowing it to be easily rearranged (providing reusable builds) in case of a general. In addition, QDK offers a way of estimating the necessary resources without simulating the quantum state. This comes incredibly handy when we are thinking about implementing an algorithm like Shor’s or Grover’s because it could predict whether we can run it on the actual quantum computer or not. By doing so, saves us a lot of financial resources and time.
The ResourcesEstimator can be run directly from the .NET CLI because it is built over the Quantum Trace Simulator which is part of the quantum module within .NET.
Applications of quantum computing
There are a lot of applications for quantum computers in industries like medical (drug development), artificial intelligence, finance with fraud detection, high-frequency trading, marketing, cybersecurity, and much more.
From my point of view, the biggest impact will be in the cybersecurity field because it can either help or present a threat. The cybersecurity field is large, and there are numerous threats that quantum computers pose to industry, but we will narrow down our focus to cryptography. The key role of cryptography is to ensure the data is secure, which means that the receiver will get the message without the fear that it got intercepted and the information leaked. The idea of encrypting a message has been used since ancient Greece, and the idea is too interesting for me not to explain it.
For example, in the middle of a war, a message containing the next strategic decision had to be delivered to the generals, if that message would be intercepted by the enemy could mean the loss of the war. To prevent that, the Greeks decided to encrypt the message with a certain key, and only the generals would know that certain key, and without it, the message would not have any meaning.
We will debate the exact implications of quantum computing in cryptography and analyze other quantum cryptography protocols so stay tuned!