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.