概要
RSA(Rivest-Shamir-Adleman)は、大きな整数の素因数分解の困難性を安全性の根拠とする公開鍵暗号アルゴリズムです。「暗号化」と「デジタル署名」で鍵の使用方向が逆になることが SC 試験の最頻出ポイントです。
仕組みと動作原理
鍵ペアの関係
| 鍵 | 公開・秘密 | 特徴 |
|---|---|---|
| 公開鍵 | 公開 | 誰でも入手可能 |
| 秘密鍵 | 秘密 | 鍵所有者だけが保管 |
公開鍵で暗号化 → 秘密鍵で復号(秘密鍵所有者だけが読める)
秘密鍵で署名 → 公開鍵で検証(誰でも署名を確認できる)
暗号化と署名の鍵の向き
【暗号化・復号】
送信者 → 受信者の公開鍵で暗号化 → 受信者の秘密鍵で復号
→ 目的:「受信者だけが読めること(機密性)」
【デジタル署名】
送信者 → 送信者の秘密鍵で署名 → 受信者が送信者の公開鍵で検証
→ 目的:「送信者の正当性・改ざん検知(認証・完全性)」
ハッシュとデジタル署名の組み合わせ
RSA で文書全体を暗号化すると処理が重いため、実際は以下の流れを使います。
1. 文書 → SHA-256 などでハッシュ値を生成
2. ハッシュ値を秘密鍵で暗号化 → これが「署名」
3. 受信者は文書を同じハッシュ関数でハッシュ化
4. 署名を公開鍵で復号して元のハッシュ値を取り出す
5. 両ハッシュ値が一致すれば「改ざんなし・正当な署名者」と確認できる
PKI(公開鍵基盤)
公開鍵が「本物かどうか」を保証するための仕組みです。
| 構成要素 | 役割 |
|---|---|
| CA(認証局) | デジタル証明書を発行・管理 |
| RA(登録局) | 証明書申請の受付・本人確認 |
| CRL(証明書失効リスト) | 失効した証明書の一覧 |
| OCSP | リアルタイムで証明書の有効性を確認するプロトコル |
証明書チェーン(信頼の連鎖)
ルートCA証明書(OS・ブラウザにプリインストール)
└── 中間CA証明書(ルートCAが署名)
└── サーバ証明書(中間CAが署名)
ルートCA は自己署名(自分で自分を署名)し、信頼のアンカーとなります。
CRL と OCSP の違い
| CRL | OCSP | |
|---|---|---|
| 方式 | 定期的に失効リストを配布 | リアルタイムで1証明書を問合せ |
| 鮮度 | 更新周期に依存 | リアルタイム |
| トラフィック | リスト全体をダウンロード | 軽量(1証明書分) |
| プライバシー | 問題なし | OCSPサーバに閲覧履歴が渡る |
SC試験での頻出ポイント
- 暗号化と署名で使う鍵の方向が逆:最重要。混同した選択肢が必ず出る
- CRL と OCSP の違いと使い分け:鮮度・トラフィック・プライバシーの観点
- 証明書の有効性検証手順:有効期限・署名・失効確認(CRL/OCSP)の3ステップ
- 楕円曲線暗号(ECDSA):RSA より短い鍵長で同等の安全性。TLS 1.3・FIDO2 で主流
- PKI の信頼モデル:階層型(ルートCA→中間CA)とクロス認証
よくある誤問・ひっかけパターン
誤り① 「デジタル署名は受信者の公開鍵で生成する」→ 誤。署名は送信者の秘密鍵で生成します。
誤り② 「デジタル署名で文書の機密性が保証される」→ 誤。署名が保証するのは「完全性」と「否認防止(認証)」です。機密性が必要なら暗号化を別途行います。
誤り③ 「証明書を持っていれば必ず安全な通信ができる」→ 誤。証明書の失効確認(CRL/OCSP)を行わないと、失効した証明書を使う攻撃(例: 鍵の漏洩後)に対して無防備です。
関連用語
- 共通鍵暗号(AES)と動作モード — TLS などでは RSA で鍵交換し AES で暗号化する組み合わせが多い
- TLS(Transport Layer Security) — RSA・ECDSA の証明書が TLS を支える
- SAML と SSO — SAML アサーションの署名にデジタル署名を使用
重要キーワード
| 用語 | 説明 |
|---|---|
| 公開鍵 | 広く公開できる鍵。暗号化と署名検証に使用 |
| 秘密鍵 | 鍵所有者だけが保管。復号と署名生成に使用 |
| デジタル署名 | 秘密鍵でハッシュ値を暗号化したもの。改ざん検知と認証に使用 |
| CA(認証局) | 公開鍵の正当性を証明するデジタル証明書を発行する機関 |
| CRL | 失効した証明書のシリアル番号リスト |
| OCSP | 証明書の有効性をリアルタイムに問い合わせるプロトコル |