Finding the
nearest corner
Its sibling exhibit asked for the shortest vector in a lattice. This one asks something subtler: given a target point floating off the grid, which lattice corner is closest? Answer it and you can decrypt. Fail, and you're staring at noise. This is the ground Kyber stands on.
A point that isn't on the grid
Drag the target anywhere. The Closest Vector Problem asks for the lattice point nearest to it. In two dimensions your eye finds it instantly — but your eye is using the grid's true shape, which the attacker doesn't get to see.
Rounding in the basis you're handed
The natural algorithm — Babai's rounding — rewrites the target in terms of the two basis vectors, then rounds each coordinate to the nearest whole number. It's fast and exact when the vectors are short and near-perpendicular. When they're long and skewed, the rounding boxes are stretched slivers, and the nearest lattice coordinates point at the wrong corner.
- Good basisthe trapdoorShort, near-perpendicular vectors. Rounding lands on the true nearest corner every time.
- Bad basiswhat an attacker getsLong, skewed vectors for the same lattice. Rounding misfires on most targets — about four in five.
Add noise, and you have Learning With Errors
Here is the geometric model behind noisy lattice encryption. Take a genuine lattice point, nudge it by a small random error, and publish the result — that's a ciphertext. Decryption is a Closest Vector Problem: round back to the nearest corner to recover the point. It works only while the noise stays inside the cell around that corner. Push the noise slider and watch even the good basis start to fail as the error grows past what its cell can absorb.
What ML-KEM actually holds
The two-basis picture above is the classical way to build a lattice trapdoor, and it is how schemes in the GGH and NTRU lineage work. It is not how the deployed standards are keyed, and the difference is worth stating plainly. ML-KEM (Kyber) and ML-DSA (Dilithium) publish a matrix A together with a noisy product of that matrix and a short secret vector:
There is no secret good basis anywhere in that key. §157 is that equation, live — solve it with the noise off, then switch the noise on and watch the same algebra collapse. Recovering s from (A, t) is the Module-LWE problem, which lives in the polynomial ring next door. Decryption does not round with a private basis either — it uses s to cancel the large shared term out of the ciphertext, leaving the message plus a little noise, and then rounds that away.
So why keep this exhibit? Because the geometry survives the change of key format. LWE is a bounded-distance decoding problem: the ciphertext is a point sitting near a lattice point, and everything you just watched — why a noise budget exists, why exceeding it breaks decryption, why a skewed view of a lattice is useless — is what the noise is defending. The best known attacks on ML-KEM run lattice reduction and then solve exactly this problem. The picture is right; only the key layout differs.
Why the owner can still get in
Where the SVP exhibit showed why the secret stays hidden, this one shows why its holder can still decrypt — and why the noise budget is the whole game. Set the error too small and an attacker can decode the ciphertext themselves; too large and the legitimate recipient rounds to the wrong answer. Every lattice standard surveyed in Modern Cryptography is, in part, a careful choice of that margin.
Three views of one problem. §147 is the geometry — why the secret stays hidden. §152 is the decoding — why its owner still gets in. §157 is the algebra — what the keys are actually made of. Also related: Reduction & Proof, for what "reduces to this problem" claims.