El lanzamiento del paquete Sequoia 0.20.0 se presentó ayer . Se ofrece una biblioteca de funciones y herramientas de línea de comandos con una implementación de los estándares OpenPGP (RFC-4880). El equipo del proyecto consta de tres personas: miembros del proyecto OpenPGP (RFC-4880). Para mejorar la seguridad y confiabilidad del código base, decidieron crear una nueva implementación gratuita de OpenPGP en Rust. El código del proyecto se distribuye bajo la licencia GPLv2 +.
El objetivo de los desarrolladores no es solo mejorar la seguridad del producto, sino también eliminar las deficiencias de GnuPG. Sin romper la compatibilidad o reelaborar fundamentalmente la base del código, no se pueden eliminar en el proyecto principal. Por ejemplo, la conexión entre los componentes individuales de GnuPG es lo suficientemente fuerte como para que sea difícil realizar cambios, y mucho menos crear un sistema de prueba de unidades. El kit de herramientas de la línea de comandos gpupg no está sincronizado en la funcionalidad y la biblioteca de funciones, por lo que una serie de acciones solo se pueden realizar utilizando la utilidad.
Sequoia tiene una utilidad de línea de comando sq con soporte de subcomando de estilo Git, además de dos opciones de API: nivel bajo y nivel alto. Hay enlaces para los lenguajes C y Python. La mayoría de las funciones descritas en el estándar OpenPGP son compatibles con el cifrado, el descifrado, la creación y la verificación de firmas digitales.
Las características adicionales incluyen soporte de verificación para firmas digitales suministradas por separado, adaptación para integración con administradores de paquetes y la capacidad de limitar firmas por valores de umbral y tiempo.
La API de bajo nivel reproduce muy de cerca las capacidades de OpenPGP y algunas extensiones relacionadas, incluido el soporte ECC y elementos del "borrador" de la futura edición del estándar. En lo que respecta a las excepciones, estas son solo partes desactualizadas de la especificación que pueden afectar negativamente a la seguridad, por ejemplo, la compatibilidad con hashes MD5. La API también admite el manejo de mensajes sin búfer. En términos de sus capacidades, se ha acercado a la cobertura total del estándar OpenPGP y está completamente listo para trabajar con datos OpenPGP. Se debería lanzar una versión 1.0 estable en un futuro próximo.
En cuanto a la API de alto nivel, apenas está comenzando a evolucionar y hasta ahora cubre capacidades tales como almacenar claves públicas y acceder a funciones a través de la red. Se planea agregar otras características de soporte y específicas del dominio a medida que se desarrolle el proyecto.
Además, el paquete también tiene herramientas de inspección de paquetes muy poderosas que se pueden utilizar para el desarrollo, la depuración y el análisis de incidentes. Las herramientas de inspección se combinan con un analizador para que el usuario pueda analizar la estructura de mensajes cifrados, firmas digitales y claves.
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 términos de soporte de plataforma, el paquete funciona actualmente con plataformas Linux, FreeBSD, Windows, macOS, Android e iOS. También es posible trabajar con los servicios criptográficos que brindan estas plataformas, incluidos los coprocesadores para la computación en enclaves aislados. Para proporcionar un aislamiento adicional, se practica separar los servicios en procesos separados que funcionan con claves públicas y privadas. Por ejemplo, un almacén de claves se desarrolla como un proceso independiente. El protocolo Cap'n Proto se utiliza para garantizar la interacción de procesos individuales.
La nueva versión presentada tiene un paquete de bajo nivel sequoia-openpgp , el programa sqv (reemplazo de gpgv) para verificar firmas separadas y una utilidad sqop con una implementación de la CLI de OpenPGP sin estado. Los requisitos de óxido se han elevado a la versión 1.46. Se ha ampliado el uso del sistema de integración continua para comprobar los cambios y se ha mejorado el conjunto de pruebas de compatibilidad con OpenPGP.
En un futuro cercano, los desarrolladores planean lanzar la versión 1.0, que también incluirá una API de alto nivel, y no solo una de bajo nivel, como es ahora.