En cryptologie, la mise en gage (en anglais : commitment scheme) est un processus qui permet à une personne de « mettre en gage » une valeur (ou un énoncé) tout en la maintenant cachée aux autres, avec la possibilité de révéler cette valeur plus tard en prouvant que c'est bien la valeur qui avait été mise en gage[1]. La mise en gage est conçue de telle sorte que la personne est liée à la valeur mise en gage.
En pratique, la mise en gage se fait en calculant une valeur de mise en gage à partir de la valeur que l'on veut cacher et en communiquant cette valeur de mise en gage à un destinataire. Par la suite, lorsque la valeur originellement cachée sera communiquée au destinataire, celui-ci pourra vérifier que la valeur qui lui a été révélée est bien la valeur qui a servi à calculer la valeur de mise en gage. Plus formellement, la mise en gage transforme une valeur en une paire de telle façon que 1) ne révèle aucune information sur , mais que, 2) ensembles, et permettent de révéler , et que 3) il est impossible de trouver tel que révèle .
Les mises en gage ont des applications importantes dans un certain nombre de protocoles cryptographiques, y compris le jeu de pile ou face sécurisé, les preuves à divulgation nulle de connaissance, les signatures numériques et les calculs sécurisés à plusieurs participants.
Le concept de mise en gage a été formalisé par Gilles Brassard, David Chaum et Claude Crépeau en 1988[2], mais le concept avait été utilisé sans être traité formellement avant cela[3],[4]. La notion de mise en gage est mentionnée dans les travaux de Manuel Blum[5], Shimon Even[6] et Shamir et coll[7]. Le terme anglais commitment scheme semble avoir été créé par Blum[4].
Une façon de visualiser un système de mise en gage est de penser à un expéditeur qui met un message dans un coffre-fort fermé à clé et qui donne le coffre-fort à un destinataire. Le message dans le coffre-fort est caché au destinataire qui ne peut pas ouvrir la serrure. Étant donné que le destinataire est en possession du coffre-fort, le message à l'intérieur du coffre-fort ne peut pas être changé. Par contre, le message peut être révélé au destinataire si l'expéditeur choisit de lui donner la clé à un moment donné.
Les interactions dans un système de mise en gage se déroulent en deux phases :
Dans les protocoles simples, la phase de mise en gage est constituée d'un seul message de l'expéditeur au destinataire. Ce message est appelé la mise en gage (ou l'engagement). Ce message est en fait une valeur que l'expéditeur a calculée à partir du message caché. Il est essentiel que la valeur mise en gage ne puisse pas être calculée par le destinataire à partir de la mise en gage (cette propriété est appelée la dissimulation - en anglais : hiding property). Une phase de révélation simple consisterait en un seul message, la révélation de la valeur originellement cachée, de l'expéditeur au destinataire, suivie d'une vérification effectuée par le récepteur. Il est important que l'expéditeur ne puisse pas calculer une autre valeur qui donnerait la même valeur de mise en gage que sa valeur cachée originale (cette propriété est appelée la liaison - en anglais : binding property).
Supposons qu'Alice et Bob veulent résoudre un certain différend en tirant à pile ou face. S'ils sont physiquement au même endroit, une procédure typique pourrait être :
Si Alice et Bob ne sont pas au même endroit, un problème se pose. Une fois qu'Alice a fait et annoncé son choix, Bob peut annoncer le résultat qui l'avantage sans qu'Alice puisse vérifier s'il dit vrai. De même, si Alice fait son choix et ne l'annonce pas, après que Bob ait lancé la pièce de monnaie et annoncé le résultat, Alice peut annoncer le résultat qui l'avantage sans que Bob puisse vérifier si elle dit vrai.
Alice et Bob peuvent utiliser la mise en gage pour contourner ce problème :
Pour que Bob puisse fausser le résultat en sa faveur, il doit être capable de calculer le choix d'Alice à partir de la valeur de mise en gage. Si l'algorithme de mise en gage est de bonne qualité, Bob ne peut faire ce calcul et, conséquemment, il ne peut fausser le résultat en sa faveur. De même, Alice ne peut pas influer sur le résultat, car un algorithme de bonne qualité ne lui permet pas de trouver un autre choix qui aurait la même valeur de mise en gage que celle qu'elle a annoncée[3],[5].