Atak kryptologiczny
Atak kryptologiczny – próba odczytania informacji zaszyfrowanej bez znajomości pełnego zespołu potrzebnych do tego informacji, inna próba wrogiego wykorzystania protokołu krytpograficznego celem uzyskania informacji, do których nie jest się autoryzowanym, lub innego oszustwa, jak np. możliwości cyfrowego podpisania się z fałszywą tożsamością itp.
Ponieważ w praktyce można założyć, że podczas łamania szyfrogramu pewne informacje zwykle są dostępne, co najmniej jest to sama zaszyfrowana wiadomość (szyfrogram, krypt), zwykle także znany jest algorytm szyfrowania, wyróżnia się następujące ogólne rodzaje ataków kryptologicznych (w zasadzie w kolejności od najtrudniejszych do najłatwiejszych do przeprowadzenia):
- ataki możliwe do przeprowadzenia bez znajomości jakichkolwiek informacji, poza pojedynczym szyfrogramem (tekstem tajnym);
- ataki możliwe do przeprowadzenia przy znajomości wielu szyfrogramów;
- ataki możliwe do przeprowadzenia przy znajomości algorytmu i szyfrogramu (-ów) (zobacz: Atak z szyfrogramem);
- ataki możliwe do przeprowadzenia przy znajomości tekstu jawnego i szyfrogramu (zobacz: atak ze znanym tekstem jawnym);
- ataki możliwe do przeprowadzenia przy możliwości wybrania tekstu jawnego (np. możemy spowodować, że ktoś zaszyfruje podstawioną przez nas wiadomość);
Skuteczny atak na jakikolwiek szyfr zwykle wykorzystuje techniki należące do wielu rodzajów ataków. I tak startując od przechwyconego szyfrogramu oceniamy w pierwszej kolejności możliwe algorytmy szyfrowania, które posłużyły do wygenerowania kryptu. Jednocześnie zwykle prowadzimy dalszy nasłuch, tak aby uzyskać większa ilość informacji, w tym szyfrogramów (ale nie tylko, istotne mogą być także inne informacje, ich określeniem zajmuje się sztuka inwigilacji). Tym samym z kategorii pierwszej przesuwamy się przez drugą do trzeciej, a czasem do czwartej. Czasami możliwe jest nakłonienie osoby do przesłania pewnej informacji w sposób zaszyfrowany, co powoduje, że możemy zastosować metody z kategorii piątej.
Historia kryptografii dowodzi, że nie ma w praktyce absolutnie bezpiecznych protokołów kryptograficznych. Nawet zastosowanie matematycznie bezpiecznego algorytmu szyfrowania nadal obciążone jest ryzykiem niewłaściwego użycia, niechlujności czy błędu człowieka. Współczesne algorytmy szyfrowania oferują teoretycznie bardzo wysoki poziom bezpieczeństwa, jednak należy pamiętać o następujących faktach:
- zwykle użytkownik wybiera klucz szyfrujący. 90% ludzi używa w tym celu łatwych do zgadnięcia fraz lub słów. Bezpieczeństwo faktyczne kryptosystemu zależy zarówno od algorytmu, jak i od rozmiaru przestrzeni faktycznie używanych kluczy (atak słownikowy);
- wybranie zbyt skomplikowanego klucza zwykle pociąga za sobą konieczność jego zapisania (ataki socjotechniczne)
- szyfrowanie zwykle jest przeprowadzane przez oprogramowanie komercyjne, często pisane bez właściwej analizy implementacji skądinąd doskonałych algorytmów szyfrowania. Nawet najbezpieczniejszy algorytm szyfrowania nie zapewnia bezpieczeństwa, jeśli został niewłaściwie zaimplementowany (np. użyto zbyt prymitywnego generatora liczb losowych);
- oprogramowanie działa w środowisku systemu operacyjnego, który zwykle (dla typowych, popularnych systemów operacyjnych) nie posiada mechanizmów zabezpieczających przed np. odczytaniem danych z pamięci czy z klawiatury w momencie ich zapisywania, lub np. odtworzenia możliwych ziaren generatora liczb losowych (jeśli np. używa się jako ziarna danych z zegara systemowego);
- oprogramowanie działa w środowisku z dostępem do sieci Internet, co ułatwia zastosowanie modyfikowanych ataków słownikowych;
Znane są przypadki złamania nawet „absolutnie bezpiecznych” kryptosystemów, jak np. projekt Venona, w którym dzięki błędowi człowieka złamano rzekomo absolutnie bezpieczny szyfr, tzw. one time pad.