面向用户应用的Linux加密API

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

本文比较了Linux Kernel Crypto API和OpenSSL的加密性能,使用bpftrace工具测量了它们加密相同数据的时间。结果显示,Kernel Crypto API的加密速度比OpenSSL慢两倍,但实际上只有81%的差距。作者认为,Kernel Crypto API的加密性能与OpenSSL相当,但需要更好的用户空间接口来提高速度。使用Crypto API是一个权衡速度和安全性的主观决定。

🎯

关键要点

  • Linux内核加密API于2002年推出,最初为IPsec服务,但用户空间应用也能受益。

  • 应用程序通过系统调用与内核通信,需约定加密参数,如算法和密钥长度。

  • 内核可能提供多个相同算法的实现,用户可根据算法名或驱动名选择。

  • 使用libkcapi库测试AES-CTR加密性能,结果显示x86 AES指令速度是通用C实现的两倍。

  • 将加密处理移至内核可提高密钥保护,但会增加系统调用和数据复制的开销。

  • OpenSSL是广泛使用的加密库,作为基准进行性能比较。

  • AES-CTR-128是一种块密码算法,使用128位密钥加密128位数据块。

  • 内核加密API支持零拷贝接口,减少数据传输开销,但有最大大小限制。

  • 测试结果显示OpenSSL的加密速度为3758.60 Mb/s,而内核加密API为2112.49 Mb/s。

  • 通过bpftrace工具分析,内核加密性能与OpenSSL相当,实际差距约为81%。

  • 结论是内核加密API在性能上接近OpenSSL,但需要更好的用户空间接口以提高速度。

➡️

继续阅读