Come può Alice e Bob dimostrare di condividere un file?

2

Carl chiede ad Alice e Bob se hanno un file f tale che per un sicuro crittografico
funzione hash h , h(f) = K . Entrambi affermano di avere f , ma non possono mostrare il file.

Carl non li crede. Può fare ulteriori domande ad Alice e Bob, anche se possono parlare segretamente l'un l'altro (notare che anche se Alice o Bob hanno f , loro
impossibile mostrare f tra loro). Potrebbe Carl scoprire se entrambi hanno f ?
Potrebbe Carl scoprire se alcuni di loro hanno f ?

    
posta user70561 17.03.2015 - 22:36
fonte

3 risposte

2

Carl può chiedere ad Alice e Bob (indipendentemente) di calcolare gli hash di specifici fileparts e confrontare i risultati. Ad esempio C chiede A per calcolare h (f [0-100]) e riceve h 'allora C chiede a B di fare lo stesso e B restituisce h' '. Se h '== h' 'entrambi hanno le stesse conoscenze su questa parte di f. Puoi ripetere ciò per diverse sezioni del file.

Avviso: Se A e B cooperano (e vogliono ingannare C) e solo uno di loro ha il file, non c'è modo per C di dire se entrambi hanno f o stanno solo cooperando.

    
risposta data 18.03.2015 - 05:01
fonte
0

Se Alice e Bob possono parlarsi segretamente e sono disposti a collaborare, non c'è modo.

Supponendo che sappiamo che almeno uno di questi ha il file (diciamo Alice), quindi qualsiasi domanda a cui Bob potrebbe rispondere se avesse il file, potrebbe inoltrare ad Alice la risposta - Bob sarebbe un "uomo nel di mezzo".

In ogni caso, se fossero disposti a colludere, potrebbero condividere il file. Oppure, poiché non c'è nulla di identificabile sul file, potrebbero essere d'accordo sul fatto che il file sia lungo 0 byte, quindi istantaneamente "che ha lo stesso file" a cui potrebbero rispondere qualsiasi domanda - qualsiasi checksum, qualsiasi calcolo.

Sembra inutile scoprire se "hanno lo stesso file", a meno che non ci sia qualcosa di specifico su quel file, che lo differenzia da qualsiasi altro file.

    
risposta data 29.06.2016 - 00:21
fonte
0

A knows Sa

B knows Sb

Goal: Prove Sa == Sb

Data una funzione unidirezionale H con le seguenti proprietà:

H(x, y) = H(y, x) (Commutative)

H(H(x, y), z) = H(x, H(y, z)) (Associative)

C genera random k , l , m , n

C condivide k a A solo e l a B solo, quindi:

A computes Saₖ = H(Sa, k)

B computes Sbₗ = H(Sb, l)

A condivide Saₖ pubblicamente

B condivide Sbₗ pubblicamente

A ora conosce Sa , k , Saₖ , Sbₗ

B ora conosce Sb , l , Saₖ , Sbₗ

C computes Saₖₘ = H(Saₖ, m)

C computes Sbₗₙ = H(Sbₗ, n)

C condivide Saₖₘ e Sbₗₙ pubblicamente

A ora conosce Sa , k , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ

B ora conosce Sb , l , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ

A computes Sbₗₙₖ = H(Sbₗₙ, k)

B computes Saₖₘₗ = H(Saₖₘ, l)

A condivide Sbₗₙₖ pubblicamente

B condivide Saₖₘₗ pubblicamente

A ora conosce Sa , k , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ , Saₖₘₗ , Sbₗₙₖ

B ora conosce Sb , l , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ , Saₖₘₗ , Sbₗₙₖ

C computes Saₖₘₗₙ = H(Saₖₘₗ, n)

C computes Sbₗₙₖₘ = H(Sbₗₙₖ, m)

C confronta Saₖₘₗₙ e Sbₗₙₖₘ devono essere uguali.

A causa della commutatività e dell'associatività, sappiamo che Saₖₘₗₙ == Sbₗₙₖₘ se Sa e Sb sono uguali.

Questo è ispirato a n-modi Diffie-Hellman-Mekrle Key Exchange , ma il modo in cui le cose sono messe insieme è di mia invenzione solo poche ore fa senza fare prove matematiche o analisi appropriate, probabilmente c'è un buco evidentemente evidente che non mi è bastato dire.

La funzione H in Diffie-Hellman sarebbe probabilmente utilizzabile qui, con un po 'di modifica.

Ipotesi:

  • A e B non possono condividere Sa e Sb l'uno con l'altro
  • A e B non possono condividere k e l l'uno con l'altro
  • C ha un modo per verificare che A e B stiano facendo i loro calcoli usando il file corretto (non possono colludere con entrambi un altro file invece di Sa e Sb di ingannare C )
  • C ha un modo per impedire a A e B di perdere k , l tra loro. Ad esempio, k , l possono essere memorizzati in un token hardware che può essere sbloccato con una password nota solo a C .
  • A , B e C non devono essere tutti nello stesso posto allo stesso tempo

Dichiarazione di non responsabilità: non sono un matematico o un crittografo e non gioco come uno in TV. Inventare il proprio schema di crittografia può essere dannoso per la sicurezza. Accetti di assumerti tutti i rischi derivanti dall'uso di questo materiale e liberami da ogni responsabilità per qualsiasi danno causato, reale o immaginario. Nessuna dichiarazione o garanzia, espressa o implicita, relativa alla completezza, accuratezza, idoneità per uno scopo particolare, o utilità di questi materiali o qualsiasi informazione o opinione qui contenuta.

    
risposta data 29.06.2016 - 07:06
fonte

Leggi altre domande sui tag