AES がどれくらいの速度で扱えるかを測定したい。
openssl speed -multi $CORES aes-128-cbc sha256
実験してみた
まずはIntelのCPUで実験
> cat /proc/cpuinfo | model name : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch invpcid_single ibrs ibpb stibp kaiser tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx rdseed adx smap clflushopt intel_pt xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf > openssl speed -multi 8 aes-128-cbc sha256 OpenSSL 1.1.0j 20 Nov 2018 built on: reproducible build, date unspecified options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr) compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/x86_64-linux-gnu/engines-1.1\"" aes-128 cbc 359078.48k 430352.34k 446573.69k 423978.37k 465998.75k 493221.99k sha256 224244.06k 536218.13k 945057.87k 1299140.74k 1215522.99k 1242332.35k
Raspi3 4コアで実験
> cat /proc/cpuinfo | grep model processor : 3 model name : ARMv7 Processor rev 4 (v7l) BogoMIPS : 38.40 Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 > openssl speed -multi 4 aes-128-cbc sha256 compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/lib/ssl\"" -DENGINESDIR="\"/usr/lib/arm-linux-gnueabihf/engines-1.1\"" aes-128 cbc 162479.43k 183362.99k 189770.67k 191614.29k 192888.83k 191987.71k sha256 43623.56k 115694.68k 209662.38k 264529.58k 284770.30k 287719.42k
手元にあるルータでも試してみた。
root@tplinkc7v5:/etc/config# cat /proc/cpuinfo system type : Qualcomm Atheros QCA956X ver 1 rev 0 machine : TP-LINK Archer C7 v5 cpu model : MIPS 74Kc V5.0 root@tplinkc7v5:/etc/config# openssl speed aes-128-cbc sha256 compiler: mips-openwrt-linux-musl-gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/target-mips_24kc_musl/usr/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/target-mips_24kc_musl/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/usr/include -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/include/fortify -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl/include -znow -zrelro -DOPENSSL_SMALL_FOOTPRINT -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -DOPENSSL_NO_ERR -DTERMIOS -Os -pipe -mno-branch-likely -mips32r2 -mtune=24kc -fno-caller-saves -fno-plt -fhonour-copts -Wno-error=unused-but-set-variable -Wno-error=unused-result -msoft-float -iremap/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/build_dir/target-mips_24kc_musl/openssl-1.0.2p:openssl-1.0.2p -Wformat -Werror=format-security -fstack-protector -D_FORTIFY_SOURCE=1 -Wl,-z,now -Wl,-z,relro -fpic -I/build/openwrt-18.06/slaves/phase2/mips_24kc/build/sdk/feeds/base/package/libs/openssl/include -ffunction-sections -fdata-sections -fomit-frame-pointer -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DAES_ASM The 'numbers' are in 1000s of bytes per second processed. type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes aes-128 cbc 11853.28k 13028.85k 13314.53k 13352.39k 13424.46k sha256 4376.05k 9761.24k 17090.33k 21060.47k 22263.52k
最近買ったJ5005のマシンでも試してみた。
cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel model name : Intel(R) Pentium(R) Silver J5005 CPU @ 1.50GHz stepping : 1 microcode : 0x28 cpu MHz : 972.719 cache size : 4096 KB flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave rdrand lahf_lm 3dnowprefetch cpuid_fault cat_l2 pti cdp_l2 ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms mpx rdt_a rdseed smap clflushopt intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts umip rdpid arch_capabilities
aes-128 cbc 247540.61k 270574.27k 276258.99k 618936.32k 625180.67k 623241.90k sha256 357970.44k 917322.11k 1770737.49k 2298001.41k 2424143.87k 2547853.99k
まとめ
簡単に数字だけ拾ってみる
cpu | aes-128 cbc 16byte |
---|---|
Intel(R) Core(TM) i7-6700 | 359078.48k |
Intel(R) Pentium J5005 | 247540.61k |
ARMv7 Processor rev 4 (v7l) | 162479.43k |
MIPS 74Kc V5.0 | 11853.28k |
やっぱりPC用のIntelのCPUは段違いに早いっすね。AESとsha256などOpenVPNとかHTTPSとかをIntel/AMD以外のCPUで扱うのは無理がありそう
ルーターにOpenWRTやDD-WRTを突っ込んだとしてもOpenVPNなど暗号化通信のスループットは全く期待できないと思われる。
IPSecやOpenVPNとかの暗号化をつかった通信を一般ご家庭で試すにはPCのCPUを使うのが一番いい。 Livaのマシン買ってきてLinuxルータを作るのがいいだろうな
GigaEther が2本ついてるマシン

ECS 小型デスクトップパソコン LIVA Zシリーズ Pentium N4200/メモリ4GB/eMMC32GB/Windows 10 Home LIVAZ-4/32-W10(N4200)
- 発売日: 2017/03/11
- メディア: Personal Computers

ECS 小型デスクトップパソコン LIVA Zシリーズ Celeron N3350/メモリ4GB/eMMC32GB/OSなし LIVAZ-4/32(N3350)
- 発売日: 2017/01/14
- メディア: Personal Computers
関連記事
CPUのAES暗号化速度をCPU組込のaesサポートのありなしで測定する。 - それマグで!