¿Por qué OpenSSL no incluye AES-256-GCM? [cerrado]

1

Estoy intentando implementar AES-256-GCM en Ruby.

La biblioteca de envoltorios OpenSSL de Ruby y una biblioteca de Aead parecen creer claramente que OpenSSL sí lo admite.

Sin embargo, ni 0.9.8r (que había instalado) ni 1.0.1c (que actualicé a w / macports) parece tenerlo. 1.0.1c tiene AES256-GCM-SHA384, pero Ruby OpenSSL y aead no parecen saber qué hacer con él.

¿Alguna sugerencia?

xpost: enlace

ETA: Resulta que este problema se debe a que RVM se creó contra OpenSSL 0.9.8. (FWIW, este parece ser el caso en Ubuntu 10.04, pero corregido en 12.04).

Es fácil de probar:

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

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

Es una solución semi fácil w / rvm, pero se necesita un tiempo para volver a compilar 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

Gracias a Stephen Touset por sugerir la solución.

    
pregunta Sai 05.02.2013 - 20:48
fuente

2 respuestas

17

Como autor de la biblioteca Ruby AEAD, puedo asegurarle que OpenSSL admite GCM en 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

Si no está disponible en su plataforma (creo que OpenSSL agregó soporte GCM en 1.0.1), también implementé un CBC-HMAC y CTR-HMAC.

Si ha instalado una versión posterior de OpenSSL, debe asegurarse de que el binario de Ruby que está usando esté vinculado a esa versión. Probablemente no lo sea. Los detalles para hacer esto son específicos de rbenv y rvm.

En parte por estos motivos, estoy escribiendo una biblioteca de reemplazo que se agrupará y enlazará con NaCl de DJB en lugar de OpenSSL.

    
respondido por el Stephen Touset 05.02.2013 - 20:58
fuente
3

OpenSSL tiene soporte para GCM; Consulte, por ejemplo, esta respuesta . Como GCM no tiene nada que ver con SHA-384, supongo que en realidad está preguntando sobre el soporte para AES-256 / GCM en el contexto de una sesión SSL / TLS . Esto solo es compatible con TLS 1.2, por lo que necesita que el cliente y el servidor admitan esa versión.

    
respondido por el Tom Leek 05.02.2013 - 21:01
fuente

Lea otras preguntas en las etiquetas