CentOS OS Ubuntu Windows アプリ インフラ

暗号化ハードウェアアクセラレーションの有効化確認

2018年2月24日

こんにちは!シミダイ(@shimidai2100)です。

「暗号化したら性能が落ちた」、「暗号化したらCPU使用率が増加した」なんて事象は多くあると思います。

今回は「使用しているCPUが暗号化ハードウェアアクセラレーションが動作しているのか?」を確認する手順を紹介します。

使用しているCPUがハードウェアアクセラレーションに対応しているのか?はCPUベンダーに問い合わせましょう。


ハードウェアアクセラレーションとは?

ハードウェアアクセラレーションとはなんでしょう?

通常のCPU上で動作するソフトウェアの実装では処理のレイテンシやスループットが遅い、消費電力が大きい、などといった問題があるような場合がある。その際に、ハードウェア実装による支援で実行速度などを加速(アクセラレーション)し、システム全体の性能や効率を向上させる技術である。

これでは何を言っているかわからないですね。。。

簡単に説明すると、

  1. 特定の機能を処理をさせるためにその特定の機能をCPUに組み込んでおく
  2. 組み込んだ機能を使用して処理を行い、より効率的に行うことを”アクセラレーション

ということになります。最近では画像処理に特化したGPU(Graphics Processing Unit)、浮動小数点演算を専門に行うFPU(Floating Point Unit)、音声などのデジタル信号処理に特化したDSP(Digital Signal Processor)などがあります。

暗号化ハードウェアアクセラレーションとは?

暗号化ハードウェアアクセラレーションとは何でしょう?

暗号化ハードウェアアクセラレーションとは、暗号化・復号化に特化したCPUの演算ユニットになります。

通常暗号化・復号化はCPUの演算としては大変重い処理になります。

そこでより効率的に暗号化・復号化するために、CPUに演算ユニットを組み込んでアクセラレーションさせるわけです。

暗号化技術はメジャーであるため、最近のIntel製CPUであれば大抵暗号化ハードウェアアクセラレーションは導入されております。

それだけセキュリティがメジャーになり、暗号化がマストの機能としている証拠です。

暗号化ハードウェアアクセラレーションが動作確認

CPUが暗号化ハードウェアアクセラレーションが動作しているか確認するには、ほぼすべての暗号アルゴリズムを使用できる「OpenSSL」を使用することオススメします。

参考OpenSSL(https://www.openssl.org/

Linux環境

まずはOpenSSLをインストールする手順は↓になります。

yum install openssl

では、実際にOpenSSLで暗号化アクセラレーションを確認してみます。

openssl speed

↓が実行結果になります。数値が小さいとアクセラレーションが動作していないので、バイオスからCPUの設定を確認してみてください。

OpenSSL 1.0.2k-fips  26 Jan 2017
built on: reproducible build, date unspecified
options:bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
md2               2279.59k     4938.92k     6600.53k     7070.76k     7337.18k
mdc2                 0.00         0.00         0.00         0.00         0.00
md4              31494.49k   127570.66k   295093.35k   383898.45k   593672.17k
md5              23270.85k    82694.24k   203724.58k   349466.45k   407390.23k
hmac(md5)        26959.19k    80615.37k   184179.74k   348252.93k   420085.76k
sha1             31707.07k    97720.59k   209027.04k   352261.97k   299889.16k
rmd160           23665.96k    55893.78k   104798.66k   142741.33k   142905.65k
rc4             162527.91k   325344.75k   365736.96k   451112.44k   396052.22k
des cbc          40887.81k    41067.24k    37180.67k    34788.46k    43656.53k
des ede3         15146.81k    14421.24k    15460.27k    16217.92k    16859.00k
idea cbc         48064.13k    50112.11k    51953.59k    52245.33k    47396.57k
seed cbc         46039.35k    46640.13k    46887.37k    47156.05k    47313.96k
rc2 cbc          22341.97k    23215.01k    23734.83k    23097.65k    22421.30k
rc5-32/12 cbc    85066.49k   101131.72k   104622.25k   109036.37k   109703.96k
blowfish cbc     72279.83k    78941.04k    79191.25k    78629.43k    77271.04k
cast cbc         65433.16k    71680.00k    72602.67k    73996.48k    70683.31k
aes-128 cbc      50335.85k    59084.42k    68833.92k    57635.71k    52230.83k
aes-192 cbc      35182.02k    56309.51k    58375.89k    60614.78k    59658.24k
aes-256 cbc      48926.12k    33287.36k    48098.53k    46813.01k    45510.35k
camellia-128 cbc    56041.56k    84932.21k    92463.76k    82087.25k    99178.27k
camellia-192 cbc    48332.30k    61399.09k    58987.35k    76115.90k    70334.17k
camellia-256 cbc    41649.91k    60283.37k    68456.77k    62221.65k    74739.95k
sha256           18143.89k    65219.76k    86792.11k   127246.20k   157750.61k
sha512           15876.54k    70561.12k   135738.51k   156780.37k   194005.84k
whirlpool        16331.95k    34973.87k    52035.76k    71146.49k    69584.21k
aes-128 ige      52675.24k    64097.87k    61633.83k    50962.77k    56242.55k
aes-192 ige      50935.14k    50835.73k    53531.75k    53038.90k    45303.83k
aes-256 ige      40062.65k    45925.65k    43612.72k    44628.33k    30172.72k
ghash           444077.61k   672676.36k   999207.58k  1075834.19k  1086913.18k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000139s 0.000010s   7193.2  99059.4
rsa 1024 bits 0.000421s 0.000029s   2373.1  34978.7
rsa 2048 bits 0.003090s 0.000089s    323.6  11202.3
rsa 4096 bits 0.022472s 0.000361s     44.5   2771.5
                  sign    verify    sign/s verify/s
dsa  512 bits 0.000137s 0.000119s   7298.0   8393.7
dsa 1024 bits 0.000306s 0.000339s   3265.2   2947.4
dsa 2048 bits 0.001110s 0.001314s    900.5    761.3
                              sign    verify    sign/s verify/s
 256 bit ecdsa (nistp256)   0.0001s   0.0003s   8500.5   3259.6
 384 bit ecdsa (nistp384)   0.0005s   0.0024s   1840.5    424.9
 521 bit ecdsa (nistp521)   0.0015s   0.0023s    686.2    438.2
                              op      op/s
 256 bit ecdh (nistp256)   0.0002s   4438.8
 384 bit ecdh (nistp384)   0.0019s    535.6
 521 bit ecdh (nistp521)   0.0015s    647.1

Windows環境

Windowsではexeファイルからインストールを行います。

https://wiki.openssl.org/index.php/Binariesからインストールすることができます。

32Bit版と64Bit版があるので注意してください。

openssl speed

↓が実行結果になります。

C:\OpenSSL-Win64\bin\openssl.exe speed

↓が実行結果になります。数値が小さいとアクセラレーションが動作していないので、バイオスからCPUの設定を確認してみてください。

OpenSSL 1.1.0g  2 Nov 2017
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(long) aes(partial) idea(int) blowfish(ptr)
compiler: cl " "VC-WIN64A
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md2                  0.00         0.00         0.00         0.00         0.00         0.00
mdc2             11968.63k    14174.08k    15524.72k    15236.77k    15240.04k    15554.81k
md4              39092.94k   127598.14k   321339.91k   517867.56k   612183.17k   633334.39k
md5              85834.51k   212298.24k   407567.61k   511915.49k   558301.18k   561408.68k
hmac(md5)        34400.01k   108299.74k   246339.03k   429680.09k   534839.64k   556034.73k
sha1             93547.53k   239259.50k   504027.84k   674043.22k   767996.38k   779527.95k
rmd160           23313.63k    60901.75k   117809.49k   153580.54k   169492.48k   171420.33k
rc4             532361.82k   584174.02k   488131.07k   477350.91k   457777.93k   458156.71k
des cbc          63985.71k    64872.96k    62350.65k    62287.74k    62126.71k    62998.67k
des ede3         23583.65k    24059.93k    23934.28k    22363.98k    23951.83k    24285.25k
idea cbc         79223.01k    81856.98k    82739.29k    83287.98k    83156.99k    83290.79k
seed cbc         66586.10k    67872.51k    67940.61k    67929.43k    68856.49k    69890.35k
rc2 cbc          37085.70k    37577.64k    37876.99k    37896.87k    37885.27k    37896.19k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00         0.00
blowfish cbc     96057.77k   101196.07k   102456.49k   102923.95k   104668.20k   106126.93k
cast cbc        102505.10k   107485.76k   109241.43k   108993.92k   109057.34k   110751.70k
aes-128 cbc      90333.55k   100321.67k    91040.72k    96689.50k   120387.56k   123484.92k
aes-192 cbc      86221.66k    94042.59k   100437.00k   105382.92k   104826.43k   104204.30k
aes-256 cbc      79175.11k    88095.47k    89897.56k    90563.58k    89806.17k    90854.74k
camellia-128 cbc    93169.84k   142213.72k   161890.65k   168188.71k   169347.75k   169935.19k
camellia-192 cbc    80523.54k   111180.17k   122162.71k   125057.71k   125845.50k   126107.65k
camellia-256 cbc    80690.91k   109659.37k   118858.63k   124953.94k   126050.30k   126916.33k
sha256           57056.38k   135874.28k   257871.04k   323560.15k   343233.88k   357218.55k
sha512           43514.53k   169828.35k   301612.71k   447498.34k   519566.66k   532032.17k
whirlpool        30189.78k    64736.45k   108283.05k   131898.52k   142518.50k   141996.95k
aes-128 ige     110499.76k   118170.11k   117925.38k   118858.85k   118892.60k   119383.14k
aes-192 ige      93570.14k    98765.65k   101480.34k    97292.97k   101624.03k   101651.48k
aes-256 ige      81511.62k    85562.67k    85616.13k    87167.34k    86977.19k    87158.08k
ghash          1105736.65k  3521044.95k  6299218.94k  7419105.82k  7766433.79k  7779631.10k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000073s 0.000005s  13728.0 218854.3
rsa 1024 bits 0.000129s 0.000009s   7763.4 114769.2
rsa 2048 bits 0.000819s 0.000024s   1220.3  42375.1
rsa 3072 bits 0.002311s 0.000048s    432.7  20696.9
rsa 4096 bits 0.005032s 0.000085s    198.7  11767.9
rsa 7680 bits 0.047619s 0.000283s     21.0   3532.0
rsa 15360 bits 0.245046s 0.001031s      4.1    969.8
                  sign    verify    sign/s verify/s
dsa  512 bits 0.000080s 0.000057s  12461.9  17604.2
dsa 1024 bits 0.000126s 0.000108s   7942.8   9239.3
dsa 2048 bits 0.000291s 0.000287s   3435.6   3481.9
                              sign    verify    sign/s verify/s
 160 bit ecdsa (secp160r1)   0.0001s   0.0004s  10265.7   2828.8
 192 bit ecdsa (nistp192)   0.0001s   0.0004s   9004.6   2340.6
 224 bit ecdsa (nistp224)   0.0001s   0.0005s   6944.9   1838.0
 256 bit ecdsa (nistp256)   0.0001s   0.0001s  17824.2   9189.0
 384 bit ecdsa (nistp384)   0.0003s   0.0011s   3627.4    872.4
 521 bit ecdsa (nistp521)   0.0005s   0.0022s   1906.2    457.0
 163 bit ecdsa (nistk163)   0.0003s   0.0006s   3609.6   1581.0
 233 bit ecdsa (nistk233)   0.0005s   0.0009s   1998.0   1171.1
 283 bit ecdsa (nistk283)   0.0007s   0.0013s   1340.8    741.4
 409 bit ecdsa (nistk409)   0.0016s   0.0021s    616.6    468.9
 571 bit ecdsa (nistk571)   0.0034s   0.0045s    291.2    222.0
 163 bit ecdsa (nistb163)   0.0003s   0.0007s   3610.6   1534.5
 233 bit ecdsa (nistb233)   0.0005s   0.0009s   2011.7   1142.3
 283 bit ecdsa (nistb283)   0.0007s   0.0014s   1333.8    698.4
 409 bit ecdsa (nistb409)   0.0016s   0.0022s    613.2    452.5
 571 bit ecdsa (nistb571)   0.0034s   0.0048s    292.5    208.2
 253 bit ecdsa (X25519)   0.0000s   0.0000s      1.$      1.$
                              op      op/s
 160 bit ecdh (secp160r1)   0.0003s   3360.9
 192 bit ecdh (nistp192)   0.0004s   2847.0
 224 bit ecdh (nistp224)   0.0005s   2203.1
 256 bit ecdh (nistp256)   0.0001s  15683.7
 384 bit ecdh (nistp384)   0.0010s   1005.8
 521 bit ecdh (nistp521)   0.0018s    546.0
 163 bit ecdh (nistk163)   0.0003s   3284.7
 233 bit ecdh (nistk233)   0.0004s   2479.6
 283 bit ecdh (nistk283)   0.0006s   1539.7
 409 bit ecdh (nistk409)   0.0010s    973.5
 571 bit ecdh (nistk571)   0.0023s    443.4
 163 bit ecdh (nistb163)   0.0003s   3235.0
 233 bit ecdh (nistb233)   0.0004s   2391.8
 283 bit ecdh (nistb283)   0.0007s   1463.4
 409 bit ecdh (nistb409)   0.0011s    928.6
 571 bit ecdh (nistb571)   0.0023s    426.7
 253 bit ecdh (X25519)   0.0000s      1.$

その他お役立ち情報

特定の暗号化アルゴリズムも指定できます。

openssl speed&nbsp;<暗号アルゴリズム>

b

関連記事

-CentOS, OS, Ubuntu, Windows, アプリ, インフラ

Copyright© shimidai2100 , 2020 All Rights Reserved.