HOW A HACKER remembers A PIN

Uncategorized

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. Sukk.

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? Les videre.

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 one-to-one. 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 subtraksjon, mod-2. (0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 og 1 + 1 = 2 -> 0. QED.) Du kan også bruke bokstaver og vikle alfabetet rundt på “Z” som Caesar-krypteringen eller ROT13, som bare kartlegger alfabetet i tall og gjør matte mod-26.

Tredje, og kanskje dette er en følge av den første, bør du ikke bruke hemmeligheten i en engangs pute. Du tror at dette var tydelig, siden det er selv i navnet på krypteringsmetoden, men det er vanskelig å gjøre i praksis. Og faktisk bryter min pin-krypteringsskjema denne regelen ved å bruke den samme hemmeligheten på tvers av flere nøkler. Vi kommer inn i det snart.

Rote opp den perfekte krypteringen

Hvorfor er en OTP ubrytelig? Å bryte de fleste krypteringsordninger kokes ofte ned til sannsynlighet og statistikk. Hvis du for eksempel krypterer en tekst med Caesar-krypteringen over, blir hvert brev i renten kartlagt til et annet enkeltbrev hver gang det oppstår i kryptertexten. Hvis du vet at den opprinnelige teksten er på engelsk, hvor det mest brukte brevet er “E”, er det en god innsats at hvis “q” er det vanligste brevet i kryptertexten, står den for “E”. Det vil si at vi finner statistiske likheter mellom ren tekst og kryptertext, og bruker dem til å lage en bro mellom de to.

Bruk en hemmelig nøkkel som er så lenge som rentekten, og tilfeldig valgt, bryter et statistisk forhold til kryptertexten. Gitt en bestemt kryptertext nedskrevet på kortet mitt, er hver pin fra 0000 til 9999 mulig, og hvis nøkkelen ble valgt tilfeldig, er det like sannsynlig. Det er ingen informasjon om rentekten i kryptertexten – det er i hovedsak Claude Shannons bevis (helt klassisk PDF) i et nøtteskall. Og det er derfor en OTP er ubrytelig.

Diana One-Time Pad [US NSA], Public Domainthis er faktisk nøkkelen til å forstå feltet Cryptografi: Det er et forsøk på å scramble opp informasjonen om ren tekst under krypteringsprosessen, slik at selv om en kortere nøkkel brukes, nei Statistisk relevante spor av rentekten forblir. Dette ønske om korte nøkler er ikke bare et spørsmål om bekvemmelighet, enten: Tenk deg at du og Hackaday måtte ikke bytte 500 kib av tilfeldige data bare for å laste ned denne artikkelen og lese den. Tenk på lengden på WiFi-passordet du må skrive ned for gjestene! Dette er den forstanden der OTP er trivial og uinteressant – det kan være ubrytelig, men hemmelighetene er bare for lange for de fleste applikasjoner. Real Crypto handler om å finne algoritmer som bryter det statistiske forholdet med minimum nøkkelmateriale.

Med det i tankene kan du skru opp en OTP-implementering ved å bruke et kort eller ikke-tilfeldig passord. Tenk deg å bruke 1 som passord og gjenta det som nødvendig; Vår kryptertext ville lese 2345, og tappen ville gjettes på det andre forsøket. Du vil også bruke et tilfeldig passord; plukke 0000 fordi det gjør matte lett er det eneste som er verre enn ovenfor. (Selv om det er strengt tatt, ville jeg rulle om jeg fikk 0000, 1111, 9999, 1234, 4321, eller lignende.) Uansett, ikke bruk bursdagen din. Gamle telefonnumre av barndomsvenner kan være akseptabelt.

Rollen som modulo aritmetikk er litt mer subtil. Uansett hvilken funksjon som brukes, må settet av mulige tegn i ren-teksten kartlegge en-til-en med kryptertexten. Hvorfor? Tenk deg at du brukte enkelt tillegg i stedet for mod-10 tillegg. For å få det siste sifferet i Pin-kryptertexten, brukte vi 4 – 7 = -3 -> 7 og dekryptert med 7 + 7 = 14 -> 4. Hvis vi skrev ned -3 i stedet, ville en angriper vite at vårt siste siffer kunne ikke kunne Ikke vær større enn 6 fordi du legger til 9, maksimumsverdien, gir bare 6. Vi har lekket informasjon ved å ha et større sett i kryptertexten enn i ren tekst.

Og det etterlater den siste måten å rote opp: gjenbruk av “engangs” -puten. Åpenbart, ikke sant? Feil.

Lorenz Machine, Public Domain
På den ene siden er gjenbruk en klar ansvar. Gjenbruk av et passord i en veldig lignende krypteringssystem brøt “tunny”, en viktig kode under andre verdenskrig. En 4.000 tegnkryptert melding ble sendt, men ikke mottatt riktig. Avsenderen re-sendte meldingen, med samme hemmelighet, men gjorde små endringer i teksten, ved hjelp av forskjellige forkortelser og så videre. Dette ga de allierte nok til å bryte tunny og omvendt ingeniør maskinen som krypterte den. spillet er over.

Her er matematikken som gjorde tunny dekrypter arbeidet, og bør overbevise deg om nesten aldri å bruke en nøkkel. Hvis vi kodes ned meldingene A og B med den hemmelige nøkkelen C, og noen overhår begge, kan de bare mod dem sammen for å få (en mod c) mod (B mod c) = (en mod b) mod c mod c = a Mod B, hvor mod er Bitwise eller Number-Wise Modulo-operatøren som vi nå er vant til. Siden du tar binærmodulen, er dets eget omvendt, resultatet er noe som er relatert til både plaintexts, og uavhengig av den hemmelige nøkkelen.

Herfra kan sammenligne smarte gjetninger for A og B og sammenligne dem med et mod B-resultat bryte koden. So if you’re pretty sure that “attack” appears in both texts (crypto types always encrypt “attack at dawn”),Deretter kan du prøve å modne “angrep” sammen i forskjellige stillinger til du får en kamp med en mod B.

En overraskelse som slutter

Men her er den endelige vri! Vi kan komme unna med å gjenbruke den hemmelige nøkkelen på tvers av alle våre bankkort, til tross for ovennevnte matte. Hvorfor? Fordi pinnene selv er tilfeldige. I motsetning til de naturlige språkmeldingene som sendes under krigstid, er en mod b like tilfeldig som en mod c hvis både A og B er tilfeldige pins.

Så dette er hvordan en hacker husker pins: ved å lære mye om engangspute, hvordan å bryte den, og hvordan det er likevel nyttig hvis meldingen den trenger å beskytte, er kort. Og hvordan, for bestemte meldinger, kan du til og med bryte reglene.

Leave a Reply

Your email address will not be published.