RFR: 8294731: Improve multiplicative inverse for secp256r1 implementation
Xue-Lei Andrew Fan
xuelei at openjdk.org
Tue Oct 4 21:08:18 UTC 2022
Hi,
May I have this patch reviewed?
This is one of a few steps to improve the EC performance. The multiplicative inverse implementation could be improved for better performance.
For secp256r1 prime p, the current multiplicative inverse impl needs 256 square and 128 multiplication. With the path, the operation needs 256 square and 37 multiplication.
For secp256r1 order n, the current multiplicative inverse impl needs 256 square and 169 multiplication. With the patch, the operation needs 256 square and 107 multiplication.
Here is the benchmark numbers before the patch applied:
Benchmark (messageLength) Mode Cnt Score Error Units
Signatures.sign 64 thrpt 15 1412.644 ± 5.529 ops/s
Signatures.sign 512 thrpt 15 1407.711 ± 14.118 ops/s
Signatures.sign 2048 thrpt 15 1415.674 ± 6.965 ops/s
Signatures.sign 16384 thrpt 15 1395.582 ± 12.689 ops/s
And the following are the benchmarking after the patch applied.
Benchmark (messageLength) Mode Cnt Score Error Units
Signatures.sign 64 thrpt 15 1458.862 ± 4.615 ops/s
Signatures.sign 512 thrpt 15 1450.755 ± 12.954 ops/s
Signatures.sign 2048 thrpt 15 1460.395 ± 4.371 ops/s
Signatures.sign 16384 thrpt 15 1436.843 ± 4.420 ops/s
It looks like the performance improvement is no significant enough for now. But it may be 2+ times more in numbers when the scalar multiplication implementation is improved in a follow-up enhancement in another pull request.
Thanks,
Xuelei
-------------
Commit messages:
- replace tab with whitrespaces
- add field order impl
- 8294731: Improve multiplicative inverse for EC implementation
Changes: https://git.openjdk.org/jdk/pull/10544/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10544&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8294731
Stats: 207 lines in 2 files changed: 205 ins; 0 del; 2 mod
Patch: https://git.openjdk.org/jdk/pull/10544.diff
Fetch: git fetch https://git.openjdk.org/jdk pull/10544/head:pull/10544
PR: https://git.openjdk.org/jdk/pull/10544
More information about the security-dev
mailing list