Забезпечте конфіденційність своїх даних, використовуючи інструмент gpg у Linux. Застосуйте передове шифрування, щоб ваші секрети залишалися таємницею. Розглянемо, як використовувати gpg для керування ключами, шифрування та дешифрування файлів.
Gnu Privacy Guard (GPG) надає можливість безпечно шифрувати ваші файли, гарантуючи, що лише визначений отримувач зможе їх розшифрувати. Зокрема, GPG відповідає стандартам OpenPGP. Його розроблено на основі програми під назвою Pretty Good Privacy (PGP), створеної Філом Циммерманном у 1991 році.
GPG використовує концепцію двох ключів шифрування для кожної особи: приватний та відкритий ключ. Відкритий ключ здатний дешифрувати дані, зашифровані приватним ключем, і навпаки.
Для безпечної передачі файлу, ви шифруєте його за допомогою вашого приватного ключа та відкритого ключа отримувача. Для дешифрування файлу отримувачу потрібен його закритий ключ та ваш відкритий ключ.
Звідси випливає, що відкриті ключі повинні бути загальнодоступними. Вам потрібен відкритий ключ отримувача, щоб зашифрувати для нього файл, а отримувачу потрібен ваш відкритий ключ для дешифрування. Немає ризику в тому, щоб зробити ваші відкриті ключі доступними для всіх. Для цього існують спеціальні сервери відкритих ключів. Натомість приватні ключі повинні залишатися закритими. Якщо ваш відкритий ключ є загальнодоступним, ваш закритий ключ необхідно зберігати в таємниці та під захистом.
Налаштування GPG вимагає більше зусиль, ніж його безпосереднє використання. Але, на щастя, зазвичай вам потрібно налаштувати його лише один раз.
Генерація ключів
Утиліта gpg вже встановлена в більшості дистрибутивів Linux, таких як Ubuntu, Fedora та Manjaro.
GPG можна використовувати не лише для шифрування електронних листів. Ви можете шифрувати будь-які файли, роблячи їх доступними для завантаження або передаючи їх отримувачу фізично. Однак вам потрібно прив’язати адресу електронної пошти до згенерованих ключів, тому оберіть ту адресу, яку ви плануєте використовувати.
Нижче наведено команда для генерації ключів. Опція –full-generate-key запускає інтерактивну сесію в терміналі, де вам буде запропоновано ввести пароль. Пам’ятайте свій пароль! Використання кількох простих слів, з’єднаних розділовими знаками, це надійний метод створення паролів.
gpg --full-generate-key
Вам буде запропоновано вибрати тип шифрування. Якщо немає конкретних вимог, оберіть 1 і натисніть Enter.
Потрібно також вказати бітову довжину ключів шифрування. Натисніть Enter, щоб прийняти значення за замовчуванням.
Вкажіть, як довго має діяти ключ. Для тестування можна встановити короткий термін, наприклад, 5 (днів). Для тривалого використання встановіть, наприклад, 1 рік. Ключ буде дійсним 12 місяців, після чого його потрібно буде оновити. Підтвердіть вибір літерою Y.
Необхідно ввести своє ім’я та адресу електронної пошти. За бажанням можна додати коментар.
Вам буде запропоновано ввести парольну фразу. Вона знадобиться вам для роботи з ключами, тому переконайтеся, що ви її пам’ятаєте.
Натисніть OK після введення парольної фрази. Це вікно буде з’являтися під час роботи з gpg, тому переконайтеся, що ви запам’ятали пароль.
Після завершення генерації ключа ви повернетеся до командного рядка.
Створення сертифіката відкликання
У випадку, якщо ваш закритий ключ стане відомий третім особам, вам потрібно буде анулювати старі ключі, щоб мати можливість згенерувати нові. Для цього потрібен сертифікат відкликання. Зараз ми його створимо та збережемо в безпечному місці.
Після опції –output потрібно вказати ім’я файлу сертифіката. Опція –gen-revoke вказує gpg створити сертифікат відкликання. Необхідно також вказати адресу електронної пошти, яку ви використовували при створенні ключів.
gpg --output ~/revocation.crt --gen-revoke [email protected]
Вам буде запропоновано підтвердити створення сертифіката. Введіть Y та натисніть Enter. Вас запитають, чому ви створюєте сертифікат. Оскільки ми створюємо його заздалегідь, причина нам не відома. Введіть 1 та натисніть Enter.
За бажанням можна ввести опис. Двічі натисніть Enter для завершення опису.
Вам буде запропоновано підтвердити налаштування. Введіть Y та натисніть Enter.
Сертифікат буде створено. Ви отримаєте повідомлення з проханням зберігати сертифікат у безпеці.
Тут згадується хтось на ім’я Меллорі. У криптографії традиційно використовуються імена Боб і Аліса для опису двох учасників діалогу. Є також інші персонажі, такі як Єва – підслуховувач, і Меллорі – зловмисник. Все, що нам зараз потрібно знати – ми маємо зберігати наш сертифікат у безпеці.
Давайте приберемо всі дозволи, крім власного, для цього сертифіката.
chmod 600 ~/revocation.crt
Перевіримо за допомогою ls, які дозволи встановлені зараз:
ls -l
Все добре. Ніхто, крім власника файлу, тобто нас, не може нічого робити з цим сертифікатом.
Імпорт чужого відкритого ключа
Для того, щоб зашифрувати повідомлення, яке може дешифрувати інша особа, нам потрібен її відкритий ключ.
Якщо вам надали ключ у файлі, ви можете імпортувати його за допомогою наступної команди. У цьому прикладі файл ключа називається “mary-geek.key”.
gpg --import mary-geek.key
Ключ буде імпортовано, і вам покажуть ім’я та електронну адресу, пов’язані з цим ключем. Очевидно, що ці дані мають збігатися з даними особи, від якої ви отримали ключ.
Також можливо, що особа, від якої потрібен ключ, завантажила його на сервер відкритих ключів. На цих серверах зберігаються відкриті ключі користувачів з усього світу. Сервери ключів періодично синхронізуються між собою, щоб ключі були доступні для всіх.
Сервер відкритих ключів MIT є популярним і регулярно синхронізується, тому пошук на ньому має бути успішним. Якщо хтось нещодавно завантажив ключ, він може з’явитися через декілька днів.
Після опції –keyserver має йти ім’я сервера ключів, на якому потрібно шукати. Після опції –search-keys потрібно вказати або ім’я особи, яку ви шукаєте, або її електронну адресу. Ми скористаємось електронною адресою:
gpg --keyserver pgp.mit.edu --search-keys [email protected]
Знайдені збіги будуть перераховані та пронумеровані. Для імпорту ключа введіть його номер та натисніть Enter. В даному випадку знайдено один збіг, тому вводимо 1 та натискаємо Enter.
Ключ імпортовано, і вам покажуть ім’я та електронну адресу, пов’язані з цим ключем.
Перевірка та підписання ключа
Якщо файл відкритого ключа передано вам знайомою людиною, то ви можете бути впевнені, що він належить цій особі. Якщо ж ви завантажили його з сервера відкритих ключів, то, можливо, варто перевірити, чи дійсно ключ належить потрібній вам людині.
Опція –fingerprint змусить gpg згенерувати коротку послідовність з десяти наборів по чотири шістнадцяткових символи. Ви можете попросити людину відправити вам цей відбиток ключа.
Потім ви можете використати опцію –fingerprint, щоб згенерувати таку ж послідовність шістнадцяткових символів і порівняти їх. Якщо вони збігаються, то ви можете бути впевнені, що ключ належить цій особі.
gpg --fingerprint [email protected]
Буде згенеровано відбиток ключа.
Після того, як ви переконаєтеся, що ключ справжній і належить особі, з якою він має бути пов’язаний, ви можете його підписати.
Якщо ви цього не зробите, то все одно зможете використовувати його для шифрування та дешифрування повідомлень. Проте gpg кожного разу буде питати вас, чи дійсно ви бажаєте продовжити, оскільки ключ непідписаний. Ми використаємо опцію –sign-key та вкажемо електронну адресу особи, щоб gpg знав, який ключ підписати.
gpg --sign-key [email protected]
Ви побачите інформацію про ключ та особу, і вам буде запропоновано підтвердити, що ви дійсно бажаєте підписати ключ. Введіть Y та натисніть Enter для підписання.
Як поділитися відкритим ключем
Щоб надати доступ до вашого ключа у вигляді файлу, нам потрібно експортувати його з локального сховища ключів gpg. Скористаємося опцією –export та вкажемо адресу електронної пошти, яку ви використовували для створення ключа. Після опції –output вкажемо ім’я файлу, до якого потрібно експортувати ключ. Опція –armor вказує gpg створити вихідний ASCII-файл замість бінарного.
gpg --output ~/dave-geek.key --armor --export [email protected]
Можемо переглянути файл ключа за допомогою команди less.
less dave-geek.key
Ось так виглядає ключ:
Ви також можете поділитися відкритим ключем на сервері відкритих ключів. Опція –send-keys надсилає ключ на сервер ключів. Після опції –keyserver має йти веб-адреса сервера відкритих ключів. Для визначення ключа, який потрібно відправити, у командному рядку потрібно вказати відбиток ключа. Зверніть увагу, що між наборами по чотири символи немає пробілів.
(Ви можете переглянути відбиток свого ключа за допомогою опції –fingerprint.)
gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4
Ви отримаєте підтвердження того, що ключ надіслано.
Шифрування файлів
Нарешті, ми готові зашифрувати файл та відправити його Марії. Файл називається Raven.txt.
Опція –encrypt вказує gpg зашифрувати файл, а опція –sign — підписати файл вашими даними. Опція –armor вказує gpg створити ASCII файл. Після опції -r (отримувач) потрібно вказати електронну адресу особи, якій ви відправляєте файл.
gpg --encrypt --sign --armor -r [email protected]
Файл буде створено з тією ж назвою, що і оригінал, але з доданим розширенням “.asc”. Поглянемо на його вміст.
less Raven.txt.asc
Файл є абсолютно нерозбірливим, і його може дешифрувати лише той, хто має ваш відкритий ключ і закритий ключ Марії. Марія єдина має обидва ключі.
Тепер ми можемо відправити файл Марії, будучи впевненими, що ніхто інший не зможе його розшифрувати.
Розшифрування файлів
Марія надіслала відповідь. Вона знаходиться в зашифрованому файлі під назвою coded.asc. Ми можемо легко розшифрувати його за допомогою опції –decrypt. Перенаправимо вихідні дані в новий файл під назвою plain.txt.
Зауважте, що нам не потрібно вказувати gpg, від кого цей файл. Він може визначити це із зашифрованого вмісту файлу.
gpg --decrypt coded.asc > plain.txt
Файл успішно розшифровано.
Оновлення ключів
Регулярно ви можете просити gpg перевіряти ключі на сервері відкритих ключів та оновлювати ті, які змінилися. Ви можете робити це кожні кілька місяців або коли отримуєте ключ від нового контакту.
Опція –refresh-keys змушує gpg виконати перевірку. Після опції –keyserver потрібно вказати сервер ключів на ваш вибір. Оскільки ключі синхронізуються між серверами, не має значення, який саме ви оберете.
gpg --keyserver pgp.mit.edu --refresh-keys
gpg відповість, перелічивши ключі, які він перевіряє, та повідомляючи вам, чи були якісь з них змінені та оновлені.
Конфіденційність – важлива тема
Конфіденційність даних є актуальною темою. Незалежно від причин, через які ви хочете зберегти свою інформацію в безпеці та конфіденційності, gpg пропонує простий спосіб застосувати надійне шифрування до ваших файлів та комунікацій.
Існують й інші способи використання gpg. Наприклад, ви можете встановити плагін Thunderbird під назвою Enigmail. Він інтегрується безпосередньо з вашою конфігурацією gpg, дозволяючи шифрувати електронні листи безпосередньо з Thunderbird.