Beste om Gast,
CRYPTOGRAFIE
Lezing van PA2DTA in het NTA van 22 april 2014
Rond deze tijd van het jaar worden we door de media regelmatig gewezen op de tweede wereldoorlog. Herdenken is goed, al was het alleen maar om ook jongere generaties enig historisch perspectief bij te brengen. Behalve onnoemelijk veel menselijk leed komt er ook veel vernuft in beeld. Dat vernuft had natuurlijk beter aangewend kunnen worden, maar de tijd kunnen we niet terugdraaien. Uit de oorlogsgeschiedenis komen ook regelmatig aspecten naar voren die je tot de min of meer stille oorlogvoering kunt rekenen. Daarbij horen dan met name inzet van wetenschap en techniek. De eerste wereldoorlog kun je zo de oorlog van de chemici noemen, immers in deze oorlog werden voor het eerst allerlei chemische strijdmiddelen gebruikt. De tweede wereldoorlog kun je zo de oorlog van de fysici noemen, denk bv aan radio en radar. Cynici noemen de derde wereldoorlog al de oorlog van de mathematici; deze oorlog zal vermoedelijk – laten we hopen dat het geen waarheid wordt – voor een belangrijk deel virtueel, maar niet minder vernietigend, worden uitgevochten. Denk bv aan het inzetten van computervirussen in vitale grote digitale systemen zoals die al gebruikt worden voor het monetaire verkeer en de besturing van grote infrastructurele technieken en installaties.
De tweede wereld oorlog kende al enkele aspecten van de mathematische oorlogvoering. Dat was het geval bij de spionage en contraspionage. Een tak van sport die van groot belang was voor het verloop van de oorlog. Radio en cryptografie was er een substantieel onderdeel van. Onlangs was er ook in de amateur wereld aandacht voor dit soort zaken. In Electron stond een verslag van een bijzondere tentoonstelling bij Arthur Bauer PAoAOB gewijd aan onder andere Enigma.Ook Museum Jan Corver onder hoede van PAoVYL deed goede zaken met een elektronische zelfbouw replica van de versleutelmachine Enigma. “Geheimschrift” is altijd al een boeiende en intrigerende zaak geweest. Ook amateurs doen eer eigenlijk impliciet aan mee, denk aan het gebruik van Morsetelegrafie of het gebruik van Q-codes. We vinden het eigenlijk allemaal wel leuk om ons te onderscheiden van anderen. Overal om je heen kom je vormen van geheimtaal tegen, denk ook maar eens aan de gebruiken binnen de familie. Sommige “hints” zijn alleen voor intimi te begrijpen.
In mijn eerste praatjes sprak ik over het ontwikkelen van cijfers en rekenen en de impliciete regels en wetmatigheden die daarvoor gelden. Ik ging er toen aan voorbij dat de mens natuurlijk daarvoor al een ander communicatiesysteem had ontwikkeld: taal, en van liever lee een manier om de taal te codificeren. Met het uitvinden van het geschreven woord kwam een einde aan wat we de prehistorie noemen. In principe kunnen we datgene wat geschreven en bewaard is vertalen naar hedendaagse taal. Er zijn verschillende schrifturen bedacht. Een ervan gaat terug op een aantal symbolen voor klanken, andere op een aantal figuren die een begrip aanduiden – het Chinese ideogram is daarvan een voorbeeld, deels ook de Egyptische hiëroglyfen, weer andere kennen een min of meer klein aantal symbolen die in een bijna oneindig aantal gecombineerd kunnen worden om begrippen aan te duiden. Met een strenge wetmatigheid – de syntaxis – wordt voorgeschreven hoe uiteindelijk een complete taal vorm krijgt en de mogelijkheid om ook de zeer fijne nuances van ons leven samen te vatten en in schrift te kunnen bewaren en overdragen. Een alfabet is dus de sleutel tot een code. Diegene die de code kent, kent de inhoud, de taal. In principe is de code ook te begrijpen door een ander. De ene taal is dus een maar tijdelijk geheim voor iemand die een andere taal eigen is. Je kunt verschillende talen leren. Zich kennelijk bewust van het feit dat een taal ook ongewenst door derden kan worden gelezen en begrepen heeft men zich altijd willen bedienen van “geheimschrift”. Het spijkerschrift van de Sumeriers en het schrift van de Kretensers is lange tijd een “geheimschrift” geweest, maar door langdurige analyse en het feit dat elke taal zekere wetmatigheden kent die vergelijkbaar zijn met die in andere talen, zijn ze opgelost; overigens net zoals de hiëroglyfen en het stukje geheimschrift in “het geheim van de Bosplaat” van Kapitein Rob. Ook Cesar gebruikte een geheimschrift –toentertijd niet te ontcijferen maar eigenlijk wel heel erg simpel; koninginnen werden onthoofd omdat hun geheimschrift werd gekraakt en een oorlog werd verklaard doordat een telegram werd onderschept en ontcijferd (het Zimmermann telegram was aanleiding tot de deelname van de USA aan de eerste wereldoorlog).Hoe zit “geheimschrift” in elkaar en hoe kan het ontcijferd worden?
Wat gewoonlijk geheimschrift wordt genoemd moeten we eigenlijk anders noemen. Eigenlijk zijn er twee vormen te onderscheiden. De ene vorm is de zogenaamde code. Morse is er een voorbeeld van. Elke letter wordt door een vast teken vervangen. Je kunt ook elk woord of uitdrukking vervangen door een afgesproken equivalent. Zolang de afspraak tussen de partijen geheim blijft is de code secuur. Er zijn heel wat codes in gebruik. Vanaf familiegebruik tot complete diplomatieke en zakelijke codeboeken toe. Sommige dienen alleen efficiëntie in verkeer. De andere vorm van code is cryptografie. Een bericht wordt hierbij door een sleutel en al of niet met behulp van een machine omgevormd tot iets onleesbaars, bij de ontvangstkant vindt het proces in omgekeerde vorm plaats. In feite komt het er op neer dat het bericht zelf wordt verhaspeld volgens en bepaald algoritme. Het versleutelde bericht kan ook nog eens een of meer keren gecodeerd worden. Alles om wederrechtelijk geachte ontvangst van de inhoud van het bericht zo lang mogelijk of geheel onmogelijk te maken. Er is al heel wat bedacht om het de ander of de vijand moeilijk te maken. Ik zal maar een paar highlights noemen, er is een uitgebreide literatuur over. Echte cryptografie is een vak vol wiskunde geworden; eerder wees ik al op het gebruik van priemgetallen in de cryptografie. Ook het binaire, octale en hexadecimale stelsel nemen intussen een prominente plaats in. Uw computer is met de software in feite een grote codeermachine.
Voor het gemak ga ik uit van ons gebruikelijke Arabische schrift van 26 letters, het alfabet van a t/m z. Als we nu een bericht hebben, moeten we de letters op een bepaalde eenduidige manier eventueel herhaald verhaspelen. We kunnen dat doen door substitutie, transpositie of fractionering. Een eenvoudige code ontstaat door systematisch letters te verschuiven: een a wordt een c, een b een d en een y een a. Dit is dus een substitutiecode. Je kunt ook elke letter vervangen door een bijzonder teken, een paard, poppetje, pijp enz enz. We kunnen ook elke letter van het bericht in het alfabet op een wat ingewikkelder manier veranderen door systematische verschuiving in een aantal parallelle verschoven alfabetten. Voor een vaste systematiek gebruiken we dan een codewoord. In de zestiende eeuw bedacht Vigenère naar aanleiding van een eerder idee de polyalfabetsubstitutie/ transpositie. Hij schreef in een matrix 26 keer het alfabet op, steeds een letter verschoven. Het codewoord onder het bericht geschreven bepaalde steeds welk alfabet wordt gekozen. Deze vorm van cryptografie is al veel ingewikkelder dan een eenvoudig substitutiealfabet. In de praktijk is het onhandig in het gebruik omdat het bewerkelijk is en een foutje snel gemaakt. Er zijn daarom in de loop der tijd al eenvoudige machientjes gemaakt om het proces te vereenvoudigen. Een Bazeriecylinder, in gebruik geraakt aan het begin van de twintigste eeuw, is zoiets. Op een aantal draaibare schijven naast elkaar staan alfabetten (of cijfers of bigrammen) afgebeeld, de schijven worden onderling zodanig gedraaid dat er een codewoord leesbaar is. Een bericht kan dan betrekkelijk eenvoudig gemaakt of teruggelezen worden. In feite zijn het allemaal varianten van substitutie/transpositie. Bij fractionering worden afzonderlijke letters bij het coderen volgens een patrooncode gesplitst in twee afzonderlijke tekens die vervolgens ook nog eens onafhankelijk van elkaar verschoven worden. Hoe dan ook: in alle gevallen is de crux een bekend en vaststaand algoritme om de boel dooreen te gooien. Bij alle gevallen blijft echter de structuur van de onderliggende taal aanwezig. Bij alle gevallen van dergelijke cryptografie blijven dus twee wetmatigheden – die van de taal en het versleutelingsalgoritme - inherent aanwezig en daarin ligt in principe ook de oplossingsstrategie. Bij eenvoudige susbsititie/transpositie blijft zo bij voorbeeld de letterfrequentie onaangetast of herleidbaar. Hoe langer een bericht of hoe meer er worden ontvangen hoe zekerder en in principe eenvoudiger het wordt de zaak te ontrafelen. De enige veilige methode zou zijn of een volledige random-sleutel te maken of om het bericht met zichzelf te versleutelen. Dergelijke one time pad sleutels leveren coderingen die niet te ontcijferen zijn. Shannon heeft dat in zijn Theory of Communication ook kunnen bewijzen. Alle andere codes zijn dus in principe te kraken alhoewel het zeer moeilijk kan zijn. Het probleem is altijd de tijd die nodig is om een bericht te ontrafelen. Als dat dagen of maanden –in enkele gevallen jaren of alleen met een beetje hulp – duurt is het belang van het bericht verloren gegaan. Om het lastig te maken worden er daarom ook vaak nog heel veel onzin berichten extra verstuurd om de ontcijferaars over te belasten. Overigens zijn er waarschijnlijk geen echte random-codes. Een computer die er een genereert doet dat aan de hand van een algoritme. Men heeft wel ruis gebruikt, maar de twee kopieën die men nodig had leverden dan op zich weer een kwetsbare code op die gestolen kon worden.
Eenvoudige handcijfers waren en zijn nog steeds effectief maar naarmate de belangrijkheid toeneemt dient er meer veiligheid in de vorm van complexiteit te zijn, en een vorm van automatisering. De ontwikkelaars van de Enigma-machine hadden dat goed begrepen. In feite is een Enigmamachine met al zijn varianten niet meer dan een ingewikkelde transpositiemachine. Om het allemaal makkelijk te maken waren alle machines voorzien van een zogenaamde reflectorschijf die het mogelijk maakte zowel te vercijferen als te ontcijferen. Met alle voorinstellingen en draaimechanismen was het aantal versleutelingen ongelooflijk groot, zodanig ook dat frequentieanalyse zinloos wordt mede doordat de berichten in het algemeen kort waren. Toch lukte het zelfs voor de veel ingewikkelder “geheimschreibers” de meeste berichten te kraken. Dat kon door niet goed doorziene systeemfouten (een ervan is dat de bedenkers dachten dat een letter nooit in zichzelf mocht worden gecodeerd) en door slordigheid van de gebruikers. Het is ongelooflijk knap en met name een kwestie van verplicht doorzettingsvermogen dat de geallieerden erin zijn geslaagd met name Duitse enigma-achtige codes te kraken. Overigens dient opgemerkt te worden dat Poolse wiskundigen het voorwerk hadden gedaan en dat ook het werk van o.a. Turing (over geautomatiseerde herhaalde bewerkingen, de voorloper van de computer) van groot belang was. Als de Engelse regering overigens van te voren had geweten dat hij homoseksueel was zou het in Bletchley Park wel eens anders uitgepakt kunnen hebben. Waarschijnlijk had men hem geweerd. Doordat hij werd geschoffeerd en niet erkend kon worden pleegde hij enkele jaren na de oorlog zelfmoord. Hij is kreeg pas onlangs eerherstel.
Begin jaren vijftig is er grote maatschappelijke druk om via radio en telex veilig berichtenverkeer te kunnen afhandelen. Dat wordt mede in de hand gewerkt door de economische groei en de opkomst van de halfgeleiders en de chips. Bij IBM werkt Horst Feistel aan veilige openbare cryptografie. Het mondt uit in een cryptoalgoritme met de naam Lucifer. Het is zo ingewikkeld dat de NSA vreest dat zelfs haar supercomputers de code niet zal kunnen kraken. Ze probeert dan ook de code te verkleinen of “lek” te houden. Ze konden uiteindelijk bedingen dat het aantal bits terug werd gebracht, voor particulier gebruik bleven er genoeg sleutels over vonden ze. Zodoende werd deze aangepaste Feistelcodering de Data Encryption Standard (DES). De versleutelingscode – het algortitme – is openbaar de sleutels moeten natuurlijk op een veilige manier over een openbaar kanaal worden verstuurd. Hoe kan dat?
A stuurt een bericht in een dichte doos (het versleutelde bericht) naar B. Maar de sleutel mee sturen kan natuurlijk niet. Toch wordt het bericht verstuurd. B ontvangt het en doet de doos extra dicht met behulp van zijn code en sleutel B, hij stuurt het bericht naar A retour. A doet met zijn sleutel de doos half open door sleutel A weg te nemen en stuurt de doos terug naar B die tenslotte de doos openmaakt met zijn sleutel B en het bericht leest. So far so good, voor twee personen en een berichtje. Maar om heel veel berichten op deze manier veilig te versturen krijg je een sleuteldistributieprobleem. De wiskundigen Diffie, Hellman en Merkle losten dit probleem op. Wat ze bedachten was geniaal. Tot nu toe (en dat geldt voor alle cryptografie tot zover) is elke versleuteling/ontsleuteling de facto een symmetrisch proces. Ik heb eerder bij het bespreken van wiskundige functies het begrip even-oneven en symmetrie heel kort genoemd, net als rekenkundige operatoren die wel of niet commutatief en associatief zijn. De genoemde heren bedachten een asymmetrische vorm van versleuteling. Een onderdeel ervan was eigenlijk al door Vernam en Lorentz gebruikt in de Baudot-Telex uitvoering van de Enigma door codes te Exlusiv Or-en. Het idee komt er op neer om op een speciale manier te rekenen: het zgn modulair rekenen. Deze methode is niet symmetrisch en de uitkomst van een som kan door beide partijen herleid worden tot elkaars bijdrage. Allebei krijgt men precies zijn noodzakelijke deel van de oplossing van een som, precies het benodigde deel van de code. Het klinkt bijzonder contra-intuïtief maar het kan. Het probleem was alleen nog het vinden van “de som” en een handiger manier van het heen en weer sturen van sleutels zoals in bovengenoemd voorbeeld waarbij beide betrokken partijen als het ware steeds op elkaar moeten wachten. Eigenlijk moet het bericht ergens gewoon geparkeerd kunnen worden, aangeboden en gelezen op elk willekeurig moment zonder dat intussen iemand erbij kan. De DES-code met individuele codes van ongeveer 1975 moest nog iets slimmer worden. Die slimmigheid kwam in 1977 van Rivest, Shamir en Adleman. In de standaardencryptie zit een moduul dat tezamen een publieke asymmetrische code vormt waarmee elk bericht kan worden versleuteld. Elke gebruiker beschikt verder over een eigen persoonlijke code om elk bericht voor hem te kunnen decoderen. Beide codesleutels samen vormen de basis voor de unieke versleuteling. Alles wordt de facto omgezet in een zeer grote cijferreeks, zowel het gecodeerde bericht als wel de erin opgesloten codegetallen van de gebruikers. Het geheim is dat als N heel groot is de factoren p en q slechts heel moeilijk gevonden kunnen worden. Voor N worden zeer grote priemgetallen gebruikt. N is tegenwoordig al groter dan 10E308. Honderd miljoen PC’s doen er dan al langer dan 1000 jaar over om een oplossing te vinden. Als p en q groot genoeg zijn (en dat zijn ze) is de RSA code (naar de namen van de bedenkers) praktisch gesproken niet te kraken. Het wachten is op de wiskundige die een snelle manier vindt om een groot priemgetal te ontbinden. Dat is nog steeds niet gelukt! RSA is dus voorlopig nog veilig genoeg.
Overigens, er zijn ook veel simpeler systemen, die niet gekraakt konden worden. In de koude oorlog , de tijd van de NumberStations, was er een Russische code –de VIC, naar de ontdekker/gebruiker Raino Hayhaynen codenaam Victor, die zo ingewikkeld was dat het verrassend op een one time pad leek. Er zijn ook nu nog talen en geschriften die niet ontcijferd zijn. Misschien een leuke hobby……
Een ander probleem – en dat is sinds WW2 niet veranderd – is dat de gebruikers niet altijd zorgvuldig omgaan met de aangeboden veiligheid. Allerlei virussen en het net gesignaleerde lek in OSS- HeartBlead is daar een voorbeeld van.
Dick vd Berg pa2dta