Het Manuele One-time Pad in de praktijk This page in English


Home One time pad


Deze pagina is beschrijft in vier stappen het gebruik van manuele one-time pads in de praktijk. Indien correct toegepast is one-time pad vercijfering is onbreekbaar. De veiligheid van het systeem hangt echter volledig af van het correcte gebruik en veilige distributie van de one-time pad sleutels. Om de absolute veiligheid te garanderen is het onontbeerlijk de regels van one-time pad strikt op te volgen. Deze regels zijn niet 'onderhandelbaar'. One-time pad is geen praktisch systeem, verre van, maar indien goed gebruikt is het absoluut veilig.


One-time pad communicatie in vier stappen

Stap 1 - one-time pads creëren Top

De basis van het systeem zijn de one-time pads. Een one-time pad kan een enkel blad, een boekje een rolletje papier of een papierstrip zijn met daarop reeksen willekeurige cijfers. One-time pads zitten soms in een beveiligde en/of verzegelde houder van plastic, metaal of karton, om er zeker van te zijn dat de cijfergroepen slecht één maal gebruikt worden en om het ongeoorloofd onthullen van ongebruikte cijferreeksen te vermijden, of tenminste te detecteren.

De getallen moeten werkelijk willekeurig zijn. Om deze getallen te genereren is een hardware generator op basis van ruis (PC kaart of USB apparaat) de meest praktische oplossing. Firma's zoals Mils Electronic en IDQ bieden hardware RND generators aan.

Men kan ook software generators gebruiken. Zulke generators dienen echter met zorg gekozen te worden. Software die gebaseerd is op de computer RND functie zal geen veilige willekeurige getallen produceren! Onderaan deze pagina vind u een software number generator. Indien men de getallen met een computer genereert moet men steeds een stand-alone computer gebruiken die nooit werd, of zal worden, aangesloten op een netwerk. Geen enkele computer is veilig indien hij ooit op een netwerk zoals het Internet is aangesloten!

Een andere veilige en werkelijk willekeurige - hoewel langzame - methode is de nummers manueel te genereren. Een goede bron van willekeur zijn tien-zijdige dobbelstenen (zie afbeelding 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.


 Z   W        Z   W        Z   W       Z   W       Z   W       
 1 + 1 = 0    2 + 1 = 6    3 + 1 = 2   4 + 1 = 8   5 + 1 = 4
 1 + 2 = 1    2 + 2 = 7    3 + 2 = 3   4 + 2 = 9   5 + 2 = 5
 1 + 3 = 2    2 + 3 = 8    3 + 3 = 4   4 + 3 = 0   5 + 3 = 6
 1 + 4 = 3    2 + 4 = 9    3 + 4 = 5   4 + 4 = 1   5 + 4 = 7
 1 + 5 = 4    2 + 5 = 0    3 + 5 = 6   4 + 5 = 2   5 + 5 = 8
 1 + 6 = 5    2 + 6 = 1    3 + 6 = 7   4 + 6 = 3   5 + 6 = 9

             Negeer alle combinaties met zwarte 6 

Een andere methode is een lotto-systeem met 10 balletjes, genummerd van 0 tot 9. Na extractie van één balletje dient dit telkens opnieuw gemixt te worden alvorens het volgende balletje eruit te halen. Meer over het genereren van willekeurige getallen op de one-time pad pagina.

Een standaard one-time pad vel bevat gewoonlijk 50 groepen van 5 willekeurige cijfers, wat voldoende is voor een normaal bericht. Elke vel moet een unieke eerste groep van vijf cijfers hebben. Deze eerste groep dient om de gebruikte sleutel te identificeren en zal nooit gebruikt worden tijdens het vercijferen. Elke one-time pad set bestaat uit twee identieke pads, genaamd IN en OUT. Om te communiceren in één richting hebt u slechts één OUT boekje voor de verzender en één IN boekje voor de ontvanger nodig. Om in twee richtingen te communiceren hebben beide personen zowel een IN als OUT boekje nodig. Gebruik nooit één boekje om in beide richtingen te communiceren!

Voorbeeld van een OUT boekje Nr 1234 en sleutelpagina Nr 00015:




     ONE WAY ENCRYPTION PAD     
 
 C                           C
 R            OUT            R
 Y                           Y
 P          NR  1234         P
 T                           T
 O                           O


          S E C R E T



              00015

  74061 66599 83953 09280 65571    
  63520 33281 77791 08682 03571
  50328 17473 91793 91901 59147
  17384 08557 35976 97056 60440
  09806 14445 48755 27860 37199
  97514 01656 05503 10236 71732
  44113 85092 60337 36566 36444
  30022 97942 25861 31606 34387
  04506 36113 14031 79425 46823
  39301 09391 85029 17535 68745

        DESTROY AFTER USE

One-time pad booklet - image  ©) D. Rijmenants

Bij gebruik in clandestiene omstandigheden zijn one-time pad sleutels, gedrukt op zeer kleine papiertjes, de meest praktische methode (zie foto). Deze zijn eenvoudig te verbergen en te vernietigen. Sla one-time pad sleutels nooit op in een computer, op een geheugenstick of op Compact Disk. Deze media zullen steeds sporen achterlaten, ook na het wissen, en garanderen nooit volledige vernietiging. Er zijn verschillende technieken om digitale informatie te reconstrueren, maar geen enkele methode om een verbrand of verteerd stukje papier terug te halen. In kritieke situaties is het veel moeilijker om snel een geheugenstick te vernietigen of te laten verdwijnen dan bijvoorbeeld een klein stukje papier op te eten.


Stap 2 - Het bericht voorbereiden Top

Alvorens we een bericht kunnen vercijferen moeten we het omzetten in cijfers. Deze omzetting is geen vercijfering en biedt absoluut geen veiligheid! De omzetting is enkel een voorbereiding van de klare tekst ten behoeve van het eigenlijke vercijferingsproces. In ons voorbeeld gebruiken we de CT-37c conversietabel. U kunt meer variaties van deze omzettingstabel vinden op op deze pagina.

De CT37c tabel is een uitgebreid checkerboard. De tabel is makkelijk te onthouden door de meest voorkomende (Engelse) letters "AEINOT" . De volgende twee rijen bevatten de overige letters. De vierde rij bevat "FIG" (90), de leestekens (minder belangrijk om te onthouden) en de "REQ" (98) en "SPC" (99) velden.

De conversietabel Een andere manier om de tabel weer te geven

           ENCODE                            DECODE           

 A-1   K-77  U-84    (.)-91       0-CODE 70-B  80-P  90-FIG
 B-70  L-78  V-85    (:)-92       1-A    71-C  81-Q  91-(.)
 C-71  M-79  W-86    (')-93       2-E    72-D  82-R  92-(:)
 D-72  N-4   X-87    ( )-94       3-I    73-F  83-S  93-(')
 E-2   O-5   Y-88    (+)-95       4-N    74-G  84-U  94-( )
 F-73  P-80  Z-89    (-)-96       5-O    75-H  85-V  95-(+)
 G-74  Q-81  FIG-90  (=)-97       6-T    76-J  86-W  96-(-)
 H-75  R-82  SPC-99                      77-K  87-X  97-(=)
 I-3   S-83  CODE-0                      78-L  88-Y  98-REQ
 J-76  T-6   REQ-98                      79-M  89-Z  99-SPC

Het gebruik van de CT-37c tabel is eenvoudig. Alle karakters worden omgezet in een ééncijferige of tweecijferige waarde. Om getallen de coderen gebruiken we "FIG" (90) net voor en net na getallen of getallenreeksen. Elk cijfer word dan driemaal uitgeschreven om fouten te vermijden. U kunt spaties en leestekens gebruiken binnen de "FIG" mode. Een voorbeeld: "1,5 KG" = "89 111 93 555 89 77 74 ". Het "REQ" of "REQUEST" veld wordt gebruikt voor vraagstelling en "SPC" (99) dient voor spaties. Het afkappingsteken (93) kan gebruikt ook gebruikt worden als comma. "CODE" (0) wordt gebruikt als optionele codebook prefix vlak voor een codeboek-getal. Het gebruikt van spaties voor en na een codeboek woord is niet nodig.

Het gebruik van een codeboek is facultatief. Een codeboek kan echter de lengte van de cijfertekst en tijd van verzending enorm reduceren. Men kan het gebruikt van codes achterwege laten als de ontvanger geen codebook ter beschikking heeft. Een codeboek kan allerhande woorden of zinnen bevatten over berichtprocedures of technische, tactische, logistieke of medische uitdrukkingen. Het codeboek dient de meest gebruikte worden of zinnen te bevatten die met de gewone tabel in méér dan vier cijfers zouden worden omgezet. Aangezien one-time pad vercijfering wordt toegepast is het niet nodig een willekeurige nummering van de items te gebruiken of om het codeboek geheim te houden. Het codeboek systeem vereist niet altijd een groot boek met duizenden woorden en uitdrukkingen. Zelfs één enkel codeblad met zorgvuldig geselecteerde codes, zoals hieronder getoond, kan genoeg praktische informatie bevatten om de lengte van het bericht sterk te verminderen.


 000 ABORT       253 DECODE       505 MILITARY    758 STREET
 019 ACCEPT      262 DELAY        514 MONEY       767 SUBWAY
 028 ACCESS      271 DIFFICULT    523 MONTH       776 SUCCESS
 037 ADDRESS     280 DOCUMENT     532 MORNING     785 SUPPLY
 046 AFFIRMATIVE 299 ENCODE       541 MORSE       794 SUPPORT
 055 AGENT       307 EVENING      550 NEGATIVE    802 TELEPHONE
 064 AIRPLANE    316 EXECUTE      569 NIGHT       811 TODAY
 073 AIRPORT     325 FACTORY      578 OBSERVATION 820 TOMORROW
 082 ANSWER      334 FAILED       587 PASSPORT    839 TRAIN
 091 AUTHORITY   343 FERRY        596 PERSON      848 TRANSFER
 109 BETWEEN     352 FLIGHT       604 PHOTOGRAPH  857 TRANSMIT
 118 BORDER      361 FREQUENCY    613 POSITIVE    866 TRAVEL
 127 BUILDING    370 HARBOUR      622 POSSIBLE    875 TRUCK
 136 CANCEL      389 HELICOPTER   631 POWER       884 UNABLE TO
 145 CHANGE      398 HIGHWAY      640 PRIORITY    893 URGENT
 154 CIVILIAN    406 IDENTITY     659 PROBLEM     901 VERIFY
 163 COMPROMISE  415 IMMEDIATE    668 QUESTION    910 WEEK
 172 COMPUTER    424 IMPOSSIBLE   677 RADIO       929 WITHIN
 181 CONFIRM     433 INFORMATION  686 RECEIVE     938 YESTERDAY
 190 CONTACT     442 INSTRUCTIONS 695 RENDEZVOUS  947 DISREGARD MSG FROM
 208 COORDINATE  451 LOCATE       703 REPEAT      956 DO NOT ANSWER
 217 COUNTRY     460 LOCATION     712 RESERVATION 965 FORWARD THIS MSG TO
 226 COVERT      479 MAIL         721 ROUTINE     974 REPEAT YOUR MSG FROM
 235 CURRENT     488 MEETING      730 SATELLITE   983 READABILITY (1 TO 5/5)
 244 DANGER      497 MESSAGE      749 SHIP        992 SIGNAL STRENGTH (1 TO 5/5) 

Sommige codeboek woorden kunnen uitgebreid worden door eenvoudigweg één of meerdere letters toe te voegen. Met de CT-37 tabel van hierboven is het meervoud van 0596 (PERSON) dan 059683 (PERSONS). De verleden tijd van 0686 (RECEIVE) is dan 068672 (RECEIVED), en 0901 (VERIFY) geeft dan 090172 (VERIFYD/verified). Woorden kunnen ook een andere betekenis krijgen. 0686 (RECEIVE) wordt 068682 (RECEIVER), 0857 (TRANSMIT) wordt 085782 (TRANSMITR/transmitter) of 0226 (COVERT) wordt 02267888 (COVERTLY). De FIG code kan weggelaten worden indien getallen verwacht worden. SIGNAL STRENGHT 4 kan dus gescheven worden als 0992444.

In ons voorbeeld zullen we het codeboek, of liever codeblad, van hierboven gebruiken (klik om te vergroten). U vind hier een ASCII versie. Bemerk de vreemde volgorde van de getallen. Deze waarden zijn zorgvuldig uitgekozen en zullen altijd het ontdekken een één-cijferige fouten in een code aantonen en meestal ook twee-cijferige fouten. Een fout zal steeds een onbestaande code genereren. Eenvoudigweg de waarden 00 tot 99 gebruiken voor de 100 codewoorden is af te raden aangezien één enkele fout bij ontvangst en/of ontcijfering dan in een heel ander woord resulteert.

Laat ons volgende tekst omzetten in getallen: "MEETING BERLIN CANCELLED. TRAVEL 25 JAN TO ZURICH WITH NEW PASSPORT."


 MEETING B  E R  L  I N  CANCEL-D  .  TRAVEL    2   5      J  A N    
 0488    70 2 82 78 3 4  0136   72 91 0866   90 222 555 90 76 1 4 99 

 T O    Z  U  R  I C  H     W  I T H     N E W  PASSPORT.  
 6 5 99 89 84 82 3 71 75 99 86 3 6 75 99 4 2 86 0587    91 

 In groepen:
 04887 02827 83401 36729 10866 90222 55590 76149 96599 89848 23717 59986 36759 94286 05879 19191 

De laatste groep dient steeds aangevuld te worden met full-stops (919...). Bemerk dat, met de hulp van ons kleine codeblad, de 68 tekens van het bericht (spaties en leestekens inclusief) omgezet werd in niet meer dan 80 cijfers. Dit geeft een zeer goede 1,17 cijfer/letter verhouding. Natuurlijk kan men ook spaties weglaten waar de leesbaarheid dit toelaat en allerhande afkortingen gebruiken. Dit kan de lengte van het bericht nog meer reduceren.


Stap 3 - Vercijferen en ontcijferen Top

Eens het bericht in getallen werd omgezet kunnen we beginnen met het vercijferen. Eerst vertellen we de ontvanger welke one-time pad sleutel voor dit bericht werd gebruikt. Daarvoor dient de eerst groep van het one-time pad. Deze eerste groep mag nooit gebruikt worden voor het vercijferen van het bericht! De vercijfering start vanaf de tweede groep. Deze methode van identificatie onthult geen volgorde van berichten of hoe veel er verstuurd werden. In ons voorbeeld slaan we dus de identificatiegroep 74061 over.

Noteer de omgezette tekst in groepen van vijf cijfers (vul de laatste groep aan met nullen), schrijf de cijfers van het one-time pad er onder en trek de one-time pad cijfers van de tekst af. Het aftrekken gebeurt cijfer per cijfer en zonder overdracht (e.g. 5 - 9 = 15 - 9 = 6). In dit voorbeeld gebruiken we sleutelblad 00015 van one-time pad boekje 1234 zoals getoond in Stap 1.



 Klaar  : KEYID 04887 02827 83401 36729 10866 90222 55590 76149 96599 89848 23717 59986 36759 94286 05879 19191 
 OTP (-): 74061 66599 83953 09280 65571 63520 33281 72791 08682 03571 50328 17473 91793 58402 00658 45973 85273
          -----------------------------------------------------------------------------------------------------
 Cijfer : 74061 48398 29974 84221 71258 57346 67041 83809 78567 93028 39520 16344 68293 88357 94638 60906 34928

Vernietig het gebruikte one-time pad vel onmiddellijk na het beëindigen van de vercijfering, zelfs al staan er nog ongebruikte groepen op het gebruikte vel. Hergebruik een one-time pad nooit!

Hieronder het complete bericht met het identificatienummer 74061 als eerste groep. Indien het bericht verzonden word over radio, in Voice of Morse, is het aangeraden alle groepen dubbel te verzenden om fouten te vermijden (bvb 74061 74061 48398 48398 enz...). Indien het callsign van de ontvanger "306" is kan het bericht er zo uitzien:


 306 306 306

 74061 48398 29974 84221 71258      
 57346 67041 83809 78567 93028
 39520 16344 68293 88357 94638
 60906 34928 

Om een bericht te ontcijferen controleren we de eerste groep van het bericht om te zien welke sleutel gebruikt werd. Vervolgens schrijven we de juiste one-time pad sleutel onder de cijfertekst (sla de eerste groep over) en tellen cijfertekst en sleutel bij elkaar op zonder overdracht (6 + 9 = 5 en niet 15).


 Cijfer : 74061 48398 29974 84221 71258 57346 67041 83809 78567 93028 39520 16344 68293 88357 94638 60906 34928 
 OTP (+): 74061 66599 83953 09280 65571 63520 33281 72791 08682 03571 50328 17473 91793 58402 00658 45973 85273
          -----------------------------------------------------------------------------------------------------
 Klaar  : KEYID 04887 02827 83401 36729 10866 90222 55590 76149 96599 89848 23717 59986 36759 94286 05879 19191

Tenslotte zetten we de cijfers terug om in tekst met behulp van de omzettingstabel. De ééncijferige en tweecijferige karakters zijn gemakkelijk te onderscheiden: als het volgende cijfer 1 tot 6 is hebben we te maken met een ééncijferige karakter. Als het volgende cijfer 7, 8 of 9 is hebben we een tweecijferige karakter en volgt er nog een cijfer. Als het volgende cijfer een 0 is volgen er drie cijfers van een code.

Gebruikt steeds aftrekken voor vercijferen en optellen voor ontcijferen.

Denk eraan! Bewaar nooit een one-time pad nadat het gebruikt werd om een bericht te ontcijferen. Dit zal de sleutel én het bericht compromitteren! Vernietig de sleutel onmiddellijk na gebruik.


Stap 4 - Veiligheid Top

Hier bespreken we enkele belangrijke regels die gevolgd moeten worden bij het gebruik van one-time pad vercijfering en communicatie. Deze regels zijn niet 'onderhandelbaar'. Alle one-time pad communicatie die ooit gecompromitteerd werd heeft één of meer van de hier beschreven regels geschonden. Zelfs een kleine schijnbaar onbelangrijke fout kan resulteren in de ongeoorloofde ontcijfering van berichten. Door onveilige communicatie kan de onderschepper het bericht linken aan de verzender of ontvangen die anoniem wenste te blijven. Dikwijls werden gebruikers van one-time pads vooraf grondig ingelicht over het gebruik ervan, maar dachten dat de kleine details niet belangrijk waren. Zij waren fout. Het helpt om paranoia te zijn. Bij correct gebruik is one-time pad echter onbreekbaar. En ja, ook onbreekbaar voor het NSA, GCHQ of FAPSI. Lees zorgvuldig verder!

  • De one-time pads

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 uitgewisseld worden tussen beide partijen. 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, tot verscheidene jaren.

Bewaar one-time pads nooit op een computer, geheugenstick of Compact Disk. Het wissen van deze media is problematisch en volledige vernietiging van gebruikte one-time pads is nooit gegarandeerd. Er bestaan speciale technieken om digitale gegevens terug leesbaar te maken, zelfs nadat de data werd gewist en zelfs na effectief te zijn overschreven. De sleutels dienen steeds fysiek, persoonlijk of per koerier, verdeeld te worden. Verstuur one-time pads nooit elektronisch. One-time pads vercijferen alvorens ze te verzenden, bijvoorbeeld met AES of een ander sterk algoritm, is zinloos en gevaarlijk omdat dit de veiligheid van onbreekbaar zal verlagen naar de veiligheid van het gebruikte algoritme.

Het belangrijkste van one-time pad is een veilig sleutelbeheer. Als de sleutel, gebruikt voor de vercijfering van het bericht, niet gecompromitteerd is zal het bericht mathematisch onbreekbaar zijn. Het is duidelijk dat de personen die verantwoordelijk zijn voor het creëren en gebruiken van one-time pads dienen onderworpen te worden aan de hoogste screening qua veiligheid. Het aantal personen dat instaan voor productie en verdeling van het sleutelmateriaal dient tot een absoluut minimum beperkt te worden. Zodra een sleutelpaar gecreëerd is dient het genummerd en geregistreerd te worden. Er dient een gecentraliseerde (ster-topologie) registratie en distributie te zijn zodat men steeds weet wie waar en wanneer welke sleutels heeft. Als een sleutel gebruikt, vervallen, ingetrokken of gecompromitteerd is dient de verdeler of gebruiker de sleutel te vernietigen en de andere partij onmiddellijk te verwittigen. Gebruik een one-time pad nooit meer dan één maal! Indien dat toch gebeurt, zal eenvoudige analyse alle berichten breken die vercijferd werden met dat one-time pad (zie one-time pad pagina)

Een sleutel is steeds gecompromitteerd in volgende gevallen:

  • De sleutel werd meer dan één maal gebruikt is
  • De sleutel was - tijdelijk - niet onder toezicht van een verdeler of veilig opgeslagen
  • De verdeler of gebruiker heeft vermoedelijk de veiligheidsregels geschonden
  • Sleutelmateriaal werd opzettelijk of per ongeluk blootgesteld aan andere personen
  • De sleutel is verloren of er geen bewijs is van vernietiging
  • Bij de minste twijfel over de huidige of voorbije toestand van een sleutel
  • Tenslotte, als u niet weet of een sleutel gecompromitteerd is of niet, dan is hij gecompromitteerd!

Gebruik nooit een gecompromitteerde sleutel en waarschuw alle gebruikers van die sleutel dat hij onmiddellijk vernietigt dient te worden!

  • Veilig vercijferen en ontcijferen

Gebruik nooit een computer om de klare tekst van een bericht in te typen, op te slaan of te vercijferen. Dit zal steeds sporen achterlaten op uw computer. Veilige computers bestaand niet en zijn een utopie! Schrijf het bericht en de sleutel op een enkel stuk papier dat op een hard oppervlak ligt, doe hierop ook de berekeningen en vernietig dit papier na vercijferen of ontcijferen. De eenvoudigste veilige manier is het te verbranden. Het klinkt paranoia maar het heeft zijn redenen! Controleer uw vercijfering alvorens het bericht te versturen. Eén enkele fout kan het bericht onleesbaar maken of fatale vergissingen tot gevolg hebben. Eens het bericht vercijferd is, kan men het eender waar opslaan of bewaren. Het is en blijft onbreekbaar. Omwille van ontkenbaarheid is het echter af te raden om vercijferde berichten op computer of elektronische media op te slaan.

  • Methodes om te communiceren

Indien onderschepping van de communicatie en onthulling van de identiteit en locatie van verzender/ontvanger hun veiligheid of privacy niet in gevaar brengt kunnen we het bericht op eender welke wijze verzenden. Dit is de eenvoudigste situatie. Indien hun identificatie of het feit dat ze vercijfering gebruiken hun privacy of persoonlijke veiligheid in gevaar brengt moeten zij heimelijk of verhult communiceren.

Heimelijke communiceren is een zeer moeilijke zaak. Telefoon, GSM, satelliettelefoon, post, e-mail en andere methodes om data elektronisch via het Internet of ander netwerken te versturen moeten steeds als absoluut onveilig beschouwt worden. Zij maken plaatsbepaling en identificatie van zowel verzender als ontvanger mogelijk en mogen nooit gebruikt worden voor heimelijke communicatie. Publieke systemen zijn een manier om anoniem te communiceren. Enkele voorbeelden zijn een computer in een cybercafé of bibliotheek (natuurlijk enkel zonder registratie) of een openbare telefoon (met anomiem aangekochte prepaid kaart). Een bericht kan via een cybercafé computer geplaatst of gelezen worden op een Internet forum of een willekeurig gastenboek. Het mag nooit mogelijk zijn om een tijd en plaats te linken aan een persoon die het publiek systeem gebruikte. Iemand kan misschien wel een publiek toegankelijk systeem gebruiken, het zal steeds mogelijk zijn om tijdstip en locatie van de communicatie te bepalen. In dit geval kan een getuige of veiligheidscamera die specifieke tijd en plaats linken aan de persoon die het systeem gebruikte. Vandaag wordt alle elektronische communicatie voor lange tijd opgeslagen, klaar voor analyse en onderzoek. Een telefoongesprek of SMS is nooit een moment in tijd. Het is een digitale gebeurtenis die permanent achterblijft in databases.

Het moet ook onmogelijk zijn om een specifiek toestel te linken aan een onderschepte communicatie. Het gebruik van een GSM of prepaid kaart zal die specifieke GSM of kaar linken aan het bericht of gesprek. Eens dit verband is vastgesteld, kan dit bericht gemakkelijk gelinkt worden aan andere gerelateerde berichten. On-line e-mail accounts zijn ook gemakkelijk te linken aan een specifiek bericht en locatie. Zelfs het éénmalig gebruik van een GSM, prepaid kaart of e-mail account zal steeds sporen achterlaten en het toestel compromitteren waardoor het nadien onbruikbaar is voor eender welk doel.

Een kortegolf radio is ideaal om heimelijk berichten te ontvangen over lange afstanden. Er bestaat geen mogelijkheid om de plaats te bepalen van iemand die een radiobericht ontvangt. Het bezit van een eenvoudige kortegolf radio (wereldontvanger) is niet verdacht. De gebruikte frequentie voor het ontvangen van de berichten mag natuurlijk niet in het geheugen opgeslagen worden. Het heimelijk verzenden van berichten via een radiozender is riskanter. Een uitzending kan binnen enkele seconden gelokaliseerd worden met de geschikte apparatuur. De huidige SDR technologie (Software Defined Radio) maakt toezicht en onderscheppen van uitzendingen mogelijk op meerder volledige frequentiebereiken tegelijk. Het gebruik van burst-transmissies (zeer snel en kort versturen) kan onvoldoende zijn om onderschepping te vermijden. Daarom is het gebruik van een zender enkel veilig indien de zender ver weg en buiten het bereik van de onderscheppers is. Een ander mogelijkheid is het gebruik van speciale apparatuur die werkt op ongebruikelijke frequenties of die werkt met een special type elektromagnetische of optische draaggolf. Zoals u merkt is het zeer moeilijk om in onze huidige hoogtechnologische en volledig gedigitaliseerde maatschappij werkelijk anoniem te communiceren.

Indien de communicatie niet bedoeld is om een bericht over lange afstand te verzenden maar enkel om de relatie tussen verzender en ontvanger te verhullen kan men een dead drop of brush-pass gebruiken. Een dead drop of "dode brievenbus" is een locatie om heimelijk voorwerpen of berichten uit te wisselen tussen twee personen zonder persoonlijk contact. De verzender verbergt zijn bericht op een publiek toegankelijke plaats en geen elders een signaal (bvb. een krijtstreep op een muur of kauwgom om een paal) om de ontvanger te verwittigen dat een dead drop heeft plaatsgevonden. De ontvanger kan de dead drop op een voor hem geschikte moment ophalen. Beide personen dienen op voorhand een locatie voor de dead drop en een locatie en soort signaal af te spreken. Het onthullen van een dead drop vereist intensieve observatie van zowel verzender, ontvanger én de locaties. Een brush-pass is een ontmoeting tussen verzender en ontvanger op een vooraf bepaalde tijd en plaats waarbij men heimelijk een bericht uitwisselt. Dit kan bijvoorbeeld door het bericht in een krant achter te laten om onmiddellijk daarna opgepakt te worden, het verwisselen van identieke tassen of eender welke onverdachte handeling op een publieke locatie. Een brush-pass is makkelijker te ontdekken tijdens observatie dan een dead drop en houd meer risico in. Men kan steeds ontkennen dat een bericht werd uitgewisseld maar kan nooit ontkennen dat men in de buurt was van de andere persoon.

  • Ontkenbaarheid en Steganografie

Zoals u kunt zien is het alles behalve makkelijk om veilig te communiceren. Een andere oplossing is het bericht openlijk over te brengen maar het op zulke wijze te verhullen dat de onderschepper niet weet dat het verzonden werd. Deze techniek noemt men steganografie (verborgen schrift). Er zijn verschillende manieren om cijfertekst in een schijnbaar onschuldige brief of e-mail in te voegen of te verbergen. Natuurlijk moeten de getallen in de tekst er onschuldig uit zien. Vreemde reeksen getallen kunnen wantrouwen opwekken. Simpelweg het bericht in getallen omzetten en deze zonder vercijfering in een tekst verbergen (een gewoon nul-cijfer) is totaal onveilig en mag nooit zo gebruikt worden. Vercijfer uw bericht altijd alvorens het te verbergen!

Eén methode om de cijfers te verbergen in een tekst is het toewijzen van een set woorden aan elk cijfer en dan deze woorden gebruiken om een leesbare en onschuldig ogende tekst samen te stellen. Indien goed toegepast is de vercijferde communicatie volledig ontkenbaar. Om voldoende flexibiliteit en variatie te verzekeren in de tekst moet elk cijfer in zoveel mogelijk verschillende woorden kunnen worden omgezet. U vindt een (Engelstalig) voorbeeld van een cijfer-naar-woorden tabel in dit tekstbestand (om te downloaden, rechts-klik en kies "Opslaan Als..."). U kunt voor elk cijfer kiezen tussen 22 woorden. Om de tekst terug om te zetten in cijfers bevat de tabel ook woord-naar-cijfer tabel in alfabetische volgorde, waarmee u snel het cijfer vind dat correspondeert met een bepaald woord.

In onderstaand voorbeeld verbergen we de groepen 74061 48398 29974, het vercijferde beginfragment van "Meeting Berlin cancelled..." in het voorbeeld van hierboven. We gebruiken onze voorbeeld cijfer-naar-woorden tabel om de woorden te vinden die we kunnen gebruiken in onze tekst. U kunt ook het meervoud gebruiken van sommige woorden (MOVIES, CARS, HOUSES...) zolang het woord zelf onveranderd blijft (om verwarring te vermijden). Af en toe, maar niet te veel, kunt u ook direct cijfertekst getallen in uw tekst invoegen waar dit onschuldig lijkt ("It took me 40 minutes to..."). Hieronder nu een voorbeeld van het verbergen van de drie cijfertekst groepen met onze cijfer-naar-woorden tabel:

"I just got back from the office. I could use a holiday! A pool with some beer would do just fine. A bit more cash on my account would be usefull to pay my airplane. I wish I could leave for a whole month. By the way, read any good books or magazines lately? I always read whilst listening to the radio,with a good glass of wine in my lazy couch. Much better than watching football. I know, you prefer a cigar and a newspaper, you cultural barbarian!"

Is dit nu geen mooie en onschuldige tekst (natuurlijk onderlijn je de woorden in het echt niet). Let er op een tekst te maken die zinvol is. Schrijven over een reis die u nooit maakte of over een familielid of hond die niet bestaat kan u verraden. Schrijven over dingen die u graag zou hebben of zou doen, of over dingen in de toekomst zijn altijd veilig om te gebruiken in uw tekst omdat zij nauwelijks te controleren zijn. Let er vooral op om geen onbedoeld woorden uit tabel te gebruiken omdat dit een extra cijfer betekend en daardoor de tekst niet meer te ontcijferen is. Controleer uw werk meermaals alvorens te versturen.

De ontvanger controleert elk zelfstandig naamwoord in zijn woord-naar-cijfer tabel om te zien of het gelinkt is aan een cijfer. Hij noteert de gevonden cijfers en ontcijferd het bericht met het juiste one-time pad. Hoewel een lange cijfertekst heel wat woorden en zinnen nodig heeft biedt deze methode zeer veel flexibiliteit. Natuurlijk dient u uw eigen tabel samen te stellen met veelvuldig gebruikte woorden, eventueel met woorden, gerelateerd aan uw leefomgeving, en moet de tabel geheim blijven. Een gecompromitteerde cijfer-naar-woorden tabel kan uw kansen verkleinen om het bestaan van een verborgen cijfertekst in uw tekst volledig te ontkennen. Desondanks zal het vercijferde bericht zelf onbreekbaar blijven als het one-time pad, gebruikt voor de vercijfering, geheim blijft of correct werd vernietigd.

Met dit systeem is het verborgen bericht volledig ontkenbaar omdat er absoluut geen manier is om het te detecteren of zijn bestaan te bewijzen zonder de juiste one-time pad sleutel. Gezien het feit dat in de huidige digitale wereld virtueel alle communicatie vatbaar is voor onderschepping is dit de perfecte methode om berichten te verzenden via post, e-mail, on-line accounts, Internet forums en dergelijke. De communicatie zelf blijft echter nog steeds registreerbaar (trafiek-analyse!). U hebt enkel wat literaire fantasie nodig en een excuus waarom je elkaar schrijft. Bemerk dat de combinatie met andere vormen van vercijfering dan one-time pad het mogelijk kunnen maken dat de onderschepper de tekst analyseert en ontcijferd! Enkel one-time pad zal cryptoanalyse-resistente tekst en plausibele ontkenning

Een ander, minder flexibele, methode om getallen in tekst te verbergen is ze om te zetten in letters via een kleine tabel. We gebruiken hiervoor de 20 meest frequente letters uit het Nederlands. We delen ze op in twee groepen: "ENATIRODSL GVHKMUBPWJ". Elk getal van 0 tot 9 wordt toegewezen aan één van de 10 meest frequente letters (eerste groep) en aan één van de minder frequente letters (tweede groep). Vervolgens creëren we een tekst waar elk tweede woord begint met één van de twee letters die aan dat bepaalde cijfer zijn toegewezen.

Hieronder de tabel met cijfer-naar-letter en letter-naar-cijfer conversie. De distributie van letters is geoptimaliseerd voor de Nederlandse taal om genoeg flexibiliteit te hebben in het bedenken van zinnen. De letters door elkaar gooien hoeft niet omdat toch one-time pad vercijfering gebruikt word.


 Nederlandse omzettingstabel    

 0 = E of G     A = 2  M = 4
 1 = N of V     B = 6  N = 1
 2 = A of H     D = 7  O = 6
 3 = T of K     E = 0  P = 7
 4 = I of M     G = 0  R = 5
 5 = R of U     H = 2  S = 8
 6 = O of B     I = 4  T = 3
 7 = D of P     J = 9  U = 5
 8 = S of W     K = 3  V = 1
 9 = L of J     L = 9  W = 8

 Ongebruikt: C F Q X Y Z

In onderstaand voorbeeld gebruiken we weer de groepen 74061 48398 29974. Wanneer omgezet in letterparen, zoals in de tabel hierboven, verkrijgen we de volgende reeks letterparen:


 DP IM EG OB NV IM SW TK LJ SW AH LJ LJ DP IM  

U bent nu vrijd om de eerste of tweede letter van elk letterpaar te gebruiken als eerste letter van elk tweede woord. Een voorbeeld van hoe de tekst er kan uitzien:

"De papieren werden ingevuld en gaan morgen opgestuurd worden. Voor mij is het werk nu klaar. Je laat maar weten of het je lukt die leveringsbon op datum te maken."

U kunt afspreken om te beginnen bij het eerste woord of bij het tweede woord. Indien nodig kunt u de ongebruikte lege letters "CFQXYZ" in plaats van de 20 andere letter gebruiken. In dat geval dient dat woord eenvoudigweg overgeslagen te worden bij ontcijferen en gaat men voort met de volgende tweede letter. Dit geef nog meer vrijheid om met de tekst te spelen.

  • Persoonlijke veiligheid en wetgeving

Tenslotte is er ook nog het probleem van persoonlijke veiligheid. In sommige landen is het bij wet verboden om dit type van vercijfering te gebruiken. De reden is eenvoudig. Sommige overheden verstaan het woord 'privacy' niet en willen de communicatie van hun landgenoten kunnen lezen. One-time pad verhinderd hen dit te doen. Daarom kan betrapt worden met one-time pads u meer kosten dan geld. One-time pads kunnen uw gezondheid ernstig schaden, en dat is geen grap!


Numbers 8.1 Random number generator Top

Klik hier om de Numbers software te downloadenOp deze website kunt u Numbers 8.3 downloaden.Met deze Crypto Secure Random Number Generator (CSRNG) kunt u willekeurige reeksen nummers of letter genereren, geformateerd als standaard one-time pads, werkbladen of zelf aangepaste reeksen. U kunt ook meerdere letter-naar-getal conversietabellen bekijken en printen voor gebruik bij one-time pad vercijfering. Hoewel een CSRNG theoretisch nooit Shannon's absolute veiligheid bereikt zal hij in de praktijk bruikbaar zijn om one-time pads te genereren. De astronomische grootte van seed en periode, de whitening door 14 gecombineerde generators en het gedeeltelijke en beperkt aantal gegenereerde nummers of letters met dezelfde seed maken het onmogelijk om de output te achterhalen. De Numbers software is daarom een goed software alternatief om one-time pads te creëren.


Samenvatting Top

Creëer paren van one-time pads met werkelijk willekeurige cijfers, een kopij voor de verzender en een kopij voor de ontvanger. Om een bericht te vercijferen, de klaartekst eerst omzetten in cijfers met behulp van de omzettingstabel. Om de cijfertekst te berekenen, schrijf het one-time pad onder de klaartekst maar sla de eerste groep van het one-time pad over. Trek het one-time pad af van de klaartekst, zonder overdracht. Zet de overgeslagen eerste groep van het one-time pad vóór de cijfertekst om de ontvanger te vertellen welk pad werd gebruikt. Vernietig het pad na gebruik.

Om het bericht te ontcijferen controleert u de eerste groep van de cijfertekst om te zien welk one-time pad gebruikt werd. Schrijf het one-time pad onder de cijfertekst maar sla de eerste groep van zowel cijfertekst als pad over. Tel cijfertekst en one-time pad samen, zonder overdracht. Zet de cijfers met behult van de omzettingstabel terug in tekst om. Vernietig het one-time pad na ontcijfering.

1. Creër one-time pads met werkelijk willekeurige cijfers
2. Gebruikt een one-time pad nooit meer dan eens
3. Vernietig het one-time pad onmiddellijk na gebruik

Meer over one-time pad op deze website Top


© Copyright 2004 - 2012 Dirk Rijmenants

Home One-time pad