Bei der Serialisierung auf Nummer sicher gehen

Sicherheit der Serialcodes

Bei der Einführung einer Serialisierung stellt sich die Frage, wie die Seriennummern generiert werden sollen. Diese vermeintlich triviale Frage gestaltet sich bei genauerer Betrachtung als äußerst komplex.

Serialcodes gelten dann als sicher, wenn sie von Fälschern nicht einfach imitiert werden können und wenn diese nicht in Besitz von Listen über gültige Serialcodes gelangen können. D.h. es darf keine Systematik ersichtlich sein, die beispielsweise durch Raten erkannt werden kann. Wenn nach 000123 die 000124 folgt, kann schnell erraten werden, dass die nächste folgende Seriennummer 000125 lauten müsste.

Darüber hinaus muss sichergestellt werden, dass die Seriennummern nicht entwendet werden können. So scheiden alle Prozessschritte, wie der USB-Stick, der in der Produktion getragen wird, die unverschlüsselte E-Mail oder der Daten-Server, dessen Zugang nicht ausreichend gesichert ist, aus.

Anhand dieser Kriterien lassen sich nun taugliche Verfahren zur Erzeugung von Seriennummern auf ihre Schutzwirkung hin überprüfen. Dabei werden zunächst deterministische und nicht-deterministische Verfahren voneinander abgegrenzt:

Nicht-deterministische Verfahren

Alle Verfahren, die in keiner Weise auf ein geordnetes System zurückzuführen sind, werden als nicht-deterministisch bezeichnet. Darunter zählen z. B. das Glückspiel, das Würfeln oder das Karten ziehen.

Randomisierung - zufällige Werte

Der Zufall ist per Definition nicht-deterministisch, sonst wäre es eben nicht zufällig. Eine Zufallszahl ist immer nur so unvorhersehbar, wie groß die Menge an möglichen Kombinationen ist. Mit den Spezifikationen (alphanumerisch und 20 Stellen) lässt sich jedenfalls theoretisch eine große Menge an Zufallswerten erzeugen.

Die erste Schwierigkeit bei randomisierten Verfahren liegt allerdings an anderer Stelle: beim Daten-Handling zufälliger Werte. Es ist notwendig, dass der zufällige Wert mindestens über den Lebenszeitraum des Produktes im Datenbanksystem einmalig bleibt. Beim Erzeugen von zufälligen Seriennummern muss also immer auch gleichzeitig geprüft werden, ob der Zufall nicht bereits in der Vergangenheit dieselbe Wert-Kombination hervorgebracht hat. Es liegt in der Natur der Sache, dass dieser Vorgang immer rechenintensiver wird, je mehr Zufallszahlen bereits existieren.

Zum anderen: zufällige Werte erlauben keinen Rückschluss auf die Ausgangsdaten (also auf die fortlaufende Serie). Ohne Zugriff auf die Verwaltungssoftware für Seriennummern ist es folglich unmöglich, einen zufälligen Wert einem bestimmten Produkt beizuordnen. Im Falle eines Produktrückrufes müssten also alle Zufallswerte aus großen Listen herausgesucht und mit den Zahlenwerten abgeglichen werden.

Deterministische Verfahren

Einfache Nummerierung: fortlaufende Zahlen

Das wohl einfachste algorithmische Verfahren: Ein bestimmter Nummernkreis wird definiert und die Werte fortlaufend inkrementiert. Bei jeder neuen Verpackungseinheit wird der Zähler nach einem bestimmten System erhöht. Problematisch dabei: wer nur zwei Zahlen kennt, kann mit hoher Wahrscheinlichkeit die dritte Zahl vorhersagen.

Komplexe Nummerierung: algorithmische Verschleierung

Streng genommen war bereits diese einfache, fortlaufende Nummerierung algorithmisch ausgedrückt: z.B. [x+1] wenn der Wert sich fortlaufend um 1 erhöht. Da das jedoch etwas offensichtlich ist, wird gerne zusätzliche Verschleierung angewandt: z. B. indem Buchstaben in Zahlenwerte gewandelt, Zahlenfolgen vertauscht [1, 3, 2, 5, 4, 6, 9] oder Ausgangswerte, wie das Datum mit einberechnet werden. Am Ende erhält man eine Zahlenfolge ("Code"), die auf den ersten Blick sehr zufällig aussieht.

Dieses deterministische Verfahren ist bereits robust. Im Vergleich zu zufälligen Werten bringt es den Vorteil, dass anhand des Algorithmus immer auf den dahinter liegenden Ausgangswert geschlossen werden kann. Zusätzlich kann, wer den Algorithmus kennt, mit Sicherheit die nächsten Zahlen vorher sagen. Dubletten im System lassen sich bei richtiger Anwendung ausschließen.

Allerdings bleiben alle rein algorithmischen Verfahren hinsichtlich der Sicherheit kritisch. Unabhängig, wie kreativ der Algorithmus ist: der Algorithmus alleine ist die Sicherheit. Wird er entschlüsselt oder gerät an die Öffentlichkeit - in falsche Hände, ist der Schutz hinfällig. Da letztlich alles, was auf dem Algorithmus beruht, in gewisser Weise "echt" ist, wäre die Folge reines Chaos und niemand würde unterscheiden können, welche Codes echt und welche gefälscht sind - noch schlimmer, möglicherweise bleibt es jahrelang vollkommen unbemerkt.

Kryptographie: algorithmische Nummerierung mit Verschlüsselung

Kryptographie schließt diese Lücke. Der Schutz besteht nicht mehr im Algorithmus selbst, sondern im kryptographischen Schlüssel. Dieser erst öffnet den Blick in die Daten und zeigt in den scheinbar zufälligen Buchstaben-Zahlen-Kombinationen eine sinnvolle Zahl. Da auf diese Weise Seriennummern nur berechnet und nicht in einer Datenbank gespeichert werden müssen, bleibt das System auch gegen Datendiebe immun. Der Vorteil liegt darin, dass es möglich bleibt, die Codes auch rückwärts abzubilden, also zu entschlüsseln. So kann jederzeit ein eindeutiger Echtheitsnachweis erbracht werden.

Bewertung für die Anwendung in der Serialisierung

Für eine abschließende Bewertung der vorgestellten Methoden bei der Erzeugung von "sicheren" Seriennummern liegt das Hauptaugenmerk auf der Risikobewertung. Zufallszahlen können hinsichtlich der Prozessrisiken kaum ernsthaft in Betracht gezogen werden. Sie wären zur fälschungssicher, aber im Handling komplett impraktikabel. Bei algorithmischen Verfahren ohne Kryptographie bleibt das Risiko der Decodierung.

Bei der Entwicklung von SecIdent wurden genau diese Punkte daher zugrunde gelegt. Einerseits ist es wichtig, eine 1:1-Zuordnung von Codes zu Seriennummern zu gewährleisten. Zum anderen muss das Verschlüsselungsverfahren sicher vor (unbemerkter) Kompromittierung bleiben.

Wir können das gewährleisten, da das SecIdent-System die Codes kryptographisch erzeugt. Bei diesem Verfahren kann der Algorithmus problemlos offengelegt werden, ohne dass der Code anhand dessen in eine Seriennummer zurückgerechnet werden kann.

Es ist die Kombination von hochsicheren Verschlüsselungsmechanismen und ausgefeilter Systemarchitektur, die das SecIdent-System deshalb auch für die Anwendung im Kontext der Pharma Serialisierung empfiehlt.