De hecho, no hay diferencia en la seguridad entre una clave simétrica de 128 bits y una clave simétrica de 256 bits. La razón es que la seguridad contra la fuerza bruta es relativa a los medios tecnológicos disponibles para el atacante, y no hay forma de que la tecnología en el futuro previsible permita una búsqueda exhaustiva de 128 bits con posibilidades no despreciables de éxito.
Por "previsible" aquí, quiero decir "dentro de los próximos 30 años". Cualquiera que diga ser capaz de predecir los avances tecnológicos durante más tiempo es un viajero en el tiempo o un mentiroso inmundo. Tenga en cuenta en particular que afirmo que no habrá, en los próximos 30 años, una computadora cuántica que sea lo suficientemente grande como para ejecutar pruebas clave en AES de 128 bits y puede hacerlo por 2 64 pasos: esta última condición es muy no trivial. Por supuesto, es conceptualmente posible que se encuentren avances matemáticos, que simplificarían la búsqueda exhaustiva, pero esto es altamente especulativo y no hay una indicación real de que una clave AES de 256 bits resista tales cosas mejor que una clave AES de 128 bits ( de hecho, existen algunos ataques esotéricos, llamados "ataques de clave relacionada", que afortunadamente no se aplican a casos prácticos, y para los cuales AES-256 es más débil que AES-128).
Ya que no hay nada más fuerte que no rompible, se puede decir que AES-128 y AES-256 son igualmente buenos para la seguridad. Incluso podemos decir que AES-128 es un poco preferible, ya que es un poco más rápido (pero no importará mucho).
Dicho esto, en formato OpenPGP, las frases de contraseña se convierten en claves a través de una cadena a clave transformada . La recomendada (la transformada "iterada y salada") contiene una larga concatenación de repeticiones múltiples de la frase de contraseña y la sal. El tamaño total de lo que está en hash es configurable, pero el punto es que cada intento de frase de contraseña debería costar mucho. Esto aumenta mecánicamente la resistencia a la búsqueda exhaustiva. Por ejemplo, si el recuento de iteraciones es tal que una transformación de contraseña a clave cuesta tanto como aproximadamente un millón de invocaciones AES, entonces solo necesita 108 bits de entropía en la frase de contraseña para alcanzar una seguridad equivalente de 128 bits. Por supuesto, un mayor costo es un mayor costo: no obtiene seguridad adicional de forma gratuita.
El S2K iterado y salado utiliza una función hash interna que podría ser SHA-1 o incluso MD5, pero no es necesaria en relación con la robustez criptográfica de esa función hash subyacente. Incluso si se trata de un MD5 muy defectuoso, y aun así la salida de MD5 es de solo 128 bits, el S2K iterado y salado se define de tal manera que aún puede mantener casi toda su contraseña de entropía en la clave resultante. Por lo tanto, si tiene 256 bits o más de entropía en la entrada S2K (la frase de contraseña) y desea una clave de salida de 256 bits, esa clave de salida tendrá al menos 255 bits de entropía.
(Si tiene exactamente 256 bits de entropía en la entrada, espera un valor teórico de 255.34 bits de entropía en la salida.)
Para resumir: no hay "gotcha" en la forma en que la frase de paso se convierte en una clave de cifrado, pero incluso si la hubiera, todavía obtendría un nivel de seguridad que no es diferente, en cualquier significado práctico del término, al nivel teórico de "256 bits".