Subject: RE: SkipCerts Question [RFC3280]

From: Sharon Boeyen <[email-masked]>
Date: Thu, 27 Feb 2003 11:02:23 -0500

Santosh and I did chat on the phone and worked through the processing steps
in both 
509 and 3280 for the example (see below). Both would have the same outcome
for the path,
however both Santosh and I believe the text in 3280 that describes the
policyConstraints 
extension needs to be changed to align with both the 3280 path validation
procedure and 
with 509 itself. Currently the text in 3280 clause 4.2.1.12 aligns with the
pre DR 222 X.509
description, but the 3280 validation process aligns with the post DR 222
policy constraints. 
Santosh may propose some rewording for 4.2.1.12. 

Here is how X.509 would process the sample path

- when processing certificate 0 the pending flag is unset
- when processing certificate 1 clause 10.5.3 sets the pending variable to 1
- when processing certificate 3 clause 10.5.3 decrements the pending
variable to 0 and sets 
the explicit-policy-indicator flag on. Clause 10.5.3 and 10.5.4 perform the
checks to satisfy the 
explicit-policy-indicator flag.

Here is how RFC 3280 would process the sample path

- when processing certificate 0 the pending flag is unset
- when processing certificate 1 clause 6.1.4 step i sets the pending
variable to 1
- when processing certificate 2 clause 6.1.5 step a decrements the pending
variable to 0.
- the very last test conducted at the end of 6.1.5 (see paragraph
immediately above 6.1.6) says that 
the path succeeds if explicit-policy is greater than zero. In this example
explicit-policy has reached 
zero and therefore the path fails.

Because X.509 requires only that an implementation be "functionally
equivalent to the external 
behaviour resulting from this procedure" the RFC 3280 path validation
algorithm is conformant because 
the external behaviour is the same.

Cheers,
Sharon 

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Thursday, February 27, 2003 10:15 AM
To: 'Sharon Boeyen'; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Sharon:

My reading is very simple.  My reading is as follows and it applies in
general and not just to the last certificate in chain or other esoteric
stuff.

2000 edition of X.509 starts applying the skipCerts for
requireExplicitPolicy to the certificate in which it is asserted.

3280 applies the skipCerts for requireExplicitPolicy to the next
certificate.

For example, in the example Kodo cited (and in a private e-mail he agreed
with me), 3280 will not require explicit policy for the path and X.509 will.
The reasons are articulated in this thread by me. 

I will call you to discuss this.

-----Original Message-----
From: Sharon Boeyen [mailto:[email-masked]] 
Sent: Thursday, February 27, 2003 10:05 AM
To: 'Santosh Chokhani'; Sharon Boeyen; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Santosh, I wasn't aware there was a difference. If there is we need to
resolve 
that somehow. The X.509 text was changed via DR 222 against the 97 edition.
That 
was the big DR that completely replaced the path processing text in 509 to
address 
a number of primarily policy-related issues. I'm not sure I still have all
the 
history of ballot comments etc, but I'm fairly sure that one of our goals
was 
alignment between PKIX and 509 at the time. 

To try to clarify exactly what the difference is, do you agree with the
following?

a) If the final intermediate cert in the path causes the count to reach
zero, the existence 
   of an end certificate causes the path to be rejected in both 509 and PKIX
if there isn't 
   at least one acceptable policy in all certs in the path.

If that is true, then as long as the final certificate in the path is always
treated as an 
end certificates, as opposed to an intermediate certificate, I don't believe
there is any 
misalignment between PKIX and 509. Am I missing something or do we just need
to clarify that 
the final cert in a path is always treated treated as an end certificate
regardless of whether 
it is a CA cert or an EE cert? 

Cheers,
Sharon

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Wednesday, February 26, 2003 8:53 PM
To: 'Sharon Boeyen'; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Sharon:

I do not understand your first point.  Are you saying that X.509 will be
changed to align with 3280 and in that case skipCerts = 0 for
requireExplicitPolicy will also take effect in the next certificate?  Or,
are you saying that the difference between 3280 and X.509 will remain?  I
assume you agree that I am reading 3280 correctly.

BTW, on the second point, I meant to say that the trust anchor issues a CA
certificate and the CA  is acting as an end entity and we want the
requireExplicitPolicy to take affect immediately. 

-----Original Message-----
From: Sharon Boeyen [mailto:[email-masked]] 
Sent: Wednesday, February 26, 2003 4:37 PM
To: [email-masked]'; n Russ Housley
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Santosh I agree with you that the extension in cert 1 with a skip certs
value of 1 DOES 
mean that the existence of cert 2 in the path reduces the skip certs value
to 0 and the 
constraint takes effect immediately. This is not in contradiction with X.509
however, as 
a Defect Report was issued that aligned the two. The last time I looked at
the wording 
in 509 however, I noticed that 2 additional changes are needed and submitted
a new DR 
to the London meeting to fix them. I wasn't at the London meeting however
and don't know 
what happened to the DR yet. 

However, one point I disagree with is with respect to your example of
End-Entity certificates. If a trust anchor is issuing EE certs directly
there is no certificate that they could include the policy constraints
extension in. It is only permitted in CA certificates. EE certs however 
DO decrement the value of the skip certs for requiresExplicitPolicy and as
such can have an 
effect on whether or not the policy is required. 509 did, as part of the
original DR make that 
change to allow them to decrement the count, but did not change the
requirement that the extension 
only be permitted in CA certs. 

Note, that this is the ONLY place where skipCerts is treated this way. For
inhibitPolicyMapping and 
inhibitAnyPolicy, they take effect on subsequent certificates only, not the
one that causes the 
count to reach zero and the certificates that need to align with the
constraint are ONLY those that 
are subsequent to the zero count, whereas with requiresExplicitPolicy it is
ALL certs in the path 
including those (if any) prior to the zero count being reached.

Cheers,
Sharon 

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Friday, February 21, 2003 4:47 AM
To: n Russ Housley
Cc: [email-masked]; [email-masked]
Subject: Re: SkipCerts Question [RFC3280]

Kozo and Russ:

Both of your e-mails are ambiguous to me.

Let me try to provide a clear answer and hopefully it will relate 
to the question being asked.

1.  For require explicit policy, the skipCerts starts applying to 
the certificate in which the value is asserted.  3280 is in contradiction 
in this area with X.509.  The reason it was done is so that in a 
case where trust anchor issues end entity certificates, the infrastructure 
can control turning on of this feature.

2.  DFor requireExpliclityPolicy once a value of zero is reached, requires a
common policy in each certificate (taking policy mapping 
into consideration).  Furthermore, if user initializes the path validation 
with one or more policies (other than anyPolicy), at least one of 
the user policies must appear in each certificate (again taking policy 
mapping into consideration).

3.  3280 is incomplete in the area of processing requireExplicitPolicy 
related stuff.  Specifically, it does not define how there is policy 
failure due to the requireExplicitPolicy being set.

In Kozo's scenario, cert2 need not have requireExplicitPolicy field. But,
since skipCert applies to cert1, by the time cert2 is processed,
requireExplicitPolicy flag is set and all three certiifcates cert0, cert1,
and cert2 must have at least one common policy asserted. 
In addition, if user initialized the path processing with some explicit 
policy(s), at least one of those policies must be common to all three 
certificates.

Any other interpretation by 3280 makes 3280 inconsistent with X.509 
in the area of policy processing.

At Thursday, 20 February 2003, Russ Housley <[email-masked]> 
wrote:

>Kozo:
>
>You understand correctly --  cert2 is not required to have an explicit
policy.
>
>Russ
>
>At 07:45 PM 2/17/2003 +0900, [email-masked] wrote:
>
>>Dear all,
>>
>>We are now testing our certificate path validation
>>program in Japan.
>>And I have a question on the "SkipCerts" in the RFC3280.
>>
>>Would you please tell me?
>>
>>-----
>>According to the RFC3280,
>>
>>4.2.1.12  Policy Constraints
>>
>><snip>
>>
>>If the requireExplicitPolicy field is present, the value of
>>requireExplicitPolicy indicates the number of additional certificates 
>>that may appear in the path before an explicit policy is required for 
>>the entire path.
>>-----
>>
>>If there is a certificate path like the following,
>>   cert0
>>   cert1
>>   cert2
>>
>>and if the cert1 has the requireExplicitPolicy=1,
>>
>>is the cert2 required to have an explicit policy or not ?
>>
>>(Is the value applied to the cert1
>>  which has the requireExplicitPolicy=1?)
>>
>>I don't think the cert2 is required to have it,
>>but I'm not sure.
>>
>>Regards,
>>  Kozo
>>--------------------------------------------------------
>>Kozo FUJINO (TEL: +81-82-264-8544  FAX: +81-82-264-8549)
>>NEC System Technologies, Ltd.
>>Hiroshima, Japan
>

---

From: "Santosh Chokhani" <[email-masked]>
Date: Thu, 27 Feb 2003 23:10:44 -0500

Russ and Tim:

I would propose the following changes.

CHANGE 1

The sentence in 4.2.1.12 currently state:

"If the requireExplicitPolicy field is present, the value of
   requireExplicitPolicy indicates the number of additional certificates
   that may appear in the path before an explicit policy is required for
   the entire path.  When an explicit policy is required, it is
   necessary for all certificates in the path to contain an acceptable
   policy identifier in the certificate policies extension.  An
   acceptable policy identifier is the identifier of a policy required
   by the user of the certification path or the identifier of a policy
   which has been declared equivalent through policy mapping."

I propose that we change it to:

"If the requireExplicitPolicy field is present, the value of
   requireExplicitPolicy indicates the number of certificates (including
this certificate)
   that may appear in the path before an explicit policy is required for
   the entire path.  Thus, a value of skipCerts = 0 in any certificate in
the path means that an explicit policy is required for the entire path.
When an explicit policy is required, it is
   necessary for all certificates in the path to contain an acceptable
   policy identifier in the certificate policies extension.  An
   acceptable policy identifier is the identifier of a policy required
   by the user of the certification path or the identifier of a policy
   which has been declared equivalent through policy mapping."

CHANGE 2

At the end of Section 6.1.5, add "Otherwise, path processing has failed.

CHANGE 3

skipCerts semantics is slightly different for requireExplicitPolicy field.
Thus, a different variable name should be used for it.

ACKNOWLEDGEMENT

Many of the ideas here have come from Carl Wallace or discussions with him.
All the credit should go to him.  I will be glad to take any blame.

-----Original Message-----
From: Sharon Boeyen [mailto:[email-masked]] 
Sent: Thursday, February 27, 2003 11:02 AM
To: 'Santosh Chokhani'; Sharon Boeyen; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Santosh and I did chat on the phone and worked through the processing steps
in both 
509 and 3280 for the example (see below). Both would have the same outcome
for the path, however both Santosh and I believe the text in 3280 that
describes the policyConstraints 
extension needs to be changed to align with both the 3280 path validation
procedure and 
with 509 itself. Currently the text in 3280 clause 4.2.1.12 aligns with the
pre DR 222 X.509 description, but the 3280 validation process aligns with
the post DR 222 policy constraints. 
Santosh may propose some rewording for 4.2.1.12. 

Cheers,
Sharon 

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Thursday, February 27, 2003 10:15 AM
To: 'Sharon Boeyen'; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Sharon:

-----Original Message-----
From: Sharon Boeyen [mailto:[email-masked]] 
Sent: Thursday, February 27, 2003 10:05 AM
To: 'Santosh Chokhani'; Sharon Boeyen; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Cheers,
Sharon

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Wednesday, February 26, 2003 8:53 PM
To: 'Sharon Boeyen'; 'n Russ Housley'
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Sharon:

-----Original Message-----
From: Sharon Boeyen [mailto:[email-masked]] 
Sent: Wednesday, February 26, 2003 4:37 PM
To: [email-masked]'; n Russ Housley
Cc: [email-masked]; [email-masked]
Subject: RE: SkipCerts Question [RFC3280]

Cheers,
Sharon 

-----Original Message-----
From: Santosh Chokhani [mailto:[email-masked]]
Sent: Friday, February 21, 2003 4:47 AM
To: n Russ Housley
Cc: [email-masked]; [email-masked]
Subject: Re: SkipCerts Question [RFC3280]

Kozo and Russ:

policy.