Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования сообщений (информации).
В совокупности признаков заявляемого способа используются следующие термины:
- секретный ключ представляет из себя двоичную информацию, известную только законному пользователю;
- криптографическое преобразование - это преобразование цифровой информации, которое обеспечивает влияние одного бита исходных данных на многие биты выходных данных, например, с целью защиты информации от несанкционированного чтения, формирования цифровой подписи, выработки кода обнаружения модификаций; одними из важных видов криптографических преобразований являются одностороннее преобразование, хэширование и шифрование;
- хэширование информации есть некоторый способ формирования так называемого хэш-кода, размер которого является фиксированным (обычно 128 бит) для сообщений любого размера; процедуры хэширования обеспечивают зависимость хэш-кода от каждого бита сообщения.
- шифрование есть процесс, преобразования информации, который зависит от секретного ключа и преобразует исходный текст в шифртекст (криптограмму), представляющий собой псевдослучайную последовательность знаков, из которой получение информации без знания секретного ключа практически неосуществимо;
- дешифрование есть процесс обратный процедуре шифрования; дешифрование обеспечивает восстановление информации по криптограмме при знании секретного ключа;
- шифр представляет собой совокупность элементарных шагов преобразования входных данных с использованием секретного ключа; шифр может быть реализован в виде программы для ЭВМ или в виде отдельного устройства;
- двоичный вектор - это некоторая последовательность нулевых и единичных битов, например (101101011); конкретная структура двоичного вектора может быть интерпретирована как двоичное число, если считать, что позиция каждого бита соответствует двоичному разряду, т.е. двоичному вектору может быть сопоставлено численное значение, которое определяется однозначно структурой двоичного вектора;
- криптоанализ - метод вычисления секретного ключа для получения несанкционированного доступа к зашифрованной информации или разработка метода, обеспечивающего доступ к зашифрованной информации без вычисления секретного ключа;
- одностороннее преобразование - это такое преобразование m-битового входного блока данных в m-битовый выходной блок данных, которое позволяет легко вычислить выходной блок по входному блоку, а вычисление входного блока, который бы преобразовывался в случайно выбранный выходной блок, является практически невыполнимой задачей;
- односторонняя функция - это функция, значение которой легко вычисляется по данному аргументу, однако вычисление аргумента по данному значению функции является вычислительно трудной задачей; односторонние функции реализуются как последовательность процедур одностороннего преобразования некоторого входного блока (аргумента), выходное значение которого принимается за значение функции;
- криптостойкость является мерой надежности защиты зашифрованной информации и представляет собой трудоемкость, измеренную в количестве элементарных операций, которые необходимо выполнить для восстановления информации по криптограмме при знании алгоритма преобразования, но без знания секретного ключа; в случае односторонних преобразований под криптостойкостью понимается сложность вычисления входного значения блока по его выходному значению;
- операции циклического сдвига, зависящие от преобразуемых подблоков или зависящие от двоичного вектора - это операции циклического сдвига на число бит, задаваемое значением подблока или значением двоичного вектора; операции циклического сдвига влево (вправо) обозначаются знаком "<<<" (">>>"), например, запись B1 <<< B2 обозначает операцию циклического сдвига влево подблока B1 на число бит, равное значению двоичного вектора B2; подобные операции являются базовыми для шифра RC5;
- одноместная операция - это операция, выполняемая над одним операндом (блоком данных или двоичным вектором); значение подблока после выполнения некоторой данной одноместной операции зависит только от его начального значения; примером одноместных операций являются операции циклического сдвига;
- двуместная операция - это операция, выполняемая над двумя операндами; результат выполнения некоторой данной двуместной операции зависит от значения каждого операнда; примером двуместных операций являются операции сложения, вычитания, умножения и др.
- операция конкатенации - это операция объединения нескольких двоичных векторов, в результате которой формируется новый двоичный вектор, включающий все биты каждого из объединяемых двоичных векторов, причем взаимное расположение битов, соответствующих исходным двоичным векторам не изменяется; например, конкатенация двоичных векторов W1 = (101101011) и W2 = (011101010) записывается в виде W1/W2 = (101101011011101010); данные двоичные вектора могут быть объединены операцией конкатенации еще одним способом: W2/W1 = (011101010101101011).
Известны способы блочного шифрования данных, см. например, шифр DES [B. Schneier, "Applied Cryptography", Second Eddition, John Wiley & Sons, Inc., New York, 1966, pp. 270-277]. В данном способе шифрование блоков данных выполняют путем формирования секретного ключа, разбиения преобразуемого блока данных на два подблока L и R и поочередного изменения последних путем выполнения операции поразрядного суммирования по модулю два над подблоком L и двоичным вектором, который формируется как выходное значение некоторой функции F от значения подблока R. После этого подблоки переставляются местами. Функция F в указанном способе реализуется путем выполнения операций перестановки и подстановки, выполняемых над подблоком R. Данный способ обладает высокой скоростью преобразований при реализации в виде специализированных электронных схем. Однако известный способ-аналог использует секретный ключ малого размера (56 бит), что делает его уязвимым к криптоанализу на основе подбора ключа. Последнее связано с высокой вычислительной мощностью современных ЭВМ.
Наиболее близким по своей технической сущности к заявляемому способу блочного криптографического преобразования двоичной информации является способ, реализованный в шифре RC5, описанный в монографии [B.Schneier, "Applied Cryptography", Second Eddition, Jhn Wiley & Sons, Inc., New York, 1966, pp. 344-346] . Способ-прототип включает в себя формирование секретного ключа в виде совокупности подключей, разбиение двоичного кода информации на m-битовые информационные блоки и поочередное преобразование m-битовых блоков. Преобразование m-битовых блоков осуществляют путем разбиения m-битового блока данных на n-битовые подблоки A и B, и поочередное преобразование подблоков. Подблоки преобразуются путем выполнения над ними одноместных и двуместных операций. В качестве двуместных операций используются операции сложения по модулю 2n, где n = m/2 = 8, 16, 32, 64, и операция поразрядного суммирования по модулю 2. В качестве одноместной операции используется операция циклического сдвига влево, причем число бит на которое сдвигается преобразуемый подблок зависит от значения другого подблока, что определяет зависимость операции циклического сдвига на текущем шаге преобразования подблока от исходного значения входного блока данных. Двуместная операция выполняется над подблоком и подключом, а также над двумя подблоками. Характерным для способа-прототипа является использование операции циклического сдвига, зависящей от значения входного блока. Подблок, например подблок B, преобразуют следующим путем. Выполняется операция поразрядного суммирования по модулю 2 над подблоком A и B и значение, получаемое после выполнения этой операции присваивается подблоку B. Это записывается в виде соотношения B: = B ⊕ A, где знак ":=" обозначает операцию присваивания и знак "⊕" обозначает операцию поразрядного суммирования по модулю 2. После этого над подблоком B выполняют операцию циклического сдвига влево на число бит, равное значению подблока A: B: = B <<< A. Затем над подблоком B и одним из подключей S выполняют операцию суммирования по модулю 2n, где n - длина подблока в битах: B: = (B + S) mod 2n. После этого аналогичным образом преобразуется подблок A. Выполняется несколько таких шагов преобразования обоих подблоков.
Данный способ обеспечивает высокую скорость шифрования при реализации в виде программы для ЭВМ. Однако способ-прототип имеет недостатки, а именно при программной реализации для ЭВМ с 32-разрядными микропроцессором он не обеспечивает высокой стойкости криптографического преобразования данных к дифференциальному и линейному криптоанализу [Kaliski B. S., Yin Y.L. On Differential and Linear Cryptanalysis of the RC5 Encryption Algorithm. Advances in Cryptology - CRYPTO '95 Proceedings, Springer-Verlag, 1995, pp. 171-184] . Этот недостаток связан с тем, что эффективность использования операций, зависящих от преобразуемых данных, с целью усложнения известных методов криптоанализа снижается тем, что число возможных вариантов операции циклического сдвига равно числу двоичных разрядов n подблока и не превышает 64.
В основу изобретения положена задача разработать способ блочного криптографического преобразования двоичной информации, в котором преобразование входных данных осуществлялось бы таким образом, чтобы обеспечивалось повышение числа различных вариантов операции, зависящей от преобразуемого блока, благодаря чему повышается стойкость к дифференциальному и линейному криптоанализу.
Поставленная задача достигается тем, что в способе блочного криптографического преобразования двоичной информации, включающем разбиение двоичного кода информации на N ≥ 1 информационных блоков и поочередное преобразование информационных блоков, новым согласно изобретению является то, что дополнительно формируют управляющий код V и при преобразовании информационного блока над информационным блоком осуществляют по крайней мере одну управляемую операцию перестановки, зависящую от значения управляющего кода V.
Благодаря такому решению обеспечивается повышение числа возможных вариантов операции, зависящей от преобразуемого блока, что обеспечивает повышение стойкости криптографического преобразования к дифференциальному и линейному криптоанализу.
Новым является также то, что управляющий код V формируют по значению секретного ключа.
Благодаря такому решению, обеспечивается дополнительное повышение стойкости к дифференциальному и линейному криптоанализу.
Новым является также то, что управляющий код V формируют по текущему значению преобразуемого блока.
Благодаря такому решению, обеспечивается дополнительное повышение криптостойкости к атакам, основанным на сбоях устройства шифрования.
Новым является также то, что управляющий код V формируют по секретному ключу и по текущему значению преобразуемого блока.
Благодаря такому решению, обеспечивается повышение криптостойкости к дифференциальному криптоанализу, основанному на сбоях устройства шифрования.
Новым является также то, что управляющий код V формируют по дополнительной двоичной информации.
Благодаря такому решению, обеспечивается дополнительное повышение стойкости хэширования.
Ниже сущность заявляемого изобретения более подробно разъясняется примерами его осуществления со ссылками на прилагаемые чертежи.
На фиг. 1 представлена обобщенная схема криптографического преобразования согласно заявляемому способу.
На фиг. 2 представлены возможные типы процедур преобразования информационного блока.
На фиг. 3 представлена блок-схема элементарного переключателя, являющегося базовым элементом управляемого операционного блока перестановок.
На фиг. 4 схематично представлена структура управляемого операционного блока перестановок.
На фиг. 5 схематично представлены конкретные варианты управляемой операции перестановки, различающиеся способом формирования управляющего кода V. Фиг. 5д показывает частный случай управляемой операции перестановки, которая не изменяет позиции битов в некотором подблоке информационного блока.
На фиг. 6 показана схема преобразований, поясняющая пример 3.
На фиг. 7 показана схема преобразований, поясняющая пример 4.
Изобретение поясняется обобщенной схемой криптографического преобразования блоков данных на основе заявляемого способа, которая представлена фиг. 1, где: P1, P2,..., Px - управляемые операционные блоки перестановок; T - преобразуемый информационный блок; V1, V2,..., Vx - значения управляющего кода V на соответствующих шагах преобразования информационного блока, x - натуральное число. Управляемый операционный блок перестановок выполняет управляемую операцию перестановки, под которой понимается осуществление перестановки битов входного блока в зависимости от какого-либо переменного параметра, участвующего в преобразовании. Такими переменными параметрами могут быть подключи, подблоки информационного блока или специально вырабатываемые значения, изменяющиеся с изменением исходного значения информационного блока. В качестве переменного параметра, управляющего операцией перестановки, могут использоваться также значения вырабатываемые из случайных или псевдослучайных данных. В общем случае значение управляющее операцией перестановки будем называть управляющим кодом V. Под формированием управляющего кода V будем понимать формирование сигналов на управляющем входе управляемого операционного блока перестановок. Управляемым операционным блоком перестановок будем называть устройство преобразования, имеющее n-разрядный информационный вход, n-разрядный выход и g-разрядный управляющий вход. Управляемый операционный блок перестановок (P-блок) выполняет операцию перестановки битов информационного блока, подаваемого на информационный вход P-блока, зависящую от значения сигналов на g-разрядном управляющем входе. Совокупность всех сигналов на управляющем входе составляет управляющий код V, значение которого задает конкретный вариант перестановки битов преобразуемого информационного блока.
Конкретный вид (или тип) управляемой операции перестановки P длины n характеризуется упорядоченным множеством где πV - фиксированные перестановки длины n, которые в общем случае являются различными, V - значение управляющего кода, g - разрядность управляющего кода. Могут быть сконструированы управляемые операционные блоки перестановок со значением g, удовлетворяющим следующим условиям: 1) g < n, 2) g = n и 3) g > n. Для практического построения устройств криптографического преобразования наибольший интерес представляют P-блоки со значением n = 32, 64, 128 и 256 и значением g, в два и более раз превышающем значение n. В этих случаях формируется управляющий код, имеющий соответствующую длину. Например, управляющий код может быть сформирован путем:
1) повторения информационного блока: V =
2) дополнительного преобразования управляющего кода, сформированного в соответствии с пунктом 1,
3) объединения нескольких подключений: V = где ω - натуральное число,
4) дополнительного преобразования управляющего кода, сформированного в соответствии с пунктом 3,
5) объединения подключей и информационного блока: V = причем после такого объединения управляющий код может быть подвергнут дополнительному преобразованию, например, над ним может быть осуществлена операция фиксированной перестановки в соответствии с формулой: V: = π (V).
6) преобразования секретного ключа или одного или нескольких подключей,
7) дополнительного преобразования информационного блока или одного или нескольких информационных подблоков.
Управляемая перестановка действует на информационный блок T следующим образом. По значению управляющего кода V выбирается модификация πV, в соответствии с фиксированной перестановкой πV осуществляется перестановка битов информационного блока T, в результате которой формируется значение PV(T).
Фиг. 1 показывает общую схему преобразований с использованием управляемых операций перестановки. Данная схема процедур криптографических преобразований может использовать для осуществления шифрования и для осуществления односторонних преобразований. В качестве управляющего кода V могут использоваться (1) подключи шифрования, формируемые по секретному ключу, (2) подблоки информационного блока, (3) дополнительная управляющая информация, формируемая по ходу криптографического преобразования в зависимости от дополнительной двоичной информации. В качестве дополнительной управляющей информации может использоваться сообщение, для которого необходимо выработать хэш-код. В случае односторонних преобразований секретный ключ может не использоваться, а в качестве управляющего кода V может быть использовано текущее значение информационного блока, или управляющий код V может быть сформирован по текущему значению информационного блока путем дополнительного преобразования информационного блока. Частным случаем формирования управляющего кода V является использование подблока преобразуемого информационного блока в качестве управляющего кода V для выполнения управляемой операции перестановки битов преобразуемого информационного блока. В качестве управляющего кода V может быть использован информационный блок целиком. На управляющий вход блока P подаются сигналы управляющего кода V. Благодаря этому, выполняемая над информационным блоком операция перестановки зависит от управляемого кода V.
В соответствии со схемой криптографического преобразования на фиг. 1 над информационным блоком выполняются два типа процедур преобразования: (1) процедуры, показанные операционными блоками E1, E2,..., Ex и (2) процедуры, показанные операционными блоками P1, P2, ..., Px. Процедуры типа P представляют собой управляемую операцию перестановки, то есть операционный блок P осуществляет перестановку всех битов информационного блока или их некоторой части в зависимости от значения управляющего кода V. Процедуры типа E представляют собой некоторый набор известных операций преобразования: поразрядное сложение по модулю два (⊕) сложение по модулю 2n, где n ≥ 8 (+), умножение, деление, операция циклического сдвига, фиксированная перестановка (π), операция табличной подстановки, операция конкатенации и др. При этом в результате выполнения процедуры типа E над текущим значением информационного блока его размер может остаться неизменным, может увеличиться или может уменьшиться. Под размером информационного блока мы понимаем количество битов, содержащихся в информационном блоке. Под текущим значением преобразуемого информационного блока мы понимаем совокупность битов, получаемую (после выполнения некоторой процедуры преобразования) на выходе соответствующего операционного блока. Текущее значение преобразуемого информационного блока в общем случае меняется после выполнения каждой операции преобразования.
На фиг. 2 схематично показаны основные варианты процедуры типа E. Фиг. 2а показывает вариант преобразования информационного блока без изменения его размера. Данный вариант описывается, например, формулой Tвых = Tвх ⊕ K, где подключ K имеет одинаковый размер с текущим значением преобразуемого информационного блока, обозначенного как Tвх. Значение информационного блока после преобразования обозначено Tвых. Фиг. 2б показывает вариант преобразования информационного блока с увеличением размера информационного блока. Вариант на фиг. 2б описывается, например, формулой Tвых = где знак обозначает конкатенацию значений Tвх и K. Фиг. 2в показывает вариант преобразования информационного блока с уменьшением размера информационного блока. Вариант на фиг. 2в описывается формулой Tвых = Tвх" ⊕ Tвх", где входной блок разбивается на два подблока одинакового размера, то есть представляется в виде конкатенации подблоков Tвх" и Tвх': Tвх = Над подблоками Tвх" и Tвх" выполняется операция поразрядного суммирования по модулю два, в результате чего размер выходного блока уменьшается вдвое по сравнению с размером входного блока.
Фиг. 2г показывает вариант преобразования информационного блока совмещенный с формированием управляющего кода V. Над входным информационным блоком Tвх и подключом выполняется операция поразрядного суммирования по модулю два, полученное значение объединяется с исходным значением входного блока, в результате чего формируется расширенный информационный блок, равный Затем осуществляется фиксированная перестановка битов расширенного информационного блока в результате чего вырабатывается информационный блок со значением R = (Под фиксированной перестановкой π здесь понимается перестановка, которая не зависит от каких-либо параметров, участвующих в преобразовании. Такая перестановка легко реализуется в электронных схемах, например, как простое переплетение проводников. ) Полученное значение R может быть представлено в виде конкатенации двоичных векторов меньшей длины: R = В качестве выходного блока может быть взят двоичный вектор R' (т.е. в этом случае имеем Tвых = R'), в качестве управляющего кода - двоичный вектор V=R". Возможны варианты передачи на вход следующего операционного блока (типа E или типа P) расширенных информационных блоков, например, в соответствии со следующими вариантами:
(1) Tвых = R и V = R",
(2) Tвых = R и V = R.
Возможны и другие варианты формирования расширенного двоичного вектора, например, (1) путем выполнения операции умножения над текущим информационным блоком и подключом, (2) путем многократного повторения информационного блока: Tвых = (3) объединения текущего значения информационного блока с подключом: Tвых =
Управляемые операционные блоки перестановок могут быть легко реализованы в виде несложных быстродействующих комбинационных электронных схем, использующих в качестве базового узла элементарный переключатель. На фиг. 3 показана блок-схема элементарного переключателя, где u - управляющий сигнал, a и b - входные сигналы данных, c и d - выходные сигналы данных. При u = 1 линия a коммутируется с линией c, а линия b - с линией d. При u = 0 линия a коммутируется с линией d, а линия b - c линией c. Таким образом, при значении управляющего бита u = 0 осуществляется перестановка двух входных битов, а при u = 1 входные биты не переставляются.
На фиг. 4 схематично показана структура управляемого операционного блока перестановок с n-битовым входом. Управляемый операционный блок перестановок состоит из нескольких каскадов. Каждый каскад состоит из линейки элементарных переключателей S, которые выполняют перекоммутацию двух соседних битов информационного блока, и операционного блока фиксированной перестановки π, представляющего собой простое переплетение проводников. Число элементарных переключателей в одном каскаде равно n/2. Число каскадов может выбираться в зависимости от конкретных условий включения управляемого блока перестановок в устройстве шифрования. Очевидно, что число управляющих одноразрядных входов u такого управляемого блока перестановок равно g = zn/2, где z - число каскадов. Число возможных перестановок n битов составляет по приближенной формуле Стирлинга При n = 64 имеем 64! ≈ 2320, т.е. для реализации всех возможных перестановок потребуется использовать управляющий код длиной не менее 320 бит. Однако на практике достаточно использовать сравнительно малую долю из этого числа перестановок, например, 2256 перестановок, что соответствует 8-каскадному управляемому блоку перестановок с 64-битовым входом. Управляемые операционные блоки перестановок с такой структурой для значений n = 32,64,128 легко могут быть изготовлены с помощью современной микроэлектронной технологии.
На фиг. 5 показаны возможные варианты управляемых операций перестановок, выполняемых над информационным блоком. На фиг. 5a показана управляемая операция перестановки битов информационного блока T, выполняемая в зависимости от значения T. В этом случае формируется управляющий код V, равный T.
На фиг.5б показана управляемая операция перестановки, выполняемая над m - разрядным информационным блоком T в зависимости от значения l младших битов информационного блока. В этом случае формируется управляющий код V = T mod 2l, где l < m.
На фиг. 5в показана управляемая операция перестановки, выполняемая над информационным блоком T в зависимости от значения управляющего кода V, который формируется по текущему значению информационного блока путем выполнения над информационным блоком операции циклического сдвига влево на 7 бит.
На фиг. 5г показана управляемая операция перестановки, выполняемая над информационным блоком T в зависимости от значения подключа K, т.е. в качестве управляющего кода V берется значение раундового подключа K.
Под управляемой операцией перестановки мы понимаем также такую управляемую операцию перестановки, которая осуществляет перестановку битов некоторого подблока информационного блока или осуществляет перестановку нескольких битов информационного блока, оставляя позиции остальных битов неизменными. Этот случай показан на фиг. 4д, где информационный блок T представлен в виде конкатенации двух блоков t1 и t2: Е = а управляемая операция перестановки выполняется над блоком t1 в зависимости от значения управляющего кода V, в качестве которого используется подблок t2.
На фиг. 5е показана управляемая операция перестановки, выполняемая над информационным блоком T в зависимости от значения управляющего кода V, который формируется по текущему значению информационного блока и по подключу K путем объединения текущего значения информационного блока и подключа: V =
Рассмотрим конкретные примеры реализации заявляемого способа криптографических преобразований блоков двоичных данных.
Пример 1.
Данный пример относится к использованию заявляемого способа для шифрования данных. Двоичный код информации разбивается на 64-битовые информационные блоки, представленные в виде конкатенации шестнадцати 4-битовых подблоков: T = Секретный ключ представлен в виде совокупности восьми подключей K1, K2,..., K8. Шифрование осуществляется в виде поочередного преобразования информационных блоков. Преобразование каждого информационного блока описывается следующей последовательностью процедур:
1. Установить счетчик числа раундов преобразования r = 1.
2. Преобразовать информационный блок T в соответствии с выражением:
T: =
где ":=" - обозначение операции присваивания и обозначение управляемой операции перестановки, где в нижнем индексе указано значение двоичного вектора, от которого зависит конкретный вид перестановки, выполняемой на текущем шаге.
3. Преобразовать информационный блок T в соответствии с выражением:
где "S(ti)" - обозначение операции подстановки, выполняемой над подблоком ti, где i = 1, 2, ..., 16, по следующей таблице:
Выполнение операции подстановки состоит в следующем. Вычисляется значение j = i mod 4. Вместо подблока со значением ti подставляется двоичный вектор со значением стоящим на пересечении j -ой строки и ti-го столбца.
4. Если r < 8, то прирастить счетчик (r: = r+1) и перейти к шагу 2, в противном случае Стоп.
В примере 1 шаг 3 описывает процедуру преобразования, обозначенную операционным блоком E на фиг. 1. Возможны варианты использования других вариантов шифрующих процедур в качестве процедуры E, приведенные в следующих примерах.
Пример 2.
Данный пример относится к использованию заявляемого способа для шифрования данных. Двоичный код информации разбивается на 64-битовые информационные блоки, представленные в виде конкатенации двух 32-битовых подблоков: T = Секретный ключ представлен в виде шестнадцати 32-битовых подключей K1, K2, . .., K16. Шифрование осуществляется в виде поочередного преобразования информационных блоков. Преобразование каждого информационного блока описываются следующей последовательностью шагов преобразования:
1. Установить счетчик числа раундов преобразования r = 1.
2. Преобразовать информационный блок T в соответствии с выражениями:
t1:=t1 ⊕ K2r-1,
T:=
3. Преобразовать информационный блок T в соответствии с формулами:
где совокупность битов информационного блока, соответствующих подблоку t2, сохраняется неизменной, а значение t2 берется в качестве управляющего двоичного вектора, а управляемая операция перестановки над информационным блоком выполняется путем перестановки битов подблока t1 в зависимости от подблока t2.
4. Преобразовать информационный блок T в соответствии с выражениями:
t1: = t1 ⊕ t2,
T: =
5. Преобразовать информационный блок T в соответствии с выражениями:
t2:= t2 ⊕ K2r,
T: =
6. Преобразовать информационный блок T в соответствии с выражением:
T:=
где совокупность битов информационного блока, соответствующих подблоку t1, сохраняется неизменной, а значение t1берется в качестве управляющего двоичного вектора, а управляемая операция перестановки над информационным блоком выполняется путем перестановки битов подблока t2 в зависимости от подблока t1.
7. Преобразовать информационный блок T в соответствии с выражением:
t2: = t2 ⊕ t1,
T:=
8. Если r < 8, то прирастить счетчик (r:= r+1) и перейти к шагу 2, в противном случае Стоп.
Во втором примере шаги 2, 4, 5 и 7, описывают процедуры преобразования, выполняемые над информационным блоком и являющиеся частными вариантами процедур, обозначенных как операционные блоки E на фиг. 1.
Пример 3.
Данный пример относится к использованию заявляемого способа для вычисления хэш-функции от двоичной информации M, которая разбивается на N информационных блоков Tj, где j = 1, 2,..., N. Вычисление хэш-функции осуществляется путем последовательного выполнения одностороннего преобразования над 128-битовыми Tj. 128-битовые информационные блоки Tj, представляются в виде конкатенации 64-битовых подблоков: Tj = Схема преобразований поясняется на фиг. 6. Процедура вычисления хэш-функции описывается следующей последовательностью шагов преобразования:
1. Установить счетчик числа преобразуемых информационных блоков j = 1 и исходное значение хэш-функции H0 = 0.
2. Сформировать управляющий код V: V: = где v" = tj" и v' = tj'.
3. Преобразовать информационный блок Tj в соответствии с выражением:
4. Преобразовать информационный блок Tj в соответствии с выражением:
5. Присвоить хэш-функции значение Hj: = Tj ⊕ Hj-1.
6. Если j < N, то прирастить счетчик (j:= j +1) и перейти к шагу 2, в противном случае Стоп.
Значение HN является значением хэш-функции от сообщения M.
Пример 4.
Данный пример относится к использованию заявляемого способа для построения алгоритма шифрования данных. Двоичный код информации разбивается на 64-битовые информационные блоки, представленные в виде конкатенации двух 32-битовых подблоков: T = Секретный ключ представлен в виде восьми 32-битовых подключей K1, K2,..., K8. Шифрование осуществляется в виде восьмикратного повторения совокупности процедур, образующихся один раунд преобразования и схематично показанных на фиг.7. Раунд преобразования в данном примере представляет собой последовательное выполнение расширяющей процедуры E1, управляемой операции перестановки P1 и сужающей процедуры E2.
На вход процедуры E1 подается 64-битовый информационный блок, представленный в виде двух 32-битовых подблоков данных t1 и t2, которые преобразуются в расширенный выходной блок данных, представленных в виде трех подблоков t2, B2 и t1. Подблок B2 вырабатывается в соответствии со следующей последовательностью операций:
1. Объединить текущий раундовый подключ Kr и подблок t2 в 64-битовый двоичный вектор B0:=
2. Над 64-битовым двоичным вектором B0 осуществить (фиксированную) операцию перестановки π: B1:= π (B0).
3. Вычислить 64-битовый двоичный вектор B2 в соответствии с формулой: B2 := (B1 + t2) mod 264.
На информационный вход операционного блока перестановок P1 подаются подблоки t2, B2 и t1, а на управляющий вход блока P1 подается раундовый подключ Kr. Управляемый операционный блок перестановок P1 осуществляет передачу информационных подблоков t2 и t1 без перестановки битов этих двух подблоков и перестановку битов информационного подблока B2, подаваемого на вход управляемого операционного блока P, являющегося частью операционного блока P1.
На информационный вход управляемого операционного блока перестановок P подается информационный подблок B2, а на управляющий вход блока P - управляющий код V, представляющий собой объединение информационного подблока t2 и раундового подключа Kr: V = Управляемая операция перестановки осуществляется как перестановка битов подблока B2 в зависимости от подблока данных t2 и текущего раундового подключа Kr: B3 = PV(B2), где управляющий код V зависит от информационного подблока t2 и от подключа Kr: V = На выходе управляемого операционного блока перестановок выводятся подблоки t2, B3 и t1, которые составляют входной информационный блок для процедуры E2.
Процедура E2 осуществляет сужающее преобразование и вырабатывает на выходе два 32-битовых подблока данных t" и t', причем t' = t2, а подблок t" формируется с помощью следующих шагов:
1. Представить 64-битовый подблок B3 в виде конкатенации двух 32-битовых подблоков b" и b': B3 =
2. Сложить по модулю 232 подблоки b" и b': b''':= (b"+b')mod 232.
3. Вырабатывать подблок t" := t1 ⊕ b'''.
Всего выполняются 8 таких раундов преобразования. Значения t" и t', выработанные на r-м раунде, где r ≤ 7, принимаются в качестве входного информационного блока данных (представляемого в виде двух подблоков t2 и t1) для последующего (r + 1)-го раунда. Конкатенация значений t" и t', выработанных на восьмом раунде берутся в качестве зашифтрованного блока данных C =
Пример 5.
Данный пример относится к использованию заявляемого способа для построения алгоритма вычисления хэш-функции от сообщения M. В качестве дополнительной двоичной информации берется двоичный вектор H0, имеющей длину 128 бит. Сообщение M представляется в виде конкатенации 128-битовых блоков Mi, где i = 1, 2,..., N: M = Блочное криптографическое преобразование значения H0 выполняется в виде N-раундового преобразования в соответствии со следующим алгоритмом :
1. Установить счетчик числа раундов преобразования j = 1.
2. Сформировать управляющий код V по значению M: V: = где Mj - соответствующий блок сообщения M.
3. Вычислить информационный блок Hj в соответствии с выражением:
Hj:= PV(Hj-1) ⊕ Mj
4. Если j < N, то прирастить счетчик (j:= j + 1) и перейти к шагу 2, в противном случае значение HN взять в качестве значения хэш-функции от сообщения M.
5. СТОП.
Приведенные примеры показывают, что предлагаемый способ криптографических преобразований блоков двоичных данных технически реализуем и позволяет решить поставленную задачу.
Благодаря простой структуре современная кремниевая планарная технология позволяет легко изготовить криптографические микропроцессоры, содержащие управляемые блоки перестановок с размером входа 32, 64 и 128 бит. Заявляемый способ может быть реализован, например, в специализированных криптографических микропроцессорах, обеспечивающих скорость шифрования порядка 500 Мбит/с, достаточную для шифрования в масштабе реального времени данных, передаваемых по скоростным оптоволоконным каналам связи.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДАННЫХ | 1999 |
|
RU2140714C1 |
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ДВОИЧНЫХ ДАННЫХ | 1999 |
|
RU2144268C1 |
СПОСОБ БЛОЧНОГО ИТЕРАТИВНОГО ШИФРОВАНИЯ ЦИФРОВЫХ ДАННЫХ | 2000 |
|
RU2184423C2 |
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ ЦИФРОВЫХ ДАННЫХ | 2003 |
|
RU2309549C2 |
ИТЕРАТИВНЫЙ СПОСОБ БЛОЧНОГО ШИФРОВАНИЯ | 2001 |
|
RU2204212C2 |
СПОСОБ ИТЕРАТИВНОГО БЛОЧНОГО ШИФРОВАНИЯ ДВОИЧНЫХ ДАННЫХ | 2001 |
|
RU2206961C2 |
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ | 1997 |
|
RU2140709C1 |
СПОСОБ ИТЕРАТИВНОГО ШИФРОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ | 2000 |
|
RU2199826C2 |
СПОСОБ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ БЛОКОВ ДВОИЧНЫХ ДАННЫХ | 1998 |
|
RU2141729C1 |
СПОСОБ ШИФРОВАНИЯ БЛОКОВ ЦИФРОВЫХ ДАННЫХ | 1997 |
|
RU2124814C1 |
Изобретение относится к области электросвязи и вычислительной техники, а конкретнее к области криптографических способов и устройств для шифрования данных. В основу изобретения положена задача увеличения числа различных вариантов операции, зависящей от преобразуемого блока, благодаря чему достигается технический результат - повышение стойкости шифра. Способ включает разбиение двоичного кода информации на N ≥ 1 информационных блоков и поочередное преобразование информационных блоков, и дополнительно формируют управляющий код V, при преобразовании информационного блока над информационным блоком выполняют по крайней мере одну управляемую операцию перестановки, зависящую от значения управляющего кода V, причем управляющий код V формируют по секретному ключу, также управляющий код V формируют по текущему значению преобразуемого информационного блока и управляющий код V формируют по секретному ключу и по текущему значению информационного блока. Кроме того, управляющий код V формируют по дополнительной двоичной информации. 4 з.п. ф-лы, 7 ил.
СПОСОБ ШИФРОВАНИЯ ДВОИЧНОЙ ИНФОРМАЦИИ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ | 1993 |
|
RU2091983C1 |
СПОСОБ КРИПТОЗАЩИТЫ СИСТЕМЫ ТЕЛЕКОММУНИКАЦИОННЫХ ТЕХНОЛОГИЙ | 1995 |
|
RU2077113C1 |
US 5548648 A, 20.08.96 | |||
US 5555309 A, 10.09.96 | |||
Прибор для очистки паром от сажи дымогарных трубок в паровозных котлах | 1913 |
|
SU95A1 |
Устройство для автоматического вызова абонента | 1977 |
|
SU661843A1 |
Бесколесный шариковый ход для железнодорожных вагонов | 1917 |
|
SU97A1 |
US 4264782 A, 28.04.81 | |||
Бесколесный шариковый ход для железнодорожных вагонов | 1917 |
|
SU97A1 |
СПОСОБ ПЕРЕДАЧИ И ПРИЕМА С ОБЕСПЕЧЕНИЕМ ПОДЛИННОСТИ И КОНФИДЕНЦИАЛЬНОСТИ СООБЩЕНИЯ | 1992 |
|
RU2040117C1 |
Авторы
Даты
1999-10-27—Публикация
1998-12-28—Подача