3 ms·
A subset of Bouncycastle primitives (Argon2, Blake2b, DigestRandomGenerator, HKDFBytesGenerator, Poly1305, Salsa20Engine, Scrypt, SHA256Digest, XSalsa20Engine)
by java-man 5y ago
A subset of Bouncycastle primitives (Argon2,
Blake2b,
DigestRandomGenerator,
HKDFBytesGenerator,
Poly1305,
Salsa20Engine,
Scrypt,
SHA256Digest,
XSalsa20Engine)
refactored to use DirectByteBuffer instead of primitive arrays, for the purpose of minimizing leaking information through garbage collector.
- The_rationalist 5y agoI wonder if region pinning is relevant here https://openjdk.java.net/jeps/423#:~:text=G1%20permanently%20pins%20humongous%20regions,exceeds%20a%20specified%20liveness%20threshold https://openjdk.java.net/jeps/423#:~:text=G1%20permanently%2.... Looks like a great project Javaman :)
- java-man 5y agoThank you. I would rather see maybe an annotation instructing the compiler and the runtime not to move allocated objects: @UnmovableMemory byte[] bytes = new byte[...];
- The_rationalist 5y agoYeah like https://doc.rust-lang.org/std/pin/ https://doc.rust-lang.org/std/pin/ Maybe you could propose the idea to the jdk tracker or mailing lists?https://mail.openjdk.java.net/pipermail/jdk-dev/2022-February/006368.html https://mail.openjdk.java.net/pipermail/jdk-dev/2022-Februar...
- java-man 5y agoAll my life, large corporations did nothing but ignore me. I basically gave up at this point. You are right - something like Pin in rust. It will be a new language feature, there are backward compatibility aspects, and the fact that it will need to be correctly done by all implementations (or it would fail its stated purpose). DirectByteBuffer provides a certain guarantee as it is. On the other hand, the secrets might still be leaked via paging, so even this solution is a partial one.
- skanga 5y agoAre there any docs besides the unit tests?
- java-man 5y agoIt's a replacement for Bouncycastle classes, using DirectByteBuffer wrappers to replace primitive arrays. One difference is explicit zero() method via ICryptoZeroable interface which clears the buffers.
- msgilligan 5y agoAny chance you might add ECDSA?
- java-man 5y agoI will not turn down a reasonable contract offer ;-)
- msgilligan 5y agoI'll keep that in mind, but not ready to fund it at this point.