Структура System.Security.Cryptography.RSAParameters

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Структура RSAParameters представляет стандартные параметры для алгоритма RSA.

Класс RSA предоставляет ExportParameters метод, позволяющий получить необработанный ключ RSA в виде RSAParameters структуры.

Чтобы понять содержимое этой структуры, он помогает узнать, как RSA работает алгоритм. В следующем разделе описывается краткое описание алгоритма.

Алгоритм RSA

Чтобы создать пару ключей, сначала создайте два больших простых числа с именем p и q. Эти числа умножаются, и результат называется n. Поскольку p и q являются простыми числами, единственными факторами n являются 1, p, q и n.

Если рассматривать только числа, которые меньше n, количество чисел, которые относительно простые к n, то есть не имеют факторов общего с n, равно (p - 1)(q - 1).

Теперь вы выбираете число e, которое относительно просто для вычисляемого значения. Открытый ключ теперь представлен как {e, n}.

Чтобы создать закрытый ключ, необходимо вычислить d, что является числом, таким как мод (d)(e) (p - 1)(q - 1) = 1. В соответствии с алгоритмом Euclidean закрытый ключ теперь {d, n}.

Шифрование открытого текста m в шифртекстов c определяется как c = (m ^ e) mod n. Затем расшифровка будет определена как m = (c ^ d) mod n.

Сводка полей

Раздел A.1.2 PKCS #1: RSA Cryptography Standard определяет формат закрытых ключей RSA.

В следующей RSAParameters таблице перечислены поля структуры. Третий столбец предоставляет соответствующее поле в разделе A.1.2 PKCS #1: RSA Cryptography Standard.

ПолеRSAParameters Содержит Соответствующее поле PKCS #1
D d, частный экспонент private Exponent
DP d mod (p - 1) экспонент1
DQ d mod (q - 1) экспонент2
Exponent e, общедоступная экспонента public Exponent
InverseQ (InverseQ) (q) = 1 мод p Коэффициент
Modulus n остаток от деления
P п prime1
Q к prime2

Безопасность RSA является производным от того факта, что, учитывая открытый ключ { e, n }, вычислительно невозможно вычислить d, либо напрямую, либо путем факторинга n в p и q. Поэтому любая часть ключа, связанная с d, p или q, должна храниться в секрете. Если вы звоните ExportParameters и запрашиваете только информацию открытого ключа, то именно поэтому вы получите только Exponent и Modulus. Другие поля доступны только в том случае, если у вас есть доступ к закрытому ключу, и вы запрашиваете его.

RSAParameters не шифруется каким-либо образом, поэтому при использовании его с информацией о закрытом ключе необходимо быть осторожным. Все члены RSAParameters сериализуются. Если любой пользователь может получить или перехватить параметры закрытого ключа, ключ и все данные, зашифрованные или подписанные с ним, скомпрометированы.