キーペア生成器

概要

鍵ペアジェネレーターは、RSA・ED25519・PKCS#8・OpenSSHの公開鍵/秘密鍵ペアをブラウザ内で直接生成します。ページ読み込み時に自動的にペアが生成され、鍵のテキストボックスをクリックするとコピーできます。出力形式はBase64(PEM形式)または16進数から選べます。すべての生成はオフラインで完結し、ページを更新すると鍵は完全に破棄されます。

4種類の鍵タイプの選び方

RSA

  • すべてのプラットフォームと言語との互換性が最も広い
  • 標準的な本番環境には2048ビット
  • 高価値な資産や長期有効な鍵には4096ビット
  • 512/1024ビットは暗号学的に脆弱 — テスト専用

ED25519

  • モダンな楕円曲線アルゴリズム。鍵長は固定
  • RSA 3072ビットと同等のセキュリティだが、鍵はずっと短い
  • 生成・検証が速い
  • 互換性の制約がない新規プロジェクトの最善の選択

PKCS#8

  • 汎用の秘密鍵ラッパー形式(RSAアルゴリズム)
  • ほとんどの暗号化ライブラリとクロス言語ツールと互換性あり
  • 受信側がPKCS#8形式の秘密鍵を期待する場合に使用

OpenSSH

  • SSH専用の鍵形式
  • 生成された公開鍵をauthorized_keysに直接貼り付けられる
  • Linux/UnixサーバーへのパスワードレスSSH接続の設定に使用

Base64と16進数の出力の違い

**Base64(デフォルト)**は-----BEGIN ... KEY-----/-----END ... KEY-----デリミターを持つPEM形式で出力します。ほとんどのツールが期待する形式 — opensslコマンド、設定ファイル、ほとんどのSDKはこの形式を直接読み込みます。

16進数はヘッダーなしで鍵の生のバイトを16進数文字列として出力します。コードが生のバイトを直接読み込む場合(Node.jsのBuffer、GoのスライスなどPEM文字列ではなく[]byte)に使用します。

RSAのビット長と実際への影響

  • 512ビット — 現代のハードウェアで解読可能。開発デバッグ専用
  • 1024ビット — NISTが2013年以降非推奨。新規プロジェクトには使用しない
  • 2048ビット — 現在の本番標準。ほとんどのユースケースで安全
  • 4096ビット — より高いセキュリティマージン。10年以上有効であり続ける必要がある鍵にはコストに見合う価値がある

鍵タイプ別の典型的なユースケース

SSHサーバーログイン — OpenSSHを選択し、生成した公開鍵をサーバーの~/.ssh/authorized_keysに追記し、秘密鍵をローカルの~/.ssh/id_rsaとして保存する。

RS256によるJWT署名 — RSA 2048ビットBase64を選択。サーバー側でトークン署名に秘密鍵を使用し、公開鍵を検証サービスに配布する。

APIリクエストの署名 — ED25519が最適。鍵が短いためヘッダーサイズが小さくなり、署名・検証がRSAより高速。