Linux Crypto(1):框架总览
1 Linux Crypto分层概览
Linux Crypto 子系统分为三层:
| 层级 | 描述 | 包含组件 |
|---|---|---|
| 使用者层 | 调用加密服务的实体(内核模块或用户空间程序) | 内核使用者:IPsec、dm-crypt、fscrypt 用户空间:OpenSSL, cryptsetup, AF_ALG |
| 核心框架层 | 提供统一API、算法管理、请求调度和模板组合 | crypto_alloc_*() API、算法注册表、模板引擎(如cbc(aes))、异步调度队列 |
| 算法实现层 | 具体算法实现(软件或硬件驱动) | 软件实现:AES-NI, SHA-NI 硬件驱动:CAAM, CCP, Intel QAT |
2 Linux Crypto分层介绍
- 使用者层
- 内核使用者:《Linux Crypto(3):使用者层-内核消费者 - ArnoldLu - 博客园》
- IPsec:网络数据包加密/认证
- dm-crypt:磁盘加密(LUKS)
- fscrypt:文件系统级加密(ext4, F2FS)
- 用户空间使用者:《Linux Crypto(2):使用者层-用户空间(AF_ALG、add_key()/request_key()/keyctl()等) - ArnoldLu - 博客园》
- 通过 AF_ALG Socket:socket(AF_ALG, SOCK_SEQPACKET, "skcipher")
- 通过 libkcapi 或 OpenSSL引擎:直接调用内核算法
- 工具:cryptsetup(LUKS)、ipsec-tools
- 内核使用者:《Linux Crypto(3):使用者层-内核消费者 - ArnoldLu - 博客园》
- 核心框架层《Linux Crypto(4):框架核心层 - ArnoldLu - 博客园》
- 核心功能:
- 算法注册:crypto_register_skcipher() 等注册接口
- 模板组合:支持嵌套算法(如 hmac(sha256))
- 请求调度:异步处理(crypto_enqueue_request())
- API 网关:提供 crypto_alloc_ahash(), crypto_shash_digest() 等统一接口
- 关键数据结构:
- struct crypto_alg:算法元信息
- struct crypto_tfm:算法实例上下文
- 核心功能:
- 算法实现层《Linux Crypto(5):算法实现层 - ArnoldLu - 博客园》
- 软件实现:纯软件算法(无硬件加速),利用CPU指令集加速(如AES-NI/SHA-NI)。
- 硬件驱动:
- 注册硬件加速引擎(如CAAM, CCP)
- 通过DMA/寄存器操作硬件
以及用于测试Crypto的tcrypt《Linux Crypto(9):tcrypt进行Crypto测试 - ArnoldLu - 博客园》。

联系方式:arnoldlu@qq.com
浙公网安备 33010602011771号