RSA – jeden z pierwszych oraz aktualnie najpopularniejszych asymetrycznych algorytmów kryptograficznych z kluczem publicznym, zaprojektowany w 1977 przez Rona Rivesta, Adi Shamira oraz Leonarda Adlemana. Pierwszy algorytm, który bywa stosowany zarówno do szyfrowania jak oraz do podpisów cyfrowych. Bezpieczeństwo szyfrowania ma za podstawę na trudności faktoryzacji dużych liczb złożonych. Jego nazwa pochodzi od pierwszych liter nazwisk jego twórców[1].
Opis algorytmu[1]
Generowanie kluczy
W kwestii wygenerowania pary kluczy (prywatnego oraz publicznego) trzeba posłużyć się algorytmem:
- Wybieramy losowo dwie duże liczby pierwsze p oraz q (najlepiej w taki sposób, aby obie miały zbliżoną długość w bitach, ale równocześnie były od siebie odległe wartościami – są lepsze mechanizmy faktoryzacji, jeżeli liczba ma dzielnik o wartości bliskiej
)
- Obliczamy wartość n = pq
- Obliczamy wartość funkcji Eulera dla n:

- Wybieramy liczbę e (1 < e < φ(n)) względnie pierwszą z φ(n)
- Znajdujemy liczbę d odwrotną do e mod φ(n):

Klucz publiczny jest definiowany jako para liczb (n, e), natomiast kluczem prywatnym jest para (n, d).
Szyfrowanie oraz deszyfrowanie
Zanim zaszyfrujemy wiadomość, dzielimy ją na bloki
o wartości liczbowej nie większej niż n, a następnie każdy z bloków szyfrujemy wedle wzoru:

Zaszyfrowana wiadomość będzie się składać z kolejnych bloków
. Tak zbudowany szyfrogram przekształcamy na tekst jawny, odszyfrowując kolejne blok
wedle wzoru:
.
Możliwe jest także zaszyfrowanie wiadomości za pomocą klucza tajnego d, a następnie jej odszyfrowanie za pomocą klucza publicznego e. To właśnie ta własność sprawia, że RSA może zostać wykorzystany do cyfrowego podpisywania dokumentów.
Próby złamania
Pierwszą udaną faktoryzację RSA zakończono 2 grudnia 1999 roku w ramach konkursu The RSA Factoring Challenge[2].
Dotychczas największym kluczem RSA, jaki rozłożono na czynniki pierwsze, jest klucz 768-bitowy. Liczby pierwsze zostały znalezione 12 grudnia 2009, a informację o przeprowadzonej faktoryzacji opublikowano 7 stycznia 2010 roku[3]. Wykorzystano do tego klaster komputerów; czas zużyty na obliczenia był o 2 rzędy wielkości krótszy od prognozowanego.
Istnieje także szereg ataków na implementacje RSA[4][5]. Ochrona przed nimi opiera się na stosowaniu probabilistycznych trybów szyfrowania (OAEP) oraz konstruowania implementacji sprzętowych oraz programowych w taki sposób, by nie były podatne na ataki czasowe albo manipulacje zasilaniem (sprzętowe).
Potencjalnym zagrożeniem dla RSA jest skonstruowanie komputera kwantowego.
Kwestie patentowe
W Stanach Zjednoczonych algorytm RSA był opatentowany. Patent o numerze 4.405.829 stał się przyznany Massachusetts Institute of Technology (które było w tym czasie pracodawcą autorów) we wrześniu 1983 roku, następnie wszystkie prawa do tego patentu zostały odsprzedane firmie RSA Data Security (za kwotę 150 000 USD)[6]. Patent wygasł 21 września 2000 roku.
Przypisy
- ↑ 1,0 1,1 Bruce Schneier: Kryptografia dla praktyków: protokoły, algorytmy oraz programy źródłowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 2002, s. 572-581. ISBN 83-204-2678-2.
- ↑ The RSA Factoring Challenge (ang.). [dostęp 2010-03-02]., kiedy odtworzono liczby użyte do stworzenia 140-bitowych kluczy
- ↑ Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen K. Lenstra, Emmanuel Thomé, Joppe W. Bos, Pierrick Gaudry, Alexander Kruppa, Peter L. Montgomery, Dag Arne Osvik, Herman te Riele, Andrey Timofeev and Paul Zimmermann, Factorization of a 768-bit RSA modulus
- ↑ Andrea Pellegrini, Valeria Bertacco, Todd Austin: nullwww.eecs.umich.edu/~valeria/research/publications/DATE10RSA.pdf FaultBased Attack of RSA Authentication]. 2010.
- ↑ Daniel Bleichenbacher: Chosen ciphertext attacks against protocols based on the RSA encryption standard PKCS #1. 1998.
- ↑ Steven Levy: Rewolucja w kryptografii. Warszawa: Wydawnictwa Naukowo-Techniczne, 2002, s. 143. ISBN 83-204-2757-6.
Bibliografia
- Thomas H. Cormen. Rozdział 31. Algorytmy Teorioliczbowe we Wprowadzenie do algorytmów. Wyd. VII. Warszawa, 2005 WNT, s. 902 – 909
Linki zewnętrzne