Signiert. Versiegelt.Signed. Sealed.

Eine E-Mail, unterschrieben und versiegelt. An email, signed and sealed.

Der Siegelring von heute ist ein kryptografischer Schlüssel in der Hand, etwa ein YubiKey. Was damit unterschrieben ist, kann der Empfänger nachrechnen: von wem die E-Mail kommt, und dass unterwegs niemand ein Wort geändert hat. Today's signet ring is a cryptographic key you hold in your hand, a YubiKey for instance. Whatever it signs, the recipient can verify: who the email is from, and that nobody changed a word on the way.

Selbst gehostet · eIDAS-qualifiziert · Prüfbar auch auf Papier Self-hosted · eIDAS-qualified · Verifiable even on paper

Im Einsatz beiIn use at

Netsnek e.U. Universität Wien Barbara Mauz Nadine Hauswirth

Schreiben, antippen, versendetWrite, tap, sent

Geschrieben wird im gewohnten Programm. Emailwerk hält die E-Mail an, bis der Schlüssel sie unterschrieben hat. You write in your usual mail client. Emailwerk holds the email until the key has signed it.

Ablauf einer signierten E-Mail Mail-Programm Mail client Gmail, Outlook, Gmail, Outlook, API Emailwerk hält die E-Mail an, holds the email, friert den Inhalt ein freezes the content Schlüssel antippen Tap the key YubiKey und ID Austria, YubiKey and ID Austria, rund 30 Sekunden about 30 seconds Zugestellt Delivered signiert, versiegelt, signed, sealed, verschlüsselt archiviert archived encrypted Freigabe kann bei einer Approval may rest with zweiten Person liegen a second person

Vier Schichten auf einer E-MailFour layers on one email

Jede beantwortet eine andere Frage. Zusammen decken sie Urheber, Inhalt und Transportweg ab. Each answers a different question. Together they cover author, content and transport.

Die vier Signaturschichten 1 PGP auf dem Schlüssel — wer hat unterschrieben PGP on the key — who signed 2 Prüfcodes im Dokument — lesbar auch auf Papier Printed codes — readable even on paper 3 ID Austria im PDF — der handschriftlichen Unterschrift gleichgestellt ID Austria in the PDF — equivalent to a handwritten signature 4 Siegel über die fertige E-Mail — jede Änderung fliegt auf A seal over the finished email — any change shows

Schicht 3 ist die rechtlich entscheidende. Die anderen drei binden den Inhalt und schützen ihn unterwegs. Layer 3 is the legally decisive one. The other three bind the content and protect it in transit.

Eigenes ErscheinungsbildYour own look Briefkopf, Adressfeld, Signaturblock. Letterhead, address field, signature block.
Anhänge einzeln signiertAttachments signed too Jedes PDF mit eigener Signaturseite. Each PDF gets its own signature page.
Verschlüsseltes ArchivEncrypted archive Der Server kennt nur den öffentlichen Schlüssel. The server only holds the public key.
Anmelden per SignaturSign in by signing Dieselbe Zeremonie ist ein OpenID-Connect-Login: Registrierung mit ID Austria statt Passwort (qes-oidc, Open Source). The same ceremony doubles as an OpenID Connect login: register with ID Austria instead of a password (qes-oidc, open source).

Der Signaturblock: auch ausgedruckt noch prüfbarThe signature block: still verifiable on paper

Eine herkömmliche PDF-Signatur, auch die von ID Austria, lebt in den Bytes der Datei. Auf Papier ist sie weg: man sieht weder, dass unterschrieben wurde, noch was. Emailwerk druckt darum den unterschriebenen Inhalt selbst als Codes auf die Signaturseite. A conventional PDF signature, ID Austria's included, lives in the file's bytes. On paper it is gone: you can see neither that it was signed nor what was signed. So Emailwerk prints the signed content itself onto the signature page, as codes.

Aztec-Kachel, mit der Produktionsbibliothek erzeugt
Aztec ISO/IEC 24778 trägt den Inhalt. Byte-genau, 5 % Fehlerkorrektur, ohne Ruhezone — die Kacheln packen randlos ins Prüfcode-Raster. carries the content. Byte-exact, 5 % error correction, no quiet zone — the tiles pack edge to edge in the code grid.
Zertifikats-QR, mit der Produktionsbibliothek erzeugt
QR ISO/IEC 18004 trägt das Signaturzertifikat (X.509) als Prüflink im URL-Fragment — jede Handykamera öffnet ihn, das Fragment verlässt das Gerät nie. carries the signing certificate (X.509) as a verify link in the URL fragment — any phone camera opens it, and the fragment never leaves the device.
Beide Codes oben sind mit der Produktionsbibliothek erzeugt, mit einem Beispiel-Datensatz statt eines echten Schreibens. Both codes above were generated with the production library, from a sample record rather than a real letter.
Ein Datensatz, viele KachelnOne record, many tiles Der Prüfdatensatz (komprimiertes CBOR, RFC 8949) wird in Teile zu höchstens 500 Byte geschnitten; jeder Teil trägt eine Kopfzeile mit Index und Gesamtzahl und wird eine eigene Aztec-Kachel. Der Prüfer scannt in beliebiger Reihenfolge und setzt zusammen. The record (compressed CBOR, RFC 8949) is cut into parts of at most 500 bytes; each part carries a header with index and total and becomes its own Aztec tile. The verifier scans in any order and reassembles.
KapazitätCapacity Ein gewöhnliches Schreiben ergibt ein bis zwei Kacheln. Ein echtes neunseitiges Steuerformular ergab rund vierzig — läuft das Raster über, wandern weitere Kacheln auf Fortsetzungsseiten. Eine harte Grenze gibt es dadurch nicht. An ordinary letter yields one or two tiles. A real nine-page tax form came to about forty — when the grid overflows, further tiles continue on follow-on pages, so there is no hard limit.
Anhänge, einzeln versiegeltAttachments, sealed one by one Jedes angehakte PDF durchläuft die volle Kette selbst: Signatur über Text und Datei-Prüfsumme, eigener Datensatz, eigene Blockseite, eigene qualifizierte Signatur. Das Schreiben trägt ein Anlagenverzeichnis mit dem SHA-256 jeder Datei — Anhang und Brief sind aneinander gekettet, und die Anhänge werden vor der E-Mail signiert, damit ihr Verzeichnis die fertigen Prüfsummen versiegelt. Every ticked PDF runs the full chain itself: a signature over text and file hash, its own record, its own block page, its own qualified signature. The letter carries an attachment manifest with each file's SHA-256 — attachment and letter are chained together, and attachments are signed before the email so the manifest seals their final hashes.
Aufbau der Prüfcodes Prüfdatensatz Verification record Dokumenttext + Anlagen- document text + attachment Manifest (SHA-256 je Datei), manifest (SHA-256 per file), Signatur, öffentlicher Schlüssel signature, public key komprimiertes CBOR compressed CBOR Aztec-Codes der Datensatz, aufgeteilt the record, split across auf Kacheln neben dem Block tiles beside the block Scannen und offline prüfen Scan and verify offline signature.netsnek.com liest die Codes, signature.netsnek.com reads the codes, rechnet im Browser nach — der Inhalt verifies in the browser — the content verlässt das Handy nie never leaves the phone daneben ein QR mit dem next to it a QR carrying the Signaturzertifikat (X.509) signing certificate (X.509)

Die Codes tragen, was unterschrieben wurde — nicht nur, dass. Ein Scan zeigt den Text, vergleicht die Prüfsummen und verkettet das Zertifikat bis zur A-Trust-Wurzel. Das funktioniert auf dem PDF wie auf dem Ausdruck, ohne dem Prüfserver vertrauen zu müssen. The codes carry what was signed — not merely that. One scan shows the text, compares the hashes and chains the certificate to the A-Trust root. That works on the PDF and on the printout alike, without having to trust the verification server.

Darunter ein vollständiger Mail-MotorA complete mail engine underneath

Auch der Alltag ohne Signatur läuft darüber: Bestätigungen, Codes, Benachrichtigungen. The unsigned everyday traffic runs on it too: confirmations, codes, notifications.

Eingänge, Warteschlange, Transporte EINGANG INPUT GraphQL SMTP Vorlagen Templates Warteschlange Queue Wiederholung, Verlauf retry, delivery log TRANSPORT Gmail Eigener MTA Own MTA SMTP DKIM signiert für die eigene Domain signs for your own domain

Selbst gehostet und mandantenfähig. Nachrichten und Schlüssel bleiben auf der eigenen Infrastruktur. Self-hosted and multi-tenant. Messages and keys stay on your own infrastructure.

Open Source

Bausteine der Signaturkette, offen auf GitHub. Building blocks of the signature chain, open on GitHub.

qes-oidc ID-Austria-QES-Login und ein minimaler OpenID-Connect-Provider: die Signatur-Zeremonie als Anmeldung. ID Austria QES login and a minimal OpenID Connect provider: the signing ceremony as authentication.
age-plugin-piv25519 age-Verschlüsselung an einen YubiKey-PIV-Schlüssel gebunden — derselbe Schlüssel in der Hand, fürs Archiv. age encryption bound to a YubiKey PIV key — the same key in your hand, used for the archive.