with salted password encrypt enc decrypt data encryption openssl

encryption - salted - openssl encrypt php



Compruebe si una conexión es TLSv1 vs SSLv3(SSL_CIPHER_description/SSL_CIPHER_get_name) (2)

Puede usar el método SSL_get_version(SSL *ssl) después de que la conexión se negoció satisfactoriamente.

Tengo una aplicación de servidor que usa OpenSSL. Estoy tratando de entender qué tipo de conexiones SSL están afectando mi sistema (es decir, SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2). En particular, estoy trabajando para deshabilitar SSLv3 (re: POODLE). Antes de que pueda hacer eso, quiero ver quién / qué se está conectando en SSLv3

Actualmente estoy usando las funciones SSL_CIPHER_description y SSL_CIPHER_get_name, que brindan una muy buena información sobre las cifras negociadas para cada conexión

Estoy teniendo algunos desafíos tratando de diferenciar las conexiones SSLv3 vs TLSv1. Por https://www.openssl.org/docs/ssl/SSL_CIPHER_get_name.html :

"The TLSv1.0 ciphers are flagged with SSLv3. No new ciphers were added by TLSv1.1."

He confirmado que las conexiones TLSv1 se notan como SSLv3 Ej .: SSL_CIPHER_description devuelve lo siguiente en una conexión que definitivamente es TLSv1.0: AES256-SHA SSLv3 Kx = RSA Au = RSA Enc = AES (256) Mac = SHA1

¿Alguien tiene alguna idea sobre cómo detectar si una conexión es SSLv3 versus TLSv1 en OpenSSL?


Ver API SSL_get_cipher_version () y amigos.

Además, todos los paquetes SSLv3 / TLS comienzan con un encabezado que también puede inspeccionar fácilmente:

Byte 0 : Record Type Byte 1 : Version Major Byte 2 : Version Minor Byte 3-4: Length of payload minus header (16k max)

La versión Major se descompone así:

Major == 2: SSLv2 (The rest differs from SSLv3+ headers) Major == 3: SSLv3, TLSv1.0, TLSv1.1, or TLSv1.2

Versión Minor:

Minor == 0: SSLv3 Minor == 1: TLSv1.0 Minor == 2: TLSv1.1 Minor == 3: TLSv1.2

Sin embargo, tenga en cuenta que hasta que se complete el protocolo de enlace / negociación, las versiones utilizadas pueden cambiar. Si espera hasta los datos de la aplicación, debería ser exacto. Ejemplo de datos de aplicación de un registro TLSv1.2:

0x17 0x03 0x03 ...

¡Huele los datos!

Otro enfoque más, si esto es simplemente para investigación, es olfatear los datos con Wireshark o similar.