Y, = а хi + b( mod g),
а - некоторый постоянный десятичный коэффициент;
b - коэффициент сдвига;
g - длина используемого алфавита;
хi -i-й символ открытого текста (номер буквы в алфавите). Основным недостатком рассмотренного метода является то, что статистические свойства открытого текста (частоты повторения букв) сохраняются и в шифротексте.
Это блочный метод. Текст делят на блоки и в каждом производится перестановка символов открытого текста. Правило перестановки задается секретным ключом. Пусть перестановка задается таблицей:
123456
316524
Тогда открытый текст преобразуется в закодированный так: первый символ становится вторым, второй - пятым и так далее
MICROC | OMPUTE | R - открытый текст |
CMCOIR | POETMU | R - закодированный текст |
В случае перестановки переставляются не буквы алфавита, а буквы в сообщении открытого текста. Распределение частот отдельных символов оказывается в шифрованном тексте таким же, что и в открытом тексте, однако распределения более высоких порядков оказываются перемешанными, что улучшает криптостойкость данного шифра по сравнению с простой подстановкой.
Шифр, задаваемый формулой
уi = хi + ki(mod g),
где ki - i-я буква ключа, в качестве которого используется слово или фраза, называется шифром Вижинера. Воспользуемся таблицей кодирования букв русского алфавита:
Буква | А | Б | В | Г | Д | Е | Ж | 3 | И | И | К | Л |
Код | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
Буква | М | Н | О | П | Р | С | Т | У | Ф | X | Ц | Ч |
Код | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Буква | Ш | Щ | Ъ | Ы | Ь | Э | Ю | Я | (пробел) |
Код | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Пусть имеется открытый текст "ЗАМЕНА" и подстановка шифра Вижинера задана таблицей:
3 | А | М | Е | Н | А |
К | Л | Ю | Ч | К | Л |
По формуле шифра Вижинера находим:
Y1= 8 + ll (mod33) = 19 Ю T;
Y2= l + 12 (mod33) = 13 Ю M;
Y3= 13 + 31 (mod 33) = 11 Ю К;
Y4= 6 + 24 (mod 33) = 30 Ю Ю;
Y5= 14 + 11 (mod 33) = 25 Ю Ш;
Y6 = 1 + 12 (mod 33) = 13 Ю М.
Шифротекст: "ТМКЭШМ".
Шифры Бофора используют формулы:
yi = ki - xi(mod g) и
yi = Xi - ki(mod g).
Гомофоническая замена одному символу открытого текста ставит в соответствие несколько символов шифротекста. Этот метод применяется для искажения статистических свойств текста.
Это довольно распространенный криптографический метод, принцип которого заключается в генерации гаммы шифра с помощью датчика ПСЧ и наложении полученной гаммы на открытые данные обратимым образом (например, при использовании логической операции "исключающее ПЛИ").
Процесс расшифрования данных сводится к повторной генерации гаммы шифра при известном ключе и наложению такой гаммы на зашифрованные данные. Полученный зашифрованный текст достаточно труден для раскрытия в том случае, когда гамма шифра не содержит повторяющихся битовых последовательностей. Фактически если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то шифр можно раскрыть только прямым перебором (подбором ключа).
На основе теории групп разработано несколько типов датчиков ПСЧ. Наиболее доступны и эффективны конгруэнтные генераторы ПСЧ. Например, линейный конгруэнтный датчик ПСЧ вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением
T(i+l) = [AT(i) + C]mod M,
Где А и С - константы; Т(0) - исходная величина, выбранная в качестве порождающего числа.
Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений А и С. Значение М обычно устанавливается равным 25, где b - длинна слова ЭВМ в битах.
Одноключевая модель использует для шифрования и дешифрования один и тот же секретный ключ, который должен быть неизвестен криптоаналитику противника. Поэтому такая система называется одноключевой криптосистемой с секретными ключами. Проблема распространения этих секретных ключей является одной из главных трудностей при практическом использовании такой криптосистемы. Для распространения секретных ключей требуются защитные каналы связи. Стоимость и сложность распространения этих ключей оказываются очень большими.
ПП SHIFR_PLEYFER для определения координат символов матрицы Плэйфера.
SHIFR_PLEYFER(Alfavit, INDEX)
Список формальных параметров:
Alfavit, INDEX
Входные параметры:
INDEX - матрица символов Плэйфера, величина символьная.
Выходные параметры:
Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.
Алгоритм
Начало ПП SHIFR_PLEYFER (Alfavit, INDEX)
Описание массивов: Alfavit[255], INDEX[6, 6]
I = 1
нет
I <= 6
J = 1
нет
J <= 6
Alfavit[Ord(INDEX[I, J])].Strok = I
Alfavit[Ord(INDEX[I, J])].Stolb = J
J = J + 1
I = I + 1
Конец ПП SHIFR_PLEYFER
Обозначения
1. Описание массивов Alfavit, INDEX
2 .. 5, 7, 8 Организация цикла заполнения массива Alfavit типа запись
6. Определение строк и столбов для символов матрицы INDEX
ПФ SHIFR_TXT производит шифрование строки открытого текста.
SHIFR_TXT(Str, Alfavit, INDEX)
Список формальных параметров:
Str, Alfavit, INDEX
Входные параметры:
Str - строка открытого текста, величина строка.
Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.
INDEX - матрица символов Плэйфера, величина символьная.
Выходные параметры:
SHIFR_TXT - принимает значение зашифрованной строки, величины строка.
Обозначения
1. Описание массивов Alfavit, INDEX.
2 .. 7 В открытом тексте вставляется “-”между одинаковыми символами.
8 .. 9 Добавление “-” в конец открытого текста, в случае нечет. кол-ва символов в строке .
10 .. 13 Организация по парного перебора символов строки открытого текста.
14 .. 15 Пара символов находится в одной строке матрицы алфавита Плэйфкра.
16 .. 17 Пара символов находится в одном столбце матрицы алфавита Плэйфера.
18. Пара символов находится в разных строках и столбцах матрицы алфавита Плэйфера.
19. Присваивание ПФ SHIFR_TXT значения новой строки
Продолжение следуетј
Алгоритм
Начало ПФ SHIFR_TXT (Str, Alfavit, INDEX)
Описание массивов: Alfavit[255], INDEX[6, 6]
New = “, Dlina_str = Length(Str), I = 1
нет
I <= Dlina_str
да нет
Str[I] = Str[I + 1]
New = ( New + Str[I] + ‘-’ ) New = ( New + Str[I] )
I = I + 1
нет
Odd(Length(Str)) = TRUE
New = New + ‘-’
Str = “, Dlina_new = Length(New)div 2, I = 1
нет
I <= Dlina_new
SIM1 = New[2*I - 1], SIM2 = New[2*I] SHIFR_TXT = Str
I = I + 1 Конец ПФ SHIFR_TXT
нет
ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK
Str = Str + INDEX[(ALFAVIT[Ord(SIM1)].STROK), ((ALFAVIT[Ord(SIM1)].STOLB mod 6) + 1)]+ INDEX[(ALFAVIT[Ord(SIM2)].STROK), ((ALFAVIT[Ord(SIM2)].STOLB mod 6) + 1)]
нет
ALFAVIT[Ord(SIM1)].STOLB = ALFAVIT[Ord(SIM2)].STOLB
Str = Str + INDEX[((ALFAVIT[Ord(SIM1)].STROK mod 6) + 1), (ALFAVIT[Ord(SIM1)].STOLB)]+ INDEX[((ALFAVIT[Ord(SIM2)].STROK mod 6) + 1), (ALFAVIT[Ord(SIM2)].STOLB)]
Str = Str + INDEX[(ALFAVIT[Ord(SIM2)].STROK), (ALFAVIT[Ord(SIM1)].STOLB)]+ INDEX[(ALFAVIT[Ord(SIM1)].STROK), (ALFAVIT[Ord(SIM2)].STOLB)]
ПФ DESHIFR_TXT производит расшифрацию строки открытого текста.
DESHIFR_TXT(Str, Alfavit, INDEX)
Список формальных параметров:
Str, Alfavit, INDEX
Входные параметры:
Str - строка открытого текста, величина строка.
Alfavit - хранит координаты символов матрицы Плэйфера, величины целого типа.
INDEX - матрица символов Плэйфера, величина символьная.
Выходные параметры:
DESHIFR_TXT- принимает значение расшифрованной строки, величины строка.
Обозначения
1. Описание массивов Alfavit, INDEX.
2 .. 5 Организация по парного перебора символов строки открытого текста.
6 .. 7 Пара символов находится в одной строке матрицы алфавита Плэйфкра.
8 .. 9 Пара символов находится в одном столбце матрицы алфавита Плэйфера.
10. Пара символов находится в разных строках и столбцах матрицы алфавита Плэйфера.
11 .. 15 Из расшифрованной строки создается новая строка без спец. знак “-”.
16. Присваивание ПФ DESHIFR_TXT значения новой строки
Продолжение следуетј
Алгоритм
Начало ПФ DESHIFR_TXT (Str, Alfavit, INDEX)
Описание массивов: Alfavit[255], INDEX[6, 6]
New = “, Dlina_str = Length(Str)div 2, I = 1
нет
I <= Dlina_str
SIM1 = Str[2*I - 1], SIM2 = Str[2*I]
I = I + 1
нет
ALFAVIT[Ord(SIM1)].STROK = ALFAVIT[Ord(SIM2)].STROK
New = New + INDEX[(ALFAVIT[Ord(SIM1)].STROK), (((ALFAVIT[Ord(SIM1)].STOLB + 4)mod 6) + 1)]
+ INDEX[(ALFAVIT[Ord(SIM2)].STROK), (((ALFAVIT[Ord(SIM2)].STOLB + 4)mod 6) + 1)]
нет