Problem
The latest published version on crates.io is 0.3.0 (uploaded 2023-03-16). Multiple commits have landed on main since, including a security fix that is not available to downstream users of the crate from crates.io.
Most notably:
Other unreleased changes on main:
12ee537 — test: realistic-identity collision tests for KV1 and Waters
2d4b3a8 — chore: bump criterion to 0.8
95a4fed — docs: drop AI-slop tells from README and mkem doc comment
c4842f3 — ci: bump actions/checkout to v4 and add clippy lint job
e1a8ea9 — chore: clean up clippy warnings
bc1a0cc / 23bb1be — fix README references to src/ibe
f711982 — fix(ci): replace deprecated wasm32-wasi with wasm32-wasip1
CHANGELOG.md also stops at the 0.3.0 entry and no v0.3.x git tags exist in this repo.
What to do
- Decide the next version. The security fix is non-breaking API-wise but changes the identity-derivation output for KV1/Waters users (existing USKs become incompatible), which is arguably breaking for those two schemes —
0.4.0 may be more honest than 0.3.1. CGWKV/CGWFO/CGW/Boyen-Waters/Waters-Naccache users are unaffected.
- Add a
## 0.3.1 (or 0.4.0) section to CHANGELOG.md summarising the changes above, with a clear callout that KV1 and Waters identity derivation has changed and previously-issued USKs for those schemes will no longer decrypt.
- Bump
version in Cargo.toml.
- Tag the release (
vX.Y.Z) and run cargo publish.
Why this matters
The security fix has been on main since #12 was closed but is not yet reaching crates.io users. Anyone consuming ibe = "0.3" from crates.io with the kv1 or waters features today still has the identity-collapse bug.
Out of scope
Problem
The latest published version on crates.io is
0.3.0(uploaded 2023-03-16). Multiple commits have landed onmainsince, including a security fix that is not available to downstream users of the crate from crates.io.Most notably:
dcf1eba—fix(security): make bits() produce all bits from input slice(PR fix(security): make bits() produce all bits from input slice #13, fixes bits() function produces only 8 bits from any input, severely weakening KV1 and Waters schemes #12)The
bits()helper insrc/util.rspreviously produced onlymin(input_len, 8)bits, collapsing the identity space of the KV1 and Waters schemes to 2^8 = 256. PostGuard production isn't affected (uses CGWKV+MKEM), but any external user ofibewith thekv1orwatersfeatures on crates.io still receives the buggy version.Other unreleased changes on
main:12ee537— test: realistic-identity collision tests for KV1 and Waters2d4b3a8— chore: bumpcriterionto 0.895a4fed— docs: drop AI-slop tells from README and mkem doc commentc4842f3— ci: bumpactions/checkoutto v4 and add clippy lint jobe1a8ea9— chore: clean up clippy warningsbc1a0cc/23bb1be— fix README references tosrc/ibef711982— fix(ci): replace deprecatedwasm32-wasiwithwasm32-wasip1CHANGELOG.mdalso stops at the0.3.0entry and nov0.3.xgit tags exist in this repo.What to do
0.4.0may be more honest than0.3.1. CGWKV/CGWFO/CGW/Boyen-Waters/Waters-Naccache users are unaffected.## 0.3.1(or0.4.0) section toCHANGELOG.mdsummarising the changes above, with a clear callout that KV1 and Waters identity derivation has changed and previously-issued USKs for those schemes will no longer decrypt.versioninCargo.toml.vX.Y.Z) and runcargo publish.Why this matters
The security fix has been on
mainsince #12 was closed but is not yet reaching crates.io users. Anyone consumingibe = "0.3"from crates.io with thekv1orwatersfeatures today still has the identity-collapse bug.Out of scope
rand/getrandom/the curve stack — blocked onpg-curveupdates (see chore: update dependencies #25 / chore: update dependencies #26 history). Not a blocker for this release.