CODEERMACHINES EN CRYPTOGRAFIE
One-time Pad
Home Klassieke Cryptografie


Definitie en Oorsprong van One-time Pad

One-time pad of OTP, ook wel Vernam-cijfer, éénmalig blokcijfer of het perfecte cijfer genoemd, is een crypto algoritme waarbij men de tekst of data combineerd met een willekeurige sleutel van dezelfde lengte. Het is de enige gekende vercijfering die onbreekbaar is. Gebruikt door Special Operations teams en het verzet in Wereldoorlog II, populair bij inlichtingendiensten en hun spionnen sinds de Koude Oorlog en decennia lang ten dienste van de diplomatie en het leger heeft one-time pad een sterke reputatie opgebouwd als eenvoudige maar onbreekbare encryptie met een absolute veiligheid die ongeëvenaard is door moderne crypto algoritmes.

Om van one-time pad encryptie te kunnen spreken en de onbreekbaarheid effectief te verwezenlijken dient aan verschillende voorwaarden voldaan te zijn. Indien één van deze voorwaarden ontbreekt kan men niet meer spreken van one-time pad en is het niet meer onbreekbaar. Bij correct gebruik is one-time pad echter de enige bestaande bewezen perfect veilige vercijfering, bestand tegen elke mogelijke cryptoanalytische aanval. Dit werd bewezen in Claude Shannon's verhandeling 'Communication theory of secrecy systems'.

  • De lengte van de sleutel dient minstens even lang te zijn als de te vercijferen gegevens.
  • De sleutel moet werkelijk willekeurige zijn (niet gegenereerd door de eenvoudige Rnd functie van een PC of dergelijke).
  • Sleutel en te vercijferen gegevens worden berekend modulo 10 (cijfers), modulo 26 (letters) of modulo 2 (binair).
  • Er mogen slechts twee kopijen van de sleutel bestaan, één voor de verzender en één voor de ontvanger (uitzonderingen bestaan o.a. bij systemen met meerdere ontvangers).
  • Een sleutel mag slechts één maal gebruikt worden om één bericht te vercijferen en dient na gebruik vernietigd te worden.

Opmerking: one-time pads en one-time vercijfering zijn niet te verwarren met kleine one-time sleutels (one-time key of OTK) of one-time passwords (ook aangeduid met OTP). Deze laatste zijn in grootte beperkte sleutels, geldig voor éénmalige authenticatie of inloggen, of één enkele vercijferingssessie door een gewoon crypto-algoritme onder controle van die kleine sleutel. Zulke kleine one-time sleutels zijn hoegenaamd niet onbreekbaar aangezien de veiligheid afhangt van het gebruikte crypto-algoritme en de regels van one-time pad niet werden gevolgd.

Oorsprong van one-time pad

Het verhaal van one-time pad begon in 1882, wanneer de Californische bankier Frank Miller een codeboek samenstelde onder de titel "Telegraphic Code to Insure Privacy and Secrecy in the Transmission of Telegrams". Zulke codeboeken werden veel gebruikt, vooral om de kosten van telegrammen te drukken door woorden en zinnen om te zetten in korte nummercodes of letter-codes. Deze codeboeken boden vrijwel geen veiligheid. Miller's codeboek bevatte echter instructies voor een superencryptie (een tweede vercijferings-laag over de code) met behulp van een unieke methode: hij telde zogenaamde shift-nummers (de sleutel) op bij de plaincode (woorden, omgezet in cijfers) en definiëerde de shift-nummers als een lijst van onregelmatige nummers die moeten gewist worden na gebruik en nooit herbruikt mogen worden.

Zijn codeboek bevatte 14.000 woorden, zinnen en blanks (voor uitbreiding) en wanneer bij vercijfering de som van plaincode en sleutel meer dan 14.000 was, diende men 14.000 af te trekken van de som. Indien bij ontcijfering de cijfertekst waarde kleiner was dan de sleutel diende men 14.000 bij de cijfertekst bij te tellen alvorens er de sleutel van af te trekken, wat in feite een modulo 14.000 bewerking is. Als de shift-nummers willekeurig gekozen werden en slechts één maal gebruikt, bood de modulo bewerking onbreekbare vercijfering. Miller had het eerste one-time pad algoritme uitgevonden. Helaas werd Miller's systeem nooit algemeen bekend, raakte het verloren in de geschiedenis van cryptografie en kreeg daarom nooit de verdiende erkenning. Zo vroeg als het was uitgevonden, zo snel verdween het in de vergetelheid, om pas in 2011 door researcher Steven Bellovin opnieuw ontdekt te worden in de archieven.

Jaren later, in 1917, ontwikkelde AT&T ingenieur Gilbert Vernam een systeem om teletype TTY communicatie te vercijferen. Hoewel Vernam's uitvinding wiskundig gelijkenissen vertoonde met Miller's idee, had hij een elektromechanisch systeem ontwikkeld dat totaal verschilde van Millers pen-en papier algoritme. Het lijkt daarom onwaarschijnlijk dat Vernam het idee van Miller had afgekeken. Hij nam een vijf-bits Baudot-code ponsband, met daarop het bericht, en mixte deze met een tweede ponsband met willekeurige tekens, de geheime sleutel. Om de twee papiertapes te mixen werd een modulo 2 optelling (nu bekend als XOR of Exclusive OR) uitgevoerd met behulp van relais, en de sleuteltapes liepen synchroon op de verzendende en ontvangende teleprinter. Het was de eerste directe en automatisch on-line encryptie.

Vernam begreep dat de encryptie met een korte sleuteltape (inf feiten een eenvoudige poly-alphabetische encryptie) niet veilig genoeg was. Initieel gebruikte hij een mix van twee sleuteltapes, met een voor beide tapes relatieve priem als lengte, waardoor er één zeer lange sleutel ontstond. Kapitein Joseph Mauborgne (later Hoofd van het U.S. Signal Corps) toonde aan dat zelfs het systeem met dubbele sleuteltape niet bestand was tegen cryptoanalyse indien gebruikt bij grote volumes berichten. Mauborgne stelde vast dat enkel wanneer de sleuteltape onvoorspelbaar was, even lang als het bericht en slechts één keer gebruikt, het bericht veilig zou zijn. Meer zelfs, de vercijfering bleek effectief onbreekbaar. One-time vercijfering was geboren!

Het Amerikaanse National Security Agency (NSA) noemt Vernam's one-time tape (OTT) patent uit 1919 "één van de belangrijkste in de geschiedenis van cryptografie" (Melvin Klein, NSA). AT&T commercialiseerde het Vernam systeem in de jaren '20, helaas met weinig succes. De productie, distributie en consumptie van enorme hoeveelheden one-time tapes beperkte het gebruik tot vaste stations (hoofdkwartieren, communicatie centra). Het was pas tijdens de Tweede Wereldoorlog dat het Amerikaanse Signal Corps uitgebreid gebruik begon te maken van OTT systemen voor hun high level teleprinter communicaties. Drie Duitse cryptologen herkenden echter onmiddellijk de voordelen van one-time vercijfering.

Begin jaren '20 cryptanalyseerden Werner Kunze, Rudolf Schauffler and Erich Langlotz het Franse diplomatieke berichtenverkeer. Deze pen-en-papier numerieke codes gebruikten codeboeken om woorden en zinnen om te zetten in cijfers. Vervolgens werd een numerieke sleutel bij de cijfergroepen opgeteld (modulo 10) om de codeboek waarden te vercijferen. Zij realiseerden zich dat wanneer men een uniek willekeurige cijfer optelt bij elk codeboek cijfer het bericht onbreekbaar zou zijn. Zij bedachten een systeem met papiervellen met willekeurige cijfers. Van elk vel met cijfers bestonden slechts twee kopijen (één voor verzender en één voor ontvanger). In feite hadden zij Miller's systeem uit 1882 opnieuw uitgevonden.

In 1923 werd het systeem geïntroduceerd bij de Duitse Buitenlandse Zaken om hun diplomatieke correspondentie te beveiligen (zie afbeelding rechts). Voor de eerste maal in de geschiedenis van de cryptografie konden diplomaten een werkelijk onbreekbare vercijfering tot hun beschikking hebben. Helaas namen ze de fatale beslissing om de willekeurige getallen te produceren met een eenvoudige mechanische machine. Daardoor degradeerden ze het onbreekbare one-time pad tot een zwak pseudo-willekeurig stroomcijfer. In 2016 ontdekte researcher Steven Bellovin een U.S. Army Security Agency (ASA) document uit 1947 over de cryptoanalyse van Duitse diplomatieke berichten, GEE genoemd. Analyse van de berichten legde patronen bloot die aantoonden dat de additieve sleutels niet werkelijk willekeurig waren. ASA kon uiteindelijk de originele sequenties van de willekeurige getallen reproduceren en aan de hand daarvan de originele machine reconstrueren. Dit maakte het mogelijk de diplomatieke berichten te ontcijferen. Het is belangrijk te begrijpen dat dit geen voorbeeld is van het ontcijferen van one-time pad (one-time pad is onbreekbaar) maar een historisch belangrijk schoolvoorbeeld van slechte implementatie, in casu, het gebruik van niet werkelijk willekeurige sleutels.

In 1943 werden one-time pads het primair systeem van de Special Operations Executive (SOE) om de onveilige op gedichten gebaseerde transpositiecijfers en boekcijfers te vervangen. Het systeem werd tijdens en na de Tweede Wereldoorlog veelvuldig gebruikt door verschillende inlichtingendiensten, sabotage-en spionage eenheden. De onbreekbare encryptie verhindert het ontcijferen en onthullen van agenten en hun contacten tijdens langdurige operaties. Zo'n veiligheidsniveau kan nooit gegarandeerd worden met andere vercijferingsmethoden omdat de tegenstander mogelijk genoeg tijd heeft voor succesvolle ontcijfering.

One-time pad boekje - foto © D. Rijmenants

Een papieren one-time pad


One-time pag booklets - Image © SAS Chiffrierdienst

One-time Pads en omzettingstabel van de
Oost-Duitse inlichtingendienst HVA
(Hauptverwaltung Aufklärung)
© SAS Chiffrierdienst


© Canadian Security Intelligence Service

One-time pad boekje en microdot lezer, verborgen
in een speelgoedtruck, gebruikt door een
geheimagent die opereerde in Canada.
© Canadian Security Intelligence Service


German one-time pad, Courtesy & Copyright © NSA Cryptologic Museum. Click to enlarge

Duitse diplomatieke one-time bladen. © NSA


Ogorodnikov one-time pads - KGB Archieven

CIA one-time pad gebruikt door Aleksandr Ogorodnik (klik om te vergroten)
Bron: KGB Archief


(klik de afbeeldingen om ze te vergroten)

Rechts-boven vind u foto's van verschillende vormen van one-time pads. Een miniatuurboekje, samen met microdot lezer en een speciale lens, was handig verborgen in een speelgoed truck die Canada was binnengebracht door de zoon van een inlichtingenofficier (Canadese CSIS). U ziet ook een Duits one-time pad, gebruikt voor officiële communicatie tussen Saigon en Berlijn, bestaande uit een verzegelde map met serienummer 55 en honderd one-time pad bladen, genummerd van 6500 tot 6599. Elk blad bevat de willekeurige getallen en genoeg ruimte om het bericht neer te schrijven en de berekeningen te doen (NSA National Cryptologic Museum). De laatste foto is een one-time pad, gebruikt door Aleksandr Ogorodnik, een ambtenaar op het Sovjet ministerie van buitenlandse zaken die voor de CIA spioneerde (meer info Andrei Sinelnikov [in Russich] [Nederlandse vertaling]).

De Sovjets leunden tijdens en na de Tweede Wereldoorlog sterk op OTT's en OTP's voor het leger en de inlichtingendiensten waardoor hun vitale communicatie grotendeels ondoordringbaar bleef. Een van de systemen die de Sovjets gebruikten voor brieven van en naar hun ambassades was om enkel de gevoelige woorden, namen of zinnen te verwijderen en deze te vervangen door "No 1", "No 2", enz. Vervolgens werd enkel die gevoelige tekst en bijhorende nummering vercijferd met one-time pad en die cijfertext begeleidde de brief. Door enkel de vitale delen van lange brieven te vercijferen konden zijn de hoeveelheid cijfertext, werk en tijd drastisch reduceren. Een belangerijke change-over van Soviet communicaties naar one-time pads verlamde de SIGINT inspanningen van NSA vele jaren, een gebeurtenis die bij NSA bekend stond als Black Friday (chap 3, p19).

Het gebruik van one-time pads werd in die periode nauwelijks vermeld in officiële documenten. Dit was vanzelfsprekend omwille van veiligheidsredenen. Ik kwam nochtans enkele documenten tegen in de India Office Records van de British Library. Die tonen hoe in 1943 de Bahrain Petroleum Company (BAPCO), een dochtermaatschappij van American Standard Oil of California die werkte in de Perzische Golf, toestemming kreeg om via one-time pads to communiceren met hun kantoor in New York. De pads werden hen geleverd door de U.S. Navy en op degelijkheid gecontroleerd door de Britse Cipher Security Officer van PAIFORCE (Persia and Iraq Force, een Britse en Commonwealth militaire formatie in het Midden-Oosten van 1942 tot 1943). Ze bewijzen het officiele gebruik van one-time letter pads door de Politieke Residenten van de Britse Imperial Civil Administration, het Britse leger, het Ministerie van Oorlogstransport in Londen en de U.S. Navy, minstens vanaf 1943. Meer details hierover zijn terug te vinden in mijn blog artikel over BAPCO.

Later werden vele variaties op het manuele one-time pad systeem bedacht. De naam one-time pad komt van de kleine blocnotes of "pads" waarop willekeurige cijfers of letters, meestal in groepen van vijf, worden gedrukt. De pads zijn dikwijls gedrukt op zeer kleine boekjes of op microfilm voor gebruik door geheime diensten.

Papieren one-time pads Top

Vanwege de praktische en logistieke problemen qua sleuteldistributie is het gebruik van de pen-en-papier one-time pads beperkt. One-time pads werden tot de jaren '80 veel gebruikt door coderingspersoneel van overheidsdiensten zoals ministeries van Buitenlandse Zaken en andere diplomatieke diensten, dikwijls in combinatie met codeboeken. Zo'n codeboek bevatte allerlei woorden, uitdrukkingen en volledige standaard zinnen, die omgezet werden in een getal van drie of vier cijfers. Er was een codeboek om te vercijferen, gerangschikt volgens alfabet of categorie, en een codeboek om te ontcijferen, gerangschikt volgens de cijfers. Deze boeken waren geldig voor langere periodes en dienden niet enkel om het bericht te coderen - wat op zichzelf een zwakke vercijfering zou zijn - maar vooral om de lengte van het bericht te reduceren voor verzending over commerciële kabel of Telex. Eens het bericht geconverteerd was naar cijfers werden deze cijfers gecodeerd met het one-time pad systeem.

Gewoonlijk was er een set van twee verschillende pads, één voor binnenkomende en één voor uitgaande berichten. Hoewel er normaal slechts twee kopijen zijn van een one-time pad bestaan er systemen waarbij er meer dan twee kopijen zijn voor meerdere ontvangers. De one-time pads leken op noteblocks met willekeurige nummers op elke pagina waarvan de bladranden verzegeld waren. Men kon de volgende reeks getallen van de sleutel slechts aflezen als de vorige pagina afgescheurd was. Elke pagina werd slechts één keer gebruikt en onmiddellijk vernietigd. Dit systeem maakte absoluut veilige communicatie mogelijk. Een goede beschrijving van gebruik van one-time pads door de Canadese Buitenlandse diensten vindt u op Jerry Proc's website.

Inlichtingendiensten gebruiken one-time pads voor communicatie met hun agenten in operaties in het buitenland, waar absolute veiligheid de hoogste prioriteit heeft. Met one-time pads dienen zij geen compromitterende crypto systemen of computer programma's bij zich te hebben. De one-time pad sleutels, dikwijls zéér kleine boekjes of blaadjes met getallenreeksen, soms op microfilm, kunnen gemakkelijk verborgen worden. Een bekende wijze om OTP-vercijferde berichten te verzenden naar agenten te velde is via nummerstations.

Een voorbeel van gebruikt voor spionage is de TAPIR procedure, gebruikt in het voormalige Oost-Duitsland , is gepubliceerd op de SAS und Chiffrierdienst website. Bij TAPIR wordt de klare tekst eerst omgezet in getallen via een tabel, vergelijkbaar met een straddling checkerboard, alvorens te vercijferen met one-time pad. De meest frequente letters hebben één cijfer en andere letters, veelgebruikte bigrammen, getallen en tekens hebben twee cijfers. Vervolgens word de tekst vercijferd door de sleutel ervan af te trekken. De TAPIR tabel onderdrukt pieken in de frequenctie-distributie van de cijfers en creëert fractionering. In de uiteindelijk vercijferde tekst weet men nooit of een cijfer een volledige letter is, of het linker of rechter-cijfer van een letter of teken. WR 80 is een nieuwe lijn. Bu 81 (Buchstaben) en Zi 82 (Ziffern) worden gebruikt als omschakeling tussen letters en tekens. ZwR 83 is een spatie. De rode vakken mogen zowel binnen letter als teken mode gebruikt worden. Code 84 wordt gebruikt als prefix voor 5 cijferige codes die lange woorden of zinnen vervangen, verkregen uit een codeboek. U kunt een voorbeeld van codeboek hier bekijken. Merk op dat de vreemde reeks van cijfercombinaties voor het vervangen van woorden of uitdrukkingen zorgvuldig gekozen is zodat fouten in de codes makkelijk ontdekt kunnen worden. Meer tekst-naar-cijfer omzettingstabellen, kan je vinden op de Straddling Checkerboards pagina.

TAPIR conversion table - Image © SAS Chiffrierdienst

Tapir omzettingstabel © SAS und Chiffrierdienst

Op de SAS und Chiffrierdienst website is ook een goede beschrijving door de Oost-Duitse inlichtingendienst (Stasi) te vinden van de one-time pad procedures voor nummerberichten, gebruikt door CIA agenten die in de DDR opereerden. Meer details over het gebruik van one-time pads is te lezen in de Guide to Secure Communications with the One-time Pad Cipher PDF Format

Hieronder links een one-time pad met Vigenere tabel, van een westerse agent, in beslag genomen door het Oost-Duitse MfS (Ministerium für Staatssicherheit of Stasi). De tweede foto is een one-time pad (gepreserveerd in een 35 mm dia frame) van een Oost-Duitse agent, gevonden door het West-Duitse BfV (Bundesamt für Verfassungsschutz of federale binnenlandse veiligheid). De foto rechts is een one-time pad van een westerse agent, in beslag genomen door het MfS (tevens in een 35 mm dia frame). Het pad zelf is slechts zo'n 15 mm breed (dus nog kleiner dan afgebeeld) en vrijwel onmogelijk te lezen met het blote oog! Ik had zelfs moeilijkheden om het goed te fotograferen. Zulke miniatuur one-time pads werden gebruikt door illegale agenten, opererend in het buitenland, en waren makkelijk te verbergen in onschuldig lijkende alledaagse voorwerpen zoals aanstekers, holle batterijen of asbakken. U kunt alle foto's aanklikken om ze te vergroten. Echter, om het kleine one-time pad te kunnen lezen zult u nogmaals moeten klikken en inzoomen in uw browser na vergroten.

One-time pad boekje - foto © D. Rijmenants

One-time pad boekje met letters en reciproke tabel

HVA - Stasi one-time pad

Een standaard 250 cijfers one-time pad (HVA-Stasi)

One-time pad - foto © D. Rijmenants

Miniatuur pad

Foto's © Dirk Rijmenants, materiaal van de Detlev Freisleben collectie

Op one-time pad gebaseerde cryptomachines Top

Tot begin jaren '80 werd éénmalige vercijfering ook gebruikt om militair en diplomatiek Telex verkeer te beveiligen. De Telex machines gebruikten daarbij het originele one-time tape (OTT) principe van Vernam. Dit systeem vereiste twee identieke rollen papiertape met werkelijk willekeurige vijf-bits waarden, de zogenaamde one-time tapes. Deze werden op voorhand verdeeld aan verzender en ontvanger. Meestal werd het bericht voorbereidt (geperforeerd) in klare tekst op een perfo-tape. Vervolgens werd het bericht met behulp van een tapelezer verstuurd op een Telex machine en één kopij van de geheime one-time tape liep synchroon met het bericht op een tweede tapelezer. Alvorens de machine te verlaten werden de vijf-bits signalen van beide tapelezer gemixt via een Exclusive OR (XOR) functie, waardoor het bericht onleesbaar werd. Aan de andere kant van de lijn werden de onleesbare signalen via XOR functie terug gemengd met de tweede kopij van de geheime one-time tape om tenslotte leesbaar uitgeprint of geperforeerd te worden op de ontvangende machine.

Ook de zogenaamde hotlines van belangrijke wereldleiders en topgeheime communicatie tussen inlichtingendiensten en legers gebruikten one-time pads. Een beroemd voorbeeld van het veilige one-time pad is de Washington/Moskou hotline met de ETCRRM II, een standaard commerciële one-time tape mixer voor Telex. Hoewel eenvoudig en goedkoop bood deze de ETCRRM absoluut onbreekbare communicatie tussen Washington en het Kremlin, zonder geheime crypto technologie te onthullen aan de tegenstander. Sommige andere codeermachines die het principe van one-time pad gebruikten waren de Amerikaanse TELEKRYPTON, SIGSALY (ruis als one-time pad), B-2 PYTHON en SIGTOT, de Britse BID-590 NOREEN en 5-UCO, de Canadese ROCKEX, de Nederlandse ECOLEX serie, de Zwitserse Hagelin CD-57 RT, CX-52 RT en HT-55 met superencryptie, de Duitse Siemens T-37-ICA en M-190, de Oost-Duitse T-304 LEGUAN, de Tjechische SD1, de Russische M-100 SMARAGD en M-105 N AGAT en de Poolse T-352/T-353 DUDEK. Er waren ook verschillende teleprinter of codeermachine configuraties, verbonden met een afzonderlijke tape-lezer, voor one-time tape encryptie of superencryptie. De afbeelding hieronder toon het principe van one-time tape vercijfering voor Telex (TTY Murray).

5 Bit One-time tape encryption © D. Rijmenants

Teletype signaal one-time tape vercijfering



One-time tape Teletype Hotline Top

Hieronder enkele foto's van de beroemde Washington-Moskou hotline, vercijferd met one-time tapes. De hotline werd operationeel in 1963 en was een full-duplex teleprinter (Telex) verbinding. Hoewel de hotline in films en de populaire cultuur steevast werd afgebeeld als een rode telefoon, werd de mogelijkheid van een spraakverbinding onmiddellijk afgewezen, aangezien spontane verbale communicatie kon leiden tot misvattingen, slechte communicatie, foutieve vertaling of ondoordachte opmerkingen. Allemaal serieuze risico's bij overleg tijdens zware conflicten. Desalniettemin leefde de mythe van de rode telefoon nog een lang leven. De echte Hotline was een directe kabel link van Washington via Londen, Kopenhagen, Stockholm en Helsinki naar Moskou. Het was een dubbele verbinding met commerciële teleprinters, één link met twee Amerikaanse Teletype Corp Model 28 ASR teleprinters met Engelse karakterset en een link met twee Russische T-63 teleprinters van Oost-Duitse makelij met Cyrillische karakterset. De links waren vercijferd met one-time tapes met behulp van vier ETCRRM's (Electronic Teleprinter Cryptographic Regenerative Repeater Mixer). De one-time tape vercijfering bood onbreekbare vercijfering, absolute veiligheid en privacy. Hoewel een zeer veilig systeem, werden de ongeclassificeerde standaard teleprinters en ETCRRM's verkocht door commerciële firma's en onthulden daarom geen geheime crypto technologie aan de tegenstander.

Meer info op de Crypto Museum website, op Top Level Communications en Jerry Proc's Washington/Moscow hotline.

Image © National Security Agency

De ETCRRM

Image © National Security Agency

De T-63, gebruikt op de US-USSR hotline,
samen met de ETCRRM one-time tape mixer.

Image © National Security Agency

In de Washington-Moskou hotline kamer



One-time pad met letters
Top

Er zijn verschillende manieren om one-time pad vercijfering toe te passen. Ze zijn allen absoluut veilig en onbreekbaar indien de regels van one-time pad vercijfering strikt gevolgd worden. We kunnen letters of getallen gebruiken. In ons eerste voorbeeld demonstreren we het gebruik van letters. Het resultaat van zo'n encryptie is altijd enkel uit letters en de OTP sleutels worden ook wel OTLP (One-Time Letter Pad) genoemd. Dit systeem is minder flexibel dan one-time pad met getallen maar er is sechts één vercijferingsstap waardoor het vrij snel is. Daarom is het ideaal voor berichten die grotendeels uit letters bestaan en er zelden letters of leestekens gespeld moeten worden.

Voor one-time pad met letters hebben we een Vigenere tabel of tabula recta nodig:

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z   
   +----------------------------------------------------
A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F | F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G | G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H | H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I | I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J | J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K | K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L | L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M | M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O | O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P | P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q | Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R | R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S | S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T | T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U | U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V | V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W | W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X | X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

Om een letter te vercijferen schrijven we de sleutel onder de klare tekst. We nemen we de klaartekst letter bovenaan en de sleutelletter rechts. De kruising tussen de twee is de cijfertekst. In de eerste letter van ons voorbeeld hieronder is de kruising tussen de klaartekst T en sleutel X de cijfertekst Q.

Klare tekst:  T H I S   I S   S E C R E T
OTP-sleutel:  X V H E   U W   N O P G D Z
----------------------------------------
Cijfertekst:  Q C P W   C O   F S R X H S

In groepen :  QCPWC OFSRX HS

Om te ontcijferen nemen we de sleutel letter in de linkse rij en zoeken in die rij de cijfertekst letter. De klaartekst letter is de letter boven de kolom waarin de cijfertekst letter is gevonden. In ons voorbeeld nemen we de X rij, zoeken Q in die rij en zijn bovenaan de klaartekst T. Om het makkelijker te onthouden kunnen we de horizontalen kolomhoofding als klaartekst aanzien, de verticale rijhoofding als sleutel en het lettervierkant als cijfertekst.

Het vinden van de juiste kruising tussen sleutel en letter in zo'n grote tabel kan moeilijk zijn. Er zijn verschillende praktische oplossingen voor de Vigenere tabel zoals de Vigenere schijf, de Vigenere schuiver en Vigenere tabel kaart. Alle afbeeldingen kunnen met rechtsklikken opgeslagen worden, en nadien afgedrukt en uitgeknipt.

Er zijn echter eenvoudige en snellere methodes om letters te vercijferen. Een zo'n systeem is een tabel met reciproke alfabetten. Dit is veel sneller dan Vigenere en daarom ideaal voor het vercijferen van grotere volumes. Het manuele DIANA crypto systeem, gebruikt door U.S. Special Forces tijdens de Vietnam Oorlog is een voorbeeld van een systeem dat reciproke vercijfering gebruikt (zie NSA's History of Communications Security, pagina 22).

Voor elke sleutel-letter is er een ander alfabet waarvan de vercijferde versie omgekeerd is en een letter verschoven tegenover het vorige alfabet. Dankzij dit formaat zijn de handelingen voor vercijfering en ontcijfering identiek. Er zijn verschillende versies van reciproke tabellen maar zij gebruiken allemaal hetzelfde systeem. Opgelet, deze tabel is niet compatibel met de gewone Vigenere tabel! U kunt de reciproke one-time pad tabel downnloaden als .txt bestand (rechts-klikken en opslaan).

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
-----------------------------------------------------------------------------
Az Ay Ax Aw Av Au At As Ar Aq Ap Ao An Am Al Ak Aj Ai Ah Ag Af Ae Ad Ac Ab Aa
By Bx Bw Bv Bu Bt Bs Br Bq Bp Bo Bn Bm Bl Bk Bj Bi Bh Bg Bf Be Bd Bc Bb Ba Bz
Cx Cw Cv Cu Ct Cs Cr Cq Cp Co Cn Cm Cl Ck Cj Ci Ch Cg Cf Ce Cd Cc Cb Ca Cz Cy
Dw Dv Du Dt Ds Dr Dq Dp Do Dn Dm Dl Dk Dj Di Dh Dg Df De Dd Dc Db Da Dz Dy Dx
Ev Eu Et Es Er Eq Ep Eo En Em El Ek Ej Ei Eh Eg Ef Ee Ed Ec Eb Ea Ez Ey Ex Ew
Fu Ft Fs Fr Fq Fp Fo Fn Fm Fl Fk Fj Fi Fh Fg Ff Fe Fd Fc Fb Fa Fz Fy Fx Fw Fv
Gt Gs Gr Gq Gp Go Gn Gm Gl Gk Gj Gi Gh Gg Gf Ge Gd Gc Gb Ga Gz Gy Gx Gw Gv Gu
Hs Hr Hq Hp Ho Hn Hm Hl Hk Hj Hi Hh Hg Hf He Hd Hc Hb Ha Hz Hy Hx Hw Hv Hu Ht
Ir Iq Ip Io In Im Il Ik Ij Ii Ih Ig If Ie Id Ic Ib Ia Iz Iy Ix Iw Iv Iu It Is
Jq Jp Jo Jn Jm Jl Jk Jj Ji Jh Jg Jf Je Jd Jc Jb Ja Jz Jy Jx Jw Jv Ju Jt Js Jr
Kp Ko Kn Km Kl Kk Kj Ki Kh Kg Kf Ke Kd Kc Kb Ka Kz Ky Kx Kw Kv Ku Kt Ks Kr Kq
Lo Ln Lm Ll Lk Lj Li Lh Lg Lf Le Ld Lc Lb La Lz Ly Lx Lw Lv Lu Lt Ls Lr Lq Lp
Mn Mm Ml Mk Mj Mi Mh Mg Mf Me Md Mc Mb Ma Mz My Mx Mw Mv Mu Mt Ms Mr Mq Mp Mo
Nm Nl Nk Nj Ni Nh Ng Nf Ne Nd Nc Nb Na Nz Ny Nx Nw Nv Nu Nt Ns Nr Nq Np No Nn
Ol Ok Oj Oi Oh Og Of Oe Od Oc Ob Oa Oz Oy Ox Ow Ov Ou Ot Os Or Oq Op Oo On Om
Pk Pj Pi Ph Pg Pf Pe Pd Pc Pb Pa Pz Py Px Pw Pv Pu Pt Ps Pr Pq Pp Po Pn Pm Pl
Qj Qi Qh Qg Qf Qe Qd Qc Qb Qa Qz Qy Qx Qw Qv Qu Qt Qs Qr Qq Qp Qo Qn Qm Ql Qk
Ri Rh Rg Rf Re Rd Rc Rb Ra Rz Ry Rx Rw Rv Ru Rt Rs Rr Rq Rp Ro Rn Rm Rl Rk Rj
Sh Sg Sf Se Sd Sc Sb Sa Sz Sy Sx Sw Sv Su St Ss Sr Sq Sp So Sn Sm Sl Sk Sj Si
Tg Tf Te Td Tc Tb Ta Tz Ty Tx Tw Tv Tu Tt Ts Tr Tq Tp To Tn Tm Tl Tk Tj Ti Th
Uf Ue Ud Uc Ub Ua Uz Uy Ux Uw Uv Uu Ut Us Ur Uq Up Uo Un Um Ul Uk Uj Ui Uh Ug
Ve Vd Vc Vb Va Vz Vy Vx Vw Vv Vu Vt Vs Vr Vq Vp Vo Vn Vm Vl Vk Vj Vi Vh Vg Vf
Wd Wc Wb Wa Wz Wy Wx Ww Wv Wu Wt Ws Wr Wq Wp Wo Wn Wm Wl Wk Wj Wi Wh Wg Wf We
Xc Xb Xa Xz Xy Xx Xw Xv Xu Xt Xs Xr Xq Xp Xo Xn Xm Xl Xk Xj Xi Xh Xg Xf Xe Xd
Yb Ya Yz Yy Yx Yw Yv Yu Yt Ys Yr Yq Yp Yo Yn Ym Yl Yk Yj Yi Yh Yg Yf Ye Yd Yc
Za Zz Zy Zx Zw Zv Zu Zt Zs Zr Zq Zp Zo Zn Zm Zl Zk Zj Zi Zh Zg Zf Ze Zd Zc Zb

Om te vercijferen schrijven we de sleutel onder de klare tekst of omgekeerd. In tegenstelling tot Vigenere speelt de volgorde van sleutel en klare tekst geen rol en mogen verzender en ontvanger zelfs een verschillende volgorde gerbuiken. Voor elke combinatie van sleutel en klare letter nemen we de tabel kolom die overeen komt met de eerste letter en zoeken in die kolom naar de tweede letter. De letter rechts daarvan is het resultaat.

In het voorbeeld hieronder schreven we de sleutel boven de klare tekst. We kiezen de kolom die overeen komt met de sleutel-letter X en zoeken daaronder naar de klare letter T en vinden rechts daarvan de cijfertekst letter j. Dankzij het reciproke systeem speelt het geen rol of we X met T of T met X combineren. Bemerk dat een DIANA cijfertekst totaal verschilt van een Vigenere cijfertekst en daarom niet compatibel zijn.

OTP-sleutel:  X V H E   U W   N O P G D Z 
Klare tekst:  T H I S   I S   S E C R E T
----------------------------------------
Cijfertekst:  J X K D   X L   U H I C S H

In groepen :  JXKDX LUHIC SH

Voor ontcijfering nemen we de kolom voor sleutel-letter X, zoeken nu daaronder de cijfertekst letter J en vinden rechts daarvan klare letter t, maar u kunt net zo goed in kolom J de letter X zoeken en rechts daarvan de klare leter t vinden. Het mooie aan dit systeem is de snelheid, het makkelijke combineren en de identieke handelingen voor zowel vercijferen als ontcijferen. Denk eraan dat dit systeem niet compatibel is met de Vigenere tabel en verzender en ontvanger beiden steeds dezelfde tabel moeten gebruiken!

Er is ook een methode om de reciproke tabel te memoriseren en het vercijferingsproces nog meer te versnellen. De volgorde van klare letter, sleutel en cijferletter is van geen belang in een reciproke tabel. Dus, A vercijfert met G geeft T en ontcijfers als T met G geeft A, maar ook G met T geeft A. We noemen dit de trigram combinatie AGT. Vanwege de reciproke eigenschap kunnen we dit trigram gebruiken in elke mogelijke combinatie, zijnde AGT, ATG, GAT, GTA, TAG en TGA. Als we dus een letter van het trigram vercijferen of ontcijferen met een andere letter uit dat trigram is het resultaat steeds de overblijvende letter. We moeten dus enkel het trigram AGT onthouden en weten meteen alle afgeleide trigrammen. Dit reduceert het aantal combinaties van 676 naar 126 en je mag spelen met de volgorde.

Elke gebruiker kan zijn eigen lijst van ezelsburgjes maken om de 126 mogelijke trigrammen te onthouden in eender welke volgorde. AGT kan makkelijk onthouden worden door het woord "GAT". Enkele andere voorbeelden zijn AVE (avé maria), HRB (HR-Bureau), GPE (grote prijs engeland), GGN (goed ge-noeg), WTK (wa-ter-kraan) of HZT (huis zonder tuin). Ieder kiest zijn eigen connotatie om de trigrammen makkelijk te onthouden. Een geoefend operator kan zeer snel on-the-fly vercijferen en ontcijferen zonder tabel. U kunt de volledige lijst van reciproke one-time pad trigrammen downloaden als .txt bestand (rechts-klikken en opslaan)

De volledige lijst van 126 trigrammen, te onthouden in eender welke volgorde (bv. ABY is ook AYB, BAY, BYA, YAB and YBA)

AAZ ABY ACX ADW AEV AFU AGT AHS AIR AJQ  
AKP ALO AMN BBX BCW BDV BEU BFT BGS BHR
BIQ BJP BKO BLN BMM BZZ CCV CDU CET CFS
CGR CHQ CIP CJO CKN CLM CYZ DDT DES DFR
DGQ DHP DIO DJN DKM DLL DXZ DYY EER EFQ
EGP EHO EIN EJM EKL EWZ EXY FFP FGO FHN
FIM FJL FKK FVZ FWY FXX GGN GHM GIL GJK
GUZ GVY GWX HHL HIK HJJ HTZ HUY HVX HWW
IIJ ISZ ITY IUX IVW JRZ JSY JTX JUW JVV
KQZ KRY KSX KTW KUV LPZ LQY LRX LSW LTV
LUU MOZ MPY MQX MRW MSV MTU NNZ NOY NPX
NQW NRV NSU NTT OOX OPW OQV ORU OST PPV
PQU PRT PSS QQT QRS RRR	

Een andere maar meer omslachtige methode om de letters te berekenen zonder Vigenere tabel is met modulo 26. We kennen elke letter een waarde toe (A=00 tot Z=25). Merk op dat we starten met A=0 en niet A=1 vanwege de modulo berekening. Tekst en sleutel worden opgeteld, deze keer wél met overdracht, maar met modulo 26 (als het resultaat groter is dan 25 trekken we 26 af). Tenslotte zetten we de getallen om in letters. Om het bericht te ontcijferen zetten we cijfertekst en sleutel om in getallen en trekken we de sleutel af van de cijfertekst, ook hier weer met modulo 26 (als het resultaat kleiner is dan 0 tellen we er 26 bij).

Klare tekst   T  H  I  S  I  S  S  E  C  R  E  T  
             19 07 08 18 08 18 18 04 02 17 04 19
OTP-sleutel   X  V  H  E  U  W  N  O  P  G  D  Z
            +23 21 07 04 20 22 13 14 15 06 03 25
            ------------------------------------
Resultaat    42 28 15 22 28 40 31 18 17 23 07 44
Mod 26 =     16 02 15 22 02 14 05 18 17 23 07 18
            ------------------------------------
Cijfertkest   Q  C  P  W  C  O  F  S  R  X  H  S

 In groepen :   QCPWC OFSRX HS

We kunnen een kleine hulptabel gebruiken voor de berekeningen. Om te vercijferen door optelling nemen we bijvoorbeeld T(19) + X(23). Het totaal is 42, wat zich onder de letter Q bevind in de omzettingstabel. Om te ontcijferen door aftrekken nemen we Q(16) - X(23). Indien het resultaat negatief zou zijn (wat hier het geval is) nemen we het grotere equivalent van Q(16), wat 42 is in de omzettingstabel. Q(42) - X(23) = T(19).

                               MODULO 26 HULPTABEL

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z 
-----------------------------------------------------------------------------
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 --



One-time pad met nummers Top

One-time pad vercijfering met nummbers is het meest flexibele systeem dat vele variaties toelaat. Gewoonlijk is de vercijfering het aftrekken van de willekeurige sleutel van de klare tekst en de ontcijfering het samentellen van de cijfertekst en de sleutel. Alvorens de berekeningen uit te voeren moeten we echter de tekst omzetten in getallen. Er zijn verschillende manieren om dit te doen. De meest eenvoudige methode is om tweecijferige waarden toe te kennen aan elke letter (A=01 tot Z=26).

Een populaire en zuiniger methode is het zogenaamde straddling checkerboard (vrij vertaald: spreidend schaakbord). Let wel, deze tekst-naar-cijfer omzetting is op zich geen cryptografische vercijfering en moet steeds gevolgd worden door een vercijfering met een sleutel. Een checkerboard zet de meeste frequente letters om in één cijfer en de andere letters in twee cijfers. Hierdoor wordt de cijfertekst aanzienlijk kleiner dan met het simpele A=01/Z=26 systeem. Er bestaan verschillende checkerboard varianten met verschillende karaktersets en symbolen, geoptimaliseerd voor verschillende talen. De eerste rij van het checkerboard bevat de meest frequente letters met enkele lege velden ertussen. De volgende rijen (zoveel als er lege velden in de eerste rij zijn) bevatten de overige letters. Deze volgende rijen zijn aangeduid met de cijfers uit lege velden in de bovenste rij. Checkerboards worden onthouden met de letters in de bovenste rij, die kunnen verschillen naargelang de taal waarvoor ze werden geoptimaliseerd. Enkele voorbeelden zijn "AT-ONE-SIR" en "ESTONIA---" (Engels), "DEIN--STAR" en "DES--TIRAN" (Duits), "SENORITA--" en "ENDIOSAR--" (Spaans), "RADIO-NET-" (Nederlands) of "ZA---OWIES" (Pools). Zulke woordcombinaties zijn eenvoudig te maken met een anagram-generator. Meer lege velden in de eerste rij maken meer bijkomende rijen mogelijk, en dus meer karakters. Het is niet noodzakelijk de tabel geheim te houden of de getallen of letters te scramblen omdat one-time pad vercijfering gebruikt zal worden. Meer voorbeelden van checkerboards zijn te vinden op deze pagina.

In dit voorbeeld gebruiken we een standaard checkerboard met het "AT-ONE-SIR" ezelfsbruggetje, geoptimaliseerd voor Engels.

 | 0 1 2 3 4 5 6 7 8 9
 +---------------------
 | A T   O N E   S I R
2| B C D F G H J K L M
6| P Q U V W X Y Z . fig

De letters van de bovenste rij worden omgezet naar de ééncijferige waarden net erboven. Alle andere letters worden omgezet naar tweecijferige waarden door de rijhoofding en vervolgens de kolomhoofding te nemen. Om getallen om te zetten gebruiken we "FIG" net voor en na getallen, waarbij we de cijfers drie maal uitschrijven om vergissingen bij het verzenden of ontcijferen te vermijden.

Laat ons de tekst "PLEASE CONTACT ME AT 1200 H." omzetten met het checkerboard

Kalre tekst: P  L  E  A  S  E   C  O  N  T  A  C  T   M  E   A  T  [fig]  1   2   0   0  [fig] H   .   
Plaincode  : 60 28 5  0  7  5   21 3  4  1  0  21 1   29 5   0  1   69   111 222 000 000  69   25  68

Om te vercijferen vervolledigen we de laatste groep met nullen en schrijven de sleutel eronder. Aangezien we getallen gebruiken moeten we de cijfertekst berekenen met modulo 10. Deze modulo 10 bewerking is essentiëel voor de veiligheid van de vercijfering. Om dit te doen trekken we de sleutel van de klaartekst af, zonder overdracht (vb 3 - 7 = 13 - 7 = 6).

Plaincode  :     60285 07521 34102 11295 01691 11222 00000 06925 68000 
OTP-sleutel: (-) 50418 55297 01164 98769 26107 85944 36228 44985 25485
---------------------------------------------------------------------
Cijfertekst:     10877 52334 33048 23536 85594 36388 74882 62040 43625

Om het bericht te ontcijferen tellen we de cijfertekst en de one-time pad sleutel samen zonder overdracht (vb 5 + 7 = 2 en niet 12). Vervolgens zetten we de cijfers terug om in tekst. Het is eenvoudig om de ééncijferige en tweecijferige waarden te scheiden. Als een waarde start met een rijnummer 2 of 6 dan is het een tweecijferige omzetting en volgt er nog één cijfer. In alle ander gevallen is het een ééncijferige omzetting.

Soms gebruikt men een codeboek of codeblad om de lengte van de cijfertekst en de transmissietijd te verkleinen. Zo'n codeboek kan allerlei woorden en/of kleine zinnen bevatten over berichtbehandeling en operationele, technische of tactische uitdrukkingen. Een codeboek systeem moet niet altijd een groot boek zijn met duizenden uitdrukkingen. Zelfs één enkele codetabel kan genoeg praktische informatie bevatten om de lengte van een bericht enorm te reduceren. Hieronder enkele foto's van een Koreaans codeblad, de instructies voor het omzetten van de tabelinhoud in getallen en hoe men de cijfertekst berekend. Foto's © Detlev Freisleben Archief (klik om te vergroten)

Images © Detlev Freisleben Archive

Codeblad om allerhande gegevens om te zetten in getallen

Images © Detlev Freisleben Archive

Instructies

Images © Detlev Freisleben Archive

Detail van de tekst-naar-cijfer omzetting



Een praktisch voorbeeld met getallen
Top

Als kleine oefening zullen we een opname van een echt nummerstation ontcijferen (zie belangrijke opmerking onderaan). U kunt hieronder het geluidsbestand openen of downloaden (rechts-klikken en Doel opslaan als...). De uitzending begint met een herhaalde melodie en de roepnaam van de ontvanger "39715", gevolgd door zes tonen en het bericht zelf. Alle groepen van het bericht worden twee maal gespeld om vergissingen bij ontvangst te vermijden. Noteer elke groep één maal (sla de roepnaam over). Eens u het volledig bericht hebt genoteerd schrijft u onderstaande one-time pad sleutel eronder. Tel bericht en sleutel op, cijfer per cijfer, van links naar rechts, zonder overdracht (vb. 6 + 9 = 5 en niet 15). Zet tenslotte de cijfers terug om in tekst met behulp van het "AT-ONE-SIR" checkerboard van hierboven en u bekomt het oorspronkelijke bericht. Let er op dat u de één-cijferige en twee-cijferige karakters correct splitst.

Deze kleine oefening toont hoe geheimagenten berichten op een absoluut veilige wijze kunnen ontvangen met behulp van one-time pads, een kleine kortegolfontvangen en potlood en papier.

Nummerstation bericht (1724 Kb)

De gebruikt one-time pad sleutel:

66153 77185 10800 54937 48159 83271 12892 07132 34987 53954 23074

Belangrijke opmerking: Hoewel het hier om een originele opname gaat van een echt nummerstation (Lincolnshire Poacher, E3 Voice) is de one-time pad sleutel fictief en zodanig herberekend (sleutel = klare tekst - cijfertekst) zodat een leesbaar doch fictief bericht verkregen werd. In werkelijkheid iweten we niet welke sleutel is gebruikt, of we moeten optellen of aftrekken en is het absoluut onmogelijk het bericht te ontcijferen Gezien een one-time pad volledig willekeurig is kan men van een cijfertekst een eender welk leesbaar bericht maken zolang men maar de "juiste" verkeerde sleutel gebruikt. Dat is nu net waarom one-time pad onbreekbaar is.

Secret Splitting Top

Er is een speciale manier om one-time pad te gebruiken waarbij de sleutel nooit vernietigd mag worden. Secret Splitting (geheim splitsen) is interessant als informatie enkel beschikbaar mag zijn wanneer twee personen instemmen om de informatie vrij te geven. De geheime informatie wordt vercijferd met één enkel one-time pad waarna men de originele klare tekst vernietigd. Eén gebruiker krijgt het vercijferde bericht en de andere gebruiker de sleutel. Het maakt niet uit wie wat krijgt aangezien we de beide kunnen zien als gelijke delen van de originele informatie. Beide delen worden sleutels genoemd en beiden zijn waardeloos zonder elkaar. Dit is secret splitting of geheim splitsen. We kunnen bijvoorbeeld de nummercombinatie voor een kluis vercijferen en geven de gesplitste cijfertekst aan twee verschillende personen geven. Enkel wanneer beide personen toestemmen om de kluis te openen zal het mogelijk zijn om de geheime combinatie te ontcijferen. Je kunt ook informatie in meer dan twee delen splitsen.

In onderstaand voorbeeld splitst Charlie de geheime combinatie 21 46 03 88 van zijn kluis. Een werkelijk willekeurige sleutel wordt cijfer per cijfer modulo 10 (zonder lenen) afgetrokken van de geheime combinatie. Alice en Bob ontvangen beiden een deel van deze informatie van Charlie. Het is rekenkundig onmogelijk voor Alice en Bob om de geheime combinatie te achterhalen tenzij ze hun delen aan mekaar bekend maken. Dit kan gedaan worden door beide delen eenvoudigweg samen te tellen modulo 10 (zonder overdracht)

Charlie's Combinattie      21 46 03 88 
Random one-time sleutel  - 25 01 77 61
                           -----------
                           06 45 36 27 


Alice's sleutel = 25017761

Bob's sleutel   = 06453627

Natuurlijk kunnen we secret splitting ook toepassen op tekst. Daarvoor zetten we de tekst eenvoudigweg om in cijfers (bijvoorbeeld A=1, B=02...Z=26). Om een geheim in méér dan twee delen te splitsen dien je enkel een bijkomende willekeurige sleutel toe te voegen voor elk extra deel. Voor drie personen dien je twee sleutels (zonder lenen) af te trekken van de geheime informatie (bvb 2 - 4 - 9 = 9 want 2 - 4 = 12 - 4 = 8 en 8 - 9 = 18 - 9 = 9). Eén enkel persoon kan nooit zelf de geheime informatie onthullen. Als groodvader, oud en ziek, de geheime combinatie van zijn kluis splitst en elk van zijn kinderen één geplitst deel geeft kunnen zij enkel aan zijn geld wanneer zij allen akkoord gaan (niet dat hij daardoor langer zal leven).

Aangezien het systeem echter onbreekbaar is zal alle informatie verloren gaan indien er één van de gesplitste delen verloren gaat. Er is absoluut geen weg terug als een deel verloren is of per ongeluk werd vernietigd. Het kan nuttig zijn een extra kopij van uw deel te bewaren op een veilige locatie.

Meer over Secret Splitting op deze pagina.


Over Modulair Rekenen Top

Modulair rekenen heeft interessante eigenschappen die een belangrijke rol spelen in cryptografie. Het is een essentieel onderdeel van one-time pad vercijfering. Het resultaat van een vercijfering kan informatie onthullen over de sleutel of de klare tekst. De codebreker kan deze informatie mogelijk gebruiken als hefboom om het vercijferde bericht als het ware open te breken. Door modulair rekenen te gebruiken kunnen we de getallen verhullen die gebruikt werden om het resultaat te berekenen.

Modulair rekenen werkt net als bij het tellen van uren, alleen gebruiken we een decimale klok. Als de wijzer van onze klok op 7 staat en we tellen er in wijzerzin 4 bij op, dan passeren we de 0 en eindigen bij 1. Als de wijzer op 2 staat en we trekken er in tegenwijzerzin 4 vanaf dan eindigen we op 8. In de rekenkunde is modulo x het restgetal na deling van een positief getal door x. Enkele voorbeelden: 16 modulo 12 = 4 want 16 gedeeld door 12 is 1 en er blijft 4 als rest over. 16 modulo 10 is 6 want 16 gedeeld door 10 is 1 met 6 als rest. Modulair rekenen is zeer waardevol in de cryptografie omdat het resultaat ervan absoluut niets vertelt over de twee getallen die werden opgeteld of afgetrokken. Als het resultaat van een modulo 10 berekening 4 is hebben we er geen idee van of dit het resultaat is van 0 + 4, 1 + 3, 2 + 2, 3 + 1, 4 + 0, 5 + 9, 6 + 8, 7 + 7, 8 + 6 of 9 + 5. Het getal 4 is dan het resultaat van een vergelijking met twee onbekenden, welke niet kan opgelost worden..

De modulus moet steeds dezelfde waarde hebben als het aantal elementen dat berekend moeten worden, met 0 als eerste element. Dus, voor bits (0 of 1) gebruiken we modulo 2 en voor bytes (8-bit waarden tussen 0 en 255) gebruiken we modulo 256 (in binaire rekenkunde noemen we dit een XOR operatie). Voor getallen (0 tot 9) gebruiken we modulo 10. In de praktijk is modulo 10 makkelijk uit te voeren door optelling zonder overdracht of door aftrekking zonder lenen, wat er eigenlijk op neer komt dat we alle cijfers van een getal negeren, uitgezonderd het meest rechtse cijfer. Voor one-time pad vercijfering met getallen kan het niet eenvoudiger.

Modulair rekenen met letters vergt wat extra uitleg. Men is geneigt om de getallen 1 tot 26 toe te wijzen aan de 26 letters en dan modulo 26 toe te passen. Echter, omdat het resultaat van een modulaire berekening nul kan zijn (26 mod 26 = 0) moet het eerste element steeds de waarde 0 hebben. Daarom wijzen we de getallen 0 tot 25 toe aan de letters A tot Z en gebruiken we modulo 26, want er zijn 26 letters (daarom gebruiken we ook 0 tot 11 voor de klok en niet 1 tot 12). Modulo 26 is een beetje moeilijker te berekenen dan modulo 10, maar de Vigenere tabel is bijvoorbeeld een praktische methode om modulo 26 te berekenen.

We zullen de noodzaak van modulair rekenen tonen met enkele kleine voorbeelden. Bij gewonen optelling kan het cijfertekst resultaat 0 enkel betekenen dat klare tekst en sleutel beiden 0 zijn. Een cijfertekst resultaat 1 betekend dat de twee onbekenden enkel 0 + 1 of 1 + 0 kunnen zijn. Met resultaat 2 kunnen de onbekenden enkel 0 + 2, 1 + 1 of 2 + 0 zijn. Het is duidelijk dat bij sommige resultaten we onmiddellijk de twee onbekenden binnen de vergelijking kunnen bepalen of zien welke onbekenden mogelijk of onmogelijk zijn. Veronderstel dat we de letter X (23) optellen bij de willekeurige sleutel Z (25). Met modulo 26 is het resultaat 22 want (23+25) mod 26 = 22. De waarde 22 vertelt ons niets over de klare tekst of de sleutel. Bij een gewone optelling zonder modulo is het resultaat echter 48. Hoewel klare tekst en willekeurige sleutel onbekend zijn kunnen we enkele belangrijke conclusies trekken uit het getal 48. Dit resultaat is enkel mogelijk met de combinaties X (23) + Z (25), Y (24) + Y (24) of Z (25) + X (23). Door enkel naar de vercijferde gegevens te kijken kunnen we dus alle letters van A tot W uitsluiten als kandidaten voor de klare tekst en sleutel. Dit is een belangrijke tip voor de codebreker. Natuurlijk zijn er veel verschillende manieren om een vercijferen onveilig te maken door geen gebruik te maken van modulair rekenen, en deze zullen steeds een bias (afwijking) creëren in de vercijferde gegevens. Voor codebrekers is een bias zo waardevol als goud.



Is One-time pad onbreekbaar?
Top

Indien alle regels van one-time pad gevolgd worden? Ja! Elke letter van een bericht kan immers vercijferd worden door elke willekeurige letter, met elke willekeurige letter als resultaat. Men kan hier ook niet alle mogelijkheden van de sleutel uitproberen, de zogenaamde brute-force-attack, omdat iedere mogelijk sleutel in een andere oplossing kan resulteren. Zo kan men een bericht op zodanige wijze ontcijferen dat het resultaat een totaal ander bericht is. Wanneer we bijvoorbeeld het woord TODAY vercijferen met de sleutel XVHEU bekomen we QJKES. Indien we QJKES echter ontcijferen met de foutieve sleutel FJRAB bekomen we als klaartekst het woord LATER. Zo kan men elk vercijferd bericht in eender welke gewenste klaartekst ontcijferen, zolang we maar de 'juiste' verkeerde sleutel gebruiken. Er is dus geen mogelijkheid om te weten of het bericht correct ontcijferd werd.

Het woord ontcijferd met achtereenvolgens één correcte en twee foute sleutels:

Cijfertekst:   Q J K E S     Q J K E S     Q J K E S 
OTP-sleutel  - X V H E U   - F J R A B   - D F P A B
               ---------     ---------     ---------
Klare tekst: = T O D A Y   = L A T E R   = N E V E R

Het one-time pad systeem zelf is mathematisch onbreekbaar. Iemand die het bericht wil breken dient zich dus te focussen op de sleutel in plaats van de cijfertext. Daarom is een echt willekeurige sleutel essentieel. Als de sleutel gegenereerd is door een deterministisch algoritme kan mogelijk een methode gevonden worden om de gegenereerde sleutel te voorspellen. Als bijvoorbeeld een cryptoalgoritme gebruikt is om de sleutel te genereren zal de veiligheid van de one-time pad vercijfering verlagen tot het niveua van het cryptoalgoritm en zal dus niet meer absoluut en onbreekbaar zijn. Als een sleutel meer dan eens gebruikt is kan eenvoudige cryptoanalyse de sleutel ontdekken. Inderdaad, hoewel de vercijfering met een echt willekeurige sleutel resulteert in een echt willekeurige cijfertekst zal het gebruik van dezelfde sleutel voor twee berichten resulteren in een relatie tussen de twee cijferteksten en dus ook tussen de twee sleutels. De sleutels zijn dus niet meer werkelijk willekeurig en de sleutel kan gevonden worden door heuristische analyse. Een ander onaanvaardbaar risico van dubbel gebruik van one-time pad sleutels is de gekende-klaartekst-aanval. Als de klare tekst van een bericht gekend is kan men zonder problemen de one-time pad sleutel berekenen. Dit betekend dat als de inhoud van één bericht gekend is alle berichten, vercijferd met dezelfde sleutel volledig gecompromitteerd zijn.



One-time pad vercijfering breken bij hergebruik van de sleutel
Top

Een one-time pad meer dan éénmaal gebruiken zal steeds het one-time pad en alle cijfertekst, vercijferd met dat one-time pad compromitteren. We kunnen vercijferingen met hergebruikte one-time pads geheel of minstens gedeeltelijk ontcijferen met een heuristieke methode van trial-and-error. Dit is zelfs mogelijk met pen en papier, hoewel traag en omstandig. Het principe is als volgt: een crib, een vermoedde stukje leesbare tekst in de eerste cijfertekst wordt gebruikt om de sleutel omgekeerd te berekenen. Dit veronderstelde deel van de sleutel wordt vervolgens toegepast op dezelfde positie in de tweede cijfertekst. Indien de crib correct was zal men een leesbaar deel in de tweede cijfertekst bekomen met mogelijk bijkomende cribs. In onderstaand voorbeeld zullen we het breken van twee berichten demonstreren, enkel met de hulp van pen en papier.

We hebben twee totaal verschillende cijferteksten, "A" en "B". Ze zijn beiden vercijferd met hetzelfde one-time pad maar we hebben geen informatie van deze sleutel. Laat ons beginnen met aan te nemen dat de letter omgezet zijn in getallen met de waarden A=01 tot Z=26, dat de vercijfering uitgevoerd wordt door de sleutel van de cijfertekst af te trekken zonder overdracht (5 - 8 = 15 - 8 = 7) en ontcijfering uitgevoerd wordt door de cijfertekst en de sleutel samen te tellen zonder overdracht (7 + 6 = 3 and not 13). Dit is een standaard en onbreekbare uitvoering van one-time pad vercijferen, als ze toch maar dat one-time pad geen twee keer gebruikt hadden! De reden dat ik A=01 tot Z=26 gebruik is dat je dan mooi de scheiding tussen de letters ziet. De beschreven methode werkt evenwel net zo goed met een straddling checkerboard (een-cijfer en tweecijfer omzetting).

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Cijfertekst A: 69842 23475 84252 16490 45441 18956 51010 4

Cijfertekst B: 55841 41281 75131 05995 61489 69256 61

We beginnen met het zoeken naar een geschikte crib. Een crib is een verondersteld stukje klare tekst dat overeen komt met een specifiek stukje cijfertekst. Dit kunnen veelgebruikte woorden, delen van woorden of frequent voorkomende trigrammen of bigrammen zijn. Enkele voorbeelden van veelgebruikte trigrammen in de Engelse taal zijn "THE", "AND", "ING", "HER" en "HAT". Enkele frequente bigrammen zijn "TH", "AN", "TO", "HE", "OF" en "IN". Vanzelfsprekend dient een crib zo lang mogelijk te zijn. Als men weet wie het bericht vercijferde en wat het vermoedelijke onderwerp is is er natuurlijk meer kans om meerdere en lange cribs te vinden.

In ons voorbeeld hebben we geen veronderstelde woorden ter beschikking dus moeten we een andere groep letters gebruiken. Laat ons de crib "THE" gebruiken die het meest frequente trigram is in het Engels. In ons voorbeeld hebben we slecht een zeer klein stukje tekst ter beschikking. In werkelijkheid zult u waarschijnlijk een paar honderd cijfers hebben voor het testen waardoor een succesvolle crib meer waarschijnlijk is.

We testen de letters "THE" op elke positie van cijfertekst "A" en trekken de cijfertekst van de crib af. Het resultaat is een veronderstelde stuk sleutel. In heuristieke termen is dit onze trial. Om deze crib te testen tellen we de veronderstelde sleutel en cijfertekst "B" samen om klare tekst "B" te achterhalen. Helaas zien we onder de eerste "THE" van ons voorbeeld onze heuristieke error. We teksten alle posities. Voor de eenvoud van het voorbeeld tonen we enkel drie posities van onze crib. Onze trial and error zal aantonen dat de negende letterpositie (17e cijfer) ons een mogelijk juiste klare tekst "B" oplevert, namelijk "OCU".

                          "THE" CRIB CONTROLEREN

Crib op A              T  H  E              T  H  E        T  H  E    
                       20 08 05             20 08 05       20 08 05
Cijfertekst A      -69 84 22 34 75 84 25 21 64 90 45 44 11 89 56 51 01 04
-------------------------------------------------------------------------
Vermoedde sleutel      46 86 71             66 18 60       41 52 54
Cijfertekst B      +55 84 14 12 81 75 13 10 59 95 61 48 96 92 56 61
-------------------------------------------------------------------------
                       20 90 83             15 03 21       33 08 15
Vermoedde klare B      T  ?? ??             O  C  U        ?? H  O
                     (impossible)          (possible)    (impossible)

Er zijn enkele, niet al te veel, mogelijkheden om "OCU" te vervolledigen. We dienen ze allemaal uit te proberen. Laat ons het voor de hand liggende "DOCUMENT" proberen. Deze veronderstelling dient weer onze trial and error te ondergaan. Daarom gebruiken we hieronder "DOCUMENT" als crib voor klare tekst "B" op dezelfde plaats. We trekken cijfertekst "B" af van de verondersteld klare tekst "DOCUMENT" om weer een nieuw stukje van de vermoedde sleutel te achterhalen. Onze sleutel is nu al uitgebreid tot 16 cijfers.

We tellen deze vermoedde sleutel op bij cijfertekst "A" om hopelijk iets leesbaar te achterhalen en inderdaad, "OTHESTAT" kan een correcte oplossing zijn, hiermee de crib bevestigend. Kunnen we deze crib nog langer maken? "THE STAT" kan een stuk zijn van "THE STATUS", "THE STATION" of "THE STATIC", en de "O THE" is wellicht "TO THE", aangezien "TP" een populair bigram is dat eindigt met de letter O. Ook nu moeten we deze oplossing weer testen door de gerelateerde sleutel te berekenen en deze uit te testen op de andere cijfertekst. Indien juist zal deze weer een klein stukje klare tekst onthullen. Denk eraan dat we begonnen met slechts de veronderstelling dat de cijfertekst "THE" kon bevatten en we nu reeds "DOCUMENT" en "TO THE STAT..." hebben na slechts twee heuristieke stappen!

                       "DOCUMENT" CRIB CONTROLEREN

Crib op B                                D  O  C  U  M  E  N  T
                                         04 15 03 21 13 05 14 20
Cijfertekst B      -55 84 14 12 81 75 13 10 59 95 61 48 96 92 56 61 
-------------------------------------------------------------------------
Vermoedde sleutel                        94 66 18 60 75 19 22 74
Cijfertekst A      +69 84 22 34 75 84 25 21 64 90 45 44 11 89 56 51 01 04
-------------------------------------------------------------------------
                                         15 20 08 05 19 20 01 20
Vermoedde klare A               .  .  .  O  T  H  E  S  T  A  T  .  .  .

Dit proces dient telkens weer herhaald te worden. Sommige cribs zullen een dood straatje blijven en andere zullen leesbare woorden of delen van woorden onthullen. Meer klare tekst betekend betere veronderstellingen en de puzzel zal makkelijker en makkelijker worden. Dankzij de twee cijferteksten kunt u keer op keer een oplossing voor de ene cijfertekst steeds controleren met de andere cijfertekst, tot de ontcijfering compleet is.

Tenslotte geven we de volledige oplossing om het resultaat van onze trial and errors te controleren::

                         DE ORIGINELE BERICHTEN

Klare tekst A     R  E  T  U  R  N  T  O  T  H  E  S  T  A  T  I  O  N 
                  18 05 20 21 18 14 20 15 20 08 05 19 20 01 20 09 15 14
Sleutel          -59 21 08 97 43 30 05 94 66 18 60 75 19 22 74 58 14 10
                 ------------------------------------------------------
Cijfertekst A     69 84 22 34 75 84 25 21 64 90 45 44 11 89 56 51 01 04


Klare tekst B     D  E  L  I  V  E  R  D  O  C  U  M  E  N  T  S
                  04 05 12 09 22 05 18 04 15 03 21 13 05 14 20 19
Sleutel          -59 21 08 97 43 30 05 94 66 18 60 75 19 22 74 58
                 ------------------------------------------------
Cijfertekst B     55 84 14 12 81 75 13 10 59 95 61 48 96 92 56 61

Een klein fragment zoals bijvoorbeeld "FORMA" is snel uitgebreid tot "INFORMATION", waardoor we 6 letter winnen als crib."RANSP" is zeer waarschijnlijk "TRANSPORT" of, met wat geluk "TRANSPORTATION", wat een crib van 9 extra letter oplevert. Soms geeft een reeds onthulde fragment hints naar de woorden die er aan voorafgaan of op volgen, of brengen ideeën aan voor worden op andere plaatsen in de cijfertekst. Het is een traag en vervelend karwei, maar het lappendeken zal langzaam groeien. Traag en omslachtig loont bij dit soort werk. Deze methode is ook geschikt wanneer tekst in cijfers werd omgezet met de straddling checkerboard of eender welk omzettingssysteem.

Dit voorbeeld is natuurlijk klein en eenvoudig. In werkelijkheid kunnen er allerlei complicaties optreden die veel meer testen vereisen. Welk systeem werd gebruikt voor de omzetting van letters naar cijfers? Welke taal werd gebruikt? Bevat de tekst dialecten, of afkortingen? Zij er woorden beschikbaar als crib of moeten we trigrammen of zelfs bigrammen bijeen zoeken om een woord te bekomen, nodig als crib? Worden er wel woorden gebruikt, of slechts codes uit een codeboek? Al deze problemen kunnen de heuristieke methode aanzienlijk vertragen en zeer veel testen vereisen. Succes is niet altijd gegarandeerd maar in de meeste gevallen zal het hergebruik van one-time pads resulteren in een succesvolle ontcijfering. Dit is zeker het geval met de computer van vandaag die zeer snelle heuristische testen mogelijk maken.

De geschiedenis toonde al veel voorbeelden van slechte uitvoering van one-time pad encyptie. De Duiste ambassades hadden de eersten kunnen zijn om het veilige one-time pad intensief te gebruiken maar beslisten echter om de sleutels te genereren met een eenvoudige mechanische machine. Door dit te doen negeerden ze de belangrijkse regel van one-time pad, dat de sleutel steeds werkelijk willekeurig moet zijn. Het Amerikaanse ASA heeft nooit one-time pad vercijferde berichten echt gebroken maar exploiteerde een fatal fout in de productie van pseudo-willekeurige sleutels uit.

Project VENONA project is ongetwijfeld het meest beruchte en bekendste voorbeeld van hoe belangrijk het is om de basisregels van one-time pad strikt te volgen. De Sovjet inlichtingendiensten vertrouwden historisch gezien zeer veel op one-time vercijfering en dit met goede reden. Sovjet communicaties bewezen steeds zeer veilig te zijn. Tijdens de Tweede Wereldoorlog dienden de Sovjets echter enorme hoeveelheden one-time pads te produceren en verdelen. Tijdsdruk en tactische omstandigheden leidden is sommige omstandigheden tot de distributie van meerdere kopijen van een one-time pad. In de jaren '40 werden door de Verenigde Staten en Groot Brittannië enorme hoeveelheden onderschepte berichten geanalyseerd en opgeslagen.

Amerikaanse codebrekers ontdekten door cryptoanalyse dat een zeer klein deel van de duizenden KGB en GRU berichten tussen Moskou en Washington vercijferd waren met hergebruikte one-time pads. De inhoud was echter gecodeerd met codeboeken alvorens te worden vercijferd met one-time pads waardoor de codebrekers voor een enorme uitdaging stonden. Uitzoeken welke sleutel herbruikt was bij welk bericht, de reconstructie van de Sovjet codeboeken codeboeken en het zoeken naar de klare tekst was een titanenwerk dat jaren duurde. Uiteindelijk slaagden ze er in om meer dan 3000 KGB en GRU berichten te ontcijferen, enkel vanwege een distributiefout door de Sovjets. VENONA was cruciaal bij het oplossen van vele belangrijke spionagezaken. Hoewel men dikwijls naar VENONA verwijst als het project dat Russische one-time pads brak was dit echter niet het geval en buitte men slechts fouten uit bij het gebruik van one-time pads.

Vergis u niet! Het is zal nooit mogelijk zijn om one-time pad vercijfering te breken indien correct toegepast. Het voorbeeld hierboven toont enkel het uitbuiten van de dodelijkste van alle fouten: hergebruik van one-time pads.



Willekeurige nummers
Top

Het gebruik van een werkelijk willekeurige (random) sleutel met dezelfde lengte als de te vercijferen gegevens is een essentieel onderdeel van one-time pad. Als de sleutel niet werkelijk willekeurig is zal het one-time pad niet langer onbreekbaar zijn. Aangezien one-time vercijfering rekenkundig onbreekbaar is zal het onmogelijk zijn voor een aanvaller om de klare tekst te verkrijgen door het onderzoeken van de vercijferde gegevens. Daarom zal het ontleden van de sleutel zijn enige optie zijn. Als de willekeurige getallen gegenereerd zijn door een deterministisch mechanisme of algoritme kan het mogelijk zijn om de uitgang van de generator te voorspellen. Daarom is de selectie van een goede random nummer generator het belangrijkste onderdeel van het systeem.

In de tijd voor er elektronica beschikbaar was, werd echt willekeur mechanisch of elektromechanisch gegenereerd. De meest curieuze toestellen werden uitgevonden om de willekeurige getallen te produceren. Vandaag zijn er verschillende mogelijkheden om echte willekeur te produceren. Hardware Random Number Generators (RNG's) zijn gebaseerd op de onvoorspelbaarheid van fysische fenomenen. Sommige halfgeleiders zoals de Zener diodes produceren onder bepaalde voorwaarden elektrische ruis. De amplitude van de ruis wordt gesampled of vaste tijdstippen en vertaald in nullen of enen. Een andere onvoorspelbare bron is de tolerantie van eigenschappen van elektronische componenten en hun gedrag bij veranderende elektrische en temperatuursomstandigheden. Enkele voorbeelden zijn ring oscillators die op hoge frequenties werken, drift van RC combinaties (weerstanden en condensators) in oscillators of tijdsdrift in computer hardware. fotons, onafhankelijke lichtdeeltjes, zijn ook een perfecte bron voor willekeur. In zulke systemen word één enkele foton door een filter gezonden en zijn staat gemeten. Controle van de kwaliteit van de RNG's is mogelijk met statistische tests. Zelfs bij hardware echt willekeurige RNG's is het soms nodig de uitgang te verbeteren, ook wel whitening genoemd, bijvoorbeeld bij ongelijke verdeling van nullen en enen in een reeks. Een eenvoudige oplossing is om twee opeenvolgende gegenereerde bits te testen. De waarden 01 geven dan als resultaat 0 en de waarden 10 geven uitgang 1. De repetitieve waarden 11 en 00 worden overgeslagen. Enkele voorbeelden van hardware RNG's de Mills Generator, met verschillende ringoscillators, de Quantis QRNG, gebaseerd op de onvoorspelbaare positie van fotons, de CPU klok drift gebaseerde ComScir generator, en de VIA Nano processor met zijn geïntegreerde dubbele quantum RNG's.

Het is ook mogelijk manueel echt willekeurige getallen of letters te genereren. Natuurlijk is deze omslachtige methode enkel mogelijk voor kleine sleutels or key pads. Een goede bron voor willekeur zijn tien-zijdige dobbelstenen (zie foto rechts). Met vijf zulke stenen kan je snel een groep van 5 cijfers maken. Deze dobbelstenen kan je kopen in speelgoedzaken of je kunt hem ook zelf maken (steen template).

Gebruik nooit gewone dobbelstenen door twee stenen samen te tellen en twee waarden te negeren. Deze methode is statistisch ongeschikt om de waarden 0 tot 9 te produceren en dus absoluut onveilig (het totaal 7 zal zo'n 6 keer meer voorkomen dan 2 of 12). Gebruik daarom één zwarte en één witte dobbelsteen en ken een waarde toe aan elk van de 36 combinaties, rekening houdende met de volgorde/kleur van de steen (zie tabel hieronder). Deze methode geeft een 0.277 waarschijnlijkheid (1 op 36) voor elke combinatie. Hiermee kunnen we drie reeksen met de waarden 0 tot 9 produceren. De overige 6 combinaties (met zwarte 6) kunnen eenvoudigweg genegeerd worden, wat statistisch geen effect heeft op de andere combinaties.

      ECHTE WILLEKEUR VAN 0 TOT 9 GENEREREN
        MET ZWARTE EN WITTE DOBBELSTENEN

ZW        ZW        ZW       ZW       ZW 
11 = 0    21 = 6    31 = 2   41 = 8   51 = 4 
12 = 1    22 = 7    32 = 3   42 = 9   52 = 5 
13 = 2    23 = 8    33 = 4   43 = 0   53 = 6 
14 = 3    24 = 9    34 = 5   44 = 1   54 = 7 
15 = 4    25 = 0    35 = 6   45 = 2   55 = 8 
16 = 5    26 = 1    36 = 7   46 = 3   56 = 9 

     WORPEN MET ZWARTE 6 WORDEN OVERGESLAGEN

Men kan ook de letters A tot Z en de nummers 0 tot 9 toekennen aan alle 36 combinaties. Op deze mannier kan men one-time pads creëren met zowel letters als nummers. Zulke one-time pads kunnen gebruikt worden in combinatie met een Vigenere tabel, vergelijkbaar met de tabel hierboven beschreven, maar met een 36 x 36 raster waarbij elke rij het complete alfabet en alle nummers bevat. Dit systeem produceert een cijfertekst met zowel letters als nummers. Een voordeel hiervan is dat men getallen kan gebruiken in de klaartekst.

Een andere methode is een lotto systeem met balletjes, genummerd van 0 tot 9. Na het trekken van een bal dient deze terug met de rest gemixt te worden alvorens de volgende te trekken. Als willekeurige bits nodig zijn kunt u één of meer muntstukken gebruiken, waarbij één zijde nul geeft en de ander zijde 1. Met 8 muntstukken kunt u een 8-bit waarde (byte) genereren in één worp. Verschillende andere methodes kunnen bedacht worden, zo lang de statistische willekeur verzekerd is. Deze eenvoudige maar zeer effectieve en veilige manuele methodes zijn geschik voor kleine one-time pads of kleine sleutels voor paswoordbeveiliging door Secret Splitting.

Software random number generators zijn nooit absoluut veilig vanwege hun deterministisch karakter. Crypto Secure Pseudo Random Number Generators (CSPRNG's) produceren een willekeurige uitgang die is bepaald door een sleutel of een seed (initialisatie). Een groot onbeperkt aantal willekeurige getallen is dan afgeleid van sleutel of seed met beperkte grootte, en sleutel en uitgang en sleutel zijn aan elkaar gerelateerd. In feite gebruikt u dan niet langer one-time vercijfering maar een vercijfering met een sleutel van beperkte omvang. Brute forcing de sleutel of analyse van de generator uitgang of een deel van de uitgangswaarden kan de generator compromitteren.

Er zijn verschillende technieken om de eigenschappen van een CSPRNG aanzienlijk te verbeteren. Een werkelijk willekeurige en zeer grote seed gebruiken is essentieel. Dit kan gebeuren door nauwkeurige metingen van bewegingen door interactie tussen mens en computer, bijvoorbeeld muisbewegingen, of door de drift te meten van computer hardware processen (een normale computer RND functie is totaal onveilig). Een andere zeer effectieve techniek om de uitgang van CSPRNG's te verbeteren is whitening, waarbij verschillende generators gecombineerd worden. Dit maakt analyse van de uitgang veel moeilijker.

Er is echter nog het belangrijke probleem van veilige computers, gebruikt om gegenereerde willekeurige getallen te verwerken, opslaan of uit te printen. Hardware RNG's met echte willekeur gebruiken is nutteloos indien dit gebeurt op een onveilige computer. Helaas zijn gewone computers totaal onveilig voor het gebruik van cryptografische toepassingen. De enige absoluut veilige computer is een fysiek onafhankelijke computer met beperkte input/output periferie, nooit verbonden aan een netwerk en veilig bewaart met gecontroleerde toegang. Elke andere computerconfiguratie zal nooit absolute veiligheid garanderen.


Bruikbaarheid en de toekomst van one-time pad Top

One-time pad vercijfering is enkel mogelijk indien zowel verzender als ontvanger in bezit zijn van dezelfde sleutel. Daarvoor moeten de sleutels op voorhand veilig uitwisselen, fysiek via koerier of elektronisch via een perfect veilig systeem zoals kwantum sleutel distributie. Dit betekend dat de veilige communicatie verwacht en gepland is binnen een specifiek tijdsbestek. Genoeg sleutelmateriaal dient beschikbaar te zijn voor alle nodige communicatie totdat een nieuwe uitwisseling van sleutels mogelijk is. Afhankelijk van de situatie en toepassing kan een groot volume aan sleutels nodig zijn voor een korte tijd of slechts zeer weinig sleutelmateriaal voor een zeer lange periode, mogelijk vele jaren. One-time pads zijn vooral interessant in omstandigheden waar veiligheid op lange termijn essentieel is. Eenmaal vercijferd met one-time pad en de sleutel vernietigd, kan geen enkele cryptanalytische methode of toekomstige technologie de gegevens ooit ontcijferen. Gegevens die daarentegen vercijferd worden met de beste moderne computeralgoritmes zullen niet weerstaan aan toekomstige cryptoanalyse-technieken en kunnen mensen en organisaties jaren later nog compromitteren.

Hoewel OTP de perfecte vercijfering is heeft dit systeem twee belangrijke nadelen die het gebruik ervan compliceren voor sommige toepassingen. Een eerste probleem is het produceren van grote aantallen willekeurige getallen of tekens voor de sleutel. Om absolute willekeurigheid te maken kan men deze sleutels niet creëren met behulp van eenvoudige mechanische toestellen en eenvoudige computeralgoritmes. Hardware true random generators, gebaseerd op ruis zijn de enige veilige optie. Het tweede probleem is de sleuteldistributie. De hoeveelheid sleutelmateriaal, nodig voor encryptie, dient gelijk te zijn aan de hoeveelheid data en kan slechts eenmaal gebruikt worden. Daarom moeten soms grote hoeveelheden sleutelmateriaal op voorhand op een zeer veilige manier uitgewisseld worden. Natuurlijk kan men de one-time pads niet verzenden door ze eerst te vercijferen met bijvoorbeeld AES, IDEA of een ander sterk crypto-algoritme. Dit zou de onbreekbare veiligheid verlagen tot het veiligheidsniveau van het gebruikte crypto-algoritme. Dit zijn praktische problemen waarvoor evenwel technische oplossingen bestaan, afhankelijk van de gebruikte toepassing.

Een ander nadeel is dat one-time vercijfering geen bericht-authenticatie of integriteit biedt. Men weet natuurlijk dat de verzender authentiek is omdat enkel hij met de juiste sleutel een ontcijferbaar bericht kan zenden, maar je kunt niet nagaan of het bericht fouten bevat of gecompromitteerd is, door transmissiefouten of door tussenkomst van een tegenstander. Een oplossing is het gebruik van een hash algoritme voor de klaartekst waarvan het resultaat samen met het bericht vercijferd en verzonden word. (een hash is een unieke waarde met vaste lengte, afgeleid van een tekst). Enkel de persoon met de juiste sleutel is in de mogelijkheid om het bericht en de corresponderende hash correct te vercijferen. De tegenstander kan het effect van zijn manipulatie van de cijfertekst, noch van de hash, voorzien. Bij ontvangst ontcijfert men het bericht en vergelijkt men de ontvangen hash waarde met een hash die berekend word van het ontvangen bericht. Helaas is een computer nodige om zo'n hash te berekenen waardoor deze methode van integriteitcontrole niet mogelijk is bij volledig manuele vercijfering.

Meer over One-time pad Top

Off-Site Top



© Copyright 2004 - 2017 Dirk Rijmenants

Home Klassieke Cryptografie