Schema di crittografia più robusto

1

Sono un po 'perso qui perché non ho mai avuto questo problema prima. Uno dei nostri clienti vuole avere il nostro codice sorgente nel caso scompaia per qualsiasi motivo. Siamo ansiosi di rispettare, ma il codice sorgente è la nostra unica risorsa nella nostra azienda. Hanno accettato di accettare il codice sorgente crittografato e una volta all'anno controlla che "qualunque metodo scegliamo" funzioni e che il file che stiamo caricando sul loro server funzioni. Utilizzeremo una terza parte che manterrà la chiave o la password per i file nel caso scompaia.

  • È sicuro utilizzare l'approccio con chiave pubblica / privata?

  • O ci sono altri metodi che potrebbero migliorare la nostra sicurezza?

EDIT: Dopo aver letto i commenti e la risposta di Luis Casillas mi piacerebbe migliorare la mia domanda aggiungendo alcune informazioni. Anche se ci fidiamo un po 'del client, non ci fidiamo della sicurezza IT degli "altri". Stiamo esaminando il caso peggiore in cui sono stati violati e il nostro codice sorgente è trapelato. So che sembra paranoico ma questo software è la nostra unica risorsa. Penso che l'approccio della cerimonia sia quello che stiamo cercando qui e nello specifico la mia domanda riguarda il passaggio 6. Diciamo che ci riuniamo in una stanza con l'agente di escrow e il mio cliente. Sono d'accordo che il codice sorgente è legittimo. Qual è il modo più sicuro per crittografarlo? Una crittografia a chiave pubblica funziona contro l'attacco a forza bruta? Come posso ridurre le possibilità che il codice venga decodificato senza la "password segreta". Grazie per tutti i commenti, questa è la prima volta che facciamo questo e tutti i commenti sono molto apprezzati.

    
posta Cristian Eduardo Lehuede Lyon 26.10.2016 - 02:18
fonte

1 risposta

1

In ogni caso, il tuo intero scenario sembra fare una serie di presupposti che sembrano piuttosto magici. Ad esempio:

They agreed to accept the source code encrypted and once every year check that the "whatever method we choose" works and that the file we are uploading to their server works.

Come possono controllare se il file che carichi sul loro server "funziona", se non decifrandolo? Se riescono a decrittografarlo una volta all'anno, perché non possono decifrarlo quando vogliono? E anche se (in qualche modo!) Possono davvero decifrarlo solo una volta all'anno, perché non possono quindi resistere per sempre alla fonte decifrata?

Una volta considerate queste domande, mi sembra che ciò che stai proponendo sia molto più complesso di come lo stai facendo:

  • Devi assolutamente mostrare il tuo codice sorgente al client per far funzionare qualsiasi schema, altrimenti non possono sapere che il file crittografato che fornisci è in realtà il tuo codice sorgente.
  • Il metodo per mostrare loro il codice sorgente non può dare loro una copia in chiaro del codice di base, perché quindi non ha senso dar loro il file crittografato.
  • Hai bisogno che loro firmi siano soddisfatti della tua affermazione secondo cui ciò che hai mostrato è davvero il tuo codice sorgente e che il file crittografato che stai trasmettendo li decifra allo stesso modo di quello che mostrato loro.

Quindi, per rendere veramente funzionante ciò che stai descrivendo, hai bisogno di una cerimonia complicata, forse qualcosa del genere:

  1. Il client, l'agente di escrow principale e ti trovi insieme in una stanza.
  2. O fornite un computer con una nuova installazione del sistema operativo, l'installazione degli strumenti necessari per eseguire la cerimonia, nessuna connettività di rete e la capacità di leggere i supporti rimovibili.
  3. Il client esamina il computer e ha installato il software per verificare che il software installato non sia dannoso in alcun modo.
  4. Copia il tuo codice sorgente da un supporto rimovibile nel disco rigido del computer.
  5. Il cliente deve esaminare il codice sorgente per accertarsi che sia autentico, ma non è autorizzato a copiarlo su un supporto esterno.
  6. Con la testimonianza del client, si eseguono i comandi per archiviare l'albero dei sorgenti, generare una chiave, crittografare l'archivio e copiare il file crittografato nella scelta del client di un supporto esterno, che viene quindi fornito al client.
  7. Con la testimonianza del client, si eseguono i comandi per copiare la chiave nella scelta del client di supporti esterni, che viene quindi fornita all'agente di escrow.
  8. Ora devi tutti firmare che la cerimonia è stata eseguita in modo soddisfacente, altrimenti non è valido.

E scommetto che lo sto semplificando un bel po '. Messaggio da portare a casa: fare ciò che si propone in modo sicuro con parti che non si fidano veramente , è molto più complicato di quanto si pensi. Se pensi che questo approccio paranoico sia eccessivo, allora stai fiduciosamente implicitamente nel tuo cliente, e forse è meglio codificare quella fiducia in condizioni contrattuali piuttosto che accumulare materiale tecnico sulla sicurezza.

Is it safe to use Public/Private key approach?

L'uso della crittografia a chiave pubblica non ti guadagna nulla qui, perché dal punto di vista del cliente, stai semplicemente dando loro un file crittografato e trattenendo la chiave che può decodificarlo. Quindi quella chiave potrebbe essere simmetrica.

Or are there other methods that could improve our safety?

Condivisione segreta mi viene in mente, ma potrebbe non essere pratico con un file molto grande.

    
risposta data 26.10.2016 - 04:04
fonte

Leggi altre domande sui tag