Ed25519 署名検証ツール | 公開鍵・メッセージ・署名を貼って RFC 8032 EdDSA を検証
Ed25519 の公開鍵・メッセージ・署名を貼り付けると、ブラウザの Web Crypto API が RFC 8032 の EdDSA 検証を行い、その署名が公開鍵とメッセージに対して有効かどうかを判定します。hex・base64・base64url の 3 形式に対応し、JWT・SSH・ブロックチェーンなど異なるエコシステムの値をそのまま貼り込めます。
💡 このツールについて
Ed25519 は Edwards 曲線 (Curve25519 の Edwards 形式) 上の EdDSA で、公開鍵 32 バイト・署名 64 バイトという短さと検証の速さから、JWT の EdDSA アルゴリズム、OpenSSH の ssh-ed25519 鍵、Solana や Cosmos のトランザクション署名まで幅広く使われています。
困りごとはたいてい同じです。「サーバーが返した署名が本当に正しいのか」「鍵を base64 で受け取ったが、相手は hex で書いていた」「ライブラリのバージョン違いで検証が通らない」——こうした切り分けを、いちいち Node や Python のスクリプトを書かずに手元で確かめたい場面です。
このツールは公開鍵・メッセージ・署名の 3 つを貼るだけで、それぞれを Uint8Array にデコードし、長さ (公開鍵 32 バイト・署名 64 バイト) を検証したうえで crypto.subtle.verify を呼び出します。形式は欄ごとに hex / base64 / base64url を切り替えられるので、片方が hex・もう片方が base64 のような混在ケースもそのまま扱えます。鍵もメッセージも署名もすべてブラウザ内で処理され、サーバーに送信されません。
🧐 よくある質問
Q. 秘密鍵は必要ですか? いいえ。署名検証には公開鍵だけで足ります。このツールは秘密鍵を入力する欄を持たず、新しい署名を作る機能もありません。検証専用です。
Q. メッセージは「ハッシュ済み」を貼るべきですか? いいえ。Ed25519 (PureEdDSA) は署名・検証の内部でメッセージ全体をハッシュするため、署名されたときの「生のメッセージ」をそのまま貼ってください。事前にハッシュした値を貼ると Invalid になります。
Q. 公開鍵や署名を間違った形式で貼るとどうなりますか? 形式のデコードに失敗すると赤いエラー表示になり、長さが 32 / 64 バイトに満たない場合も警告が出ます。形式 (hex / base64 / base64url) を欄ごとに見直してください。
Q. ブラウザが Ed25519 に未対応と出ます。
Web Crypto の Ed25519 は Chrome 137+・Safari 17+・Firefox 130+ で利用できます。これより古い環境では crypto.subtle.importKey が失敗するため、未対応の旨を表示します。最新版のブラウザでお試しください。
Q. Ed448 や secp256k1 の署名も検証できますか? いいえ。本ツールは Ed25519 専用です。曲線が異なる署名は検証対象外です。
📚 豆知識
Ed25519 が広く採用された理由のひとつは「決定論的署名」です。ECDSA は署名ごとに乱数 (nonce) を必要とし、その乱数が偏ったり再利用されたりすると秘密鍵が漏れる事故が過去に何度も起きました。Ed25519 は乱数の代わりに秘密鍵とメッセージから署名値を導くため、同じ鍵とメッセージなら常に同じ署名になり、nonce 起因の事故を構造的に避けられます。
「25519」という数字は素数 2²⁵⁵ − 19 に由来し、Curve25519 の名前もここから来ています。公開鍵がわずか 32 バイトで収まるのは、この曲線が点を 1 つの座標 (と符号ビット) に圧縮して表現できるためで、SSH の鍵を 1 行に収められる手軽さの裏にはこうした数学的な工夫があります。