#35696 i2p: update leaseset encryption types
https://github.com/bitcoin/bitcoin/pull/35696 · · +2/-2 in 1 files, 1 commits · labels: Needs Backport (31.x)
Goal
- Adopt post-quantum hybrid encryption for nodes running I2P
- Phase out legacy ElGamal encryption to improve cryptographic strength and privacy for I2P peers
This pull request updates the I2P SAM stream session leaseset encryption types in src/i2p.cpp from 4,0 (ECIES-X25519 and ElGamal) to 6,4 (MLKEM-768 and ECIES-X25519). This follows the latest I2P project recommendation to adopt post-quantum hybrid encryption and phase out legacy ElGamal leasesets.
Problem: Nodes running I2P currently announce legacy ElGamal leaseset types and lack post-quantum hybrid encryption support. Upstream I2P recommends phasing out ElGamal to improve cryptographic strength and compatibility with modern I2P routers.
Category: P2P (#23 of 65)
P3 · new feature
- P3 because post-quantum hybrid encryption improves privacy and standards adherence for I2P peers
- The upgrade is non-urgent with no immediate security risk from delaying across upcoming releases
Updating to post-quantum leasesets and retiring ElGamal is worthwhile for I2P peer privacy and protocol standards adherence, but is explicitly non-urgent per upstream I2P maintainers who noted it can happen across upcoming releases without immediate risk.
Membership: Modifies I2P SAM session connection parameters in src/i2p.cpp.
Factors: security/stability 1, bug 0, performance 0, user value 2, leverage 1
Reviewability: Ready
- Ready to review as a minimal change with compatibility questions resolved by upstream I2P developers
The patch is a two-line change that has clear rationale, and previous review questions regarding compatibility options were addressed and resolved by upstream I2P developers.
Author status: active (last participated in July to confirm Java I2P configuration limits; discussion concluded among reviewers in August)
Resolved concerns:
- Reviewers questioned whether 6,4,0 could be used to preserve backwards compatibility with pre-26.1 Bitcoin Core nodes, but I2P upstream confirmed that Java I2P routers do not support three lease set encryption types simultaneously.
- Concern over partitioning legacy I2P peers was dropped after checking that less than 10% of total nodes run pre-26.1 versions and I2P developers advised that upgrading leasesets is standard practice, with documentation and release notes planned in #35951.
Agreement: Strong
- Strong support from upstream I2P developers to deploy post-quantum leasesets as-is (zzzi2p)
- Objection over dropping older pre-26.1 nodes was withdrawn after verifying low impact (janb84)
- Concept approval with follow-up release notes opened in another pull request (jonatack, kevkevinpal)
Strong: upstream I2P developers and reviewers endorse 6,4 as-is; backwards-compatibility concerns were withdrawn.
Upstream I2P maintainers (zzzi2p, eyedeekay) and contributors ACKed the PR as-is. Early concerns about breaking compatibility with pre-26.1 nodes over I2P were resolved once router constraints and low legacy node counts were established.
- kevkevinpal ACKed 412540e and suggested release notes.
- janb84 withdrew an earlier approach NACK after usage statistics showed only a small fraction of nodes run versions older than 26.1.
- zzzi2p (I2P developer) gave an explicit ACK to the PR as-is (6,4) and recommended moving ahead rather than waiting.
- jonatack gave Concept ACK and subsequently opened PR #35951 to add release notes for v32.0.
Review verdicts (DrahtBot): 1
- ACK: kevkevinpal
- Concept ACK: jonatack, zzzi2p
Dependencies
Enables:
Files
0 lines under test/bench/ci.
- src/i2p.cpp +2/-2
Card
PR #35696 updates I2P SAM session encryption parameters from 4,0 to 6,4, adding post-quantum MLKEM-768 leaseset support and retiring legacy ElGamal. This benefits Bitcoin Core operators running over I2P by improving cryptography to match upstream I2P project recommendations. Discussion resolved concerns regarding backwards compatibility with pre-26.1 peers, confirming Java I2P cannot support three types concurrently. Upstream I2P developers and reviewers strongly support the change as-is, with companion release note PR #35951 opened.