Testigo Insobornable — Verificación Criptográfica

Este endpoint publica la clave pública Ed25519 activa del sistema. Cada artículo ingresado al corpus lleva un registro técnico verificable: qué se dijo, cuándo fue capturado y qué llave del sistema lo atestiguó mediante SHA-256 + Ed25519.

Versión JSON de esta página: /noticias/fuentes-testigo?format=json

Clave pública activa

Algoritmo
Ed25519
Curva
edwards25519
ID del keypair
25c5280eaf32a2a9
Clave pública (hex)
e1fff6ab9afa1e3f0e1865640c0dc2194e339a5a68c5958709e7aab13126af12
Clave pública (base64)
4f/2q5r6Hj8OGGVkDA3CGU4zmlpoxZWHCeeqsTEmrxI=

Cómo verificar una firma

Blob canónico: Concatenación de campos del artículo en orden determinista: title|url|published_at|content_hash. Se firma este string, no el HTML.: item_title item_link item_date captured_at_iso item_description

  1. Obtén el blob canónico del artículo desde el endpoint JSON de la historia (campo canonical_blob).
  2. Verifica la firma Ed25519 del campo signature contra la clave pública publicada aquí usando cualquier librería estándar (libsodium, PyNaCl, tweetnacl).

Ejemplos de verificación

PHP (libsodium)

sodium_crypto_sign_verify_detached(hex2bin($sig), hex2bin($sha256), hex2bin($pub_hex))

Python (PyNaCl)

PyNaCl: nacl.signing.VerifyKey(bytes.fromhex(pub)).verify(bytes.fromhex(sha256), bytes.fromhex(sig))

Node.js (tweetnacl)

tweetnacl: nacl.sign.detached.verify(Uint8Array.from(Buffer.from(sha256,"hex")), Uint8Array.from(Buffer.from(sig,"hex")), Uint8Array.from(Buffer.from(pub,"hex")))

Referencias técnicas

Alcance actual: registro técnico verificable de contenido, captura y atestiguamiento criptográfico. Estándar de firma: RFC 8032 (Ed25519). Hash de contenido: SHA-256. Mediometro.digital contempla NOM-151 como implementación futura de certificación externa; no está activa en esta versión.