Compartilhar via


Estrutura System.Security.Cryptography.RSAParameters

Este artigo fornece observações complementares à documentação de referência para essa API.

A RSAParameters estrutura representa os parâmetros padrão para o algoritmo RSA.

A RSA classe expõe um ExportParameters método que permite recuperar a chave RSA bruta na forma de uma RSAParameters estrutura.

Para entender o conteúdo dessa estrutura, ajuda a conhecer como o RSA algoritmo funciona. A próxima seção discute brevemente o algoritmo.

Algoritmo RSA

Para gerar um par de chaves, você começa criando dois grandes números primos chamados p e q. Esses números são multiplicados e o resultado é chamado de n. Como p e q são ambos números primos, os únicos fatores de n são 1, p, q e n.

Se considerarmos apenas os números que são menores que n, a contagem de números que são relativamente primos para n, ou seja, não têm fatores em comum com n, é igual (p - 1)(q - 1).

Agora você escolhe um número e, que é relativamente primo para o valor que você calculou. A chave pública agora é representada como {e, n}.

Para criar a chave privada, você deve calcular d, que é um número tal que (d)(e) mod (p - 1)(q - 1) = 1. De acordo com o algoritmo euclidiano, a chave privada agora é {d, n}.

A criptografia de texto simples m para texto cifrado c é definida como c = (m ^ e) mod n. A descriptografia seria então definida como m = (c ^ d) mod n.

Resumo dos campos

A seção A.1.2 do PKCS #1: RSA Cryptography Standard define um formato para chaves privadas RSA.

A tabela a RSAParameters seguir resume os campos da estrutura. A terceira coluna fornece o campo correspondente na seção A.1.2 do PKCS #1: RSA Cryptography Standard.

Campo do RSAParameters Contém Campo PKCS #1 correspondente
D d, o expoente privado privadoExpoente
DP d mod (p - 1) expoente1
DQ d mod (q - 1) expoente2
Exponent e, o expoente público públicoExpoente
InverseQ (InversoQ) (q) = 1 mod p coeficiente
Modulus n módulo
P p primo1
Q q Prime2

A segurança do RSA deriva do fato de que, dada a chave pública { e, n }, é computacionalmente inviável calcular d, diretamente ou fatorando n em p e q. Portanto, qualquer parte da chave relacionada a d, p ou q deve ser mantida em segredo. Se você ligar ExportParameters e pedir apenas as informações de chave pública, é por isso que você receberá apenas Exponent e Modulus. Os outros campos estarão disponíveis somente se você tiver acesso à chave privada e solicitá-la.

RSAParameters não é criptografado de forma alguma, então você deve ter cuidado ao usá-lo com as informações de chave privada. Todos os membros do RSAParameters são serializados. Se alguém puder derivar ou interceptar os parâmetros de chave privada, a chave e todas as informações criptografadas ou assinadas com ela serão comprometidas.