TECHNISCHE UNIVERSITÄT DARMSTADT FACHGEBIET THEORETISCHE INFORMATIK PROF. DR. J. BUCHMANN DR. A. WIESMAIER 9. Übung zur Vorlesung Public-Key-Infrastrukturen Sommersemester 2011 Aufgabe 1: Indirekte CRL Gegeben sei folgende indirekte CRL. CRL A Issuer: CN=First CA, C=DE ThisUpdate: Apr 25 12:33:29 2009 GMT NextUpdate: May 25 12:33:29 2009 GMT Revoked Certificates: Serial No.: 1 Serial No.: 2 Serial Nr.: 3 Certificate Issuer: CN=Second CA, C=DE Serial No.: 4 Serial No.: 5 Serial Nr.: 6 Certificate Issuer: CN=Third CA, C=DE Serial Nr.: 7 Certificate Issuer: CN=Forth CA, C=DE X509v2 CRL Extensions: CRLNumber: non-critical 500 Signature: verifiable with 0x45678001 Tragen Sie in Tabelle 1 in der Spalte revoked ein, ob die dort aufgeführten Zertifikate revoziert sind (true) oder nicht (false). 1
Issuer Serial Number revoked CN=First CA, C=DE 1 CN=First CA, C=DE 2 CN=First CA, C=DE 3 CN=First CA, C=DE 4 CN=First CA, C=DE 5 CN=Second CA, C=DE 1 CN=Second CA, C=DE 2 CN=Second CA, C=DE 3 CN=Second CA, C=DE 4 CN=Second CA, C=DE 5 CN=Second CA, C=DE 6 CN=Third CA, C=DE 6 CN=Third CA, C=DE 7 CN=Forth CA, C=DE 6 CN=Forth CA, C=DE 7 Tabelle 1: Zertifikate Aufgabe 2: OCSP-Client und ASN.1 a) Ein OCSP-Client kann seine Anfrage signieren, muss aber nicht. OCSPRequest ::= SEQUENCE { tbsrequest TBSRequest, optionalsignature [0] EXPLICIT Signature OPTIONAL } Signature ::= SEQUENCE { signaturealgorithm AlgorithmIdentifier, signature BIT STRING, certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL } Wieso ist es nicht sinnvoll, solch eine Darstellung zu machen OCSPRequest ::= SEQUENCE { tbsrequest TBSRequest, signaturealgorithm AlgorithmIdentifier OPTIONAL, signaturevalue BIT STRING OPTIONAL } die der eines X.509-Zertifikats Certificate ::= SEQUENCE { tbscertificate TBSCertificate, signaturealgorithm AlgorithmIdentifier, signaturevalue BIT STRING } ähnelt? b) In einem OCSP-Request wird auch der Hash des öffentlichen Schlüssels des Ausstellers mitgeschickt, um ein Zertifikat eindeutig zu identifizieren: 2
CertID ::= SEQUENCE { hashalgorithm AlgorithmIdentifier, issuernamehash OCTET STRING, -- Hash of Issuer s DN issuerkeyhash OCTET STRING, -- Hash of Issuers public key serialnumber CertificateSerialNumber } Wieso ist im Protokoll sowas vorgesehen? Aufgabe 3: OCSP-Server Ein OCSP-Server arbeitet für die CA mit dem Namen CN=Root CA, O=TUD, C=DE. Damit der OCSP-Server richtig antworten kann, braucht er ein Backend, das wie folgt realisiert ist: a) Der OCSP Server bekommt die aktuelle CRL der CA CN=Root CA, O=TUD, C=DE. Die CRL lautet: CRL A Issuer: CN=Root CA, O=TUD, C=DE ThisUpdate: June 10 11:53:09 2007 GMT NextUpdate: July 11 11:53:09 2007 GMT Revoked Certificates: Serial Nr.: 15 Revocation Date: Dec 25 23:04:14 2004 GMT Superseded Serial Nr.: 56 Revocation Date: Apr 25 08:55:36 2005 GMT Affiliation Changed Serial Nr.: 2595 Revocation Date: Apr 25 11:52:39 2005 GMT keycompromise X509v2 CRL Extensions: CRLNumber: non-critical 50 Signature: verifiable with Root CA b) Der OCSP-Server bekommt jedes Zertifikat und die aktuelle CRL, die die CN=Root CA, O=TUD, C=DE -CA ausgestellt hat. In seiner Datenbank gibt es die Zertifikate mit den Seriennummern 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 56, die von CN=Root CA, O=TUD, C=DE ausgestellt worden sind. Die CRL lautet: 3
CRL A Issuer: CN=Root CA, O=TUD, C=DE ThisUpdate: June 10 11:53:09 2007 GMT NextUpdate: July 11 11:53:09 2007 GMT Revoked Certificates: Serial Nr.: 15 Revocation Date: Dec 25 23:04:14 2004 GMT Superseded Serial Nr.: 56 Revocation Date: Apr 25 08:55:36 2005 GMT Affiliation Changed Serial Nr.: 2595 Revocation Date: Apr 25 11:52:39 2005 GMT keycompromise X509v2 CRL Extensions: CRLNumber: non-critical 50 Signature: verifiable with Root CA c) Der OCSP-Server bekommt jedes Zertifikat, das die CN=Root CA, O=TUD, C=DE CA ausgestellt hat, und eine spezielle Notifikation, wenn ein Zertifikat revoziert worden ist. In seiner Datenbank gibt es die Zertifikate mit den Seriennummern 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 30, 35, 40, 45, 50, 55, 56, die von CN=Root CA, O=TUD, C=DE ausgestellt worden sind. In seiner Revokationsdatenbank, in der der Server alle revozierten Zertifikate speichert, gibt es die Zertifikate mit den Seriennummern 14, 45, 56, die von CN=Root CA, O=TUD, C=DE ausgestellt worden sind. Nun die Aufgabenstellungen: (i) Gibt es auch andere mögliche Implementierungen? Welche sind diese? Welche sind die Vorteile und Nachteile jeder Lösung? (ii) Ein Client fragt den OCSP Server nach dem Status eines Zertifikates. Füllen Sie für die oben genannten Szenarien a) c) die nachfolgenden Tabellen 2, 3 und 4 aus. a) Issuer Serial Number Antwort CN=Root CA, O=TUD, C=DE 23 CN=Test CA, O=TUD, C=DE 15 CN=Root CA, O=TUD, C=DE 45 CN=Root CA, O=TUD, C=DE 56 CN=New CA, O=TUD, C=DE 98 CN=Root CA, O=TUD, C=AT 2322 Tabelle 2: Antwort Szenario a). 4
b) Issuer Serial Number Antwort CN=Root CA, O=TUD, C=DE 23 CN=Test CA, O=TUD, C=DE 15 CN=Root CA, O=TUD, C=DE 45 CN=Root CA, O=TUD, C=DE 56 CN=New CA, O=TUD, C=DE 98 CN=Root CA, O=TUD, C=AT 2322 Tabelle 3: Antwort Szenario b). c) Issuer Serial Number Antwort CN=Root CA, O=TUD, C=DE 23 CN=Test CA, O=TUD, C=DE 15 CN=Root CA, O=TUD, C=DE 45 CN=Root CA, O=TUD, C=DE 56 CN=New CA, O=TUD, C=DE 98 CN=Root CA, O=TUD, C=AT 2322 Tabelle 4: Antwort Szenario c). Aufgabe 4: Certificate Revocation System In der Vorlesung wurde das Certificate Revocation System (CRS) vorgestellt. Es verwendet ein Authentisierungsschema, das auf einer Einwegfunktion beruht. Sei f diese Einwegfunktion. Initial wählt man zwei Zufallszahlen Y 0, N 0 und ein geeignetes n. Man berechne Y = f n (Y 0 ) sowie N = f (N 0 ), wobei f n bedeutet, dass die Funktion f n-mal hintereinander ausgeführt wird. Die Zahl Y wird der Identität (Person) eindeutig zugeordnet (z.b. durch Veröffentlichung im Web). Für die folgenden Fragen sei angenommen, dass ein Zertifikat 365 Tage gültig ist und dass jeden Tag einmal der Revokationsstatus C veröffentlicht wird. (i) Wie kann ich jemanden mit diesem Schema von meiner Identität überzeugen? Was muss ich berechnen? Wie funktioniert die Verifikation? (ii) Welche Rolle spielt der Parameter n? Was muss ich für die Zahl Y 0 gewährleisten? (iii) Auf wie viele Ausgangswerte wird das Authentisierungsschema f im CRS pro Zertifikat angewendet? Wie wird jeweils der Parameter n gewählt und welche Bedeutung hat er? (iv) Zu einem Zertifikat müssen zwei Parameter (Y und N) bestimmt werden. Diese müssen authentisch mit dem Zertifikat verknüpft werden. Wie kann man das am geschicktesten bewerkstelligen? (v) Ein Zertifikat Z mit Parametern Y und N wird 30 Tage nach seiner Erzeugung gesperrt. Welche Sperrinformationen wurden veröffentlicht? (vi) Ein Zertifikat ist 364 Tage alt. Im Verzeichnis findet man die Zahl C als Sperrinformation. Was muss man berechnen, um festzustellen, ob das Zertifikat gesperrt ist? Wie skaliert dieser Aufwand mit der Granularität der Sperrinformationen? Aufgabe 5: Verbesserung des Certificate Revocation Systems Um den Aufwand für die Verifikation der Revokationsinformationen zu senken, kann man das CRS baumartig organisieren. Sei f eine Einwegfunktion. Man verwendet einen balancierten Binärbaum mit folgenden Eigenschaften: 5
Die Blätter des Baums sind die Hashwerte von Zufallszahlen. Ein innerer Knoten beinhaltet f (x l, x r ), wobei x l den Wert des linken und x r den des rechten Kindknotens bezeichnet. Für die folgenden Fragen sei angenommen, dass ein Zertifikat 365 Tage gültig ist und dass jeden Tag einmal der Revokationsstatus veröffentlicht wird. (i) Welcher Wert wird in das Zertifikat geschrieben? Welchen Parameter (Y, N) aus Aufgabe 4 ersetzt er? (ii) Wie viele Werte muss die CA maximal pro Tag veröffentlichen (die Wurzel ausgenommen)? (iii) Ein Teilnehmer der PKI will am Tag 201 die Gültigkeit eines Zertifikats prüfen, welches ein Jahr gültig ist. Er prüft dieses Zertifikat zum ersten Mal. Welche und wieviele Werte braucht er (von der CA) und was muss er berechnen? 6