Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vse_otvety.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.9 Mб
Скачать

81 Стандарт шифрования данных гост 28147-89

Российский стандарт шифрования является блочным, т. е. преобразование ведется по блокам. Он включает в себя режим замены и два режима гаммирования. Стандарт ГОСТ 28147-89 формировался с учетом мирового опыта, и в частности, были приняты во внимание недостатки и нереализованные возможности алгоритма DES, поэтому использование стандарта ГОСТ предпочтительнее. Эффективность данного стандарта достаточно высока. Системы, основанные на ГОСТ 28147-89, позволяют зашифровать в секунду до нескольких десятков Кбайт данных. В него заложен метод, с помощью которого можно зафиксировать необнаруженную случайную или умышленную модификацию зашифрованной информации. Введем ассоциативную операцию конкатенации. Если L и R – последовательность бит, то LR обозначает конкатенацию последовательностей, то есть LR - последовательность бит с размерностью равной сумме размерностей L и R, причем биты R следуют за битами L. Кроме того, будем использовать следующие операции сложения: A^B - побитовое сложение по модулю 2; если A+B=>2, то A^B=А+B-2, если A+B<2 , то A^B=А+B, где A и B 1-битные числа.. A[+]B - сложение по модулю 232; если A+B=>232, то A[+]B=A+B-232,, если A+B<232 , то A[+]B=A+В, где A и B 32-битные числа. A{+}B - сложение по модулю 232-1; если A+B=>232-1, то A{+}B=A+B-232+1, если A+B<232-1 , то A{+}B=A+B, где A и B 32-битные числа. Алгоритм криптографического преобразования предусматривает три режима работы. В стандарте ГОСТ используется ключ W длиной 256 бит, представляемый в виде восьми 32-разрядных чисел x(i). W=X(7)X(6)X(5)X(4)X(3)X(2)X(1)X(0). Самый простой из возможных режимов - замена. Пусть открытые блоки разбиты на блоки по 64 бит в каждом, которые обозначим как T(j). Очередная последовательность бит T(j) разделяется на две последовательности B(0) и A(0) по 32 бита (правый и левый блоки). Далее выполняется итеративный процесс шифрования, описываемый следующими формулами, вид который зависит от i. Для i=1, 2, ..., 24, j=(i-1) (mod 8); A(i) = f(A(i-1) [+] X(j)) ^ B(i-1), B(i) = A(i-1). Для i=25, 26, ..., 31, j=32-i; A(i) = f(A(i-1) [+] X(j)) ^ B(i-1), B(i) = A(i-1). Для i=32: A(32) = A(31), B(32) = f(A(31) [+] X(0)) ^ B(31). Для дешифрования используется тот же ключ, но процесс дешифрования является инверсным по отношению к исходному. Для i=32, A(31) = A(32), B(31) = f(A(32) [+] X(0)) ^ B(32). Для i=31, 30, ..., 25, j=32-i; A(i-1) = B(i), B(i-1) = f(B(i) [+] X(j)) ^ A(i). Для i=24, 23, ..., 1, j=(i-1) (mod 8); A(i-1) = B(i), B(i-1) = f(B(i) [+] X(j)) ^ A(i). Полученные A(0), B(0) – расшифрованный текст. Здесь i обозначает номер итерации. Функция f – функция шифрования. Функция шифрования состоит из операции подстановки К применяемой к 32-разрядному аргументу. 64-разрядный аргумент разбивается на два 32-разрядных вектора. Блок подстановки K состоит из 8 узлов замены К(1).....К(8) с памятью 64 бит каждый. Поступающий на блок подстановки 4-разрядный вектор разбивается на 8 последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим таблицу из 16 целых чисел в диапазоне 0...15. Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-разрядные векторы последовательно объединяются в 32-разрядный выходной. Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично. Следует учитывать, что данный режим шифрования обладает ограниченной криптостойкостью. Таким образом, в системах обработки информации помимо обеспечения ее секретности важно гарантировать следующие свойства для каждого обрабатываемого массива данных: подлинность – он пришел к потребителю именно таким, каким был создан источником и не претерпел на своем жизненном пути несанкционированных изменений; авторство – он был создан именно тем источником, каким предполагает потребитель. Обеспечение системой обработки этих двух качеств массивов информации и составляет задачу их аутентификации, а соответствующая способность системы обеспечить надежную аутентификацию данных называется ее аутентичностью. Задача аутентификации данных. На первый взгляд может показаться, что данная задача решается простым шифрованием. Действительно, если массив данных зашифрован с использованием стойкого шифра, такого, например, как ГОСТ 28147–89, то для него практически всегда будет справедливо следующее: в него трудно внести изменения осмысленным образом, поскольку со степенью вероятности, незначительно отличающейся от единицы, факты модификации зашифрованных массивов данных становятся очевидными после их расшифрования – эта очевидность выражается в том, что такие данные перестают быть корректными для их интерпретатора: вместо текста на русском языке появляется белиберда, архиваторы сообщают, что целостность архива нарушена и т.д.; только обладающие секретным ключом шифрования пользователи системы могут изготовить зашифрованное сообщение, таким образом, если к получателю приходит сообщение, зашифрованное на его секретном ключе, он может быть уверенным в его авторстве, так как кроме него самого только законный отправитель мог изготовить это сообщение. Тем не менее, использование шифрования в системах обработки данных само по себе неспособно обеспечить их аутентичности по следующим причинам: Изменения, внесенные в зашифрованные данные, становятся очевидными после расшифрования только в случае большой избыточности исходных данных. Эта избыточность имеет место, например, если массив информации является текстом на каком-либо человеческом языке. Однако в общем случае это требование может не выполняться – если случайная модификация данных не делает их недопустимым для интерпретации со сколько-нибудь значительной долей вероятности, то шифрование массива не обеспечивает его подлинности. Говоря языком криптологии, аутентичность и секретность суть различные свойства криптосистем. Или, более просто: свойства систем обработки информации обеспечивать секретность и подлинность обрабатываемых данных в общем случае могут не совпадать. Факт успешного (в смысле предыдущего пункта) расшифрования зашифрованных на секретном ключе данных может подтвердить их авторство только в глазах самого получателя. Третья сторона не сможет сделать на основании этого однозначного вывода об авторстве массива информации, так как его автором может быть любой из обладателей секретного ключа, а их как минимум два – отправитель и получатель. Поэтому в данном случае споры об авторстве сообщения не могут быть разрешены независимым арбитражем. Это важно для тех систем, где между участниками нет взаимного доверия, что весьма характерно для банковских систем, связанных с управлением значительными ценностями. Таким образом, существование проблемы подтверждения подлинности и авторства массивов данных, отдельной от задачи обеспечения их секретности, не вызывает сомнения. В последующих разделах настоящей статьи излагаются подходы к ее решению, базирующиеся на использовании классических блочных шифров. В разделе 2 рассматриваются подходы к решению задачи подтверждения подлинности данных, а в разделе 3 – к задаче подтверждения их авторства. В принципе, для решения указанных задач может быть использован любой традиционный блочный криптографический алгоритм. В компьютерных кодах, прилагаемых к настоящей статье, автор использует наиболее знакомый и близкий ему шифр – криптоалгоритм ГОСТ 28147–89. Общие положения стандарта шифрования данных ГОСТ 28147-89 и режим простой замены в стандарте шифрования данных ГОСТ 28147-89: Указанный стандарт устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях электронных вычислительных машин (ЭВМ), отдельных вычислительных комплексах и ЭВМ, который определяет правила шифрования данных и выработки имитовставки. Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации. Алгоритм может быть использован для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах или в ЭВМ. Термины, применяемые в описании алгоритма имеют следующие определения: Гаммирование Процесс наложения по определенному закону гаммы шифра на открытые данные. Гамма шифра Псевдослучайная двоичная последовательность, вырабатываемая по заданному алгоритму для зашифрования открытых данных и расшифрования зашифрованных данных. Зашифрование данных Процесс преобразования открытых данных в зашифрованные при помощи шифра. Имитозащита Защита системы шифрованной связи от навязывания ложных данных. Имитовставка Отрезок информации фиксированной длины, полученной по определенному правилу из открытых данных и ключа и добавленной к зашифрованным данным для обеспечения имитозащиты. Ключ Конкретное некоторое состояние некоторых параметров алгоритма криптографического преобразования данных, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований. Криптографическая защита Защита данных при помощи криптографического преобразования данных. Криптографическое преобразование Преобразование данных при помощи шифрования и (или) выработки имитовставки. Расшифрование данных Процесс преобразования зашифрованных данных в открытые при помощи шифра. Синхропосылка Значения исходных открытых параметров алгоритма криптографического преобразования. Уравнение зашифровки Соотношение, выражающее процесс образования зашифрованных данных из открытых данных в результате преобразований, заданных алгоритмом криптографического преобразования. Уравнение расшифровки Соотношение, выражающее процесс образования открытых данных из зашифрованных данных в результате преобразований, заданных алгоритмом криптографического преобразования. Шифр Совокупность обратимых преобразований множества возможных открытых данных на множество возможных зашифрованных данных, осуществляемых по определенным правилам с использованием ключей. Шифрование Процесс зашифрования или расшифрования. Зашифрование данных: Открытые данные, подлежащие зашифрованию, разбивают на блоки по 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. Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32-х циклов. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены имеет тот же вид, что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование открытых данных. Зашифрованные данные разбиваются на блоки по 64 бита каждый. Расшифрование осуществляется по тому же алгоритму, что и зашифрование открытых данных, с тем изменением, что заполнения накопителей X0, X1,...,X7 считываются из КЗУ в циклах расшифрования в следующем порядке: X0, X1, X2, X3, X4, X5, X6, X7, X7, X6, X5, X4, X3, X2,. X1, X0. X7, X6, X5, X4, X3, X2,. X1, X0, X7, X6, X5, X4, X3, X2,. X1, X0. Полученные после 32-х циклов работы заполнения накопителей N1 и N2 составляют блок открытых данных. Аналогично расшифровываются остальные блоки зашифрованных данных. Алгоритм зашифрования в режиме простой замены 64-битового блока То обозначается через A, т.е.: A (Tо) = A (a(0), b(0))) = (a(32), b(32)))= Tш

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]