Lançado o Sequoia 0.20.0, implementação do OpenPGP no Rust



O lançamento do pacote Sequoia 0.20.0 foi lançado ontem . Ele oferece uma biblioteca de funções e ferramentas de linha de comando com uma implementação dos padrões OpenPGP (RFC-4880). A equipe do projeto consiste em três pessoas - membros do projeto OpenPGP (RFC-4880). Para melhorar a segurança e confiabilidade da base de código, eles decidiram criar uma nova implementação gratuita do OpenPGP no Rust. O código do projeto é distribuído sob a licença GPLv2 +.



O objetivo dos desenvolvedores não é apenas melhorar a segurança do produto, mas também se livrar das deficiências do GnuPG. Sem quebrar a compatibilidade ou fundamentalmente retrabalhar a base do código, eles não podem ser eliminados no projeto principal. Por exemplo, a conexão entre os componentes individuais do GnuPG é forte o suficiente que é difícil fazer alterações, quanto mais criar um sistema de teste de unidade. O kit de ferramentas de linha de comando gpupg não está sincronizado em funcionalidade e biblioteca de funções, portanto, várias ações só podem ser executadas usando o utilitário.



Sequoia tem um utilitário de linha de comando sq com suporte a subcomandos no estilo Git, além de duas opções de API - nível baixo e nível alto. Existem ligações para as linguagens C e Python. A maioria dos recursos descritos no padrão OpenPGP são suportados para criptografia, descriptografia, criação e verificação de assinaturas digitais.



Recursos adicionais incluem suporte de verificação para assinaturas digitais fornecidas separadamente, adaptação para integração com gerenciadores de pacotes e capacidade de limitar assinaturas por valores limite e tempo.



A API de baixo nível reproduz de perto os recursos do OpenPGP e algumas extensões relacionadas, incluindo suporte ECC e elementos do "rascunho" da edição futura do padrão. No que diz respeito às exceções, essas são apenas partes desatualizadas da especificação que podem impactar negativamente a segurança - por exemplo, suporte para hashes MD5. A API também oferece suporte ao tratamento de mensagens sem buffer. Em termos de suas capacidades, ele se aproximou da cobertura total do padrão OpenPGP e está completamente pronto para trabalhar com dados OpenPGP. Uma versão 1.0 estável deve ser lançada em um futuro próximo.



Quanto à API de alto nível, ela está apenas começando a evoluir e até agora abrange recursos como armazenamento de chaves públicas e acesso a funções pela rede. Outros recursos de suporte e específicos de domínio devem ser adicionados à medida que o projeto se desenvolve.



Além disso, o pacote também possui ferramentas de inspeção de pacote muito poderosas que podem ser usadas para desenvolvimento, depuração e análise de incidentes. As ferramentas de inspeção são combinadas com um analisador para que o usuário possa analisar a estrutura de mensagens criptografadas, assinaturas digitais e chaves.



  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


Em termos de suporte de plataforma, o pacote atualmente funciona com as plataformas Linux, FreeBSD, Windows, macOS, Android e iOS. Também existe a possibilidade de trabalhar com os serviços criptográficos prestados por essas plataformas, incluindo coprocessadores para computação em enclaves isolados. Para fornecer isolamento adicional, é praticado separar serviços em processos separados que funcionam com chaves públicas e privadas. Por exemplo, um armazenamento de chaves é desenvolvido na forma de um processo separado. O protocolo Cap'n Proto é usado para garantir a interação de processos individuais.



A nova versão apresentada tem um pacote de baixo nível sequoia-openpgp , o programa sqv (substituição do gpgv) para verificar as assinaturas desanexadas e um utilitário sqop com uma implementação do Stateless OpenPGP CLI. Os requisitos de ferrugem foram aumentados para a versão 1.46. O uso do sistema de integração contínua para verificação de mudanças foi expandido e o conjunto para teste de compatibilidade com OpenPGP foi aprimorado.



Em um futuro próximo, os desenvolvedores estão planejando lançar a versão 1.0, que também incluirá uma API de alto nível, e não apenas uma de baixo nível, como é agora.






All Articles