Perché OpenSSL non include AES-256-GCM? [chiuso]

1

Sto cercando di implementare AES-256-GCM in Ruby.

La libreria wrapper OpenSSL di Ruby e la libreria aead sembrano chiaramente credere che OpenSSL stesso supporti questo.

Tuttavia, né 0.9.8r (che avevo installato) né 1.0.1c (che ho aggiornato con w / macports) sembra averlo. 1.0.1c ha AES256-GCM-SHA384, ma Ruby OpenSSL e Aead non sembrano sapere cosa fare di esso.

Qualche suggerimento?

xpost: link

ETA: Si scopre che questo problema è causato da RVM che è stato costruito contro OpenSSL 0.9.8. (FWIW, questo sembra essere il caso di Ubuntu 10.04, ma risolto in 12.04.)

È facile da testare:

require 'openssl'
cipher = OpenSSL::Cipher.new('aes-256-gcm')

# Bad response:   RuntimeError: unsupported cipher algorithm (aes-256-gcm)
# Good response:    #<OpenSSL::Cipher:0x007fc0754764a8>

È una soluzione semi-facile con rvm, ma ci vuole un po 'per ricompilarlo completamente:

sudo apt-get install aclocal autoconf automake auroreconf apple-gcc42 libtool pkg-config openssl readline libyaml sqlite libxml2 libxslt libksba  
# some but not all are available on macports; seems to work okay without the missing ones
rvm get head
rvm pkg install openssl
rvm reinstall 1.9.3-p194

Grazie a Stephen Touset per aver suggerito la correzione.

    
posta Sai 05.02.2013 - 20:48
fonte

2 risposte

17

Come autore della libreria Ruby AEAD, posso assicurarti che OpenSSL supporta GCM su 1.0.1c.

~ $ /usr/local/bin/openssl version
OpenSSL 1.0.1c 10 May 2012
~ $ /usr/local/bin/openssl enc -help 2>&1 | grep gcm 
-aes-128-gcm
-aes-192-gcm
-aes-256-gcm

Se non è disponibile sulla piattaforma (credo che OpenSSL abbia aggiunto il supporto GCM in 1.0.1, credo), ho anche implementato un CBC-HMAC e CTR-HMAC.

Se hai installato una versione successiva di OpenSSL, devi assicurarti che il file binario Ruby che stai utilizzando sia collegato a quella versione. Probabilmente no. I dettagli per farlo sono rbenv- e rvm-specifici.

In parte per questi motivi, sto scrivendo una libreria sostitutiva che si aggregherà e collegherà al NaCl di DJB invece di OpenSSL.

    
risposta data 05.02.2013 - 20:58
fonte
3

OpenSSL ha il supporto per GCM; vedere ad esempio questa risposta . Dato che GCM non ha nulla a che fare con SHA-384, suppongo che tu stia effettivamente chiedendo supporto per AES-256 / GCM nel contesto di una sessione SSL / TLS . Questo è supportato solo con TLS 1.2, quindi è necessario che client e server supportino tale versione.

    
risposta data 05.02.2013 - 21:01
fonte

Leggi altre domande sui tag