Si alguien quisiera hacerse pasar por Satoshi publicando una firma falsa para defraudar a la gente, ¿cómo podría hacerlo?

Si un estafador al azar quisiera publicar un montón de firmas ECDSA misteriosas que el público creería que provienen del creador de Bitcoin, para interrumpir el mercado de Bitcoin, extraer dinero de las personas o convencer a las personas de que las escuchen. ¿Cómo pudieron hacer eso?

Respuestas (1)

Desafortunadamente, dada la limitada comprensión de la criptografía por parte del público, aparentemente se trata de un fraude fácil de llevar a cabo.

El truco clave es que las personas no técnicas son propensas a creer cosas que simplemente suenan a jerga y que las personas técnicas tienden a pensar que saben mucho más de lo que realmente saben, por lo que son fácilmente enviados a la maleza.

En los criptosistemas los detalles son más importantes de lo que puedas imaginar. Entonces, todo lo que tiene que hacer es hacer una falsificación que funcione para un sistema criptográfico ligeramente modificado y luego mucha gente que PIENSA que entiende cómo funciona ECDSA se apresurará a afirmar que el resultado se mantiene.

La mayoría de las modificaciones que se te ocurran son suficientes para hacer que el esquema sea inseguro.

Entonces, por ejemplo, hace un par de años, Craig Wright afirmó 'probar que era Satoshi' simplemente copiando algunas firmas preexistentes de la cadena de bloques y publicando instrucciones un tanto confusas sobre cómo verificarlas. Se descubrió bastante rápido, pero aún así logró engañar a mucha gente: estaban demasiado atrapados en el galimatías para pensar en lo obvio. La "modificación" en este caso fue que el mensaje que el estafador decía haber firmado simplemente no tiene relación con el mensaje que en realidad se firmó.

Más recientemente, parece que alguien intentó algo similar nuevamente, pero esta vez con 'firmas' que no eran de la cadena de bloques... lo que resultó en una 'verificación' de los desarrolladores de algunos clientes de BCH a un ingeniero de RedHat . Pero resulta que, nuevamente, el intento fue falso y la comprensión parcial pero incompleta de las personas sobre las criptomonedas los quemó.

Como señala el desarrollador de Bitcoin, Pieter Wuille, " las firmas ECDSA en las que el mensaje no es un hash y es elegido por el "firmante" son inseguras ". Esta vez, el estafador acaba de publicar tuplas "hash", r, s. La parte hash de ECDSA es parte integral del algoritmo. Si el verificador no ejecuta el hash por sí mismo, las propiedades de seguridad de ECDSA no se mantienen y una falsificación existencial se vuelve trivial.

[Esta misma vulnerabilidad se incorporó al código de operación OP_DSV original en BCH; originalmente no hizo hash de los datos entrantes, sino que dejó eso en manos del usuario, pero lo informé y parece que lo arreglaron antes de implementarlo].

Si el verificador no realiza el hash por sí mismo, sino que simplemente acepta un valor dado por el firmante, se vuelve susceptible a lo siguiente: Dada la clave pública P, elija valores aleatorios distintos de cero a y b. Calcule R=aG+bP. Ahora (Rx, Rx/b) es una firma válida bajo la clave P para "mensaje-hash" (Rx*a/b).

Esto no compromete la seguridad de la ECDSA real porque no puede encontrar un mensaje que se convierta en un valor elegido (Rx*a/b).

Las personas deben tener cuidado con las "pruebas" ofuscadas o demasiado técnicas, cosas que "parecen" un sistema seguro pero que, por alguna razón, tienen personas que lo verifican trabajando con números o códigos sin procesar. El software criptográfico bien diseñado se esfuerza mucho para evitar que los usuarios se dejen engañar por trucos como este. Esto es complicado y cualquiera podría confundirse y aceptar una prueba falsa si estuviera convencido de implementar efectivamente un criptosistema a medida. Un criptosistema no es seguro simplemente porque usted, personalmente, no ve cómo romperlo.

Aquí hay un script de Sage de ejemplo para producir falsificaciones que engañarán a alguien que acepta una 'firma' de ECDSA sin codificar el mensaje. Funciona con cualquier clave EC, incluida una de la que el falsificador no haya visto una firma antes.

F = campo finito (0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2F)
C = Curva elíptica ([F (0), F (7)])
G = C.lift_x(0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798)
N = Campo Finito (C.order())
P = P=-C.lift_x(0x11db93e1dcdb8a016b49840f8c53bc1eb68a382e97b1482ecad7b148a6909a5c) # clave de pago de la base de monedas del bloque 9.
def forge(c, a=-1): # Crear una firma 'ECDSA' falsificada (sin hash)
  # establecer a algo diferente a -1 para que sea menos obvio
  un = N(un)
  R = c*G + int(a)*P
  s = N(int(R.xy()[0]))/a
  m = N(c)*N(int(R.xy()[0]))/a
  imprimir 'hash1 = %d'%m
  imprimir 'r1 = %d'%(int(R.xy()[0]))
  imprimir 's1 = %d'%s
para c en el rango (1,10):
  forjar (c)

Este código produce falsificaciones del tipo que se utilizó recientemente para engañar a la gente .

hash1 = 25292222169426362969760742810503101183086560848420849767135309758511048414376
r1 = 61518691557461623794232686914770715342344584505217074682876722883231084339701
s1 = 54273397679854571629338298093917192510492979773857829699728440258287077154636
¿Por qué respondes tu propia pregunta?
Eso está perfectamente permitido en este sitio. Las buenas preguntas y las buenas respuestas son siempre bienvenidas.
es imposible falsificar la firma.
@Jerry Gao: G. Maxwell no afirma que pueda falsificar firmas. Está explicando cómo se puede engañar a alguien para que piense que algo es una firma real cuando no lo es.
¿Cuál es la afirmación de G. Maxwell? @pieter-wuille
La mente alucina. ¿Qué diablos haría que alguien intentara siquiera escribir un código para determinar "es esta una firma válida de algo " en lugar de "es esta una firma válida de eso"? No importa que la respuesta que obtengan para la primera pregunta sea incorrecta; ¿Por qué es incluso una pregunta que uno querría hacer?
@HenningMakholm: Recientemente, una figura muy conocida en el espacio de Bitcoin ha publicado firmas ECDSA para un mensaje desconocido que afirma que revelaría el mensaje más tarde. Al parecer, esperaban que la gente supusiera que la firma convencería a otros de poseer la clave privada correspondiente.
@Murch: Ya veo. A la luz de los primeros párrafos de la respuesta, eso tiene cierto sentido.
@Murch Esta es una buena publicación y una contribución importante, pero debe editarse para eliminar los ataques personales y el lenguaje condescendiente. Una respuesta técnica es todo lo que necesitamos aquí, llamar estúpida a toda la comunidad está fuera de lugar para SE.
@HenningMakholm Si lo piensa, las firmas digitales tienen un nombre incorrecto. Una firma tradicional no hace nada para vincular el documento en el que está escrita, además de estar escrita en él. Una firma digital funciona un poco más como un sello de cera. :) En cualquier caso, por alguna razón, mucha gente parece convencida por la 'firma de algo' que se indica en la proximidad, tal vez siguiendo una intuición prestada de las firmas tradicionales.
@pinhead de ninguna manera OP dice eso. Menospreciar publicaciones precisas, veraces y técnicas presentándolas como ofensivas es una táctica muy común en este espacio. No caigas en eso. Las personas que no saben algo (y mucho menos una "comunidad entera") de ninguna manera son llamadas estúpidas.
El código de operación OP_DSV aún puede ser atacado por H(m) == m !!!!
@JerryGao: Si tiene alguna pregunta sobre OP_DSV, no dude en abrir otro tema.