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.
Kontynuację artykułu znajdziesz tutaj

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *