Dopo tre anni e mezzo di sviluppo, è stata rilasciata la versione 1.0 di Sequoia , che include una libreria di funzioni e strumenti da riga di comando con l'implementazione dello standard OpenPGP (RFC-4880).
Il comunicato riassumeva il lavoro svolto sull'API di basso livello , che implementa una copertura dello standard OpenPGP sufficiente per un utilizzo completo. Il codice del progetto è scritto in Rust e distribuito con licenza GPLv2+.
Il progetto è stato fondato da tre collaboratori di GnuPG provenienti da g10code, un'azienda che sviluppa plugin per GnuPG e si occupa di audit di sistemi crittografici. Il team di Sequoia è anche noto per aver creato il server di chiavi Hagrid, utilizzato dal servizio keys.openpgp.org.
L'obiettivo del nuovo progetto era ridisegnare l'architettura e applicare nuove tecniche per migliorare la sicurezza e l'affidabilità della base di codice.
Per migliorare la sicurezza, Sequoia utilizza non solo strumenti di programmazione sicuri che si avvalgono del linguaggio Rust, ma anche una protezione dagli errori a livello di API.
Ad esempio, l'API impedisce l'esportazione accidentale di materiale contenente chiavi segrete , poiché le operazioni di esportazione richiedono, per impostazione predefinita, una selezione esplicita. Allo stesso modo, l'API garantisce che nessun passaggio importante venga tralasciato durante l'aggiornamento di una firma digitale; per impostazione predefinita, l'ora di creazione, l'algoritmo di hash e l'emittente della firma vengono aggiornati automaticamente.
Sequoia sta anche cercando di eliminare le carenze di GnuPG , come la desincronizzazione delle funzionalità degli strumenti da riga di comando con la libreria di funzioni (alcune azioni possono essere eseguite solo tramite l'utility) e l'accoppiamento eccessivamente stretto tra i componenti, che rende difficile apportare modifiche, oscura il codice sorgente e impedisce la creazione di un sistema completo di unit test.
Sequoia sviluppa l'utility da riga di comando sq con supporto per sottocomandi in stile Git , il programma sqv (un sostituto di gpgv) per la verifica di firme separate, l'utility sqop (Stateless OpenPGP CLI) e la libreria sequoia-openpgp.
Ci sono collegamenti per i linguaggi C e Python. La maggior parte delle funzioni descritte nello standard OpenPGP sono compatibili con la crittografia, la decrittografia, la creazione e la verifica delle firme digitali.
Tra le funzionalità avanzate, si nota che supporta la verifica utilizzando firme digitali fornite separatamente (firma separata), l'adattamento per l'integrazione con i gestori di pacchetti (APT, RPM, upload, ecc.), La capacità di limitare le firme per valori di soglia e di tempo.
Per semplificare lo sviluppo, il debug e l'analisi degli incidenti, vengono forniti strumenti di ispezione dei pacchetti che si integrano con l'analizzatore e consentono di analizzare visivamente la struttura di messaggi crittografati, firme digitali e chiavi.
Per ragioni di sicurezza, è consentito l'utilizzo di servizi crittografici, come i coprocessori per il calcolo in enclave isolate. Per un ulteriore isolamento, i servizi che lavorano con chiavi pubbliche e private sono separati in processi distinti (l'interazione tra i processi è organizzata utilizzando il protocollo Cap'n Proto). Ad esempio, un archivio di chiavi è implementato come un processo separato.
Esistono due opzioni API: di basso livello e di alto livello. L'API di basso livello replica il più fedelmente possibile le funzionalità di OpenPGP e alcune estensioni correlate, come il supporto ECC, la notarizzazione (firma su firma) e gli elementi della bozza della futura edizione dello standard.
Si osserva che, secondo le funzionalità pianificate, Sequoia avrebbe raggiunto la versione 1.0 un anno fa, ma gli sviluppatori hanno deciso di non avere fretta e di dedicare invece più tempo alla ricerca di bug e alla stesura di una documentazione completa e di alta qualità, con collegamenti alle informazioni dello standard OpenPGP ed esempi di utilizzo.
La versione 1.0 attualmente copre solo il box sequoia-openpgp e l'utility di verifica della firma digitale sqv. L'interfaccia a riga di comando "sq" e le API di alto livello sono ancora in fase di finalizzazione e non sono ancora stabili.
Le limitazioni che si prevede di rimuovere nelle versioni future includono l'implementazione di servizi per l'archiviazione di chiavi pubbliche e private, il supporto per firme digitali in testo non crittografato e la possibilità di utilizzare espressioni regolari per determinare firme affidabili.