Compartilhar via


Gerando chaves de criptografia e descriptografia

Criação e gerenciamento de chaves é uma parte importante do processo de criptografia.Algoritmos simétricos exigem a criação de uma chave e um vetor de inicialização (IV) deve ser mantido em segredo de qualquer pessoa que não deve descriptografar os dados.Algoritmos assimétrica requerem a criação de uma chave pública e uma chave particular.A chave pública pode se tornar pública a qualquer pessoa, enquanto a chave particular deve conhecida somente pela parte que descriptografar os dados criptografados com a chave pública.Esta seção descreve como gerar e gerenciar chaves para algoritmos simétricos e assimétricas.

Chaves simétricas

As classes de criptografia simétrica fornecidas pelo .NET estrutura requerem uma chave e um novo vetor de inicialização (IV) para criptografar e descriptografar dados.Sempre que você cria uma nova instância de uma das classes de criptografia simétricas gerenciadas usando o construtor padrão, uma nova chave e IV são criados automaticamente.Qualquer pessoa que permitem descriptografar seus dados deve ter a mesma chave e IV e use o mesmo algoritmo.Em geral, uma nova chave e IV devem ser criada para cada sessão e não a chave nem IV deve ser armazenado para uso em uma sessão posterior.

Para comunicar-se uma chave simétrica e IV para uma festa remota, você normalmente seria criptografar a chave simétrica e IV usando a criptografia assimétrica.Enviar esses valores através de uma rede insegura sem criptografá-los é extremamente inseguro, sistema autônomo qualquer pessoa que intercepta esses valores, em seguida, pode descriptografar seus dados.Para obter mais informações sobre esse processo de criptografar e transferência de chave e IV, consulte Criando um esquema de criptografia.

O exemplo a seguir mostra a criação de uma instância nova do TripleDESCryptoServiceProvider classe que implementa o algoritmo triplo DES.

Dim TDES As TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider()
TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();

Quando o código anterior é executado, uma nova chave e IV são geradas e colocadas no Chave and IV propriedades, respectivamente.

Às vezes, talvez seja necessário gerar várias chaves.Nessa situação, você pode criar uma nova instância de uma classe que implementa um algoritmo simétrico e, em seguida, criar uma nova chave e IV chamando o GenerateKey and GenerateIV métodos.O exemplo de código a seguir ilustra como criar novas chaves e IVs depois que tiver sido feita uma nova instância da classe criptografia assimétrica.

Dim TDES As TripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider()
TDES.GenerateIV()
TDES.GenerateKey()
TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();
TDES.GenerateIV();
TDES.GenerateKey();

Quando o código anterior é executado, uma chave e IV são gerados quando a nova instância da TripleDESCryptoServiceProvider é feita.Outra chave e IV são criadas quando o GenerateKey and GenerateIV métodos são chamados.

Chaves assimétricas

O .NET estrutura fornece a RSACryptoServiceProvider e DSACryptoServiceProvider classes de criptografia assimétrica. Essas classes de criar um público / emparelharticular emparelhar de chaves ao usar o construtor padrão emparelhara criar uma nova instância.As chaves assimétricas podem ser armazenadas para uso em várias sessões ou geradas para somente uma sessão.Enquanto a chave pública pode ser disponibilizada em geral, a chave particular deve ser bastante protegida.

emparelharticular/pública chave emparelhar é gerado sempre que uma nova instância de uma classe de algoritmo assimétrico é criada.Após a criação de uma nova instância da classe, as informações de chave podem ser extraídas usando um dos dois métodos:

Os dois métodos aceitam um valor booliano que indica se é para retornar somente as informações de chave públicas ou para retornar a chave pública e as informações de chave particular.An RSACryptoServiceProvider classe pode ser inicializada para o valor de um RSAParameters estrutura usando o ImportParameters método.

Chaves privadas assimétricas nunca devem ser armazenadas literalmente ou em texto sem formatação no computador local.Se você precisar armazenar uma chave particular, você deve usar um contêiner de chave.Para obter mais informações sobre como armazenar uma chave particular em um contêiner de chave, consulte Como: Armazenar Chaves Asssimétricas em um Contêiner de Chaves.

O exemplo de código a seguir cria uma nova instância do RSACryptoServiceProvider classe, criando um emparelhar de chaves pública/particular e salva as informações de chaves públicas contidas em um RSAParameters estrutura.

'Generate a public/private key pair.
Dim RSA as RSACryptoServiceProvider = new RSACryptoServiceProvider()
'Save the public key information to an RSAParameters structure.
Dim RSAKeyInfo As RSAParameters = RSA.ExportParameters(false)
//Generate a public/private key pair.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Save the public key information to an RSAParameters structure.
RSAParameters RSAKeyInfo = RSA.ExportParameters(false);

Consulte também

Tarefas

Como: Armazenar Chaves Asssimétricas em um Contêiner de Chaves

Conceitos

Criptografando dados

Descriptografar dados

Outros recursos

Tarefas de criptografia

Serviços de criptografia