Disclosure: Some links on this site are affiliate links. If you purchase through them, we earn a small commission at no extra cost to you. Learn more

Classic vs. Computational Cryptography: A Brief History

TL;DR

Pre-1949 cryptography (Caesar, Enigma) implemented substitution and permutation physically, with security resting on keeping the mechanism secret. Claude Shannon's 1949 paper Communication Theory of Secrecy Systems reframed encryption as a mathematical object and defined perfect secrecy: a cipher is perfectly secret iff Pr[M=mC=c]=Pr[M=m]\Pr[M=m \mid C=c] = \Pr[M=m] for all messages and ciphertexts, which forces H(K)H(M)H(K) \geq H(M) — the key must carry at least as much entropy as the message. This is achievable (one-time pad) but impractical at scale. Modern cryptography (RSA, ECC, AES) abandons unconditional security for computational security: secrecy holds only against adversaries bounded to polynomial-time computation, resting on the assumed hardness of specific math problems. That assumption is what quantum algorithms attack — see Shor's Algorithm.

Physical Cryptography: Substitution and Permutation

Classical ciphers implement two operations: substitution (replace a symbol with another) and permutation (reorder symbols). Both are expressible as group-theoretic operations over a finite alphabet.

The Caesar cipher is modular addition over Z26\mathbb{Z}_{26}:

Equation
C=(P+k)mod26,P=(Ck)mod26C = (P + k) \bmod 26, \qquad P = (C - k) \bmod 26

The key space is Z26=26|\mathbb{Z}_{26}| = 26, trivially exhaustible. Enigma generalizes this to a composition of permutations — rotors, a reflector, and a plugboard — applied per keystroke:

Equation
π=πplugπreflectorπrotor3πrotor2πrotor1\pi = \pi_{\text{plug}} \circ \pi_{\text{reflector}} \circ \pi_{\text{rotor}_3} \circ \pi_{\text{rotor}_2} \circ \pi_{\text{rotor}_1}

Each πiS26\pi_i \in S_{26}, the symmetric group on 26 elements. The rotor state advances with every character, so the effective permutation changes each step. This inflates the key space to roughly 102310^{23}, but the security model is unchanged from Caesar's: an attacker who recovers the mechanism (rotor wiring, plugboard, initial state) recovers everything. There is no notion of security that survives disclosure of the algorithm — only of the key, and only informally.

The Conceptual Break: Shannon, 1949

Claude Shannon's Communication Theory of Secrecy Systems replaced "hard to break" with a formal, measurable claim. It defines a cipher as a triple of random variables — plaintext MM, ciphertext CC, key KK — and asks how much information CC leaks about MM.

Entropy quantifies uncertainty over a random variable XX with distribution pp:

Equation
H(X)=xp(x)log2p(x)H(X) = -\sum_{x} p(x) \log_2 p(x)

Perfect secrecy is defined as: observing the ciphertext changes nothing about the attacker's belief in the plaintext.

Equation
Pr[M=mC=c]=Pr[M=m]mM, cC\Pr[M = m \mid C = c] = \Pr[M = m] \qquad \forall\, m \in \mathcal{M},\ c \in \mathcal{C}

Equivalently, mutual information between plaintext and ciphertext is zero: I(M;C)=0I(M; C) = 0. This is an unconditional, information-theoretic guarantee — it holds against an adversary with unbounded computation and unbounded time.

The one-time pad meets the bound, and defines its cost

The one-time pad, C=MKC = M \oplus K with KK uniform and independent of MM, achieves I(M;C)=0I(M;C)=0: for any fixed cc, M=CKM = C \oplus K is uniformly distributed over M\mathcal{M} regardless of cc, since KK is uniform and independent.

Shannon also proved the converse: perfect secrecy requires

Equation
H(K)H(M)H(K) \geq H(M)

which for uniform variables means KM|\mathcal{K}| \geq |\mathcal{M}| — the key space must be at least as large as the message space, and in practice a fresh, uniform key at least as long as the message, never reused. This is a hard information-theoretic floor, not an engineering inconvenience: no algorithmic cleverness lowers it. It is also why the one-time pad, despite being provably unbreakable, never scaled — key distribution costs as much as the message itself.

From Unconditional to Computational Security

Shannon's bound makes information-theoretic secrecy impractical for arbitrary-length communication with a short, reusable key. Modern cryptography drops the unconditional requirement and substitutes a computational one: secrecy holds only against adversaries restricted to probabilistic polynomial time (PPT) in a security parameter λ\lambda.

Security is now stated as indistinguishability under a bounded adversary A\mathcal{A}, with advantage required to vanish faster than any inverse polynomial in λ\lambda (a negligible function):

Equation
Pr[A(C)=1M=m0]Pr[A(C)=1M=m1]negl(λ)\left| \Pr[\mathcal{A}(C) = 1 \mid M = m_0] - \Pr[\mathcal{A}(C) = 1 \mid M = m_1] \right| \leq \operatorname{negl}(\lambda)

This guarantee is conditional: it holds if some underlying problem — integer factorization for RSA, the elliptic-curve discrete logarithm for ECC — has no PPT algorithm. Unlike H(K)H(M)H(K) \geq H(M), this is not a proven lower bound; it is an unproven hardness assumption, empirically unbroken by classical algorithms after decades of cryptanalysis.

That distinction is exactly the crack a quantum adversary exploits. Shor's algorithm does not violate any information-theoretic law — it solves factoring and discrete log in polynomial time on a different model of computation, invalidating the assumption computational security was built on without touching Shannon's unconditional bound at all. See Shor's Algorithm for the mechanism.