Loading
Notes d'étude
Study Reminders
Support
Text Version

Signatures numériques

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Foundations of Cryptography Dr. Ashish Choudhury Department of Computer Science International Institute of Information Technology-Bangalore Lecture – 51 Digital Signatures (Consulter la diapositive: 00:31) Bonjour tout le monde, bienvenue à cette conférence, donc le plan pour cette conférence est comme suit et cette conférence nous allons introduire une primitive cryptographique très populaire dans le cadre de la clé publique, à savoir les signatures numériques, et nous allons voir la motivation pour les signatures numériques, nous allons voir la comparaison entre les codes d'authentification de message et les signatures numériques. Nous discuterons des certificats et des infrastructures à clé publique ; un paradigme de hachage et de signature pour la signature de longs messages, et enfin, nous discuterons à un niveau très élevé de la façon dont nous pouvons réaliser le chiffrement authentifié dans le domaine de clé publique à l'aide de systèmes de signalisation. (Voir Heure de la diapositive: 01:03)Donc, commençons par la motivation pour les signatures numériques et avant d'entrer dans ce qui nous permet d'abord de comprendre l'importance des signatures physiques que nous utilisons dans le monde réel, nous savons tous que les signatures physiques ont des applications formidelles et un objectif principal est de vérifier l'authenticité d'un document. Par exemple, si je prends la copie numérique de ma carte Aadhar, elle a été signée par le ; elle est numériquement ; désolé, si je prends en considération la signature physique, si je considère par exemple, un chèque signé que je vous ai donné, alors si vous le soumettez à la banque, la banque peut vérifier l'authenticité de la vérification signée en vérifiant ma signature et le principal objectif de sécurité pour la signature physique est que même s'il y a une personne qui m'a vu signer plusieurs documents, il devrait être très difficile pour cette personne de forger une signature légitime sur ce document que je n'avais jamais signé dans le passé. Donc, l'objectif principal ici est essentiellement de vérifier l'authenticité d'un document. Aujourd'hui, les signatures numériques peuvent être considérées comme un analogue numérique des signatures physiques et elles ont des applications formidelles dans le contexte d'un scénario réel. Ainsi, par exemple, ils sont largement utilisés pour les certificats numériques et l'infrastructure à clé publique, donc quand je dis un certificat numérique, vous pouvez imaginer, par exemple, la carte numérique Aadhar. Donc, vous n'avez pas besoin de porter votre carte Aadhar dans le format physique, maintenant vous avez la carte Aadhar signée numériquement et si vous le soumettez à quelque endroit que ce soit vous êtes censé produire votre carte Aadhar, l'entité correspondante peut vérifier la signature numérique et accepter ou rejeter votre carte d'Aadhar signée numériquement, nous verrons quelle est exactement l'infrastructure à clé publique et comment les signatures numériques sont utilisées dans l'infrastructure à clé publique. Nous utilisons également des signatures numériques pour les mises à jour logicielles, donc chaque fois que nous achetons un logiciel pour la première fois, la clé de vérification du fournisseur qui me fournit le logiciel est fournie avec l'achat et je peux stocker la clé de vérification du fournisseur avec moi et plus tard sur si le fournisseur me donne quelques mises à jour pour le même logiciel je peux vérifier si les mises à jour proviennent de la source légitime ou non en vérifiant une signature sur le logiciel mis à jour provenant du fournisseur, nous utilisons aussi des signatures numériques pour la signature de contrat lorsque nous avons des applications légales. (voir Heure de la diapositive: 03:29) Donc, comprenons maintenant la définition formelle des signatures numériques, donc il s'agit d'un triplet d'algorithme, d'un algorithme de génération de clé, d'un algorithme de signature ou d'un algorithme de signature et d'un algorithme de vérification et il prend en charge les messages provenant de certains espaces de texte en clair connus du public, de sorte que l'algorithme de génération de clé produit deux clés ; puisque nous sommes dans le cadre de la clé publique ; une clé sera la clé de vérification qui sera disponible dans le domaine public. Et une autre clé sera sk, qui est la clé de signature et elle sera disponible uniquement avec le signataire. Ainsi, la façon dont cet algorithme de génération de clé est exécuté est la suivante. Donc, si je suis signataire, pour configurer ma clé, j'exécute l'algorithme de génération de clé et je fais ma clé de vérification disponible dans le domaine public. Nous supposons donc que la clé de vérification de ce qu'on appelle l'expéditeur, une copie authentifiée de ce qu'on appelle l'expéditeur sera disponible dans le domaine public. Comment exactement il sera fait en sorte que la soi-disant clé de vérification appartienne à l'expéditeur prévu sera assurée par l'intermédiaire d'une infrastructure à clé publique, mais pour le moment, supposons que nous avons des mécanismes pour nous assurer que la copie légitime ou authentique du signataire prévu est disponible dans le domaine public. A présent, pour signer un message, le signataire exécute l'algorithme de signature et génère une signature. Ainsi, l'algorithme de signature prend le message et la clé de signature et il n'a pas besoin d'être randomisé, donc si le signataire a le message m, il exécute un algorithme de signature et avec le message, il génère une signature. Maintenant, la signature avec le message est vérifiée en exécutant l'algorithme de vérification qui prend le (message, signature) et la clé de vérification et les sorties 0 ou 1, 0 signifie rejeter le message car il s'agit d'une signature non valide. 1 signifie qu'il accepte le message car il s'agit d'une signature valide. Maintenant, vous appelez une signature σ pour être une signature valide sur le message m par rapport à la clé de vérification vk si la vérification du message, la signature par rapport à la fonction de vérification et la clé de vérification vk me donne la sortie 1 et s'il y a une signature valide qui est reçue par un récepteur qui est vérifiée par rapport à la clé de vérification vk, alors elle garantit l'authenticité et l'intégrité de m. Parce que si je suis un récepteur et si je reçois un (message, signature) qui est une signature valide à l'égard de la clé de vérification d'un signataire désigné, alors il me garantit que les messages provenant du signe prévu, car jusqu'à ce que la falsification soit possible, il est très difficile pour un tiers d'agir ou d'avoir l'intention en tant que signataire et de produire un message signé au nom du signataire. Donc, nous allons maintenant aux propriétés du schéma de signature dont nous avons besoin. Donc, la première propriété est l'exigence de correction triviale qui nécessite que pour chaque paire de clé obtenue par l'algorithme de génération de clé et pour chaque message si le signataire a signé un message à l'aide de la clé de signature sk et plus tard la signature est vérifiée avec le même message m à l'aide de l'algorithme de vérification et de la clé de vérification correspondante vk, alors la sortie doit être 1 sauf avec une probabilité négligeable. Idéalement, nous prévoyons qu'il ne devrait y avoir aucune erreur dans l'algorithme de vérification de la signature si tout s'est passé correctement, mais la raison pour laquelle nous laissons une marge d'erreur négligeable dans cette définition est que dans l'instanciation de l'algorithme de génération de clé, il se peut que la clé publique et une clé secrète ne soient pas cohérentes avec chacune et ce que je veux dire par des moyens cohérents, par exemple si je suppose que si je courais le ; si j'utilise un algorithme de génération de clé RSA et que mon algorithme de génération est essentiellement de choisir les nombres premiers p et q. Et pour que le module soit le produit de ces 2 nombres premiers, alors si je choisis un algorithme randomisé pour choisir mes nombres premiers p et q, alors il peut arriver que je puisse finir par sélectionner des valeurs composites de p et q sans même savoir que j'ai choisi des valeurs composites p et q, dans ce sens même si mon algorithme de génération de clé m'a donné des paramètres incorrects qui ne peuvent arriver qu'avec cette probabilité négligeable, je ne serai pas au courant du fait. Et si j'utilise ce genre de composites p et q et que l'algorithme de signature ne produira certainement pas de signature qui sera acceptée par l'algorithme de vérification et c'est pourquoi nous donnons une marge d'erreur négligeable dans l'exigence de correction de la signature, alors que si vous générez vos paramètres en exécutant des algorithmes déterministes, en ce sens que vous avez choisi la valeur des nombres premiers p et q à l'aide d'algorithmes déterministes où il n'y a absolument aucune erreur de décroître en termes ; aucune erreur en termes de sélection des nombres premiers ou des composites, puis le schéma de signature qui en résulte N'aura pas d'erreur dans la propriété correcte, vient la propriété importante des schémas de signature, à savoir la sécurité et à un niveau très élevé, nous avons besoin de la même garantie ; garantie de sécurité que nous attendons des signatures physiques. Alors, rappelez-vous, comme je l'ai dit plus tôt pour les signatures physiques, la garantie de sécurité que j'ai besoin est que même si j'ai signé plusieurs documents et donné à vous, il devrait être très difficile pour vous de produire ma signature sur un message que je n'ai jamais signé plus tôt. Nous nous attendons à ce que la même chose tienne dans le contexte des signatures numériques, à savoir une entité qui ne connaît que la clé de vérification, mais qui ne connaît pas ma clé de signature, mais qui m'a vu signer ; signer plusieurs messages dans le passé à l'aide de la clé de signature de la clé de signature, pour une telle entité, il devrait être difficile de calculer ma signature sur un document que je n'avais jamais signé. (Voir Heure de la diapositive: 09:26) Alors, formalisons maintenant l'exigence informelle que nous avons discutée dans la dernière diapositive pour les signatures par cette expérience que nous appelons Sig – forge (joué entre un adversaire délimité par ordinateur et un challenger et à un niveau très élevé, le jeu est quelque chose de similaire que nous avions utilisé pour modéliser l'exigence de sécurité de l'exigence de falsification par rapport au code d'authentification du message. Donc, nous avons une phase de formation et nous avons une phase de sortie ; dans la phase de formation pour modéliser le fait que le vrai adversaire du monde aurait vu un signataire signant plusieurs messages dans le passé, nous permettons à l'adversaire de soumettre plusieurs messages de son choix et de voir la signature sur ces messages. Pour répondre à ces messages de phase de formation, le challenger exécute l'algorithme de génération de clés et signe tous ces messages à l'aide de la clé de signature inconnue qui n'est pas connue de l'adversaire. Mais la clé de vérification correspondante est donnée à l'adversaire et maintenant dans la phase de sortie, l'adversaire soumet un message et une contrefaçon et la définition de l'expérience est que nous disons que l'adversaire a gagné le jeu désigné comme disant que la sortie de l'expérience est 1, si et seulement si le message faux m * est différent des messages pour lesquels l'adversaire a eu la signature dans le passé. Et les signatures σ * est en effet une signature valide sur le message m * sous la clé de vérification vk et nous disons qu'un schéma de signature est impardonnable ou simplement sécurisé, si pour chaque adversaire polytime participant à cette expérience, la probabilité qu'il peut arriver avec succès de falsification est délimitée par une fonction négligeable dans le paramètre de sécurité. (Voir Heure de la diapositive: 11:09) Par conséquent, maintenant, nous comparons les deux primitives code d'authentification de message et signature numérique car à un niveau très élevé, l'objectif est le même: les objectifs de la primitive sont les mêmes: prévenir la falsification ou l'authenticité et l'intégrité, donc syntactiquement, un schéma de signature est composé d'un algorithme de génération de clé, d'un algorithme de signature et d'un algorithme de vérification, et ainsi un code d'authentification de message. La différence est que pour la signature, l'algorithme de génération de clé produit 2 clés, alors que pour le code d'authentification de message, l'algorithme de génération de clé génère une clé unique. Pour le code d'authentification de message, la même clé k est utilisée pour la génération de la balise ainsi que pour la vérification de la balise, alors que pour la signature différentes clés sont utilisées pour produire la signature et pour effectuer la vérification, donc c'est une différence sur le niveau syntaxique. Par conséquent, nous avons plusieurs avantages et inconvénients pour ces deux primitives, donc si nous considérons les systèmes de signature comme un accord clé n'est pas une tâche difficile, dans le sens, le signataire peut simplement exécuter l'algorithme de génération de clé et il peut rendre sa clé de vérification disponible dans un domaine public de manière authentique et n'importe lequel. Le vérificateur peut utiliser cette clé de vérification pour vérifier les signatures générées par le signataire. D'autre part, pour le code d'authentification des messages puisqu'il s'agit d'un élément clé symétrique, un accord clé est une tâche très, très exigeante. Si Sita veut faire une communication authentique avec 2 récepteurs, par exemple Ram et Hanuman, elle a besoin d'une paire de clés symétriques ou mac pour Ram et une autre clé mac indépendante pour Hanuman. Mais quand nous en venons à la signature, c'est bien, si elle n'a qu'une clé de signature et une clé de vérification qui résouseront le but pour chaque vérificateur potentiel. Par conséquent, lorsqu'il s'agit de systèmes de signature, ils sont vérifiés publiquement, le signataire signe le message, tout vérificateur peut simplement récupérer la clé de vérification du signataire et vérifier si la signature est valide ou non, alors que pour le code d'authentification de message, elle n'est pas vérifiée publiquement. Seul le récepteur ayant la même clé k, avec lequel l'expéditeur a généré la balise peut vérifier l'authenticité du message, balise. En conséquence, nous obtenons la balise, puisque les signatures numériques sont vérifiées publiquement qu'elles sont transférables, cela signifie que si Ram a obtenu des documents légitimement signés de Sita, alors elle peut la transmettre et la transférer à Hanuman, en prétendant que le document provient en effet de Sita. Hanuman peut également vérifier si tel est le cas ou non, mais ce n'est pas possible dans le cas d'un code d'authentification de message parce que son expéditeur Sita a calculé une balise d'authentification de message pour un message qui ne peut être vérifié que par Ram et jusqu'à ce que Ram transfère la clé kSR à Hanuman, l'authenticité de la balise ne peut pas être vérifiée par Hanuman, dans ce sens les codes d'authentification de message ne sont pas transférables. Et à cause de ces biens transférables, les signatures numériques offrent une non-répudiation qui est très utile dans les applications légales, à savoir, si Ram obtient un contrat signé de Sita et latéralsi une violation par Sita en ce qui concerne les termes mentionnés dans le contrat, alors le Ram peut aller à n'importe quel expert juridique dire, Hanuman et prouver qu'effectivement il a reçu un contrat signé de Sita. Mais maintenant, Sita ne suit pas les termes et conditions qui sont mentionnés dans le document et Hanuman peut vérifier les réclamations de Ram, mais cela n'est pas nécessaire dans le code d'authentification du message, jusqu'à ce que Ram puisse transférer la clé mac à Hanuman ou à un tiers. Ainsi, il se peut que les signatures numériques aient toutes les bonnes fonctionnalités et que les codes d'authentification des messages aient toutes les mauvaises fonctionnalités. Mais ce n'est pas le cas car si vous considérez l'aspect computationnel des codes d'authentification des messages et des signatures numériques, il s'avère que la quantité de calculs nécessaires pour les signatures numériques est d'ordre de plusieurs ordres de grandeur par rapport à la quantité de calculs requis pour les codes d'authentification des messages ; en particulier, les schémas de signature que nous allons voir basés sur la fonction RSA et le problème Diffie Hellman, où nous allons effectuer une exponentiation modulaire, modulo un très grand module, alors que comme nous l'avions déjà vu, les codes d'authentification de message peuvent être Conçu très efficacement à l'aide de chiffrements par bloc. Il s'agit d'un compromis entre le code d'authentification de message et les signatures numériques selon que vous préférez l'efficacité par rapport à la vérifiabilité publique, la non-répudiation, la transférabilité, vous pouvez utiliser le code d'authentification de message ou les signatures numériques. (Référez-vous à l'heure de la diapositive: 16:18)Alors, discutons maintenant d'une application très pratique de la signature numérique, à savoir celle de l'infrastructure à clé publique et des certificats numériques. Donc, jusqu'à présent, je disais constamment que s'il y a une entité dire, Sita, à droite, qui a exécuté l'algorithme de génération de clé d'un schéma de chiffrement de clé publique et a obtenu la clé publique et la clé secrète, nous supposons que la clé publique de Sita est disponible dans le domaine public de façon authentique. Cela signifie, n'importe qui, n'importe quel récepteur ou toute entité, Ram qui veut faire une communication sécurisée avec Sita peut rechercher la clé publique de ce que l'on appelle Sita et nous supposons qu'il existe un mécanisme pour Ram pour vérifier que si la clé publique appartient effectivement à la Sita ou non, nous supposons qu'une copie authentique de la clé publique pk de la Sita prévue est disponible dans le domaine public. Mais maintenant, nous aimerions répondre à cette question que, en premier lieu, Ram peut vérifier si le pk de la clé publique, qui est disponible dans le domaine public, est la clé publique de la soi-disant Sita ou pas, pas vrai. Donc, nous aimerions résoudre ce problème et résoudre ce problème, nous supposons que nous avons ou toutes les parties dans le système ont accès à une autorité de confiance et nous appelons l'autorité de certification de CA, que je dénote par M considérant, c'est le maître. Et ce maître aura sa propre clé de signature et clé de vérification pour un schéma de signature sécurisé et nous supposons que la clé de vérification de ce maître est à la disposition de toute entité Ram qui veut vérifier l'authenticité de la clé publique de Sita, c'est une supposition de confiance que nous faisons dans toute cette solution, pas vrai. Maintenant, pour convaincre Ram que le pk de la clé publique appartient à Sita, ce que Sita peut faire est, il peut, dans la ligne hors ligne, il peut aller au maître et il peut demander le maître ou l'autorité de certification qui s'il vous plaît, certifier mon pk de clé publique. Et pour faire la certification, ce que l'autorité peut faire est, elle peut effectuer la vérification, c'est-à-dire vérifier les références de Sita, elle peut vérifier s'il s'agit bien de la bonne Sita ou non, ce qui est exactement ses références et ainsi de suite et si les données d'identification sont vérifiées avec succès, l'autorité principale ou l'autorité de certification peut émettre un certificat numérique qui, fondamentalement, est la signature du maître sur un certificat indiquant que la clé publique ou la clé de chiffrement de l'entité Sita est pk, pas vrai. Donc, c'est comme ça que le certificat numérique ou un document signé numériquement signé par l'autorité de certification et donné à Sita, tout cela se passe dans la droite hors ligne, rien à ce jour, aucune communication n'a eu lieu entre Sita et Ram, tout ce que Sita fait en dehors de la ligne. Maintenant, une fois que ce certificat est obtenu par Sita, ce que Sita peut faire ; si elle veut maintenant convaincre Ram que le pc clé publique lui appartient, ce qu'elle peut faire, c'est qu'elle peut transférer la clé publique à Ram et qu'elle peut envoyer un certificat délivré par l'autorité de certification et maintenant, vous voyez que Ram peut vérifier si la soi-disant clé publique qui est obtenue de Sita appartient effectivement à Sita ou non parce que ce qu'elle a à faire est, elle doit juste vérifier si le certificat signé numériquement ou la signature est en effet la signature de droite pour le message de la clé publique de l'expéditeur ou de la Sita ’ s Clé publique est pk, sous la clé de vérification de l'autorité de certification que nous supposons est disponible pour l'entité Ram. Si la vérification du certificat est un succès, Ram est convaincu que le pk de clé publique appartient à l'entité appelée Sita et que toute cette configuration ici dont nous avons discuté ici est ce que nous appelons la configuration de l'infrastructure à clé publique ou la configuration de l'ICP, lorsque l'hypothèse de confiance minimale que nous faisons ici est que nous disposons de l'autorité de certification disponible et que sa clé de vérification pour un schéma de signature est disponible avec chaque entité du système. Prouver ses lettres de créance et obtenir un certificat numérique indiquant qu'en effet sa clé publique est pk et maintenant si Sita veut envoyer ou mettre en place sa clé publique, ce qu'elle peut faire est, elle peut mettre un clk de clé publique dans le domaine public avec ce certificat numérique. Ou si elle veut, elle peut envoyer une clé publique à toute entité Ram qui veut faire une communication sécurisée avec Sita avec le certificat numérique et l'authenticité de la clé publique peut être vérifiée en vérifiant le certificat et la soi-disant clé publique, afin de résoudre tout notre problème de mettre en place des copies authentiques de la clé publique pour les entités, nous devons juste supposer que nous avons une autorité de confiance appelée autorité de certification disponible dans notre système dont la clé de vérification est disponible avec tout le monde. Et tout cela s'appelle la configuration de l'ICP, dans cet exemple, je viens d'utiliser un ’ CA, donc vous vous demandez peut-être que s'il y a des millions de Sitas qui veulent obtenir une clé publique vérifiée par le maître puis qui mettra trop de charge sur une autorité de certification unique ou si la clé de signature de l'autorité de certification est compromise, alors n'importe qui peut falsisigner des documents signés numériquement, toute Sita corrompue peut créer ce certificat de maître ’ sur n'importe quelle clé publique non valide et cela créera un problème dans l'ensemble des systèmes. Donc, ce que nous pouvons faire, c'est au lieu d'avoir une autorité de certification unique, nous pouvons imaginer que nous avons une hiérarchie d'autorité de certification, et ainsi de suite, mais l'idée de haut niveau est que tout simplement en faisant une petite supposition de confiance, à savoir la présence d'une autorité de certification digne de confiance, tout ce problème de la mise en place de copies authentiques de la clé publique peut être résolu. (Voir Heure de la diapositive: 23:05)Ensuite, nous discutons d'un paradigme intéressant, que nous appelons paradigme de hachage et de signe, qui peut être utilisé pour signer des messages longs arbitraires et ceci est similaire à vos paradigmes de hachage et de Mac que nous avions utilisés dans le paramètre de clé symétrique. Donc, le scénario est le suivant: nous avons un schéma de signature qui est sécurisé mais qui peut prendre en charge les signatures sur des messages de longueur l bits et on nous donne une fonction de hachage résistant aux collisions qui permet de mapper des chaînes de bits de longueur arbitraire à une sortie de chaînes de bits l . Et notre objectif est de trouver le schéma de signature sécurisé en combinant ces deux primitives qui peuvent signer des messages de n'importe quelle longueur, pas seulement des chaînes de bits de longueur l bits. Mais la taille de la signature est de taille fixe, c'est-à-dire que l'espace de signature de ce nouvel algorithme de signature doit être le même que pour le schéma de signature sécurisé que nous avons donné, c'est-à-dire que si mon schéma de signature sous-jacent que j'ai donné produit la signature, la longueur l bits, alors il importe peu quelle est la taille du message ; en utilisant le schéma de signature composé, le nouveau schéma de signature, peu importe la longueur du message, ma taille de signature sera de n bits, sa taille sera indépendante de la taille du message que je vais signer et la façon dont nous allons combiner ces deux éléments. 2 primitives sont les suivantes: Pour signer un message, m, qui peut être de n'importe quelle longueur, ce que nous faisons en premier est que nous hachons le message et une fois que nous hachons le message, nous obtenons un condensé de message du message qui est de longueur l bits et maintenant, nous calculons la signature sur le hachage du message et cela est considéré comme la signature globale pour mon message l, pour vérifier la signature que nous faisons les opérations correspondantes, si vous avez une paire (message, signature), ce que nous faisons c'est que nous avons d'abord haché le message et ensuite nous vérifiables si le composant signature que nous avons reçu est en effet une signature valide sur le hachage du message que nous avons Obtenu. Si l'algorithme de vérification est 0, alors la sortie globale du nouvel algorithme de vérification est 0 ce qui signifie que nous rejetons la paire (message, signature), d'autre part si la sortie de l'algorithme de vérification du schéma de signature sous-jacent est 1, puis nous acceptons le message donné, la paire signature dans l'algorithme de vérification de niveau supérieur. (Référez-vous à la diapositive: 25:40) Maintenant, nous pouvons prouver que si le schéma de signature donné pour les messages à longueur fixe est sécurisé et que si ma fonction de hachage est une fonction de hachage résistante aux collisions, alors le schéma de signature pour signer des messages arbitrairement longs que nous avons obtenus est sécurisé, et une preuve de sécurité pour cela est à nouveau plus ou moins la même que celle que nous avons utilisée pour prouver la sécurité du paradigme de hachage et Mac, laissez-moi vous donner un aperçu de la preuve de sécurité ici. Alors, imaginez que nous considérons un adversaire participant à l'algorithme de falsification de signature à l'encontre de ce nouveau schéma de signature et disent qu'il a demandé la signature de messages dans l'ensemble Q composé de q nombre de messages et comme par la règle du schéma de signature que nous avons construit chaque signature n'est rien d'autre qu'une signature sur le hachage du message que l'adversaire a demandé. Et maintenant, imaginez qu'avec une très forte probabilité dans cette expérience de signature, l'adversaire A après avoir reçu les signatures sur les messages dans l'ensemble Q pourrait produire une contrefaçon sur le message m * qui n'appartient pas à l'ensemble Des messages pour lesquels il a vu les signatures et si tel est le cas, il pourrait y avoir 2 possibilités. La possibilité 1 est qu'il existe au moins 1 message dans l'ensemble de messages pour lesquels l'adversaire a la signature dit mi de telle sorte que le hachage du message mi et le hachage du message faux m * sont identiques. Si c'est le cas, il s'avère que le message mi ainsi que le message m * produiront le même signe σ * et que l'adversaire a déjà vu le hachage du message mi, il est σ *, il peut tout simplement soumettre la signature du message, le nouveau message m * est également σ * et il s'agit d'une contrefaçon valide, mais si c'est le cas, alors cela signifie que l'adversaire sait comment trouver une paire de collision pour la fonction de hachage sous-jacente dans le temps polynomial. Mais cela va à l'encontre de l'hypothèse que ma fonction de hachage sous-jacente est une fonction de hachage résistante aux collisions. D'autre part, la seconde possibilité pourrait être que le faux message m * est tel que sa valeur de hachage est différente de la valeur hachée de tous les messages pour lesquels l'adversaire a vu la signature, si c'est le cas alors le seul moyen que le message forgé m * et σ * est une contrefaçon valide est que l'adversaire a calculé la signature sur le message de longueur fixe, à savoir H (m *), de zéro sans connaître réellement la clé de signature sk. Mais si c'est le cas, alors cela signifie qu'il existe une chaîne de bits de longueur l bits pour laquelle l'adversaire peut calculer la signature avec une forte probabilité, même sans connaître la clé de signature, mais cela va à l'encontre de l'hypothèse que mon schéma de signature de longueur fixe est sécurisé. Donc, ce sont les 2 possibilités avec lesquelles n'importe quel adversaire pourrait venir avec une contrefaçon réussie avec une forte probabilité contre le nouveau schéma de signature que nous avons construit. Et comme nous avons soutenu que ces deux possibilités ne peuvent se produire qu'avec la probabilité négligeable. Nous pouvons formaliser cette intuition rigoureusement de la même manière que nous avons utilisé pour prouver la sécurité de notre paradigme de hachage et mac, mais je ne vais pas dans les détails formels. (Référez-vous à la diapositive: 29:21)Maintenant, permettez-moi de terminer cette conférence en posant la question suivante: il est possible de combiner les signatures et le chiffrement dans le cadre de la clé publique pour obtenir une notion équivalente de chiffrement authentifié. Alors, rappelez-vous dans le monde clé symétrique nous avons vu que s'il y a un émetteur et un récepteur sans information pré-partagée et connecté par un canal public non sécurisé. Ensuite, en utilisant un schéma de cryptage authentifié que nous pouvons obtenir en combinant de façon générique un cryptage symétrique sécurisé CPA et une MAC sécurisée, nous obtenons l'effet d'un canal virtuel sécurisé entre l'expéditeur et le récepteur, qui satisfait 3 propriétés, à savoir, la vie privée, l'authenticité et l'intégrité. Une question naturelle sera que si nous allons maintenant dans le monde de la clé publique, nous savons comment atteindre la vie privée à l'aide du chiffrement. Et nous avons soutenu jusqu'à présent que comment nous pouvons parvenir à l'intégrité et à l'authenticité dans le domaine de la clé publique à l'aide de schémas de signature, il est donc possible maintenant de combiner ces deux primitives par exemple en utilisant le cryptage, puis d'authentifier l'approche et d'obtenir un schéma de cryptage authentifié, à savoir l'effet d'un canal virtuel sécurisé entre l'expéditeur et un récepteur satisfaisant à la vie privée, à l'authenticité et à l'intégrité. (Voir Heure de la diapositive: 30:40)Il s'avère que oui, nous pouvons obtenir l'effet d'un schéma de chiffrement authentifié, même dans le cadre de la clé publique par une primitive que nous appelons la signature, signe parce que nous allons utiliser un schéma de signature et une cryption parce que nous allons utiliser un schéma de chiffrement, mais il s'avère que la méthode naïve de combiner un schéma de signature et un schéma de chiffrement ne va pas vous donner un schéma de cryptage authentifié. En fait, il s'avère que les idées du monde clé symétrique peuvent échouer complètement dans le monde de la clé asymétrique et ce que nous allons montrer ici, c'est si vous voyez le chiffrement puis authentifier l'approche qui, nous le savons, donne toujours un schéma de chiffrement authentifié dans le monde de la clé symétrique peut complètement échouer, si exécuté na ï vely dans le monde de la clé publique. Donc, pour que mon point de vue soit clair, imaginez que nous nous sommes donné une instanciation sécurisée de la CCA du système de cryptage des clés publiques. Et pour le moment, supposons qu'on nous donne un schéma de signature sécurisé. À l'heure actuelle, nous n'avons pas encore vu de programme de signatures de candidats, mais pour le moment, nous nous sommes vu accorder un programme de signatures de candidats. Maintenant, ce que je vais démontrer, c'est que si je combine ces deux primitives à l'aide de l'approche de chiffrement, alors nous n'obtiens pas ce que nous demandons exactement. Donc, pour que mon point de vue soit clair, nous avons 3 entités dans le système ; Alice, Bob et Charlie, vous pouvez imaginer que le Bob est un professeur de mathématiques pour la classe et Alice et Charlie sont 2 des étudiants et nous imaginons que chaque entité du système possède sa propre paire de clé de chiffrement et de clé de déchiffrement et sa propre paire de clé de signature et de clé de vérification. Par exemple, nous supposons qu'Alice a sa paire de clé de chiffrement et de clé de déchiffrement.