¿Cuáles son los criptogramas realistas y más seguros para los cifrados de código de autenticación de mensajes simétricos, asimétricos, hash,?

21

Estoy interesado en actualizar estas dos preguntas para 2011:

  1. ¿Qué criptología es más adecuada para dispositivos de baja potencia (como un teléfono celular) y aún así es efectiva?

  2. ¿Qué criptología es más segura para un desarrollador de .NET?

En noviembre de '08 Rasmus Faber respondió esta pregunta similar de desbordamiento de pila con esta respuesta:

  
  • Cifrado simétrico: AES-256

  •   
  • Cifrado asimétrico: RSA con clave de 4096 bits (Creo que esa es la   máximo en .NET) o ECDSA con   Clave de 571 bits (pero eso es solo   admitido en .NET 3.5)

  •   
  • Hash: SHA-512

  •   
  • Código de autenticación de mensaje: HMAC con SHA-512

  •   

Dicho esto, son una exageración   para la mayoría de las aplicaciones, y usted debería   haz bien usando AES-128, RSA con 2048   clave de bit, SHA-256 y HMAC con   SHA-256.

¿Estas recomendaciones siguen siendo válidas hoy?

    
pregunta random65537 19.01.2011 - 23:40
fuente

7 respuestas

35

Las recomendaciones que cita son un poco excesivas. Un punto a tener en cuenta es que más allá de un cierto nivel (por ejemplo, en el tamaño de la clave o el tamaño de salida de la función hash), todas las funciones son "irrompibles con tecnología previsible" y es un poco delicado compararlas. Afirmar que el SHA-512 es "más robusto" que el SHA-256 significa que usted está imaginando que el SHA-256 podría romperse, lo que, por lo que podemos decir por ahora y los próximos 40 años, no es cierto (más de 40 años , intentar imaginar qué tecnología podríamos tener es arriesgado; hace 40 años, nadie se imaginaba Internet como lo es hoy, pero la mayoría de la gente asumió que para el 2010 todos conduciríamos automóviles voladores).

AES-128 ya es lo suficientemente seguro y menos costoso (AES-256 usa 14 rondas, mientras que AES-128 usa 10 rondas).

La clave RSA rota más grande actualmente es un módulo de 768 bits, y tomó un gran esfuerzo (cuatro años, y cerebros realmente grandes). Las claves de 1024 bits se consideran utilizables para la seguridad a corto plazo, aunque se recomiendan claves más grandes. Las claves de 2048 bits son apropiadas. Usar una tecla dos veces más grande significa 8 veces más trabajo para firmar o descifrar, por lo que no desea exagerar. Consulte este sitio para obtener una encuesta sobre cómo la longitud de la clave RSA puede relacionarse con la seguridad.

ECDSA sobre una curva de 256 bits ya alcanza un nivel de seguridad "inquebrantable" (es decir, aproximadamente el mismo nivel que AES con una clave de 128 bits, o SHA-256 contra colisiones). Tenga en cuenta que hay curvas elípticas en los campos principales y curvas en los campos binarios; la clase más eficiente depende del hardware involucrado (para curvas de tamaño similar, una PC preferirá las curvas en un campo principal, pero el hardware dedicado será más fácil de construir con campos binarios; el CLMUL en los procesadores Intel y AMD más nuevos pueden cambiar eso).

SHA-512 usa operaciones de 64 bits. Esto es rápido en una PC, no tan rápido en una tarjeta inteligente. SHA-256 es a menudo una mejor oferta en hardware pequeño (incluidas las arquitecturas de 32 bits, como enrutadores domésticos o teléfonos inteligentes).

En este momento, los sistemas de RFID baratos tienen una potencia demasiado baja para usar cualquiera de los anteriores (en otras palabras, los sistemas de RFID que pueden no ser tan baratos como deberían ser). Los sistemas RFID todavía utilizan algoritmos personalizados de seguridad a menudo cuestionable. Los teléfonos celulares, por otro lado, tienen suficiente potencia de CPU para realizar la criptografía adecuada con AES o RSA (sí, incluso los teléfonos baratos no inteligentes).

    
respondido por el Thomas Pornin 20.01.2011 - 00:29
fuente
10

La respuesta citada es mi respuesta a lo que es el criptográfico más seguro en .NET.

Mis recomendaciones (para dispositivos de alta y baja potencia):

  • Cifrado simétrico: AES-128

  • Cifrado asimétrico: RSA con clave de 2048 bits o ECDSA / ECDH con clave de 256 bits

  • Hash: SHA-256

  • Código de autenticación de mensaje: HMAC con SHA-256

  • Cifrado de flujo: AES-128 en modo CTR

respondido por el Rasmus Faber 20.01.2011 - 10:39
fuente
5

En términos de seguridad, estas recomendaciones siguen siendo válidas y las mismas que yo haría.

En el caso de los cifrados asimétricos, realmente hay tres aspectos que le preocupan: el cifrado, el intercambio de claves y las firmas. RSA puede ser un esquema de cifrado y firma, mientras que ECDSA es específicamente una firma. Sin embargo, también existen versiones de curva elíptica de cifrado e intercambio de claves (aunque no estoy seguro de qué es del dominio público). Dicho esto, los tamaños de los parámetros son los mismos para los tres.

El único otro problema es que SHA-256/512 pronto será reemplazado, pero "pronto" en este caso será 2012.

En cuanto a la baja potencia, realmente depende de la poca potencia. Si por teléfono te refieres a un teléfono inteligente, todos estos son apropiados. Para una tarjeta inteligente, RFID, red de sensores, etc. es una historia diferente. Además, la mayoría de los algoritmos de baja potencia no estarán en una biblioteca estándar. Sin embargo, lo guiaría hacia el tamaño de los parámetros en la oración "no exagerar".

    
respondido por el PulpSpy 20.01.2011 - 00:09
fuente
5

Para seguridad hasta el año 2030, los expertos en NIST recomiendan usar al menos SHA-224, 2048 bits para RSA o DSA, EDCSA de 224 bits y AES-128 o triple-DES de 3 teclas.

Sobre la base de su trabajo, a partir de finales de 2010, el gobierno de EE. UU. desaprueba estos algoritmos: SHA-1, RSA o DSA de 1024 bits, ECDSA de 160 bits (curvas elípticas), 2TDEA de 80/112 bits (dos tecla triple DES)

Para obtener más información, consulte esta publicación y los documentos del NIST a los que hace referencia: enlace

    
respondido por el nealmcb 20.01.2011 - 17:03
fuente
4

Cryptographic Right Answers por Colin Percival en 2009 sigue siendo bonito Muy actualizado en mi humilde opinión y cubre la pregunta y más.

    
respondido por el Bruno Rohée 07.04.2011 - 17:47
fuente
1

Para cifrados simétricos, es posible que sea mejor usar AES-128 en lugar de AES-256 debido a posibles debilidades en la programación de claves para AES-256: enlace

    
respondido por el Justin Clarke 20.01.2011 - 00:16
fuente
0

Lo que hicimos fue seleccionar varios métodos de cifrado y hash y convertir todos los resultados a un formato hexadecimal común. Nuestros datos más confidenciales son el uso de SHA-256 y DES-3, mientras que los datos menos confidenciales que se pueden adivinar fácilmente utilizan MD5 & RC4 y también estamos usando una conversión XOR directa para algunas cosas. Cada cifrado simétrico tiene su propia contraseña y todos los datos cifrados están codificados con una suma de verificación. Confiar en un cifrado para todo es peligroso.

    
respondido por el Dave 20.01.2011 - 00:56
fuente

Lea otras preguntas en las etiquetas