Bash script to plot openssl speed results.
本スクリプトは、ペアリング暗号及び双線形写像の導入、並びに、よりセキュアなパラメータ(192、256ビットセキュリティなど)への移行を検討されている開発者等が、それらの処理速度を手元の環境で計測し、結果を比較表示することにより、導入・移行時の判断材料を得るためのものになります。
v1.3 時点で、以下のオープンソースリポジトリで利用可能な双線形写像(ペアリング)の処理速度を計測し比較結果を図示できます。
更新が続いており、かつ、ビットセキュリティが128より大きなパラメータに対応済み、又は対応が見込まれるリポジトリを選択しています。
以下の図上部の凡例において、loopは双線形写像のコア部分を計算するためのループ処理、fexpは最終べき乗(Final Exponentiation)、pairingは双線形写像全体(loop+fexp)を表します。
Relic 0.7.0 (Relic 0.7.0 リポジトリ内の preset/x64-pbc-*.sh):
Miracle v4.1:
MCL 3.04:
以下の128ビットセキュリティの図をご参照下さい。
128ビットセキュリティ:
128ビットセキュリティに対しては、[eccbench21]の結果も参考になります。
192ビットセキュリティ:
[ISO/IEC 15946-5:2022]の Annex D.3.4 では、 B24-P559 、 BLS24559 又は BLS24_559 に相当するパラメータが掲載されています。
256ビットセキュリティ:
[ISO/IEC 15946-5:2022]の Annex D.3.5 では、 B48-P581 、 BLS48581 又は BLS48_581 に相当するパラメータが掲載されています。
Debian/Ubuntu の場合:
sudo apt install gnuplot git make gcc python
makeとgccは各リポジトリでのビルドで必要pythonは Miracle のビルドで必要
本スクリプトのダウンロードとフォルダへの移動
git clone https://github.com/KazKobara/plot_openssl_speed.git
cd plot_openssl_speed
ヘルプと使い方の表示
./pairing_bench.sh -h
コマンド実行
以下のコマンド例では、上記のような図を ./tmp/Pairing/ フォルダ内に PNG ファイル(*.png)で保存すると共に、その元となった計測結果と計測結果を描画用に整形したデータとを、それぞれ *.log、*.dat に保存します。
./pairing_bench.sh mcl:v3.04 relic:0.7.0 miracle:v4.1
- 各引数の「:」の左側は本コマンドが対応しているリポジトリの略称、右側はそのリポジトリのブランチ又はタグ名になります。
- CPUがx86系の場合は
-t tscオプションを付加することで(実時間でなく)CPUのRDTCS/RDTCSP命令を用いた Time Stamp Counter 値(単位はcycles) を計測します。- CPUがx86系でない場合は、各リポジトリでの対応状況に応じて、pairing_bensh.sh などの変更が必要となる場合があります。例えば:
- Relic 0.7.0 の場合は、
tmp/Pairing/Relic/relic-0.7.0/presetフォルダ下のx64-pbc-*.sh及びpairing_bensh.shを、そのCPUに対応したものに変更する必要があります。
$ awk '/^PRETTY/ {print substr($0,14,length($0)-14)}' /etc/os-release
Ubuntu 22.04.5 LTS
$ uname -srm
Linux 6.6.87.2-microsoft-standard-WSL2 x86_64
$ awk '{if($1$2 == "modelname"){$1="";$2="";$3=""; model=substr($0,4)}; if($1$2 == "cpuMHz") {max=$4/1000; printf "%s (%.2fGHz)\n",model,max; exit;}}' /proc/cpuinfo
Intel(R) Core(TM) i7-10810U CPU @ 1.10GHz (1.61GHz)
最後までお読み頂きありがとうございます。 GitHubアカウントをお持ちでしたら、フォロー及び Star 頂ければと思います。リンクも歓迎です。