
내 컴퓨터에는 AES-NI가 없지만 실행 시 openssl speed
와 실행 시 -evp
속도 차이가 나타납니다. 왜 이런거야?
openssl speed aes-128-cbc
Doing aes-128 cbc for 3s on 16 size blocks: 18132001 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 4890318 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 1246069 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 1024 size blocks: 311859 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 38970 aes-128 cbc's in 3.00s
OpenSSL 1.0.1f 6 Jan 2014
built on: Thu Jun 11 15:30:15 UTC 2015
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_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 96704.01k 104326.78k 106331.22k 106447.87k 106414.08k
그리고
openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 90633962 aes-128-cbc's in 2.99s
Doing aes-128-cbc for 3s on 64 size blocks: 24880226 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 7574778 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 1962765 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 247920 aes-128-cbc's in 2.99s
OpenSSL 1.0.1f 6 Jan 2014
built on: Thu Jun 11 15:28:12 UTC 2015
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_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 484997.79k 530778.15k 646381.06k 669957.12k 679251.05k
답변1
evp는 실제로 AES_NI만 제어하는 것이 아니라 하드웨어와 컴파일러를 최대한 활용하려고 시도하는 완전히 다른 AES 알고리즘 구현을 사용하므로 수많은 CPU 내장 기능과 최적화를 제어합니다.이 답변security.stackexchange에서 제가 할 수 있는 것보다 훨씬 더 잘 설명합니다.