Научная статья на тему 'О генерации псевдослучайных PIN-кодов криптографическим методом'

О генерации псевдослучайных PIN-кодов криптографическим методом Текст научной статьи по специальности «Математика»

CC BY
320
75
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ ПОСТРОЕНИЯ PIN-КОДОВ / ИНВОЛЮТИВНЫЕ ПРЕОБРАЗОВАНИЯ / PIN-CODES ALGORITHM / INVOLUTIVE CONVERSION

Аннотация научной статьи по математике, автор научной работы — Кугураков В.С., Кирпичников А.П., Сущевский Д.Г.

Предложен эффективный алгоритм построения десятичных PIN-кодов на основе псевдослучайных подстановок и инволютивных матриц.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «О генерации псевдослучайных PIN-кодов криптографическим методом»

УДК 004.056.55

В. С. Кугураков, А. П. Кирпичников, Д. Г. Сущевский О ГЕНЕРАЦИИ ПСЕВДОСЛУЧАЙНЫХ PIN-КОДОВ КРИПТОГРАФИЧЕСКИМ МЕТОДОМ

Ключевые слова: алгоритм построения PIN-кодов, инволютивные преобразования.

Предложен эффективный алгоритм построения десятичных PIN-кодов на основе псевдослучайных подстановок и инволютивных матриц.

Keywords: PIN-codes algorithm, involutive conversion.

An efficient algorithm for constructing the decimal PIN-codes based on random substitutions and involutive matrices is proposed.

1. Введение

Криптография представляет собой часть информатики, занимающуюся вопросами зашифрования данных с целью защиты содержащейся в них информации от несанкционированного доступа и незаконных пользователей. Однако, своими сугубо специфическими методами криптография тем не менее позволяет решать и другие задачи, отличные от задач защиты данных. В частности, в работе [1] была поставлена задача выработки такого криптоалгоритма, который позволил бы генерировать псевдослучайную последовательность уникальных номеров (PIN-кодов) на основе шифрования сообщений в произвольном алфавите. В настоящей работе предложен эффективный алгоритм, решающий эту задачу.

PIN-код (Personal Identification Number - личный идентификационный номер) обычно используется как пароль доступа к терминалу, с помощью него производится авторизация держателя кредитной карты. Алгоритм построения PIN-кодов реализует биективное (т. е. взаимно однозначное) отображение

'тк

: А"

(1)

множества Ап «-разрядных слов в алфавите А на себя. Секретность отображения обеспечивается тем, что алгоритм выполняется под управлением секретного ключа тк. Непосредственно ключ тк в алгоритме не используется (т.е. остается в тени), но на его основе на этапе предвычислений формируются ключевые материалы (такие, как псевдослучайные подстановки и матрицы), которые используются в алгоритме. Задача вычисления РГЫ-кодов аналогична задаче построения криптографических симметричных блочных шифров, в которых конструируется отображение

Е5

(2)

где Ш2 ={0,1}, Е" = Е2 х... хШ2 (n раз) - множество двоичных блоков (слов) длины n, п = 64,128, 96, 192,256. В частности, если требуется построение 16-разрядных PIN-кодов в алфавите шестнадца-теричных цифр

А = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F},

то можно использовать любой 64-битовый шифр (ГОСТ 28147, DES и т.п.). В этом случае любой за-

шифрованный блок В состоит из 8 байтов, или из 16 полубайтов, каждый из которых имеет значение цифры из множества А. Таким образом, блок В будет искомым РГЫ-кодом.

В данной работе предложен криптографический алгоритм построения «-разрядных десятичных РГЫ-кодов, т.е. в алфавите

А =

= {0,1,2,3,4,5, 6,7,8,9}.

Для определенности рассматривается случай п = 16, однако алгоритм может быть обобщен на случай произвольного п. Отличие от алгоритмов блочных шифров состоит в том, что для блочных шифров характерно использование вычислений в конечных полях характеристики 2 (что, конечно, не исключает использование и суррогатных вычислений над другими алгебраическими системами). В нашем случае 210 не может быть наделено структурой поля, а при использовании операций сложения и умножения по модулю 10 множество 210 становится коммутативным кольцом с делителями нуля, в котором только элементы 1, 3, 7, и 9 имеют мультипликативные обратные. Тем не менее. при конструировании отображения (1) для А = Ж10 уместно использовать идеи, которые применяются в блочных шифрах [2].

2. Этап предвычислений

На этапе предвычислений формируются вспомогательные ключевые материалы - раундовые ключи, таблицы подстановок, инволютивные матрицы и т.п. Формирование этих материалов осуществляется с использованием датчика псевдослучайных байтов, который предварительно инициализируется с помощью главного ключа тк. В качестве датчика псевдослучайных байтов можно использовать, например, любой поточный шифр. Для определенности рассмотрим шифр ДС4, разработанный Р. Ривестом [3]. ЯС4 популярен благодаря простоте его реализации и высокой скорости работы алгоритма, ЯС4 устойчив к дифференциальному и линейному методам криптоанализа. Шифр использует два массива байтов - память 5[0. .255] = (50,5Х.....5255), из которой будут извлекаться псевдослучайные байты, и память К[0. .255] = (К0,К1,^,К255) для записи ключа т.к. Ключ тк может иметь длину I от 5 до 255 байтов.

Инициализация RC4 (выполняется один раз):

1. (Инициализация начального состояния памяти

for i:=0 to 255 do S[i]:=i;

2. (Ключ mk = (mk0, ..., mki_1) переписывается в массив К с повторениями, если I < 255.)

for i:=0 to 255 do K[i]:=mk[i mod i];

3. (Настройка датчика, инициализация глобальных переменных iRC4 и jRC4.)

iRC4:=0; jRC4:=0; j:=0;

for i:=0 to 255 do {

j:=(j+S[i]+K[i]) mod 256; S[i] и S[j] меняются местами

(Инициализация завершена.)

Текущее использование датчика:

iRC4:=(iRC4+1) mod 256; jRC4: =(jRC4 +S[iRC4]) mod 256); S[iRC4] и S[jRC4] меняются местами; t:=(S[iRC4]+S[jRC4]) mod 256); return(S[t]). (S[t] - байт, возвращаемый при обращении к функции RC4.)

Замечание. Возможные слабости алгоритма RC4 могут быть решены отбрасыванием начальной части ключевого потока. Надёжным считается отбрасывание первых L= 256,512,768 или 1024 байт. Число 256 < L < 1024 можно рассматривать как дополнительный ключ, определяющий конкретную версию алгоритма.

Функция RC4M(i) получения псевдослучайного байта в диапазоне [0. .i], i<255

1.(Вычисление к - числа старших нулевых битов в записи байта i.)

k:=0; j:=i;

while j <127 do {k:=k+1; j001 }; - сдвиг j на 1 бит влево, в сторону старших битов

2.(Генерируем случайный байт c Е [0. л].) f:= true;

while f do {

c :=RC4; - генерируем случайный байт c c :=(c00k)00k; - обнуляем к старших битов в байте c путем сдвигов влево и вправо на k битов

if c<i then {

f:= false;

return(c) }

}.

2.1. Построение подстановок

S0, S^ S2 и 53 Подстановка (перестановка) - это биективное (т.е. взаимно однозначное) отображение n.M —> М множества М на себя. Подстановка задается массивом (n0,n1,.,nt), где пк ЕМ - образ элемента к Е

та к Е М при отображении л. Перемножаются подстановки по правилу: по р(х) =л(р(х)).

Построение псевдослучайной подстановки на множестве {0,1, ...,t}

Пусть 5 = (s0, sb ..., st) — список различных байтов, не превосходящих t (например, S; = i, i = 0,1,..., t); R = (r0,r1,., rt) - искомая подстановка.

Начальный шаг i = 0. Генерируем случайный байт с Е {0,1,..., t}. Полагаем r0 =sc. Исключаем sc из списка S.

Очередной шаг i = 1,2, t- 1. Пусть (s0, sx, st_i) - текущее состояние списка S. Тогда генерируем случайный байт с Е {0,1,..., t — i } и полагаем Ti = sc. Исключаем sc из списка S.

Другой алгоритм построения подстановки на

множестве {0,1, ...,t}

for i:=0 to 255 do S[i]:=i; f:= true;

while f do {

for i:=0 to 255 do {

генерируем случайные байты k и m;

S[ k] и S [ m] меняем местами };

if

каждый элемент массива S менял свою позицию

then {

удаляем из S байты со значением >t; f: =

false }

}.

Одним из указанных способов строим подстановки S0 и S2 на множестве Z100 = {0,1,..., 99}.

Построение подстановок S1 и S3 на множестве Z100 на основе дискретных логарифмов.

Так как р = 101 - простое число, то множество F101 = {0,1.....100} с операциями сложения и умножения по модулю 101 образует конечное поле. Его мультипликативная группа = {1, .,100} = <2fc > циклическая c порождающими элементами 2fc, где н.о.д. (к, 100) = 1. Уравнение i + 1 = 2Xl(mod 101) имеет единственное решение xt Е {100,1,2,..., 99} для каждого ¿ = 0,1,..., 99. Массив чисел mod 100 образует следующую подстановку 5Х на множестве Z100:

50, 00, 01, 69, 02, 24, 70, 09, 03, 38, 25, 13, 71, 66, 10,

93, 04, 30, 39, 96, 26, 78, 14, 86, 72, 48, 67, 07, 11, 91,

94, 84, 05, 82, 31, 33, 40, 56, 97, 35, 27, 45, 79, 42, 15,

62, 87, 58, 73, 18, 49, 99, 68, 23, 08, 37, 12, 65, 92, 29,

95, 77, 85, 47, 06, 90, 83, 81, 32, 55, 34, 44, 41, 61, 57, 17, 98, 22, 36, 64, 28, 76, 46, 89, 80, 54, 43, 60, 16, 21,

63, 75, 88, 53, 59, 20, 74, 52, 19, 51.

Подстановку 53 можно построить аналогично, выбирая другой порождающий элемент, например, g = 213 = 11 (mod 101). При этом, чтобы внести в

подстановку элемент случайности можно выбрать порождающий элемент g = 2k (mod 101), где кЕ Z100 - случайный элемент, взаимно простой с 100. Однако поступим по-другому, в качестве подстановки возьмем массив y¿ = kíxi + k2(mod 100), ¿ = 0,1,..., 99, где к1, к2 £2100 - случайные элементы, причем н.о.д. (к1, 100) = 1. Например, при кг = 17 и к2 =23 получаем следующую подстановку 53:

73, 23, 40, 96, 57, 31, 13, 76, 74, 69, 48, 44, 30, 45, 93, 04, 91, 33, 86, 55, 65, 49, 61, 85, 47, 39, 62, 42, 10, 70, 21, 51, 08, 17, 50, 84, 03, 75, 72, 18, 82, 88, 66, 37, 78, 77, 02, 09, 64, 29, 56, 06, 79, 14, 59, 52, 27, 28, 87, 16, 38, 32, 68, 22, 25, 53, 34, 00, 67, 58, 01, 71, 20, 60, 92, 12, 89, 97, 35, 11, 99, 15, 05, 36, 83, 41, 54, 43, 95, 80, 94, 98, 19, 24, 26, 63, 81, 07, 46, 90.

2.2. Инволютивные матрицы над кольцом Z100 целых чисел с операциями сложения и умножения по модулю 100.

Кольцо Z100 является коммутативным кольцом с делителями нуля. Мультипликативными обратными Ь"1 обладают только те bE Z100, которые взаимно просты с числом 100, т.е. 40 нечетных чисел, не кратных 5. При этом = b19 mod 100. Инволю-тивная матрица совпадает со своей обратной. Например, матрицы

МаЬ = {ь-\1-а2) -а)' 3)

где a' b Е Z100, н.о.д. (Ъ, 100) = 1, являются инво-лютивными. Пусть

M = diag (m£U£,M®M®),

где М^ - матрицы вида (3), обозначает квадратную матрицу порядка 8 с матрицами М^ по главной диагонали и нулями в остальных позициях, а V и W - соответственно нижняя и верхняя треугольные матрицы порядка 8, которые заполнены случайными элементами из Z100, причем диагональные элементы имеют мультипликативные обратные. Матрицы V и W являются невырожденными, следовательно, имеют обратные, которые нетрудно вычислить, применяя метод Гаусса-Жордана. Тогда матрица

= 7 W MW~1V~1

является квадратной инволютивной матрицей порядка 8.

2.3. Преобразования G и G"1 над элементами a,b Е Z100 под управлением ключей k1,k2,k3,k4 Е ^100

Преобразование G определяется согласно 4-раундовой схеме Фейстеля [2] следующим образом: G[k1,k2,k3,k4](a,b) =

{

а: = а В 50[Ь В kí]\ а <—> Ъ; а: = a ES S^b ES k2); a^>b; a:=flffl S2[b ES k3]; a^ b;

a:= a ms3[brn k4]

},

где аЩЪ — сложение а и Ь по модулю 100, а а^ Ъ обозначает, что а и Ъ меняются местами. Обратное преобразование С"1, возвращающее а и Ъ к исходным значениям, задается как

С~1[к1,к2,к3,к4](а,Ь) = {

а: = а В 53[Ь В к4]; а <—> Ъ;

а: = а Е1 52[Ь ЕБ &з]; а ^ Ь;

а: = а В ^[Ь В к2]; Ъ; а-= а В50[ЬВ к1]

},

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

где аВ Ь = а + (100 — Ь) — вычитание по модулю 100.

3. Алгоритм генерации Р!Ы-кода

Вход: С = с0сг ...с15 ЕЖ" - 16-разрядное десятичное число.

1. Число С преобразуется в вектор В =

Ъ0Ъ1 ...Ь7 £2®00 из 8 двухразрядных десятичных чисел.)

-ог ¿ : = 0 Ьо 7 do Ъ^ : = с21 + с21+1 -10;

2. (Начальное забеливание.) -Рог ¿ : = 0 Ьо 7 do Ъ1 : = Ь£

3. (8 раундов преобразований С над вектором В.)

-ог ¿:=0 Ьо 6 do {

С[Ъ7,ке21,Ь2,ке21+1ке21+1](Ь0,Ъ1); Циклический сдвиг В на один разряд вправо:

Ь0Ь1Ь2Ь3Ь4Ь5Ь6Ь7 : = Ь7Ь0Ь1Ь2Ь3Ь4Ь5Ь6] };

С[Ь7,ке14^2,ке15](Ь0,Ь1);

4. (Перемешивание путем умножение вектора В на инволютивную матрицу Л8.)

В: = ВА8;

5. (8 раундов преобразований С-1 над вектором

В.)

-ог ¿:=8 Ьо 14 do {

С 1 [Ь7,ке21,Ь2,ке21+1\(Ь0,Ь1);

Циклический сдвиг В на один разряд влево: Ь0Ь1Ь2Ь3Ь4Ь5Ь6Ь7: =

Ь1Ь2Ь3Ь4Ь5Ь6Ь7Ь0] };

С 1 [Ь7,ке30,Ь2,ке31](Ь0,Ь1);

6. (Заключительное отбеливание.) -ог ¿:=0 Ьо 7 do Ь£: = Ь£

7. (Вектор В преобразуется в 16-разрядное десятичное число С = с0с1 ...с15

-ог ¿:=0 Ьо 7 do {

с21 ■■mod 10;

с21+1 :=Ь1 div 10 }.

Выход: С = с0с1 ...с15 — 16-разрядный десятичный PIN-код.

4. Расписание ключей

После инициализации датчика псевдослучайных байтов и отбрасывания Ь байтов начальной части ключевого потока генерируются ключи

kQ,k■^,...,kJ,

затем генерируются ключи для преобразований С и С"1:

ке0,ке1,.,ке31. Далее конструируются 4 матрицы МаЬ, диагональная матрица М, нижняя и верхняя треугольные матрицы V и Ш, обратные к ним 7"1 и наконец, вычисляется матрица

Предложенный алгоритм обладает инволютив-ным свойством: его можно использовать для реализации обратного преобразования, если ключи кеь I = 0,1, ...,31, используются при этом в обратном порядке. Таким образом, поставленная в работе [1] задача решена.

Укажем также, что данный алгоритм может быть обобщен для порождения разрядных десятичных РГЫ-кодов на любой случай, когда п> 4.

Литература

1. Сущевский Д.Г., Панченко О.В., Кугураков В.С. Современные криптосистемы и их особенности. - Вестник Казан. технол. ун-та, 2015, т. 18, № 11, С. 194-198.

2. Панасенко С. П. Алгоритмы шифрования. Специальный справочник. - СПб.: БХВ-Петербург, 2009.

3. Асосков А.В., Иванов М. А., Мирский А. А., Рузин А. В., Сланин А. В., Тютвин А. Н. Поточные шифры. - М.: КУДИЦ-ОБРАЗ, 2003.

© В. С Кугураков - канд. физ.-мат. наук, доцент кафедры теоретической кибернетики К(П)ФУ, Vladimir.Kugurakov@ksu.ru; А. П. Кирпичников - д-р физ.-мат. наук, зав. кафедрой интеллектуальных систем и управления информационными ресурсами КНИТУ, kirpichnikov@kstu.ru; Д. Г. Сущевский - бакалавр каф. интеллектуальных систем и управления информационными ресурсами КНИТУ, dercius608270@gmail.com.

© V. S. Kugurakov - PhD, Associate Professor of the Department of Theoretical Cybernetics, K(P)FU, Vladimir.Kugurakov@ksu.ru; А. P. Kirpichnikov - Dr. Sci, Head of the Department of Intelligent Systems & Information Systems Control, KNRTU, kirpichnikov@kstu.ru; D. G. Sushchevsky - bachelor of the Department of Intelligent Systems & Information Systems Control, KNRTU, dercius608270@gmail.com.

i Надоели баннеры? Вы всегда можете отключить рекламу.