Jest to szyfr idealnie bezpieczny, nie istnieje metoda złamania go (wliczając w to metodę brute force czyli podstawiania każdego znaku w celu ustalenia poprawnej kolejności). Został stworzony w roku 1917 przez Gilberta Vernama. Obecnie istnieją dwie wersje szyfru - binarna oraz zwykła, znakowa. Różnią się one metodą szyfrowania tekstu - w jednej wykorzystuje się algorytm XOR, a w drugim Vigenere'a. To co sprawia, że hasło jest niespotykanie skuteczne to jego długość (taka sama, jak długość wiadomości), losowość oraz fakt, że może być użyte tylko jeden raz. Odpowiedź dla nadawcy jest generowana przy użyciu nowego klucza. Zarówno algorytm XOR jak i Vigenere'a są szyframi podstawieniowymi, jednak spełnienie trzech wcześniejszych warunków zapewnia całej metodzie szyfrowania bezwarunkowe bezpieczeństwo.
p | q | XOR |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
W celu zaszyfrowania wiadomości Kaspersky na początku musimy zapisać ją w systemie binarnym. Oczywiście w praktyce wiadomość (np. treść listu) byłaby dłuższa, a co za tym idzie bezpieczniejsza, biorąc po uwagę fakt, że klucz będzie równy długości informacji.
K a 75(10) 97(10) 01001011(2) 01100001(2) 01001011 01100001 01110011 01110000 01100101 0110010 01110011 01101011 01111001
Mając już wiadomość w systemie dwójkowym, należy jeszcze wygenerować hasło. Musi ono jednak zostać stworzone w sposób całkowicie losowy, a wbrew pozorom nie jest to zadanie łatwe. Istnieją wprawdzie generatory liczb pseudolosowych, jednak - jak wskazuje nazwa - ich użycie nie daje całkowitej losowości i pozwala na wykrycie pewnych regularności, okresowości. Najlepszym rozwiązaniem jest użycie generatora bazującego np. na przypadkowości i zmienności temperatury podzespołów komputerowych (takich jak procesor). Dla naszego przykładu wygenerowane zostały liczby:
01000001 01101110 01110100 01111001 01110111 01101001 01110010 01110101 01110011 operacja XOR 01001011 01100001 01110011 01110000 01100101 01110101 01110011 01101011 01111001 01000001 01101110 01110100 01111001 01110111 01101001 01110010 01110101 01110011 XOR
00001010 00001111 00000111 00001001 00010010 00011100 00000001 00011110 00001010
Biorąc po uwagę fakt, że wygenerowane hasło byłoby użyte tylko raz, liczby są losowe a długość hasła odpowiada długości wiadomości szyfrowanej, mamy znamiona szyfrowania OTP (ang. One Time Password - hasło wykorzystywane jest tylko raz i traci ważność po wykorzystaniu). Próby łamania tego hasła zakończą się niepowodzeniem, ponieważ bez znajomości klucza nie da się odtworzyć wiadomości pierwotnej. Wynika to z faktu, że kryptogram jest tak samo losowy jak klucz. Znając wynik działania operacji XOR możemy jedynie przypuszczać i podstawiać kolejne znaki a z nich wyliczać hasło, jednak bez wiedzy, czy podstawiony znak jest prawdziwy nie zdołamy odgadnąć hasła, tym bardziej, że zostanie użyte tylko raz. Nie będzie więc można przeprowadzić kryptoanalizy na podstawie częstotliwości występowania pewnych symboli lub układów symboli (jak robi się to w przypadku szyfrów podstawieniowych). Będą się one zmieniały z każdą kolejną wiadomością.