Skip to content
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

Freshness section slight reorg #91

Merged
merged 15 commits into from
Jun 26, 2020
Merged

Freshness section slight reorg #91

merged 15 commits into from
Jun 26, 2020

Conversation

thomas-fossati
Copy link
Collaborator

This commit slightly changes the Freshness section to reflect the
outcome of the discussion around PR #87. (Hopefully I've managed to
capture the gist of Henk's thinking without disrupting too much the
existing flow.)

TL;DR

The key change here is the removal of reply protection as a goal in
itself. The section now states clearly that the overall goal is instead
the identification of the point in time when attestation claims have
been signed and/or generated so that a freshness policy can be applied.
In this perspective, the fundamental property provided by a nonce-based
scheme with regards to freshness is its ability to lock the requester's
clock to the underlying protocol transaction, thus indirectly
establishing the epoch of the attestation / verification event. By
making the nonce unique and non-predictable, the timeline locking cannot
be subverted, which provides anti-replay. However, that is a nice
side-effect rather than the primary goal.

This commit also adds some precision around the nonce and clock
properties - unpredictability and trustworthiness respectively.

@henkbirkholz
Copy link
Member

henkbirkholz commented Jun 1, 2020

Added consolidated text based on Thomas initial version and review from MCR

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
Comment on lines 913 to 915
If so, it is the
signer's (the Attestation Environment's) responsibility to ensure that the values are still correct when they
are signed.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I agree with this. Shouldn't it be covered by the policy? If an attester can only get a stale value and can't vouch for it not having been changed since, then putting that fact in the Evidence allows the verifier to make a decision appropriately.

@mcr
Copy link
Collaborator

mcr commented Jun 2, 2020

This commit slightly changes the Freshness section to reflect the
outcome of the discussion around PR #87. (Hopefully I've managed to
capture the gist of Henk's thinking without disrupting too much the
existing flow.)

So, if #87 is dead, can you close it?

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
Comment on lines 873 to 877
This allows associating a "rough" epoch to the Evidence or Attestation Result.
In this case the epoch is said to be rough because:

* it is always bound to the set of Claims as a whole, as opposed to having Claim being separately annotated, and
* it is not possible to distinguish between time of collection from the time of creation of the Claims set.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This allows associating a "rough" epoch to the Evidence or Attestation Result.
In this case the epoch is said to be rough because:
* it is always bound to the set of Claims as a whole, as opposed to having Claim being separately annotated, and
* it is not possible to distinguish between time of collection from the time of creation of the Claims set.

Copy link
Collaborator Author

@thomas-fossati thomas-fossati Jun 2, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we should ditch this.

The essential premise is on this line. In particular, by using "solely" I wanted to discuss the case where the only clock that the appraiser can trust is its own. The intent of the following text is just to illustrate two common instances where the appraiser can't rely on the peer's clock.

The overall premise for this whole paragraph is that appraiser does not consider any time assertion made the peer, and to determine what kind of information can be used in this case to evaluate freshness.

Clearly, once the peer's clock becomes usable - as in this example - then finer-grained timestamping can become input to the evaluation of the freshness policy as well.

Hopefully I have made my intention clear and the ambiguities in the existing text can be fixed accordingly :-)

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
This might be an appropriate choice in case the Attester does not have a reliable clock or time synchronisation is otherwise impaired.
In this approach, a non-predictable nonce is generated by the appraising entity, and the nonce is then signed and included along with the Claims in the Evidence or Attestation Result.
After checking the sent and received nonces are the same, the appraising entity knows that the Claims were signed after the nonce was generated, effectively locking its clock to the produced payload.
This allows associating a "rough" epoch to the Evidence or Attestation Result.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace "This" with "Timekeeping" ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure: "this" is a bit more than just "timekeeping", it refers to "an approach that places the onus of timekeeping solely on the appraising entity".

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe substitute your text in place of 'this' since the pronoun reference seems ambiguous?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That seems a bit redundant. I'd like to achieve some kind of compression - obviously without introducing ambiguity. Let me see if I can concoct something decent.

Copy link
Collaborator Author

@thomas-fossati thomas-fossati Jun 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ned: please check the proposal in 20e3d7b

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved

The two basic mechanisms presented above can be extended and combined in more advanced schemes.
For example, if the clocks are trustworthy but not synchronized, first a nonce-based exchange may be used to determine the (rough) time offset between the involved peers, followed by any number of timestamp based exchanges.
In another scenario where a broadcast channel is shared by all the RATS entities (Attesters, Verifiers and Relying Parties), the nonce-based approach may be used to lock all parties to the same timeline without requiring synchronized clocks by having a central entity emit nonces at regular intervals and have the "current" nonce included in the produced Evidence or Attestation Result.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Second, a broadcast channel shared by all Roles (Attester, Verifier, etc.), the nonce-based approach..."

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand this suggestion. If the current text isn't good as-is, we may simplify it as "When a broadcast channel is shared by all Roles, the nonce-base approach [...]"

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trying to get the signposting to match up. In line 880 signposting uses "first" and in 881 signposting changes to "another". Normally, "second" follows "first" - it is just style and I don't feel strongly about it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 880 and 881 are two separate examples.

The example at line 880 is split in two phases: first [...], followed by [...].

I will remove "first" since it isn't necessary and I suspect it's probably bad English if it got you confused.

Copy link
Collaborator Author

@thomas-fossati thomas-fossati Jun 11, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ned: please check the proposal in 20e3d7b

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
@thomas-fossati
Copy link
Collaborator Author

This commit slightly changes the Freshness section to reflect the
outcome of the discussion around PR #87. (Hopefully I've managed to
capture the gist of Henk's thinking without disrupting too much the
existing flow.)

So, if #87 is dead, can you close it?

Done.

draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved
draft-ietf-rats-architecture.md Outdated Show resolved Hide resolved

A second approach places the onus of timekeeping solely on the appraising
entity, e.g., the Verifier (for Evidence), or the Relying Party (for
Attestation Results), and might be suitable in case the Attester does not have
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think 'the Attester' here can't cover the case where the Relying Party sends the nonce to the Verifier for retrieving the Attestation Result. Maybe change 'the Attester' to 'the producing entity'?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. You are right in that it is not limited to the Attester. I wanted to use the it as the typical example because it's more likely that a constrained Attester doesn't have a very reliable clock. What about: and might be suitable, for example, in case the Attester does not have [...]?

  2. The current paragraph looks wrong to me. When it says:

[...] solely on the appraising entity, e.g., the Verifier (for Evidence),
or the Relying Party (for Attestation Results),`

should instead say:

[...] solely on the remote attestation protocol initiator, e.g., the
Relying Party (for Evidence or Attestation Results) and the Attester
(for Attestation Results).

mcr and others added 2 commits June 26, 2020 10:32
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants