Czy istnieje szyfr, którego nie można złamać? Ponieważ właściwie nie istnieją zabezpieczenia, których się nie da złamać, odpowiedź powinna brzmieć "oczywiście, że nie istnieje, istnieją co najwyżej takie, których się nie da złamać w sensownym czasie". Problem w tym, że odpowiedź ta jest nieprawidłowa.
Szyfr idealny
Szyfr ten nazywa się one-time-pad. W starych czasach był implementowany ręcznie na skrawkach papieru, w dobie komputerów jest to zwykły XOR. I tutaj powinno nastąpić choćby odwołanie do strony Pawła Krawczyka, oraz zwymyślanie mnie od kretynów. Problem w tym, że XOR jest rzeczywiście elementem niełamalnego szyfru. Pod pewnymi warunkami:
- długość klucza jest (co najmniej) równa długości wiadomości,
- klucz używany jest dokładnie raz (to znaczy dwa razy, do zaszyfrowania, a później do odszyfrowania wiadomości),
Złamanie dowolnej z powyższych zasad powoduje, że już nie mamy do czynienia z one-time-pad, a ze "zwykłym" XOR, który w praktyce jest po prostu pewnym uogólnieniem szyfru Vigenere. Ponownie polecam CryptTool, w którym można się pobawić w szyfrowanie i późniejsze łamanie wiadomości, właśnie przy pomocy szyfru Vigenere.
Dlaczego one-time-pad jest niełamalny? Dlatego, że nie ma żadnej regularności w zaszyfrowanym tekście. Żadnej, pod warunkiem, że klucz jest losowy i nie jest krótszy niż wiadomość. Jeśli klucz nie został wygenerowany w sposób losowy (lub generator liczb pseudolosowych jest kiepski), bezpieczeństwo całości rozwiązania zmniejsza się. Jeśli klucz jest krótszy niż wiadomość, to w praktyce mamy przypadek wykorzystania dwa razy tego samego klucza do (co najmniej) dwóch różnych wiadomości (po prostu wiadomość dzieli się na "bloki" o długości klucza wykorzystanego do XOR i każdą można traktować oddzielnie).