- •1.Введение……………………………………………………………………………….3
- •Введение.
- •Использование pgp в программных продуктах. Создание ключей только для шифрования с помощью Kleopatra
- •Создание ключей только для шифрования с помощью GnuPg
- •Подробно об алгоритмах gnu pg и pgp4win. Стандарт генерации ключей x9.17
- •Описание idea
- •Криптоанализ idea
- •Алгоритм rsa.
- •Описание md5
- •Безопасность md5
- •Алгоритм feal.
- •Описание feal
- •Криптоанализ feal
- •3. Генерация простого числа
- •Практические соображения
- •Список литературы
Создание ключей только для шифрования с помощью GnuPg
GNU Privacy Guard (GnuPG) — это инструмент командной строки, который позволяет создавать ключи и управлять ими. Он также позволяет шифровать, расшифровывать и подписывать документы с помощью этих ключей. Откройте командную строку Windows и введите следующую команду: gpg –gen –key -expert.
Примечание. По умолчанию создать ключи только для шифрования с помощью GnuPG не удастся. Для этой функции требуется режим Expert. Выберите вариант RSA (set your own capabilities), как показано ниже.
Рис. 1.7. Запрос RSA
Отключите подпись, как показано ниже (по умолчанию при создании ключа RSA подпись включена).
Рис. 1.8 Отключение подписи
Отображается набор параметров, как на предыдущем шаге. Выберите пункт Finished.
Рис. 1.9 Пункт Finished
В командной строке укажите длину ключа RSA, как показано ниже.
Рис. 1.10 Длина ключа RSA
При появлении запроса укажите срок действия ключа, как показано ниже.
Рис. 1.11 Срок действия ключа
Введите имя и адрес электронной почты. Real name – это имя, присвоенное ключу. Выберите вариант Okay.
Рис. 1.12 Имя и адрес электронной почты
Введите произвольный пароль.
Подробно об алгоритмах gnu pg и pgp4win. Стандарт генерации ключей x9.17
Стандарт ANSI X9.17 определяет способ Генерации ключей (см. Рис. 2.1). Он не создает легко запоминающиеся ключи, и больше подходит для генерации сеансовых ключей или псевдослучайных чисел в системе. Для генерации ключей используется криптографический алгоритм DES, но он может быть легко заменен любым другим алгоритмом.
Рис. 2.1 Генерация ключей ANSI X9.17
Пусть EK(X) - это X, зашифрованный DES ключом K, специальным ключом, предусмотренным для генерации секретных ключей. V0 - это секретная 64-битовая стартовая последовательность. T - это метка времени. Для генерации случайного ключа Ri вычислим:
Ri= EK(EK(Ti) Vi)
Для генерации Vi+1, вычислим:
Vi+1= EK(EK(Ti) Ri)
Для превращения Ri в ключ DES, просто удалите каждый восьмой бит. Если вам нужен 64-битовый ключ, используйте ключ без изменения. Если вам нужен 128-битовый ключ, создайте пару ключей и объедините их.
Алгоритм IDEA.
Описание idea
Схема IDEA представлена на Рис. 2.2. 64-битовый блок данных делится на четыре 16-битовых подблока: X1, X2, X3 и X4. Эти четыре подблока становятся входными данными для первого этапа алгоритма. Всего в алгоритме восемь этапов. На каждом этапе четыре подблока подвергаются операциям XOR, сложениям и умножениям друг с другом и с шестью 16-битовыми подключами. Между этапами обмениваются местами второй и третий подблоки. Наконец четыре подблока объединяются с четырьмя подключами в окончательном преобразовании. На каждом этапе события происходят в следующей последовательности:
Перемножаются X1 и первый подключ.
Складываются X2 и второй подключ.
Складываются X3 и третий подключ.
Перемножаются X4 и четвертый подключ.
Выполняется XOR над результатами этапов (1) и (3).
Выполняется XOR над результатами этапов (2) и (4).
Перемножаются результаты этапа (5) и пятый подключ.
Складываются результаты этапов (6) и (7).
Перемножаются результаты этапа (8) и шестой подключ.
Складываются результаты этапов (7) и (9).
Выполняется XOR над результатами этапов (1) и (9).
Выполняется XOR над результатами этапов (3) и (9).
Выполняется XOR над результатами этапов (1) и (10).
Выполняется XOR над результатами этапов (4) и (10).
Рис. 2.2 IDEA.
Выходом этапа являются четыре подблока - результаты действий (11), (12), (13) и (14). Поменяйте местами два внутренних подблока (но не в последнем этапе), и вы получите исходные данные для следующего этапа.
После восьмого этапа выполняется заключительное преобразование:
Перемножаются Xl и первый подключ.
Складываются X2 и второй подключ.
Складываются X3 и третий подключ.
Перемножаются X4 и четвертый подключ.
Наконец четыре подблока снова соединяются, образуя шифротекст.
Также несложно создавать подключи. Алгоритм использует 52 из них (шесть для каждого из восьми этапов и еще четыре для заключительного преобразования). Сначала 128-битовый ключ делится на восемь 16-битовых подключей. Это первые восемь подключей алгоритма (шесть для первого этапа и два - для второго). Затем ключ циклически сдвигается налево на 25 битов и снова делится на восемь подключей. Первые четыре используются на этапе 2, а оставшиеся четыре - на этапе 3. Ключ циклически сдвигается налево на 25 битов для получения следующих восьми подключей, и так до конца алгоритма.
Дешифрирование выполняется точно также за исключением того, что подключи инвертируются и слегка изменяются. Подключи при дешифрировании представляют собой обратные значения ключей шифрования по отношению к операциям либо сложения, либо умножения. (Для IDEA подблоки, состоящие из одних нулей, считаются равными 216 = -1 для умножения по модулю 216 + 1, следовательно, обратным значением 0 относительно умножения является 0.) Эти вычисления могут занять некоторое время, но их нужно выполнить один раз для каждого ключа дешифрирования. В Табл. 2.1 представлены подключи шифрования и соответствующие подключи дешифрирования.
Табл. 2.1 Подключи шифрования и дешифрирования IDEA
Этап |
Подключи шифрования |
|
Подключи дешифрирования |
|||||||||||||
1 |
Z1(1) |
Z2(1) |
Z3(1) |
Z4(1) |
Z5(1) |
Z6(1) |
|
Z1(9)-1 |
-Z2(9) |
-Z3(9) |
Z4(9)-1 |
Z5(8) |
Z6(8) |
|
||
2 |
Z1(2) |
Z2(2) |
Z3(2) |
Z4(2) |
Z5(2) |
Z6(2) |
|
Z1(8)-1 |
-Z2(8) |
-Z3(8) |
Z4(8)-1 |
Z5(7) |
Z6(7) |
|
||
3 |
Z1(3) |
Z2(3) |
Z3(3) |
Z4(3) |
Z5(3) |
Z6(3) |
|
Z1(7)-1 |
-Z2(7) |
-Z3(7) |
Z4(7)-1 |
Z5(6) |
Z6(6) |
|
||
4 |
Z1(4) |
Z2(4) |
Z3(4) |
Z4(4) |
Z5(4) |
Z6(4) |
|
Z1(6)-1 |
-Z2(6) |
-Z3(6) |
Z4(6)-1 |
Z5(5) |
Z6(5) |
|
||
5 |
Z1(5) |
Z2(5) |
Z3(5) |
Z4(5) |
Z5(5) |
Z6(5) |
|
Z1(5)-1 |
-Z2(5) |
-Z3(5) |
Z4(5)-1 |
Z5(4) |
Z6(4) |
|
||
6 |
Z1(6) |
Z2(6) |
Z3(6) |
Z4(6) |
Z5(6) |
Z6(6) |
|
Z1(4)-1 |
-Z2(4) |
-Z3(4) |
Z4(4)-1 |
Z5(3) |
Z6(3) |
|
||
7 |
Z1(7) |
Z2(7) |
Z3(7) |
Z4(7) |
Z5(7) |
Z6(7) |
|
Z1(3)-1 |
-Z2(3) |
-Z3(3) |
Z4(3)-1 |
Z5(2) |
Z6(2) |
|
||
8 |
Z1(8) |
Z2(8) |
Z3(8) |
Z4(8) |
Z5(8) |
Z6(8) |
|
Z1(2)-1 |
-Z2(2) |
-Z3(2) |
Z4(2)-1 |
Z5(1) |
Z6(1) |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
