Hi @lovesh , thank you for reviewing my previous PR.
1. Abstract
In this issue, let me report the benchmark result for BBS+ and PS signature.
After this, I'd like to discuss:
- if the result makes sense or not (compared to math theory)
- which algorithm is better (for each cases)
- where we can improve the implementation
- where we can improve the benchmark (to measure more other metrics)
2. Machine Spec (Local)
- Macbook Pro 13-inch
- M1 2020
- 16GB Memory
- macOS Ventura 13.5.2
- 512GB Storage
3. Benchmark Steps
git clone git@github.com:docknetwork/crypto.git && cd crypto
cargo bench --bench=bbs_plus_signature
cargo bench --bench=bbs_plus_proof
cargo bench --bench=ps_signature
cargo bench --bench=ps_proof
4. Metrics
As the benchmark, I plotted these 4 metrics with changing the number of messages(attributes) for the statement.
- GenSig Time
- VerSig Time
- GenProof Time
- VerProof Time
- (GenKey Time)
- (SigSize)
- (ProofSize)
5. Benchmark Results
I'll show 2 table and 4 graphs to compare the performance.
*the first row's label means num of messages(attributes)
*the unit is ms
- $2~ $5 changes the number of revealed messages
Table 5-1: Metrics Result for BBS+
| |
|
2 |
4 |
8 |
15 |
20 |
30 |
40 |
60 |
| BBS+ GenSig[ms] |
$1 |
0.62183 |
0.64961 |
0.71722 |
0.827 |
0.90691 |
1.045 |
1.1586 |
1.3416 |
|
$2 |
1.7734 |
1.8958 |
2.0983 |
2.4408 |
2.6355 |
2.9816 |
3.4678 |
3.9194 |
|
ave. |
1.197615 |
1.272705 |
1.40776 |
1.6339 |
1.771205 |
2.0133 |
2.3132 |
2.6305 |
| BBS+ VerSig[ms] |
$1 |
2.7016 |
2.6374 |
2.7036 |
2.8611 |
2.9737 |
3.0657 |
3.1599 |
3.3106 |
|
$2 |
3.2652 |
3.4031 |
3.6543 |
3.8949 |
4.0533 |
4.436 |
4.9669 |
5.4332 |
|
ave. |
2.9834 |
3.02025 |
3.17895 |
3.378 |
3.5135 |
3.75085 |
4.0634 |
4.3719 |
| BBS+ GenProof[ms] |
$1 |
2.0099 |
2.1014 |
2.8049 |
2.2209 |
2.7935 |
2.9676 |
3.2108 |
3.5762 |
|
$2 |
1.96 |
2.067 |
2.8871 |
2.5812 |
2.735 |
2.9154 |
3.2154 |
3.6223 |
|
$3 |
|
2.0406 |
2.5583 |
2.5471 |
2.7057 |
2.8124 |
3.046 |
3.5096 |
|
$4 |
|
2.0601 |
2.3759 |
2.4619 |
2.6178 |
2.6977 |
2.9467 |
3.2454 |
|
$5 |
|
|
|
2.361 |
2.4378 |
2.4847 |
2.6728 |
2.806 |
|
max. |
2.0099 |
2.1014 |
2.8871 |
2.5812 |
2.7935 |
2.9676 |
3.2154 |
3.6223 |
| BBS+ VerProof[ms] |
$1 |
3.5296 |
3.6233 |
3.7149 |
3.7544 |
3.8783 |
3.9414 |
4.0455 |
4.27 |
|
$2 |
3.5781 |
3.624 |
3.6392 |
3.7953 |
3.8829 |
3.9481 |
4.1603 |
4.3722 |
|
$3 |
|
3.6087 |
3.6367 |
3.8269 |
3.8823 |
4.007 |
4.2378 |
4.4628 |
|
$4 |
|
3.5764 |
3.685 |
3.843 |
3.8835 |
4.0056 |
4.2087 |
4.593 |
|
$5 |
|
|
3.7057 |
3.8491 |
3.8423 |
3.9704 |
4.182 |
4.3449 |
|
max. |
3.5781 |
3.624 |
3.7149 |
3.8491 |
3.8835 |
4.007 |
4.2378 |
4.593 |
Table 5-2: Metrics Result for PS
| |
|
2 |
4 |
8 |
15 |
20 |
30 |
40 |
60 |
| PS GenSig[ms] |
$1 |
0.51308 |
0.53232 |
0.56112 |
0.5592 |
0.56739 |
0.55512 |
0.57305 |
0.56861 |
|
$2 |
0.51673 |
0.54085 |
0.5582 |
0.56925 |
0.56855 |
0.5598 |
0.56941 |
0.56456 |
|
ave. |
0.514905 |
0.536585 |
0.55966 |
0.564225 |
0.56797 |
0.55746 |
0.57123 |
0.566585 |
| PS VerSig[ms] |
$1 |
7.7095 |
7.7969 |
8.3695 |
9.0656 |
9.3218 |
10.162 |
10.586 |
12.122 |
|
$2 |
7.3306 |
7.9236 |
7.9625 |
8.6113 |
9.0243 |
9.8657 |
10.314 |
11.564 |
|
ave. |
7.52005 |
7.86025 |
8.166 |
8.83845 |
9.17305 |
10.01385 |
10.45 |
11.843 |
| PS GenProof[ms] |
$1 |
5.9315 |
6.1475 |
6.6131 |
7.9361 |
8.0812 |
9.3107 |
10.846 |
12.102 |
|
$2 |
5.7042 |
5.8307 |
6.5255 |
7.3908 |
8.0245 |
9.1593 |
10.259 |
11.957 |
|
$3 |
|
5.7572 |
6.4059 |
7.225 |
7.7813 |
8.7491 |
9.765 |
11.255 |
|
$4 |
|
5.419 |
6.2343 |
6.9428 |
7.3541 |
8.1313 |
8.5433 |
9.9965 |
|
$5 |
|
|
5.6496 |
6.0622 |
6.2131 |
6.6925 |
6.622 |
7.3308 |
|
max. |
5.9315 |
6.1475 |
6.6131 |
7.9361 |
8.0812 |
9.3107 |
10.846 |
12.102 |
| PS VerProof[ms] |
$1 |
7.2431 |
7.4569 |
7.8751 |
8.3666 |
9.3701 |
9.656 |
10.866 |
12.167 |
|
$2 |
7.327 |
7.5439 |
8.0123 |
8.4641 |
9.2729 |
9.6978 |
11.127 |
12.12 |
|
$3 |
7.4569 |
7.5204 |
7.9836 |
8.5934 |
8.9852 |
9.8368 |
11.128 |
12.588 |
|
$4 |
|
7.6356 |
8.0263 |
8.6903 |
9.0409 |
9.9549 |
11 |
12.433 |
|
$5 |
|
|
7.9485 |
9.2128 |
9.0994 |
10.027 |
10.877 |
12.275 |
|
max. |
7.4569 |
7.6356 |
8.0263 |
9.2128 |
9.3701 |
10.027 |
11.128 |
12.588 |
And these graphs reflects the table.
Graph 5-1: Performance for GenSig/VerSig

Graph 5-2: Performance for GenProof/VerProof

6. Discussion
The result tells them:
- PS is better for GenSig, but BBS+ is better for VerSig, GenProof and VerProof.
- GenSig time takes less than 1ms and looks almost constant (on PS).
- VerSig time on PS takes almost twice than on BBS+.
- GenProof time is positive for number of blinding messages (on both BBS+/PS).
- VerProof time is constant for any number of blinding messages (on both BBS+/PS).
I'll also provide a theoretical computation cost for each algorithm.
*L: message length, d: open length, d’: hidden length, R: generate random, E: exponation, P: pairing
*(XX) means time for message which has 30 attributes
Table 6-1. Computation Cost Theory for BBS+/PS
| |
GenKey |
GenSig |
VerSig |
GenProof |
VerProof |
| BBS+ |
(L+1)RG1+1EG1 |
2RZp+(L+2)EG1(2.01ms) |
(L+1)EG1 + 1EG2+2P(3.75ms) |
2RZp+(d’+8)EG1+1EG2(2.96ms) |
(L+3)EG1+2P(4.01ms) |
| PS |
(L+1)RG1+(L+1)EG2 |
1RG1+1EG1(0.557ms) |
LEG2+2P(10.01ms) |
(d’+3)RZp+3EG1+(2d’+2)EG2(9.31ms) |
(L+1)EG2+2P(10.03ms) |
In my opinion:
- The result matches the theory.
- PS signature looks less computation than BBS+ one, but PS mainly executes the multiplications on G2, which takes more time than G1.
- PS signature needs much less computation on GenSig, but needs much more computation on GenKey instead.
- BBS+ seems better because we mainly have less computation power in VerSig/GenProof/VerProof, which processes on the holder/verifier's mobile devices.
Hi @lovesh , thank you for reviewing my previous PR.
1. Abstract
In this issue, let me report the benchmark result for BBS+ and PS signature.
After this, I'd like to discuss:
2. Machine Spec (Local)
3. Benchmark Steps
4. Metrics
As the benchmark, I plotted these 4 metrics with changing the number of messages(attributes) for the statement.
5. Benchmark Results
I'll show 2 table and 4 graphs to compare the performance.
*the first row's label means num of messages(attributes)
*the unit is ms
Table 5-1: Metrics Result for BBS+
Table 5-2: Metrics Result for PS
And these graphs reflects the table.
Graph 5-1: Performance for GenSig/VerSig
Graph 5-2: Performance for GenProof/VerProof
6. Discussion
The result tells them:
I'll also provide a theoretical computation cost for each algorithm.
*L: message length, d: open length, d’: hidden length, R: generate random, E: exponation, P: pairing
*(XX) means time for message which has 30 attributes
Table 6-1. Computation Cost Theory for BBS+/PS
In my opinion: