Come modifichiamo la chiave pubblica nella nostra app commerciale?

3

Abbiamo una libreria commerciale che utilizza una chiave pubblica per firmare una richiesta XML che arriva al nostro server delle licenze. La risposta che ritorna è XML che è stato firmato con la nostra chiave privata, e la libreria quindi usa la chiave pubblica per verificare la risposta.

Come gestiamo la situazione in cui la chiave privata è stata compromessa (intenzionalmente o attraverso un errore)? Ora abbiamo bisogno di una nuova chiave pubblica / privata. Tuttavia, le persone non saranno disposte ad aggiornare la loro libreria per questo caso.

Dovremmo avere una proprietà per la libreria che, se impostata, è la nuova chiave pubblica da usare? E poi inviarlo chiedendo alle persone di aggiornare quell'impostazione?

La libreria è runnign su Java o .NET e il server è .NET su Azure se questo è importante (probabilmente no).

    
posta David Thielen 02.03.2018 - 23:23
fonte

2 risposte

1

Quando la chiave privata è compromessa, ci sono diverse cose che devi fare:

  • Interrompi l'uso della chiave privata (ovviamente): poiché altre parti possono ora impersonare te usando la chiave trapelata, dovresti rinunciare del tutto alla chiave.

  • Informa le altre parti (ad esempio tutti i tuoi clienti e utenti della tua biblioteca) che la chiave è stata compromessa: dovrebbero smettere di usare la chiave pubblica corrispondente. Il modo in cui lo fai dipende da come hai propagato la chiave pubblica in primo luogo. Se hai utilizzato un KDC (Key Distribution Center) di qualsiasi forma, dovresti avvisarlo della perdita e eventualmente revocarlo se lo consente.

  • Genera una nuova coppia e distribuisci la chiave pubblica sostitutiva ai tuoi corrispondenti e / o al KDC.

Dalla tua domanda, sembra che tu abbia un problema chiave di distribuzione : dai l'impressione che la tua chiave pubblica sia distribuita come embed all'interno della tua libreria, quindi non puoi facilmente impedire l'uso di una chiave compromessa è la parte pubblica dei tuoi clienti (oltre a dire loro di smettere di usare la tua libreria, che è probabilmente un no-no).

Se la tua domanda sta anticipando qualsiasi perdita (si spera), dovresti riprogettare la tua biblioteca per acquisire la chiave pubblica pertinente separatamente da quella hardcoded. Uno schema semplice segue queste linee:

  • È possibile distribuire la chiave pubblica come file (ad esempio certificato X.509 firmato) all'interno del programma di installazione della libreria. Il programma di installazione dovrebbe essere responsabile dell'installazione del file e della libreria all'interno del SO guest e configurare la libreria per utilizzarlo.

  • È possibile distribuire i programmi di installazione standalone per un file di chiave pubblica e allo stesso modo installare (sostituire) il file nel SO guest e configurare la libreria per utilizzarlo.

In questo modo, in caso di perdita, i tuoi clienti possono ricevere una singola patch non funzionale, che di solito è molto più facile (molto meno rischi per la produzione) di ottenere attraverso l'approvazione di una reinstallazione completa.

Se hai il lusso di usare un KDC, verifica periodicamente che la libreria usi la chiave pubblica attualmente valida a disposizione. I KDC di solito sono in grado di dire ai clienti che la chiave che stanno usando è valida o revocata, e anche di esporre quella attualmente valida.

Ricorda che facendo filtrare la tua chiave privata, subirai un duro colpo per la fiducia dei tuoi clienti. Essere in grado di correggere in modo rapido ed efficace la situazione sarà fondamentale per tenerti dalla parte giusta.

    
risposta data 03.03.2018 - 13:03
fonte
1

Opzione semplice: usa due chiavi pubbliche incorporate nella libreria. Uno di questi viene utilizzato giorno per giorno, mentre il secondo è in cold storage offline. Se il compromesso chiave richiede una rotazione, puoi riportare la chiave offline online. Quindi aggiorni la libreria prima del prossimo compromesso.

Opzione più complessa: incorporare una chiave dell'autorità di certificazione. Tienilo offline. Oltre alle risposte firmate, includi la chiave pubblica (proprio come una richiesta HTTPS). Verifica la catena di CA. (Questo non deve essere un CA commerciale, puoi gestirlo da solo.)

Più complessi e più flessibili: combinali entrambi. Due CA, cold storage offline in HSM / Smart Card per chiavi CA.

    
risposta data 03.03.2018 - 05:34
fonte

Leggi altre domande sui tag