МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
РЕАЛІЗАЦІЯ ЗАХИСТУ КОМПЮТЕРНИХ СИСТЕМ ЗА ДОПОМОГОЮ АСИМЕТРИЧНИХ КРИПТОГРАФІЧНИХ ШИФРІВ
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи №5
з курсу “Системи ТЗІ”
для студентів спеціальності
Мета: Ознайомитись з алгоритмом і методом шифрування Діффі-Хеллмана. Отримати навики роботи з програмою PGP. Навчитися генерувати ключі, імпортувати і експортувати їх за допомогою електронної пошти, проводити шифрування і дешифрування текстових повідомлень. Навчитися застосовувати набуті знання в галузі інформаційної безпеки.
Шифрування за схемою Діффі і Хеллмана.
Шифрування за схемою Діффі і Хеллмана відноситься до криптографічних систем з відкритим ключем, які мають назву асиметричне шифрування. Асиметричне шифрування – це система шифрування або електронного цифрового підпису (ЕЦП) при якій відкритий ключ передається по відкритому (незахищеному, доступному для спостереження) каналу, і використовується для перевірки ЕЦП і для шифрування повідомлення. Для генерації ЕЦП і для дешифрування повідомлення використовується секретний ключ.
Криптографічні системи з відкритим ключем широко застосовуються в різних мережевих протоколах, зокрема, в протоколах TLS (попередньо SSL) і SSH. Також використовуються в PGP і S/MIME.
Види асиметричних шифрів:
Diffie-Hellman (Обмін ключами Діффі — Хелмана, DH)
RSA (Rivest-Shamir-Adleman)
DSA (Digital Signature Algorithm)
Elgamal (Шифросистема Ель-Гамаля)
ECC (Elliptic Curve Cryptography, криптографія еліптичної кривої)
ГОСТ Р 34.10-2001
Rabin
Luc
McEliece
Алгоритм Діффі - Хеллмана (Dіffіe-Hellman, DH) дозволяє двом сторонам одержати загальний секретний ключ, використовуючи незахищений від прослуховування, але захищений від підміни, канал зв'язку. Цей ключ може бути використаний для шифрування подальшого обміну за допомогою алгоритму симетричного шифрування.
Схема обміну ключами представлена на рис. 1. При роботі алгоритму, кожен абонент:
1 - генерує випадкове натуральне число a - закритий ключ;
2 - встановлює разом з іншим абонентом відкриті параметри p й g (звичайно значення p й g генеруються на одній стороні й передаються інший), де p - випадкове просте число, g - первинний корінь за модулем p;
3 - обчислює відкритий ключ A, використовуючи перетворення над закритим ключем: A = ga mod p;
4 - обмінюється відкритими ключами з іншим абонентом;
5 - обчислює загальний секретний ключ K, використовуючи відкритий ключ B іншого абоненту і свій закритий ключ a: K = Ba mod p (К виходить рівним з обох сторін, тому що:
K = Ab mod p = (gb mod p)b mod p = gab mod p = (gb mod p)a mod p = Ba mod p
Тобто, в обох абонентів вийде однакове число K, яке можна використати як секретний ключ, оскільки тут зловмисник зустрінеться із практично нерозв'язної проблемою обчислення gab mod p по перехопленим ga mod p і gb mod p, якщо числа p, a, b досить великі.
Рис. 1. Схема шифрування DH.
В практичних реалізаціях a, b - числа порядку 10100 , p - порядку 10300. Число g не обов'язково має бути великим і має значення в межах першого десятка.
Криптографічна стійкість алгоритму DH полягає в складності обчислення K=gab mod p за відомими p, g, A=ga mod p і B=gb mod p, в складності дискретного логарифмування.
Необхідно відзначити, що алгоритм Діффі - Хеллмана працює тільки на лініях зв'язку з надійно захищеними каналами, коли не можлива модифікація даних. В тих випадках, коли в каналі можлива модифікація даних, з'являється очевидна можливість вклинювання в процес генерації ключів "зловмисника-посередника" по тій же самій схемі, що й для асиметричної криптографії.
2. Послідовність виконання роботи.
2.1. Створіть ключ Діффі-Хеллмана за допомогою програми PGP.
PGP (Pretty Good Privacy) – комп'ютерна програма, що дозволяє виконувати операції шифрування (кодування) і цифрового підпису повідомлень, файлів та іншої інформації, представленої в електронному вигляді, має безліч реалізацій, сумісних між собою і рядом інших програм (GnuPG, FileCrypt і ін.) завдяки стандарту OpenPGP (RFC 4880).
2.1.1. Налаштуйте розміщення ключа.
Для настроювання розміщення ключів PGP у правому нижньому куті екрана натисніть на значок програми PGP , відкрийте "Настроювання..." (Optіons...) і виберіть закладку Файли (Fіles) (рис. 2).
Натисніть кнопку "Огляд..."(Browse), виберіть папку для розміщення відкритого ключа - pubrіng.skr, (попередньо в папці "Мої документи" створіть папку "ключі"). Аналогічно натисніть кнопку "Огляд..."(Browse) для вибору папки розміщення закритого (секретного) ключа - secrіng.skr.
Натисніть кнопку ОК для застосування зворотних налаштувань.
Рис. 2. Вікна опцій налаштування розміщення ключа.
При імпорті нових ключів, програма PGPkeys запитує про резервне збереження обраних ключів. Для збереження резервної копії необхідно знову знайти ту ж саму папку, у яку розмістили відкритий ключ (pubrіng.skr) і назвати файл pubrіng2.skr, аналогічно для секретного ключа (secrіng.skr) - знайдіть папку його розміщення й збережете резервну копію за назвою secrіng2.skr
2.1.2. Створіть ключі в PGPKeys (рис. 3).
В правому нижньому куті екрану (на панелі задач) натисніть на піктограму і виберіть PGPkeys.
Рис. 3. Вікна опцій генерації ключів.
В вікні PGPkeys натисніть на кнопку (Generate new keypair), відкрийте майстер створення ключів і натисніть кнопку >> (Далі).
В наступному вікні введіть Ваше Ім'я і Прізвище, електронну адресу і натисніть >>.
Виберіть тип ключа: Diffie-Hellman/DSS та натисніть >>.
Виберіть довжину ключа - 2048 bіts (2048 Dіffіe-Hellman/ 1024 DSS), натисніть >>.
Виберіть термін скасування ключа (Key Expіratіon) - ніколи (Key paіr never expіres), натисніть >>.
Введіть ключову фразу (Passphrase) - комбінацію букв і цифр. Зверніть увагу на регістр (клавіша CapsLock) і мова - українська або англійська.
якщо Ви забудете свій пароль, то Ви самі не зможе прочитати Вашу зашифровану інформацію!
Ще раз введіть Вашу ключову фразу у вікні перевірки (Confіrmatіon) (фраза не відображається на екрані!) і натисніть >>.
Почекайте закінчення створення ключів, натисніть кнопку >>.
Не відправляйте ваш ключ на сервер PGP, (залишіть прапорець Send my key to the root server now - виключеним), натисніть кнопку >>.
В останньому вікні - Вас поздоровляють із успішним створенням пари ключів.
Натисніть кнопку Готово.
2.2. Експортуйте ключ.
Для експорту ключа - необхідно клацнути правою кнопкою миші на своєму електронному ключі, в спливаючому меню вибрати пункт "Експорт".
Виберіть папку для ключа "Мої документи" (включіть Іnclude Prіvate Keys) (рис. 4)
Рис. 4. Вибір папки для експорту ключа.
Приєднайте цей файл до електронного листа і відправте. Після цього Вам зможуть посилати кодовані листи, які Ви зможете прочитати.
2.3. Імпортуйте ключ.
При одержанні по електронній пошті лист із вкладеним електронним ключем, двічі клацніть на файлі - відкриється вікно вибору (відкрити або зберегти). Виберіть відкрити і натисніть кнопку ОК.
В вікні, що відкрилося, натисніть кнопку Іmport (рис. 5).
Рис. 5. Вікно імпорту ключа.
2.3. Зашифруйте лист.
Для шифрування листа - при його створенні в головному меню "PGP" Виберіть "Encrypt now" (Зашифрувати зараз) як показане на рис. 6.
Рис. 6. Вікно опцій шифрування листа.
В вікні, що відкрилося (рис. 7), перенесіть Ключ (відкритий) адресату, якому будете відправляти лист в список одержувачів, а також свій ключ і натисніть ОК.
Лист буде зашифровано. Введіть адресу одержувача в рядку Кому.
Рис. 7. Вибір адресу одержувача листа.
2.4. Розшифруйте отриманий лист.
При одержанні зашифрованого листа, відкрийте його в меню "PGP", виберіть пункт "Decrіpt/Verіfy" (Розшифрувати/Перевірити). В діалоговому вікні, наберіть Вашу ключову фразу (зверніть увагу на мову, на регістр (клавіша CapsLock)). Якщо ви були в списку людей, яким дозволене читати цей лист і набрали правильну ключову фразу, лист буде розшифровано в звичайний текст.
3. ЗАВДАННЯ ДЛЯ ВИКОНАННЯ
3.1. Згенерувати криптографічний ключ для алгоритму DH за допомогою програми PGP, використовуючи ключову фразу - комбінацію букв (прізвище) і цифр (номер залікової).
3.2. Експортуйте ключ по електронній пошті.
3.3. Отримайте по електронній пошті ключ.
3.4. Зашифруйте лист і відправте адресату.
3.5. Розшифруйте отриманий лист, використовуючи збережений ключ.
Адресата електронної пошти вибирати за циклічною схемою 1 – 2, 2 – 3, …, 15 – 1.
4. ПРЕДСТАВЛЕННЯ РЕЗУЛЬТАТІВ У ЗВІТІ
Представити результати виконання лабораторної роботи і відповідно п.п. 3.1-3.5.
Надати висновки.
Список літератури:
PGP: Кодирование и шифрование информации с открытым ключом. Издательство: Майор, 2001 г., 176 с.
Новиков В.Е., Ридель В.В. Введение в криптологию: Учебное пособие для студентов, специализирующихся в области защиты информации. - Саратов: изд-во СГУ, 2000. - 104 с.
Затверджено
на засіданні кафедри
“Захист інформації” протокол № від 2010 р.
Львів – 2010
Мета: Ознайомитись з алгоритмами і методами шифрування симетричними блоковими шифрами. Отримати навики роботи з шифрами DES-EBC, DES-CBC. Ознайомитись з алгоритмом AES. Навчитися проводити шифрування і дешифрування тексту, застосовуючи демонстраційний модуль пакету CrypTool. Навчитися застосовувати набуті знання в галузі інформаційної безпеки.
Шифрування за схемою Діффі і Хеллмана.
Шифрування за схемою Діффі і Хеллмана відноситься до криптографічних систем з відкритим ключем, які мають назву асиметричне шифрування. Асиметричне шифрування – це система шифрування або електронного цифрового підпису (ЕЦП) при якій відкритий ключ передається по відкритому (незахищеному, доступному для спостереження) каналу, і використовується для перевірки ЕЦП і для шифрування повідомлення. Для генерації ЕЦП і для дешифрування повідомлення використовується секретний ключ.
Криптографічні системи з відкритим ключем широко застосовуються в різних мережевих протоколах, зокрема, в протоколах TLS (попередньо SSL) і SSH. Також використовуються в PGP і S/MIME.
Види асиметричних шифрів:
Diffie-Hellman (Обмін ключами Діффі — Хелмана, DH)
RSA (Rivest-Shamir-Adleman)
DSA (Digital Signature Algorithm)
Elgamal (Шифросистема Ель-Гамаля)
ECC (Elliptic Curve Cryptography, криптографія еліптичної кривої)
ГОСТ Р 34.10-2001
Rabin
Luc
McEliece
Алгоритм DH був уперше опублікований Уитфілдом Діффі (Whіtfіeld Dіffіe) і Мартіном Хеллманом в 1976 році. В 2002 році Хеллман запропонував називати даний алгоритм "Діффі - Хеллмана - Меркле", визнаючи внесок Меркле у винахід криптографії з відкритим ключем.
Алгоритм Діффі - Хеллмана (Dіffіe-Hellman, DH) що дозволяє двом сторонам одержати загальний секретний ключ, використовуючи незахищений від прослуховування, але захищений від підміни, канал зв'язку. Цей ключ може бути використаний для шифрування подальшого обміну за допомогою алгоритму симетричного шифрування.
Схема обміну ключами представлена на рис. 1. При роботі алгоритму, кожен абонент:
1 - генерує випадкове натуральне число a - закритий ключ;
2 - встановлює разом з іншим абонентом відкриті параметри p й g (звичайно значення p й g генеруються на одній стороні й передаються інший), де p - випадкове просте число, g - первинний корінь за модулем p;
3 - обчислює відкритий ключ A, використовуючи перетворення над закритим ключем: A = ga mod p;
4 - обмінюється відкритими ключами з іншим абонентом;
5 - обчислює загальний секретний ключ K, використовуючи відкритий ключ B іншого абоненту і свій закритий ключ a: K = Ba mod p (К виходить рівним з обох сторін, тому що:
K = Ab mod p = (gb mod p)b mod p = gab mod p = (gb mod p)a mod p = Ba mod p
Тобто, в обох абонентів вийде однакове число K, яке можна використати як секретний ключ, оскільки тут зловмисник зустрінеться із практично нерозв'язної проблемою обчислення gab mod p по перехопленим ga mod p і gb mod p, якщо числа p, a, b досить великі.
Рис. 1. Схема шифрування DH.
В практичних реалізаціях a, b - числа порядку 10100 , p - порядку 10300. Число g не обов'язково має бути великим і має значення в межах першого десятка.
Криптографічна стійкість алгоритму DH полягає в складності обчислення K=gab mod p за відомими p, g, A=ga mod p і B=gb mod p, в складності дискретного логарифмування.
Необхідно відзначити, що алгоритм Діффі - Хеллмана працює тільки на лініях зв'язку з надійно захищеними каналами, коли не можлива модифікація даних. В тих випадках, коли в каналі можлива модифікація даних, з'являється очевидна можливість вклинювання в процес генерації ключів "зловмисника-посередника" по тій же самій схемі, що й для асиметричної криптографії.
2. Послідовність виконання роботи.
2.1. Створіть ключ Діффі-Хеллмана за допомогою програми PGP.
PGP (Pretty Good Privacy) – комп'ютерна програма, що дозволяє виконувати операції шифрування (кодування) і цифрового підпису повідомлень, файлів та іншої інформації, представленої в електронному вигляді, має безліч реалізацій, сумісних між собою і рядом інших програм (GnuPG, FileCrypt і ін.) завдяки стандарту OpenPGP (RFC 4880).
2.1.1. Налаштуйте розміщення ключа.
Для настроювання розміщення ключів PGP у правому нижньому куті екрана натисніть на значок програми PGP , відкрийте "Настроювання..." (Optіons...) і виберіть закладку Файли (Fіles) (рис. 2).
Натисніть кнопку "Огляд..."(Browse), виберіть папку для розміщення відкритого ключа - pubrіng.skr, (попередньо в папці "Мої документи" створіть папку "ключі"). Аналогічно натисніть кнопку "Огляд..."(Browse) для вибору папки розміщення закритого (секретного) ключа - secrіng.skr.
Натисніть кнопку ОК для застосування зворотніх налаштувань.
Рис. 2. Вікна опцій налаштування розміщення ключа.
При імпорті нових ключів, програма PGPkeys запитує про резервне збереження обраних ключів. Для збереження резервної копії необхідно знову знайти ту ж саму папку, у яку розмістили відкритий ключ (pubrіng.skr) і назвати файл pubrіng2.skr, аналогічно для секретного ключа (secrіng.skr) - знайдіть папку його розміщення й збережете резервну копію за назвою secrіng2.skr
2.1.2. Створіть ключі в PGPKeys (рис. 3).
В правому нижньому куті екрану (на панелі задач) натисніть на піктограму і виберіть PGPkeys.
Рис. 3. Вікна опцій генерації ключів.
В вікні PGPkeys натисніть на кнопку (Generate new keypair), відкрийте майстр створення ключів і натисніть кнопку >> (Далі).
В наступному вікні введіть Ваше Ім'я і Прізвище, електронну адресу і натисніть >>.
Виберіть тип ключа: Diffie-Hellman/DSS та натисніть >>.
Виберіть довжину ключа - 2048 bіts (2048 Dіffіe-Hellman/ 1024 DSS), натисніть >>.
Виберіть термін скасування ключа (Key Expіratіon) - ніколи (Key paіr never expіres), натисніть >>.
Введіть ключову фразу (Passphrase) - комбінацію букв і цифр. Зверніть увагу на регістр (клавіша CapsLock) і мова - українська або англійська.
.Якщо Ви забудете свій пароль, то Ви самі не зможе прочитати Вашу зашифровану інформацію!
Ще раз введіть Вашу ключову фразу у вікні перевірки (Confіrmatіon) (фраза не відображається на екрані!) і натисніть >>.
Почекайте закінчення створення ключів, натисніть кнопку >>.
Не відправляйте ваш ключ на сервер PGP, (залишіть прапорець Send my key to the root server now - виключеним), натисніть кнопку >>.
В останнбому вікні - Вас поздоровляють із успішним створенням пари ключів.
Натисніть кнопку Готово.
2.2. Експортуйте ключ.
Для експорту ключа - необхідно клацнути правою кнопкою миші на своєму електронному ключі, в спливаючому меню вибрати пункт "Експорт".
Виберіть папку для ключа "Мої документи" (включіть Іnclude Prіvate Keys) (рис. 4)
Рис. 4. Вибір папки для експорту ключа.
Приєднайте цей файл до електронного листа і відправте. Після цього Вам зможуть посилати кодовані листи, які Ви зможете прочитати.
2.3. Імпортуйте ключ.
Одержантй по електронній пошті лист із вкладеним електронним ключем, то двічі клацніть на файлі - відкриється вікно вибору - відкрити або зберегти. Виберіть відкрити і натисніть кнопку ОК.
В вікні, що відкрилося, натисніть кнопку Іmport (рис. 5).
Рис. 5. Вікно імпорту ключа.
2.3. Зашифруйте лист.
Для шифрування листа - при його створенні в головному меню "PGP" Виберіть "Encrypt now" (Зашифрувати зараз) як показане на рис. 6.
Рис. 6. Вікно опцій шифрування листа.
В вікні, що відкрилося (рис. 7), перенесіть Ключ (відкритий) адресату, якому будете відправляти лист в список одержувачів, а також свій ключ і натисніть ОК.
Лист буде зашифровано. Введіть адресу одержувача в рядку Кому.
Рис. 7. Вибір адресу одержувача листа.
2.4. Розшифруйте отриманий лист.
При одержанні зашифрованого листа, відкрийте його в меню "PGP", виберіть пункт "Decrіpt/Verіfy" (Розшифрувати/Перевірити). В діалоговому вікні, наберіть Вашу ключову фразу (зверніть увагу на мову, на регістр (клавіша CapsLock)). Якщо ви були в списку людей, яким дозволене читати цей лист і набрали правильну ключову фразу, лист буде розшифровано в звичайний текст.
Шифр RSA
RSA (от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом стал первым алгоритмом, пригодным и для шифрования, и для цифровой подписи.
Частные и общественные ключи используют два главных номера p и q, которые пользователь может конкретизировать для себя и беречь в секрете. Пользователь выбирает два натуральные номера e и d так, что
The product of n=p×q and e then serves as the public key, n and d as the private key. For this encryption algorithm too the plaintext letters must first be converted to numbers. This is generally done using the ASCII code, but one can of course also agree on A=0, B=1 .... Z=25. However, the number of each plaintext letter must be smaller than the product n. This becomes clear when one examines the encryption and decryption functions (a = plaintext letter, c = ciphertext letter):
Since in the modulo division one can also first determine the remainder from each factor in the division modulo n and then the rest of its product modulo n, it would not always be possible to obtain a unique ciphertext character if a could be bigger than n.
Cryptographically it is important of
whether the encryption function really produces the original message and
whether it is really not possible to work out the private key from knowledge of the public key or
to reconstruct the plaintext with no key.
The answer to the first question is definitely "Yes". If one uses a^d mod n for c in the encryption function, one obtains
From the properties of the variables one obtains a^(d×e) - a mod p = 0 and a^(d×e) - a mod q = 0. The different prime numbers p and q thus divide the same number. Therefore their product must also divide this number. It follows therefore that (a detailed proof can be found in the script)
The second question, whether it is possible to work out the private key from the public key, can theoretically also be answered in the affirmative. But in fact no one has yet succeeded in calculating the private key when p and q are sufficiently large. However, the procedure for this is well known: since n is the product of two prime numbers, and e and d depend directly on these two prime numbers, it should be possible to identify the two prime numbers as one breaks n down into its prime factors, i.e. p and q. The normal way to establish the prime factors is to check all the prime numbers from 2 up to the square root of n to see whether they divide into n or not. But since n should be at least 300 digits long, this is a very time-consuming method. It took 600 people (or rather, their computers) eight months to factorise a 129-digit number in 1994! The CPU time required to factorise a 160-digit number was estimated in 1996 to be five years. Each of the two keys viewed on its own constitutes a trap door function (a trap door function is a mathematical function which is simple, i.e. does not require a lot of effort, to calculate, but whose inverse is extremely difficult to calculate).
If every letter is encrypted individually with the RSA algorithm, the analysis would ultimately be exactly the same as with each monoalphabetic substitution cipher. It would not be necessary to find out d in order to ascertain the original plaintext letter for every number. But since n is very big, many letters put together in blocks can be encrypted at once. This of course makes it ever more difficult to calculate the private key. To make analysis as difficult as possible, the variables d, e, p and q, for example, should be chosen so that they are sufficiently large, but with p and q differing by a significant amount.
However, as the encryption and decryption of texts using the RSA algorithm is relative time-consuming, it is generally only used today to encrypt the session key of a (symmetric) cipher during exchange or a digital signature. An exchange of keys must be encrypted with the public key, while a digital signature must be encrypted with the private key.
асиметричні ключіі Діффі-Хеллмана (DH/DSS), RSA, Ель-Гамаля (Elgamal) ці ключі використовуються для секретної переписки в системі клієнт-банк.
1. Діффі-Хеллман (DH/DSS)
Алгоритм Діффі - Хеллмана (англ. Dіffіe-Hellman, DH) - алгоритм, що дозволяє двом сторонам одержати загальний секретний ключ, використовуючи незахищений від прослуховування, але захищений від підміни, канал зв'язку. Цей ключ може бути використаний для шифрування подальшого обміну за допомогою алгоритму симетричного шифрування.
Алгоритм був уперше опублікований Уитфілдом Діффі (Whіtfіeld Dіffіe) і Мартіном Хеллманом в 1976 році.
В 2002 році Хеллман запропонував називати даний алгоритм "Діффі - Хеллмана - Меркле", визнаючи внесок Меркле у винахід криптографії з відкритим ключем.
Історія
Схема обміну ключами Діффі - Хеллмана, винайдена в 1976 році при співробітництві Уітфілда Діффі й Мартіна Хеллмана, під сильним впливом роботи Ральфа Меркле (Ralph Merkle) про систему поширення публічних ключів, стала першим практичним методом для одержання загального секретного ключа при спілкуванні через незахищений канал зв'язку. Для забезпечення стійкості, за порадою Джона Гілла (John Gіll), була використана проблема дискретного логарифмування. За кілька років до цього ця ж схема була винайдена Малькольмом Вільямсоном з англійського штабу урядового зв'язку, але залишалася в секреті до 1997 року.
Роком пізніше був винайдений перший алгоритм асиметричного шифрування RSA, що вирішив проблему спілкування через незахищений канал кардинально, уже не вимагаючи, щоб кожна сторона мала копію того самого секретного ключа.
Опис алгоритму
Припустимо, що обом абонентам відомі деякі два числа g й p (наприклад, вони можуть бути "зашиті" у програмне забезпечення), які не є секретними й можуть бути відомі також іншим зацікавленим особам. Для того, щоб створити невідомий більше нікому секретний ключ, обоє абонента генерують більші випадкові числа: перший абонент - число a, другий абонент - число b. Потім перший абонент обчислює значення A = gamodp і пересилає його другому, а другий обчислює B = gbmodp і передає першому. Передбачається, що зловмисник може одержати обоє цих значення, але не модифікувати їх (тобто в нього немає можливості вмішатися в процес передачі). На другому етапі перший абонент на основі наявного в нього a й отриманого по мережі B обчислює значення Bamodp=gabmodp, а другий абонент на основі наявного в нього b й отриманого по мережі A обчислює значення Abmodp = gabmodp. Як неважко бачити, в обох абонентів вийшло те саме число: K = gabmodp. Його вони й можуть використати як секретний ключ, оскільки тут зловмисник зустрінеться із практично нерозв'язної (за розумний час) проблемою обчислення gabmodp по перехопленим gamodp і gbmodp, якщо числа p,a,b обрані досить більшими.
При роботі алгоритму, кожна сторона:
1. генерує випадкове натуральне число a - закритий ключ
2. разом з вилученою стороною встановлює відкриті параметри p й g (звичайно значення p й g генеруються на одній стороні й передаються інший), де
p є випадковим простим числом
g є первісним коренем по модулі p
3. обчислює відкритий ключ A, використовуючи перетворення над закритим ключем
A = gamodp
4. обмінюється відкритими ключами з вилученою стороною
5. обчислює загальний секретний ключ K, використовуючи відкритий ключ вилученої сторони B і свій закритий ключ a
K = Ba mod p
До виходить рівним з обох сторін, тому що:
Ba mod p = (gb mod p)a mod p = gab mod p = (ga mod p)b mod p = Ab mod p
У практичних реалізаціях, для a й b використаються числа порядку 10100 й p порядку 10300. Число g не зобов'язане бути більшим і звичайно має значення в межах першого десятка.
Криптографічна стійкість
Криптографічна стійкість алгоритму Діффі - Хеллмана (тобто складність обчислення K=gab mod p по відомим p, g, A=ga mod p й B=gb mod p), заснована на передбачуваній складності проблеми дискретного логарифмування. Однак, хоча вміння вирішувати проблему дискретного логарифмування дозволить зламати алгоритм Діффі - Хеллмана, зворотне твердження до цих є відкритим питанням (інакше кажучи, еквівалентність цих проблем не доведена).
Необхідно відзначити, що алгоритм Діффі - Хеллмана працює тільки на лініях зв'язку, надійно захищених від модифікації. Якби він був застосовний на будь-яких відкритих каналах, то давно зняв би проблему поширення ключів й, можливо, замінив собою всю асиметричну криптографію. Однак, у тих випадках, коли в каналі можлива модифікація даних, з'являється очевидна можливість вклинювання в процес генерації ключів "зловмисника-посередника" по тій же самій схемі, що й для асиметричної криптографії.
Приклад створення ключа Діффі-Хеллмана програмою pgp
Налаштування розміщення ключа
Для настроювання розміщення ключів PGP у правому нижньому куті екрана натисніть на відкрийте пункт "Настроювання..." (Optіons...) і
виберіть закладку Файли (Fіles). Натисніть кнопку "Огляд..."(Browse)
Виберіть папку для розміщення відкритого ключа - pubrіng.skr, (попередньо в папці "Мої документи" створіть папку "ключі")
Аналогічно натисніть кнопку "Огляд..."(Browse) для вибору папки розміщення закритого (секретного) ключа - secrіng.skr
Натисніть кнопку ОК для застосування зворотніх настроєк. див. мал.
При імпорті нових ключів, програма PGPkeys запитує Вас про резервне збереження обраних Вами ключів. Для збереження резервної копії необхідно знову знайти ту ж саму папку, у яку Ви розмістили відкритий ключ (pubrіng.skr) і назвати файл pubrіng2.skr, аналогічно для секретного ключа (secrіng.skr) - знайдіть папку його розміщення й збережете резервну копію за назвою secrіng2.skr
1.PGPKeys - створення ключів.
відкрийте програму PGPkeys
У правому нижньому куті екрану (на панелі задач) натисніть на програму (Замỏк) та оберіть PGPkeys. (див. Малюнок зліва)
У Вікні PGPkeys натисніть на кнопку
(підказка – Generate new keypair)
У відкрившомуся майстрі створення ключів натисніть кнопку Далі>>
4У наступному вікні введіть Ваше Ім'я й Прізвище, електронну адресу й натисніть Далі>>
Виберіть тип ключа: Diffie-Hellman/DSS та натисніть Далі>>
Виберіть довжину ключа - 2048 bіts (2048 Dіffіe-Hellman/ 1024 DSS) і натисніть Далі>>
Виберіть строк скасування ключа (Key Expіratіon) - ніколи (Key paіr never expіres) і натисніть Далі>>
8. Уведіть ключову фразу (Passphrase) - комбінацію букв і цифр. Зверніть увагу на регістр (клавіша CapsLock) і мова - українська або англійський.
Увага! Якщо Ви забудете свій пароль,
то Ви самі не зможе прочитати Вашу зашифровану інформацію!
Ще раз уведіть Вашу ключову фразу у вікні перевірки (Confіrmatіon) (фраза не відображається на екрані!) і натисніть Далі>>
Іде створення ключів, потрібно почекати. Після цього натисніть кнопку Далі>>
Не відправляйте ваш ключ на сервер PGP,
(залишіть прапорець Send my key to the root server now - виключеним)
натисніть кнопку Далі>>
11. В останнім вікні - Вас поздоровляють із успішним створенням пари ключів.
Натисніть кнопку Готово.Експорт ключів
Для експорту ключа - необхідно клацнути правою кнопкою миші на своєму електронному ключі й у спливаючому меню вибрати пункт "Експорт".
Виберіть папку для ключа, наприклад, "Мої документи" (включите Іnclude Prіvate Keys)
Тепер Ви можете приєднати цей файл до електронного листа й відправити його. Тільки після цього Вам можуть послати кодований лист, що Ви зможете прочитати.
Імпорт ключів
Якщо Ви одержите по електронній пошті лист із вкладеним електронним ключем, то двічі клацніть на файлі - відкриється вікно вибору - відкрити або зберегти. Виберіть відкрити й натисніть кнопку ОК.
У вікні, що відкрилося, натисніть кнопку Іmport.
3. Шифрування листа
1. Для шифрування листа - при його створенні в головному меню "PGP" Виберіть "Encrypt now" (Зашифрувати зараз) як показане на малюнку
2. У вікні, що відкрилося, перенесіть Ключ (відкритий) людини, кому Ви хочете відправити лист у список одержувачів, а також свій ключ! І натисніть ОК
3. Лист буде зашифровано. Уведіть адресу одержувача в рядку Кому.
Розшифрування листа
1. При одержанні зашифрованого листа, відкрийте його й у меню "PGP" виберіть пункт "Decrіpt/Verіfy" (Розшифрувати/Перевірити).
2. У діалоговому вікні, що з'явилося, наберіть Вашу ключову фразу (зверніть увагу на мову - росіянин або англійський, на регістр (клавіша CapsLock))
3. Якщо ви були в списку людей, яким дозволене читати цей лист і набрали правильну ключову фразу, лист буде розшифровано - у звичайний текст.
2.RSA
Система RSA. Структура цифрового підпису
У стандартних криптографічних системах, таких, як DES або Гост, той самий ключ використається й для шифрування, і для розшифровки. Це значить, що ключ повинен спочатку бути переданий через секретні канали так, щоб обидві сторони могли мати його до того, як шифровані повідомлення будуть посилати по звичайних каналах, і, природно, він може бути перехоплений. У криптографічній
системі з відкритим ключем кожний має два зв'язаних взаємно однозначно ключі: публикуемый відкритий ключ і секретний ключ. Кожний з них дешифрує код, зроблений за допомогою іншого. Знання відкритого ключа не дозволяє вам обчислити відповідний секретний ключ. Відкритий ключ може публікуватися й широко поширюватися через комунікаційні мережі. Такий протокол
забезпечує таємність без необхідності використати спеціальні канали зв'язку, необхідні для стандартних криптографічних систем.
Розглянемо спочатку систему RSA у загальному виді.
1. a порівнянно з b по модулі n
a=b(mod n)
означає, що число n націло ділить різницю a-b.
2. Числа a й b мають найбільший загальний дільник (НОД) d, якщо d ділить і a і b і
максимально серед таких чисел.
НОД(a,b)=d
3. Числа a і b взаємно прості, якщо НОД(a,b)=1
4. Число p називається простим, якщо воно ділиться тільки на 1 і самого себе.
5. Якщо p - простої і b<p, то НОД(b,p)=1
6. Мала теорема Ферма.