Bei Fragen zu dieser Richtlinie wenden Sie sich bitte an das CT Policy-Forum: ct-policy@chromium.org
Wenn das TLS-Zertifikat (Transport Layer Security) einer Verbindung in einer App validiert wird, die die Zertifikatstransparenz aktiviert hat, wird geprüft, ob es der Android-Richtlinie zur Zertifikatstransparenz (Certificate Transparency, CT) entspricht. Zertifikate, die von signierten Zertifikats-Zeitstempeln (Signed Certificate Timestamps, SCTs) begleitet werden, die dieser Richtlinie entsprechen, gelten als CT-konform.
Die Einhaltung der CT-Anforderungen wird durch ein Zertifikat und eine Reihe von begleitenden SCTs erreicht, die während der Zertifikatsvalidierung eine Reihe von technischen Anforderungen erfüllen, die von gängigen TLS-Bibliotheken (einschließlich der integrierten Conscrypt-Bibliothek von Android) erzwungen werden. Diese Anforderungen sind in dieser Richtlinie definiert.
Status von CT-Logs
Die Einhaltung der CT-Anforderungen in Android wird durch die Auswertung von SCTs aus CT-Logs und die Überprüfung, ob sich diese Logs zum Zeitpunkt der Prüfung im richtigen Status befinden, ermittelt. Die möglichen Status eines CT-Logs:
Pending
Qualified
Usable
ReadOnly
Retired
Rejected
Um die Anforderungen an die CT-Compliance unter Android besser nachvollziehen zu können, werden die Definition dieser Status, die Anforderungen an Protokolle in den einzelnen Status sowie die Auswirkungen dieser Status auf das Android-Verhalten im Erläuternden Artikel zum Lebenszyklus von CT-Protokollen der Chrome-Dokumentation ausführlich beschrieben.
CT-konforme Zertifikate
Ein TLS-Zertifikat ist CT-konform, wenn es mit einer Reihe von SCTs geliefert wird, die je nach Übermittlung der SCTs an Android mindestens eines der nachstehend definierten Kriterien erfüllen. In Android-Apps, in denen die CT-Pflicht gilt, müssen alle öffentlich vertrauenswürdigen TLS-Zertifikate CT-konform sein, damit sie validiert werden können. Zertifikate, die nicht in CT protokolliert werden oder nicht genügend SCTs haben, gelten jedoch nicht als falsch ausgestellt.
Bei der Bewertung eines Zertifikats auf Einhaltung der CT-Compliance berücksichtigt Android mehrere Faktoren, darunter die Anzahl der vorhandenen SCTs, wer das CT-Log betreibt, das die SCT ausgestellt hat, und in welchem Status sich das CT-Log befand, das die SCT ausgestellt hat, sowohl zum Zeitpunkt der Validierung des Zertifikats als auch zum Zeitpunkt der Erstellung der SCT durch das CT-Log.
Je nachdem, wie die SCTs für Android präsentiert werden, kann die CT-Compliance durch Erfüllung eines der folgenden Kriterien erreicht werden:
Eingebettete SCTs:
- Mindestens ein eingebettetes SCT aus einem CT-Log, das zum Zeitpunkt der Prüfung
Qualified
,Usable
oderReadOnly
war, und - Es gibt eingebettete SCTs aus mindestens N verschiedenen CT-Logs, die zum Zeitpunkt der Überprüfung
Qualified
,Usable
,ReadOnly
oderRetired
waren. N ist in der folgenden Tabelle definiert. - Von den SCTs, die Anforderung 2 erfüllen, müssen mindestens zwei von verschiedenen CT Log-Betreibern ausgestellt werden, die von Android anerkannt sind.
- Von den SCTs, die Anforderung 2 erfüllen, muss mindestens eine aus einem Protokoll ausgestellt werden, das von Android als RFC 6962-konform erkannt wird.
Zertifikatslaufzeit | Anzahl der SCTs aus verschiedenen CT-Logs |
---|---|
<= 180 Tage | 2 |
> 180 Tage | 3 |
SCTs, die über OCSP oder TLS gesendet werden:
- Mindestens zwei SCTs aus einem CT-Log, das zum Zeitpunkt der Prüfung
Qualified
,Usable
oderReadOnly
war, und - Von den SCTs, die Anforderung 1 erfüllen, müssen mindestens zwei von verschiedenen CT-Log-Betreibern ausgestellt werden, die von Android anerkannt sind.
- Von den SCTs, die Anforderung 1 erfüllen, muss mindestens eine SCT aus einem CT-Log ausgegeben werden, das von Android als RFC6962-konform erkannt wird.
Sowohl für eingebettete SCTs als auch für solche, die mit OCSP oder TLS bereitgestellt werden, wird die Eindeutigkeit des Log-Betreibers durch separate Einträge im Abschnitt „operators“ von log_list.json definiert.
In seltenen Fällen, in denen ein CT-Log während seiner Lebensdauer den Betreiber wechselt, enthalten CT-Logs optional eine Liste von previous_operators
, zusammen mit dem letzten Zeitstempel, zu dem dieses Log vom vorherigen Betreiber betrieben wurde.
Damit Änderungen am Log-Operator nicht zu Fehlern bei vorhandenen Zertifikaten führen, wird der Log-Operator jedes SCT als der Operator zum Zeitpunkt der Ausstellung des SCT ermittelt. Dazu wird der SCT-Zeitstempel mit den previous_operators
-Zeitstempeln verglichen, sofern vorhanden.
Wichtige Hinweise
Solange eines der oben genannten Kriterien für die Einhaltung der CT-Anforderungen durch eine Kombination von SCTs erfüllt wird, die im Handshake präsentiert werden, wirken sich zusätzliche SCTs unabhängig vom Status des SCTs nicht positiv oder negativ auf den Status der CT-Compliance eines Zertifikats aus.
Damit ein Zertifikat die CT-Compliance erfüllt, muss ein SCT vor dem Retired
-Zeitstempel des Logs ausgestellt worden sein, sofern vorhanden.
Android verwendet die früheste SCT unter allen präsentierten SCTs, um die Einhaltung der CT-Anforderungen anhand der Zeitstempel Retired
im CT-Log zu bewerten.
Dies berücksichtigt Grenzfälle, in denen ein CT-Log während des Einreichens von Anfragen zum Zertifikats-Logging in den Ruhestand versetzt wird.
„Eingebettete SCT“ bezeichnet eine SCT, die mit der SignedCertificateTimestampList
X.509v3-Erweiterung im Zertifikat selbst bereitgestellt wird. Viele TLS-Server unterstützen OCSP-Stapelung oder die TLS-Erweiterung nicht. Daher sollten Zertifizierungsstellen SCTs in ausgestellte Zertifikate einbetten, um eine erfolgreiche Validierung oder EV-Behandlung unter Android zu ermöglichen.
So werden CT-Logs zu Android hinzugefügt
Die Kriterien dafür, wie CT-Protokolle Qualified
werden können, und welche Umstände dazu führen können, dass sie Retired
werden, finden Sie in der Chrome-Richtlinie für CT-Protokolle.
Zeitüberschreitung bei der Durchsetzung von CT
Jeden Tag veröffentlicht Google eine neue CT Log-Liste mit einer neuen log_list_timestamp
. Einmal täglich versuchen Android-Geräte, die neueste Version dieser Liste zu Bestätigungszwecken herunterzuladen. Wenn auf dem Gerät keine Protokollliste verfügbar ist oder der Zeitstempel der Protokollliste älter als 70 Tage ist, wird die Erzwingung von CT deaktiviert.
Diese Zeitüberschreitung ist für das CT-System von entscheidender Bedeutung, da neue CT-Logs nach dem Erreichen des Status Qualified
innerhalb eines bestimmten Zeitraums sicher in den Status „Verwendbar“ wechseln können.