
Protokoll-introspektierender Chunk-Adapter für widerstandsfähige Daten
Protocol-Introspecting Chunk Adapter for Resilient Data
Für die Autodidakten, die Unkonventionellen und alle, denen je gesagt wurde, sie sollten in ihrer Spur bleiben. Bau weiter, erkunde weiter.
PICARD verschlüsselt deine Daten, zerlegt sie in Chunks und verteilt diese Chunks über alle Protokoll-Endpunkte, die du konfigurierst: DNS-TXT-Records, Social-Media-APIs, MQTT-Broker, S3-Buckets, Bluetooth-Advertisements oder alles davon gleichzeitig. Hol sie zurück, und es setzt sie wieder zusammen. Beim Multi-Adapter-Scatter hält kein einzelner Endpunkt genug Chiffretext, um irgendetwas zu rekonstruieren. Kein zentraler Server. Keine monatlichen Speichergebühren. Es wird als reguläres Dateisystem eingebunden.
Nicht effizient. Protokollagnostisch.
[!IMPORTANT] Forschungsprojekt. PICARD ist ein funktionierendes Informatik-Experiment, kein produktives Speichersystem. Lies den Forschungs- und Rechtshinweis, bevor du fortfährst.
[!WARNING] Experimentell: Nutzung auf eigenes Risiko. Diese Adapter verwenden Hardware-Schwachstellen als Speicherprimitive. Die Ergebnisse sind hardwarespezifisch, nicht deterministisch über verschiedene Maschinen hinweg und im Fall von DRAM-Bitflips irreversibel. Nur auf Hardware verwenden, die du besitzt und kontrollierst. Der Betrieb gegen gemeinsam genutzte oder Cloud-Infrastruktur stellt in den meisten Rechtsordnungen unbefugten Zugriff dar.
PICARD kann Chunks jetzt in DRAM-Bitzuständen und CPU-Cache-Residenz speichern – vollständig außerhalb der Sicht des Betriebssystems.
| Adapter | Was er tut |
|---|---|
rowhammer | Schreibt Bits, indem benachbarte DRAM-Zeilen gehämmert werden, bis Ladungsleckage Zielbits umkippt. Liest durch direktes Untersuchen der Opferzeile. Lokal, flüchtig, nicht-ECC DDR3/4. |
halfdouble | Zwei-Hop-Variante. Das Verhältnis von Nah-/Fern-Aggressor umgeht DDR4 Target Row Refresh (TRR). Erreicht Hardware, die klassisches Rowhammer nicht mehr beeinflusst. |
throwhammer | Hämmert den DRAM eines entfernten Hosts über RDMA. Die entfernte CPU ist überhaupt nicht beteiligt – die NIC liest per DMA direkt in den DRAM. Erfordert RDMA-Fabric. |
cpu-cache | Speichert Bits im CPU-L3-SRAM via Flush+Reload. N_REPS=5 Mehrheitsentscheidungs-Kodierung über seitlich isolierte Slots. BER unter 5e-4 auf i7-12700KF. Prozessübergreifend auf demselben Host; VM-übergreifend, wo Seitendeduplizierung aktiv ist. |
Alle vier sind flüchtig (ein Neustart löscht sie). Siehe docs/adapters.md für Hardware-Anforderungen und Bedrohungsmodell.
plaintext
→ AES-256-GCM encrypt (Argon2id key, per-block salt + nonce)
→ PCHK chunk (protocol-sized pieces)
→ scatter across adapters (DNS, Redis, Reddit, S3, MQTT, …)
→ sealed envelope (HKDF sub-key, correlation tag per adapter)
retrieve
← fan out to all adapters
← collect, verify, assemble
← decrypt
Jeder Block wird unabhängig mit seinem eigenen zufälligen Salt und Nonce verschlüsselt. Chunks werden im Round-Robin-Verfahren oder über RAID-Profile verteilt. Kein Adapter sieht Klartext; kein Adapter sieht genug Chiffretext, um irgendetwas zu rekonstruieren.
Der lokale Index (eine AES-256-GCM-verschlüsselte SQLite-Datenbank) ordnet Pfade Chunk-Positionen zu. Verliere die Passphrase, verliere die Daten.
Es war ein kühler Berliner Morgen. Von meiner Terrasse aus starrte ich auf eine schlichte Putzwand, die von rotem Backstein gekrönt wurde. Ein Flügelschlag erregte meine Aufmerksamkeit, ein kleiner Vogel bog in ein Abflussloch nahe der Dachkante ein und verschwand. Ein weiterer Kopf erschien aus einem anderen Loch und zwitscherte. Fünf Abflusslöcher, fünf Nester. Die Regenrinnen sollten Wasser ableiten, nicht Familien beherbergen, doch die Vögel hatten Schutz, Deckung und leichten Zugang gefunden. Ich hatte es nie bemerkt, weil ich mir nie die Mühe gemacht hatte, hinzusehen.
Unsere digitale Infrastruktur trägt mehr, als sie zu speichern entworfen wurde. DNS-TXT-Records akzeptieren beliebigen Text innerhalb der Spezifikation. MQTT-Retained-Messages speichern Daten dauerhaft auf dem Broker. ICMP-Echo-Pakete tragen ein Payload-Feld. Social-Media-APIs akzeptieren freien strukturierten Text. Jedes dieser Protokolle definiert Felder, die für Metadaten, Discovery oder Diagnose gedacht sind. Diese Felder können Bytes genauso gut tragen wie die von ihren Designern beabsichtigten Anwendungsfälle.
picard web öffnet ein Browser-Dashboard unter http://localhost:8471.
Speicheroberfläche nach Kategorie, Adapter-Zustand und Verschlüsselungsdetails auf einen Blick.
259 Adapter nach Kategorie durchsuchbar, mit erforderlichen Parametern und Ein-Klick-Hinzufügen.
pip install picard-store
export PICARD_PASSPHRASE="your-passphrase" # or picard will prompt
picard init # create picard.toml
# edit picard.toml to add your adapters, then:
picard put myfile.txt --as /docs/myfile.txt
picard get /docs/myfile.txt -o recovered.txt
picard ls
picard tree /
Aus Quelle:
git clone https://github.com/neitzert/picard
cd picard
pip install -e ".[dev]"
python -m pytest --tb=short -q
# picard.toml
[general]
block_size = 65536
[[adapters]]
name = "dns-primary"
type = "dns"
enabled = true
params = { nameserver = "10.10.10.10", domain = "chunks.example.com" }
[[adapters]]
name = "s3-backup"
type = "s3"
enabled = true
tor_proxy = true # route through Tor SOCKS5
params = { bucket = "picard-chunks", prefix = "data/" }
[[adapters]]
name = "reddit-stash"
type = "reddit"
enabled = true
browser_mode = "headed" # api | headless | headed
params = { subreddit = "u_myuser" }
[[raid]]
level = "raid5"
adapters = ["dns-primary", "s3-backup", "filesystem"]
[scatter.paranoid]
raid_level = "raid10"
min_adapters = 4
Scatter-Profile: quiet, resilient, speed, paranoid
| Befehl | Beschreibung |
|---|---|
picard put <file> --as <path> | Eine Datei speichern |
picard get <path> -o <file> | Eine Datei abrufen |
picard ls [path] | Dateien auflisten |
picard rm <path> | Löschen |
picard cp / mv | Kopieren / Umbenennen |
picard tree / | Verzeichnisbaum |
picard verify <path> | Chunk-Integritätsprüfung |