Repository navigation
Conversation
gtema
commented
Oct 16, 2026
Collaborator
- feat(storage-crypto): Add FIPS module IVs and HKDF
- feat(cadf): Add FIPS backend and full HKDF
- docs(crypto): Add FIPS and crypto inventory
In the `fips` build let the validated module generate the AES-GCM IV, the only encrypt service it reports as approved, and encrypt each log and state record under its own HKDF-derived key so random IVs never approach the 2^32 per-key limit, whatever the number of learners. Default builds keep deterministic nonces. Derive the DEK sub-keys with full HKDF (Extract-then-Expand, fixed salt), the flow the module documents as approved. This changes the key hierarchy; there are no deployments yet. A `fips` node still reads records written by a default node, but not the other way round. Assisted-By: Claude Sonnet 5.5 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
Route the audit HMAC-SHA256 signature, key derivation and keyring generation through a small backend seam: `ring` by default, the FIPS 140-3 validated AWS-LC module with the `fips` feature, which also exposes `assert_fips()`. This drops the hmac, hkdf, sha2 and getrandom dependencies. The per-node signing key now uses full HKDF (Extract-then-Expand) with a fixed per-service salt, the flow the module documents as approved. This changes the derived key, so records signed by earlier builds no longer verify; there are no deployments yet. Derivation failures are returned instead of panicking. Assisted-By: Claude Sonnet 5.5 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
Add a worktree-wide inventory of cryptographic primitives with provider and FIPS status, linked from the contributor guide. Mark every source file that implements or selects a primitive with a pointer to its inventory row. Assisted-By: Claude Sonnet 5.5 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
The each-feature job built cadf with `--no-default-features` plus a single feature such as `runtime`, which leaves neither `ring` nor `fips` enabled and trips the backend compile_error!. Check cadf in its own invocation with `ring` always on. Assisted-By: Claude Sonnet 5.5 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
|
| Project | keystone |
| Branch | crypto |
| Testbed | ubuntu-latest |
Click to view all benchmark results
| Benchmark | Latency | Benchmark Result nanoseconds (ns) (Result Δ%) | Upper Boundary nanoseconds (ns) (Limit %) |
|---|---|---|---|
| Command_Serde/apply/remove | 📈 view plot 🚷 view threshold | 121,580.00 ns(-10.69%)Baseline: 136,136.75 ns | 262,212.75 ns (46.37%) |
| Command_Serde/apply/set | 📈 view plot 🚷 view threshold | 135,290.00 ns(-6.55%)Baseline: 144,767.11 ns | 254,328.92 ns (53.19%) |
| Command_Serde/pack/delete | 📈 view plot 🚷 view threshold | 128.60 ns(+9.66%)Baseline: 117.27 ns | 166.63 ns (77.17%) |
| Command_Serde/pack/delete_index | 📈 view plot 🚷 view threshold | 116.38 ns(+10.35%)Baseline: 105.47 ns | 145.94 ns (79.74%) |
| Command_Serde/pack/set | 📈 view plot 🚷 view threshold | 217.81 ns(+15.04%)Baseline: 189.33 ns | 272.55 ns (79.92%) |
| Command_Serde/pack/set_index | 📈 view plot 🚷 view threshold | 116.36 ns(+9.75%)Baseline: 106.02 ns | 148.38 ns (78.42%) |
| Command_Serde/unpack/delete | 📈 view plot 🚷 view threshold | 173.13 ns(+19.74%)Baseline: 144.59 ns | 213.72 ns (81.01%) |
| Command_Serde/unpack/delete_index | 📈 view plot 🚷 view threshold | 137.79 ns(+11.93%)Baseline: 123.10 ns | 182.46 ns (75.52%) |
| Command_Serde/unpack/set | 📈 view plot 🚷 view threshold | 265.77 ns(+17.38%)Baseline: 226.42 ns | 345.11 ns (77.01%) |
| Command_Serde/unpack/set_index | 📈 view plot 🚷 view threshold | 136.15 ns(+11.22%)Baseline: 122.42 ns | 180.87 ns (75.27%) |
| Payload_encryption/pack/remove_cmd | 📈 view plot 🚷 view threshold | 124.24 ns(+13.45%)Baseline: 109.51 ns | 162.68 ns (76.37%) |
| Payload_encryption/pack/set_cmd | 📈 view plot 🚷 view threshold | 218.93 ns(+9.99%)Baseline: 199.04 ns | 303.28 ns (72.19%) |
| Payload_encryption/unpack/remove_cmd | 📈 view plot 🚷 view threshold | 179.73 ns(+22.13%)Baseline: 147.16 ns | 216.12 ns (83.16%) |
| Payload_encryption/unpack/set_cmd | 📈 view plot 🚷 view threshold | 281.90 ns(+21.81%)Baseline: 231.42 ns | 351.14 ns (80.28%) |
| Raft_1Node_Latency/prefix/1node | 📈 view plot 🚷 view threshold | 2,610,700.00 ns(-29.08%)Baseline: 3,681,359.53 ns | 8,750,233.74 ns (29.84%) |
| Raft_1Node_Latency/read/1node | 📈 view plot 🚷 view threshold | 46,144.00 ns(+32.90%)Baseline: 34,720.00 ns | 51,133.42 ns (90.24%) |
| Raft_1Node_Latency/remove/1node | 📈 view plot 🚷 view threshold | 351,160.00 ns(+0.45%)Baseline: 349,573.59 ns | 575,201.49 ns (61.05%) |
| Raft_1Node_Latency/write/1node | 📈 view plot 🚷 view threshold | 368,370.00 ns(-4.24%)Baseline: 384,687.97 ns | 750,242.57 ns (49.10%) |
| build_snapshot/default | 📈 view plot 🚷 view threshold | 2,034.90 ns(-4.21%)Baseline: 2,124.25 ns | 2,866.83 ns (70.98%) |
| fernet token/project | 📈 view plot 🚷 view threshold | 1,402.40 ns(+8.25%)Baseline: 1,295.50 ns | 1,774.88 ns (79.01%) |
| get_data_keyspace | 📈 view plot 🚷 view threshold | 0.32 ns(+6.80%)Baseline: 0.30 ns | 0.38 ns (82.84%) |
| get_db | 📈 view plot 🚷 view threshold | 0.32 ns(+5.85%)Baseline: 0.30 ns | 0.38 ns (82.06%) |
| get_fernet_token_timestamp/project | 📈 view plot 🚷 view threshold | 145.73 ns(+9.36%)Baseline: 133.25 ns | 183.07 ns (79.60%) |
| get_keyspace | 📈 view plot 🚷 view threshold | 4.13 ns(-41.20%)Baseline: 7.02 ns | 16.43 ns (25.12%) |
gcm_seal_iv took a caller-supplied nonce that the fips backend ignores, so callers built an all-zero placeholder IV for fips builds. Take a closure instead: the default build calls it, the fips build drops it unused and lets the module generate the IV. No placeholder IV exists any more, and a backend that honoured one could not reuse it by mistake. Assisted-By: Claude Sonnet 5.5 Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
gtema
enabled auto-merge
October 16, 2026 16:11
|
🦢 Load Test Results Goose Attack ReportPlan Overview
Request Metrics
Response Time Metrics
Status Code Metrics
Transaction Metrics
Scenario Metrics
Error Metrics
|
|
🧪 Tempest Identity Compatibility Results (advisory, non-blocking) rust Failed test IDs |
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.