Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Version 2: Add Multi-Perspective Domain and CAA Checking Requirements to the BRs #8
Version 2: Add Multi-Perspective Domain and CAA Checking Requirements to the BRs #8
Changes from 9 commits
d31bb7e
7384a29
1ad60e2
4b003c0
dc33cd3
9ee6b11
0be1808
d71f980
3976bd5
9e4d84f
d460f39
86ff14b
8e51895
56d56b1
de1ff61
e013f27
46f6059
208cdd4
b5b3c5a
4d658f5
cb8ae10
8564edb
a3a2820
fd9e699
d00d997
df648da
458acc4
bb7c98a
1232a72
b423e5c
25ce5a1
8808bc6
4f53056
fd83a4b
2f158b2
43cc1c2
ba97963
fa0bb58
d40f161
6bda42e
cb88b7d
0144a4c
60a2e60
0525044
8315b6a
8f35b32
6cca62b
278f3b8
5e4bc03
54ed662
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm unable to leave a comment on line 1058 (https://github.com/ryancdickson/staging/pull/8/files#diff-e0ac1bd190515a4f2ec09139d395ef6a8c7e9e5b612957c1f5a2dea80c6a6cfeR1058) since it wasn't modified, so I'll leave it here:
My understanding is that CAs will be able to issue if the lookup failures for both the Primary and Secondary Network Perspectives are consistent. For example, if the Primary Perspective receives a SERVFAIL in response to a CAA lookup for "example.com" and the Secondary Network Perspectives receive the same, then this can be treated as permission to issue (assuming, of course, there's no DNSSEC chain to the ICANN root and the CA infrastructure isn't experiencing issues). However, if the Primary Perspective observes a SERVFAIL and the Secondary Perspectives receive a NOERROR/NXDOMAIN, then this cannot be treated as permission to issue as the Primary and Secondary Perspectives have received differing responses.
Is this correct, or is the expectation different here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While this is one interpretation of the text, my original thought was that it would be OK for a CA to proceed with issuance under the second scenario described. Even though the error signals from the different perspectives are distinct, in the absence of a trusted DNSSEC chain, both of these can be treated as permission to issue. Thus, my original interpretation of this was "corroborates" is essentially a binary state and both the primary and secondary perspectives here interpret their DNS response as permission to issue implying issuance can proceed.
While requiring matching error messages or matching responses is clearly a stricter policy, I do not think it adds too much security, and I worry a bit about it introducing false positives. If an adversary has launched a BGP hijack which effects some of a CA's perspectives, it has the liberty of choosing what types of DNS responses it wants to generate and could likely generate responses that match the victims' (bypassing this sameness check). On the benign side, in our last study we noticed discrepancies in DNS configurations when probed from multiple perspectives. Many DNS providers rely heavily on IP anycast so the DNS queries from the different perspectives are often being answered by different servers (which can have different configurations or out-of-date zone files). Thus, while varying error messages may seemingly indicate an attack, I could also see it arising in benign circumstances, and I believe an adversary could avoid this check.
Additionally, we considered differentiating between different types of responses in the domain validation check, but ultimately backed away from it and went more towards reducing each vantage point's response to a binary state which is then processed in the quorum policy. I personally feel for consistency and simplicity it would also make sense to use that reasoning here.
I would be in favor of adding language to clarify that permission to issue is a binary state (i.e., can issue or can't issue) which is then processed by the quorum policy.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line 1061 of the current draft text says:
It is my understanding that this explanatory text is stating that the Primary Network Perspective provides the canonical response, and the requisite number of additional Network Perspectives MUST provide the same response to corroborate the response as retrieved by the Primary Network Perspective. My understanding of the rationale is that the Primary Network Perspective is audited under the NetSec audit regime, whereas secondary Network Perspectives need not be audited. Thus, there is a higher level of assurance from the responses provided by the Primary as opposed to secondary Network Perspectives.
Given this rationale, I interpreted the CAA allowance for issuance upon encountering lookup errors as "the requisite number of secondary Network Perspectives must observe the failure observed by the Primary Network Perspective in order to be treated as permission to issue". I think clarifying language is needed if the intended requirement is actually looser.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@CBonnell - would better establishing context for "determinations" (and doing so at a sufficient level of detail that's focused on the outcome of the checks) address this concern?
From: Multi-Perspective Issuance Corroboration attempts to corroborate the determinations made by the Primary Network Perspective from multiple additional Network Perspectives before Certificate issuance.
To: Multi-Perspective Issuance Corroboration attempts to corroborate the determinations
(i.e., domain validation pass/fail, CAA permission/prohibition)
made by the Primary Network Perspective from multiple additional Network Perspectives before Certificate issuance.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Update: Added above suggestion in 0144a4c, still waiting for feedback from @CBonnell.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apologies for missing this; it apparently got lost in a flurry of Github notifications. I don't think the proposed language change would address the difference in interpretation for the "CAA lookup failure" case as discussed above in this comment thread. I interpret the proposed language the same as the previous language: a CAA lookup failure by the Primary Network Perspective while the Secondary Perspectives observe a lookup success cannot be treated as permission to issue, as the Secondary Perspective results do not corroborate the Primary Perspective's lookup failure.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a solution could be to add @ryancdickson 's language but also put an explicit statement to cover this case in the section on MPIC CAA checking:
When corroborating a CAA check from multiple Network Perspectives, for the result of the CAA check at an additional Network Perspective to count as corroborating the Primary Network Perspective, the CAA check from the additional Network Perspective MUST be interpreted as permission to issue as outlined in Section 3.2.2.8. However, a CA MAY count the response of an additional Network Perspective as corroborating the Primary Network Perspective even if CAA records seen by the additional Network Perspective do not match the records seen by the Primary Network Perspective or one or both of the additional Network Perspective or Primary Network Perspective experience an acceptable CAA record lookup failure as defined in Section 3.2.2.8.
Personally I feel adding language along these lines to explicitly allow this case would sufficiently clarify things in the document. Thinking more on this topic I do feel that some of the confusion comes from the use of the word "corroborate" which implies some level of similarity in responses (which makes sense in the DV context where a similar random token on piece of contact information must be observed). However, for CAA checking I think it makes the most sense to not rely on similarity (particularly with some lookup failures being permission to issue in the CAA context) but instead ensure a sufficient number of network perspectives interpret their lookups as permission to issue. Maybe another approach would be to avoid using the word "corroborate" in the CAA context, but I worry a bit reworking the whole draft with that angle would simply introduce more wording issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Validation Subcommittee Comment (summarized): The required number of remote perspectives needs to be clarified.
Response:
The "Quorum Requirements" table describes the maximum number of "non-corroborations" given the number of distinct remote network perspectives used for an MPIC attempt. The end of 3.2.2.9 presents the "Phased Implementation Timeline," which describes implementation milestones that strengthen over time. Over the proposed implementation timeline, quorum requirements increase from undefined (during the period where CAs SHOULD be implementing MPIC but are not otherwise required) to 5+ (beginning in December 2026).
I've tried summarizing the phasing below, with changes across phases highlighted in
code block
formatting.Phase 1: June 15, 2024 - December 14, 2024 ("CAs SHOULD implement MPIC"):
Phase 2: December 15, 2024 - June 14, 2025 ("CAs MUST implement MPIC in monitoring mode*"):
Yes
Minimally, 2 remote perspectives must be used. If using less than 6 remote perspectives, 1 non-corroboration is allowed. If using 6 or more remote perspectives, 2 non-corroborations are allowed.
No.
Perspectives must be 500km from 1) the primary perspective and 2) all other perspectives used in the quorum.
* Note: "Monitoring Mode" is a nickname for this period. As opposed to "blocking mode" (described in the next milestone), CAs may still issue a certificate if quorum requirements are not met during this period. This period was intended to offer flexibility to CA owners as they stood up this new capability (i.e., allows for fine tuning implementations).
Phase 3: June 15, 2025 - December 14, 2025 ("CAs MUST implement MPIC in blocking mode*"):
Yes.
* Note: "Blocking Mode" is a nickname. As opposed to "monitoring mode" (described in the last milestone), CAs MUST NOT issue a certificate if quorum requirements are not met from this point forward.
Phase 4: December 15, 2025 - June 14, 2026 (requirements strengthen):
3
remote perspectives must be used. If using less than 6 remote perspectives, 1 non-corroboration is allowed. If using 6 or more remote perspectives, 2 non-corroborations are allowed.Additionally, corroborating perspectives must fall within the service regions of at least 2 distinct regional Internet registries.
Phase 5: June 15, 2026 - December 14, 2026 (requirements strengthen):
4
remote perspectives must be used. If using less than 6 remote perspectives, 1 non-corroboration is allowed. If using 6 or more remote perspectives, 2 non-corroborations are allowed.Phase 6: December 15, 2026 (requirements strengthen):
5
remote perspectives must be used. If using less than 6 remote perspectives, 1 non-corroboration is allowed. If using 6 or more remote perspectives, 2 non-corroborations are allowed.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on past discussions, if a remote perspective is selected to be used but cannot be reached, I believe the intended interpretation is that it "does not corroborate." I feel this simplifies the requirement language by strictly keeping keeping the definition of corroborate as a binary (i.e., either does or does not corroborate with no intermediate state) and presents some robustness against an adversary that is willing to DoS a perspective in an effort to prevent that perspective from detecting its attack. There should be no barrier to a CA, after a filed MPIC attempt, immediately retrying MPIC with a different set of perspectives which can help for handling cases of benign perspectives going offline.
I believe in one of the past github threads there was a discussion about the primary perspective counting towards the 2 RIR count. From what I remember the consensus was that the Primary Perspective does not count and the additional perspectives must be spread over two RIRs. This helps prevent the case of the Primary Perspective being in one RIR and all additional perspectives being concentrated in another.
@orangepizza I am curious to know if you feel additional clarifying language should be added to the draft for these cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
at least for multi-RIR requirement, because remote perspectives are corroborating with primary by definition:
non-replying RIR was more a question about if dead perspective counted in X remote perspectives used, or counter need to call another to fill it's slot: an extreme example would be typo in list of remote perspective list made one point a nonexist server: would they passed as a non-corraboration, or it'll make entire process not satisfying MPV requirement?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking over the current language I actually feel the RIR requirement is pretty well clarified as being interpreted this way:
https://github.com/ryancdickson/staging/blob/0144a4c0e544173d22a0f09fd4c45d4a52519992/docs/BR.md?plain=1#L1098C29-L1098C29
*Effective December 15, 2025*, the CA MUST implement Multi-Perspective Issuance Corroboration using at least three (3) remote Network Perspectives. The CA MUST NOT proceed with certificate issuance if the number of non-corroborations is greater than allowed in the Quorum Requirements table and if the remote Network Perspectives that do corroborate the determinations made by the Primary Network perspective do not fall within the service regions of at least two (2) distinct regional Internet registries.
This seems to clearly state that the 2 RIR service region requirement is 1) only applied to remote Network Perspectives and 2) only applied to perspectives that do corroborate (i.e., non-corroborating perspectives do not count towards diversity).
With this in mind I feel that a dead perspective would count towards X remote perspectives used as long as the CA attempted to reach it, but would not count towards the corroboration count or the 2 distinct RIR requirement. Thus, whether the CA had to initiate a subsequent MPIC request and redial another perspective depends on whether the quorum and the diversity requirement can be satisfied without that perspective.
Is there a particular sentence you would recommend adding to this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes I just looked this summery and not that part of document: sorry for inconvenience
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no worries. This part of the document recently changed and in past versions I feel this behavior was not as clearly specified