# Card Verifiable Certificate

Ein Card Verifiable Certificate (CVC) ist ein Public-Key-Zertifikat, das in einem besonders kompakten Format gespeichert wurde. Ziel bei der Entwicklung war, eine Verifikation des Zertifikats durch Smartcards, die starken Ressourcenbeschränkungen bei Speicherplatz und Rechenleistung unterworfen sind, zu ermöglichen.

## Motivation

Wenn eine Smartcard die Authentizität einer auf sie zugreifenden Anwendung überprüfen will, kommen zur Zeit hauptsächlich symmetrische Challenge-Response-Verfahren zum Einsatz. Dazu wird während der Kartenherstellung oder -personalisierung ein symmetrischer Schlüssel auf der Karte gespeichert. Nachteil hierbei ist, dass für jede Partei, die sich später gegenüber der Karte authentifizieren muss, bereits während der Herstellung ein entsprechender Schlüssel vorhanden sein muss. Eine nachträgliche Erweiterung ist später nicht mehr möglich.
Das Verfahren lässt sich erheblich vereinfachen, wenn eine PKI etabliert wird. Dann wird während der Kartenproduktion nur noch der öffentliche Schlüssel einer Wurzel-CA in der Karte gespeichert. Alle Parteien, die später auf die Karte zugreifen wollen, können jederzeit ein eigenes Zertifikat von dieser CA (oder einer untergeordneten CA) erhalten und sich damit authentifizieren.

## Zertifikatsformat

Zertifikate im X.509-Format benötigen relativ viel Speicherplatz und machen, bedingt durch ihre Flexibilität, den Einsatz eines komplexen Algorithmus zur Auswertung erforderlich. CVCs umgehen diese Probleme. Da sie nur zur Authentifikation verwendet werden, sind lediglich folgende Informationen relevant:
* Ausstellende CA
* Zertifikatsinhaber
* evtl. mit dem Zertifikat verbundene Zugriffsrechte
* Öffentlicher Schlüssel des Zertifikatsinhabers
* Gültigkeitszeitraum

### Selbstbeschreibende CV-Zertifikate

Durch eine Codierung nach den Distinguished Encoding Rules des ASN.1-Standards können diese Zertifikate ohne weitere Hilfsmittel interpretiert werden. Dabei wird jedem Datenfeld ein Tag und eine Längenangabe vorangestellt. Der Tag gibt dabei den Typ des folgenden Datenfelds an. Der Standard ISO 7816-6 listet die erlaubten Typen auf.

### Nicht selbstbeschreibende CV-Zertifikate

Im Gegensatz zu selbstbeschreibenden Zertifikaten fehlen bei diesem Zertifikatstyp Tag und Längenangabe. Um die Daten interpretieren zu können, wird eine Headerliste benötigt, welche die fehlenden Daten enthält. Zusammen mit den Zertifikatsdaten können die einzelnen Felder isoliert werden.
Durch das Weglassen des Headerelemente ist das Zertifikat besonders platzsparend. Allerdings muss die Chipkarte vor der Verifikation von Zertifikaten dieses Typs eine Headerliste erhalten. Dies kann schon bei der Kartenherstellung passieren oder vor Beginn einer Zertifikatsverifikation durch das Kommando MANAGE SECURITY ENVIRONMENT.

## Signaturerstellung

Um noch mehr Speicherplatz zu sparen, wird die Signatur nicht an die Zertifikatsdaten angehängt, sondern ist Teil des Zertifikats. Hierzu wird der in ISO 9796 definierte Signaturalgorithmus mit Message Recovery eingesetzt. Dabei wird zunächst der Hashwert über die gesamten Zertifikatsdaten gebildet und diese danach geteilt. Der erste Teil wird zusammen mit dem Hashwert mit dem privaten Signaturschlüssel verschlüsselt. Dieser recoverable part der Daten bildet zusammen mit dem zweiten Teilstück der Daten, dem non-recoverable part das Zertifikat.

## Verifizierung

Zur Verifizierung wird der recoverable part der Daten mit dem öffentlichen Signaturprüfschlüssel entschlüsselt, der Hashwert abgetrennt und die verbleibenden Daten mit dem non-recoverable part der Daten verbunden. Von diesen Daten wird wieder ein Hashwert gebildet und dieser mit dem signierten Hash verglichen. Bei einer Übereinstimmung beider Werte ist sichergestellt, dass die Zertifikatsdaten nicht manipuliert wurden.

## Einsatz

* Im Rahmen der elektronischen Gesundheitskarte (eGK) ist geplant, die Karte mit einer Nachlade-Funktionalität auszustatten. So sollen nachträglich weitere Verwendungsmöglichkeiten für die Karte geschaffen werden. Hierzu muss sich das Kartenmanagement-System der jeweiligen Krankenkasse gegenüber der Karte authentifizierten. Hierzu kommen CVCs zum Einsatz.
* Bei der Ausstellung eines eRezepts, das auf der eGK gespeichert wird, muss sich der elektronische Heilberufsausweis des ausstellenden Arztes gegenüber der eGK mit seinem CVC im Rahmen einer Card to Card Authentication authentifizieren.
* Der elektronische Reisepass schützt sensible Daten wie z. B. Fingerabdrücke mittels EAC. Um auf die Daten zugreifen zu können, muss das Lesegerät seine Berechtigung zum Lesen der betreffenden Daten mit seinem CVC gegenüber dem ePass bzw. Personalausweis ausweisen.
* Beim neuen deutschen Personalausweis muss ein Lesegerät vor dem Auslesen jeglicher Daten aus dem Chip die dafür erforderliche Berechtigung mittels EAC und einem CVC (Berechtigungszertifikat) nachweisen.

## Standards

Das Format von CV Certificates ist in ISO 7816 – Teil 8 spezifiziert.