Szyfrowanie danych”



Pobieranie 329.94 Kb.
Strona3/7
Data28.04.2016
Rozmiar329.94 Kb.
1   2   3   4   5   6   7

Szyfr przestawieniowy


Szyfry przestawieniowe (transposition cipher) należą do grupy klasycznych metod szyfrowania. Szyfry te charakteryzują się tym, że w zaszyfrowanym tekście występują wszystkie znaki z tekstu jawnego, ale w innej kolejności. Szyfry należące do tej grupy (np. szyfr płotkowy) zmieniają kolejność liter w szyfrowanym tekście według określonego schematu. Najczęściej przestawienia liter dokonuje się za pomocą figury geometrycznej.

Szyfry przestawieniowe są łatwe do złamania i nie zapewniają żadnego bezpieczeństwa.


Szyfr przesuwający (monoalfabetyczny)


Szyfr przesuwający (ang. shift cipher) to szyfr, w którym każdemu znakowi tekstu jawnego odpowiada dokładnie jeden znak w szyfrogramie, przesunięty
o określoną, stałą liczbę znaków w alfabecie. Litery z końca alfabetu stają się literami
z jego początku.


a - szyfrowana litera

k - klucz

n - ilość liter w alfabecie

Przykładowo przy przesuwaniu o 3 znaki w alfabecie łacińskim (bez polskich liter) litery A stają się D, F – I, a Y literami B.


Formalna definicja przekształceń


Założenia:

  • Używamy alfabetu z 26 znakami, numerowanymi od 0 do 25.

  • x to znak tekstu jawnego

  • y to znak szyfrogramu

  • k to klucz (liczba o jaką przesuwamy)

Szyfrowanie:

y = (x + k) mod 26

gdzie mod to obliczanie reszty z dzielenia.



Deszyfrowanie:

x = (y - k) mod 26

Operacja "mod" w większości języków programowania daje ujemne wyniki dla ujemnego pierwszego argumentu, stąd w praktyce do deszyfrowania lepiej użyć wzoru:



x = (y + 26 - k) mod 26

Przykład


Tekst jawny:

TEKST


JAWNY

Po przypisaniu każdej literze liczby od 0 do 25 uzyskujemy:

19 4 10 18 19

9 0 22 13 14



Klucz: k=14 (a więc dodajemy 14 do kodu każdej litery, a następnie obliczamy resztę
z dzielenia przez 26)

Szyfrogram:

7 18 14 6 7

23 14 10 1 12

czyli po zamianie na litery:

HSYGH

XOKBM

Przydatność


Szyfry tego typu nie zapewniają absolutnie żadnego bezpieczeństwa.

Metodą łamania takiego szyfru jest:

  • w przypadku znanego choćby małego fragmentu tekstu jawnego
    z powtarzającymi się znakami - umiejscowienie go w tekście tajnym poprzez poszukiwanie podobnych wzorców, np. jeśli występuje słowo "baobab", szukamy ciągu liter (xb, xa, xo, xb, xa, xb), czyli takiego, gdzie na pierwszym, czwartym i szóstym miejscu występuje ten sam znak, oraz na drugim i piątym ten sam, ale inny od tamtych, a jeszcze inny na trzecim.

  • w ogólniejszym przypadku należy policzyć rozkład statystyczny znaków
    w zaszyfrowanym tekście i porównać z rozkładem w dowolnym tekście jawnym z tego samego języka (najlepiej, ale niekoniecznie, tego samego autora na podobny temat). Przy dłuższym tekście tajnym pozwala to na idealne rozszyfrowanie.

Szyfr taki nigdy nie zapewniał bezpieczeństwa i nie zapewnia go tym bardziej dzisiaj.

Szyfr przesuwający z kluczem równym 3 nazywa się szyfrem Cezara.


Szyfr Cezara


Szyfr stosowany przez Gajusza Juliusza Cezara, rzymskiego wodza i polityka, będący klasycznym przykładem szyfru przesuwającego z kluczem równym 3.

Przykład


Tekst jawny:

Alea iacta est

Szyfrogram:

DOHDLDFWDHVW


2. Szyfry współczesne


Współcześnie możemy podzielić metody szyfrowania na 3 grupy:

  1. szyfry asymetryczne

  2. symetryczne szyfry blokowe

  3. symetryczne szyfry strumieniowe

a) Szyfry asymetryczne

W szyfrowaniu asymetrycznym występują 2 klucze – klucz publiczny służący do szyfrowania, oraz klucz prywatny służący do deszyfrowania. Ponieważ nie ma potrzeby rozpowszechniania klucza prywatnego, bardzo małe są szanse, że wpadnie on w niepowołane ręce. Szyfry asymetryczne opierają się na istnieniu pewnych trudnych do odwrócenia problemów. Np. o wiele łatwiej jest pomnożyć przez siebie 2 duże liczby, niż rozłożyć dużą liczbę na czynniki (opiera się na tym system RSA). Drugim popularnym systemem jest ElGamal4, opierający się na trudności logarytmu dyskretnego. Typowe rozmiary kluczy są rzędu 1024-2048 bitów. W przypadku RSA złamane zostały klucze rozmiarów do ok. 500 bitów.



b) Szyfry blokowe

Szyfry blokowe to procedury, które szyfrują niewielkie bloki danych (znacznie mniejsze od typowej wiadomości), współcześnie jest to najczęściej 128 bitów (AES), choć do niedawna przeważały 64-bitowe bloki (DES, 3DES, Blowfish, IDEA). Klucze są znacznie mniejsze, mają zwykle od 128 do 256 bitów, przy czym wartości mniejsze od 80 (DES – 56) są uważane za niewystarczające. Typowy szyfr blokowy składa się
z kilkunastu dość prostych rund przekształcających blok. Operacje używane w tych szyfrach są zwykle proste, ale pochodzą z "różnych światów", np. używa się dodawania, użycia funkcji XOR, przesunięć cyklicznych, mnożenia modulo liczb pierwszych itd. Już kilka rund takich operacji zupełnie zaburza jakikolwiek porządek i jest bardzo trudne do analizowania.

Ponieważ szyfr blokowy szyfruje jedynie niewielką ilość informacji, używane są różne tryby szyfrowania, które umożliwiają szyfrowanie większych wiadomości.



Główne tryby to:

  • CBC

  • CFB

  • CTR

  • ECB

  • OFB

W kryptografii CBC - Cipher Block Chaining to tryb kodowania wiadomości za pomocą szyfru blokowego, w którym przed zaszyfrowaniem każdy z bloków wiadomości jest przekształcany funkcją XOR z szyfrogramem uzyskanym
z szyfrowania poprzedniego bloku wiadomości. Pierwszy blok wiadomości jest szyfrowany za pomocą wylosowanego ciągu bitów (IV, initial vector) dołączanego
do wiadomości.

Wzory na kodowanie:

C0 = IV



Wzory na dekodowanie:



CFB - Cipher Feedback Tryb użycia szyfru blokowego pozwalający na użycie go do kodowania strumieni danych. Szyfr blokowy jest używany do wygenerowania pseudolosowego ciągu danych, który następnie pełni rolę strumienia szyfrującego mieszanego z danymi za pomocą funkcji XOR.

Opis algorytmu:

  • Wybieramy losowy, jawny blok danych, zwany wektorem inicjującym. Jego długość jest zależna od wybranego szyfru i jest równa długości bloku, na którym operuje szyfr.

  • Szyfrujemy go za pomocą tajnego klucza.

  • Poddajemy wynik z wiadomością funkcji XOR i uzyskujemy fragment szyfrogramu.

  • Uzyskany fragment szyfrogramu po zaszyfrowaniu z użyciem tego samego klucza szyfrującego stanowi kolejny fragment strumienia szyfrującego.

CTR - Counter Tryb użycia szyfru blokowego pozwalający na użycie go
do kodowania strumieni danych. Szyfr blokowy jest używany do wygenerowania pseudolosowego ciągu danych, który następnie pełni role strumienia szyfrującego mieszanego z danymi za pomocą funkcji XOR.

Opis algorytmu:

  • Wybieramy jawną funkcję, która na podstawie pozycji bloku danych względem początku strumienia generuje ciąg danych o długości równej długości bloku szyfru blokowego, wymagane jest by funkcja ta zwracała wartości pseudolosowe.

  • Wynik funkcji szyfrujemy szyfrem blokowym.

  • Poddajemy wynik z wiadomością funkcji XOR i uzyskujemy fragment szyfrogramu.

Jest to najpopularniejszy tryb pracy szyfrów blokowych. W przeciwieństwie
do CFB i OFB pozwala odszyfrować dowolny fragment danych, bez konieczności odszyfrowywania wszystkich poprzedzających.

OFB - Output Feedback Tryb użycia szyfru blokowego pozwalający na użycie go do kodowania strumieni danych. Szyfr blokowy jest używany do wygenerowania pseudolosowego ciągu danych, który następnie pełni role strumienia szyfrującego mieszanego z danymi za pomocą funkcji XOR.

Opis algorytmu:



  • Wybieramy losowy, jawny blok danych, zwany wektorem inicjującym. Jego długość jest zależna od wybranego szyfru i jest równa długości bloku, na którym operuje szyfr.

  • Szyfrujemy go za pomocą tajnego klucza.

  • Uzyskany ciąg danych stanowi:

    • Początek strumienia szyfrującego dla funkcji XOR.

    • Tekst jawny, którego zaszyfrowanie dostarczy nam kolejny fragment strumienia szyfrującego.

Niektóre szyfry blokowe to:

  • 3DES

  • AES /Rijndael

  • Skipjack

  • Blowfish

  • DES

  • DESX

  • IDEA

  • Lucipher

  • Twofish

  • Mars

  • Serpent



1   2   3   4   5   6   7


©absta.pl 2016
wyślij wiadomość

    Strona główna