术语表

非对称密钥加密:使用配对密钥(公钥和私钥)来加密和解密数据的加密系统。公钥用于加密数据,并且可以共享。私钥用于解密数据,并且只有所有者知道私钥。

加密文本:使用算法对明文执行加密的结果。在使用密钥将加密转换回明文之前,加密不可理解。

一致性:表示 Tink 在所有编程语言中的行为都“相同”。例如,Tink 可提供评估一致性,这意味着对于给定密钥集,如果基元创建以两种语言成功完成,则基元的行为将相同。

密钥:加密或解密数据所需的一条信息(例如字符串)。如需了解其表示方式,请参阅键对象

密钥集和密钥集句柄:Tink 使用密钥集管理密钥。密钥集实质上是一组有助于密钥轮替的密钥。密钥集的值得注意的属性包括:

  • 密钥集中的每个密钥均有一个唯一 ID,该 ID 在一个密钥集中具有唯一性。此 ID 通常作为前缀添加到每个生成的密文、签名或标记中,以指示使用了哪个密钥(如需了解详情,请参阅 Tink 如何标记密文)。
  • 一个密钥集中一次只能有一个密钥为主密钥。密钥集中的主键就是当前“正在使用”的键。
  • 密钥集中的所有密钥必须是相同基元(例如 AEAD)的实现,但可以具有不同的密钥类型(例如 AES-GCM 和 XCHACHA20-POLY1305 密钥)。

每个 Tink 实现都提供了用于创建或修改密钥集的 API。不过,我们建议您使用 Tinkey 我们的 CLI 工具。

用户使用密钥集句柄对密钥集执行操作。密钥集句柄可限制实际敏感密钥材料的公开。它还会对密钥集进行抽象化处理,以便用户获取用于“封装”整个密钥集的基元。例如,您可以使用 N 密钥获取密钥集的 AEAD 基元;使用获取的基元进行加密和解密时,会使用密钥集中的主密钥。

密钥管理系统 (KMS):用于管理加密密钥(包括密钥的生成、存储、使用、轮替、销毁和替换)的系统。

密钥类型密钥类型会实现特定基元。大多数基元都有多种键类型可供选择,具体取决于您对安全性、运行时和空间的要求。例如,AES128_GCM 是一种 AEAD,可以快速有效地满足大多数需求。如需了解详情,请参阅按语言支持的密钥类型

参数:完整描述了创建密钥所需的信息,不包括密钥材料和密钥 ID。如需了解其表示方式,请参阅参数对象

纯文本:加密文本或其元素的可理解输入形式。

Primitive:Tink 使用基元作为加密构建块来管理底层算法,以便用户可以安全地执行加密任务。基元定义了加密算法和密钥类型的详细信息。

Tink 支持的原语:

  • 带关联数据的身份验证加密 (AEAD):最常见的数据加密基元;适合大多数加密需求。AEAD 提供明文机密性,并允许验证其完整性和真实性。请参阅使用关联数据的身份验证加密 (AEAD)
  • 确定性加密:始终为给定明文和密钥生成相同密文的基元。这可能会有风险,因为攻击者只需要知道哪个密文与给定的明文输入相对应即可识别。请参阅确定性 AEAD
  • 数字签名:用于确认签名数据的真实性和完整性的非对称(请参阅非对称密钥加密)基元。请参阅数字签名
  • 混合加密:结合了非对称密钥加密和对称密钥加密的基元(请参阅非对称密钥加密对称密钥加密)。混合加密将对称加密的效率与公钥加密的便利性结合在一起。为了加密消息,系统会生成一个新的对称密钥并将其用于加密明文数据,而接收方的公钥仅用于加密该对称密钥。最终密文由对称密文和加密的对称密钥组成。请参阅混合加密
  • 消息身份验证代码 (MAC):用于确认数据的真实性和完整性的对称(请参阅对称密钥加密)基元。请参阅邮件身份验证代码 (MAC)
  • 流式 AEAD:为流式数据提供经过身份验证的加密的基元;在要加密的数据太大而无法一步进行处理时,此类型很有用。请参阅流式 AEAD

如需了解兼容性信息,请参阅按语言支持的基元

注册表:Tink 中的全局实体,知道如何生成新的键和基元。另请参阅有关调试注册错误的指南。

对称密钥加密:使用同一密钥加密明文和解密密文的加密算法。