Come importare una chiave SSA RSA in GPG come chiave privata _primary_?


16

Al momento ho una chiave SSH che ho usato per un po 'e vorrei iniziare a usare GnuPG con un nuovo portachiavi. Tuttavia, dato che ho usato la mia chiave per anni, vorrei ancora usare quella chiave in GPG come chiave principale / primaria. Ho provato a importare la chiave tramite queste istruzioni .

Ma finisco con quella che è considerata una "sottochiave". Inoltre, se provo a importarlo senza creare una chiave GPG standard, GPG non vede nemmeno questa sottochiave. (Suppongo che la sottochiave debba prima essere firmata dalla chiave principale.)

Come posso usare questa chiave come chiave principale in secring.gpg?


In che senso intendi " _primary_ chiave privata "?
MadHatter,

Risposte:


16

La semplice risposta è: non lo fai.

Le chiavi SSH e le chiavi GnuPG (in realtà OpenPGP) sono completamente diverse, anche se entrambi i protocolli possono utilizzare coppie di chiavi RSA.

E inoltre, perché dovresti farlo? Anche se dovessi utilizzare lo stesso materiale chiave per creare la tua chiave PGP, dovrai comunque distribuire la tua chiave come chiave PGP. Probabilmente non hai distribuito la tua chiave pubblica SSH alle persone con cui ti colleghi, quindi da un punto di vista della distribuzione delle chiavi non c'è differenza: dovranno ricevere una chiave pubblica da te. E anche se hai distribuito la tua chiave pubblica SSH ad altre persone, dovrebbero prendere alcune misure aggiuntive per poterle importare nella loro implementazione OpenPGP, il che potrebbe essere o meno facile.

Come ha sottolineato abbastanza bene Kasperd, ci deve essere solo un modo per interpretare (in particolare) una firma. Se dovessi usare la stessa chiave sia per PGP che per SSH, se qualcuno potrebbe indurti a firmare un messaggio appositamente predisposto (che è una capacità presunta in alcuni attacchi del sistema di firma) in uno, allora anche se entrambi i sistemi sono sicuri in modo isolato potrebbe essere possibile elaborare un tale messaggio in un modo che abbia un significato in uno dei sistemi, ma un significato diverso nell'altro. Questo, di per sé, sarebbe una vulnerabilità. (Sfruttabile? Chi lo sa. Ma perché rischiare?)

Entrambe le coppie di chiavi PGP e SSH sono chiavi a lungo termine, che vengono utilizzate per proteggere chiavi simmetriche effimere (messaggi e sessioni), nonché per verificare l'autenticità di una parte remota. Ciò rende la chiave privata PGP o SSH un target di valore molto più elevato per un attaccante rispetto alla corrispondente chiave simmetrica. Se usi lo stesso materiale chiave per entrambi e un attaccante è in grado di rendersene conto, aumenta solo il valore di un attacco riuscito su quella coppia di chiavi.

Senza aver esaminato in dettaglio nessuno dei due protocolli, immagino che riconoscere che lo stesso materiale chiave viene utilizzato in entrambi sarebbe probabilmente piuttosto banale, dal momento che la chiave pubblica viene sostanzialmente trasmessa in chiaro.

Basta generare una nuova chiave PGP. Se vuoi, allora rendilo RSA e della stessa lunghezza della tua chiave SSH. (Nessuna persona sana la guarderà molto più da vicino che verificare comunque l'impronta digitale.) Quindi distribuire la chiave pubblica alle persone con cui si desidera corrispondere, come chiave PGP. Sarà molto più facile per tutti, e molto probabilmente più sicuro, al costo di una piccola quantità di entropia dal pool di entropie casuali del tuo sistema che dovrebbe comunque essere rapidamente reintegrato.


Se hai più chiavi sul tuo portachiavi segreto e vuoi specificare quale dovrebbe essere usato di default, usa le direttive default-keye possibilmente default-recipient{,-self}nel tuo ~ / .gnupg / gnupg.conf.


1
Sono d'accordo con questa risposta. Tuttavia, c'è un motivo in più per non utilizzare lo stesso materiale chiave. Per motivi di sicurezza deve esserci un solo modo per interpretare una firma. La stessa firma potrebbe essere interpretata in due modi diversi, sarebbe una vulnerabilità. Anche se sia ssh che gpg sono sicuri da soli, un avversario potrebbe indurti a firmare un messaggio con uno e quindi portare la firma all'altro programma, dove potrebbe avere un significato diverso.
Kasperd,

@kasperd Ottimo punto. Ho modificato la risposta; come ti senti adesso?
un CVn il

Suona bene.
Kasperd,

1
Penso che questa risposta non sia del tutto precisa: con monkeysphere esiste un caso d'uso in cui potresti desiderare chiavi OpenSSH esistenti come sottochiavi di sola autenticazione nella tua chiave OpenPGP personale. Almeno mi piacerebbe usarlo in questo modo.
user134450

Questi tasti non sono affatto diversi; i loro metadati sono.
pippo

5

È possibile convertire una chiave SSH in una chiave OpenPGP con lo strumento pem2openpgpdel progetto monkeysphere . Questa chiave può quindi essere importata da gnupg come una normale coppia di chiavi privata / pubblica. Come menziona l'altra risposta, di solito questa non è una buona idea perché ssh non ha un concetto di certificati, quindi stai effettivamente aggiungendo una capacità a una chiave esistente che non avrebbe potuto avere prima. Questo è generalmente un no-go in crittografia.

L'ho fatto comunque con una delle mie chiavi ssh ma ho aggiunto la coppia di chiavi all'altra mia chiave OpenPGP come sottochiave che ha un solo flag di capacità: autenticazione. Questo flag è pensato per situazioni come questa, in cui non si desidera firmare o crittografare nulla con una coppia di chiavi (significato --encrypte --signopzioni per gnupg) ma si desidera averlo nella propria keybox per l'autenticazione con OpenSSH e gnupg-agent.

Per maggiori dettagli consultare la documentazione di monkeysphere.


2

Ci possono essere buoni motivi per convertire una normale chiave in formato PKCS per l'importazione in gpg.

Ad esempio, se si desidera inserirlo su una smart card. Le funzionalità che gpg fornisce con i suoi comandi di informazioni sulle carte e di modifica delle carte sono molto utili a questo scopo, quindi perché non usarlo come strumento? L'unico ostacolo che bisogna superare è ... esattamente: l'importazione della chiave dal formato PKCS # 8 standard (o il formato "raw" RSA PKCS # 1) nell'archivio chiavi gpg per l'ulteriore elaborazione.

Quindi, nota la mia obiezione alla risposta approvata! :)

Una risposta davvero utile a questo tipo di domanda è disponibile qui: /unix/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into -gpg


1

Usalo su Ubuntu 16.04 o Windows WSL.

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

Carta di importazione. Può essere fatto su Windows o Linux.

gpg --import key.gpg

Passa alla carta

Trova l'identificatore della firma chiave.

gpg --list-key

Sposta la chiave di autenticazione sulla scheda

gpg --edit-key FFFFFFFFFFF
keytocard

Seleziona un numero per lo slot di autenticazione.

Hai finito qui.

Ricorda di eliminare la chiave dal portachiavi gpg se stai usando una carta. Utilizzare l'identificatore chiave dall'alto.

gpg --delete-secret-key FFFFFFFFFFF

Varie

Non necessario ma può essere utile per ottenere una chiave in formato pgp basato su testo.

gpg -a --export FFFFFF > key.asc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.