- •Основы информационной безопасности и введение в современную криптологию
- •8 Глава 129
- •Предисловие
- •Введение
- •Формальная криптография;
- •Математическая криптография;
- •1. Криптографические системы «докомпьютерной эры» и проблемы современной криптографии
- •1.1 Криптография древнего мира. Шифр Цезаря и его криптостойкость
- •1.2 Шифр Атбаш и его модификации
- •1.3 Тарабарская грамота как аналог шифра Атбаш
- •1.4 Шифр Плейфера
- •1.5 Шифр adfgvx
- •1.6 Шифр Виженера
- •1.7 Формальная криптография
- •1.8 Математическая криптография
- •1.9 Современная компьютерная криптография и ее основные проблемы
- •2 Режимы шифрования для симметричных алгоритмов.
- •2.1 Режимы простой замены (электронная кодовая книга ecb)
- •2.2 Режим сцепления блоков (Cipher Block Chaining (cbc))
- •2.2 Режимы гаммирования
- •2.3 Режим гаммирования с обратной связью
- •Функции шифрования симметричных криптосистем
- •3.1 Стандарт шифрования данных des. Data Encryption Standard
- •3.2 Преобразования Сетью Фейстеля
- •3.3 Режимы работы алгоритма des
- •3.4.1Алгоритм гост – 28147-89
- •3.4.2Ключи в кзу
- •3.4.3В блоке подстановки k
- •3.5.1Описание алгоритма
- •4.Глава
- •4.1Хэш - функция
- •4.2Коллизия
- •4.4Пример простого хеширования
- •4.3Современные виды хеширования
- •5.Глава Элементы алгебры и теории чисел
- •5.1Быстрое возведение в степень.
- •5.2Нахождение простого числа
- •5.3Метод Шермана — Лемана
- •5.3Метод Раббина-Миллера
- •5.4Нахождение обратного элемента по модулю
- •5.5Теорема ферма, Эйлера
- •5.6Алгоритм Эвклида
- •5.7Расширенный алгоритм Эвклида
- •5.8 Китайская теорема об остатках
- •5.11 Нахождение с помощью расширенного алгоритма Евклида
- •5.11Квадратичные вычеты
- •5.11Нахождение генераторов
- •6. Глава
- •6.1 Алгоритм Диффи – Хеллмана
- •6.2Описание алгоритма
- •6.3Алгоритм Диффи — Хеллмана с тремя и более участниками
- •6.7Криптографическая стойкость
- •6.8Rsa алгоритм
- •6.10Алгоритм шифрования rsa
- •6.11Алгоритм подписи rsa
- •7.16Эль-Гамаля
- •6.13История dsa
- •6.14Алгоритм цифровой подписи dsa
- •6.15 Алгоритм цифровой подписи гост р 3410-94
- •7.1Эллиптическая кривая
- •7.2 Эллиптические кривые в криптографии
- •7.3 Метрика операций на эк
- •7.3.1Сложение различных точек
- •7.3.2Удвоение
- •7.7Порядок эллиптической кривой
- •7.6Теорема Хассе
- •7.5 Порядок точки на эллиптической кривой
- •7.8Порядок точки на эллиптической кривой (Теория, можешь не читат)
- •7.9Криптография на эллиптических кривых
- •7.10Пример эллиптической кривой над конечным полем.
- •7.11Кратные точки.
- •7.12Безопасность криптографии с использованием эллиптических кривых.
- •7.13Алгоритм Диффи-Хелмана на эллиптической кривой
- •7.14Алгоритм dsa на эллиптической кривой
- •7.14.1Алгоритм эцп на основе эллиптических кривых (ecdsa)
- •7.15Алгоритм Эль-Гамала на эллиптической кривой
- •Литература
- •8 Глава
- •8.1Криптоанализ
- •8.2Классический криптоанализ.
- •8.3 Современный криптоанализ
- •8.4Универсальные методы криптоанализа.
- •8.4.1Метод полного перебора
- •8.4.2Атака по ключам
- •8.4.3Частотный анализ
- •8.4.4Метод "встречи посередине"
- •8.4.5Криптоанализ симметричных шифров
- •8.4.6Дифференциальный криптоанализ
- •8.4.7Дифференциальный анализ на основе сбоев.
- •8.4.8Дифференциальный метод криптоанализа des.
- •8.4.9Линейный криптоанализ .
- •8.4.10Криптоанализ асимметричных шифров
- •8.4.11Метод безключевого чтения rsa.
- •8.4.12Криптоанализ хеш-функций
- •8.4.13Криптоанализ по побочным каналам
- •8.5Нанотехнологии в криптоанализе
4.2Коллизия
Коллизия - это когда на входе хеш-функции разные тексты (строки), а на выходе - одинаковые хеш-значения.
Коллизии дают возможность некоторых махинаций с электронными документами. Допустим, документы контролируются по хешам. Тогда можно составить два документа с одинаковым хешем и в нужный момент сделать подмену. Вышеприведенный пример Штирлица подвержен коллизии первого рода, в силу того, что по знанию количеству букв «а= », «б= », «в= », … , «я= » можно составить другой документ на 10 страниц, но по этим буквам, практически невозможно восстановит оригинал документа.
Другой пример, когда коллизии могут навредить, - это применение хеш-функций для контроля целостности файлов, сетевых сообщений и т.п. Файл (сообщение) проверяется на наличие искажения с помощью хеш-функции. Если у него новый хеш - искажение было. Если хеш тот же, то может быть, что искажение было, но вышло так, что хеш-функция дала для обеих версий одинаковое значение.
Разрешение коллизий
Это специальный алгоритм, который используется каждый раз при размещении новой записи или при поиске существующей, если возникла коллизия.
В системах БД рехеширование выполняется одним из следующих способов:
Открытая адресация: новая запись размещается вслед за последней записью на данной странице или на следующей, если страница заполнена.
Использование коллизионных страниц: новая запись размещается на одной из коллизионных страниц, относящихся к таблице (в области переполнения). Для ускорения поиска рехешированных записей может использоваться связанная область переполнения, для которой на странице хранится ссылка на коллизионную страницу. Нулевое значение такой ссылки говорит об отсутствии коллизий для данных, размещённых на этой странице.
Многократное хеширование. Заключается в том, что при возникновении коллизии для поиска другого адреса (возможно, на коллизионных страницах) применяется другая функция хеширования.
Сильная устойчивость к коллизиям (1-го рода): для нарушителя
вычислительно неосуществимо найти x' такое, чтобы x и x' образовали коллизию (т. е.
,
в т.ч. при данных
и
Слабая устойчивость к коллизиям (2-го рода): для нарушителя
вычислительно
неосуществимо построить второй вход
x' такой, что
Это
подразумевает,
что при данном
неосуществимо найти любой x', такой что
(т.
е. h
является однонаправленной функцией).
4.4Пример простого хеширования
Для
легкого усвоения материала данного
раздела мы приведем достаточно простой
пример хеш-функции на маленьких числах.
Скажем, используя данные задачи необходимо
получить хеш-код
для некоторого сообщения
«ИНТЕГРАЛ» при помощи хеш-функции H.
Выберем вектор инициализации
равным нулю.
Хеш-функцию можно записать следующим образом:
,
где
;
Н0 – вектор инициализации;
Мi=М1, М2, … , Мn – длина блока.
Все блоки делят пополам и к каждой половине прибавляют равноценное количество единиц. С образованными таким образом блоками производят итерационные действия.
Нам
необходимо получить хеш-значение
сообщения ИНТЕГРАЛ при помощи хеш-функции
с параметрами
.
«И–10=10102»,
«Н–15=11112»,
«Т–20=101002»…,
«Л–13=11012»
порядковый номер буквы в алфавите.
Вычислим хеш-код:
00001010:00001111:00010100:00000110:00000100:00010010:00000001:00001101
1. рассчитаем значение модуля n = p*q = 35;
2. представим сообщение в виде номеров букв русского алфавита в десятичном и двоичном видах (байтах):
И |
Н |
Т |
Е |
Г |
Р |
А |
Л |
10 |
15 |
20 |
6 |
4 |
18 |
1 |
13 |
0000:1010 |
0000:1111 |
0001:0100 |
0000:0110 |
0000:0100 |
0001:0010 |
0000:0001 |
0000:1101 |
3. разобьем байты пополам, добавив в начало полубайт равный 0100 и получим хешируемые блоки Мi:
M1 |
M2 |
M3 |
M4 |
M5 |
M6 |
M7 |
M8 |
0100:0000 |
0100:1010 |
0100:0000 |
0100:1111 |
0100:0001 |
0100:0100 |
0100:0000 |
0100:0110 |
M9 |
M10 |
M11 |
M12 |
M13 |
M14 |
M15 |
M16 |
0100:0000 |
0100:0100 |
0100:0001 |
0100:0010 |
0100:0000 |
0100:0001 |
0100:0000 |
0100:1101 |
4. выполним итеративные шаги:
первая итерация
М1 = 01000000
Н0 = 00000000
Н0 М1 = 01000000 = 6410
[(H0 M1)2] (mod 35) = 642(mod 35) = 110
H1 = 110 = 000000012
вторая итерация
М2 = 01001010
Н1 = 00000001
Н1 М2 = 01001011 = 7510
[(H1 M2)2] (mod 35) = 752(mod 35) = 2510
H2 = 2510 = 000110012
третья итерация
М3 = 01000000
Н2 = 00011001
Н2 М3 = 01011001 = 8910
[(H2 M3)2] (mod 35) = 892(mod 35) = 1110
H3 = 1110 = 000010112
четвертая итерация
М4 = 01001111
Н3 = 00001011
Н3 М4 = 01000100 = 6810
[(H3 M4)2] (mod 35) = 682(mod 35) = 410
H4 = 410 = 000001002
пятая итерация
М5 = 01000001
Н4 = 00000100
Н4 М5 = 01000101 = 6910
[(H4 M5)2] (mod 35) = 692(mod 35) = 110
H5 = 110 = 000000012
шестая итерация
М6 = 01000100
Н5 = 00000001
Н5 М6 = 01000101 = 6910
[(H5 M6)2] (mod 35) = 692(mod 35) = 110
H6 = 110 = 000000012
седьмая итерация
М7 = 01000000
Н6 = 00000001
Н6 М7 = 01000001 = 6510
[(H6 M7)2] (mod 35) = 652(mod 35) = 2510
H7 = 2510 = 000110012
восьмая итерация
М8 = 01000110
Н7 = 00011001
Н7 М8 = 01011111 = 9510
[(H7 M8)2] (mod 35) = 952(mod 35) = 3010
H8 = 3010 = 000111102
девятая итерация
М9 = 01000000
Н8 = 00011110
Н8 М9 = 01011110 = 9410
[(H8 M9)2] (mod 35) = 942(mod 35) = 1610
H9 = 1610 = 000100002
десятая итерация
М10 = 01000100
Н9 = 00010000
Н9 М10 = 01010100 = 8410
[(H9 M10)2] (mod 35) = 842(mod 35) = 2110
H10 = 2110 = 000101012
одиннадцатая итерация
М11 = 01000001
Н10 = 00010101
Н10 М11 = 01010100 = 8410
[(H10 M11)2] (mod 35) = 842(mod 35) = 2110
H11 = 2110 = 000101012
двенадцатая итерация
М12 = 01000010
Н11 = 00010101
Н11 М12 = 01010111 = 8710
[(H11 M12)2] (mod 35) = 872(mod 35) = 910
H12 = 910 = 000010012
тринадцатая итерация
М13 = 01000000
Н12 = 00001001
Н12 М13 = 01001001 = 7310
[(H12 M13)2] (mod 35) = 732(mod 35) = 910
H13 = 910 = 000010012
четырнадцатая итерация
М14 = 01000001
Н13 = 00001001
Н13 М14 = 01001000 = 7210
[(H13 M14)2] (mod 35) = 722(mod 35) = 410
H14 = 410 = 000001002
пятнадцатая итерация
М15 = 01000000
Н14 = 00000100
Н14 М15 = 01000100 = 6810
[(H14 M15)2] (mod 35) = 682(mod 35) = 410
H15 = 410 = 000001002
шестнадцатая итерация
М16 = 01001101
Н15 = 00000100
Н15 М16 = 01001001 = 7310
[(H15 M16)2] (mod 35) = 732(mod 35) = 910
H16 = 910 = 000010012
Таким образом, исходное сообщение «интеграл» имеет хеш-код m = 9.
Для вычисления цифровой подписи используем следующую формулу:
=
95
mod (35) = 4.
Пара (M, S) передается получателю как электронный документ М, подписанный цифровой подписью S, причем подпись S сформирована обладателем секретного ключа d.
Получив пару (M, S), получатель вычисляет хеш-код сообщения М двумя способами:
1. восстанавливает хеш-код m/, применяя криптографическое преобразование S с использованием открытого ключа e:
2. находит результат хеширования принятого сообщения с помощью той же хеш-функции:
m = H(M) = 9.
При равенстве вычисленных значений m и m/ получатель признает пару (M, S) подлинной, т.е. сообщение – оригинальным.
