Hace 13 años | Por Edulix a danigm.net
Publicado hace 13 años por Edulix a danigm.net

El servicio web Primejack ofrece una forma verificable de "lanzar una moneda al aire" para la toma decisiones de forma remota y verificable. Danigm explica en su blog cómo surgió y el sencillo protocolo criptográfico en el que se basa su funcionamiento.

Comentarios

Mr.Worthington

Muy útil para cuando no tienes monedas o sospechas que las que tienes en el bolsillo están desequilibradas

D

Pues no es por criticar pero ese "protocolo" me parece una auténtica basura si de verdad el objetivo es que nadie pueda adivinarlo, para romperlo simplemente hay que tener una lista con esos primos y hacer las multiplicaciones entre todos ellos de antemano, que sí requiere tiempo pero no es algo descabellado, luego simplemente se busca en una lista el que coincida y listo.

La forma correcta de tirar una moneda online es usar la criptografía de clave pública, el usuario A genera un par de claves y un número aleatorio, cifra el número aleatorio con la clave de cifrado y se lo envía al usuario B, el usuario B genera otro número aleatorio y se lo envía a A. A publica la clave de descifrado y ambos hacen una operación común con los números aleatorios compartidos, por ejemplo lo más rápido una XOR, si sale 0 gana A, si sale 1 gana B, y jamás se reutilizan los valores ni nadie sabe de antemano nada. Y esto el más simple, si se quiere se pueden usar las claves públicas/privadas de ambos para no tener que genera una al inicio.

Si de verdad alguien está trabajando en un sistema de votación segura y está usando estos métodos espero no tener que votar nunca con ese sistema, y eso que yo no soy un experto en la materia pero lo de la monedita es el típico caso práctico de las primeras clases de cualquier asignatura de criptografia o de cualquier libro que trate sobre el tema.

danigm

#2 pero es que la base de ese protocolo es que no tienes la lista con los primos, ahí está la gracia, sólo el que genera el primer número conoce los conjuntos de primos, no el que decide.

El cifrado asímetrico es muy lento, así que esta solución es mucho más rápida e igualmente valida.

En verificatum http://www.verificatum.com/verificatum/index.html usan este algoritmo y creo que los que lo están desarrollando tienen algo de idea sobre criptografía.

D

#3 Sí, la criptografía de clave pública es más lenta, pero en este caso no estamos hablando de un cifrado en flujo donde un sistema de clave pública puede morirse sino del intercambio de un número, cosa que hacen millones de sistema cada día sin despeinarse cada vez que establecen una conexión SSL segura, desde los más potentes hasta los más sencillos.

Y a cambio de esa ganancia en velocidad reduces la complejidad, divides los primos en dos listas separadas y conocidas, y además pierdes la característica de no repudio, el que envía el mensaje puede simplemente decir que el no lo hizo y quedarse tan ancho porque no tienes ninguna forma de probar que lo hizo, en cambio si te manda un número cifrado con su clave privada no va a tener narices de decir que no lo hizo.