相关疑难解决方法(0)

如何检查OpenSSL是否支持/使用Intel AES-NI?

请告诉我,如何检查OpenSSL是否支持/使用Intel AES-NI?

openssl aes

19
推荐指数
2
解决办法
2万
查看次数

充分利用硬件加速器

我想使用OpenSSL来处理所有SSL通信(客户端和服务器端).我们想使用硬件加速卡来卸载重加密计算.

我们注意到在OpenSSL"速度"测试中,可以直接调用加密函数(例如RSA_sign/decrypt,等等).为了充分利用硬件容量,需要多个线程(最多128个线程),这些线程会根据请求加载卡,并确保硬件卡永远不会空闲.

我们希望使用高级OpenSSL API来处理SSL连接(例如SSL_connect/read/write/accept),但是这个API没有公开实际加密操作的位置.例如,在调用时SSL_connect,我们不知道RSA操作完成的点,并且我们事先不知道哪些调用将导致严重的加密计算并且仅将那些调用引用到加速器.

问题:

  1. 如何在充分利用硬件加速器的同时使用高级API?我应该使用多个线程吗?
  2. 有这种"标准"方式吗?(实施例)
  3. (更新时回答)您熟悉英特尔的异步OpenSSL吗?他们似乎试图解决这个问题,但我们找不到实际的代码或用法示例.

UPDATE

  1. 加速OpenSSL*使用英特尔®QuickAssist技术,您可以看到,英特尔还提到了多线程/进程的使用:

    OpenSSL的标准版本本质上是串行的,这意味着它在一个上下文中处理一个连接.从加密操作的角度来看,该发布基于同步/阻塞编程模型.一个主要的限制是吞吐量只能通过添加更多线程(即进程)来扩展,以利用核心并行化,但这也会增加上下文管理开销.

  2. 英特尔的OpenSSL分支终于在这里找到.更多信息可以在这里包含的pdf中找到.

    看起来英特尔改变了OpenSSL ENGINE的工作方式 - 它将工作发布到驱动程序并立即返回,同时应该轮询相应的结果.

    如果使用其他SSL加速器,则也应修改相应的OpenSSL ENGINE.

performance ssl multithreading openssl hardware-acceleration

9
推荐指数
1
解决办法
887
查看次数