Skip to content

Commit 9a05abd

Browse files
committed
Address feedback by Russ Housley
Some inconsistencies between certificate authority and certification authority, fixes to the ASN.1 module.
1 parent bb81561 commit 9a05abd

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

draft-davidben-tls-merkle-tree-certs.md

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ Signatureless certificate:
297297
In Certificate Transparency, a CA first certifies information by signing it, then submits the resulting certificate (or precertificate) to logs for logging. Merkle Tree Certificates invert this process: the CA certifies information by logging it, then submits the log to cosigners to verify log operation. A certificate is assembled from the result and proves the information is in the CA's log.
298298

299299
~~~aasvg
300-
+-- Certificate Authority -----+ +-- Authenticating Party ----+
300+
+-- Certification Authority ---+ +-- Authenticating Party ----+
301301
| | | |
302302
| 2. Validate request <---+----+-- 1. Request certificate |
303303
| | | | |
@@ -360,7 +360,7 @@ A certificate with cosignatures is known as a *full certificate*. Analogous to X
360360
This same issuance process also produces a *signatureless certificate*. This is an optional, optimized certificate that avoids all cosignatures, including the CA signature. Signatureless certificates are available after a short period of time and usable with up-to-date relying parties.
361361

362362
~~~aasvg
363-
+-- Certificate Authority -------+
363+
+-- Certification Authority -----+
364364
| | +-- Update Channel --+
365365
| /\ | | |
366366
| / \ 1. Allocate landmarks -+--+----------------+ |
@@ -943,7 +943,7 @@ TBSCertificateLogEntry ::= SEQUENCE {
943943
subjectPublicKeyInfoHash OCTET STRING,
944944
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
945945
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
946-
extensions [3] EXPLICIT Extensions OPTIONAL }
946+
extensions [3] EXPLICIT Extensions{{CertExtensions}} OPTIONAL }
947947
~~~
948948

949949
The `version`, `issuer`, `validity`, `subject`, `issuerUniqueID`, `subjectUniqueID`, and `extensions` fields have the corresponding semantics as in {{Section 4.1.2 of !RFC5280}}, with the exception of `subjectPublicKeyInfoHash`. `subjectPublicKeyInfoHash` contains the hash of subject's public key as a SubjectPublicKeyInfo ({{Section 4.1.2.7 of !RFC5280}}). The hash uses the log's hash function ({{log-parameters}}) and is computed over the SubjectPublicKeyInfo's DER {{X.690}} encoding. The `issuer` field MUST be the issuance log's log ID as an X.509 distinguished name, as described in {{log-ids}}.
@@ -1128,7 +1128,7 @@ For any given TBSCertificateLogEntry, there are multiple possible certificates t
11281128

11291129
The information is encoded in an X.509 Certificate {{!RFC5280}} as follows:
11301130

1131-
The TBSCertificate's `version`, `issuer`, `validity`, `subject`, `issuerUniqueID`, `subjectUniqueID`, and `extensions` MUST match the corresponding fields of the TBSCertificateLogEntry. Per {{log-entries}}, this means `issuer` MUST be the issuance log's log ID as an X.509 distinguished name, as described in {{log-ids}}.
1131+
The TBSCertificate's `version`, `issuer`, `validity`, `subject`, `issuerUniqueID`, `subjectUniqueID`, and `extensions` MUST be equal to the corresponding fields of the TBSCertificateLogEntry. If any of `issuerUniqueID`, ``subjectUniqueID`, or `extensions` is absent in the TBSCertificateLogEntry, the corresponding field MUST be absent in the TBSCertificate. Per {{log-entries}}, this means `issuer` MUST be the issuance log's log ID as an X.509 distinguished name, as described in {{log-ids}}.
11321132

11331133
The TBSCertificate's `serialNumber` MUST contain the zero-based index of the TBSCertificateLogEntry in the log. {{Section 4.1.2.2 of !RFC5280}} forbids zero as a serial number, but {{log-entries}} defines a `null_entry` type for use in entry zero, so the index will be positive. This encoding is intended to avoid implementation errors by having the serial numbers and indices off by one.
11341134

@@ -1658,16 +1658,26 @@ IMPORTS
16581658
{ iso(1) identified-organization(3) dod(6) internet(1)
16591659
security(5) mechanisms(5) pkix(7) id-mod(0)
16601660
id-mod-algorithmInformation-02(58) }
1661-
ATTRIBUTE
1661+
Extensions{}, ATTRIBUTE
16621662
FROM PKIX-CommonTypes-2009 -- in [RFC5912]
16631663
{ iso(1) identified-organization(3) dod(6) internet(1)
16641664
security(5) mechanisms(5) pkix(7) id-mod(0)
1665-
id-mod-pkixCommon-02(57) } ;
1665+
id-mod-pkixCommon-02(57) }
1666+
CertExtensions
1667+
FROM PKIX1Implicit-2009 -- in [RFC5912]
1668+
{ iso(1) identified-organization(3) dod(6) internet(1)
1669+
security(5) mechanisms(5) pkix(7) id-mod(0)
1670+
id-mod-pkix1-implicit-02(59) }
1671+
Version, Name, Validity, UniqueIdentifier
1672+
FROM PKIX1Explicit-2009 -- in [RFC5912]
1673+
{ iso(1) identified-organization(3) dod(6) internet(1)
1674+
security(5) mechanisms(5) pkix(7) id-mod(0)
1675+
id-mod-pkix1-explicit-02(51) }
16661676
TrustAnchorID
16671677
FROM TrustAnchorIDs-2025 -- in [I-D.ietf-tls-trust-ancohor-ids]
16681678
{ iso(1) identified-organization(3) dod(6) internet(1)
16691679
security(5) mechanisms(5) pkix(7) id-mod(0)
1670-
id-mod-trustAnchorIDs-2025(TBD) }
1680+
id-mod-trustAnchorIDs-2025(TBD) } ;
16711681

16721682
TBSCertificateLogEntry ::= SEQUENCE {
16731683
version [0] EXPLICIT Version DEFAULT v1,
@@ -1677,7 +1687,7 @@ TBSCertificateLogEntry ::= SEQUENCE {
16771687
subjectPublicKeyInfoHash OCTET STRING,
16781688
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
16791689
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
1680-
extensions [3] EXPLICIT Extensions OPTIONAL }
1690+
extensions [3] EXPLICIT Extensions{{CertExtensions}} OPTIONAL }
16811691

16821692
id-alg-mtcProof OBJECT IDENTIFIER ::= {
16831693
iso(1) identified-organization(3) dod(6) internet(1) security(5)
@@ -2100,3 +2110,5 @@ In draft-04, there is no fast issuance mode. In draft-05, frequent, non-landmark
21002110
- Editorial fixes
21012111

21022112
- Set a more accurate intended status
2113+
2114+
- Fixes to ASN.1 module

0 commit comments

Comments
 (0)