Zielony Smok - logo witryny

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.