在Linux系统上如何检查是否支持AES-NI(高级加密)
时间:2019-11-20 08:53:53 来源:igfitidea点击:
英特尔高级加密标准(AES)或新指令(AES-NI)引擎可对OpenSSL,ssh,VPN,Linux/Unix/OSX全盘加密等进行高速硬件加密和解密。
AES-NI是x86指令集体系结构的扩展,用于Intel和AMD的微处理器。它提高了使用AES执行加密和解密的应用程序的速度。
一些服务器和笔记本电脑供应商已经出厂了禁用AES-NI扩展名的BIOS配置。
可能需要更新BIOS或者更改设置,才能启用AES/AES-NI。
在Linux上,如何检测是否支持Intel或AMD AES-NI的?
在Linux上如何检查CPU是否支持AES-NI?
在Linux系统上检测是否支持AES-NI(高级加密)
使用lscpu命令可以检查处理器是否具有AES/AES-NI指令集:
# lscpu
检查处理器是否有AES指令并已在BIOS中启用:
# grep -o aes /proc/cpuinfo
或者
# grep -m1 -o aes /proc/cpuinfo
使用cpuid检查在Linux上是否启用了AES-NI
另一种方法是使用cpuid命令:
# cpuid | grep -i aes | sort | uniq
输出示例:
AES instruction = true
如何检测是否所有的CPU都支持AES NI?
下面这两个命令的输出结果应该一样:
# lscpu | grep '^CPU(s):' # grep -o aes /proc/cpuinfo | wc -l
检查系统是否加载了英特尔AES-NI指令优化驱动程序?
# sort -u /proc/crypto | grep module
输出示例:
module : aesni_intel module : aes_x86_64 module : crc32_pclmul module : crct10dif_pclmul module : ghash_clmulni_intel module : kernel
检查是否为openssl启用了Intel AES-NI?
是否支持AES-NI/VIA挂锁引擎?
$ openssl engine
支持AES的基于VIA的cpu的输出示例:
(padlock) VIA PadLock (no-RNG, no-ACE) (dynamic) Dynamic engine loading support
另一个服务器的输出
(aesni) Intel AES-NI engine (dynamic) Dynamic engine loading support
支持AES-NI的CPU和普通CPU比较
服务器A支持AES-NI,
$ dd if=/dev/zero count=1000 bs=1M | ssh -l Hyman -c aes128-cbc serverA "cat >/dev/null"
结果:Password: 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 10.6691 s, 98.3 MB/s
服务器B不支持硬件加密:
$ dd if=/dev/zero count=1000 bs=1M | ssh -l Hyman -c aes128-cbc serverB "cat >/dev/null"
结果:Hyman@localhost's password: 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 31.6675 s, 33.1 MB/s
测试openssl性能
在上面的两个系统上,运行下面的命令进行比较:
$ openssl speed
或者
$ openssl speed aes-128-cbc
对于最新版本的openssl,可以试试更长的密钥:
$ openssl speed aes-256-cbc $ openssl speed -evp aes-256-cbc