ORIGINALPROTOKOLL / PORTIERUNG OHNE SERVER

Vom Geheimtext zur Handschrift

Der sichtbare Decktext bestimmt Zeichenklassen und Seitenlayout. Die geheime Nachricht bestimmt die 64 Latentkoordinaten jeder erzeugten Glyphe.

ASCII-Geheimtext8 Bit pro Zeichen, MSB first
→
102→640 TurboEin Block je zehn Glyphen
→
AES-128-CTRKontinuierliche Maske
→
Generator64 Latents + Zeichenklasse
→
24-Bit-BMP28 oder 56 px pro Zeichen

Decktext und Kapazität

A–Z und 0–9 tragen Daten. Leerzeichen bleiben weiße Kacheln, Zeilenumbrüche beginnen neue Zeilen. Der Text wird mit dem benötigten Präfix von ENDOFLETTER auf ein Vielfaches von zehn Glyphen gebracht.

N′ = 10·⌈N/10⌉
B = N′/10
C = ⌊102·B/8⌋ Byte

Ein Block fasst 12 vollständige ASCII-Bytes, zwei Blöcke 25, drei 38 und vier 51. Zeichen können Blockgrenzen überschreiten. Die Bits werden erst zusammenhängend serialisiert und anschließend in 102er-Blöcke geteilt.

Ein kontinuierlicher Maskenstrom

Schlüssel und IV sind wörtlich je 16 ASCII-Bytes. AES-128-CTR erzeugt einen einzigen Keystream für den vollständigen Brief. Er wird weder an einer Glyphen- noch an einer Turboblockgrenze neu gestartet.

|c| = 64·N′ = 640·B Bits
|Keystream| = 80·B Bytes = 5·B AES-Blöcke
c′ = c ⊕ AES-CTR(K, IV, 0640B)

Analyse des gespeicherten Bildes

  1. Die herunterladbare BMP-Datei wird gelesen, nicht ein unquantisiertes Zwischenergebnis.
  2. Bekannte Zeichenpositionen werden zugeschnitten. 56er-Kacheln werden durch exakte ganzzahlige Abtastung auf 28×28 reduziert.
  3. Der passende der 36 Analyzer liefert 64 Softwerte.
  4. AES-Maske rückgängig machen und den 640er-Softwertblock turbo-decodieren.
  5. Alle 102er-Nutzblöcke zusammenfügen und vollständige Bytes anzeigen.
  6. Erst danach mit der Referenz vergleichen; auch die abschließenden 0–6 Nullbits zählen bei Bitfehlern.

Der sichtbare Text ist bekanntes Layout, keine automatisch gelesene OCR-Ausgabe. Die Browserportierung behält diese Voraussetzung der Python-Vorlage bei.