Załóżmy, że jestem napastnikiem i mam do czynienia ze słabym, ale nieznanym algorytmem szyfrowania opracowanym przez „Dave'a”. Jak bym to złamał? Nie wiedziałbym nawet, od czego zacząć. Byłby to pozornie nic nie znaczący ciąg znaków.
Zgadza się, nie zrobiłbyś tego. Oto kilka zaszyfrowanych danych (4587556841584465455874588). Masz pojęcie, co to oznacza? Absolutnie nie.
Jednak brakuje Ci podstawowego, fundamentalnego i najważniejszego z integralnie ważnego klucza centralnego do wszechświata, który łączy kryptografię. Pomysł jest prosty:
klucz jest wszystkim
To wszystko. To jest kawałek, który musisz chronić. Kawałek, którego musisz strzec swoim życiem i miej nadzieję, że nikt nie uderzy cię młotkiem, dopóki nie powiesz im, co to jest.
Na tej podstawie musisz założyć, że Twój algorytm może zostać odczytany przez atakującego . Wiedzą, jak to działa. Potrafią udokumentować jego proces. Jeśli są jakieś słabości, znajdą je. I wykorzystają je. Jak ten wściekły ojciec CIA z Schwytanych.
Okazuje się, że jest to mniej założenie, a bardziej praktyczne zastosowanie. Dave, kryptograf domowy, chce włączyć algorytm szyfrowania do swojego programu. Decydując się zrezygnować z wszelkich testów i prac projektowych, które kryptolodzy wykonywali dla niego przez lata za darmo, pisze coś związanego z dziwnym xor, kompiluje swój program i pożytecznie przekazuje go znajomym.
Ten algorytm jest teraz dostępny ich ręce. Gra skończona.
Teraz możesz zapytać „czy nie mogę po prostu zachować algorytmu w tajemnicy? To zadziała, prawda?” Oh Dave, proszę przestań. Nie nie nie. Problem z tajnymi algorytmami polega na tym, że prawdopodobieństwo kradzieży jest znacznie większe. W końcu klucz jest inny dla każdego użytkownika (właściwie nie jest to wymóg, ale załóżmy, że to dla uproszczenia), ale algorytm pozostaje niezmieniony. Potrzebujesz więc tylko jednej ze swoich implementacji, aby być narażonym na atak i to jest koniec gry.
Edycja : OK, w odpowiedzi na zaktualizowane pytanie OP. Załóżmy na chwilę, że algorytm jest całkowicie nieznany. Każdy z dwóch uczestników zaszyfrowanej rozmowy ma doskonałe zabezpieczenie implementacji swojego algorytmu.
W tym przypadku masz dane do analizy. Możesz wykonać jedną z następujących czynności:
- Przeanalizuj pod kątem często znanych liter. W ten sposób można złamać typowy szyfr przesuwający Cezara.
- Spróbuj odgadnąć długość klucza. Mając te informacje, możesz przejść do wyszukiwania powtarzających się bloków tekstu zaszyfrowanego, które mogą odpowiadać temu samemu tekstowi jawnemu.
- Spróbuj indeks koincydencji i inne tego rodzaju miary używane do złamania szyfru Vigenere, ponieważ wiele szyfrów polialfabetycznych jest (prawdopodobnie ) tylko warianty tego.
- Uważaj na wzorce. Każdy wzór może dać ci klucz.
- Poszukaj innych wskazówek. Czy długości odpowiadają pewnej mierze, czy są na przykład wielokrotnościami pewnej wartości, takiej jak granica bajtów, a więc są (prawdopodobnie) uzupełniane?
- Spróbuj przeprowadzić analizę za pomocą jednego z szyfru symetrycznego techniki kryptoanalizy. W wielu przypadkach opierają się one na znajomości algorytmu, więc mogą nie mieć zastosowania w tym przypadku.
- Jeśli uważasz, że dane, o których mowa, stanowią wymianę kluczy, możesz wypróbować jedną z wielu technik umożliwiających złamanie publicznego algorytmy kluczy.
Faktem jest, że krótki fragment danych z nieznanego algorytmu może być niemożliwy do odszyfrowania. Nie oznacza to jednak, że należy na tym polegać. Im więcej danych może odzyskać kryptoanalityk, tym większe jest prawdopodobieństwo, że złamie twój algorytm. Prawdopodobnie nie wiesz, bez poważnej kryptoanalizy, jaka jest ta granica - na przykład rozsądne jest założenie, że można by brutalnie zmusić algorytm szyfru cezera dla słów trzyliterowych, ponieważ jest ich niewiele, które mają sens.
Masz również problemy z ponownym wykorzystaniem. Podczas II wojny światowej Engima przezwyciężyła ten problem, mając programowalne ustawienia swojego tajnego algorytmu, ale ten też został zepsuty.
Należy również wziąć pod uwagę ludzki element kryptografii. Zdaję sobie sprawę, że etykieta na puszce mówi „użyć raz, nie trawić” itp., Ale ludzie są ludźmi i prawdopodobnie użyją dwa, trzy razy itp. Każde takie zachowanie działa na korzyść kryptoanalityka.