Fondations cryptographiques

Chaque promesse que Hashiverse fait sur la souveraineté des données, la résistance à la censure et l'indépendance de propriété est adossée à de la cryptographie. Ce n'est pas de l'habillage — c'est la raison pour laquelle ces promesses tiennent. Comprendre la couche cryptographique, c'est comprendre la fondation sur laquelle tout le reste est bâti.

Identité

Une identité Hashiverse n'est pas attribuée par un serveur. Elle est dérivée des clés :

ID = Blake3(ed25519_pub || Blake3(Falcon_pub)[0..16] || Blake3(Dilithium_pub)[0..16])

Votre identifiant public est un hachage 256 bits de trois clés publiques — une classique (Ed25519), deux post-quantiques (FN-DSA/Falcon et ML-DSA/Dilithium). Les engagements de 16 octets envers les clés post-quantiques les lient à votre identité dès maintenant, avant que les ordinateurs quantiques ne soient une menace pratique. Quand la migration quantique arrivera, le chemin de mise à niveau est déjà inscrit dans chaque identité du réseau.

Les identités de serveur fonctionnent de la même manière, avec l'exigence supplémentaire que l'identifiant doit satisfaire une condition de proof-of-work (un préfixe de zéros en tête dans le hachage). Cela rend la création d'identité serveur coûteuse en calcul, prévenant les attaques Sybil sur l'anneau DHT.

La clé de signature privée Ed25519 du client est stockée exclusivement dans l'enclave sécurisée de l'API Web Crypto du navigateur en tant qu'objet CryptoKey non extractible. Le navigateur expose seulement une opération de signature — les octets bruts de la clé privée ne sont jamais accessibles à JavaScript, au module WASM, ni à aucun autre code tournant sur la page. Il n'existe aucun mécanisme pour exporter ou récupérer la clé privée une fois importée. La signature s'effectue à l'intérieur de la couche cryptographique du navigateur ; la clé n'en sort jamais.

C'est une contrainte délibérée, pas une limitation. Même si le client WASM Hashiverse était entièrement compromis, un attaquant pourrait au mieux invoquer l'opération de signature au nom de la victime — il ne pourrait pas voler la clé pour s'en servir ailleurs.

Source : hashiverse-lib/src/tools/ — types Hash, Id, Signature ; server_id.rs pour la proof-of-work d'identité serveur.

Signatures hybrides post-quantiques

L'identité à trois clés permet un chemin de migration progressif :

SPHINCS+ a été envisagé puis écarté : ses signatures pèsent plusieurs kilo-octets, ce qui est prohibitif pour un réseau de publications à fort débit. La combinaison Falcon + Dilithium fournit deux hypothèses de sécurité indépendantes basées sur les réseaux euclidiens, ce qui signifie que les deux devraient être cassées simultanément pour compromettre l'identité.

Source : hashiverse-lib/src/tools/ primitives cryptographiques ; encoded_post.rs pour la sélection du mécanisme de signature par publication.

Hachage

Blake3 est la fonction de hachage primaire — rapide, parallélisable, et adaptée aux sommes de contrôle, à l'adressage par contenu et à la dérivation de clés. Pour la proof-of-work, la suite complète de hachages disponible dans le protocole comprend Blake2, Blake3, SHA2, SHA3, Whirlpool, Groestl et Skein. La proof-of-work enchaîne plusieurs algorithmes dans une séquence pseudo-aléatoire, ce qui accroît la résistance aux ASIC en exigeant la co-implémentation efficace de plusieurs algorithmes dépendant du chemin, simultanément.

Toutes les bibliothèques de hachage sont compilées avec opt-level=3 même en debug — c'est configuré dans les surcharges de profil du Cargo.toml du workspace pour empêcher que les suites de tests ne soient bridées par le calcul de hachage.

Chiffrement au repos

Les publications stockées sur les serveurs sont chiffrées avec ChaCha20-Poly1305. La clé est dérivée d'une phrase de passe qui dépend du type de bucket :

Un schéma de chiffrement à phrases de passe multiples, vaguement inspiré de age, signifie qu'une seule publication couvrant plusieurs contextes — un post avec hashtag qui mentionne aussi un utilisateur — peut être déchiffrée par quiconque détient l'une ou l'autre des phrases de passe. Les serveurs stockent des octets chiffrés qu'ils ne peuvent pas lire. Il n'y a pas de texte en clair sur le disque du serveur.

Source : encoded_post.rs pour le chiffrement des publications ; hashiverse-lib/src/tools/ pour les primitives ChaCha20-Poly1305.

Des signatures sur tout

Chaque publication est signée par son auteur. Chaque réponse de serveur est signée par le serveur qui sert. Chaque bundle est signé. Les signatures ne sont pas des métadonnées optionnelles — c'est le mécanisme par lequel les clients peuvent faire confiance au contenu reçu de serveurs non fiables. Un client n'a jamais besoin de faire confiance à un serveur ; il fait confiance à la signature cryptographique sur le contenu que ce serveur livre.

Deux couches de sécurité de transport

Hashiverse sépare le chiffrement du transport de la sécurité du protocole, et les traite comme des préoccupations indépendantes :

Couche transport (TLS) : la communication serveur-à-serveur et client-à-serveur passe par HTTPS avec des certificats TLS émis par Let's Encrypt. Comme les serveurs Hashiverse sont identifiés par adresse IP plutôt que par nom de domaine, le serveur obtient un certificat TLS uniquement par IP via le protocole ACME. Cela chiffre le trafic en transit et empêche l'écoute passive sur le câble.

Couche protocole (cryptographie Hashiverse) : TLS seul ne suffit pas pour un réseau décentralisé sans confiance — un serveur compromis ou malveillant pourrait servir du contenu altéré sur une connexion TLS valide. La cryptographie propre à Hashiverse fournit la garantie plus profonde : chaque morceau de contenu est signé par les clés de son auteur, les publications sont chiffrées au repos avec des clés que le serveur ne détient jamais, et les identités des serveurs sont liées à des engagements de proof-of-work. Un client n'a pas besoin de faire confiance à un serveur ; il vérifie le contenu directement contre les signatures cryptographiques, peu importe par où il est arrivé.

TLS s'occupe du réseau ; la cryptographie Hashiverse s'occupe de la vérité.