IntersectMBO/cardano-base

Secure KES Forgetting

Closed this issue · 1 comments

What

Implement secure KES forgetting in the node. This task is the first part of the full Secure KES forgetting effort (followed by the KES agent task which will come in the next PI). This task will make the changes such that the node handles the keys properly. However, in this first iteration, the keys will still be saved to disk. These changes do not affect user interaction nor block validation.

Why

We use KES to provide security against long range attacks. This is a requirement by the formal analysis and proofs we have for the consensus algorithm. The current node does not safely delete KES keys, and therefore is exposed to this long range attack where an adversary is capable of stealing a bunch of KES keys from the block producers and producing a different adversarial chain. This first part of the task enable a complete solution that uses KES agents (to be defined in the next PI).

Functional requirements

  • Implement secure forgetting in the node such that keys are not stored to disk while handling the key (serialisation/deserialisation, key evolution, signature)

External dependencies

  • Node (to update the usage of the new KES handling)
  • Benchmarking, to guarantee that there is no regression in block propagation

Risks

Regression in block production (unlikely this will affect block propagation in any meaningful way)

Acceptance Criteria

We have a positive audit accepted by Charles Morgan. The current testing framework works positively. No regression

Definition of Done

The new node version uses KES with secure forgetting

Working Assumptions

  • Hard fork not required

Closing in favour of #122