¿Por qué se considera que AES de 128 bits es muy fuerte pero SHA de 160 bits se deprecia?

4

¿Por qué se considera que AES de 128 bits es muy fuerte pero SHA de 160 bits es "insuficientemente seguro"? Google / chrome / browsers parece abandonar el soporte para los certificados SSL SHA1. Supongo que es más sencillo calcular SHA que una ronda de AES, pero hay muchos más bits en SHA. Entiendo que el MD5 se depreció porque el algoritmo se rompió lo suficiente como para que no fuera difícil crear una colisión, pero no creo que entre en juego con SHA.

    
pregunta 29.04.2016 - 02:44
fuente

2 respuestas

9

Para las funciones hash (como SHA-1) que se utilizan para firmar certificados SSL, la seguridad se ve socavada por completo si tiene ataques de colisión exitosos. Debido a la paradoja de cumpleaños , una función de hash de N bits proporciona efectivamente N / 2 bits de seguridad contra ataques de colisión. Es decir, un forzador bruto puede crear colisiones para una función hash de N bits después de generar aproximadamente 2 N / 2 posibles cadenas para el hash. Por lo tanto, una función hash de 160 bits proporciona alrededor de 80 bits de seguridad contra colisiones (lo que significa que se requieren aproximadamente 2 80 esfuerzos para generar una colisión mediante fuerza bruta).

Para un cifrado de bloque (como AES), utiliza una clave de N bits que mapea un bloque de texto (128 bits en el caso de AES) en un bloque de texto cifrado de manera reversible si posee el bit N llave. Por lo tanto, para forzar un cifrado de bloque con una clave de N bits (y ninguna otra vulnerabilidad), debe probar aproximadamente 2 claves N hasta que encuentre una clave que transforme el texto cifrado en el mensaje original .

Por lo tanto (sin mirar ninguna falla específica en los dos algoritmos), un cifrado de bloque con una clave de 128 bits es mucho más fuerte (lo que requiere 2 128 fuerza bruta) que usar un SSL certificado firmado con una función hash de 160 bits (que requiere 2 80 esfuerzos para encontrar una colisión y socavar completamente la seguridad). De hecho, es aproximadamente 2 48 ~ 281 billones (10 12 ) veces más seguro.

Explicación de por qué las colisiones rompen los certificados SSL

Básicamente, un certificado SSL consiste en cierta información de texto plano p y una firma S proporcionada por una autoridad de certificación. Este texto simple normalmente incluye el nombre de su organización y su nombre de dominio e información similar. Si desea un nuevo certificado, luego envíe esta información a una autoridad de certificación (CA) en la que los populares navegadores web confían intrínsecamente. La CA verifica su información (por ejemplo, verifica que usted es el propietario del dominio, por ejemplo, enviando un código de correo electrónico a la dirección de correo electrónico que figura en los registros DNS de ese dominio, O paga por un certificado de validación extendido y la CA realiza más comprobaciones la organización que dices que eres). Si la información se retira, la autoridad de certificación aceptará firmarla y emitirle la firma para completar el certificado. La firma consiste en el hashing de la información de texto sin formato H(p) en el certificado y luego usar la clave privada de la CA ( K_priv ) para cifrar ese hash ( S = E(K_priv, H(p)) . Entonces cualquiera puede usar la clave pública correspondiente de la CA ( K_public (y su sistema operativo y / o navegador web generalmente viene con una lista de claves públicas de autoridades de certificación confiables) para descifrar la firma para encontrar H(p) = D(K_public, S) y verificar que la firma coincida con el hash de la información de texto sin formato en el certificado SSL.

Por lo tanto, si genera aproximadamente 2 80 mensajes de texto sin formato diferentes p (algunos en la forma debían ser un certificado para un dominio, algunos en la forma de certificados para una autoridad de certificación intermedia), podría ser posible encontrar un par de dos mensajes p1 y p2 que colisionan. Si, por ejemplo, p1 identifica un dominio cambiado aleatoriamente ( sgnjnjrafaftjhyqsv.com ) que puede comprar fácilmente (o si varía subdominios de los dominios que ya posee como sgnjnjrafaftjhyqsv.blah.com ), entonces puede verificar la propiedad de p1 en una CA y usted puede obtener una firma de CA de p1 . Como los hashes coinciden con H(p1)==H(p2) , puede tomar la firma del certificado de p1 y usarla con p2 para generar un certificado válido. Si p2 , por ejemplo, fue una autoridad de certificación intermedia que le permite firmar otros certificados, puede utilizar esa autoridad de certificación intermedia para firmar cualquier certificado que desee (y podría, por ejemplo, falsificar cualquier sitio web que desee, al menos ignorar otras protecciones). como la fijación de certificados).

Para referencia, este ataque se usó con éxito para crear falsos certificados de autoridad intermedios contra MD5 (hash de 128 bits) certificados firmados alrededor de 2008 . Tenga en cuenta que ignorar fallas específicas en los hashes relevantes para encontrar una colisión SHA-1 es solo 65,000 veces más difícil que encontrar uno en un hash MD5. Con el costo de cómputo disminuyendo, se cree que es factible para los atacantes sofisticados atacar a SHA-1 y socavar la seguridad SSL. El uso de un hash de 256 bits (como SHA-256) es aproximadamente 18 mil millones (18 x 10 18 ) veces más seguro que un hash de 128 bits (como MD5) contra ataques de colisión (nuevamente ignorando fallas específicas en las funciones hash).

    
respondido por el dr jimbob 29.04.2016 - 03:44
fuente
5

AES es un algoritmo de cifrado simétrico. SHA-1 es una función de hash. Son bestias completamente diferentes.

El problema no es el número de bits sino las funciones en sí. Como ejemplo puedes tomar MD5. También tiene 128 bits, pero la creación de dos cadenas en colisión ahora es trivial.

El problema no es poder restringir las posibilidades de 128 bits, pero (ab) usar las propiedades de las operaciones md5 para forzar la colisión.

    
respondido por el Ángel 29.04.2016 - 02:50
fuente

Lea otras preguntas en las etiquetas