

O suporte AWS SDK para .NET V3 atingiu o fim do suporte.

Recomendamos que você migre para a [AWS SDK para .NET](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) V4. Para obter mais detalhes e informações sobre como migrar, consulte nosso anúncio de [ fim de suporte. ](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-end-of-support-announcement/)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Migração do cliente de criptografia Amazon S3 (V1 para V2)
<a name="s3-encryption-migration-v1-v2"></a>

**nota**  
Se você estiver usando a V2 e quiser migrar para a V4, consulte. [Migração do cliente de criptografia Amazon S3 (V2 para V4)](s3-encryption-migration-v2-v4.md)

Este tópico mostra como migrar suas aplicações da Versão 1 (V1) do cliente de criptografia do Amazon Simple Storage Service (Amazon S3) para a Versão 2 (V2) e garantir a disponibilidade da aplicação durante todo o processo de migração.

Objetos criptografados com o cliente V2 não podem ser descriptografados com o cliente V1. Para facilitar a migração para o novo cliente sem precisar criptografar novamente todos os objetos de uma vez, foi fornecido um cliente V1-transitional "”. Esse cliente pode * descriptografar V2-encrypted objetos * e V1, mas * criptografa objetos somente em * formato. V1-compatible O cliente V2 pode * descriptografar * objetos V1 e V2-encrypted objetos (quando ativado para objetos V1), mas * * criptografa objetos somente em formato. V2-compatible 

## Visão geral da migração
<a name="s3-encryption-migration-v1-v2-overview"></a>

Essa migração acontece em três fases: Essas fases são apresentadas aqui e serão descritas em detalhes posteriormente. Cada fase deve ser concluída para *todos* os clientes que usam objetos compartilhados antes que a próxima fase seja iniciada.

1. **Atualize clientes existentes para V1-transitional clientes para ler novos formatos. ** Primeiro, atualize seus aplicativos para depender do V1-transitional cliente em vez do cliente V1. O V1-transitional cliente permite que seu código existente decifre objetos escritos pelos novos clientes V2 e objetos escritos em formato. V1-compatible 
**nota**  
O V1-transitional cliente é fornecido somente para fins de migração. Continue com a atualização para o cliente V2 depois de passar para o V1-transitional cliente.

1. **Migre V1-transitional clientes para clientes V2 para escrever novos formatos. ** Em seguida, substitua todos os V1-transitional clientes em seus aplicativos por clientes V2 e defina o perfil de segurança como`V2AndLegacy`. Definir esse perfil de segurança em clientes V2 permite que esses clientes descriptografem objetos que foram criptografados em formato. V1-compatible

1. **Atualize os clientes V2 para que não leiam mais os formatos V1.** Finalmente, depois que todos os clientes tiverem sido migrados para a V2 e todos os objetos tiverem sido criptografados ou recriptografados em V2-compatible formato, defina o perfil de segurança da V2 como em vez de. `V2` `V2AndLegacy` Isso evita a decodificação de objetos que estão em V1-compatible formato.

## Atualize clientes existentes para V1-transitional clientes para ler novos formatos
<a name="s3-encryption-migration-v1-v2-to-v1n"></a>

O cliente de criptografia V2 usa algoritmos de criptografia incompatíveis com as versões mais antigas do cliente. A primeira etapa da migração é atualizar seus clientes de descriptografia V1 para que eles possam ler o novo formato.

O V1-transitional cliente permite que seus aplicativos descriptografem V1- e objetos. V2-encrypted Esse cliente faz parte do [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet pacote. Execute as etapas a seguir em cada um dos seus aplicativos para usar o V1-transitional cliente.

1. Crie uma nova dependência no [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) pacote. Se seu projeto depende diretamente dos ** AWSSDK.KeyManagementService ** pacotes ** AWSSDK.S3 ** ou, você deve atualizar essas dependências ou removê-las para que suas versões atualizadas sejam incluídas com esse novo pacote.

1. Altere a declaração `using` apropriada de `Amazon.S3.Encryption` para `Amazon.Extensions.S3.Encryption`, da seguinte forma: 

   ```
   // using Amazon.S3.Encryption;
     using Amazon.Extensions.S3.Encryption;
   ```

1. Reconstrua e reimplante o aplicativo.

O V1-transitional cliente está totalmente API-compatible com o cliente V1, portanto, nenhuma outra alteração no código é necessária.

## Migre V1-transitional clientes para clientes V2 para escrever novos formatos
<a name="s3-encryption-migration-v1-v2-v1n-to-v2"></a>

O cliente V2 faz parte do [ Amazon.Extensions.S3.Encryption ](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet pacote. Ele permite que seus aplicativos descriptografem V2-encrypted objetos V1 e V1 (se configurado para isso), mas criptografa objetos somente em formato. V2-compatible

Depois de atualizar seus clientes existentes para ler o novo formato de criptografia, você poderá prosseguir com a atualização segura de seus aplicativos para os clientes de criptografia e descriptografia V2. Execute as etapas a seguir em cada um dos seus aplicativos para usar o cliente V2.

1. Fazer `EncryptionMaterials` alteração `EncryptionMaterialsV2`.

   1. Ao usar o KMS:

      1. Forneça um ID da chave do KMS.

      1. Declare o método de criptografia que você está usando; ou seja, `KmsType.KmsContext`.

      1. Forneça um contexto de criptografia ao KMS para associar a essa chave de dados. Você pode enviar um dicionário vazio (o contexto de criptografia da Amazon ainda será mesclado), mas é recomendável fornecer contexto adicional.

   1. Ao usar métodos de wrapping da chave fornecidos pelo usuário (criptografia simétrica ou assimétrica):

      1. Forneça uma instância `AES` ou `RSA` que contenha os materiais de criptografia.

      1. Declare qual algoritmo de criptografia usar; ou seja, `SymmetricAlgorithmType.AesGcm` ou `AsymmetricAlgorithmType.RsaOaepSha1`.

1. Altere `AmazonS3CryptoConfiguration` para `AmazonS3CryptoConfigurationV2` com a propriedade `SecurityProfile` definida como `SecurityProfile.V2AndLegacy`.

1. Fazer `AmazonS3EncryptionClient` alteração `AmazonS3EncryptionClientV2`. Esse cliente pega os objetos `AmazonS3CryptoConfigurationV2` e `EncryptionMaterialsV2` recém-convertidos das etapas anteriores.

### Exemplo: KMS para KMS\+Context
<a name="s3-encryption-migration-v1-v2-ex-kms"></a>

**Pre-migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab");
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Post-migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

### Exemplo: Algoritmo simétrico (AES-CBC para AES-GCM Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-aes"></a>

`StorageMode` pode ser `ObjectMetadata` ou `InstructionFile`.

**Pre-migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Post-migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

**nota**  
Ao descriptografar com AES-GCM, leia o objeto inteiro até o fim antes de começar a usar os dados descriptografados. Isso é para verificar se o objeto não foi modificado desde que foi criptografado.

### Exemplo: Algoritmo assimétrico (RSA para RSA-OAEP-SHA1 Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-rsa"></a>

`StorageMode` pode ser `ObjectMetadata` ou `InstructionFile`.

**Pre-migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Post-migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

## Atualize os clientes V2 para que não leiam mais os formatos V1.
<a name="s3-encryption-migration-v1-v2-v2-cleanup"></a>

Eventualmente, todos os objetos terão sido criptografados ou recriptografados usando um cliente V2. *Depois que essa conversão for concluída*, você poderá desativar a compatibilidade com a V1 nos clientes V2 definindo a propriedade `SecurityProfile` como `SecurityProfile.V2`, conforme mostrado no trecho a seguir.

```
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
```