Tag: Cryptography

  • The Same Trick, Different Physics

    The Same Trick, Different Physics

    In the last post, we walked through how Alan Turing’s bombe broke a German cipher that 159 quintillion possible settings had supposedly made unbreakable. The breaking did not come from raw speed. It came from finding a structural rule in how Enigma was wired, a single tiny quirk that no letter could ever encrypt to itself, and compiling that rule into electrical hardware. The bombe did not check possibilities. It arranged copper wires so that the right rotor setting was the only configuration whose internal logic did not destroy itself. The wrong settings collapsed under their own contradictions. The right one survived. A relay clicked. The Germans gave up 159 quintillion settings. Turing gave back the daily key within the hour.

    That principle is the spine of this whole series. You do not defeat an astronomical number by counting through it. You defeat it by exploiting structure.

    This post is about the modern version of that move. A quantum computer is, at its core, a machine built to exploit a different kind of structure than the bombe did, on a substrate so different from copper wires that almost everything your intuition tells you about computers will have to be set aside. By the end of this post, you will have a working model of what a quantum computer actually is, what it does, and why “it tries every possibility at once” is the wrong way to think about it. That model is what the rest of the series is going to build on.

    Let me start with the central claim, and then we will unpack it.

    The same trick, different physics

    When a quantum computer runs the algorithm that breaks RSA, it does not try every possible answer one by one. It arranges a physical system so that every candidate answer is present at the same time, in a combined state, and then it manipulates that combined state so the right answer reinforces itself and the wrong answers cancel each other out.

    If that sentence did not quite click, if “the wrong answers cancel each other out” sounded more like a slogan than an explanation, good. You are paying attention. That sentence is the entire mystery of this series compressed into one line, and I am not going to pretend a single analogy can unpack it here. It is going to take the next few posts to earn it. For now, just hold the shape of the claim. The machine does not check the answers. It arranges them so that the right one survives. We will spend the rest of the series making that real.

    Here is what I want you to notice. The shape of that claim is exactly the same as what the bombe did.

    The bombe arranged electrical circuits so that the right rotor setting was the only configuration where contradictions did not destroy themselves. A quantum computer arranges a quantum system so that the right answer is the only one whose components do not destroy themselves. The substrate is utterly different. Copper wires and electrical current have been replaced by something much stranger. But the principle is the same. Create physical conditions where the right answer is the only one that survives.

    Let me try to give you a handle on this before we go any further.

    Imagine a room full of people all shouting random numbers at the same volume. You cannot hear any individual number, because the room is just noise. Now imagine you could rearrange the room so that everyone shouting the correct number found themselves shouting in unison, while everyone shouting any wrong number found themselves paired with someone shouting the exact opposite, cancelling each other to silence. At the end, only one number is audible. You did not check any of the shouters. You did not interview them one at a time. You arranged the room so that the right number was the only one left.

    That is what a quantum computer does. The room is a quantum system. The shouting is the system’s physical evolution. The arrangement is the algorithm: the careful sequence of operations that sets up the cancellation pattern. The number left audible at the end is the answer.

    I want to flag something now, because it is going to happen to you repeatedly as you read the rest of this series.

    Your mind is going to keep wanting to ask “but how many possibilities does it check? How many times does it try?” That question is going to feel obvious. It is going to feel like the right question. It is also going to be the wrong question, every single time. It belongs to the old machine, the classical machine, the bombe and your laptop. The whole point of the new machine is that it does not check and does not try. It arranges.

    Every time you catch yourself reaching for “how many,” stop and ask “what is the arrangement?” That instinct will fight you. Especially when it fights you, hold the new model. You are not failing to understand. You are watching your old mental model lose ground to a new one, and that takes time.

    The next three sections explain the three concepts you need in order to understand how the arrangement actually gets made. They are called superposition, entanglement, and measurement. Each one is a piece of the answer to the question “how do you build a room where the right number is the only one left.”

    Superposition

    A qubit’s state is not a value. It is a combination.

    A classical bit, the thing your laptop uses, has a value. It is a 0 or it is a 1. At any given instant, it is definitely one or the other. You could open up your laptop, freeze time, and find out which. There is always a fact of the matter.

    A qubit, short for quantum bit, is not like this. A qubit’s state is a specific weighted blend of 0-ness and 1-ness, both genuinely present at the same time. The weights are numbers that determine how the qubit behaves during the computation and what is likely to be observed when it is measured. There is no underlying fact of the matter about whether the qubit is “really” 0 or 1 before measurement. The combination is the state.

    This is the single most important conceptual shift in the entire series. If you get this one, everything else follows. If you do not get this one, nothing else will quite work. So let me try an analogy.

    Imagine dropping two stones into a still pond at the same time. Two sets of ripples spread out from where the stones landed, and where the ripples meet they combine. At any given point on the water’s surface, the height of the water is the sum of what the two waves are doing at that point. Where two crests meet, the water rises higher than either wave alone would have made it. Where a crest meets a trough, they cancel and the water lies flat. The combined ripple pattern is not two separate waves sitting next to each other. It is one pattern, a real and unified state of the pond’s surface, with properties that neither original wave had on its own.

    A qubit in superposition is like that combined wave pattern. It is not secretly a 0 or a 1. It is a real combination, a single unified state, with its own properties that no definite 0 or no definite 1 has on its own. The combination is the state, the same way the rippling water surface is the state of the pond. Asking “but which one is it really” is like asking which of the two original ripples the water surface really is. The question has no answer, because the premise is wrong. There is only the combined surface.

    There is one place this analogy is imperfect, and I want to flag it. The two stones in a pond are real, separate things. You watched them fall. The ripples have an origin. A qubit in superposition does not have two separable origins like that. The combination is more fundamental than the combining-of-two-things picture suggests. But the part that matters, that the combination is a real state with its own properties rather than a hidden version of one of its parts, is the part that transfers.

    This is also why you have probably heard a qubit described as “a coin that is both heads and tails until you measure it or look at it.” That analogy is wrong, and it is wrong in a specific way that matters.

    A spinning coin in the air has a definite state at every instant. It is heads or tails or somewhere in between, and it is something specific at every moment, even if you cannot see it because it is moving too fast. A coin under your hand, after it has landed, also has a definite state. It is heads or it is tails. You just do not know which yet. Both of these are examples of what physicists call classical uncertainty: there is a fact of the matter, and you have not seen it.

    A qubit in superposition is not classical uncertainty. There is no hidden fact of the matter. The combination is the state, and there is nothing underneath it. This is the difference between not knowing and not being. The coin is heads or tails and you do not know. The qubit is genuinely a combination, and there is no “really” underneath.

    This is also why the other thing you have probably heard, “a quantum computer tries every possibility at once,” is wrong. A qubit in superposition is not running parallel computations on parallel values in parallel universes. It is a single physical system in a combined state, evolving as one thing. There are no parallel copies. There is one system, in one state, and that state happens to be a combination.

    Hold onto the pond. We are going to drop more stones into it.

    Entanglement

    Two qubits can become correlated in a way that has no classical equivalent.

    This is the second concept, and it is the one that lets superposition do work. A single qubit in superposition is interesting on its own, but it does not yet break anything. What breaks RSA is what happens when many qubits are in superposition together, in a way where their states are linked.

    Let me start with what entanglement is not.

    Imagine you have a pair of gloves, one left and one right. You pack them into two identical boxes without looking, ship one box to Tokyo and one to São Paulo, and never look inside either box. A friend in Tokyo opens her box and finds a left glove. The instant she sees the left glove, she knows São Paulo has the right one. There was no signal sent. There was no communication. The information was determined the moment you packed the boxes. You just did not know which box had which glove until she looked.

    This is classical correlation, and it is exactly what entanglement is not. The gloves had definite identities the whole time. The boxes were left-or-right from the start. The only thing that changed when your friend opened the box was your knowledge.

    Now picture the pond again. Drop two stones in at once, but this time the stones are special. They are wired together in a way that the ripples they make are not just two separate ripple patterns combining on the surface. The two ripple patterns share a state. Whatever the surface of the water is doing in the region around the first stone is bound up with what the surface is doing in the region around the second stone, in a way that you cannot describe one without referencing the other. The two ripples are not independent waves that happen to overlap. They are a single combined pattern that belongs to the pond as a whole, and trying to talk about “just the first ripple” misses what is actually there.

    That is entanglement. Two qubits in an entangled state are not two separate qubits, each in its own superposition, that happen to be near each other. They are a single combined state that belongs to the pair, and you cannot describe one qubit without referencing the other. Measure one of them and you have not just discovered what it was, you have constrained what the other one will be, even if they are physically far apart.

    The reason this matters for breaking RSA is this. Superposition gets all the candidate answers into the same physical system at once. Entanglement is what lets those candidates interfere with each other. Without entanglement, you would have a bunch of qubits each independently in superposition, and there would be no way for the wrong answers to cancel each other out. With entanglement, the qubits share a joint state, and that joint state can be arranged so the components reinforce and cancel in exactly the way we need.

    Go back to the room of shouters from a few sections ago. The reason that room works is that the shouters are not independent. The cancellation pattern, where everyone shouting a wrong number is paired with someone shouting the exact opposite at the exact same volume, so the two voices meet in the air and become silence, requires the shouters to be coordinated. If they were each shouting independently, with no relationship to each other, you could not engineer cancellation. You would just have noise. Entanglement is what coordinates the shouters. It is what makes the cancellation possible.

    The discomfort you might be feeling right now, that the gloves-in-boxes case sounds almost like entanglement but does not quite reach it, is the right discomfort to feel. Classical correlation is information you do not yet have about a fact that already exists. Quantum entanglement is genuine correlation between qubits whose states are not yet determined. The difference between not knowing and not being, which we named in the last section about superposition, applies to entanglement too. The gloves are left-or-right and you do not know. Entangled qubits are genuinely a joint state, and there is no separable underlying truth about either of them until you measure.

    Measurement

    When you measure a quantum system, the superposition ends.

    The system, which had been in a combined state, commits to a definite outcome. One of the possibilities that was combined in the superposition becomes the observed result, and that is what you read out. The weights in the superposition determine the probabilities of each possible outcome, but the outcome itself is one definite thing, not a combination.

    This is the moment of knowing, and it is the quantum analog of the bombe’s relay clicking, motor stopping, and operator writing down the setting. The machine has not searched. It has arranged its physical state so that, when observed, the right answer is overwhelmingly likely to be what comes out.

    Imagine reaching into the room of shouters and asking, after the arrangement is complete, “what number is being shouted?” If the room has been arranged correctly, the right answer is the only one audible, and that is what you hear. If the room has not been arranged, if the shouts are still random and uncoordinated, you would just hear one number at random with no useful relationship to anything. The arrangement is what gives the measurement meaning. Without the arrangement, the measurement is noise.

    This is where you have to be careful, because measurement in a quantum system is probabilistic, but it is probabilistic in a specific way that is easy to misunderstand.

    A coin under your hand has a 50/50 chance of being heads or tails. The randomness there is your ignorance. The coin is one or the other, and your odds are 50/50 because you do not know which.

    A qubit in a 50/50 superposition gives you heads or tails with equal probability when you measure it, but the randomness is not your ignorance. The randomness is built into the physics. The qubit was not secretly heads-or-tails before you measured. The combined state genuinely was a combination, and the act of measurement is what forced the system to commit. The probability is not a measure of what you do not know. It is a measure of how the combined state was weighted.

    That distinction matters because the weights are what a quantum algorithm controls.

    When Shor’s algorithm runs, the quantum computer does not produce a uniform superposition where every possible answer has the same weight. It produces an arranged superposition where the right answer has overwhelming weight and the wrong answers cancel each other out. Measurement on that arranged state does not give you a random answer. It gives you the right answer, with high probability, in one shot. If the measurement comes out wrong (and sometimes it does, because the cancellation is rarely perfect), the algorithm just runs again. A handful of runs is enough to converge on the right answer.

    Hold that, because it is the part of the picture that closes the loop on something we said earlier.

    When your mind keeps asking “but how many times does it try?”, remember that the quantum computer is not trying anything in the classical sense. It is running the arrangement, measuring once, and getting an answer that is overwhelmingly likely to be correct. The handful of extra runs are not “trying again”; they are insurance against the small probability that the measurement, on any given run, happened to land on one of the components that did not quite cancel. The arrangement does the work. The measurement reads it out.

    Both machines have a moment of physical recognition. The bombe’s relay clicks. The quantum computer’s measurement registers an answer. Neither machine has searched for anything. Both have arranged physical conditions where the right answer is what survives, and the moment of recognition is when the physics presents the survivor for us to see.

    What to carry forward

    You are now equipped with the mental model the posts that follow are going to build on. A quick summary of what you should be holding in your head when you finish reading this one.

    A quantum computer is not a faster classical computer. It is a different kind of machine, operating on different physics, doing a different kind of thing. It does not check answers. It arranges physical conditions where the right answer is the only one that survives, and then it measures.

    A qubit is not a faster bit. It is a unified state that is a real combination of 0 and 1, not a hidden version of one of them. Asking which one it really is misses what the state actually is.

    Entanglement is not just correlation. Two entangled qubits share a joint state that cannot be described one at a time. This is what coordinates many qubits in superposition so the right answer can reinforce itself and the wrong answers can cancel each other out.

    Measurement is not searching. It is the moment the arrangement is read out. A well-designed quantum algorithm arranges the system so that, when measured, the right answer is overwhelmingly likely to appear in a single shot.

    And if you catch your mind doing this in the next few weeks, that is normal. You will read about quantum computing somewhere else, see the words “tries every possibility at once” or “exists in many states simultaneously,” and feel the classical model trying to reassert itself. That feeling is the old habit fighting the new model. It does not mean you do not understand. It means the model has not fully settled in yet. Hold the new model. The old habit fades.

    Today, the cryptography that protects your bank login, your encrypted messages, your software updates, and roughly every secure connection you make in a day has its own hidden structural weakness. It is not a flaw in the engineering. It is a property of the mathematics itself. And a quantum computer is the machine that can compile that weakness into physics, the same way Turing’s bombe compiled Enigma’s weakness into copper.

    The next post is about the mathematics. The post after that is about the structural weakness. The post after that is about how the machine turns that weakness into the cancellation I could not unpack here. By the end of the series, you will have followed the same kind of move Turing made, from a structural rule that looks like nothing, all the way to the machine that breaks the unbreakable. The substrate is different. The principle is the same.

    Fediverse Reactions
  • The Machine That Proved You Can Break the Unbreakable

    The Machine That Proved You Can Break the Unbreakable

    It started with a certificate.

    I work in public key infrastructure. The shorthand for what I do is PKI, and the practical version is that I spend my days working with the systems that make it safe to type your bank password into a web browser. I’m the person who needed to understand what the cryptographer’s work means for the world I live in, and I did the work to find out, and now I am going to walk you through it. For the last thirty years, almost all of that work has rested on a small family of math problems that everyone in my field knows by name: RSA, ECC, Diffie-Hellman. These are the foundations of your bank login, your encrypted messages, your software updates, and roughly every secure connection on the internet.

    The industry I work in is in the middle of replacing all of it.

    The reason we’re replacing it is a kind of computer that does not yet exist. Quantum computers, the real ones, capable of breaking the cryptography that protects the internet today, are still years away. But the migration to new algorithms is happening now, and it is happening because of a credible threat from a machine almost nobody, including most of the people in my own industry, actually understands.

    I needed to understand it. So I started reading.

    What I found was that the articles available to a smart non-specialist reader are not very good. They tell you that quantum computers try every possibility at once. They tell you a qubit (short for quantum bit) is both 0 and 1 at the same time. They tell you it’s like a coin that’s both heads and tails until you look at it. Each of these explanations gestures at something profound, and then backs away before saying what the something actually is. After a few weeks of reading, I started to suspect that most of the writers did not understand the thing they were trying to explain.

    This is the first of several posts about what I found when I kept going. By the end of the series, you will have a real understanding of how a quantum computer breaks the cryptography that protects almost every secure connection you make in a day. There will be no hand-waving. There will be some work for you to do, and I will not waste your effort.

    But to get there, we have to throw out almost everything you have been told about what quantum computers are. The best way I have found to do that is to start somewhere most of us have already been: with a man named Alan Turing, a machine called the bombe, and a code the Germans thought could not be broken.

    This first post is about that machine and that code. It is about how something the Germans considered mathematically impossible to break was broken anyway, day after day, by exploiting a single tiny weakness in the machine. The reason we are starting here is that the same principle is what makes quantum computers dangerous to the cryptography we use today. Once you see what Turing did at Bletchley Park, the rest of the series is the modern version of the same story.

    The code the Germans trusted

    If you have not seen The Imitation Game, I highly recommend it. The film is a useful entry point to a story that matters here, and most of what I am about to walk you through will land more easily if you have a picture in your head of Bletchley Park, Alan Turing, and the rooms where the work happened. If you have already seen it, I am going to take you a layer deeper than the film does, into how the machine actually knew it had won.

    Here is the setup. The Germans, during the Second World War, encrypted nearly all of their military communications with a machine called Enigma. Enigma was about the size of a typewriter. It had a keyboard, a set of rotors that scrambled letters as you typed, a plugboard that swapped letters around before and after the rotor stage, and a daily setting that changed all of those configurations at midnight. The Germans used it for everything from U-boat coordinates to weather reports to the communications of the German high command.

    The reason the Germans believed Enigma was unbreakable came down to one number.

    A standard three-rotor Enigma with a ten-pair plugboard had exactly 158,962,555,217,826,360,000 possible settings. About 159 quintillion. The Germans looked at that number and concluded, reasonably, that no machine of their era could ever grind through 159 quintillion possibilities by counting. They were right about that part. They were wrong about everything else.

    The German Navy used an even more complex four-rotor version of Enigma, which made the math harder still. The British codebreakers eventually broke that one too, but it took longer, and there was a period in 1942 when they could not read U-boat traffic at all. Hold that detail. We will come back to the idea of “just make the key bigger” later in the series, because it is exactly the move companies will reach for when they hear that quantum computers can break the cryptography we use today.

    The hidden crack

    Enigma had one rule baked into its physics that the Germans did not understand was a vulnerability.

    Because of how the machine’s reflector was wired, no letter could ever encrypt to itself. An A could become any of the other twenty-five letters of the alphabet, but never an A. A B could become anything except a B. This sounds like a tiny detail. It was the crack that broke everything.

    To see why, think about a detective working a case. The detective knows one ironclad rule: the culprit cannot have been somewhere else at the time of the crime. Every suspect with a verified alibi is eliminated instantly. Not by proving them innocent. By structural impossibility. The detective does not have to investigate those suspects further. The alibi rules them out.

    Enigma’s quirk worked the same way. Any guess that required a letter to encrypt to itself was instantly, structurally impossible. Alibied out. No further checking needed.

    This is the first move you should hold on to, because it returns later. The way you break something that looks unbreakable is not by checking every possibility. It is by finding a structural rule that lets you eliminate entire categories of possibilities at once.

    Cribs

    Even with the no-self-encryption rule, the machine Turing designed could not work in a vacuum. That machine was called the bombe, a name borrowed from the bomba kryptologiczna built by Polish cryptographers who had been attacking Enigma since the 1930s and whose work Turing’s design built on. A later refinement by Gordon Welchman, the diagonal board, was what made the bombe practical, by ruling out most of the false leads that would otherwise have buried the real answer. The bombe needed a foothold. That foothold was something codebreakers called a crib: a guessed fragment of plaintext (the original message, before encryption). The encrypted version, the scrambled output that came over the radio, is called the ciphertext.

    The Germans were creatures of habit. Weather reports broadcast on regular schedules always began with the word WETTER, the German word for weather. Routine military messages ended with HEIL HITLER. Operators, against orders, repeatedly used their girlfriends’ names or simple keyboard patterns like QWERTZU as the message-specific settings that prefaced the real ciphertext. The film The Imitation Game dramatizes this as a single character whose German counterpart always used the name Cilly. The real history calls these patterns Cillies, and they were not the work of one operator. They were a class of operational discipline failures committed across the entire German military for years.

    The codebreakers did not see the plaintext. They inferred it. From radio traffic analysis, captured codebooks, and operational pattern recognition, they knew which intercepted messages were weather reports, and they knew weather reports began with WETTER. They could not read the message yet. They could guess what its first six letters had to be.

    A guess, combined with a structural rule, was enough.

    How the bombe worked

    Turing’s insight was that you could compile the logical implications of a crib into an electrical circuit.

    Here is what that means in plain language. Suppose you guess that a particular stretch of ciphertext is the encryption of WETTER. If your guess is right, and if the rotor positions you are testing are right, then a chain of letter relationships is implied. The first ciphertext letter must be the encrypted form of W. The second must be the encrypted form of E. And so on. Those relationships form a web of constraints. The bombe energized the entire web at once with electrical current.

    For most rotor settings, the web of constraints contradicted itself. The current would flow through the wires and find that the rotor setting required letter A to equal letter B, and also required letter A to equal letter C, and also required letter A to equal letter Q. Three different requirements for the same letter. Impossible. Current would distribute itself across all twenty-six possibilities for some test letter, which the machine read as “everything is still possible, no information yet, this setting is wrong, move on.”

    For one rotor setting in the entire space, the contradictions collapsed. Every implication held. Current flowed through exactly one wire for the test letter, with the other twenty-five dark. A relay clicked. A motor stopped. An operator wrote down the setting.

    The bombe had not read anything. It had not decrypted a message. It had found the one rotor configuration where the hypotheses generated by the crib did not contradict themselves.

    The speed of it

    The mechanical part of the bombe was not slow. The top drum of each rotor assembly spun at about one hundred rotations per minute. A single bombe could run through all 17,576 possible rotor positions in roughly twenty minutes. With thirty-six rotor sets working in parallel, and often several bombes running at once, the codebreakers at Bletchley Park were frequently cracking the daily Enigma key within an hour of getting a viable crib.

    Twenty minutes. Out of a space of 159 quintillion settings.

    The Germans were not wrong that 159 quintillion was a number too large to count through. They were wrong to assume that counting through it was the only way to break their cipher.

    You do not defeat an astronomical number by counting through it. You defeat it by exploiting structure.

    That sentence is the spine of everything we are going to talk about for the rest of this series. Hold it. We will come back to it more than once.

    What the bombe was actually looking for

    There is one more thing to notice about how the bombe worked, because it is the move that connects directly to quantum computing.

    The bombe did not test rotor settings by decrypting messages and checking whether the result looked like German. It would not have known German if it saw it. It searched for consistency. At the right rotor setting, the implications generated by the crib held together. At every wrong setting, they contradicted themselves.

    Read that again, because it is the part most explanations of the bombe miss. The bombe did not check answers. It arranged a physical situation where every wrong setting destroyed itself, and the right one was simply the setting left standing.

    What the bombe tells us about computers

    The bombe was not a general-purpose computer. It was a single-purpose machine, built to attack one cipher, and it could not do anything else. But the way it worked tells us something important about what every computer is, including the one you are reading this on.

    A computer is a physical machine that arranges electricity, or light, or atoms, according to rules, and produces an output we can read. The bombe was electromechanical. Your laptop is silicon. Different substrates, same kind of thing.

    What makes a machine computational is that the mathematical structure of a problem can be compiled into physical structure. The bombe’s wires were Enigma’s logical relationships rendered in copper. Your laptop’s transistors are the rules of arithmetic and logic rendered in silicon. The bombe did not think about Enigma. The bombe was Enigma’s logic, run backward in electricity.

    Every computer that has ever existed works the same fundamental way. Your laptop, your phone, the bombe, the supercomputers at national laboratories. Each one has definite states, deterministic transitions, and symbols manipulated according to rules. Faster, bigger, more parallel, but the same model. This is what computation has been since Turing wrote down the formal definition of it in 1936, three years before he walked into Bletchley Park.

    This kind of computer is what we now call classical. Not because it is old, but because it follows the rules of classical physics, the physics of the everyday world. The states are definite. The operations are deterministic. The world the machine lives in is the world you live in.

    What comes next

    Turing’s bombe broke a code that the Germans had every reason to believe was unbreakable. The breaking did not come from a faster machine grinding through more possibilities. It came from finding a tiny structural rule, a single quirk in how Enigma was wired, and compiling that rule into physics. Once the rule was in copper, the impossible became routine. Most days for the rest of the war.

    Today, the cryptography that protects almost every secure connection on the internet has its own hidden structural weakness. It is not a flaw in the engineering. It is a property of the mathematics itself. And there is a machine being built right now, by companies you have heard of and some you have not, that can compile that weakness into physics the way Turing compiled Enigma’s weakness into copper.

    That machine is a quantum computer. It is not a faster version of your laptop. It is a different kind of machine, operating on different physics, doing a different kind of thing. The next post is about what that means. We are going to take the principle the bombe established, that you defeat an astronomical number not by counting through it but by exploiting structure, and we are going to see how a quantum computer does the same trick on a substrate so different from copper wires that almost everything your intuition tells you about computers will have to be set aside.

    The Germans of 1940 could not have imagined the bombe. We are about to look at the machine that the cryptographers of today cannot yet build, but are racing to defend against anyway.

    Fediverse Reactions