Hoofdcategorieën
Device Settings

Securitybug in PGP gevonden

Door Johannes Verelst, donderdag 6 september 2001 17:48
Bron: PGP, views: 712

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.

Volgende 17:56 Gebruikersvriendelijke 404-melding
Vorige 17:39 Voorverkoop Xbox loopt als een trein
Advertentie

Reacties

«  1  2  »

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.

Hmz...

PGP was volgens mij vrij veilig (de CLI-variant) totdat NA er zich mee ging bemoeien en er GUI voor ging maken.

Nu maar weer eens feitelijk aangetoond dat het gebruiksvriendelijker maken van software kan leiden tot ernstige security bugs.

Dit is vrij ernstig, want als er op grote schaal gebruik van gemaakt wordt door 'onwetende' gebruikers, dan zal het lang duren voordat alles weer in orde is, zoals recentelijk met Code Red, et al.

edit:
1 min. te laat, zelfde als Cobus...*kijkt naar cobus zijn posting en ziet +4* :'( . (Anders had ik die !!)

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.

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

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. |:(

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.

Welke E-Mail providers hebben hier nou last van?

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

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

[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.
«  1  2  »

Op dit item kan niet meer gereageerd worden.

Volgende 17:56 Gebruikersvriendelijke 404-melding
Vorige 17:39 Voorverkoop Xbox loopt als een trein
VNU Media logo Hosted by True

© 1998 - 2012 Tweakers.net B.V. - Alle rechten voorbehouden - Contact - Jouw privacy - Algemene Voorwaarden

Uitgever van:

Website van het jaar 2011