¿Cómo evita Peercoin (u otro PoS) que la falsificación de marcas de tiempo afecte los intentos de hash o la acuñación aleatoria?

Entiendo que cada segundo se codifica la marca de tiempo y las posibles transacciones.

Supongo que existe una "hora de inicio" en la cadena de bloques que no podemos hacer girar el reloj antes porque las transacciones con marcas de tiempo ya existen en la cadena. Pero, ¿podríamos retroceder unos minutos? ¿Podría esto ganarnos algo?

De todos modos, incluso si no podemos retroceder en el tiempo, ¿podríamos editar el programa para probar tantos hashes como sea posible cada segundo? Por ejemplo, supongamos que intentamos 100 veces hacer hash en lugar de una vez, durante un segundo dado, luego transmitimos el bloque. ¿Otros nodos de la red aceptarían el bloqueo, aunque sea un poco tarde? ¿Usan otros nodos en la red alguna API para obtener la hora real? ¿Seguramente el sistema debe permitir un factor de fudge para dar cuenta de las latencias?

Incluso si lo rechazan, ¿qué pasa con esto: el tiempo es 5 segundos después de las seis, luego tratamos repetidamente de codificar la marca de tiempo de 10 segundos; obtenemos 5 segundos completos para hacer esto? Si tenemos éxito y nadie más lo ha hecho, podemos transmitir el bloqueo.

Básicamente, en el sistema PoW es probablemente imposible obtener una ventaja sin comprar más hardware: un nodo puede alterar el código y los relojes tanto como quiera, no obtendrá una ventaja. No me queda claro cómo se protegen los sistemas PoS, ya que deben confiar en la integridad del código y los relojes.

Del mismo modo, ¿se podría engañar a la acuñación? Si usa un generador de números aleatorios, ¿de dónde viene este número aleatorio? ¿Se puede falsificar?

Soy un tipo técnico, muy feliz por las explicaciones totalmente técnicas, ¡sin contenerme! :)

Respuestas (2)

Todos estos posibles ataques se han estudiado en el informe técnico de Neucoin (peercoin fork) disponible aquí:

http://www.neucoin.org/en/whitepaper/download

Aquí está su conclusión sobre el ataque de trituración de estacas (3.3.3):

Para concluir esta discusión sobre la molienda en la prueba de participación, aquí hay una estadística para los críticos que dicen que es mini "sin costo" pulir a través del espacio de bloques: si un atacante poseyera el 10% de la moneda apostada de NeuCoin y tuviera acceso a todo el poder de hash de la red Bitcoin, sus probabilidades de éxito en un ataque de trituración serían una de ∼10⁸⁷. Por cierto, solo hay ~10⁸⁰ átomos en el universo observable.

Estos dos ataques también se han descrito en el foro de Peercoin:

Deriva del tiempo: https://www.peercointalk.org/index.php?topic=2976.msg27924#msg27924

Rectificado de apuestas: https://www.peercointalk.org/index.php?topic=2976.msg27789#msg27789

Eso es interesante, pero ¿cómo lo hace?
Hola Nick, el ataque de molienda contra PoS se explica en detalle en el libro blanco de Neucoin (enlace arriba) a partir de la página 32. Siéntase libre de preguntar si hay algo que no entiende. Sin embargo, no seré de mucha ayuda en la parte matemática;)
Esto explica los ataques de manera integral y explica las posibles formas de prevenirlos, por lo que acepto esta respuesta.

Los problemas generales que está describiendo son fallas inherentes en PoS, pero se ha dado cuenta de algunos de los principios básicos que afectarán la seguridad y la integridad del criptosistema.

De todos modos, incluso si no podemos retroceder en el tiempo, ¿podríamos editar el programa para probar tantos hashes como sea posible cada segundo? Por ejemplo, supongamos que intentamos 100 veces hacer hash en lugar de una vez, durante un segundo dado, luego transmitimos el bloque.

Esto se conoce como pulido con estacas.

La selección del siguiente firmante en la cadena de bloques es casi siempre (esto varía según la implementación) directa o indirectamente determinista en función de la información del bloque anterior. Como no hay nada inherentemente que impida que una persona renuncie a los bloques anteriores tanto como quiera, puede continuar hasta que el jefe de la cadena también los asigne para ser el próximo firmante de un bloque. Bajo este ataque, una persona obtiene una cantidad de poder enormemente inflada sobre la cadena, o si todo el mundo está intentando pulir la cadena, se descompone en un sistema de prueba de trabajo particularmente ineficiente con propiedades mal descritas.

Las altcoins de prueba de participación generalmente intentan resolver esto haciendo que la semilla RNG de selección del firmante provenga de una parte anterior de la cadena, digamos mil bloques antes de la cabeza, con la idea de que es imposible que alguien influya en el resultado desde tan atrás en tiempo.

Supongo que existe una "hora de inicio" en la cadena de bloques que no podemos hacer girar el reloj antes porque las transacciones con marcas de tiempo ya existen en la cadena. Pero, ¿podríamos retroceder unos minutos? ¿Podría esto ganarnos algo?

Esto se conoce como simulación sin costo.

El sistema vuelve a caer en el simple hecho de que no hay nada intrínsecamente difícil en renunciar a los bloques. Dadas algunas monedas al comienzo de la cadena de bloques (carteras propias, robadas, "vacías" compradas), en un sistema de prueba de participación, un atacante puede simplemente reconstruir toda la cadena hasta el día de hoy con ellos mismos como el único participante. Dada la opción de dos cadenas (en este caso, la cadena principal y la atacante), un cliente no tiene forma de saber en cuál debe confiar como real.

Las altcoins de prueba de participación a menudo intentan resolver esto al tener "puntos de control" centralizados que evitan que la cadena se desvíe, aunque uno podría argumentar en contra de que este sistema esté descentralizado en absoluto. Otros simplemente tienen nodos en la red que se niegan a reorganizarse en otras cadenas después de un cierto período de tiempo, lo que no protege a los nuevos usuarios que se unen a la red y se les presentan cadenas falsas. Ethereum PoS intentará un sistema de "llamar a un amigo", donde se solicita a los usuarios que se comuniquen con otros participantes de la red fuera de la banda y confirmen manualmente que están en la misma cadena de bloques principal.

La sección 6.4 de A Treatise on Altcoins cubre estos temas con un poco más de profundidad.