本文へスキップ
にゃんこツール

デジタル署名の作成・検証(RSA-PSS・ECDSA)

テキストにデジタル署名を付けたり、署名が正しいかを確認したりします。秘密鍵(PKCS#8のPEM)で署名し、公開鍵(SPKIのPEM)で検証します。処理はブラウザ標準のWeb Crypto APIで行い、鍵やメッセージがサーバーに送信されることはありません。鍵は キーペア生成 で作れます。RS256などJWTの署名は JWT生成 では扱わないため、RSA署名はこちらのRSA-PSSでお試しください(JWTのRS256はPKCS#1 v1.5方式で、RSA-PSSとは別物です)。

🔒 ブラウザ内で完結・入力データはサーバーに送信されません

使い方

  1. 「署名を作成」か「署名を検証」を選びます。
  2. 「アルゴリズム」と「ハッシュ」を選び、「メッセージ」を入力します。
  3. 署名するときは「秘密鍵(PKCS#8 PEM)」を貼り付けて「署名する」を押し、Base64の署名をコピーします。
  4. 検証するときは「公開鍵(SPKI PEM)」と「署名(Base64)」を貼り付けて「検証する」を押します。

注意事項

  • PEMの中身から鍵の種類は判別できないため、選んだアルゴリズムで読み込みます。合わない場合は読み込みエラーになります。
  • ECDSAの署名は、Web Cryptoのr||s連結形式(IEEE P1363)で出力・検証します。OpenSSLなどが出すDER形式の署名とは互換性がないため、DER形式の署名はそのままでは検証できません。
  • RSA-PSSのソルト長は、選んだハッシュのバイト数(SHA-256なら32)に固定しています。
  • 署名と検証で同じハッシュを選ばないと検証に失敗します。ECDSAは曲線に合わせたハッシュ(P-256はSHA-256、P-384はSHA-384、P-521はSHA-512)が既定です。
  • メッセージはUTF-8のバイト列として署名します。改行コードや末尾の空白が違うと別のメッセージになります。
  • 秘密鍵は他人に見せないでください。このツールは鍵をサーバーに送信・保存しませんが、本番用の重要な鍵は管理された環境で扱うことをおすすめします。
  • パスフレーズで暗号化されたPEM(ENCRYPTED PRIVATE KEY)やRSA PRIVATE KEY形式、Ed25519には対応していません。

用語解説

デジタル署名

秘密鍵の持ち主だけが作れ、公開鍵で誰でも検証できる印です。メッセージが改ざんされていないことと、署名者を確認できます。

RSA-PSS

RSAの署名方式の一つで、ランダムなソルトを加えるため署名のたびに値が変わります。従来のPKCS#1 v1.5(RS256)より新しい設計です。

ECDSA

楕円曲線を使う署名方式です。RSAより短い鍵で同等の強度を得られます。署名はrとsの2つの数値で、このツールでは連結して扱います。

PEM / SPKI / PKCS#8

PEMはBase64とヘッダ行で鍵を表すテキスト形式です。公開鍵はSPKI、秘密鍵はPKCS#8という構造で格納します。

よくある質問

JWTのRS256署名はこのツールで作れますか?

いいえ。JWTのRS256はRSASSA-PKCS1-v1_5方式で、このツールのRSA-PSSとは別の方式です。両者の署名は互換性がなく、相互に検証できません。

OpenSSLで作った署名を検証できますか?

ECDSAはOpenSSLが出すDER形式ではなく、Web Cryptoのr||s連結形式(IEEE P1363)を使います。そのため、DER形式の署名はそのままでは検証できません。RSA-PSSはソルト長をハッシュ長に合わせた署名なら、Base64にすれば検証できます。

「選んだアルゴリズムの鍵として読み込めません」と出ます。

PEMだけでは鍵の種類が分からないため、選んだアルゴリズムで読み込みます。RSA鍵にECDSAを選んだ場合や、P-256の鍵にP-384を選んだ場合などに起きます。鍵の種類と曲線を確認してください。

キーペア生成で作ったRSA鍵はそのまま使えますか?

はい。PKCS#8/SPKI形式の鍵は用途に依らず共通なので、このツールがRSA-PSSとして読み込みます。ECDSAの鍵もそのまま使えます。

RSA-PSSは同じメッセージでも署名が毎回変わるのはなぜですか?

RSA-PSSはランダムなソルトを加えて署名するためで、正常な動作です。毎回違う署名でも、検証はどれも成功します。

このページをシェア

↑↓ 選択 Enter 開く Esc 閉じる