Als reactie op de onthulling dat de NSA op allerlei manieren achter de inhoud van versleutelde berichten probeert te komen, geeft Bruce Schneier een aantal tips om veilig te blijven (zie vooral ook de discussie op zijn blog. Zijn advies om symmetrische cryptografie te gebruiken verbaasde mij echter.

De belangrijkste conclusies zijn de volgende. Zowel Schneier als Snowden zeggen dat de NSA sterke cryptografie niet direct kunnen breken. De NSA kan echter wel op ieder mogelijk device inbreken en daarmee dus bij de gegevens komen voordat ze versleuteld worden. Implementaties van cryptografie in daadwerkelijk gebruikte systemen kunnen echter wel degelijk zwak zijn of opzettelijk zwak gemaakt worden. Bijvoorbeeld door achterdeurtjes in te bouwen in telecom apparatuur. De NSA steekt ook hier veel moeite in. Dit is overigens indirect bewijs is voor de stelling dat ze de cryptografie zelf niet direct kunnen kraken.

Er zijn legio mogelijkheden om dergelijke achterdeurtjes te plaatsen. Vooral als de encryptie plaatsvindt in hardware (waarvan de werking niet te controleren is omdat het een ‘black box’ is). Bijvoorbeeld door de cryptografische sleutels die gebruikt worden minder willekeurig te laten zijn zodat ze door de NSA achteraf te raden zijn. Of door informatie over de sleutel te lekken in de berichtenstroom die door de hardware gegenereerd wordt. Een andere mogelijkheid is om een veilig lijkend systeem te ontwerpen dat echter alleen voor een kleine verzameling sleutels echt veilig is.

Samengevat: vooral de implementatie van cryptografie geeft problemen.

Daarom verbaasde het mij dat Schneier het volgende advies geeft.

Prefer symmetric cryptography over public-key cryptography. Prefer conventional discrete-log-based systems over elliptic-curve systems; the latter have constants that the NSA influences when they can.

Symmetrische cryptografie beter dan public key cryptografie? Dat is precies tegenovergesteld van wat je zou verwachten.

By symmetrische cryptografie gebruiken de zender en ontvanger dezelfde sleutel. Dat betekent dat het lastig is om er voor te zorgen dat je met iedereen die jou een bericht wil sturen zo’n sleutel deelt, terwijl niemand anders die sleutel kent. Bij symmetrische cryptosystemen (DES en AES) worden het bericht en de sleutel op onontwarbare manier vermengd. De manier waarop is ondoorgrondelijk, en er is geen wiskundig bewijs dat die methode echt veilig is.

Bij public key cryptografie genereert de ontvanger een sleutelpaar: een privé sleutel die hij geheim houdt, en een bijbehorende publieke sleutel die iedereen mag weten. De publieke sleutel wordt gebruikt om het bericht te versleutelen. De privé sleutel is nodig om het bericht te ontcijferen. Dit lost het sleutel distributie probleem van symmetrische cryptografie dus (deels) op. Public key cryptografie is gebaseerd op de (door wiskundigen breed gedragen) aanname dat bepaalde wiskundige problemen moeilijk zijn op te lossen. Zo moeilijk dat een supersnelle computer binnen zeg 100 jaar zo’n probleem niet kan oplossen. Een voorbeeld van zo’n probleem is het ontbinden van een getal in priem factoren. Hierop is het RSA public key cryptosysteem gebaseerd.

Rondvraag leverde de volgende argumenten op voor het (gezien bovenstaande) verassende advies om symmetrische cryptografie te verkiezen boven public key cryptografie.

  • Schneier acht het waarschijnlijker dat de wiskundige toptalenten van de NSA een fundamentele wiskundige ontdekkingen doen (of hebben gedaan) waardoor bepaalde publieke cryptosysteem en de onderliggende moeilijke wiskundige problemen helemaal niet zo moeilijk op te lossen zijn, dan dat ze iets gevonden hebben waardoor een symmetrisch cryptosysteem te breken is.
  • Public key cryptografie lost het sleuteldistributie probleem niet echt op. Je moet er namelijk nog voor zorgden dat je de publieke sleutel kent van degene die het bericht moet ontvangen. Om dat probleem op te lossen zijn Certification Authorities (CA) bedacht. Deze geven een certificaten uit waarin staat wat de publieke sleutel van een bepaalde persoon is. De belangrijkste en meest gebruikte CAs zijn Amerikaans. Het is dus een koud kunstje voor de NSA om er voor te zorgen dat de certificaten niet kloppen en je de verkeerde sleutel gebruikt. Die van de NSA. Hier kleeft overigens wel een risico voor de NSA aan: andere partijen kunnen zien dat het certificaat niet klopt. Zo is bijvoorbeeld de Diginotar hack ook ontdekt.
  • Public key cryptosystemen hebben parameters die nog vrij te kiezen zijn die de veiligheid van het systeem behoorlijk kunnen beïnvloeden. Voor sommige systemen is het effect van een bepaalde keuze niet duidelijk. Als een op het oog veilige keuze toch zwakheden introduceert waar de NSA (als enige) van op de hoogte is, dan geeft dit de NSA een manier om het cryptosysteem te kraken. Vaak heeft de NSA direct of indirect invloed op de standaarden waarin bepaalde keuzes voor dergelijke parameters worden vastgelegd. In het geval van Elliptic Curve Cryptografie (ECC) zijn de meest gebruikte curves vastgelegd in Amerikaanse standaarden. Symmetrische cryptosystemen hebben dergelijke parameters niet, behalve een beperkte keuze in de sleutellengte en de blokgrootte.

Ik begrijp het wantrouwen tegen ECC wel. Echter, de zogenaamde discrete log systemen en het op priemfactorisatie gebaseerde RSA hebben een probleem. Er worden steeds snellere algoritmen gevonden die de onderliggende wiskundige problemen kunnen oplossen. Vandaar dat voor RSA een echt veilige sleutel op dit moment al 2048 bits lang moet zijn. Dit is al behoorlijk onwerkbaar groot, en de vraag is wanneer de sleutellengte nog verder verhoogd moet worden.

Met andere woorden: op de vraag of cryptografie nog veilig is, is het ontluisterende antwoord: ja, waarschijnlijk wel, maar we weten het niet zeker, en onze onzekerheid is toch iets toegenomen na de onthullingen van de afgelopen dagen. Helaas bestaat er geen cryptosysteem waarvan we kunnen bewijzen dat deze echt absoluut veilig is.