Perfect forward secrecy

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

(Perfect) forward secrecy (of PFS) is in de cryptografie een eigenschap die er voor zorgt dat in het geval een bepaalde sleutel uit een communicatiekanaal gecompromitteerd wordt, de voorgaande sleutels niet afgeleid kunnen worden. Hierdoor zijn de voorgaande berichten ook niet af te leiden. Een sleutel zou bijvoorbeeld gecompromitteerd kunnen worden indien een rechter beveelt deze af te staan of een aanvaller in een computer inbreekt.

Geschiedenis[bewerken]

PFS werd als eerste geïntroduceerd [1] door Diffie, Van Oorschot en Wiener, en werd gebruikt om een eigenschap van het Station-to-Station protocol (STS) te beschrijven, waarbij de lange-termijn geheimen private keys zijn.

PFS is ook gebruikt [2] om de analoge eigenschap van wachtwoord geauthentiseerde sleutel overeenkomst protocollen te beschrijven, waarbij het lange-termijn geheim een gedeeld wachtwoord is.

Annex D.5.1 van IEEE 1363-2000 bediscussieert de aan elkaar gerelateerde eenpartij- en tweepartijen-forwardsecrecy-eigenschappen van diverse standaardsleutelovereenkomstschema's.

Forward secrecy van een session key[bewerken]

Alice en Bob zijn met elkaar de session key k overeengekomen. Nu willen ze graag forward secrecy over de door hun verstuurde berichten. Ze kiezen er voor om voor het eerste bericht sleutel k te gebruiken, voor het 2e bericht h(k), voor het ne bericht h^n(k). h is een hash functie die aan de volgende eisen voldoet:

One-wayness: Indien k uit te rekenen is uit een gegeven h(k), is het hele systeem onveilig. Alle voorgaande sleutels kunnen dan gewoon uitgerekend worden.

Collision resistance: Je wilt dat er telkens weer unieke nieuwe sleutels uit de hash-functie komen, indien h^x(k) = h^{x+n}(k) blijft de reeks sleutels zich steeds herhalen, je kan dan met h^{x+n+k}(k) behalve bericht x + n + k ook x + k ontsleutelen.

Op deze manier zal de hash-functie telkens een nieuwe sleutel opleveren, vanuit een nieuwe sleutel is de oude niet te berekenen.

Daarnaast is het van belang dat ze de oude sleutel verwijderen, indien ze deze bewaren kan een mogelijk persoon die inbreekt op de computer nog steeds alle sleutels verkrijgen.

Protocollen[bewerken]

IPsec[bewerken]

IPsec heeft PFS als optie, deze maakt gebruik van het OAKLEY sleuteluitwisselingsprotocol (RFC 2412), wat op zijn beurt weer gebruik maakt van het Diffie-Hellman-sleuteluitwisselingsprotocol.

SSH[bewerken]

SSH [3] maakt gebruik van Diffie-Hellman sleutel uitwisselingen die voor PFS zorgen. SSH sessies die resulteren uit een Diffie-Hellman sleutel uitwisseling (RFC 4253) zijn dus veilig, ook als een private key later wordt achterhaald. Echter niet als de sessie key is achterhaald. Gegeven dit heeft SSH perfect forward secrecy.

In het geval dat Diffie-Hellman parameters worden achterhaald kan natuurlijk ook de sessie key achterhaald worden, echter behoren deze gegevens verwijderd te worden nadat de sleutel uitwisseling klaar is. Deze behoren dus niet per ongeluk op een swap schijf opgeslagen te worden.

OpenPGP[bewerken]

OpenPGP stelt gebruikers in staat, veelal via e-mail, veilig te communiceren. Elke gebruiker heeft een private key en een public key die iedereen weet, deze public key is veelal voor lange termijn geldig en te vinden op een website of keyserver. Bij e-mail is het echter een stuk lastiger om forward secrecy te handhaven, aangezien hier geen sprake is van een directe verbinding tussen verzender en ontvanger.

Er bestaat echter wel een draft om PFS toe te voegen aan het protocol.[4] Het idee is dat er keys worden gegenereerd die slechts een beperkte levensduur hebben en deze te groeperen onder een zogenaamde long term signature (lange termijn handtekening). Een verlopen private key dient op het moment dat de levensduur verstreken is verwijderd te worden, anders kan een aanvaller nog steeds alle berichten achterhalen. Het probleem zit er vooral in hoe dit goed, makkelijk en flexibel te beheren is in een mailclient.

Off the Record Messaging[bewerken]

Off-the-Record Messaging, een cryptografisch protocol en bibliotheek voor allerlei instant messaging clients, verschaft perfect forward secrecy evenals deniable encryption. Om PFS te bereiken wordt het Diffie-Hellman-sleuteluitwisselingsprotocol gebruikt.[5]

Transport Layer Security[bewerken]

In theorie kan Transport Layer Security afdoende versleuteling kiezen sinds SSLv3, maar in de alledaagse praktijk weigeren veel implementaties om PFS te verschaffen, of ze verschaffen het enkel met een zeer lage encryptie.[6]

Bronnen, noten en/of referenties
  1. W. Diffie, P.C. van Oorschot & M. Wiener. Authentication and Authenticated Key Exchanges. Designs Codes and Cryptography, 2, 107-125, 1992.
  2. D. Jablon. Strong Password-Only Authenticated Key Exchange. Computer Communication Review, ACM SIGCOMM, vol. 26, no. 5, p. 5-26, oktober 1996.
  3. RFC 4251 sectie 9.3.7
  4. http://www.apache-ssl.org/openpgp-pfs.txt
  5. http://www.cypherpunks.ca/otr/otr-wpes.pdf
  6. Discussion on the TLS mailing list in October 2007