本文概述了 WinUI 应用可用的加密功能。 有关特定任务的详细信息,请参阅本文末尾的表。
术语
以下术语通常用于加密和公钥基础结构(PKI)。
| 条款 | 说明 |
|---|---|
| 加密 | 使用加密算法和密钥转换数据的过程。 转换后的数据只能使用相同的算法和相同的(对称)或相关的(公钥)进行恢复。 |
| 解密 | 将加密数据返回到其原始格式的过程。 |
| 纯文本 | 最初是指未经加密的文本信息。 当前指任何未加密的数据。 |
| 密文 | 最初指的是加密的短信,因此无法读取。 当前指代任何加密的数据。 |
| 哈希 | 将可变长度数据转换为固定长度(通常较小)值的过程。 通过比较哈希,可以合理保证两个或多个数据相同。 |
| Signature | 数字数据的加密哈希通常用于对数据的发送方进行身份验证,或验证数据在传输过程中是否不被篡改。 |
| 算法 | 数据加密的分步程序。 |
| 密钥 | 随机或伪随机数,用作加密算法的输入,用于加密和解密数据。 |
| 对称密钥加密 | 加密和解密使用同一密钥的加密。 这也称为密钥加密。 |
| 非对称密钥加密 | 密码学是加密和解密使用不同但数学上相关的密钥。 这也称为公钥加密。 |
| 编码 | 编码数字消息(包括证书)的过程,用于跨网络传输。 |
| 算法供应商 | 实现加密算法的 DLL。 |
| 密钥存储提供程序 | 用于存储密钥材料的容器。 目前,密钥可以存储在软件、智能卡或受信任的平台模块(TPM)中。 |
| X.509 证书 | 通常由证书颁发机构颁发的数字文档,用于向其他相关方验证个人、系统或实体的身份。 |
命名空间
以下命名空间可用于应用。
Windows.Security.Cryptography
包含 CryptographicBuffer 类和静态方法,使你能够:
- 将数据转换为字符串和从字符串转换数据
- 将数据转换为字节数组,并从字节数组中转换数据
- 对网络传输的消息进行编码
- 传输后解码消息
Windows.Security.Cryptography.Certificates
包含类、接口和枚举类型,使你能够:
- 创建证书请求
- 安装证书响应文件
- 在 PFX 文件中导入证书
- 指定和检索证书请求属性
Windows.Security.Cryptography.Core
包含类和枚举类型,使你能够:
- 加密和解密数据
- 哈希数据
- 对数据进行签名并验证签名
- 创建、导入和导出密钥
- 与非对称密钥算法提供程序合作
- 使用对称密钥算法提供程序
- 使用哈希算法提供程序
- 使用计算机身份验证代码 (MAC) 算法提供程序
- 与密钥派生算法提供程序合作
Windows.Security.Cryptography.DataProtection
包含类的模块使您能够:
- 异步加密和解密静态数据
- 异步加密和解密数据流
加密和 PKI 应用程序功能
适用于应用的简化应用程序编程接口支持以下加密和公钥基础结构(PKI)功能。
加密支持
可以执行以下加密任务。 有关详细信息,请参阅 Windows.Security.Cryptography.Core 命名空间。
- 创建对称密钥
- 执行对称加密
- 创建非对称密钥
- 执行非对称加密
- 派生基于密码的密钥
- 创建消息身份验证代码(MAC)
- 哈希内容
- 对内容进行数字签名
SDK 还提供了一个简化的接口,用于基于密码的数据保护。 可以使用此功能执行以下任务。 有关详细信息,请参阅 Windows.Security.Cryptography.DataProtection 命名空间。
- 静态数据的异步保护
- 对数据流的异步保护
编码支持
应用可以对加密数据进行编码,以便跨网络传输,并解码从网络源接收的数据。 有关详细信息,请参阅 Windows.Security.Cryptography 命名空间中可用的静态方法。
PKI 支持
应用可以执行以下 PKI 任务。 有关详细信息,请参阅 Windows.Security.Cryptography.Certificates 命名空间。
- 创建证书
- 创建自签名证书
- 安装证书响应文件
- 以 PFX 格式导入证书
- 使用智能卡证书和密钥(sharedUserCertificates 功能集)
- 使用用户 MY 存储中的证书(sharedUserCertificates 功能集)
此外,可以使用清单执行以下操作:
- 指定每个应用程序受信任的根证书
- 指定每个应用程序的对等信任证书
- 显式禁用来自系统信任的继承
- 指定证书选择条件
- 仅硬件证书
- 通过一组指定的颁发者链接的证书
- 从应用程序存储中自动选择证书
详细文章
以下文章详细介绍了安全方案:
| 主题 | 说明 |
|---|---|
| 证书 | 本文讨论 WinUI 应用中证书的使用。 数字证书用于公钥加密,将公钥绑定到人员、计算机或组织。 绑定标识最常用于向另一个实体进行身份验证。 例如,证书通常用于向用户验证 Web 服务器,并使用 Web 服务器对用户进行身份验证。 可以创建证书请求并安装或导入颁发的证书。 还可以在证书层次结构中注册证书。 |
| 加密密钥 | 本文介绍如何使用标准密钥派生函数来派生密钥,以及如何使用对称和非对称密钥加密内容。 |
| 数据保护 | 本文介绍如何在 Windows.Security.Cryptography.DataProtection 命名空间中使用 DataProtectionProvider 类来加密和解密 WinUI 应用中的数字数据。 |
| MAC、哈希和签名 | 本文讨论如何在 WinUI 应用中使用消息身份验证代码(MAC)、哈希和签名来检测消息篡改。 |
| 对加密的导出限制 | 使用此信息来确定你的应用是否以可能阻止它在 Microsoft 应用商店中列出的方式使用加密。 |
| 常见加密任务 | 这些文章提供了常见 WinUI 加密任务的示例代码,例如创建随机数、比较缓冲区、在字符串和二进制数据之间转换、复制到字节数组和从字节数组复制以及编码和解码数据。 |