Après trois ans et demi de développement, le package Sequoia édition 1.0 a été publié , développant une bibliothèque de fonctions et d'outils en ligne de commande avec la mise en œuvre de la norme OpenPGP (RFC-4880).
Ce communiqué résume les travaux réalisés sur l'API de bas niveau , qui implémente une couverture standard OpenPGP suffisante pour une utilisation complète. Le code du projet est écrit en Rust et distribué sous licence GPLv2+.
Le projet a été fondé par trois contributeurs de GnuPG issus de g10code, une société de développement de plugins GnuPG et d'audit de systèmes cryptographiques. L'équipe Sequoia est également connue pour avoir créé le serveur de clés Hagrid, utilisé par le service keys.openpgp.org.
Le but du nouveau projet était de repenser l'architecture et d'appliquer de nouvelles techniques pour améliorer la sécurité et la fiabilité de la base de code.
Pour améliorer la sécurité, Sequoia utilise non seulement des outils de programmation sécurisés qui utilisent le langage Rust, mais aussi une protection contre les erreurs au niveau de l'API.
Par exemple, l'API empêche l'exportation accidentelle de clés secrètes , car les opérations d'exportation requièrent une sélection explicite par défaut. De même, l'API garantit qu'aucune étape importante n'est omise lors de la mise à jour d'une signature numérique ; par défaut, la date de création, l'algorithme de hachage et l'émetteur de la signature sont mis à jour automatiquement.
Sequoia tente également de corriger les défauts de GnuPG , tels que la désynchronisation des fonctionnalités des outils en ligne de commande avec la bibliothèque de fonctions (certaines actions ne peuvent être effectuées qu'à l'aide de l'utilitaire) et le couplage trop étroit entre les composants, ce qui rend les modifications difficiles, obscurcit le code source et empêche la création d'un système de tests unitaires complet.
Sequoia développe l'utilitaire de ligne de commande sq avec prise en charge des sous-commandes de style Git , le programme sqv (un remplacement de gpgv) pour la vérification de signatures séparées, l'utilitaire sqop (interface de ligne de commande OpenPGP sans état) et la bibliothèque sequoia-openpgp.
Il existe des liens pour les langages C et Python. La plupart des fonctions décrites dans la norme OpenPGP sont compatibles avec le cryptage, le décryptage, la création et la vérification des signatures numériques.
Parmi les fonctionnalités avancées, il est à noter qu'il prend en charge la vérification à l'aide de signatures numériques fournies séparément (signature séparée), l'adaptation pour l'intégration avec les gestionnaires de packages (APT, RPM, téléchargement, etc.), la possibilité de limiter les signatures par valeurs de seuil et de temps.
Pour simplifier le développement, le débogage et l'analyse des incidents, des outils d'inspection de paquets sont fournis, qui s'intègrent à l'analyseur et vous permettent d'analyser visuellement la structure des messages chiffrés, des signatures numériques et des clés.
Pour des raisons de sécurité, l'utilisation de services cryptographiques, tels que des coprocesseurs pour les calculs dans des enclaves isolées, est autorisée. Afin de renforcer l'isolation, les services manipulant des clés publiques et privées sont exécutés dans des processus distincts (l'interaction entre les processus est organisée selon le protocole Cap'n Proto). Par exemple, un magasin de clés est implémenté dans un processus séparé.
Il existe deux options d'API : une API de bas niveau et une API de haut niveau. L'API de bas niveau reproduit au plus près les fonctionnalités d'OpenPGP et certaines extensions connexes, telles que la prise en charge d'ECC, la notarisation (signature sur signature) et des éléments de la version préliminaire de la future norme.
Il est à noter que, conformément aux fonctionnalités prévues, Sequoia était prêt pour la version 1.0 il y a un an, mais les développeurs ont décidé de ne pas se précipiter et de consacrer plutôt plus de temps à la recherche de bogues et à la rédaction d'une documentation complète et de haute qualité, avec des liens vers les informations de la norme OpenPGP et des exemples d'utilisation.
La version 1.0 ne couvre actuellement que le boîtier sequoia-openpgp et l'utilitaire de vérification de signature numérique sqv. L'interface de ligne de commande « sq » et les API de haut niveau sont encore en cours de finalisation et ne sont pas encore stabilisées.
Les limitations qui devraient être supprimées dans les versions futures incluent la mise en œuvre de services de stockage de clés privées et publiques, la prise en charge des signatures numériques en texte clair et la possibilité d'utiliser des expressions régulières pour déterminer les signatures de confiance.