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

Reply via email to