EDITAR: Esta pregunta no es específica de Bitcoin. Es aplicable a cualquier otra moneda criptográfica que esté interesada en utilizar un esquema de firma diferente al de Bitcoin o al cliente de referencia QT. Una razón para esto es reducir la complejidad (y los errores) en el protocolo.
Mi comprensión de las transacciones maleables en Bitcoin es que se admiten dos valores diferentes para "S" cuando se valida una firma.
La solución para esto es asegurar que S sea menor que el siguiente
X9ECParameters ecParams = Org.BouncyCastle.Asn1.Sec.SecNamedCurves.GetByName("secp256k1");
HALF_CURVE_ORDER = ecParams.N.ShiftRight(1);
Dada la gran cantidad de mecanismos de firma disponibles para las criptomonedas, ¿qué algoritmos o enfoques de firma no son vulnerables a las transacciones maleables?
por ejemplo, ¿y si...?
Estoy interesado en las respuestas que describen tanto las soluciones que están rotas como las que evitarían que ocurran transacciones maleables.
Mi objetivo es eliminar un algoritmo que produzca resultados consistentes con una complejidad mínima para los implementadores. (en otras palabras, incluso Mt Gox lo haría bien)
La solución es la misma independientemente de la curva o el algoritmo de firma: rechace las firmas no canónicas. Esto es precisamente lo que Bitcoin ha decidido hacer.
Juan T.
fabricante de cosas7
Juan T.
Juan T.
fabricante de cosas7
HALF_CURVE_ORDER = ecParams.N.ShiftRight(1);