5. Szyfry i kryptografia

5.2. System kryptograficzny

Teraz powiemy co to jest wiadomość jawna, kryptogram (albo szyfrogram) oraz szyfr.

System kryptograficzny lub szyfr to piątka uporządkowana (V1,V2 , K , E, D) , gdzie:

  • V1 jest alfabetem, w którym zapisujemy wiadomości jawne, V1  \overset{df}{=} M, czyli zbiór wszystkich słów nad alfabetem V1 jest tzw. przestrzenią wiadomości jawnych (M od ang. message) a każdy element M nazywamy wiadomością jawną lub tekstem jawnym.
  • V2  jest alfabetem, w którym zapisujemy kryptogramy (szyfrogramy) V2 \overset{df}{=} C , czyli zbiór wszystkich słów nad alfabetem V2 jest tzw. przestrzenią wiadomości zaszyfrowanych, czyli, jak mówimy, szyfrogramów (szyfrogram nazywamy też kryptogramem, wiadomością zaszyfrowaną, lub tekstem zaszyfrowanym). Często alfabety V1 i V2 są tym samym afabetem.
  • K jest dowolnym zbiorem jest to tzw. przestrzeń kluczy (ang. key space), każdy element k K nazywamy kluczem (lub kluczem szyfrującym). Na ogół K jest zbiorem skończonym ale w definicji ogólnej systemu kryptograficznego nie robimy tego założenia.
  • E jest funkcją E : M K C , obliczanie wartości funkcji E nazywamy szyfrowaniem, a samą funkcję przekształceniem szyfrującym lub co jest nieco mylące również szyfrem. Wartość E(k, m) nazywamy wiadomością zaszyfrowaną, szyfrogramem, kryptogramem lub tekstem zaszyfrowanym. Sposób obliczania E(k,m) dla danych k,m nazywamy algorytmem szyfrowania.
  • D jest funkcją D : C K M obliczanie wartości funkcji D nazywamy deszyfrowaniem a samą funkcję D przekształceniem deszyfrującym. Sposób obliczania D(k,m) dla danych k, m nazywamy algorytmem deszyfrowania.

Od systemu kryptograficznego wymagamy by dla każdego klucza szyfrującego k1 K , istniał klucz deszyfrujący k2 K taki, że dla dowolnej wiadomości jawnej m zachodzi

 D(k2 , E(k1, m)) m .

Istota rzeczy: Każdą wiadomość zaszyfrowaną musimy umieć rozszyfrować, ale być może służy do tego już inny klucz.

Z powyższej definicji wynika, że dla każdego k1 K , odwzorowanie E( , k1 ) : M C jest funkcją różnowartościową. Oczywiście podobnie odwzorowanie D( , k2 ) : E( M , k1 ) C , (gdzie k2 K jest kluczem deszyfrującym odpowiadającym kluczowi k1 K ) jest funkcją różnowarościową.

Z powyższej definicji wynika również, że mówiąc niezbyt precyzyjnie, szyfr to rodzina kodów sparametryzowana kluczem k K .

Istota rzeczy: Szyfr służy do zastąpienia wiadomości jawnej m kryptogramem c. Celem jest takie przekształcenie postaci wiadomości jawnej, by uzyskać postać nieczytelną dla osób nie dysponujących kluczem deszyfrującym. Realizujemy w ten sposób jeden z zasadniczych celów kryptografii tzw. poufność (ang. confidentiality)

Pewnego komentarza wymaga pojęcie klucza. W definicji systemu kryptograficznego wyróżniliśmy pewien zbiór K zwany przestrzenią kluczy (ogólnie rzecz biorąc zbiór K jest dowolny), którego elementy są nazywane kluczami i parametryzują odwzorowanie szyfrujące.

Na ogół im więcej elementów ma zbiór K tym szyfr jest bezpieczniejszy trudniej bowiem dopasować wówczas klucz k do przechwyconego kryptogramu c tak by było metodą przeglądania wszystkich kluczy k czyli za pomocą tzw. ataku brutalnego. D(c, k ) m

Klucz w praktyce to słowo nad jakimś ustalonym alfabetem, na ogół alfabetem, w którym zapisujemy wiadomość jawną, w szczególności może to być alfabet binarny {0,1} i wówczas z reguły K {0,1}n dla pewnego n N lub K {0,1}* . Jeśli klucz jest słowem nad ustalonym alfabetem to możemy mówić o długości klucza.

Na ogół im dłuższy jest klucz tym bezpieczniejszy jest system kryptograficzny. Oczywiście technicznie rzecz biorąc klucz może mieć dowolną długość. Istnieją jednak w wielu krajach (np. w USA, Francji czy Iraku) pewne ograniczenia o charakterze prawnym np. 128 bitowe klucze to standard w USA i w Polsce do zakupów sieciowych z kartą kredytową i w transakcjach bankowych.

W powszechnym mniemaniu klucze 128 bitowe uważa się za bezpieczne, ale rzecz jasna taka zasada jest niebezpieczną półprawdą, bowiem klucza nie można rozpatrywać w oderwaniu od systemu kryptograficznego np. 128 bitowy czy nawet 512 bitowy klucz w przypadku szyfru RSA nie jest kluczem bezpiecznym. Przyjmuje się, że dla RSA bezpieczna długość klucza to 1024 bity lub więcej.

Ważna uwaga praktyczna o tajności metod i algorytmów kryptograficznych:

Nigdy nie budujemy bezpieczeństwa systemu na ukrywaniu metody czy algorytmu kryptograficznego. Wprost przeciwnie, algorytm publicznie znany, o którym wiadomo, że był atakowany bez powodzenia, można uznać za pewny i bezpieczny.