Caesar code
Великий полководец, Юлий Цезарь (Gaius Julius Caesar) оставил нам не
только юлианский календарь и "Записки о галльской войне" ("De Bello
Gallico", 58-50 BC), но и одну из первых систем шифрования, которая
так и называется "Код Цезаря".
Вот исчерпывающее описание из Encyclopaedia Britannica:
> The simplest of all substitution ciphers are those in which the
> cipher alphabet is merely a cyclical shift of the plaintext alphabet.
> Of these, the best known is the Caesar cipher, used by Julius Caesar,
> in which A is encrypted as D, B as E, and so forth. As many a
> schoolchild has discovered to his sorrow, cyclical-shift substitution
> ciphers are not secure. As is pointed out in the section on
> cryptanalysis (see below Cryptanalysis), neither is any other
> monoalphabetic substitution cipher in which a given plaintext symbol
> is always encrypted into the same ciphertext symbol. Because of the
> redundancy of the English language, only about 25 symbols of
> ciphertext suffice to permit the cryptanalysis of monoalphabetic
> substitution ciphers. The explanation for this weakness is that the
> frequency distributions of symbols in the plaintext and in the
> ciphertext are identical, only the symbols having been relabeled. In
> fact, any given structure or pattern in the plaintext is always
> preserved intact in the ciphertext, so that the cryptanalyst's task
> is an easy one.
Код Цезаря (простейший подстановочный код) состоит в замене
(подстановке) буквы, отстоящей от заменяемой на фиксированное число
позиций. Сам Цезарь (во время галльской войны) использовал число 3 (A
заменялось на D, B на E, C на F итд), но может быть использовано и
любое другое число.
Обратите внимание на цикличность подстановки - дойдя до конца
алфавита мы переходим к его началу.
Это можно представить так, словно у нас есть циферблат с 26
латинскими буквами (вместо 12 арабских цифр) и сделав полный
круг стрелка снова показывает на первую букву.
Понятно, что секретность (криптостойкость) такого кода очень мала, но
он иногда применяется как часть более сложных криптосхем.
С математической точки зрения, используется операция сложения по
модулю 26 (число букв латинского алфавита). Это можно записать так:
CipherLetter = (PlainLetter + 3) mod 26
Новая (кодированная) буква получается из старой (оригинальной) буквы
сдвигом на три позиции с учетом цикличности подстановки. То есть,
вместо 27-й буквы снова используется первая итд.
Легко понять, что по модулю можно не только складывать, но и вычитать.
На нашем "циферблате" это просто будет обозначать перевод стрелки не
вперед, а назад.
А как выглядит вычитание по модулю 2 ?
В двоичном алфавите только 2 буквы - 0 и 1.
При циклическом сдвиге после 1 снова следует 0, а после 0 снова 1.
Это означает, что в двоичной системе сложение и вычитание по модулю 2
неразличимы (совпадают). Благодаря этому, сложение по модулю 2 (XOR)
очень широко используется в различных криптографических схемах, так
как зашифровка и расшифровка выполняются с использованием той же
самой операции - XOR.
© Gazlan 2011 * gazlan@yandex.ru
|