Jede Funktion, präzise erklärt
Ein QR-Code ist normalerweise öffentlich, sobald er existiert. QR Agent ändert das: Jeder Code trägt einen verschlüsselten Inhalt, den nur ein autorisierter Betrachter öffnen kann. So funktioniert jede Ebene dieser Garantie.
// 01 · VERSCHLÜSSELUNG
Envelope-Verschlüsselung mit Schlüsseln pro Mandant
Jeder QR-Inhalt wird mit AES-256-GCM verschlüsselt. Die Verschlüsselung folgt einer Drei-Schlüssel-Hierarchie: Ein KMS-Masterschlüssel umschließt einen mandantenbezogenen Data-Encryption-Key (DEK), der wiederum jeden Inhalt versiegelt. Die Kompromittierung eines einzelnen Schlüssels gefährdet keinen anderen Mandanten.
Jeder Chiffretext bindet die QR-Datensatz-ID und die Mandanten-ID als zusätzliche authentifizierte GCM-Daten (AAD) ein. Ein Chiffretext, der in einen anderen Datensatz oder einen anderen Mandanten verschoben wird, lässt sich nicht entschlüsseln — das Authentifizierungs-Tag schlägt fehl. Es gibt keine Möglichkeit, einen verschlüsselten Inhalt zu verlagern.
Entschlüsselte DEKs werden ausschließlich im Prozessspeicher gehalten und nie auf die Festplatte, in den Cache oder in die Datenbank geschrieben. Ein vollständiger Datenbank- oder Redis-Dump liefert nur umschlossene Schlüssel und Chiffretext — beides ist ohne das KMS nutzlos.
AES-256-GCM pro Inhalt
Branchenübliche authentifizierte Verschlüsselung. Jeder Inhalt erhält eine eindeutige 96-Bit-Nonce. Das Authentifizierungs-Tag erkennt jede Manipulation am Chiffretext.
Dreischichtige Schlüssel-Hierarchie
Der KMS-Masterschlüssel umschließt den Mandanten-DEK; der DEK umschließt den Inhalt. Die Rotation einer Ebene macht nichts darüberliegendes ungültig — die Hierarchie ist für sichere, schrittweise Rotation ausgelegt.
DEK nur im RAM
Der Klartext-DEK liegt nur im Prozessspeicher. Bei einem Cache-Miss holt der Server ihn erneut aus dem KMS. Kein persistenter Speicher hält jemals den Klartext-Schlüssel.
AAD-gebundene Chiffretexte
qr_id und tenant_id sind in die GCM-AAD eingebunden. Ein Chiffretext, der aus einem Datensatz entnommen und in einen anderen eingefügt wird, schlägt bei der Authentifizierung fehl. Datensatzübergreifendes Replay ist strukturell unmöglich.
// 02 · ZUGANGSTORE
Zustandsbehaftete, widerrufbare Zugangstore
Ein QR-Code gibt einem Scanner nichts preis, bis das Zugangstor passiert ist. Fünf Zugangstor-Modi werden unterstützt, und ein Code kann mehr als einen davon gleichzeitig akzeptieren.
Kontrollen für den Link-Lebenszyklus
Ablauf
Jeder Zugriffslink hat eine konfigurierbare TTL (Standard 24 Stunden, maximal 30 Tage). Abgelaufene Links liefern ein geschlossenes Zugangstor, keine 404-Seite.
Maximale Nutzungen
Optional lässt sich die Anzahl der Nutzungen eines Links begrenzen. Einmalig, 5-mal oder unbegrenzt — Ihre Wahl pro Link.
Widerruf
Jeder Link lässt sich sofort aus dem Dashboard oder über die API widerrufen. Die access_links-Zeile wird als widerrufen markiert; alle nachfolgenden Anfragen an diesen Link werden blockiert.
Neuausstellung
Stellen Sie einen Ersatzlink aus, ohne andere aktive Links desselben QR-Codes zu stören. Jeder QR-Code unterstützt bis zu seiner Tarifgrenze gleichzeitig aktive Links.
// 03 · MANDANTEN
Harte Multi-Mandanten-Isolation
Jede mandantenbezogene Tabelle trägt eine tenant_id-Spalte. Row-Level-Security-Richtlinien (RLS) auf PostgreSQL erzwingen, dass Abfragen nur Zeilen zurückgeben können, die dem aktiven Mandanten gehören — selbst wenn die Anwendungslogik eine WHERE-Klausel wegließe, würde die Datenbankschicht dies abfangen.
Die kryptografische Isolationsschicht verdoppelt dies: Jeder Mandant hat einen eigenen DEK. Ein Chiffretext von Mandant A lässt sich mit dem Schlüssel von Mandant B nicht entschlüsseln. Das System verfügt über Smoke-Tests, die diese Invariante bei jedem Build prüfen.
Zwischen Mandanten gibt es auf keiner Ebene gemeinsames Schlüsselmaterial. Selbst wenn ein Angreifer den umschlossenen DEK von Mandant B erlangte, könnte er damit nicht auf die Daten von Mandant A zugreifen.
Row-Level-Security
PostgreSQL-RLS-Richtlinien als Defense-in-Depth. Anwendungsseitige tenant_id-Filter sind primär; RLS ist das Sicherheitsnetz, das Umgehungsversuche abfängt.
Ein DEK pro Mandant
Die Daten jedes Mandanten werden unter dessen eigenem DEK verschlüsselt. Die Kompromittierung des Schlüssels eines Mandanten betrifft keinen anderen. DEKs werden unabhängig vom KMS-Masterschlüssel umschlossen.
Mandantenübergreifende Smoke-Tests
Die Testsuite enthält einen mandantenübergreifenden Isolationstest: unter Mandant A verschlüsseln, unter Mandant B zu entschlüsseln versuchen, Fehlschlag bestätigen. Dieser Test läuft bei jedem CI-Build.
Sitzungsgebundener Mandantenkontext
Der Server löst die tenant_id bei jeder Anfrage aus dem httpOnly-Sitzungscookie auf. Die tenant_id steht niemals in einem clientlesbaren Token oder Abfrageparameter.
// 04 · ZUGRIFFSKONTROLLE
Rollenbasierte Zugriffskontrolle
Vier Rollen regeln, was jedes Teammitglied innerhalb eines Mandanten tun darf. Berechtigungen werden bei jeder Anfrage serverseitig erzwungen; die Oberfläche zeigt, was der Sitzungsnutzer sehen darf, aber das Entfernen von Bedienelementen ist nicht die Sicherheitsgrenze — das ist die API.
Modell der Berechtigungsdurchsetzung
Rollen werden bei jeder Anfrage aus der Server-Sitzung aufgelöst. Ein Nutzer, dessen Rolle herabgestuft oder dessen Sitzung widerrufen wurde, wird beim nächsten API-Aufruf blockiert, nicht erst bei der nächsten Anmeldung. Es gibt kein clientseitiges Berechtigungstoken, das einen serverseitigen Widerruf überdauern könnte.
// 05 · ANALYSEN
Scan-Analysen, ohne Ihre Betrachter zu verfolgen
Jedes Scan-Ereignis wird mit Zeitpunkt, Ergebnis, verwendetem Zugangstor-Typ und grundlegenden Gerätesignalen aufgezeichnet. IP-Adressen werden mit einem HMAC und einem geheimen Schlüssel gehasht — nicht mit reinem SHA-256, das über den IPv4-Adressraum umkehrbar ist. Der Hash erlaubt das Zählen eindeutiger IPs, ohne eine umkehrbare Adresse zu speichern.
Erweiterte Analysen (Pro und höher) ergänzen geografische Region, Geräteklasse und Verweisquellen-Aufschlüsselungen. Diese werden zum Scan-Zeitpunkt aus der Anfrage abgeleitet und als kategorielle Labels gespeichert, nicht als Rohwerte.
Scan-Zahl und Trend
Scan-Zahlen pro QR-Code mit Zeitreihendaten. Nutzungsmuster erkennen, die Auswirkung des Link-Ablaufs verfolgen und Scan-Limits für einzelne QR-Codes setzen.
Ergebnisverfolgung der Zugangstore
Jeder Scan zeichnet auf, ob das Zugangstor bestanden oder fehlgeschlagen ist und welcher Zugangstor-Typ verwendet wurde. Fehlkonfigurierte Links oder abgelaufenen Zugriff erkennen, bevor Ihre Nutzer es bemerken.
HMAC-gehashte IPs
IP-Adressen der Betrachter werden als HMAC-Digests gespeichert, die an Ihren Mandanten gebunden sind. Eindeutige Besucher zählen, ohne umkehrbare PII in Ihrem Datenspeicher zu halten.
Erweiterte Aufschlüsselung (Pro+)
Geografische Region, Geräteklasse (mobil/Desktop/Tablet) und Verweisquelle. Gespeichert als kategorielle Labels, die zum Scan-Zeitpunkt abgeleitet werden — keine rohen User-Agent-Zeichenketten werden aufbewahrt.
// 06 · AUDIT
Unveränderliches Audit-Protokoll
Jede datenverändernde Aktion — QR-Erstellung, Inhaltsaktualisierung, Link-Ausstellung, Widerruf, Mitgliedseinladung, Rollenänderung — schreibt ein ausschließlich anfügendes Audit-Ereignis mit Akteur, Zeitstempel und betroffener Ressource. Audit-Ereignisse werden nie geändert oder gelöscht.
// 07 · VERPACKUNG IM HANDEL
GS1 Digital Link, bereit für Sunrise 2027
Ab 2027 erwarten Händler, dass der Barcode auf einer Verpackung ein QR-Code mit einem GS1 Digital Link ist, sodass ein Symbol Kasse, Käufer und Aufsicht bedient. Ein Product-Code (GS1) kodiert https://your-domain/01/<GTIN>, wobei Chargen- und Seriennummern angehängt werden, wenn Sie sie setzen, und löst über denselben Pfad auf wie jeder andere Code hier.
Ein Handelscode ist absichtlich öffentlich — ein Käufer, der eine Flasche im Laden hält, kann nicht zur Anmeldung aufgefordert werden. Verschlüsselung im Ruhezustand, Mandanten-Isolation und die Zielprüfungen bleiben unverändert; nur das Zugangstor entfällt, und die URI verrät nichts, was nicht bereits in Klarschrift auf derselben Packung steht.
// 08 · MASCHINENSCHNITTSTELLE
Ein Agent kann Ihre Codes ausführen, ohne sie je zu lesen
Dieselbe Autorisierung, die das Dashboard schützt, schützt jeden maschinellen Aufrufer. Ein MCP-Toolaufruf erreicht keine zweite Implementierung — er läuft über die veröffentlichte API, sodass Scopes, Mandanten-Isolation, Ratenlimits, Idempotenz und die Audit-Spur vererbt statt neu implementiert werden.
Das Lesen eines Inhalts ist eine eigene Berechtigung und liegt bewusst außerhalb des älteren Lese-/Schreib-Paars, sodass ein Schlüssel, der Ihre Codes auflisten kann, sie nicht öffnen kann, bis Sie es erlauben. Gewähren Sie sie, und jedes Lesen schreibt eine Audit-Zeile, die die Berechtigung benennt; Lesevorgänge sind pro Berechtigung und Stunde begrenzt, und ein Inhalt, der in den Kontext eines Modells gelangt ist, hat unsere Kontrolle verlassen.
// 09 · VERTEILUNG
Codes zu den Menschen bringen — und deren Codes zu Ihnen
Drei Fähigkeiten liegen am Rand des Produkts. Jede wird hier mit dem Teil beschrieben, der läuft, und dem Teil, der es nicht tut — denn eine Funktionsseite, die eine Decke verschweigt, ist der Weg, auf dem ein Käufer sie nach der Anmeldung entdeckt.
Apple- und Google-Wallet-Pässe
Eine Kontaktkarte, ein Ereignis oder eine gehostete Seite kann als Wallet-Pass statt als gedruckter Code ausgegeben werden, sodass sie in dem Telefon liegt, das sie vorzeigen wird. Der Pass trägt die Zugangstor-URL und nie den Inhalt — ein Wallet ist ein Ort, an dem ein Screenshot passiert, und der Inhalt bleibt hinter dem Zugangstor, wo er widerrufbar ist.
Wo es heute endet
Beide Codepfade sind gebaut und getestet, einschließlich der Signaturprüfung gegen ein Wegwerf-Ausstellerzertifikat. Echte Pässe benötigen ein Apple-Pass-Type-ID-Zertifikat und einen Google-Wallet-Aussteller-Schlüssel, die noch nicht eingerichtet sind: Bis dahin antworten die Pass-Endpunkte mit einer klaren Ablehnung statt mit einer unsignierten Datei, die kein Gerät installieren würde.
Ihre eigene Domain auf dem gedruckten Code
Ein Workspace kann einen Hostnamen beanspruchen, ihn per DNS-TXT-Eintrag nachweisen und seine Codes dort auflösen lassen. Die Mandantenzuordnung wird an der Stelle erzwungen, an der der Hostname abgeglichen wird, nicht nachträglich darübergelegt, sodass ein von einem Workspace beanspruchter Code nicht über die Domain eines anderen aufgelöst werden kann.
Wo es heute endet
Beanspruchung, Nachweis und Auflösung sind live und durch mandantenübergreifende Ablehnungstests abgedeckt. Die Zertifikatsausstellung für einen Kunden-Hostnamen wartet auf Produktionsinfrastruktur, daher läuft eine beanspruchte Domain heute über unverschlüsseltes HTTP. Das ist noch nichts zum Aufdrucken auf Verpackungen.
Codes aus einem anderen Werkzeug übernehmen
Ein CSV-Import bildet Ihre Spalten explizit auf unsere ab — ohne Raten bei den Kopfzeilen — und erzeugt einen Kontinuitätsbericht, der pro Code angibt, ob das gedruckte Symbol weiter funktioniert oder einen Nachdruck benötigt, gruppiert nach dem Hostnamen, mit dem es gedruckt wurde, und exportierbar für die Druckerei.
Wo es heute endet
Die Zuordnung und der Kontinuitätsbericht funktionieren mit jedem Export. Fertige Voreinstellungen für bestimmte Wettbewerber sind nicht gebaut: Eine aus Dokumentation statt aus einem echten Export geratene Voreinstellung importiert stillschweigend falsch, was schlimmer ist, als die Spalten einmal von Hand zuzuordnen.
// ZUSAMMENFASSUNG
Funktionsübersicht
| Funktion | Was sie tut | Verfügbar ab |
|---|---|---|
| Envelope-Verschlüsselung | AES-256-GCM pro Inhalt, mandantenbezogener DEK, KMS-Masterschlüssel | Alle Tarife |
| Auth-Zugangstor | Sitzungsbasierter Zugriff für angemeldete, autorisierte Nutzer | Alle Tarife |
| Magic-Link-Zugangstor | Zustandsbehaftete, ablaufende, widerrufbare undurchsichtige Zugriffslinks | Alle Tarife |
| PIN-Zugangstor | Passphrase pro QR-Code, kombinierbar mit dem Link-Zugangstor | Alle Tarife |
| Scan-Analysen | Scan-Zahl, Trend, Zugangstor-Ergebnis pro QR-Code | Alle Tarife |
| Erweiterte Analysen | Geografische Region, Geräteklasse, Verweisquelle | Pro |
| Team-Sitze | Teammitglieder einladen, Rollen zuweisen | Pro (5 Plätze) |
| API-Zugriff | Headless-Erstellung und -Verwaltung von QR-Codes über eine REST-API | Pro |
| Individuelles Branding | Den Standard-QR-Rahmen durch Ihre Marke ersetzen | Pro |
| Row-Level-Security | PostgreSQL-RLS als Defense-in-Depth zur kryptografischen Isolation | Alle Tarife |
| Audit-Protokoll | Ausschließlich anfügende Ereignisspur für alle Datenänderungen | Alle Tarife |
| Schlüsselrotation auf Abruf | DEK-Rotation außerhalb des geplanten Rhythmus auslösen | Business |
| GS1 Digital Link | Handelscodes, die per GTIN auflösen, mit Chargen- und Seriennummern-Routing | Alle Tarife |
Bereit, einen privaten QR-Code zu versenden?
Der Free-Tarif umfasst vollständige Envelope-Verschlüsselung, alle 5 Zugangstore und Scan-Analysen — ohne Ablauf und ohne Karte.