Perfekt framåtriktad sekretess ( PFS [1] ) är en egenskap hos vissa nyckelförhandlingsprotokoll [ som garanterar att sessionsnycklar som erhålls med en långsiktig nyckeluppsättning inte äventyras när en av de långsiktiga nycklarna äventyras.
Termen Forward sekretess används ofta som en synonym för perfekt framåtsekretess [2] , men ibland [3] görs en skillnad mellan de två.
Perfect Forward Secrecy (PFS) innebär att en sessionsnyckel som genereras med hjälp av långtidsnycklar inte kommer att äventyras om en eller flera av dessa långtidsnycklar äventyras i framtiden. För att upprätthålla perfekt sekretess får nyckeln som används för att kryptera de överförda data inte användas för att härleda några ytterligare nycklar. Dessutom, om nyckeln som användes för att kryptera den överförda datan härrörde från något annat nyckelmaterial, får det materialet inte användas för att härleda några andra nycklar. [fyra]
PFS - egenskapen föreslogs [5] av Diffie , van Oorschot och Wiener och hänvisade till STS -protokollet , där privata nycklar är hållbara nycklar. PFS kräver användning av asymmetrisk kryptografi och kan inte implementeras enbart med symmetriska kryptografiska algoritmer.
Termen PFS har också använts [6] för att beskriva en liknande egenskap i lösenordsbaserade nyckelavtalsprotokoll , där den hållbara nyckeln är ett lösenord som båda parter känner till.
Bilaga D.5.1 i IEEE 1363-2000- standarden beskriver de relaterade enpartsframåtriktade sekretessegenskaperna och tvåparts forwardsekretessegenskaper för olika standardsystem för nyckelavtal.
När du använder PFS i TLS kan TLS-sessionsbiljetter ( RFC 5077 ) användas för att återuppta en krypterad session utan att omförhandla nycklar och utan att lagra nyckelinformation på servern. När den första anslutningen öppnas och nycklar skapas, krypterar servern anslutningens tillstånd och skickar det till klienten (i form av en sessionsbiljett ). Följaktligen, när anslutningen återupptas, skickar klienten en sessionsbiljett innehållande bland annat sessionsnyckeln tillbaka till servern. Själva biljetten krypteras med en temporär nyckel ( session ticket key ), som lagras på servern och måste distribueras till alla frontendservrar som hanterar SSL i klustrade lösningar. [10] . Således kan införandet av en sessionsbiljett bryta mot PFS om temporära servernycklar äventyras, till exempel när de lagras under lång tid ( OpenSSL , nginx , Apache lagrar dem som standard under hela tiden programmet körs; populära webbplatser använd nyckeln i flera timmar, upp till dagar). Ett liknande problem finns i TOR för minst ett krypteringslager [11] [12] .
Vissa implementeringar av DH-protokoll (key agreement) väljer för svaga gruppparametrar på serversidan. Till exempel används modulo-restfält ibland med en längd på 256 bitar (avvisas av vissa webbläsare) eller 512 bitar (lätt hackad) [13]