Protokół Diffiego-Hellmana w przestrzeni krzywych eliptycznych

Z Wikipedii, wolnej encyklopedii

Krzywa eliptyczna Diffiego-Hellmana (ang. Elliptic curve Diffie-Hellman – ECDH) – anonimowy protokół uzgadniania kluczy. Pozwala on obu stronom (gdzie każda z nich posiada parę kluczy: prywatnego i publicznego, opartych na krzywych eliptycznych) na przesyłanie danych niejawnych poprzez niezabezpieczony kanał[1][2][3]. Dane te mogą zostać bezpośrednio użyte jako klucz, lub też można wydzielić z nich inne klucze. Mogą one następnie zostać użyte do odszyfrowania kolejnych transmisji za pomocą algorytmu symetrycznego. Jest to odmiana protokołu Diffiego-Hellmana wykorzystująca kryptografię krzywych eliptycznych.

Protokół ustanawiania kluczy[edytuj | edytuj kod]

Przypuśćmy, że Alicja chce ustanowić klucz, który będzie udostępniony Bobowi, lecz komunikacja na jedynym dostępnym kanale może być podsłuchana przez osobę trzecią. Początkowo należy uzgodnić główne parametry (w zależności od przypadku, może to być zbiór lub ). Ponadto każda strona musi posiadać parę kluczy, którą można zastosować w kryptografii krzywych eliptycznych, składającą się z klucza prywatnego (losowo wybrana liczba całkowita z przedziału ) oraz klucza publicznego (gdzie ). Niech Alicja posiada parę kluczy a Bob posiada parę Przed wykonaniem protokołu każda ze stron musi znać klucz publiczny tej drugiej.

Alicja oblicza Bob oblicza Udostępnione tajne dane to Większość standaryzowanych protokołów bazujących na ECDH uzyskiwało klucz symetryczny z za pomocą niektórych odmian funkcji skrótu.

Udostępnione tajne dane, obliczone przez obie strony, są zgodne, ponieważ

Jedyną informacją o prywatnym kluczu Alicji jest jej klucz publiczny. Zatem nikt poza Alicją nie może obliczyć jej klucza prywatnego, o ile inna strona nie rozwiąże logarytmu dyskretnego krzywej eliptycznej. Klucz prywatny Boba jest zabezpieczony analogicznie. Nikt – poza Alicją lub Bobem – nie odszyfruje udostępnionych pomiędzy nimi danych, o ile intruz nie rozwiąże tzw. problemu Diffiego-Hellmana.

Klucze publiczne są albo statyczne (i zaufane, np. poprzez certyfikat) albo efemeryczne (ECDHE). Tego typu klucze są tymczasowe i nie zawsze następuje ich uwierzytelnienie. Jeśli więc ten proces jest pożądany, zapewnienie autentyczności musi zostać uzyskane innymi środkami. Uwierzytelnienie jest niezbędne w celu uniknięcia ataków typu man in the middle. Jeżeli jeden z kluczy publicznych – Alicji lub Boba – jest statyczny, wówczas wspomniane ataki zostaną udaremnione. W przeciwieństwie do innych zaawansowanych właściwości zabezpieczających, statyczne klucze publiczne nie zapewniają ani utajniania z wyprzedzeniem, ani odporności na ataki na wiarygodność klucza. Właściciele statycznych kluczy prywatnych powinni dokonywać walidacji kluczy publicznych innych stron, a także zastosować bezpieczną funkcję wyprowadzania klucza w stosunku do „surowych” danych Diffiego-Hellmana. Wówczas można uniknąć przecieku informacji o statycznym kluczu prywatnym.

O ile udostępnione tajne dane mogą być używane bezpośrednio w roli klucza, często pożądane jest stosowanie na nich funkcji skrótu w celu usunięcia tzw. słabych bitów, występujących w protokole Diffiego-Hellmana[4].

Przypisy[edytuj | edytuj kod]

  1. NIST, Special Publication 800-56A, Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography, Marzec, 2006.
  2. Certicom Research, Standards for efficient cryptography, SEC 1: Elliptic Curve Cryptography, Wersja 2.0, 21 maja 2009.
  3. NSA Suite B Cryptography, Suite B Implementers’ Guide to NIST SP 800-56A, 28 lipca, 2009.
  4. Laurie Law i inni, An Efficient Protocol for Authenticated Key Agreement, Certicom, 28 sierpnia 1998 [dostęp 2014-12-16].