Разработка программного средства, обеспечивающего криптографическую защиту файлов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



енять двухэтапную аутентификацию пользователя с использованием USB-ключа, обеспечивая при этом безопасностью самого ключа от подмены.

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

При реализации криптографического программного средства следует помнить о простоте и прозрачности структуры ПС.

1.8 Постановка задачи

Данная преддипломная практика Криптографическая защита файлов с использованием двухэтапной аутентификации позволит защитить цифровые данные, делая ее более защищенной с помощью криптографических протоколов, ограничить доступ третьих лиц к этим данным, используя современные алгоритмы и двухэтапную аутентификацию, и включает в себя:

-обзор применяемых алгоритмов;

-разработку программного средства для работы с файлами;

-организацию защиты и доступа к обрабатываемым данным.

Для обеспечения криптографической защиты файлов используются стойкие алгоритмы шифрования IDEA и RC6. Каждый алгоритм имеет свой уникальный ключ шифрования и вектор инициализации для обработки последнего блока данных. Принимая по внимание существующие недостатки используемого ECB-режим шифрования, в дипломной работе будет реализован иной режим.

Особенностью реализации является постоянное изменение шифрованных данных на USB-ключе, благодаря чему обеспечивается защита от взлома ключа злоумышленником.

Для реализации внутренних вычислений и генерации случайных последовательностей используется стойкая хэш-функция SHA-512.

Для обеспечения контроля целостности использован алгоритм CRC-64.

2. Алгоритмическая реализация криптографической защиты файлов

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

.1 Алгоритм хэш-функции SHA-512

Хэш-функции семейства SHA-512 относится к семейству хэш-функций SHA-2. SHA-512 построена на основе структуры Меркла-Дамгарда.

Непосредственно перед обработкой входного блока данных, исходное сообщение дополняется до полного блока и разбивается на блоки. Каждый блок в свою очередь на 16 слов. Алгоритм пропускает каждый блок сообщения через цикл с 80-ю раундами. На каждой итерации 2 слова преобразуются, при этом функцию преобразования задают остальные слова. Результаты обработки каждого блока складываются. Итоговая сумма является значением хэш-функции.

Алгоритм использует следующие битовые операции:

-- конкатенация;

-+ - сложение;

-and - побитовое И;

-or - побитовое ИЛИ;

-xor - исключающее ИЛИ;

-shr (Shift Right) - логический сдвиг вправо;

-rotr (Rotate Right) - циклический сдвиг вправо.

Общая схема одной итерации SHA-512 представлена на рисунке 7.

Стоит заметить, что на данный момент хэш-функции SHA-2 и SHA-512 в частности изучены не достаточно хорошо. Однако, проведенные исследования по криптостойкости данных хэш-функций каких-либо критических уязвимостей не обнаружили, что позволяет рекомендовать широкое применение SHA-512 [10]. Вместе с тем, на данный момент ведутся работы по созданию и внедрению нового поколения хэш-функций, призванных заменить SHA-2.

Рисунок 7 - Одна итерация алгоритма SHA-512.

.2 Алгоритм контрольной суммы CRC-64

Циклический избыточный код (англ. Cyclic redundancy code, CRC) - алгоритм вычисления контрольной суммы, предназначенный для проверки целостности передаваемых данных. Алгоритм CRC обнаруживает все одиночные ошибки, двойные ошибки и ошибки в нечетном числе битов.

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

Алгоритм CRC базируется на свойствах деления с остатком двоичных многочленов, то есть многочленов над конечным полем GF(2). Значение CRC является по сути остатком от деления многочлена, соответствующего входным данным, на некий фиксированный порождающий многочлен.

Каждой конечной последовательности битов взаимооднозначно сопоставляется двоичный многочлен , последовательность коэффициентов которого представляет собой исходную последовательность. Например, последовательность битов 1011010 соответствует многочлену:

Количество различных многочленов степени меньшей N равно 2N, что совпадает с числом всех двоичных последовательностей длины N.

Значение CRC с порождающим многочленом G(x) степени N определяется как битовая последовательность длины N, представляющая многочлен R(x), получившийся в остатке при делении многочлена P(x), представляющего входной поток бит, на многочлен G(x):

где:

-многочлен, представляющий значение CRC;

-многочлен, коэффициенты которого представляют входные данные;

-порождающий многочлен;

-степень порождающего многочлена.

Умножение осуществляется приписыванием нулевых битов к входной последовательности, что улучшает качество хэширования для коротких входных последовательностей.

При делении с остатком степень многочлена-остатка строго меньше степени многочлена-делителя, то есть при делении на многочлен G(x) степени N можно получить 2N различных остатков от деления. При правильном выборе пор