Генерація нової пари ключів Обмін ключами Зашифрування і розшифрування документів Підписи і їх перевірка
GnuPG - інструмент для захисту комунікацій. Ця глава коротко описує основи роботи з GnuPG, включаючи створення пар ключів, обмін ключами і їх перевірку, зашифрування і розшифрування документів, завірення документів цифровим підписом. Вона не описує в деталях принципи криптографії з відкритим ключем, шифрування і цифрового підпису. Ці питання розглядаються в розділі 2. Тут, також, не розглядаються тонкощі використання GnuPG. Ці питання розглядаються в главах 3 та 4.
GnuPG використовує криптографію з відкритим ключем. Кожен користувач має пару ключів (keypair), що складається з секретного (private) і відкритого (public) ключів. Секретний ключ є секретом користувача і не може бути переданий іншій особі, ні за яких обставин. Відкритий ключ передається всім людям, з якими користувач буде обмінюватися повідомленнями. GnuPG використовує кілька більш хитромудру схему, при якій користувач має первинну пару ключів і, можливо, додатково кілька підлеглих. Первинна і підлеглі пари об'єднані, для спрощення їх використання, і ця зв'язка, найчастіше, може розглядатися просто, як одна пара ключів.
Для створення первинної пари ключів використовується команда --gen-key
GnuPG може створювати кілька різних типів ключів, але первинний ключ повинен бути придатний для створення підпису (signature). Тому є тільки три варіанти. Варіант 1 створює дві пари ключів. DSA - первинна, яка використовується тільки для підпису. ElGamal - підпорядкована, використовувана для шифрування. Варіант 2 схожий, але створює тільки пару DSA. Варіант 4 [1] створює тільки пару ElGamal, використовувану і для підпису і для шифрування. У будь-якому випадку, пізніше можна створити додаткові пари ключів для підпису та шифрування. Більшості користувачів підійде варіант 1.
Також Ви повинні вибрати розмір ключа. Розмір ключа DSA повинен бути між 512 і 1024 біт. Ключ ElGamal може бути будь-якого розміру. Зазвичай, GnuPG вимагає ключі не коротші 768 біт. Таким чином, якщо Ви вибрали варіант 1 і розмір ключа більше 1024 біт, то ключ ElGamal матиме вказаний розмір, а ключ DSA - 1024 біта.
About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is +1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024)
Більший розмір ключа дає більший захист від злому, але розмір за замовчуванням достатній практично для будь-яких цілей. Велика довжина ключа уповільнює зашифрування і розшифрування і може відбитися на довжині сигнатури. Розмір ключа можна буде згодом змінити.
Нарешті, Ви повинні вказати термін дії ключа. У разі варіанта 1, зазначений термін використовується для обох ключів.
Please specify how long the key should be valid. 0 = key does not expire
Більшості користувачів підійде безстроковий ключ. Термін дії слід вибирати з обережністю; хоча можна змінити термін дії після створення ключа, не виключені проблеми з передачею змін тим користувачам, у яких вже є Ваш відкритий ключ.
На додаток до параметрів ключа, Ви повинні вказати ім'я користувача. Ідентифікатор потрібен, щоб зв'язати створений ключ з конкретною особою.
You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter)
При генерації ключа створюється лише один код користувача, але можливе створення додаткових ідентифікаторів, якщо Ви хочете використовувати ключ в декількох контекстах; наприклад, як інженер на роботі і як політичний діяч після неї. Ідентифікатор користувача не може бути відредагований після створення.
GnuPG запросить пароль для захисту первинного і підлеглого секретних ключів, які Ви будете тримати в недоступному для інших місці.
You need a Passphrase to protect your private key. Enter passphrase:
На довжину пароля немає обмежень, і його слід вибирати ретельно. З точки зору безпеки, пароль для захисту ключа дуже важливий в GnuPG (і інших системах з відкритим ключем), тому що це Ваша єдиний захист в разі, якщо Ваш секретний ключ потрапить до чужих рук. Не слід брати слова з Великої радянської енциклопедії, чергуйте регістр букв і використовуйте неалфавітні символи. Хороший пароль критичний для надійності GnuPG.
Створення відкликає сертифіката
Після створення пари ключів, Вам слід створити Відкличний сертифікат (revokation certificate) для первинного відкритого ключа, використовуючи команду --gen-revoke. Якщо Ви забудете пароль, або Ваш секретний ключ буде викрадений або загублений, цей сертифікат може бути розісланий для повідомлення про те, що відкритий ключ не можна більше використовувати. Відкликаний відкритий ключ може використовуватися для перевірки зроблених Вами підписів і далі, але він не може бути використаний для шифрування повідомлень для Вас. Також Ви зберігаєте можливість розшифровки посланих Вам повідомлень, при наявності секретного ключа.
alice% gpg --output revoke.asc --gen-revoke mykey [. ]
Експорт відкритого ключа
Перед тим як послати відкритий ключ будь-кому, Ви повинні його експортувати. Для цього використовуйте команду --export. Їй потрібно, додатково, аргумент, що ідентифікує експортований відкритий ключ, як і --gen-revoke.
alice% gpg --output alice.gpg --export [email protected]
Ключ експортується в довічним форматі, що буває незручно. GnuPG має опцію командного рядка --armor. яка вказує на необхідність виведення в форматі ASCII. Практично будь-який висновок GnuPG, тобто ключі, зашифровані документи, підписи, може відбуватися у форматі ASCII. [2]
Імпорт відкритого ключа
Відкритий ключ може бути доданий до безлічі Ваших відкритих ключів за допомогою команди --import.
Після перевірки відбитків Ви можете підписати ключ. Так як перевірка ключа слабка ланка в криптографії з відкритим ключем, то Ви повинні бути абсолютно впевнені в ключі перед тим, як його підписувати, і завжди перевіряйте відбитки.
Відкритий і секретний ключі, грають кожен свою роль при зашифровки і розшифровки документів. Відкритий ключ можна уявити як відкритий сейф. Коли кореспондент зашифровує повідомлення за допомогою відкритого ключа, це повідомлення міститься в сейф і сейф закривається. Відповідний закритий ключ - комбінація, необхідна для того, щоб відкрити сейф і отримати документ. Іншими словами, тільки володар закритого ключа може відновити документ, зашифрований відповідним відкритим ключем.
Якщо Ви хочете послати повідомлення одному, то зашифровуєте його за допомогою відкритого ключа одного, а той розшифровує його за допомогою свого секретного ключа. Якщо один захоче Вам відповісти, то він зашифрує відповідь за допомогою Вашого відкритого ключа, а Ви розшифруєте його своїм секретним.
Для шифрування документа використовується команда --encrypt. Ви повинні мати відкриті ключі передбачуваних одержувачів. Програма очікує в якості параметра ім'я шифруемого документа або, в разі його відсутності, шифрує стандартне введення. Зашифрований результат поміщається в стандартний висновок, а то й зазначена опція --output. Для підвищення захисту документ додатково стискається.
alice% gpg --output doc.gpg --encrypt --recipient [email protected] doc
Опція --recipient використовується для кожного одержувача і має аргумент, що ідентифікує відкритий ключ, яким повинен бути зашифрований документ. Зашифрований документ може бути розшифрований тільки тим, чий секретний ключ відповідає одному із зазначених відкритих ключів. Зокрема, Ви не можете розшифрувати зашифрований Вами документ, якщо не включили свій відкритий ключ у список одержувачів.
Для розшифрування повідомлення використовується команда --decrypt. Вам потрібен секретний ключ, для якого це повідомлення було зашифровано. Документ для розшифровки на вході програми, розшифрований документ на виході.
Документи, також, можна зашифровувати без відкритого ключа. Замість цього використовується симетричний шифр для зашифровуваної документа. Ключ, використовуваний при зашифрованими, утворюється з ключової фрази, яку просять перед зашифрованістю. Для більшої безпеки цей пароль не повинен співпадати з тим, який Ви використовуєте для захисту секретного ключа. Симетричний шифр застосуємо, коли немає необхідності обмінюватися ключовою фразою. Для використання симетричного шифру застосовується команда --symmetric.
alice% gpg --output doc.gpg --symmetric doc Enter passphrase:
Цифровий підпис засвідчує творця і дату створення документа. Якщо документ буде якимось чином змінено, то перевірка цифрового підпису видасть помилку. Цифровий підпис може використовуватися в тих же цілях, що і звичайна підпис. Вихідні тексти GnuPG, наприклад, підписані, і Ви можете переконатися, що вони дійшли до Вас незміненими.
Для підпису документів використовується команда --sign. Документ для підпису на вході і підписаний на виході.
Документ стискається перед підписом і виводиться в довічним форматі.
Маючи підписаний документ, Ви можете або перевірити підпис, або після перевірки підпису і відновити вихідний документ. Для перевірки підпису використовується команда --verify. Для перевірки підпису і вилучення документа використовується команда --decrypt. Підписаний документ на вході і перевірений і відновлений на виході.
Прозоро підписані (Clearsigned) документи
відокремлена підпис
Застосування підписаних документів обмежено. Одержувач повинен відновлювати документ з підписаною версією, і навіть в разі прозорої підписи, підписаний документ повинен бути відредагований для отримання оригіналу. Тому є третій метод підпису документів, який створює відокремлену підпис (detached signature). Відокремлена підпис створюється при використанні команди --detach-sign.
Для перевірки підпису необхідні і відокремлена підпис, і документ. Для перевірки використовується команда --verify.