Fastcrypto, la bibliothèque de cryptographie utilisée dans Sui, a battu de nombreux records de vitesse, et notre travail sur les benchmarks et l'analyse de sécurité a corrigé de nombreuses vulnérabilités de sécurité tout en ouvrant la porte à l'innovation en identifiant de nouvelles astuces d'optimisation.

Un article intitulé Fastcrypto: Pioneering Cryptography Via Continuous Benchmarking, récemment présenté lors de l'atelier d'analyse comparative de la Conférence internationale sur l'ingénierie des performances (ICPE) à l'Imperial College de Londres, décrit notre analyse comparative continue et systématique des fonctions cryptographiques dans la bibliothèque Fastcrypto.

La présentation faisait partie d'une session intitulée « Innovations dans les tests de performances : stratégies et technologies » dans le cadre de l'atelier Tests de charge et analyse comparative des systèmes logiciels. La conférence a attiré des invités du monde universitaire et de l'industrie, notamment des représentants de MongoDB et d'Amazon qui ont également pris la parole lors du même atelier.

Nous avons souligné l'analyse comparative systématique et continue de la bibliothèque Fastcrypto, qui est un ensemble de fonctions cryptographiques telles que les signatures numériques, les fonctions de hachage et les preuves sans connaissance. Dans Fastcrypto, toutes les fonctions sont évaluées en permanence lors de leur sortie et à la demande, et les résultats sont publiés en ligne. Des fonctions similaires peuvent être facilement comparées et nous conservons les données historiques pour pouvoir suivre les performances au fil du temps.

La présentation a souligné comment ces références ont facilité une prise de décision plus éclairée dans le développement de Fastcrypto et Sui, influençant les choix de dépendances et d'utilisation, ainsi qu'en optimisant la concentration des ressources des développeurs.

Prise de décision qualifiée à partir de benchmarks

Une étude de cas tirée du document aborde le défi de la sélection d'un système de signature pour les validateurs en Sui. Pour qu'un utilisateur soumette une transaction à Sui, la transaction doit être signée par un quorum de validateurs, combinés dans un certificat de transaction. Avec environ 100 validateurs et une participation également répartie, un quorum est composé de 67 validateurs, ce qui signifie que chaque validateur doit vérifier 67 signatures par transaction.

Le système de signature BLS permet de vérifier plusieurs signatures comme s'il s'agissait d'une seule signature, mais il est beaucoup plus lent que les alternatives, telles qu'EdDSA. Une analyse comparative détaillée a révélé que le seuil de rentabilité entre ces deux régimes se situe entre 40 et 45 signatures. Ainsi, pour Sui, l’utilisation du BLS est plus efficace et c’est effectivement ce qui est utilisé aujourd’hui.

L'analyse comparative des systèmes de signature EdDSA et BLS a révélé un seuil de rentabilité de 40 à 45 signatures groupées, montrant qu'avec le pool de validateurs de Sui, BLS est un choix performant.

"Vous devriez également vous inquiéter si le logiciel devient soudainement beaucoup plus rapide"

La présentation a également montré comment les benchmarks peuvent révéler des comportements logiciels inattendus. Un exemple impliquait des bibliothèques implémentant le schéma de signature EdDSA, qui supposait que la clé publique devait être mise en cache et fournie en entrée à la fonction de signature. Si une clé publique incorrecte était fournie, cela pourrait conduire à l'extraction de la clé privée (comme indiqué dans notre GitHub ed25519-unsafe-libs).

Ce problème a été détecté car certaines bibliothèques affichaient des performances inhabituellement rapides, contournant la dérivation de la clé publique et utilisant celle potentiellement incorrecte fournie comme argument. Même si les benchmarks visent souvent à accélérer les logiciels, « vous devriez également vous inquiéter si le logiciel devient soudainement beaucoup plus rapide », comme l'a noté un membre de l'auditoire lors de l'atelier.