bernhard@1080: =================== bernhard@1080: Technische Referenz bernhard@1080: =================== emanuel@903: emanuel@903: emanuel@976: Welche Zertifikatsspeicher werden verwendet? emanuel@976: ============================================ emanuel@903: emanuel@903: Damit Zertifikaten in Anwendungen (wie z.B. Browser oder E-Mail-Klient) emanuel@903: vertraut werden kann, müssen die zugehörigen Wurzelzertifikate in den passenden emanuel@903: Zertifikatsspeichern des Systems installiert werden. bernhard@1052: TrustBridge übernimmt diesen Zugriff auf die Zertifikatsspeicher. emanuel@903: emanuel@976: Es gibt zwei gängige Zertifikatsspeicher, die von TrustBridge und den meisten emanuel@976: Anwendungen unterstützt werden: emanuel@976: emanuel@976: * der Mozilla NSS-Zertifikatsspeicher ("Network Security Services") und emanuel@976: * der Windows-System-Zertifikatsspeicher. emanuel@903: emanuel@903: emanuel@903: Chrome bzw. Chromium verwendet unter Windows den Windows-System-Speicher und unter emanuel@903: Ubuntu den NSS-Zertifikatsspeicher. Die nachfolgende Abbildung veranschaulicht emanuel@903: die verwendeten Zertifikatsspeicher unter Windows und GNU/Linux. emanuel@903: emanuel@903: .. figure:: _static/stores.png emanuel@903: :width: 100% emanuel@903: :alt: Übersicht der Zertifikatsspeicher emanuel@903: emanuel@903: *Abbildung 1: Übersicht der Zertifikatsspeicher* emanuel@903: emanuel@903: Windows-Zertifikatsspeicher emanuel@903: --------------------------- emanuel@903: emanuel@976: Der Windows 7 und 8 Zertifikatsspeicher kann in drei große Gruppen aufgeteilt werden: emanuel@976: emanuel@976: #. Zertifikate des aktuellen Benutzers emanuel@976: #. Zertifikate für alle Benutzer (Lokaler Computer) emanuel@976: #. Zertifikate für Systemdienste emanuel@976: emanuel@976: Diese Gruppen unterteilen sich wieder in eine Reihe von logischen Speichern. emanuel@976: emanuel@976: Für die Installation von vertrauenswürdigen Wurzelzertifikaten ist der emanuel@976: logische *Root*-Speicher relevant. Nur dort eingetragene Zertifikate emanuel@976: werden als *Trust Anchor* (Vertrauensanker) angesehen und zur emanuel@976: Validierung des Vertrauenspfads zu den weiteren Zertifikaten emanuel@976: verwendet. emanuel@976: emanuel@976: Der logische *Disallowed*-Speicher hat immer Vorrang. Befindet sich ein Zertifikat emanuel@976: sowohl im *Root* als auch im *Disallowed*-Speicher, gilt es als nicht vertrauenswürdig. emanuel@976: emanuel@976: emanuel@976: **Einschränkungen:** emanuel@976: Um unbefugte Manipulationen am Zertifikatsspeicher zu verhindern, werden von Microsoft emanuel@976: seit Windows XP SP2 folgende Schutzmaßnahmen vorgesehen: emanuel@976: emanuel@976: #. Um Zertifikate für alle Benutzer des lokalen Computers zu emanuel@976: bearbeiten, sind erhöhte Privilegien (Administrationsrechte) emanuel@976: erforderlich. emanuel@976: #. Änderungen (Löschen / Hinzufügen von Zertifikaten) am emanuel@976: *Root*-Speicher des aktuellen Nutzers erfordern die explizite emanuel@976: Einwilligung des Nutzers (siehe nachfolgende Abbildung), sofern der emanuel@976: Prozess keine erhöhten Privilegien besitzt. emanuel@976: emanuel@976: emanuel@976: .. figure:: _static/sicherheitswarnung.png emanuel@976: :alt: Windows-Sicherheitswarnung emanuel@976: emanuel@976: *Abbildung 2: Sicherheitswarnung beim Hinzufügen eines Wurzelzertifikats ohne Administrator-Rechte* emanuel@903: emanuel@903: emanuel@903: emanuel@976: Mozilla NSS-Zertifikatsspeicher emanuel@976: ------------------------------- emanuel@976: Die Mozilla-Anwendungen Thunderbird und Firefox, sowie Chromium unter emanuel@976: Ubuntu, verwenden die Mozilla "Network Security emanuel@976: Services" (NSS) Zertifikatsspeicher. emanuel@976: emanuel@976: Mozilla liefert den NSS-Zertifikatsspeicher mit einer Auswahl von emanuel@976: voreingesetllten vertrauenswürdigen bzw. nicht emanuel@976: vertrauenswürdigen Zertifikaten aus. emanuel@976: emanuel@976: **Einschränkungen:** emanuel@976: emanuel@976: * Anwendungen, die den NSS-Zertifikatsspeicher verwenden, sollten vor dem Zugriff geschlossen emanuel@976: werden. emanuel@976: * Um den NSS-Speicher anderer Nutzer zu manipulieren, sind erhöhte Rechte nötig. emanuel@976: * Um den NSS-Standard für neue Profile vorzugeben, sind abhängig vom Installationsort emanuel@976: ggf. erhöhte Rechte nötig. emanuel@976: emanuel@976: emanuel@976: emanuel@976: Wie wird der Transport abgesichert? emanuel@976: =================================== emanuel@976: TrustBridge sucht regelmäßig (alle 24 Stunden) auf dem offiziellen TrustBridge-Update-Server emanuel@977: nach aktualisierten Zertifikatslisten und neuen Softwareversionen. emanuel@976: emanuel@976: Sämtliche Transportprozesse sind kryptografisch nach aktuellem Stand emanuel@976: der Technik gegen unbefugte Manipulationen (Authentizität und emanuel@977: Integrität) gesichert. Es gibt drei Transportwege, die abgesichert emanuel@977: werden müssen: emanuel@976: emanuel@976: #. Verfügbarkeit von Aktualisierungen prüfen: emanuel@977: Die regelmäßige Übertragung der Information, ob neue Aktualisierungen emanuel@1005: von Zertifikatsliste oder Software verfügbar sind, wird über eine emanuel@977: HTTPS-Verbindung per TLS 1.2 (mit ECDSA brainpoolP256r1) durchgeführt. emanuel@976: #. Zertifikatslisten-Update durchführen: emanuel@976: Ist eine neue Zertifikatsliste verfügbar, wird die ganze Liste emanuel@977: gebündelt übertragen. Die Zertifikatslistendatei ist signiert (RSA 3076). emanuel@976: Vor einem Zertifikatslisten-Update wird sichergestellt, dass TrustBridge bereits in der emanuel@976: neusten Version installiert ist. emanuel@976: #. Software-Update durchführen: emanuel@976: Ist eine neue TrustBridge-Version verfügbar, kann diese mit einem emanuel@976: Klick auf eine entsprechende Meldung heruntergeladen und installiert emanuel@977: werden. Es wird eine vollständige TrustBridge-Installationsdatei übertragen emanuel@976: und im Hintergrund ausgeführt. Jede Software-Installationsdatei ist signiert. emanuel@976: Bei Fehlschlagen der Signaturprüfung (z.B. durch fehlerhaftes emanuel@976: Herunterladen) wird TrustBridge nicht aktualisiert. emanuel@976: emanuel@976: emanuel@976: emanuel@976: Wie sieht das Datenformat einer Zertifikatsliste aus? emanuel@976: ===================================================== emanuel@976: emanuel@976: Die Zertifikatsliste ist eine einzelne Text-Datei, welche von der emanuel@976: TrustBridge-Verwaltungsanwendung erzeugt wird. Diese Datei enthält emanuel@976: alle benötigten Informationen und basiert auf einer zeilenbasierten emanuel@976: Textformat. Dabei bleibt die Struktur für Menschen lesbar und die emanuel@976: meisten Inhalte können mit Standardwerkzeugen sowohl de- als auch emanuel@976: enkodiert werden. emanuel@976: emanuel@976: In der ersten Zeile der Datei ist die Base64-kodierte, kryptografische emanuel@976: Signatur über alle folgenden Zeilen (inklusive der Zeilenenden) emanuel@976: angegeben. So wird die Integrität und Authentizität dieser Daten vor emanuel@976: der Verarbeitung gesichert. emanuel@976: emanuel@976: Einzelne Zeilen haben das Format ``:``, wobei emanuel@976: der Buchstabe angibt, welche Art von Wert folgt. Die Länge der Zeilen emanuel@976: ist (für Version 1) auf 9999 Zeichen begrenzt, inklusive der beiden emanuel@976: Zeichen für Zeilenenden. Die Anzahl der Zeilen ist auf 1000 emanuel@976: beschränkt, was einer Dateigröße von maximal 10 Megabyte entspricht. emanuel@976: (In der Praxis wird die Dateigröße aber deutlich unter 100 Kilobyte emanuel@976: liegen.) Der Text wird in 7Bit-ASCII kodiert. emanuel@976: emanuel@976: Die Zertifikate selbst werden als Base64- und DER-kodierte Daten emanuel@976: aufgeführt. Dies entspricht dem Inhalt gängiger .pem-Dateien - jedoch emanuel@976: ohne den umschließenden BEGIN CERTIFICATE und END CERTIFICATE sowie emanuel@976: ohne den Zeilenumbrüchen. emanuel@976: emanuel@976: Jede Zeile muss mit einem der folgenden gültigen Buchstaben beginnen: emanuel@976: emanuel@976: * ``S:`` Die Signatur der Zertifikatsliste. emanuel@976: * ``F:`` Format-Version emanuel@976: * ``D:`` Zeitpunkt der Listenerstellen (UTC) emanuel@976: * ``I:`` Zu installierendes Zertifikat emanuel@976: * ``R:`` Zu entfernendes Zertifikat emanuel@976: emanuel@976: emanuel@976: Im Folgenden ein Beispiel für den Aufbau der Zertifikatslisten-Datei emanuel@976: mit zwei zu installierenden Zertifikaten und einem zu löschenden emanuel@976: Zertifikat. Die Signatur- und Zertifikatszeilen sind, aus Gründen der emanuel@976: Übersichtlichkeit, in diesem Beispiel gekürzt: emanuel@976: emanuel@976: .. parsed-literal:: emanuel@976: S:EjzX0sTkstnnGbPIC7n1a5WlYCFsthPl8OYplLyihR1RdqcUsSnikrVowFo8QgpMutcz0... emanuel@976: F:1 emanuel@976: D:2014-01-03T12:30Z emanuel@976: I:MIIEiTCCA3GgAwIBAgIDAWn+MA0GCSqGSIb3DQBQUAMEAxCzAJBVBAYTAlVTMRcwFQYDV... emanuel@976: I:MIIHojCCBoqgAwIBAgIDAW96MA0GCSqGSIb3DQEBBQUAGMMQswCDVQQGEwJJTDEWMBQGA... emanuel@976: R:MIIGUjCCBTqgAwIBAgIODocAAQACqS54FrSbGvYwDQKoZIhvcNAQBQAwfDELMAkGA1UEB... emanuel@976: