Código de autenticación de mensaje basado en un solo bloque AES

4

Creo que necesito usar un MAC para garantizar la integridad de una URL que mi sistema proporcionará a un usuario final que la usará para descargar un contenido de otro componente del sistema, es decir, una URL debe ir desde un componente de mi sistema a otro componente que utiliza al usuario final como un canal no seguro.

Había pensado usar algo como AES256 (shared_key, MD5 (URL)), es decir, usar la salida de MD5 (URL) será de 16 bytes que serán la entrada para el AES256, es decir, solo un cifrado de bloque.

El punto es que la clave no cambiará mucho, es decir, se generarán muchos MAC utilizando la misma clave y no estoy seguro de si este método es seguro en la falsificación existencial, ya que, utilizando la misma clave múltiple con AES no es seguro de CPA.

Por favor, ¿alguien podría ayudarme en esto?

Actualizar: Muchas gracias por las respuestas.

Olvidé mencionar que de alguna manera estoy obligado a usar ese enfoque.

Sin embargo, estoy un poco molesto con el hecho de generar MAC utilizando la misma clave, quiero decir, AES con un solo bloque no es seguro para CPA si se usa la misma clave y no estoy seguro de cómo esto afecta la seguridad de El MAC utiliza el enfoque que he descrito.

Gracias de antemano

    
pregunta saturn 28.10.2013 - 18:04
fuente

3 respuestas

3

Si realmente necesita usar AES, entonces puede usar CBC-MAC . Sin embargo, tenga cuidado con las condiciones: CBC-MAC solo es seguro si:

  • todos los mensajes tienen la misma longitud, o (alternativamente) siempre calcula el MAC sobre una estructura que comienza con un encabezado que define la longitud del mensaje;
  • usted nunca usa la clave para otra cosa que no sea CBC-MAC (y, en particular, no encripta nada con la misma clave).

Si ya está listo para usar una función hash, entonces le resultará más fácil confiar en HMAC . HMAC usa solo una función de hash, no un cifrado de bloque, por lo que es menos complejo que combinar un cifrado de bloque y una función de hash. HMAC ya está implementado en muchos marcos criptográficos (como de costumbre, cuanto menos código criptográfico tenga que escribir usted mismo, mejor obtendrá). HMAC / MD5 es, por lo que sabemos, seguro, a pesar de las debilidades conocidas de MD5. Sin embargo, si solo es para relaciones públicas, es posible que desee utilizar HMAC / SHA-1 o HMAC / SHA-256. También puede truncar la salida HMAC: se sabe que esto es seguro, es decir, si trunca la salida de HMAC / SHA-256 a, digamos, 80 bits, entonces obtiene un buen MAC de 80 bits, que el atacante no ser capaz de pasar por alto con una probabilidad superior a 2 -80 (y eso ya es una exageración completa para la mayoría de los propósitos).

    
respondido por el Thomas Pornin 28.10.2013 - 18:49
fuente
0

El algoritmo normal que se usa para esto es HMAC. Puede basar un HMAC en cualquier algoritmo hash; HMAC-MD5, HMAC-SHA1, lo que quiera usar. El cálculo de un HMAC implica una doble aplicación de la función hash y algunas otras operaciones. Wikipedia: HMAC

No puedo pensar en ningún ataque práctico contra el esquema que propones. Sin embargo, es posible que haya algún ataque sutil, ya sea falsificación existencial u otra cosa. Es por eso que se recomienda utilizar el enfoque estándar.

    
respondido por el paj28 28.10.2013 - 18:21
fuente
0

Su método es defectuoso porque la URL repetida tendrá el mismo texto cifrado.

Todo lo que tienes que hacer es agregar la clave.

Genera una sal aleatoria. XOR con el SECRET_KEY. Utilice ese resultado como la clave de cifrado para AES.

Envíe la SALT y el texto cifrado.

Reciever Systems XOR recibe la SALT recibida con SECRET_KEY (previamente compartida) y usa esa tecla para descodificar el texto cifrado.

Ningún ataque es posible porque: La sal es solo un número aleatorio. El texto cifrado será diferente con cada sal, independientemente del contenido de texto sin formato.

    
respondido por el secotmundi 29.10.2013 - 06:20
fuente

Lea otras preguntas en las etiquetas