6 Manuale – Gestione Chiavi Pubbliche

6.1 Il comando dsa

Nome

Elaborazione delle chiavi DSA.

Sintassi

Openssl dsa [openssl dsa [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-pubin] [-pubout]

Descrizione

I comandi dsa elaborano le chiavi DSA. Essi possono essere convertiti tra vari formati e i suoi componenti vengono stampati. N.B. questi comandi usano il tradizionale formato SSLeay compatibile per cifratura a chiave privata: applicazioni più nuove usano il più sicuro formato PKCS#8 usando il comando pkcs8.

Opzioni del Comando

  • -inform DER|PEM specifica il formato di input. L’opzione DER con una chiave privata usa un formato codificato ASN1 DER di una ASN.1 SEQUENCE consistente di un valore dei valori di versione (attualmante zero), p, q, g, le componenti della chiave pubblica e privata rispettivamente come ASN.1 INTEGERs. Quando è usata con una chiave pubblica essa usa una struttura SubjectPublicKeyInfo: è un errore se la chiave non è DSA. Il formato PEM è il formato di default: esso consiste del formato DER codificato base64 con addizionali linee di intestazione e di fine. Nel caso della chiave privata è accettato anche il formato PKCS#8.
  • -outform DER|PEM specifica il formato di output, l’opzione ha lo stesso significato dell’opzione –inform.
  • -in filename specifica il nome del file di input da cui leggere la chiave oppure lo standard input se questa opzione non è specificata. Se la chiave è cifrata viene richiesta una pass phrase.
  • -passin arg il file sorgente delle password di input. Per maggiori informazioni circa il formato di arg, vedi la sezione PASS PHRASE ARGUMENTS presenti in openssl.
  • -out filename specifica il nome del file di output in cui scrivere la chiave oppure lo standard output se questa opzione non è specificata. Se oqualche opzione di cifratura è settata verrà richiesta una pass phrase. Il nome del file di input e di output non dovrebbero essere uguali.
  • -passout arg il file sorgente delle password di output. Per maggiori informazioni circa il formato di arg, vedi la sezione PASS PHRASE ARGUMENTS presenti in openssl.
  • -des|-des3|-idea Queste opzioni cifrano la chiave privata con i cifrari DES, DES triplo o IDEA rispattivamente prima di mandarlo in output.Viene richiesta una pass phrase. Se nessuna di queste opzioni è specificata la chiave è scritta nel testo in chiaro. Questo significa che usando l’utility dsa per leggere una chiave cifrata, con nssuna opzione di cifratura può essere usato per rimuovere la pass phrase di una chiave, oppure settando le opzioni di cifratura essa può essere usata per aggiungere o cambiare la pass phrase. Queste opzioni possono solo essere usate con il formato PEM del file di output.
  • -text stampa i componenti e i parametri della chiave pubblica e privata.
  • -noout previene l’output della versione codificata della chiave.
  • -modulus stampa i valori e le componenti della chiave pubblica.
  • -pubin di default la chiave privata viene letta dal file di input: con questa opzione invece viene letta una chiave pubblica.
  • -pubout di default è emessa la chiave privata. Con queste opzione invece viene emessa la chiave pubblica. Questa opzione viene automaticamente settata se l’input è una chiave pubblica.
  • Note

    Il formato PEM della chiave privata usa le seguenti linee di intestazione e di fine:

    Il formato PEM della chiave pubblica usa le seguenti linee di intestazione e di fine:

    Esempi

    1) Rimuovere la pass phrase sulla chiave privata DSA:

    2) Cifrare una chiave privata usando il DES triplo:

    3) Convertire la chiave privata dal formato PEM al formato DER:

    4) Stampare le componenti della chiave privata sullo standard output:

    5) Emettere la parte pubblica della chiave privata:

    Vedi Anche

    dsaparam(1), gendsa(1), rsa(1), genrsa(1).

    6.2 Il comando dsaparam

    Nome

    dsparam – generazione e manipolazione di parametri DSA.

    Sintassi

    openssl dsaparam [-inform DER|PEM][-outform DER|PEM][-in filename][-out filename][-noout][-text][-C] [-rand file(s)][-genkey][numbits]

    Descrizione

    Questi comandi sono usati per la generazione o la manipolazione di file di parametri DSA.

    Opzioni del Comando

  • -inform DER|PEM specifica il formato di input. L’opzione DER usa un formato codificato ASN1 DER compatibile con RFC2459 (PKIX) DSS-Parms che è una SEQUENCE consistente rispettivamente di p, q, g. Il formato PEM è il formato di default: esso consiste del formato DER codificato base64 con addizionali linee di intestazone e di fine.
  • -outform DER|PEM specifica il formato di output, l’opzione ha lo stesso significato dell’opzione –inform.
  • -in filename specifica il nome del file di input da cui leggere i parametri oppure lo standard input se questa opzione non è specificata. Se il parametro numbits è incluso allora questa opzione sarà ignorata.
  • -out filename specifica il nome del file di output in cui scrivere i parametri. Lo standard output è usato se questa opzione non è specificata. Il nome del file di input e di output non dovrebbero essere uguali.
  • -noout impedisce l’output dei parametri nella versione codificata.
  • -text stampa i parametri del DSA in modo leggibile.
  • -C converte i parametri in una codice C. I parametri possono essere caricati chiamando la funzione get-dsaXXX().
  • -genkey genera una chiave DSA usando parametri specificati
  • -rand file(s) uno o più file contenenti dati casuali usati per inizializzare il generatore di numeri casuali, oppure un EGD socket (vedi RAND_edg(3)). File multipli possono essere specificati separati da un carattere dipendente dal SO. Il separatore è ‘;’ per MS-WINDOWS ‘,’ per OpenVMS e ‘:’ per tutti gli altri.
  • numbits specifica che un insieme di parametri dovrebbe essere generato di dimensione numbits. Essa deve essere l’ultima opzione. Se questa opzione è specificata allora il file di input viene ignorato.
  • Note

    Il formato PEM dei parametri DSA usa le seguenti linee di intestazione e di fine:

    La generazione di parametri DSA è un processo lento e come risultato lo stesso insieme di parametri DSA è spesso usato per generare diverse differenti chiavi.

    6.3 Il comando gendsa

    Nome

    gendsa – genera una chiave privata DSA da un insieme di parametri

    Sintassi

    openssl gendsa [-out nome_file] [-des] [-des3] [-idea] [-rand file(s)] [paramfile]

    Descrizione

    Il comando gendsa genera una chiave privata DSA da un file di parametri DSA (che sarà tipicamente generato dal comando OpenSSL dsaparam).

    Opzioni del Comando

  • -des|-des3|-idea Queste opzioni cifrano la chiave privata con i cifrari DES, DES TRIPLO o IDEA rispettivamente prima di inviarli in output. Viene richiesta una frase segreta. Se non viene specificata alcuna di queste opzioni, non viene usata nessuna cifratura.
  • -rand file(s) Uno o più files usati per inizializzare il generatore di numeri casuali, o il socket EGD (vedi RAND_egd(3)). Files multipli possono essere specificati separati da caratteri dipendenti dal sistema operativo. Il separatore è ‘;’ per MS-Windows, ‘,’ per OpenVMS e ‘:’ per tutti gli altri.
  • paramfile Questa opzione specifica il file dei parametri DSA da usare. I parametri in tale file determinano la dimensione della chiave privata. I parametri DSA possono essere generati ed esaminati usando il comando openssl dsaparam.
  • Note

    La generazione della chiave DSA è poco più di una generazione di numeri casuali, per cui essa è molto più veloce della generazione, per esempio, della chiave RSA.

    Vedi Anche

    dsaparam(1), dsa(1), genrsa(1), rsa(1).

    6.4 Il comando genrsa

    Nome

    genrsa – genera una chiave privata RSA

    Sintassi

    openssl genrsa [-out nome_file] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [numbits]

    Descrizione

    Il comando genrsa genera una chiave privata RSA

    Opzioni del Comando

  • -out nome_file Il nome del file di output. Se questo argomento non viene specificato viene utilizzato lo standard output.
  • -passout arg Il file sorgente delle password per l’output. Per maggiori informazioni sul formato di arg vedere la sezione PASSPHRASE ARGUMENTS in openssl(1).
  • -des|-des3|-idea Queste opzioni cifrano la chiave privata con i cifrari DES, DES TRIPLO, o IDEA rispettivamente prima di mandarla in output. Se nessuna di queste opzioni viene specificata non viene usata alcuna cifratura. Se viene usata una cifratura, viene richiesta una frase segreta se essa non è già stata fornita tramite l’argomento –passout.
  • -F4|-3 L’esponente pubblico da usare, o 65537 o 3. Per default viene usato 65537.
  • -rand file(s) Uno o più files usati per inizializzare il generatore di numeri casuali, o il socket EGD (vedi RAND_egd(3)). Files multipli possono essere specificati separati da caratteri dipendenti dal sistema operativo. Il separatore è ‘;’ per MS-Windows, ‘,’ per OpenVMS e ‘:’ per tutti gli altri.
  • numbits La dimensione in bits della chiave privata da generare. Queste deve essere sempre l’ultima opzione fornita. Per default, la dimensione è 512 bits.
  • Note

    La generazione della chiave privata RSA coinvolge sostanzialmente la generazione di due numeri primi. Quando è in corso la generazione della chiave privata, diversi simboli vengono inviati in output per indicare i progressi della generazione. Un ‘.’ rappresenta ogni numero che ha passato un test iniziale di validità, un ‘+’ indica un numero che ha passato un singolo round del test di primalità di Miller-Rabin. Un ‘newline’ indica un numero che ha passato tutti i test di primalità (il numero attuale dipende dalla dimensione della chiave).

    Poiché la generazione di una chiave è un processo casuale, il tempo richiesto può variare di parecchio.

    Bugs

    Un problema dell’algoritmo di generazione dei primi è che esso non può generare numeri primi piccoli. Pertanto, il numero di bits non deve essere inferiore a 64. Per chiavi private tipiche, questo non accade dato che per ragioni di sicurezza vengono richiesti molti più bits (tipicamente 1024).

    Vedi Anche

    gendsa(1)

    6.5 Il comando rsa

    Nome

    rsa – strumento per processare la chiave RSA.

    Sintassi

    openssl rsa[-inform] [-outform |PEM|NET|DER] [-in filename] [-passin arg] [-out filename] [passout arg] [-sgckey] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout]

    Descrizione

    Il comando rsa processa le chiavi RSA. Esse possono essere convertite in varie forme e le loro componenti possone essere stampate. Nota che questo comando usa il formato tradizionale compatibile SSLeay per la cifratura della chiave privata: applicazioni più nuove dovrebbero usare il formato più sicuro PKCS#8 che usa l’utility pkcs8.

    Opzioni del Comando

  • -inform DER|NET|PEM Specifica il formato di input. L’opzione DER usa una forma di codifica ASN1 DER compatibile con il formato PKCS#1 RSAPrivateKey oppure con il formato SubjectPublicKeyInfo. Il formato PEM è il formato di default: esso consiste di un formato DER di codifica base64 con in più linee di intestazione e di fine. In input le chiavi private in formato PCKS#8 sono accettati. La forma NET è un formato descritto nella sezione NOTES.
  • -outform DER|NET|PEM:specifica il formato di output,le opzioni hanno le stesso significato delle opzioni di –inform.
  • -in filename: specifica il nome del file di input da cui leggere una chiave oppure lo standard input se questa opzione non è specificata. Se la chiave è cifrata sarà richiesta una pass phrase.
  • -passin arg: il sorgente delle password nel file di input. Per maggiori informazioni circa il formato di arg vedere la sezione PASS PHRASE ARGUMENTS nell’openssl(1).
  • -out filename: specifica il nome del file di output per scrivere una chiave oppure dallo standard output se questa opzione non è specificata. Se le opzioni di cifratura sono settate allora sarà richiesta una pass phrase. Il nome del file di output non dovrebbe essere lo stesso del file di input.
  • -passout password: sorgente delle password del file di output. Per maggiori informazioni circa il formato di arg vedere la sezione PASS PHRASE ARGUMENTS di openssl(1).
  • -sgckey: usa l'algoritmo NET modificato con alcune versioni di Microsoft IIS e chiavi SGC.
  • -des|-des3|-idea: queste opzioni cifrano la chiave private con il DES, DES triplo, o con il cifrario IDEA rispettivamente prima di mandarla in output. Una pass phrase è subito visualizzata.Se nessuna di queste opzioni è specificata la chiave è scritta nel testo in chiaro. Ciò significa che, usando l'utility rsa per leggere una chiave cifrata senza nessuna opzione di cifratura, essa potrebbe essere usata per rimuovere la pass phrase da una chiave, oppure settando l'opzione di cifratura essa può essere usata per aggiungere o cambiare la pass phrase. Queste opzioni possono essere usate solo con il formato PEM nei files di output.
  • -text: stampa le varie componenti della chiave pubblica o privata nel testo chiaro in aggiunta alla versione cifrata.
  • -noout: questa opzione impedisce l’output della versione codificata della chiave.
  • -modulus: questa opzione stampa il valore dei moduli della chiave.
  • -check: questa opzione verifica la consistenza di una chiave privata RSA.
  • -pubin: per default una chiave privata è letta dal file di input: con queste opzioni una chiave pubblica è invece letta.
  • -pubout: per default una chiave privata è visualizzata in output: con questa opzione una chiave pubblica invece sarà visualizzata in output. Questa opzione è settata automaticamente se l'input è una chiave pubblica.
  • Note

    Il formato PEM della chiave privata usa le linee di intestazione e di fine:

    Il formato PEM per la chiave pubblica usa le seguenti linee di intestazione e di fine:

    Il formato NET è un formato compatibile con il piu vecchio server Netscape e Microsoft IIS. Il file di chiavi usa l’RC4 unsalted per la sua cifratura. Esso non è molto sicuro per cui dovrebbe essere usato solo se necessario.

    Alcune delle versioni più recenti di IIS hanno dati addizionali nei file di chiavi esportati. Per usarle insieme alle utility guarda il file con un editor binario e contralla la stringa private-key successivamente tracciare la sequenza di byte 0x30, 0x82 (questa è un ANS1 SEQUENCE). A questo punto copia tutti i dati in un altro file e usa come input l’utility rsa con l’opzione –inform NET. Se si ha un errore dopo aver inserito la password provare a specificare l’opzione –sgckey.

    Esempi

    1) Rimuovere la pass phrase in una chiave privata RSA:

    2) Cifrare una chiave privata usando il DES triplo:

    3) Convertire una chiave privata dal formato PEM al DER:

    4) Stampare le componenti di una chiave privata sullo standard output:

    5) Produrre la parte pubblica di una chiave privata:

    Bugs

    Gli argomenti della password del commando di linea non lavorano correntemente con il formato NET. Ci dovrebbe essere una opzione che automaticamente tratta i key files, senza averli compilati manualmente.

    Vedi anche

    pkcs8(1), dsa(1), genrsa(1), gendsa(1)

    6.6 Il comando rsautl

    Nome

    rsautl – utility RSA

    Sintassi

    openssl rsautl [-in file][-out file][-inkey file][pubin][-certin][-sign][-verify][-encrypt] [-decrypt][-pkcs][-ssl][-raw][-hexdump][-asn1parse]

    Descrizione

    Il comando rsautl potrebbe essere usato per firmare, verificare, cifrare e decifrare dati usando l’algoritmo RSA.

    Opzioni del Comando

  • -in filename:specifica il nome del file di input da cui leggere dati oppure lo standard input se questa opzione non è specificata.
  • -out filename:specifica il filename di output da cui scrivere i dati oppure lo standard output per default.
  • -inkey file: il file della chiave di input, per default dovrebbe essere una chiave privata RSA.
  • -pubin: il file di input è una chiave pubblica RSA.
  • -certin: l’input è un certificato contenente una chiave pubblica RSA.
  • -sign: firma i dati di input e da in output il risultato firmato. Questo richiede una private key RSA.
  • -verify: verifica i dati di input e da in output i dati recuperati.
  • -encrypt: cifra i dati di input usando una chiave pubblica RSA.
  • -decrypt: decifra i dati di input usando una chiave pubblica RSA.
  • -pks, -oaep, -ssl, -raw: il padding da usare: PKCS#1 v1.5( per default), PKCS#1 OAEP, speciale padding usato in SSL v2 compatibile con l’Handshake, o nessun padding, rispettivamente. Per le firme, solo le opzioni –pkcs e –raw possono essere usate.
  • -hexdump: i dati di output sono scaricati in esadecimale.
  • -asn1parse: i dati di output asn1parse, è utile quando è combinato con l’opzione –verify.
  • Note

    Poichè rsautl usa l’algoritmo RSA direttamente può solo essere usato per firmare o verificare piccoli pezzi di dati.

    Esempi

    1) Firmare alcuni dati usando una chiave privata:

    2) Recuperare i dati firmati:

    3) Esaminare i dati firmati:

    Questo fornisce un output del tipo seguente:

    0000

    00

    01

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0010

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0020

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0030

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0040

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0050

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0060

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    -

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ff

    ....

    ....

    0070

    ff

    ff

    ff

    ff

    00

    68

    65

    6c

    -

    6c

    6f

    20

    77

    6f

    72

    6c

    64

    ....

    ....

    hello world

    Il blocco formattato PKCS#1 è evidente da questo. Se questo è stato fatto usando la cifratura e la decifratura il blocco potrebbe essere di tipo 2 (il secondo byte) e padding casuale dei dati visibili invece dei bytes 0xff.
    E' possibile analizzare la firma dei certficati usando questa utility insieme all’opzione asn1parse.

    4) Esaminare la firma:

    Si ottiene una sequenza del tipo seguente:

    0:

    d=0

    hl=4

    l=742

    cons:SEQUENZA

    4:

    d=1

    hl=4

    l=591

    cons:SEQUENZA

    8:

    d=2

    hl=2

    l=3

    cons:cont[0]

    10:

    d=3

    hl=2

    l=1

    prim:INTERI

    13:

    d=2

    hl=2

    l=1

    prim:INTERI

    16:

    d=2

    hl=2

    l=13

    cons:SEQUENZA

    18:

    d=3

    hl=2

    l=9

    prim:OGGETTO

    md5ConCifraturaRSA

    29:

    d=3

    hl=2

    l=0

    prim:NULL

    31:

    d=2

    hl=2

    l=92

    cons:SEQUENZA

    33:

    d=3

    hl=2

    l=11

    cons:SET

    35:

    d=4

    hl=2

    l=9

    cons:SEQUENZA

    37:

    d=5

    hl=2

    l=3

    prim:OGGETTO

    countryName

    45:

    d=5

    hl=2

    l=2

    prim:PRINTABLESTRING: AU

    ...

    ...

    ...

    ...

    ...

    599:

    d=1

    hl=2

    l=13

    cons:SEQUENZA

    601:

    d=2

    hl=2

    l=9

    prim:OGGETTO

    md:md5WithRSAEncryption

    612:

    d=2

    hl=2

    l=0

    prim:NULL

    614:

    d=1

    hl=3

    l=129

    prim:BIT STRING

    5) Il BIT STRING finale contiene l’attuale firma. Esso può essere estratto con:

    6) La chiave pubblica del certificato può essere estratto con:

    7) La firma può essere analizzata con:

    0:

    d=0

    hl=2

    l=32

    cons:SEQUENZA

    2:

    d=1

    hl=2

    l=12

    cons:SEQUENZA

    4:

    d=2

    hl=2

    l=8

    prim:OGGETTO

    :md5

    14:

    d=2

    hl=2

    l=0

    prim:NULL

    16:

    d=1

    hl=2

    l=16

    prim:OCTET STRING

    0000

    f3

    46

    9e

    aa

    1a

    4a

    73

    c9

    -

    37

    ea

    93

    00

    48

    25

    08

    b5

    .F...Js.7..H%..

    Questa è una versione analizzata dalla struttura DigestInfo ASN1. Da essa può essere visto che il digest usato fu md5.

    8) L'attuale parte del certificato che fu firmato può essere estratta con:

    9) e il suo digest calcolato con:

    ottenendo valori del tipo:

    Che può essere visto in accordo con i valori recuperati sopra.

    Vedi anche

    dgst(1), rsa(1), genrsa(1).