Skip to main content
Alethea Protocol

Spécifications

Documentation technique de référence.

Version 0.1 (draft). Spec sous CC-BY 4.0. Évolutions par processus RFC public.

1. Identité

Alethea repose sur une identité numérique vérifiée par un tiers de confiance. Le protocole est identity-provider-agnostic : il accepte plusieurs sources d'attestation, pourvu qu'elles satisfassent un niveau eIDAS reconnu. Cinq niveaux sont définis.

NiveauDescriptionProviders de référence
0Anonyme (vérification seule, signature interdite)
1Email + téléphone vérifiésOAuth2 providers majeurs
2KYC standard (pièce d'identité + selfie)Onfido, Sumsub, Veriff
3KYB pour entités juridiquesSumsub Corporate, KYC-Chain
4eIDAS qualifié / souverainFranceConnect+, eID-AS niveau élevé

L'identité reste privée. Seul un identityHash = SHA-256(provider || providerUserId || salt) est publié sur le registre, lié à la clé publique du signataire. Le provider conserve la correspondance, divulgable uniquement sur réquisition judiciaire selon ses propres CGU.

2. Empreintes de contenu

Tout contenu signé produit plusieurs empreintes calculées côté client. Le contenu lui-même n'est jamais transmis ni au protocole ni au registre.

  • SHA-256 : hash exact. Permet de retrouver une copie strictement identique au bit près.
  • pHash perceptuel : hash perceptuel image. Résiste aux recompressions, redimensionnements, modifications colorimétriques mineures.
  • Chromaprint : fingerprinting audio. Très robuste aux altérations.
  • Hash par segments : pour la vidéo, découpée en blocs (1 frame par seconde, 4 à 60 frames). Permet de retrouver des fragments même après trim ou montage.
javascript// alethea
async function computeContentHash(file) {
  const buffer = await file.arrayBuffer();
  const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
  return Array.from(new Uint8Array(hashBuffer))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}
Calcul SHA-256 côté client (navigateur)

3. Signature cryptographique

Schémas supportés en v0.1 : ECDSA secp256k1 (compatibilité Ethereum-family) et Ed25519 (compatibilité Solana, plus rapide).

solidity// alethea
struct AletheaSignature {
    bytes32 contentHash;       // SHA-256 du contenu
    bytes32 perceptualHash;    // pHash ou hash composite
    address signerAddress;     // clé publique
    bytes32 identityHash;      // hash de l'identité vérifiée
    uint8   role;              // 1..5 (Auteur..Reclaim)
    uint8   identityLevel;     // 0..4 (cf. spec section 1)
    uint64  timestamp;         // unix seconds, posé on-chain
    bytes32 contextHash;       // hash JSON contexte additionnel
    bytes   signature;         // ECDSA/Ed25519
}
Structure d'une signature on-chain (extrait du smart contract de référence)

Flow de signature

01Personne ou organisation02Vérification identité (niveau 1 à 4)03Génération paire de clés (secp256k1 ou Ed25519)04Upload contenu local, jamais transmis05Calcul empreintes côté client06Choix du rôle de signature07Signature cryptographique locale08Enregistrement on-chain (transaction signée)

4. Registre (chain-agnostic)

Le protocole ne prescrit pas de blockchain unique. Il définit la structure d'une signature et le shape d'un registry. Toute infrastructure remplissant ces critères peut héberger un registre Alethea.

Critères d'éligibilité d'un registre :

  • Public et consultable sans autorisation.
  • Immuable (write-once, append-only).
  • Horodatage vérifiable (timestamp posé par le registre).
  • Censure-résistant (aucun acteur unique ne peut effacer).
  • Coût de transaction raisonnable (cible : moins de 0,01 € par signature).

Des profils Alethea sont publiés par registre supporté, sur le modèle des profils C2PA. Profils en cours de rédaction :

  • · Alethea on Polygon (référence v0.1, rapport coût/perf le plus favorable)
  • · Alethea on Base (alternative L2 Ethereum)
  • · Alethea on Ethereum L1 (cas haute valeur juridique, coût élevé)
  • · Alethea on Solana (cas haute fréquence, Ed25519 natif)

D'autres profils peuvent être proposés par RFC ouvert, y compris sur des registres non-blockchain satisfaisant les critères (modèle Sigstore / transparency log type Certificate Transparency).

5. Vérification

L'algorithme de vérification est multi-niveaux. Il cherche d'abord une correspondance exacte (SHA-256), puis perceptuelle (pHash, distance de Hamming), puis segmentée (alignement par fenêtre glissante pour les vidéos).

python// alethea
def sliding_min_avg_distance(short, longer):
    """Cherche le meilleur alignement de la séquence courte
    dans la longue. Tolère trims, recompressions, ré-encodages."""
    if len(short) > len(longer):
        short, longer = longer, short
    n, m = len(short), len(longer)
    best_avg, best_offset = None, 0
    for i in range(m - n + 1):
        total = sum(short[j] - longer[i + j] for j in range(n))
        avg = total / n
        if best_avg is None or avg < best_avg:
            best_avg, best_offset = avg, i
    return float(best_avg), best_offset
Matching par fenêtre glissante (extrait de l'implémentation de référence signcheck)

Seuil par défaut de la distance de Hamming : 8 (configurable). Au-delà, pas de match. En deçà, la signature correspondante est renvoyée avec son offset temporel pour les vidéos.

6. Interopérabilité

Alethea s'inscrit dans l'écosystème provenance existant. Position : couche d'identité et de réfutation au-dessus des standards de provenance, pas concurrent.

  • C2PA : compatibilité native prévue. Une signature Alethea peut être embarquée dans un manifest C2PA via une assertion custom org.aletheaprotocol.signature.
  • eIDAS : mapping direct du niveau d'identité Alethea vers les niveaux eIDAS (substantiel, élevé). Une signature niveau 4 satisfait les exigences d'identification forte.
  • JSON-LD : format canonique d'export d'une signature. Contexte https://aletheaprotocol.com/context/v1, schémas conformes Schema.org pour ClaimReview et MediaObject.

7. Robustesse aux modifications

Tableau des scénarios courants et de la résilience attendue de la vérification.

ScénarioSHA-256pHashSegmenté + sliding
Copie strictement identique
Recompression JPEG / H.264
Redimensionnement
Ajustement luminosité / contraste
Crop léger (<10%)~
Crop massif (>30%)~
Rotation 90°+~
Trim vidéo (extrait)
Concat avec autre contenu✓ (sur segments matchés)

Légende : ✓ détection fiable. ~ détection partielle, dépend du seuil. ✗ non détectable.