RSA SSH anahtarını _primary_ özel anahtar olarak GPG'ye nasıl alabilirim?


16

Şu anda bir süredir kullandığım bir SSH anahtarım var ve GnuPG'yi yeni bir anahtarlıkla kullanmaya başlamak istiyorum. Ancak, anahtarımı uzun yıllar boyunca kullandığım göz önüne alındığında, yine de GPG'de ana / birincil anahtar olarak bu anahtarı kullanmak istiyorum. Bu talimatları kullanarak anahtarı içe aktarmayı denedim .

Ama sonunda bir "alt anahtar" olarak kabul edilen şeyle karşılaşıyorum. Ayrıca, standart bir GPG anahtarı oluşturmadan içe aktarmaya çalışırsam, GPG bu alt anahtarı bile görmez. (Alt anahtarın önce ana anahtarla imzalanması gerektiğini varsayıyorum.)

Bu anahtarı secring.gpg içinde ana anahtar olarak nasıl kullanabilirim?


" _Primary_ private key " ne demek ?
MadHatter

Yanıtlar:


16

Basit cevap: Yapmazsınız.

Her iki protokol de RSA anahtar çiftlerini kullanabilmesine rağmen SSH anahtarları ve GnuPG (aslında OpenPGP) anahtarları tamamen farklıdır.

Ayrıca, neden bunu yapmak istesin? PGP anahtarınızı oluşturmak için aynı anahtar malzemeyi kullansanız bile, anahtarınızı bir PGP anahtarı olarak dağıtmanız gerekir. SSH genel anahtarınızı yazıştığınız kişilere dağıtmamış olabilirsiniz, bu nedenle anahtar dağıtım açısından bir fark yoktur: sizden genel bir anahtar almaları gerekir. Ve SSH genel anahtarınızı başkalarına dağıtmış olsanız bile, kolay olabilecek veya olmayabilecek OpenPGP uygulamalarına aktarabilmek için bazı ek adımlar atmaları gerekir.

As kasperd oldukça RIGHLY işaret, (özellikle) bir imza yorumlamak tek yolu var olmalıdır. Hem PGP hem de SSH için aynı anahtarı kullanacak olsaydınız, biri sizi özel hazırlanmış bir mesajı (belirli imza sistemi saldırılarında varsayılan bir özelliktir) imzalamanız için kandırabilirse, her iki sistem de ayrı olarak güvenli olsa bile böyle bir mesajı bir sistemde bir anlamı, diğerinde farklı bir anlamı olacak şekilde yapmak mümkün olabilir . Bu, kendi içinde bir güvenlik açığı olacaktır. (Sömürülebilir mi? Kim bilir. Ama niye şansını denesin?)

Hem PGP hem de SSH anahtar çiftleri, geçici (mesaj ve oturum) simetrik anahtarları korumak ve uzak bir tarafın gerçekliğini doğrulamak için kullanılan uzun vadeli anahtarlardır. Bu, PGP veya SSH özel anahtarını bir saldırgan için karşılık gelen simetrik anahtardan çok daha yüksek bir değer hedefi yapar. Her ikisi için de aynı anahtar malzemeyi kullanırsanız ve bir saldırgan bunu fark ederse, bu anahtar çiftine başarılı bir saldırının değerini artırır .

Her iki protokole da ayrıntılı olarak bakmadan, aynı anahtar malzemenin her ikisinde de kullanıldığını tanımanın büyük olasılıkla önemsiz olacağını düşünüyorum, çünkü ortak anahtar temelde açık bir şekilde iletilir.

Sadece yeni bir PGP anahtarı oluşturun. İsterseniz, RSA ve SSH anahtarınızla aynı uzunlukta olmasını sağlayın. (Hiçbir aklı başında kişi parmak izini doğrulamaktan çok daha yakından bakmayacaktır.) Ardından ortak anahtarı, karşılık vermek istediğiniz kişilere bir PGP anahtarı olarak dağıtın. Sisteminizin rasgele entropi havuzundan az miktarda entropi pahasına olan herkes için çok daha kolay ve muhtemelen daha güvenli olacaktır.


Gizli anahtarlığınızda birden fazla anahtar varsa ve hangisinin varsayılan olarak kullanılması gerektiğini belirtmek istiyorsanız , ~ / .gnupg / gnupg.conf dosyasında default-keyve muhtemelen default-recipient{,-self}yönergeleri kullanın.


1
Bu yanıta katılıyorum. Ancak aynı anahtar malzemeyi kullanmamak için bir neden daha var. Güvenlik nedeniyle bir imzayı yorumlamanın tek bir yolu olmalıdır. Aynı imza iki farklı şekilde yorumlanabilir mi, bu bir güvenlik açığıdır. Hem ssh hem de gpg kendileri tarafından güvenli olsa bile, bir düşman biriyle bir mesaj imzalamanız için sizi kandırabilir ve ardından başka bir anlama sahip olabileceği diğer programa imza atabilir.
kasperd

@kasperd İyi bir nokta. Cevabı değiştirdim; şimdi nasıl hissediyorsun?
CVn

Kulağa hoş geliyor.
kasperd

1
Bu cevabın tamamen doğru olmadığını düşünüyorum: monkeysphere ile mevcut OpenSSH anahtarlarını kişisel OpenPGP anahtarınızda yalnızca kimlik doğrulama alt anahtarları olarak kullanmak isteyebileceğiniz bir kullanıcı tabanı var. En azından ben bu şekilde kullanmak istiyorum.
user134450

Bu anahtarlar hiç de farklı değil; meta verileri.
Foo

5

Sen aracıyla bir OpenPGP anahtarına bir SSH-Key dönüştürebilirsiniz pem2openpgpgelen monkeysphere projesi . Bu anahtar daha sonra gnupg tarafından normal bir özel / ortak anahtar çifti olarak içe aktarılabilir. Diğer yanıtın belirttiği gibi, bu genellikle iyi bir fikir değildir, çünkü ssh'ın sertifika kavramı yoktur, bu nedenle mevcut bir anahtara daha önce sahip olamadığı bir yeteneği etkili bir şekilde eklersiniz. Bu genellikle kriptografide hareketsizdir.

Yine de ssh anahtarlarımdan biriyle yaptım ama anahtar çiftini diğer OpenPGP anahtarıma yalnızca bir yetenek bayrağı olan bir alt anahtar olarak ekledim: kimlik doğrulama. Bu bayrak, anahtar çifti ile herhangi bir şeyi imzalamak veya şifrelemek istemediğiniz ( gnupg için anlam --encryptve --signseçenekler) ancak yine de OpenSSH ve gnupg-agent ile kimlik doğrulaması için anahtar kutunuzda olmasını istediğiniz durumlar içindir.

Daha fazla ayrıntı için maymun küresi belgelerine bakın.


2

Normal bir PKCS formatındaki anahtarı gpg'ye aktarmak için dönüştürmek için iyi nedenler olabilir.

Örneğin, akıllı bir karta koymak istiyorsanız. Gpg'nin kart bilgileri ve kart düzenleme komutları ile sağladığı tesisler bu amaç için çok faydalıdır, neden bir araç olarak kullanmıyorsunuz? Birinin gelmesi gereken tek engel ... tam olarak: anahtarı standart PKCS # 8 biçiminden (veya "ham" RSA PKCS # 1 biçiminden) daha fazla işlem için gpg anahtar deposuna aktarmak.

Bu yüzden - onaylanan cevaba itirazımı not et! :)

Bu tür sorulara gerçekten yardımcı bir cevap burada bulunur: /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg


1

Bunu Ubuntu 16.04 veya Windows WSL'de kullanın.

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

Kartı içe aktar. Windows veya Linux üzerinde yapılabilir.

gpg --import key.gpg

Karta taşı

Anahtar imza tanımlayıcısını bulun.

gpg --list-key

Kimlik doğrulama anahtarını karta taşı

gpg --edit-key FFFFFFFFFFF
keytocard

Kimlik doğrulama yuvası için bir numara seçin.

Burada işiniz bitti.

Kart kullanıyorsanız, anahtarı gpg anahtarlığından silmeyi unutmayın. Yukarıdaki anahtar tanımlayıcıyı kullanın.

gpg --delete-secret-key FFFFFFFFFFF

Çeşitli

Gerekli değildir ancak metin tabanlı pgp formatında bir anahtar almak için yararlı olabilir.

gpg -a --export FFFFFF > key.asc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.