Szyfrowanie danych

Szyfrowanie danych

 

Rosnące możliwości oraz ciągłe powiększanie się ilości użytkowników komputerów osobistych, przyczyniło się do zapotrzebowania na programy zabezpieczenia danych przed:

działaniem programów szpiegujących. Zgodnie z badaniami przeprowadzonymi przez instytucje zajmujące się bezpieczeństwem danych z USA jest nimi zainfekowany nieomal każdy komputer podłączony do sieci! W wielu przypadkach w zainfekowanych komputerach „siedzi” po kilka programów szpiegujących! Sprawdzają preferencje konsumenckie, przekazują poufne dane, analizują zachowania użytkowników itd. Odbiorcami danych są nie tylko agendy wywiadu gospodarczego z całego świata, firmy analizujące działanie konkurencji itp. ale także – o zgrozo – instytucje państwowe masowo łamiące prawo do prywatności. Znane są przypadki śledczego wykorzystania tak zdobytych danych w naszym kraju!

wykradaniem danych. Proceder wbrew pozorom bardzo rozpowszechniony w wielu firmach, gdyż dane handlowe posiadają zwykle sporą wartość komercyjną.

przechwytywanie korespondencji elektronicznej oraz danych przesyłanych za pomocą sieci – lokalnych i rozległych. W tym przypadku sama autoryzacja użytkownika jest dalece niewystarczająca. Można dość łatwo przechwycić nie tylko korespondencję czy przesyłane dane ale i podszyć się na wiele sposobów pod autoryzowanego użytkownika. Wiele firm nie zdaje sobie sprawy, że ich sesje robocze są „nasłuchiwane” w sposób stały przez programy, które robią to automatycznie!

przekłamaniem danych. Dane zwykle bywają zmieniane w minimalnym zakresie. Jeżeli modyfikacji dokonano w dyskretny sposób, jest to trudne do wykrycia. Przekłamanie może polegać na przechwyceniu oryginalnego listu, przesyłanego siecią Internet i zastąpienia go listem o zmienionej treści.

To tylko niewielka część zagrożeń dla danych przetwarzanych przez podmioty gospodarcze. Obecnie sprawne funkcjonowanie przedsiębiorstwa jest najczęściej uzależnione od dobrze działającego systemu informatycznego. Systemy te, zainstalowane w firmach, zawierają najbardziej istotne dla działania i istnienia przedsiębiorstwa informacje – wszelkiego rodzaju systemy finansowo-księgowe, kadrowe, magazynowe, bazy danych gromadzące dane o klientach i kontrahentach, dokumenty wewnętrzne o różnym stopniu poufności, a w tym projekty i dokumentację. Niejednokrotnie firma ma wiele oddziałów położonych w różnych częściach kraju lub świata, które muszą wymieniać poufne informacje między sobą. Nie należy się więc dziwić, że mogą znaleźć się zarówno osoby, jak i instytucje pragnące w sposób nie autoryzowany dotrzeć do poufnych informacji zgromadzonych w systemie informatycznym takiej firmy.1 Przed tego typu zagrożeniami możemy chronić nasze dane, korzystając z obecnie dostępnych narzędzi. Istnieją w tym zakresie dość kosztowne rozwiązania, oparte na kombinacjach sprzętowo-programowych, które i tak nie gwarantują pełnego bezpieczeństwa. Przykładowo – blokowane są skuteczne rozwiązania w zakresie szyfrowania danych czego przykładem były kłopoty Philipa R. Zimmermanna, twórcy silnego systemu kryptograficznego PGP. Coraz częściej pojawiają się informacje, że najbardziej znane algorytmy szyfrujące są powszechnie łamane nie tylko przez wyspecjalizowane instytucje rządowe ale i wiele firm prywatnych, specjalizujących się w „pozyskiwaniu” informacji. Trudno ocenić wiarygodność tych informacji ale sukcesy niektórych ośrodków akademickich
w łamaniu „bezpiecznych” szyfrów mówią same za siebie… Silne rozwiązania
w zakresie bezpieczeństwa danych nie muszą być kosztowne! Często można je skonstruować za pomocą narzędzi, które w znacznej części są bezpłatne. Nie są potrzebne duże pieniądze lecz inteligentna polityka bezpieczeństwa w firmie. Przykładowo – nie można się skutecznie obronić przed „podsłuchiwaniem” sieci przez specjalizowane programy, można sprawić natomiast, że będą one otrzymywać bezwartościowe dane.

  1. Szyfrowanie

Szyfrowanie to procedura takiego przekształcania wiadomości, żeby była ona niemożliwa (lub bardzo trudna) do odczytania przez każdego, kto nie posiada odpowiedniego klucza.

Wiadomość przed zaszyfrowaniem nazywa się tekstem jawnym (plaintext), a wiadomość zaszyfrowaną – szyfrogramem (ciphertext).

Szyfrowanie jest zajęciem bardzo starym, aczkolwiek nowoczesna kryptografia narodziła się dopiero w epoce komputerów i starsze szyfry są z dzisiejszego punktu widzenia zupełnie bezużytecznie.

Szyfrowanie obejmuje bardzo wiele zagadnień. Najważniejsze z nich to:

– kamuflowanie wiadomości i maskowanie działania programów;

– zasady doboru haseł;

– skuteczne niszczenie dokumentów i kasowanie plików;

– wykrywanie ukrytych kanałów w aplikacjach;

– autentyzacja i certyfikacja (zagwarantowanie, że dana osoba jest autorem dokumentu);

– podpisy cyfrowe (sposób przekonania osoby trzeciej o autentyczności dokumentu);

– dobór parametrów szyfrowania, aby był bezpieczny przez jak najdłuższy okres czasu mimo postępów w projektowaniu superkomputerów użytych do łamania algorytmów szyfrujących.

III. Algorytmy szyfrujące

1. Szyfry historyczne

Szyfry historyczne musiały umożliwiać szyfrowanie i deszyfrowanie przez człowieka, a więc opierać się na bardzo prostych operacjach. Współczesne komputery są o kilkanaście rzędów wielkości szybsze w obliczeniach od ludzi, i potrafią złamać praktycznie każdy tego typu szyfr. Dlatego też właściwie wszystkie wymienione niżej szyfry nie mają obecnie żadnego praktycznego znaczenia.

Niektóre z szyfrów historycznych to:

Enigma

Oryginalna maszyna szyfrująca Enigma2

Enigma (łac. zagadka) – niemiecka maszyna szyfrująca, używana przez wywiad oraz armię niemiecką. Powstała w Niemczech, a jej wynalazcą był Hugo Koch, który sprzedał jej patent inżynierowi Arturowi Scherbiusowi. Niemiecka marynarka wojenna zaczęła stosować Enigmy już w 1926 roku, na lądzie weszły do użycia kilka lat później. Polacy próbowali złamać kod Enigmy już pod koniec lat dwudziestych, jednakże bez rezultatu. Wówczas kierownictwo Biura Szyfrów Oddziału II Sztabu Głównego zatrudniło do pracy profesjonalnych matematyków. W 1929 roku zorganizowano kurs kryptologii dla studentów matematyki pod kierunkiem profesora Zdzisława Krygowskiego na Uniwersytecie Poznańskim. Na kurs zgłosili się m. in.: Marian Rejewski, Jerzy Różycki i Henryk Zygalski. W grudniu 1932 roku Rejewski zaczął pracować nad Enigmą. Pomogły mu w tym informacje przekazywane przez francuski wywiad. Pomimo odtworzenia struktury wewnętrznej Enigmy, wciąż nie udawało się odczytywać wszystkich wiadomości. Wkrótce do Rejewskiego dołączyli dwaj pozostali matematycy, Zygalski i Różycki. Pierwsza kopia wojskowej wersji Enigmy powstała w 1934 roku. Od tego czasu Polacy mogli odczytywać korespondencję niemiecką, choć nie było to proste, bowiem Niemcy stale udoskonalali zarówno maszynę, jak i sposoby szyfrowania. Na krótko przed wojną w Pyrach pod Warszawą, w siedzibie Biura Szyfrów, doszło do spotkania z wysłannikami sojuszników. Dwie Enigmy przekazano wówczas Francuzom i Brytyjczykom, wraz z materiałami do dekryptażu. Deszyfratory, które skonstruowano następnie w Bletchley Park, powstały na podstawie otrzymanych wówczas od Polaków materiałów.

Budowa maszyny

Z przodu maszyny znajduje się 26-literowa klawiaturka, a za nią płytka z drugim zestawem znaków podświetlanych żarówkami. W środku urządzenia znajdują się 3 (lub nawet 8 – zależy to od wersji Enigmy, o tym później) wirniki szyfrujące (niem. Chiffrierwalzen) poprzedzone walcem wstępnym (Eintrittswalze) oraz jeden nieruchomy walec odwracający (Umkehrwalze), można go odsunąć odpowiednią dźwigienką.

Między klawiaturą a zespołem wirników znajduje się centralka, łącznica wtykowa, w której następuje zamiana 12 (z 26) liter alfabetu, za pomocą specjalnych sznurów (Steckerverbindungen). Później zwiększono liczbę par z 6 do 13, tym samym umożliwiając zamianę całego alfabetu.

Przy każdym naciśnięciu klawisza na klawiaturce, następuje przesunięcie o 1/26 pełnego obrotu skrajnego (prawego) wirnika szyfrującego (pozostałe kręcą się rzadziej). Prąd biegnie od klawiatury, poprzez łącznicę, wszystkie wirniki i walec odwracający, znowu wirniki i łącznicę, wreszcie zapala się odpowiednia żarówka. W wypadku naciśnięcia klawisza jak na zapalonej żarówce, pojawi się uprzednio wciśnięty znak. Wynika z tego, że Enigmą można szyfrować i deszyfrować bez potrzeby wykonywania dodatkowych czynności.

Szyfr polialfabetyczny

Szyfr polialfabetyczny to uogólnienie szyfru monoalfabetycznego na większą ilość przekształceń.

Szyfr taki składa się z n przekształceń, takich że pierwszą literę szyfrujemy pierwszym przekształceniem, drugą drugim itd., po czym powtarzamy przekształcenia od początku począwszy od litery n + 1-wszej.

Przykładem takiego szyfru jest szyfr Vigenere’a.

Szyfr tego typu nie zapewnia żadnego bezpieczeństwa.

Szyfr Vigenère’a

Algorytm Vigenère’a jest jednym z klasycznych algorytmów szyfrujących. Należy on do grupy tzw. wieloalfabetowych szyfrów podstawieniowych. Jego rodowód sięga XVI wieku, kiedy został on zaproponowany ówczesnemu władcy Francji, królowi Henrykowi III przez Blaise’a de Vigenère.

Działanie szyfru Vigenere’a oparte jest na następującej tablicy:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

B C D E F G H I J K L M N O P Q R S T U V W X Y Z A

C D E F G H I J K L M N O P Q R S T U V W X Y Z A B

D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

E F G H I J K L M N O P Q R S T U V W X Y Z A B C D

F G H I J K L M N O P Q R S T U V W X Y Z A B C D E

G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

H I J K L M N O P Q R S T U V W X Y Z A B C D E F G

I J K L M N O P Q R S T U V W X Y Z A B C D E F G H

J K L M N O P Q R S T U V W X Y Z A B C D E F G H I

K L M N O P Q R S T U V W X Y Z A B C D E F G H I J

L M N O P Q R S T U V W X Y Z A B C D E F G H I J K

M N O P Q R S T U V W X Y Z A B C D E F G H I J K L

N O P Q R S T U V W X Y Z A B C D E F G H I J K L M

O P Q R S T U V W X Y Z A B C D E F G H I J K L M N

P Q R S T U V W X Y Z A B C D E F G H I J K L M N O

Q R S T U V W X Y Z A B C D E F G H I J K L M N O P

R S T U V W X Y Z A B C D E F G H I J K L M N O P Q

S T U V W X Y Z A B C D E F G H I J K L M N O P Q R

T U V W X Y Z A B C D E F G H I J K L M N O P Q R S

U V W X Y Z A B C D E F G H I J K L M N O P Q R S T

V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

W X Y Z A B C D E F G H I J K L M N O P Q R S T U V

X Y Z A B C D E F G H I J K L M N O P Q R S T U V W

Y Z A B C D E F G H I J K L M N O P Q R S T U V W X

Z A B C D E F G H I J K L M N O P Q R S T U V W X Y

Jak można zauważyć, każdy z wierszy tablicy odpowiada szyfrowi Cezara, przy czym w pierwszym wierszu przesunięcie wynosi 0, w drugim 1 itd.

Aby zaszyfrować pewien tekst, potrzebne jest słowo kluczowe. Słowo kluczowe jest tajne i mówi, z którego wiersza (lub kolumny) należy w danym momencie skorzystać.

Przypuśćmy, że chcemy zaszyfrować prosty tekst, np.:

TO JEST BARDZO TAJNY TEKST

Do tego celu użyjemy znanego tylko nam słowa kluczowego, np. TAJNE

Na początku zauważamy, że użyte słowo kluczowe jest zbyt krótkie,
by wystarczyło do zaszyfrowania całego tekstu, więc należy użyć jego wielokrotności. Będzie to miało następującą postać:

TO JEST BARDZO TAJNY TEKST

TA JNET AJNETA JNETA JNETA

Następnie wykonujemy szyfrowanie w następujący sposób: litera szyfrogramu odpowiada literze z tabeli znajdującej się na przecięciu wiersza, wyznaczanego przez literę tekstu jawnego i kolumny wyznaczanej przez literę słowa kluczowego, np. po kolei T i T daje M, O i A daje O itd. W efekcie otrzymujemy zaszyfrowany tekst:

MO SRWM BJEHSO CNNGY CROLT

Warto zauważyć, że tak naprawdę nie ma znaczenia, czy litera tekstu jawnego będzie wyznaczała wiersz, a słowa kluczowego kolumnę, czy na odwrót, efekt szyfrowania będzie zawsze taki sam.

Deszyfracja przebiega bardzo podobnie. Bierzemy kolejne litery szyfrogramu oraz odpowiadające im litery słowa kluczowego (podobnie, jak przy szyfrowaniu). Wybieramy kolumnę odpowiadającą literze słowa kluczowego. Następnie w tej kolumnie szukamy litery szyfrogramu. Numer wiersza odpowiadający znalezionej literze jest numerem litery tekstu jawnego. Np. w kolumnie T litera M znajduje się
w wierszu T, w kolumnie A litera O znajduje się w wierszu O itd.

Istnieje jednakże prostszy, szczególnie dla celów implementacyjnych, sposób deszyfrowania. Wymaga on wykonania prostej operacji „odwrócenia” hasła, jak poniżej:

K2(i) = [26 – K(i)] mod 26

gdzie K(i) – kolejne litery słowa kluczowego, numerowane A=0, B=1 itd., a K2(i) – kolejne litery hasła „odwróconego”. 26 oznacza liczbę liter alfabetu łacińskiego.

Efektem działania takiego przekształcenia dla hasła „TAJNE” będzie słowo „HARNW”.

Następnie należy na szyfrogramie wykonać operację szyfrowania z otrzymanym hasłem. Wynikiem, jak można się przekonać, będzie postać jawna tekstu.

Pierwsze złamanie szyfru nastąpiło prawdopodobnie w roku 1854 przy użyciu kryptoanalizy statystycznej i zostało dokonane przez Charles’a Babbage’a.3 Istotą złamania szyfru było podzielenie wiadomości na części w ilości równej długości klucza. W wyniku podziału otrzymywano urywki wiadomości, które można było traktować jak zaszyfrowane szyfrem monoalfabetycznym.

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 = (yk) 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 http://kryptografia.republika.pl/enigma.html

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *