Oh mon garçon, par où commencer.
Le gros est définitivement les boîtes noires. Les chercheurs en cryptographie font des histoires sur des choses comme le problème d'instabilité du modèle Oracle aléatoire. Les chercheurs en sécurité sont à l'autre extrême et aimeraient que tout soit utilisable comme boîte noire, pas seulement les fonctions de hachage. C'est une source constante de tension.
Pour illustrer, si vous regardez l'analyse formelle des protocoles de sécurité, par exemple la logique BAN , vous verrez que le chiffrement symétrique est traité comme un «chiffrement de bloc idéal». Il y a une distinction subtile ici - la logique BAN (et d'autres techniques d'analyse de protocole) ne prétend pas être des preuves de sécurité; ce sont plutôt des techniques pour trouver des failles. Par conséquent, il n'est pas strictement vrai que le modèle de chiffrement idéal soit impliqué ici. Cependant, il est empiriquement vrai que la plupart des analyses de sécurité ont tendance à se limiter au modèle formel, donc l'effet est le même.
Nous n'avons même pas encore parlé des pratiquants. Ces gars n'ont généralement même pas la moindre idée que les primitives de crypto ne sont pas destinées à être des boîtes noires, et je doute que cela changera jamais - des décennies d'essayer de se battre dans la tête n'ont fait aucune différence.
Pour voir à quel point le problème est grave, considérez cet avis de sécurité relatif à l'exonération de signature des API. Le bug est en partie dû à l'attaque d'extension de longueur dans la construction Merkle-Damgard (qui est vraiment quelque chose de vraiment basique), et affecte Flickr, DivShare, iContact, Mindmeister, Myxer, RememberTheMilk, Scribd, Vimeo, Voxel, Wizehhive et Zoomr. Les auteurs notent qu'il ne s'agit pas d'une liste complète.
Je pense que les pratiquants méritent la part du lion de la responsabilité de cette triste situation. D'un autre côté, peut-être que les théoriciens de la cryptographie doivent également repenser leur position. Leur ligne a été: "les boîtes noires sont impossibles à construire; nous n'allons même pas essayer." Pour ce que je dis, puisqu'il est clair que vos constructions vont de toute façon être (mal) utilisées comme boîtes noires, pourquoi ne pas au moins essayer de les rendre aussi proches que possible des boîtes noires?
Le document Merkle-Damgard Revisited est un excellent exemple de ce dont je parle. Ils étudient la notion de sécurité selon laquelle "la fonction de hachage de longueur arbitraire H doit se comporter comme un oracle aléatoire lorsque le bloc de construction de longueur fixe est considéré comme un oracle aléatoire ou un chiffrement de bloc idéal". Ce type de recherche théorique peut être extrêmement utile dans la pratique.
Passons maintenant à votre exemple d'évaluation de circuit. Je vous prie de ne pas être d'accord avec votre raisonnement. Ce n'est pas comme si vous preniez un binaire compilé et le transformiez aveuglément en circuit. Au lieu de cela, vous appliqueriez l'évaluation du circuit uniquement à la fonction de comparaison sous-jacente, ce qui est généralement assez simple. Fairplay est une implémentation de l'évaluation de circuits. Un de mes collègues qui a travaillé avec lui me dit que c'est étonnamment rapide. S'il est vrai que l'efficacité est un problème avec l'évaluation des circuits (et je connais des cas concrets où elle a été rejetée pour cette raison), elle est loin d'être incontournable.
La deuxième raison pour laquelle je ne suis pas d'accord avec vous est que si vous pensez à certains des scénarios typiques de la vie réelle dans lesquels vous pourriez éventuellement vouloir effectuer une évaluation de circuit inconsciente - par exemple, lorsque deux sociétés cherchent à fusionner - les coûts de calcul impliqués sont insignifiants par rapport à l'effort humain global et au budget.
Alors pourquoi personne n'utilise-t-il en pratique une évaluation générique des fonctions sécurisées? Grande question. Cela m'amène à ma deuxième différence entre la théorie et la pratique: la confiance existe réellement dans la pratique! Tout ne doit pas être fait dans le modèle paranoïaque. L'ensemble des problèmes que les gens veulent réellement résoudre en utilisant la cryptographie est beaucoup, beaucoup plus petit que ce que les cryptographes imaginent.
Je connais quelqu'un qui a démarré une entreprise en essayant de vendre des services de calcul multipartites sécurisés à des clients d'entreprise. Devinez quoi - personne ne le voulait. La façon dont ils abordent ces problèmes consiste à signer un contrat spécifiant ce que vous pouvez et ne pouvez pas faire avec les données, et que vous détruirez les données une fois que vous aurez fini de les utiliser aux fins prévues. La plupart du temps, cela fonctionne très bien.
Mon dernier point de différence entre la théorie et la pratique concerne l'ICP. Les documents cryptographiques collent souvent une phrase quelque part disant "nous supposons une ICP". Malheureusement, les certificats numériques pour les utilisateurs finaux (par opposition aux sites Web ou aux employés dans un contexte d'entreprise, où il existe une hiérarchie naturelle) ne se sont jamais matérialisés. Cet article classique décrit l'hilarité qui s'ensuit lorsque vous demandez à des gens normaux d'utiliser PGP. On me dit que le logiciel s'est beaucoup amélioré depuis lors, mais les problèmes de conception et d'architecture sous-jacents et les limites humaines ne sont pas très différents aujourd'hui.
Je ne pense pas que les cryptographes devraient faire quoi que ce soit différemment en raison de ce manque d'ICP du monde réel, sauf pour être conscient du fait qu'il limite l'applicabilité dans le monde réel des protocoles cryptographiques. Je l'ai jeté parce que c'est quelque chose que j'essaie de réparer.