SECP256K1LAB : Une avancée vers une norme unifiée pour le code cryptographique de Bitcoin
Jusqu’à présent, chaque proposition d’amélioration du bitcoin (BIP) qui avait besoin de primitives cryptographiques devait réinventer la roue. Chacun est venu groupé avec sa propre implémentation Python personnalisée de la courbe elliptique SECP256K1 et des algorithmes connexes, chacun subtilement différent les uns des autres. Ces incohérences ont introduit des responsabilités silencieuses et rendu la révision des BIP inutilement compliquée. Ce problème a récemment été mis en évidence dans Bitcoin Optech Newsletter # 348. C’est quelque chose qu’au moins une poignée de développeurs de la communauté de développement de Bitcoin ont longtemps ressenti : il devrait y avoir une norme unifiée et réutilisable pour le code cryptographique de référence BIP SECP256K1.
La semaine dernière, Jonas Nick et Tim Ruffing de Blockstream Research et Sebastian Falbesoner ont fait de grands progrès vers cela. Dans le cadre de leur existant Proposition de chilldkg, l’équipe a sorti SECP256K1LAB. Une nouvelle, intentionnellement peu sûre bibliothèque Python pour le prototypage, l’expérimentation et les spécifications du BIP. Ce n’est pas pour une utilisation en production (car il n’est pas constant et donc vulnérable aux attaques de canaux latéraux), mais il comble un écart critique : il offre une référence propre et cohérente pour les fonctionnalités SECP256K1, y compris les signatures de schnorr de style BIP-340, ECDH et de faible niveau/groupe. L’objectif est simple : rendre plus facile et plus sûr d’écrire de futurs BIP en évitant les implémentations redondantes et uniques. Pour les auteurs BIP, cela signifie : moins de code personnalisé, moins de problèmes de spécifications et un chemin plus clair du prototype à la proposition.
Pourquoi ne pas simplement utiliser la vraie bibliothèque SECP256K1?
Bitcoin Core comprend déjà une bibliothèque C rapide et constante pour la cryptographie SECP256K1. Alors pourquoi les auteurs BIP ne sont-ils pas simplement utilisés?
Lorsqu’un auteur BIP soumet une proposition, il devrait inclure une implémentation de référence pour expliquer comment fonctionne l’idée. Ces implémentations ne doivent pas être écrites en Python, mais C est souvent trop de niveau de bas niveau pour le prototypage. Python est plus facile à lire, plus facile à modifier et rend plus clair ce que l’auteur essaie d’exprimer. Ces qualités le rendent particulièrement bien adapté aux spécifications de l’écriture.
Lors de l’introduction d’une nouvelle idée cryptographique, il est utile d’avoir quelque chose de clair, concis et sûr à expérimenter. En principe, des outils comme hacspec sont une bonne option pour les spécifications formelles, car le code HacSpec est également une rouille valide. Mais dans la pratique, HacSpec peut être difficile à travailler et à lire, en particulier pour les lecteurs de BIP qui ne connaissent pas la rouille.
La lisibilité de Python continue d’en faire la langue à laquelle de nombreux auteurs reviennent lorsqu’ils ont besoin d’expliquer comment quelque chose fonctionne.
Pourquoi les auteurs BIP continuent de relancer SECP256K1 encore et encore
Cela a commencé avec BIP 340 Signatures Schnorr lorsque les auteurs BIP ont écrit le code de référence d’origine dans Python, il serait donc facile de suivre les calculs. Ils ont défini exactement comment effectuer la signature et la vérification de style schnorr à l’aide des paramètres de courbe de SECP256K1. Ils ont dû tout construire à partir de zéro : l’arithmétique sur le terrain, les opérations de groupe, la génération de nonce déterministe et les règles d’encodage. Le code Python était clair et éducatif. Mais il a été adapté spécifiquement à ce seul BIP, et non conçu pour être réutilisé par les futurs.
De la même manière, BIP 324 Transport P2P crypté ajoutait un cryptage à la façon dont les nœuds Bitcoin devraient se parler et utilisait un protocole appelé bruit qui repose sur des échanges de clés, des secrets partagés et un chiffrement symétrique. Bien qu’il s’appuie sur la même courbe SECP256K1 utilisée dans BIP 340, il n’a réutilisé aucun du code d’implémentation réel. Toute la logique cryptographique telle que l’ECDH, la sérialisation et les modèles de poignée de main a été réimplémentée à partir de zéro dans Python. Même si les mathématiques sous-jacentes sont les mêmes, chaque BIP finit par écrire sa propre version de la logique. Cela conduit à des efforts dupliqués et introduit le potentiel d’incohérences subtiles.
Ce que SECP256K1LAB est réellement
SECP256K1LAB est une bibliothèque Python conçue dans un but : faciliter la rédaction et le test des spécifications cryptographiques pour Bitcoin. Python est déjà le langage le plus populaire et le plus largement utilisé pour les implémentations de référence et les vecteurs de test dans les BIP, donc avoir une bibliothèque partagée et réutilisable est tout simplement logique. Il n’est pas conçu pour une utilisation en production. Il est conçu pour le prototypage, pas pour les performances. Il offre une interface unifiée et unifiée à la fonctionnalité Core SECP256K1, avec du code lisible et une configuration minimale. Plus d’informations sur la vôtre à chaque fois que vous souhaitez tester une idée ou démontrer comment quelque chose devrait fonctionner.
Cas d’utilisation du monde réel: chilldkg
SECP256K1LAB a d’abord été développé dans le cadre de l’œuvre sur Chilldkg, une nouvelle proposition BIP pour la génération de clés distribuée. Au lieu d’écrire une autre implémentation Python personnalisée de SECP256K1 juste pour cette seule spécification, les auteurs ont utilisé SECP256K1LAB pour gérer tous les blocs de construction cryptographiques d’une manière qu’il pourrait être exploitée par d’autres. En réutilisant une base de code partagée et lisible, leur espoir est que les futurs BIPs cryptographiques n’auront pas à repartir de zéro. Avec SECP256K1LAB, il y a enfin une base sur laquelle les nouvelles propositions peuvent s’appuyer et s’améliorer ensemble.
Où ça pourrait aller
Il y a encore une question ouverte : SECP256K1LAB devrait-il vivre dans le référentiel BIPS? Cela s’avère déjà utile comme référence partagée pour les propositions cryptographiques, mais il y a une discussion en cours sur l’endroit où il appartient vraiment au processus de développement de Bitcoin plus large. Qu’il reste en tant que bibliothèque autonome ou soit plus étroitement intégrée au flux de travail BIP, une chose est claire : il comble un écart qui existe depuis des années. Si vous êtes un auteur BIP, un réviseur de spécifications ou simplement curieux d’améliorer l’outillage cryptographique autour de Bitcoin, nous serions ravis de votre contribution. Vous pouvez rejoindre la discussion sur la liste de diffusion Bitcoin-DEV ou contribuer directement au SECP256K1LAB GitHub Repo.
Ceci est un article invité de Kiara Bickers. Les opinions exprimées sont entièrement les leurs et ne reflètent pas nécessairement celles du magazine BTC Inc ou Bitcoin.
Résumé
SECP256K1LAB est une avancée majeure pour standardiser le développement des spécifications cryptographiques autour de Bitcoin. En fournissant une base cohérente et réutilisable, les auteurs de BIP peuvent éviter le piège des implémentations redondantes, rendant ainsi le processus d’élaboration de nouvelles propositions plus simple et sécurisé. En tant qu’outil de prototypage, il ouvre la voie à une collaboration améliorée et à une innovation dans la communauté Bitcoin.