Cifrado que conserva el formato


En criptografía , el cifrado que conserva el formato ( FPE ) se refiere al cifrado de tal manera que la salida (el texto cifrado ) tiene el mismo formato que la entrada (el texto sin formato ). El significado de "formato" varía. Normalmente, solo se utilizan conjuntos finitos de caracteres; numérico, alfabético o alfanumérico. Por ejemplo:

Para tales dominios finitos, y para los propósitos de la discusión a continuación, el cifrado es equivalente a una permutación de N enteros {0, ..., N −1 } donde N es el tamaño del dominio.

Una motivación para usar FPE proviene de los problemas asociados con la integración del cifrado en aplicaciones existentes, con modelos de datos bien definidos. Un ejemplo típico sería un número de tarjeta de crédito , como 1234567812345670(16 bytes de longitud, solo dígitos).

Agregar cifrado a tales aplicaciones puede ser un desafío si se van a cambiar los modelos de datos, ya que generalmente implica cambiar los límites de longitud de campo o los tipos de datos. Por ejemplo, la salida de un cifrado de bloque típico convertiría el número de tarjeta de crédito en un valor hexadecimal (p. Ej 0x96a45cbcf9c2a9425cde9e274948cb67., 34 bytes, dígitos hexadecimales) o un valor Base64 (p. Ej lqRcvPnCqUJc3p4nSUjLZw==., 24 bytes, caracteres alfanuméricos y especiales), lo que romperá cualquier aplicación existente que espere el crédito. El número de tarjeta debe ser un número de 16 dígitos.

Además de los problemas de formato simples, al usar AES-128-CBC, este número de tarjeta de crédito puede cifrarse con el valor hexadecimal 0xde015724b081ea7003de4593d792fd8b695b39e095c98f3a220ff43522a2df02. Además de los problemas causados ​​por la creación de caracteres no válidos y el aumento del tamaño de los datos, los datos cifrados mediante el modo CBC de un algoritmo de cifrado también cambian su valor cuando se descifran y cifran de nuevo. Esto sucede porque el valor de semilla aleatorio que se utiliza para inicializar el algoritmo de cifrado y se incluye como parte del valor cifrado es diferente para cada operación de cifrado. Debido a esto, es imposible utilizar datos cifrados con el modo CBC como clave única para identificar una fila en una base de datos.

FPE intenta simplificar el proceso de transición preservando el formato y la longitud de los datos originales, lo que permite un reemplazo directo de los valores de texto sin formato con sus textos cifrados en aplicaciones heredadas.