Захищаємо себе засобами gnupg
GnuPG служить для створення цифрових підписів і шифрування даних. Наприклад, питання ідентифікації листів завжди було актуальним. За допомогою GnuPG можна «вкласти» в лист електронний підпис.
Останнім часом дуже гостро стоїть проблема збереження конфіденційності інформації. Особливо в глобальній мережі Інтернет, де ризик перехоплення секретних даних досить високий. У цій статті буде представлено опис роботи пакета GnuPG (GNU Privacy Guard, GPG) укупі з кількома прикладами застосування.
GnuPG служить для створення цифрових підписів і шифрування даних. Наприклад, питання ідентифікації листів завжди було актуальним. За допомогою GnuPG можна «вкласти» в лист електронний підпис. І, таким чином, одержувач визначить справжність відправника і приналежність йому цього листа. Процес роботи GnuPG дуже простий: за найскладнішими алгоритмами шифрування прихована проста логіка: використовується пара ключів, один з яких є приватним (ви його тримаєте у себе), а другий - публічним (він вільно борознить простори Мережі). Файл другого містить публічний ключ і підписи ваших респондентів. Виходить, що після доставки підписаного листа одержувач порівнює публічні ключі, і таким чином ідентифікує відправника.
Основні технічні особливості GnuPG такі:
- повноцінна альтернатива PGP;
- не використовує патентовані алгоритми;
- поширюється під ліцензією GPL;
- повна реалізація OpenPGP (RFC4880);
- розшифрування і аутентифікація повідомлень, створених за допомогою PGP 5, 6 і 7;
- підтримка електронного підпису за допомогою алгоритмів ElGamal, DSA, RSA і хеш-функцій MD5, SHA-1, RIPE-MD-160 і TIGER;
- робота з асиметричним шифруванням ElGamal і RSA (довжина ключа від 1024 до 4096 біт);
- підтримка блокових алгоритмів симетричного шифрування AES, 3DES, Blowfish, Twofish, CAST5, а також IDEA за допомогою модуля;
- легка реалізація нових алгоритмів за допомогою додаткових модулів;
- багатомовна підтримка (в тому числі і українського);
- online-система допомоги;
- підтримка прострочених ключів і підписів;
- вбудована підтримка HKP-серверів ключів.
Як вже було зазначено, GnuPG розроблений відповідно до стандарту OpenPGP, а це значить, що підписи і зашифровані дані, створені іншими програмами, сумісними з OpenPGP, працюватимуть з GnuPG. Використання різних криптографічних алгоритмів, таких як симетричні шифри, шифрування з відкритим ключем і змішані алгоритми, дозволяє надійно захищати секретні дані і передавати їх. Довжини ключа в 1024 або 2048 біт досить, щоб не турбуватися про злом зашифрованою інформації.
GnuPG - виключно консольна програма, але вже зараз існує кілька графічних оболонок для неї: Seahorse і GPG-Crypter. - які спрощують роботу з програмою за допомогою інтуїтивно зрозумілого графічного інтерфейсу.
Перше взаємодія з пакетом GnuPG починається з генерування ключів:
/.gnupg/pubring.gpg. Туди і заносяться відкриті (публічні) ключі ваших респондентів.
За допомогою команди:
Для основного ключа можна (і потрібно) створити Відкличний сертифікат:
де $ KEY - ID основного ключа.
Відкличний сертифікат потрібен для знищення ключа. Це може знадобитися, наприклад, якщо ключ буде вкрадений або загублений. Навіть якщо ключова фраза дуже надійна, варто заздалегідь, ще на етапі створення ключа, подумати про можливість його знищення в майбутньому. Після створення сертифіката його вміст буде виведено в stdout. Його потрібно зберегти в надійному місці (бажано на іншому носії або взагалі в друкованому вигляді), тому що будь-який, який заволодів цим сертифікатом, може зробити ключ недійсним і видалити його з бази даних сервера відкритих ключів (тоді ніхто не зможе отримати ваш ключ). Такі бази даних зберігають публічні ключі абсолютно вільно. Це зроблено для зручності обміну ключами: вам необов'язково постійно передавати ваш публічний ключ особисто. Можна скористатися кількома способами: розмістити у себе на домашній сторінці, на порталі, в якому є поле для публічного ключа, або скористатися більш централізованою базою - скарбничкою ключів, з якої дістати ваш ключ буде завжди зручно.
Щоб використовувати сертифікат, потрібно просто імпортувати його в базу, як і будь-який відкритий ключ:
а потім відправити на сервер:
де $ KEY - ID ключа, який буде відправлений.
Точно так само можна відправляти публічні ключі і зберігати їх на серверах баз даних. Для цього в першу чергу їх потрібно експортувати в загальну локальну базу командою:
де $ FILE - файл ключа або keyring ( «зв'язка», кілька ключів в одному файлі).
Після цього командою --sign-key $ KEY (де $ KEY - ID ключа респондента) потрібно підписати бажаний ключ. При підписуванні до нього додається ваш публічний ключ для того, щоб ваші повідомлення / листи могли ідентифікувати інші. Потім потрібно відправити підписаний вами ключ його власнику:
- ця команда витягує підписаний ключ окремо для зручності відправки.
Можна зробити те ж саме в вигляді ASCII-тексту, який легко розмістити в Мережі:
де $ KEY - ID ключа власника.
Тепер власник повинен імпортувати цей ключ до себе, щоб ваш підпис перебувала у нього в базі. Експорт такого ключа проводиться точно так же, як і будь-якого іншого публічного ключа. Потім власник відправляє його на сервер баз даних ключів або викладає на свій сайт. Тепер його ключ містить вашу підпис. І ідентифікація повідомлень дозволить впевнитися, що вони дійшли саме від вас.
Іноді може знадобитися зберігати ваші ключі (публічні або приватні) на будь-якому носії (наприклад, на USB flash). Для цього потрібно експортувати ключ, що можна зробити як в бінарному вигляді:
Так і в текстовому (ASCII armor):
В обох випадках $ KEY - це ID вашого ключа. Замість -a можна також використовувати --armor.
У підсумку, для роботи з документами доступні наступні команди:
- підписати документ (гарантує, що документ «від вас»), до нього просто додається ваш електронний підпис;
- зашифрувати документ (проводиться шифровка обраним алгоритмом всього документа);
- підписати і зашифрувати документ (поєднує в собі ці дії).
Незалежно від типу файлу (як було показано вище з ключем) можна отримати підпис або зашифроване повідомлення як в бінарному, так і в текстовому вигляді. Наприклад, є файл бібліотеки - він двійковий. Шифруємо і підписуємо його, а на виході отримуємо текстовий файл. Після розшифровки файл приходить в своє оригінальне стан. Це можна використовувати для зберігання різних файлів в таблицях реляційних баз даних: в такому разі, не дивлячись на різні типи файлів, після зашифровуваної все вони будуть представляти набір символів у вигляді рядків ASCII.
Можна створювати так звані «прозорі» підписи (в яких буде незашифроване вміст документа + ваша цифровий підпис):
А підписи, що знаходяться в окремих файлах в бінарному вигляді (буде створений файл підпису $ DOC.sig), створюються командами:
У текстовому (ASCII armor) вигляді (буде створений файл підпису $ DOC.asc):
Такі підписи (в останніх двох прикладах) повинні поширюватися разом з підписується документом.
Будь-ключ також можна відредагувати командою `--edit-key '. Це дозволить змінити деякі параметри ключа: ступінь достовірності, якщо це чужий публічний ключ, секретну фразу, якщо це ваш приватний ключ, і інше.
Що стосується ступеня достовірності, то в GnuPG існує 5 рівнів:
- I do not know or will not say (я нічого не знаю про власника цього ключа або не хочу говорити про це);
- I do NOT trust (я не довіряю цій людині);
- I trust marginally (я знаю цю людину і довіряю йому, але не впевнений, що ключ належить йому);
- I trust fully (я знаю цю людину і особисто переконався в тому, що ключ належить йому);
- I trust ultimately (я знаю цю людину, у мене є доступ до його секретного ключа).
GnuPG і Open Source
GnuPG існує практично в кожному дистрибутиві GNU / Linux, є обов'язковим пакетом в OpenBSD, NetBSD, FreeBSD та інших вільних операційних системах. Безліч Open Source-додатків підтримують GnuPG за допомогою різних модулів. Наприклад, gpgme (бібліотека, що є таким собі посередником між GnuPG і програмами) використовується наступними додатками:
- Поштові клієнти Evolution (входить до складу GNOME) і Sylpheed. а за допомогою розширення Enigmail GnuPG працює в поштовому клієнті Mozilla Thunderbird.
- Jabber-клієнти Gajim і Psi.
- KDE PIM (Personal Information Management).
У згаданій бібліотеки gpgme є і модулі для скриптових мов. наприклад:
Останнім часом все більше проектів використовують GnuPG для підписування файлів з метою подальшої перевірки їх цілісності (замість використання хешів MD5, SHA1, SHA256, SHA512). Тому крім архівів (особливо в Open Source-середовищі) на сайтах зазвичай лежать GPG-підпису в бінарному або ASCII-видах.
Один з заснованих на исходниках (так званих source-based) Linux-дистрибутивів використовує GnuPG як основний інструмент перевірки цілісності файлів в системі управління програмним забезпеченням - Source Mage GNU / Linux.
Бінарні дистрибутиви Linux також часто використовують пакети, підписані GnuPG. Наприклад, у випадку з пакетами DEB - це Debian GNU / Linux і Ubuntu, а з RPM - Red Hat, Fedora, Mandriva та багато-багато інших.
У цій статті ми познайомилися з GnuPG - вільним засобом захисту інформації. Тепер можна не турбуватися про те, що ваші секретні дані будуть втрачені або оприлюднені. Цей принципово новий підхід (з часів створення OpenPGP) до шифрування з точки зору звичайного користувача дозволяє і по сей день вирішувати складні завдання, пов'язані з передачею особливо важливих даних.
1. «Наприклад, питання ідентифікації листів завжди було актуальним. За допомогою GnuPG можна "вкласти" в лист електронний підпис. І, таким чином, одержувач визначить справжність відправника і приналежність йому цього листа. »
2. «Процес роботи GnuPG дуже простий: за найскладнішими алгоритмами шифрування прихована проста логіка: використовується пара ключів, один з яких є приватним (ви його тримаєте у себе), а другий - публічним (він вільно борознить простори Мережі). Файл другого містить публічний ключ і підписи ваших респондентів. »
«Файл другого» - другого кого? Більш того, підпис - це результат криптографічного перетворення інформації (листи / документа). Так ось цей резлультат формується безпосередньо в процесі підпису листи / документа, а відповідно, заздалегідь ніде не зберігається (це до питання про зміст того, «файлу другого»).
Не по суті: бентежать дві двокрапки в першому реченні. Можт бути, розбити на два різних пропозиції (замість першого двокрапки поставити крапку?
3. «Виходить, що після доставки підписаного листа одержувач порівнює публічні ключі, і таким чином ідентифікує відправника.»
Якщо в GnuPG так і відбувається перевірка підпису (в чому я сумніваюся), то я б результатами перевірки не довіряв.
За класикою ж при перевірці підпису одержувач ключі порівнює, а виробляє розшифровку результату підпису за допомогою відкритого ключа підписала (це якщо сильно спрощувати). Раджу почитати в мережі більш поглиблений матеріал по темі ЕЦП.
4. «Оскільки ймовірність злому є завжди, основний ключ краще використовувати для підпису в крайніх випадках.»
Дурниця. Результат підписи висланий кому-небудь ніяк не впливає на безпеку секретного ключа підписала.