- •Часть 10. Криптография
- •Возрастание роли криптографии при переходе в информационное общество
- •Актуальность защиты информации в автоматизированных системах
- •Криптография основа современных систем компьютерной безопасности
- •Терминология и проблематика криптографии
- •Проблемы широкого применения криптографических средств защиты информации
- •Идеология скоростных программных шифров
- •Скоростные программные шифры на базе гибких механизмов преобразования
- •Недетерминированная выборка подключей базовый механизм скоростных программных шифров
- •Принципы построения недетерминированных программных шифров
- •Класс шифрующих функций с гибкой выборкой подключей
- •Практическая реализация современных программных средств защиты информации
- •Тенденции развития средств защиты информации от несанкционированного доступа
- •Подход к построению программных средств защиты информации от несанкционированного доступа
- •Средства защиты информации от несанкционированного доступа
Класс шифрующих функций с гибкой выборкой подключей
В этом разделе приводится обобщенное описание класса алгоритмов шифрования, основанных на выборке подключей в зависимости от преобразуемого сообщения, и дается характеристика их общих свойств. В дальнейших разделах будут рассмотрены конкретные криптосистемы, относящиеся к этому классу и имеющие практическое значение.
Обозначения
Входной блок T представлен в виде конкатенации b-битовых подблоков B(i):T=B(n-1)||B(n-2)||...||B(1)||B(0), где n число подблоков.
#T мощность множества всех возможных входных блоков, #T=2nb.
{Qj}={Q[j]} ключ шифрования в виде последовательности b-битовых подключей Q[j], j=0,1,2,...,21.
двоичное число в интервале от 0 до 21, задаваемое управляющими двоичными разрядами подблока и определяющее текущий подключ Q=Q[], используемый в преобразованиях.
количество управляющих битов.
d целое число, задающее число подраундов в одном раунде шифрования.
s номер текущего подраунда, s=1,2,...,b/d.
i номер текущего шага шифрования в текущем раунде, i=1,2,...,nb/d.
(g) некоторая подстановка, определенная на множестве чисел 0,1,2,...,n1.
Запись B>x> (B<x<) обозначает операцию циклического сдвига вправо (влево) подблока B на x двоичных разрядов.
Механизм шифрования
Один раунд шифрования описывается следующим выражением
C=E(T)=e( e(...e(e(T)))),
где e элементарные функции шифрования, i = 1,2,...,k; k =nb/d; C ‑ выходной блок шифротекста. На i-том шаге преобразуется только подблок B(g), где g = i mod n:
B((g)):=ei( B((g)),Q[ (s,g')] ),
где (s,g')=(B((g’)) )>d(s-1)> mod 2; g' = (i1) mod n; s = 1 + (i1) div n; ei ‑ элементарная шифрующая функция, которая для фиксированного B(g)) определяет некоторую подстановку (Q) на множестве чисел 0,1,2,...,2b1.
Шифрование данного блока T можно представить в виде обобщенной формулы:
C=f(T, Qh1, Q h2,...,Q hk),
где {Q hi}, i=1,2,...,k, некоторый набор подключей, использующийся при шифровании данного подблока. Как видно из структуры функции шифрования текущий набор {Q hi} зависит как от ключа, так и от входного сообщения.
Слайд 29
Можно сказать, что для данного ключа и данной конкретной функции шифрования каждый входной блок генерирует некоторый набор индексов hi. Соответствующий набор подключей {Qh1} представляет собой некоторый виртуальный ключ для преобразования данного блока T. Существуют только NT=2bn различных входных блоков, тогда как число различных наборов {Qhi} равно Nh (2nb/d)r, где r число раундов шифрования. Это позволяет предположить, что вероятность генерации двух одинаковых виртуальных ключей для двух разных входных блоков является очень малой. При разработки конкретных шифров предпочтительно использование таких элементарных шифрующих функций, которые задают уникальность ключевых выборок для всех входных сообщений. Это требование ограничивает число возможных вариантов реализации подобных шифров с псевдовероятностной выборкой подключей, однако их число остается достаточно большим. В следующих разделах будут рассмотрены недетерминированные шифры с числом потенциально реализуемых криптоалгоритмов более 1050, каждый из которых удовлетворяет данному требованию.
Процедуры дешифрования описываются следующей формулой:
T=D(C)=d(d(...d(d(C)))),
где di некоторая элементарная функция, которая выполняется на i-том шаге и является обратной по отношению к en-i+1. Элементарные дешифрующие функции имеют следующую структуру:
B((q)) := di(B((q)),Q[(s,q')] ),
где (s,q')=( B((q’)) )>b-sd> mod 2; q=(n+1 i) mod n; q'=(n i) mod n; s = 1 + (i1) div n. Легко установить, что для данного ключа шифрования {Qj} на соответствующих шагах шифрующих и дешифрующих преобразований используются одни и те же подключи.
Рассмотрим случай d= и такие элементарные шифрующие функции, которые удовлетворяют следующему условию:
Слайд 30
Критерий 1.
Все элементарные шифрующие функции задают подстановку старшей части преобразуемых подблоков.
В этом критерии предполагается, что текущий подблок представлен как конкатенация старшей и младшей частей:
B = H||L = H2d(s-1) +L,
где количество двоичных разрядов младшей части зависит от номера текущего подраунда преобразования и равно l=d(s1). Критерий 1 определяет выбор элементарных функций со следующей структурой:
B := e(B) = (H)2d(s-1) + f(L),
где (H) подстановка на множестве чисел {0,1,2,...,2b-d(s-1)1}; f(L) 2 d(s-1)1. При выполнении критерия 1 следующее утверждение является очевидным (этот критерий направлен на реализацию данного утверждения).
Утверждение 1.
Для произвольного ключа шифрования при d = каждый входной блок генерирует уникальный набор индексов {hi}.
Следующая теорема является важной при рассмотрении конкретных алгоритмов, рассмотренных ниже.
Теорема 1.
Если d = , то для произвольного ключа шифрования {Qj} и произвольного набора индексов {hi}, где i=1,2,...,n/d, существует единственный входной блок T, для которого генерируется заданный набор индексов.
Доказательство.
Мощность множества всех возможных наборов из k индексов равна #{hi}= (2)nb/d. При d= имеем #{hi}=2nb=#T. Учитывая утверждение 1, получаем взаимно-однозначное соответствие между элементами {hi} и T, которое доказывает теорему 1.
В приведенном ниже алгоритме, являющемся частным случаем рассмотренной криптосхемы в качестве подстановки (g) используется тождественная подстановка для всех подраундов, а в качестве операций преобразования простые арифметические операции: поразрядное сложение по модулю два (), сложение и вычитание по модулю 232 (+ и , соответственно), а также циклический сдвиг на фиксированное число битов или на число битов, зависящее от преобразуемых данных. Предполагается, что используется 1024-байтовый шифрключ {Qj}={Q}, где Qj 32-битовые подключи (,j=0,1,2,...,255).
При записи алгоритмов использованы следующие обозначения: X,Y,Z и W 32-битовые переменные;
u = (i1) mod 4;
Q() = Q, где = au,bu,du,eu;
au = (Xi)>8u> mod 28;
bu = (Yi)>8u> mod 28;
du = (Zi)>8u> mod 28;
eu = (Wi-1)>8u> mod 28;
V = v4||v3||v2|| v1, где V = X,Y,Z,W и v = x,y,z,w.
Слайд 31
АЛГОРИТМ 1: 128-битовый шифр
(d==8; b=32; n=4)
ВХОД: 128-битовый блок T=D||B||A||E представленный в виде конкатенации четырех 32-битовых слов.
1. Установить: R = 3, i = 1, X0 = A, Y0 = B, Z0 = D и W0 = E.
2. Преобразовать X: Xi = Xi-1Q(eu).
3. Преобразовать Y: Yi = Yi-1Q(au).
4. Преобразовать Z: Zi = Zi-1 Q(bu).
5. Преобразовать W: Wi = Wi-1Q(du),
(w4||w3)si:= ((w4||w3)i)>Yi>, и прирастить i.
6. X i = [(X i-1 Wi-1) mod 232]Q(eu).
7. Yi = {Yi-1 + Q(au)] mod 232}Xi.
8. Zi = [(Zi-1Yi) Q(bu)] mod 232
9. Wi = [Wi Q(du)] mod 232,
(w2||w1)i := ((w2||w1)i)>Yi>, прирастить i.
10. Xi = [Xi-1 Q(eu)] mod 232.
11. Yi = {[Yi-1Q(au)] + Wi-1} mod 232.
12. Zi = {[Zi-1Q(bu)] Xi}mod 232.
13. Wi = Wi-1Q(du), прирастить i.
14. Xi = [Xi-1 + Q(eu)] mod 232.
15. Yi = Yi-1Q(au).
16. Zi = [Zi-1 Q(bu)] mod 232.
17. Wi = [(Wi-1Zi) >Yi> + Q(du)] mod 232.
18. Если i < 4R, то прирастить i и перейти к п. 2,
в противном случае СТОП.
ВЫХОД: 128-битовый блок C=Z12||Y12||X12||W12.
Алгоритм дешифрования легко составить, записывая процедуры преобразования в обратном порядке и заменяя элементарные операции на обратные. По аналогии с этим алгоритмом легко можно записать процедуры для преобразования 32-, 48-, 64-, 96-, 256-битовых блоков данных. При этом надо иметь в ввиду, что шифрование блоков размером менее 64 бит может оказаться нестойким против метода бесключевого чтения, если не использовать дополнительные шифрующие механизмы, ориентированные на противодействие этому виду криптоанализа.
При увеличении размера шифруемого блока может быть достигнут более высокий уровень стойкости к различным способам криптоанализа. Для использования этого эффекта необходимо обеспечить влияние всех битов входного блока на все биты выходного блока и на выборку подключей. Рассмотренная выше структура шифрующих функций позволяет использовать блоки практически произвольного размера, однако, при nb>128 ее скоростные качества несколько уменьшаются. При задании размера блоков 4096 бит (512 байт) сохраняется возможность произвольного доступа к данным, хранимым на встроенном магнитном носителе, и появляются условия для разработки других типов криптосхем с недетерминированной выборкой подключей, потенциально обладающих более высокой стойкостью.
Слайд 32
