CV-Zertifikate
Für CV-Zertifikate (Card Verifiable Zertifikate) muss im Zertifikats-Template der Zertifikatstyp (Strukturtyp) cvCertificateTemplate gewählt werden
(siehe Grundsätzlicher Aufbau).
CV-Zertifikate sind in einem kompakten Format gespeichert und enthalten weniger Informationen als X.509-Zertifikate. Dadurch wird die Verifikation des Zertifikats durch Smartcards, welche starken Ressourcenbeschränkungen bei Speicherplatz und Rechenleistung unterworfen sind, ermöglicht. CV-Zertifikate werden in der Regel zur Authentifizierung einer Applikation beim Zugriff auf eine Smartcard verwendet. Weiterführende Informationen zu CV-Zertifikaten und deren Struktur können den Dokumenten [ISO-CVC] entnommen werden.
Generell können für CV-Zertifikate zwei Typen unterschieden werden: Selbstbeschreibende CV-Zertifikate und nicht-selbstbeschreibende CV-Zertifikate.
Selbstbeschreibende CV-Zertifikate:
Selbstbeschreibende CV-Zertifikate können ohne weitere Hilfsmittel interpretiert werden.
Dies wird dadurch ermöglicht, indem die Felder des zu signierenden Datensatzes im TLV-Format (Tag-Length-Value) dargestellt werden.
Hierbei wird zur näheren Beschreibung jedem Datenfeld ein Tag und eine Längenangabe vorangestellt.
Der zu signierende Datensatz wird für selbstbeschreibende CV-Zertifikate über das XML-Element <body> im Zertifikats-Template festgelegt (siehe Body).
Nicht selbstbeschreibende CV-Zertifikate:
Im Gegensatz zu selbstbeschreibenden Zertifikaten können die Daten in nicht-selbstbeschreibenden CV-Zertifikaten nicht ohne weitere Hilfsmittel interpretiert werden,
da hier die Datensätze nicht weiter beschrieben sind.
Der zu signierende Datensatz wird für nicht-selbstbeschreibende CV-Zertifikate über das XML-Element <content> im Zertifikats-Template festgelegt (siehe Content).
Unterelemente
| Element-Name | Erläuterung |
|---|---|
|
Für ein nicht selbstbeschreibendes CV-Zertifikat wird das XML-Element Eine Beschreibung ist in Content (content) zu finden. |
|
Für ein selbstbeschreibendes CV-Zertifikat wird das XML-Element Eine Beschreibung ist in Body (body) zu finden. |
|
Sowohl für selbstbeschreibende als auch für nicht selbstbeschreibende CV-Zertifikate wird die komplette Zertifikatsstruktur über das Element Eine Beschreibung ist in Structure (structure) zu finden. |
|
Angaben zur Gültigkeit des Zertifikats. Wert: ValidityType (siehe ValidityType). |
|
Informationen zum Schlüssel Wert: keyAttributes (siehe KeyAttributesEncoding und KeyAttributesQuality). |
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<certificateTemplate xmlns="http://cara2.project.MTG/certificate/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<cvCertificateTemplate>
<content>
<CPI>
<definition>
<Hex><length>1</length><default>06</default></Hex>
</definition>
</CPI>
<CAR/>
<CHR>
<definition>
<Hex><length>2</length><identName>org</identName></Hex>
<Hex><length>10</length><identName>demo</identName></Hex>
</definition>
</CHR>
<CHA>
<definition>
<ASCII><default>Demo</default></ASCII>
</definition>
</CHA>
<EOV pattern="yyyyMMdd"/>
<OID><oid>1.2.840.113549.1.1.10</oid></OID>
<publicKey/>
</content>
<structure>
<content/>
<signature>
<algorithm><default>1.2.840.113549.1.1.5</default></algorithm>
</signature>
</structure>
<validity>
<max><year>5</year><month>0</month><day>0</day></max>
<default><year>5</year><month>0</month><day>0</day></default>
</validity>
<keyAttributes>
<quality>
<RSA><modulus minLength="1024" /></RSA>
</quality>
</keyAttributes>
</cvCertificateTemplate>
</certificateTemplate>
Content
Das XML-Element <content> wird für nicht-selbstbeschreibende CV-Zertifikate verwendet, um die Felder des zu signierenden Datensatzes festzulegen.
Die im Zertifikats-Template für das XML-Element <content> verwendeten Unterelemente werden als Datenfelder in den zu signierenden Datensatz aufgenommen.
Die möglichen Felder sind in Unterelemente des XML-Elements „content“ zusammengefasst.
Unterelemente
| Element-Name | Erläuterung |
|---|---|
|
Mit diesem Element kann der „Certificate Profile Identifier“ im Zertifikat gesetzt werden. Eine Beschreibung der Definition ist in cvValueType zu finden. Beispiel:
|
|
Durch Angabe dieses Elements im Zertifikats-Template wird die Certification Authority Reference in das Zertifikat aufgenommen. Im Falle eines self-signed Zertifikats wird als Wert der des eigenen CHR verwendet, ansonsten der CHR des Signers. Mit dem optionalen Attribut length wird die Länge des Werts definiert. Falls der tatsächliche Wert größer ist, wird der Wert auf die angegebene Länge verkleinert, indem führende Bytes abgeschnitten werden. Beispiel:
|
|
Mit diesem Element kann der „Certificate Holder Reference“ im Zertifikat gesetzt werden. Eine Beschreibung ist in cvValueType zu finden. Mit dem optionalen Attribut Beispiel:
|
|
Mit diesem Element kann der „Certificate Holder Authorization“ im Zertifikat gesetzt werden. Eine Beschreibung ist in cvValueType zu finden. Beispiel:
|
|
Dieses Element wird zur Angabe eines Object Identifiers verwendet. Die angegebene OID wird in ein DER-kodiertes ASN1-Objekt umgewandelt und in das Zertifikat geschrieben. Beispiel:
|
|
Mit diesem Element kann die Gültigkeit des Schlüssels (End of Validity) im Zertifikat gesetzt werden. Datum und Uhrzeit werden in einen String umgewandelt und dann BCD-kodiert in das Zertifikat geschrieben. Das Format der Zeitangabe muss mit Hilfe des Attributs Das Element hat keine Auswirkungen auf die Gültigkeitsperiode des Zertifikats in der CARA-Datenbank. Beispiel:
|
|
Mit diesem Element wird definiert, wie der öffentliche Schlüssels in das CV-Zertifikat geschrieben werden soll. Das Unterelement Beispiel:
|
Beispiel
<content>
<CPI>
<definition>
<Hex><default>05</default></Hex>
</definition>
</CPI>
<CAR/>
<CHR>
<definition>
<Hex><default>00</default></Hex>
<validTo pattern="yyMM"/>
<Hex><default>22</default></Hex>
</definition>
</CHR>
<CHA>
<definition>
<ASCII><default>Demo</default></ASCII>
<Hex><default>22</default></Hex>
</definition>
</CHA>
<EOV pattern="yyyyMMdd"/>
<OID><oid>1.3.36.7.2.1.1</oid></OID>
<publicKey/>
</content>
Body
Das XML-Element <body> wird für selbstbeschreibende CV-Zertifikate verwendet, um die Felder des zu signierenden Datensatzes festzulegen.
Die im Zertifikats-Template für das XML-Element <body> verwendeten Unterelemente werden als Datenfelder in den zu signierenden Datensatz aufgenommen.
Die möglichen Felder sind in Unterelemente des XML-Elements „body“ zusammengefasst.
Unterelemente
| Element-Name | Erläuterung |
|---|---|
|
Mit diesem XML-Element kann der „Certificate Profile Identifier“ im Zertifikat gesetzt werden. Eine Beschreibung der Definition ist in cvValueType zu finden. Beispiel:
|
|
Durch Angabe dieses XML-Elements im Zertifikats-Template wird die Certification Authority Reference in das Zertifikat aufgenommen. Im Falle eines self-signed Zertifikats wird als Wert der des eigenen CHR verwendet, ansonsten der CHR des Signers. Mit dem optionalen Attribut length wird die Länge des Werts definiert. Falls der tatsächliche Wert kleiner ist, wird der Wert auf den angegebenen Wert vergrößert, indem führenden Nullen am Anfang eingefügt werden. Beispiel:
|
|
Mit diesem XML-Element kann der „Certificate Holder Reference“ im Zertifikat gesetzt werden. Eine Beschreibung ist in cvValueType zu finden. Beispiel:
|
|
Mit diesem XML-Element wird definiert, wie der öffentliche Schlüssel in das CV-Zertifikat geschrieben werden soll (Tag 7F49). Für den Object Identifier, der den Schlüssel-Algorithmus bezeichnet, bietet CARA zwei alternative Möglichkeiten: Im Element Die Aufnahme des Object Identifiers ins Zertifikat erfolgt in DER-Codierung. Bei Verwendung von Im Falle eines EC-Schlüssels wird die OID der verwendeten Named Curve automatisch ermittelt und eingesetzt. Dies geschieht unabhängig von der Schlüsselcodierung,
also z.B. auch bei Verwendung expliziter Domainparameter. Falls für den jeweiligen Public Key keine Named Curve ermittelt werden kann, wird die Ausstellung des Zertifikats mit einem Fehler abgebrochen. Der Object Identifier zur allgemeinen Kennzeichnung eines EC-PublicKeys Durch Setzen des optionalen Attributs Beispiele:
|
|
Mit diesem XML-Element kann die OID des Signatur-Algorithmus im Zertifikat gesetzt werden. Beispiel:
|
|
Mit diesem XML-Element kann das „Certificate Holder Authority Template“ im Zertifikat gesetzt werden. Mit dem Unterelement Der Wert des CHAT wird mit Hilfe des Unterelements Beispiel:
|
|
Mit diesem XML-Element kann der Gültigkeitsbeginn im Zertifikat gesetzt werden. Das Datum gibt den ersten Tag der Gültigkeit an. Die Kodierung enthält keine Uhrzeit. Die Uhrzeit für den Gültigkeitsbeginn ist implizit 0 Uhr UTC. Das Format der Zeitangabe muss mit Hilfe des Elements Die Dezimalziffern des Datums werden als BCD kodiert (binär kodierte Dezimalen). Das optionale Attribut format legt fest, ob die Dezimalen gepackt oder ungepackt kodiert werden.
Der Default-Wert ist Beispiel:
|
|
Mit diesem XML-Element kann das Gültigkeitsende im Zertifikat gesetzt werden. Das Datum gibt den letzten Tag der Gültigkeit an. Die Kodierung enthält keine Uhrzeit. Die Uhrzeit für das Gültigkeitsende ist implizit 24 Uhr UTC, also das Ende des Tages. Das Format der Zeitangabe muss mit Hilfe des Elements Die Dezimalziffern des Datums werden als BCD kodiert (binär kodierte Dezimalen).
Das optionale Attribut format legt fest, ob die Dezimalen gepackt oder ungepackt kodiert werden.
Der Default-Wert ist Beispiel:
|
|
Festlegung der möglichen Extensions, welche im Zertifikat verwendet werden können. Es können mehrere Extensions angegeben werden. Aufbau:
Eine Beschreibung ist in Procuration (CV-Extensions) zu finden. |
Beispiel
<body>
<CPI>
<definition>
<Hex><default>00</default></Hex>
</definition>
</CPI>
<CAR/>
<publicKey includeOptionalParameters="true">
<algorithm>0.4.0.127.0.7.2.2.2.2.2</algorithm>
</publicKey>
<CHR>
<definition>
<ASCII>
<identName>C</identName>
</ASCII>
<ASCII>
<identName>Holder Mnemonic</identName>
</ASCII>
<ASCII>
<identName>Sequence Number</identName>
</ASCII>
</definition>
</CHR>
<CHAT><oid>0.4.0.127.0.7.3.1.2.2</oid>
<definition>
<Hex><default>FE1FFFFFF7</default></Hex>
</definition>
</CHAT>
<CertEffectiveDate><pattern>yyMMdd</pattern></CertEffectiveDate>
<CertExpirationDate><pattern>yyMMdd</pattern></CertExpirationDate>
</body>
Structure
Über das XML-Element <structure> die wird komplette Struktur sowohl für selbstbeschreibende als auch nicht selbstbeschreibende CV-Zertifikate (siehe auch Content und Body) definiert.
Hierbei werden die Felder festgelegt, die Bestandteil des Zertifikats sind.
Der Aufbau der Felder wird im Zertifikat wiederum im TLV-Format (Voranstellen eines beschreibenden Elements und einer Längenangabe zum Wert des Feldes) beschrieben.
Die möglichen Felder sind abhängig davon, ob es sich um ein selbstbeschreibendes CV-Zertifikat handelt oder nicht.
Um die Felder in das CV-Zertifikat zu übernehmen sind die entsprechenden Elemente aus Unterelemente des XML-Elements „structure“ im Zertifikats-Template anzugeben.
Unterelemente
| Element-Name | Erläuterung |
|---|---|
|
Durch Angabe dieses XML-Elements wird für ein nicht selbstbeschreibendes CV-Zertifikat ein Feld (im TLV-Format) mit dem „Content“ (siehe Content) in das CV-Zertifikat aufgenommen. Dieses XML-Element wird nur für nicht selbstbeschreibende CV-Zertifikate verwendet. Beispiel:
|
|
Durch Angabe dieses XML-Elements wird für ein selbstbeschreibendes CV-Zertifikat ein Feld (im TLV-Format) mit dem „Body“ (siehe Body) in das CV-Zertifikat aufgenommen. Dieses XML-Element wird nur für selbstbeschreibende CV-Zertifikate verwendet. Beispiel:
|
|
Hiermit wird der Signaturalgorithmus definiert, mit welchem die Zertifikatsdaten signiert werden. Durch die Festlegung dieses XML-Elements im Zertifikats-Template wird die Signatur mit ins Zertifikat aufgenommen. Für ein nicht selbstbeschreibendes CV-Zertifikat werden die Daten des „Content“ (siehe Content) signiert. Für ein selbstbeschreibendes CV-Zertifikat werden die Daten des „Body“ (siehe Body) signiert. Der Aufbau der erzeugten Signatur wird durch den Algorithmus definiert. Dieses XML-Element wird sowohl für selbstbeschreibende als auch für nicht selbstbeschreibende CV-Zertifikate zur Angabe der Signatur verwendet. Wert: signatureType (siehe signatureType). |
|
Durch Angabe dieses XML-Elements wird die Certification Authority Reference in das Zertifikat aufgenommen. Im Falle eines self-signed Zertifikats wird als Wert der des eigenen CHR verwendet, ansonsten der CHR des Signers. Mit dem optionalen Attribut Dieses XML-Element wird nur für nicht selbstbeschreibende CV-Zertifikate verwendet. Beispiel:
|
|
Dieses XML-Element wird zur Angabe des PK-Remainder (Rest des Public-Key) in einem nicht selbstbeschreibenden CV-Zertifikat verwendet. Durch Spezifikation einer Länge, kann die Länge des PK-Remainders festgelegt werden. Die Länge wird hierbei vom Ende des Public-Key aus gezählt. Der PK-Reminder wird im Zusammenhang der Signierung mit Hilfe des „Message Recovery-Verfahrens“ (siehe [ISO-MR]) verwendet. Beispiel:
|
|
Dieses XML-Element wird zur Angabe des Content-Remainders (Rest des Contents) in einem nicht selbstbeschreibenden CV-Zertifikat verwendet. Durch Spezifikation einer Länge, kann die Länge des Content-Remainders festgelegt werden. Die Länge wird hierbei vom Ende des Contents aus gezählt. Der Conent-Reminder wird im Zusammenhang der Signierung mit Hilfe des „Message Recovery-Verfahrens“ (siehe [ISO-MR]) verwendet. Beispiel:
|
Beispiel
<structure>
<signature>
<algorithm><default>1.3.36.3.4.2.2.1</default></algorithm>
</signature>
<PKRemainder><length>61</length></PKRemainder>
<CAR/>
</structure>