
- •Модулярная арифметика
- •Электронная подпись и хэш функция Однонаправленные хэш-функции
- •Основы построения хэш-функций
- •Однонаправленные хэш-функции на основе симметричных блочных алгоритмов
- •Гост р 34.11-2012. Информационная технология. Криптографическая защита информации. Функция хэширования
- •Гост р 34.10-2012
- •Область применения
- •История
- •Описание
- •Общие положения
- •Назначение и применение эп
- •История возникновения
- •Алгоритмы
- •Требования к электроннойой подписи
- •1. Проблема аутентификации данных и электронная цифровая подпись
- •Использование хэш-функций
- •Симметричная схема
- •Асимметричная схема
- •Виды асимметричных алгоритмов
- •Перечень алгоритмов эп
- •Цифровые подписи на основе шифрсистем с открытыми ключами
- •Цифровая подпись Фиата — Шамира
- •Подписи eiGamal
- •Подпись документа с помощью криптографии с открытыми ключами
- •Метки времени
- •Подпись документа с помощью криптографии с открытыми ключами и однонаправленных хэш-функций
- •Федеральный закон Российской Федерации от 6 апреля 2011 г. N 63-фз
- •6. Владелец квалифицированного сертификата обязан:
Л.4 КЗИ ИБИС гр.444 (2015)
Модулярная арифметика
Модулярная арифметика часто изучается в школе как "арифметика часов".
На часах со стрелками циферблат разделён на 12 частей, которые мы обозначим числами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. В следующей таблице можно видеть, как время на аналоговом циферблате соответствует времени после полудня на экране цифровых часов.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Когда мы говорим, например, что сейчас 14:00, мы можем также сказать, что сейчас два часа дня. Тот же принцип применяется и в случае измерения углов. Угол в 370 градусов равен углу в 10 градусов, потому что от первого значения мы должны вычесть полный оборот в 360 градусов.
Заметим, что 370 = (1 х 360) + 10, то есть остатком от деления 370 на 360. Какой угол эквивалентен углу в 750 градусов? Вычитая соответствующее количество полных оборотов, получим, что угол в 750 градусов равен углу в 30 градусов. Мы видим, что 750 = (2х360 + 30, то есть 30 является остатком от деления 750 на 360. В математике это обозначается так:
750 30 (mod 360)
Мы говорим: «750 сравнимо с 30 по модулю 360».
В случае с часами мы бы написали 14 2(mod 12).
Также можно представить себе часы с отрицательными числами. В этом случае, который будет час, когда стрелка показывает на (-7)? Или другими словами, с каким числом сравнимо число (-7) по модулю 12?
Давайте посчитаем, учитывая, что на наших часах с циферблатом, разделённым на 12 частей, значение 0 соответствует 12.
-7 = -7 + 12 = 5
Математика для расчётов на наших часах со стрелками, циферблат которых разделён на 12 частей, называется арифметикой по модулю 12.
Если отсчитать 14 часов от 3 часов после полудня, то получится 5 часов утра следующего дня:
3 +14 5 (mod 12)
или
(3 +14) mod 12 = 5.
Это арифметика по модулю 12.
Обычная запись в модулярной арифметике
a b (mod n)
читается так: "a сравнимо с b по модулю n".
В общем случае мы говорим, что a b (mod n), если остаток от деления а на m равен b, при условии, что а, m и b – целые числа. Число b сравнимо с остатком от деления a на m.
Cледующие утверждения эквивалентны:
a b (mod n)
b a (mod n)
a - b 0 (mod n)
а – b кратно m
Вопрос «Которому часу на часах со стрелками соответствует время 19 часов?» эквивалентен в математических терминах следующему вопросу: «С каким числом сравнимо число 19 по модулю 12?»
Для ответа на этот вопрос надо решить уравнение:
19 Х (mod 12)
Разделив 19 на 12, получим частное 1 и остаток 7, поэтому
19 7 (mod 12)
Определим связь между модульной арифметикой и шифром ЦЕЗАРЯ.
Запишем в таблице стандартный алфавит и алфавит с сдвигом на три буквы, добавив титульный ряд из 26 чисел.
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
A |
B |
C |
Видно, что зашифрованное значение буквы под номером х ( в стандартном алфавите) буквой, стоящей на позиции (Х + 3) (также в стандартном алфавите).
Поэтому необходимо найти преобразование, которое каждому числу ставит в соответствие число, сдвинутое на три единицы, и взять результат по модулю 26. Заметим, что 3 является ключом нашего шифра. Таким образом, наша функция записывается как
С(х) = (х + 3) (mod 26),
Где: х – изначальное значение
С(х) – зашифрованное значение.
Теперь. Достаточно подставить вместо буквы её числовое значение и применить трансформацию.
Возьмём в качестве примера слово PLAY и зашифруем его.
Буква Р стоит на позиции 15, С(15) = 15 + 3 18 (mod 26 ), а число 18 соответствует букве S.
Буква L стоит на позиции 11, С(11) = 11 + 3 14 (mod 26 ), а число 14 соответствует букве O.
Буква A стоит на позиции 0, С(0) = 0 + 3 3 (mod 26 ), а число 3 соответствует букве D.
Буква Y стоит на позиции 24, С(24) = 24 + 3 = 27 (mod 26 ), а число 1 соответствует букве B.
Таким образом, слово РLAY , зашифрованное с ключом 3 превращается в слово SODB.
В общем случае, если х означает позицию буквы, которую мы хотим зашифровать (О для А, 1 для В, и т.д.) позиция зашифрованной буквы , обозначаемая С(х), выражается формулой:
С(х) = (х + k) (mod n),
Где: n – длина алфавита (26 в английском алфавите)
k – ключ, используемый в данном шифре.
Расшифровка такого сообщения включает в себя расчёты, обратные тем, что использовались для шифрования. В нашем примере расшифровка означает применение формулы, обратной той, что использовалась выше:
С-1 (х) =(х - k) (mod n),
В случае сообщения SODB, зашифрованного щифром Цезаря с ключом 3 с применением английского алфавита, то есть k = 3 и n = 26, мы получим:
С-1 (х) =(х - k) (mod 26),
Применим эту формулу следующим образом:
Для S: х = 18, С-1 (х) = 18 - 3 15 (mod 26), что соответствует букве P.
Для O: х = 14, С-1 (х) = 14 - 3 11 (mod 26), что соответствует букве L.
Для D: х = 3, С-1 (х) = 3 - 3 0 (mod 26), что соответствует букве A.
Для B: х = 1, С-1 (х) = 1 - 3 -2 +26 24 (mod 26), что соответствует букве Y.
Сообщение SODB, зашифрованное шифром Цезаря с ключом 3, соответствует оригинальному тексту PLAY.
Это соотношение справедливо для целых значений a,b и n 0,
если, и только если
a = b + k n
для некоторого целого k.