Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №5. Программирование и анализ современных алгоритмов шифрования. ⇐ ПредыдущаяСтр 5 из 5
Цель работы: Рассмотреть современные системы шифрования. Познакомится с интерфейсом. Реализовать алгоритм шифрования. Шифровать/дешифровать сообщение. Теоретическая часть Алгоритм MD5 На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и не отрицательное. Кратность каким-либо числам не обязательна. После поступления данных идет процесс подготовки потока к вычислениям. Рис. 7. Процесс подготовки потока к вычислениям
Ниже приведены 5 шагов алгоритма: Шаг 1. Выравнивание потока Входные данные выравниваются так, чтобы их размер был сравним с 448 по модулю 512 (L’ = 512? N + 448). Сначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит (выравнивание происходит, даже если длина уже конгруэнтна — сравнима с 448). Шаг 2. Добавление длины сообщения. В оставшиеся 64 бита дописывают 64-битное представление длины данных до выравнивания. Если длина превосходит 2 64? 1, то дописывают только младшие биты. После этого длина потока станет кратной степеням двойки — 16, 32. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит. Шаг 3. Инициализация MD-буфера. Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами:
А = 01 23 45 67; В = 89 AB CD EF; С = FE DC BA 98; D = 76 54 32 10.
Потребуются 4 функции для четырех раундов. Введем функции от трех параметров — слов, результатом также будет слово. Определим таблицу констант T[1..64] — 64-элементная таблица данных, построенная следующим образом: T[i] = int(4294967296 * | sin(i) |) и s — циклический сдвиг влево на s бит полученого 32-битного аргумента.
Шаг 4. Вычисление в цикле Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый). AA = A BB = B CC = C DD = D Раунд 1 /*[abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4] [ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8] [ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12] [ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16] Раунд 2 /*[abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20] [ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24] [ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28] [ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32] Раунд 3 /*[abcd k s i] a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36] [ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40] [ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44] [ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48] Раунд 4 /*[abcd k s i] a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52] [ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56] [ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60] [ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64] Суммируем с результатом предыдущего цикла: A = AA + A B = BB + B C = CC + C D = DD + D После окончания цикла необходимо проверить, есть ли еще блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла. Шаг 5. Результат вычислений Результат вычислений находится в буфере ABCD, это и есть хеш. Если вывести слова в обратном порядке DCBA, то мы получим наш MD5 хеш. Алгоритм ГОСТ 28147-89 Шифрование Процесс зашифрования или расшифрования. Алгоритм ГОСТ 28147-89 - Структурная схема Структурная схема алгоритма криптографического преобразования (криптосхема) содержит элементы, согласно схеме ключевое запоминающее устройство (КЗУ) на 256 бит, состоящее из 8 -ми 32 -разрядных накопителей (Х0, Х1, Х2, Х3, Х4, Х5, Х6, Х7); четыре 32 -разрядные накопителя (N1, N2, N3, N4); два 32 -разрядных накопителя (N5, N6) с записанными в них постоянными заполнениями C 2, C1; два 32 -разрядных сумматора по модулю 232 (СМ1, СМ3); 32 -разрядный сумматор поразрядного суммирования по модулю 2 (СМ2); сумматор по модулю 2 без ограничений на разрядность (СМ5);
блок подстановки (К); регистр циклического сдвига на одиннадцать шагов в сторону старшего разряда (R). Блок подстановки К состоит из восьми узлов замены К1-К8 с памятью по 64 бита каждый. зашифрование (расшифрование) данных в режиме простой замены; зашифрование (расшифрование) данных в режиме гаммирования; зашифрование (расшифрование) данных в режиме гаммирования с обратной связью; режим выработки имитовставки.
Рис 8. Общая структурная схема зашифрования. Алгоритм ГОСТ 28147-89 - Режим простой замены Зашифрование данных Криптосхема, реализующая алгоритм зашифрования в режиме простой замены, должна иметь вид, показанный на следующей фиг.: Рис. 9. Структурная схема зашифрования в режиме простой замены Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бита каждый. Ввод любого блока Tо = (a1(0), a2(0),..., a31(0), a32(0), b1(0), b2(0),.., b32(0) двоичной информации в накопители N1 и N2 производятся так, что значение a1(0) вводится в 1-й разряд N1, значение a2(0) вводится во 2-й разряд накопителя и т.д., значение a32(0) вводится в 32-й разряд N1: значение b1(0) вводится в 1-й разряд N2, значение b2(0) вводится во 2-й разряд накопителя и т.д., значение b32(0) вводится в 32-й разряд N2. В результате получаем состояние (a32(0), a31(0),..., a2(0), a1(0)) накопителя N1 и состояние (b32(0), b31(0),..., b2(0), b1(0)) накопителя N2. X0 = (W32, W31,..., W2, W1) Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32-х циклов.
Расшифрование данных Криптосхема, реализующая алгоритм расшифрования в режиме простой замены имеет тот же вид, что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование открытых данных. X0, X1, X2, X3, X4, X5, X6, X7, X7, X6, X5, X4, X3, X2,. X1, X0 Полученные после 32-х циклов работы заполнения накопителей N1 и N2 составляют блок открытых данных. A (Tо) = A (a(0), b(0))) = (a(32), b(32)))= Tш Алгоритм ГОСТ 28147-89 - Режим гаммирования Зашифрование данных Криптосхема, реализующая алгоритм зашифрования данных в режиме гаммирования показана на схеме. Гш = (Гш(1), Гш(2),...,Гш(M-1), Гш(M)) где M - определяется объемом шифруемых данных.
10. Структурная схема зашифрования в режиме гаммирования Исходное заполнение накопителей N1 и N2 (синхропосылка S ) зашифровывается в режиме простой замены. Результат зашифрования A(S) = (Y0, Z0) переписывается в 32 -разрядные накопители N3 и N4. Расшифрование данных При расшифровании криптосхема имеет тот же вид, что и при зашифровании открытых данных в режиме гаммирования. В КЗУ вводятся 256 бит ключа, с помощью которого осуществлялось зашифрование данных. В накопители N1 и N2 вводится синхропосылка S. Процесс выработки M блоков гаммы шифра осуществляется совершенно аналогично описанному выше. Блоки зашифрованных данных суммируются поразрядно по модулю 2 в сумматоре СМ5 с блоками гаммы шифра, в результате получаются блоки открытых данных.
Алгоритм ГОСТ 28147-89 - Режим гаммирования с обратной связью Зашифрование данных Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования с обратной связью, имеет вид, указанный на схеме.
11. Структурная схема зашифрования в режиме гаммирования с обратной связью Блок зашифрованных данных одновременно является также исходным состоянием N1, N2 для выработки второго блока гаммы шифра и по обратной связи записывается в указанные накопители.
Расшифрование данных При расшифровании криптосхема имеет тот же вид, что и при зашифровании. Алгоритм ГОСТ 28147-89 - Режим выработки имитовставки Для обеспечения имтозащиты открытых данных, состоящих из M 64 -разрядных блоков Tо(1), Tо(2),..., Tо(M ) где M>2, вырабатывается дополнительный блок из l бит (имитовставка Иl). Процесс выработки имитовставки единообразен для всех режимов шифрования. Общая постановка задачи Ход работы: · Рассмотреть ПО ведущих разработчиков в отрасли шифрования. · Познакомится с интерфейсом · Реализовать алгоритм шифрования/дешифрования · Зашифровать сообщение – сохранить результат в файл · Закрыть программное обеспечение · Открыть программное обеспечение – дешифровать файл. · Сравнить полученный файл с исходным · Сделать выводы
|
|||||||||
Последнее изменение этой страницы: 2019-12-14; просмотров: 264; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.147.215 (0.043 с.) |