44
3 ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ АЛГОРИТМОВ ШИФРОВАНИЯ
КРИПТОАНАЛИЗА
3.1 Практическая реализация алгоритмов шифрования
3.1.1 Требования к инструментам
Шифрование и дешифрование должно осуществляться с помощью
алгоритмов DES и AES.
Входные данные в виде текста читаются из файла
Выходные денные в виде зашифрованного и расшифрованного текста
выводятся в файл.
Ключ для шифрования задается в реализации «CotaFota».
Алгоритм DES реализуется для 16 раундов шифрования
Алгоритм AES должен позволять работать с ключами длины: 128, 192,
256 бит.
3.1.2 Практическая реализация алгоритма DES
Для
реализации
алгоритмов
шифрования,
расшифрования
использовался язык C.
Выбор обусловлен тем, что для решения задачи не
требуется объектно-ориентированных свойств, а также в существующих
реализациях использован язык С.
Реализация шифрования с использованием алгоритма DES построена на
основании открытых источников [2], [27].
Алгоритм DES в данной работе использован,
как блочный шифр с
подстановками, перестановками и битовыми операциями. Шифруемая
информация разбивается на блоки по 64 бит, при этом, каждый блок
шифруется
отдельно, не взаимодействуя с другими блоками. Используется
ключ, в котором 56 бит значимы, 8 бит, которые в реальных системах служат
45
для контроля четности (проверка правильности ключа), в текущей реализации
8 проверочных бит не используются.
Таблицы, использующиеся при шифровании, расшифровании данных
представлены в виде статических постоянных (таблица 3.1)
Таблица 3.1
Постоянные
алгоритма DES
Статические постоянные
Описание
static const char des_IP_table[64]
Таблица начальной перестановки исходного текста
static const char des_invIP_table[64]
Таблица обратной перестановки.
Обратная перестановка по отношению к начальной.
static const char des_E_table[48]
Таблица для расширения 32 бит до 48 бит
static const char des_S_table[8][64]
Таблица преобразования 8-битных блоков
static const char des_P_table[32]
Таблица перестановки
static const char des_CD_table[56]
Таблица перестановки ключа
static const char des_CD_shift_table[16] Таблица циклических сдвигов ключа
static const char des_subkey_table[]
Таблица формирования ключей для каждого раунда
В таблицах определен порядок перестановок, преобразований, которые
происходят с текстом или с ключом по определенным правилам.
Функции, реализованные для алгоритма приведены в таблице 3.2
Таблица 3.2
Функции алгоритма DES
Функция
Описание
1
2
static uint64_t des_apply_table
(uint64_t in, const char table[], int size)
Функция применения таблиц преобразования к
тексту, ключу на всех этапах работы
алгоритма
static void des_create_subkey
(uint64_t key, uint64_t subkey[])
Фнукция формирования ключей для каждого
раунда преобразования информации
uint64_t des_encode(uint64_t in, uint64_t key) Объявлена в заголовочном файле
Функция
шифрования
56-битного
блока
информации
uint64_t des_decode(uint64_t in, uint64_t key) Объявлена в заголовочном файле
Функция расшифрования 56-битного блока
информации
46
Продолжение таблицы 3.2
1
2
void des_crypt
(char *input_fname, char *output_fname, char
*password)
Объявлена в заголовочном файле
Функция чтения информации, вызов функции
шифрования блока,
запись зашифрованной
информации
void des_decrypt
(char *input_fname, char *output_fname, char
*password)
Объявлена в заголовочном файле
Функция чтения зашифрованной информации,
вызов функции расшифрования блока,
запись
расшифрованной информации
void test_des(void)
Объявлена в заголовочном файле
Основная
функция,
которая
позволяет
обработать пример, а также вызывает функции
шифрования/расшифрования текста
Do'stlaringiz bilan baham: