On Sat, 3 Oct 2026 22:02:22 GMT, Hai-May Chao <[email protected]> wrote:
>> Enhance SSLHandshake benchmark to measure the TLS 1.3 server authentication >> of an ML-DSA-65 server certificate and CertificateVerify, compared with an >> ECDSA P-256 server authentication profile, across classical and hybrid key >> exchange groups. >> >> --------- >> - [X] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Hai-May Chao has updated the pull request incrementally with one additional > commit since the last revision: > > Benchmark with the updated ECDSA-P256 and ML-DSA-65 profiles ## Benchmark with the updated ECDSA-P256 and ML-DSA-65 profiles: - ECDSA-P256 server leaf and ML-DSA-256 server leaf are issued by the same RSA CA. - Both leaves have matching validity and extensions. - The intended variables are the server leaf public key and CertificateVerify algorithm. ### Linux AArch64 Benchmark (handshakeProfile) (resume) Mode Cnt Score Error Units SSLHandshake.doHandshake TLSv1.2-secp256r1-ecdsa_p256 true thrpt 15 5994.866 ± 98.458 ops/s SSLHandshake.doHandshake TLSv1.2-secp256r1-ecdsa_p256 false thrpt 15 218.564 ± 2.128 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-ecdsa_p256 true thrpt 15 819.157 ± 2.588 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-ecdsa_p256 false thrpt 15 398.544 ± 2.490 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-ecdsa_p256 true thrpt 15 291.080 ± 2.579 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-ecdsa_p256 false thrpt 15 210.038 ± 2.639 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-ecdsa_p256 true thrpt 15 81.125 ± 0.268 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-ecdsa_p256 false thrpt 15 73.010 ± 0.202 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-ecdsa_p256 true thrpt 15 676.109 ± 8.801 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-ecdsa_p256 false thrpt 15 359.615 ± 5.130 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-ecdsa_p256 true thrpt 15 269.031 ± 2.893 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-ecdsa_p256 false thrpt 15 198.113 ± 1.863 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-ecdsa_p256 true thrpt 15 78.597 ± 0.216 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-ecdsa_p256 false thrpt 15 70.745 ± 0.310 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-mldsa65 true thrpt 15 855.908 ± 6.884 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-mldsa65 false thrpt 15 498.918 ± 3.217 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-mldsa65 true thrpt 15 291.610 ± 2.162 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-mldsa65 false thrpt 15 231.304 ± 3.006 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-mldsa65 true thrpt 15 81.099 ± 0.296 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-mldsa65 false thrpt 15 75.637 ± 0.284 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-mldsa65 true thrpt 15 705.354 ± 4.272 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-mldsa65 false thrpt 15 444.795 ± 3.734 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-mldsa65 true thrpt 15 270.479 ± 2.889 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-mldsa65 false thrpt 15 217.388 ± 2.694 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-mldsa65 true thrpt 15 78.830 ± 0.271 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-mldsa65 false thrpt 15 73.612 ± 0.247 ops/s ### Linux x64 Benchmark (handshakeProfile) (resume) Mode Cnt Score Error Units SSLHandshake.doHandshake TLSv1.2-secp256r1-ecdsa_p256 true thrpt 15 9188.746 ± 52.421 ops/s SSLHandshake.doHandshake TLSv1.2-secp256r1-ecdsa_p256 false thrpt 15 373.463 ± 1.739 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-ecdsa_p256 true thrpt 15 1283.044 ± 18.904 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-ecdsa_p256 false thrpt 15 599.210 ± 3.064 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-ecdsa_p256 true thrpt 15 492.228 ± 0.789 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-ecdsa_p256 false thrpt 15 360.728 ± 3.029 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-ecdsa_p256 true thrpt 15 114.728 ± 1.313 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-ecdsa_p256 false thrpt 15 104.063 ± 0.938 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-ecdsa_p256 true thrpt 15 1061.404 ± 10.093 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-ecdsa_p256 false thrpt 15 539.196 ± 2.488 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-ecdsa_p256 true thrpt 15 453.521 ± 1.226 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-ecdsa_p256 false thrpt 15 337.482 ± 3.314 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-ecdsa_p256 true thrpt 15 111.832 ± 0.697 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-ecdsa_p256 false thrpt 15 100.497 ± 0.741 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-mldsa65 true thrpt 15 1465.582 ± 16.369 ops/s SSLHandshake.doHandshake TLSv1.3-x25519-mldsa65 false thrpt 15 921.496 ± 3.581 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-mldsa65 true thrpt 15 492.642 ± 0.531 ops/s SSLHandshake.doHandshake TLSv1.3-secp256r1-mldsa65 false thrpt 15 404.251 ± 2.486 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-mldsa65 true thrpt 15 115.125 ± 1.215 ops/s SSLHandshake.doHandshake TLSv1.3-secp384r1-mldsa65 false thrpt 15 107.403 ± 0.470 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-mldsa65 true thrpt 15 1170.072 ± 10.978 ops/s SSLHandshake.doHandshake TLSv1.3-X25519MLKEM768-mldsa65 false thrpt 15 786.573 ± 3.593 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-mldsa65 true thrpt 15 454.836 ± 0.910 ops/s SSLHandshake.doHandshake TLSv1.3-SecP256r1MLKEM768-mldsa65 false thrpt 15 377.328 ± 2.333 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-mldsa65 true thrpt 15 110.738 ± 0.735 ops/s SSLHandshake.doHandshake TLSv1.3-SecP384r1MLKEM1024-mldsa65 false thrpt 15 105.079 ± 0.564 ops/s ## Performance analysis ### Linux AArch64 | Key exchange | Resumed throughput: ML-DSA-65 vs ECDSA-P256 | Not-resumed throughput: ML-DSA-65 vs ECDSA-P256 | Full-handshake time saved | |---|---:|---:|---:| | X25519 | +4.5% | +25.2% | 0.505 ms | | secp256r1 | +0.2% | +10.1% | 0.438 ms | | secp384r1 | -0.0% | +3.6% | 0.476 ms | | X25519MLKEM768 | +4.3% | +23.7% | 0.533 ms | | SecP256r1MLKEM768 | +0.5% | +9.7% | 0.448 ms | | SecP384r1MLKEM1024 | +0.3% | +4.1% | 0.551 ms | ### Linux x64 | Key exchange | Resumed throughput: ML-DSA-65 vs ECDSA-P256 | Not-resumed throughput: ML-DSA-65 vs ECDSA-P256 | Full-handshake time saved | |---|---:|---:|---:| | X25519 | +14.2% | +53.8% | 0.584 ms | | secp256r1 | +0.1% | +12.1% | 0.298 ms | | secp384r1 | +0.3% | +3.2% | 0.299 ms | | X25519MLKEM768 | +10.2% | +45.9% | 0.583 ms | | SecP256r1MLKEM768 | +0.3% | +11.8% | 0.313 ms | | SecP384r1MLKEM1024 | -1.0% | +4.6% | 0.434 ms | ------------- PR Comment: https://git.openjdk.org/jdk/pull/33111#issuecomment-5973919938
