paint-brush
Décrypter l'avenir : la cryptographie programmable et son rôle dans la technologie modernepar@felixarpa
1,076 lectures
1,076 lectures

Décrypter l'avenir : la cryptographie programmable et son rôle dans la technologie moderne

par Felix Xu7m2024/04/26
Read on Terminal Reader

Trop long; Pour lire

La cryptographie programmable est encore un concept nouveau, mais qui offre la possibilité de simplifier considérablement des problèmes très complexes.
featured image - Décrypter l'avenir : la cryptographie programmable et son rôle dans la technologie moderne
Felix Xu HackerNoon profile picture
0-item

À mesure que les technologies cryptographiques continuent de progresser et trouvent de nouvelles utilisations toujours plus importantes dans nos vies, les processus qu’elles mettent en œuvre deviennent de plus en plus complexes. Bien qu’il soit possible de réaliser énormément de choses avec de simples primitives cryptographiques, c’est ce qu’elles peuvent faire lorsqu’elles sont combinées qui est le plus excitant.


Plus impressionnante encore est l’idée selon laquelle certains protocoles cryptographiques sont conçus avec des capacités de description matérielle, ce qui leur confère le pouvoir de relever des défis universels. Cette idée, appelée à juste titre « cryptographie programmable », a la promesse de rendre possibles des actions plus complexes en, pour paraphraser Brian Gu, en transformant le problème mathématique de la conception de nouveaux protocoles en problème de programmation consistant à combiner ceux qui existent déjà.


Dans cet article, nous explorerons les couches d’application cryptographique, depuis les objectifs de haut niveau jusqu’aux algorithmes de bas niveau, pour comprendre d’où viennent ces idées. Ensuite, nous verrons où ils vont.


Avant de commencer, prenons un moment pour réfléchir à la motivation fondamentale qui pousse les cryptographes à se lancer dans leur métier. Après tout, il est beaucoup plus facile de rester à la maison et de ne rien faire que de travailler sur des preuves mathématiques qu’un nouveau protocole est sécurisé, réalisable et constitue une amélioration significative par rapport aux modèles existants.

C’est en raison de l’importance toujours croissante des données numériques que nous stockons, partageons et traitons que de nouvelles méthodes améliorées pour garantir la confidentialité et protéger ces données contre la falsification sont nécessaires. C’est le désir de combler ce besoin qui fait lever les cryptographes le matin.


Il est vraiment stupéfiant de penser à la quantité d’informations traitées en ligne de nos jours. Ce qui est plus immédiat pour la plupart des gens, c'est le temps qu'ils passent à interagir avec les données aujourd'hui par rapport à il y a quelques années. Toutes ces informations qu’ils produisent, traitent, examinent et envoient risquent d’être espionnées, volées ou manipulées si elles ne sont pas correctement protégées.


C’est pourquoi la cryptographie est toujours nécessaire. C’est pourquoi de nouvelles méthodes améliorées pour préserver la confidentialité des données continuent d’être développées.


Comme beaucoup d’autres disciplines, la cryptographie repose sur des concepts simples qui évoluent à mesure que la tâche devient plus intéressante. Ces concepts simples, souvent appelés « primitives cryptographiques » dans la cryptographie moderne, sont eux-mêmes souvent basiques mais peuvent être combinés pour construire quelque chose de complexe.


Par exemple, considérons l'un des codes les plus anciens - le chiffre César. Nommé d'après son utilisateur le plus célèbre, ce code consiste à écrire des mots dans un texte chiffré décalé de trois lettres par rapport au message d'origine. Dans ce cas, le mot « le » s’écrirait « qeb ». Chaque lettre a été décalée vers les trois cases qui la précédaient dans l'alphabet anglais.


Bien que ce code soit assez simple, il est bien testé, utile et pas du tout expérimental. Si vous devez chiffrer des données, cela les chiffrera. Bien qu'il ne s'agisse pas du code le plus sécurisé au monde, il peut également être combiné avec d'autres techniques pour le rendre plus puissant.


Pour prendre un autre exemple, le chiffre de Vigenère est un outil permettant de coder un message utilisant plusieurs chiffres César différents. Dans ce système, chaque message est associé à une clé ; Imaginons respectivement « aigle » et « citron ». La clé vous indique de combien de positions déplacer les lettres dans le message, mais chaque lettre a un nombre de décalages différent. Le « L » en citron vous indique de décaler la première lettre du message de douze espaces, car L est la douzième lettre de l'alphabet anglais. Le « E » vous indique de décaler la deuxième lettre de cinq espaces, et ainsi de suite.


Ainsi, « pomme » devient « peszr ». Sans accès à la clé, il devient beaucoup plus difficile de décoder le message. Même s'il présente encore les faiblesses du chiffre Cesar (avec suffisamment de temps, un calcul par force brute déterminera quel est le message), en combinant les outils existants d'une nouvelle manière, le niveau de sécurité augmente considérablement.


Comme vous pouvez probablement le deviner, il est souvent beaucoup plus facile de combiner des chiffrements existants comme ceux-ci de manière nouvelle et plus complexe que d’inventer un nouveau système. César est mort il y a longtemps et nous utilisons toujours son livre de codes.


Tout comme la sagesse des codes anciens persiste, une grande partie de la technologie cryptographique moderne repose sur un piédestal similaire. Demander à un cryptographe d'écrire une nouvelle preuve qu'un nouveau système protégera vos secrets numériques est fantastique, mais cela prend également beaucoup de temps et son fonctionnement n'est pas garanti. D'autre part, les primitives cryptographiques telles que les systèmes RSA (Rivest-Shamir-Adleman), AES (Advanced Encryption Standard) ou Digital Signature sont connues pour fonctionner et peuvent facilement être appliquées à un large éventail de problèmes. Par exemple, RSA est largement utilisé pour la transmission sécurisée de données, tandis qu'AES est une norme pour le cryptage des données sensibles. S’ils sont combinés, ils peuvent fournir des fonctionnalités innovantes et résoudre des problèmes plus complexes que n’importe lequel d’entre eux ne pourrait le faire seul.


Bien que la combinaison de méthodes simples soit un excellent moyen de créer des systèmes plus complexes, cette méthode présente certaines limites. Chacune de ces primitives est conçue pour être efficace dans une tâche particulière, et il n'est pas rare que des erreurs soient commises lors de leur combinaison, laissant leurs faiblesses exposées.


S'appuyant sur des primitives de bas niveau, les protocoles de niveau intermédiaire ciblent des fonctionnalités plus avancées. Dans ce qui suit, nous explorerons certains des protocoles de niveau intermédiaire les plus largement adoptés et discutés.


Le cryptage homomorphe est un protocole qui permet de traiter des données cryptées sans avoir à les déchiffrer au préalable. Il en existe des exemples aujourd'hui, même s'il en est encore à ses débuts - sa faisabilité n'a été démontrée qu'en 2009. Les modèles existants sont parfois limités quant aux processus qui peuvent être menés sur les données cryptées.

Cependant, le concept est extrêmement intéressant et présente de nombreuses applications possibles évidentes. Pensez à la fréquence à laquelle des données sensibles mais utiles telles que les dossiers médicaux ou les informations de crédit sont volées aux organisations qui ont besoin d'y accéder pour vous aider. Et s’il était possible d’interagir avec vos informations médicales cryptées sans jamais les décoder ? Les avantages de cette amélioration de la sécurité vont sans dire.


Le calcul multipartite (MPC) est un outil permettant de masquer les entrées fournies par différents acteurs travaillant ensemble sur un résultat commun. Il est souvent décrit comme le « problème des millionnaires ».


Imaginez que deux millionnaires veulent savoir lequel d’entre eux a le plus d’argent. Cependant, ils ne veulent pas simplement dire quelle est leur valeur nette. Ils peuvent utiliser MPC pour résoudre ce problème. Le premier millionnaire peut ajouter sa valeur nette cryptée à un programme conçu pour comparer les valeurs avant de l'envoyer au second. Le deuxième millionnaire est incapable de voir la première valeur lorsqu’il ajoute sa valeur nette.

Ils peuvent alors tous deux décrypter la sortie et découvrir lequel d’entre eux a entré une valeur plus élevée, tout en ne pouvant voir aucune des entrées.


Enfin, examinons les preuves à connaissance nulle (ZKP). Ceux-ci sont probablement bien connus du lecteur, car ils sont largement utilisés, et nous les examinerons brièvement. Les ZKP sont très efficaces pour permettre à un prouveur de dire à une autre personne, souvent appelée le vérificateur , que quelque chose est vrai sans rien dire d'autre. En règle générale, ils fournissent ce service à un seul utilisateur ; une personne demande une preuve et elle l’obtient. Il existe un certain nombre de ZKP, notamment zk-SNARK et zk-STARK. Chacun a ses propres avantages et inconvénients.


À mesure que la recherche sur ces protocoles avancés progressait, l’accent s’est étendu vers le développement de protocoles cryptographiques à usage général. Ces initiatives visent à prouver qu'il est possible que la cryptographie permette d'effectuer des calculs universels de manière sécurisée et privée. Au départ, ces efforts étaient purement théoriques, privilégiant la faisabilité plutôt que l’efficacité pratique de la mise en œuvre. Cependant, à mesure que la recherche s’approfondit, les cryptographes se sont concentrés sur la mise en pratique de ces concepts. Ils améliorent, combinent et inventent de nouveaux protocoles et composants. Souvent, le protocole final finit par être un hybride, tirant parti des atouts de plusieurs approches. Par exemple, le chiffrement homomorphique utilise des preuves à connaissance nulle pour les preuves de plage afin de garantir que les calculs restent dans une plage valide. Pendant ce temps, les protocoles MPC pourraient incorporer des éléments d’homomorphisme pour exécuter des opérations non linéaires.


Parmi la pléthore de protocoles expérimentaux, certains se sont suffisamment rapprochés de leur utilité pratique pour ouvrir la voie à un développement dans le monde réel. Ces outils fonctionnent de manière similaire aux compilateurs, interprétant les langages de haut niveau et les convertissant en circuits que les protocoles cryptographiques peuvent traiter. Cette transformation s'apparente à la conversion d'un logiciel en opérations de registre CPU ou à la traduction de Solidity en transitions d'état EVM. L’obtention de cette capacité de type compilateur, complétée par la prise en charge du calcul complet de Turing, marque l’avènement de ce que nous appelons la cryptographie programmable. Même si cela peut paraître trop optimiste, la réalité est nuancée. Les fonctions de hachage au niveau du bit, par exemple, ne sont pas aussi efficaces dans un protocole à preuve de connaissance nulle, alors que les hachages exécutés via une multiplication modulaire offrent une efficacité supérieure. Par conséquent, il est conseillé d’éviter les algorithmes comme SHA-3. De plus, éviter les calculs en virgule flottante est une pratique courante, car les protocoles cryptographiques fonctionnent principalement dans des champs finis. Des astuces comme celles-ci existent partout pour donner vie à la cryptographie programmable.


La cryptographie programmable est encore un concept nouveau, mais qui offre la possibilité de simplifier considérablement des problèmes très complexes. Il est facile de spéculer sur les directions que cela prendra. Il est presque certain que des tentatives seront faites pour programmer avec toutes sortes d’outils cryptographiques, même si les niveaux de succès qui seront obtenus avec ceux-ci restent à déterminer.


Cependant, certaines de ces expériences fonctionneront. Certains d’entre eux fonctionneront bien, et ceux qui fonctionnent bien offriront des fonctionnalités puissantes et des niveaux de sécurité élevés sans avoir à faire appel à un cryptographe pour créer un tout nouveau système pour une application. Cette possibilité à elle seule suscitera probablement un grand intérêt dans le domaine.


Il faudra résoudre le problème de savoir comment procéder de manière à ce qu'il fonctionne avec les systèmes existants, et il est probable qu'une grande partie de ce qui est adopté est celui qui fonctionne efficacement avec les données avec lesquelles il faut interagir.


L’impact de cette technologie sur la sécurité des données, la confidentialité et le domaine plus large de la sécurité numérique pourrait être difficile à surestimer. Un grand nombre d’actions complexes deviendront plus faciles à mettre en œuvre. Même si une mauvaise programmation causera des problèmes, comme c'est toujours le cas, là où la technologie fonctionne, nous verrons une meilleure sécurité et des systèmes de confidentialité plus robustes.


Ce qui est peut-être le plus encourageant, c’est qu’il est encore assez tôt en termes d’utilisation de cette technologie. Les preuves ZK ont été conçues dans les années 1980 mais n'ont été rendues possibles qu'en 2012. Il existe peut-être de nombreux mécanismes et combinaisons de mécanismes possibles dont personne n'a encore rêvé. La prochaine idée révolutionnaire pourrait arriver demain. Nous ne pourrons peut-être même pas deviner ce que cela fera.