Cifrado maleable
# Cifrado maleable

Un esquema de cifrado es maleable (en inglés malleable) si conocido un texto cifrado $c_{i}$ se puede fácilmente crear otro texto cifrado $c_{j}$ tal que el resultado de descifrar $c_{i}$ ($d_{k}(c_{i})$) y el resultado de descifrar $c_{j}$ ($d_{k}(c_{j})$) tienen una relación
Este concepto fue introducido en 1991 por D. Dolev, Dwork y J. L. Carter.

# Cifrado maleable
## Implicaciones

La maleabilidad de un cifrado permite, sin saber la clave, alterar el texto cifrado para conseguir cambiar el significado del texto plano. De esta forma podemos cambiar el significado. Esto es aprovechado en alguna aplicación (Ej. protocolo Off-the-Record) para que el código cifrado no pueda ser usado como prueba de que ese mensaje ha sido enviado por un conocedor de la clave secreta. En estas aplicaciones se quiere tener la prueba de que cualquiera puede generar un código cifrado concreto. Técnicamente no es un cifrado negable, pero su negabilidad se refiere a la imposibilidad de que una tercera parte pruebe la autenticidad del mensaje.
Un mensaje cifrado con este tipo de cifrado no prueba de ninguna forma la integridad o la autenticidad, En los sistemas de cifrado no-maleables es difícil, sin conocer la clave, producir textos cifrados que al descifrar produzcan texto plano con significado. Cualquier cambio que un atacante pudiera realizar en el texto cifrado, al descifrar normalmente tendría como resultado un texto plano con bits aleatorios en lugar de texto plano con significado en el contexto. Esto se podría aprovechar como técnica de autenticación (Ej. Protocolo de Needham-Schroeder) aunque es una práctica muy pobre, ya que hay ataques que pueden romper este tipo de protección. Sin embargo en algunos casos es difícil aplicar este tipo de ataques.

# Cifrado maleable
## Ejemplos

* El cifrador de flujo one-time-pad cifra el texto plano haciendo un XOR con una clave. Para descifrar vuelve a aplicar la función XOR. Este tipo de cifrado es maleable ya que un cambio en cualquier bit en el texto cifrado se corresponderá con un cambio en el correspondiente bit del texto plano. Por tanto si un atacante obtiene o puede adivinar el texto plano, entonces este atacante puede componer el texto cifrado para cualquier otro mensaje de la misma longitud sin conocer la clave privada. Usando notación matemática:
    Si $k$ es la clave secreta y $E(m)=m\oplus S(k)$ es el texto cifrado. Un adversario puede construir un cifrado de $m\oplus t$ para cualquier $t$, con $E(m)\oplus t=m\oplus t\oplus S(k)=E(m\oplus t)$.
* En el criptosistema RSA, un texto plano $m$ es cifrado como $E(m)=m^{e}{\bmod {n}}$ donde $(e,n)$ es la clave pública. Dado un texto cifrado, un adversario puede construir un cifrado de $mt$ para cualquier $t$, haciendo $E(m)\cdot t^{e}{\bmod {n}}=(mt)^{e}{\bmod {n}}=E(mt)$. Por esta razón, RSA es comúnmente usado junto con un esquema de relleno como OAEP o PKCS1.
* El cifrado ElGamal, un texto plano $m$ es cifrado con $E(m)=(g^{b},mA^{b})$, donde $(g,A)$ es la clave pública. Dado un texto cifrado $(c_{1},c_{2})$, un adversario puede hallar $(c_{1},t\cdot c_{2})$, el cual es un cifrado válido de $tm$, para cualquier $t$.
* El cifrado Cramer-Shoup (basado en el cifrado ElGamal) no es maleable.
* En el sistema criptográfico Paillier, cifrado ElGamal, y RSA, es posible combinar varios textos cifrados junto de cierta forma para producir un texto cifrado relacionado. En el sistema criptográfico Paillier, dada solo la clave pública y un cifrado de $m_{1}$ y $m_{2}$, se puede calcular un cifrado válido de su suma $m_{1}+m_{2}$. En el cifrado ElGamal y RSA, se pueden combiar cifrado de $m_{1}$ y $m_{2}$ para obtener un cifrado válido de su producto $m_{1}m_{2}$.