Für Entwickler mit dem Bürgerausweis v2 haben sich fünf Dinge geändert. Die Schlüssel wechselten von RSA zu ECDSA. [...]
Für Vorgänge im Kontaktmodus genügt in der Regel ein Middleware-Update ohne wesentliche Integrationsänderung. Kontaktlos erfordert dagegen neue SDK-Methoden. Alles, was Signaturen prüft oder die kryptografischen SDK-Methoden nutzt, braucht wegen ECDSA Aufmerksamkeit, und genau dort verlieren die meisten Entwickler mit dem Bürgerausweis v2 Zeit.
Der neue Bürgerausweis wird seit Juni 2024 ausgegeben, neu gestaltet nach den Sicherheits- und Formatvorgaben der Verordnung (EU) 2019/1157, die seit dem 2. August 2021 anwendbar war und am 9. Juli 2025 durch die Verordnung (EU) 2025/1208 ersetzt wurde. Alte, noch gültige Karten funktionieren weiter, weshalb Ihr Code dauerhaft beide handhaben muss, statt von einer zur anderen zu migrieren.
Bürgerausweis v2 für Entwickler: was sich gegenüber v1 geändert hat
Warum bricht ECDSA Code, der algorithmusunabhängig aussah?
Weil viel Code nicht so agnostisch ist, wie er sich liest. Es zeigt sich an vier Stellen: einem fest im Code hinterlegten Algorithmus-Identifikator in einer Signaturprüfroutine, geschrieben als RSA die einzige Option war; einer Validierungsbibliothek mit einer Liste erlaubter Algorithmen, die niemand überarbeitet hat; Annahmen zur Schlüssellänge in der Puffer-Behandlung oder in Datenbankspalten; und Testdaten, die nur RSA-signiertes Material enthalten.
Der vierte kostet am meisten Zeit, denn er erzeugt einen grünen Build und ein fehlerhaftes System. Wenn Ihre Testdaten vor Mitte 2024 erhoben wurden, enthalten sie keine einzige ECDSA-Karte.
Was ist die CAN, und was macht PACE?
Zwei verschiedene Dinge, die häufig verwechselt werden. Die Card Access Number ist ein sechsstelliger Code, aufgedruckt unten rechts auf der neuen Karte, und sie soll unbefugtes kontaktloses Lesen verhindern. Sie ist keine PIN. Sie unterscheidet sich von den PINs für Authentifizierung, Signatur und Adresse und ist nicht in gleicher Weise geheim: Wer die Karte in der Hand hält, kann sie lesen. Sie belegt physischen Besitz, keine Zustimmung. Ein Umsetzungsdetail: Beim Aufruf von C_Login über PKCS#11 im kontaktlosen Modus mit einer v2-Karte wird die CAN als PIN-Parameter übergeben, was der Parametername nicht andeutet.
PACE ist das Authentifizierungsprotokoll, das die kontaktlose Nutzung schützt, beschrieben in Teil 11 des ICAO-Dokuments 9303. Die Zugriffskontrolle auf die Daten des kontaktlosen Chips erfolgt über PACE anhand von Daten aus der maschinenlesbaren Zone des Dokuments oder wahlweise, bei Karten, über die CAN. Die Sicherheit wird zusätzlich durch passive Authentifizierung der Datengruppen sowie durch Chip-Authentifizierung mittels Active Authentication und Chip Authentication gewährleistet.
Ein Detail der Nutzererfahrung, das Gestaltung verdient. Die Desktop-Anwendung fragt die CAN bei der ersten kontaktlosen Nutzung ab und fragt bei weiteren Nutzungen derselben Karte nicht erneut, mit der Option, sie nicht zu speichern. Wenn Sie Ihren eigenen Ablauf bauen, entscheiden Sie bewusst, ob Sie die CAN zwischenspeichern, denn Bequemlichkeits- und Sicherheitsargument weisen in entgegengesetzte Richtungen, und die Entscheidung gehört dem Produktverantwortlichen und nicht der Person, die den Dialog schreibt.
Was ändert sich in der Zertifikatskette?
Dies ist die Änderung, die am ehesten unentdeckt in Produktion gelangt, weil sie davon abhängt, welche Schnittstelle Ihr Code nutzt. Der Aufbau der Kette wird Ihre Aufgabe, statt etwas, das Ihnen das Modul liefert. Code, der annahm, dass eine vollständige Kette vom Token kommt, wird bei v2 die Validierung nicht bestehen und bei v1 weiterlaufen, genau das Muster, das als defekte Karte diagnostiziert wird.
Und wenn Sie die Zwischenzertifikate zur Laufzeit über AIA beziehen, haben Sie eine Netzwerkabhängigkeit in einen Prüfpfad eingebaut. Entscheiden Sie, ob das akzeptabel ist, und wenn nicht, laden Sie sie vorab und zwischenspeichern Sie sie mit einem Aktualisierungsplan. Die Dokumentation der Desktop-Anwendung enthält einen Abschnitt zur Fehlerbehebung bei der neuen Vertrauenskette, ein hinreichendes Zeichen, dass dies keine theoretische Sorge ist.
Was ist die kürzeste Migrationsliste für den Bürgerausweis v2?
Es gibt einen Testmodus, und er ist wichtiger, als er klingt. Die SDK-Dokumentation beschreibt seine Konfiguration im Abschnitt zum kontaktlosen Zugriff. PIN-Codes sperren nach drei Fehlversuchen, die Entsperrung erfordert einen persönlichen Besuch mit dem PIN-Brief, und Entwickler, die Signaturabläufe gegen echte Karten testen, haben sie gesperrt. Finden Sie diesen Abschnitt vor Ihrem ersten Signaturtest, nicht danach.
Der sechste Punkt ist die einzige wirklich neue Entwicklungsarbeit. Die ersten fünf sind ein Vormittag Lesen des eigenen Codes und anschließend Beheben, was man findet, und sie unterscheiden eine Integration, die auf beiden Karten läuft, von einer, die auf den Karten läuft, die Ihr Entwickler zufällig besitzt. Wenn Sie neu anfangen statt zu migrieren, behandelt unser Leitfaden zur Integration des Bürgerausweises in private Anwendungen das Terrain vor diesem Beitrag.


