PASETOデコーダー
PASETOトークンを貼り付けて、バージョン・用途・ペイロードクレーム・フッター・署名を確認できます。デコード専用 — 鍵不要、データはブラウザから外に出ません。
このツールについて
PASETOデコーダーは、Platform-Agnostic SEcurity TOkens(PASETO)を構成要素ごとに分解し、完全な暗号検証フローを実行することなく中身を確認できるツールです。PASETOはJWTのより安全な代替として設計されました。ヘッダーでアルゴリズムを交渉するのではなく、バージョンと用途がトークン自体に焼き込まれており(例:v4.public)、JWT実装で繰り返し問題となってきたalg=noneやアルゴリズム取り違え攻撃というクラス全体を排除しています。
PASETOトークンは version.purpose.payload[.footer] という形式を取ります。version(v1〜v4)は使用する暗号スイートを固定します。purposeは local(対称鍵・暗号化)または public(公開鍵・署名)のいずれかです。payloadはBase64urlエンコードされたデータで、publicトークンの場合は読める署名済みJSON、localトークンの場合は対称鍵がないと復号できない暗号文になります。任意のfooterは認証はされますが暗号化はされず、鍵識別子(kid)のヒントを載せるのによく使われます。
このツールは検証ではなくデコードに集中しています。publicトークンではペイロードをBase64urlデコードし、末尾の署名(v2/v4のEd25519なら64バイトなど)を取り出します。localトークンでは復号を試みず、生の暗号文と認証タグを表示します。iss、sub、aud、exp、iat、nbf、jti、kidなどの標準クレームはツールチップで解説され、PASETOのISO-8601形式のexpクレームはライブの有効期限カウントダウンで表示されます。PASETOとJWTを行き来したい場合は、JWTデコーダーで後者を扱えます。鍵そのものを操作したい場合は暗号化プレイグラウンドもご利用ください。すべての処理は atob と標準Web APIを使用してクライアントサイドで完結し、トークンが外部に送信されることはありません。
使い方
- PASETOトークン(例:
v4.public.eyJzdWI...)を入力エリアに貼り付けます。 - ヘッダープレフィックスからバージョンと用途が自動検出され、トークンが3または4パート(ヘッダー、ペイロード、任意のフッター、抽出された署名/認証タグ)に分割されます。
publicトークンの場合、ペイロードJSONがクレームテーブルとして表示されます。expなどのクレーム名にカーソルを合わせると解説が表示されます。expクレーム(PASETOではJWTのUnix秒ではなくISO 8601)はライブカウントダウンで表示されます — 有効中は緑、期限切れは赤になります。- フッターがある場合は別セクションでデコード表示されます。
kidヒントは通常ここに格納されます。 - セクションごとのCopyボタンを押すか、Ctrl+Shift+Cでデコード結果全体をJSONとしてコピーできます。
- ページ下部のPASETOバージョン暗号方式表で、各バージョンが使用するアルゴリズムを確認できます。
PASETOガイド & リファレンス
よくある質問
PASETOとは何ですか?
PASETO(Platform-Agnostic SEcurity TOkens)はJWTのより安全な代替として設計されたトークン形式です。トークンヘッダーで使用アルゴリズムを交渉させるのではなく、バージョン(v1〜v4)に暗号スイートを焼き込みます。これによりJWTで繰り返し発生してきたalg=none攻撃やアルゴリズム取り違え攻撃のクラスを根本から排除しています。
PASETOとJWTはどう違いますか?
JWTはトークン自身がヘッダーでアルゴリズムを宣言できるため、複数の重大な脆弱性の原因となってきました。PASETOではバージョンごとにアルゴリズムが固定されています:v4.publicは常にEd25519、v4.localは常にXChaCha20+BLAKE2bです。さらにPASETOはexp/iat/nbfにUnix秒ではなくISO 8601タイムスタンプを使用し、認証はされるが暗号化されないフッターをサポートしています。
各PASETOバージョンの意味を教えてください。
v1(レガシー): localはAES-256-CTR + HMAC-SHA384、publicはRSA-PSS。v2(レガシー): localはXChaCha20-Poly1305、publicはEd25519。v3(NIST/FIPS適合): AES-256-CTR + HMAC-SHA384とECDSA P-384。v4(推奨される現代のデフォルト): XChaCha20 + BLAKE2bとEd25519。新規システムは原則v4を使い、NIST承認プリミティブが必要な場合のみv3を選択するのが推奨されます。
なぜデコード専用で、署名検証がないのですか?
検証には正しい公開鍵または対称鍵を読み込む必要があり、ここを誤ったまま動いてしまうことこそPASETOが防ごうとした失敗モードそのものです。誤解を招く部分的な検証機能を提供するよりも、このツールは構造・クレーム・メタデータを表示する「検査」に専念しています。実際の検証はpaseto-rs(Rust)、paseto.js(JavaScript)、php-pasetoなどの堅牢なライブラリをアプリケーションコード側で使用してください。
ここに貼り付けるトークンは安全ですか?
はい。このツールはatob()と標準Web APIを使用してすべてブラウザ内で動作し、トークン・ペイロード・フッターがネットワークに送信されたり保存されたりすることはありません。ただし、PASETOのpublicトークンは設計上ペイロードが暗号化されていないため、v*.publicトークンを貼り付けた相手は中身のクレームを読めることに注意してください。本番運用中のトークンは認証情報と同様に扱い、このツールを含めWebツールに貼り付けることは避けてください。
JWTではなくPASETOを使うべきなのはどんな時ですか?
発行側と検証側の両方を自分でコントロールでき、JWTで知られた落とし穴を避けたい新規システムにはPASETOが向いています。OAuth 2.0、OpenID Connect、その他JWTを必須とする標準規格と相互運用する必要がある場合、または取引先がJWTしか話さない場合はJWTを使う必要があります。エンドユーザー向けエッジではJWTを残しつつ、内部のサービス間トークンにはPASETO v4を採用するチームも多いです。
v*.localトークンのペイロードもここでデコードできますか?
いいえ。localトークンは対称鍵で暗号化されており、その鍵がない限りペイロードバイト列は解読不可能な暗号文のままです。このツールでは引き続きバージョン、用途、暗号文の長さ、フッター、認証タグの長さを表示するため、発行やルーティングの問題をデバッグするには通常それで十分です。