APNIC Home APNIC Home
Info & FAQ |  Resource services |  Training |  Meetings |  Membership |  Documents |  Whois & Search |  Internet community

You're here:  Home  Mailing Lists rescert 


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Rescert] Draft of signed manifest design



Rob,

I set off to create a manifest syntax in ASN.1, after our meeting in Tallin. I sent a copy to Geoff, who noted a possible omission, and then I sent a message noting what I think needs to be done, in terms of manifest processing (not just syntax) to ensure security. My proposed syntax and my security discussion is included below.

Iyr syntax looks very similar in several respects. We both have borrowed the CRL this/next update model, and a serial number to detect unscheduled manifest issuance. We also both noted the opportunity to use CMS as the signature format and to carry the EE cert there. The only differences I see are: - you list a file name and a hash of the file name, whereas I list URIs.

Steve
------

The manifest is carried in a CMS wrapper, and that wrapper can carry the EE cert needed to verify the manifest, so we don't have to make explicit provision for carriage of that EE cert (or a pointer to it) in the manifest ASN.1


Manifest ::=    SEQUENCE {
        version         INTEGER DEFAULT 0, -- to allow for future versions

manifestNumber INTEGER, -- to identify manifests issued between scheduled -- issuance dates thisUpdate GeneralizedTime, -- date and time this manifest was issued nextUpdate GeneralizedTime, -- date and time of next scheduled manifest
        certfiles       SEQUENCE (SIZE (1..MAX)) OF IA5String,
                           -- list of one of more URIs for cert files
        cRLfiles        SEQUENCE (SIZE (1..MAX)) OF IA5String,
                                  -- list of one or more URIs for CRL files
	rOAfiles        SEQUENCE (SIZE (1..MAX)) OF IA5String OPTIONAL
                              -- list of one or ore URIs for ROA files
                        }

It's necessary but not sufficient to verify the signature on a manifest using an EE cert that traces to a trust anchor. Let me explain why, usng an example.

A relying party will process a set of manifests it has retrieved from the repository system. It could encounter two manifests that refer to the same place in the repository. Each has a different signer and each enumerates different contents for the repository location in question. The signature on both manifests will be verifiable using (EE) certs that verify under the PKI. How does the relying party now which manifest is valid? It is not enough to compare a URI against the SIA value in the EE cert used to verify the manifest signature, because that is completely under the control of the CA that issued the EE cert, i.e., an ISP can generate any cert it wishes, subject to the 3779 constraints.

This suggests to me that an RP will not be able to detect a bogus manifest just based on the usual PKI checks. Instead, the RP will have to verify that the certs, CRLs, and ROAs listed in the manifest can be verified using the CA cert for the EE cert used to verify the manifest. This check prevents one registry/ISP from generating a manifest that covers certs (and CRLs and ROAs) associated with a different registry/ISP. It also says that we want ALL CAs to generate manifests, so that RPs will look for them at every CA-point in the hierarchy and be suspicious if a manifest is missing.

We might omit CRLs from manifests, because the extant NextIssueDate mechanism in a CRL will detect a missing, scheduled CRL. However, including CRL files in manifests does have the advantage of allowing one to detect a deleted, unscheduled CRL, which is a nice feature. I also thought about omitting ROA files, because of the 1-to-1 correspondence with the EE certs used to verify them, but since we are adding EE certs for manifest verification, and may add EE certs for other functions, I dropped that attempted efficiency.

Steve