Diffie-Hellman

systém je založen na myšlence, že dva partneři mohou společně generovat sdílený klíč bez vetřelce, který poslouchá komunikaci a je schopen ji získat.

pro tento účel jsou vybrána dvě veřejná čísla a každý účastník tajné číslo. Pomocí matematického vzorce, který zahrnuje umocnění, každý účastník provede řadu operací se dvěma veřejnými čísly a jejich tajným číslem. Poté si partneři veřejně vymění výsledky. Teoreticky je obrácení této funkce stejně obtížné jako výpočet diskrétního logaritmu (sextillion krát dražší než umocnění použité k transformaci čísel). Proto se říká, že toto číslo je výsledkem použití jednosměrné funkce na tajné číslo.

pak oba partneři Samostatně používají matematický vzorec, který kombinuje dvě transformovaná čísla s jejich tajným číslem a nakonec oba dorazí na stejné číslo výsledku, což bude sdílený klíč.

podrobný popiseditovat

Diffie-Hellman.

pro dvě strany Alice a Bob, kteří se snaží vytvořit tajný klíč, a protivníka Mallory, základní verze je následující:

  • nastavit bratranec p {\displaystyle p}
    p

    a generátor g ∈ Z p {{\displaystyle g \ in \ mathbf {Z} _{p}^{*}}

    g\v {\mathbf {Z}} _ {{p}}^{{*}}

    (). Ty jsou veřejné, známé nejen stranám Alice a Bob, ale i protivníkovi Mallory.

  • Alice si vybere ∈ Z p-1 {\displaystyle A\in \ mathbf {Z} _{p-1}}
    to\in {\mathbf {Z}} _ {{p-1}}

    namátkou vypočítá a = g a mod p {\displaystyle A=G^{a}\; {\bmod {\;}} p}

    A=G^{{to}}\; {\bmod \;}p

    a odešle {\displaystyle A}

     na

    Bob

  • Bob vybere b Z Z p-1 {\displaystyle b \ in \ mathbf {Z} _{p-1}}
    b\v {\mathbf {Z}}_{{p-1}}

    random vypočítá b = g b mod p {\displaystyle B=G^{b}\;{\bmod {\;}}p}

    B=g^{{b}}\;{\bmod \;}p

    a odešle B {\displaystyle B}

    B

    Alice

Všimněte si , že A I B lze vypočítat pomocí hodnota K = g ⋅ b mod p {\displaystyle K=G^{A\cdot B}\;{\bmod {\;}}p}

k=g^{{A\cdot B}}\;{\bmod \;}p

. En efecto, lo podemos demostrar usando las propiedades del grupo Z p ∗ {\displaystyle \mathbf {Z} _{p}^{*}}

{\mathbf {Z}}_{{p}}^{{*}}

: Para Alice: B a mod p = ( g b mod p ) a mod p = ( ( g b mod p ) ( g b mod p ) ⋯ ( g b mod p ) ⏞ a ) mod p = g b ⋅ a mod p = g a ⋅ b mod p = K {\displaystyle B^{a}\;\;{\bmod {\;}}\;p=(g^{b}\;{\bmod {\;}}p)^{a}\;{\bmod {\;}}p=(\overbrace {(g^{b}\;{\bmod {\;}}p)(g^{b}\;{\bmod {\;}}p)\cdots (g^{b}\;{\bmod {\;}}p)} ^{a})\;{\bmod {\;}}p=g^{b\cdot a}\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

B^{{a}}\;\;{\bmod \;}\;p=(g^{b}\;{\bmod \;}p)^{a}\;{\bmod \;}p=(\overbrace {(g^{b}\;{\bmod \;}p)(g^{b}\;{\bmod \;}p)\cdots (g^{b}\;{\bmod \;}p)}^{a})\;{\bmod \;}p=g^{{b\cdot a}}\;{\bmod \;}p=g^{{a\cdot b}}\;{\bmod \;}p=K

Para Bob: A b mod p = ( g a mod p ) b mod p = ( ( g a mod p ) ( g a mod p ) ⋯ ( g a mod p ) ⏞ b ) mod p = g a ⋅ b mod p = K {\displaystyle A^{b}\;{\bmod {\;}}p=(g^{a}\;{\bmod {\;}}p)^{b}\;{\bmod {\;}}p=(\overbrace {(g^{a}\;{\bmod {\;}}p)(g^{a}\;{\bmod {\;}}p)\cdots (g^{a}\;{\bmod {\;}}p)} ^{b})\;{\bmod {\;}}p=g^{a\cdot b}\;{\bmod {\;}}p=K}

A^{{b}}\;{\bmod \;}p=(g^{a}\;{\bmod \;}p)^{b}\;{\bmod \;}p=(\overbrace {(g^{a}\;{\bmod \;}p)(G^{a}\;{\bmod \;}p)\cdots (g^{a}\;{\bmod \;}p)}^{b})\;{\bmod \;}p=G^{{A\cdot b}}\;{\bmod \;}p=K

protože obě strany mohou vypočítat K {\displaystyle K}

k

, pak jej můžeme použít jako sdílený klíč.

attacksEdit

pasivní attacksEdit

Mallory protivník, vlastnící p, g, A A B, mohl vypočítat sdílené tajemství, pokud měl také jednu ze soukromých hodnot (a nebo b). Získat a nebo b Z A nebo B reverzní funkce ( a = l o g D i s c p ⁡ (A ) {\displaystyle A=\operatorname {log\;disc} _{p} (a)}

a=\operatorname {log\; disc}_{p}(a)

a b = l o g D i s c p ⁡ (B) {\displaystyle b= \ operatorname {log\; disc} _{p} (B)}

b= \ operatorname {log\;disk} _ {p} (B)

) je problém diskrétního logaritmu v Z p ∗ {\displaystyle \ mathbf {Z} _{p}^{*}}

{\mathbf {Z}} _ {{p}}^{{*}}

, problém, který je považován za neřešitelný výpočetně, kdykoli p je prvočíslo větší než 200 nebo více číslic, a které nesplňují určité vlastnosti oslabující.

aktivní útokyeditovat

protokol je citlivý na aktivní útoky typu Man-in-the-middle. Pokud je komunikace zachycena třetí stranou, může být předána jako odesílatel směřující k příjemci a naopak, protože není k dispozici žádný mechanismus pro ověření totožnosti účastníků komunikace. “Muž uprostřed” se tak mohl s každým účastníkem dohodnout na klíči a předat data mezi nimi a poslouchat konverzaci v obou směrech. Jakmile je symetrická komunikace navázána, musí útočník pokračovat v zachycení a úpravě provozu uprostřed tak, aby si toho nevšiml. Všimněte si, že aby byl útok funkční, musí útočník znát metodu symetrického šifrování, která bude použita. Spoléhání se na utajení symetrického šifrovacího algoritmu není v souladu se zásadami Kerckhoffs (účinnost systému by neměla záviset na jeho návrhu zbývající tajemství).

Man-in-the-middle útok na Diffie-Hellman.

aby se zabránilo tomuto typu útoku, obvykle se používá jedna nebo více z následujících technik:

  • kontrola času.
  • předběžná autentizace stran. Například použití při ověřování protokolu podkladové vrstvy. Nejprve bychom mohli navázat spojení TLS a použít Diffie-Hellmanův algoritmus na této vrstvě.
  • autentizace obsahu. Například bychom mohli použít MAC nad obsahem zpráv.
  • šifrování veřejných klíčů (Asymetrickým) algoritmem veřejného klíče, vyhýbání se problému Man-in-the-middle a kontrola, zda je veřejný klíč jiný než 0 a 1.
  • pomocí třetí strany (Carol), se kterou Alice nebo Bob udržují bezpečný kanál. Tato třetí strana může detekovat man-in-the-middle

, pokud Alice nebo Bob jsou poslouchány / modifikovány, jednoduše tím, že napadne oba na test, což znamená v uvedeném testu veřejný klíč otro.Si Mallory zkresluje komunikaci Alice-Bob, a také Alice-Carol, nemůže zkreslit bezpečný kanál Bob-Carol a bude detekován.A pokud zkresluje Alice-Bob a Bob-Carol, nemůže zkreslit Alice-Carol (podle definice musí existovat nějaký bezpečný kanál mezi dvěma ze tří, i když další dva kanály jsou zkresleny Mallory). To znamená, že metoda Diffie-Hellman může vytvořit 100% zabezpečené sítě s více uzly, počínaje již dvěma dříve zabezpečenými uzly. Tato metoda se také používá k testování kanálů, u kterých je podezření, že jsou nebezpečné.

EjemploEditar

→ {\displaystyle \ rightarrow }

\rightarrow

← {\displaystyle \leftarrow }

\leftarrow

=

Alice
sek Calc
p, g
a
ga mod p
(gb mod p) a mod p
vše
Calc sek
p, g
b
CZ mod p
(ga mod p) b mod p
  1. Alice a Bob souhlasí, že použijí prvočíslo p=23 a základ g=5.
  2. Alice vybere tajné číslo a=6, poté odešle Bob (ga mod p)
    • 56 mod 23 = 8.
  3. Bob si vybere tajné číslo b=15, poté odešle Alice (gb mod p)
    • 515 mod 23 = 19.
  4. Alice počítá (gb mod p) do mod p
    • 196 mod 23 = 2.
  5. Bob počítá (ga mod p) b mod p
    • 815 mod 23 = 2.

příklad s implementací šifrováníedit

potřeba tohoto příkladu je: Bob potřebuje poslat šifrovací text Alici, ale bez sdílení šifrovacího klíče. Jak to dělá?

  1. Alice zvolí tajné číslo a=6, prvočíslo p=23 a základ g=5. Poté odešle veřejný klíč Boba Alice (ga mod p), p a g:
    • 56 mod 23 = 8.
    • 23
    • 5
  2. Bob vybere tajné číslo b=15, pak Bob vypočítá společný šifrovací klíč (ga mod p)b mod p
    • 815 mod 23 = 2.
  3. Bob šifruje pomocí symetrické šifry, jako je AES, prostý text pomocí vygenerovaného šifrovacího klíče.
  4. šifrovaný text = symetrická šifra (prostý text, 2)
  5. Bob odešle Alice šifrovaný text a Bobův veřejný klíč (gb mod p)
    • 515 mod 23 = 19.
    • šifrovaný text
  6. Alice počítá (gb mod p) do mod p
    • 196 mod 23 = 2.
  7. Alice používá vygenerovaný šifrovací klíč k dešifrování dat odeslaných Bobem
  8. Cleartext = Symmetric Decryptor (šifrovaný text, 2 )

k tomu, aby byl tento příklad Bezpečný, by byly zapotřebí mnohem větší hodnoty a, b A p. Protože je velmi jednoduché otestovat všechny možné hodnoty gab mod 23 (bude maximálně 22 hodnot, i když a A b jsou velká čísla).

je zřejmé, že Alice potřebuje poslat Bobovi šifrované informace, které jsou také pokryty implementací.

Leave a Reply