Mantenere sicure le chiavi di firma del software

2

Sto creando un'applicazione che firmerà automaticamente il codice con chiavi sicure ( .key ). L'app verrà eseguita su ambiente Windows sviluppato in ambiente .NET (C #). La firma è semplice: codice sorgente + chiavi genereranno artefatti firmati. Questo è già in atto. La sfida che sto affrontando è come archiviare le chiavi nel modo più sicuro possibile.

Quello che sto considerando è di crittografare le chiavi con strumenti come VeraCrypt. Ogni volta che l'app deve firmare il codice, crittografare i file, firmarlo e decrittografarlo di nuovo. VeraCrypt per esempio offre opzioni a riga di comando per questo. Questo solleva quindi un altro problema: come memorizzare la passphrase nell'app in modo sicuro.

Dato che non sono un esperto di sicurezza, potresti fornirmi alcuni commenti sulla soluzione proposta? Quali altre opzioni sarebbero appropriate e forse migliori?

    
posta A.Igor 03.02.2017 - 15:37
fonte

1 risposta

2

Sei incappato in un problema molto difficile; quando memorizzi le chiavi di crittografia nel software, hai davvero tre opzioni:

  1. Archivia la password crittografata su disco e chiedi all'utente di inserire una password per decrittografarla in fase di runtime. Devi quindi preoccuparti anche della gestione sicura della memoria, che è una vera e propria tana di coniglio.

  2. Evita di chiedere all'utente una password eseguendo qualche strano trucco di offuscamento in cui ottieni una chiave di decrittazione da numeri seriali hardware e altro.

  3. Utilizza le API di gestione delle chiavi del sistema operativo. Se possibile, usa anche le API del sistema operativo per eseguire tutte le operazioni crittografiche per te in modo che la tua app non abbia mai effettivamente la chiave privata in memoria. Quindi ti puoi fidare che il sistema operativo sta gestendo la chiave in modo sicuro e non devi pensarci.

Fortunatamente per te, Windows e .NET hanno API di gestione delle chiavi molto buone chiamate CAPI: Crypto API .

Vorrei iniziare con Google " windows che memorizza le chiavi crittografiche .net " e sta facendo qualche lettura. Questo articolo in particolare sembra un buon punto di partenza:

Se stai scrivendo un webservice che verrà eseguito in un datacentre che controlli, potresti prendere in considerazione l'utilizzo di un modulo di sicurezza hardware . Inoltre, provider di hosting come Amazon e Azure forniscono API per questo anziché richiedere il proprio HSM fisico. Detto questo, questi dispositivi partono da $ 5,000 USD e sono eccessivi per la maggior parte delle applicazioni.

    
risposta data 03.02.2017 - 16:34
fonte

Leggi altre domande sui tag