openssl engine
概述
openssl 硬件引擎(Engine)能够使用户比较容易地将自己的硬件加入到 openssl 中去,替换其提供的软件算法。
openssl engine 的实现原理
Openssl 中的许多数据结构不仅包含数据本身,还包含各种操作,并且这些操作是可替换的,这类操作集合命名一般是 XXX_METHOD,例如:DSA_METHOD、ECDH_METHOD、DH_METHOD、RSA_METHOD 等。openssl 对各种类型都提供了默认的计算方法(软算法)。如果用户实现了自己的 XXX_METHOD,那么就能替换 openssl 提供的方法,通过硬件实现加密算法。
使用说明
X5 security 系统利用 openssl 的 engine 机制,支持通过 openssl 接口调用 REE 中的加解密模块,以执行加解密相关操作。 目前 openssl engine 仅支持对称加密和 HASH 算法的调用,支持的算法列表请见 算法列表
代码所在路径 :
hbre/openssl-engine/srcengine 板端路径:
/lib/engines-1.1/te600.so使用示例请参考 : openssl 使用示例
注意
X5 平台使用 openssl engine 依赖于硬件安全模块 TE600。需先加载 TE600 驱动 modprobe te_crypto
关于硬件安全模块,请参考安全硬件介绍
openssl 使用示例
对称加解密算法示例
使用 aes-128-cbc 分别加密解密 plain.data
加密操作
openssl enc -engine te600 -aes-128-cbc -in plain.data -out encrypt.data -K 12345678901234567890123456789012 -iv 0123456789abcdef0123456789abcdef
解密操作
openssl enc -engine te600 -d -aes-128-cbc -in encrypt.data -out decrypt.data -K 12345678901234567890123456789012 -iv 0123456789abcdef0123456789abcdef
验证对比
对比源文件plain.data 和 解密文件 decrypt.data 一致,说明 openssl engine 运行正常
~# md5sum decrypt.data plain.data
7572d7b68b5f11e2c5152d9a112372be decrypt.data
7572d7b68b5f11e2c5152d9a112372be plain.data
HASH算法示例
硬件计算
使用 md5 计算文件 decrypt.data
~# openssl dgst -engine te600 -md5 plain.data
engine "te600" set.
MD5(plain.data)= 7572d7b68b5f11e2c5152d9a112372be
从上得到,使用 te600 硬件计算 md5 值为 7572d7b68b5f11e2c5152d9a112372be
软件计算
使用软件算法计算 md5 值
~# md5sum plain.data
7572d7b68b5f11e2c5152d9a112372be plain.data
验证对比
对比二者 md5 值一致,说明 openssl engine 运行正常