Fragen zu dieser Richtlinie richten Sie bitte an das CT-Richtlinienforum: ct-policy@chromium.org
Wenn das TLS-Zertifikat (Transport Layer Security) einer Verbindung validiert wird, wird es auf die Einhaltung der Android Certificate Transparency (CT) Policy geprüft. Zertifikate, die mit Zeitstempeln signierter Zertifikate (Signed Certificate Timestamps, SCTs) versehen sind, die dieser Richtlinie entsprechen, gelten als CT-konform.
Die CT-Konformität wird erreicht, wenn ein Zertifikat und eine Reihe begleitender SCTs eine Reihe technischer Anforderungen erfüllen, die von gängigen TLS-Bibliotheken (einschließlich der integrierten Conscrypt) während der Zertifikatvalidierung durchgesetzt werden und in dieser Richtlinie definiert sind.
CT-Logstatus
Die CT-Konformität in Android wird durch die Auswertung von SCTs aus CT-Logs und die Prüfung bestimmt, ob sich diese Logs zum Zeitpunkt der Prüfung im richtigen Status befinden. Ein CT-Log kann folgende Status haben:
PendingQualifiedUsableReadOnlyRetiredRejected
Um das Verständnis der Anforderungen an die CT-Konformität in Android zu erleichtern, werden die Definition dieser Status, die Anforderungen an Logs in den einzelnen Status, sowie die Auswirkungen dieser Status auf das Android-Verhalten im CT Log Lifecycle Explainer der Chrome-Dokumentation ausführlich beschrieben.
CT-konforme Zertifikate
Ein TLS-Zertifikat ist CT-konform, wenn es von einer Reihe von SCTs begleitet wird, die mindestens eines der später definierten Kriterien erfüllen, je nachdem, wie die SCTs an Android übermittelt werden. In CT-erzwingenden Android-Apps müssen alle öffentlich vertrauenswürdigen TLS-Zertifikate CT-konform sein, um erfolgreich validiert zu werden. Zertifikate, die nicht in CT-Logs erfasst wurden oder nicht genügend SCTs haben, gelten jedoch nicht als falsch ausgestellt.
Bei der Bewertung eines Zertifikats auf CT-Konformität berücksichtigt Android mehrere Faktoren, darunter die Anzahl der vorhandenen SCTs, den Betreiber des CT-Logs, der die SCT ausgestellt hat, und den Status des CT-Logs, der die SCT ausgestellt hat, sowohl zum Zeitpunkt der Zertifikatvalidierung als auch zum Zeitpunkt der Erstellung der SCT durch das CT-Log.
Je nachdem, wie die SCTs an Android übermittelt werden, kann die CT-Konformität erreicht werden, indem eines der folgenden Kriterien erfüllt wird:
Eingebettete SCTs :
- Mindestens eine eingebettete SCT aus einem CT-Log, das zum Zeitpunkt der Prüfung den Status
Qualified,UsableoderReadOnlyhatte. - Es gibt eingebettete SCTs aus mindestens N verschiedenen CT-Logs, die zum Zeitpunkt der Prüfung den Status
Qualified,Usable,ReadOnlyoderRetiredhatten. N ist in der folgenden Tabelle definiert. - Unter den SCTs, die Anforderung 2 erfüllen, müssen mindestens zwei SCTs von verschiedenen CT-Log-Betreibern ausgestellt worden sein, die von Android erkannt werden.
| Lebensdauer des Zertifikats | Anzahl der SCTs aus verschiedenen CT-Logs |
|---|---|
| <= 180 Tage | 2 |
| > 180 Tage | 3 |
SCTs, die über OCSP oder TLS bereitgestellt werden :
- Mindestens zwei SCTs aus einem CT-Log, das zum Zeitpunkt der Prüfung den Status
Qualified,UsableoderReadOnlyhatte. - Unter den SCTs, die Anforderung 1 erfüllen, müssen mindestens zwei SCTs von verschiedenen CT-Log-Betreibern ausgestellt worden sein, die von Android erkannt werden.
Sowohl für eingebettete SCTs als auch für SCTs, die über OCSP oder TLS bereitgestellt werden, wird die Eindeutigkeit des Log-Betreibers durch separate Einträge im Abschnitt „Betreiber“ der Loglistedefiniert.
In dem seltenen Fall, dass ein CT-Log während seiner Lebensdauer den Betreiber wechselt, enthalten CT-Logs optional eine Liste der previous_operators mit dem letzten Zeitstempel, zu dem dieses Log vom vorherigen Betreiber betrieben wurde.
Damit Änderungen am Log-Betreiber keine Probleme mit vorhandenen Zertifikaten verursachen, wird der Log-Betreiber jeder SCT als der Betreiber zum Zeitpunkt der SCT-Ausstellung festgelegt. Dazu wird der SCT-Zeitstempel mit den Zeitstempeln der previous_operators verglichen, falls vorhanden.
Wichtige Hinweise
Solange eines der oben genannten CT-Konformitätskriterien durch eine Kombination von SCTs erfüllt wird, die im Handshake präsentiert werden, wirken sich zusätzliche SCTs unabhängig vom Status der SCT nicht positiv oder negativ auf den CT-Konformitätsstatus eines Zertifikats aus.
Damit eine SCT zur CT-Konformität eines Zertifikats beitragen kann, muss sie vor dem Zeitstempel Retired des Logs ausgestellt worden sein, falls vorhanden.
Android verwendet die früheste SCT unter allen präsentierten SCTs, um die CT-Konformität anhand der Zeitstempel Retired des CT-Logs zu bewerten.
So werden Grenzfälle berücksichtigt, in denen ein CT-Log während der Übermittlung von Zertifikatprotokollierungsanfragen den Status „Retired“ erhält.
„Eingebettete SCT“ bedeutet eine SCT, die mit der X.509v3-Erweiterung SignedCertificateTimestampList im Zertifikat selbst bereitgestellt wird. Viele TLS-Server unterstützen OCSP Stapling oder die TLS-Erweiterung nicht. Daher sollten Zertifizierungsstellen darauf vorbereitet sein, SCTs in ausgestellte Zertifikate einzubetten, um eine erfolgreiche Validierung oder EV-Behandlung in Android zu gewährleisten.
So werden CT-Logs zu Android hinzugefügt
Die Kriterien dafür, wie CT-Logs den Status Qualified erhalten können, und die
Umstände, die dazu führen können, dass sie den Status Retired erhalten, finden Sie in der Chrome CT
Log Policy.
CT-Erzwingungs-Timeout
Google veröffentlicht jeden Tag eine neue CT-Logliste mit einem neuen log_list_timestamp. Einmal täglich versuchen Android-Geräte, die neueste Version dieser Liste zu Überprüfungszwecken herunterzuladen. Wenn zu einem bestimmten Zeitpunkt keine Logliste auf dem Gerät verfügbar ist oder der Zeitstempel der Logliste älter als 70 Tage ist, wird die CT-Erzwingung deaktiviert.
Dieses Timeout bietet eine wichtige Sicherheit für das CT-System, dass neue CT-Logs innerhalb einer bestimmten Zeit nach dem Status Qualified sicher in den Status „Usable“ übergehen können.
Android-Logliste
Die Android-Logliste wird in log_list.json veröffentlicht und täglich aktualisiert. Diese Logliste wird ohne stabile API, SLA oder Verfügbarkeitsgarantien angeboten.
Android stellt seine CT-Logliste für Zertifikatsender (z. B. Zertifizierungsstellen) und CT-Beobachter und ‑Prüfer zur Verfügung, die mit den CT- und WebPKI-Systemen kompatibel bleiben oder deren Inhalte untersuchen möchten.
Die unbefugte Verwendung der Android-CT-Logliste gefährdet nicht nur Ihre Nutzer, sondern auch Android-Nutzer und das CT-System insgesamt. Wenn Sie die CT-Erzwingung in Ihre App einbauen möchten, verwenden Sie einen Mechanismus, der von der Android Plattform unterstützt wird.
Die Verwendung der Android-CT-Logliste außerhalb dieser Richtlinie erfolgt auf eigenes Risiko und kann zu Problemen mit Ihrer Anwendung oder Bibliothek führen. Android muss in der Lage sein, Änderungen an der CT-Logliste vorzunehmen, um auf Vorfälle im CT-System zu reagieren und so die Sicherheit der Android-Nutzer zu gewährleisten. Android kann Maßnahmen ergreifen, um zu verhindern, dass Abhängigkeiten von Drittanbietern von der CT-Logliste die Fähigkeit von Android beeinträchtigen, auf solche Vorfälle zu reagieren. Dazu gehören auch unangekündigte Änderungen an der Logliste, um die unbefugte Verwendung zu unterbinden.