首次开始使用 Tink 时,您应先了解一些关键概念,然后再开始使用;以下部分介绍了这些概念。
基元
Tink 使用基元作为加密基础组件来管理底层算法,因此用户可以安全地执行加密任务。原语定义了加密算法和密钥类型的详细信息。
- 如需大致了解支持的原语及其使用场景,请参阅选择原语。
如需了解兼容性信息,请参阅按语言列出的支持的原语。
如需了解详细的背景信息,请参阅原初设计。
密钥类型
键类型实现特定的基元。大多数原语都有多种密钥类型可供选择,具体取决于您对安全性、运行时和空间的要求。例如,AES128_GCM 是一种 AEAD,可快速有效地满足大多数需求。如需了解详情,请参阅按语言划分的支持的密钥类型。
键集和键集句柄
Tink 使用密钥集来管理密钥。密钥集本质上是一组有助于密钥轮替的密钥。密钥集值得注意的属性包括:
- 密钥集中的每个密钥都有一个唯一 ID,该 ID 在密钥集中是唯一的。此 ID 通常会作为前缀添加到生成的每个密文、签名或标记中,以指示所用的密钥(如需了解详情,请参阅 Tink 如何标记密文)。
- 密钥集中一次只能有一个密钥是主密钥。密钥集中的主密钥是指当前“正在使用”的密钥。
- 密钥集 必须包含同一原语(例如 AEAD)的实现,但可以包含不同的密钥类型(例如 AES-GCM 和 XCHACHA20-POLY1305 密钥)。
每种 Tink 实现都提供用于创建或修改密钥集的 API。不过,我们建议使用 CLI 工具 Tinkey。
用户可以使用 keyset 句柄来操作 keyset。密钥集句柄可限制实际敏感密钥材料的泄露。它还抽象出一个密钥集,允许用户获取“封装”整个密钥集的原语。例如,您可以获取具有 N 个密钥的密钥集的 AEAD 原语;然后,使用获取的原语进行加密和解密时,会使用密钥集中的主密钥。
如需了解详情,请参阅密钥集设计。