Handson Cryptografie: Cryptografie met Pretty Good Privacy

Waarschijnlijk is het programma Pretty Good Privacy (PGP) het bekendste encryptieprogramma ter wereld. Het kan niet, zoals veel andere programma's, alleen bestanden op de eigen harde schijf versleutelen, maar ook door middel van publieke-sleutel cryptografie e-mail en andere communicatie via Internet beveiligen.

Daarnaast kan PGP ook berichten voorzien van digitale handtekeningen, waarmee de ontvanger kan controleren of een bericht echt afkomstig is van diegene wiens naam er bij staat.

Geschiedenis van PGP

Phil Zimmerman schreef het programma nadat er in de VS een aantal voorstellen waren gedaan om cryptografie aan banden te leggen. De slogan van het programma is dan ook "Cryptografie voor de massa's". Vanaf versie 2.3 (1993) is het echt een de facto standaard te noemen. Via bulletin boards en Internet werd het snel wereldwijd verspreid.

Exportproblemen

Deze export bezorgde Zimmerman de nodige juridische problemen: het Amerikaanse ministerie van Justitie zag hem als de verantwoordelijke voor de export (door onvoldoende maatregelen hiertegen te nemen), en startte een onderzoek. Dit heeft jaren geduurd, maar uiteindelijk kwam men tot de conclusie dat niet te bewijzen viel dat Zimmerman zelf de code had geëxporteerd.

Tegenwoordig worden deze problemen vermeden door de code in boekvorm te publiceren. Alhoewel computerprogramma's niet zomaar uitgevoerd mogen worden, geldt deze beperking niet voor het geschreven woord (vanwege het Eerste Amendement van de Amerikaanse grondwet, dat vrijheid van meningsuiting garandeert). Vrijwilligers in Europa scannen het boek dan weer in en publiceren het programma geheel legaal op hun Websites.

Octrooiproblemen

Een ander juridisch probleem was het gebruik van de RSA- en IDEA-algoritmen. Beide algoritmen zijn geoctrooieerd, maar Zimmerman had nooit toestemming gevraagd om deze te mogen gebruiken. Dit maakte de status van versie 2.3 in de VS dan ook twijfelachtig. Versie 2.6 werd uitgebracht in samenwerking met MIT, de rechthebbende op het RSA-octrooi. PGP werd voorzien van een andere, legale, implementatie van RSA, zodat het vrij te gebruiken was in de VS. De internationale versie bleef de oude implementatie gebruiken, omdat deze iets sneller was. Om mensen te dwingen te stoppen met het gebruik van versie 2.3, produceerde 2.6 code die niet compatible was met 2.3. Een aantal mensen zagen dit als het "bewijs" van een achterdeur voor de FBI in PGP.

Commerciële en niet-commerciële versies

Het IDEA-algoritme is vrij te gebruiken voor niet-commerciële doeleinden. Voor gewone gebruikers gaf dit geen problemen, maar bedrijven konden PGP niet gebruiken. Het bedrijf Viacrypt kocht een licentie op IDEA en bracht een commerciële versie van PGP uit, inclusief de eerste grafische Windows-versie. Later nam Zimmerman Viacrypt over met eigen bedrijf begonnen (PGP Inc). Dit werd vervolgens weer opgenomen in Network Associates (NAI).

Inmiddels is er naast de aloude DOS- en Unix-versie ook een uitgebreide Windows versie, die het gebruik vrijwel transparant maakt. PGP heeft nu licenties voor RSA en IDEA, en bovendien gebruikt het tegenwoordig ook het Diffie-Hellman algoritme, waarvan het octrooi verlopen is.

De cryptografische algoritmen in PGP

PGP gebruikt publieke-sleutelcryptografie om uitwisseling van berichten en bestanden mogelijk te maken. Via zogeheten keyservers is het mogelijk om de publieke sleutel van iedere PGP gebruiker op te vragen. Hiermee kunnen dan berichten aan hem worden versleuteld, zodat hij alleen ze weer kan lezen. Een nadeel hiervan is dat publieke-sleutelcryptografie erg traag is. Om dit probleem op te lossen, maakt PGP gebruik van een mix van gewone en publieke-sleutelcryptografie.

Versleuteling van berichten in PGP

Om een bericht te versleutelen, gebruikt PGP standaard het snelle en veilige IDEA-algoritme. Het programma maakt een 128-bits sleutel aan, bestaande uit willekeurig gekozen bits. Deze 128 bits worden vervolgens versleuteld met de publieke sleutel van de ontvanger. Beide versleutelde berichten worden aan de ontvanger gestuurd. Deze kan met behulp van zijn geheime sleutel de 128-bits sleutel terugvinden, en daarmee kan hij weer het oorspronkelijke bericht ontcijferen.

Het is nu ook mogelijk om een bericht aan meerdere personen te versturen: de 128-bits sleutel wordt simpelweg meerdere malen versleuteld, voor iedere ontvanger. Het bericht hoeft dan zelf maar één keer te worden versleuteld, zodat het resultaat niet veel groter is dan bij één ontvanger.

Digitale handtekeningen in PGP

Het plaatsen van een digitale handtekening gaat ook met publieke-sleutelcryptografie. Als de zender iets versleutelt met zijn geheime sleutel, kan iedereen het met zijn publieke sleutel weer ontcijferen. Dit is natuurlijk niet geschikt om iets geheim te houden, maar aangezien alleen de zender de geheime sleutel kan hebben gebruikt, bewijst dit wel dat het versleutelde bericht van hem afkomstig is.

PGP plaatst een "digitale handtekening" op een bericht door eerst een "message digest" of samenvatting ervan te berekenen. Dit is een reeks van 128 bits die uniek is voor het bericht. Vervolgens versleutelt PGP deze reeks weer met de geheime sleutel van de zender. De aldus versleutelde samenvatting heet de digitale handtekening van het bericht.

Strikt gesproken is de samenvatting overigens niet gegarandeerd uniek. Er zijn "maar" 2128 samenvattingen mogelijk, en een oneindig aantal berichten. Er moeten dus meerdere berichten zijn met dezelfde samenvatting. Tot nu toe is het echter niemand gelukt om voor een gegeven bericht een ander bericht te construeren met dezelfde samenvatting. En zelfs als dat al zou lukken, is het bijzonder onwaarschijnlijk dat dat andere bericht een leesbare tekst is, laat staan vergelijkbaar met het oorspronkelijke bericht.

De ontvanger kan de digitale handtekening ontcijferen met zijn eigen publieke sleutel en vergelijken met de samenvatting die hij zelf berekent over het bericht zoals hij dat ontvangen heeft. Als beide samenvattingen overeenkomen, weet de ontvanger dat het bericht ongewijzigd is sinds de handtekening is geplaatst. En omdat alleen de zender die geheime sleutel had kunnen gebruiken, weet hij dat het bericht afkomstig moet zijn van die persoon.

De passphrase: veiliger dan een wachtwoord

Het moge duidelijk zijn dat de zwakste schakel in publieke-sleutelsystemen de geheime sleutel is. Wie andermans geheime sleutel te pakken krijgt, kan alle berichten van die persoon ontsleutelen en lezen. Het is daarom zaak om deze sleutel goed te beveiligen. PGP laat de gebruiker daarom een passphrase of wachtzin kiezen, die wordt gebruikt als sleutel om de geheime sleutel mee te versleutelen voordat deze op de harde schijf wordt opgeslagen.

Elke keer dat de gebruiker nu een bericht wil ontsleutelen, moet hij eerst zijn wachtzin invoeren. PGP kan dan de geheime sleutel terugvinden en daarmee weer het bericht. Steelt iemand nu het bestand met de geheime sleutel, of zelfs de hele computer, dan moet hij nog steeds de wachtzin weten om hier iets mee te kunnen doen.

De reden dat voor een zin en niet een woord is gekozen is simpel: een woord is vaak maar vijf of zes tekens, en dat is eenvoudig en snel te raden. Een zin kan rustig dertig tekens lang zijn, inclusief leestekens, en wordt zo vrijwel onraadbaar. Toch blijft een zinnetje gemakkelijk in te typen, waardoor de kans om het te vergeten klein is.

De keyservers

Om een bericht voor een ander te kunnen versleutelen, heeft de zender de publieke sleutel van de ontvanger nodig. Hij kan natuurlijk op diens homepage kijken of hem een e-mailtje sturen, maar dat werkt lang niet altijd. Om aan dit probleem een einde te maken, is een netwerk van zogeheten keyservers opgezet.

Nadat hij een sleutelpaar heeft aangemaakt, kan de gebruiker zijn publieke sleutel naar een keyserver sturen. Alle keyservers staan met elkaar in verbinding, zodat de sleutel nu bij alle servers opvraagbaar is. Wie nu iemands sleutel zoekt, kan naar een willekeurige keyserver gaan en de gewenste naam of e-mailadres opgeven. De keyserver retourneert dan een lijst met alle passende sleutels, die de gebruiker dan kan downloaden en meteen gebruiken.

Hoe kraakbaar is PGP?

Een achterdeur in PGP versie 2.6?

PGP versie 2.6 produceerde na een bepaalde datum codetekst die niet te verwerken was met versie 2.3 of eerder. Het doel van deze actie was mensen te dwingen tot een upgrade, omdat versie 2.3 een octrooi schond. Een aantal mensen zag dit echter als bewijs dat er een achterdeur in PGP zat, waarmee organisaties als de FBI alle berichten zouden kunnen lezen. Dit was echter niet het geval; wie het niet geloofde, kon de broncode opvragen en onderzoeken, en vervolgens zelf het programma compileren om er zeker van te zijn dat ze een goede versie hadden.

De editie voor zakelijk gebruik heeft wel een achterdeur. Deze moet echter door het bedrijf zelf worden aangezet. Alle berichten worden dan ook versleuteld met een extra sleutel. Het bedrijf heeft dan ergens de geheime sleutel, zodat ze in geval van nood het bericht altijd kunnen ontcijferen. Anders bestaat de kans dat het bedrijf een belangrijk bericht niet kan lezen wanneer een medewerker zijn geheime sleutel kwijtraakt of ontslag neemt en vergeet het bericht eerst te ontsleutelen.

Kwetsbaarheid van de cryptografische algoritmen

De cryptografische algoritmen in PGP zijn uitgebreid getest, en er zijn geen serieuze fouten gevonden. Bij RSA zijn er wel een aantal "zwakke" sleutels gevonden, die gemakkelijk te kraken zijn. PGP vermijdt dan ook het gebruik van deze sleutels. Ook bij andere algoritmen zijn er een aantal kwaliteitseisen.

Kwetsbaarheid van de geheime sleutel

De gemakkelijkste manier om een PGP bericht te lezen, is de geheime sleutel van de ontvanger te stelen of te kopiëren. PGP versleutelt het bestand waar deze in zit. De passphrase dient hier als sleutel. Zonder passphrase kan PGP de geheime sleutel niet gebruiken. Wanneer iemand een makkelijk te raden passphrase kiest, kan een dief de geheime sleutel achterhalen en alle berichten lezen.

Een andere mogelijkheid is door gebruik te maken van een programma als Back Orifice, waarmee het mogelijk is om alle toetsaanslagen te registreren. Hiermee wordt dus ook de passphrase geregistreerd. De inbreker kan dan via BO het bestand met de geheime sleutel overhalen, en vervolgens eenvoudigweg alles uitproberen wat de gebruiker heeft ingetypt.

Alle delen