-
-
Notifications
You must be signed in to change notification settings - Fork 29
Description
We're going to add multisig support to the .stone format, as per-package verification is inherently far more secure than index-based verification.
As part of our build infrastructure, each build machine will sign a .stone to lay ownership on it, whilst the repository will add another signature upon incorporation. This will facilitate the revocation of malicious machines and artefacts en-masse.
Note: We can also use this to single-sign our stone-format repository index files
Computation
In verification, the SignaturePayload is exempt from iteration. Compute the BLAKE3 hash for the raw data of all payloads (header+block). Then generate EdDSA (Ed25519 curve) key from this input hash. Each signature is inserted into the SignaturePayload
SignaturePayload
A SignaturePayload will consist of one or more SignatureIdentifiers. Each will tag the origin (local, remote, authority, etc), key length, algorithm, in a robust enum-based update-friendly fashion. For example:
enum SignatureAlgorithm {
RSA2048,
RSA4096,
EdDSA,
// ... other algorithms
}
enum KeyOrigin {
Local,
Remote,
// ... other origins
}
struct SignatureIdentifier {
algorithm: SignatureAlgorithm,
origin: KeyOrigin
signature_length: u16,
// ...
}