I file delle chiavi private devono essere archiviati in git?

2

A mio avviso, git come sistema di controllo della versione dovrebbe tenere traccia di tutte le risorse o file necessari per creare una versione del software.

Se è necessario un file di chiave privata per il corretto funzionamento di un server (ad esempio per comunicare con il client che ha la chiave pubblica che distribuiamo), allora questo file di chiave privata dovrebbe essere tracciato in git o altrove?

    
posta palazzo train 29.09.2014 - 06:04
fonte

5 risposte

6

No, non dovrebbe.

Una chiave ha specifiche differenti al codice sorgente o al programma.

Il prodotto non dovrebbe funzionare senza una chiave
È specifica del prodotto che non funziona senza una chiave. Se includi la chiave nella distribuzione, distruggi efficacemente il suo utilizzo.

Una chiave dovrebbe essere facilmente sostituibile.
 In effetti, a volte è necessario sostituirlo regolarmente. E a volte una distribuzione di una nuova versione è un processo lungo e difficile. Combina questo con la necessità di ricostruire il tuo progetto per ottenere una nuova chiave, e hai la ricetta per un mal di testa perenne. Se non richiede una ricostruzione per ottenere la nuova chiave, allora c'è nessun motivo per inserire la chiave in git - non è usata per costruire, raggruppare o testare la tua app .

Considera i controlli del codice.
Un revisore deve avere accesso al codice sorgente per verificare la logica (e talvolta un programma di lavoro). Sono non che dovrebbero vedere (e quindi essere in grado di memorizzare) le tue chiavi private. Non ho intenzione di capire se è realistico memorizzare una chiave a 2048 bit semplicemente guardandola, a volte le recensioni vengono fatte da remoto.

Una chiave non ha bisogno di una cronologia.
Una chiave è non legata alla versione del software nella maggior parte dei casi. Le date e i motivi di modifica delle chiavi possono essere interessanti, ma non è necessario che siano disponibili per tutti.

Le chiavi vengono emesse per azienda o per server, non per applicazione.
Se dovessi mai decidere di aver bisogno di un secondo server in un altro paese con leggi diverse e una chiave diversa, o consentire a una società diversa di eseguire anche il tuo software server, questo è il più importante. Questi dovrebbero avere diversi chiavi. Raggruppare la tua chiave con l'app è un no-go allora.

Le chiavi non dovrebbero essere informazioni pubbliche
Il tuo stagista deve davvero avere accesso alla chiave del tuo server di produzione? Veramente? Il tuo ufficio di conformità / sicurezza è d'accordo?

C'è solo una chiave che potresti voler includere in Git: una chiave di test per un server di test interno o un server locale. Ciò faciliterà la distribuzione iniziale e ti consentirà di cambiare i formati chiave senza fare una email aziendale chiedendo a tutti gli sviluppatori di cambiare le loro chiavi locali, mentre non invalidando la sicurezza e l'integrità del server di produzione.

    
risposta data 07.10.2014 - 13:22
fonte
3

Come sempre, questa è una domanda non ovvia solo perché ci sono diversi principi validi in conflitto.

Il primo è che dovresti controllare la versione di tutto ciò che è necessario per costruire il progetto. Questo è piuttosto importante. L'altro è che le informazioni segrete dovrebbero essere distribuite su una base di necessità di sapere per ridurre al minimo la probabilità di violazioni dei dati. Questo può essere estremamente importante o meno importante a seconda di quali sarebbero le conseguenze.

Dal momento che conosci le circostanze della tua organizzazione meglio di noi, devi fare una valutazione per quel trade-off. Possiamo solo dirti quanto sono importanti le cose in generale .

    
risposta data 07.10.2014 - 13:03
fonte
3

Se metti una chiave privata , non è più privata. Se non ti dispiace che ciò accada, allora fallo. Se si desidera mantenere privata la chiave privata, non pubblicarla su un server pubblico.

Invece, esegui il check-in per istruzioni git su come qualcuno può generare e utilizzare la propria chiave privata.

    
risposta data 07.10.2014 - 13:31
fonte
1

Penso che sia meglio non, per ragioni di sicurezza. O chiunque può accedere a git può ottenere la chiave privata.

Un modo migliore potrebbe essere quello di mettere la chiave privata e la chiave pubblica da qualche parte con l'accesso a Internet. Ogni cliente può ottenere la chiave pubblica direttamente senza autorizzazione. E il server riceverà la chiave privata con autorizzazione. È solo un po 'pensato, dal momento che non sono l'esportazione per il dominio.

Ma se la chiave privata mantenuta in git è solo per test, ma non per prodotto reale, penso che vada bene.

    
risposta data 29.09.2014 - 07:27
fonte
0

Se la chiave è necessaria per creare o eseguire il software , allora è parte della sorgente e dovrebbe essere versionata. Ma non credo che sia un caso comune.

Se è necessario un tasto a per creare o eseguire il software, ma il è necessario per designare la build come versione ufficiale, quindi il la chiave dovrebbe vivere sul server di build. Nel controllo della versione dovrebbe essere un metodo utilizzato per generare una chiave valida per il test o una chiave particolare da utilizzare nei test. La chiave può essere a sua volta versione, ma non insieme al progetto, perché i membri del team non ne hanno effettivamente bisogno, solo il build server o il gestore di rilascio lo fanno.

    
risposta data 07.10.2014 - 13:19
fonte

Leggi altre domande sui tag