Protokol STS nebo Protokol Station-To-Station ( protokol Station-to-Station , STS ) je šifrovací protokol , který umožňuje dvěma stranám získat sdílený tajný klíč pomocí nechráněného komunikačního kanálu . Výsledný klíč je použit pro další výměnu pomocí symetrického šifrování . Protokol je založen na algoritmu Diffie-Hellman .
Charakteristickým rysem protokolu STS je absence časových razítek a podpora dokonalé vlastnosti dopředného utajení . . Protokol také provádí obousměrné potvrzení klíče [1] , což umožňuje klasifikovat protokol jako „ shoda ověřeného klíče s potvrzením klíče “ (AKC).
STS byl původně představen v roce 1987 v kontextu zabezpečení telefonní sítě ISDN (O'Higgins et al. 1987) [2] , rozšířen v roce 1989 a nakonec představen Whitfieldem Diffiem , Paulem C. van Oorschotem a Michaelem Weinerem ( Michael J. Wiener) v roce 1992. Na základě protokolu STS byl vytvořen protokol IKE , který se stal průmyslovým standardem .
Pro podrobný popis principu fungování zvažte proces výměny informací mezi některými uživateli - Alice a Bob. Předpokládejme, že Alice má certifikovaný veřejný klíč Boba a Bob má certifikovaný veřejný klíč Alice. Oba klíče přitom byly dříve certifikovány důvěryhodnou certifikační autoritou , která není přímo zapojena do procesu. Před spuštěním protokolu musíte provést následující kroky [3] [4] :
Protokol se skládá z následujících kol výměny informací mezi Alicí a Bobem :
1. Alice vybere náhodné číslo x takové, že 2 ≤ x ≤ p-1 a pošle Bobovi zprávu m A = g x mod p
(1) Alice → Bob : m A = g x mod p,2. Bob vybere náhodné číslo y takové, že 2 ≤ y ≤ p-1, vypočítá m B = g y mod p a pomocí přijaté zprávy od Alice vypočítá sdílený tajný klíč K = m A y mod p = g xy mod p. Poté pošle Alici m B a zašifrovanou zprávu EK (Sig B ( m B , m A )), podepsanou jeho elektronickým digitálním podpisem.
(2) Alice ← Bob : m B = g y mod p, EK (Sig B ( m B , m A )),3. Alice podobně vypočítá tajný klíč a dešifruje Bobovu zprávu. Poté ověří Boba ověřením jeho elektronického podpisu a zašle mu jeho zprávu E k (Sig A ( m A , m B )), podepsanou jeho podpisem.
(3) Alice → Bob : E k (Sig A ( m A , m B )),4. Bob obdrží zprávu od Alice, dešifruje ji a zkontroluje podpis od Alice.
Zde Sig A a Sig B jsou digitální podpisy uživatelů Alice a Boba , v tomto pořadí, K = g xy mod p je požadovaný společný klíč.
Použití digitálních podpisů při přenosu zpráv mezi Alicí a Bobem zaručuje [5] pravost přijetí zprávy od uživatele, od kterého měla přijít. Šifrování hodnot uživatelských podpisů pomocí symetrického algoritmu E bylo zavedeno za účelem zajištění vzájemného potvrzení správnosti výpočtu klíče, protože s nesprávně vypočítaným klíčem nelze získat správné hodnoty digitálních podpisů. .
V roce 1994 profesor Oxfordské univerzity Kevin Lowe útok protokol STS [ 6 ] V tomto případě se Eva snaží zjistit korespondenci [7] .
(1) Alice → Eva (Bob): m A = g x mod p, (2) Eva → Bob : m A , (3) Eva ← Bob : m B = g y mod p, EK (Sig B ( m B , m A )), (4) Alice ← Eva (Bob): m B , EK (Sig B ( m B , m A )), (5) Alice → Eva (Bob): EK (Sig A ( m A , m B )).Kryptanalytička Eva, uprostřed mezi Alicí a Bobem, využívá své legitimní výměny názorů s Bobem, aby Alici přesvědčila, že jedná jménem Boba. Relace s Bobem zůstává neúplná, protože Eva, která nezná sdílený tajný klíč, nebude schopna uhodnout správnou odpověď pro Boba. Proto bude jakákoli zpráva od Evy ve třetím kroku odmítnuta. Tento útok nepředstavuje skutečné nebezpečí [4] , protože tajný klíč K zůstává Evě neznámý. V tomto případě si však Alice splete Evu s Bobem. Bob si bude myslet, že vytvořil společný klíč s Evou, ale ve skutečnosti s Alicí. Proto protokol nebude fungovat správně. Následky takového útoku jsou srovnatelné se situací, kdy je Eva pasivní, dokud Alice nepošle poslední zprávu Bobovi. Bob to nemůže přijmout, protože Eva blokuje poslední zprávu. Bob oznámí Alici, že poslední zpráva nebyla přijata. Přestože jeden útok není nebezpečný, skupina útočníků po takovém útoku může drasticky snížit výkon centrálního serveru, protože server bude rezervovat zdroje pro uživatele, jejichž oznámení nepřijde. Za zmínku také stojí, že během takového útoku Eva a její spojenci nepotřebují certifikáty . Tento útok tedy vyžaduje malé množství zdrojů .
V roce 1995 Martin Abadi a Robert Needham navrhli způsob, jak zabránit takovému útoku na server. K tomu stačí předat uživatelské jméno otevřeně [8] .
V roce 2004 Colin Boyd a Wenbo Mao navrhli následující specifikaci protokolu STS [9] :
(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 )kde K 0 = f(k) je klíčový parametr hašovací funkce h K 0 ( m A , m B ), vypočtený jako hodnota nějaké funkce z výsledného klíče relace K = g xy mod p. Modul p a generátor g jsou stále otevřené.
Existuje možnost "bilaterálního neznámého key-share útoku" ( BUKS útok ) [4] V tomto případě se kryptanalytici Eva a Mallory snaží zjistit korespondenci.
(1) Alice → Eva : m A = g x mod p (2) Eva → 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) Eva ← Mallory : m B , h K 0 ( m B , m A ) (6) Alice ← Eva : m B , Sig E ( m B , m A ), h K 0 ( m B , m A ) (7) Alice → Eva : Sig A ( m A , m B ), h K 0 ( m A , m B ) (8) Eva → Mallory : h K 0 ( m A , m B ) (9) Mallory → Bob : Sig M ( m A , m B ), h K 0 ( m A , m B )Výsledkem je, že se Eve a Mallory domluví, že svedou Alici a Boba, kteří vytvořili společný klíč. Zároveň si je Alice jistá, že vytvořila sdílený klíč s Evou, a Bob si je jistý, že vytvořil sdílený klíč s Mallory. .
Pro čistě vzájemnou autentizaci bez generování sdíleného tajemství se používá zjednodušený algoritmus. Implementace vypadá takto [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 )Během útoku Eve, která je legitimním uživatelem systému a vlastní certifikát veřejného klíče , požádá Alici o inicializaci protokolu. Poté vstoupí do rozhovoru s Bobem, představí se jako Alice a použije své jednorázové náhodné číslo. Po obdržení odpovědi od Boba nahradí Eva jeho certifikát a podpis vlastními kopiemi. To vyzve Alici, aby podepsala Bobovu zprávu, což zase umožní Evě Boba oklamat. .
(1) Alice → Eva : m A = g x mod p (2) Eva → Bob : m A (3) Eva ← Bob : m B = g y mod p, Sig B ( m B , m A ) (4) Alice ← Eva : m B = g y mod p, Sig E ( m B , m A ) (5) Alice → Eva : Sig A ( m A , m B ) (6) Eva → Bob : Sig A ( m A , m B )V důsledku toho si Alice myslí, že mluví s Evou, a Bob si myslí, že mluví s Alicí. Tento útok je bezchybný, protože ani Alice ani Bob nic netuší. Je třeba poznamenat, že Eva hraje v tomto útoku velmi aktivní roli: podepíše zprávu vygenerovanou Bobem a přesvědčí Alici, aby ji také podepsala, aby Boba zcela svedla. Pokud by Eva hrála roli obyčejné pasivní pozorovatelky, pak by Alice Bobovu zprávu nikdy nepodepsala a nenechala by se oklamat [7] .
V případech, kdy není možné určit uživatele, od kterého byla zpráva přijata, lze K = g xy použít k vytvoření falešné vložky [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 : SA ( g x , g y ), MAC K ( Sig A ( g x , g y ))