Skip to content

Verify snapshot evidence on join/recover#1925

Merged
achamayou merged 47 commits into
microsoft:masterfrom
jumaffre:verify_snapshot_evidence
Dec 8, 2020
Merged

Verify snapshot evidence on join/recover#1925
achamayou merged 47 commits into
microsoft:masterfrom
jumaffre:verify_snapshot_evidence

Conversation

@jumaffre
Copy link
Copy Markdown
Contributor

Resolves #1539

When joining/recovering from a snapshot, we used to automatically accept the snapshot, even if the snapshot evidence wasn't present in the ledger. We now verify that the snapshot evidence is present in the ledger and that there is proof that this evidence was committed, i.e. that there's a signature that proves that the commit seqno was greater than the evidence seqno.

On recovery, this is pretty much the same scheme as before but we make sure the snapshot evidence is in the ledger when recovering the public part. On join, we now apply the snapshot in public mode when on start-up and deserialise the ledger suffix (in public mode) until we've found the proof of the snapshot evidence.

Operation-wise, this now means that node joining from a snapshot should have access to the ledger suffix containing the snapshot evidence (+ signature proving that the evidence was committed). I'll update the documentation accordingly in a follow-up PR.

The Python infra requires some changes when joining/recovering from a snapshot. In particular, we now wait for the latest available snapshot to have ledger proof of the commit of its evidence (see inline comment).

@jumaffre jumaffre requested a review from a team as a code owner November 25, 2020 11:35
Comment thread tests/infra/network.py Outdated
@ghost
Copy link
Copy Markdown

ghost commented Nov 25, 2020

verify_snapshot_evidence@16422 aka 20201208.29 vs master ewma over 50 builds from 15593 to 16397
images

Comment thread src/host/snapshot.h Outdated
Comment thread tests/infra/network.py Outdated
@achamayou achamayou merged commit 8018e87 into microsoft:master Dec 8, 2020
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.

Snapshot auditability

2 participants