Szyfrowanie z kluczem publicznym

przez | 11 stycznia 2021

Wszystkie treści na stronie ir.migra.pl chronione są prawami autorskimi. Więcej informacji znajdziesz tutaj.

Uwaga: Zapoznaj się wcześniej z tematem C2 z podręcznika „Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres podstawowy. Klasa III” lub tematami 80, 81, 90 i 91 z podręcznika „Informatyka 1-3. Podręcznik dla szkoły ponadpodstawowej. Zakres podstawowy”. Wykonaj zawarte tam ćwiczenia i zadania.

Zapisy podstawy programowej 2024 realizowane w temacie:

I. Rozumienie, analizowanie i rozwiązywanie problemów.
Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:
  1. do realizacji rozwiązania problemu dobiera odpowiednią metodę lub technikę algorytmiczną i struktury danych;
I + II. Zakres rozszerzony. Uczeń spełnia wymagania określone dla zakresu podstawowego, a ponadto:
  1. objaśnia oraz porównuje podstawowe metody i techniki algorytmiczne oraz struktury danych, wykorzystując przykłady problemów i algorytmów, w szczególności:
           f) metodę szyfrowania z kluczem publicznym i jej zastosowanie w podpisie elektronicznym,

Spis treści

  1. Szyfry z kluczem
  2. Szyfry z kluczem jawnym – asymetrycznym
  3. Jednokierunkowa funkcja skrótu
  4. Wykorzystanie algorytmów szyfrowania w podpisie elektronicznym

1. Szyfry z kluczem

Wadą systemów szyfrowania (np. szyfrowania podstawieniowego) jest to, że ich bezpieczeństwo jest uzależnione od tajności użytego algorytmu szyfrowania. Poznawszy algorytm, można odszyfrować dowolną zaszyfrowaną nim wiadomość. Wady tej są pozbawione algorytmy z kluczem.

W tego typu algorytmach do odczytania wiadomości potrzebna jest, oprócz znajomości sposobu szyfrowania, znajomość klucza. Znając sposób szyfrowania, lecz nie znając klucza, nie można odczytać wiadomości. Dodatkowo dla każdej wiadomości klucz może być inny, więc odczytanie jednej wiadomości nie oznacza, że będzie można odczytać również inne. Wszystkie nowoczesne sposoby szyfrowania wykorzystują klucze.

W zależności od algorytmu klucz szyfrujący może być taki sam jak klucz deszyfrujący lub też mogą one być różne.

Algorytm, który wykorzystuje ten sam klucz zarówno do szyfrowania jak i do odszyfrowania wiadomości to algorytm szyfrowania symetrycznego.
Algorytm, który stosuje różne klucze do szyfrowania i do odszyfrowania wiadomości to algorytm szyfrowania asymetrycznego.

 

Rys. 1. Schemat szyfrowania z kluczem


Przykładem prostego szyfru z kluczem jest szyfr Vigenère’a. W szyfrze tym każdy znak tekstu jawnego jest szyfrowany przy użyciu szyfru podstawieniowego, jednak dla każdego znaku przesunięcie w alfabecie jest inne i zależy od wartości odpowiedniego znaku klucza.


Przykład 1. Stosowanie szyfru Vigenere’a

Każdemu znakowi alfabetu (dla uproszczenia posłużymy się alfabetem łacińskim) przypiszemy określoną wartość liczbową: A – 1, B – 2, … Z – 26.

Szyfrując słowo „TEKST” kluczem „KLUCZ”:
literę „T” zastąpimy literą leżącą w alfabecie o 11 (wartość „K”) miejsc dalej,
literę „E” – literą leżącą o 12 (wartość „L”) miejsc dalej itd.

Można posłużyć się tabelą 1.

Tabela 1. Stosowanie szyfru Vigenère’a


Szyfrując w ten sposób, sumuje się wartości liczbowe każdego znaku tekstu jawnego i odpowiadającego mu znaku klucza. W ten sposób otrzymuje się wartość liczbową znaku szyfrogramu; jeżeli otrzymana wartość jest większa od 26, należy od niej odjąć 26. Jeżeli długość klucza jest mniejsza od długości tekstu jawnego, klucz należy powielić odpowiednią ilość razy.

Deszyfrowanie polega na odjęciu od wartości liczbowej odpowiedniego znaku szyfrogramu wartości liczbowej odpowiedniego znaku klucza; jeżeli otrzymana wartość jest ujemna lub zerowa, należy dodać do niej 26. W ten sposób otrzymujemy wartość liczbową znaku tekstu oryginalnego.

Działający na podobnej zasadzie, choć oczywiście o wiele bardziej skomplikowany sposób szyfrowania, został wykorzystany przez Niemców przed II wojną światową w maszynie szyfrującej Enigma. Łamanie szyfrów Enigmy wymagało urządzeń obliczeniowych o dużej wydajności i było jednym z powodów budowy pierwszych komputerów. Szyfr Enigmy złamali w latach 30. XX w. polscy matematycy: Marian Rejewski, Jerzy Różycki i Henryk Zygalski.


Ćwiczenie 1. Szyfrujemy nazwisko szyfrem Vigenere’a

Zaszyfruj nazwisko „KOWALSKI” kluczem „KLUCZ” za pomocą sposobu omówionego w przykładzie 1.


2. Szyfry z kluczem jawnym – asymetrycznym

Zasadniczą słabością algorytmów z kluczem jest to, że przed rozpoczęciem właściwej komunikacji nadawca musi przekazać klucz odbiorcy. Wprawdzie mogą się oni wcześniej umówić, jakie klucze będą stosować, jednak i tak niezbędny jest kontakt nadawcy i odbiorcy. Z tego powodu proces komunikacji jest zawodny i nie zapewnia całkowitego bezpieczeństwa przekazu.

Wady tej pozbawione są algorytmy z kluczem jawnym. W algorytmach tych klucz szyfrujący jest inny niż klucz deszyfrujący. Klucz szyfrujący (zwany kluczem jawnym lub kluczem publicznym) można udostępnić każdemu, w celu zaszyfrowania wiadomości przeznaczonych dla odbiorcy. Jednak pasującym do klucza jawnego kluczem deszyfrującym (tzw. kluczem tajnym lub kluczem prywatnym) dysponuje tylko odbiorca wiadomości. Dzięki temu tylko on może odczytać zaszyfrowaną wiadomość.

Najbardziej znanym algorytmem z kluczem jawnym jest algorytm RSA (od nazwisk twórców: Rivest-Shamir-Adleman). Algorytm ten jest powszechnie stosowany w wielu produktach, takich jak pakiet szyfrowania PGP (ang. Pretty Good Privacy) czy protokół bezpiecznych połączeń SSL, wykorzystywany przez serwery i przeglądarki internetowe.


3. Jednokierunkowa funkcja skrótu

Jednokierunkowa funkcja skrótu przekształca dowolnie długi ciąg danych w krótki ciąg danych określonej długości.

Funkcja ta powinna być tak dobrana, by zmiana nawet jednego bitu w ciągu źródłowym powodowała zmianę także w ciągu wynikowym. Dzięki istnieniu takiej funkcji łatwe jest np. sprawdzenie, czy podczas transmisji dane nie uległy celowemu bądź przypadkowemu zniekształceniu. Wystarczy bowiem obliczyć wartość funkcji skrótu dla przesłanego dokumentu i porównać ją z opublikowaną (np. w Internecie) wartością dla dokumentu oryginalnego. Jeżeli wartości się różnią – dokument został zmieniony.

Funkcje skrótu są też wykorzystywane w sieciowych systemach operacyjnych do zarządzania hasłami użytkownika. Hasło takie nie jest pamiętane nigdzie w pełnej postaci, a jedynie w postaci skróconej. Przy logowaniu hasło wpisane przez użytkownika jest skracane i porównywane z pamiętanym w systemie skrótem. Z postaci skróconej nie da się natomiast odzyskać oryginalnego hasła użytkownika, nie ma więc niebezpieczeństwa, że pozna go w ten sposób osoba nieupoważniona.

Najbardziej znane algorytmy tego typu to CRC, MD5 i SHA (obecnie wykorzystywane są warianty SHA-1 i SHA-2).


4. Wykorzystanie algorytmów szyfrowania w podpisie elektronicznym

Technologie szyfrowania umożliwiają także stosowanie podpisu elektronicznego.

Praktyczne formy podpisów elektronicznych stały się dostępne dzięki rozwojowi kryptografii z kluczem publicznym i polegają na dołączeniu do dokumentu jego skrótu (wygenerowanego za pomocą jednokierunkowej funkcji skrótu), zaszyfrowanego kluczem prywatnym strony podpisującej. Niezbędne jest zatem wygenerowanie pary kluczy: prywatnego i publicznego. Wygenerowany klucz publiczny przedstawia się następnie do certyfikacji właściwemu urzędowi. Po dostarczeniu wszystkich niezbędnych danych, potwierdzających naszą tożsamość, otrzymujemy certyfikat i możemy korzystać z podpisu elektronicznego.

Certyfikat umożliwia jednoznaczne związanie klucza publicznego z danymi posiadacza certyfikatu.

Klucz publiczny musi być udostępniony (jak nazwa wskazuje – upubliczniony). Takie klucze są przechowywane na specjalnych serwerach, tzw. serwerach kluczy.

Klucz prywatny przechowuje się zwykle na nośniku elektronicznym w postaci pliku, ale dodatkowo jest on zabezpieczony hasłem znanym tylko właścicielowi klucza. Klucz prywatny trzeba szczególnie chronić. O wygenerowanie klucza prywatnego i publicznego oraz otrzymanie certyfikatu można się zwrócić do urzędu certyfikacyjnego.

Wiadomość zaszyfrowana kluczem prywatnym może być deszyfrowana tylko właściwym (z tej samej pary) kluczem publicznym. Adresat tak deszyfrowanej wiadomości ma pewność, że pochodzi ona od nadawcy posiadającego klucz prywatny, zawarty w certyfikacie.

W sytuacji odwrotnej – wiadomość zaszyfrowana kluczem publicznym może być deszyfrowana tylko przez osobę posiadającą klucz prywatny. Taką wiadomość może przesłać do nas każdy, kto zna nasz klucz publiczny. Nadawca ma pewność, że dotrze ona tylko do osoby posiadającej klucz prywatny (nie trafi w niepowołane ręce).


Zadania

  1. Zaszyfruj swoje nazwisko kluczem „KLUCZ” za pomocą szyfru Vigenere’a.
  2. Napisz program szyfrujący tekst za pomocą szyfru Vigenere’a. Program powinien poprosić o wprowadzenie tekstu jawnego do zaszyfrowania oraz klucza i wypisać na ekranie zaszyfrowany tekst.
  3. Napisz program deszyfrujący tekst za pomocą szyfru Vigenere’a. Program powinien poprosić o wprowadzenie zaszyfrowanego tekstu oraz klucza i wypisać na ekranie odszyfrowany tekst  jawny.

  4. Dla zainteresowanych

  5. Zapoznaj się z dostępnymi w Internecie informacjami na temat metody szyfrowania RSA. Przeanalizuj wybrany program szyfrujący tekst metodą RSA.
  6. Zapoznaj się z różnymi metodami szyfrowania dostępnym na stronie https://www.dcode.fr/ (stroną w języku angielskim).
  7. Przygotuj prezentację na temat steganografii.