Přehled algoritmu ECDH (příklad Kryptografické služby nové generace (CNG))
Protokol pro dohodnutí klíčů Elliptic Curve Diffie-Hellman (ECDH) umožňuje dvěma uživatelům vytvořit sdílenou tajnou smlouvu. Tohle mohou udělat přes nezabezpečené, veřejné médium, aniž by si předtím vyměňovali nějaké soukromé informace. Sdílená tajná smlouva se obvykle používá k odvození materiálu klíče. Symetrický algoritmus, jako je například algoritmus standardu AES může použít materiál klíče k zašifrování dalších zpráv.
Příklad zabezpečené komunikace Kryptografické služby nové generace (CNG) ukazuje CNG implementaci pomocí obou algoritmů (AES i ECDH). Alice, Bob a Mallory vytváří kryptografické klíče ve svých metodách Run při vytváření objektů Communicator.
Matematika algoritmu ECDH
Protokol ECDH závisí na dvou veřejných parametrech: p a g. Parametr p je velké prvočíslo a parametr g je celé číslo, které je menší než p. Tyto dva parametry jsou vyměňovány prostřednictvím nezabezpečené linky. Poté, co Alice i Bob obdrží dva veřejné parametry, mohou vybrat soukromá celá čísla. Alice zvolí a, a Bob zvolí. b. Tyto hodnoty jsou označovány jako soukromé klíče.
Alice a Bob potom vytvoří veřejné klíče pomocí veřejných parametrů a svých soukromých klíčů. Alice používá (g^a) mod p a Bob používá (g^b) mod p. Tohle jsou asymetrické klíče, protože nejsou shodné.
Alice a Bob si vymění tyto veřejné klíče a použijí je k výpočtu jejich sdílené tajné smlouvy. Matematika ECDH zaručuje, že Alice i Bob vypočítá stejnou sdílenou tajnou smlouvu, i když navzájem neznají svoje soukromé klíče.
Poznámka
Pouze a, b a g^ab = g^ba jsou tajně zachovány.Všechny ostatní hodnoty jsou veřejné.
Každý, kdo zachytí výměnu budete moci kopírovat p, g a oba veřejné klíče. Nicméně je výpočetně neproveditelné generovat sdílenou tajnou smlouvu ze čtyř veřejně sdílených hodnot bez znalosti soukromých klíčů od Alice a Boba.
Dešifrování zpráv šifrovaných pomocí ECDH hrubou silou (to znamená zkoušením všech možných klíčů) má stejnou složitost jako problém diskrétního logaritmu. Algoritmus ECDH však dosahuje stejného stupně zabezpečení s kratší délkou klíče, protože se spoléhá na eliptické křivky místo logaritmických křivek.
ECDH příklad
V následujícím příkladu jsou k demonstraci algoritmu ECDH použita malá celá čísla.
Alice a Bob se dohodnou na prvočíslu p a základním celém číslu g:
p = 83, g = 8
Alice zvolí tajné celé číslo a = 9 a potom odešle Bobovi (g^a) mod p:
(8^9) mod 83 = 5
Bob zvolí tajné celé číslo b = 21 a potom odešle Alici (g^b) mod p:
(8^21) mod 83 = 18
Alice vypočítá ( ( (g^b) mod p)^a) mod p:
(18^9) mod 83 = 24
Bob vypočítá ( ( (g^a) mod p)^b) mod p:
(5^21) mod 83 = 24
Alice a Bob vypočítají stejnou hodnota (24), protože g^(ab) = g^(ba). Tato hodnota je sdílená tajná smlouva. Alice a Bob použijí tuto hodnotu k odvození materiálu klíče, který je použit algoritmem AES k šifrování jejich zpráv.
Tento příklad generuje sdílenou tajnou smlouvu s hodnotou 24. Protože to je malá hodnota, produkovala by šifrovanou zprávu, která by mohla být snadno prolomena pomocí útoku hrubou silou. V případě skutečného scénáře by p, g, a a b byla mnohem větší čísla a počítač by vyžadoval vygenerování odpovídající sdílené tajné smlouvy.
Třídy Kryptografické služby nové generace (CNG) použité v příkladu zabezpečené komunikace abstrahují komplexní matematiku. Umožňují vám soustředit se na implementování řešení zabezpečení místo toho, abyste se obtěžovali s násobením velkých čísel.
Omezení protokolu
Protokol pro výměnu klíčů ECDH nezabrání útokům prostředníkem (man-in- the-middle), protože neověřuje odesílatele veřejných klíčů. Pokud naslouchač Mallory, odposlouchává veřejný klíč od Alice, může ho nahradit vlastním veřejným klíčem a odeslat ho Bobovi. Mallory také může odposlouchávat Bobův veřejný klíč, nahradit ho vlastním a odeslat ho Alici. Mallory poté může snadno dešifrovat libovolné zprávy odeslané mezi Alicí a Bobem. Může změnit zprávy, znovu je zašifrovat s vlastními klíči a poté je odeslat příjemcům.
Chcete-li vyřešit tento problém, můžou Alice a Bob než si vymění veřejné klíče použít digitální podpisy k jejich podepsání. Lze to provést dvěma způsoby:
Použijte zabezpečené médium pro přenos klíče digitálního podpisu mezi dvěma stranami, například hlasová komunikace nebo důvěryhodný kurýr.
Použijte veřejnou certifikační autorita (CA), aby vám pro obě strany poskytla důvěryhodný klíč digitálního podpisu.
V obou případech je nutné použít k ověření identity odesílatelů veřejného klíče externí schéma ověření. Příklad Kryptografické služby nové generace (CNG) ukazuje, co se může stát, pokud odesílatelé klíče nejsou ověřeni. Je výslovně napsán k tomu, aby povolil zneužít zabezpečení.
Symetrické a asymetrické klíče
Asymetrické systémy jako je ECDH jsou velmi pomalé. Proto nejsou používány k šifrování velkých zpráv. Místo toho se používají symetrické systémy, jako je například standard AES, které jsou mnohem rychlejší.
Typické kryptografické řešení používá asymetrický systém k odvození symetrické, sdílené tajné smlouvy. Sdílená tajná smlouva se pak používá k odvození materiálu klíče, který je používán symetrickým algoritmem k šifrování zpráv.
Příklad zabezpečené komunikace Kryptografické služby nové generace (CNG) modeluje toto chování takto:
K odvození symetrického šifrovacího klíče (sdílené tajné smlouvy) používá asymetrický algoritmus a implementaci Kryptografické služby nové generace (CNG) algoritmu ECDH (třída ECDiffieHellmanCng).
Tento klíč je poté použit metodou Kryptografické služby nové generace (CNG) ECDiffieHellmanCng.DeriveKeyMaterial k odvození materiálu klíče. CNG implementace symetrického AES algoritmu (třída Aes) používá materiál klíče k šifrování zpráv.
Viz také
Koncepty
Příklad zabezpečené komunikace Kryptografické služby nové generace (CNG)