

# Proteger dados em trânsito com criptografia
<a name="UsingEncryptionInTransit"></a>

O Amazon S3 aceita os protocolos HTTP e HTTPS para transmissão de dados. O HTTP transmite dados em texto simples, enquanto o HTTPS adiciona uma camada de segurança ao criptografar dados usando o Transport Layer Security (TLS). O TLS oferece proteção contra espionagem, adulteração de dados e ataques man-in-the-middle. Embora o tráfego HTTP seja aceito, a maioria das implementações usa criptografia em trânsito com HTTPS e TLS para proteger os dados enquanto eles trafegam entre os clientes e o Amazon S3.

## Suporte a TLS 1.2 e TLS 1.3
<a name="UsingEncryptionInTransit.TLS-support"></a>

O Amazon S3 é compatível com o TLS 1.2 e o TLS 1.3 para conexões HTTPS em todos os endpoints de API para todas as Regiões da AWS. O S3 negocia automaticamente a proteção mais forte do TLS permitida pelo software-cliente e pelo endpoint do S3 que você está acessando. Como as ferramentas atuais (2014 ou posteriores) da AWS, inclusive os SDKs da AWS, e a AWS CLI, são automaticamente padronizadas para o TLS 1.3, não é necessária nenhuma ação de sua parte. Você pode substituir essa negociação automática por meio das configurações do cliente para especificar uma versão do TLS se precisar de compatibilidade com versões anteriores do TLS 1.2. Ao usar o TLS 1.3, você tem a opção de configurar a troca de chaves híbrida pós-quântica (ML-KEM) para fazer solicitações pós-quânticas ao Amazon S3. Para obter mais informações, consulte [Configurar o TLS híbrido pós-quântico para seu cliente](pqtls-how-to.md). 

**nota**  
O TLS 1.3 é compatível com todos os endpoints do S3, exceto no AWS PrivateLink para Amazon S3 e nos pontos de acesso multirregionais.

## Monitorar o uso de TLS
<a name="UsingEncryptionInTransit.monitoring"></a>

É possível usar os logs de acesso ao servidor do Amazon S3 ou o AWS CloudTrail para monitorar solicitações aos buckets do Amazon S3. Ambas as opções de registro em log registram a versão do TLS e a suíte de cifras usada em cada solicitação.
+ **Logs de acesso ao servidor do Amazon S3**: o registro em log de acesso ao servidor oferece registros detalhados das solicitações feitas a um bucket. Por exemplo, as informações do log de acesso podem ser úteis em auditorias de segurança e acesso. Para obter mais informações, consulte [Formato dos logs de acesso ao servidor do Amazon S3](LogFormat.md).
+ **AWS CloudTrail**: o [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) é um serviço que fornece um registro das ações realizadas por um usuário, perfil ou serviço da AWS. O CloudTrail captura todas as chamadas de API para o Amazon S3 como eventos. Para obter mais informações, consulte [Eventos do CloudTrail no Amazon S3](cloudtrail-logging-s3-info.md).

## Aplicar a criptografia em trânsito
<a name="UsingEncryptionInTransit.enforcement"></a>

É uma prática recomendada de segurança impor a criptografia de dados em trânsito para o Amazon S3. É possível impor a comunicação somente por HTTPS ou o uso de uma versão específica do TLS por meio de vários mecanismos de política. Isso inclui políticas baseadas em recurso do IAM para buckets do S3 ([políticas de bucket](bucket-policies.md)), [políticas de controle de serviços](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (SCPs), [políticas de controle de recursos](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (RCPs) e [políticas de endpoint da VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

### Exemplos de política de bucket para aplicar a criptografia em trânsito
<a name="UsingEncryptionInTransit.bucket-policy-example"></a>

É possível usar a [chave de condição `s3:TlsVersion` do S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys) para restringir o acesso aos buckets do Amazon S3 com base na versão do TLS usada pelo cliente. Para obter mais informações, consulte [Exemplo 6: exigir uma versão mínima do TLS](amazon-s3-policy-keys.md#example-object-tls-version).

**Example de política de bucket que impõe o TLS 1.3 usando a chave de condição `S3:TlsVersion`**  

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyInsecureConnections",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket1",
        "arn:aws:s3:::amzn-s3-demo-bucket1/*"
      ],
      "Condition": {
        "NumericLessThan": {
          "s3:TlsVersion": "1.3"
        }
      }
    }
  ]
}
```

É possível usar a [chave de condição global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) `aws:SecureTransport` em sua política de bucket do S3 para verificar se a solicitação foi enviada por HTTPS (TLS). Diferentemente do exemplo anterior, essa condição não verifica uma versão específica do TLS. Para obter mais informações, consulte [Restringir o acesso somente a solicitações HTTPS](example-bucket-policies.md#example-bucket-policies-use-case-HTTP-HTTPS-1).

**Example de política de bucket que impõe HTTPS usando a chave de condição `aws:SecureTransport`**  

```
{
    "Version":"2012-10-17",		 	 	 		 	 	 
    "Statement": [
     {
        "Sid": "RestrictToTLSRequestsOnly",		 	 	 
        "Action": "s3:*",
        "Effect": "Deny",
        "Resource": [
            "arn:aws:s3:::amzn-s3-demo-bucket1",
            "arn:aws:s3:::amzn-s3-demo-bucket1/*"
        ],
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        },
        "Principal": "*"
    }
  ]
}
```

**Exemplo de política com base em chaves e mais exemplos**  
É possível usar os dois tipos de chave de condição dos exemplos anteriores em uma política. Para ter mais informações e conhecer abordagens adicionais de imposição, consulte o artigo [Enforcing encryption in transit with TLS1.2 or higher with Amazon S3](https://aws.amazon.com/blogs/storage/enforcing-encryption-in-transit-with-tls1-2-or-higher-with-amazon-s3/) do AWS Storage Blog.

# Usar TLS pós-quântico híbrido com o Amazon S3
<a name="UsingEncryptionInTransit.PQ-TLS"></a>

O Amazon S3 é compatível com a opção de troca de chaves híbrida pós-quântica para o protocolo de criptografia de rede TLS. Você pode usar essa opção de TLS ao fazer solicitações a endpoints do Amazon S3 usando o TLS 1.3. As suítes de cifras clássicas que o S3 permite para sessões TLS tornam inviáveis os ataques de força bruta nos mecanismos de troca de chaves com a tecnologia atual. No entanto, se um computador quântico criptograficamente relevante se tornar possível no futuro, as suítes de cifras clássicas usadas nos mecanismos de troca de chaves TLS serão suscetíveis a esses ataques. No momento, o setor está alinhado com relação à troca de chaves híbrida pós-quântica, que combina elementos clássicos e pós-quânticos para garantir que a conexão TLS seja no mínimo tão forte quanto seria com suítes de cifras clássicas. Agora o Amazon S3 oferece suporte ao PQ-TLS híbrido, em conformidade com a especificação padrão do setor da IANA.

Se você estiver desenvolvendo aplicações que dependem da confidencialidade de longo prazo dos dados transmitidos por uma conexão TLS, deverá considerar um plano para migrar para a criptografia pós-quântica antes que computadores quânticos de grande escala sejam disponibilizados para uso. Como parte do Modelo de Responsabilidade Compartilhada, o S3 oferece criptografia com segurança quântica em nossos endpoints de serviço. À medida que os navegadores e aplicações habilitarem o PQ-TLS do lado deles, o S3 escolherá a configuração mais forte possível para proteger os dados em trânsito.

**Tipos de endpoint e compatíveis Regiões da AWS**

O TLS pós-quântico para o Amazon S3 está disponível em todas as Regiões da AWS. Para ver uma lista de endpoints do S3 para cada Região da AWS, consulte [Endpoints e cotas do Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/s3.html) na *Referência geral da Amazon Web Services*.

**nota**  
É possível usar TLS híbrido pós-quântico em todos os endpoints do S3, exceto no AWS PrivateLink para Amazon S3, em pontos de acesso multirregionais e no S3 Vectors.

## Usar TLS pós-quântico híbrido com o Amazon S3
<a name="pqtls-details"></a>

É necessário configurar o cliente que faz solicitações ao Amazon S3 para que aceite o TLS híbrido pós-quântico. Ao configurar um ambiente de teste de cliente HTTP ou ambientes de produção, esteja ciente das seguintes informações:

**Criptografia em trânsito**

O TLS híbrido pós-quântico é usado apenas para criptografia em trânsito. Isso protege seus dados enquanto estes trafegam do cliente para o endpoint do S3. Esse novo suporte, combinado com a criptografia do lado do servidor do Amazon S3, utilizando algoritmos AES-256 por padrão, oferece aos clientes criptografia pós-quântica tanto em trânsito quanto em repouso. Para ter mais informações sobre a criptografia do lado do servidor no Amazon S3, consulte [Proteger os dados usando a criptografia do lado do servidor](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html).

**Clientes compatíveis**

O uso do TLS híbrido pós-quântico requer o uso de um cliente compatível com essa funcionalidade. As ferramentas e os SDKs da AWS têm configurações e recursos criptográficos que diferem de uma linguagem para outra e de um runtime para outro. Para saber mais sobre a criptografia pós-quântica de ferramentas específicas, consulte [Habilitar o TLS híbrido pós-quântico](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

**nota**  
Os detalhes da troca de chaves PQ-TLS para solicitações ao Amazon S3 não estão disponíveis em eventos do AWS CloudTrail ou logs de acesso ao servidor do S3.

## Saiba mais sobre o TLS pós-quântico.
<a name="pqtls-see-also"></a>

Para ter mais informações sobre como usar o TLS híbrido pós-quântico, consulte os recursos a seguir.
+ Para saber mais sobre a criptografia pós-quântica na AWS e ter acesso a links para publicações de blog e artigos de pesquisa, consulte [Criptografia pós-quântica na AWS](https://aws.amazon.com/security/post-quantum-cryptography/).
+ Para obter informações sobre o s2n-tls, consulte [Apresentação do s2n-tls, uma nova implementação do TLS de código aberto](https://aws.amazon.com/blogs/security/introducing-s2n-a-new-open-source-tls-implementation/) e [Uso do s2n-tls](https://github.com/aws/s2n-tls/tree/main/docs/usage-guide).
+ Para obter informações sobre o cliente HTTP de runtime da AWS, consulte [Configuring the AWS CRT-based HTTP client](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) (Configurar o cliente HTTP da baseado em CRT) no *Guia do desenvolvedor do AWS SDK for Java 2.x*.
+ Para obter informações sobre o projeto de criptografia pós-quântica no Instituto Nacional de Padrões e Tecnologia (NIST — National Institute for Standards and Technology), consulte [Criptografia pós-quântica](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography).
+ Para ter informações sobre a padronização da criptografia pós-quântica do NIST, consulte [Post-Quantum Cryptography](https://csrc.nist.gov/Projects/post-quantum-cryptography/post-quantum-cryptography-standardization) no site do NIST.

# Configurar o TLS híbrido pós-quântico para seu cliente
<a name="pqtls-how-to"></a>

Para usar o PQ-TLS com o Amazon S3, é necessário configurar o cliente para aceitar algoritmos de troca de chaves pós-quântica. Além disso, o cliente deve permitir a abordagem híbrida, que combina a criptografia de curva elíptica tradicional com algoritmos pós-quânticos, como o Module-Lattice-Based Key Encapsulation Mechanism (ML-KEM).

A configuração específica depende da biblioteca cliente e da linguagem de programação. Para ter mais informações, consulte [Habilitar o TLS híbrido pós-quântico](https://docs.aws.amazon.com/payment-cryptography/latest/userguide/pqtls-details.html).

## Exemplo de configuração de cliente: AWS SDK para Java 2
<a name="UsingEncryptionInTransit.PQ-TLS.configuration.java2-sdk"></a>

Neste procedimento, adicione uma dependência do Maven para o cliente HTTP de runtime comum da AWS. Em seguida, configure um cliente HTTP com preferência em TLS pós-quântico. Em seguida, crie um cliente do Amazon S3 que use o cliente HTTP.

**nota**  
O cliente HTTP de runtime comum da AWS, que estava disponível como uma prévia, tornou-se disponível para o público em fevereiro de 2023. Nesse lançamento, a classe `tlsCipherPreference` e o parâmetro de método `tlsCipherPreference()` foram substituídos pelo parâmetro de método `postQuantumTlsEnabled()`. Se você estava usando este exemplo durante a prévia, precisará atualizar seu código.

1. Adicione o cliente de runtime comum da AWS às suas dependências do Maven. Recomendamos usar a versão mais recente disponível. 

   Por exemplo, esta instrução adiciona a versão `2.30.22` do cliente de runtime comum da AWS para suas dependências do Maven. 

   ```
   <dependency>
       <groupId>software.amazon.awssdk</groupId>
       <artifactId>aws-crt-client</artifactId>
       <version>2.30.22</version>
   </dependency>
   ```

1. Para habilitar os pacotes de criptografia pós-quântica híbrida, adicione o AWS SDK for Java 2.x ao seu projeto e inicialize-o. Em seguida, habilite os pacotes de codificação pós-quântica híbrida em seu cliente HTTP, conforme mostrado no exemplo a seguir.

   Esse código usa o parâmetro de método `postQuantumTlsEnabled()` para configurar um [cliente HTTP de runtime da AWS](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html) que prefere o conjunto de cifras híbridas pós-quânticas recomendado, ECDH com ML-KEM. Em seguida, o cliente HTTP configurado é usado para criar uma instância do cliente assíncrono do Amazon S, [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3AsyncClient.html). Após a conclusão desse código, todas as solicitações de [API do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/) na instância `S3AsyncClient` usarão o TLS híbrido pós-quântico.
**Importante**  
A partir da versão 2.35.11, os chamadores não precisam mais definir `.postQuantumTlsEnabled(true)` para habilitar o TLS híbrido pós-quântico para o cliente. Todas as versões mais recentes que a v2.35.11 têm o TLS pós-quântico habilitado por padrão.

   ```
   // Configure HTTP client
   SdkAsyncHttpClient awsCrtHttpClient = AwsCrtAsyncHttpClient.builder()
             .postQuantumTlsEnabled(true)
             .build();
   
   // Create the Amazon S3 async client
   S3AsyncClient s3Async = S3AsyncClient.builder()
            .httpClient(awsCrtHttpClient)
            .build();
   ```

1. Teste suas chamadas ao Amazon S3 com o TLS híbrido pós-quântico.

   Ao chamar operações de API do Amazon S3 no cliente configurado do Amazon S3, as chamadas são transmitidas ao endpoint do Amazon S3 usando o TLS híbrido pós-quântico. Para testar a configuração, chame uma API do Amazon S3, como `[ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)`.

   ```
   ListBucketsResponse reponse = s3Async.listBuckets();
   ```

### Testar sua configuração TLS pós-quântico híbrido
<a name="pqtls-testing"></a>

Considere a possibilidade de executar os testes a seguir com suítes de cifras híbridas em suas aplicações que chamam o Amazon S3.
+ Execute testes de carga e de comparação. Os pacotes de criptografia híbrida têm uma performance diferente dos algoritmos tradicionais de troca de chaves. Talvez seja necessário ajustar os tempos limite de conexão para permitir os tempos de handshake mais longos. Se você estiver executando dentro de uma função AWS Lambda, estenda a configuração de tempo limite de execução.
+ Tente conectar-se de diferentes locais. Dependendo do caminho de rede que sua solicitação segue, é possível descobrir quais hosts intermediários, proxies ou firewalls com inspeção profunda de pacotes (DPI) bloqueiam a solicitação. Isso pode resultar do uso dos novos pacotes de criptografia na parte [ClientHello](https://tools.ietf.org/html/rfc5246#section-7.4.1.2) do handshake TLS ou das mensagens de troca de chaves maiores. Se você tiver problemas para resolver esses problemas, trabalhe com sua equipe de segurança ou administradores de TI para atualizar a configuração relevante e desbloquear os novos pacotes de criptografia TLS. 