---
title: 確認画面の文言と、署名の対象は別のもの
lede: 利用者が読んだ確認の文言と、署名が結び付く内容は、同じものではありません。どこまでが署名に含まれ、どこからがプロダクトの責任かを分けて書きます。
shelf: essays
desk: design
edition: 1
source: W3C Web Authentication Level 3 | https://www.w3.org/TR/webauthn-3/ | 2026-10-10
source: W3C Secure Payment Confirmation | https://www.w3.org/TR/secure-payment-confirmation/ | 2026-10-10
---

## 二つの「内容」

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

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

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

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

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

## Clavis が署名に含めるもの

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

- プロダクトの名前
- 確認済みのホスト（戻り先）
- 操作名

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

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

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

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

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

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

## ブラウザが見せる場合

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

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

## 言い換えないこと

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

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

## 次の一手

- [パスキーの署名は、証拠として何になるか](/ja/notes/passkey-evidence)
- [署名の手順](https://docs.clavis.nexus/signature)：依頼の登録から結果の受け取りまで
