1 Technische Universität Darmstadt Fachgebiet Theoretische Informatik Prof. J. Buchmann Vangelis Karatsiolis 11. Übung zur Vorlesung Public-Key-Infrastrukturen SS 2008 Aufgabe 1: Prüfung von Zertifikatsketten nach RFC3280 Welche Basic Felder oder Erweiterungen eines Zertifikats sind beteiligt um den Wert von den verschieden Parametern festzustellen oder zu beeinflussen? Füllen Sie die Werte der Tabelle 1 aus. Parameter Feld oder Erweiterung RFC position valid_policy_tree permitted_subtrees excluded_subtrees explicit_policy inhibit_any_policy policy_mapping working_public_key_algorithm working_public_key working_public_key_parameters working_issuer_name max_path_length keycertsignbit Tabelle 1: Parametern der Algorithmus. Aufgabe 2: Prüfung von Zertifikatsketten nach RFC3280 - Policies Alice konstruiert die folgende drei Zertifizierungspfade:
2 Uni Uni Uni, Silver Require explicit policy: 0, Silver Require explicit policy: 0 Require explicit policy: 0 HRZ HRZ HRZ, Silver Inhibit any-policy, Silver Inhibit any-policy RBG Carl (a) Policy: any-policy Employee, Blue Employee (b) (c) Welcher Pfad ist gültig und welcher ungültig? Alice konstruiert jetzt die folgenden vier Zertifizierungspfade:
3 Uni Uni Uni Uni Map: Gold to Blue Map: Gold to Blue Map: Gold to Silver Policy: Red Map: Red to Blue HRZ HRZ HRZ HRZ Policy: Blue Map: Blue to Cyan Policy: Blue Map: Blue to Silver Policy: Silver, Red Map: Red to Rogue Policy: Blue Map: Blue to Gold Policy: Cyan Carl (a) Policy: Silver, Red Student Policy: Red Policy: Silver, Rogue Map: Rogue to Red Student Carl (d) (b) (c) Alice akzeptiert nur die Gold policy. Welcher Pfad ist gültig und welcher ungültig? Bemerkung Teile diser Aufgabe sind von Planning for PKI, Chapter 10, erstellt worden. Aufgabe 3: Vereinfachte Policy Bearbeitung Zeichnen Sie die valid_policy_trees für diese Zertifizierungspfade. Zertifizierungspfad #1 Policy: gold, blue, green Policy: ANY Policy: blue Zertifizierungspfad #2 Policy: gold, blue, green Policy: gold, blue Policy: red, green Zertifizierungspfad #3
4 Policy: gold, blue, green Policy: gold, ANY Policy: red, green Zertifizierungspfad #4 Policy: gold, ANY Policy: red, ANY Policy: ANY, blue Zertifizierungspfad #5 Policy: gold, blue, green Pol. Map.: gold blue green red Policy: blue, gold Pol. Map.: blue red blue green Policy: green Zertifizierungspfad #6 Policy: gold, blue, green Pol. Map.: gold blue gold gold Policy: blue, gold Pol. Map.: blue red blue green Policy: ANY Pol. Map.: ANY red Zertifizierungspfad #7 Policy: gold, blue, green Pol. Map.: gold ANY Policy: blue, gold Pol. Map.: blue yellow blue red Policy: ANY Aufgabe 4: Prüfung von Zertifikatsketten nach RFC3280 Benutzen Sie für Ihre Antworten den RFC 3280: http://www.ietf.org/rfc/rfc3280.txt In dieser Aufgabe geht es um die Prüfung von Zertifikatsketten nach dem im RFC3280 angegeben Algorithmus. Den Algorithmus finden Sie auf den Seiten 63 80, die Definition der verwendeten Extensions auf den Seiten 26 47. Aus Platzgründen sind nicht alle Inhalte der Zertifikate abgedruckt. Gehen Sie davon aus, dass die Signaturen der Zertifikate tatsächlich mit dem zugehörigen -Zertifikat verifiziert werden können. Ein Flussdiagramm der Algorithmus ist hier zu finden:
5 http://www.cdc.informatik.tu-darmstadt.de/lehre/ss08/vorlesung/pki/misc/ AlgorithmusFlussdiagramm.pdf In den Aufgabenteilen c), d) und e) sollen Sie diesen Algorithmus nachvollziehen. Verwenden Sie dabei folgende Initialisierung: a) certification path Pfad gemäß Aufgabenstellung b) current date/time Jun 09 12:00:00 2005 GMT c) user-initial-policy-set nicht angegeben d) trust anchor information entsprechende Angaben zu Zertifikat A e) initial-policy-mapping-inhibit false f) initial-explicit-policy true g) initial-any-policy-inhibit false Gehen Sie bei der Bearbeitung dieser drei Aufgaben wie folgt vor: Geben Sie die Länge der Zertifikatskette n an. Stellen Sie den Zustand des Algorithmus während der Prüfung tabellarisch dar: Tragen Sie senkrecht die Zustandsvariablen und waagerecht die Zählvariable i (Iterationen des Algorithmus) ein. Der Startzustand nach der Initialisierung ist i = 1. Zeichnen Sie den valid_policy_tree (die entsprechende Variable muss nicht in der Tabelle sein). Es reicht ein Baum pro Aufgabe. Notieren Sie dazu zu jeder Ebene im Baum das passende i. Falls Sie im Baum Knoten löschen müssen, klammern Sie diese ein und ergänzen die aktuelle Belegung von i, damit klar ist, wann der Knoten gelöscht wurde. Gehen sie davon aus, dass keines der angegebenen Zertifikate gesperrt ist. Falls die Prüfung erfolgreich ist, geben Sie das Ergebnis gemäß RFC3280, 6.1.6 an. Falls die Prüfung nicht erfolgreich ist, geben Sie die Stelle an, an der die Prüfung gescheitert ist. Hinweis: Im Algorithmus wird das keycertsignbit erwähnt. Das entspricht dem Eintrag Certificate Sign in der Extension X509v3 Key Usage. a) Erstellen Sie einen Baum, der die Zertifizierungshierarchie wiedergibt! b) Geben Sie die Zertifikatsketten an, die zur Prüfung der öffentlichen Schlüssel von Alice, Bob und Carl verwendet werden können! c) Prüfen Sie die Zertifikatskette für Alice nach dem im RFC3280 angegeben Algorithmus. d) Prüfen Sie die Zertifikatskette für Bob. e) Prüfen Sie die Zertifikatskette für Carl. f) In den Zertifikaten C und E ist eine Policy Constraints Extension enthalten. Was wir damit erzwungen?
6 Zertifikat A Serial No.: 1 C=DE, CN=Root 1 NotBefore: Jan 1 00:00:00 2002 GMT Dec 31 23:59:59 2007 GMT C=DE, CN=Root 1 Public Key: key-0x450bfe09 : TRUE pathlen=2 gold, silver gold copper silver green silver yellow verifiable with 0x450BFE09 (SHA1withRSA) Zertifikat B Serial No.: 2 C=DE, CN=Root 1 NotBefore: Feb 1 00:00:00 2003 GMT Dec 31 23:59:59 2005 GMT C=DE, CN=2 Public Key: key-0x7183a0ff : TRUE pathlen=1 copper copper blue verifiable with 0x450BFE09 (SHA1withRSA) Zertifikat C Serial No.: 3 C=DE, CN=Root 1 NotBefore: Jan 2 00:00:00 2002 GMT Dec 31 23:59:59 2005 GMT C=DE, CN=Root 2 Public Key: key-0x84fcbe09 : TRUE pathlen=1 green,yellow Policy Constraints: not critical reqexplpol: 1 inhibpolmap: 1 verifiable with 0x450BFE09 (SHA1withRSA) Zertifikat D Serial No.: 1 C=DE, CN=2 NotBefore: Feb 1 00:00:00 2004 GMT Dec 31 23:59:59 2006 GMT C=DE, CN=7 Public Key: key-0xccdd0088 : TRUE pathlen=0 copper verifiable with 0x7183A0FF (SHA1withRSA)
7 Zertifikat E Serial No.: 35 C=DE, CN=Root 2 NotBefore: Jan 1 00:00:00 2005 GMT Dec 31 23:59:59 2007 GMT C=DE, CN=Root 2 Public Key: key-0x84fcbe09 : TRUE pathlen=1 green,yellow green red yellow magenta yellow white Policy Constraints: not critical reqexplpol: 0 inhibpolmap: 0 verifiable with 0x84FCBE09 (SHA1withRSA) Zertifikat F Serial No.: 9 C=DE, CN=Root 2 NotBefore: Feb 1 00:00:00 2005 GMT Dec 31 23:59:59 2006 GMT C=DE, CN=4 Public Key: key-0xbcb08645 : TRUE pathlen=0 white,red,magenta white black verifiable with 0x84FCBE09 (SHA1withRSA) Zertifikat G Serial No.: 10 C=DE, CN=7 NotBefore: Mar 1 00:00:00 2004 GMT Dec 31 23:59:59 2005 GMT C=DE, CN=Alice Public Key: key-0x770032ee Digital Signature, Encryption copper verifiable with 0xCCDD0088 (SHA1withRSA) Zertifikat H Serial No.: 25 C=DE, CN=4 NotBefore: Feb 1 00:00:00 2005 GMT Dec 31 23:59:59 2005 GMT C=DE, CN=Bob Public Key: key-0xabde2465 Digital Signature, Encryption black verifiable with 0xBCB08645 (SHA1withRSA) Zertifikat I Serial No.: 26 C=DE, CN=4 NotBefore: Feb 1 00:00:00 2005 GMT Dec 31 23:59:59 2005 GMT C=DE, CN=Carl Public Key: key-0x1bb44406 magenta verifiable with 0xBCB08645 (SHA1withRSA)