Dato il passo P = ras_encrypt(Bob's public key, K + S)
, non c'è un modo per Alice di negare che lei conoscesse K, e quindi sapeva (o avrebbe potuto sapere) il contenuto di M, e quindi non può negare plausibilmente che lei ha inviato il messaggio M a Bob. Qualche altra persona che sa che K poteva creare H, e Alice avrebbe potuto essere ingannato nel creare S da H. Tuttavia, il passo che genera P richiede ad Alice di conoscere K, quindi non può negare plausibilmente di essere in grado di leggere M ', che per tutti gli scopi pratici significa che sa cosa c'era in M e quindi ha inviato M a Bob (e ha la prova che lo ha fatto).
Tuttavia, possiamo considerare una variazione del protocollo proposto che significherebbe che Bob sa che Alice ha inoltrato il messaggio, ma non dimostra che Alice conoscesse il contenuto del messaggio che ha inoltrato. La soluzione alternativa, utilizzando qualsiasi sistema di crittografia a chiave pubblica appropriato (PKCS), è:
- Alice sceglie una chiave casuale K e crittografa il messaggio M utilizzando questa chiave K.
M' = AES(K, M)
- Alice blocca la chiave pubblica di K e Bob.
H = SHA(K + Bob's Public Key)
- Alice crittografa K (più materiale extra arbitrario se la chiave è ritenuta troppo breve) utilizzando la chiave pubblica di Bob:
K' = PKCS(Bob's public key, K)
- Alice crittografa H usando la sua chiave privata.
S = PKCS(Alice's private key, H)
- Alice crittografa K 'e S usando la chiave pubblica di Bob.
P = PKCS(Bob's public key, K' + S)
- Alice invia P, M 'a Bob.
Quando Bob riceve P, M ', lui:
- Utilizza la sua chiave privata per decifrare P e ottenere K ', S.
- Utilizza la chiave pubblica di Alice per decrittografare S e ottenere H.
- Utilizza la sua chiave privata per decrittografare K 'e ottenere K.
- Utilizza la sua chiave pubblica e K per convalidare H.
- Utilizza K per decrittografare M 'e ottenere M.
Ora Alice può negare la creazione del messaggio perché potrebbe essere stata ingannata da Mallory (il malvagio) a prendere M ', H e K' e produrre S e poi P, e inviare P e M 'a Bob, senza effettivamente conoscere K o cosa c'è in M. Richiederebbe qualche creduloneria di essere stato ingannato in quel modo, ma la denigrazione potrebbe richiedere l'apparenza di creduloneria.
Se Eve (l'intercettatore) intercetta P e M ', non può fare nulla. Non può decifrare P perché non ha la chiave privata di Bob. Pertanto, non può recuperare K 'o S, e quindi non può ottenere l'originale K o M.
Chiaramente SHA e AES possono essere qualsiasi accordo su algoritmo hash sicuro e algoritmo simmetrico (privato) della chiave.
O ho preso una battuta da qualche parte?