Приложения шифров. Криптоанализ. Учебное пособие
.pdfАлгоритм SHA разработан АНБ США в рамках стандарта безопас- ного хэширования SHS в 1992 г. Предназначен для использования совместно с алгоримом цифровой подписи DSA. Отличия от MD5 со- стоят в следующем:
1)SHA выдает 160-битовое хэш-значение и более устойчив к ата- кам полного перебора и «дня рождения», чем MD5, формирующий 128-битовый хэш;
2)сжимающая функция SHA состоит из 80 шагов, а не 64, как в
MD5;
3)расширение входных данных производится не простым их по- вторением в другом порядке, а с помощью рекуррентной функции;
4)усложнен процесс перемешивания.
Отечественный стандарт ГОСТ Р 34.11–94
Для нахождения хэш-функции используется алгоритм шифрования ГОСТ 28147–89. Вычисление шаговой хэш-функции для сообщения x длиной 256 бит (при необходимости оно дополняется фиксированными символами до 256 бит) содержит три этапа: генерацию четырех клю-
чей K1–K4, шифрование стартового вектора H на этих ключах, пере-
мешивание результата. Стандарт предусматривает, что все пользовате- ли системы имеют общую информацию: блок подстановки для шифрования и стартовый вектор длиной 256 бит.
Шаговая функция хэширования
Алгоритм вычисления шаговой функции хэширования включает в себя три части, реализующие последовательно:
генерацию ключей – слово длиной 256 бит;
шифрующее преобразование – зашифрование 64-битных подслов слова Н на ключах Ki (i = 1, 2, 3, 4) c использованием алгоритма по
ГОСТ 28147–89 в режиме простой замены;
перемешивающее преобразование результата шифрования.
Генерация ключей
Рассмотрим X (b256, b255, , b1) V256(2).
Пусть
X x4 || x3 || x2 || x1 16 || 15 || 1 32 || 31 || 1,
11
где |
|
|
|
|
|
|
(bi64, , b(i 1)64 1 V64(2), |
i 1, , 4 ; |
|
||||||||||
|
|
|
|
|
|
xi |
|
||||||||||||
|
|
|
|
|
|
j (bj16, , b( j 1)16 1 V16(2), |
j 1, , 16 ; |
|
|||||||||||
|
|
|
|
|
|
k (bk8, , b(k 1)8 1 V8(2), k 1, , 32 . |
|
||||||||||||
|
Обозначают A(X ) x1 |
|
x2 |
|
x4 |
|
|
|
|
|
|
|
|||||||
|
|
|
|
x3 |
|
x2 . |
|
|
|||||||||||
|
Используют |
преобразование |
|
|
|
|
P : V256(2) V256(2) |
слова |
|||||||||||
32 |
|
31 |
|
|
|
1 в |
слово (32) |
|
(1) , |
где i 1 4(k 1) |
|||||||||
|
|
|
|
(31) |
|||||||||||||||
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8i k, i 0 3, k 1 8 .
Для генерации ключей необходимо использовать следующие ис- ходные данные:
–слова H, M V256(2) ;
–параметры слова Ci (i = 2, 3, 4), имеющие значения С2 С4 0256 ,
С3 = 180811602411608(0818)21808(0818)4(1808)4 = FF00FFFF000000FFFF
0000FF00FFFF0000FF00FF00FF00FFFF00FF00FF00FF00.
При вычислении ключей используется следующий алгоритм.
1.Присвоить значения: i = 1, U = H, V = M.
2.Выполнить вычисление W U V, K1 P(W).
3.Присвоить i = i + 1.
4.Проверить условие i = 5. При положительном исходе перейти к шагу 7. При отрицательном – перейти к шагу 5.
|
Выполнить вычисления U A U |
|
Ci , |
V A A(V ) , |
||
5. |
|
|||||
W U |
|
V, Ki P(W) . |
|
|||
|
|
|||||
6. |
Перейти к шагу 3. |
|
||||
7. |
Конец работы алгоритма. |
|
||||
Шифрующее преобразование
На данном этапе осуществляется зашифрование 64-битных подслов слова Н на ключах Ki (i = 1, 2, 3, 4).
Для шифрующего преобразования необходимо использовать сле- дующие исходные данные: H = h4||h3||h2||h1, hi V64(2), i = 1, …, 4 и набор ключей K1 , K2 , K3 , K4 .
12
Реализуют алгоритм зашифрования и получают слова si EKi (hi ),
где i = 1, 2, 3, 4.
Врезультате данного этапа образуется последовательность S =
=s4||s3||s2||s1.
Перемешивающее преобразование
На данном этапе осуществляется перемешивание полученной по- следовательности с применением регистра сдвига. Исходными данны-
ми являются слова H, M, S V256(2) . Пусть |
отображение ѱ: |
||||||||
V256(2) V256(2) преобразует слово 16 |
|
|
|
15 |
|
|
|
1, |
i V16(2) в сло- |
|
|
|
|
||||||
во 1 2 3 4 13 16 || 16 
15 
1.
Тогда в качестве значения шаговой функции хэширования прини- мается слово (M, H) 61 H M 12 (S) , где i – i-я сте-
пень преобразования ѱ. Структурные схемы отображений шаговой хэш-функции ГОСТ Р 34.11–94 по [7] приведены на рис. 5.
Рис. 5. Схемы отображений шаговой хэш-функции ГОСТ Р 34.11–94
13
Процедура вычисления хэш-функции
Исходными данными для процедуры вычисления значения функ-
ции h является подлежащая хэшированию последовательность M B* , а параметром – стартовый вектор хэширования Н – произвольное фик-
сированное слово из V256(2) .
Процедура вычисления функции h на каждой итерации использует следующие величины:
M B* – часть последовательности М, не прошедшая процедуры хэширования на предыдущих итерациях;
H V256(2) – текущее значение хэш-функции;
V256(2) – текущее значение контрольной суммы;
L V256(2) – текущее значение длины, обработанной на предыду-
щих итерациях части последовательности М.
Алгоритм вычисления функции h включает следующие этапы.
Первый этап
Присвоить начальные значения текущих величин:
M = M;
H = H;
0256 ;
L 0256 .
Переход ко второму этапу.
Второй этап
Проверить условие |M| > 256.
При положительном исходе перейти к этапу 3. В противном случае выполнить последовательность вычислений:
1)L ≤ Lˆ + M > 256;
2)M 0256 |M | || M ;
3)M ;
4)H (М , H) ;
5)H (L, H) ;
6)H ( , H) ;
7)конец работы алгоритма.
14
Третий этап
Вычислить подслово М s V256(2) слова М (М М р || М s ) . Далее выполнить последовательность вычислений:
H (Ms, H) ;
L≤ L + 256 > 256;
Ms ;
M M p .
Перейти ко второму этапу.
Значение величины Н, полученное на шаге вычисления 6 второго этапа, является значением функции хэширования h(M).
1.2. Криптографическая аутентификация субъектов
Аутентификация субъектов (или пользователей) основана на ис- пользовании механизма запроса-ответа. Суть его заключается в следу- ющем.
Пусть есть два субъекта: А и В. Если А хочет быть уверен, что со- общения, получаемые от В, не являются ложными (т. е. субъект В – подлинный), то А посылает В непредсказуемый элемент – запрос ХА (например, случайное число). Субъект В должен выполнить над ХА за- ранее оговоренную операцию (например, вычислить значение функции
YB fAB (X А )) . Получив ответ YB , субъект А может сравнить его с вычисленным самостоятельно значением YA (YA YB ?) и установить,
является ли субъект В подлинным.
Для взаимной проверки подлинности механизм применяется с двух сторон и образует так называемую процедуру «рукопожатия», которая
в общем случае может быть повторена необходимое число раз для повышения достоверности аутентификации. Недостаток метода – возможность установления закономерности между запросом и отве-
том. Тогда в качестве fAB может быть применена криптографическая функция (шифр) EAB и субъекты А, В признают друг друга подлин-
ными, если докажут, что обладают «правильными» ключами; в слу- чае применения симметричных шифров – если владеют общим клю-
чом KАВ .
15
Для аутентификации субъекта можно использовать и криптографи- ческие системы с открытым ключом. Секретный ключ d известен толь- ко его владельцу, в то время как отрытый ключ доступен всем. Так как последовательность использования ключей не имеет значения, шифро- вание на закрытом ключе выделяет (не раскрывая) аутентификатор субъекта (а именно – состояние памяти, хранящей значение d), под- тверждаемый расшифрованием на открытом ключе. Следовательно, пока закрытый ключ не покидает головы человека, он является таким же аутентификатором, как и привычные нам остальные аутентифика- торы – рисунки кровеносных сосудов сетчатки, радужной оболочки, папиллярных линий, формы лица, ушей и т. д.
Именно на этом и основаны протоколы идентификации и аутенти- фикации с так называемой «нулевой передачей знаний». Одна из пер- вых схем такой идентификации была предложена в 1986 г. У. Фейге, А. Фиатом и А. Шамиром. Рассмотрим ее упрощенный вариант. Но сначала дадим несколько определений.
Целые числа a и b называют сравнимыми по модулю n, если их остатки при делении на n совпадают. Обычно для обозначения этого факта используется запись a ≡ b(mod n).
Отсюда, в частности, следует, что число n делит разность чисел a и b. Операцию нахождения числа b = a mod n называют приведением числа a по модулю n.
Множество целых чисел a0, , an–1, таких, что для любого целого числа b найдется k 0, …, n – 1} со свойством ak bmodn , называет-
ся полной системой вычетов по модулю n.
Число d называют обратным к числу а по модулю n, если произве- дение ad при делении на n дает в остатке единицу: ad(modn) 1. При-
нятое обозначение: d a 1(modn). Это число существует тогда и только тогда, когда число а является взаимно простым с n.
Числа a, удовлетворяющие сравнению x2 а(mod р) для некото-
рого х, называются квадратичными вычетами. Если это сравнение неразрешимо, то числа a называются квадратичными невычетами. Ровно половина всех чисел вида 1, 2,..., р – 1 для нечетного p являет- ся квадратичными вычетами, а вторая половина – квадратичными не- вычетами.
16
Примеры
1.Для р = 11 числа 1, 3, 4, 5, 9 являются квадратичными вычетами, числа 2, 6, 7, 8, 10 – квадратичными невычетами.
2.Для p = 7 числа 1, 2, 4 являются квадратичными вычетами, числа 3, 5, 6 – квадратичными невычетами. Однако при переходе к квадра- тичному расширению поля числа 3, 5, 6 тоже становятся квадратичны- ми вычетами.
Число g называют корнем из а по модулю n, если произведение gg
при делении на n дает в остатке а: gg(modn) a . Принятое обозначение: g = a (mod n).
Схема идентификации с нулевой передачей знаний
А – доказывает, В – проверяет подлинность, С – доверенный ар- битр.
1. С выбирает V, такое, что x2 V(modn) имеет решение и суще- ствует V 1(modn) .
Вычисляется S ≡ V 1 (mod n); V – открытый ключ А; S – секрет- ный ключ А.
2. A выбирает случайное число r < n, вычисляет x r2(modn) и отправляет х к В.
3.В посылает А случайный бит b.
4.Если b = 0, А отправляет число r стороне В. Если b = 1, то А от- правляет В число y = rS(mod n).
5.Если b = 0, то В проверяет, что x r2(modn) , чтобы убедиться,
что А знает x . Если b = 1, то В проверяет, что x y2V (modn) , чтобы
иметь подтверждение, что А знает V 1 .
Шаги 2–5 образуют один цикл протокола, называемый аккредита- цией. Стороны повторяют этот цикл t раз до тех пор, пока В не убедит- ся, что А знает значение S.
Если А не знает S, то сможет обмануть В при b = 0 или при b = 1, но не в обоих случаях сразу. То есть вероятность того, что А обманет В
в одном цикле аккредитации, составляет 2 1, соответственно в t цик- лах – 2 t .
17
Пример
Возьмем n 5 7 35. Квадратичные вычеты:
1: х ≡ 1 (mod 35) имеет решения 1, 6, 29, 34 (далее запись x ≡ i(mod 35) опускаем);
4: 2, 12, 23, 33; 9: 3, 17, 18, 32; 11: 9, 16, 19, 26;
14:7, 28;
15:15, 20;
16:4, 11, 24, 31;
21:14, 21;
25:5, 30;
29:8, 13, 22, 27;
30: 10, 25.
Вычеты 14, 15, 21, 25 и 30 не имеют обратных значений по mod 35, так как не являются взаимно простыми с 35, поэтому исключаются
(табл. 1).
|
|
|
|
Т а б л и ц а 1 |
|
|
|
|
|
V |
|
V 1 |
|
S = V 1 |
1 |
|
1 |
|
1 |
4 |
|
9* |
|
3 |
9 |
|
4 |
|
2 |
|
|
|
|
|
11 |
|
16 |
|
4 |
16 |
|
11 |
|
9** |
29 |
|
29 |
|
8 |
|
|
|
|
|
|
|
Пояснение: |
|
|
|
*(4 9) mod 35 = 1; **(9 9) mod 35 = 11 |
|
||
Пусть открытый ключ А состоит из четырех значений V: {4, 11, 16, 29}. Соответственно секретный ключ S: {3, 4, 9, 8}.
1.А выбирает r = 16, x 162 mod35 11 и посылает х к В.
2.В отправляет А случайную двоичную строку: (1, 1, 0, 1).
18
3. А вычисляет
yr S1b1S2b2S3b3S4b4 modn 16(31 41 90 81)mod35 31
иотправляет y к В.
4.В проверяет, что
x y2 V1b1V2b2V3b3V4b4 modn 312(41 111 160 291)mod35 11.
Как видно из примера, параллельная схема идентификации позво- ляет увеличить число аккредитаций, выполняемых за один цикл и уменьшить длительность процесса идентификации.
В подобной схеме идентификации с нулевой передачей знаний, разработанной Л. Гиллоу и Ж. Куискуотером, аккредитации в каждом обмене доведены до абсолютного минимума – для каждого доказа- тельства требуется только один обмен с одной аккредитацией. Но объ- ем требуемых вычислений при этом выше, чем в схеме Фейге–Фиата– Шамира.
1.3. Электронно-цифровая подпись
Таким образом, для каждого из объектов аутентификации (данных
исубъектов-пользователей) на основе криптографических преобразо- ваний определяется свой аутентификатор, назовем их, предположим, m
иd для документа и человека соответственно. Аутентификатор m вы- деляется с помощью хэш-функции. Аутентификатором d является за- крытый ключ асимметричного шифра.
Осталось соединить два имеющихся аутентификатора m и d в одно целое. Для этого полученное хэш-значение документа («хэш») шифру- ется с использованием секретного ключа. Что же представляет собой этот зашифрованный хэш, или, иными словами, электронно-цифровая подпись (ЭЦП)? С точки зрения теории множеств это не что иное, как упорядоченная пара (т. е. новый, единый элемент) < d, m > (именно в таком порядке, так как не зная d, не узнаешь m). Таким образом, если
M {mi} – множество аутентификаторов электронных документов, D {di} – множество аутентификаторов пользователей, то множество ЭЦП = S есть прямое (декартово) произведение S = D M.
19
ЭЦП является аутентификатором, уникальным в том смысле, что представляет одновременно два реальных объекта – электронный до- кумент и человека, его подписавшего. Формируется она следующим образом (на примере ЭЦП RSA, рис. 6).
ОТПРАВИТЕЛЬ |
КАНАЛ |
ПОЛУЧАТЕЛЬ |
|
|
|
ПЕРЕДАЧИ |
|
|
|
|
|
|
|
ДАННЫХ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S = md(modN) |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
E, N |
|
|
ЭЦП – |
|
m = m |
1 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
m = h(M) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ЭЦП+ |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
M |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функция h |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m = h(M) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Рис. 6. Схема ЭЦП RSA |
|
|
|
|
|
|
|
|||||||
|
У ЭЦП RSA есть один недостаток. Если для различных документов |
|||||||||||||||||||||||
М1 , М2 и М3 их хэш-значения m1, m2 и m3 |
связаны соотношением |
|||||||||||||||||||||||
m3 m1m2(mod N) , то получить подпись s3 |
можно, перемножив s1 |
|||||||||||||||||||||||
и |
s |
2 |
, |
s |
s s |
(mod N) . |
Действительно, |
s md (mod N) , |
s |
|||||||||||||||
|
|
|
3 |
1 2 |
|
|
|
|
|
|
|
|
1 |
1 |
|
|
2 |
|
||||||
md (mod N), |
s s (mod N) md md (mod N) |
|
(m m )d (mod N) |
|||||||||||||||||||||
|
2 |
|
|
|
|
|
1 2 |
|
1 |
2 |
|
|
|
|
1 |
2 |
|
|
|
|
||||
m3d s3.
Существуют алгоритмы подписи на основе схемы Эль–Гамаля – EGSA, и стандарты подписи на основе этого алгоритма: DSA–DSS, а также отечественный стандарт электронно-цифровой подписи
ГОСТ Р.34.10–2012.
20
