Non seulement les schémas de cryptage peuvent être aléatoires, mais dans certains cas (par exemple, le cryptage à clé publique ), ils doivent être randomisés. Ce n'est pas un problème car nous avons besoin d'un schéma de chiffrement pour être correct , c'est-à-dire que pour tout message et toute clé il contient
sur le caractère aléatoire .mk
Pr[ DEC( ENC(k,m,R) )=m]=1
R
La raison pour laquelle les schémas de clés publiques doivent être aléatoires provient de la façon dont nous définissons la sécurité: nous ne souhaitons pas que le texte chiffré laisse fuir des informations sur le message chiffré. L'exemple classique est le suivant. Supposons que soit la clé publique et la clé secrète, respectivement, et que l'adversaire intercepte un message chiffré envoyé à une unité sur le terrain. L'adversaire sait que le message est "ATTACK" ou "RETREAT", mais ne sait pas lequel. Une chose que l'adversaire peut faire est de crypter les deux messages en utilisant le public . laissez et . Si(pk,sk)cpkcA=ENCpk("ATTACK ")cR=ENCpk("RETREAT")ENCest déterministe, l'adversaire peut découvrir le message avec certitude en comparant à et .ccAcR
La façon dont cette notion est formellement définie est connue sous le nom de sécurité sémantique :
Un schéma de chiffrement est sémantiquement sécurisé si un adversaire ne peut pas gagner le jeu suivant avec une probabilité sensiblement supérieure à :A1/2
- Un challenger génère des clés et envoie la clé publique à l'adversaire.C(pk,sk)pk
- A choisit deux messages de longueur égale et et les donne tous les deux à .m0m1C
- C sélectionne uniformément un bit et renvoie .b∈{0,1}ENC(mb)
- A doit dire quel message a été chiffré: ou , c'est-à-dire qu'il doit sortir le bit .m0m1b
(J'omets le paramètre de sécurité , qui est essentiel pour définir "négligeable" ou "perceptible"; nous devons supposer que la génération des clés dépend de , et que l'avantage est supérieur à est négligeable dans , c'est-à-dire moins que )
κκA1/2κκ−ω(1)