Cifratura e negabilità

0

Ho il seguente problema: Alice vuole inviare a Bob un messaggio tale che Bob sa che è di Alice ma allo stesso tempo non può provare che Alice gli abbia inviato questo messaggio.

La soluzione che ho trovato, usando RSA, è:

  1. Alice sceglie una chiave casuale K e crittografa il messaggio M utilizzando questo tasto K. M '= aes (K, M)
  2. Alice blocca la chiave pubblica di K e Bob per ottenere H. H = sha (chiave pubblica di K + Bob)
  3. Alice firma H usando la sua chiave privata. S = rsa_sign (chiave privata di Alice, H)
  4. Alice crittografa K e S usando la chiave pubblica di Bob. P = rsa_encprypt (chiave pubblica di Bob, K + S)
  5. Alice invia P, M 'a Bob

Bob riceve P, M ':

  1. Utilizza la sua chiave privata per ottenere K, S.
  2. Utilizza la chiave pubblica di Alice per verificare S
  3. Utilizza K per decrittografare M '.

Vedi qualche buco in questo?

Grazie!

    
posta 29.01.2014 - 01:02
fonte

1 risposta

3

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), è:

  1. Alice sceglie una chiave casuale K e crittografa il messaggio M utilizzando questa chiave K.
    M' = AES(K, M)
  2. Alice blocca la chiave pubblica di K e Bob.
    H = SHA(K + Bob's Public Key)
  3. 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)
  4. Alice crittografa H usando la sua chiave privata.
    S = PKCS(Alice's private key, H)
  5. Alice crittografa K 'e S usando la chiave pubblica di Bob.
    P = PKCS(Bob's public key, K' + S)
  6. Alice invia P, M 'a Bob.

Quando Bob riceve P, M ', lui:

  1. Utilizza la sua chiave privata per decifrare P e ottenere K ', S.
  2. Utilizza la chiave pubblica di Alice per decrittografare S e ottenere H.
  3. Utilizza la sua chiave privata per decrittografare K 'e ottenere K.
  4. Utilizza la sua chiave pubblica e K per convalidare H.
  5. 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?

    
risposta data 29.01.2014 - 03:32
fonte

Leggi altre domande sui tag