Ein One-Time-Code (OTC) ist eine zufällige Symbolfolge, mit der einmalig eine vorab vereinbarte Bedeutung mitgeteilt werden kann.
Während Alice und Bob physisch zusammen sind, vereinbaren sie mögliche Nachrichten, die sie sich mitteilen können. Soll er zum Beispiel etwas für sie kaufen, und ihr mitteilen, ob das Produkt erhältlich war (weil sie es sonst selbst versucht, zu kaufen), könnten das die folgenden zwei Nachrichten sein:
Diesen werden nun zufällige Symbolfolgen zugewiesen. Das können Dezimalziffern, alphanumerische Zeichen oder prinzipiell alle anderen Arten von zufälligen Zeichen sein. Wichtig ist, dass diese zufällig und lang genug sind, um nicht mit bedeutender Wahrscheinlichkeit erraten zu werden. Obwohl es unwahrscheinlich ist, muss auch geprüft werden, ob nicht mehrfach die gleiche Symbolfolge zufällig entstanden ist. Die Zuordnung zwischen OTC und Bedeutung muss eindeutig sein.
Bei der Wahl alphanumerischer Zeichen kann dies (abhängig vom konkreten Zufall) wie folgt aussehen:
Bedeutung | One-Time-Code |
---|---|
Produkt war erhältlich | SHQF52 |
Produkt war nicht erhältlich | 26CT1I |
Ist das Produkt nicht erhältlich, sendet Bob also 26CT1I
an Alice. Wenn es erhältlich ist, stattdessen SHQF52
.
OTCs werden zusammen mit ihrer Bedeutung auf wasserlösliches Papier notiert. Nachdem ein OTC gesendet bzw. empfangen wurde, muss der Schein, auf dem dieser steht, vernichtet werden.
Mehrere OTCs können einer Gruppe zugeordnet werden, um auszudrücken, dass nur ein OTC aus der jeweiligen Gruppe gesendet werden darf. Das ist sinnvoll, wenn der Versand mehrerer Codes aus der gleichen Gruppe zwangsläufig widersprüchlich wäre. Die Bezeichnung von Gruppen erfolgt mit Kleinbuchstaben.
Bedeutung | One-Time-Code | Gruppe |
---|---|---|
Ich komme am Donnerstag | RY9ENQ |
a |
Ich komme am Freitag | 5PF8QF |
a |
Ich werde nicht kommen | TISHSW |
a, b |
Wir treffen uns am Hauptbahnhof | TY6PYO |
b |
Wir treffen uns am Flughafen | 0OK5P0 |
b |
Der Code für "Ich komme leider nicht" ist in beiden Gruppen, da keine der beiden Gruppen unter seiner Verwendung noch geeignete weitere Codes enthält.
Sendet Alice einen OTC an Bob (bzw. umgekehrt), muss nach dem Sicherheitsmodell für Telekommunikationsnetze angenommen werden, dass es ihn nicht garantiert erreicht. Da es hier nicht nur um versehentliche Störungen sondern auch absichtliches vorenthalten geht, genügt es nicht, dass Bob den OTC wiederholt bzw. zurücksendet - es könnte ja sein, dass jemand anders sich als Bob ausgibt.
Um dieses Problem zu lösen, sollten Alice und Bob zusätzlich zum OTC selbst einen Bestätigungscode vereinbaren. Bob sendet also einen OTC an Alice, und Alice sendet den Bestätigungscode an Bob zurück. Nun weiß er sicher, dass Alice den OTC erhalten hat. Erhält er nach einer vernünftigen Zeit keine Bestätigung, versucht er erneut, den Code zuzustellen, ggf. über andere Kommunikationsmedien (Telefon, Einschreiben), bei denen das mutwillige Vortäuschen anderer Identität vergleichsweise schwierig ist.
Bedeutung | One-Time-Code | Bestätigung |
---|---|---|
Ich komme am Donnerstag | RY9ENQ |
QCPC |
Ich komme am Freitag | 5PF8QF |
5PQ4 |
Ich werde nicht kommen | TISHSW |
224S |
Wir treffen uns am Hauptbahnhof | TY6PYO |
ZFY2 |
Wir treffen uns am Flughafen | 0OK5P0 |
7FZR |
Solange keine gravierenden Fehler begangen werden, können Dritte, die den Kommunikationsverkehr mitlesen, nicht verstehen, welche Bedeutung den OTCs zugewiesen wurde, denn sie sind zufällig erzeugt und ohne inhaltlichen Bezug zur Bedeutung.
Es kann jedoch schon problematisch sein, wenn der Zeitpunkt und die Anzahl, zu denen OTCs gesendet werden, bekannt ist. Auch hieraus kann geschlussfolgert werden, was sie sich mitteilen. Um dies zu vermeiden, können Codes ohne Bedeutung definiert werden. Diese werden wie die gewöhnlichen Codes erzeugt, und auch zwischen Alice und Bob ausgetauscht.
Dies leistet folgende Beiträge zur die Sicherheit:
Auch Codes ohne Bedeutung müssen einen entsprechenden Bestätigungscode haben, sofern diese grundsätzlich verwendet werden. Schließlich ist das Prinzip hinter ihnen, dass Dritte sie nicht von gewöhnlichen Codes (mit Bedeutung) unterscheiden können.