Securitybug in PGP gevonden

De Utrechtse wiskunde-student Sieuwert van Otterloo heeft tijdens zijn afstudeerproject een beveiligingsfout in het populaire email-versleutelings programma PGP gevonden. PGP is voor het versturen van beveiligde e-mail zo langzamerhand een standaard geworden, dus deze fout treft heel veel mensen en bedrijven.

Bij PGP wordt de public key van de ontvanger gebruikt door de verzender om e-mail te versleutelen: als Bob een bericht naar Alice wil sturen gebruikt hij de public-key van Alice om het bericht te versleutelen. Alleen Alice kan dan het bericht lezen, ze gebruikt daarvoor haar (geheime) private key. Met de gevonden bug kan Eve echter net doen alsof ze Alice is. Ze stuurt op een speciale manier haar public key naar Bob en Bob denkt dan dat de key van Alice kwam. Als Bob nu een versleutelde e-mail naar Alice wil sturen gebruikt hij eigenlijk de public key van Eve, dus kan Eve nu met haar private key de e-mail lezen die voor Alice bedoeld was.

Het hele document is op deze pagina te vinden. De preciese problemen met PGP worden daar uiteengezet:

PGP logoThe other windows also show interesting things. The PGPKeys window shows exactly what it should show: The first user ID is not valid, the second is, and if one takes Alice as the name of the key, then the key is not valid. The properties window however is confused and/or confusing. It shows the name Alice, but the Eve properties: It thinks the key is valid. It even allows raising the trust bar. If Bob raises the trust bar, because he trusts Alice, the first user ID becomes also valid (it is signed by a trusted key, namely itself) and Bob will start encrypting his secret messages to Alice with Eves key. Eve can now read everything Bob sends to Alice!

PGP normally does not allow setting the trust of invalid keys, but here it does. So both the validity and the trust slider are wrong (or one can say the properties window should show a different name. It is the mixing of the two strategies that creates the problem). [break] Het blijkt dus een combinatie te zijn van een slechte implementatie van de OpenPGP standaard door Network Associates en van een onoverzichtelijke gebruikersinterface. Dat de Open Source variant GNU Privacy Guard ook niet helemaal veilig voor dit soort aanvallen is, valt te lezen op de mailinglijst bugtraq: [/break] GnuPG does not mark non-certified user IDs when listing the user IDs for a key (but at least lists all user IDs, so you can notice that something fishy is going on), and the use of '--with-colons' without '--fixed-list-mode' by a frontend might cause the frontend to output misleading information much in the same way as PGP 7.



Meer informatie over PGP en over de gevonden bug is in de complete scriptie te lezen.

Door Johannes Verelst

Nieuwsposter

06-09-2001 • 17:48

22

Bron: PGP

Reacties (22)

22
22
19
9
0
0
Wijzig sortering
Vergis ik mij nu, of is dit het zelfde als zeggen: "een bank heeft een beveiligingslek. Als ik mij voordoe als de directeur en ik vraag of ze al het geld in de kofferbak van mijn auto willen leggen, dan kan je er zo mee weg rijden".
Het lijkt mij stug dat dit de strekking is van dit afstudeerproject (anders zou ik bij deze ook afgestudeerd zijn :) ).
Het lijkt mij eerder het geval dat indien er een mailtje met mijn 'valse' sleutel encoded is zowel ik als de 'officiele' ontvanger 'm kunnen lezen.
Dan zou het mailtje de session key (die nodig is voor het decoderen van het bericht) encrypted worden door zowel de sleutel van jou als de sleutel van de oorspronkelijke ontvanger. dan kun je dus zien dat er iets niet klopt...

edit:
typo
Anoniem: 27537 @MrE6 september 2001 23:21
Een kleine vergissing: Eve doet zich voor als Alice en Bob kan niet weten dat Eve Alice niet is... (Als jij zegt dat je de directeur van de bank bent, dan lijkt het me stug dat je dat lang vol kan houden...)
Dat is geen bug in PGP overigens... Het is allang bekend dat PGP alleen werkt als Bob kan vaststellen dat de public key die hij van "Alice" krijgt ook werkelijk van Alice komt... Dat dat nu pas naar buiten komt is ronduit lachwekkend.
Dictaat Beveiliging van Telematica Systemen, 1998:
Secure key management involves:
- successfull exchange of key between sender and receiver
- assurance to the receiver that the key really comes from the sender and not from somebody else
Met de gevonden bug kan Eve echter net doen alsof ze Alice is. Ze stuurt op een speciale manier haar public key naar Bob en Bob denkt dan dat de key van Alice kwam. Als Bob nu een versleutelde e-mail naar Alice wil sturen gebruikt hij eigenlijk de public key van Eve, dus kan Eve nu met haar private key de e-mail lezen die voor Alice bedoeld was.
Bij het aan de sleutel word een email adres gehangen. Dit betekend dus dat een mailtje naar Alice@mail.nl gestuurd word, maar encrypted met Eve's publieke sleutel. Alice zou het mailtje dus niet kunnen lezen. Eve zou dus eerst het mailtje ergens moeten afvangen voordat ze het kan decrypten....

of zit ik er nu weer naast...

Dit betekend dat er dus best wel moeite moet worden gedaan om een mailtje dat voor iemand anders is bestemd te kunnen lezen....
Ja je zit er weer naast.

Eve heeft een key
Eve voegt aan haar key een extra identiteit toe (op zich is dit is nog vrij normaal, b.v. dezelfde naam met extra e-mail adres). Wat echter bijzonder is, is dat Eve niet haar naam haar key toevoegd maar een andere naam (Alice's naam)

De key ziet er nu zo uit

0x12345678 Eve
sub identity: Alice

Bob wil iets sturen naar Alice en zoekt Alice op,

Bob vind de key van Eve maar denkt dat die van Alice is. (Omdat de specifieke PGP versie aangeeft 0x12345678 Alice). Bob zou de key zelfs kunnen tekenen als zijnde Alices key!(of kunnen hebben getekend als zijnde key van Eve!)

En dat e-mail adres valt ook nog wel op te lossen:
stel dat de key was:
0x12345678 Eve (Eve@evesdomein.nl)
sub identity :Alice (Alice@evesdomein.nl)

en de mail wordt gestuurd naar Alice@evesdomein.nl die stiekem aankomt bij Eve zonder dat dat nu gelijk weer heel erg opvalt.
Niet te geloven dat dit telkens weer als een bug wordt aangemerkt terwijl het gewoon 'by design' is.
Deze kwetsbaarheid noemt zimmerman als sinds de allereerste dos versie in zijn 'snake oil' verhaal.
Zimmerman wijst hierin op het feit dat je alleen zeker kunt zijn van een publieke sleutel wanneer je de fingerprint (hash) bijvoorbeeld via de telefoon met de zender vergelijkt. Of de public key persoonlijk overhandigd krijgt.
Tja, jij kan dit af doen als 'niet een bug', maar dan snap ik niet dat Network Associates een patch uitbrengt.

Het is wel een bug dus (zonder bug geen patch), dus wat is het dan?
1) Het is een gedeeltelijk foute implementatie. Ik weet de details niet uit m'n hoofd, maar lees de scriptie er maar op na
2) Het is een onduidelijke userinterface, die niet duidelijk aangeeft dan een key invalid is.

Juist om de problemen met key-distributie (die je noemt: hash doorbellen of keys handmatig geven) op te lossen is het 'web of trust' (certificaten die signatures bevatten, op basis van het vertrouwen in de mensen die een signature hebben geplaatst beslis je of je een key aanneemt) bedacht. In de implementatie ervan zit dus een fout.
Zoals in het artikel te lezen is:
Het blijkt dus een combinatie te zijn van een slechte implementatie van de OpenPGP standaard door Network Associates en van een onoverzichtelijke gebruikersinterface.
Ofwel, aan PGP op zich is niks mis mee, maar door door een foutieve manier van software bouwen zit deze fout erin. Bad design and coding dus. |:(
Klopt als een bus.

Als ik mij voordoe als iemand anders en een publieke steutel naar iemand stuur, dan wil het nog niet zeggen dat dat mijn sleutel is.......

De fingerprint is inderdaad een manier om te controleren of iemand daadwerkelijk is, wie hij verteld dat hij is......
Het valt dus allemaal nog wel mee, de sleutel kan voor zover ik kan zien niet verraden worden door deze bug, keys met user identities van verschillende gebruikers kan je echter beter expliciet op untrusted zetten.
Voor de geïntereseerden, link naar de hotfix:

www.pgp.com/naicommon/download/upgrade/upgrad es-patch.asp
Het is mooi dat iedereen zo kritisch is, maar er zijn toch een paar misverstanden ingeslopen:

Het is inderdaad geen wiskunde (net als ADK bug overigens). Maar het werkt wel! Ik vind het zelf erg zorgwekkend dat je zonder enige wiskunde de beveiliging(ihb de key signatures) van PGP kunt omzeilen.

>Ow, dit is dus gewoon de bekende "man in the >middle attack". Ik dacht dat al mijn PGP-mailtjes >plots voor iedereen leesbaar waren. Phew...
Dit lijkt op een man in the middle attack. Echter PGP zou mbv key signatures teegn deze aanval moeten beschermen, en die bescherming wordt door de aanval omzeild. Je mail wordt leesbaar als je niet oplet. Het is een manier om jou een verkeerde sleutel te laten gebruiken. Als je dat doet, ben je verloren... Check de screenshot bij het verslag: Er worden foute handtekeningen goedgekeurd! veel erger kan het echt niet.

>een bank heeft een beveiligingslek. Als ik mij >voordoe als de directeur en ik vraag of ze al het geld >in de kofferbak van mijn auto willen leggen, dan kan >je er zo mee weg rijden
Is dit negatief bedoeld??? Deze aanval stelt je inderdaad bijvoorbeeld in staat miljoenen guldens van banken te stelen: Ondanks dat je niet gekwalificeerd bent krijg je toch het geld mee. Effectieve aanval dus. Wat boeit het jou hoe je die miljoenen steelt?

>Eve zou dus eerst het mailtje ergens moeten >afvangen voordat ze het kan decrypten....
Uiteraard. Als email niet af te vangen was hoefde je ook geen PGP te gebruiken. PGP is juist bedoeld om email afvanging onschadelijk te maken. En dat doet het dus (soms) niet goed.

Ik heb een heel onderzoek naar de veiligheid van PGP gedaan. De algoritmes kloppen inderdaad. Maar dat betekent blijkbaar niet dat het veilig is...

Overigens bedoel ik niet dat iedereen in paniek moet raken, of moet stoppen PGP te gebruiken. Maaropletten en upgraden (downgraden of GnuPG gebruiken) kan geen kwaad, want ik denk dat 90% van de PGP gebruikers in deze aanval zou trappen.

Groeten,
Sieuwert van Otterloo
sieuwert@bluering.nl
[SEMI OFFTOPIC]

Sieuwert studeert naast wiskunde ook CKI (Cognitieve Kunstmatige Intelligentie), de studie die ik ook doe.
Hij hield deze week dus zijn afstudeerpraatje hiero, erg leuk om te zien dat hij de t.net frontpage haalt...

We hebben nu (as I type this) een borrel op de fac. , ik zal hem eens even gaan vertellen dat hij op t.net staat...

[/SEMI OFFTOPIC]
Ik kreeg hier ook een mailtje over (hij doet namelijk ook dezelfde studie als mij, wiskunde). Volgens mij was het gewoon een stunt om flink aandacht te trekken, want met een wiskundige fout heeft dit natuurlijk niks te maken. Het algoritme van PGP blijft gewoon onveranderd goed.
Als je bedoelt 'de cryptografische algoritmen' (RSA/DSA/IDEA/whatever), dan heb je gelijk: deze blijven onveranderd goed.

De implementatie van alles eromheen (bijv. public key distributie) is daar onafhankelijk van, en net als alle andere software kan dat gewoon bugs bevatten.

[edit: typo]
Ach er zullen altijd wiskundigen blijven die beveligingsproggies doorzien, waardoor nog slimmere wiskundigen nog betere proggies schrijven enz.

Eigenlijk is het alleen maar goed voor de beveiliging dat iedere zoveel jaar een sleutel of methode wordt 'verslagen' door slimme mensen.

[applaus]
Hulde! :P
Ach er zullen altijd wiskundigen blijven die beveligingsproggies doorzien, waardoor nog slimmere wiskundigen nog betere proggies schrijven enz.
Software wordt wel door programmeurs geschreven maar worden door bijna altijd door Wiskundige ontworpen (dus het programma moet 1 x 2 vermenigvuldigen en de uitkomst moet op het beeldscherm komen, de programmeur maakt daar dan dit van: "uitk := 1 * 2; cout <<uitk;").

Dit is zeker gebeurd voor PGP, PGP is uitgerust met een hele goede encrypty engine die zeker bedacht is door een goede wiskundige.
Nee dus, het encryptiealgorithme is niet gekraakt, alleen een systeem eromheen. Met wiskunde heeft dit vrij weinig te maken.
edit:

1 min. te laat, zelfde als Cobus...*kijkt naar cobus zijn posting en ziet +4* :'( . (Anders had ik die !!)
Ow, dit is dus gewoon de bekende "man in the middle attack". Ik dacht dat al mijn PGP-mailtjes plots voor iedereen leesbaar waren. Phew...

Op dit item kan niet meer gereageerd worden.