RSA鍵ペア生成ガイド:公開鍵暗号と秘密鍵署名の完全な流れ
エンコード(更新: 2026年6月11日)
RSA鍵ペアとは
RSAは非対称暗号アルゴリズムで、一対の鍵を使用します:
| 鍵 | 用途 | 配布方法 |
|---|---|---|
| 公開鍵 (Public Key) | 暗号化 / 署名検証 | 公開して配布可能 |
| 秘密鍵 (Private Key) | 復号 / 署名 | 自分だけが保持 |
核心原則:公開鍵で暗号化したデータは秘密鍵でのみ復号でき、秘密鍵で署名したデータは公開鍵で検証できます。
鍵長の選択
| 長さ | セキュリティレベル | 用途 |
|---|---|---|
| 1024ビット | ❌ 安全ではない | レガシーシステム |
| 2048ビット | ✅ 基本的に安全 | 日常的な使用 |
| 3072ビット | ✅ より高い安全性 | 中程度の機密データ |
| 4096ビット | ✅ 高安全性 | 高機密データ / 長期鍵 |
4096ビット鍵の生成は2048ビットの4〜8倍の時間がかかります。暗号化/復号も遅くなるため、必要に応じて選択してください。
鍵ペアの生成:ステップバイステップ
ステップ1:RSA鍵ペアツールを開く
RSA鍵ペアツール にアクセスし、鍵長を選択(2048または4096を推奨)。
ステップ2:鍵ペアを生成
「鍵ペアを生成」をクリック。ツールが自動的に生成します:
- 公開鍵:
-----BEGIN PUBLIC KEY-----で始まるPEM形式テキスト - 秘密鍵:
-----BEGIN PRIVATE KEY-----で始まるPEM形式テキスト
ステップ3:鍵を保存
公開鍵 → あなたにデータを暗号化して送る相手に共有
秘密鍵 → 安全に保存、絶対に漏洩させない(Gitにコミットしない!)
PEM形式の説明
PEMはBase64エンコードされた鍵テキストです。主な形式:
-----BEGIN PUBLIC KEY----- ← PKCS#8 公開鍵
MIIBIjANBgkqhkiG9w0BAQEFAAOC...
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY----- ← PKCS#1 秘密鍵
MIIEpAIBAAKCAQEA0d7...
-----END RSA PRIVATE KEY-----
-----BEGIN PRIVATE KEY----- ← PKCS#8 秘密鍵
MIIEvgIBADANBgkqhkiG9w0BAQEF...
-----END PRIVATE KEY-----
PKCS#8は汎用形式、PKCS#1はRSA専用形式です。最近のシステムはPKCS#8を優先します。
公開鍵暗号化 + 秘密鍵復号
RSA暗号化/復号ツール を使用:
- 平文を入力欄に貼り付け
- 「公開鍵暗号化」を選択
- 相手の公開鍵を貼り付け
- 暗号化をクリックして暗号文を取得
- 相手は暗号文を受け取り、秘密鍵で復号
秘密鍵署名 + 公開鍵検証
署名は「このメッセージは本当に私が送ったものです」を証明します:
- RSA暗号化/復号ツール で「秘密鍵署名」を選択
- メッセージと秘密鍵を入力
- 署名値を生成
- 相手があなたの公開鍵で署名を検証し、改ざんがないことを確認
RSA vs AES:どちらを使うべきか
| シナリオ | 推奨 | 理由 |
|---|---|---|
| 大容量ファイルの暗号化 | AES | RSAは遅すぎる |
| 鍵交換 | RSA | 公開鍵でAES鍵を暗号化 |
| デジタル署名 | RSA | 非対称の特性に最適 |
| JWTトークン | RSA | サーバーが秘密鍵で署名、クライアントが公開鍵で検証 |
実務では組み合わせが一般的:RSAでAES鍵を伝送し、AESで実際のデータを暗号化(ハイブリッド暗号)。
よくある問題
| 問題 | 原因 | 解決策 |
|---|---|---|
| 復号失敗 | 鍵の不一致 | 公開鍵と秘密鍵が同じペアか確認 |
| データが長すぎるエラー | RSAには長さ制限がある | AESを使うかセグメントに分割 |
| 形式解析エラー | PEMヘッダ/フッタの欠落 | 完全にコピーしたか確認 |
| 生成が遅い | 4096ビット鍵 | 正常です。まず2048ビットを試してください |
まとめ
RSA鍵ペアは非対称暗号の基盤です。公開鍵暗号化と秘密鍵署名の流れをマスターし、鍵長のセキュリティ意味を理解することは、安全な開発に不可欠です。RSA鍵ペアツール と RSA暗号化/復号ツール で、ブラウザ内で全工程を完結できます。
#RSA#密钥对#非对称加密#公钥#私钥