El algoritmo criptográfico más fuerte disponible en PHP 5.3

5

¿Qué opciones están disponibles en la instalación predeterminada y cuáles son las de terceros, como extensiones o marcos?

P.S. Por criptografía me refiero a los algoritmos que se pueden descifrar, no al cifrado unidireccional como md5.

    
pregunta Mahdi 01.01.2013 - 21:12
fuente

2 respuestas

9

Como primitivo de cifrado utilizaría AES. Tanto AES-128 como AES-256 son lo suficientemente fuertes. Numéricamente AES-256 es más fuerte, pero es muy poco probable que AES-128 sea el punto más débil de su sistema.

Dado que php no parece admitir un modo de cifrado autenticado, debe crearlo usted mismo. Usaría HMAC-SHA-256, posiblemente truncado a 128 bits.

Para combinar estas operaciones yo:

  1. Genera un nuevo IV aleatorio con mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)
  2. Cifre el mensaje con AES en modo CBC con esa IV. Tenga en cuenta que AES siempre es MCRYPT_RIJNDAEL_128 incluso con claves de 256 bits PHP utiliza cero relleno por defecto que no se puede eliminar de forma inequívoca. Un mejor relleno es PKCS # 7, pero deberá agregarlo o eliminarlo usted mismo. Hay muchas implementaciones existentes para eso.
  3. Concatenar el IV y el texto cifrado
  4. Calcule HMAC-SHA-256 en el resultado del paso 3 (MAC debe incluir IV y relleno)
  5. Concatene el resultado del paso 3 con el MAC

Para descifrar:

  1. Verifique el MAC de una manera que sea resistente a los ataques de tiempo
  2. Extraer el IV del texto cifrado
  3. Descifra el mensaje

Este es un esquema de cifrado y luego MAC. Se recomienda utilizar diferentes claves para MAC y cifrado. Recomiendo derivar ambos de una clave maestra.

    
respondido por el CodesInChaos 02.01.2013 - 11:04
fuente
2

Hay estándares criptográficos, que son independientes del idioma, por lo tanto, aconsejo usar AES.

EDIT

Una biblioteca php que admite esto es MYCRYPT . Debería usar AES con un tamaño de clave de 128 o 256 bits (ya que desea la posibilidad más fuerte, use el 256) y también debe usar el modo OCB cuando sea posible (hay patentes en él de manera imprevista) y, por lo demás, CBC. Puede encontrar más información sobre los modos aquí .

    
respondido por el Lucas Kauffman 01.01.2013 - 22:01
fuente

Lea otras preguntas en las etiquetas