Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat

...pdf
Скачиваний:
132
Добавлен:
23.10.2019
Размер:
21.85 Mб
Скачать
t t {0,1}

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Леонард Макс Адлеман (Leonard

Max Adleman, 1945),

профессор информатики и молекулярной биологии в университете Южной Калифорнии. Известен изобретением (1977) вместе из Рональдом Ривестом и Ади Шамиром криптосистемы

RSA (Rіvest – Shamіr - Adleman) и исследо-

ванием ДНК-вычисле- ний. В 1994 г. опубликовал статью, посвященную молекулярным вычислениям решения комбинаторных задач и описания экспериментального использования ДНК как вычислительной системы. Адлеман является также одним из изобретателей оригинального теста Адлемана – Помаранча -Румели (Adleman – Pomerance - Rumely)

на простоту чисел.

Таким образом, размер ключа подписи равняется удвоенному размеру ключа используемого блочного шифра:

 

 

2

 

2nK .

(8.9)

 

KS

K

Ключ проверки является результатом шифрова-

ния двух блоков текста X 0

и

X1 с ключами k0

и k1

соответственно

 

 

 

kV (C0 ,C1 ) Ek

( X0 ), Ek ( X1 ) ,

 

 

 

 

0

1

 

где параметром схемы является блоки данные, несекретные и известные стороне, которая проверяет подпись. Таким образом, размер ключа проверки подписи равняется удвоенному размеру блока использованного блочного шифра:

kV 2 X 2n.

Алгоритм Sig генерирования ЭЦП для бита заключается просто в выборе соответ-

ствующей половины из пары, которая составляет секретный ключ подписи:

Алгоритм Ver проверки подписи базируется на проверке уравнения Ekt ( Xt ) Ct , который должен

выполняться для нашего t. Получателю известны все используемые при этом величины. Таким образом, функция проверки подписи:

1, Es ( Xt

) Ct

,

(8.10)

Ver(t, s, kV )

( Xt ) Ct .

0, Es

 

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

1. Невозможность подписать бит t, если не-

известен ключ подписи. Действительно, для выполнения этого злоумышленнику пришлось бы развязать уравнение ES ( Xt ) Ct относительно s, что эк-

вивалентно определению ключа для известных блоков шифрованного и соответствующего ему открытого текста, что вычислительно невозможно в результате использования стойкого шифра.

610

Глава 8. Шифрование и дешифрование информации

2. Невозможность подписать бит t, если неизвестен ключ подписи.

Действительно, для выполнения этого злоумышленнику пришлось бы развязать уравнение ES ( Xt ) Ct относительно s, что эквивалентно определе-

нию ключа для известных блоков шифрованного и соответствующего ему открытого текста, что вычислительно невозможно в результате использования стойкого шифра.

3. Невозможность подобрать другое значение бита t, что подходило бы под заданную подпись. Возможных значений бита всего два, а вероятности выполнения двух приведенных дальше условий одновременно очень малые, учитывая использование криптостойкого алгоритма

ES (X0 ) C0 ,

ES ( X1 ) C1.

Предложенная Диффи и Хеллманом схема ЭЦП на основе классического блочного шифра имеет такую же стойкость, как и блочный шифр, и при этом достаточно простая. Однако она имеет два существенных недостатка.

Первый недостаток заключается в том, что эта схема дает возможность подписать лишь один бит информации. В блоке большего размера придется отдельно подписывать каждый бит, потому даже с учетом хеширования сообщения все компоненты подписи - секретный ключ, проверяющая комбинация и подпись - выходят достаточно большими по размеру и более чем на два порядка превышают размер блока, который подписывается. Предположим, что в схеме используется криптографический алгоритм EK с размером блока

и ключа соответственно n и nK . Предполагая также, что используется функция хэширования с размером исходного блока nH . Тогда размеры основных рабочих блоков таковы:

размер ключа подписи: nkS 2nH nK . размер ключа проверки подписи: nC 2nH n.

размер подписи: nS nH nK .

Второй недостаток этой схемы заключается в том, что пары ключей генерирования подписи и проверки подписи можно использовать только один раз. Действительно, выполнение процедуры подписи бита сообщения приводит к раскрытию половины секретного ключа, после чего он уже не является полностью секретным, а следовательно, его нельзя использовать повторно. Поэтому для каждого сообщения, которое подписывается, необходим свой комплект ключей подписи и проверки. Это практически делает невозможным использование рассмотренной схемы Диффи - Хеллмана в предложенном варианте в реальных системах ЭЦП.

Березин и Дорошкевич предложили модификацию схемы Диффи - Хеллмана, что фактически устраняет ее недостатки.

611

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

Пример. Алгоритм ЭЦП на основе классического блочного шифра Березина и Дорошкевича.

Центральным в этом подходе является алгоритм «одностороннего криптографического прокручивания», которое в известной мере может рассматриваться как аналог операции подъема к степени. Предположим, что в нашем распоряжении есть криптографический алгоритм EK с размером блока дан-

ных и ключа соответственно n и nK бит, причем n nK .

Пусть у нас также есть некоторая функция отображения битовых блоков

данных у n-бит и Y Pn nK (X ),

 

X

 

n,

 

Y

 

nK . Определим рекурсивную

 

 

 

 

 

 

 

 

 

 

функцию Rk «одностороннего прокручивания» блока данных T размером n бит k раз k 0 с помощью такой формулы:

T , k 0,

Rk (T ) EPn nK ( Rk 1 (T )) ( X ), k 0,

где X - произвольный несекретный n-битовый блок данных, являющихся параметром процедуры прокручивания.

Идея функции одностороннего прокручивания чрезвычайно проста: достаточно всего лишь нужное количество раз k выполнить такие действия: расширить n-битовый блок данных T к размеру nK ключа использованного алгоритма шифрования; на полученном расширенном блоке как

на ключе зашифровать блок данных

X ; результат шифрования занести на

место исходного блока данных T .

Операция Rk (T )

имеет важные свой-

ства.

 

 

 

1.

Аддитивность и коммутативность по количеству прокручиваний:

 

Rk k (T ) Rk Rk (T ) Rk Rk (T ) .

(8.11)

2.

Односторонность или необратимость прокручивания: если известно

только некоторое значение функции Rk (T ), то численными методами невозможно найти значение Rk (T ) для любого k k . Если бы это было возможно, то в нашем распоряжении был бы способ определить ключ шифрования по известным входным и исходным блокам алгоритма EK , что противоречит

предположению о стойкости шифра.

Теперь покажем, как отмеченную операцию можно использовать для подписи блока T , состоящего из nT битов.

Секретный ключ подписи kS выбирается как произвольная пара блоков k0 , k1 , которые имеют размер блока данных используемого блочного шифра, т.е. размер ключа генерирования подписи равняется удвоенному размеру блока данных использованного блочного шифра kS 2n.

612

Глава 8. Шифрование и дешифрование информации

Ключ проверки подписи вычисляется как пара блоков, которые имеют размер блоков данных использованного алгоритма за такими формулами:

k

(C , C ) R

1

(K

), R

1

(K ) .

(8.12)

C

0 1

2

0

2

1

 

Вэтих вычислениях также используются несекретные блоки данных X 0

иX1 , которые являются параметрами функции «одностороннего прокручи-

вания», они непременно должны быть разными. Таким образом, размер ключа проверки подписи также равняется удвоенному размеру блока данных ис-

пользованного блочного шифра kS 2n.

Вычисление и проверку ЭЦП выполняют таким образом.

Алгоритм SIGNT получения ЭЦП для n-битового блока T заключается в исполнении «одностороннего прокручивания» обеих половин ключа подписи

соответственно T и 2nT 1 T раз:

s SignT (T ) (s0 , s1 ) RT (k0 ), R21 T (k1 ).

(8.13)

Алгоритм VERNT проверки подписи состоит из проверки

истинности

соотношений

 

R21 T (s0 ) C0 , RT (s1 ) C1,

 

которые должны выполняться для настоящего блока данных Т

 

R21 T (s0 ) R21 T (RT (k0 )) R21 T T (k0 ) R21 (k0 ) C0 ,

RT (s1 ) RT (R21 T (k1 )) RT 2nT 1 T (k1 ) R21 (k1 ) C1.

Таким образом, функция проверки подписи приобретает вид

1, R

 

 

(s ) C

 

R (s ) C ,

 

 

 

 

 

 

 

 

 

0

0

 

T 1

1

 

Ver(T , s, kC )

2

1 T

(s ) C

 

R (s ) C .

(8.14)

0, R

 

 

 

 

 

 

2

 

1 T

0

0

 

T 1

1

 

 

 

 

 

 

 

 

Покажем, что для этой схемы выполняются необходимые условия работоспособности схемы подписи. Допустимо, что в распоряжении злоумыш-

ленника есть n-битовый блок T ,

его подпись s (s0 , s1 ) и ключ проверки

kC

(C0 ,C1 ) . Пользуясь этой информацией,

злоумышленник пытается

найти правильную подпись

s (s

, s ) для другого n-битового блока T .

Для

 

 

 

0

1

 

 

 

 

этого ему нужно решить такие уравнения относительно s и

s :

 

 

 

 

 

 

 

0

1

 

 

R

1 T

(s ) C ,

R (s ) C .

 

 

 

2

0

0

T 1

1

 

 

В распоряжении злоумышленника есть блок данных

T с подписью

s (s , s ), что дает ему возможность вычислить одно из значений s и

s ,

0

1

 

 

 

 

 

0

1

даже не имея ключа подписи

613

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

 

 

 

0

T

0

RT T

 

T

 

 

0

RT T

0

 

 

1)

если

T T , то s

R

k

 

R

 

k

 

s

;

 

2)

если

 

 

R21 T

(k1 ) RT T (R21 T (k1 )) RT T (s1 ). .

 

T T , то s1

 

Однако для нахождения второй половины подписи s

и

s

соответ-

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

ственно в случае 1 и 2 ему необходимо выполнить прокручивание в противоположном направлении, т.е. найти Rk ( X ), имея только значение для большего k, что численными методами невозможно. Таким образом, злоумышленник не может подработать подпись под сообщением, если не имеет в своем распоряжении секретный ключ подписи.

Второе требование также выполняется: вероятность подобрать блок данных T , отличающийся от блока T , имея такую же цифровую подпись, настолько мала, что ею можно пренебречь. Действительно, пусть цифровая подпись блоков T и T одна и та же. Тогда подписи обоих блоков таковы

s S

nT

(T ) (s , s ) R (k

), R

1 T

(k ) ,

 

 

 

 

0

1

T

0

 

2

 

1

 

 

 

s S

nT

(T ) (s

, s ) R

(k

 

), R

1 T

(k )

 

,

 

 

0

1

T

0

2

 

 

1

 

 

 

но s s , следовательно, имеем

 

 

 

 

 

 

 

 

 

 

 

 

 

RT (k0 ) RT (k0 ) и R21 T (k1 ) R21 T (k1 ).

(8.15)

Возьмем для определенности T T , тогда выполняются такие равенства:

RT T (k0 ) k0 , RT T (k1 ) k1 , где k0 RT (k0 ),

Последнее условие значит, что прокручивание двух разных блоков данных одинаковое число раз оставляет их значения неизменными. Вероятность такого события чрезвычайно мала, и ее можно не принимать во внимание.

Таким способом только что рассмотренная модификация схемы Диф- фи—Хеллмана делает возможной подпись не одного бита, а целой битовой группы. Это дает возможность в несколько раз уменьшить размер подписи и ключей подписи/проверки отмеченной схемы.

Однако нужно понимать, что увеличение размера подписываемых битовых групп приводит к экспоненциальному увеличению объема необходимых вычислений, а следовательно, начиная с некоторого значения робота схемы становится неэффективной. Предел «умного размера» подписываемой группы составляет около 10 бит, а блоки большего размера одинаково необходимо подписывать «вразнобой».

614

Глава 8. Шифрование и дешифрование информации

Размер ключей и подписи. Найдем размеры ключей и подписи, а также объем необходимых для реализации схемы вычислений.

Пусть размер хеш-блока и блока используемого шифра одинаковые и равняются n, а размер подписываемых битовых групп равняется nT. Предположим также, что когда последняя группа содержит меньшее количество битов, то обрабатывается она так же, как полная n-битовая группа. Тогда размеры ключей подписи/проверки и самой подписи совпадают:

 

 

 

n

 

n2

| KS

| | KC

| | s | 2n

 

 

2

 

бит,

 

 

 

 

nT

 

nT

где x - округление числа x к ближайшему целому в

направлении роста.

Количество операций шифрования EK ( X ), не-

обходимое для реализации процедур схемы, определяется приведенными дальше соотношениями.

При генерировании ключевой информации

WK

2(21)

 

n

 

2nT 1 n

;

 

 

 

 

 

nT

 

 

nT

 

 

при генерировании и проверке подписи

WS

WC

(21)

 

n

 

2n

.

 

 

 

 

 

nT

 

 

 

nT

 

 

Размер ключа подписи и проверки подписи можно дополнительно уменьшить такими приемами.

1. Нет необходимости сохранять ключи подписи отдельных битовых групп, их можно динамически производить в нужный момент времени с помощью генератора криптостойкой гаммы. Ключом подписи в этом случае будет обычный ключ, использованный в схеме подписи блочного шифра.

2. Аналогично нет необходимости хранить массив ключей проверки подписи отдельных битовых

Витфилд Диффи

(Whitfield Diffie, 1944),

получил степень бакалавра по математики в Массачусетском технологическом ин-

ституте (1965). В 1976

году вместе с еще одним известным специалистом в области криптографии Мартином Хеллманом опубликовал статью "Новые направления в криптографии", в которой предлагался радикально новый метод работы с распределенными ключами, который решал одну из фундаментальных проблем криптографии - так называемый метод обмена ключей Диффи - Хеллмана.

615

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

групп блока, достаточно хранить значение хэшфункции этого массива. При этом алгоритм генерирования ключа подписи и алгоритм проверки подписи будут дополнены еще одним шагом - вычислением проверяющих комбинаций отдельных битовых групп.

Таким образом, проблема размера ключей и подписи решена, однако второго недостатка схемы - одноразовости ключей - не устранено, поскольку это невозможно в рамках подхода Диффи - Хеллмана.

Для практического использования такой схемы, рассчитанной на подпись N сообщений, отправителю необходимо хранить N ключей подписи, а получателю - N ключей проверки, что достаточно неудобно. Эту проблему можно решить так же, как была решена проблема ключей для множественных битовых групп - генерацией ключей подписи для всех N сообщений из одного мастерского ключа и свертыванием всех проверяющих комбинаций в одну контрольную комбинацию с помощью алгоритма вычисления хэшфункции.

Такой подход решил бы проблему размера сохраненных ключей, но привел бы к необходимости вместе с подписью каждого сообщения высылать отсутствующие N проверяющих комбинаций, необходимых для вычисления хеш-функции массива всех контрольных комбинаций отдельных сообщений. Понятно, что такой вариант не имеет преимущества по сравнению с выходным.

Упоминавшиеся уже авторы предложили механизм, который дает возможность значительно снизить остроту проблемы. Его основная идея — вычислять контрольную комбинацию (ключ проверки подписи) не как хешфункцию от линейного массива проверяющих комбинаций всех сообщений, а попарно — с помощью бинарного дерева. На каждом уровне проверяющая комбинация вычисляется как хеш-функция от конкатенации двух проверяющих комбинаций младшего уровня. Чем высший уровень комбинации, тем больше отдельных ключей проверки «учитывается» в ней.

Допустим, что наша схема рассчитана на 2L сообщений. Обозначим через Ci(l ) і-ю комбинацию l-го уровня. Если нумерацию комбинаций и уровней начинать с нуля, то выполняется такое условие: 0 i 2L l , а і-я проверяющая комбинация l-го уровня рассчитана на 2l сообщений с номерами от i 2l к (i 1) 2l 1 включительно. Комбинаций нижнего, нулевого, уровня будет

2L , а последнего, верхнего, L-го уровня — одна, которая и является контрольной комбинацией всех сообщений, на которые рассчитана схема.

На каждом уровне, начиная с первого, проверяющие комбинации рассчитываются по формуле

Ci(l 1) H (C2(li) || C2(li) 1 ) ,

616

Глава 8. Шифрование и дешифрование информации

где через A || B обозначен результат конкатенации двух блоков данных A и B, а через H ( X ) - процедура вычисления хэш-функции блока данных X .

При использовании отмеченного подхода вместе с подписью сообщения необходимо передать не как в исходном варианте, а только log2 N контроль-

ных комбинаций. Передаваться должны комбинации, которые отвечают смежным отраслям дерева на пути от конечной вершины, которая отвечает номеру использованной подписи, к корню.

Пример. Организация проверяющих комбинаций.

Организацию проверяющих комбинаций в виде двоичного дерева в схеме на восемь сообщений иллюстрирует рис. 8.22.

Уровень 3

 

 

 

 

C0(3)

 

 

 

Уровень 2

 

 

C (2)

 

 

 

C1(2)

 

 

 

 

0

 

 

 

 

 

Уровень 1

(1)

 

(1)

 

 

(1)

 

(1)

 

C0

 

C1

 

 

C2

 

C3

Уровень 0

C (0)

C (0)

C (0)

C (0)

C (0)

C (0)

C (0)

C (0)

 

0

1

2

3

4

5

6

7

Рис. 8.22. Организация проверочных комбинаций в виде двоичного дерева

Так, при передаче сообщения № 5 (контрольная комбинация выделена рамкой) вместе с его подписью должна быть передана контрольная комбинация сообщения № 4 C4(0) , общая для сообщений № 6-7 C3(1) и общая для сооб-

щений № 0-3 C0(2) , все они выделены на рисунке другим фоном. При проверке подписи значение C5(0) будет вычислено из сообщения и его подписи, а

итоговую контрольную комбинацию, которая подлежит сравнению с эталонной, по формуле

C C0(3) H (C0(2) || H H C4(0) || C5(0) || C3(1) .

(8.16)

Необходимость отправлять вместе с подписью сообщения дополнительную информацию, нужную для проверки подписи, в действительности не очень обременительная. Действительно, в системе на 1024 = 210 подписей вместе с сообщением и его подписью необходимо дополнительно передавать 10 контрольных комбинаций, а в системе на 1048576 = 220 подписей - всего 20 комбинаций. Однако в случае большого количества подписей, на которые рассчитана система, появляется другая проблема - хранение дополнительных ком-

617

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ

бинаций, если они рассчитаны предварительно, или их генерирование в момент формирования подписи.

Дополнительные контрольные комбинации, которые передаются вместе с подписью и используются при его проверке, производятся при формировании ключа проверки за ключом подписи и могут сохраняться в системе и использоваться в момент формирования подписи или вычисляться заново в этот момент.

Первый подход допускает расходы дисковой памяти, поскольку необходимо хранить значения хэш-функции всех уровней, а второй нуждается в большом объеме вычислений в момент формирования подписи. Можно использовать и компромиссный подход - хранить все хэш-комбинации начиная

с некоторого уровня l , а комбинации меньшего уровня вычислять при формировании подписи.

В рассмотренной схеме подписи на 8 сообщений можно хранить все 14 контрольных комбинаций, используемых при проверке (всего их 15, но последняя верхняя не используется), тогда при проверке подписи их не придется вычислять заново. Можно хранить 6 комбинаций, начиная с уровня 1

C0(1) , C1(1) , C2(1) , C3(1) , C0(2) , C1(2) , тогда при проверке подписи сообщения 5

необходимо будет заново вычислить комбинацию C4(0) , а другие C0(2) , C3(1)

взять из таблицы и т.д. Отмеченный подход дает возможность достичь компромисс между быстродействием и требованиями к занятому количеству дискового пространства.

Отметим, что отказ от хранения комбинаций одного уровня дает возможность экономить память, но вычислительные расходы при этом растут почти вдвое, т.е. зависимость имеет экспоненциальный характер.

Функции хэширования. Функция хеширования может использоваться для выявления модификации сообщения. Т.е. она может служить криптографической контрольной суммой (ее называют также кодом выявления измене-

ний, или кодом аутентификации сообщения).

Хэш-функция H (функция хэширования; функция расстановки) — функция, которая используется для математического преобразования сообщения переменной длины M в блок данных фиксированной длины H (M )

(значение функции) и однозначно отображает произвольно выбранный открытый текст (аргумент функции).

Значение хэш-функции - множество значений целых чисел, которые принадлежат заданному диапазону и образованы в результате вычисления хеш-функции (рис. 8.23).

Теоретически возможно, что два разных сообщения могут быть сжаты в ту же свертку (так называемая ситуация «столкновения»). Поэтому для обеспечения стойкости функции хеширования необходимо предусмотреть способ избежать столкновения. Полностью столкновений избежать нельзя, поскольку в

618

Глава 8. Шифрование и дешифрование информации

общем случае количество возможных сообщений превышает количество возможных исходных значений функции хеширования. Однако вероятность столкновения должна быть низкой.

Сообщение

Хэш -функция

Хэш

0ВD667A

Рис. 8.23. Схематическое изображение хэш-функции

Для того чтобы функция хэширования могла быть должным образом использована в процессе аутентификации, она должна иметь такие свойства:

1)хэш-функцию H можно применить к аргументу любого размера;

2)исходное значение H является фиксированным;

3)значение H (x) достаточно просто вычислить для любого x. Скорость

вычисления хэш-функции должна быть такой, чтобы скорость генерирования и проверки ЭЦП при использовании хэш-функции была значительно больше, чем при использовании самого сообщения;

4)для любого y с вычислительной точки зрения невозможно найти x, такое что H (x) y ;

5)для любого фиксированного x с вычислительной точки зрения невозможно найти x x, где H x H x .

Свойство 5 гарантирует, что нельзя найти другое сообщение, которое дает ту же свертку. Это предотвращает подделку и также позволяет использовать H в качестве криптографической контрольной суммы для проверки целостности.

Свойство 4 эквивалентно потому, что H является односторонней функцией. Стойкость систем с открытыми ключами зависит от того, что открытое криптопреобразование является односторонней функцией-ловушкой. Напротив, функции хэширования явлюется односторонними функциями, которые не имеют ловушки.

Пример. Функция безопасного хеширования (SHA).

Алгоритм безопасного хеширования SHA (Secure Hash Algorithm), принятый как стандарт США 1992 г. предназначен для использования вместе с алгоритмом цифровой подписи, определенным в стандарте DSS. При введении сообщения M алгоритм производит 160-битовое исходное сообщение,

619