DataMatrix-Code auf den Briefmarken der Deutschen Post AG

aus Wikipedia, der freien Enzyklopädie

Ein DataMatrix-Code wird auf den Briefmarken der Deutschen Post AG seit 2021 aufgebracht.

Er dient der Entwertung, soll für eine erhöhte Fälschungssicherheit sorgen und vermittelt über eine von der Deutschen Post angebotene App auch Informationen zum Sendungsverlauf und zur verwendeten Briefmarke.

Entwertung

Der Matrixcode löst in der Funktion der Entwertung den Poststempel ab. Nachdem eine Briefmarke zum Verkauf freigegeben ist, wird sein Code in eine Positivliste aufgenommen. Durchläuft eine Sendung mit der Marke ein Briefzentrum, wird der Code dort abgelesen und wieder gelöscht. Der Poststempel dient nur noch der Information.

Format und Platzierung

Das Symbol genannte Codebild hat das Format 16×48 Pixel (Höhe × Breite gemãß dem Standard ISO/IEC 16022:2006) und ist mit seinem Oberrand zur rechten Seite der Briefmarke orientiert. Sein nutzbarer Inhalt beträgt 14×44 = 616 Pixel, in denen 77 achtstellige Binärzahlen untergebracht sind. Dabei steht ein schwarzes Pixel für die Ziffer 1 und ein weißes Pixel für die Ziffer 0. Die optisch in zwei Hälften geteilte Datenfläche hängt inhaltlich zusammen.

Der Aufbau des Symbols

Die 77 Symbolzeichen im von der Deutschen Post AG auf den Briefmarken verwendeten DataMatrix-Code

Die 77 Binärzahlen, die als Codewörter (engl. codeword) bezeichnet werden, sind in charakteristischer Weise nach dem Standard ISO/IEC 16022:2006 in sogenannten Symbolzeichen (engl. symbol character) angeordnet. Das Grundmuster eines Symbolzeichens ist ein 3×3-Pixel-Quadrat, dem die rechte obere Ecke fehlt. Wegen seiner Ähnlichkeit mit dem Aussehen des US-amerikanischen Bundesstaates wird es auch als Utah-förmig bezeichnet. Die darin enthaltene Binärzahl wird zeilenweise von links oben nach rechts unten gelesen. Bei zwei benachbarten Symbolzeichen fasst die linke untere Ecke des einen in die ausgesparte Ecke des anderen. In den Randbereichen liegende Symbolzeichen erhält man durch das Übereinander- oder Nebeneinanderlegen der Datenbereiche zweier Symbole. Das oben angelegte muss um zwei Pixel nach links und das links angelegte um vier Pixel nach oben verschoben werden. Standardmäßig befindet sich das zweite Symbolzeichen in der linken oberen Ecke des Symbols, das erste Symbolzeichen (mit Anlegen) diagonal links darunter und das dritte Symbolzeichen (mit Anlegen) diagonal rechts darüber. Die Diagonalen benachbarter Symbolzeichen verlaufen abwechselnd nach rechts oben und links unten. Anders gebildet werden muss das achte Symbolzeichen, das sich in zwei Bereichen in der linken unteren und rechten oberen Ecke befindet und dessen darin enthaltene Zahl nacheinander erst links von oben nach unten und dann rechts von oben links nach rechts unten in der üblichen Leserichtung zusammengesetzt ist.

Von den 77 Binärzahlen sind die ersten 49 als Informationsträger nutzbar, während die Zahlen in den Symbolzeichen 50 bis 77 der Fehlerkorrektur nach dem Verfahren von Reed und Solomon (s. u.) dienen. Zwei der ersten 49 Zahlen werden hier zum Umschalten vom bei der Kodierung standardmäßig verwendeten Ascii-Modus in den Basis-256-Modus (s. u.) verbraucht, sodass für die Informationsübermittlung 47 achtstellige Binärzahlen zur Verfügung stehen. Diese Anzahl hat auch der von der Deutschen Post erstellte Quellcode. Darin werden die Binärzahlen zur besseren Lesbarkeit als zweistellige Hexadezimalzahlen mit den 16 „Ziffern“ 0 bis 9 und A bis F (oder a bis f) dargestellt, was wegen 2⁴ = 16 möglich ist (z. B. entspricht der Binärzahl 10110110 die Hexadezimalzahl B6). Diese Zahlen können einzeln oder zu mehreren zusammengefasst eine Information tragen. Für solche Zahlengruppen wird bei der Deutschen Post der Begriff Feld verwendet.[1]

Der verwendeten Druckmaschine wird der Quellcode eingegeben, die in einer Recheneinheit daraus den Matrixcode berechnet und diesen dem schon fertigen Markenmotiv hinzudruckt.[2] Bei der Berechnung kommen im Wesentlichen zwei Varianten vor. Entweder erfolgt der Aufruf zum Umschalten in den Basis-256-Modus mit anschließender Längenangabe gleich am Anfang (Variante 1) oder erst später, meist in einem der Symbolzeichen 7 bis 10 (Variante 2). Die erste Variante wird in der Bundesdruckerei angewendet, während die zweite Variante bei von Bagel Security Print gedruckten Briefmarken anzutreffen ist. Bei den Briefmarken, die in den Druckereien Giesecke+Devrient sowie Koninklijke Joh. Enschedé in Haarlem hergestellt werden, kommt beides vor. Bei Anwendung des „3x3y-Verfahrens“ (s. u.) können auch in der Bundesdruckerei hergestellte Marke in der zweiten Variante vorliegen. Die beiden Varianten lassen sich bei normal betrachteter Briefmarke leicht durch einen Blick auf die rechte obere Ecke des Symbols unterscheiden, wenn das Symbol hochkant liegt. Bei der ersten Variante sieht man dort einen charakteristischen waagerechten schwarzen Balken (zweite Zeile, drittes und viertes Pixel von rechts) und bei der zweiten Variante einen senkrechten schwarzen Balken (vierte Spalte von rechts, zweites und drittes Pixel von oben).

Die Felder, deren Bedeutung und Lage im Symbol

Anmerkung: Bei der zweiten Variante gibt es bei einigen Ausgaben teilweise Abweichungen von den Angaben in der folgenden Tabelle, die von der Anwendung des „3x3y-Verfahrens“ (s. u.) herrühren.

Laufende Nummer des Feldes Laufende Nummern der Quellcodewörter Informationsgehalt, Art der Kodierung, Lage im Symbol
1 1 bis 3 Die Kennung DEA. DE ist das Länderkürzel für Deutschland, A steht für die Deutsche Post AG. Die Buchstaben liegen im Quellcode als Ascii-Werte vor. Sie werden einzeln kodiert, in der ersten Variante im Basis-256-Modus, in der zweiten Variante im Ascii-Modus. In der ersten Variante sind dies im Symbol das 3. bis 5. Codewort, in der zweiten Variante das 1. bis 3. Codewort.
2 4 Die Kennung 5 für die Frankierungsart „Postwertzeichen“. Sie liegt im Quellcode als Ascii-Wert vor. In der ersten Variante wird sie im Basis-256-Modus, in der zweiten Variante im Ascii-Modus kodiert. In der ersten Variante ist dies im Symbol das 6. Codewort, in der zweiten Variante das 4. Codewort.
3 5 bis 9 Die laufende Nummer der Briefmarke innerhalb einer Ausgabe. Sie wird im Quellcode in eine zehnstellige Hexadezimalzahl umgewandelt, deren Stellen paarweise kodiert werden, in der ersten Variante im Basis-256-Modus, in der zweiten Variante im Ascii-Modus oder dort gemischt nacheinander im Ascii- und im Basis-256-Modus. Bei den bei Bagel gedruckten Briefmarken wird umgeschaltet, wenn ein Stellenpaar des Quellcodes in der führenden Stelle mindestens die hexadezimale Ziffer 8 hat. Es wird spätestens in den Symbolzeichen 10 und 11 umgeschaltet, da das folgende Quellcodewort in der führenden Stelle die hexadezimale Ziffer A hat. Bei den bei Giesecke+Devrient und Enschedé in dieser Variante gedruckten Marken wird (soweit bekannt) in den Symbolzeichen 8 und 9 umgeschaltet. In der ersten Variante sind dies im Symbol das 7. bis 11. Codewort, in der zweiten Variante fünf Codewörter vom 5. bis 11. Codewort, je nachdem, wo in den Basis-256-Modus umgeschaltet wird.
Die Hexadezimalzahl bildet, bei Weglassung der führenden Stelle 0, in der bei der Post-App angezeigten Identifikationsnummer der Briefmarke die Stellen 11 bis 19. (Die dortige Stelle 20 ist eine Prüfziffer, die im Code nicht enthalten ist.)
4 10 bis 14 Die sog. Nummernkreiskennung der Briefmarkenausgabe. Sie liegt im Quellcode als zehnstellige Hexadezimalzahl vor, deren Stellen paarweise im Basis-256-Modus kodiert werden. Im Symbol sind dies das 12. bis 16. Codewort.
Diese Hexadezimalzahl bildet in der bei der Post-App angezeigten Identifikationsnummer der Briefmarke die Stellen 1 bis 10.
5 15 Nummer des abgebildeten Motivs. Sie wird jahrgangsweise vergeben und liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 17. Codewort bildet.
6 16 Kennung der Druckerei. Sie liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 18. Codewort bildet.
1 = Bundesdruckerei
2 = Bagel
3 = Giesecke+Devrient
4 = Enschedé
7 17 Kennung der Art und Form der Briefmarke. Sie liegt im Quellcode als Zahl vor, die im Basis-256-Modus kodiert wird und im Symbol das 19. Codewort bildet.
1 = Dauermarke (DM), nassklebend (nk), aus 10er-Bogen[3]
2 = DM, nk, aus Rolle
3 = Sondermarke (SM), nk, aus 10er-Bogen
4 = SM, selbstklebend (sk), aus Markenset
6 = SM, sk, aus Rolle (Markenbox)
7 = Zuschlagsmarke (ZM), nk, aus 10er-Bogen
8 = ZM, sk, aus Markenset
9 = ZM, sk, aus Rolle (Markenbox)
10 = DM, sk, aus Markenset
11 = DM, sk, aus Rolle (Markenbox)
12 = DM, sk, aus Maxirolle
25 = ZM, nk, aus Zusammendruck (auch Markenset)
8 18 Im Quellcode liegt hier bisher stets die (dezimale) Zahl 37 vor. Deren Bedeutung ist unbekannt.[4] Sie wird im Basis-256-Modus kodiert und bildet im Symbol das 20. Codewort.
9 19 bis 34 Ein sogenannter Cryptostring. Dieser ist innerhalb einer Briefmarkenausgabe gleich.[5] Er dient offenbar der Erzeugung eines sicheren Hashwertes, der anschließend folgt. Der Cryptostring wird im Basis-256-Modus kodiert und bildet im Symbol das 21. bis 36. Codewort.
10 35 bis 38 Ein sogenannter Hashwert (digitale Signatur). Da bei den bekannten Verfahren (z. B. SHA) der berechnete Hashwert eine größere Länge hat, wird hier offenbar nur ein Ausschnitt angezeigt. Der Hashwert wird im Basis-256-Modus kodiert und bildet im Symbol das 37. bis 40. Codewort.
11 39 bis 40 Das Ausgabedatum der Briefmarke im Format TTTJJ (Tag des Jahres und die beiden letzten Stellen der Jahreszahl). Dieses ist im Quellcode als fünfstellige Dezimalzahl in eine vierstellige Hexadezimalzahl umgerechnet, deren Stellen paarweise im Basis-256-Modus kodiert werden. Im Symbol sind dies das 41. und 42. Codewort.
12 41 bis 42 Der Nennwert der Briefmarke in Eurocent. Dieser ist im Quellcode in eine vierstellige Hexadezimalzahl umgerechnet, deren Stellen paarweise im Basis-256-Modus kodiert werden. Im Symbol sind dies das 43. und 44. Codewort.
13 43 bis 47 Kein eigentliches Feld ohne Information. Es wird jeweils die Zahl 0 im Basis-256-Modus kodiert. Im Symbol sind dies das 45. bis 49. Codewort.
- - Die Zeichen 50 bis 77 des Symbols beinhalten die Codewörter der Fehlerkorrektur nach dem Reed-Solomon-Verfahren.

Erläuterungen zu den Verfahren

Basis-256-Modus

Neben dem beim DataMatrix-Code standardmäßig verwendeten Ascii-Modus, bei dem zur Vermeidung der Null der Matrixcodewert bei (dezimalen) Werten bis 128 gegenüber dem Quellcodewert um 1 höher ist, wird hier weitgehend der für die Kodierung von Zahlen und Nummern besonders geeignete Basis-256-Modus verwendet. Das Umschalten aus dem Ascii-Modus geschieht durch die Binärzahl 11100111 (dezimal 231). Im folgenden Symbolzeichen ist dann noch eine Längenangabe erforderlich, die schon im Basis-256-Modus kodiert ist. Die Kodierung der Null bedeutet hier, dass alles weitere in diesem Modus kodiert ist.

Im Basis-256-Modus wird zur Vermeidung von eventuell gehäuft auftretenden Nullen jedem Symbolzeichen ein sogenannter R-Wert – eine sog. Pseudozufallszahl (engl. pseudo random number) – zugeordnet. Dieser wird (dezimal) wie folgt berechnet: Man multipliziert die Nummer des Symbolzeichens (NrZ) mit 149, teilt das Ergebnis durch 255, zieht davon den ganzzahligen Anteil ab, multipliziert den Rest wiederum mit 255 und addiert dazu noch die Zahl 1 (). Der Matrixcodewert ist die Summe vom Quellcodewert mit dem R-Wert, von der, falls sie größer oder gleich 256 ist, noch die Zahl 256 abgezogen werden muss. Umgekehrt ist der Quellcodewert die Differenz von Matrixcodewert und R-Wert, zu der, falls sie negativ ist, noch die Zahl 256 hinzugezählt werden muss.

Die R-Werte für die Symbolzeichen 2 bis 49
Nummer
des
Zeichens
R-Wert Nummer
des
Zeichens
R-Wert Nummer
des
Zeichens
R-Wert Nummer
des
Zeichens
R-Wert
2 44 14 47 26 50 38 53
3 193 15 196 27 199 39 202
4 87 16 90 28 93 40 96
5 236 17 239 29 242 41 245
6 130 18 133 30 136 42 139
7 24 19 27 31 30 43 33
8 173 20 176 32 179 44 182
9 67 21 70 33 73 45 76
10 216 22 219 34 222 46 225
11 110 23 113 35 116 47 119
12 4 24 7 36 10 48 13
13 153 25 156 37 159 49 162

3x3y-Verfahren

Bei diesem im Ascii-Modus anwendbaren Verfahren werden zwei aufeinanderfolgende Quellcodewörter der hexadezimalen Form 3x und 3y mit den (hexadezimalen) Ziffern x und y aus dem Bereich von 0 bis 9 in ein einziges Matrixcodewort umgewandelt. Dabei werden die hexadezimalen Zahlen 3x und 3y gemäß der Ascii-Tabelle als Ascii-Zeichen x und y interpretiert, die zusammengefasst als zweistellige Zahl im Ascii-Modus (dezimal) mit {xy} + 130 kodiert werden. Umgekehrt erhält man aus so einem Matrixcodewort (das notwendigerweise mindestens (dezimal) 130 betragen muss) die beiden hexadezimalen Quellcodewörter, indem man davon (dezimal) 130 abzieht, die beiden Stellen des Ergebnisses (eventuell = 0) als einzelne Ascii-Zeichen auffasst und deren hexadezimale Ascii-Werte bestimmt (also jeweils hexadezimal 30 hinzuzählt).

Bekannte Anwendungen dieses Verfahrens:

  • Treten zwei derartige Quellcodewörter innerhalb der laufenden Nummer der Briefmarkenausgabe (Feld 3) auf, so wird (wie bisher bekannt) bei in der Bundesdruckerei und bei Enschedé hergestellten Marken dieses Verfahren angewandt. Unmittelbar danach wird dann in den Basis-256-Modus umgeschaltet. Wegen des so eingesparten Matrixcodewortes rückt alles weitere um ein Symbolzeichen nach vorne und im 49. Symbolzeichen erscheint das Codewort für das Auffüllen (padding), dezimal 129, allerdings nicht dann, wenn die beiden 3x3y-Quellcodewörter das vierte und fünfte der laufenden Nummer sind und das dritte dezimal größer als 127 ist, weil dafür im Ascii-Modus ein zusätzliches Umschaltcodewort nötig ist.
  • Treten zwei derartige Quellcodewörter übergreifend am Ende der Nummernkreiskennung und bei der Motivnummer (Felder 4 und 5) auf, so wird bei den bisher drei dafür in Frage kommenden Ausgaben (95c Ballonpost, 2022, Mi.-Nr. 3705; 370c Leuchtmarke, 2022, Mi.-Nr. 3715; 85c Schloss Neuschwanstein, 2022, Mi.-Nr. 3716) - soweit bekannt - dieses Verfahren dann angewandt, wenn die Quellcodewerte im Bereich der laufenden Nummer (Feld 3) sämtlich (dezimal) kleiner als 128 sind. Dann werden die ersten drei Felder wie in der obigen Tabelle dargestellt im Ascii-Modus kodiert, wobei das dritte Feld im Symbol das 5. bis 9. Codewort bildet. Im 10. Symbolzeichen wird in den erweiterten Ascii-Modus umgeschaltet (Codewort dezimal 235), um das führende Quellcodewort der Nummernkreiskennung (hexadezimal A4) im 11. Symbolzeichen darzustellen. Die Kodierung der weiteren Quellcodewörter der Nummernkreiskennung erfolgt in den Symbolzeichen 12 bis 15, wobei das 15. Codewort die Motivnummer mit einschließt. Bei den beiden Ausgaben 370c Leuchtmarke und 85c Neuschwanstein wird der Basis-256-Modus offenbar stets im 17. Codewort aufgerufen, während dieser Aufruf bei der Ausgabe 95c Ballonpost im 18. Codewort erfolgt. In beiden Fällen wird die Kennung der Druckerei (Feld 6) im Ascii-Modus kodiert und bildet im Symbol das 16. Codewort. Die Kennung der Art und Form der Briefmarke (Feld 7) wird im ersten Fall im Basis-256-Modus kodiert und bildet im Symbol das 19. Codewort, im zweiten Fall wird sie im Ascii-Modus kodiert und bildet im Symbol das 17. Codewort. Ab dem 20. Symbolzeichen wird, soweit bisher bekannt, wie in der Tabelle beschrieben weiter verfahren (ab Feld 8).

Reed-Solomon-Verfahren

Bei der hier verwendeten BCH-Methode des Reed-Solomon-Verfahrens werden die Codewörter C1 bis C49 der Symbolzeichen 1 bis 49 als Koeffizienten eines Polynoms vom Grad 48 im endlichen Zahlenkörper aufgefasst, der als Faktorring zu dem (irreduziblen) Polynom gebildet wird. Das obige Polynom wird noch mit multipliziert, so dass man das Polynom erhält. Dieses wird geteilt durch das sogenannte Generatorpolynom . Der Rest dieser Division ist ein Polynom vom Grad höchstens 27, dessen Koeffizienten (eventuell = 0) in absteigender Reihenfolge die Codewörter für die Fehlerkorrektur in den Symbolzeichen 50 bis 77 bilden.

Zu beachten ist die besondere Arithmetik in dem verwendeten Zahlenkörper. Addition und Subtraktion sind ein und dasselbe, dabei werden die einzelnen Stellen der binär dargestellten Zahlen mittels der Operation XOR verglichen (1 + 1 = 0, 1 + 0 = 1, 0 + 1 = 1, 0 + 0 = 0). Bei der Multiplikation werden die binär dargestellten Zahlen in entsprechende Polynome umgewandelt (z. B. wird 01001101 zu ). Das Produkt der Polynome wird durch das obige Polynom geteilt, der Rest dieser Division, wieder als Binärzahl dargestellt, ist dann das Ergebnis. Eine effektive Multiplikation (und Division) erfolgt mit Hilfe des in einer Wertetabelle zusammengestellten diskreten Logarithmus und dessen Umkehrfunktion.

Zum Auffinden und Verbessern von etwaigen Fehlstellen im Code, z. B. wegen Unleserlichkeit, ist im Standard ISO/IEC 16022:2006 als Möglichkeit der Peterson-Gorenstein-Zierler-Algorithmus beschrieben.

Weblinks

Einzelnachweise und Anmerkungen

  1. Z. B. in der Spezifikation Matrixcode (MXC) zur Pressepost vom 22. Januar 2021 (PDF-Datei)
  2. So wird die Mausbriefmarke gemacht | Die Maus | WDR, insbesondere von 7:29 min bis 8:31 min, auf youtube.com
  3. Abweichend liegt bei der nassklebenden SM Dachs von 2022 (MiNr. 3681) ebenfalls die Kennung 1 vor.
  4. Vielleicht die Kennung des bei der Erzeugung des folgenden Cryptostrings verwendeten Schlüssels.
  5. Es ist allerdings eine Ausnahme bei der Ausgabe Westend Frankfurt von 2021 bekannt, bei der Marken aus dem nassklebenden 10er-Bogen einen anderen Cryptostring haben als Marken aus dem selbstklebenden Markenset.