Geheimhouding op het internet, een geheim?

Ignace Van de Woestyne

  1. Inleiding.
  2. Onder de mysterieuze titel "Geheimhouding op het internet, een geheim?" willen we het in deze module hebben over de cryptologie of de leer zich bezighoudt met het beveiligen van informatie d.m.v. het coderen en het decoderen ervan. In de cryptologie staan twee doelstellingen centraal. Enerzijds zal men pogen boodschappen zo goed mogelijk te beveiligen door ze met efficiënte technieken te coderen. Het onderdeel van de cryptologie dat deze doelstelling nastreeft noemt men de cryptografie. Anderzijds zal ook gepoogd worden om technieken en strategieën te ontwikkelen om gecodeerde boodschappen te ontcijferen. Het onderdeel van de cryptologie dat zich hiermee bezighoudt noemt men de crypto-analyse.

    Zonder reeds in technische details te treden kan de vraag gesteld worden naar de noodzaak van de mogelijkheid tot coderen. Codeertechnieken worden reeds eeuwen gebruikt door een eerder select publiek (koningen, spionnen, militairen, criminelen, ...) om boodschappen te kunnen doorgeven zonder dat anderen er inzage in krijgen. Met de komst en de doorbraak van het internet hebben coderingstechnieken ook hun intrede gedaan bij elke internetgebruiker en dus weldra, gezien de populariteit van het internet, ook bij het merendeel van de bevolking.

    Coderen is belangrijk aangezien steeds meer "vertrouwelijke" transacties (bijvoorbeeld aankopen en betalingen via het internet, het opvragen van financiële gegevens en het uitvoeren van financiële transacties, ...) via een publiek kanaal, wat het internet is, gebeuren. Aangezien we niet kunnen verhinderen dat informatie "opgevangen" wordt door derden kunnen we er beter voor zorgen dat die informatie niet kan worden ontcijferd waardoor ze voor derden waardeloos wordt. Diegene voor wie het bericht bestemd is moet dit uiteraard wel kunnen ontcijferen.

    Allereerst zullen we een aantal "oudere" coderingssystemen bespreken die nu nog in beperkte mate gebruikt worden maar volkomen onveilig zijn. Daarna volgt een momenteel populaire coderingstechniek die de laatste twintig jaar zijn deugdelijkheid heeft bewezen.

  3. Enkele populaire coderingstechnieken.
  4. In de cryptologie is het zeer belangrijk kennis te hebben van de klassieke cryptografische systemen (of kortweg cryptosystemen) waarvan sommigen teruggaan tot het begin van onze jaartelling. Enkele hiervan, allen behorend tot de categorie van de substitutiemethodes, zullen we nu bespreken waarbij we eveneens aangeven hoe ze kunnen gekraakt worden. De basisidee bij de substitutiemethode bestaat erin elke letter van de oorspronkelijke tekst te vervangen door een andere letter waardoor de tekst onleesbaar wordt. Aangezien ook de lengte van de woorden in een tekst informatie bevat (een veelgebruikt woord in het Nederlands is bijvoorbeeld het woord "van") maakt men dikwijls de afspraak alle spaties en leestekens te verwijderen uit de oorspronkelijke tekst en de letters opnieuw te groeperen in bijvoorbeeld groepjes van vijf. Hieronder volgt een voorbeeld.

    Voor:	Dit is een voorbeeld van de brontekst.
    Na:	DITIS EENVO ORBEE LDVAN DEBRO NTEKS T

    Met behulp van het programma CRYPTO, dat speciaal voor deze module geschreven werd, is het mogelijk de hieronder beschreven methodes toe te passen. Ook om teksten te decoderen wordt door dit programma handige bijkomende informatie verstrekt zodat vrij snel geslaagd wordt in het opzet.

    2.1. De Caesar-codering.

    Julius Caesar vertrouwde zijn boodschappers niet erg en codeerde daarom zijn berichten. Uit geschriften van die tijd zou blijken dat Julius Caesar elke letter in het alfabet verplaatste over een aantal plaatsen (drie in zijn geval). Indien we als voorbeeld een verschuiving over drie letters toepassen wordt de letter "a" vervangen door de letter "d", de letter "b" door "e", enzovoort. Wanneer we aan het einde van het alfabet gekomen zijn, beginnen we opnieuw van vooraf aan. De letter "x" wordt in het voorbeeld "a", "y" wordt "b" en "z" wordt "c". Samenvattend hebben we het volgende:

    Voor:	ABCDEFGHIJKLMNOPQRSTUVWXYZ
    Na:	DEFGHIJKLMNOPQRSTUVWXYZABC

    We passen deze methode toe op de onderstaande tekst:

    Voor:	DITIS EENVO ORBEE LDVAN DEBRO NTEKS T
    Na:	GLWLV HHQYR RUEHH OGYDQ GHEUR QWHNV W

    De ontcijfering gebeurt door het alfabet terug drie plaatsen naar links te verschuiven. Zoals snel kan worden ingezien biedt deze methode niet veel veiligheid. In het Nederlandse alfabet zijn slechts 26 letters, dus in maximaal 25 verschuivingen is de tekst gedecodeerd. We kunnen echter sneller te weten komen over welke afstand het alfabet moet worden verschoven door gebruik te maken van wat eenvoudige statistiek. In een Nederlandstalige tekst komt immers de letter "e" het meeste voor. Door nu de frequenties te berekenen van de letters in de gecodeerde tekst komen we te weten welke letter vermoedelijk de letter "e" is en weten we bijgevolg ook over welke afstand verschoven was. In de onderstaande figuur ziet men de frequentieverdeling van de letters uit het voorbeeld.

    De frequentiedichtheid van de letters uit de gecodeerde tekst.

    2.2. De mono-alfabetische substitutiemethode.

    Een veralgemening van de Caesar-codering bestaat erin elke letter van het alfabet te vervangen door een willekeurige andere letter in de plaats van door die letter die men vindt door over een vast aantal letters te verschuiven. In feite komt het hierop neer dat het alfabet vervangen wordt door een nieuw dat ontstaat door toepassing van een permutatie. Deze methode noemen we de mono-alfabetische substitutiemethode. Op het eerste zicht hebben we hier te maken met een betrouwbare methode aangezien er 26! = 403291461126605635584000000 mogelijkheden bestaan. In de praktijk zijn het er echter minder omdat een aantal van de permutaties de tekst niet echt zullen beveiligen. Denken we bijvoorbeeld aan de permutatie die het alfabet onveranderd laat of die permutaties die slechts twee letters omwisselen. De redenering kan zijn dat, wanneer we de "triviale" permutaties weglaten, er nog voldoende andere overblijven om veilig te zijn. Steunend op de statistiek kan echter toch vrij snel achterhaald worden welke letter staat voor welke. We weten reeds dat de letter "e" het meeste voorkomt in een Nederlandse tekst. Verder is ook geweten wat we mogen verwachten als de frequenties van de overige letters. Naast de individuele letters kunnen we ook kijken naar lettercombinaties van twee letters (digrammen) en van drie letters (trigrammen). Gebruik makend van de te verwachten frequenties en de waargenomen frequenties, gecombineerd met wat gezond verstand en wat gokwerk, komt men vrij snel achter de boodschap. Het dient wel gezegd dat om gebruik te kunnen maken van de geschetste statistische methode, de gecodeerde tekst voldoende tekens moet bevatten. Klik hier om de frequentietabellen te zien voor de letters, digrammen en trigrammen zoals we deze mogen verwachten in een doorsnee Nederlandse tekst.

    We illustreren het decoderen m.b.v. de frequentietabellen aan de hand van het volgende voorbeeld.

    Voor:
    
    EDOVU PQNWS YSHEV ETBVW AVVPJ VYRDH PEZMM VDDET WVBVJ JVDGR
    DOVMY RTTEV MVUPQ NWSHP RLETU BVTQT WVKVD SLMSP WIVHU PQNWS
    TQTWV KVDIR RPGRD TSKKE HVDWV PFHHR RDWSW BVWJV HEDGR DSDAV
    ZRRPW VYYED HVDMV YVBEV PGRDR YYVDJ VBSPV DOWSW OVURW VHSPE
    VGRDO VTFJT WEWFW EVKVW BSOVT AFYYV DIVDF JVTNP VMVDI RRPJE
    ZIVVG VDVVD TRRDH VGVDB SVAVM FDDVD HVMPR RMWIS POVDO VJRTE
    TEOVV JEZOV TFJTW EWFWE VKVWB SOVJV TWRRW VPEDV YMVYV WWVPG
    RDOVS SPTNP SDMVY EZMVW VMTWW VGVPG RDHVD OSSPV VDRDO VPVYV
    WWVPI RRPOS SPOVW VMTWS DYVVT JRRPI SPOWR RDHVA EVDSS MOVYV
    DHWVG RDOVI SSPOV DEDVV DWVMT WEDLS PKRWE VJVGR WKRRM WKVDO
    EMIEZ YTOVR LTNPR RMRYY VTNRW EVTVD YVVTW VMVDT WVGVP IEZOV
    PVDFE WOVSS PTNPS DMVYE ZMVWV MTWVD OVYVW WVPTS NDEVF IWVHP
    SVNVP VDEDJ EZGSS PJVVY OHPSV NZVTG RDGEZ L
    

    We stellen eerst de frequentietabellen op van de letters, digrammen en trigrammen zoals ze voorkomen in deze tekst. De resultaten vindt men hier.

    Meteen valt op dat de letter "v" het meeste voorkomt in de tekst waardoor we kunnen aannemen dat dit waarschijnlijk de letter "e" is. De letter "n" komt in de Nederlandse taal het tweedemeeste voor. Op basis van de frequentietabel van trigrammen mogen we aannemen dat "van" in de tekst gecodeerd is als "grd" aangezien dit het enige trigram is dat eindigt op "d" (= "n"). Dit betekent meteen dat "g" de letter "v" voorstelt en dat "r" de gecodeerde letter "a" is. Op basis van de frequentietabellen kunnen we nu vermoeden dat de letter "o" waarschijnlijk een "t" of een "d" is. Op basis van de trigrammen is de "d" het meest waarschijnlijke ("rdo" is dan "and"). Met deze gegevens hebben we reeds:

    .NDE. ..... ....E ...E. .EE.. E.AN. ..... ENN.. .E.E. .ENVA
    NDE.. A...E .E... ..... A.... .E... .E.EN ..... ..E.. .....
    ....E .EN.A A.VAN ..... .EN.E ....A AN... .E..E ..NVA N.N.E
    .AA.. E...N .EN.E .E..E .VANA ..EN. E...E ND... DE.A. E....
    EVAND E.... ..... .E.E. ..DE. ....E N.EN. .E... E.EN. AA...
    ..EEV ENEEN .AAN. EVEN. .E.E. .NNEN .E..A A.... .DEND E.A..
    ..DEE ...DE ..... ..... E.E.. .DE.E ..AA. E..NE ..E.E ..E.V
    ANDE. ..... .N.E. ...E. E.... EVE.V AN.EN D...E ENAND E.E.E
    ..E.. AA.D. ..DE. E.... N.EE. .AA.. ..D.A AN.E. .EN.. .DE.E
    N..EV ANDE. ...DE N.NEE N.E.. ..N.. ..A.. E.EVA ..AA. ..END
    ..... ..DEA ....A A.A.. E..A. .E.EN .EE.. E.EN. .EVE. ...DE
    .EN.. .DE.. ..... N.E.. ..E.E ...EN DE.E. .E... .N.E. ..E..
    .E.E. EN.N. ..V.. ..EE. D...E ..E.V ANV.. .
    

    We beginnen nu reeds stukken van de tekst te kunnen "verstaan" waardoor snel bijkomende letters kunnen geïdentificeerd worden. Uiteindelijk zijn we, met wat bijkomende pogingen in staat de volgende tekst terug te vinden.

    INDEC RYPTO LOGIE ISHET ZEERB ELANG RIJKK ENNIS TEHEB BENVA
    NDEKL ASSIE KECRY PTOGR AFISC HESYS TEMEN OFKOR TWEGC RYPTO
    SYSTE MENWA ARVAN SOMMI GENTE RUGGA ANTOT HETBE GINVA NONZE
    JAART ELLIN GENKE LEHIE RVANA LLENB EHORE NDTOT DECAT EGORI
    EVAND ESUBS TITUT IEMET HODES ZULLE NWENU BESPR EKENW AARBI
    JWEEV ENEEN SAANG EVENH OEZEK UNNEN GEKRA AKTWO RDEND EBASI
    SIDEE BIJDE SUBST ITUTI EMETH ODEBE STAAT ERINE LKELE TTERV
    ANDEO ORSPR ONKEL IJKET EKSTT EVERV ANGEN DOORE ENAND ERELE
    TTERW AARDO ORDET EKSTO NLEES BAARW ORDTA ANGEZ IENOO KDELE
    NGTEV ANDEW OORDE NINEE NTEKS TINFO RMATI EBEVA TMAAK TMEND
    IKWIJ LSDEA FSPRA AKALL ESPAT IESEN LEEST EKENS TEVER WIJDE
    RENUI TDEOO RSPRO NKELI JKETE KSTEN DELET TERSO PNIEU WTEGR
    OEPER ENINB IJVOO RBEEL DGROE PJESV ANVIJ F
    

    De code is gekraakt.

    2.3. De poly-alfabetische substitutiemethode.

    In de voorgaande methodes wordt steeds het alfabet vervangen door een ander. We kunnen ook gebruik maken van meerdere alfabetten, waarbij we bijvoorbeeld afspreken dat het eerste gebruikt wordt om de eerste letter te coderen, het tweede voor de tweede letter enzoverder. We spreken in dit geval van een poly-alfabetische substitutie. De Vigenère-methode ontwikkeld in 1586 door de Fransman Blaise de Vigenère is de meest populaire poly-alfabetische substitutiemethode. De idee in deze methode is om elke letter van de tekst te coderen met de Caesar-methode steunend op verschillende verschuivingen. De sleutel in dit systeem wordt dan gevormd door de verschillende verschuivingen die achtereenvolgens moeten worden doorgevoerd. Praktisch noteert men het aantal verschuivingen door de eerste letter aan te geven van het verschoven alfabet. Meestal wordt als de sleutel een woord of een zin genomen die dan zoveel maal herhaald wordt tot lengte samenvalt met de lengte van de te coderen tekst. Hieronder geven we een voorbeeld.

    Voor: 
    DESLE UTELI NDITS YSTEE MWORD TDANG EVORM DDOOR DEVER SCHIL
    LENDE VERSC HUIVI NGEND IEACH TEREE NVOLG ENSMO ETENW ORDEN
    DOORG EVOER D
    
    Sleutel: WISKUNDE
    
    Uitgebreide sleutel:
    WISKU NDEWI SKUND EWISK UNDEW ISKUN DEWIS KUNDE WISKU NDEWI
    SKUND EWISK UNDEW ISKUN DEWIS KUNDE WISKU NDEWI SKUND EWISK
    UNDEW ISKUN D
    

    Na codering krijgen we het volgende resultaat:

    ZMKVY HWIHQ FNCGV COBWO GJRVZ BVKHT HZKZE NXBRV ZMNOL FFLET
    DOHQH ZAZKM BHLZE VYOHQ LIWKZ DYEHI JDGVA RQWIW WDYAZ SNLWX
    XBRVC MNYYE G
    

    Dit is het beste in te zien door gebruik te maken van de volgende tabel waarin de mogelijk gebruikte alfabetten in weergegeven worden.

    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 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 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

    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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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

    We zoeken de eerste letter van de uitgebreide sleutel op in de bovenste rij. Vervolgens zoeken we de eerste letter van de te coderen tekst op in de eerste kolom. Op de doorsnede van de resp. rij en kolom vinden we de gecodeerde letter. Dus "w" bovenaan en "d" links levert als codering "z" op.

    Gedurende een lange tijd heeft men gedacht dat deze coderingsmethode niet te kraken was. In 1863 echter werd door de Pruisische legerofficier Kasiski een methode ontdekt die de lengte van de gebruikte sleutel bepaalt. Eens deze lengte bepaald is kan vrij snel de codetekst gekraakt worden door telkens maar dat deel van de tekst te bekijken dat met dezelfde Caesar-codering werd gecodeerd.

    De lengte van de sleutel wordt bepaald door de codetekst verschillende malen te verschuiven tegenover zichzelf en telkens te kijken naar het aantal dezelfde letters op gelijke plaatsen. Een willekeurige verschuiving zal resulteren in een minder aantal overeenkomsten dan wanneer de tekst verschoven wordt over een veelvoud van de gebruikte sleutel. Dit is omdat een aantal letters (zoals de letter "e" in het Nederlands meer voorkomt dan andere) waardoor zij ook meer waarschijnlijk zullen overeenkomen met zichzelf wanneer zij met dezelfde letter gecodeerd werden. Een vereiste om deze techniek te kunnen toepassen is echter dat de codetekst een voldoende aantal tekens bevat. Het bovenstaande voorbeeld is daarvoor net iets te klein. Vandaar een tweede voorbeeld:

    Gecodeerde tekst:

    UBGYN VKDWI WSSWH CDLQH CYPVN SOUYK DWMEV IZBLM EITSE VPRHO
    QXPOX OVMTI WSFLJ TFCJL LJUGF BPWKG WYXIZ CIEZV FKHAN VKDWI
    DCEHH GPRIO DLGEZ GRGXM SSQNP VGUJU LRFCW BPXNS JCYZM BRHKI
    VODLE IXZLH RIZYH FPLUS UPLRM ZOYYF QVRLP RPHRN OIOOW YRSDW
    HPLRP SVOMW FWWOE MQAHN SSPSV TFPXS QQPRG PHMAV QYHHH EMFEC
    UAQSY YYIQB VULRS SYYYL ASCYV YZBHH RIWFD UVXIC UXPRP SEUDM
    EWGYP FUXGY DYNGW CEYFW HGPXT CGYMI EHDUE IDWQY WOQZH NEIDJ
    DHOIA CUMAV ABNYW MVYHN POEHW YGIDJ DHRIZ RRICI QBDHO IDSOY
    EXQFZ ULVPC RLOIF SNMES ZZHYD FMOUQ ZVPHD UYKQN LYYSA YGYWI
    ZUWYG EZRHQ ZSDRH HTRQS QNPOE HLHQS DADNT INSYU EQMON NXIZR
    LEHMV ZVXPE RGSLL EWOOF PWBOW CPWQB OYPWF SNYYW FSYYC AUXGY
    CIZIL NOIAC UMAVA BNYWM VYHNP OEHHH OIXSW NPVEC SHTIG KWYRV
    ASSYC IZWQV TNHCR LMIQZ GACSQ DMYDZ MBYCU J
    

    De frequentiedichtheid van de overeenkomstige letters bij verschillende verschuivingen levert de volgende grafiek op.

    Hierbij valt op dat bij een verschuiving over een veelvoud van 6 letters de frequentie van de overeenkomstige letters merkelijk hoger ligt. Dit betekent dat de sleutel vermoedelijk uit 6 letters bestaat. Onderzoek van de letters uit de tekst die met hetzelfde alfabet gecodeerd werden leert ons snel dat de gebruikte sleutel "MODULE" is en de gedecodeerde tekst dezelfde is als deze gebruikt in het voorbeeld uit deel 2.2.

    2.4. De Vernam-codering.

    Met de technieken die voorafgingen zou men de vraag kunnen stellen of er wel veilige of onbreekbare codeermethodes bestaan. Op deze vraag moet inderdaad bevestigend geantwoord worden. De Vernam-codering (ook wel one-time-pad genoemd) die we nu zullen bespreken is een methode die deze perfecte veiligheid bereikt.

    Eerst wordt de tekst omgezet in een binaire voorstelling. Dit kan bijvoorbeeld gebeuren door gebruik te maken van de ASCII-code van elk teken uit de te coderen tekst. Vervolgens nemen we een willekeurige reeks tekens die als sleuteltekst dienst zal doen en die minstens even lang is als de te coderen tekst. Ook de sleuteltekst zetten we om in een binaire schrijfwijze. We overlopen nu de beide binaire voorstellingen en passen per bit de functie XOR (= exclusieve of) toe. In de onderstaande tabel zien we de mogelijke uitkomsten van deze functie:

    XOR 0 1
    0 0 1
    1 1 0

    De resulterende binaire voorstelling kan nu terug worden omgezet in een tekst met tekens waardoor de gecodeerde tekst ontstaat. Het decoderen van de tekst gebeurt eenvoudigweg door de gecodeerde tekst nogmaals te "coderen" met dezelfde sleutel. Hieronder volgt een voorbeeld.

    Voor:

    Met de technieken die voorafgingen zou
    men de vraag kunnen stellen of er wel
    veilige of onbreekbare codeermethodes
    bestaan. Op deze vraag moet inderdaad
    bevestigend geantwoord worden. De
    Vernam-codering (ook wel one-time-pad
    genoemd) die we nu zullen bespreken is
    een methode die deze perfecte veiligheid
    bereikt.
    
    Sleutel:
    $d†b2Ÿz$kƒž?hcˆ@S@+Aet‰E‚#"oYO-/zK,k'
    ‚Q@2qZj‹w"MK'Ž$d}™|…s4HL1Ž…PwŽqƒ;Š?
    'g„Y,!…Aˆ)",j5ŠzX+8‹}A„rQ:j…ARV@-6y‰Ÿ
    ASh{V-|fO|fb‹e-~SX]MQAw„$r@‰{˜H‰Œ8:„ 
    "80uUYr5u$/‡Œ'0Nšy‰PtŽƒ-%\B^R"v/6.
    t6mj\ ‚xlu"HOa-CY-KL?œuRv_f‰…™GCyˆI|"
    -0D0-0*RŸ~NUJDe e\NTs^&|(f"„IJ<"o4'>
    †>ƒˆ…Oj^[g-+J)qFu?Œ‚xE|CU-"$ŠiT"v'$$…^
    .->yŒ7
    
    Na:
    I!RbvZ.a(KPvH#&F@—‰nA3;F—Cee&—ˆhaz‘c>'
    O”Ž25Ÿj]%cŒŒl[j*8C™/Q6x„‰ŽJ–wK#ƒlOQ?
    q"M•ef@AGo"c$wX?`zJ/HAG=•/WŒ—‚ˆbr

    Wanneer de willekeurig gegenereerde sleutel niet gekend is en slechts eenmaal gebruikt wordt, is het onmogelijk om de oorspronkelijke tekst te reconstrueren. De gecodeerde tekst kan voor diegene die poogt te decoderen afkomstig zijn van om het even welke brontekst. Vandaar dat deze methode de perfecte veiligheid garandeert. Ondermeer de NAVO gebruikt deze methode.

    2.5. Codering m.b.v. een publieke sleutel.

    Tot hiertoe hebben we methodes gezien die ofwel onbetrouwbaar blijken ofwel die vrij omslachtig zijn m.b.t. de communicatie en grote sleutels vereisen die ook steeds moeten hernieuwd worden.

    Bijkomend zal een aantal toepassingen dat bijvoorbeeld gebruik maakt van het internet (bijvoorbeeld financiële verrichtingen, betalingen, ...) een elektronisch equivalent van een handtekening moeten kunnen gebruiken. Een elektronische handtekening is een stukje "tekst" dat aan een boodschap wordt toegevoegd waaruit de ontvanger kan afleiden van wie het afkomstig is.

    Een elektronische handtekening moet voldoen aan de volgende vereisten:

    1. Enkel de zender kan de elektronische handtekening maken.
    2. De ontvanger kan controleren dat de handtekening afkomstig is van de zender.
    3. De ontvanger kan tegenover derden aantonen dat de zender de handtekening gemaakt heeft.

    De traditionele methoden die hiervoor beschreven werden zijn niet in staat een dergelijke elektronische handtekening te produceren. Men is dus op zoek gegaan naar andere technieken en heeft deze ook gevonden in 1976. Toen werd door Hellman en Diffie de idee van een publieke sleutel cryptografie gelanceerd. De methode bestaat erin dat iemand die gecodeerde boodschappen wenst te ontvangen een volledig coderingsalgoritme inclusief een sleutel publiek te maken. Iedereen die aan die persoon een boodschap wil verzenden zal dit doen met het publieke algoritme en de bijhorende sleutel. Het algoritme moet van die aard zijn dat niemand behalve de ontvanger in staat is te decoderen. De ontvanger zal hiervoor een geheime sleutel (of "achterpoortje") gebruiken. Het coderen werkt m.b.v. functies waarvan gemakkelijk de functiewaarde kan worden berekend voor een bepaalde x maar waarvan de inverse functie quasi onmogelijk te berekenen is. Wanneer dit het geval is kan de gebruikte functie gerust publiek gemaakt worden. De ontvanger moet natuurlijk wel in staat zijn de inverse te berekenen zoniet is hij niet in staat de toegezonden boodschap te decoderen.

    De meest gebruikte en dus ook uitvoerig geteste publieke sleutel methode is de zogenaamde RSA-methode daterend van 1978 en genoemd naar de ontdekkers Rivest, Shamir en Adleman. De methode maakt gebruik van het gegeven dat het gemakkelijk is twee zeer grote priemgetallen (minstens honderd cijfers per priemgetal) te vermenigvuldigen maar dat het bijzonder moeilijk is uit het product de priemfactoren terug te vinden.

    Concreet bestaat de RSA-methode uit de volgende stappen.

    1. Persoon A wenst gecodeerde boodschappen te ontvangen. Daartoe zal hij twee grote priemgetallen (minstens honderd cijfers per priemgetal) p en q zoeken. Hij berekent hiermee de getallen n = pq en f = (p-1)(q-1). Vervolgens zoekt hij een (groot) getal d zodat 1<d<f en waarvan de grootste gemene deler met f gelijk is aan 1. Tevens berekent hij het getal e, 1<e<f zodat de-1 deelbaar is door f. De getallen n, e en d noemt men resp. de modulus, de coderingsexponent en de decoderingsexponent.
    2. A maakt de getallen n en e publiek, terwijl de getallen p, q, f en d zijn "achterpoortjes" zijn die uiteraard geheim blijven.
    3. Indien B de boodschap x wil doorsturen naar A, zal hij eerst de boodschap moeten omzetten in een groot getal, eventueel opgesplitst in een aantal blokken. Dit kan bijvoorbeeld weerom door gebruik te maken van de ASCII-code. Meestal zal A zeggen hoe de omzetting dient te geschieden. Stel dat m het resultaat is van deze omzetting. Vervolgens berekent B het getal c dat de rest is van de deling van me door n. Wiskundig zegt men dat c = me mod n. Het getal c stuurt hij naar A.
    4. A ontvangt het getal c en berekent de rest van de deling van cd door n, waarmee hij de originele boodschap m verkrijgt (m = cd mod n).

    We passen de methode toe op een vereenvoudigd voorbeeld. B wil de onderstaande tekst gecodeerd doorsturen naar A.

    De meest gebruikte en dus ook uitvoerig geteste 
    publieke sleutel methode is de zogenaamde 
    RSA-methode daterend van 1978 en genoemd 
    naar de ontdekkers Rivest, Shamir en Adleman.
    

    A heeft de volgende publieke sleutel gepubliceerd: n = 341; e = 43. Eerst zet B de tekst om in een getalvoorstelling. Eenvoudigheidshalve gaan we ervan uit dat elk getal omgezet wordt in een driecijferige code, nl. de ASCII-code. Dit levert de volgende getallen op:

    068 101 032 109 101 101 115 116 032 103 101 098 114 117 105 107 116 101 032 101 
    110 032 100 117 115 032 111 111 107 032 117 105 116 118 111 101 114 105 103 032 
    103 101 116 101 115 116 101 032 013 010 112 117 098 108 105 101 107 101 032 115 
    108 101 117 116 101 108 032 109 101 116 104 111 100 101 032 105 115 032 100 101 
    032 122 111 103 101 110 097 097 109 100 101 032 013 010 082 083 065 045 109 101 
    116 104 111 100 101 032 100 097 116 101 114 101 110 100 032 118 097 110 032 049 
    057 055 056 032 101 110 032 103 101 110 111 101 109 100 032 013 010 110 097 097 
    114 032 100 101 032 111 110 116 100 101 107 107 101 114 115 032 082 105 118 101 
    115 116 044 032 083 104 097 109 105 114 032 101 110 032 065 100 108 101 109 097 
    110 046 013 010
    

    Vervolgens berekent B voor elk getal de rest van de deling van de 43-ste macht door 341. Dit resulteert in het volgende.

    316 140 032 252 140 140 323 139 032 009 140 098 053 167 172 028 139 140 032 140 
    220 032 298 167 323 032 144 144 028 032 167 172 139 149 144 140 053 172 009 032 
    009 140 139 140 323 139 140 032 228 164 107 167 098 058 172 140 028 140 032 323 
    058 140 167 139 140 058 032 252 140 139 114 144 298 140 032 172 323 032 298 140 
    032 023 144 009 140 220 157 157 252 298 140 032 228 164 103 084 241 276 252 140 
    139 114 144 298 140 032 298 157 139 140 053 140 220 298 032 149 157 220 032 268 
    305 198 056 032 140 220 032 009 140 220 144 140 252 298 032 228 164 220 157 157 
    053 032 298 140 032 144 220 139 298 140 028 028 140 053 323 032 103 172 149 140 
    323 139 011 032 084 114 157 252 172 053 032 140 220 032 241 298 058 140 252 157 
    220 151 228 164
    

    Dit stuurt hij naar A. Wanneer A elk getal tot de macht 7 verheft (want 7 was het geheime getal d voor A) en vervolgens de rest berekent van de deling door 341, bekomt hij de gedecodeerde getallen. Er rest hem enkel nog om de getallen om te zetten in tekens om de tekst terug vinden.

    We merken op dat de in dit voorbeeld toegepaste methode niet veilig is omdat de priemgetallen te klein zijn en omdat elk teken in de tekst aanleiding geeft tot een driecijferig getal dat afzonderlijk gecodeerd wordt. Hierdoor wordt het mogelijk om m.b.v. statistische technieken terug te achterhalen welke code staat voor welke letter. Indien toch met grote priemgetallen gewerkt wordt en een hieraan aangepaste grootte van het blok is de methode wel veilig. Dit komt omdat het in een "redelijke tijd" niet mogelijk is n te ontbinden in p en q met de huidige kennis. Dit betekent niet dat geen andere nog niet bekende technieken mogelijk zijn om te komen tot deze ontbinding. Worden deze gevonden, dan betekent dit het einde van deze beveiligingstechniek. Anderzijds is ook niet bekend of de ontbinding van n wel noodzakelijk is om te decoderen. Misschien bestaan er totaal andere technieken die toch leiden tot de decodering. Methoden die er bijvoorbeeld in slagen de "achterpoortjes" te bereiken, leiden ook tot de decodering.

  5. Tot slot.
  6. In het overzicht hierboven gegeven vinden we enkele populaire coderingsmethodes. De RSA-methode is omwille van zijn eenvoud en toch grote veiligheid een op het internet veelgebruikte techniek om te coderen. Uiteraard worden er een hele reeks andere methodes gebruikt, de ene al veiliger dan de andere. We kunnen ze onmogelijk allemaal behandelen. Tot slot willen we nog opmerken dat het kraken van beveiligde informatie in de praktijk meestal gebeurt via de "zwakke schakel" in de gebruikte methode. Ook de RSA-methode heeft zijn "zwakke punten", namelijk de "achterpoortjes" die noodzakelijkerwijze geheim moeten blijven. Wanneer deze niet zorgvuldig worden bewaard kunnen buitenstaanders er toegang toe krijgen waardoor ook RSA-gecodeerde informatie in een mum van tijd leesbaar wordt. Meestal krijgen krakers toegang tot de plaatsen waar de geheime informatie te vinden is doordat te voor de hand liggende paswoorden werden gebruikt.


Homepage 'Topics uit wiskunde en economie'
  • Copyright ©2000