面向用户应用的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,但需要更好的用户空间接口以提高速度。
➡️