ZASTOSOWANIE
ZASTOSOWANIE
KRYPTOGRAFII
KRYPTOGRAFII
W SZYFROWANIU DANYCH
W SZYFROWANIU DANYCH
AUTOR
EWA MICHNIEWICZ
EWA MICHNIEWICZ
PRACA NAPISANA POD KIERNKIEM
DR JACKA MATULEWSKIEGO
DR JACKA MATULEWSKIEGO
PODSTAWOWE ZADANIA KRYPTOGRAFII
Poufność
zapewnia tylko i wyłącznie uprawnionym do tego
jednostkom na korzystanie i oglądanie danych w czytelnej
formie.
Uwierzytelnianie
jest to proces potwierdzający podaną
tożsamość użytkownika, urządzenia końcowego, bądź jednego
i drugiego. Może to być klient, serwer, zwrotnica, router,
ściana ogniowa.
Integralność
zapewnia, że dane nie zostały w żaden sposób
zmienione lub zniszczone przez osoby niepowołane.
Niezaprzeczalność
tworzenie zaszyfrowanych dowodów
przesłania wiadomości, uniemożliwiających nadawcy wyparcie
się autorstwa
Techniki szyfrowania
danych
Tryb
elektronicznej
książki kodowej
ECB
(Electronic
Code Book)
Tryb wiązania
bloków
zaszyfrowanych
CBC
(Cipher Block
Chaining
Tryb
sprzężenia
zwrotnego
zaszyfrowaneg
o tekstu
CFB
(Cipher
Feedback).
Tryb sprzężenia
zwrotnego bloków
wyjściowych
OFM
(Output Feedback
)
Reprezentuje
najprostszą
technikę
szyfrowania
blokowego. Po
wstępnym
podzieleniu
tekstu jawnego
na bloki, każdy
blok szyfrowany
jest w blok
szyfrogramu.
Każdy blok tekstu
jawnego jest przed
szyfrowaniem łączony
operacją XOR z
poprzednim blokiem
szyfrogramu.
Wykorzystano w tym
trybie mechanizm
sprzężenia zwrotnego
tzn. blok wyjściowy
jest wykorzystywany
do modyfikacji
kolejnego bloku
wejściowego.
Umożliwia
szyfrowanie
danych w
jednostkach
mniejszych niż
rozmiar
pobranego bloku
tekstu jawnego.
Jest podobny do
trybu CFB z tą
różnicą, że zamiast
wyniku operacji XOR
na najmłodszej
pozycji rejestru
przesuwającego
kierowany jest wynik
szyfrowania kluczem
K bloku najstarszych
bitów rejestru.
Stosowane do
transmisji
pojedynczych
wartości, np.
klucza;
Transmisja większych
zestawów danych, np.
FTP;
Transmisja
strumieniowa
bajt po bajcie,
np. TELNET;
Transmisja
strumieniowa bajt po
bajcie, w kanałach
podatnych na
zakłócenia.
Pojęcia stosowane w kryptografii
Szyfrowanie
Proces przekształcania tekstu jawnego w szyfrogram tak, że zostaje ukryta
jego zawartość. Do przekształcenia używa się algorytmu szyfrującego.
Deszyfrowanie
Proces przekształcania szyfrogramu w tekst jawny tak, że
jego zawartość zostaje ponownie odkryta. Do przekształcenia używa się
algorytmu deszyfrującego.
Algorytm szyfrujący
Jest to zbiór metod postępowania, który prowadzi do
zaszyfrowania tekstu jawnego w szyfrogram
.
Algorytm deszyfrujący
Zbiór metod służących do przekształcenia
szyfrogramu w tekst jawny.
Klucz
Zbiór informacji potrzebnych algorytmowi szyfrującemu lub
deszyfrującemu do poprawnego działania. Może to być jeden bajt albo
kilkaset bitów. Klucz może być tajny albo publiczny.
Klucz tajny
Dla algorytmów symetrycznych jest to zarówno klucz szyfrujący
jak i deszyfrujący. Dla algorytmów asymetrycznych jest to klucz prywatny
służący jedynie do deszyfrowania.
Klucz jawny
Dla algorytmów asymetrycznych jest to klucz szyfrujący. Jest
udostępniany publicznie.
Kryptograficzne funkcje hashujące
są zwykle używane do obliczenia
wyciągu z wiadomości podczas tworzenia cyfrowego podpisu. Funkcja hashująca
kompresuje bity wiadomości do wartości o określonej długości (hash value).
Funkcja hashująca czyni to w sposób, który sprawia niezwykle trudnym
pojawienie się wiadomości, która dałaby w rezultacie tę samą hash-wartość.
Cyfrowe podpisy
Niektóre algorytmy z kluczem publicznym mogą być
używane do generowania cyfrowych podpisów. Podpis cyfrowy jest blokiem
danych, który został wygenerowany za pomocą określonego tajnego klucza oraz
istnieje klucz publiczny, który może być użyty do weryfikacji czy podpis został
naprawdę wygenerowany za pomocą odpowiadającego klucza prywatnego.
Algorytm użyty do generowania podpisu musi być taki, że bez znajomości klucza
prywatnego nie jest możliwe stworzenie podpisu, który byłby zweryfikowany
jako ważny.
Podział algorytmów
I.
Algorytmy ograniczone
Dzisiaj interesuje się nimi jedynie z
historycznego punktu widzenia i nie są dobre
dla potrzeb prawdziwego bezpieczeństwa.
Wystarczy bowiem odkryć jeden algorytm by
możliwe było odszyfrowanie wszystkich
wiadomości, które zostały nim zakodowane.
II
Algorytmy z kluczem
ich algorytmy są znane, ale by odczytać
konkretną wiadomość musimy posiadać
właściwy klucz.
1. Symetryczne
– używają tego samego klucza do
szyfrowania i do deszyfrowania wiadomości, albo
klucz deszyfrujący da się bezpośrednio wyprowadzić
z klucza szyfrującego. Znajomość zatem dobrego
klucza służącego do zakodowania wiadomości
umożliwia także jej odczytanie. Są szybsze od
asymetrycznych.
1.
Strumieniowe
– kodują jedną jednostkę informacji (bit) w
tym samym czasie
2.
Blokowe
– kodują grupę informacji (wiele bitów) w tym
samym czasie
2. Asymetryczne (z kluczem publicznym)
– używają
odmiennego klucza do szyfrowania i deszyfrowania,
a klucza deszyfrującego nie da się wyprowadzić z
klucza szyfrującego. Klucz szyfrujący jest zwykle
udostępniany publicznie tak, iż każdy może
zakodować informację jednak jej odczytanie możliwe
jest
jedynie
przez
adresata,
który
posiada
odpowiedni klucz deszyfrujący – nie ujawniany.
Szyfrowanie symetryczne
Nadawca
Odbiorca
Wiadomość jawna Wiadomość zdeszyfrowana
wiadomość
wiadomość
zaszyfrowana
zaszyfrowana
Szyfrowanie
klucz prywatny
Deszyfrowanie
klucz prywatny
Do najczęściej używanych i obecnie stosowanych
algorytmów z kluczem symetrycznym należą:
DES
3DES
RC-2
RC-4
RC-5
IDEA
Blowfish
Rijndael
Szyfrowanie asymetryczne
Nadawca
Odbiorca
Wiadomość jawna Wiadomość zdeszyfrowana
wiadomość zaszyfrowana wiadomość zaszyfrowana
Szyfrowanie
klucz publiczny
odbiorcy
Deszyfrowanie
klucz prywatny
odbiorcy
Do wykorzystywanych obecnie algorytmów
opartych o metodę klucza asymetrycznego
należą:
DSS
ElGamal
RSA.
PROGRAM SZYFROWNIK
Program ma na celu
przedstawienie różnych
rodzajów szyfrów
Szyfrowanie tekstowe
Zastosowanie szyfru Cezara
Rot 13
Zastosowanie dowolnego
przesunięcia
Operacja XOR
Kodowanie przy użyciu hasła
Szyfrowanie tekstowe
Tekst jawny
Tekst
zaszyfrowany
Szyfr Cezara
Szyfr Cezara jest
prostym rodzajem
szyfrowania
wiadomości, która
stosował już Juliusz
Cezar. Jest to szyfr
podstawieniowy prosty
(monoalfabetyczny), w
którym każdemu
pojedynczemu znakowi
w tekście odpowiada
dokładnie jeden znak w
tekście zaszyfrowanym.
ROT 13
Zasada działania jest
identyczna jak w
przypadku szyfru Cezara -
różnica polega na wartości
przesunięcia. W tym
przypadku każdą literę
tekstu jawnego
zamieniamy na literę,
znak przesunięty o 13
miejsca w prawo podczas
szyfrowania . W celu
odszyfrowania tekst
powtarzamy operację tym
razem przesuwając litery,
znaki o 13 pozycje w lewo.
Dowolne przesunięcie
Działanie
szyfrowania/deszyfrowan
ia z przesunięciem ma
identyczna genezę jak w
przypadku szyfru Cezara
czy ROT 13. Jednak
przesunięcie w tym
programie wyznacza
sam użytkownik.
Wartość ta dla
szyfrowania jak i
deszyfrowania musi być
identyczna.
XOR
Operacja XOR to operacja na
dwóch
bitach
zwracająca
wartość 1 lub 0.
0 XOR 0 = 0
1 XOR 1 = 0
0 XOR 1 = 1
1 XOR 0 = 1
Procedura
szyfrowania/deszyfrowania
zostaje wykonana tak, że
każdy znak tekstu
jawnego/zaszyfrowanego
zostaje xor’owany przez
wartość $a86 i następnie
zapisany do pliku
wyjściowego. Po kolejnym
dokonaniu operacji XOR z
pliku zaszyfrowanego
otrzymamy plik z tekstem
jawnym. Procedury szyfruj
/deszyfruj są identyczne.
Kodowanie przy użyciu
hasła
Znacznie lepszym sposobem
ukrywania informacji jest ich
kodowanie z użyciem hasła.
Wybierając
plik
do
zaszyfrowania
z
pola
FileListBox1
wpisujemy
hasło według którego ma
być
dany
plik
szyfrowany/odszyfrowywany
.
Wykonana
zostaje
procedura
szyfrowania/deszyfrowania.
hasło
xor
tekst_niezaszyfrowany =
tekst_zaszyfrowany
hasło xor tekst_zaszyfrowany
= tekst_niezaszyfrowany
Podsumowanie