所以我有一个带有加密协处理器的嵌入式(Linux)系统和两个需要使用它的用户空间应用程序:SSL(httpd)和专有代码;最大化速度和效率是主要要求。我花了一天时间检查内核挂钩和部分寄存器,并找到了三种可能的解决方案: 1)直接访问协处理器,因为它的内存映射; 2)使用/ dev / crypto库 3)对我的专有应用程序使用OpenSSL调用
在标准操作期间,很少使用SSL,并且专有应用程序产生需要加密的非常重的明文负载。以下是每个选项的优缺点,因为我看到了这些选项以及如何解决这个问题:
1)直接访问 --Pros:可能是最快的方法,最接近完全控制加密协处理器,开销最小,非常适合专有应用程序 --Cons:使用SSL时可能会出现竞争条件或干扰...我不确定两个用户空间应用尝试异步共享硬件资源有多糟糕可能会让事情变得糟糕,我可能不知道直到客户发现并抱怨
2)/ dev / crypto --Pros:SSL已经使用它了,我相信它是基于会话的,所以如果不完全避免,共享问题会得到缓解 --Cons:更多的开销,缺乏适当的ioctl()的文档来正确配置协处理器以实现最佳的高占空比使用
3)使用SSL --Pros:已经设置并使用/ dev / crypto,很少使用......所以它就在那里,可用于加密调用,可能是最好的资源共享管理 --Cons:可能是最开销的,可能没有尽可能有效地使用/ dev / crypto,当专有应用程序和httpd都需要SSL时,事情可能会突然爆发
我真的很想使用选项1,并且会在早上编写测试框架,但我很好奇是否有其他人有这个问题或有任何意见。谢谢!