Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приводятся дополнительные замечания к справочной документации по этому 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) mod ((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, общедоступная экспонента | открытый_экспонент |
InverseQ | (InverseQ)(q) = 1 мод p | коэффициент |
Modulus | н | модуль |
P | п | прайм1 |
Q | q | prime2 |
Безопасность RSA происходит от того факта, что, имея открытый ключ { e, n }, вычислительно невозможно определить d, либо напрямую, либо через разложение n на p и q. Поэтому любая часть ключа, связанная с d, p или q, должна храниться в секрете. Если вы звоните ExportParameters и запрашиваете только информацию открытого ключа, то именно поэтому вы получите только Exponent и Modulus. Другие поля доступны только в том случае, если у вас есть доступ к закрытому ключу, и вы запрашиваете его.
RSAParameters не шифруется каким-либо образом, поэтому при использовании его с информацией о закрытом ключе необходимо быть осторожным. Все члены RSAParameters были сериализованы. Если любой пользователь может получить или перехватить параметры закрытого ключа, ключ и все данные, зашифрованные или подписанные с ним, скомпрометированы.