Szyfr XOR-Vernama-Vigenere’a (1)
Szyfry typu one-time-pad, czyli szyfry jednokrotne z dodatkowymi założeniami, są szyframi potencjalnie niebezpiecznymi, gdyż przy spełnieniu odpowiednich warunków mogą okazać się szyframi nie do złamania.
Szyfr Vigenere’a, tyle że w wersji strumieniowej, był używany w czasie zimnej wojny do szyfrowania rozmów przez czerwony telefon między Moskwą a Waszyngtonem.
Aby szyfr one-time-pad był nie do złamania musi spełniać następujące warunki:
- długość klucza jest co najmniej równa długości tekstu szyfrowanego
- klucz jest użyty jednokrotnie
- klucz jest losowy
Pierwszy warunek nie jest zbyt trudny do spełnienia, chociaż generowanie długich ciągów losowych bywa kłopotliwe.
Drugi warunek jest trudniejszy do spełnienia. W warunkach zimnej wojny klucze między Moskwą, a Waszyngtonem przekazywano przez kurierów. Dzisiaj, w dobie Internetu, jest to znacznie łatwiejsze, chociaż nadal obciążone sporym ryzykiem.
Trzeci warunek jest bardzo bardzo bardzo trudny do spełnienia i jeśli nie dysponujesz odpowiednimi generatorami słów losowych i nie umiesz sprawdzić ich losowości to ten szyfr jest szyfrem niezbyt trudnym do złamania. Tak naprawdę dobrych i pewnych generatorów losowych nie ma. Nawet generatory oparte na liczniku rozpadów promieniotwórczych nie są w pełni losowe.
Problem ze złamaniem szyfru nie tkwi w sile maszyn użytych do jego złamania, ale w matematyce, w związku z tym, ani teraz ani nigdy, nawet przy użyciu komputerów kwantowych, szyfry te odpowiednio przygotowane (tj. spełniające powyższe warunki) – są i będą nie do złamania.
Niemożność złamania tego szyfru była udowodniona w 1949 roku przez słynnego Shannona (tego od teorii komunikacji).
W związku z obowiązującymi prawami, w Polsce, zgodnie z Ustawą o broni i amunicji, produkcja szyfrów powyżej pewnej (56b) siły szyfrowania wymaga stosownej koncesji. Produkcja szyfrów bez koncesji jest równoznaczna z nielegalną produkcji broni i podlega tym samym karom..
Dlatego też przedstawiamy tutaj szyfry zabawki, pozbawione cech broni, które, jeśli chcesz przerobić na broń, to możesz to uczynić na własną odpowiedzialność (albo postarać się o koncesję). Jeśli jednak potrafisz to uczynić to prawdopodobnie nie potrzebujesz ani naszych zabawek ani tego artykułu. Przedstawiona wersja szyfru jest wersją dostępną w Internecie, ale została przerobiona tak, aby można było używać polskich liter i innych znaków powszechnie używanych.
Ten szyfr występuje w 2 wersjach:
- wersja binarna (szyfr XOR/Vernama)
- wersja znakowa (szyfr Vigenere’a)
Szyfr XOR/Vernama
Szyfr XOR oparty jest na działaniu operatora bitowej różnicy symetrycznej XOR(^).
Szyfrowanie
Znak w kluczu = K
K w tablicy kodowej ma kod = 75
75 w postaci binarnej = 01001011
Znak w wiadomości = Z
Z w tablicy kodowej ma kod = 90
90 w postaci binarnej = 01011010
bitowa różnica symetryczna K^Z = 75^90 =
01001011
^
01011010
————
00010001
00010001 w postaci dziesiętnej = 17
17 w tablica kodowej = (ten znak normalnie nie jest znakiem pisarskim i nie jest wyświetlany)
Odszyfrowywanie
Znak w zaszyfrowanej wiadomości =
w tablicy kodowej ma kod = 17
17 w postaci binarnej = 00010001
bitowa różnica symetryczna ^K
00010001
^
01001011
————
01011010
01011010 w postaci dziesiętnej = 90
90 w tablicy kodowej = Z
Dwukrotne zaszyfrowanie tej samej wiadomości tym samym kluczem daje wiadomość wyjściową. Ta właściwość szyfru jest nazywana inwolutywnością.
Jeżeli klucz jest krótszy od wiadomości, klucz stosuje się cyklicznie. W takim przypadku ułatwione jest złamanie szyfru. Łatwiej jest też złamać szyfr, gdy słowa klucza są słowami języka naturalnego, ze względu na różną częstotliwość występowania poszczególnych znaków (liter) w danym języku.
Algorytm
Został przedstawiony we wpisie Szyfr XOR.