1. CNG介绍
Windows应用通过调用统一的API接口来使用密码算法,该接口名称为CNG,全称为Cryptography API: Next Generation。例如,包括数字证书、IE浏览器、Edge浏览器和IIS服务器等的应用、IPSec和Kerberos等协议可通过CNG访问密码服务。微软已经实现了一些符合CNG接口的密码算法模块,Windows系统也允许第三方按照CNG接口要求实现自己的密码库。
2. CNG架构
微软的CNG框架结构如图所示,CNG主要分为密码原语(Cryptographic Primitives)和密钥存储(Key Storage)两部分。
- 密码原语,主要对短期密钥提供计算功能,不具备密钥存储的功能
- 密钥存储,主要用于长期密钥,同时提供密钥存储功能和密码计算功能。
2.1 密码原语
密码原语模块主要针对短期密钥提供密码计算服务,包括生成密钥、密钥计算、导入导出密钥等,同时支持内核层和应用层接口。密码原语运行在调用者所在的空间,不同调用者之间的密钥天然隔离,并且密码原语多为临时密钥,一旦使用完毕立即销毁。
密码原语支持对称算法、非对称签名算法、非对称加密算法、杂凑算法、随机数算法、密钥扩展算法等。
Windows应用和协议通过算法原语路由(router)调用密码算法实现。算法原语路由是Windows操作系统内置的组件