✍️ デジタル署名デモ(ECDSA)

手順1: 鍵ペアを生成

ブラウザ標準のWeb Crypto APIを使い、ECDSA(楕円曲線デジタル署名アルゴリズム、P-256曲線)による鍵ペア生成・メッセージへの署名・署名の検証という一連の流れを実際に体験できるデモツールです。すべての処理はブラウザ内で完結し、秘密鍵が外部に送信されることはありません。

使い方

  1. 「鍵ペアを生成」ボタンを押して、公開鍵・秘密鍵のペアを生成します。
  2. 署名したいメッセージを入力し、「署名」ボタンを押します。
  3. 検証したいメッセージ(署名時と同じ、またはあえて変更したもの)を入力し、「検証」ボタンを押して結果を確認します。

計算の仕組み

デジタル署名は、メッセージを本人が作ったこと(真正性)と、途中で書き換えられていないこと(完全性)を確かめる仕組みです。このツールは、ブラウザのWeb Crypto APIを使って、ECDSA(楕円曲線デジタル署名アルゴリズム)の署名と検証を試せるデモです。 1. 鍵ペアの作成: P-256曲線で、秘密鍵と公開鍵のペアを作ります。 2. 署名: メッセージのSHA-256ハッシュを、秘密鍵で署名します。署名は、r と s という2つの32バイトの値をつなげた64バイト(16進数で128文字)です。 3. 検証: 公開鍵、メッセージ、署名を使って、署名が正しいかを確かめます。 署名できるのは秘密鍵を持つ人だけですが、検証は公開鍵があれば誰でもできます。メッセージを1文字でも変えると、検証は失敗します。

計算例

1. 「鍵を生成」で鍵ペアを作ります。 2. メッセージ「Hello, Heron Tools!」に署名すると、128文字の16進数の署名ができます。 3. 同じメッセージで検証すると「有効な署名」と表示されます。 4. 検証用のメッセージを「Hello, Heron Tools?」に変えて検証すると「無効な署名」になります。 ECDSAは署名のたびに乱数を使うため、同じメッセージに何度署名しても、署名の値は毎回変わります(どれも検証は通ります)。

使用上の注意

  • このツールの署名は、r と s をそのまま並べた形式(IEEE P1363形式)です。OpenSSLなどが使うDER形式とは形が違うため、そのままでは互換性がありません。
  • 鍵はページを開いている間だけメモリ上にあり、再読み込みすると消えます。
  • デジタル署名は、ソフトウェアの配布、電子契約、TLS証明書、マイナンバーカードの電子証明書などで使われています。

よくある質問

デジタル署名は何のために使われますか?

メッセージが確かに秘密鍵の所有者によって作成され、送信後に改ざんされていないことを、公開鍵だけで誰でも確認できるようにする仕組みです。ソフトウェアの配布やTLS証明書などで広く使われています。

検証時にメッセージを変えると何が起きますか?

署名時と異なるメッセージで検証すると「無効」と判定されます。これは、署名がメッセージの内容と数学的に結びついているため、内容が1文字でも変わると署名が一致しなくなるからです。実際に試して確認してみてください。

秘密鍵はどこかに保存されますか?

いいえ。鍵ペアはページを開いている間だけメモリ上に保持され、リロードすると消えます。外部に送信されることも保存されることもありません。