- •Сведения из истории криптографии
- •Основные понятия
- •Методы шифрования Шифры перестановки
- •Одиночная перестановка по ключу
- •Двойная перестановка
- •Метод маршрутной перестановки
- •Перестановка “Магический квадрат”
- •Многомерная перестановка
- •Квадрат Полибия
- •"Тюремный шифр"
- •Двойной квадрат
- •Метод переименования
- •Шифра замены
- •Шифр Цезаря
- •Шифры сложной замены.
- •Шифр Виженера
- •Одноалфавитные замены
- •Метод гаммирования
- •Упражнения для самостоятельной работы
- •Глава 10
- •Упражнения для самопроверки
- •Список литературы
Метод гаммирования
Пусть есть какой-то алфавит, его символы закодированы числами. Каждое число предстваляется в виде группы из m бит, а m выбирается так, чтобы можно было закодировать все символы алфавита. Допустим, в алфавите 8 символов. Если m = 2, можем закодировать только 4 из них, а вот m = 3 - пойдёт.
Есть открытый текст. Каждый символ имеет какой-то номер в алфавите, поэтому может быть закодирован теми самыми битами. Например, алфавит: {А = 00, Б = 01, В = 10, Г = 11}, m = 2. Тогда БАГ => 01 00 11. Эти группы бит соединяем в одну цепочку. То есть был БАГ, а стало 010011.
На всякий случай стоит пояснить, что такое псевдослучайные числа. Это числа, последовательность которых получена по некоторому алгоритму, причём так, что со стороны её трудно отличить от случайной.
Что дальше? Полученная ранее цепочка разбивается на блоки по q бит, пусть всего получилось N блоков. Пусть есть ещё группа G из p целых разных псевдослучайных чисел, не меньших 0 и не больших 2^q - 1 (^ - значок степени). Нумерация блоков и псевдослучайных чисел ведётся с нуля, i-ый блок складываем с q-битным представлением (i mod p)-го числа группы G, получаем какую-то группу бит B(i). Все полученные таким способом группы бит (то есть B(i), i = 0,1,...,N-1) объединяем и далее по полученному набору бит выписываем символы шифрованного текста.
Сложение бит делается так: если оба бита одинаковые, в итоге 0, иначе 1 (известно как операция XOR). Например, 101 + 110 = 011.
Важно, чтобы параметр q был довольно большим числом - это повышает стойкость к атакам.
Теперь пример. Здесь просто покажем сложение блоков с псевдослучайной последовательностью, без пояснений по ГПСЧ. Возьмём русский алфавит без Ё, Тогда можно кодировать по 5 бит (A = 00000, Б = 00001, В = 00010...). Тогда БАГ = 000010000000011. Пусть q = 3, p = 2, G = десятичный вид:{4, 5} = двоичный вид: {100, 101} (для демонстрации пойдёт, хотя вообще это не особо случайный ряд, да и период маловат). БАГ = 000 010 000 000 011.
Блок |
"Налагаемые" биты |
Сложение |
000 |
100 |
100 |
010 |
101 |
111 |
000 |
100 |
100 |
000 |
101 |
101 |
011 |
100 |
111 |
Посмотрите внимательно на среднюю колонку - "налагаемые" битовые наборы циклически повторяются: их меньше, чем блоков.
Наборы из правой колонки объядиняем. Поскольку символы алфавита кодируются 5 битами, группируем по 5 бит: ШИФР(БАГ) = 100111100101111 = {19, 25, 15}, то есть нам нужно найти в алфавите символы номер 19, 25, 15 (нумерация ведётся с нуля).
0-9 |
АБВГДЕЖЗИЙ |
10-19 |
КЛМНОПРСТУ |
20-29 |
ФХЦЧШЩЪЫЬЭ |
30-31 |
ЮЯ |
Итог - пресловутое УЩП. То есть БАГ изменился до неузнаваемости.
Описанный метод шифрования называется гаммированием. Последовательность бит, которая "преобразует" открытый текст, называется гаммой или гамма-последовательностью.
