tls ssldisabledprotocols specify none force enable disabling automatically autenticacion encryption ssl sha1 hash-function sha2

encryption - ssldisabledprotocols - Cifrado SSL, SHA-1 y SHA-2



mongodb authentication methods (5)

Estoy tratando de implementar el cifrado SHA-2 en lugar de SHA-1 .

Por esto, sé que el número de bits entre estos dos algoritmos hash es diferente, y me confunde.

¿Cómo se puede lograr esto y en qué partes necesito hacer los cambios necesarios?

Puedo usar cualquier biblioteca de código abierto de Java, Python y cualquier otro lenguaje de programación importante.


En primer lugar, ni SHA-1 ni nada relacionado con SHA-2 es un algoritmo de "cifrado". Son funciones hash. En SSL, las funciones hash se utilizan principalmente para la integridad, no la confidencialidad, a través de la construcción HMAC . Una función hash toma una entrada de longitud arbitraria, y produce una salida con una longitud fija, que es una especie de "resumen" de los datos de entrada; la operación no debe ser reversible.

Una función hash es "pública": no hay datos confidenciales, ninguna clave; todos pueden calcular la salida de la función hash en cualquier entrada dada. Un "código de autenticación de mensaje" (MAC) es un tipo de "hash con clave": también se ingresa una clave secreta (es decir, un conjunto arbitrario de bits) en el proceso, de modo que el conocimiento de la clave es necesario para (volver) a calcular la salida MAC. Esto se usa para verificaciones de integridad (el emisor usa la clave para calcular el MAC, el receptor usa la clave para recalcular el MAC, si el MAC coincide, entonces los datos son correctos, porque un atacante que no conoce la clave no podría tener alteró los datos y calculó un MAC válido en los datos alterados).

HMAC es una construcción que convierte una función hash (como SHA-1) en un MAC. TLS (ese es el nombre estándar actual de SSL) usa HMAC. La salida de HMAC, cuando se usa con una función hash dada h , tiene el mismo tamaño que la salida de h . Esa salida se puede truncar de manera convencional: HMAC / SHA-1 produce nominalmente una salida de 160 bits, pero es habitual, en algunos protocolos, mantener solo los primeros 96 bits. Tal truncamiento no ocurre en SSL.

El estándar FIPS 180-3 define cinco funciones hash, llamadas SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512, con longitudes de salida de 160, 224, 256, 384 y 512 bits, respectivamente. Las funciones SHA-224, SHA-256, SHA-384 y SHA-512 se conocen coloquialmente como "SHA-2", por lo que "SHA-2" no es una función, sino una familia de cuatro funciones hash.

La especificación TLS define conjuntos de cifrado . Un conjunto de cifrado es un conjunto de algoritmos criptográficos que el cliente y el servidor acuerdan durante la fase inicial de la conexión (el "apretón de manos"). Entre los algoritmos se encuentra el MAC que se debe usar para garantizar la integridad de los datos. Algunas de las suites de cifrado estándar especifican que el MAC debe ser "HMAC con SHA-256", es decir, algo que utiliza una de las funciones SHA-2.

Entonces, la respuesta a su pregunta es: "simplemente configure el cliente y el servidor para utilizar uno de los conjuntos de cifrado con HMAC / SHA-256". Si su implementación de SSL no es compatible con dichos conjuntos de cifrado, tendrá que modificarlo, lo que implicará comprender completamente cómo funciona SSL; es necesario leer y comprender el RFC 5246 completo.


Por lo que puedo ver, todo lo que necesita saber para implementar SHA256 en SSL está cubierto en RFC 5246 .

Pero sospecho que no estás entendiendo lo suficiente la criptografía para hacer esto ... SHA 2 no existe, estás buscando SHA256, SHA384 o SHA512, y no es un algoritmo de cifrado, sino una función hash criptográfica.

Entonces, ¿qué estás tratando de hacer?



Estoy seguro de que verás más y más de esta pregunta. GoDaddy ahora tiene una opción cuando envía una solicitud de firma de certificado, para especificar si va a utilizar SHA1 o SHA2.

Sin embargo, esta fue una lectura interesante aquí. Sabía básicamente lo que estaba pidiendo y cómo forzar a mi servidor a usar un cifrado que utilizara uno u otro. No estoy seguro de saber exactamente cuál era la diferencia o por qué sería mejor usar uno u otro.


intente esto, funciona para el autenticador de SQL weblogic

public static void main(String args[]) throws NoSuchAlgorithmException { String password="abcdef"; System.out.println("{SHA-1}" + new sun.misc.BASE64Encoder().encode(java.security.MessageDigest.getInstance("SHA1").digest(password.getBytes()))); }