Az STS protokoll vagy az Station-to-Station Protocol ( Station-to-Station Protocol , STS ) egy kriptográfiai protokoll , amely lehetővé teszi két fél számára, hogy megosztott titkos kulcsot szerezzenek egy nem védett kommunikációs csatorna használatával . Az így kapott kulcsot a további cseréhez használják szimmetrikus titkosítással . A protokoll a Diffie-Hellman algoritmuson alapul .
Az STS protokoll megkülönböztető jellemzője az időbélyegek hiánya és a tökéletes továbbítási titkosság támogatása. . A protokoll kétirányú kulcsmegerősítést is végez [1] , amely lehetővé teszi a protokoll besorolását „ hitelesített kulcsszerződés kulcs megerősítéssel ” (AKC) kategóriába.
Az STS-t eredetileg 1987-ben vezették be az ISDN telefonhálózat biztonságának kontextusában (O'Higgins et al. 1987) [2] , 1989-ben bővítették ki, végül Whitfield Diffie , Paul C. van Oorschot és Michael Weiner (Michael ) vezette be. J. Wiener) 1992-ben. Az STS protokoll alapján létrejött az IKE protokoll , amely iparági szabvánnyá vált .
A működési elv részletes leírásához vegye figyelembe az egyes felhasználók – Alice és Bob – közötti információcsere folyamatát . Tegyük fel, hogy Alice rendelkezik Bob hitelesített nyilvános kulcsával, Bob pedig Alice hitelesített nyilvános kulcsával. Ugyanakkor mindkét kulcsot korábban egy megbízható tanúsító hatóság hitelesítette , amely nem vesz részt közvetlenül a folyamatban. A protokoll elindítása előtt a következő lépéseket kell végrehajtania [3] [4] :
A protokoll a következő információcsere fordulóiból áll Alice és Bob között :
1. Alice kiválaszt egy véletlenszerű x számot, amelyre 2 ≤ x ≤ p-1, és küld Bobnak egy üzenetet m A = g x mod p
(1) Alice → Bob : m A = g x mod p,2. Bob választ egy véletlenszerű y számot úgy, hogy 2 ≤ y ≤ p-1, kiszámítja m B = g y mod p értéket, és az Alice-től kapott üzenet alapján kiszámítja a megosztott titkos kulcsot K = m A y mod p = g xy mod p. Ezután elküldi Alice m B -t és egy E K titkosított üzenetet (Sig B ( m B , m A )), amelyet elektronikus digitális aláírásával írnak alá.
(2) Alice ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )),3. Alice hasonló módon kiszámítja a titkos kulcsot, és visszafejti Bob üzenetét. Ezután hitelesíti Bobot az elektronikus aláírásának ellenőrzésével, és elküldi neki az aláírásával aláírt E k üzenetét (Sig A ( m A , m B )).
(3) Alice → Bob : E k (Sig A ( m A , m B )),4. Bob megkapja az üzenetet Alice-től, dekódolja és ellenőrzi Alice aláírását.
Itt Sig A és Sig B az Alice és Bob felhasználók digitális aláírása , K = g xy mod p a szükséges közös kulcs.
A digitális aláírások használata az Alice és Bob közötti üzenetek továbbításakor garantálja [5] az üzenet hitelességét attól a felhasználótól, akitől annak érkeznie kellett volna. A felhasználói aláírások értékeinek titkosítását egy szimmetrikus E algoritmussal vezették be annak érdekében, hogy biztosítsák a kulcsszámítás helyességének kölcsönös megerősítését, mivel lehetetlen a digitális aláírások helyes értékeit megszerezni egy helytelenül kiszámított kulccsal. .
1994- ben az Egyetem professzora, Kevin Lowe hajtott végre az STS protokoll ellen [6] Ebben az esetben Éva megpróbálja kideríteni a levelezést [7] .
(1) Alice → Éva (Bob) : m A = g x mod p, (2) Éva → Bob : m A , (3) Éva ← Bob : m B = g y mod p, E K (Sig B ( m B , m A )), (4) Alice ← Éva (Bob) : m B , E K (Sig B ( m B , m A )), (5) Alice → Eve(Bob) : E K (Sig A ( m A , m B )).A kriptoanalitikus Eve, aki Alice és Bob között áll, a Bobbal folytatott jogos eszmecserét használja fel, hogy meggyőzze Alice-t arról, hogy Bob nevében cselekszik. A Bobbal folytatott munkamenet továbbra is hiányos, mert Eve, mivel nem ismeri a megosztott titkos kulcsot, nem fogja tudni kitalálni a helyes választ Bob számára. Ezért a harmadik lépésben Éva minden üzenete elutasításra kerül. Ez a támadás nem jelent valós veszélyt [4] , mivel a K titkos kulcs ismeretlen marad Éva számára. Azonban ebben az esetben Alice összetéveszti Eve-t Bobbal. Bob azt fogja hinni, hogy Eve-vel közös kulcsot alakított ki, de valójában Alice-szel. Így a protokoll nem fog megfelelően működni. Egy ilyen támadás következményei hasonlóak ahhoz a helyzethez, amikor Eve passzív, amíg Alice el nem küldi az utolsó üzenetet Bobnak. Bob nem tudja fogadni, mert Eve blokkolja az utolsó üzenetet. Bob értesíti Alice-t, hogy az utolsó üzenet nem érkezett meg. Bár egyetlen támadás nem veszélyes, a támadók egy csoportja azonban egy ilyen támadást végrehajtva drasztikusan csökkentheti a központi szerver teljesítményét, mivel a szerver lefoglalja az erőforrásokat azon felhasználók számára, akiknek nem érkezik meg az értesítése. Azt is érdemes megjegyezni, hogy egy ilyen támadás során Évának és szövetségeseinek nincs szüksége igazolásra . Tehát ez a támadás kis mennyiségű erőforrást igényel .
1995-ben Martin Abadi és Robert Needham javasolta a szervert ért ilyen támadások megakadályozásának módját. Ehhez elég nyíltan átadni a felhasználónevet [8] .
2004-ben Colin Boyd és Wenbo Mao a következő specifikációt javasolta az STS [9] protokollhoz :
(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod p, Sig B ( m B , m A ), h K 0 ( m B , m A ) (3) Alice → Bob : Sig A ( m A , m B ), h K 0 ( m A , m B )ahol K 0 = f(k) a h K 0 ( m A , m B ) hash függvény kulcsparamétere , amelyet valamilyen függvény értékeként számítunk ki a kapott K = g xy mod p munkamenetkulcsból. A p modul és a g generátor még nyitva van.
Lehetőség van egy "kétoldalú ismeretlen kulcsmegosztási támadásra" ( BUKS támadás ) [4] Ebben az esetben Eva és Mallory kriptoanalitikusok próbálják kideríteni a levelezést.
(1) Alice → Eve : m A = g x mod p (2) Eve → Mallory : m A (3) Mallory → Bob : m A (4) Mallory ← Bob : m B = g y mod p, Sig B ( m B , m A ), h K 0 ( m B , m A ) (5) Éva ← Mallory : m B , h K 0 ( m B , m A ) (6) Alice ← Eve : m B , Sig E ( m B , m A ), h K 0 ( m B , m A ) (7) Alice → Eve : Sig A ( m A , m B ), h K 0 ( m A , m B ) (8) Eve → Mallory : h K 0 ( m A , m B ) (9) Mallory → Bob : Sig M ( m A , m B ), h K 0 ( m A , m B )Ennek eredményeként Eve és Mallory összejátszva félrevezetik Alice-t és Bobot, akik közös kulcsot alkottak. Ugyanakkor Alice biztos abban, hogy Eve-vel közös kulcsot alakított ki, Bob pedig abban, hogy Malloryval közös kulcsot alakított ki. .
Egy egyszerűsített algoritmust használnak a tisztán kölcsönös hitelesítéshez, megosztott titok generálása nélkül. A megvalósítás így néz ki [10] :
(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod p, Sig B ( m B , m A ) (3) Alice → Bob : Sig A ( m A , m B )A támadás során Eve, aki a rendszer jogos felhasználója, és nyilvános kulcsú tanúsítvánnyal rendelkezik , megkéri Alice-t, hogy inicializálja a protokollt. Ezt követően beszélgetésbe kezd Bobbal, Alice néven mutatkozik be, és az egyszeri véletlenszámát használja. Miután megkapta a választ Bobtól, Eve a tanúsítványát és az aláírását saját másolataival helyettesíti. Ez arra készteti Alice-t, hogy írja alá Bob üzenetét, ami viszont lehetővé teszi Eve-nek, hogy becsapja Bobot. .
(1) Alice → Eve : m A = g x mod p (2) Éva → Bob : m A (3) Éva ← Bob : m B = g y mod p, Sig B ( m B , m A ) (4) Alice ← Eve : m B = g y mod p, Sig E ( m B , m A ) (5) Alice → Eve : Sig A ( m A , m B ) (6) Eve → Bob : Sig A ( m A , m B )Ennek eredményeként Alice azt hiszi, hogy Évával beszél, Bob pedig azt hiszi, hogy Alice-szel beszél. Ez a támadás hibátlan, mert sem Alice, sem Bob nem sejt semmit. Meg kell jegyezni, hogy Eve nagyon aktív szerepet játszik ebben a támadásban: aláírja a Bob által generált üzenetet, és meggyőzi Alice-t, hogy írja alá, hogy teljesen félrevezesse Bobot. Ha Eve egy közönséges passzív megfigyelő szerepét játszotta volna, akkor Alice soha nem írta volna alá Bob üzenetét, és nem hagyta volna magát megtéveszteni [7] .
Azokban az esetekben, amikor nem lehet meghatározni, hogy kitől kapta az üzenetet, a K = g xy használható hamis betét létrehozására [11] :
(1) Alice → Bob : m A = g x mod p (2) Alice ← Bob : m B = g y mod , Sig B ( m B , m A ), MAC K ( Sig B ( g y , g x )) (3) Alice → Bob : S A ( g x , g y ), MAC K ( Sig A ( g x , g y ))