Temporal Analysis of X.509 Revocations and their Statuses
Adam Halim, Max Danielsson, Martin Arlitt and Niklas Carlsson
Paper:
Adam Halim, Max Danielsson, Martin Arlitt and Niklas Carlsson,
"Temporal Analysis of X.509 Revocations and their Statuses",
Proc. International Workshop on Traffic Measurements for Cybersecurity (WTMC),
June 2022.
(pdf)
Abstract:
Despite the X.509 public key infrastructure (PKI) being essential for ensuring the trust we place in our communication with web servers, the revocation of the trust placed in individual X.509 certificates is neither transparent nor well-studied, leaving many unanswered questions. In this paper, we present a temporal analysis of 36 million certificates, whose revocation statuses we followed for 120 days since first being issued. We characterize the revocation rates of different certificate authorities (CAs) and how the rates change over the lifetime of the certificates. We identify and discuss several instances where the status changes from ``revoked" to ``good", ``unauthorized" or ``unknown", respectively, before the certificate's expiry. This complements prior work that has observed such inconsistencies in some CAs' behavior after expiry but also highlight a potentially more severe problem. Our results highlight heterogeneous revocation practices among the CAs.
Data collection tool and datasets
To help build upon our work, below, we make available datasets and collection tools.
The dataset can be downloaded
here [add link]
and the
collection tool here [github].
If you use our tool or datasets in your research,
please include a reference to our WTMC 2022 paper
(pdf)
in your work.
Dataset A
The dataset contains OCSP statuses of revoked certificates in a "Tab"-separated text file with the following fields:
-
certificate: an internal certificate ID
-
first_pass_status: status code returned during the first pass
-
not_before: start of the validity period of a certificate
-
not_after: end of the validity period of a certificate
-
status: status code
-
status_time_min_unix: the first time the status code was observed for the certificate
-
status_time_max_unix: the first time the status code was observed for the certificate
-
count: number of status observations with the code during the above interval
-
certificate: an internal certificate ID (duplicate)
-
serial: serial number of a certificate
-
name: common name of a certificate
-
subject: certificate subject, JSON encoded
-
issuer: issuer, JSON encoded
-
version: certificate version, OpenSSL enumeration
-
purposes: certificate purposes, JSON encoded
-
hash: certificate hash, SHA256
-
basicConstraints:
-
keyUsage: keyUsage as interpreted by OpenSSL
-
extendedKeyUsage: extended key usage as interpreted by OpenSSL
-
authorityKeyIdentifier: reference to the key of the issuer
-
subjectAltName: alternative common names, e.g. additional domains
-
hasSCT: set to 1, if the certificate contains at least one Signed Certificate Timestamp
-
keyType: key type (e.g. RSA, EC)
-
keyBits: key length in bits
-
extensions: certificate extensions, JSON encoded
-
isEV: set to 1, if the certificate is an Extended Validation certificate
-
ctLog: the CT log URL where the certificate was captured from
-
certType: certificate type (DV/OV/EV)
-
revocationReason: CRLReason from RFC 3280 (https://datatracker.ietf.org/doc/html/rfc3280). -1 if no reason was given.
-
revocationDate: time when revocation was observed (in unixtime).
-
unrevocation:
-
verifiedNSS: 1 if certificate is verified against NSS root store, 0 otherwise.
-
verifiedApple: 1 if certificate is verified against Apple root store, 0 otherwise.
-
verifiedMicrosoft: 1 if certificate is verified against Microfost root store, 0 otherwise.
The timestamps are provided in the form of Unix-timestamps.
Status codes:
-
1 - Good (non-revoked)
-
2 - Revoked
-
5 - Neither OCSP nor CRL entry for certificate
-
6 - Unauthorized (A non-signed OCSP response)
-
10 - Unknown (Any non-standard response or an explicit OCSP response with a status Unknown)
**This was used for everything else that didn't match any other codes**
-
124 - Timeout (It took more than 5 seconds to get a response)
Citation format
When citing our dataset or work, please cite the conference version of the paper:
-
Adam Halim, Max Danielsson, Martin Arlitt and Niklas Carlsson,
"Temporal Analysis of X.509 Revocations and their Statuses",
Proc. International Workshop on Traffic Measurements for Cybersecurity (WTMC),
June 2022.
(pdf)