Bezpieczeństwo

Bezpieczeństwo cz. I – Kryptografia symetryczna

By on 18 stycznia 2017

U podstaw wielu rozwiązań dotyczących bezpieczeństwa leży kryptografia, czyli nauka o szyfrach. Zrozumienie jej podstaw jest kluczem do zrozumienia na czym opiera się bezpieczeństwo w aplikacjach, w tym aplikacjach mobilnych.

Obecnie istnieją dwa nurty kryptografii : symetryczna i asymetryczna. Zrozumienie różnicy pomiędzy nimi jest kluczowe.

Najpierw skupmy się na kryptografii symetrycznej. Charakterystyczne dla niej jest to, że obie strony komunikujące się ze sobą posiadają jeden i ten sam klucz. Klucz ten służy do szyfrowania i odszyfrowania wiadomości. Gdyby wpadł w ręce osoby postronnej to i ona mogłaby wysyłać i odbierać wiadomości nieprzeznaczone dla niej, dlatego koniecznie musi być prywatny. Klucze symetryczne są dość krótkie. Za bezpieczny klucz uznaje się klucz 128 bitowy, a w dłuższej perspektywie zwiększania się mocy obliczeniowej komputerów używanych do łamania szyfrów klucz 256 bitowy. Algorytmy symetryczne używane przy szyfrowaniu są bardzo szybkie, co przy obecnym sprzęcie pozwala na przesyłanie wiadomości z prawie niezauważalnym dla człowieka opóźnieniem. Stanowią one też najstarszą klasę szyfrów stosowaną już od starożytności(tylko wówczas w bardziej elementarnej formie).

Jedną z prostszych metod szyfrowania symetrycznego używaną w przeszłości (obecnie niewystarczającą) były permutacje, czyli podmiana liter na inny zestaw np. klucz mnbvcxzlkjhgfdsapoiuytrewq oznacza, że szyfrując literę „A” podmieniano na „M”, a literę „B” na literę „N” itd. Odszyfrowanie odbywało się w drugą stronę, czyli „M” na „A”, „N” na „B” itd. Metoda sprawdzała się dopóki nie wymyślono maszyn liczących, które na podstawie częstości występowania liter w alfabecie polskim i częstości występowania znaków w zaszyfrowanym tekście mogły odgadywać szyfr. Przykładowo najczęściej występująca litera w zaszyfrowanym tekście to najprawdopodobniej „A”, bo „A” najczęściej występuje w polskich tekstach(8.91%). Postęp techniki wymusił wymyślenie takich algorytmów opartych m.in. na wielokrotnych podmianach, podziałach na bloki, łączeniu poszczególnych elementów w taki sposób, żeby każda litera w wynikowym tekście(szyfrogramie) występowała z taką samą częstością.

Przykładami sprawdzonych i uważanych obecnie za bezpieczne algorytmów symetrycznych są AES i 3DES. Chcąc wykorzystać dany algorytm należy sprawdzić jaki jest stopień jego bezpieczeństwa w momencie pisania aplikacji opartej na nim. Możliwe, że w chwili kiedy czytasz ten wpis w przyszłości któryś z tych algorytmów jest już przestarzały i nie zapewnia odpowiedniego bezpieczeństwa.

Kolejną ważną kwestią dotyczącą kryptografii symetrycznej jest problem z bezpiecznym przekazaniem klucza prywatnego, tak aby ten klucz posiadały obie strony transmisji. Na pewno nie możemy go przesłać przez łącze internetowe w formie jawnej, bo ktoś mógłby go podsłuchać, a zaszyfrować go też nie możemy, bo musielibyśmy posiadać drugi zestaw kluczy i w ten sposób koło się zamyka. Jedyna opcja to przekazać go bezpośrednio zaufanej osobie w formie fizycznej i tak było aż do wymyślenia kryptografii asymetrycznej o czym napiszę w kolejnym wpisie dotyczącym bezpieczeństwa.

TAGS
RELATED POSTS

LEAVE A COMMENT