- •1. Алгоритмы с открытым ключом
- •2.Алгоритмы на основе задачи об укладке ранца
- •3.Сверхвозрастающие ранцы
- •4.Ранцевый механизм. Создание открытого ключа по закрытому.
- •5. Открытое распределение ключей
- •6. Криптографическая система с открытым ключом
- •8. Схема Поллинга-Хеллмана
- •9. Схема Рабина
- •10.Схема Вильямса
- •11. Схема Эль-Гамаля
- •12. Шифрование Эль-Гамаля
- •13. Режим электронной подписи Эль-Гамаля
- •14. Эцп и проблемы аутентификации
- •15. Система формирования эцп (процедуры)
- •16. Однонаправленные хэш-функции
- •17. Основы построения хэш-функций
- •Однонаправленные хэш-функции на основе симметричных блочных алгоритмов
- •Алгоритм md-5
- •Алгоритм sha
- •Отличие md-5 от sha
- •Российский стандарт хэш-функций
- •26.Стандарт цифровой подписи гост р 34.10-94
- •27.Беспроводные сети. Способы зашифрования данных.
- •28.Протокол 802.1 X
- •Алгоритм цп на эллиптических кривых, формирование цп.
- •Алгоритм цп на эллиптических кривых, проверка цп.
- •Алгоритмы удвоения точки эллиптической кривой
- •43 Квантовая криптография
- •Простейший алгоритм генерации секретного ключа (bb84)
4.Ранцевый механизм. Создание открытого ключа по закрытому.
Рассмотрим работу алгоритма Меркла-Хеллмана.Алгоритм используется для преобразования сверхвозр.посл. для укладки ранца в нормальную.
Пример:
Пусть дана сверхвозр.посл. {2,3,6,13,27,52}. Умножим все члены данной послед.на число n по модулю m. Значение modm должно быть больше суммы всех членов послед. Допустим,пусть n=31,m=105
31 mod 105
2*31 mod 105 = 62
3*31 mod 105 = 93
6*31 mod 105 = 81
13*31 mod 105 = 88
27*31 mod 105 = 102
52*31 mod 105 = 37
Получили нормальную последовательность. {62,93,81,88,102,37}.
Сверхвозр.посл. – закрытый ключ, а нормальная – открытый.
Сообщение, представленное в двоичном виде, разбивается на блоки длиной равной кол-ву элементов в последовательности.
011000 110101 101110
011000 -> 93+81=174
110101 -> 62+93+88+37=280
101110 -> 62+81+88+102=333
Зашифрованное сообщение: {174,280,333}
Расшифровка. Получатель зашифрованного сообщения знает открытый и закрытый ключ, знает n и m. Для расшифровки текста необходимо найти значение: n-1 modm. После этого каждое значение шифр-текста умножается на (n-1)modm.
31-1 mod 105
31φ(105)-1 = 3147
105=3*31+12; 31=2*12+7 ;12=1*7+5; 7=1*5+2; 5=2*2+1; 2=2*1+0
31-1 mod 105=61
174*61 mod 105 = 9 mod 105
280*61 mod 105 = 70 mod 105
333*61 mod 105 = 48 mod 105
Для
9: {2,3,6,13,27,52}
Получили расшифрованное сообщение
011000
Для 70: 70>52 – да – берем;70-52=18
18>27 – нет;18>13 – да – берем;18-13=5
5>6 – нет; 5>3 – да –берем; 5-3=2
2=2 – берем
Получили сообщение 110101.
Для 48 аналогично получаем 101110
5. Открытое распределение ключей
До сих пор преимущества способов кодирования с открытым ключом не были абсолютно очевидными. Однако, на их основе достаточно просто решать вопрос выработки общего секретного шифра для сеанса взаимодействия любой пары пользователей информационной сети или системы.
Еще в 1976 году криптологи-теоретики Диффи и Хеллман изобрели для этих целей протокол открытого распределения ключей или шифров. Он подразумевает под собой взаимонезависимую генерацию каждым из пары обменивающихся информацией пользователей своего случайного символа, видоизменение его посредством некоторой операции, обмен видоизмененными числами по открытому каналу связи и определение общего секретного шифра на основе информации, переданной партнером в процессе связи.
Любой подобный ключ действителен всего лишь в течение одного сеанса связи или даже части такого сеанса. Соответственно, открытое распределение шифровальных ключей позволяет любой паре пользователей системы самостоятельно выработать свой общий шифровальный ключ, упрощая тем самым процедуру распределения секретных шифровальных ключей. Хотя далеко не все так просто - отсутствие у корреспондентов перед сеансом связи заблаговременно распределенного общего шифровального ключа вообще не даст им возможности убедиться в подлинности друг друга с помощью обмена сообщениями по открытому каналу.
Представим этот алгоритм обмена ключами такой последовательностью действий:
Алиса генерирует случ. число х, вычисляет число ax(mod p) и присылает его Бобу;
Боб генерирует случ. число в, вычисляет число aв(mod p) и присылает его Алисе;
Алиса і Боб вычисляют (aв(mod p))х = (aх(mod p))в = aху(mod p).
Число aху(mod p) используется в качестве ключа для симметричной криптосистемы. Здесь числа х і у шифруются с помощью необратимых функций соответственно ax(mod p) и aв(mod p), поэтому, перехватив при передаче числа ax(mod p) и aв(mod p) сложно получить секретный ключ (поскольку для этого необходимо получить одно из чисел х или у).
Алгоритм Диффи-Хэллмана обеспечивает конфиденциальность распределения, но не защищает от несанкционированной модификации секретного ключа во время распределения и не обеспечивает аутентичность корреспондента. Поэтому рекомендуется применять его (в таком виде) лишь тогда, когда нет возможности обеспечить безопасный обмен открытыми ключами. На практике широко применяется несколько модифицированный алгоритм Диффи-Хэллмана, который предусматривает, что параметры ax(mod p), aв(mod p) передаются вместе с их цифровой подписью. За счет этого можно обеспечить аутентичность этих параметров, но лишь в том случае, если абонентам предварительно удалось безопасно получить открытые ключи, необходимые для верификации цифровых подписей.