Documentación / 08
Vea cómo funciona el registro de pruebas
Un mensaje puede modificarse. El registro de lo que ha observado debe seguir siendo verificable.
Explore a continuación dos pequeños experimentos. Utilizan mensajes ficticios, se ejecutan directamente en su navegador y nunca se conectan a Telegram.
Un mensaje, tres observaciones
Cuando Telegram envía un nuevo mensaje, una modificación o un aviso de eliminación, la herramienta de recopilación añade tres registros independientes. La modificación no sustituye al primer registro. Un aviso de eliminación no lo borra.
El mensaje ha desaparecido de la vista del chat.
- 01✓
message.newNos vemos a las 10:00
- 02✓
message.editedNos vemos a las 11:00
- 03✓
message.deletedAviso de eliminación del n.º 42
Las tres observaciones recibidas permanecen en el registro.
Un aviso de eliminación no proporciona ni una hora de eliminación fiable ni la identidad de la persona que eliminó el mensaje. Mantener desconocidos esos datos preserva la distinción entre una observación y una suposición.
Modifique un registro. Siga el hash.
Cada registro contiene el hash del registro anterior. Su propio hash abarca los campos del evento, incluido ese enlace. Un punto de control conservado externamente fija una longitud específica del registro y el hash inicial.
h₁ = SHA-256(e₁)Enlaces a 64 cerosh₂ = SHA-256(e₂)Incluye h₁h₃ = SHA-256(e₃)Incluye h₂h₃Compare este límite fijo con el registro facilitado.La modificación de un evento cambia su hash. La reconstrucción de la cadena cambia su cabeza. La eliminación de la cola hace que sea más corta que el punto de control conservado.
Consulte el registro n.º 2 y los hash completos
Este es el JSON UTF-8 exacto al que se ha aplicado el hash en este ejemplo. Los valores son ficticios; los nueve campos y la serialización se ajustan al formato del registro.
- Hash del registro guardado n.º 2
- Hash del registro 2 recalculado
Las normas propiamente dichas, en unas pocas líneas
hi = hex(SHA-256(C(ei)))
σi = Ed25519.Sign(sk, unhex(hi))
C serializa los nueve campos del evento como JSON en UTF-8: claves ordenadas, sin espacios en blanco adicionales, sin caracteres de escape ASCII y sin valores NaN ni infinito. El previous_hash del evento es hi−1. El h0 que se muestra significa 64 caracteres cero; las firmas abarcan los 32 bytes del resumen sin procesar.
Los nueve campos son seq, observed_at, source_at, kind, chat_id, message_id, actor_id, payload y previous_hash. Esta es la codificación JSON documentada de TgWitness; el hash y la firma en sí mismos no son campos de entrada de hash.
hexport[Ncheckpoint] = Hcheckpoint
Verifique la firma del punto de control bajo la clave del recopilador fijada y, a continuación, compare su límite con el registro verificado. Una exportación posterior puede contener más registros; no obstante, debe coincidir con el punto de control anterior.
Tres preguntas, tres comprobaciones diferentes
Verifique los hash y las firmas con una clave de confianza independiente.
02 / CONTINUIDAD¿Qué se había conservado anteriormente?Compare una exportación firmada con los puntos de control conservados por un testigo independiente.
03 / ENTREGA¿Han llegado estos eventos de prueba?Compare las acciones controladas de envío, edición y eliminación con el registro de cada cuenta.
Una cadena de hash coincidente responde a una pregunta de integridad. No confirma la entrega completa del mensaje en Telegram, la veracidad de un mensaje ni una hora de observación fiable de forma independiente.
Siga la investigación completa de la cuenta, desde la adquisición hasta el expediente del caso.