Intercambios atómicos de curvas transversales
Fecha: March 5, 2018
Transcripción De: Bryan Bishop
Traducción Por: Blue Moon
Tags: Adaptor signatures
Categoría: Core dev tech
https://twitter.com/kanzure/status/971827042223345664
Borrador de un próximo documento de guiones sin guión. Esto fue a principios de 2017. Pero ya ha pasado todo un año.
transacciones lightning posteriores a schnorr https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-February/001031.html
Una firma adaptadora.. si tienes diferentes generadores, entonces los dos secretos a revelar, simplemente le das a alguien los dos, más una prueba de un log discreto, y entonces dices aprende el secreto a uno que consiga que la revelación sea la misma. Es una prueba de registro discreto de equivalencia. Descompones una clave secreta en bits. Para estos propósitos, está bien tener una clave secreta de 128
bits, sólo se usa una vez. 128
bits es mucho más pequeño que secp y demás. Definitivamente podemos descomponerla en bits. Se necesita una clave privada, pero menor que la ordenación del grupo en ambos. Voy a tratar la clave pública… Voy a asumir… que va a ser lo suficientemente pequeña, mapa de cada entero en un rango, biyección en el conjunto de enteros y conjunto de escalares en secp y el conjunto de escalares en… Es sólo conceptualmente porque de lo contrario no tiene sentido hacer eso. En la práctica, son todos los mismos números. Lo divides en bits, similar a lo del anillo-CT de Monero, que es una forma demasiado complicada de describirlo. ¿Qué pasa con las firmas del anillo de Schnorr? Básicamente, la forma en que funciona, una firma Schnorr tiene una elección de un nonce, se hace un hash, entonces se obtiene un valor S
que de alguna manera satisface alguna ecuación que implica el hash y el nonce secreto y la clave secreta. La idea es que debido a que el hash se compromete con todo, incluyendo la clave pública y el nonce, la única manera de hacer que esta ecuación funcione es si se utiliza - la clave secreta - y entonces se puede calcular S
. Y si el hash no se compromete, entonces se podría resolver lo que el nonce público debe ser. Pero no puedes hacer eso porque tienes que elegir un nonce antes de un hash. En una firma de anillo schnorr, tienes una pila de claves públicas, eliges un nonce y obtienes un hash, pero luego la siguiente clave tienes que usar ese hash pero la siguiente clave, y eventualmente llegas bcak al principio y se envuelve alrededor. Empiezas desde una de las claves secretas, empiezas una clave pasada, haces firmas aleatorias y las resuelves y vuelves, y eventualmente no puedes hacer una firma aleatoria y resolverla, y ese es el hash final, que ya está determinado, y no puedes hacerlo de nuevo, tienes que hacer lo correcto, necesitas una clave secreta. El verificador no sabe el orden, no puede distinguirlos. Lo que mola de esto es que estás haciendo un montón de álgebra, estás metiendo una mierda en un hash, y luego estás haciendo más álgebra de nuevo y repitiendo. Podrías hacer esto todo lo que quisieras, en la firma del anillo de no-tu-clave, sólo tiras en cosas al azar en este hash. Usted podría mostrar un priemage y demostrar que era una de esas personas, es cosas unlinkability. Podrías construir una prueba de rango a partir de esta firma de anillo schnorr. Supón que tienes un compromiso pedersen entre 0
y 10
, llámalo compromiso C
. Si el compromiso es 0
, entonces conozco el registro discreto a C. Si el compromiso es a 1
, entonces conozco C - H
, y si es 2
entonces es C-2H
, y entonces hago un anillo con C - H
, hasta C-10H
, y si el rango está ahí, entonces conoceré uno de esos registros discretos. Divides tu número en bits, tienes un compromiso de 0
, 1
, o 0
, 2
, o 0
, 4
, o 0
, 8
, y sumas todos estos. Cada una de estas firmas individuales del anillo es lineal en el número de cosas. Puedes obtener una prueba de tamaño logarítmico haciendo esto. Estos hashes… porque estamos poniendo puntos en estos hashes, y los hashes están usando estos datos. Puedo hacer una firma de anillo simultánea donde cada estado voy a compartir una función de hash, voy a hacer ambas firmas de anillo, pero estoy usando el mismo hash para ambos, así que elijo un nonce al azar por aquí, hago un hash de ambos, y luego calculo un valor S
en ese hash en ambos lados, obtengo otro nonce y pongo ambos en el siguiente hash, y eventualmente tendré que resolver realmente en ambos lados. Así que esto es claramente dos firmas de anillo diferentes que ambos están compartiendo algunos…. Pero es cierto que el mismo índice.. Tengo que saber la clave secreta del mismo índice en ambos. Una forma de pensar en esto es que tengo secp y ed, y estoy encontrando una estructura de grupo en esto de la manera obvia, y entonces mi afirmación es que estos dos puntos, como Tsecp y Ted tienen el mismo registro discreto. En este grupo más grande, estoy afirmando que este log discreto de este multipunto es T
, T
y ambos componentes son los mismos. Hago una firma de anillo en este grupo de producto cartesiano, y estoy demostrando que son los mismos en ambos paso, y esto es equivalente a la misma cosa donde yo estaba combinando hashes.
Digamos que intentamos hacer un intercambio atómico. Tengo una firma adaptadora en la que puedo poner algunas monedas en un multisig. Tú me das una firma adaptadora, que me da la capacidad de traducir tu firma, que luego revelarás para tomar las monedas, en algún desafío de registro discreto. Tú me das una firma adaptadora y algunos valores, y yo digo que sí, mientras esto ocurra, entonces firmaré. Así que las monedas pueden utilizar una curva, y usted puede reclamar las curvas de la otra moneda. En la otra cadena hacemos lo mismo, así que me das una firma adaptadora con el mismo valor t. Ahora sólo tengo las firmas del adaptador. Tú firmas para tomar tus monedas, yo uso tu firma para aprender la clave secreta, y luego puedo usarla para tomar monedas en mi extremo. ¿Y si fuera una moneda ed25519
y una moneda secp? Depende de usar la misma t en ambos lados. Quiero que me des dos t y una en secp y otra en ed25519
y una prueba de que están usando la misma clave privada. ¿Cómo haces la clave… cómo limitas la… Cuando haces esta cosa de la firma en anillo, sólo tienes tantos dígitos. Lo divides en dígitos, sumas todos los dígitos. Por cada dígito, me das un… dices que esta es la clave secreta de 0
o 1
, o 0
o 2
, etc. No tiene que ser de 128
bits. Estas pruebas son bastante grandes. Cada firma de anillo es como… si lo haces en binario, 96
bytes por dígito, 96
bytes * 128
en este caso. Esto es sólo p2p. Es como 10-20
kb. No es mucho.
¿Actualmente la gente tiene intercambios atómicos entre cadenas para diferentes curvas? Podrías usar sólo hashes, pero cualquiera podría ver los hashes. Pueden enlazarlos.
El firmante podría darle una firma y la firma del adaptador. Hay un protocolo retador-respuesta en ese borrador de la escritura sin guión.
Necesitamos una nueva definición o letra para sG. Lo usamos mucho.