Kryptografische Grundlage
Jedes Versprechen, das Hashiverse zu Datensouveränität, Zensurresistenz und Eigentumsunabhängigkeit gibt, ist durch Kryptografie gedeckt. Das ist keine Fassade — das ist der Grund, warum diese Versprechen halten. Die kryptografische Schicht zu verstehen heißt, das Fundament zu verstehen, auf dem alles andere ruht.
Identität
Eine Hashiverse-Identität wird nicht von einem Server zugeteilt. Sie wird aus Schlüsseln abgeleitet:
ID = Blake3(ed25519_pub || Blake3(Falcon_pub)[0..16] || Blake3(Dilithium_pub)[0..16]) Deine öffentliche ID ist ein 256-Bit-Hash aus drei öffentlichen Schlüsseln — einem klassischen (Ed25519), zwei post-quantischen (FN-DSA/Falcon und ML-DSA/Dilithium). Die 16-Byte-Commitments zu den PQ-Schlüsseln binden sie schon jetzt in deine Identität, bevor Quantencomputer eine praktische Bedrohung sind. Wenn die Quantenmigration stattfindet, ist der Upgrade-Pfad bereits in jeder Identität im Netzwerk eingebettet.
Server-Identitäten funktionieren genauso, mit der zusätzlichen Anforderung, dass die ID eine Proof-of-Work-Bedingung erfüllen muss (führender Null-Präfix im Hash). Das macht die Erstellung einer Server-Identität rechenintensiv und verhindert Sybil-Angriffe auf den DHT-Ring.
Der private Ed25519-Signierschlüssel des Clients wird ausschließlich in der
sicheren Enklave der Web Crypto API des Browsers als nicht
extrahierbares CryptoKey-Objekt gehalten. Der Browser stellt nur eine
Signieroperation bereit — die Roh-Bytes des privaten Schlüssels sind weder für
JavaScript noch für das WASM-Modul oder anderen Code auf der Seite zugänglich. Es gibt
keinen Mechanismus, den privaten Schlüssel nach dem Import zu exportieren oder
abzurufen. Das Signieren geschieht innerhalb der kryptografischen Schicht des
Browsers; der Schlüssel verlässt sie nie.
Das ist eine bewusste Beschränkung, keine Einschränkung. Selbst wenn der WASM-Client von Hashiverse vollständig kompromittiert wäre, könnte ein Angreifer höchstens die Signieroperation im Namen des Opfers aufrufen — er könnte den Schlüssel nicht stehlen und anderswo verwenden.
Quelle: hashiverse-lib/src/tools/ —
Typen Hash, Id, Signature;
server_id.rs für die
Proof-of-Work der Server-Identität.
Hybride Post-Quanten-Signaturen
Die Drei-Schlüssel-Identität ermöglicht einen progressiven Migrationspfad:
- Heute: Beiträge werden mit Ed25519 signiert. Verifikation ist schnell und gut verstanden.
- Wenn Ed25519 bedroht ist: primäres Signieren auf FN-DSA (Falcon) umstellen, das kleinere Signaturen als Dilithium hat.
- Falls gitterbasierte Algorithmen später gebrochen werden: auf ML-DSA (Dilithium) als finale Schicht zurückgreifen.
SPHINCS+ wurde erwogen und verworfen: Seine Signaturen sind mehrere Kilobyte groß, was für ein Beitragsnetzwerk mit hohem Durchsatz prohibitiv ist. Die Falcon+ Dilithium-Kombination liefert zwei unabhängige gitterbasierte Sicherheitsannahmen, sodass beide gleichzeitig gebrochen werden müssten, damit die Identität kompromittiert wird.
Quelle: hashiverse-lib/src/tools/ kryptografische Primitiven;
encoded_post.rs für die Auswahl des Signaturmechanismus pro Beitrag.
Hashing
Blake3 ist die primäre Hashfunktion — schnell, parallelisierbar und geeignet für Prüfsummen, inhaltsadressierung und Schlüsselableitung. Für Proof-of-Work umfasst die im Protokoll verfügbare Hash-Suite Blake2, Blake3, SHA2, SHA3, Whirlpool, Groestl und Skein. Proof-of-Work verkettet mehrere Algorithmen in einer pseudozufälligen Sequenz, was die ASIC-Resistenz erhöht, weil eine effiziente Co-Implementierung mehrerer pfadabhängiger Algorithmen gleichzeitig erforderlich ist.
Alle Hash-Bibliotheken werden auch in Debug-Builds mit opt-level=3
kompiliert — das ist in den Profil-Überschreibungen der Workspace-Cargo.toml
konfiguriert, damit Test-Suiten nicht durch Hash-Berechnung gebremst werden.
Verschlüsselung im Ruhezustand
Auf Servern gespeicherte Beiträge werden mit ChaCha20-Poly1305 verschlüsselt. Der Schlüssel wird aus einer Passphrase abgeleitet, die vom Bucket-Typ abhängt:
- Nutzer-Timeline: Passphrase ist die öffentliche ID des Nutzers
- Hashtag: Passphrase ist der Hashtag-Text in Kleinbuchstaben (ohne #)
- Erwähnung: Passphrase ist die öffentliche ID des erwähnten Nutzers
- Antwort: Passphrase ist die Inhalts-Signatur des ursprünglichen Beitrags
Ein eigenes Multi-Passphrase-Verschlüsselungsschema, lose inspiriert von age,
bedeutet, dass ein einziger Beitrag, der mehrere Kontexte abdeckt — ein Hashtag-Beitrag,
der auch einen Nutzer erwähnt — mit einer beliebigen der Passphrasen entschlüsselt
werden kann. Server speichern verschlüsselte Bytes, die sie nicht lesen können. Es gibt
keinen Klartext auf der Server-Festplatte.
Quelle: encoded_post.rs
für die Beitragsverschlüsselung; hashiverse-lib/src/tools/
für die ChaCha20-Poly1305-Primitiven.
Signaturen auf allem
Jeder Beitrag wird von seinem Autor signiert. Jede Serverantwort wird vom liefernden Server signiert. Jedes Bundle wird signiert. Signaturen sind keine optionalen Metadaten — sie sind der Mechanismus, mit dem Clients Inhalten von nicht vertrauenswürdigen Servern vertrauen können. Ein Client muss niemals einem Server vertrauen; er vertraut der kryptografischen Signatur auf den Inhalten, die der Server liefert.
Zwei Schichten Transport-Sicherheit
Hashiverse trennt Transport-Verschlüsselung von Protokoll-Sicherheit und behandelt sie als unabhängige Anliegen:
Transportschicht (TLS): Server-zu-Server- und Client-zu-Server-Kommunikation läuft über HTTPS mit TLS-Zertifikaten von Let's Encrypt. Da Hashiverse-Server eher per IP-Adresse als per Domainname identifiziert werden, bezieht der Server ein reines IP-TLS-Zertifikat über das ACME-Protokoll. Das verschlüsselt den Datenverkehr im Transit und verhindert passives Mithören auf der Leitung.
Protokollschicht (Hashiverse-Kryptografie): TLS allein reicht für ein vertrauensloses, dezentrales Netzwerk nicht — ein kompromittierter oder bösartiger Server könnte über eine gültige TLS-Verbindung dennoch manipulierte Inhalte ausliefern. Hashiverses eigene Kryptografie liefert die tiefere Garantie: Jeder Inhalt wird mit den Schlüsseln seines Autors signiert, Beiträge werden im Ruhezustand mit Schlüsseln verschlüsselt, die der Server nie hält, und Server-Identitäten sind an Proof-of-Work-Commitments gebunden. Ein Client muss keinem Server vertrauen; er prüft Inhalte direkt gegen kryptografische Signaturen, unabhängig davon, wie sie ankamen.
TLS kümmert sich ums Netzwerk; die Hashiverse-Kryptografie kümmert sich um die Wahrheit.