Más a menudo, escuchará el tamaño de las claves en bits en lugar de bytes. Entonces, 32 bytes = 256 bits. 16 = 128, 24 = 192.
En teoría, sí, las longitudes de clave más largas son más seguras, ya que hay más permutaciones posibles de la clave. Cada bit adicional significa el doble de claves posibles, por lo que duplica la cantidad de tiempo necesario para forzar la clave bruta. Dicho esto, la física sugiere que es imposible incluso fuerza bruta de 128 bits . Así que, en realidad, las situaciones en las que se utiliza el criptografía de 256 bits por una de dos razones: 1) quieren un margen de seguridad adicional si se encuentran debilidades (pero no una interrupción completa) en AES, o 2) quieren poder comercializarlo como "256 bit crypto!" En otras palabras, a menudo se usa para la sensación cálida y difusa de "mejor" criptografía.
La forma en que crea su clave es más importante que la longitud de la clave que elija. Si un humano ha creado sus claves en un teclado que elige una contraseña, es muy poco probable que aparezcan 128 bits. De acuerdo con NIST , basado en estudios de contraseña común En las prácticas, una contraseña elegida por un humano tendría que tener una longitud de 112 caracteres para dar 128 bits de entropía. Dado que es poco probable que los usuarios escriban 112 caracteres, su estrategia de generación de claves puede ser el punto débil (nuevamente, asumiendo que las claves son generadas por el usuario). Considere usar algo como PBKDF2 para reforzar la entrada del usuario en las claves.
Si está generando las claves, asegúrese de utilizar una fuente de entropía de calidad, como /dev/urandom
o openssl_random_pseudo_bytes
en PHP. No utilice rand
o mt_rand
, ya que no son criptográficamente seguros y son predecibles para un atacante.