Creazione di una chiave privata con OpenSSL e crittografia con AES GCM

3

Il mio obiettivo era creare una chiave privata e crittografarla con una cifratura strong. Tale chiave verrebbe utilizzata come certificato di origine per un'autorità di certificazione interna.

Tuttavia, anche se openssl supporta AES 128 GCM , non posso generare e crittografare una chiave utilizzando questo algoritmo di crittografia. OpenSSL riporta error writing key . Entrambi i GCM AES 128/256 hanno fallito, tuttavia AES 128 CBC ha funzionato. Che cosa sto facendo male? Ho bisogno di parametri extra quando uso GCM?

Ecco il comando:

$ openssl genpkey -out ca.key.pem -aes-128-gcm -algorithm rsa -pkeyopt rsa_keygen_bits:4096

L'output è questo:

.........................................................................+++
............................+++
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Error writing key
:error:23077006:PKCS12 routines:PKCS12_pbe_crypt:EVP lib:p12_decr.c:96:
:error:2306C067:PKCS12 routines:PKCS12_item_i2d_encrypt:encrypt error:p12_decr.c:175:
:error:2307D067:PKCS12 routines:PKCS8_encrypt:encrypt error:p12_p8e.c:88:

Nota: la maggior parte delle risorse online sono obsolete (nota a piè di pagina 1) e utilizzano i flag sostituiti di genrsa o -nodes / -des. Quindi uso le risorse online come base, oltre alle pagine man (anche piuttosto obsolete) di openssl e al flag "-help" dei vari comandi openssl per creare il comando sopra, IMHO aggiornato,

Nel comando precedente, ho provato a sostituire -aes-128-gcm con:

-aes-256-gcm
-aes-128-xts
-aes-256-xts

E tutto fallito. Le XTS non sono riuscite con il seguente errore:

:error:0D0A706C:asn1 encoding routines:PKCS5_pbe2_set_iv:cipher has no object identifier:p5_pbev2.c:103:
:error:2307D00D:PKCS12 routines:PKCS8_encrypt:ASN1 lib:p12_p8e.c:79:

Utilizzo:

-aes-128-cbc (like in an example in the man page from genpkey)
-aes128
-aes256

Tutto ha funzionato bene.

Stranamente tutti i codici sopra citati sono supportati dalla versione di openssl che sto usando.

$ openssl enc -help 2>&1 | grep aes | egrep "128|256"
-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1
-aes-128-cfb8              -aes-128-ctr               -aes-128-ecb
-aes-128-gcm               -aes-128-ofb               -aes-128-xts
-aes-192-gcm               -aes-192-ofb               -aes-256-cbc
-aes-256-cfb               -aes-256-cfb1              -aes-256-cfb8
-aes-256-ctr               -aes-256-ecb               -aes-256-gcm
-aes-256-ofb               -aes-256-xts               -aes128
-aes192                    -aes256

Nota: testato su Ubuntu 14.04.2, Debian 7.8 e CentOS 7. Tutti hanno mostrato lo stesso comportamento.

nota a piè di pagina 1 : se cerchi google " openssl genera il certificato radice autofirmato ", nessuno dei 5 primi risultati ti dice di crittografare il tuo certificato privato root con qualcosa di meglio del triplo DES!?! Un link dei 5 primi collegamenti consiglia per 4096 bit, mentre l'altro fornisce 2048 o 1024!?! La maggior parte non fornisce alcun indicatore di cifratura, quindi la chiave non è crittografata. In realtà, solo il 7th link fa un lavoro decente nello spiegare cosa e come farlo.

Aggiornamento 20161218 : testato di nuovo senza successo su Ubuntu 16.04 LTS con openssl 1.0.2g.

    
posta Huygens 09.03.2015 - 17:03
fonte

1 risposta

2

Risposta aggiornata:

Secondo: link il supporto gcm è attualmente interrotto v1.0.1f (ciò che Ubuntu attualmente usa). Ci dovrebbero essere patch per la versione v1.0.1.g che quindi dovrebbe avere una modalità GCM praticabile. Tuttavia, attualmente mi limiterei a utilizzare la modalità CBC, poiché per il key wrapping è completamente supportato da openssl genrsa e openssl genpkey

Old Answer:

According to the docu: https://www.openssl.org/docs/apps/ciphers.html

AESGCM AES in Galois Counter Mode (GCM): these ciphersuites are only supported in TLS v1.2.

The changelog of openssl for ubuntu states for a prior version: openssl (1.0.1e-4ubuntu2) trusty; urgency=low * Re-enable full TLSv1.2 support (LP: #1257877) - debian/patches/tls12_workarounds.patch: disable patch to re-enable full TLSv1.2 support. Most problematic sites have been fixed now, and we really want proper TLSv1.2 support in an LTS. Currently I have installed 1.0.1f-1ubuntu9.1, so at least in theory it should work. But I can assure you, it does not. Maybe the modes are still considered broken, but I'm just assuming.

    
risposta data 09.03.2015 - 20:27
fonte

Leggi altre domande sui tag