La version du package Sequoia 0.20.0 a été introduite hier . Il propose une bibliothèque de fonctions et d'outils de ligne de commande avec une implémentation des standards OpenPGP (RFC-4880). L'équipe du projet se compose de trois personnes - membres du projet OpenPGP (RFC-4880). Pour améliorer la sécurité et la fiabilité de la base de code, ils ont décidé de créer une nouvelle implémentation gratuite d'OpenPGP dans Rust. Le code du projet est distribué sous la licence GPLv2 +.
Le but des développeurs n'est pas seulement d'améliorer la sécurité du produit, mais également de se débarrasser des lacunes de GnuPG. Sans casser la compatibilité ou retravailler fondamentalement la base de code, ils ne peuvent pas être éliminés dans le projet principal. Par exemple, les liens entre les composants individuels de GnuPG sont suffisamment forts pour qu'il soit difficile d'apporter des modifications, et encore moins de créer un système de test unitaire. La boîte à outils de ligne de commande gpupg n'est pas synchronisée dans les fonctionnalités et la bibliothèque de fonctions, de sorte qu'un certain nombre d'actions ne peuvent être effectuées qu'à l'aide de l'utilitaire.
Sequoia dispose d'un utilitaire de ligne de commande sq avec prise en charge des sous-commandes de style Git, ainsi que de deux options d'API - bas niveau et haut niveau. Il existe des liaisons pour les langages C et Python. La plupart des fonctionnalités décrites dans la norme OpenPGP sont prises en charge pour le cryptage, le décryptage, la création et la vérification des signatures numériques.
Les fonctionnalités supplémentaires incluent la prise en charge de la vérification pour les signatures numériques fournies séparément, l'adaptation pour l'intégration avec les gestionnaires de packages et la possibilité de limiter les signatures par des valeurs de seuil et du temps.
L'API de bas niveau reproduit très fidèlement les capacités d'OpenPGP et de certaines extensions associées, y compris le support ECC et des éléments du «brouillon» de la future édition de la norme. En ce qui concerne les exceptions, ce ne sont que des parties obsolètes de la spécification qui peuvent avoir un impact négatif sur la sécurité - par exemple, la prise en charge des hachages MD5. L'API prend également en charge la gestion des messages sans tampon. En termes de capacités, il est proche de la couverture complète de la norme OpenPGP et est complètement prêt à travailler avec des données OpenPGP. Une version 1.0 stable devrait être publiée dans un proche avenir.
Quant à l'API de haut niveau, elle ne fait que commencer à évoluer et couvre jusqu'à présent des capacités telles que le stockage des clés publiques et l'accès aux fonctions sur le réseau. D'autres fonctionnalités de support et spécifiques au domaine sont prévues pour être ajoutées au fur et à mesure du développement du projet.
En outre, le package dispose également d'outils d'inspection de packages très puissants qui peuvent être utilisés pour le développement, le débogage et l'analyse des incidents. Les outils d'inspection sont combinés à un analyseur afin que l'utilisateur puisse analyser la structure des messages cryptés, des signatures numériques et des clés.
sq packet dump --hex message.pgp
New CTB, 13 bytes: One-Pass Signature Packet
Version: 3
Type: Binary
Pk algo: EdDSA Edwards-curve Digital Signature Algorithm
Hash algo: SHA512
Issuer: 83F8 2E4F E9A5 E098
Last: true
00000000 c4 0d frame
00000002 03 version
00000003 00 sigtype
00000004 0a hash_algo
00000005 16 pk_algo
00000006 83 f8 2e 4f e9 a5 e0 98 issuer
0000000e 01 last
En termes de support de plate-forme, le package fonctionne actuellement avec les plates-formes Linux, FreeBSD, Windows, macOS, Android et iOS. Il existe également la possibilité de travailler avec les services cryptographiques fournis par ces plates-formes, y compris les coprocesseurs pour le calcul dans des enclaves isolées. Pour fournir une isolation supplémentaire, il est pratiqué de séparer les services en processus distincts qui fonctionnent avec des clés publiques et privées. Par exemple, un magasin de clés est développé sous la forme d'un processus distinct. Le protocole Cap'n Proto est utilisé pour assurer l'interaction des processus individuels.
La nouvelle version présentée a un package de bas niveau sequoia-openpgp , le programme sqv (remplacement de gpgv) pour vérifier les signatures détachées et un utilitaire sqop avec une implémentation de l'interface de ligne de commande OpenPGP sans état. Les exigences de Rust ont été augmentées à la version 1.46. L'utilisation du système d'intégration continue pour vérifier les changements a été étendue et l'ensemble de test de compatibilité avec OpenPGP a été amélioré.
Dans un proche avenir, les développeurs prévoient de publier la version 1.0, qui comprendra également une API de haut niveau, et pas seulement une API de bas niveau, comme c'est le cas actuellement.