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/src

  • engine 板端路径: /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 运行正常