If you have more than a few bank cards, door-entry keycodes, or other small numeric passwords to remember, it eventually gets to be a hassle. The worst, for me, is a bank card for a business account that I use once in a blue moon. I probably used it eight times in five years, and then they gave me a new card with a new PIN. Suck.
Quick, What’s My PIN?
How would a normal person cope with a proliferation of PINs? They’d write down the numbers on a piece of paper and keep it in their wallet. we all know how that ends, right? A lost wallet and multiple empty bank accounts. how would a hacker handle it? write each number down on the card itself, but encrypted, naturally, with the only unbreakable encryption scheme there is out there: the one-time pad (OTP).
The OTP is an odd duck among encryption methods. They’re meant to be decrypted in your head, but as long as the secret key remains safe, they’re rock solid. If you’ve ever tried to code up the s-boxes and all that adding, shifting, and mixing that goes on with a normal encryption method, OTPs are refreshingly simple. The tradeoff is a “long” key, but an OTP is absolutely perfect for encrypting your PINs.
The first part of this article appears to be the friendly “life-hack” pablum that you’ll get elsewhere, but don’t despair, it’s also a back-door introduction to the OTP. The second half dives into the one-time pad with some deep crypto intuition, some friendly math, and hopefully a convincing argument that writing down your encrypted PINs is the right thing to do. Along the way, I list the three things you can do wrong when implementing an OTP. (And none of them will shock you!) but in the end, my PIN encryption solution will break one of the three, and remain nonetheless sound. curious yet? Läs vidare.
The PIN Solution
So first the solution to the bank card problem: write your PIN encrypted with a secret that only you know. instead of needing to remember a four-digit number for each new card, you’ll just need one four-digit number forever. The key is to choose an encryption scheme that’s easy enough to undo so that you won’t look too strange when asked to type the PIN in at the bank teller’s window. This is the classic use of the OTP — an encryption that you can undo in your head.
First, randomly select a secret four-digit number. Then, subtract that number from your PIN and write the result on your card. To get your PIN, when standing in front of the bank teller, simply look down at the card and add the secret number back. The teller will think that you’ve written your PIN on the card. feel free to feel smug, because you’ve used an unbreakable encryption scheme.
Instead of normal addition and subtraction, with the carrying and borrowing across digits, you will want to use modulo-10 math — adding or subtracting ten from the result any time it gets outside the range 0-9. We’ll talk about why below, but for now, here’s a working example.
Suppose the PIN is 1234 — it has to happen so someone, right? — and my random secret number is 1337, naturally. Let’s encrypt. Subtracting 1 from 1 gives a zero, so I write that down. Subtracting 3 from 2 gives -1, which is where the modulo-10 arithmetic comes in. In this case, -1 turns into 9 by adding ten. 3 – 3 = 0, and 4 – 7 = 7, mod-10. My card now has 0907 written on it.
Now let’s decrypt. looking down at the card, I see a 0 and add 1. 9 + 3 = 12, however, so we’ll need to subtract ten to get 2. (That’s the reason to choose addition for the decryption stage, it’s easy to just drop any leading 1s.) 0 + 3 = 3 and 7 + 7 = 14 -> 4<. I type in 1234, and the money is mine! Once you get the hang of adding your secret number to any other number, digit-wise mod-10, you’ll be surprised how quickly it will work. try it out and see if you get good at it within ten minutes. One-Time Pads A one-time pad is both the simplest symmetric encryption scheme and also completely unbreakable. It has three crucial features, two of which were demonstrated above, and getting any of them wrong can be catastrophic. The most important feature of an OTP is that the password needs to be random, and the same length as the text that it encrypts — hence the four-digit secret for the PIN. In an OTP, everything revolves around the secret, which is also its Achilles’ heel. For a four-digit number, keeping a four-digit secret is no problem. but imagine that you want to send gigabytes of encrypted photos of your vacation to a friend. That’s a lot of key material to keep on-hand and secret. Original by [Matt_Crypto], Public DomainSecond, the method of combining the message with the secret has to be similar to the modulo arithmetic, in that the set of encrypted characters and the set of plaintext characters — the PIN in our example — have to map en till en. Mod-10 ensures this easily: both are in the range 0-9. maybe you’re familiar with using the XOR operator on binary data, which is the same thing as either additipå eller subtraktion, mod-2. (0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 och 1 + 1 = 2 -> 0.) Du kan också använda bokstäver och linda alfabetet runt vid “Z” som Caesar-cifferen eller ROT13, som bara kartlägger alfabetet i antal och gör matte Mod-26.
För det tredje, och det är kanske en följd av den första, du borde inte återanvända hemligheten i en engångsplatta. Du skulle tro att det var uppenbart, eftersom det är även i namnet på krypteringsmetoden, men det är svårt att göra i praktiken. Och i själva verket bryter mitt pin-krypteringsschema denna regel genom att använda samma hemlighet över flera tangenter. Vi kommer snart in i det.
Röra upp den perfekta krypteringen
Varför är en OTP obrytbar? Att bryta de flesta krypteringsscheman kokar ofta ner till sannolikhet och statistik. Om du till exempel krypterar en text med Caesar Cipher ovan, kartläggs varje bokstav i plaintext till ett annat enstaka brev varje gång det förekommer i cipertexten. Om du vet att den ursprungliga texten är på engelska, där den vanligaste bokstaven är “E”, är det en bra satsning att om “Q” är den vanligaste bokstaven i chiffertext, står den för “E”. Det vill säga, vi hittar statistiska likheter mellan plaintext och chiffertexten och använder dem för att göra en bro mellan de två.
Med en hemlig nyckel som är så lång som den plana, och slumpmässigt valda, bryter något statistiskt förhållande med chiffertexten. Med tanke på en specifik chiffertext som skrivs ner på mitt kort är varje stift från 0000 till 9999 möjligt, och om nyckeln valdes slumpmässigt, är lika sannolikt. Det finns ingen information om plaintext i chiffertexten – det är i huvudsak Claude Shannons bevis (absolut klassisk PDF) i ett nötskal. Och det är därför en OTP är oföränderlig.
Diana One-Time Pad [US NSA], Public Domainthis är faktiskt nyckeln till att förstå kryptografins fält: Det är ett försök att kryptera informationen om plaintext under krypteringsprocessen så att även om en kortare nyckel används, nej Statistiskt relevanta spår av plaintext kvarstår. Denna önskan om korta nycklar är inte bara en fråga om bekvämlighet heller: Föreställ dig att du och Hackaday var tvungen att utbyta 500 KIB av slumpmässiga data bara för att ladda ner den här artikeln och läsa den. Föreställ dig längden på WiFi-lösenordet som du måste skriva ner för gästerna! Det här är det meningen där OTP är trivial och ointressant – det kan vara obrännbart, men hemligheterna är bara för långa för de flesta applikationer. Real Crypto handlar om att hitta algoritmer som bryter mot det statistiska förhållandet med ett minimum av nyckelmaterial.
Med det i åtanke kan du skruva upp en OTP-implementering med hjälp av ett kort eller icke-slumpmässigt lösenord. Tänk dig att använda 1 som ditt lösenord och upprepa det efter behov; Vår ciffertext skulle läsa 2345, och stiftet skulle gissas på det andra försöket. Du vill också använda ett slumpmässigt lösenord; Plockar 0000 eftersom det gör matte lätt är det enda värre än ovanstående. (Även om jag, strängt sett skulle rulla om jag fick 0000, 1111, 9999, 1234, 4321 eller liknande.) Använd inte din födelsedag. Gamla telefonnummer för barndomsvänner kan vara acceptabelt.
Modulo Aritmetiska roll är lite mer subtil. Oavsett vilken funktion som används, måste uppsättningen av möjliga tecken i plaintexten kartlägga en till en med chiffertexten. Varför? Föreställ dig att du använde enkelt tillägg istället för mod-10-tillägg. För att få den sista siffran i vår Pin Cipertext, använde vi 4 – 7 = -3 -> 7 och dekrypteras med 7 + 7 = 14 -> 4. Om vi skrev ner -3 skulle en angripare veta att vår sista siffra kunde ‘t vara större än 6 eftersom det bara ger 6, det maximala värdet, endast 6. Vi har läckt information genom att ha en större uppsättning i chiffertexten än i plaintext.
Och det lämnar det sista sättet att röra upp: återanvända “engångs” -dynan. Uppenbart, eller hur? Fel.
Lorenz Machine, Public Domain
Å ena sidan är återanvändning en bestämd ansvar. Använd ett lösenord i ett mycket liknande krypteringsschema bröt “tunny”, en viktig kod under andra världskriget. Ett 4 000 teckenokrypterat meddelande skickades men inte mottaget korrekt. Avsändaren skickade meddelandet med samma hemlighet men gjorde små förändringar i texten med olika förkortningar och så vidare. Detta gav de allierade nog att bryta tunn och omvänd ingenjör den maskin som krypterade den. spelet över.
Här är matematiken som gjorde Tunny Decrypt-arbetet, och borde övertyga dig om att nästan aldrig återanvända en nyckel. Om vi kodar för meddelandena A och B med den hemliga nyckeln C, och någon överhänger båda, kan de bara mod dem tillsammans för att få (en mod c) mod (b mod c) = (a mod b) modc mod c = a MOD B, där MOD är den bitvis eller talvis modulo operatören som vi nu brukar. Eftersom det binära modulo är det egna omvänd, är resultatet något som är relaterat till båda plaintexterna och oberoende av den hemliga nyckeln.
Härifrån kan jämföra smarta gissningar för A och B och jämföra dem med ett MOD B-resultat bryta koden. Så om du är ganska säker på att “attack” visas i båda texterna (krypteringstyper som alltid krypterar “attack vid gryning”),Då kan du försöka modska “attack” tillsammans i olika positioner tills du får en match med en mod B.
En överraskning slutar
Men här är den sista twisten! Vi kan komma undan med att återanvända den hemliga nyckeln över alla våra bankkort, även trots ovanstående matte. Varför? Eftersom pinnarna själva är slumpmässiga. I motsats till de naturliga språkmeddelanden som skickas under krigstid är en MOD B lika slumpmässig som en mod C om både A och B är slumpmässiga stift.
Så det här är hur en hacker minns pins: genom att lära sig mycket om engångsplattan, hur man bryter det, och hur det är ändå användbart om meddelandet som behövs för att skydda är kort. Och hur, för specifika meddelanden, kan du även bryta reglerna.