

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

# AWS 支付密码学的安全性
<a name="security"></a>

云安全 AWS 是重中之重。作为 AWS 客户，您可以受益于专为满足大多数安全敏感型组织的要求而构建的数据中心和网络架构。

安全是双方共同承担 AWS 的责任。[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)将此描述为云的安全性和云中的安全性：
+ **云安全** —AWS 负责保护在 AWS 云中运行 AWS 服务的基础架构。 AWS 还为您提供可以安全使用的服务。作为[AWS 合规计划合规计划合规计划合](https://aws.amazon.com/compliance/programs/)的一部分，第三方审计师定期测试和验证我们安全的有效性。要了解适用于 AWS 支付加密的合规计划，请参阅按合规计划划分[的 AWS 范围内的服务 AWS 按合规计划](https://aws.amazon.com/compliance/services-in-scope/)。
+ **云端安全**-您的责任由您使用的 AWS 服务决定。您还需要对其他因素负责，包括您的数据的敏感性、您公司的要求以及适用的法律法规。

本主题可帮助您了解在使用 AWS 支付密码学时如何应用分担责任模型。它向您展示了如何配置 AWS 支付密码以满足您的安全和合规性目标。您还将学习如何使用其他 AWS 服务来帮助您监控和保护您的 AWS 支付密码学资源。

**Topics**
+ [数据保护](data-protection.md)
+ [恢复能力](resilience.md)
+ [基础结构安全性](infrastructure-security.md)
+ [使用亚马逊 VPC 和 AWS PrivateLink](vpc-endpoint.md)
+ [混合后量子 TLS](pqtls.md)
+ [安全最佳实践](security-best-practices.md)

# AWS 支付密码学中的数据保护
<a name="data-protection"></a>

分 AWS [担责任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)适用于 AWS 支付密码学中的数据保护。如本模型所述 AWS ，负责保护运行所有内容的全球基础架构 AWS 云。您负责维护对托管在此基础结构上的内容的控制。您还负责您所使用的 AWS 服务 的安全配置和管理任务。有关数据隐私的更多信息，请参阅[数据隐私常见问题](https://aws.amazon.com/compliance/data-privacy-faq/)。有关欧洲数据保护的信息，请参阅 *AWS Security Blog* 上的 [AWS Shared Responsibility Model and GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 博客文章。

出于数据保护目的，我们建议您保护 AWS 账户 凭证并使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 设置个人用户。这样，每个用户只获得履行其工作职责所需的权限。还建议您通过以下方式保护数据：
+ 对每个账户使用多重身份验证（MFA）。
+ 用于 SSL/TLS 与 AWS 资源通信。我们要求使用 TLS 1.2，建议使用 TLS 1.3。
+ 使用设置 API 和用户活动日志 AWS CloudTrail。有关使用 CloudTrail 跟踪捕获 AWS 活动的信息，请参阅《*AWS CloudTrail 用户指南》*中的[使用跟 CloudTrail 踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解决方案以及其中的所有默认安全控件 AWS 服务。
+ 使用高级托管安全服务（例如 Amazon Macie），它有助于发现和保护存储在 Amazon S3 中的敏感数据。
+ 如果您在 AWS 通过命令行界面或 API 进行访问时需要经过 FIPS 140-3 验证的加密模块，请使用 FIPS 端点。有关可用的 FIPS 端点的更多信息，请参阅《美国联邦信息处理标准（FIPS）第 140-3 版》[https://aws.amazon.com/compliance/fips/](https://aws.amazon.com/compliance/fips/)。

强烈建议您切勿将机密信息或敏感信息（如您客户的电子邮件地址）放入标签或自由格式文本字段（如**名称**字段）。这包括您使用控制台、API 或 AWS 服务 使用 AWS 支付加密或其他方法时。 AWS CLI AWS SDKs在用于名称的标签或自由格式文本字段中输入的任何数据都可能会用于计费或诊断日志。如果您向外部服务器提供 URL，强烈建议您不要在网址中包含凭证信息来验证对该服务器的请求。



AWS Payment Cryptography 存储和保护您的支付加密密钥，使其具有高度可用性，同时为您提供强大而灵活的访问控制。

**Topics**
+ [保护密钥材料](#key-protection)
+ [数据加密](#data-encryption)
+ [静态加密](#encryption-rest)
+ [传输中加密](#encryption-transit)
+ [互联网络流量隐私](#internetwork)

## 保护密钥材料
<a name="key-protection"></a>

默认情况下，AWS Payment Cryptography 会保护该服务管理的支付密钥的加密密钥材料。此外，AWS Payment Cryptography 还提供用于导入在服务外部创建的密钥材料的选项。有关支付密钥和密钥材料的技术详细信息，请参阅 AWS Payment Cryptography 加密详细信息。

## 数据加密
<a name="data-encryption"></a>

AWS Payment Cryptography 中的数据包括 AWS Payment Cryptography 密钥、它们所代表的加密密钥材料及其使用属性。密钥材料仅以明文形式存在于 AWS Payment Cryptography 硬件安全模块 (HSMs) 中，并且仅在使用时才存在。否则，密钥材料和属性将被加密并存储在持久性存储中。

AWS Payment Cryptography 为支付密钥生成或加载的密钥材料永远不会未加密 AWS 支付密码 HSMs 的边界。它可以通过 AWS Payment Cryptography API 操作加密导出。

## 静态加密
<a name="encryption-rest"></a>

AWS Payment Cryptography 为 PCI PTS HSM 列出的支付密钥生成密钥材料。 HSMs密钥材料未使用时，会利用 HSM 密钥进行加密，并写入耐久的持久性存储中。支付密码学密钥的密钥材料以及保护密钥材料的加密密钥永远不会以纯文本 HSMs 形式存在。

Payment Cryptography 密钥的密钥材料的加密和管理完全由服务处理。

有关更多信息，请参阅 AWS Key Management Service 加密详情。

## 传输中加密
<a name="encryption-transit"></a>

Payment AWS Cryptography 为支付密钥生成或加载的密钥材料永远不会在 AWS 支付密码学 API 操作中以明文形式导出或传输。 AWS 支付密码学使用密钥标识符来表示 API 操作中的密钥。

但是，某些 API 操作会导出由先前共享或非对称密钥交换密钥加密的密钥。此外，客户可以使用 API 操作来为支付密钥导入密钥材料。

所有 AWS 支付密码学 API 调用都必须使用传输层安全 (TLS) 进行签名和传输。 AWS 支付密码学需要 PCI 定义为 “强密码学” 的 TLS 版本和密码套件。所有服务端点都支持 TLS 1.2—1.3 和混合后量子 TLS。

有关更多信息，请参阅 AWS Key Management Service 加密详情。

## 互联网络流量隐私
<a name="internetwork"></a>

AWS Payment Cryptography 支持 AWS 管理控制台和一组 API 操作，使您能够创建和管理支付密钥并将其用于加密操作。

AWS Payment Cryptography 支持从您的私有网络到 AWS 的两种网络连接选项。
+ 通过互联网进行的 IPSec VPN 连接。
+ AWS Direct Connect，该服务通过标准的以太网光纤电缆将您的内部网络链接到 AWS Direct Connect 位置。

所有 Payment Cryptography API 调用必须使用传输层安全性协议 (TLS) 进行签名和传输。这些调用还需要一个现代化的密码套件，该套件支持完美向前保护。只有已知的 AWS Payment Cryptography API 主机才允许通过 AWS 内部网络访问存储支付密钥密钥材料的硬件安全模块 (HSMs)。

要从您的虚拟私有云 (VPC) 直接连接到 AWS Payment Cryptography，而不通过公共互联网发送流量，请使用由 AWS PrivateLink 提供支持的 VPC 终端节点。有关更多信息，请参阅通过 VPC 端点连接到 AWS Payment Cryptography。

AWS Payment Cryptography 还支持对传输层安全性协议 (TLS) 网络加密协议使用混合后量子密钥交换选项。当您连接到 AWS Payment Cryptography API 端点时，可以结合使用此选项与 TLS。

# AWS 支付密码学的弹性
<a name="resilience"></a>

AWS 全球基础设施是围绕 AWS 区域和可用区构建的。各区域提供多个在物理上独立且隔离的可用区，这些可用区通过延迟低、吞吐量高且冗余性高的网络连接在一起。利用可用区，您可以设计和操作在可用区之间无中断地自动实现故障转移的应用程序和数据库。与传统的单个或多个数据中心基础设施相比，可用区具有更高的可用性、容错能力和可扩展性。

有关 AWS 区域和可用区的更多信息，请参阅[AWS 全球基础设施](https://aws.amazon.com/about-aws/global-infrastructure/)。

## 区域隔离
<a name="region-isolation"></a>

AWS Payment Cryptography 是一项区域性服务，可在多个区域使用。

AWS Payment Cryptography 的区域隔离设计可确保一个 Amazon Web Services 区域的可用性问题不会影响任何其他区域的 AWS Payment Cryptography 操作。AWS Payment Cryptography 旨在确保零计划停机，所有软件更新和扩展操作都在不知不觉中无缝执行。

AWS 支付加密服务等级协议 (SLA) 包括所有支付加密的 99.99% 服务承诺。 APIs为履行这一承诺，AWS Payment Cryptography 会确保执行 API 请求所需的所有数据和授权信息在接收该请求的所有区域主机上都可用。

AWS Payment Cryptography 基础设施在每个区域的至少三个可用区 (AZs) 中复制。为了确保多台主机故障不会影响 AWS Payment Cryptography 的性能，AWS Payment Cryptography 旨在为来自区域 AZs 内任何地区的客户流量提供服务。

您对支付密钥属性或权限所做的更改将复制到该区域中的所有主机，以确保该区域中的任何主机都能正确处理后续请求。使用您的付款密钥进行加密操作的请求会被转发到一组 AWS Payment Cryptography 硬件安全模块 (HSMs)，其中任何一个模块都可以使用支付密钥执行操作。

## 多租户设计
<a name="multi-tenant"></a>

AWS Payment Cryptography 的多租户设计使其能够达到可用性 SLA，并保持较高的请求率，同时保护密钥和数据的保密性。

通过部署多个完整性控制执行机制，以确保实际用于执行加密操作的支付密钥始终是您为该操作指定的密钥。

Payment Cryptography 密钥的明文密钥材料受到全面保护。密钥材料在创建后将立即在 HSM 中加密，并且加密后的密钥材料会立即移动到安全的存储中。加密后的密钥仅在使用时才在 HSM 中检索和解密。明文密钥仅在完成加密操作所需的时间内驻留在 HSM 内存中。纯文本密钥材料永远不会离开 HSMs；它永远不会写入永久存储空间。

要详细了解 AWS Payment Cryptography 使用的密钥保护机制，请参阅 AWS Payment Cryptography 加密详细信息。

# 中的基础设施安全 AWS Payment Cryptography
<a name="infrastructure-security"></a>

作为一项托管服务， AWS Payment Cryptography 受到《[Amazon Web Services：安全流程概述》白皮书中描述的 AWS 全球网络安全](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf)程序的保护。

您可以使用 AWS 已发布的 API 调用 AWS Payment Cryptography 通过网络进行访问。客户端必须支持传输层安全性协议（TLS）1.2 或更高版本。客户端还必须支持具有完全向前保密（PFS）的密码套件，例如 Ephemeral Diffie-Hellman（DHE）或 Elliptic Curve Ephemeral Diffie-Hellman（ECDHE）。大多数现代系统（如 Java 7 及更高版本）都支持这些模式。

此外，必须使用访问密钥 ID 和与 IAM 主体关联的秘密访问密钥来对请求进行签名。或者，您可以使用 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)（AWS STS）生成临时安全凭证来对请求进行签名。

## 物理主机的隔离
<a name="isolation"></a>

AWS Payment Cryptography 使用的物理基础设施的安全性受 Amazon Web Services：安全流程概述的物理和环境安全部分中所述的控制措施约束。您可以在上一节中列出的合规性报告和第三方审计结果中找到更多详细信息。

AWS Payment Cryptography 由 commercial-off-the-shelf PCI PTS HSM 列出的专用硬件安全模块 () 提供支持。HSMsAWS Payment Cryptography 密钥的密钥材料仅存储在上的易失性存储器中 HSMs，并且仅在使用支付加密密钥时保存。 HSMs 位于 Amazon 数据中心内的访问控制机架中，这些机架对任何物理访问都实施双重控制。有关 AWS 支付密码学操作的详细信息 HSMs，请参阅 AWS 支付密码学加密详情。

# 通过 VPC 终端节点连接到 AWS 支付加密
<a name="vpc-endpoint"></a>

您可以通过虚拟私有云 (VPC) 中的私有接口终端节点直接连接到 AWS 支付加密。当您使用接口 VPC 终端节点时，您的 VPC 和 AWS 支付加密之间的通信完全在 AWS 网络内进行。

AWS Payment Cryptography 支持由[AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/)提供支持的亚马逊虚拟私有云（亚马逊 VPC）终端节点。每个 VPC 终端节点都由一个或多个[弹性网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html) (ENIs) 表示，其私有 IP 地址位于您的 VPC 子网中。

接口 VPC 终端节点将您的 VPC 直接连接到 AWS 支付加密，无需互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。您的 VPC 中的实例不需要公有 IP 地址即可与 AWS 支付加密进行通信。<a name="vpc-regions"></a>

**Regions**  
AWS 支付密码学支持 VPC 终端节点和 VPC 终端节点策略，所有这些 AWS 区域 策略都支持[AWS 支付加密](https://docs.aws.amazon.com/general/latest/gr/payment-cryptography.html)。

**Topics**
+ [AWS 支付加密 VPC 终端节点的注意事项](#vpce-considerations)
+ [为 AWS 支付加密创建 VPC 终端节点](#vpce-create-endpoint)
+ [连接到 AWS 支付加密 VPC 终端节点](#vpce-connect)
+ [控制对 VPC 端点的访问](#vpce-policy)
+ [在策略语句中使用 VPC 端点](#vpce-policy-condition)
+ [记录您的 VPC 端点](#vpce-logging)

## AWS 支付加密 VPC 终端节点的注意事项
<a name="vpce-considerations"></a>

**注意**  
尽管 VPC 终端节点允许您在最少一个可用区 (AZ) 内连接到服务，但出于高可用性和冗余目的，我们建议您连接到三个可用区。

在为 AWS 支付加密设置接口 VPC 终端节点之前，请查看*AWS PrivateLink 指南*中的[接口终端节点属性和限制](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations)主题。

AWS VPC 终端节点的支付加密支持包括以下内容。
+ 您可以使用您的 VPC 终端节点从 VPC 调用所有[AWSAWS 支付加密控制平面操作](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_Operations.html)[和支付加密数据平面操作](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_Operations.html)。
+ 您可以创建连接 AWS 支付加密区域终端节点的接口 VPC 终端节点。
+ AWS 支付密码学由控制平面和数据平面组成。您可以选择设置一个或两个子服务， AWS PrivateLink 但每个子服务都是单独配置的。
+ 您可以通过 VPC 终端节点使用 AWS CloudTrail 日志来审核您对 AWS 支付加密密钥的使用情况。有关更多信息，请参阅 [记录您的 VPC 端点](#vpce-logging)。

## 为 AWS 支付加密创建 VPC 终端节点
<a name="vpce-create-endpoint"></a>

您可以使用亚马逊 VPC 控制台或亚马逊 VPC API 为 AWS 支付加密创建 VPC 终端节点。有关更多信息，请参阅《AWS PrivateLink 指南》**中的[创建接口端点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint)。
+ 要为 AWS 支付加密创建 VPC 终端节点，请使用以下服务名称：

  ```
  com.amazonaws.region.payment-cryptography.controlplane
  ```

  ```
  com.amazonaws.region.payment-cryptography.dataplane
  ```

  例如，在美国西部（俄勒冈）区域 (`us-west-2`) 中，服务名称将是：

  ```
  com.amazonaws.us-west-2.payment-cryptography.controlplane
  ```

  ```
  com.amazonaws.us-west-2.payment-cryptography.dataplane
  ```

为了更轻松地使用 VPC 端点，您可以为 VPC 端点启用[私有 DNS 名称](https://docs.aws.amazon.com/vpc/latest/privatelink/verify-domains.html)。如果您选择**启用 DNS 名称**选项，则标准 AWS 支付加密 DNS 主机名将解析到您的 VPC 终端节点。例如，`https://controlplane.payment-cryptography.us-west-2.amazonaws.com` 将解析为连接到服务名称 `com.amazonaws.us-west-2.payment-cryptography.controlplane` 的 VPC 端点。

此选项可让您更轻松地使用 VPC 端点。默认情况下， AWS SDKs 和 AWS CLI 使用标准的 Paym AWS ent Cryptography DNS 主机名，因此您无需在应用程序和命令中指定 VPC 终端节点 URL。

有关更多信息，请参阅 *AWS PrivateLink 指南*中的[通过接口端点访问服务](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#access-service-though-endpoint)。

## 连接到 AWS 支付加密 VPC 终端节点
<a name="vpce-connect"></a>

您可以使用 AWS SDK（ AWS CLI 或 AWS Tools for PowerShell）通过 VPC 终端节点连接到 AWS 支付加密。要指定 VPC 端点，请使用其 DNS 名称。

例如，此 [list-keys](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/list-keys.html) 命令使用 `endpoint-url` 参数指定 VPC 终端节点。要使用类似命令，请将示例中的 VPC 终端节点 ID 替换为您账户中的 ID。

```
$ aws payment-cryptography list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com
```

如果在创建 VPC 端点时启用了私有主机名，则无需在 CLI 命令或应用程序配置中指定 VPC 端点 URL。标准 AWS 支付加密 DNS 主机名解析到您的 VPC 终端节点。 AWS CLI 和默认 SDKs 使用此主机名，因此您可以开始使用 VPC 终端节点连接到 AWS 支付加密区域终端节点，而无需更改脚本和应用程序中的任何内容。

要使用私有主机名，您的 VPC 的 `enableDnsHostnames` 和 `enableDnsSupport` 属性必须设置为 `true`。要设置这些属性，请使用[ModifyVpcAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcAttribute.html)操作。有关详细信息，请参阅《Amazon VPC 用户指南》中的[查看和更新 VPC 的 DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。**

## 控制对 VPC 端点的访问
<a name="vpce-policy"></a>

要控制对 AWS 支付加密的 VPC 终端节点的访问，请将 V *PC 终端节点策略*附加到您的 VPC 终端节点。终端节点策略决定委托人是否可以使用 VPC 终端节点通过特定的 AWS 支付加密资源调用 AWS 支付加密操作。

您可以在创建终端节点时创建 VPC 端点策略，并且可以随时更改 VPC 端点策略。使用 VPC 管理控制台或[CreateVpcEndpoint](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVpcEndpoint.html)或[ModifyVpcEndpoint](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyVpcEndpoint.html)操作。您也可以[使用 AWS CloudFormation 模板](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html)创建和更改 VPC 终端节点策略。有关使用 VPC 管理控制台的帮助，请参阅 *AWS PrivateLink 指南*中的[创建接口终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#create-interface-endpoint)和[修改接口终端节点](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#modify-interface-endpoint)。

有关编写和格式化 JSON 策略文档的帮助，请参阅 *IAM 用户指南*中的 [IAM JSON 策略参考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)。

**Topics**
+ [关于 VPC 终端节点策略](#vpce-policy-about)
+ [默认的 VPC 端点策略](#vpce-default-policy)
+ [创建 VPC 端点策略](#vpce-policy-create)
+ [查看 VPC 终端节点策略](#vpce-policy-get)

### 关于 VPC 终端节点策略
<a name="vpce-policy-about"></a>

要使使用 VPC 终端节点的 AWS 支付加密请求成功，委托人需要来自两个来源的权限：
+ [基于身份的策略](security_iam_id-based-policy-examples.md)必须授予委托人对资源调用操作的权限（AWS 付款加密密钥或别名）。
+ VPC 端点策略必须授予委托人使用终端节点发出请求的权限。

例如，密钥策略可能允许委托人对特定的 AWS 支付加密密钥调用 [Decrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html)。但是，VPC 终端节点策略可能不允许该委托人使用终端节点调`Decrypt`用该 AWS 支付加密密钥。

或者，VPC 终端节点策略可能允许委托人使用终端节点调用[StopKeyUsage](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_StopKeyUsage.html)某些 AWS 支付加密密钥。但是，如果委托人没有 IAM 策略中的这些权限，则请求将失败。

### 默认的 VPC 端点策略
<a name="vpce-default-policy"></a>

每个 VPC 端点都有 VPC 端点策略，但您无需指定策略。如果未指定策略，则默认的终端节点策略允许所有委托人对终端节点上的所有资源执行所有操作。

但是，对于 AWS 支付加密资源，委托人还必须拥有从 [IAM 策略](security_iam_id-based-policy-examples.md)调用操作的权限。因此，在实践中，默认策略表示，如果委托人有权对资源调用操作，他们也可以通过使用终端节点调用该操作。

```
{
  "Statement": [
    {
      "Action": "*", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Resource": "*"
    }
  ]
}
```

 要允许主体仅将 VPC 终端节点用于其允许操作的子集，[请创建或更新改 VPC 终端节点策略](#vpce-policy-create)。

### 创建 VPC 端点策略
<a name="vpce-policy-create"></a>

VPC 端点策略确定委托人是否有权使用 VPC 端点对资源执行操作。对于 AWS 支付密码学资源，委托人还必须有权执行 [IAM 策略](security_iam_id-based-policy-examples.md)中的操作。

每个 VPC 端点策略语句都需要以下元素：
+ 可执行操作的委托人
+ 可执行的操作
+ 可对其执行操作的资源

策略语句不指定 VPC 端点。它适用于策略所附加到的任何 VPC 端点。有关更多信息，请参阅《Amazon VPC User Guide》**中的 [Controlling access to services with VPC endpoints](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。

以下是 AWS 支付加密的 VPC 终端节点策略示例。当连接到 VPC 终端节点时，此策略`ExampleUser`允许使用 VPC 终端节点对指定的 AWS 支付加密密钥调用指定操作。在使用此类政策之前，请将示例委托人和[密钥标识符](concepts.md#concepts.key-identifer)替换为账户中的有效值。

```
{
   "Statement":[
      {
         "Sid": "AllowDecryptAndView",
         "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"},
         "Effect":"Allow",
         "Action": [ 
             "payment-cryptography:Decrypt",
             "payment-cryptography:GetKey",  
             "payment-cryptography:ListAliases", 
             "payment-cryptography:ListKeys",
             "payment-cryptography:GetAlias"
          ],
         "Resource": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h"
      }
   ]
}
```

AWS CloudTrail 记录使用 VPC 终端节点的所有操作。但是，您的 CloudTrail 日志不包括其他账户中的委托人请求的操作或其他账户中 AWS 支付密码密钥的操作。

因此，您可能需要创建一个 VPC 终端节点策略，以防止外部账户中的委托人使用 VPC 终端节点对本地账户中的任何密钥调用任何 AWS 支付加密操作。

以下示例使用 a [ws: g PrincipalAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalaccount) lobal 条件密钥拒绝所有委托人访问所有 AWS 支付密码密钥的所有操作，除非委托人位于本地账户中。使用类似于此策略的策略之前，请使用有效值替换示例账户 ID。

```
{
  "Statement": [
    {
      "Sid": "AccessForASpecificAccount",
      "Principal": {"AWS": "*"},
      "Action": "payment-cryptography:*",
      "Effect": "Deny",
      "Resource": "arn:aws:payment-cryptography:*:111122223333:key/*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": "111122223333"
        }
      }
    }
  ]
}
```

### 查看 VPC 终端节点策略
<a name="vpce-policy-get"></a>

要查看终端节点的 VPC 终端节点策略，请使用 [VPC 管理控制台](https://console.aws.amazon.com/vpc/)或[DescribeVpcEndpoints](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcEndpoints.html)操作。

以下 AWS CLI 命令获取具有指定 VPC 终端节点 ID 的终端节点的策略。

在使用此命令之前，请将示例终端节点 ID 替换为您账户中的有效终端节点 ID。

```
$ aws ec2 describe-vpc-endpoints \
--query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]'
--output text
```

## 在策略语句中使用 VPC 端点
<a name="vpce-policy-condition"></a>

当请求来自 VPC 或使用 VPC 终端节点时，您可以控制对 AWS 支付加密资源和操作的访问权限。为此，请使用一个 [IAM 策略](security_iam_id-based-policy-examples.md)
+ 使用 `aws:sourceVpce` 条件键基于 VPC 端点授予或限制访问。
+ 使用 `aws:sourceVpc` 条件键基于托管私有终端节点的 VPC 授予或限制访问。

**注意**  
当请求来自 [Amazon VPC 终端节点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)时，`aws:sourceIP`条件密钥无效。要限制对 VPC 端点的请求，请使用 `aws:sourceVpce` 或 `aws:sourceVpc` 条件键。有关更多信息，请参阅《AWS PrivateLink 指南》中的 [VPC 端点和 VPC 端点服务的身份和访问管理](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-iam.html)。**

您可以使用这些全局条件密钥来控制对 P AWS ayment Cryptography 密钥、别名以及不依赖于任何特定资源的此类[CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)操作的访问权限。

例如，以下示例密钥策略仅允许用户在请求使用指定的 VPC 终端节点时使用 AWS 支付加密密钥执行特定的加密操作，从而阻止来自互联网和 AWS PrivateLink 连接的访问（如果已设置）。当用户向 P AWS ayment Cryptography 发出请求时，会将请求中的 VPC 终端节点 ID 与策略中的`aws:sourceVpce`条件密钥值进行比较。如果它们不匹配，则请求会被拒绝。

要使用类似的策略，请将占位符 AWS 账户 ID 和 VPC 终端节点 IDs 替换为账户的有效值。

------
#### [ JSON ]

****  

```
{
    "Id": "example-key-1",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMPolicies",
            "Effect": "Allow",
            "Principal": {
                "AWS": [ 
                    "arn:aws:iam::111122223333:root"
                ]
            },
            "Action": [
                "payment-cryptography:*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "RestrictUsageToMyVPCEndpoint",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "payment-cryptography:EncryptData",
                "payment-cryptography:DecryptData"
            ],
            "Resource": "arn:aws:payment-cryptography:us-east-1:111122223333:key/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "vpce-1234abcdf5678c90a"
                }
            }
        }

    ]
}
```

------

您还可以使用`aws:sourceVpc`条件密钥根据 VPC 终端节点所在的 VPC 限制对您的 AWS 支付加密密钥的访问。

以下示例密钥策略允许命令仅在 AWS 付款加密密钥来自`vpc-12345678`时才对其进行管理。此外，它允许使用 AWS 支付密码学密钥进行加密操作的命令，但仅当它们来自时。`vpc-2b2b2b2b`如果应用程序在一个 VPC 中运行，但您使用第二个隔离的 VPC 执行管理功能，则可以使用这样的策略。

要使用类似的策略，请将占位符 AWS 账户 ID 和 VPC 终端节点 IDs 替换为账户的有效值。

------
#### [ JSON ]

****  

```
{
    "Id": "example-key-2",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdminActionsFromVPC12345678",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": [
               "payment-cryptography:Create*",
               "payment-cryptography:Encrypt*",
               "payment-cryptography:ImportKey*",
               "payment-cryptography:GetParametersForImport*",
               "payment-cryptography:TagResource",
               "payment-cryptography:UntagResource"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-12345678"
                }
            }
        },
        {
            "Sid": "AllowKeyUsageFromVPC2b2b2b2b",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": [
                "payment-cryptography:Encrypt*",
                "payment-cryptography:Decrypt*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:sourceVpc": "vpc-2b2b2b2b"
                }
            }
        },
        {
            "Sid": "AllowListReadActionsFromEverywhere",
            "Effect": "Allow",
            "Principal": {
                "AWS": "111122223333"
            },
            "Action": [
                "payment-cryptography:List*",
                "payment-cryptography:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 记录您的 VPC 端点
<a name="vpce-logging"></a>

AWS CloudTrail 记录使用 VPC 终端节点的所有操作。当向 AWS 支付加密发出的请求使用 VPC 终端节点时，VPC 终端节点 ID 会出现在记录该请求的[AWS CloudTrail 日志](monitoring-cloudtrail.md)条目中。您可以使用终端节点 ID 来审核您的 AWS 支付加密 VPC 终端节点的使用情况。

为了保护您的 VPC，如果请求被 [VPC 终端节点策略](#vpce-policy)拒绝，但本来会被允许，则不会记录在中[AWS CloudTrail](monitoring-cloudtrail.md)。

例如，此示例日志条目记录了使用 VPC 终端节点的 [GenerateMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMac.html) 请求。`vpcEndpointId` 字段出现在日志条目的末尾。

```
{
      "eventVersion": "1.08",
      "userIdentity": {
          "principalId": "TESTXECZ5U9M4LGF2N6Y5:i-98761b8890c09a34a",
          "arn": "arn:aws:sts::111122223333:assumed-role/samplerole/i-98761b8890c09a34a",
          "accountId": "111122223333",
          "accessKeyId": "TESTXECZ5U2ZULLHHMJG",
          "sessionContext": {
              "sessionIssuer": {
                  "type": "Role",
                  "principalId": "TESTXECZ5U9M4LGF2N6Y5",
                  "arn": "arn:aws:iam::111122223333:role/samplerole",
                  "accountId": "111122223333",
                  "userName": "samplerole"
              },
              "webIdFederationData": {},
              "attributes": {
                  "creationDate": "2024-05-27T19:34:10Z",
                  "mfaAuthenticated": "false"
              },
              "ec2RoleDelivery": "2.0"
          }
      },
      "eventTime": "2024-05-27T19:49:54Z",
      "eventSource": "payment-cryptography.amazonaws.com",
      "eventName": "CreateKey",
      "awsRegion": "us-east-1",
      "sourceIPAddress": "172.31.85.253",
      "userAgent": "aws-cli/2.14.5 Python/3.9.16 Linux/6.1.79-99.167.amzn2023.x86_64 source/x86_64.amzn.2023 prompt/off command/payment-cryptography.create-key",
      "requestParameters": {
          "keyAttributes": {
              "keyUsage": "TR31_M1_ISO_9797_1_MAC_KEY",
              "keyClass": "SYMMETRIC_KEY",
              "keyAlgorithm": "TDES_2KEY",
              "keyModesOfUse": {
                  "encrypt": false,
                  "decrypt": false,
                  "wrap": false,
                  "unwrap": false,
                  "generate": true,
                  "sign": false,
                  "verify": true,
                  "deriveKey": false,
                  "noRestrictions": false
              }
          },
          "exportable": true
      },
      "responseElements": {
          "key": {
              "keyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
              "keyAttributes": {
                  "keyUsage": "TR31_M1_ISO_9797_1_MAC_KEY",
                  "keyClass": "SYMMETRIC_KEY",
                  "keyAlgorithm": "TDES_2KEY",
                  "keyModesOfUse": {
                      "encrypt": false,
                      "decrypt": false,
                      "wrap": false,
                      "unwrap": false,
                      "generate": true,
                      "sign": false,
                      "verify": true,
                      "deriveKey": false,
                      "noRestrictions": false
                  }
              },
              "keyCheckValue": "A486ED",
              "keyCheckValueAlgorithm": "ANSI_X9_24",
              "enabled": true,
              "exportable": true,
              "keyState": "CREATE_COMPLETE",
              "keyOrigin": "AWS_PAYMENT_CRYPTOGRAPHY",
              "createTimestamp": "May 27, 2024, 7:49:54 PM",
              "usageStartTimestamp": "May 27, 2024, 7:49:54 PM"
          }
      },
      "requestID": "f3020b3c-4e86-47f5-808f-14c7a4a99161",
      "eventID": "b87c3d30-f3ab-4131-87e8-bc54cfef9d29",
      "readOnly": false,
      "eventType": "AwsApiCall",
      "managementEvent": true,
      "recipientAccountId": "111122223333",
      "vpcEndpointId": "vpce-1234abcdf5678c90a",
      "eventCategory": "Management",
      "tlsDetails": {
          "tlsVersion": "TLSv1.3",
          "cipherSuite": "TLS_AES_128_GCM_SHA256",
          "clientProvidedHostHeader": "vpce-1234abcdf5678c90a-oo28vrvr.controlplane.payment-cryptography.us-east-1.vpce.amazonaws.com"
      }
  }
```

# 使用混合后量子 TLS
<a name="pqtls"></a>

AWS 支付密码学和许多其他服务支持传输层安全 (TLS) 网络加密协议的混合后量子密钥交换选项。在连接 API 终端节点或使用 AWS 时，您可以使用此 TLS 选项 SDKs。这些混合后量子密钥交换功能是可选的，至少与我们目前使用的 TLS 加密一样安全，并且有可能会提供额外的长期安全优势。

传输层安全 (TLS) 连接提供的加密保护您发送到已启用的服务的数据在传输过程中受到保护。Payment Cryptography 为 TLS 会话支持的基于 RSA 和 ECC 的经典密码套件使得使用当前技术无法对密钥交换机制进行暴力攻击。 AWS 但是，如果将来大规模或与密码相关的量子计算机（CRQC）变得可行，那么现有的TLS密钥交换机制将容易受到这些攻击。对手可能现在就开始收集加密数据，希望将来能对其进行解密（现在收获，稍后解密）。如果您开发的应用程序依赖于通过 TLS 连接传输的数据的长期机密性，则应考虑在大规模量子计算机可供使用之前迁移到后量子密码学的计划。 AWS 正在努力为这个未来做准备，我们也希望你也做好充分的准备。

![\[之前录制过 TLS 会话的对手。多年后，当对手拥有 CRQC 时，对手可以首先使用 CRQC 中断经典密钥交换来恢复会话密钥。然后，对手可以使用发现的会话密钥解密数据。以前传输的数据虽然仍然有价值，但现在已经被泄露了。\]](http://docs.aws.amazon.com/zh_cn/payment-cryptography/latest/userguide/images/pqtls-risk2.png)


*为了保护当今加密的数据免受未来潜在的攻击， AWS 正在与密码学界一起开发抗量子算法或后量子算法。* AWS 已经实现了*混合*后量子密钥交换密码套件，该套件结合了经典和后量子元素，以确保您的 TLS 连接至少与经典密码套件一样强大。

在使用最新版本的 AWS 时，这些混合密码套件可用于您的生产工作负载。 SDKs有关如何实现 enable/disable 此行为的更多信息，请参阅 [启用混合后量子 TLS](pqtls-details.md)

![\[使用经典密钥协议和后量子密钥协议保护的 TLS 会话。今天的对手无法打破关键协议的经典部分。如果对手记录了数据并在将来尝试使用CRQC对其进行解密，则后量子密钥协议可以确保会话密钥的安全。因此，即使在将来，今天传输的数据也不会被发现。这就是为什么混合后量子 TLS 在当今很重要的原因。\]](http://docs.aws.amazon.com/zh_cn/payment-cryptography/latest/userguide/images/pqtls-mitigation.png)


## 关于 TLS 中的混合后量子密钥交换
<a name="PQTLS-concepts"></a>

 AWS [使用的算法是*混合*算法，它结合了当今T [LS中使用的经典密钥交换算法 Elliptic Curve Diffie-Hellman](https://en.wikipedia.org/wiki/Elliptic-curve_Diffie%E2%80%93Hellman)（ECDH）和[基于模块格子的密钥封装机制（ML-KEM），后者是一种公钥加密和密钥](https://csrc.nist.gov/pubs/fips/203/final)建立算法，被美国国家标准与技术研究所（NIST）指定为其第一个标准的后量子密钥协议算法。](https://csrc.nist.gov/pubs/fips/203/final)此混合算法单独使用每个算法来生成密钥。然后，以加密方式结合使用这两个密钥。

## 了解有关 PQC 的更多信息
<a name="pqtls-moreinfo"></a>

有关美国国家标准和技术研究所 (NIST) 开展的后量子密码加密技术项目的信息，请参阅[后量子密码加密技术](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography)。

有关 NIST 后量子密码标准化的信息，请参阅 [后量子密码标准化](https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization)。

# 启用混合后量子 TLS
<a name="pqtls-details"></a>

AWS SDKs 和工具的加密功能和配置因语言和运行时而异。AWS 软件开发工具包或工具目前通过三种方式提供 PQ TLS 支持：

**Topics**
+ [SDKs 默认情况下启用 PQ TLS](#pq-tls-default)
+ [选择加入 PQ TLS 支持](#pq-tls-opt-in)
+ [SDKs 依赖系统 OpenSSL 的](#pq-tls-open-ssl)
+ [AWS SDKs 和不打算支持 PQ TLS 的工具](#pq-tls-nosupport)

## SDKs 默认情况下启用 PQ TLS
<a name="pq-tls-default"></a>

**注意**  
截至2025年11月6日，AWS SDK及其适用于macOS和Windows的底层CRT库使用TLS的系统库，因此这些平台上的PQ TLS功能通常取决于系统级支持。

### 适用于 Go 的 AWS SDK
<a name="pq-sdk-go"></a>

AWS SDK for Go 使用 Golang 自己的标准库提供的 TLS 实现。从 v1.24 起，Golang 支持并更喜欢 PQ TLS，因此 AWS SDK for Go 用户只需将 Golang 升级到 v1.24 即可启用 PQ TLS 

### 适用于 JavaScript （浏览器）的 AWS 开发工具包
<a name="pq-sdk-javascript"></a>

适用于 JavaScript （浏览器）的 AWS 开发工具包使用浏览器的 TLS 堆栈，因此，如果浏览器运行时支持和首选 PQ TLS，则该软件开发工具包将协商 PQ TLS。Firefox 在 v132.0 中推出了对 PQ TLS 的支持。Chrome 宣布在 v131 中支持 PQ TLS。Edge 支持台式机版 v120 中的可选加入 PQ TLS，安卓版 140 版支持选择加入 PQ 

### 适用于 Node.js 的 AWS SDK
<a name="pq-sdk-nodejs"></a>

从 Node.js v22.20 (LTS) 和 v24.9.0 开始，Node.js 静态链接和捆绑了 OpenSSL 3.5。这意味着 PQ TLS 在这些版本和后续版本中默认处于启用状态，并且首选。

### 适用于 Kotlin 的 AWS 开发工具包
<a name="pq-sdk-kotlin"></a>

从 1.5.78 版本开始，Kotlin SDK 支持并更喜欢在 Linux 上使用 PQ TLS。由于适用于 Kotlin 的 AWS 开发工具包基于 CRT 的客户端依赖于 macOS 和 Windows 上的 TLS 系统库，因此对 PQ TLS 的支持将取决于这些底层系统库。

### AWS 开发工具包适用于 Rust
<a name="pq-sdk-rust"></a>

适用于 Rust 的 AWS 开发工具包为每个服务客户端分发不同的软件包（在 Rust 生态系统中称为 “板条箱”）。它们都在统一的 GitHub 存储库中进行管理，但每个服务客户端都遵循自己的版本和发布节奏。合并后的 SDK 于 25 年 8 月 29 日发布了 PQ TLS 首选项，因此在该日期之后发布的任何单个服务客户端版本都将默认支持并首选 PQ TLS。

 您可以通过导航到相关的 crates.io 版本网址（例如，此处为 AWS 付款密码学）并查找 8 月 29 日至 25 日之后发布的第一个版本，[来](https://crates.io/crates/aws-sdk-paymentcryptography/versions)确定特定服务客户端支持 PQ TLS 的最低版本。默认情况下，在 25 年 8 月 29 日之后发布的任何服务客户端版本都将启用 PQ TLS 并成为首选。

## 选择加入 PQ TLS 支持
<a name="pq-tls-opt-in"></a>

### 适用于 C\$1\$1 的 AWS SDK
<a name="pq-sdk-cplusplus"></a>

默认情况下，C\$1\$1 开发工具包使用平台原生客户端，例如 libcurl 和。 WinHttpLibcurl 通常依赖系统 OpenSSL 来实现 TLS，因此只有在系统 OpenSSL 等于 v3.5 时，才会默认启用 PQ TLS。你可以在 C\$1\$1 SDK v1.11.673 或更高版本中覆盖此默认值，然后选择加入默认支持和启用 PQ TLS AwsCrtHttpClient 的。

[关于为选择加入 PQ TLS 构建的注意事项您可以使用此脚本获取 SDK 的 CRT 依赖项。](https://github.com/aws/aws-sdk-cpp/blob/main/prefetch_crt_dependency.sh)[此处和此处](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/sdk-from-source.html)[描述了从源代码构建 SDK，但请注意，您可能需要一些额外的 CMake 标志：](https://github.com/aws/aws-sdk-cpp/tree/main?tab=readme-ov-file#building-from-source)

```
  
    -DUSE_CRT_HTTP_CLIENT=ON \
    -DUSE_TLS_V1_2=OFF \
    -DUSE_TLS_V1_3=ON \
    -DUSE_OPENSSL=OFF \
```

### 适用于 Java 的 AWS SDK
<a name="pq-sdk-java"></a>

 从 v2 开始，适用于 Java 的 AWS 开发工具包提供了 AWS 通用运行时 (AWS CRT) HTTP 客户端，可以将其配置为执行 PQ TLS。从 v2.35.11 开始，无论在哪里使用 PQ TLS，都会默认 AwsCrtHttpClient 启用并首选 PQ TLS。

## SDKs 依赖系统 OpenSSL 的
<a name="pq-tls-open-ssl"></a>

有些 AWS SDKs 和工具依赖于系统的 TLS libcrypto/libssl 库。最常用的系统库是 OpenSSL。在 3.5 版本中，OpenSSL 支持 PQ TLS，因此为 PQ TLS 配置这些工具 SDKs 和工具的最简单方法是在至少安装了 OpenSSL 3.5 的操作系统发行版上使用它。

你也可以将 Docker 容器配置为使用 OpenSSL 3.5 在任何支持 Docker 的系统上启用 PQ TLS。有关为 Python 进行此设置的示例，请参阅 Python 中的后量子 TLS。

### AWS CLI
<a name="pq-tls-cli"></a>

AWS CL [I 安装程序的 PQ TLS](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 支持即将推出。要立即启用，您可以使用 AWS CLI 的替代安装程序，该安装程序因操作系统而异，并且可以启用 PQ TLS。

对于 macOS，请通过 [Homebrew 安装 AWS CLI，并确保将 Homebrew](https://brew.sh/) 提供的 OpenSSL 升级到 3.5\$1 版本。你可以用 “brew install openssl @3 .6” 来做到这一点，然后用 “brew list \$1 grep openssl” 进行验证。

对于 Ubuntu 或 Debian Linux：确保你使用的 Linux 发行版已将 OpenSSL 3.5\$1 安装为系统 OpenSSL。然后，使用 apt 或 [PyPI 安装 AWS CLI](https://pypi.org/project/awscliv2/)。有了这些先决条件，apt 或 PyPI 提供的 AWS CLI 将被配置为协商 PQ-TLS。有关验证安装的 step-by-step说明，请参阅 [github 存储库](https://github.com/aws-samples/sample-post-quantum-tls-python/)和随附的[博客文章](https://aws.amazon.com/blogs/security/post-quantum-tls-in-python/)。

### 适用于 PHP 的 AWS SDK
<a name="pq-tls-php"></a>

适用于 PHP 的 AWS 开发工具包依赖于系统 libssl/libcrypto。要使用 PQ TLS，请在至少安装了 OpenSSL 3.5 的操作系统发行版上使用此 SDK。

### 适用于 Python 的 Amazon SDK（Boto3）
<a name="pq-tls-python"></a>

适用于 Python 的 AWS 开发工具包 (Boto3) SDK 依赖于系统 libssl/libcrypto。要使用 PQ TLS，请在至少安装了 OpenSSL 3.5 的操作系统发行版上使用此 SDK。

### 适用于 Ruby 的 AWS SDK
<a name="pq-tls-ruby"></a>

适用于 Ruby 的 AWS 开发工具包依赖于系统 libssl/libcrypto。要使用 PQ TLS，请在至少安装了 OpenSSL 3.5 的操作系统发行版上使用此 SDK。

### 适用于 .NET 的 AWS SDK
<a name="pq-tls-dotnet"></a>

在 Linux 上，适用于.NET 的 AWS 开发工具包依赖于系统 libssl/libcrypto。要使用 PQ TLS，请在至少安装了 OpenSSL 3.5 的操作系统发行版上使用此 SDK。[在 Windows 和 macOS 上，PQ TLS 从 [.NET 10](https://devblogs.microsoft.com/dotnet/post-quantum-cryptography-in-dotnet/) 和 Windows 11 开始可用。](https://techcommunity.microsoft.com/blog/microsoft-security-blog/post-quantum-cryptography-apis-now-generally-available-on-microsoft-platforms/4469093)[在 macOS 上，可以通过选择加入苹果的 Network.Framework 来启用 TLS 1.3 支持（PQ TLS 的先决条件），如下所述。](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/libraries#tls-13-for-macos-client)假设.NET 版本最低为 10，则应启用 PQ TLS。

## AWS SDKs 和不打算支持 PQ TLS 的工具
<a name="pq-tls-nosupport"></a>

目前没有计划支持以下语言 SDKs 和工具：
+ 适用于 SAP 的 AWS 开发工具
+ 适用于 Swift 的 AWS
+ 适用于 Windows 的 AWS 工具 PowerShell

# AWS 支付密码学安全最佳实践
<a name="security-best-practices"></a>

AWS Payment Cryptography 支持许多内置安全功能，或者您可以选择实施这些功能，以增强对加密密钥的保护并确保其用于预期目的，包括 [IAM 策略](security_iam_service-with-iam.md)、用于完善密钥策略和 IAM 策略的大量策略条件密钥以及有关密钥块的 PCI PIN 规则的内置强制执行。

**重要**  
提供的这些一般准则并不代表完整的安全解决方案。由于并非所有最佳实践都适用于所有情况，因此这些做法并不是规范性的。
+ **密钥使用和使用模式**： AWS 支付密码学遵循并强制执行密钥使用和使用模式限制，如ANSI X9 TR 31-2018互操作安全密钥交换密钥区块规范中所述，并符合PCI PIN安全要求18-3。这限制了将单个密钥用于多种目的的能力，并以加密方式将密钥元数据（例如允许的操作）绑定到密钥材料本身。 AWS Payment Cryptography 会自动强制执行这些限制，例如密钥加密密钥（TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY）也不能用于数据解密。有关更多信息，请参阅[了解 AWS 支付密码学密钥的关键属性](keys-validattributes.md)。
+ **限制对称密钥材料的共享**：最多只能与其他一个实体共享对称密钥材料（例如 Pin 加密密钥或密钥加密密钥）。如果需要将敏感材料传输给更多实体或合作伙伴，请创建其他密钥。 AWS 支付密码学从不公开对称密钥材料或非对称私钥材料。
+ **使用别名或标签将密钥与某些用例或合作伙伴相关联**：别名可用于轻松表示与密钥关联的用例，例如 alias/BIN\$112345\$1CVK，以表示与 BIN 12345 关联的卡片验证密钥。为了提供更大的灵活性，可以考虑创建诸如 bin=12345、use\$1case=acquiring、country=us,partner=foo 之类的标签。别名和标签还可用于限制访问权限，例如在发布和获取用例之间实施访问控制。
+ **实行最低权限访问**：IAM 可用于限制对系统而非个人的生产访问，例如禁止个人用户创建密钥或运行加密操作。IAM 还可用于限制对可能不适用于您的用例的命令和密钥的访问权限，例如限制为收单机构生成或验证密码的能力。使用最低权限访问的另一种方法是将敏感操作（例如密钥导入）限制为特定的服务账户。有关示例，请参阅 [AWS 支付密码学基于身份的策略示例](security_iam_id-based-policy-examples.md)。

**另请参阅**
+ [AWS 支付密码学的身份和访问管理](security-iam.md)
+ *IAM 用户指南*中的 [IAM 安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)