Kryptografia krzywych eliptycznych (ECC)
ECC opisuje zestaw współczesnych algorytmów asymetrycznych.
- Charakterystyka ECC
- Krzywa eliptyczna
- Materiały wyjaśniające
- Schemat działania
- Szyfrowanie
- Deszyfrowanie
Charakterystyka ECC
- Względnie wysoka wydajność obliczeniowa
- Krótkie klucze w porównaniu do RSA
- Wysokie bezpieczeństwo
Krzywa eliptyczna
W kryptografii stosujemy postać Weierstrassa
Materiały wyjaśniające
- Elliptic Curves - Computerphile - polecanko
- Obszerny artykuł - tutaj jest wszystko ale za długie żeby czytać
Schemat działania
- Wybieramy dużą liczbę pierwszą p (tu przykład )
- Dla wybranych parametrów krzywej eliptycznej a i b definiujemy skończone ciało p punktów leżących na krzywej
- Każdy punkt w wybranym ciele ma całkowite x i y z zakresu od 0 do p-1
- Działania na elementach tego ciała realizowane są w arytmetyce modulo p
- Tworzymy krzywą oraz nałożone na nią skończone ciało składające się z punktów o współrzędnych całkowitych

- Wybieramy punkt w zaprojektowanym ciele (tzw. generator)
- Wybieramy liczbę całkowitą d z zakresu .
- Obliczamy - będzie to również punkt w ciele
- Wyróżniamy klucz prywatny oraz publiczny
Szyfrowanie
- Alice chce przesłać bezpiecznie wiadomość (W), którą reprezentuje jako punkt na krzywej.
O co chodzi z tym że wiadomość jest punktem na krzywej?
GPT
W kryptografii krzywych eliptycznych (ECC), reprezentacja wiadomości jako punktu na krzywej jest niezbędna do wykonania operacji kryptograficznych, takich jak szyfrowanie, podpis cyfrowy czy wymiana kluczy. Nie możemy bezpośrednio operować na tekstach czy słowach, musimy je najpierw zamienić na elementy z których składa się krzywa eliptyczna – punkty leżące na niej. Oto proces, za pomocą którego możemy zamienić wiadomość, jak na przykład słowo “motocykl”, na punkt krzywej eliptycznej:
“motocykl” może zostać zakodowane jako ciąg bajtów (jeżeli użyjemy ASCII) 109 111 116 111 99 121 107 108, który może zostać potraktowany jako duża liczba, lub przekształcony w system szesnastkowy.
Liczba uzyskana w pierwszym kroku musi następnie zostać “umiejscowiona” na krzywej, co oznacza znalezienie takiego punktu ( (x, y) ), który leży na krzywej i którego pierwsza współrzędna ( x ) jest równa liczbie reprezentującej wiadomość, lub pochodnej tej liczby. W praktyce proces ten może być bardziej skomplikowany i wymagać zastosowania specjalnych technik i założeń, aby zapewnić, że na krzywej znajdziemy punkt odpowiadający naszej wiadomości.
- Alice losuje tymczasowy klucz (k) i oblicza dwa punkty: (C_1 = kG), który jest punktem dołączonym do zaszyfrowanej wiadomości, oraz (C_2 = W + kP), gdzie (W) to wiadomość reprezentowana jako punkt na krzywej, a (kP) to mnożenie klucza publicznego odbiorcy (P) przez losowy skalar (k).
- Zaszyfrowana wiadomość to para ((C_1, C_2)).
Deszyfrowanie
-
Odbiorca (Bob) otrzymuje zaszyfrowaną wiadomość ((C_1, C_2)) oraz zna swój klucz prywatny (d) i oblicza (C_1’ = dC_1).
-
Bob, mając (C_1’) (który jest równy (kdG)), może odwrócić działanie zastosowane przez Alice, obliczając (W = C_2 - C_1’). Odejmuje (kdG) od (C_2), ponieważ (kdG) był użyty przez Alice do „przesunięcia” wiadomości (W) na krzywej, a Bob może takie przesunięcie odwrócić.
-
Rezultatem jest otryzmywanie punktu, który odpowiada oryginalnej wiadomości (W) - Bob pomyślnie deszyfrował wiadomość.