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.

  1. Alice a Bob se dohodnou na prvočíslu p a základním celém číslu g:

    p = 83, g = 8

  2. Alice zvolí tajné celé číslo a = 9 a potom odešle Bobovi (g^a) mod p:

    (8^9) mod 83 = 5

  3. Bob zvolí tajné celé číslo b = 21 a potom odešle Alici (g^b) mod p:

    (8^21) mod 83 = 18

  4. Alice vypočítá ( ( (g^b) mod p)^a) mod p:

    (18^9) mod 83 = 24

  5. 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)

Služby šifrování