novtanの日常

ネタです。ネタなんです。マジレスする人は撲滅すべき敵です。だからネタだってば!

Web口振受付と即時口振に頼らなければならない新型決済スキームの問題

ドコモ口座の問題はシステム的な部分でいうと「本人確認と認証が甘い」に尽きるんですが、それ以前の問題として、このビジネススキームが何を根拠に成立していて、その根拠に基づいた対応が行われていたか、ということがありますね。なにぶん、それなりに新しいことをやろうとしている話なので必ずしも法整備は十分ではないし、抜け道というか、既存の制度だったらこうすれば使えるよね、というスキームをひねり出して実施していくわけです。なので、根本的な法律や制度の問題とは別に、2者間で成立させるための個別の契約が必ずあるわけです。それがどのくらい今回の事態を想定していたかは定かではないですけれども、少なくともここについて一般に開示されることはないでしょう。でも、そこがキモってのがこの話の難しいところ。
とはいえ、銀行との資金移動に持っていく部分については口振契約ということは明らかですので、そのへんをちょっと考察してみましょう。
例によって僕はシステム屋だし、銀行のすべてをやっているわけではないので、推測、公開された仕様書、過去の特定の銀行での経験に基づいています。用語等は厳密に言うと違うこともあると思いますが、理解の上では問題ないと思います。根本的な部分で違っているのがあったらごめんね(妥当な根拠付きのご指摘あれば修正します)。

口座振替とはなんぞや

もう一度おさらいですが、従来の口座振替ってのはどういうものかというと、収納機関、銀行、利用者の三者が利用者が銀行に開設している口座から「収納機関の指示」で資金を移動することを銀行に認める契約です(実際にはそれぞれの契約についてはもう少し厳密な話ですが)。
これはどういうことかというと、利用者が収納機関に対して「これだけ口振してもいいよ」と指示を出すものではないってことですね。例えば、ドコモの電話料金を口振契約していたら、「一定額」ではなく、月に発生した利用料を引き落とすわけじゃないですか。仮に収納機関のシステムがおかしなことになって、利用者に対して別の人の利用料を含めて請求しちゃいました、ってなっても問題なく口振は実施されます。もちろん、後で間違いへの対応は行われますけど、こういったことを確認するという点では収納機関と利用者の間では「ご利用明細」等であなたにこれだけ請求しますよってのを通知するわけですね。そこでおかしい事になっていたら気付ける。もっとも、最近はウェブ明細になってチェックが甘くなった(そもそも見なくなった)人は結構いるのではないかと…(そういう点で、明細を集積して一覧表示できるサービスにはニーズがあるんですけど)

以下のリンクは全銀協の口振受付業務に対する基本方針みたいなやつです。
https://www.zenginkyo.or.jp/fileadmin/res/abstract/efforts/smooth/kijun1.pdf

なお、このフォーマットは収納機関ごとに違っていて良いので、この紙を一律OCRで読み込むわけにも行かず、手書きの文字もちゃんと読めないこともあるので、タイプ入力せざるを得ず、銀行の事務コストとしては結構な額を占めています(なのでこれをAIのOCRで処理しようって話が一時期めっちゃ流行った…そしてまあまあ撃沈した…)。それを減らしたい、というのがこの後の申込方法の話に繋がります。

後ろの方に、依頼書とか申込書がありますよね。利用者は自分の引き落としたい口座のある銀行に対して、この収納企業に対して口振やっていいよ(すなわち、収納企業を信用しますよ)という申請をし、収納機関へは口振で料金の請求していいよ(あなた方を信用しますよ)、って申請するわけですね。当然ですけど、その信用ってのはご利用明細等で自分の支払う金額が把握できることを一つの根拠としています。多額の引落をされた上でドロンなんてしないよねと。つまり、「信用信頼に足る企業」であることを認めているわけです。あれ、意外と怖いですね。でも、これは銀行としてもどこの馬の骨かわからん企業は口振契約なんてさせないし、月次の引落であればいきなり取扱高が上がったデータが来たらなにかしらは確認するでしょう。実際にみなさんが口振契約するのはインフラ(公共料金系)、クレカ、保険、その他継続的に払い続ける会費等でしょうね。よくある話として、クレカで会費を払うのと口振するのどっちがいいってところですが、まあ契約のことだけ考えても、その後のリスクを考えても、クレカのほうが保証されるスピード感が早そうではあります。
で、割とみんな知らないんですが、この口振契約って無期限なんですよね…

口座振替の申込

一番よく見かけるやつはクレジットカードの申込みに一体になっている口座引落の申し込み欄ですね。これはクレカ会社経由で銀行に回ります。もちろん、上記のとおり、個別の紙だったりもします。ただ、これは事務コストもかかるしタイムラグもでる。できるだけ早く使いたい、という話になると面倒極まりないですよね。なので、こういうサービスがあります。
solution.cafis.jp

出ましたCAFIS!…はどうでもよいとして、例えばデパートの店頭でクレカ申し込むときにキャッシュカード持ってますか?ってやってピッとされるやつってこれです。申込書の代わりにこれで連携できちゃうんですねえ。凄いですねえ。ちゃんと説明受けたことあります?僕はないです。
あと、こういうのもあります。
www.jampa.gr.jp

いずれにしても、収納機関側でちゃんとサービスの利用者と契約を結んだ上で実施するものですよねこれは(まあ、契約するタイミングで、という点ではまだ契約前だったりはしますが本人確認はしているでしょう)。

さて、事務コストの問題やリードタイムの問題を解決するためにはこれらのまあまあ大掛かり(=コストの掛かる)仕組み以外にも何かがいりそうですね。特に、なんとかPayの台頭によって彼らが「チャージ」を実現するために一般的に選択されたのが口振スキームなんですね。これは後で説明するとして、つまり、なんとかPayを使うのに紙の申込みで2週間とかかけるのはナンセンスだし、かと言って手数料安いのが売りのなんとかPayがCAFISだMPNだとコストも時間(接続するテストだけでも数ヶ月準備が必要)もかかるシステムに乗り合うのは現実的ではないです。
(今回の事件、この話を踏まえると、そういうレベルで「ちゃんとしている」はずの収納機関がちゃんとしてなかったという結構な重大事ではないでしょうか)

というわけで、急速に流行ったのが「Web口振受付」です。つまり、収納機関のユーザーが(ここが結構ポイント)、「収納機関のサイトから連携して使える」銀行側のWebサイトで本人確認を実施した上で口振契約を結ぶ、という仕組みですね。話だけでいうと、上記の「キャッシュカードぴってする」のと変わりないですが、I/FがWebであることと、利用者がWebサイトで入力するデータだけ(つまりキャッシュカードの実物は不要)というところが特徴ですね。ところで、インターネットバンキングのログインというのはその後資金移動の取引ができることもあり、本人を認証することを重大なものとして取り扱っていて、かつ、ログインできてしまえば本人であるということ前提に住所変更等の重要な取引も実施できるようになっています。もっとも、資金移動の際に第2認証が必要、等の仕組みも入っていますけどね。

じゃあ、このWeb口振受付の本人確認(認証)ってどうなの?これが今回の問題ですね。なお、本人確認と認証の話がまあまあごっちゃになっていますが、本人確認ってのは「収納機関や銀行が自身のユーザーの身元を何らかの手段で確認していること」であり、身分証明書等で裏を取っているよね、という話です。認証は指定されたユーザーが本当にユーザー自身であることを確認すること、と言って良いでしょう。ユーザー認証ができちゃった時点で「その人」であることを認めてしまうわけですからここが甘いってのはまずダメなんですよね。ただ、普通に考えると収納機関側でも本人確認しているからこそ、ここにやってくるわけなので、仮に不正な利用がされたとしてもすぐバレる、というのが信頼ベースのシステムの依拠する部分でもあります。でも認証が甘いのはダメだ…

チャージの仕組みと口振契約

そもそも、なんでなんとかPayのチャージに口振契約が必要なんでしょうか。口振契約は「収納機関の指示に基づいて利用者の口座から金を動かす」契約です。でもチャージってユーザーが自分の意思でするんじゃないの?っていうとそうなんですが、システム的には「ユーザーが収納機関にチャージの指示を出したら収納機関がそれを受けて銀行に資金移動の指示を出す」ということになります。だからこそ、口振契約が必要だし、逆に言うと「口振契約で実現できる」ということです。口振契約で実現できるということは、新たな契約スキームを作らなくても良いし、この範囲内であれば法制度も確立されていて簡単なわけですね。それ以外の手段を考えると例えば証券会社の入金で使うデビットの仕組みみたいなのはありますが、これは利用者が証券会社のサイトから遷移するインターネットバンキングにログインして取引パスワード認証して云々と何手もかかるし個社対応もいる話になるのでなかなかすぐには難しいってなりますからね。

それに比べると、口振契約であれば収納機関の指示で好きなだけ(は語弊があるかもしれませんが)資金移動できますからね。(もっとも、最後の最後、なんの手段で資金移動するか、がちょっとハードルにはなります)

ということを考えると、収納機関側で「口座連携できた」だけでその人の指示を無条件に受け付けてるのってまずいと思いません?思いますよね?そもそも金融機関から返ってくるのは「この口座が本人確認を終わらせている口座であるかどうか」であり、Web口振受付で認証されたから「収納機関側で登録されたユーザーがその口座の本人であるかどうかを確認できた」とするのはちょっと乱暴じゃないかと思いませんか?だって、収納機関側は依然として「本人は何者かわからないがその口座の持ち主らしい」ということしか情報が伝わってないわけじゃないですか。これ、収納機関として本人確認なんてしていませんよね?

というのは、今回のドコモ口座問題の話であって、通常は収納機関側でユーザー登録をする際に本人確認しますからね。

Web口振受付に頼らない仕組みの構築を急ぎたい

照会系の取引については金融庁の指示もあってこの2年で整備が進んでほぼすべての金融機関がAPI連携できるようになりましたけど、決済系のAPIはまだまだです。背景にはやっぱりそれを利用させることについて預金者とどういう契約をどういう形で結ぶかが問題でありやっぱり口振契約かなって話にもなっています。ただ、手続き系APIの整備が進むことでそちらをI/Fとするのが前提になっていくと思います。が、今のWeb口振受付の最大のメリットは「インバン契約が要らない」ということになるので、そこまで代替するのはすぐには難しいかもしれません。その点、公的個人認証サービスとかがもうちょっとまともに動いていくことで本人確認のユーザー側のハードルを下げれるのであれば、随分問題が減ってくるんではないかと思うんですけどね。

続き的なやつ

novtan.hatenablog.com

続々連携がストップしているドコモ口座とWeb口振受付の問題について

詳細不明なところもありますのでなんとも言えないんだけど、外部から見える範囲でわかる問題点について解説してみます。詳細を調べたら問題なかったり、中の人だけが知っている仕様によってクリアされている問題もあるかもしれません。
事実誤認があれば訂正しますのでよろしく。

そもそもドコモ口座って?

ドコモユーザーならおなじみ、それ以外でも使えるアカウントサービスである「dアカウント」に紐づけてキャッシュレス決済などで使用できる電子マネー(だよね)のことです。
dアカウントは元々はドコモ契約者向けのアカウントサービスだったんですが、スマホを起点としたサービスを提供するに当たり、汎用的なアカウントサービス(ID提供サービスとも言えます)にするためにドコモの回線契約とのつながりを限定的にしたものです。GoogleアカウントやFacebookアカウントでのログインと同様、dアカウントでのログインができるようになり、dポイントも使えるようになるので便利ですね。
ドコモの回線契約をしていると本人確認レベルが格段に上がります。でも、契約してないとそもそもGoogleアカウントで登録ができたりとか、誰だかわからないアカウントになります。

ドコモ口座はいわゆる出金できないポイントサービスから出金も可能になる資金移動業に移行するに当たり、本人確認レベルを上げているはずなんですが、本人確認を「銀行口座を登録」することに依存しています。画面の項目とかを見る限り、「dアカウント側で本人確認していない」口座名義人(カナ)くらいしか銀行へのサイト移動時の連携項目がありません(遷移時のリクエストの中身までは見ていないのでもっと何かあるかもしれないけど、何を連携する、というのが出ないのも不自然なので業務的なデータはないかも)。だから、連携する先の口座の名義を適当に(すでに知り得ている口座名義で)dアカウントに登録していれば、第1段階はクリアしていると思われます。この時点で結構やばいね。

で、本人確認という名前の銀行登録が完了すると、チャージができるようになりますが、そのときに「銀行側での認証」は不要です(何故不要なのかは後で説明)。

また、出金は、登録した口座への出金も可能ですが、どうやら(やったことないのでアレだが)「セブン銀行ATMからの直接の出金」が可能です。これがちょっとヤバい気のするポイント…

銀行で登録するのは一体何なの?問題点は?

銀行口座の登録っていうのはそもそも何なんでしょうか。登録って何よ。これはですね、他のなんとかPayとかでもやっていることなんですが、ようは、「資金移動業者からの依頼でユーザーの口座からお金を資金移動業者に移動する」許可を与えているものになりますね。え、そんなことしてんのって思うかもしれませんが、みなさんこれは普通に色んなものでやっていますね。すなわち「口座振替契約」をしています。口座振替ってのは収納機関と呼ばれるサービス提供先(例えば、クレジットカード会社やスマホのキャリア、公共料金などいわゆる「口座引落」で支払いを登録するもの)が申し出た金額で口座からお金を自動で引き落とすサービスのことですね。引落先口座として登録するときに口振契約をしていることになります。これは、収納機関、金融機関、口座保有者の3者間の契約になりますので、例えばドコモで携帯を契約するときに申し込んだ情報はその時に記載した銀行に回っていて口振契約がされます(ということに同意します、みたいな文言が書いてあるはずです)。

で、この紙ベース(紙ですよ)の手続きのリアルタイム性がないことやめんどくさいことを特になんとかPayとかだとやってらんないので、デビットカードのインターフェースなど(悪名高きCAFISとかです)を使って銀行側と連携して最初の確認オッケーとかにするのは紙ベースでもやってるんですがそれもめんどくさいからもう直接銀行のサイトから申し込ませちゃおうぜってのがWeb口振受付。これが何年か前に一斉に流行ってほぼすべての銀行が対応してます(例外あり)。今回も、ことの性質上、これを使っているはずです。つまり、今回問題になっている銀行については他のなんとかPayでも勝手に登録、チャージの脆弱性がある可能性があります。ただし、連携元の本人確認レベルがこんなに低いのはそんなにないかも。

で、Web口振受付をするにあたって、銀行サイト側で本人確認をする必要がありますが、これは報道されているように、「口座番号+キャッシュカード暗証番号+α」という、わりと弱めの認証になっている銀行があります(特に+αの部分が生年月日みたいな公開情報に近いものを使っているところ。最悪、+α自体がない)。これ、収納機関側の言い値の決済をできるようにする仕組みなんだからそんなんでよいの?という話なんですが、一般的に銀行と口振受付契約をする収納機関は「本人確認がなされている人が連携されてくる」ことが信頼ベースで担保されていることが前提になっているはずなので、まさかこのWeb口振受付そのものが本人確認の手段になっているって思って作ってないと思いますよ。
とはいえ、資金移動する取引の登録として例えばインターネットバンキングの第2認証やワンタイムパスワードなどが不要というのはいまどきちょっと弱めです。もっとも、先に述べたとおり、普通の収納機関は例えば免許証とかで既にに本人確認していないとこんなところまでやってこないんじゃないでしょうか。なんとかPayとかは違うのかな?とか思うけど。

ってここまで言うとなんとなくわかってきたと思いますが、これは銀行側の認証が甘い、という問題は2次的なものであり、ドコモから連携するときの信頼レベルが低い、ということに問題の本質があると思います(じゃないと、その銀行においてはWeb口振受付の仕組みそのものが全部アウト…の可能性もありますけど…)。銀行の一番の落ち度は「信頼できない収納機関からの受付を許容している」というところが最大でしょう(とはいえ、ドコモがそんなアホな連携してくるとは銀行も思いませんよね?)。

ドコモ側に問題はあるの?

ありますよね。随分他人事みたいなアナウンス・報道がなされていますが、オメーのサービスの本人確認といういちばん大事なところを外部に依存してんじゃねーよってことで。しかも、追跡の難しくなるATMでの直接出金サービスを提供していますよね。こんなの狙ってくれって言っているようなもんじゃないですか…資金移動業者としての適格性あるシステムなのこれ?
dアカウントというサービス自体は便利で良いし、回線契約をしていると本人確認のレベルが上げられるので、認証サービスとして「回線契約をしている人に限って」であれば色々保証される部分もあるので、認証サービスを利用するシステム側も使い勝手がよいとは思うんですが、キャリアをまたがったサービスとして手を広げようとしているところでの勇み足ですよねこれ。

まあ、報道によるとドコモ側も本人確認が甘いってのを認め始めているようなところもありますので、はよなんとかしてくれって感じですね(だって当該の銀行口座持ってるだけでドコモと関係ない人もリスクあるわけでさ…)

ブクマ受けて少々追記

収納機関は悪くないのでは?

口振受付のI/Fは広くインターネットに公開されているとはいえ(ブラウザで連携する仕様なので)、収納機関と金融機関の契約がなされていることをベースに受付けるわけですので、なんでも改ざんで通っちゃうわけでもないし、それなりの契約をしているはずです。
なので、それをもって収納機関に責任がないというのは間違い(もっとも、ドコモと各行の契約がどうなっているかは知りませんよ)。

犯収法の規定では口座の確認で代替できるはず

これは勉強中なのでなんとも言えないけど、

ただし、取引の相手方が当該各号に規定する取引時確認若しくは相当する確認に係る顧客等若しくは代表者等になりすましている疑いがある取引、当該取引時確認若しくは相当する確認が行われた際に当該取引時確認若しくは相当する確認に係る事項を偽っていた疑いがある顧客等若しくは代表者等(その代表者等が当該事項を偽っていた疑いがある顧客等又は代表者等を含む。)との間における取引、疑わしい取引又は同種の取引の態様と著しく異なる態様で行われる取引を行う場合は、この限りでない。

https://elaws.e-gov.go.jp/search/elawsSearch/elaws_search/lsg0500/detail?lawId=420M60000f5a001#121

とありますので、やっぱり言えないかな。
あと、この条項が「決済」について述べているのですが、今回のスキームでは決済における認証はドコモ側ですよね(あくまで口振受付時だけ、銀行側で認証する)。ちょっとどう解釈していいのかすぐ判断できない。
この辺の解釈はさすがに銀行の法務レベルじゃないとぱぱっと答えは出ないと思います。多分、このスキームの実施に際して個別に契約する時点でこの辺の解釈は詰めているはずです。

ATMでの払い出しはドコモの回線契約しているアカウントだけらしい

そうなんだ。であればちょっとだけ問題のリスクが減りますね。捨て回線とかなければ…
→やっぱ誰でもできるようです。狙われる必然性がここに

ちなみに

銀行側の認証が甘々なのを擁護しているわけではないので念の為。

もうちょい追記~銀行側の問題について

これは既にいろいろなところで言われているけれども、「キャッシュカード暗証番号」というのは物理的なカードとのセットで使われるからセキュリティー的に成立しているところがあるわけですね。
ところが、ここ最近、Fintech絡みの話でWeb系の認証についてもちょくちょく使われることが増えてきています。僕の知る限り、LINEで残高照会のやつでそうなっててビビった。

それだけじゃなくて、某ASPで提供しているインターネットバンキングが口座と暗証番号でログインできたりとか、なぜかこの件で好感度が上がった?らしい三井住友銀行のSMBCダイレクトとかも利用開始手続きしていない人は~のところでキャッシュカード暗証番号入れさせようとしているよね。
なので、キャッシュカード暗証番号を「最後の砦」にするのはWebではダメだし、それ以外の情報で本人しか知り得ない情報ってのは結構少ないのです。まあまああるパターンでかつ他人が知りづらいものは現在残高(それぱっと見れるなら残高照会サービスに登録しようと思わんわ)、通帳最終記帳残高(これはわかる)、通帳発行番号(これもわかる)、生年月日(テメーはダメだ)、等々ですね。OTPはそもそも銀行側になんらかの登録をしているのが前提ですよね。だから、Web口振受付自体をもっとハードル上げて、インターネットバンキング登録しているユーザーだけに限定するとか、そういう風にしないとセキュリティー強度は上げづらいんですよね。それやれって話ですけど。
銀行も、口座の開設の方の本人確認は犯罪収益移転防止法のおかげでレベルアップを図っているんですが、少なくとも今回のパターンがザルでは意味がありません。そういう点では、銀行側の問題も相当なものではあります。かといって、利便性を考えると限界もありますね。利便性クソくらえな事象な気もしますが。

更に追記してみる~銀行ごとに認証の仕様が違うのはなぜか

これは単純な話で、ドコモから銀行のサイトに遷移してそちらで認証をするから、銀行の好きな仕様にできますってこと。インターネットバンキングのログインをさせても良いし、口座番号+αの簡易認証をしてもよい。重要なのは、確実に本人だと言える(確実、は100点は無理なので99.9点のイメージね)認証を行っているかどうか。繰り返しになりますが、キャッシュカードの物理カードと暗証番号のセットとは違い、口座番号と暗証番号は知っていれば入力可能なので、それをもって本人とするのはかなり甘い。
で、地銀はたいてい
www.chigin-cns.co.jp
これを使っていると思うんですが、(ここからは推測ですが)入力項目については銀行が任意で設定できるはずです。で、それを銀行ホストに連携してくる。設定については項目数の制限があるかもしれない。だから、銀行ごとにまちまちなのは、銀行としてホスト(勘定系か、専用システムかはしらん)側で使う項目が違うからでしょう。ぶっちゃけ、ここについては各銀行がこのシステムを作ったときの事情が大きく反映されていると思います。意識の問題もあるかもしれない。でもせめて生年月日はまずくね?ってのは思ってほしかった。まあ、地銀CNSのシステムもしょっぱいよね。

続き

今回の問題の背景みたいなものを書きました
novtan.hatenablog.com

個人に課せられる「社会的責任」なんて「裸で出歩いてはいけません」程度の言葉だよね

例えば、殺人願望(これ願望って言うけど本当にやりたい、ということではないのがほとんどだよね。だから戦争ゲームとかの疑似体験で満足したりする)を持っている人が「隣に住んでる3才児を殺したくてたまんねー!!」と叫んだらそりゃ通報されますよね。それだけの話だと思うんですよ。突如流行りだした「社会的責任」という言葉を、責任を求める側も、求められる側も、自分の考える最大限の枠に広げて解釈しているから喧嘩になる。実際にはどっちの側の人もいやそこまでじゃないよねって考えている人もいるけど、最前線で喧嘩している人たちはそりゃMAXで戦ってるからおかしいんだよね。

こういう言葉が意味する詳細な内容が合意されていないものをベースに論争をするのって非常にバカらしいけど、逆に言うと、言葉の定義を作っていくための議論に昇華できるのであればもっとやってほしいんだよね。でも、それはたいていうまく行かない。最前線の人ほど自分の解釈を認めさせることに固執しがちだから。だったら最初からこんな汎用的な解釈のできる言葉を使って戦うべきじゃないんだと思う。今回の場合は、「社会的責任」を負わされそうになっている側がこの言葉に乗っからないようにしたほうが良い。そんなに重たい言葉じゃないはずなのに、認められるべき自由より重いことを載せようとしているからね。