Ciphers – uno strumento SSL di cipher display e lista di cifrari.
openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]
Il comando cipherlist converte una lista di cifrari OpenSSL una lista ordinata per preferenze di cifrari SSL. Esso può essere usato per determinare l’appropriata lista di cifrari.
La lista dei cifrari consiste di una o più stringhe di cifrari separate da ‘:’. Anche le virgole o gli spazi sono accettati come
separatori ma di solito sono usati i ’:’.
Attuali stringhe di cifrari possono assumere diverse forme.
Esse possono consistere di una singola cipher suite come RC4-SHA.
Essa può rappresentare una lista di cipher suite contenente un certo algoritmo, o cipher suite di un certo tipo. Per esempio
SHA1 rappresenta tutte le cipher suites che usano l’algoritmo digest SHA1 e
SSLv3 rappresenta tutti gli algoritmi SSLv3.
Le liste di cipher suite possono essere combinate in una singola stringa di cifrari usando il carattere ‘+’. Per
esempio SHA1+DES rappresentano tutte le cipher suites contenenti gli algoritmi SHA1 e il DES.
Ogni stringa di cifrari può essere preceduta opzionalmente dai caratteri ‘!’, ‘-‘ oppure ‘+’.
Se è usato il carattere ‘!’ allora i cifrari sono cancellati definitivamente dalla lista. I cifrari cancellati non possono più
riapparire nella lista anche se ciò viene esplicitamente richiesto.
Se è usato il carattere ‘-‘, allora i cifrari vengono cancellati dalla lista ma tutti o alcuni possono essere riaggiunti alla
lista con altre opzioni.
Se è usato il carattere ‘+’ allora i cifrari vengono spostati alla fine della lista. Questa opzione non aggiunge nuovi cifrari ma li
sposta confrontandoli con quelli già presenti.
Se nessuno di questi caratteri è presente allora la stringa è interpretata come una lista
di cifrari che vengono aggiunti alla attuale lista a priorità. Se la lista
include qualche cifrario già presente, esso viene ignorato: ciò significa che
esso non è spostato alla fine della lista.
Inoltre la stringa dei cifrari @STRENGTH può essere usata a questo punto per ordinare l’attuale lista di cifrari secondo l’ordine
della lunghezza della chiave dell’algoritmo di cifratura.
Di seguito è illustrata la lista di tutte le stringhe di cifrari e il loro significato.
Le seguenti liste fissano i nomi delle ciper suites SSL o TLS dalle specifiche relative ed i loro equivalenti OpenSSL.
SSL_RSA_WITH_NULL_MD5 | NULL-MD5 | |
SSL_RSA_WITH_NULL_SHA | NULL-SHA | |
SSL_RSA_EXPORT_WITH_RC4_40_MD5 | EXP-RC4-MD5 | |
SSL_RSA_WITH_RC4_128_MD5 | RC4-MD5 | |
SSL_RSA_WITH_RC4_128_SHA | RC4-SHA | |
SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | EXP-RC2-CBC-MD5 | |
SSL_RSA_WITH_IDEA_CBC_SHA | IDEA-CBC-SHA | |
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DES-CBC-SHA | |
SSL_RSA_WITH_DES_CBC_SHA | DES-CBC-SHA | |
SSL_RSA_WITH_3DES_EDE_CBC_SHA | DES-CBC3-SHA | |
SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | Not implemented | |
SSL_DH_DSS_WITH_DES_CBC_SHA | Not implemented | |
SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA | Not implemented | |
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA | Not implemented | |
SSL_DH_RSA_WITH_DES_CBC_SHA | Not implemented | |
SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA | Not implemented | |
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-DSS-DES-CBC-SHA | |
SSL_DHE_DSS_WITH_DES_CBC_SHA | EDH-DSS-CBC-SHA | |
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA | EDH-DSS-DES-CBC3-SHA | |
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-RSA-DES-CBC-SHA | |
SSL_DHE_RSA_WITH_DES_CBC_SHA | EDH-RSA-DES-CBC-SHA | |
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA | EDH-RSA-DES-CBC3-SHA | |
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5 | EXP-ADH-RC4-MD5 | |
SSL_DH_anon_WITH_RC4_128_MD5 | ADH-RC4-MD5 | |
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA | EXP-ADH-DES-CBC-SHA | |
SSL_DH_anon_WITH_DES_CBC_SHA | ADH-DES-CBC-SHA | |
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA | ADH-DES-CBC3-SHA | |
SSL_FORTEZZA_KEA_WITH_NULL_SHA | Not implemented | |
SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA | Not implemented | |
SSL_FORTEZZA_KEA_WITH_RC4_128_SHA | Not implemented |
TLS_RSA_WITH_NULL_MD5 | NULL-MD5 | |
TLS_RSA_WITH_NULL_SHA | NULL-SHA | |
TLS_RSA_EXPORT_WITH_RC4_40_MD5 | EXP-RC4-MD5 | |
TLS_RSA_WITH_RC4_128_MD5 | RC4-MD5 | |
TLS_RSA_WITH_RC4_128_SHA | RC4-SHA | |
TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 | EXP-RC2-CBC-MD5 | |
TLS_RSA_WITH_IDEA_CBC_SHA | IDEA-CBC-SHA | |
TLS_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-DES-CBC-SHA | |
TLS_RSA_WITH_DES_CBC_SHA | DES-CBC-SHA | |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | DES-CBC3-SHA | |
TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA | Not implemented | |
TLS_DH_DSS_WITH_DES_CBC_SHA | Not implemented | |
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA | Not implemented | |
TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA | Not implemented | |
TLS_DH_RSA_WITH_DES_CBC_SHA | Not implemented | |
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA | Not implemented | |
TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-DSS-DES-CBC-SHA | |
TLS_DHE_DSS_WITH_DES_CBC_SHA | EDH-DSS-CBC-SHA | |
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | EDH-DSS-DES-CBC3-SHA | |
TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA | EXP-EDH-RSA-DES-CBC-SHA | |
TLS_DHE_RSA_WITH_DES_CBC_SHA | EDH-RSA-DES-CBC-SHA | |
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA | EDH-RSA-DES-CBC3-SHA | |
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 | EXP-ADH-RC4-MD5 | |
TLS_DH_anon_WITH_RC4_128_MD5 | ADH-RC4-MD5 | |
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA | EXP-ADH-DES-CBC-SHA | |
TLS_DH_anon_WITH_DES_CBC_SHA | ADH-DES-CBC-SHA | |
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA | ADH-DES-CBC3-SHA |
Nota: questi cifrari possono essere usati in SSL v3.
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA | EXP1024-DES-CBC-SHA | |
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA | EXP1024-RC4-SHA | |
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA | EXP1024-DHE-DSS-DES-CBC-SHA | |
TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA | EXP1024-DHE-DSS-RC4-SHA | |
TLS_DHE_DSS_WITH_RC4_128_SHA | DHE-DSS-RC4-SHA |
SSL_CK_RC4_128_WITH_MD5 | RC4-MD5 | |
SSL_CK_RC4_128_EXPORT40_WITH_MD5 | EXP-RC4-MD5 | |
SSL_CK_RC2_128_CBC_WITH_MD5 | RC2-MD5 | |
SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 | EXP-RC2-MD5 | |
SSL_CK_IDEA_128_CBC_WITH_MD5 | IDEA-CBC-MD5 | |
SSL_CK_DES_64_CBC_WITH_MD5 | DES-CBC-MD5 | |
SSL_CK_DES_192_EDE3_CBC_WITH_MD5 | DES-CBC3-MD5 |
Le modalità DH non banali sono attualmente non implementate in OpenSSL perché non c’è supporto ai certificati DH.
Qualche versione compilata di OpenSSL potrebbe non includere qui tutte le liste di cifrari poiché alcuni cifrari vengono esclusi
a tempo di compilazione.
1) Mostrare un listato di tutti i cifrari OpenSSL inclusi i cifrari NULL.
openssl ciphers –v ‘ ALL:eNULL’
2) Includere tutti i cifrari eccetto NULL e i DH anonimi e poi li ordina per forza:
openssl ciphers –v ‘ ALL:!ADH:@STRENGTH’
3) Includere soltanto il cifrario 3DES e poi pone alla fine i cifrari RSA:
openssl ciphers –v ‘3DES:+RSA’
s_client(1), s_server(1),ssl(3).
dgst,md5,md4,md2,sha1, sha, mdc2, ripemd160 – Message Digests.
openssl dgst [-md5|-md4|-md2|-sha 1|-sha|-mdc2|-ripemd160|-dss1] [-c] [-d] [-hex] [-binary] [-out filename] [-sign filename] [-verify filename] [-prverify filename] [-signature filename] [file...]
[md5|md4|md2|sha1|sha|mdc2|ripemd160] [-c] [-d] [file...]
Le funzioni digest danno in output dei Message Digests di uno o più file forniti in formato esadecimale. Esso può essere anche usato per firma digitale e verifica.
Il digest di default per tutte le applicazioni è SHA1. Comunque altri digest sono ancora largamente utilizzati. Se si desidera firmare o verificare un dato usando l’algoritmo DSA, allora deve essere usata il digest dss1. Alcuni algoritmi di firma richiedono una sorgente di numeri casuali, in particolare il DSA. Le opzioni di firma e di verifica dovrebbero essere usate se un singolo file deve essere firmato o verificato.
enc – routine di cifrari simmetrici.
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p] [-P] [-bufsize number] [-nopad] [-debug]
I comandi dei cifrari simmetrici permettono ai dati di essere cifrari o decifrati usando diversi cifrari a blocchi e stream cipher usando chiavi basate su password o esplicitamente fornite. La codifica o decodifica base64 può anche essere eseguita o da sola o in aggiunta alla cifratura e decifratura.
Il programma può essere chiamato come openssl ciphername oppure openssl enc –ciphername.
Una password sarà richiesta per derivare la chiave e IV se necassario.
L’opzione –salt dovrebbe essere SEMPRE usata se la chiave deve essere derivata dalla password a meno che non si voglia la
compatibilità con versioni precedenti di OpenSSL e SSLeay.
Senza l’opzione –salt è possibile eseguire un efficiente attacco a dizionario sulla password e attaccare i dati cifrati con
lo stream cipher. La ragione di tutto questo è senza il salt la stesse password
genera sempre la stessa chiave di cifratura. Quando il salt deve essere
usato i primi otto byte dei dati cifrati sono riservati per il salt: esso viene
generato in maniera casuale quando si cifra un file e viene letto dal file
cifrato quando deve essere decifrato.
Alcuni cifrari non hanno chiavi grandi e altri hanno problemi di sicurezza se non usati correttamente. I principianti sono avvisati
di usare soltanto cifrari a blocchi forti in modalità CBC come bf o des3.
Tutti i cifrari a blocchi di solito usano PKCS#5 padding anche conosciuto come standard block padding: questa permette di eseguire un
rudimentale controllo di integrità o della password. Tuttavia dato che la posssibilità da parte dei dati casuali di passsare
il test è maggiore di 1 su 256 questo non è un test molto buono.
Se il padding è disabilitato allora i dati di input devono essere un multiplo della lunghezza del cipher block.
Tutti i cifrari RC2 hanno la stessa chiave e effettiva lunghezza della chiave.
Gli algoritmi Blowfish e RC5 usano una chiave a 128 bit.
Base64. | ||
Blowfish in CBC mode. | ||
Alias per bf-cbc. | ||
Blowfish in CFB mode. | ||
Blowfish in OCB mode. | ||
Blowfish in OFB mode. | ||
CAST in CBC mode. | ||
Alias per cast-cbc. | ||
CAST5 in CBC mode. | ||
CAST5 in CFB mode. | ||
CAST5 in OCB mode. | ||
CAST5 in OFB mode. | ||
DES in CBC mode. | ||
Alias per des-cbc. | ||
DES in CFB mode. | ||
DES in OCB mode. | ||
DES in OFB mode. | ||
Two key TRIPLE DES in CBC mode. | ||
Alias per des-ede-cbc. | ||
Two key TRIPLE DES in CFB mode. | ||
Two key TRIPLE DES in OFB mode. | ||
Three key TRIPLE DES in CBC mode. | ||
Alias per des-ede3-cbc. | ||
Alias per des-ede3-cbc. | ||
Three key TRIPLE DES in CFC mode. | ||
Three key TRIPLE DES in OFC mode. | ||
Algoritmo DESX. | ||
IDEA in CBC mode. | ||
Alias per idea-cbc. | ||
IDEA in CFB mode. | ||
IDEA in OCB mode. | ||
IDEA in OFB mode. | ||
RC2 a 128 bit in CBC mode. | ||
Alias per rc2-cbc. | ||
RC2 a 128 bit in CFB mode. | ||
RC2 a 128 bit in OCB mode. | ||
RC2 a 128 bit in OFB mode. | ||
RC2 a 64 bit in CBC mode. | ||
RC2 a 40 bit in CBC mode. | ||
RC4 a 28 bit. | ||
RC4 a 64 bit. | ||
RC4 a 40 bit. | ||
RC5 in CBC mode. | ||
Alias per rc5-cbc. | ||
RC5 in CFB mode. | ||
RC5 in OCB mode. | ||
RC5 in OFB mode. | ||
1) Codifica solo base64 un file binario:
openssl base64 –in file.bin –out file.b64
2) Decodifica lo stesso file
openssl base64 –d –in file.b64 –out file.bin
3) Cifra un file usando il DES triplo nella modalità CBC usando una password richiesta
openssl des3 –salt –in file.txt –out file.des3
4) Decifra un file usando una password fornita:
openssl des3 –d –salt –in file.des3 –out file.txt –k mypassword
5) Cifra un file poi lo codifica base64 (così per esempio può essere inviato via email ) usando Blowfish in modalità CBC:
openssl bf –a –salt –in file.txt –out file.bf
6) Decodifica un file base64 poi lo decifra
openssl bf –d –salt –a –in file.bf –out file.txt
7) Decifra alcuni dati usando la chiave RC4 a 40 bit
openssl rc4-40 –in file.rc4 –out file.txt –K 0102030405
L’opzione –A quando è usata con file grandi non lavora correttamente.
Ci dovrebbe essere un opzione che permetta che consenta di includere il conteggio delle iterazioni.
Il programma enc supporta solo un numero fissato di algoritmi con certi parametri. Così se, per esempio, tu vuoi usare lo RC2 con chiave
a 76 bit oppure lo RC4 con chiave a 84 bit, non si può usare questo programma.
dhparam – manipolazione e generazione di parametri DH
openssl dhparam [-inform DER | PEM] [-outform DER | PEM] [-in nome_file] [-out nome_file] [-dsaparam] [-noout] [-text] [-C] [-2] [-5] [-rand file(s)] [numbits]
Questo comando viene usato per manipolare files di parametri DH.
Il programma dhparam combina le funzionalità dei programmi dh e gendh delle versioni precedenti di OpenSSL e SSLeay. I programmi dh e gendh per il momento sono stati mantenuti, ma in future versioni di OpenSSL si potrebbero avere situazioni diverse.
Il formato PEM dei parametri DH usa le linee di intestazione e chiusura:
----BEGIN DH PARAMETERS----
----END DH PARAMETERS----
Attualmente OpenSSL supporta solo il più vecchio DH PKCS#3 e non il più nuovo DH X9.42.
Questo programma manipola parametri DH e non chiavi.
Ci dovrebbe essere un modo per generare e manipolare chiavi DH.
Il comando dhparam fu aggiunto in OpenSSL 0.9.5. L’opzione –dsaparam è stata aggiunta in OpenSSL 0.9.6.