BANKING SECURITY / TRANSACTION AUTHORIZATION
トランザクション署名とは?ネットバンキングの振込先改ざんを防ぐ仕組み
ログインできたからといって、「いま送ろうとしている振込内容」が安全とは限りません。取引そのものを確認する技術を、家賃の振込を例に解説します。
1. ログインに成功していても、振込内容は変えられる?
毎月の家賃をネットバンキングで振り込む場面を想像してください。画面で「管理会社の口座」「80,000円」を入力し、普段どおり認証して送信します。ところがPCのブラウザ内で動作する不正なプログラムが、送信直前に振込先を攻撃者の口座へ置き換えていたらどうでしょう。
このように、ブラウザを介した操作・表示・送信内容に割り込む攻撃を MITB(Man-in-the-Browser) と呼びます。利用者が見た内容と、サーバが受け取った内容が一致しない可能性があります。もちろんMITB攻撃の挙動は実装によって異なり、必ずこの形を取るわけではありません。
利用者が振り込むつもりだった内容
宛先:管理会社の口座
金額:80,000円
改ざん後に送信される内容
宛先:攻撃者の口座
金額:80,000円
2. トランザクション署名は「誰か」ではなく「何をするか」を結び付ける
トランザクション署名は、振込先口座番号や振込金額などの取引情報に結び付いた認証値を生成し、その取引が承認した内容と一致するか検証する仕組みです。実装により、専用ハードウェアトークン、別端末の認証アプリなどが使われます。
通常のログイン用ワンタイムパスワードは、主として「この利用者がログインを試みているか」を確かめます。一方、取引内容を組み込んだ認証値は「この宛先・この金額の振込を承認したか」を確かめる役割を担います。
振込内容を入力
例:家賃80,000円を管理会社の口座へ送る
信頼できる別画面で照合
専用トークンなどで振込先・金額を確認する
取引内容に結び付いた認証値を生成
振込先と金額などを入力にした認証値を作る
サーバが検証
受信した取引内容と認証値の組合せを確かめる
一致した取引だけ承認
途中で振込先などが変われば検証に失敗する
例えば専用トークンに振込先口座番号を入力して認証値を生成したとします。サーバへ届く振込先が別口座に変えられていれば、その認証値は改ざん後の取引内容と整合しません。サーバが検証に失敗した取引を拒否することで、不正送金の成立を防ぎます。
3. 「署名」という名前だが、実装はひとつではない
ここでの「署名」は、必ずしも公開鍵暗号によるデジタル署名だけを意味しません。実装によっては、秘密情報と取引内容から生成するMAC(メッセージ認証コード)などの方式もあります。大切なのは、認証値が特定の取引情報に結び付いていることです。
何を認証対象に含めるかも重要です。振込先を含めず金額だけを確認していれば、振込先の差し替えを検出できない可能性があります。口座番号、金額、通貨、取引識別子など、サービスが必要とする情報を一貫した形式で結び付ける必要があります。
4. 操作ラボ:振込先が変えられたらどうなる?
元の振込内容で取引認証値を発行し、その後で送信される振込先や金額を変更してみましょう。通常のワンタイムパスワードとの違いも切り替えられます。
INTERACTIVE LAB
振込内容の改ざんをシミュレーション
実際の銀行や暗号システムには接続しません。数字はすべて架空の例で、表示する認証コードも暗号学的な署名ではない学習用の簡易値です。
① 利用者が意図した振込
ここを編集すると実験を最初からやり直します。
③ サーバへ届く振込内容
ここを変えると、途中でデータを書き換えられた状態を再現できます。
意図した振込との差:なし
※このラボは入力値の一致を使って考え方を再現しています。実運用では秘密鍵・鍵管理・暗号学的な認証値・有効期限・再利用防止・サーバ側の取引照合が必要です。
5. ログイン用OTPとトランザクション署名の違い
| 観点 | ログイン用OTP | 取引内容に結び付いた認証 |
|---|---|---|
| 主な対象 | ログイン操作 | 振込先・金額など |
| 振込先が変わった場合 | OTPだけでは検出できない | 対象情報に含めていれば検証失敗 |
| 利用者が確認するもの | 認証コードやログイン要求 | 承認する具体的な取引内容 |
なお、スマートフォンへ届く確認通知でも、実際の振込先・金額を表示し、利用者がそれを確かめて承認する設計なら取引内容をひも付ける効果が期待できます。「別端末だから安全」ではなく、別端末で何を確認しているかが重要です。
6. 現実のシステムで設計するときの注意点
- 信頼できる表示: 利用者が確認する振込先・金額は、侵害されたブラウザと独立した画面に表示する。
- 対象項目の網羅: 受取人口座、金額、通貨など重要な情報を認証値へ結び付ける。
- 再利用防止: 有効期限、取引ID、使い捨ての検証などを組み合わせ、古い認証値の再利用を防ぐ。
- サーバ側の厳密な照合: 検証した取引内容と、実際に実行する取引内容が一致していることを保証する。
- 利用者への注意喚起: 身に覚えのない振込先が表示されたら承認せず、公式窓口へ連絡する。
まとめ:ログインの認証だけでは振込内容の安全は保証されない
トランザクション署名の考え方は、「本人が操作したか」から「本人がこの具体的な取引を承認したか」へ確認対象を広げることです。ネットバンキングだけでなく、高リスクな設定変更や重要な承認フローにも通じる設計原則です。