Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulo 7 Criptografia
Modulo 7 Criptografia
criptográficos
PID_00255021
Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico,
mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
del titular de los derechos.
© FUOC • PID_00255021 Protocolos criptográficos
Índice
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Firmas ciegas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Firma ciega con RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Aplicaciones de las firmas ciegas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Protección contra abusos en las firmas ciegas . . . . . . . . . . . . . . . . . 16
Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Ejercicios de autoevaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Solucionario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
© FUOC • PID_00255021 5 Protocolos criptográficos
Introducción
Más allá de los mecanismos para cifrar y descifrar mensajes, lo cierto es que la
criptografía permite construcciones más elaboradas que continúan teniendo
el mismo objetivo que los criptosistemas: proteger la información. Así, nos
podemos encontrar diferentes situaciones donde necesitemos protocolos que
nos garanticen una serie de propiedades de seguridad que los criptosistemas
por sí solos no pueden proporcionar. Es en este punto donde intervienen los
protocolos criptográficos, protocolos entre dos o más usuarios que utilizan
mecanismos criptográficos para proteger la información.
Objetivos
Los materiales didácticos de este módulo tienen que permitir lograr los obje-
tivos siguientes:
4. Ver cómo hay que desarrollar protocolos en contextos en los que no hay
confianza entre las partes que participan en el protocolo.
© FUOC • PID_00255021 7 Protocolos criptográficos
El protocolo de tres pasos de Shamir fue propuesto por Adi Shamir, a pesar de
que no lo publicó nunca. El protocolo permite establecer una comunicación
secreta entre dos partes sin ningún intercambio previo de claves. La base del
protocolo es una función de cifraje conmutativa respecto a las claves. Es decir,
será lo mismo cifrar un mensaje m con una clave k1 y el resultado volverlo
a cifrar con una clave k2 que cifrarlo primero con la clave k2 y el resultado
cifrarlo con la k1 :
Alice.
Como podemos ver, al final del protocolo Alice ha hecho llegar a Bob el men-
saje m de manera segura, puesto que en ninguno de los mensajes que se han
intercambiado en cada uno de los tres pasos el mensaje m no ha viajado en
claro. Así, un atacante que esté analizando las comunicaciones entre A y B
no podrá extraer ninguna información de m. Notad, además, que en ningún
momento se ha producido un intercambio de claves. Alice solo conoce keA y
kdA y Bob solo keB y kdB .
Uno de los criptosistemas que hemos visto a lo largo del curso es el criptosis-
tema de Vernam, que sería el criptosistema más seguro, puesto que, utilizan-
do una buena clave, nos aporta seguridad incondicional. Recordamos que el
mecanismo tanto de cifraje como de descifraje de este criptosistema es muy
simple. Dado un mensaje m expresado en bits y una clave k del mismo tama-
ño que el mensaje también expresada en bits, la función de cifraje consiste en
hacer una XOR entre el mensaje y la clave, es decir, Ek (m) = m ⊕ k = c. Por otro
lado, para descifrar el mensaje c simplemente tendremos que hacer de nuevo
una XOR con la misma clave k con la cual hemos cifrado Dk (c) = c ⊕ k = m.
c
2. ←–2– Calcula c2 = c1 ⊕ kB
c3
3. Calcula c3 = c2 ⊕ kA = m ⊕ kB ––→
4. Calcula m = c3 ⊕ kB
c1 ⊕ c2 ⊕ c3 = (m ⊕ kA ) ⊕ (m ⊕ kA ⊕ kB ) ⊕ (m ⊕ kB ) = m
Este hecho nos hace ver que, más allá de este ejemplo concreto, en la creación
de protocolos criptográficos no solo es importante que cada una de las herra-
mientas criptográficas que se utiliza sea segura, sino que, además, su combi-
nación lo continúe siendo, hecho que, como hemos visto, no siempre sucede.
© FUOC • PID_00255021 9 Protocolos criptográficos
Bob generará sus claves keB y kdB y utilizará las mismas funciones de cifraje y
descifraje. Con estas condiciones el protocolo queda descrito en el esquema
de la tabla 3.
Fijaos que, en este caso, un atacante que intercepte los tres mensajes de la co-
municación, c1 ,c2 y c3 no podrá obtener ninguna información sobre el men-
saje transmitido, puesto que las claves para cifrar solo las conocen A y B.
En este ejemplo supondremos que los dos usuarios trabajan con el parámetro p = 131.
Además, el usuario A dispondrá de la clave de cifraje keA = 21 y de la clave de descifraje
kdA = (keA )–1 (mod p – 1) = 31. Por otro lado, el usuario B también tendrá su par de claves.
La de cifraje será keB = 27 y la de descifraje kdB = (keB )–1 (mod p – 1) = 53.
Cuando queremos almacenar un secreto se debe tener en cuenta que hay si-
tuaciones en las que el secreto no puede ser guardado de manera centralizada
porque existe el peligro de que esta centralización suponga un punto débil en
la seguridad. En estas situaciones el concepto de centralización puede tener
diferentes vertientes. Por ejemplo, imaginémonos que tenemos el código de
apertura de una caja fuerte pero no queremos que esté custodiado por una so-
la persona, porque existe el peligro de que esta persona pueda marcharse con
todo el dinero. Querríamos poder distribuir este código de forma que fuera
necesaria más de una persona para la apertura de la caja fuerte.
.
Un esquema de compartición de secretos umbral (m,n) (en inglés
(m,n)-threshold secret sharing scheme) es un esquema que permite distri-
buir un secreto en n fragmentos diferentes, de forma que si se juntan
m o más fragmentos se puede recuperar el secreto, pero no es posible
obtener ninguna información del secreto si se dispone de menos de m
fragmentos.
Cada participante recibe como fragmento del secreto el par {xi ,a(xi )}, es decir,
un valor xi y su evaluación en el polinomio a(xi ). Podremos recuperar el secre-
to si tenemos m fragmentos planteando el sistema de ecuaciones siguiente.
Supongamos que tenemos cinco usuarios u1 ,u2 ,u3 ,u4 ,u5 que quieren repartirse el valor
secreto S = 673. Para hacerlo utilizarán el esquema de compartición de secretos polinó-
mico de Shamir y trabajarán con el primo p = 1931. Describiremos los dos procesos de un
esquema de compartición de secretos: la generación de los fragmentos y la recuperación
del secreto.
Dado que con tres usuarios será suficiente para recuperar el secreto, el gestor construirá
un polinomio de grado 2 con coeficientes en Z1931 donde el término independiente sea
el secreto S = 673. Así, el gestor elegirá dos valores aleatorios para crear el polinomio,
por ejemplo, 436 y 806 y construirá el polinomio a(x) = 673 + 806x + 436x2 . Con este
polinomio, procederá a construir los fragmentos de cada usuario evaluando el polinomio
en un componente x para cada participante. Si suponemos que u1 tiene el componente
x = 1 y u2 el componente x2 = 2, y así para cada usuario, tendremos las evaluaciones
siguientes:
Supongamos ahora que tres de los cinco usuarios se reúnen para recuperar el secreto. Su-
pongamos que son los usuarios u1 , u4 y u5 (pero habríamos podido elegir tres usuarios
cualesquiera). Los fragmentos de estos usuarios son [1,1915], [4,1218] y [5,155], respec-
tivamente. Como estos valores son puntos del polinomio utilizado para generar los frag-
mentos, podemos plantear el sistema de ecuaciones siguiente:
Como solo nos interesa resolver el sistema para la variable S, que es el secreto, podemos
aplicar el método de Kramer. Así pues, obtenemos lo siguiente:
1915 1 1
1218 4 16
155 5 25 352
= = 352 · 161 = 673 (mod 1931)
12
1 1 1
1 4 16
1 5 25
© FUOC • PID_00255021 13 Protocolos criptográficos
Por otro lado, también nos podríamos preguntar qué pasaría si uno de los par-
ticipantes diera un valor aleatorio en vez de su fragmento. Lo cierto es que el
secreto no se recuperaría y, más aun, no sabríamos quién ha sido el culpable.
Y todavía peor, el atacante podría utilizar el secreto recuperado erróneamen-
te, su fragmento falso y su fragmento correcto para recuperar el secreto real
sin la ayuda del resto de participantes, mientras que el resto de participantes
continuarían sin poder recuperar el secreto.
3. Firmas ciegas
.
.
En un protocolo de firma ciega (en inglés, blind signature) el usuario
A consigue la firma de un mensaje m por parte del usuario B sin que B
sepa qué mensaje ha firmado.
Igual que con otros protocolos criptográficos, no es obvio qué utilidad puede
tener que un usuario pueda firmar un documento sin saber lo que firma. Aun
así, a lo largo de este apartado veremos en qué situaciones tienen aplicabilidad
las firmas ciegas.
s′ (m′ )d (m · t)d md · t d md · (r e )d md · r
s= = = = = = = md (mod n)
r r r r r r
Fijaos que el valor s = 243 es efectivamente la firma del mensaje original m = 15, puesto
que s = 15451 = 243 mod 551.
© FUOC • PID_00255021 16 Protocolos criptográficos
Hay múltiples escenarios en que las firmas ciegas son interesantes de utilizar
y la mayoría de ellos tienen que ver con la protección del anonimato. Vea-
mos cómo se pueden usar en el escenario siguiente para tener identificadores
anónimos.
Suponed un sistema con una autoridad central que tiene identificados a sus
usuarios. Para permitir utilizar los recursos del sistema de forma anónima, los
usuarios pueden obtener unos seudónimos por parte de la autoridad central.
Estos seudónimos están firmados digitalmente por la autoridad central una
vez ha comprobado que el usuario tiene suficientes privilegios para utilizar los
correspondientes recursos. La firma de la autoridad central sobre el seudónimo
tiene que permitir su validación por una tercera parte cuando el usuario quiere
utilizar el seudónimo ante alguno de los recursos del sistema donde se quiere
autenticar.
Con este escenario, si la autoridad central firma los seudónimos de los usua-
rios de manera estándar, los usuarios obtendrán anonimato ante los terceros
con quienes se autentifiquen utilizando el seudónimo. Ahora bien, no conse-
guirán anonimato ante la autoridad central, puesto que la autoridad central,
cuando firma el seudónimo, sabe la identidad real del usuario y, por lo tan-
to, la correspondencia entre la identidad real y el seudónimo, con lo cual se
rompe el anonimato.
Una opción para resolver este problema es que la autoridad central firme el
seudónimo pero utilizando un protocolo de firma ciega. De este modo, la au-
toridad central daría validez al seudónimo pero no sabría a quién corresponde
el seudónimo.
A pesar de que las firmas ciegas son interesantes de utilizar en algunos esce-
narios, lo cierto es que la posibilidad de que un usuario firme un valor sin
saber exactamente lo que firma puede comportar también algunos problemas
de seguridad. Por ejemplo, como ya hemos estudiado anteriormente, la reali-
zación de una firma digital es equivalente al descifraje de un mensaje. Por lo
tanto, un usuario A que hubiera interceptado un mensaje cifrado c dirigido a
B podría utilizar un protocolo de firma ciega para tapar c, hacerlo firmar por B
y, de este modo, obtener el mensaje descifrado.
el seudónimo tiene que incluir esta información para que A lo pueda usar.
Un posible ataque de A sería presentar un seudónimo con unas atribuciones
diferentes de las que el sistema le permite. Si B tiene que realizar una firma
ciega, no podrá verificar estas condiciones y podría llegar a firmar condiciones
no deseadas.
Para evitar este tipo de acciones hay diferentes estrategias. La primera es utili-
zar una clave específica para las firmas ciegas. Es decir, una clave pública que
incorporara la misma semántica de la autorización. Por ejemplo, cualquier
S1 ,S2
seudónimo firmado con la clave pública que tuviera el valor concreto PKCA
solo serviría para autenticarse ante los recursos S1 y S2 . Para autenticarse ante
el recurso S3 , por ejemplo, habría que tener el seudónimo firmado con la cla-
S3
ve pública PKCA . Además, estas claves públicas de firmas ciegas solo se usarían
en este contexto y nunca se utilizarían para cifrar mensajes, de forma que el
ataque para el descifraje no sería posible.
A pesar de que esta protección que asocia una semántica a una clave es facti-
ble, en la práctica puede comportar la gestión de un volumen de claves muy
grande. Para evitarlo, otra opción es utilizar el procedimiento de “revolver y
elegir” para asegurar que B no firma nada fraudulento. El proceso funciona
como se muestra en la figura 1.
Una vez A ha enviado los n valores tapados m′1 ,m′2 , · · · ,m′n a B, B pedirá a A
que destape n – 1 valores, es decir, A proporcionará los correspondientes ti
para n – 1 valores que B habrá elegido aleatoriamente. Una vez destapados,
B podrá comprobar que la parte que tiene que validar coincide en todos y
cada uno de los n – 1 valores que ha destapado. Si es así, asumirá que el valor
que le falta para destapar (el cual no puede destapar porque A mantiene el
correspondiente ti para hacerlo) también cumple las condiciones estipuladas.
Por lo tanto, puede proceder a firmar ciegamente este valor.
Fijaos que cada uno de los valores que ha destapado A puede contener un
seudónimo diferente, de forma que B no sabe qué seudónimo habrá en el
valor que ha firmado. Por otro lado, la probabilidad de que A pueda engañar a
B para conseguir que firme algún contenido que no quiera se puede hacer tan
pequeña como se quiera, puesto que su valor es de 1n .
© FUOC • PID_00255021 19 Protocolos criptográficos
Por lo tanto, una prueba de conocimiento nulo tiene que cumplir las propie-
dades siguientes:
Pepe (P) conoce esta palabra secreta y quiere convencer a Vicente (V) de que
la conoce, pero no quiere darle esta clave. Para hacerlo ejecutan la prueba
siguiente de conocimiento nulo:
2) Una vez Pepe haya llegado ante la puerta, Vicente avanzará hasta la bifur-
cación (punto B). Desde allí elige uno de los dos caminos, el de la derecha o el
de la izquierda y llama a Pepe para que salga por el camino que ha elegido.
3) Como Pepe conoce la clave que abre la puerta no tendrá ningún problema
para salir por el lado que Vicente le ha pedido.
Comprobamos ahora si con este ejemplo se cumplen las tres propiedades que Ejemplo rebuscado
hemos indicado anteriormente.
Como veremos más adelante,
este ejemplo ilustra cómo
funciona una prueba de
1) Si Pepe conoce la clave siempre podrá salir por el lado que Vicente le pide conocimiento nulo, pero,
y, por lo tanto, podrá demostrar que tiene el conocimiento que quiere probar. obviamente, para nuestro
propósito sería suficiente con
Si volviéramos a hacer el experimento y lo repitiéramos tantas veces como hacer entrar a Pepe por la
derecha y hacerlo salir por la
quisiéramos, Pepe saldría siempre por el lado que Vicente le pidiera, puesto izquierda.
que conoce la clave que abre la puerta y, por lo tanto, no tendría ningún
problema.
3) Una vez Vicente haya podido validar que Pepe conoce la clave, Vicente
no habrá obtenido ninguna información de la clave y tampoco puede utilizar
información de la prueba que ha hecho con Pepe, a pesar de que la haya
repetido diez veces, para poder demostrar ante un tercero que conoce la clave.
Llegados a este punto, podríamos pensar que no parece que tenga sentido que
V en el paso 2 envíe un 0, puesto que en este caso, P no necesita conocer x.
Por lo tanto, podríamos concluir, erróneamente, que en el paso 2, V podría
enviar siempre un 1, forzando a P a conocer x. Ahora bien, esta estrategia no
es correcta. Fijémonos que si V siempre elige b = 1, P puede generar un valor
gr
r en el paso 1, pero en vez de enviar c = g r (mod p) a V puede enviar c′ = y
(mod p). Entonces, en el paso 3, P envía r en vez de r + x, pero la verificación
gr
del paso 4 será correcta porque c′ · y = y · y = gr = gh.
Este protocolo fue propuesto en 1985 por los criptógrafos Shimon Even, Oded
Goldreich y Abraham Lempel. La propuesta utiliza el criptosistema RSA para
cifrar los valores secretos que intervienen en el mismo. El protocolo permite
el intercambio inconsciente 1-2 de los secretos s0 y s1 entre el usuario A, que
es quien conoce los dos valores, y el usuario B, que es quien recibirá uno de
los dos. El funcionamiento del protocolo, así como las acciones y los mensajes
que se intercambian en el protocolo se muestra gráficamente en el esquema
de la tabla 9.
© FUOC • PID_00255021 25 Protocolos criptográficos
k0 = (v – x0 )d = (x0 + ke – x0 )d = (ke )d = k
k0 = (v – x0 )d = (x1 + ke – x0 )d ̸= k
Supongamos que Alice quiere hacer una transferencia inconsciente 1-2 a Bob de los se-
cretos s0 = 22 y s1 = 34. El protocolo tendría la estructura de la tabla 10.
© FUOC • PID_00255021 26 Protocolos criptográficos
Como ya hemos dicho antes, este protocolo por sí solo puede no tener mucho
interés, pero es la base de otros esquemas como la firma de contratos. Supon-
gamos el escenario en el cual dos usuarios A y B quieren firmar digitalmente
un contrato pero ninguno de ellos quiere enviar primero la firma al otro para
no estar en desventaja. Veamos cómo se puede aplicar la transferencia incons-
ciente 1-2 para solucionar esta situación.
1) A divide sus 2n trozos de su firma en n pares, por ejemplo, (a2j–1 ,a2j ) para
j = 1, · · · ,n y envía a B un elemento de cada par utilizando una transferencia
inconsciente 1-2, por lo cual B recibe a2j–1 o bien a2j , por j = 1, · · · ,n, pero A
no sabe cuál de los elementos ha recibido B (recordamos que cada elemento
del par tiene un 50% de probabilidad de ser enviado).
Supondremos que Alice tiene x años y Bob y, y ninguno de los dos no tiene
más de 100, es decir, 1 ≤ x,y ≤ 100. Para realizar este protocolo utilizaremos
un criptosistema de clave pública. Así, tanto A como B tendrán cada uno de
ellos un par de claves pública y privada que serán (EA ,DA ) y (EB ,DB ), respec-
tivamente. Por otro lado, también asumiremos que los dos usuarios conocen
la clave pública del otro participante. Además, A y B también se ponen de
acuerdo en el tamaño máximo que tendrán dos de los valores utilizados en el
protocolo, ta y tb . Así pueden asegurar que los valores pa y pb elegidos en el
paso 6 son más pequeños que estos dos valores.
Como se puede ver en el protocolo, la idea es que tanto A como B crean una
secuencia de valores, en este caso 100, que es el máximo de la edad de los par-
ticipantes. La particularidad de estas secuencias es que, por ejemplo, tomando
la secuencia G que genera el usuario A, para índices inferiores o iguales al ín-
dice que determina la edad del usuario A, los valores son congruentes con el
valor aleatorio que ha elegido B, si la edad de A es más grande que la de B.
Las conclusiones sobre quién tiene más edad que cada usuario obtiene en el
paso 9 son correctas. Por ejemplo, el razonamiento respecto a la comproba-
© FUOC • PID_00255021 29 Protocolos criptográficos
ción del usuario B sería la siguiente: si A tiene más edad que B, es decir, x ≥ y,
entonces el valor de la posición y de la secuencia que A envía a B en el paso 7
es Gy = gy . Por lo tanto, Gy = fy (mod pa ). Como fy = DA (Kb + y) = DA (kb – y + y) =
DA (kb ) y kb = EA (tb ) nos queda que fy = DA (EA (tb )) = tb y, por lo tanto, Gy = tb
(mod pa ).
Gy = gy + 1 ̸= gy = fy = tb (mod pa )
Al final del protocolo, en caso de que la última comprobación del valor sea
correcta, tanto A como B pueden estar convencidos de que los dos tienen la
misma fortuna, puesto que:
Así mismo, como los valores a1 ,a2 ,b1 ,b2 han sido elegidos aleatoriamente por
A y B, la única posibilidad de que c = Pa Pb–1 (mod p) está en el supuesto de que
x = y, es decir, que A y B tengan la misma fortuna.
En caso de que la comprobación no sea correcta querrá decir que las fortunas
no son iguales, pero ninguno de los dos sabrá quién tiene una fortuna mayor.
© FUOC • PID_00255021 31 Protocolos criptográficos
Resumen
Ejercicios de autoevaluación
6. Queréis realizar una prueba de conocimiento nulo para demostrar que conocéis el loga-
ritmo discreto en base 7 de y = 94 en Z97 , es decir, el valor x tal que y = 7x (mod 97). El
problema es que realmente no conocéis el valor x pero queréis engañar a un usuario hacien-
do una prueba de conocimiento nulo y que se pueda convencer de que sí que lo conocéis.
Afortunadamente para vosotros, el generador seudoaleatorio que usa el probador tiene una
vulnerabilidad y vosotros podéis saber el valor de los bits que genera en el paso 2 del protoco-
lo. El usuario en cuestión quiere hacer una prueba de conocimiento nulo que le asegure que
conocéis el valor con probabilidad superior a 0,75. Desarrollad todo el protocolo de prueba
de conocimiento nulo asumiendo que el generador aleatorio de V produce los bits siguien-
tes: 010011100... Dad el detalle de las operaciones y valores que se intercambian los usuarios
en cada paso del protocolo.
7. Alice y Bob han tenido suerte y les ha tocado la lotería, que reparte como máximo 5
millones. Alice ha tenido más suerte que Bob y le han tocado 4 millones, mientras que a
Bob le han tocado 2. Como ninguno de ellos quiere decir qué cantidad le ha tocado, deciden
saber quién es más rico utilizando el protocolo del millonario. Desarrollad el protocolo para
que los dos puedan saber quién ha ganado más dinero sin saber cuánto dinero le ha tocado
al otro. Supondremos que utilizamos como sistema de clave pública el RSA y el par de claves
pública-privada de A vale [(eA = 2573,nA 5911),(dA = 197,nA = 5911)], mientras que el par de
B vale [(e = 3109,nB = 5191),(dB = 1795,nB = 5191)].
© FUOC • PID_00255021 33 Protocolos criptográficos
Solucionario
1. Con estos parámetros, el usuario A enviará en secreto el mensaje m = 20 a B con el
protocolo de la tabla 13.
2. El polinomio para generar los fragmentos estará compuesto por el término independiente
11, tendrá como grado m – 1 = 3 – 1 = 2 y como coeficientes podemos elegir aleatoriamente,
por ejemplo, los números x1 = 8 y x2 = 7. De este modo el polinomio nos queda determinado
por a(x) = 7x2 + 8x + 11 mod 13.
Para generar los fragmentos tomamos cinco valores cualquiera más pequeños que p y calcu-
lamos sus imágenes para el polinomio a(x). Tomando como valores {1,2,3,4,5} tendremos:
3. Dado que tenemos un sistema de compartición umbral con m = 3 podemos elegir, de entre
los diferentes fragmentos, (58,137),(11,48),(50,99),(80,50),(104,33),(39,114), cualquier con-
junto de 3 puntos para recuperar el secreto. Por ejemplo, si elegimos (50,99),(80,50),(39,114)
podemos plantear el sistema de ecuaciones siguiente:
Como solo nos interesa resolver el sistema para la variable S, que es el secreto, podemos
aplicar el método de Kramer y obtenemos:
99 50 116
50 80 142
114 39 31 36
= = 36 · 113 = 45 (mod 149)
120
1 50 116
1 80 142
1 39 31
© FUOC • PID_00255021 34 Protocolos criptográficos
f1 + 2 = S + a1 + a2
f2 + x = S + 2a1 + 4a2
f3 + 2 = S + 3a1 + 9a2
En este sistema f1 ,f2 ,f3 son los fragmentos respectivos de A, B y C, y x es la trampa que ha
hecho el usuario B.
La solución para la incógnita S en este sistema es la misma que la del sistema en el que
ningún participante hace trampa, puesto que el enunciado indica que han recuperado el
mismo secreto, por lo tanto:
f1 = S + a1 + a2
f2 = S + 2a1 + 4a2
f3 = S + 3a1 + 9a2
f1 + 2 1 1 j 1 1
f2 + x 2 4 m 2 4
f3 + 2 3 9 s 3 9
=
1 1 1 1 1 1
1 2 4 1 2 4
1 3 9 1 3 9
Además, si realizamos las operaciones de los determinantes, nos queda que 6x = 3 y, final-
mente, x = 3 · 6–1 = 7, siempre trabajando en Z13 . Por lo tanto, la trampa que ha hecho el
usuario B ha sido sumar 7 a su fragmento.
6. Como A quiere hacer creer a B que conoce el logaritmo discreto con una probabilidad de
0,75 esto quiere decir que habrá que ejecutar de manera satisfactoria tres veces del protocolo.
Como A conoce el generador seudoaleatorio, sabe que en la primera ejecución del protocolo,
en el paso 2, V elegirá b = 0, en la segunda ejecución del protocolo elegirá b = 1 y en la
tercera ejecución elegirá b = 0. Por lo tanto, para engañar a V:
Glosario
cifraje de Vernam m Esquema de cifraje que consigue seguridad perfecta.
firma ciega f Protocolo criptográfico en el cual un usuario firma un mensaje sin que pueda
conocer el contenido del mensaje firmado.
protocolo de tres pasos de Shamir m Protocolo que permite a dos usuarios intercambiar
información cifrada sin necesidad de compartir ninguna clave.
probador m Parte encargada de demostrar que conoce una información en una prueba de
conocimiento nulo.
transferencia inconsciente 1-2 f Protocolo criptográfico por el cual A envía dos mensajes a
B y B solo recibe uno de los dos con probabilidad 1/2 pero A desconoce cuál de los dos ha
recibido.
Bibliografía
Brassard, G.; Crepeau, C.; Chaum, D. (1988). “Minimum Disclosure Proofs of knowled-
ge”. Journal of Computer and System Sciences (vol. 37, núm. 2).
Chaum, D. (1983). “Blind signatures for untraceable payments”. Advances in Cryptology Pro-
ceedings of Crypto (vol. 82, núm. 3, págs. 199-203). Boston: Springer-Verlag.
Chaum, D.; Evertse, J. H.; Graaf, J. van de (1988). “An improved protocol for de-
monstrating possession of discrete logarithms and some generalizations”. Proceedings of Eu-
rocrypt’87. Berlín: Springer.
Even, S.; Goldreich, O.; Lempel, A. (1985). “A Randomized Protocol for Signing Con-
tracts”. Communications of the ACM (vol. 28, núm. 6, págs. 637-647). Nueva York: Association
for Computing Machinery.
Jakobsson, M.; Yung, M. (1996). “Proving without knowing: On oblivious, agnostic and
blindfolded provers”. Advances in Cryptology - CRYPTO ’96 (vol. 1109, págs. 186-200). Berlín:
Springer.
Shamir, A. (1979). “How to Share a Secret”. Communications of the ACM (vol. 24, núm. 11,
págs. 612-613). Nueva York: Association for Computing Machinery.