Con GPG, terze parti possono verificare che il messaggio sia stato crittografato da una chiave pubblica specifica?

1

Bob sta inviando il messaggio X ad Alice. Codifica X con la chiave pubblica di Alice usando gpg e invia il suo messaggio crittografato (testo cifrato).

In seguito Alice afferma che Bob ha commesso un errore e che il testo cifrato non è stato creato con la sua chiave pubblica.

Può Bob dimostrare a terzi che il messaggio crittografato è in effetti crittografato con la chiave pubblica di Alice?

Il messaggio crittografato risultante è diverso ogni volta anche quando il messaggio X è lo stesso ( Crittografa lo stesso file con GnuPG e la stessa chiave produce lo stesso testo cifrato? ) così la terza parte non può solo crittografarlo ancora e risultati comapre. C'è un altro modo?

Se possibile, fornisci i comandi su come eseguirlo nel software esistente.

EDIT: Alice non sta collaborando. X può essere rivelato a terzi (ma meglio se possibile senza)

    
posta urza.cc 09.12.2018 - 17:31
fonte

3 risposte

2

No.

Se non conosci la chiave privata, non c'è modo di verificare se un messaggio crittografato con PGP è crittografato con una chiave pubblica specifica anche se il messaggio di testo in chiaro è noto.

    
risposta data 09.12.2018 - 17:53
fonte
2

Forse sorta di

Il pacchetto pk-encrypted-sk in PGP (vedi rfc4880 5.1 ) normalmente contiene il 64- keyid 'lungo' della chiave del destinatario; questo ha lo scopo di aiutare il destinatario a utilizzare la chiave di decodifica corretta se ne ha più di uno e di aiutare il destinatario a identificare quale pacchetto di tag 1 (se presente) è per loro in un messaggio crittografato a più destinatari. Può essere soppresso sostituendo lo zero se lo si desidera. Questo può essere visualizzato da qualsiasi numero di strumenti di analisi / debug di PGP, incluso gpg --list-packets .

Se Bob è accusato solo di un errore, non di barare o mentire sull'invio del messaggio, e non ha usato%% di GnuPG di GnuPG o simili, questo è probabilmente sufficiente. Se Bob è accusato di negligenza (anche contributiva) può essere d'aiuto se quando il messaggio è stato inviato (o almeno prima di qualsiasi controversia) lo ha firmato, se fosse timestampato da un TSA, o entrambi, ma dovresti essere più specifico sul caso o sulla gamma di possibili casi da trattare. (ObSecStack: qual è il tuo modello di minaccia?)

Supponendo che il blob chiave sia ancora disponibile o possa essere ottenuto ad es. da un server di chiavi, questo 'dimostra' la chiave che Bob ha usato. Al momento è difficile, ma non impossibile, generare una chiave falsa (second-preimage) per un keyid lungo. (È facile per keyids a 32 bit "corti" spesso usati per la selezione manuale o "verifica", vedi link . È pratico generare collisioni per 64-bit, ma ciò richiederebbe a Alice di colludere consapevolmente in un falso reclamo; vedi sopra sul modello di minaccia.

Tuttavia, ciò non costituisce la prova che la chiave usata era (o è tuttora) di Alice - è piuttosto probabile che Bob abbia effettivamente commesso un errore. Quale motivo o prova ha usato nella scelta di quella chiave per crittografare?

  • Basta avere una chiave con il nome di Alice in esso NON è la prova che è la sua chiave - quelli sono banali da falsificare.

  • Avere una chiave con il nome di Alice che è stato firmato da altre parti fidate è una prova migliore, ma non assoluta - con abbastanza sforzo che qualcuno potrebbe aver posato come Alice per ottenere una firma contraffatta.

  • Anche se Alice in realtà ha dato a Bob questa chiave, può provare (1) che lo ha fatto e (2) in seguito lo ha sempre mantenuto su dispositivo (s) o archiviazione che nessun altro avrebbe potuto manomettere ?

Nota: simile a È possibile dimostrare quale chiave pubblica è stata utilizzata per crittografare un messaggio? che copre un intervallo più ampio rispetto al solo PGP.

    
risposta data 10.12.2018 - 07:58
fonte
-1

Dichiarazione di non responsabilità: questa risposta è sbagliata, come delineato dai commenti seguenti.

Devo in parte contraddire la risposta di Moonsik Park.

Se Bob ha ancora il testo in chiaro di X, e la terza parte (Theo) conosce la chiave pubblica di Alice, Bob può consegnare X a Theo e Theo può crittografare X con la chiave pubblica di Alice e confrontare i risultati con il testo cifrato Bob inviato ad Alice.

Tuttavia, dichiari che Alice non sta collaborando, quindi Alice può sempre affermare che il messaggio che ha ricevuto non è quello che Bob afferma di aver inviato. A meno che non ci sia una prova esterna che il testo cifrato che Bob afferma di aver inviato è identico a quello che Alice ha ricevuto, non c'è davvero alcun modo per verificare che Alice abbia ricevuto alcun messaggio specifico, o addirittura alcun messaggio.

    
risposta data 10.12.2018 - 11:34
fonte

Leggi altre domande sui tag