A tökéletes továbbítási titkosság ( PFS [1] ) néhány kulcstárgyalási protokoll tulajdonsága , amely garantálja, hogy a hosszú távú kulcskészlettel megszerzett munkamenetkulcsok nem sérülnek , ha valamelyik hosszú távú kulcsot sértik.
A Forward secrecy kifejezést gyakran a tökéletes továbbítási titok szinonimájaként használják [2] , de néha [3] különbséget tesznek a kettő között.
A Perfect Forward Secrecy (PFS) azt jelenti, hogy a hosszú távú kulcsokkal előállított munkamenet-kulcs nem sérül, ha egy vagy több ilyen hosszú távú kulcsot a jövőben feltörnek. A tökéletes továbbítási titok megtartása érdekében a továbbított adatok titkosításához használt kulcsot nem szabad további kulcsok származtatására használni. Továbbá, ha a továbbított adatok titkosításához használt kulcs valamilyen más kulcsanyagból származott , ezt az anyagot nem szabad felhasználni más kulcsok származtatására. [négy]
A PFS tulajdonságot Diffie , van Oorschot és Wiener javasolta [5] , és az STS protokollra hivatkozott , amelyben a privát kulcsok tartós kulcsok. A PFS aszimmetrikus kriptográfia használatát igényli, és nem valósítható meg kizárólag szimmetrikus kriptográfiai algoritmusokkal.
A PFS kifejezést [6] is használták egy hasonló tulajdonság leírására a jelszó alapú kulcsszerződési protokollokban , amelyekben a tartós kulcs mindkét fél által ismert jelszó.
Az IEEE 1363-2000 szabvány D.5.1. függeléke leírja a különböző szabványos kulcsmegállapodási sémák kapcsolódó egyoldalú és kétoldalú továbbítási titkossági tulajdonságait .
Ha PFS-t használ a TLS-ben, a TLS-munkamenetjegyek ( RFC 5077 ) használhatók a titkosított munkamenet folytatásához a kulcsok újratárgyalása és a kulcsinformációk szerveren való tárolása nélkül. Az első kapcsolat megnyitásakor és a kulcsok létrehozásakor a szerver titkosítja a kapcsolat állapotát és elküldi a kliensnek ( munkamenetjegy formájában ). Ennek megfelelően, amikor a kapcsolat újraindul, a kliens egy munkamenet jegyet küld vissza a szervernek, amely többek között a session kulcsot tartalmazza. Maga a jegy egy ideiglenes kulccsal ( session ticket key ) van titkosítva, amelyet a szerver tárol, és el kell juttatni minden olyan frontend szerverhez, amely fürtözött megoldásokban kezeli az SSL-t. [10] . Így a munkamenetjegy bevezetése sértheti a PFS-t, ha az ideiglenes szerverkulcsok sérülnek, például ha hosszú ideig tárolják őket ( az OpenSSL , nginx , Apache alapértelmezés szerint a program teljes futási idejére tárolja őket; népszerű webhelyek használja a kulcsot több órán keresztül, akár napokig). Hasonló probléma van a TOR-ban legalább egy titkosítási réteg esetében [11] [12] .
A kulcsszerződéses (DH) protokollok egyes megvalósításai túl gyenge csoportparamétereket választanak a szerver oldalon. Például a modulo maradék mezőket néha 256 bites (egyes webböngészők által elutasított) vagy 512 bites (könnyen feltörhető) hosszúsággal [13] használják.