openssl_perf

所属分类:加密解密
开发工具:Batchfile
文件大小:0KB
下载次数:0
上传日期:2023-08-03 08:16:51
上 传 者sh-1993
说明:  opensslて?の暗号ヘ?ンチマークスクリフ?トや結果なと?,
(Openssl ? password ヘ ? ン チ マ ? ス ク リ フ ? ト や result な と ?,)

文件列表:
LICENSE (1066, 2023-08-03)
openssl_perf.bat (549, 2023-08-03)
openssl_perf.sh (521, 2023-08-03)
results/ (0, 2023-08-03)
results/openwrt/ (0, 2023-08-03)
results/openwrt/openwrt_2203_5_bcm4708a0.txt (2933, 2023-08-03)
results/openwrt/openwrt_2203_5_mt7621.txt (2881, 2023-08-03)
results/ubuntu/ (0, 2023-08-03)
results/ubuntu/ubuntu_2204_intel_i5_7400.txt (17228, 2023-08-03)
results/ubuntu/ubuntu_2204_intel_i7_4790.txt (2892, 2023-08-03)
results/ubuntu/ubuntu_2204_intel_i7_950.txt (2887, 2023-08-03)
results/ubuntu/ubuntu_2204_nanopi_m4.txt (2854, 2023-08-03)
results/ubuntu/ubuntu_2204_rasberry_pi_4b.txt (2853, 2023-08-03)
results/ubuntu/ubuntu_2304_intel_i7_13700.txt (18459, 2023-08-03)
results/windows/ (0, 2023-08-03)
results/windows/win10_intel_i7_10750h.txt (3010, 2023-08-03)
results/windows/win11_intel_i5_12400.txt (3016, 2023-08-03)
results/yocto/ (0, 2023-08-03)
results/yocto/yocto_4_1_imx6_ultralite.txt (2948, 2023-08-03)
results/yocto/yocto_4_1_imx8m_plus.txt (2918, 2023-08-03)

# openssl_perf opensslのコマンド(openssl speed)を使用した暗号ベンチマークスクリプトです。 昨今のTLSやVPNで使用されるであろう暗号やハッシュの速度を測定します。 また、私が把握している環境の結果もまとめています。 --- ### 使い方 1.測りたい環境でopensslコマンドが実行可能かどうか確認。 Windowsの場合は`git for windows`を入れたらとりあえず入ると思います。 Linuxの場合はopensslパッケージを入れてください 2.このリポジトリをダウンロードする。 3.できる限りバックグラウンドのプログラムを終了する。 4.おもむろに以下スクリプトを実行して計測する (Linux系の場合) ``` $ ./openssl_perf.sh ``` (Windowsの場合) ``` openssl_perf.bat ``` --- ### その他 コマンドは`openssl speed -elapsed -evp`を使用しています。-evpを指定するとCPUでAES-NIや暗号拡張があった場合にその機能を使ってくれるようです。 結果はそのCPUに暗号拡張命令などがない場合は、純粋にシングルスレッドの性能に大体比例します。メモリ帯域も少し関係するかもしれません。 測定する暗号ハッシュ楕円暗号系は以下のとおりです。 - AES-128-CBC AES-256-CBC:CBCは古いですがOpenVPNに使われることがあり指標となるため測定 - AES-128-GCM AES-256-GCM :AES GCMはTLSでよく使用されるため測定 - Chacha20-Poly1305 : WireguradとTLSで使用されるため測定 - SHA-1 SHA-256 SHA-512 : TLSで使用されるため測定 - BLAKE2s256 BLAKE2b512 : Wireguradで使用されるため測定 - X25519 X448 : TLSとWireguradの鍵交換で使用されるため測定 - Ed25519 Ed448 : TLSとWireguradの証明書と認証で使用されるため測定 --- ## 測定結果まとめ ### 評価したデバイス OpenWrt bcm4708:ARM Cortex-A9 Broadcom BCM4708A0 800MHz 2C2T mt7612:MIPS MediaTek MT7621AT 880MHz 2C4T Linux(Ubuntu) i7-950: Intel i7-950 3.06GHz 4C8T (デスクトップ) i7-4790: Intel i7-4790 3.60/4.00GHz 4C8T (デスクトップ) i5-7400: Intel i5-7400 3.00/3.50GHz 4C4T (デスクトップ) i7-13700: Intel i7-13700 2.10/5.10GHz 16C24T (デスクトップ/PL1=219w) NanoPi M4:ARM Cortex-A72/A53 2.0/1.5GHz 6C6T(A72/2 A53/4) Raspberry Pi4:ARM Cortex-A72 Broadcom BCM2711 1.5GHz 4C4T Windows i7-1075H: Intel i7-1075H 2.60/4.80GHz 6C12T (ノートPC) i5-12400: Intel i5-12400 2.50/4.40GHz 6C12T (デスクトップ/PL1=65w) その他ボード類 i.MX6 UL: ARM Cortex-A7 NXP i.MX6 Ultralite (1C/1T) i.MX8 MP: NXP Cortex-A53 NXP i.MX8M Plus (4C/4T) ### 測定結果 共通鍵暗号系(16384 bytes) | ターゲット | OS | AES-128-CBC | AES-256-CBC | AES-128-GCM | AES-256-GCM | ChaPoly | | ---- | ----: | ----: | ----: | ----: | ----: | ----: | | mt7621 | OpenWrt | 12225.40k | 9275.19k | 6096.37k | 5258.12k | 20722.22k | | bcm4708 | OpenWrt | 23571.11k | 18137.09k | 11539.80k | 10169.00k | 48239.96k | | i.MX6 UL | Other | 13609.64k | 10184.21k | 9950.55k | 7979.01k | 31173.29k | | Raspberry Pi4 | Linux | 50604.71k | 36175.87k | 37126.14k | 28759.38k | 321115.48k | | Nanopi M4 | Linux | 1348408.66k | 1021242.03k | 1475952.64k | 1282812.59k | 321323.01k | | i.MX8 MP | Other | 1352974.34k | 839090.18k | 865888.94k | 760709.12k | 300908.54k | | i7-950 | Linux | 325773.99k | 230834.77k | 220217.34k | 189054.98k | 675883.69k | | i7-4790 | Linux | 884381.01k | 638489.94k | 3632392.87k | 3078662.83k | 2092160.34k | | i5-7400 | Linux | 1306421.93k | 945389.57k | 5353089.71k | 3837105.49k | 2047006.04k | | i7-10750H | Win | 1675771.41k | 1228609.68k | 6419370.95k | 4519823.05k | 2553944.45k | | i5-12400 | Win | 2073506.79k | 1522594.66k | 7625841.78k | 6456553.38k | 2548993.45k | | i7-13700 | Linux | 2514769.24k | 1843789.82k | 9862949.55k | 8402228.57k | 3092370.77k | ハッシュ系(16384 bytes) | ターゲット | OS | SHA1 | SHA256 | SHA512 | BLAKE2s256 | BLAKE2b512 | | ---- | ----: | ----: | ----: | ----: | ----: | ----: | | mt7621 | OpenWrt | 51508.90k | 22480.37k | 7217.67k | unknown | unknown | | bcm4708 | OpenWrt | 58654.72k | 35820.89k | 16569.69k | unknown | unknown | | i.MX6 UL | Other | 33477.97k | 18388.31k | 16378.54k | 18530.30k | 12981.59k | | Raspberry Pi4 | Linux | 230195.20k | 170360.83k | 244995.41k | 183009.28k | 299543.21k | | Nanopi M4 | Linux | 981073.92k | 874190.17k | 245377.71k | 183003.82k | 299079.00k | | i.MX8 MP | Other | 801985.88k | 759922.69k | 182534.14k | 165625.86k | 265442.65k | | i7-950 | Linux | 614946.13k | 262067.54k | 343550.63k | 372632.23k | 616633.69k | | i7-4790 | Linux | 1093768.53k | 492688.73k | 728574.63k | 555286.53k | 891300.52k | | i5-7400 | Linux | 978010.11k | 440937.13k | 661514.92k | 501470.55k | 811646.98k | | i7-10750H | Win | 1188275.17k | 555729.34k | 816086.50k | 651050.43k | 958477.59k | | i5-12400 | Win | 2278205.29k | 2050294.74k | 902695.38k | 755977.36k | 1204604.27k | | i7-13700 | Linux | 2800670.04k | 2503999.49k | 1103631.70k | 858537.98k | 1385687.72k | 楕円暗号と公開鍵認証 | ターゲット | OS |op/s(X25519) | op/s(X448) | sign/s(Ed25519) | verify/s(Ed25519) | sign/s(Ed448) | verify/s(Ed448) | | ---- | ----: | ----: | ----: | ----: | ----: | ----: | ----: | | mt7621 | OpenWrt | 602.1 | 62.9 | 1207.5 | 559.9 | 136.1 | 56.7 | | bcm4708 | OpenWrt | 644.4 | 96.7 | 1532.7 | 564.9 | 231.9 | 87.6 | | i.MX6 UL | Other |361.4 | 64.5 | 832.9 | 321.4 | 129.2 | 57.5 | | Raspberry Pi4 | Linux | 4184.7 | 1015.5 | 9027.4 | 4052.1 | 1186.1 | 934.8 | | Nanopi M4 | Linux | 4081.9 | 1010.5 | 9019.9 | 3952.7 | 1189.5 | 938.2 | | i.MX8 MP | Other |3396.2 | 732.6 | 5309.8 | 2898.1 | 667.9 | 683.2 | | i7-950 | Linux | 12931.5 | 2688.2 | 15854.6 | 5769.3 | 2749.7 | 2548.6 | | i7-4790 | Linux | 23444.1 | 4606.7 | 24515.2 | 9146.1 | 4557.4 | 4231.5 | | i5-7400 | Linux | 29804.6 | 4697.7 | 22259.5 | 8301.0 | 4223.0 | 4325.4 | | i7-10750H | Win | 34845.7 | 2350.7 | 36331.1 | 11317.1 | 3791.2 | 2142.2 | | i5-12400 | Win | 42376.7 | 3179.5 | 43279.0 | 13225.6 | 5442.1 | 2764.5 | | i7-13700 | Linux | 48450.4 | 10018.8 | 41534.3 | 16154.8 | 8346.3 | 9498.0 | --- ### 感想 Wireguardを支える暗号スイートがChaCha20-Poly1305、BLAKE2s256、Curve25519と今どきのものを使用していて、VPNにしては筋がよくパフォーマンス良いということを聞いたので、実際AESやSHAなんかと計測したくなりついでなら自分がどうにかできる環境で色々測定したいなぁと思い作ってみました。 結果としてはほぼ想定通りで、この10年間(2023)の家庭用ルータで使用されているようなARM32やMIPS32系のCPUはやはりIntel64Bit系と比べても荷が重いと言った感じで、もうAArch64系に移ったほうが良さそうです。 AArch64系であってもRaspberry PI 4のようなCPUの暗号拡張命令(armv8-a+crypto: Cryptographic instructions)が使用できないとSHAやAESといった項目はなかなかに厳しく、初代Corei7にすら負けると行った感じです。 (SIMD..ARMの場合はNEONは使えるはずなのですが、SIMD使ってもこの結果なのかは不明) よって、Raspberry PI 4ではChacha-20 poly1305を使うようなソリューションにしたほうが良いということになります。 (VPNではWireguard、またはOpenVPNのバージョンを新し目にしてChachaを使えるようにすると良い結果が得られます) 昨今インターネット通信でも当たり前にTLSを使用しているので、Raspberry PI 5では流石に暗号拡張命令が使用できるようになってると良いですね… 他方、AArch64系でCryptographic instructionsが使用可能なCPUはAESやSHAのパフォーマンスは大幅改善し、第4世代Intel I7に迫る勢いになります。(流石に第1世代には余裕で勝つようです) 新しくARM系でプロダクトを起こす場合は、AArch64で、かつ、CPUが暗号拡張命令を使用可能か?というのを確認したほうが良いと思います。 Intel系はもうAES-NIを使えるなら使ったほうが良いですね。 N100や最近のPentium GOLDなどのいわゆるローエンドCPUでもAES-NIは対応しているので、もう対応の有無を気にする必要はなさそうですがフォールバックでAES-NIを使用しない実装は入れないといけないとかあると思います。 N100の環境は持ってないのでなんとも言えませんが、N100の結果をここに加えるとおもしろい結果が得られると思います。 細かく見ていくとCPUで暗号拡張命令が使える場合は、AES-CBCよりGCMのほうが早く、また計算が軽いと言われているChacha-20 poly1305よりも早くなります。 よって、CPUで暗号拡張命令が使える場合はChacha-20 poly1305を使うよりもAES-GCMの使用を検討してみても良いでしょう。 SHAもこの拡張命令の影響があり、これも暗号拡張命令が使えるCPUが有利となります。 楕円暗号系については現状そのような拡張命令が無いため、純粋にCPUのシングルスレッド性能(やメモリ速度)に比例しています。 楕円暗号の中でもCurve25519(X25519)は軽いとされていますが、AESなどと比べると重い処理なので今後のCPUはこの辺りの楕円暗号系アクセラレーションに対応するものが出るかもしれません。

近期下载者

相关文件


收藏者