Loading
Notes d'étude
Study Reminders
Support
Text Version

Chiffrement de clé symétrique

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 Prof. Dr. Ashish Choudhury (Former) Infosys Foundation Career Development Chair Professeur Indian Institute of Technology-Bengaluru Lecture-02 Symmetric Key Encryption Bonjour tout le monde, bienvenue à la deuxième conférence. Le plan de cette conférence est le suivant. (Référez-vous à la diapositive: 00:36) Nous discuterons des problèmes fondamentaux que pose la cryptographie, à savoir le problème des accords clés et un problème de communication sécurisé. Nous discuterons ensuite des différents types de primitives cryptographiques, à savoir les primitives de clés symétriques et les primitives de clés asymétriques. Ensuite, nous allons commencer notre discussion sur les primitives de clés symétriques où nous verrons la syntaxe du mécanisme de chiffrement symétrique et la définition informelle de la sécurité, puis nous terminerons la conférence avec le principe Kerckhoffs ’. (Voir la diapositive: 01 :05) Donc, si vous vous souvenez de la dernière conférence, nous avons discuté que le problème central que pose la cryptographie est celui de la communication sécurisée. Et il s'avère que la communication sécurisée est en fait résolue par la résolution de 2 problèmes de base et que le premier problème central est celui d'un accord clé. Donc, dans le problème clé de l'accord, le scénario est le suivant. Nous avons 2 entités un expéditeur et le destinataire qui ne se connaissent pas et qui n'ont pas d'informations pré-partagées. Et ils se rencontrent pour la première fois et l'exigence d'un protocole d'accord clé est que, comme pour le protocole, l'expéditeur et le récepteur devraient se parler à l'autre sur un canal public et il devrait être garanti à l'expéditeur qu'effectivement il parle au récepteur Ram et vice versa. Et à la fin du protocole, l'émetteur et le récepteur devraient générer une clé commune k. L'exigence en matière de sécurité du protocole de l'accord clé est que même si l'expéditeur et le destinataire sont en train de parler publiquement et s'il y a un tiers qui écoute effectivement la communication ou note la totalité de la communication qui se passe entre l'expéditeur et le destinataire, alors le tiers ne devrait pas être en mesure de déterminer quelle est exactement la clé que l'expéditeur et le destinataire vont produire à la fin du protocole. Donc, c'est comme dire que si je considère une classe et le protocole d'accord clé devrait exiger que si je veux me mettre d'accord sur une clé avec un étudiant en particulier, puis utiliser le protocole de l'accord clé, je devrais criez quelque chose dans la classe. Et en réponse à ce que l'étudiant en particulier devrait récupérer quelque chose et en utilisant ce que je lui ai communiqué et ce qu'il m'a communiqué, tous les deux devraient être en mesure de calculer une clé commune et personne d'autre dans la classe qui ont réellement vu les messages que j'ai communiqué à cet étudiant particulier et que l'étudiant m'a communiqué Ne devrait pas être en mesure de comprendre ce qui est exactement la clé que j'ai et que l'étudiant en particulier va générer. C'est le premier problème de base que pose la cryptographie. Et ce sera le thème de la seconde moitié du cours, où nous verrons comment utiliser la cryptographie à clé publique que nous pouvons résoudre ce problème clé de l'accord. (Référez-vous à la diapositive: 03:19) Le deuxième problème de base qui est abordé par la cryptographie est celui de la communication sécurisée. Et voici le décor est le suivant. Nous imaginons que l'expéditeur et le récepteur ont maintenant une clé secrète k qui a été acceptée par un moyen magique dans ce contexte, en fait, en exécutant un protocole d'échange clé. Nous imaginons donc que l'expéditeur et le récepteur ont exécuté un protocole d'échange de clés sécurisé, et qu'en conséquence, ils ont une clé commune déjà disponible avec eux. Maintenant, en utilisant la clé commune, l'objectif de l'expéditeur et du récepteur est de parler sur un canal public de sorte que la confidentialité de la communication et l'intégrité de la communication soient assurées. Par confidentialité, je veux dire que tout tiers qui n'a pas la connaissance de la clé ne devrait pas être en mesure de comprendre ce qui est exactement le contenu, que l'expéditeur et le destinataire échangent entre eux. Et par intégrité, je veux dire que s'il y a un tiers qui interceptent effectivement une partie de la communication et essaie de changer le contenu des messages, alors il devrait être détectable aux deux extrémités. C'est donc le deuxième problème abordé par la cryptographie et ce sera le thème de la première moitié du cours, à savoir la cryptographie symétrique, où nous supposerons que, d'une manière ou d'une autre, l'expéditeur et le destinataire ont déjà accepté la clé et notre objectif sera de résoudre les problèmes de confidentialité et d'intégrité. (Référez-vous à la diapositive: 04:39) Donc, à peu près en cryptographie, nous utilisons deux types de primitives. Le premier type de primitives est les primitives de clé symétrique, qui sont également appelées primitives de clé privée. Et ici, la même clé va être utilisée tant par l'expéditeur que par le récepteur. C'est pourquoi le nom des primitives de clés symétriques ou la cryptographie à clé privée. Symmétrique car il est de nature symétrique. La même clé est utilisée tant à la fin des expéditeurs qu'à la fin des récepteurs. Et le nom de la cryptographie à clé privée parce que la clé k qui est commune à la fois à l'expéditeur et au récepteur sera privée, elle ne serait pas disponible dans le domaine public. Maintenant, il y a à la fois des pour et des contre de ces types de primitives. Le bon côté de ces primitives est qu'elles sont très efficaces sur le plan informatique dans la pratique. Et l'inconvénient de ces primitives est que l'accord clé va être un gros problème. Que toutes ces primitives fonctionnent sous l'hypothèse que la clé commune a déjà été acceptée par un mécanisme magique, et qui est une grande supposition. Il est donc difficile de s'assurer que l'expéditeur et le destinataire ont la même clé. C'est un inconvénient de ces primitives. Le second type de primitives est appelé primitives asymétriques ou primitives cryptographiques à clé publique où la primitive est gérée avec 2 clés. L'une des clés qui est le public la clé sera disponible dans le domaine public alors que l'autre clé, à savoir la clé secrète ne sera disponible qu'à l'une des entités ou dans le contexte du schéma de cryptage, elle sera disponible uniquement avec le récepteur. Cela signifie que cela a une nature asymétrique. C'est pourquoi le nom est une primitive asymétrique. Et la raison pour laquelle on l'appelle primitive de clé publique est qu'une des clés est disponible dans le domaine public. Encore une fois, il a ces types de primitives ont les deux plus aussi bien que les inconvénients. Le bon côté de ces primitives est que vous n'avez pas besoin d'un accord clé. Cela signifie que si je prends un système public de chiffrement par exemple, il n'est pas nécessaire de conclure un accord clé. Qui veut crypter un message pour moi, il peut prendre ma clé publique qui sera disponible dans le domaine public. Je n'ai donc pas besoin de se mettre d'accord sur une clé avec cet expéditeur particulier. L'inconvénient de ce type de primitives est qu'elles sont inefficaces en termes de calcul, ce qui signifie que la quantité de calcul qui est impliquée dans ce type de primitive est de plusieurs ordres de grandeur par rapport au calcul requis dans les primitives de clés symétriques. En pratique, nous utilisons une combinaison des deux. Donc quand nous allons liquidera notre cours et que nous discuterons des protocoles du monde réel comme SSL, nous verrons comment nous combinons ces deux primitives pour obtenir le meilleur des deux mondes. (Référez-vous à la diapositive: 07 :19) Maintenant, commençons notre discussion sur les systèmes de chiffrement à clé privée ou symétriques. Donc, à un niveau très élevé, l'objectif est de suivre. Le réglage est le suivant, nous avons un émetteur et le récepteur et par un mécanisme magique, nous supposons qu'une clé aléatoire a été partagée entre l'expéditeur et le récepteur. Donc je dénote la clé comme k qui va en fait être une chaîne de caractères. Maintenant l'expéditeur est intéressé d'envoyer un message m, ce qui sera encore une chaîne de bits, et dans le jargon cryptographique, on appelle cette chaîne m pour être le texte en clair. Maintenant, en utilisant la clé, l'expéditeur va utiliser un algorithme de chiffrement, qui prend le message et la clé comme entrée. Et il produit une autre chaîne de bits désignée C, qui est le texte chiffré ou le texte de brouillage, qui va être communiqué sur un canal public au récepteur. A l'extrémité réceptrice, le récepteur va prendre le texte chiffré qui est une chaîne de bits, et la clé qui est la même clé avec laquelle l'expéditeur a utilisé le processus de chiffrement et il va utiliser un algorithme de déchiffrement. Maintenant, l'algorithme de déchiffrement va prendre le texte de brouillage et la clé et il va générer le texte en clair que l'expéditeur a chiffré à l'aide de l'algorithme de chiffrement. Donc la raison pour laquelle ce mécanisme de chiffrement est appelé mécanisme de chiffrement symétrique est que nous avons une symétrie que la même clé est utilisée tant pour le chiffrement que pour le déchiffrement. (Référez-vous à la diapositive: 08 :51) Avant d'entrer dans la description officielle d'un processus de chiffrement symétrique, essayons d'abord de comprendre la différence entre un algorithme déterministe et un algorithme aléatoire. Dans un algorithme déterministe, la sortie est une fonction déterministe de l'entrée. Cela signifie que si nous considérons la transition droite à l'intérieur de l'algorithme, le flux de l'entrée vers la sortie est toujours une fonction déterministe. Ce que je veux dire par là est, si j'exécute un algorithme déterministe sur une entrée x 100 fois, je vais obtenir la même sortie y 100 fois. Je n'obtiens pas une sortie différente qui signifie que la sortie Y est une fonction déterministe de l'entrée x. Alors que dans un algorithme aléatoire, le flux de l'entrée vers la sortie n'est pas déterministe. Et le flux va être décidé par la valeur de chaînes de bits aléatoires qui vont être générées à l'intérieur de l'algorithme, dans le cadre de l'algorithme. Cela signifie que, dans un algorithme aléatoire, il n'est pas garanti que si j'appelle cet algorithme avec la même entrée et de nouveau, il n'est pas garanti que je vais obtenir la même sortie. La sortie peut dépendre de la séquence de bits aléatoires, que je vais générer à l'intérieur de l'algorithme. Et selon la valeur de ces bits aléatoires, quel chemin j'ai suivi à l'intérieur de l'algorithme. Il s'agit donc d'une différence de très haut niveau entre un algorithme déterministe et un algorithme aléatoire. (Reportez-vous à la page Heure de la diapositive: 10 :17) Maintenant, voyons la syntaxe d'un schéma de chiffrement symétrique. Ainsi, tout schéma de chiffrement de clé symétrique, qui est également appelé comme un algorithme de chiffrement, sera composé de 3 algorithmes. Le premier algorithme est l'algorithme de génération de clé, qui est indiqué par Général Cet algorithme ne va pas prendre d'entrée externe. Ce que cet algorithme va faire, c'est comme faisant partie de l'algorithme à l'intérieur il y aura des chaînes de bits aléatoires qui vont être générées, ce que je dénote par cette notation particulière. Quand j'écris cette notation que quelqu'un utilise la pièce, je veux dire qu'à l'intérieur de l'algorithme, des chaînes de bits aléatoires vont être générées et basées sur la valeur de cette chaîne de bits, cette sortie va être déterminée. La sortie de cet algorithme de génération de clé est une clé désignée par le symbole k. Et puisqu'il s'agit d'un algorithme aléatoire, chaque fois que j'exécute l'algorithme de génération de clé, je suis obligé d'obtenir une sortie différente, je n'obtiens pas la même sortie. La syntaxe que nous utilisons pour désigner l'algorithme de génération de clé est la suivante. Nous disons que l'algorithme de génération de clé Gen, il ne prend aucune entrée. C'est pourquoi les crochets sont laissés vides car ils ne prennent aucune entrée externe. Et il va générer une clé que je dénote par k. Et ce k appartient à un ensemble plus large, ce k calligraphique, qui est l'ensemble de toutes les clés possibles qui est l'algorithme de génération de clé peut produire. Et l'important ici est que puisque cet algorithme est un algorithme aléatoire, c'est pourquoi je ne dis pas que la sortie de Gen a attribué une clé de valeur, au lieu de dire que la sortie de Gen va prendre l'une des valeurs possibles k de l'ensemble de toutes les clés possibles. Je n'utilise pas l'opérateur d'affectation car il ne s'agit pas d'une fonction déterministe. Il s'agit d'une fonction randomisée, il s'agit d'un algorithme aléatoire. Ici, ce K calligraphique (la capitale K) est l'ensemble de toutes les clés possibles que l'algorithme de génération de clés pourrait produire. Par exemple, si nous savons que l'algorithme de génération de clé va générer une clé de 256 bits, alors je sais que ce K calligraphique est l'ensemble de toutes les chaînes de 256 bits possibles, à savoir, l'espace clé K est 2 à la puissance à 256. Et comme je l'ai dit tout à l'heure, cet algorithme de génération de clé va être un algorithme aléatoire. Le deuxième algorithme de tout schéma de chiffrement de clé symétrique est l'algorithme de chiffrement appelé Enc. Et il va prendre 2 entrées externes, à savoir le texte en clair que l'expéditeur veut chiffrer, qui est une chaîne de bits que j'ai notée par le symbole B, et la clé k, que l'algorithme de génération de clé aurait produit. Et en dehors de ces 2 entrées, il a une entrée interne, à savoir les pièces internes aléatoires, qui sont générées ou les bits aléatoires qui sont générés dans le cadre de ce processus de cryptage. Par conséquent, cet algorithme de chiffrement est un algorithme aléatoire. Donc, en se basant sur le message, l'espace clé et les bits aléatoires qui sont générés à l'intérieur de l'algorithme de chiffrement, l'algorithme de chiffrement va générer un texte chiffré comme c. Donc, comme je l'ai dit, puisque l'algorithme de chiffrement pouvait générer des bits aléatoires internes pour décider du résultat c, il s'agit d'un algorithme aléatoire. Et la syntaxe que nous utilisons pour désigner l'algorithme de chiffrement est la suivante: nous disons que le chiffrement du texte en clair m (entre les crochets que j'écris le message m comme entrée) est l'entrée externe avec cette fonction de chiffrement et la clé k est placée sous forme de sous-script. Je dirai que le message m est crypté sous la clé k. Et puisque cet algorithme est un algorithme aléatoire, je n'utilise pas l'opérateur d'affectation pour indiquer la sortie de ce algorithme de chiffrement. Au lieu de cela, je dis que la sortie de cet algorithme de chiffrement va être l'un des algorithmes de chiffrement possibles de l'ensemble du texte de chiffrement que votre algorithme de chiffrement pourrait produire. Comme ce processus de cryptage est un algorithme aléatoire, ce que cela signifie, c'est que même si j'appelle ce processus de cryptage avec la même valeur de m et la même valeur de k plusieurs fois, je vais obtenir un code de chiffrement différent parce que chaque fois que j'appelle ce processus de chiffrement, l'ensemble des bits de bits aléatoires qui sont générés dans le cadre de l'algorithme sera différent. Et puisque c va être une fonction du message, la clé et les bits aléatoires internes, la valeur de c sera différente pour différents appels de c. C'est donc la syntaxe de l'algorithme de chiffrement. Maintenant, l'algorithme de déchiffrement prend le texte de chiffrement c comme l'entrée externe et la clé k qui a été générée par l'algorithme de génération de clé, en retour il produit le texte en clair. La syntaxe que je respecte pour désigner l'algorithme de déchiffrement est la suivante: nous disons que le déchiffrement de l'entrée c ici c est l'entrée externe, qui est alimentée par la fonction de déchiffrement avec la clé k. Je dirai que le décryptage du texte chiffré sous la clé k va produire le message m. Le message m appartient au plus grand ensemble de texte en clair possible, à savoir M, qui est l'espace de texte en clair. Notez que mon algorithme de déchiffrement ici est une fonction déterministe. Il n'y a pas de chaînes de bits aléatoires qui sont générées à l'intérieur de l'algorithme de déchiffrement pour déterminer le résultat m. Par conséquent, je n'utilise pas la notation de la flèche pour indiquer le résultat du déchiffrement. J'utilise plutôt l'opérateur d'affectation pour indiquer le résultat de la fonction de déchiffrement. Ce que je veux dire par là c'est que si j'appelle l'algorithme de décryptage plusieurs fois avec la même valeur de k et la même valeur de c, je suis obligé d'obtenir le même m encore et encore, je n'obtiens pas différent m pour les différents invocations de Deck sur la même valeur de c et k. En ce sens, c'est une fonction déterministe. Par conséquent, nous utilisons l'opérateur d'affectation pour indiquer la sortie de la fonction déc. Voici donc la syntaxe de votre algorithme de génération de clé, algorithme de chiffrement et algorithme de déchiffrement. Notez que nous avons exigé que l'algorithme de génération de clés et l'algorithme de chiffrement soient aléatoires, alors que l'algorithme de déc doit être déterministe, et il y a une raison pour cela, que nous serons en mesure d'apprécier lorsque nous discuterons des différents modèles d'attaque dans cette conférence. (Référez-vous à la diapositive: 17 :09) Maintenant, comment utiliser un algorithme de chiffrement symétrique. Imaginez que nous ayons un schéma de chiffrement de clé symétrique. Nous avons une collection d'algorithmes de génération de clés, d'algorithme de chiffrement et d'algorithme de déchiffrement. Et nous supposons que les étapes de cette génération de clé, les algorithmes de chiffrement et de déchiffrement sont connus publiquement. Cela signifie que les étapes sont connues même pour l'expéditeur et le destinataire ou pour tout tiers dans ce monde. Maintenant, pour utiliser ce chiffrement symétrique, ce que l'expéditeur va faire est, il va exécuter l'algorithme de génération de clé, qui va générer l'une des clés candidates, à savoir k de l'espace clé. Cette clé sera convenue avec le récepteur par un mécanisme magique au début de la session. Donc, nous imaginons qu'au début de l'émetteur de la session exécute cet algorithme de génération de clé. Dans cette session il y a plusieurs messages, que l'expéditeur aimerait chiffrer et communiquer au récepteur en utilisant ce k. La première étape de la session sera l'algorithme de génération de clé et l'accord de cette clé avec le récepteur par un mécanisme magique. Maintenant que la clé est acceptée, chaque fois que l'expéditeur veut chiffrer un texte en clair à l'aide de cette clé, ce qui va se passer est le suivant, il va exécuter l'algorithme de chiffrement pour produire le texte de chiffrement. Le texte du code de chiffrement sera communiqué sur le canal public, par l'intermédiaire duquel l'expéditeur est communiqué au destinataire. Comme et quand le destinataire reçoit le texte chiffré, ce qu'il va faire, c'est savoir quel processus de chiffrement a été utilisé par l'expéditeur. Ainsi, il connaît le processus de décryptage correspondant et non seulement cela, il saura également la clé à l'aide de laquelle l'expéditeur a utilisé le processus de cryptage. A l'aide de la même clé, elle exploitera le processus de déchiffrement et récuprera le texte en clair. C'est ainsi que nous allons généralement utiliser un processus de chiffrement de clé symétrique. (Reportez-vous à la page Heure de la diapositive: 18:57) Maintenant, quelles sont les propriétés dont nous avons besoin à partir de tout schéma de chiffrement sécurisé ou d'un schéma de chiffrement de clé symétrique sécurisé. En gros, nous avons besoin de 2 propriétés. La première propriété est la propriété correcte, qui dit que, pour toute clé k que l'algorithme de génération de clé a une sortie et pour tout texte en clair qui a été crypté par Enc, la condition suivante doit tenir. Si je crypte un texte en clair sous la clé k pour obtenir un texte chiffré c et si je décrypte le texte de chiffrement c à l'aide du processus de déchiffrement sous la même clé k, je devrais récupérer le m original. C'est la propriété de la correction. Pour vous donner l'analogue si vous avez un verrou physique, et si j'ai 2 copies de la clé, ce que cette demande de correction de propriété est que si je verrouis effectivement cette clé à l'aide de la clé et d'envoyer ce verrou dans la condition de verrouillage à vous. Ensuite, si vous avez également la même clé et si vous essayez d'ouvrir ce verrou en position de verrouillage à l'aide de la clé que vous possédez également, vous devez être en mesure d'ouvrir le verrou de la condition de verrouillage à la condition d'ouverture. C'est à peu près l'analogie que vous pouvez imaginer à partir de cette exigence de correction. La seconde propriété importante dont nous avons besoin ou que nous attendons d'un processus de cryptage symétrique sécurisé est celle de la vie privée. Et maintenant, nous allons voir que ce sont les défis auxquels nous sommes confrontés lorsque nous essayons d'officialiser les exigences en matière de protection de la vie privée. Intuitivement, lorsque nous disons qu'un processus de chiffrement de clé symétrique est sécurisé, ou qu'il atteint une propriété privée, je veux dire, qu'en voyant le texte de chiffrement c l'adversaire ou le méchant qui a observé le texte chiffré, c ne devrait pas être en mesure de calculer quoi que ce soit au sujet du message m. Cela signifie qu'il y a un tiers qui est le méchant qui a intercepté le texte chiffré qui connaît les détails du processus de génération de clés, le processus de cryptage et le processus de décryptage. La seule chose que le méchant ne sait pas est la valeur de la clé avec laquelle l'expéditeur a utilisé le processus de cryptage. La propriété de la vie privée exige de manière informelle, que même après cette connaissance du texte chiffré, ne doit donner aucune information sur le message m. Cependant, il s'avère que si nous voulons officialiser la définition de la vie privée, il y a plusieurs défis auxquels nous sommes confrontés. Ce que je vais faire ensuite, c'est que je proposerai une série de définitions pour officialiser la condition de la vie privée. Et puis nous verrons une lacune potentielle dans chacune de ces définitions potentielles, qui va vous montrer combien il est difficile d'arriver à une définition juste de la vie privée.Ma première définition de candidat pour officialiser la définition de la vie privée est la suivante. Je dirai qu'un processus de cryptage est sécurisé si le texte chiffré ne révèle pas la clé sous-jacente. L'intution derrière cette définition est que si la clé est révélée à l'adversaire, alors elle peut trouver tout message subséquent qui a été crypté sous cette clé. L'exigence minimale que j'exige de tout schéma de chiffrement privé est que le texte chiffré ne doit pas révéler la clé sous-jacente. Eh bien, il s'avère que l'exigence est vraiment significative de tout processus de cryptage sécurisé. Mais cette définition est totalement inutile. Par exemple, considérons un algorithme de chiffrement, qui génère toujours un texte de chiffrement, qui est le même que le texte en clair, cela signifie que le texte de chiffrement ne dépend pas du tout de la clé. Et la valeur du texte de chiffrement est la même que celle du texte en clair. Si vous voyez cette définition, et ce processus de chiffrement de candidat, le processus de chiffrement n'est absolument pas révélateur de la clé. Conformément à cette définition, vous pouvez étiqueter cet algorithme de chiffrement comme un algorithme de chiffrement sécurisé. Mais ce type d'algorithme de chiffrement est complètement inutile à utiliser dans la pratique parce qu'il révèle complètement votre texte en clair. Nous allons donc maintenant rectifier cette définition. Et permettez-moi de vous présenter la deuxième définition du candidat pour officialiser la définition de la vie privée. Ma définition 2 est: je dirai qu'un processus de cryptage est sécurisé si le texte chiffré ne révèle rien à propos du texte en clair sous-jacent, parce que c'est ce qui est l'intuition de base de la vie privée. Le problème avec ce type de définition est ce que vous voulez dire par chiffrement ne révèle pas le texte en clair sous-jacent? Combien cela devrait-il révéler, combien il ne devrait pas révéler? Par exemple, vous pouvez avoir un processus de chiffrement, où 99% du texte brut n'est pas révélé par le texte chiffré. Mais malheureusement, le texte de chiffrement peut révéler 1% du texte brut et que 1% du texte en clair qui est divulgué par le texte du code de chiffrement peut être l'information critique que vous voulez cacher. Encore une fois, cette définition et ce processus de chiffrement de candidat peuvent ressembler à la définition 2, mais en fait, je ne peux pas utiliser dans la pratique un tel algorithme de chiffrement. Le problème de cette définition est que je ne précise pas exactement ce que cela signifie de révéler et de ne pas révéler et combien de révéler et de ne pas révéler. (Reportez-vous à la section Heure de la diapositive: 24 :05) Pour corriger cette définition, permettez-moi de proposer la troisième définition potentielle pour formaliser la définition de la vie privée. La définition 3 indique qu'un processus de chiffrement sera considéré comme sécurisé si le texte de chiffrement ne révèle aucun caractère du texte en clair sous-jacent. Donc, ceci prendra soin du bogue potentiel qui était là dans notre définition 2 ou le schéma de cryptage des candidats que nous avons proposé de violer la définition 2. Parce que maintenant, même si 1% est révélé, il ne va pas satisfaire la définition 3. Mais là encore, il y a une lacune potentielle dans cette définition. Envisagez un algorithme de chiffrement dans lequel le texte chiffré ne révèle aucun des caractères sous-jacents du texte en clair. Mais un texte de chiffrement peut révéler la portée du texte en clair, à savoir qu'il peut révéler si le texte en clair est inférieur à un seuil particulier ou s'il est supérieur à un seuil particulier. Encore une fois, si je considère la définition, ce schéma de chiffrement candidat satisfait effectivement la propriété parce qu'aucun caractère du texte en clair sous-jacent n'est révélé. Mais ce qui se révèle, c'est de savoir si le texte en clair est inférieur à une certaine valeur ou supérieur à une certaine valeur. Et cela pourrait être une atteinte à la sécurité. Je ne peux donc pas me permettre d'utiliser un tel algorithme de chiffrement pour chiffrer des données sensibles. Parce que si le code de chiffrement va révéler l'étendue des données sensibles, je pourrais être en difficulté. Alors essayons de résoudre ce problème potentiel dans la définition 4 et la définition 4 dit qu'un processus de cryptage sera considéré comme sécurisé si le texte chiffré ne révèle aucune information significative sur le texte en clair sous-jacent. Cela signifie qu'il doit masquer non seulement le texte en clair sous-jacent, il doit également masquer si le message est inférieur à une certaine valeur supérieure à une certaine valeur, etc. Eh bien, intuitivement, cette définition est bonne. Mais le problème ici est de savoir ce qui constitue exactement une information significative qui varie d'une application à l'autre. Pour certaines applications, les caractères sous-jacents du texte en clair peuvent être les informations sensibles, pour une autre application, si le message est inférieur à une valeur certaine ou supérieure à certaines valeurs qui peuvent être des informations significatives, etc. Vous ne pouvez pas dresser une liste exhaustive de ce qui constitue une information significative pour une application particulière. C'est un inconvénient de cette définition. C'est donc un résultat que je ne peux pas considérer comme une définition significative de la vie privée. (Référez-vous à l'heure de la diapositive: 26:25) Pour corriger ce problème, faites-nous parvenir la prochaine définition possible de la protection de la vie privée. Et cette définition dit qu'un processus de chiffrement sera appelé comme sécurisé si le texte chiffré n'aide pas le pirate à calculer la fonction du texte en clair sous-jacent. Cela signifie qu'il faut imaginer un attaquant qui a vu le texte chiffré qui connaît le processus de cryptage. Et l'attaquant est intéressé par le calcul de certaines fonctions, par exemple F du message sous-jacent que l'expéditeur a chiffré dans le texte chiffré. Nous allons dire que le processus de cryptage est sécurisé, si l'on utilise la connaissance du texte chiffré, l'adversaire n'est pas en mesure de calculer la fonction du message sous-jacent. Eh bien, c'est précisément ce que nous attendons d'un chiffrement sécurisé. Mais il y a encore certaines lacunes dans cette définition. Il y a 2 échappatoires. La première lacune est que comment vous formalisez si un texte de chiffrement particulier a aidé l'adversaire à se rendre à une fonction du texte sous-jacent ou non. Comment vous le jugez, comment formez-vous mathématiquement cela? C'est la première lacune de cette définition. Et la deuxième lacune de cette définition est ce qui est exactement la capacité de l'adversaire que vous envisagez, qui n'est pas spécifié dans cette définition. Cela signifie si vous envisagez un adversaire d'écoute qui observe simplement le texte et essaie de calculer une fonction, ou si vous envisagez un adversaire ou un adversaire malveillant, qui pourrait changer le contenu du texte et voir le comportement de l'autre réponse du récepteur, puis essayer de calculer les fonctions des messages sous-jacents. En outre, cette définition n'indique pas que l'adversaire a également fourni des informations supplémentaires, quelles sont les différentes capacités de l'adversaire que vous envisagez.   Et si quelque chose s'est avéré être sécurisé, même après leur existence pendant les 30 à 40 dernières années. Ensuite, nous avons une grande confiance que, en effet, ces algorithmes publiés sont plus sûrs par rapport à un algorithme dont vous ne connaissez pas les détails. Le résumé ici est extrêmement dangereux d'utiliser n'importe quel type de processus de chiffrement propriétaire. Donc si quelqu'un dit ça, “ hey, je ne vais pas laisser la description de mon processus de cryptage, mais je vous donne la garantie qu'il vous donne une très bonne quantité de sécurité ”. Vous ne devez pas croire à un tel processus de chiffrement, car vous ne savez pas quel type de lacune pourrait être présent dans un tel algorithme. Il est donc toujours recommandé d'utiliser des algorithmes qui sont disponibles dans le domaine public et qui ont fait l'objet d'un examen public. Cela nous amène à la fin de cette conférence. En résumé, nous avons discuté des différents types de primitives cryptographiques que nous utilisons en cryptographie. Nous avons également discuté de la syntaxe du processus de chiffrement symétrique. Nous nous sommes concentrés sur l'importance des algorithmes de génération et de chiffrement de clés à randomir, parce que cela est une conséquence du principe de Kerckhoffs ’, qui dit que le secret de tout le système devrait s'appuyer sur le fait que seule la clé est cachée et non les algorithmes. Nous discutons également des différents types de modèles d'attaque, à savoir le modèle d'attaque de l'ACO, le modèle d'attaque KPA, l'attaque CPA, le modèle et le modèle d'attaque CCA. J'espère que vous avez apprécié la conférence ! Je vous remercie.