La malléabilité est une propriété que peuvent posséder des protocoles cryptographiques. Un cryptosystème est dit malléable s’il est possible de transformer un chiffré d’un message m en un chiffré pour un message f(m) pour une fonction f connue sans connaître le message originel m ni obtenir d’information sur lui.
Cette propriété n’est pas toujours désirable, puisqu’elle peut permettre à un attaquant de modifier le contenus de messages. Pour l'illustration, mettons qu’une banque chiffre une transaction de la forme (150,00€, #44), pour signifier « virement de 150,00€ pour le compte #44». Un attaquant sans connaître le message pourrait appliquer la fonction , ce qui dans notre cas donnerait la transaction (15 000,00€, #133), qui correspond à la transaction de 15 000,00€ pour un compte cible: #133.
En revanche cette propriété permet aussi de débloquer des fonctionnalités, comme le chiffrement homomorphe, qui permet d’exécuter des calculs sur des données chiffrés sans les connaître.
En cryptographie symétrique, les chiffrements par flot, qui sont conçus en prenant le ou exclusif du clair et d’un flot de bits pseudo-aléatoire (sur le principe du masque jetable) est un exemple de chiffrement malléable.
Plus formellement, on peut voir la fonction de chiffrement comme: Enc(m,k) = m ⊕ G(k) pour G un générateur de nombres pseudo-aléatoires et ⊕ désignant l’opérateur du ou exclusif. Ainsi, étant donné un second message t, un attaquant peut appliquer sur le chiffré la fonction m ⟼ m ⊕ t comme suit : Enc(m,k) ⊕ t = m ⊕ t ⊕ G(k) = Enc(m ⊕ t, k).
Dans le cadre de la cryptographie asymétrique, le cryptosystème d'ElGamal est un autre exemple de chiffrement malléable.
On rappelle que pour chiffrer un message m sous la clé publique h par ElGamal, on commence par tirer un aléa r, et on calcule .
Ainsi si on veut appliquer au chiffrement la fonction x ⟼ 2·x, il suffit de calculer , ce qui nous donne pour le message le résultat .