Як імпортувати ключ RSH SSH в GPG як приватний ключ _primary_?


16

На даний момент у мене є ключ SSH, який я деякий час використовував, і я хотів би почати використовувати GnuPG з новим брелоком. Однак, враховуючи, що я використовував свій ключ протягом століть, я хотів би все-таки використовувати цей ключ у GPG як основний / первинний ключ. Я намагався імпортувати ключ за допомогою цих інструкцій .

Але я закінчую тим, що вважається "підрозділом". Крім того, якщо я спробую імпортувати його без створення стандартного ключа GPG, GPG навіть не бачить цього підрозділу. (Я припускаю, що під ключ потрібно підписати головним ключем.)

Як використовувати цей ключ як основний ключ у secring.gpg?


У якому сенсі ви маєте на увазі " _primary_ private key "?
MadHatter

Відповіді:


16

Проста відповідь: Ви цього не робите.

Ключі SSH та GnuPG (насправді OpenPGP) абсолютно різні, хоча обидва протоколи можуть використовувати пари ключів RSA.

І крім того, чому б ви хотіли це робити? Навіть якщо для створення PGP-ключа ви використовували один і той же ключ, вам все одно доведеться поширювати свій ключ як PGP-ключ. Ви, ймовірно, не розповсюджували свій відкритий ключ SSH людям, з якими спілкуєтесь, тому з точки зору розповсюдження ключів різниці немає: їм потрібно буде отримати відкритий ключ від вас. І навіть якщо ви розповсюджуєте свій відкритий ключ SSH іншим людям, їм потрібно буде зробити деякі додаткові кроки, щоб мати змогу імпортувати його до своєї реалізації OpenPGP, що може бути, а може і не бути простим.

Як kasperd досить righly зазначив, що має бути тільки один спосіб інтерпретувати ( в Зокрема) підпис. Якщо ви використовували один і той же ключ і для PGP, і для SSH, якщо хтось може ввести вас в підписання спеціально створеного повідомлення (яке є передбачуваною можливістю в певних атаках системи підпису) в одній, то навіть якщо обидві системи захищені в ізоляції може бути можливим скласти таке повідомлення таким чином, що в одній із систем має одне значення, а в іншому значення . Це саме по собі було б вразливістю. (Експлоатація? Хто знає. Але навіщо ризикувати?)

Обидві пари клавіш PGP і SSH - це довгострокові ключі, які використовуються для захисту ефемерних (повідомлення та сеансу) симетричних ключів, а також для перевірки справжності віддаленої партії. Це робить приватний ключ PGP або SSH набагато вищим значенням для злочинця, ніж відповідний симетричний ключ. Якщо ви використовуєте один і той же ключовий матеріал для обох, і зловмисник може це зрозуміти, це лише збільшує значення успішної атаки на цю пару ключів.

Не дивлячись детально жоден протокол, я гадаю, що визнання того, що один і той же ключовий матеріал використовується в обох, може бути досить тривіальним, оскільки відкритий ключ в основному передається чітко.

Просто створіть новий ключ PGP. Якщо ви хочете, зробіть це RSA та тієї ж довжини, що і ваш ключ SSH. (Жодна нормальна людина не збирається придивлятися до цього набагато ближче, ніж перевірити відбиток пальців.) Потім роздайте відкритий ключ людям, з якими ви хочете спілкуватися, як ключ PGP. Кожному буде набагато простіше і, швидше за все, безпечніше, ціною невеликої кількості ентропії від пулу випадкових ентропій вашої системи, який у будь-якому разі повинен бути швидко поповнений.


Якщо у вашому секретному ключі є кілька ключів і ви хочете вказати, який з них слід використовувати за замовчуванням, використовуйте default-keyі, можливо, default-recipient{,-self}директиви у вашому ~ / .gnupg / gnupg.conf.


1
Я згоден з цією відповіддю. Однак є ще одна причина не використовувати той самий ключовий матеріал. З міркувань безпеки повинен бути лише один спосіб інтерпретації підпису. Чи можна однаковий підпис трактувати двома різними способами, це було б вразливістю. Навіть якщо і ssh, і gpg захищені самим собою, супротивник може змусити вас підписати повідомлення з одним, а потім перенести підпис до іншої програми, де це може мати інше значення.
kasperd

@kasperd Добрий момент. Я змінив відповідь; як ви ставитесь до цього зараз?
CVn

Звучить гарно.
kasperd

1
Я вважаю, що ця відповідь не є абсолютно точною: у мавпсфері є вікно використання, де ви можете захотіти наявні ключі OpenSSH як підрозділи, що мають лише автентифікацію, у вашому особистому ключі OpenPGP. Принаймні, я хотів би використовувати це саме так.
user134450

Ці клавіші зовсім не відрізняються; їх метадані є.
foo

5

Ви можете перетворити SSH-ключ на ключ OpenPGP за допомогою інструменту pem2openpgpз проекту monkeysphere . Потім цей ключ може бути імпортований gnupg як звичайна пара приватних / відкритих ключів. Як згадується в іншій відповіді, це, як правило, не є хорошою ідеєю, оскільки ssh не має поняття сертифікатів, тому ви ефективно додаєте можливості до вже існуючого ключа, який він раніше не міг мати. Зазвичай це криптовалюта.

Я все одно зробив це за допомогою одного з моїх ключів ssh, але я додав пару ключів до мого іншого ключа OpenPGP як підрозділ, який має лише один прапор можливостей: автентифікація. Цей прапор призначений для подібних ситуацій, коли ви не хочете нічого підписувати чи шифрувати ключовими парами (значення --encryptта --signпараметри для gnupg), але ви хочете мати його у вашій скриньці для аутентифікації з OpenSSH та gnupg-агентом у будь-якому випадку.

Детальніше дивіться у документації про мавпи.


2

Існують вагомі причини перетворити звичайний ключ формату PKCS для імпорту в gpg.

Наприклад, якщо ви хочете поставити його на смарт-карту. Зручності, які gpg надає зі своєю картковою інформацією та командами для редагування карт, дуже корисні для цієї мети, то чому б не використати її як інструмент? Єдине перешкода, до якого потрібно подолати, це ... саме: імпорт ключа зі стандартного формату PKCS № 8 (або "сировинного" формату RSA PKCS №1) у сховище ключів gpg для подальшої обробки.

Отже - зверніть увагу на моє заперечення проти схваленої відповіді! :)

Справді корисну відповідь на подібне питання можна знайти тут: /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg


1

Використовуйте це на Ubuntu 16.04 або Windows WSL.

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

Імпортна карта. Це можна зробити в Windows або Linux.

gpg --import key.gpg

Переміщення до картки

Знайдіть ідентифікатор ключового підпису.

gpg --list-key

Перемістіть ключ автентифікації на карту

gpg --edit-key FFFFFFFFFFF
keytocard

Виберіть номер для слота для аутентифікації.

Ви закінчили тут.

Не забудьте видалити ключ із брелока gpg, якщо ви використовуєте карту. Використовуйте ідентифікатор ключа зверху.

gpg --delete-secret-key FFFFFFFFFFF

Різне

Не потрібно, але може бути корисним, щоб отримати ключ у текстовому форматі pgp.

gpg -a --export FFFFFF > key.asc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.