Trojka hier, trojka daar

`Internet lek', kopte dit katern twee weken geleden een beetje raar. Wat natuurlijk is het Internet lek. Het is zelfs openbaar. Iedereen kan erop, sommigen denken zelfs voor niks. Maar dat werd natuurlijk niet bedoeld. Het ging over het `lekprikken' door ons eigen Amsterdamse Centrum voor Wiskunde en Informatica (CWI) van een veelgebruikte methode om gegevens onderweg over het openbare internet tegen pottenkijkers te beschermen.

Dat was inderdaad nieuws. De methode waar het om ging, RSA-155 geheten, werd tot nu toe als nauwelijks kraakbaar beschouwd, en wordt daarom bijvoorbeeld door banken gebruikt. Uw betalingsopdrachten worden ermee beschermd. En die bescherming is lek.

Reden voor nervositeit is er wel, want het begint een beetje te lijken op drs. P's befaamde `Dodenrit' met de trojka van Omsk naar Tomsk. Want had het CWI er met al zijn wiskundige slimheid nu nog in totaal 35 jaar PC-rekentijd en tien dagen stampen op een Cray supercomputer voor nodig om één variant van RSA-155 te kraken, door slim programmeerwerk klaarden de Amsterdamse wiskids de klus binnen zeven maanden. Ze verdeelden het karwei over 300 PC's en werkstations, die allemaal tegelijk een stukje van het probleem fijnkauwden. Als je nagaat wat voor bedragen er tussen banken omgaan, dan begrijp je dat er vast wel criminelen zijn die willen investeren in duizend PC'tjes, twee Crays en een peloton uitstekende werkloze wiskundigen. Of nog meer, zodat zo'n code voor je het weet in een week of zelfs een dag tijd te kraken is.

Nou én, zou je denken. Dan gebruik je toch gewoon een andere manier van coderen? Zo simpel is dat jammer genoeg niet. RSA is een manier van coderen die een paar hele bijzondere voordelen combineert, die andere systemen om geheimschriften te maken moeten ontberen. Er is op het moment eigenlijk domweg geen waardige vervanger.

Dat zit zo. Geheimschriften berusten op het principe dat je gegevens, zeg een tekst, systematisch door elkaar husselt tot hij onherkenbaar is. Zolang je geheim kunt houden welke methode je voor het husselen gebruikt hebt, zijn je gegevens veilig. Maar er zijn twee problemen. Ten eerste is een geheim alleen geheim als niemand anders het kent. Maar voor boodschappen in code moet gewoonlijk zowel de zender als de ontvanger van het geheim op de hoogte zijn. Dat is er dus ten minste één te veel. Hoe meer verkeersdeelnemers, hoe gauwer je geheim uitlekt. Ten tweede zal een toegewijde kraker vroeg of laat elke code breken. Geen gecodeerde boodschap is dus eeuwig veilig, en alles wat je na die onvermijdelijke kraak nog codeert geen seconde.

RSA-encryptie loste die problemen allebei tot nu toe afdoende op. Om met het laatste te beginnen: net als elk serieus geheimschrift berustte het niet alleen op een vaste husselmethode, maar op een vaste methode in combinatie met een verwisselbare sleutel. Dat is niks bijzonders, maar wel belangrijk. Spiegelschrift is een geheimschrift met alleen een methode: je schrijft in spiegelbeeld, basta. Wie de truc doorheeft is meteen klaar. Letters verschuiven (a wordt b, b wordt c, en zo voort) is een methode met een verwisselbare sleutel. Je kunt immers per keer apart afspreken hoeveel plaatsen je de letters verschuift. Een onverlaat die de methode kent moet nu alsnog aan het werk om uit te vissen wat deze keer de sleutel was. Een kraker heeft het bij verwisselbare sleutels meteen veel en veel moeilijker om zelfs maar achter de methode van coderen te komen, omdat de gecodeerde boodschappen waarmee hij werkt niet allemaal op dezelfde manier versleuteld zijn. Bij echt goede codesystemen is de sleutel zo moeilijk te achterhalen, dat de methode van coderen zelfs best bekend mag zijn. En RSA was zo'n systeem. Althans, tot het CWI zich dus als insluiper ontpopte.

Voor de eerstgenoemde moeilijkheid, dat idealiter slechts één iemand van de sleutel op de hoogte dient te zijn, bood RSA ook een prima oplossing. Het is een zogenaamde `public key' codering, waarbij degene die een boodschap versleutelt helemaal niet weet hoe de ontvanger de boodschap zal decoderen. Die ontvanger zegt van tevoren tegen iemand die hem een boodschap wil sturen: ”doe jij nou maar dit, het allegaartje dat je dan krijgt kan ik wel lezen”. De verzender kan dus alleen maar heldere tekst in lettersalade omzetten, die hijzelf niet meer kan ontwarren. Dat kan alleen de ontvanger, die de enige is die de decodeersleutel kent.

Zulke systemen werken met twee forse priemgetallen, in het gekraakte geval van RSA-155 getallen van 78 cijfers lang. Die priemgetallen vormen de basis voor het decoderen, en blijven het geheim van de ontvanger, zijn privé-sleutel. Aan iedereen die hem iets wil sturen vertelt hij de methode van versleutelen, en hij geeft ze een ander getal, de uitkomst van de vermenigvuldiging van de twee priemgetallen. Die uitkomst, de publieke sleutel, is bij RSA-155 steeds 155 cijfers lang, vandaar de naam. De verzender codeert met de publieke sleutel, maar decoderen kan alleen de ontvanger.

De lol hiervan is dat het verband tussen een paar priemgetallen en hun product een soort valkuilmechanisme is: je zit er zo in, maar het is een heidense klus om er weer uit te komen. Twee getallen met elkaar vermenigvuldigen is een fluitje van een cent, maar het is ontzettend moeilijk om uit het product de samenstellende priemgetallen af te leiden. Zeker als het om zulke gigagetallen gaat. Die lol heeft het CWI dus voor een deel verziekt, door de trucs die het verzon om het ontbinden van zo'n product gemakkelijker te maken.

Maar RSA-encryptie is om nog een reden moeilijk vervangbaar: met public-key systemen kun je prima elektronische handtekeningen maken, zodat je zeker weet dat je niet met een oplichter van doen hebt. Dat is in de onpersoonlijke wereld van computernetwerken van levensbelang. Echte vervangers voor RSAi zijn er daarom niet. Wat rest is vooralsnog slecht de vlucht naar voren: RSA-155 vergeten, en alleen nog nóg grotere getallen gebruiken, in de hoop steeds slimmere algoritmen en steeds snellere computers nog even voor te blijven. De kleine Iwan van 155 cijfers is nu aan de wolven geofferd, de vraag is wanneer zijn langere zus Natasha uit de trojka gegooid moet worden.