Sortie de Sequoia 0.20.0, implémentation d'OpenPGP dans Rust



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.






All Articles