加密计算参数 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

加密计算参数

创建协作时,可使用 Clean Rooms 加密计算 (C3R) 为协作提供加密计算参数。您可以使用 AWS Clean Rooms 控制台或 CreateCollaboration API 操作创建协作。在控制台中,启用支持加密计算选项后,可以为加密计算参数中的参数设置值。有关更多信息,请参阅以下主题。

允许 cleartext 列参数

在控制台中,您可以在创建协作时设置允许 cleartext 列参数,以指定是否允许在包含加密数据的表中包含 cleartext 数据。

下表描述了允许 cleartext 列参数的值。

参数值 描述

加密表中不允许有 Cleartext 列。所有数据都受到加密保护。

加密表中允许有 Cleartext 列。

Cleartext 列不受加密保护,包含为 cleartext。您应该注意行中的 cleartext 数据可能揭示了表中其他数据的哪些信息。

要在特定列上运行 SUM 或 AVG,这些列必须是 cleartext。

使用 CreateCollaboration API 操作,对于 dataEncryptionMetadata 参数,您可以将 allowCleartext 的值设置为 truefalse。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考

Cleartext 列对应于按表特定架构分类为 cleartext 的列。这些列中的数据未加密,可以以任何方式使用。如果数据不敏感和/或需要比加密 sealed 列或 fingerprint 列所允许的更大的灵活性,则列 Cleartext 可能很有用。

“允许重复”参数

在控制台中,您可以在创建协作时设置允许重复参数,以指定为 JOIN 查询加密的列是否可以包含重复的非 NULL 值。

重要

允许重复允许对不同名称列进行 JOIN保留 NULL 值参数具有单独但相关的效果。

下表描述了允许重复参数的值。

参数值 描述

fingerprint 列中不允许有重复的值。单个 fingerprint 列中的所有值都必须是唯一的。

fingerprint 列中允许有重复的值。

如果需要联接具有重复值的列,请将此值设置为。如果设置为,则 C3R 表或结果的 fingerprint 列中出现的频率模式可能意味着有关 cleartext 数据结构的一些其他信息。

使用 CreateCollaboration API 操作,对于 dataEncryptionMetadata 参数,您可以将 allowDuplicates 的值设置为 truefalse。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考

默认情况下,如果必须在 JOIN 查询中使用加密数据,则 C3R 加密客户端要求这些列没有重复值。此要求是为了加强数据保护。这种行为可以帮助确保无法观察到数据中的重复模式。但是,如果您想在 JOIN 查询中使用加密数据并且不担心重复值,则允许重复参数可以禁用此保守检查。

“允许对具有不同名称的列进行 JOIN”参数

在控制台中,您可以在创建协作时设置允许对具有不同名称的列进行 JOIN 参数,以指定是否支持具有不同名称的列之间的 JOIN 语句。

有关更多信息,请参阅 列标题名称的标准化

下表描述了允许对具有不同名称的列进行 JOIN 参数的值。

参数值 描述

不支持联接具有不同名称的 fingerprint 列。JOIN 语句仅在具有相同名称的列上提供准确的结果。

重要

值可提高信息安全性,但要求协作参与者事先就列名达成共识。如果两列在加密为 fingerprint 列时具有不同的名称,并且允许对具有不同名称的列进行 JOIN 设置为,则对这些列的 JOIN 语句不会生成任何结果。这是因为它们之间不共享加密后的值。

支持联接具有不同名称的 fingerprint 列。为了提高灵活性,用户可以将此值设置为,这样无论列名如何,都允许对列执行 JOIN 语句。

如果设置为,则 C3R 加密客户端在保护 fingerprint 列时将不会考虑列名。因此,在 C3R 表中可以观察到不同 fingerprint 列的共同值。

例如,如果一行在 City 列和 State 列中都具有相同的加密 JOIN 值,则可以合理地推断出该值为 New York

使用 CreateCollaboration API 操作,对于 dataEncryptionMetadata 参数,您可以将 allowJoinsOnColumnsWithDifferentNames 的值设置为 truefalse。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考

默认情况下,fingerprint 列加密受该列的 targetHeader 所影响,它在步骤 4:为表格文件生成加密架构 中设置。因此,同一个 cleartext 值在每个不同的 fingerprint 列中都有不同的加密表示。

在某些情况下,此参数可用于防止推断 cleartext 值。例如,在 fingerprint 列中看到相同的加密值时,可以通过 CityState 来合理地推断该值是 New York。但是,使用此参数需要事先进行额外的协调,以便查询中要联接的所有列都具有共享名称。

您可以使用允许对具有不同名称的列进行 JOIN 参数来放宽此限制。当参数值设置为 Yes 时,无论名称如何,都允许一起使用为 JOIN 加密的任何列。

“保留 NULL 值”参数

在控制台中,您可以在创建协作时设置保留 NULL 值参数,以指示该列不存在任何值。

下表描述了保留 NULL 值参数的值。

参数值 描述

NULL 值不会被保留。NULL 值在加密表中不会显示为 NULL。NULL 值在 C3R 表中显示为唯一的随机值。

NULL 值会被保留。NULL 值在加密表中显示为 NULL。如果您需要 NULL 值的 SQL 语义,则可以将此值设置为。因此,无论列是否加密以及允许重复的参数设置如何,NULL 条目在 C3R 表中都会显示为 NULL。

使用 CreateCollaboration API 操作,对于 dataEncryptionMetadata 参数,您可以将 preserveNulls 的值设置为 truefalse。有关 API 操作的更多信息,请参阅 AWS Clean Rooms API 参考

当协作的保留 NULL 值参数设置为时:

  1. cleartext 列中的 NULL 条目保持不变。

  2. 加密 fingerprint 列中的 NULL 条目被加密为随机值以隐藏其内容。在 cleartext 中联接带有 NULL 条目的加密列不会生成任何 NULL 条目的任何匹配项。不会进行任何匹配,因为它们各自会收到自己的唯一随机内容。

  3. 加密 sealed 列中的 NULL 条目已加密。

当协作的保留 NULL 值参数的值设置为时,无论列是否加密,所有列中的 NULL 条目都将保持为 NULL。

保留 NULL 值参数在数据扩充等情况下非常有用,在这些情况下,您需要共享以 NULL 表示的信息缺失。在 fingerprint 或 HMAC 格式中,如果要进行 JOIN 或 GROUP BY 的列中有 NULL 值,保留 NULL 值参数也很有用。

如果允许重复保留 NULL 值参数的值设置为,则在 fingerprint 列中包含多个 NULL 条目会产生错误并停止加密。如果任一参数的值设置为,则不会发生此类错误。