Смекни!
smekni.com

Шифрование и дешифрование данных при помощи симметричных криптографических алгоритмов (стр. 2 из 4)

'------программа шифрования взбиванием

DEFINT I-N: DEFSTR S

RANDOMIZE 231

CLS: LOCATE 1, 1

Lot = 5

s$ = ""

FOR i=1 TO 64:s$=s$+CHR$(65+25*RND):NEXT

PRINT s$; " - text": sav = s$

s$ = ""

FOR i=1 TO 192: s$=s$+CHR$(255*RND): NEXT

'---------------------шифрование

FOR i = 0 TO Lot

sc=MID$(ss,1+I*32,32)

l=2^i:sl="": r=""

FOR j = 1 TO 32

kg=ASC(MID$(sc, j, 1))

kl=ASC(MID$(s$, j, 1))

kr=ASC(MID$(s$, j+32,1))

sl = sl+ CHR$(kl XOR kr)

sr = sr+ CHR$(kr XOR kg)

NEXT

s$=sr+RIGHT$(sl,l)+LEFT$(sl,32-l)

NEXT

'----------------------порча бита

ss=CHR$(ASC(s$) XOR 4)+RIGHT$(s$,63)

'-----------------печать шифровки

FOR i =1 TO 64

k = ASC(MID$(s$, i, 1))

DEF SEG=47114: POKE 2*i-2, k: DEF SEG

NEXT

LOCATE 2, 65: PRINT " - code"

'---------------расшифровывание

FOR i = Lot TO 0 STEP -1

sc=MID$(s$, 1+i*32, 32): l=2^i

s$=RIGHT$ (s$ ,32- l)+MID$ (s$, 33,l)+LEFT$ (s$, 32)

sl = "": sr = ""

FOR j = 1 TO 32

kg = ASC(MID$(sc, j, 1))

kl = ASC(MID$(ss, j, 1))

kr = ASC(MID$(ss, j+32, 1))

sl = sl+ CHR$(kl XOR kr XOR kg)

sr = sr+ CHR$(kr XOR kg)

NEXT

ss = sl+sr

NEXT

FOR i =1 TO 64

k = ASC(MID$(s$, i, 1))

DEF SEG=47124: POKE 2*i-2,k: DEF SEG

NEXT

LOCATE 3, 65: PRINT " - text"

n = 0

FOR i =1 TO 64

IF MID$ (s$, i, 1) =MID$(sav, i,1) THEN

LOCATE 4, i: PRINT "+";: n = n+I

ELSE

LOCATE 4, i: PRINT "-";

END IF

NEXT

LOCATE 6, 1: PRINT 64 - n; "errors"

END

Шифр Цезаря

Подстановка Цезаря является самым простым вариантом подстановки. Она относится к группе моноалфавитных подстановок.

При моноалфавитной замене каждой букве алфавита открытого текста ставится в соответствие одна буква шифртекста из этого же алфавита.

Определение. Подмножество Cm={Ck: 0Јk<m} симметрической группы SYM(Zm), содержащее m подстановок Ck: j®(j+k) (mod m), 0Јk < m, называется подстановкой Цезаря.

Подстановки приведены в Табл. 1. Стрелка (а) означает, что буква исходного текста (слева) шифруется при помощи C3 в букву шифрованного текста (справа).

Определение. Системой Цезаря называется моноалфавитная подстановка, преобразующая n-грамму исходного текста (x0, x1 ,..,xn-1) в n‑грамму шифрованного текста (y0 ,y1 ,...,yn-1) в соответствии с правилом

yi=Ck(xi), 0Јi<n.

Например, ВЫШЛИТЕ_НОВЫЕ_УКАЗАНИЯ посредством подстановки C3 преобразуется в еюыолхиврсеюивцнгкгрлб.

Таблица 1.

Ааг Йам Тах Ыаю
Бад Кан Уац Ьая
Вае Лао Фач Эа_
Гаж Мап Хаш Юаа
Даз Нар Цащ Яаб
Еаи Оас Чаъ _ав
Жай Пат Шаы
Зак Рау Щаь
Иал Саф Ъаэ

Основным недостатком рассмотренного метода является то, что статистические свойства открытого текста (частоты повторения букв) сохраняются в шифртексте.

При своей несложности система легко уязвима. Если злоумышленник имеет

1) шифрованный и соответствующий исходный текст или

2) шифрованный текст выбранного злоумышленником исходного текста, то определение ключа и дешифрование исходного текста тривиальны.

Квадрат Полибия

Применительно к современному латинскому алфавиту из 26 букв шифрование по этому квадрату заключалось в следующем. В квадрат размером 5x6 клеток выписываются все буквы алфавита, при этом буквы I,J не различаются (J отождествляется с буквой I);

A B C D E
A A B C D E
D F G H I K
C L M N O P
D Q R S T U
E V W X Y Z

Шифруемая буква заменялась на координаты квадрата, в котором она записана. Так, B заменялась на AB, F на BA, R на DB и т.д. При расшифровании каждая такая пара определяла соответствующую букву сообщения. Ключом такого шифра являлось расположение букв в таблице к примеру 5x5. Начальное расположение букв должно определяться ключом.


"Тюремный шифр"

В несколько измененном виде шифр Полибия получил своеобразное название "тюремный шифр". Для его использования нужно только знать естественный порядок расположения букв алфавита (как в указанном выше примере для английского языка). Стороны квадрата обозначаются не буквами (ABCDE), а числами (12345). Число 3, например, передается путем тройного стука. При передаче буквы сначала "отстукивается число, соответствующее строке, в которой находится буква, а затем номер соответствующего столбца. Например, буква "F" передается двойным стуком (вторая строка) и затем одинарным (первый столбец).

Отметим, что при произвольном расположении букв в квадрате возникает одно затруднение: либо нужно помнить отправителю и получателю сообщения заданный произвольный порядок следования букв в таблице (ключ шифра), что вообще говоря затруднительно, либо иметь при себе запись этих букв. Во втором случае появляется опасность ознакомления с ключом посторонних лиц. Поэтому в ряде случаев ключ составляется следующим образом. Берется некоторое "ключевое слово", которое легко запомнить, например, "CRYPTOLOGY", удаляют из него повторы букв (получают "CRYPTOLOG") и записывают его в начальных клетках квадрата. В оставшиеся клетки записываются остальные буквы алфавита в естественном порядке.

A B C D E A C R Y P T B O L G A B C D E F H I E U V W X Z

В таком шифре ключом является указанное "ключевое слово" ("пароль").

Шифр Плэйфера (Биграммы)

Более эффективны обобщения подстановки Цезаря - шифр Хилла и шифр Плэйфера. Они основаны на подстановке не отдельных символов, а 2-грамм (шифр Плэйфера) или n-грамм (n-граммой называется последовательность из n символов алфавита.) (шифр Хилла). При более высокой криптостойкости они значительно сложнее для реализации и требуют достаточно большого количества ключевой информации.

Наиболее известный шифр биграммами называется Playfair. Он применялся Великобританией в Первую мировую войну. Опишем его на примере той же самой таблицы. Открытый текст разбивался на пары букв (биграммы) и текст шифровки строился из него по следующим двум очень простым правилам.

1. Если обе буквы биграммы исходного текста принадлежали одной колонке таблицы, то буквами шифра считались буквы, которые лежали под ними. Так биграмма УН давала текст шифровки ВЧ. Если буква открытого текста находилась в нижнем ряду, то для шифра бралась соответствующая буква из верхнего ряда и биграмма ОЯ давала шифр ШБ. (Биграмма из одной буквы или пары одинаковых букв тоже подчинялась этому правилу и текст ЕЕ давал шифр ИИ).

2. Если обе буквы биграммы исходного текста принадлежали одной строке таблицы, то буквами шифра считались буквы, которые лежали справа от них. Так биграмма ИВ давала текст шифровки КГ. Если буква открытого текста находилась в правой колонке, то для шифра бралась соответствующая буква из левой колонки и биграмма ОМ давала шифр ДН.

Если обе буквы биграммы открытого текста лежали в разных рядах и колонках, то вместо них брались такие две буквы, чтобы вся четверка их представляла прямоугольник. При этом последовательность букв в шифре была зеркальной исходной паре.

Двойной квадрат

Шифровка биграммами, которую называют двойной квадрат, открыл новый этап в криптографии. Двойной квадрат использует сразу две таблицы, расположенные по горизонтали, а шифрование идет биграммами, как в шифре Playfair. Эти, казалось бы и не столь уж значительные изменения привели к появлению на свет новой криптографической системы ручного шифрования. Имеются две таблицы со случайно расположенными в них алфавитами. Для шифрования сообщение разбивают на биграммы. Первая буква биграммы находится в левой таблице, а вторая в правой. Затем, мысленно в таблице строится прямоугольник так, чтобы буквы биграммы лежали в его противоположных вершинах. Другие две вершины этого прямоугольника дают буквы шифровки.

Метод переименования

Суть метода - создается таблица из 256 элементов с неодинаковыми значениями (по случайному закону). Каждый байт заменяется элементом этой таблицы с индексом равным байту. После этого таблица вписывается в тело файла, а адрес таблицы в файле является ключом. Таким образом длина файла увеличивается на 256 байт. Декодирование производится в обратном порядке.

Шифр Гронсфельда

Шифры сложной замены называют многоалфавитными, так как для шифрования каждого символа исходного сообщения применяется свой шифр простой замены. Шифр Гронсфельда тоже многоалфавитный шифр - в нем 10 вариантов замены.

Состоит в модификации шифра Цезаря числовым ключом. Для этого под сообщением пишут ключ. Если ключ короче сообщения, то его повторяют циклически. Шифровку получают будто в шифре Цезаря, но отсчитывая необязательно только третью букву по алфавиту, а ту, которая сдвинута на соответствующую цифру ключа. Шифр Гронсфелвда имеет массу модификаций, претендующих на его улучшение, от курьезных, вроде записи текста шифровки буквами другого алфавита, до нешуточных, как двойное шифрование разными ключами.

Кроме этих шифров, зачастую использовался шифр простой замены, заключающийся в замене каждой буквы сообщения на соответствующую ей букву шифра. Такой шифр, популярный среди школьников, является простым кодом и вскрытие его возможно при длине шифровки всего в 20-30 букв, а при длинах текста свыше 100 символов представляет собой очень простую, но весьма увлекательную задачу.

АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ

А АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ