3. Key Types (鍵の型)
本文書で定義されているプリミティブとスキームでは、2つの鍵の型が使用されます:RSA公開鍵 (RSA Public Key) とRSA秘密鍵 (RSA Private Key)。RSA公開鍵とRSA秘密鍵を合わせて、RSA鍵ペア (RSA Key Pair) を構成します。
本仕様は、いわゆる「マルチプライム」(Multi-prime) RSAをサポートしています。これは、剰余が2つ以上の素因数を持つことができるものです。マルチプライムRSAの利点は、中国剰余定理 (Chinese Remainder Theorem, CRT) を使用する場合、復号化および署名プリミティブの計算コストが低くなることです。シングルプロセッサプラットフォームでもより良いパフォーマンスを達成できますが、マルチプロセッサプラットフォームではさらに大きな改善が得られます。これは、関連するモジュラー指数演算を並列で実行できるためです。
マルチプライムがRSA暗号系のセキュリティにどのように影響するかについての議論は、[SILVERMAN] を参照してください。
3.1. RSA Public Key (RSA公開鍵)
本文書の目的上、RSA公開鍵は2つのコンポーネントで構成されます:
n RSA剰余 (RSA Modulus)、正の整数
e RSA公開指数 (RSA Public Exponent)、正の整数
有効なRSA公開鍵では、RSA剰余nはu個の異なる奇素数r_i(i = 1, 2, ..., u、ただしu >= 2)の積であり、RSA公開指数eは3とn - 1の間の整数で、GCD(e, λ(n)) = 1を満たします。ここで、λ(n) = LCM(r_1 - 1, ..., r_u - 1)です。慣例により、最初の2つの素数r_1とr_2は、それぞれpとqとして表すこともできます。
実装間でRSA公開鍵を交換するための推奨構文は、付録A.1.1に示されています。実装の内部表現は異なる場合があります。
3.2. RSA Private Key (RSA秘密鍵)
本文書の目的上、RSA秘密鍵は2つの表現のいずれかを持つことができます。
表現形式1
最初の表現形式は、ペア (n, d) で構成され、コンポーネントには次の意味があります:
n RSA剰余 (RSA Modulus)、正の整数
d RSA秘密指数 (RSA Private Exponent)、正の整数
表現形式2
2番目の表現形式は、五つ組 (p, q, dP, dQ, qInv) と、(空の可能性がある)三つ組のシーケンス (r_i, d_i, t_i)(i = 3, ..., u、五つ組に含まれていない各素数に対して1つ)で構成され、コンポーネントには次の意味があります:
p 最初の因数、正の整数
q 2番目の因数、正の整数
dP 最初の因数のCRT指数、正の整数
dQ 2番目の因数のCRT指数、正の整数
qInv (最初の)CRT係数、正の整数
r_i i番目の因数、正の整数
d_i i番目の因数のCRT指数、正の整数
t_i i番目の因数のCRT係数、正の整数
有効性制約
最初の表現形式を持つ有効なRSA秘密鍵では、RSA剰余nは対応するRSA公開鍵のものと同じであり、u個の異なる奇素数r_i(i = 1, 2, ..., u、ただしu >= 2)の積です。RSA秘密指数dは、nより小さい正の整数で、次を満たします:
e * d == 1 (mod λ(n))
ここで、eは対応するRSA公開指数であり、λ(n)はセクション3.1で定義されています。
2番目の表現形式を持つ有効なRSA秘密鍵では、2つの因数pとqはRSA剰余nの最初の2つの素因数(すなわち、r_1とr_2)です。CRT指数dPとdQは、それぞれpとqより小さい正の整数で、次を満たします:
e * dP == 1 (mod (p-1))
e * dQ == 1 (mod (q-1))
CRT係数qInvは、pより小さい正の整数で、次を満たします:
q * qInv == 1 (mod p)
u > 2の場合、この表現には1つ以上の三つ組 (r_i, d_i, t_i)(i = 3, ..., u)が含まれます。因数r_iは、RSA剰余nの追加の素因数です。各CRT指数d_i(i = 3, ..., u)は次を満たします:
e * d_i == 1 (mod (r_i - 1))
各CRT係数t_i(i = 3, ..., u)は、r_i未満の正の整数で、次を満たします:
R_i * t_i == 1 (mod r_i)
ここで、R_i = r_1 * r_2 * ... * r_(i-1)です。
実装間でRSA秘密鍵を交換するための推奨構文は、付録A.1.2に示されています。これには両方の表現形式のコンポーネントが含まれています。実装の内部表現は異なる場合があります。
注記
注記1:ここでのCRT係数の定義と、セクション5のプリミティブでそれらを使用する式は、一般的にGarnerのアルゴリズム [GARNER]([HANDBOOK] のアルゴリズム14.71も参照)に従っています。ただし、PKCS #1 v2.0および以前のバージョンのRSA秘密鍵の表現との互換性のため、pとqの役割は他の素数と比較して逆になっています。したがって、最初のCRT係数qInvは、R_1 mod r_2(すなわちp mod q)の逆数としてではなく、q mod pの逆数として定義されています。
注記2:QuisquaterとCouvreur [FASTDEC] は、RSA操作にCRTを適用する利点を観察しました。