Schema di crittografia in cui più utenti possono crittografare

3

Ho un caso d'uso in cui ho bisogno di garantire che un file venga ricevuto dagli utenti di un gruppo. Gli utenti possono essere aggiunti o rimossi da questo gruppo e la crittografia non è obbligatoria, solo per assicurarsi che il file provenga da uno di quegli utenti

Il mio primo pensiero è stato quello di utilizzare la crittografia simmetrica, ma avrebbe reso difficile la rimozione degli utenti dal gruppo.

Quindi, sebbene utilizzassi una coppia di chiavi privata e pubblica per ciascun utente, l'utente crittografa il file con la sua chiave privata e quando devo usarlo lo decrittografa con la chiave pubblica. Se un utente deve essere rimosso, potrei semplicemente revocare il suo certificato

Il problema è che non so da quale utente provenga il file, quindi dovrei provare a decodificarlo con ogni chiave fino a quando non decodifica con successo

C'è un modo più semplice per raggiungere questo obiettivo?

    
posta Mr. E 10.04.2017 - 19:12
fonte

3 risposte

4

Sembra un caso d'uso per GPG - hai provato GPG e l'hai trovato mancante (come molti altri hanno ), e vuoi una soluzione diversa?

In caso contrario, GPG sembra lo strumento appropriato per il lavoro, anche se significa che avrai una chiave per utente e nessun controllo su quella chiave (anche se puoi scegliere di contrassegnarla come non affidabile).

Se hai bisogno di controllare la chiave, x509 suona come il modo migliore per andare, ma come dici tu, devi quindi gestire la decrittografia.

Vorrei anche mettere in guardia contro il tuo approccio private key encrypt, public key decrypt , in quanto significa che tutti gli utenti con accesso alla chiave pubblica (ad esempio chiunque abbia avuto una copia del certificato) possono decifrare. Per evitare ciò, è necessario utilizzare la chiave pubblica del destinatario per la crittografia (e la chiave privata del mittente per la firma).

Di passaggio: sembra che tu stia parlando della firma, per la quale non devi preoccuparti della crittografia. In entrambi i casi, la pubblicazione / convalida di chiavi pubbliche (ad esempio in LDAP o utilizzando x509) sembra una possibile soluzione.

    
risposta data 10.04.2017 - 19:22
fonte
2

Sei sulla strada giusta, ma l'opzione migliore è sign-and-encrypt. Hai una coppia di chiavi, così come ogni utente nel gruppo. Firmano il messaggio con la loro chiave privata e criptano con la tua chiave pubblica.

Quindi, puoi decifrare mentre descrivi con la tua chiave privata e verificare da quale utente proviene il messaggio verificando la firma con la chiave pubblica di quell'utente.

    
risposta data 10.04.2017 - 19:20
fonte
0

Come altri hanno già detto, qui ci sono probabilmente degli strumenti che possono farlo, ma cercherò di mostrare in un modo come ciò può essere fatto.

Gli utenti devono avere chiavi pubbliche / private. Ogni utente ha la propria chiave privata e le chiavi pubbliche di tutti gli altri utenti. Quando invia i dati, genera le chiavi simmetriche e le usa per crittografare i dati. La chiave necessaria per decifrare i dati viene quindi aggiunta più volte a quel messaggio, ogni volta crittografato con la chiave pubblica di un altro utente.

Quando si riceve il messaggio, un utente utilizzerà la propria chiave privata per decodificare la chiave simmetrica generata e la utilizzerà per decrittografare i dati iniziali.

In questo modo, ogni messaggio sarà accessibile solo ai destinatari previsti. L'aggiunta o la rimozione di destinatari può essere eseguita in base al messaggio.

Se l'utente che invia i dati sta creando un hash di questi dati e crittografa l'hash con la propria chiave privata, tutti gli utenti che ricevono saranno in grado di decifrare tale hash. Generando un hash locale e confrontandolo con quello decrittografato, l'utente conferma che l'originatore è effettivamente il proprietario della chiave privata corrispondente. Se i dati hash contengono anche l'elenco dei destinatari, ciascun ricevitore sarà in grado di convalidare tale elenco di destinatari.

    
risposta data 11.04.2017 - 05:41
fonte

Leggi altre domande sui tag