Crittografa il contenuto in modo che possa essere decodificato solo da un'applicazione specifica

0

Esiste un approccio di gestione delle chiavi per il seguente scenario:

  • Il cliente Alice utilizza un'applicazione S1 per generare un file. I contenuti dovrebbero essere crittografati in modo tale che possano essere decodificati solo da qualcuno che possiede un'altra applicazione S2.

  • Alice distribuisce il file pubblicamente.

  • Il cliente Bob possiede l'applicazione S2 ed è in grado di decodificare il file.

In questo caso, Alice non conosce Bob e non scambia direttamente alcuna chiave con lui. Lo scambio di chiavi è offline e tra le applicazioni S1 e S2!

In che modo l'applicazione S2 memorizzerà la sua chiave di decodifica? L'offuscamento nel binario è una cattiva idea. Diciamo che l'utilizzo di un server di chiavi è un non-starter nel mio scenario. ci sono altre soluzioni?

C'è qualche prodotto conosciuto in questo scenario? Come hanno risolto?

    
posta SkypeMeSM 06.07.2017 - 16:45
fonte

1 risposta

1

La vera crittografia significa che sarà richiesto un segreto per ottenere i dati originali. La memorizzazione dei segreti comuni è:

  • il cervello del destinatario (qualcosa che conosci)
  • una smartcard di altri HSM (qualcosa che hai)

Non appena esci da questo caso di utilizzo della crittografia sicura , cadi nell'offuscamento con 2 modi comuni:

  • un algoritmo personalizzato: difficile da configurare e testare in modo sicuro e difficile da proteggere dal reverse engeneering, per favore mantienilo lontano da
  • una chiave nascosta all'interno di un eseguibile dell'applicazione - difficile da modificare se fosse compromessa, e difficile da proteggere dal reverse engineering, non molto meglio

Se tutto ciò di cui hai bisogno è che Alice e Bob non siano obbligati a scambiare alcuna chiave, potresti utilizzare un hub centrale:

  • l'applicazione S2 è distribuita in modo tale che ogni cliente riceve una coppia asimmetrica di chiavi personali e l'app centrale memorizza solo la parte pubblica, idealmente la coppia dovrebbe essere generata lato client, ad esempio durante l'inizializzazione dell'app
  • quando Alice invia un messaggio tramite S1, il messaggio viene crittografato con una chiave simmetrica casuale e tale chiave viene trasmessa in modo sicuro all'hub centrale. Un UUID del messaggio viene trasmesso al destinatario e all'hub centrale
  • quando Bob riceve il messaggio e l'UUID, l'applicazione S2 apre un canale protetto (TLS) sull'hub centrale. Bob è autenticato con la sua chiave privata come proprietario legittimo S2, quindi l'hub accetta la richiesta per la chiave simmetrica per il messaggio identificato dal suo UUID
  • S2 può decifrare il messaggio e Bob può leggerlo

Limiti:

  • ciò che è controllato è solo la proprietà di una chiave valida, se Bob diventa malvagio e decide di vendere copie delle sue chiavi, non puoi impedirlo. Lo stesso se non diventa cattivo ma viene violato
  • se Bob scopre che l'app S2 non è ciò che vuole e usa un'app di terze parti che imita l'interfaccia non hai un modo tecnico per prevenirlo - ma possono esserci vie legali ...
  • anche se l'hub centrale non riceve i messaggi, hai il pieno controllo su S1 e S2, così puoi facilmente ottenere tutti i messaggi scambiati - devi saperlo quando presenti la soluzione ai clienti
risposta data 10.07.2017 - 12:00
fonte

Leggi altre domande sui tag