読み物の一覧 · 論考

確認画面の文言と、署名の対象は別のもの

利用者が読んだ確認の文言と、署名が結び付く内容は、同じものではありません。どこまでが署名に含まれ、どこからがプロダクトの責任かを分けて書きます。

二つの「内容」

利用者が署名するとき、画面には確認の文言が出ています。「送金先を変更する」「管理者の権限を与える」といった一行です。利用者はそれを読んで、Passkey で署名します。

けれども、Passkey が署名するのは、画面の文言そのものではありません。WebAuthn の署名は、サービスが渡したチャレンジを含むデータに対して行われます1。Clavis では、このチャレンジを、プロダクトが渡した操作の内容のハッシュ(message_digest)から作ります。

つまり、二つの「内容」があります。

  1. 利用者が読んだもの。確認の画面の一行
  2. 署名が結び付くもの。操作の内容のハッシュ

この二つが食い違うと、利用者は「少額の確認」だと思って署名し、実際には高額の送金が通る、ということが起こりえます。

Clavis が署名に含めるもの

Clavis は、確認の画面で見せた一行を、署名に結び付けています。結び付けているのは、次の三つです。

  • プロダクトの名前
  • 確認済みのホスト(戻り先)
  • 操作名

見せた一行をあとから差し替えた署名ファイルは、検証で合いません。利用者に何を見せたかは、あとから変えられません。

含めていないものもあります。画面の色やロゴ、文言の並べ方など、見た目そのものは署名に含まれません。署名が結び付くのは、見せた一行と、操作の内容のハッシュです。

プロダクトの責任になるところ

操作名と、ハッシュの元になる内容が正しく対応しているかは、Clavis には分かりません。「送金先の変更」という操作名で、別の操作の内容のハッシュを渡すこともできてしまいます。

この対応を保つのは、プロダクトの責任です。保つための方法は三つあります。

  1. 同じ規則から作る。確認の画面の文言と、ハッシュの元の内容を、同じデータから同じ規則で作ります。
  2. 確定の前に計算し直す。操作を確定する直前に、手元の内容からハッシュを計算し直し、署名のハッシュと一致することを確かめます。
  3. 内容を保存する。ハッシュの元の内容を、署名の記録と一緒に保存します。あとで何に署名したかを示すために要ります。

ブラウザが見せる場合

決済の分野には、ブラウザ自身が金額と受取人を見せ、その表示をそのまま署名に含める仕組みもあります2。サービスの画面を経ずに、ブラウザが見せたものに署名が結び付きます。

対応しているブラウザと決済の形はまだ限られています。多くの操作では、サービスの画面で見せたものと、署名の対象との対応を、サービスの側で保つことになります。

言い換えないこと

確認の画面の文言を「署名された内容」と呼ぶと、利用者にも相手方にも誤解を生みます。正確に言うと、こうなります。

  • 署名が結び付くのは、操作の内容のハッシュと、見せた一行です。
  • 見せた一行と操作の内容が正しく対応しているかは、プロダクトが保ちます。

次の一手

出典

  1. W3C Web Authentication Level 3 · 確かめた日 2026-10-10
  2. W3C Secure Payment Confirmation · 確かめた日 2026-10-10

奥付

版
第 1 版
公開
2026-10-12
署名
夏目.凛 · Passkey · 2026-10-12 05:05 JST · 署名ファイル · 原稿
刻印
sha256 LxQtfWFaOjnCbLCFt_L5KRVbRbZPw2rPxy9JCZqu3yg
発行
DeepDive, Inc.

署名が示すのは、この版に責任を持つ人と、署名のあとに原稿が改められていないことです。内容が正しいことは示しません。