이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.
구조체는 RSAParameters RSA 알고리즘에 대한 표준 매개 변수를 나타냅니다.
RSA 클래스는 ExportParameters 메서드를 제공하여 RSAParameters 구조체 형태로 원시 RSA 키를 검색할 수 있게 합니다.
이 구조의 내용을 이해하려면 알고리즘의 작동 방식을 RSA 숙지하는 데 도움이 됩니다. 다음 섹션에서는 알고리즘에 대해 간략하게 설명합니다.
RSA 알고리즘
키 쌍을 생성하려면 먼저 p와 q라는 두 개의 큰 소수를 만듭니다. 이러한 숫자를 곱하고 결과를 n이라고 합니다. p와 q는 모두 소수이기 때문에 n의 유일한 요소는 1, p, q 및 n입니다.
n보다 작은 숫자만 고려하면 n보다 상대적으로 소수인 숫자의 수, 즉 n, equals(p - 1)(q - 1)와 공통된 요소가 없는 수입니다.
이제 계산한 값에 상대적으로 소수인 숫자 e를 선택합니다. 이제 공개 키가 {e, n}으로 표시됩니다.
프라이빗 키를 만들려면 d(d)(e) mod(p - 1)(q - 1) = 1과 같은 숫자인 d를 계산해야 합니다. 유클리드 알고리즘에 따라 프라이빗 키는 이제 {d, n}입니다.
일반 텍스트 m에서 암호 텍스트 c로의 암호화는 c = (m ^ e) mod n으로 정의됩니다. 암호 해독은 m = (c ^ d) mod n으로 정의됩니다.
필드 요약
PKCS #1: RSA 암호화 표준의 섹션 A.1.2는 RSA 프라이빗 키에 대한 형식을 정의합니다.
다음 표에서는 RSAParameters 구조체의 필드를 요약합니다. 세 번째 열은 PKCS #1: RSA 암호화 표준의 A.1.2 섹션에 해당 필드를 제공합니다.
| RSAParameters 필드 | 포함함 | 해당 PKCS #1 필드 |
|---|---|---|
| D | d, 프라이빗 지수 | 비공개 지수 |
| DP | d mod(p - 1) | 지수1 |
| DQ | d mod(q - 1) | exponent2 |
| Exponent | e, 공용 지수 | 공개 지수 |
| InverseQ | (InverseQ)(q) = 1 mod p | 계수 |
| Modulus | n | 계수 |
| P | p | 프라임1 |
| Q | q | prime2 |
RSA의 보안은 공개 키 { e, n }을 감안할 때 직접 또는 p 및 q로 n을 팩터링하여 d를 계산할 수 없다는 사실에서 비롯됩니다. 따라서 d, p 또는 q와 관련된 키의 모든 부분은 비밀로 유지되어야 합니다. 공개 키 정보만 요청하고 ExportParameters를 호출하는 경우, 이것이 바로 Exponent와 Modulus만 수신하게 되는 이유입니다. 다른 필드는 프라이빗 키에 대한 액세스 권한이 있고 요청하는 경우에만 사용할 수 있습니다.
RSAParameters 은 어떤 방식으로든 암호화되지 않으므로 프라이빗 키 정보와 함께 사용할 때는 주의해야 합니다. 모든 멤버가 RSAParameters 직렬화됩니다. 누구든지 프라이빗 키 매개 변수를 파생하거나 가로챌 수 있는 경우 키와 암호화되거나 서명된 모든 정보가 손상됩니다.
.NET