CBMC: Introduce separate proofs for Keccak XXX_c() functions#1613
CBMC: Introduce separate proofs for Keccak XXX_c() functions#1613mkannwischer merged 1 commit intomainfrom
Conversation
3483598 to
9d9121d
Compare
CBMC Results (ML-KEM-512)Full Results (190 proofs)
|
CBMC Results (ML-KEM-768)Full Results (190 proofs)
|
9d9121d to
74f0e3f
Compare
CBMC Results (ML-KEM-1024)Full Results (190 proofs)
|
74f0e3f to
88a8405
Compare
88a8405 to
a183422
Compare
|
@willieyz Could you rebase this? @mkannwischer Do you have time to take on the review? If so, can you assign yourself? |
Hello @hanno-becker and @mkannwischer, |
03d8088 to
58e8720
Compare
|
I can review if you like... |
rod-chapman
left a comment
There was a problem hiding this comment.
All proofs for K=2,3,4 looks good.
"tests all" on macOS look good.
58e8720 to
164f161
Compare
rod-chapman
left a comment
There was a problem hiding this comment.
Looks good. Please squash and merge.
164f161 to
1fa8997
Compare
|
@mkannwischer , @rod-chapman , Thank you for helping review! |
This commit introduce separate proof for: - mlk_keccakf1600_permute_c() - mlk_keccakf1600x4_extract_bytes_c() - mlk_keccakf1600x4_xor_bytes_c() For arithmetic function that have a native implementation, we have 3 CBMC proofs: 1. Proof for the pure C implementation names XXX_c() 2. Proof for the wrapper function on top of the C implementation 3. Proof for the wrapper function on top of the native function (with C fallback). This commit seperate current proofs for these three functions follow above structure. For each function, the following steps performed: - Add the corresponding CBMC contract, copied from the wrapper function. - Create a dedicated CBMC proof for the pure C implementation. - Update the existing wrapper CBMC proof Makefiles by adding XXX_C to USE_FUNCTION_CONTRACTS, and apply the same change to the native proof configuration. Signed-off-by: willieyz <willie.zhao@chelpis.com>
1fa8997 to
b31d508
Compare
mkannwischer
left a comment
There was a problem hiding this comment.
Thanks @willieyz! Everything looks good to me.
oqs-bot
left a comment
There was a problem hiding this comment.
ppc64le (POWER10) benchmarks
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
59316 cycles |
59252 cycles |
1.00 |
ML-KEM-512 encaps |
71934 cycles |
72002 cycles |
1.00 |
ML-KEM-512 decaps |
91807 cycles |
91771 cycles |
1.00 |
ML-KEM-768 keypair |
98320 cycles |
98502 cycles |
1.00 |
ML-KEM-768 encaps |
114831 cycles |
115188 cycles |
1.00 |
ML-KEM-768 decaps |
140331 cycles |
141190 cycles |
0.99 |
ML-KEM-1024 keypair |
149240 cycles |
150793 cycles |
0.99 |
ML-KEM-1024 encaps |
167613 cycles |
169928 cycles |
0.99 |
ML-KEM-1024 decaps |
198818 cycles |
201704 cycles |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
14222 cycles |
14251 cycles |
1.00 |
ML-KEM-512 encaps |
16002 cycles |
15979 cycles |
1.00 |
ML-KEM-512 decaps |
21505 cycles |
21481 cycles |
1.00 |
ML-KEM-768 keypair |
25141 cycles |
24668 cycles |
1.02 |
ML-KEM-768 encaps |
25682 cycles |
25470 cycles |
1.01 |
ML-KEM-768 decaps |
33494 cycles |
33270 cycles |
1.01 |
ML-KEM-1024 keypair |
34933 cycles |
37191 cycles |
0.94 |
ML-KEM-1024 encaps |
36123 cycles |
36706 cycles |
0.98 |
ML-KEM-1024 decaps |
47329 cycles |
46710 cycles |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
12791 cycles |
12775 cycles |
1.00 |
ML-KEM-512 encaps |
14274 cycles |
14255 cycles |
1.00 |
ML-KEM-512 decaps |
19144 cycles |
19129 cycles |
1.00 |
ML-KEM-768 keypair |
22520 cycles |
22420 cycles |
1.00 |
ML-KEM-768 encaps |
23084 cycles |
23055 cycles |
1.00 |
ML-KEM-768 decaps |
30070 cycles |
30105 cycles |
1.00 |
ML-KEM-1024 keypair |
34220 cycles |
33051 cycles |
1.04 |
ML-KEM-1024 encaps |
32991 cycles |
33046 cycles |
1.00 |
ML-KEM-1024 decaps |
42428 cycles |
42462 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'AMD EPYC 4th gen (c7a)'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.03.
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-1024 keypair |
34220 cycles |
33051 cycles |
1.04 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17635 cycles |
17527 cycles |
1.01 |
ML-KEM-512 encaps |
19858 cycles |
19877 cycles |
1.00 |
ML-KEM-512 decaps |
26404 cycles |
26407 cycles |
1.00 |
ML-KEM-768 keypair |
32989 cycles |
32729 cycles |
1.01 |
ML-KEM-768 encaps |
31031 cycles |
31098 cycles |
1.00 |
ML-KEM-768 decaps |
41488 cycles |
41525 cycles |
1.00 |
ML-KEM-1024 keypair |
43791 cycles |
43945 cycles |
1.00 |
ML-KEM-1024 encaps |
46090 cycles |
45566 cycles |
1.01 |
ML-KEM-1024 decaps |
58086 cycles |
58248 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 3rd gen (c6a) (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
40211 cycles |
40248 cycles |
1.00 |
ML-KEM-512 encaps |
48373 cycles |
48390 cycles |
1.00 |
ML-KEM-512 decaps |
62515 cycles |
62592 cycles |
1.00 |
ML-KEM-768 keypair |
63778 cycles |
63722 cycles |
1.00 |
ML-KEM-768 encaps |
74904 cycles |
74924 cycles |
1.00 |
ML-KEM-768 decaps |
93528 cycles |
93580 cycles |
1.00 |
ML-KEM-1024 keypair |
95278 cycles |
95181 cycles |
1.00 |
ML-KEM-1024 encaps |
109357 cycles |
109356 cycles |
1.00 |
ML-KEM-1024 decaps |
132118 cycles |
132123 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
AMD EPYC 4th gen (c7a) (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
36738 cycles |
36607 cycles |
1.00 |
ML-KEM-512 encaps |
43105 cycles |
43075 cycles |
1.00 |
ML-KEM-512 decaps |
55699 cycles |
55712 cycles |
1.00 |
ML-KEM-768 keypair |
58653 cycles |
58684 cycles |
1.00 |
ML-KEM-768 encaps |
67574 cycles |
67535 cycles |
1.00 |
ML-KEM-768 decaps |
84473 cycles |
84482 cycles |
1.00 |
ML-KEM-1024 keypair |
89041 cycles |
89050 cycles |
1.00 |
ML-KEM-1024 encaps |
99192 cycles |
99289 cycles |
1.00 |
ML-KEM-1024 decaps |
120586 cycles |
120664 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
17688 cycles |
17644 cycles |
1.00 |
ML-KEM-512 encaps |
20643 cycles |
20600 cycles |
1.00 |
ML-KEM-512 decaps |
27087 cycles |
27075 cycles |
1.00 |
ML-KEM-768 keypair |
29976 cycles |
29912 cycles |
1.00 |
ML-KEM-768 encaps |
32751 cycles |
32771 cycles |
1.00 |
ML-KEM-768 decaps |
42012 cycles |
41970 cycles |
1.00 |
ML-KEM-1024 keypair |
43724 cycles |
43743 cycles |
1.00 |
ML-KEM-1024 encaps |
48765 cycles |
48647 cycles |
1.00 |
ML-KEM-1024 decaps |
61386 cycles |
61390 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
18673 cycles |
18638 cycles |
1.00 |
ML-KEM-512 encaps |
21882 cycles |
21880 cycles |
1.00 |
ML-KEM-512 decaps |
28889 cycles |
28867 cycles |
1.00 |
ML-KEM-768 keypair |
31627 cycles |
31540 cycles |
1.00 |
ML-KEM-768 encaps |
34790 cycles |
34772 cycles |
1.00 |
ML-KEM-768 decaps |
44838 cycles |
44774 cycles |
1.00 |
ML-KEM-1024 keypair |
46068 cycles |
46064 cycles |
1.00 |
ML-KEM-1024 encaps |
51499 cycles |
51478 cycles |
1.00 |
ML-KEM-1024 decaps |
65009 cycles |
65016 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Intel Xeon 3rd gen (c6i) (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
45678 cycles |
45640 cycles |
1.00 |
ML-KEM-512 encaps |
54401 cycles |
54165 cycles |
1.00 |
ML-KEM-512 decaps |
69715 cycles |
69737 cycles |
1.00 |
ML-KEM-768 keypair |
74426 cycles |
74168 cycles |
1.00 |
ML-KEM-768 encaps |
86069 cycles |
86023 cycles |
1.00 |
ML-KEM-768 decaps |
106666 cycles |
106591 cycles |
1.00 |
ML-KEM-1024 keypair |
112116 cycles |
111992 cycles |
1.00 |
ML-KEM-1024 encaps |
124597 cycles |
124502 cycles |
1.00 |
ML-KEM-1024 decaps |
150596 cycles |
150505 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Arm Cortex-A76 (Raspberry Pi 5) benchmarks
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
28283 cycles |
28251 cycles |
1.00 |
ML-KEM-512 encaps |
34106 cycles |
34100 cycles |
1.00 |
ML-KEM-512 decaps |
44378 cycles |
44327 cycles |
1.00 |
ML-KEM-768 keypair |
47689 cycles |
47616 cycles |
1.00 |
ML-KEM-768 encaps |
53909 cycles |
53939 cycles |
1.00 |
ML-KEM-768 decaps |
68364 cycles |
68367 cycles |
1.00 |
ML-KEM-1024 keypair |
70320 cycles |
70214 cycles |
1.00 |
ML-KEM-1024 encaps |
78754 cycles |
78751 cycles |
1.00 |
ML-KEM-1024 decaps |
98534 cycles |
98433 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton4 (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
35454 cycles |
35413 cycles |
1.00 |
ML-KEM-512 encaps |
40096 cycles |
40113 cycles |
1.00 |
ML-KEM-512 decaps |
51098 cycles |
51138 cycles |
1.00 |
ML-KEM-768 keypair |
56746 cycles |
56670 cycles |
1.00 |
ML-KEM-768 encaps |
64562 cycles |
65148 cycles |
0.99 |
ML-KEM-768 decaps |
79382 cycles |
79302 cycles |
1.00 |
ML-KEM-1024 keypair |
87851 cycles |
87866 cycles |
1.00 |
ML-KEM-1024 encaps |
97112 cycles |
96877 cycles |
1.00 |
ML-KEM-1024 decaps |
115948 cycles |
115816 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton3 (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
39029 cycles |
38897 cycles |
1.00 |
ML-KEM-512 encaps |
44584 cycles |
44596 cycles |
1.00 |
ML-KEM-512 decaps |
56647 cycles |
56669 cycles |
1.00 |
ML-KEM-768 keypair |
62454 cycles |
62285 cycles |
1.00 |
ML-KEM-768 encaps |
71387 cycles |
72299 cycles |
0.99 |
ML-KEM-768 decaps |
86857 cycles |
87688 cycles |
0.99 |
ML-KEM-1024 keypair |
96225 cycles |
96159 cycles |
1.00 |
ML-KEM-1024 encaps |
106381 cycles |
106134 cycles |
1.00 |
ML-KEM-1024 decaps |
126813 cycles |
126582 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton2
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
28248 cycles |
28276 cycles |
1.00 |
ML-KEM-512 encaps |
34160 cycles |
34135 cycles |
1.00 |
ML-KEM-512 decaps |
44353 cycles |
44418 cycles |
1.00 |
ML-KEM-768 keypair |
47636 cycles |
47670 cycles |
1.00 |
ML-KEM-768 encaps |
53922 cycles |
53905 cycles |
1.00 |
ML-KEM-768 decaps |
68402 cycles |
68360 cycles |
1.00 |
ML-KEM-1024 keypair |
70344 cycles |
70229 cycles |
1.00 |
ML-KEM-1024 encaps |
78742 cycles |
78814 cycles |
1.00 |
ML-KEM-1024 decaps |
98527 cycles |
98458 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
oqs-bot
left a comment
There was a problem hiding this comment.
Graviton2 (no-opt)
Details
| Benchmark suite | Current: b31d508 | Previous: e07bff5 | Ratio |
|---|---|---|---|
ML-KEM-512 keypair |
59207 cycles |
59133 cycles |
1.00 |
ML-KEM-512 encaps |
68651 cycles |
68648 cycles |
1.00 |
ML-KEM-512 decaps |
87381 cycles |
87354 cycles |
1.00 |
ML-KEM-768 keypair |
95416 cycles |
95243 cycles |
1.00 |
ML-KEM-768 encaps |
110374 cycles |
109832 cycles |
1.00 |
ML-KEM-768 decaps |
134612 cycles |
134307 cycles |
1.00 |
ML-KEM-1024 keypair |
148054 cycles |
147904 cycles |
1.00 |
ML-KEM-1024 encaps |
163784 cycles |
163729 cycles |
1.00 |
ML-KEM-1024 decaps |
195572 cycles |
195378 cycles |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
XXX_c()functions #1560For arithmetic functions that have a native implementation, we have 3 CBMC proofs:
This PR add cbmc proof for follwoing three keccakf1600*_c funciton:
mlk_keccakf1600_permute_c()mlk_keccakf1600x4_extract_bytes_c()mlk_keccakf1600x4_xor_bytes_c()For each function, the following steps performed:
XXX_CtoUSE_FUNCTION_CONTRACTS, and apply the same change to the native proof configuration.