Le aziende Red Hat e Google, insieme all'Università di Purdue, hanno fondato il progetto Sigstore, mirato alla creazione di strumenti e servizi per la verifica del software attraverso firme digitali e la registrazione pubblica per confermare l'autenticità (transparency log). Il progetto si svilupperà sotto l'egida della non profit Linux Foundation.
Il progetto proposto consentirà di aumentare la sicurezza dei canali di distribuzione dei software e di proteggersi dagli attacchi volti a sostituire componenti e dipendenze software (supply chain). Una delle principali problematiche di sicurezza nel software open source è la difficoltà di verificare la fonte di ottenimento del programma e di convalidare il processo di build. Ad esempio, per controllare l'integrità di una release, la maggior parte dei progetti utilizza hash, ma spesso le informazioni necessarie per la verifica dell'autenticità vengono conservate su sistemi non protetti e in repository condivisi di codice, il cui compromesso può permettere agli attaccanti di sostituire i file necessari per la verifica e, senza destare sospetti, introdurre modifiche dannose.
Solo una piccola parte dei progetti utilizza firme digitali nella distribuzione delle release a causa delle difficoltà nella gestione delle chiavi, nella distribuzione delle chiavi pubbliche e nel revocare le chiavi compromesse. Perché la verifica abbia senso, è necessario anche organizzare un processo affidabile e sicuro per la distribuzione delle chiavi pubbliche e dei checksum. Anche in presenza di una firma digitale, molti utenti ignorano la verifica, poiché richiede tempo per comprendere il processo di verifica e capire quale chiave sia degna di fiducia.
Sigstore è presentato come l'equivalente di Let's Encrypt per il codice, fornendo certificati per la certificazione del codice con firme digitali e strumenti per automatizzare la verifica. Con Sigstore, gli sviluppatori potranno generare firme digitali per artefatti legati all'applicazione, come file di release, immagini dei contenitori, manifesti ed eseguibili. La particolarità di Sigstore è che il materiale utilizzato per la firma è registrato in un registro pubblico immutabile, che può essere utilizzato per la verifica e l'audit.
Invece di chiavi permanenti, Sigstore utilizza chiavi effimere di breve durata, generate in base ai privilegi confermati dai fornitori di OpenID Connect (al momento della generazione delle chiavi per la firma digitale, lo sviluppatore si identifica tramite il fornitore di OpenID associato all'email). L'autenticità delle chiavi viene verificata attraverso un registro centralizzato pubblico, che consente di accertarsi che l'autore della firma sia realmente chi afferma di essere e che la firma sia stata generata dallo stesso partecipante responsabile delle versioni precedenti.
Sigstore offre sia un servizio pronto all'uso, che può già essere utilizzato, sia un set di strumenti che consente di implementare servizi simili sulla propria infrastruttura. Il servizio è gratuito per tutti gli sviluppatori e fornitori di software, ed è ospitato in una piattaforma neutrale — la Linux Foundation. Tutti i componenti del servizio sono open source, scritti in linguaggio Go e distribuiti con licenza Apache 2.0.
Tra i componenti in fase di sviluppo si possono segnalare:
- Rekor — implementazione di un registro per la conservazione di metadati autenticati con firme digitali, che riflettono informazioni sui progetti. Per garantire l'integrità e la protezione da alterazioni retroattive dei dati, viene utilizzata una struttura ad albero nota come "Albero di Merkle", in cui ogni ramo verifica tutti i rami e nodi sottostanti, grazie a un hashing congiunto (ad albero). Possedendo un hash finale, l'utente può assicurarsi della correttezza dell'intera storia delle operazioni, così come della correttezza degli stati passati del database (l'hash di controllo radice del nuovo stato del database è calcolato tenendo conto dello stato precedente). Per la verifica e l'aggiunta di nuove registrazioni è fornita un'API Restful, così come un'interfaccia cli.
- Fulcio (SigStore WebPKI) — sistema per la creazione di autorità di certificazione (Root-CA), che emettono certificati a breve termine basati su email, autenticati tramite OpenID Connect. La durata del certificato è di 20 minuti, durante i quali lo sviluppatore deve riuscire a generare una firma digitale (se successivamente il certificato finisce nelle mani di un malintenzionato, sarà già scaduto).
- Cosign (Container Signing) — strumento per la creazione di firme per contenitori, la verifica delle firme e la pubblicazione di contenitori firmati in repository compatibili con OCI (Open Container Initiative).
Fonte: opennet.ru
