lowRISC / lowRISC/opentitan

[top_darjeeling] ECDSA enablement

Open
#23,486 1 comment 0 reactions 1 assignee View on GitHub

@sameo is already working on this.

Since Jun 4, 2024.

Component:Darjeeling
Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

## Problem Statement

Darjeeling still relies on RSA and SPHINCS for signature verification and attestation.

For security reasons and for saving ROM and OTP space, Earlgrey, from the `master` branch, switched to ECDSA (p256 and p384) and dropped RSA entirely.

Darjeeling should also initiate that migration from RSA to ECDSA.

## Plan

There are several components that must be synced from `master` in order to fully support ECDSA and drop RSA:

1. `hw/ip/otbn`: The ECDSA operations (attestation and verification) are offloaded to OTBN and thus we need to sync this subsystem from `master`
2. `sw/otbn`: All the crypto implementation for ECDSA lives there and must be updated.
3. `silicon_creator/sigverify`: The signature verification API and framework now supports ECDSA in `master`.
4. `silicon_creator/otbn_boot_services`: The OTBN operations for secure boot (attestation and verification) have been abstracted into a boot services API.
5. `sw/host/opentitan{tool,lib}`: The host tools in `master` support generating ECDSA keys and signing payloads with those keys

Additionally, the `rom_patch` API should use the boot services to verify ROM patches signatures, and the documentation should be updated accordingly (switch from RSA signatures).

## Steps

* [x] https://github.com/lowRISC/opentitan/issues/23477
* [x] https://github.com/lowRISC/opentitan/issues/23478
* [x] https://github.com/lowRISC/opentitan/issues/23479
* [ ] https://github.com/lowRISC/opentitan/issues/23481
* [ ] https://github.com/lowRISC/opentitan/issues/23482
* [ ] https://github.com/lowRISC/opentitan/issues/23483
* [ ] https://github.com/lowRISC/opentitan/issues/23484
* [ ] https://github.com/lowRISC/opentitan/issues/23485

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.