みずほ銀行の本質的な問題はシステム設計
みずほ銀行で、3度目の大規模障害が発生したようです。問題の本質について私見を話したいと思います。
あくまで私見なので、つっこまないようにお願いします。
みずほ銀行ATM障害(2021年2月28日)の概要
2021年2月28日に発生したATM障害は、メディアやみずほ銀行の発表によると、概要は以下のとおり。
- ATMに吸い込まれたキャッシュカードや預金通帳が累計で5,244件
- 店舗内ATMの2,956台(55%)に影響
- 定期貯金の取引に関するデータ移行作業(45万件)、そのほかの取引(25万件)の取引がたまり、
システムの一部に負担が生じ、ATMが正常に稼働しない事態が発生 - 「不正なカードが使われたり、取引の途中でエラーが生じたりした際には、
(銀行の)元帳と照らしあわせて本人確認をした上でお返しする手続きになっている。
本来なら問い合わせ後に警備会社が駆けつけ、確認後にお返しできていたが、
対応できないくらいの量の障害が生じてしまった」 - みずほ銀行頭取の見解は、「運用上の問題」としている
もちろん、運用上の問題はあったと思います。影響のあったATMは2,955台であったのにATMに吸い込まれたのは5,244件・・・
ということは、センターの障害が解消していないのにATMを再稼働して、1台のATMで何回もカードや貯金通帳を吸い込んでしまったわけです。
ATM障害時の処理(対応)
みずほ銀行のATMは、取引の途中で元帳の管理センターとの通信で応答がないと、「カードや通帳を取込む」ようになっていたわけです。
例えば、利用者がATMにカードを入れて1万円をひきだし、お札がATMに引っかかったりした時、カードを排出してしまうと、元帳は1万円引かれているのに銀行に1万円が残る(利用者は1万円を受け取れていない)ことになります。
この時、店舗に常駐している前提の担当者が、以下の状態が一致している(整合性がとれている)かを確認し、「カード」と元帳が減額されていれば「1万円」を利用者に返却する手順になっています。
- 元帳(センタに確認)
- ATM内のお金
- 利用者の受け取り
みずほ銀行のATMは、「元帳と銀行内のお金」の整合性を担保するため、上記のような仕様になっていたわけです。
本質的な問題
以下は推測でかつ私見ですが、本質的な問題点は、
- 無人店舗に対応したシステム設計になっていない
ということだと思います。
「ATMとセンターの通信プロトコルの脆弱さ」を「運用でカバー」しているわけです。
ATMの通信プロトコルを改善するとしたら・・・
全国のATMとセンターのプログラム修正が必要になるため、費用面で現実的か否かはわかりませんが、わたしなら、少なくともこんな感じに設計すると思います。
ATMとセンターのやりとりは、2回から3回になりますが、以下のようにしたらどうでしょうか?
- ATMからセンターに引き落とし指示
- センターで残高を照会し仮引落し
- センターからATMに引き落とし可能を通知
- ATMで現金とカードを排出
- ATMからセンターに引き落とし完了を通知
- センターで元帳を更新
今回の障害では、以下のような動作になります。
- ATMからセンターに引き落とし指示
- センターで残高を照会し仮引落し
- センターからATMに引き落とし可能を通知(これがATMに届かず)
- ATMはタイムアウトになり、取引き異常で「カードを返却」
- センターは、引落し完了通知の受信処理がタイムアウトになり、仮引落しをキャンセル(元帳は非更新)
まとめ
センターは十分なリソースがあり、冗長構成であるため障害は発生しない。という前提で設計されていると思います。
原発事故の対応もそうですが、「障害は発生しない」という暗黙の前提で設計してしまうため、「大トラブル」になるわけです。
そもそも、「元帳と銀行内のお金」の整合性を担保しなければいけない。という前提だって、必要なのでしょうか?
今ではどうかわかりませんが、アメリカの銀行では担保されていませんでした。
ATMはオフラインでセンターにつながっておらず、元帳のお金のあるなしにかかわらず、一定金額までお金はATMで払い出し、
後日に元帳を更新した時に不足したら貸付にして、請求書をまわし、利息をとるわけです。
システムを単純にしてシステムコストを下げ、リスクは利息や保険でとる。という考え方はとても合理的です。
日本の金融システムや金融監督庁も考え方を進化させていくべきと思います。