Hoe onthoudt een hacker een pin

als u meer dan een paar bankkaarten, deur-entry keycodes of andere kleine numerieke wachtwoorden hebt om te onthouden, het wordt uiteindelijk een gedoe. Het ergste, voor mij is een bankkaart voor een zakelijk account dat ik een keer in een blauwe maan gebruik. Ik heb het waarschijnlijk in vijf jaar acht keer gebruikt, en toen gaven ze me een nieuwe kaart met een nieuwe pincode. Zucht.

Snel, wat is mijn pincode?
Hoe zou een normaal persoon een proliferatie van pinnen aangaan? Ze zouden de nummers op een stuk papier opschrijven en in hun portemonnee houden. We weten allemaal hoe die eindigt, toch? Een verloren portemonnee en meerdere lege bankrekeningen. Hoe zou een hacker het behandelen? Schrijf elk nummer op de kaart zelf, maar gecodeerd, natuurlijk, met de enige onbreekbare versleutelingsregeling is er daar: de eenmalige pad (OTP).

De OTP is een vreemde eend tussen coderingsmethoden. Ze zijn bedoeld om te worden gedecodeerd in je hoofd, maar zolang de geheime sleutel veilig blijft, rock ze solide. Als je ooit hebt geprobeerd de s-boxen en al die toevoeging, shifting en menging die doorgaat met een normale encryptiemethode, zijn OTPS verfrissend eenvoudig. De afweging is een “lange” -toets, maar een OTP is absoluut perfect voor het coderen van je pinnen.

Het eerste deel van dit artikel lijkt de vriendelijke “Life-Hack” -pablums te zijn die u elders zult worden, maar wanhoop niet, het is ook een back-deurinleiding tot de OTP. De tweede helft duikt in het eenmalige pad met een diepe crypto-intuïtie, een vriendelijke wiskunde, en hopelijk een overtuigend argument dat het opschrijven van je gecodeerde pinnen het juiste is om te doen. Onderweg vermeld ik de drie dingen die je verkeerd kunt doen bij het implementeren van een OTP. (En geen van hen zal je schokken!) Maar uiteindelijk zal mijn PIN-coderingsoplossing een van de drie breken, en blijf niettemin geluid. Nog nieuwsgierig? Lees verder.

De PIN-oplossing

Dus eerst de oplossing voor het bankkaartprobleem: schrijf je pincode gecodeerd met een geheim dat je alleen weet. In plaats van een viercijferig nummer voor elke nieuwe kaart te hoeven onthouden, heb je een viercijferig nummer voor altijd nodig. De sleutel is om een ​​coderingsschema te kiezen dat gemakkelijk genoeg is om ongedaan te maken, zodat u niet te vreemd zult zien wanneer u wordt gevraagd om de pincode in te typen in het venster van de bankteller. Dit is het klassieke gebruik van de OTP – een codering die u in uw hoofd kunt ongedaan maken.

Selecteer eerst willekeurig een geheim viercijferig nummer. Trek dan dat nummer af van uw pincode en schrijf het resultaat op uw kaart. Om je pincode te krijgen, kijk dan in voor de bankverteller, kijk dan gewoon naar de kaart en voeg het geheime nummer terug toe. De teller zal denken dat je je pincode op de kaart hebt geschreven. Voel je vrij om je zelfvoldaan te voelen, omdat je een onbreekbare coderingsregeling hebt gebruikt.

In plaats van normale toevoeging en aftrekking, met het dragen en lenen over cijfers, wilt u MODULO-10 MATH – TOE toevoegen of aftrekken van tien van het resultaat op elk gewenst moment dat het buiten het bereik 0-9 wordt. We zullen praten over waarom hieronder, maar voor nu, hier is een werkvoorbeeld.

Stel dat de pin 1234 is – het moet gebeuren, dus iemand, toch? – en mijn willekeurige geheime nummer is 1337, natuurlijk. Laten we versleutelen. Aftrekken 1 van 1 geeft een nul, dus ik schrijf dat neer. Aftrekkend 3 van 2 geeft -1, die is waar de modulo-10 rekenkundige binnenkomt. In dit geval gaat -1 in 9 door tien toe te voegen. 3 – 3 = 0, en 4 – 7 = 7, MOD-10. Mijn kaart heeft nu 0907 geschreven.

Laten we nu decoderen. Als ik naar beneden kijk naar de kaart, zie ik een 0 en voeg echter 1. 9 + 3 = 12 toe, dus we moeten er tien aftrekken om 2. (dat is de reden om toevoeging voor de decoderingstadium te kiezen, het is gemakkelijk Laat eventuele toonaangevende 1S vallen.) 0 + 3 = 3 en 7 + 7 = 14 -> 4 <. Ik typ in 1234, en het geld is van mij! Zodra je het hangen hebt van het toevoegen van je geheime nummer aan een ander nummer, Digit-Wise Mod-10, zul je verbazen hoe snel het zal werken. Probeer het uit en kijk of je er binnen tien minuten goed in krijgt. Eenmalige pads Een eenmalige pad is zowel de eenvoudigste symmetrische coderingsregeling en ook volledig onbreekbaar. Het heeft drie cruciale kenmerken, waarvan er twee hierboven werden aangetoond en een van hen verkeerd te krijgen, kan catastrofaal zijn. Het belangrijkste kenmerk van een OTP is dat het wachtwoord willekeurig moet zijn en dezelfde lengte als de tekst die het versleutelt - vandaar het viercijferige geheim voor de pincode. In een OTP draait alles om het geheim, wat ook de hiel van Achilles is. Voor een viercijferig nummer is het houden van een viercijferig geheim geen probleem. Maar stel je voor dat je gigabytes van gecodeerde foto's van je vakantie naar een vriend wilt sturen. Dat is veel belangrijk materiaal om bij de hand en geheim te houden. Origineel door [Matt_crypto], openbare Domainseconde, de methode om het bericht met het geheim te combineren, moet lijken op de modulo-rekenkunde, in dat de set gecodeerde tekens en de set plainextips - de pincode in ons voorbeeld - moeten in kaart brengen een op een. MOD-10 zorgt ervoor dat dit eenvoudig: beide staan ​​in het bereik van 0-9. Misschien ben je bekend met het gebruik van de XOR-operator op binaire gegevens, wat hetzelfde is als additiop of aftrekking, mod-2. (0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, en 1 + 1 = 2 -> 0. QED.) U kunt ook brieven gebruiken en het alfabet omwikkelen bij “Z” zoals het Caesar-cijfer of rot13, die gewoon het alfabet in cijfers inkt en wiskunde mod-26 doet.

Ten derde, en misschien is dit een corollary van de eerste, je moet het geheim in een eenmalige pad opnieuw gebruiken. Je zou denken dat dit voor de hand ligt, omdat het zelfs in de naam is van de coderingsmethode, maar het is moeilijk te doen in de praktijk. En in feite breekt mijn PIN-coderingsregeling deze regel door hetzelfde geheim te gebruiken in meerdere sleutels. We komen binnenkort in.

De perfecte codering verpesten

Waarom is een OTP onbreekbaar? Het breken van de meeste versleutelingsschema’s komt vaak neer op kans en statistieken. Als u bijvoorbeeld een tekst met het Caesar-cijfer hierboven versleutelt, wordt elke letter in de plain-tekst in kaart gebracht naar een andere enkele letter telkens wanneer deze plaatsvindt in de ciphertext. Als u weet dat de originele tekst in het Engels is, waar de meest gebruikte letter “E” is, is het een goede gok dat als “Q” de meest voorkomende letter in de ciphertext is, het staat voor “E”. Dat wil zeggen, we vinden statistische overeenkomsten tussen de leesbare tekst en de ciphertext en gebruiken ze om een ​​brug te maken tussen de twee.

Met behulp van een geheime sleutel die zolang de keuze is, en willekeurig gekozen, breekt elke statistische relatie met de ciphertext. Gezien een specifieke ciphertext die op mijn kaart is opgegeven, is elke pin van 0000 tot 9999 mogelijk en als de sleutel willekeurig is gekozen, is even waarschijnlijk. Er is geen informatie over de Plaintext in de ciphertext – dat is in wezen Claude Shannon’s bewijs (absoluut klassieke PDF) in een notendop. En daarom is een OTP onbreekbaar.

Diana One-Time Pad [US NSA], Public DomainThis is eigenlijk de sleutel tot het begrijpen van het veld Cryptografie: het is een poging om de informatie over de Plaintext tijdens het coderingsproces te vergroten, zodat hoewel een kortere sleutel wordt gebruikt, nee statistisch relevante sporen van de leestext. Dit verlangen naar korte sleutels is ook niet alleen een kwestie van gemak: stel je voor dat jij en de hackaday eerder 500 Kib van willekeurige gegevens moesten uitwisselen om dit artikel te downloaden en het te lezen. Stel je voor de lengte van het WiFi-wachtwoord dat je voor gasten hoeft op te schrijven! Dit is de betekenis waarin de OTP triviaal en oninteressant is – het kan onbreekbaar zijn, maar de geheimen zijn gewoon te lang voor de meeste toepassingen. Real Crypto gaat over het vinden van algoritmen die de statistische relatie doorbreken met een minimum aan belangrijk materiaal.

Met dat in gedachten kunt u een OTP-implementatie verwijderen met een kort of niet-willekeurig wachtwoord. Stel je voor dat 1 als je wachtwoord gebruikt en het zo nodig herhaalt; Onze ciphertext zou 2345 lezen en de pincode zou worden geraden op de tweede poging. U wilt ook een willekeurig wachtwoord gebruiken; Picking 0000 omdat het de wiskunde gemakkelijk maakt, is het enige wat erger is dan het bovenstaande. (Hoewel ik strikt spreekt, zou ik opnieuw rollen als ik 0000, 1111, 9999, 1234, 4321 of vergelijkbaar werd.) Hoe dan ook, gebruik je verjaardag niet. Oude telefoonnummers van vrienden van kinderen kunnen acceptabel zijn.

De rol van modulo rekenkunde is een beetje subtieler. Welke functie ook wordt gebruikt, de reeks mogelijke karakters in de Plaintext moet een-op-een plaatsen met de ciphertext. Waarom? Stel je voor dat je een eenvoudige toevoeging hebt gebruikt in plaats van MOD-10-toevoeging. Om het laatste cijfer van onze PIN-ciphertext te krijgen, gebruikten we 4 – 7 = -3 -> 7 en gedecodeerd met 7 + 7 = 14 -> 4. Als we in plaats daarvan een aanvaller hebben opgeschreven, zou een aanvaller weten dat ons laatste cijfer kon ‘t Wees groter dan 6 omdat het toevoegen van 9, de maximale waarde, alleen 6. We hebben informatie gelekt door een grotere set in de ciphertext te hebben dan in de Plaintext.

En dat verlaat de laatste manier om te verknoeien: het opnieuw gebruiken van de “eenmalige” pad. Voor de hand liggend, toch? Fout.

Lorenz Machine, Public Domain
Aan de ene kant is hergebruik een duidelijke aansprakelijkheid. Het opnieuw gebruiken van een wachtwoord in een zeer vergelijkbare versleutelingsregeling Broke “Tunny”, een belangrijke code tijdens de WOII. Een gecodeerd bericht van 4000 tekens werd verzonden maar niet correct ontvangen. De afzender heeft het bericht opnieuw verzonden, met hetzelfde geheim, maar maakte kleine veranderingen in de tekst, met behulp van verschillende afkortingen enzovoort. Dit gaf de geallieerden genoeg om de tunny en reverse ingenieur de machine die het gecodeerde te breken. spel is over.

Hier is de wiskunde die de tunny-decoctiewerk maakte, en zou je moeten overtuigen om bijna nooit een sleutel te hergebruiken. Als we de berichten A en B coderen met de geheime sleutel C, en iemand hoort beide, kunnen ze ze gewoon samen modekken om (een mod c) mod (B MOD C) = (een mod b) mod c mod c = a te krijgen MOD B, waarbij MOD de bitwise of nummer-wise modulo-operator is waaraan we nu gewend zijn. Aangezien het nemen van de binaire modulo zijn eigen omgekeerde is, is het resultaat iets dat gerelateerd is aan zowel plaines en onafhankelijk van de geheime sleutel.

Vanaf hier, het vergelijken van slimme gissingen voor A en B en het vergelijken met het resultaat van de A MOD B de code breken. Dus als je er vrij zeker van bent dat “aanval” in beide teksten verschijnt (Crypto-types versleutelen altijd “aanval bij Dawn”),Dan kunt u “aanvallen” samen in verschillende posities modden totdat u een match krijgt met een mod B.

Een verrassing eindigend

Maar hier is de finale twist! We kunnen wegkomen met het hergebruiken van de geheime sleutel in al onze bankkaarten, zelfs ondanks de bovenstaande wiskunde. Waarom? omdat de pinnen zelf willekeurig zijn. In tegenstelling tot de door natuurlijke taal die tijdens oorlogstijd wordt verzonden, is een mod b net zo willekeurig als een mod c als zowel A als B willekeurige pinnen zijn.

Dus dit is hoe een hacker onthoudt pins: door veel te leren over de eenmalige pad, hoe het te breken, en hoe het niettemin nuttig is als het bericht dat het nodig is om te beschermen is kort. En hoe, voor bepaalde berichten, kunt u zelfs de regels breken.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post