¿Cómo pueden Alicia y Bob probar que comparten un archivo?

2

Carl le pregunta a Alice y Bob si tienen un archivo f tal que para un criptográfico seguro
Función hash h , h(f) = K . Ambos afirman tener f , pero no pueden mostrar el archivo.

Carl no les cree. Puede hacerle más preguntas a Alice y Bob, aunque
pueden hablar en secreto entre sí (tenga en cuenta que incluso si Alice o Bob tienen f ,
no se puede mostrar f entre sí). ¿Podría Carl descubrir si ambos tienen f ?
¿Podría Carl descubrir si alguno de ellos tiene f ?

    
pregunta user70561 17.03.2015 - 22:36
fuente

3 respuestas

2

Carl puede pedirle a Alice y Bob (de forma independiente) que calculen los hashes de archivos específicos y comparen los resultados. Por ejemplo, C le pide a A que calcule h (f [0-100]) y recibe h ', luego C le pide a B que haga lo mismo y B devuelve h' '. Si h '== h' 'ambos tienen el mismo conocimiento sobre esta parte de f. Puede repetir esto para diferentes secciones del archivo.

Aviso: si A y B cooperan (y quieren engañar a C) y solo uno de ellos tiene el archivo, no hay forma de que C sepa si ambos tienen o no están cooperando.

    
respondido por el wischi 18.03.2015 - 05:01
fuente
0

Si Alice y Bob pueden hablarse en secreto y están dispuestos a conspirar, no hay manera.

Suponiendo que sabemos que al menos uno de ellos tiene el archivo (digamos Alice), entonces cualquier pregunta que Bob pudiera responder si tuviera el archivo, podría enviarlo a Alice para que responda: Bob sería un "hombre en el medio ".

En cualquier caso, si estuvieran dispuestos a conspirar, podrían compartir el archivo. O, como no hay nada identificable en el archivo, podrían estar de acuerdo en que el archivo tiene una longitud de 0 bytes, por lo que instantáneamente "tiene el mismo archivo" sobre el cual podrían responder cualquier pregunta, cualquier suma de comprobación, cualquier cálculo.

Parece inútil averiguar si "tienen el mismo archivo", a menos que haya algo específico en ese archivo, que lo diferencie de cualquier otro archivo.

    
respondido por el AMADANON Inc. 29.06.2016 - 00:21
fuente
0
  

A conoce Sa

     

B conoce Sb

     

Objetivo: probar Sa == Sb

Dada una función unidireccional H con las siguientes propiedades:

  

H(x, y) = H(y, x) (conmutativo)

     

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

C genera k , l , m , n

C comparte k a A solo y l a B solo, entonces:

  

A calcula Saₖ = H(Sa, k)

     

B calcula Sbₗ = H(Sb, l)

A comparte Saₖ públicamente

B comparte Sbₗ públicamente

A ahora sabe Sa , k , Saₖ , Sbₗ

B ahora sabe Sb , l , Saₖ , Sbₗ

  

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

     

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

C comparte Saₖₘ y Sbₗₙ públicamente

A ahora sabe Sa , k , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ

B ahora sabe Sb , l , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ

  

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

     

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

A comparte Sbₗₙₖ públicamente

B comparte Saₖₘₗ públicamente

A ahora sabe Sa , k , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ , Saₖₘₗ , Sbₗₙₖ

B ahora sabe Sb , l , Saₖ , Sbₗ , Saₖₘ , Sbₗₙ , Saₖₘₗ , Sbₗₙₖ

  

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

     

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

C compara Saₖₘₗₙ y Sbₗₙₖₘ deben ser iguales.

Debido a la conmutatividad y la asociatividad, sabemos que Saₖₘₗₙ == Sbₗₙₖₘ si Sa y Sb son iguales.

Esto está inspirado en n-ways Diffie-Hellman-Mekrle Key Exchange , pero la forma en que se juntan las cosas es de mi propia invención hace unas pocas horas sin hacer pruebas matemáticas o un análisis adecuado, probablemente haya un agujero evidente que no se me ocurrió.

La función H en Diffie-Hellman probablemente sería utilizable aquí, con un poco de modificación.

Suposiciones:

  • A y B no pueden compartir Sa y Sb entre sí
  • A y B no pueden compartir k y l entre sí
  • C tiene una manera de verificar que A y B están haciendo sus cálculos utilizando el archivo correcto (no pueden unirse para usar ambos archivos) en lugar de Sa y Sb para engañar a C )
  • C tiene una manera de hacer imposible que A y B se filtren k , l entre sí. Por ejemplo, k , l puede almacenarse en un token de hardware que puede desbloquearse con una contraseña conocida solo por C .
  • A , B y C no tienen que estar todos en el mismo lugar al mismo tiempo

Descargo de responsabilidad: no soy matemático ni criptógrafo, y no juego como uno en la televisión. Inventar su propio esquema de criptografía puede ser perjudicial para su seguridad. Usted acepta asumir todos los riesgos derivados del uso de este material y me exime de cualquier responsabilidad por cualquier daño causado, real o imaginado. Ninguna representación o garantía, expresa o implícita, con respecto a la integridad, exactitud, idoneidad para un propósito en particular, o la utilidad de estos materiales o cualquier información u opinión contenida en este documento.

    
respondido por el Lie Ryan 29.06.2016 - 07:06
fuente

Lea otras preguntas en las etiquetas