x.509 Zertifikate

1988 wurden vom damaligen CCITT, heute ITU, die Standards x.500 und x.509 herausgegeben. x.509 beschreibt einen Rahmen in dem von einem Verzeichnisdienst (x.500) auch Authentifizierungsdienste angeboten werden.

Der x.509 Standard ist so allgemein gehalten, dass er nicht nur mit x.500 zusammen genutzt werden kann. Das Format wurde von Version zu Version erweitert. Im April 2000 wurde die 4. Edition herausgebracht, mit Authentifizierungs- und Autorisierungserweiterungen für den Elektronischen Handel, und Verbesserungen, um die korrekte Verarbeitung der Zertifizierungspfade, die mehrere Zertifizierungstellen innerhalb der dezentraler Unternehmen miteinbeziehen, zu verbessern sowie Verbesserungen im Bereich des Widerrufs.

Das Zertifikatsformat wurde ausgeweitet blieb aber rückwärtskompatibel, während durch die optionalen Erweiterungen sichergestellt wurde, dass bestimmte Anforderungen für Anwendungen erfüllt werden können.

Der Unterschied zwischen einer Spezifikation und einem Profil ist dadurch charakterisiert, dass eine Spezifikation wie X.509 keine Beschränkungen aufstellt, welche Kombinationen in verschiedenen Zertifikatstypen auftauchen können. Wohingegen in einem Profil solche Nebenbedingungen aufgestellt werden. PKIX stellt das Internet PKI-Profil für x.509 Zertifikate dar.

Zertifikatsformat

x.509FeldnameInhalt
v1Version NumberVersionsnummer: Dieses Feld indiziert das Format des Zertifikats und damit des erlaubten Inhalts im Zertifikat.
v1Serial NumberDie Seriennummer eines, durch eine bestimmte CA ausgestellten, Zertifikates ist eindeutig. Diese ist ein Hexadezimalwert, obwohl auch schon mal Dezimalwerte dafür angegeben werden. Der Aussteller und die Seriennummer identifizieren gemeinsam eindeutig ein Zertifikat
v1SignatureIdentifiziert den Typ der verwendeten Hash-Funktion sowie den Signaturalgorithmus.
v1IssuerIdentifiziert die Instanz, welche das Zertifikat ausgegeben und signiert hat, mittels eines Distinguished Name (DN), auf Deutsch "Definierter Name", nach X.501.
v1ValidityDieses Feld enthält eine Sequenz von 2 Datumsangaben innerhalb welcher das Zertifikat Gültigkeit besitzt.
v1SubjectIm Subject sind die Angaben zum Subjekt (Inhaber, Benutzer oder auch Antragsteller) zu finden. Mittels Distinguished Name wird das Individuum oder die Instanz, welche zum öffentlichen Schlüssel gehört, identifiziert.
v1Subject Public Key InfoDieses Feld beinhaltet den öffentlichen Schlüssel, das eigentliche Zertifizierungsobjekt. Zusätzlich ist hier der Algorithmus angegeben, mit dem der öffentliche Schlüssel verwendet werden kann.
v2Issuer Unique IdentifierDieses optionale Feld ist mit Version 2 eingeführt worden und ist für eine Wiederverwendung eines Ausstellernamen für verschiedene Instanzen über die Zeit gedacht. In PKIX-RFCs wird von diesem Feature abgeraten.
v2Subject Unique IdentifierFür dieses Feld gilt dasselbe wie für Aussteller-ID.
v3ExtensionsErweiterungen erlauben zusätzliche Informationen in das Zertifikat zu verpacken, ohne das Zertifikatsformat ändern zu müssen. In X.509 sind einige Standarderweiterungen definiert, wobei PKIX diese für den Einsatz im Internet genauer ausdefiniert und einige private Erweiterungen für die Verwendung im Internet definiert.

Mittels OID können "private" Erweiterungen für bestimmte Anwendungszwecke, bzw. um Rückwärtskompatibilität herzustellen, definiert werden, was z.B. bei den Netscape Private Extensions der Fall ist, die älter sind als die PKIX-Erweiterungen.

x.509 Zertifikatserweiterungen

Diese Standarderweiterungen aus X.509 sind von PKIX genauer ausspezifiziert worden, andere private Erweiterungen für spezifische Anwendungen oder Rückwärtskompatibilität werden nicht aufgeführt. Die Erweiterungen lassen sich zu verschiedenen Themenbereichen zusammenfassen, es existieren Erweiterungen zu den Schlüsseln, den Richtlinien, zu Aussteller und Inhaber und dem Zertifizierungspfad.

Kritikalitätsindikator

Zertifikatserweiterungen haben ein Kritikalitäts-Flag, das anzeigt, ob eine Erweiterung kritisch ist oder nicht. Wenn dieses Flag gesetzt ist, muss die Erweiterung verarbeitet werden. Wenn eine Anwendung eine Erweiterung nicht kennt, oder nicht verarbeiten kann, darf das Zertifikat nicht verarbeitet werden bzw. muss als ungültig betrachtet werden.

Ist eine Erweiterung als nicht-kritisch markiert, kann ein Benutzer oder eine Anwendung diese ignorieren.

Standarderweiterungen

FeldnameBedeutung
Authority Key IdentifierAusstellerschlüssel-ID: Der Authority Key Identifier ist eine nicht-kritische Erweiterung die verwendet wird, um den richtigen Ausstellerschlüssel zu identifizieren, wenn eine CA unterschiedliche Schlüsselsätze und Zertifikate verwendet, was im Falle von Zertifikatsverlängerungen oder -überlappungen der Fall sein kann. Diese explizite Angabe des Schlüssels hilft auch für Langzeitsignaturen den richtigen Schlüssel und einen Pfad für die Verifikation zu finden.

Die Angabe kann mittels einer eindeutigen Schlüssel-ID (z.B. Hash) erfolgen oder einer Kombination aus einer Seriennummer und den CA-Namen erfolgen, wobei eine Schlüssel-ID natürlich spezifischere Information für die Konstruktion eines Pfades liefert.

In PKIX muss diese Erweiterung in allen CA-Zertifikaten vorhanden sein, außer das Zertifikat ist selbstsigniert.
(Subject) Key IdentifierInhaberschlüssel-ID: Der Subject Key Identifier identifiziert analog dazu den Schlüssel des Inhabers. Bei PKIX muss diese Erweiterung in allen CA-Zertifikaten vorhanden sein und empfohlen für Endzertifikate.
Key Usage (Restriction)Schlüsselverwendung: Diese (kritische) Erweiterung definiert den Zweck, für den der öffentliche Schlüssel verwendet werden darf. Die einzelnen Bits dieses Feldes haben unterschiedliche Bedeutung.

Digitale Signatur: (digital signature) diese Option ist gesetzt, wenn der öffentliche Schlüssel für digitale Signaturen verwendet werden soll, die nicht den Zweck der Nichtabstreitbarkeit erfüllen sollen, d.h. eher kurzfristigen Charakter haben.

Nichtabstreitbarkeit: (non repudiation) diese Option ist gesetzt, wenn der Schlüssel für digitale Signaturen eines Nichtabstreitbarkeitsservice verwendet werden soll, d.h. eher langfristigen Charakter besitzt, z.B. Notariatsservice.

Schlüsselverschlüsselung: (key encipherment) diese Option ist gesetzt, wenn der Schlüssel für die Verschlüsselung von anderen Schlüsseln oder Sicherheitsinformation verwendet werden soll, ev. im Zusammenspiel mit encipher only und decipher only kann die Verwendung eingeschränkt werden.

Datenverschlüsselung: (data encipherment) diese Option ist gesetzt, wenn der Schlüssel zur Verschlüsselung von Benutzerdaten (außer andere Schlüssel) verwendet werden soll.

Schlüsselvereinbarung: (key agreement) ist gesetzt, wenn der Diffie Hellman Algorithmus für die Schlüsselvereinbarung verwendet werden soll.

Zertifikatsignatur: (keycert Sign) wenn der Schlüssel für die Verifikation von Signaturen auf Zertifikaten verwendet wird, d.h. sinnvoll bei CA-Zertifikaten.

CRL-signatur: (CRL Sign) wenn der Schlüssel für die Verifikation von Signaturen auf CRLs verwendet wird, sinnvoll bei CA-Zertifikaten.

Nur Verschlüsselung: (encipher only) nur zusammen mit Schlüsselvereinbarung nach Diffie Hellman sinnvoll.

Nur Entschlüsselung: (decipher only) nur zusammen mit Schlüsselvereinbarung nach Diffie Hellman sinnvoll.
Extended Key Usage

erweiterte Schlüsselverwendung: Die Extended Key Usage wird verwendet um mittels OIDs zusätzliche Information für die Schlüsselverwendung bereitzustellen. 
Z.B. Microsoft definiert Erweiterungen für: Smart Card Logon, EFS,...

Serverauthentifizierung (Webserver)1.3.6.1.5.5.7.3.1IPSec end system1.3.6.1.5.5.7.3.5
Client authentication1.3.6.1.5.5.7.3.2IPSec tunnel1.3.6.1.5.5.7.3.6
Code signing1.3.6.1.5.5.7.3.3IPSec user1.3.6.1.5.5.7.3.7
Email Protection1.3.6.1.5.5.7.3.4Timestamping1.3.6.1.5.5.7.3.8
Netscape SGC2.16.840.1.113730.4.1Microsoft Server Gated Crypto - SGC1.3.6.1.4.1.311.10.3.3

 

Private Key (Validity) Usage PeriodGültigkeitsperiode des privaten Schlüssel: Die Private Key Usage Period ermöglicht dem privaten Schlüssel eine andere Gültigkeitsperiode als dem Zertifikat zuzuweisen, und besteht aus einer Sequenz von 2 Datumsangaben.
Certificate PoliciesZertifikatsrichtlinie: Die Certificate Policies Erweiterung beinhaltet eine Liste von Zertifikatsrichtlinien, jeweils OID und Name, die dem Zertifikat zugrunde liegen.
Policy MappingsDiese Erweiterung findet bei CA-Zertifikaten Anwendung, wenn eine ausstellende CA festhalten möchte, dass eine ihrer Zertifikatsrichtlinien mit einer Zertifikatsrichtlinie der antragstellenden CA equivalent ist. Diese Liste von Paaren muss bei PKIX als nicht-kritisch markiert sein.
Subject Alternative NameAlernative Bezeichnungen des Inhabers: Der Subject Alternative Name besteht aus einer Liste von alternativen Namen für den Inhaber des Zertifikates, diese Namen können, RFC822-Namen (E-Mail), DNS-Namen, X.400 Adressen, EDI-Namen, URIs oder IP-Adressen sein, im Grunde ist jedes strukturiertes Namenschema verwendbar. Bei PKIX muss diese Erweiterung kritisch sein, wenn das Subject-Feld im Zertifikat leer ist.
Issuer Alternative NameFür den Issuer Alternative Name gilt dasselbe wie für den Subject Alternative Name.
Subject Directory AttributesDie Subject Directory Attributes Erweiterung ist dafür gedacht, zusätzliche Information über den Inhaber bereitzustellen, die nicht als DN im Subject Feld oder im Subject Alternative Name Erweiterung aufgenommen werden kann.
Basic ConstraintsDie "grundlegenden Beschränkungen" erlauben es, CA-Zertifikate als solche zu identifizieren, und wie lange ein Zertifizierungspfad sein darf. Bei PKIX ist diese Erweiterung in CA-Zertifikaten als kritisch zu markieren.
Name ConstraintsDiese Namensbeschränkungen definieren erlaubte Namen in untergeordneten Zertifikaten und sind deshalb nur in CA-Zertifikaten sinnvoll
Policy ConstraintsMit diesen Beschränkungen kann definiert werden, dass folgende Zertifikate im Zertifizierungspfad entsprechende Policy-Identifier (OIDs) definiert haben, bzw. das Policy Mapping in untergeordneten Zertifikaten zu verbieten.
Inhibit any Policy Constraint (non PKIX)Diese Erweiterung erlaubt den Ausschluss der Verwendung des Any Policy Identifiers, was Kontrolle über CAs erlaubt, die "any Policy" anstatt einer expliziten Angabe verwenden. PKIX unterstützt diese Erweiterung NICHT.
CRL Distribution PointDie CRL Distribution Points beinhaltet URIs (Pointer) auf die aktuelle CRL.

 private PKIX Erweiterungen

Authority Information AccessDiese PKIX Erweiterung definiert, wie weitere Information und Services der ausstellenden CA genutzt werden können. Darin können weitere Informationen über die CA (weitere Richtlinien, Stammzertifikate,...) oder Online Verifikation Services (z.B. OCSP) bereitgestellt werden. Vor allem wenn bei Zertifikatsanwendungen wie Secure Mail (S/MIME) nicht der ganze Zertifizierungspfad mitgeschickt wird, ist es für die prüfende Anwendung nett, wenn im Endzertifikat in dieser Erweiterung aufgeführt ist, wo das nächsthöhere CA-Zertifikat abzurufen ist.
Subject Information AccessDiese PKIX - Erweiterung definiert weitere Informationen und Services, die der Inhaber des Zertifikats bietet. Ein CA-Zertifikat könnte beispielsweise Informationen über das zugehörige Zertifikatsverzeichnis bieten, bzw. oder über den angebotenen Zeitstempeldienst.

Microsofts Zertifikatserweiterungen

Extended Key Usage
Client Authentication (PKIX) 1.3.6.1.5.5.7.3.2 CA Encryption Certificate 1.3.6.1.4.1.311.21.5
Secure Email (PKIX) 1.3.6.1.5.5.7.3.4 Microsoft Trust List Signing 1.3.6.1.4.1.311.10.3.1
Smart Card Logon 1.3.6.1.4.1.311.20.2.2 File Recovery (in EFS-Recovery Zertifikaten) 1.3.6.1.4.1.311.10.3.4.1
Encrypting File System 1.3.6.1.4.1.311.10.3.4 Key Recovery 1.3.6.1.4.1.311.10.3.11
Document Signing 1.3.6.1.4.1.311.10.3.12 Qualified Subordination 1.3.6.1.4.1.311.10.3.10
Root List Signer 1.3.6.1.4.1.311.10.3.9
CA-VersionMicrosoft CA Stammzertifikate werden durchnumeriert.
Previous CA Certificate HashDer Hash-Wert des vorhergehenden Root Zertifikates wird hier angezeigt
Cross Certificate Distribution PointAb Windows XP unterstützt; man identifiziert mit dieser Erweiterung wo Cross-Zertifikate zu finden sind, und wie oft dort ein Update stattfindet.
Certificate Template NameZeigt das zugrunde liegende Certificate Template (Zertifikatsvorlage), anhand dessen die Microsoft-CA das Zertifikat ausgestellt hat, an.
Application PolicySpezifiziert nach welchen Application Policy die CA ausstellen kann.

Attributszertifikate

Ein Attributszertifikat ist wie ein Public-Key-Zertifikat (Identitätszertifikat) eine signierte Struktur. Der Aussteller ist eine Attribute Authority (AA) wobei kein Schlüsselpaar an eine Identität gebunden wird, sondern bestimmte Rechte an den Inhaber eines Identitätszertifikates.

Format des Attributszertifikats

 

  • Version Number: indiziert Format und damit den erlaubten Inhalt, aktuelle Version ist 2;
  • Serial Number: eindeutige Seriennummer des Zertifikats;
  • Signaturalgorithmus: der verwendete Algorithmus der Signatur über das Zertifikat;
  • Aussteller: DN der AA; Gültigkeit: 2 Zeitpunkte, zwischen denen das Zertifikat Gültigkeit besitzt;
  • Inhaber: Referenz auf Aussteller und Seriennummer des zugehörigen Public-Key-Zertifikats (Identitätszertifikat);
  • Attribute: beinhaltet die eigentlichen Attribute, bzw. Rechte die zertifiziert werden;
  • Issuer Unique ID: eindeutige ID des Ausstellers;
  • Extensions: erlauben weitere Informationen ohne das Zertifikat ändern zu müssen;

Die Erweiterungen decken unterschiedliche Themenbereiche ab. Die Basic Privilege Management Extensions definieren Information die Gewährung von Rechten betreffend. Die Privilege Revocation informieren über Verteilungspunkt der Widerrufsinformation, während die Source of Authority Erweiterungen Information über den Ursprung der Gewährung bereitstellen. Zusätzlich kann ein Verteilungspunkt angegeben sein, wo ein Attributzertifikat mit den Rechten einer, in diesem Zertifikat zugeordneten, Rolle liegt, sowie Erweiterungen, die erlauben die Delegierung von Rechten einzuschränken. Die Source of Authority ist für den Prüfer des Zertifikates die Stelle mit der ultimativen Verantwortlichkeit für die Gewährung von Rechten, gleich einer Root-CA.

  • Time Specific: beschränkt die Periode, in der das Recht ausgeübt werden kann;
  • Targeting Information: beschränkt das Recht auf bestimmte Anwendungen;
  • User Notice: erlaubt dem Benutzer Informationen über Bedingungen und Restriktionen bei der Verwendung des Zertifikates aufzuklären;
  • Acceptable Privilege Policies: diese kritische Erweiterung definiert die Menge an Richtlinien, die berücksichtigt werden müssen;
  • CRL Distribution Point: CRL oder ACRL Verteilungspunkte;
  • No Rev Avail: definiert explizit, dass keine Widerrufsinformation verfügbar ist;
  • SOA ID: (source of authority) definiert, dass der Inhaber des Zertifikats als SOA agieren darf;
  • Attribute Descriptor: kann verwendet werden, um Rechteattribute und Regeln, die bei einer Delegation anzuwenden sind, zu definieren;
  • Role Specification Certification ID: "Link" auf ein Role Specification Certificate;
  • Basic Attribute Constraints: Identifiziert, ob der Inhaber eines Attributzertifikates andere Attributszertifikate ausstellen darf;
  • Delegated Name Constraints: beschränkt den Namensraum von Attributszertifikaten im Zertifizierungspfad;
  • Acceptable Certificate Policies: identifiziert die Richtlinien, die bei Ausstellung eines Attributzertifikates berücksichtigt werden müssen;
  • Authority Attribute ID: Pointer zurück auf das Attributzertifikat einer AA;

asn.1

Mit Abstract Syntax Notation One (ASN.1) können komplexe Datentypen relativ einfach beschrieben werden. ASN.1 ist seit 1984 in mehreren Normen der ITU (1988: X.208, 1993: X.690,... ) definiert und erweitert worden, die zumeist auch als ISO-Standards übernommen wurden. Bei ASN.1 werden als Codierregeln die Basic Encoding Rules (BER) und die Distinguished Encoding Rules (DER) verwendet, die auf der TLV-Struktur (tag, length, value) basieren.

Object Identifier - OID

Object Identifier (OID) identifizieren, wie der Name schon impliziert, Objekte, die unterschiedlichster Natur sein können, wie wohldefinierte Informationen, Definitionen oder Spezifikationen. Sie werden in Standards für Protokolle und Datenstrukturen verwendet um ebendiese Objekte weltweit eindeutig zu identifizieren. Ein OID ist dabei lediglich eine Kette von Zahlen. Die formale Definition und Notation ist bei ASN.1 der ITU zu finden, und mittlerweile auch in einem ISO-Standard (ISO/IEC 9834-1) normiert.

Sie sind hierarchisch organisiert, aber dezentral verwaltet, womit jede Instanz, der eine OID zugeordnet wurde alleinig bestimmen kann wie Unterbaum unter ihrer OID aufgebaut ist und welche Bedeutung die einzelnen OIDs besitzen.

Durch diese Organisation existieren unzählige OIDs, wobei es nicht ausbleibt, das verschiedene OIDs dieselbe Bedeutung haben können. Natürlich gibt es auch kein zentrales Verzeichnis - um diesem Umstand Abhilfe zu schaffen und unbekannte OIDs interpretieren zu können existieren Datenbanken wo man mit etwas Glück die OID findet.

Die Notation der ITU separiert die einzelnen Zahlen mittels Abständen, Klammern und optionalen Text. Die "Internet OID" 1.3.6.1 kann nach ITU folgend angegeben werden.

{iso(1) org(3) dod(6) iana(1)}
{1 3 6 1}
{dod 1}

Die IETF Notation, definiert in den IETF-RFCs (RFC 1778, 2252), besteht aus einem Punkt als Separator.