SEO対策とセキュリティで企業をバックアップします。

ITエンジニアの技術力UPをお約束します。

雑学:2段階認証におけるSMSの遅延について考察

雑学:2段階認証におけるSMSの遅延について考察


最近弊社へのサービス問い合わせで某サービスの2段階認証を顧客アカウントでログインしないといけない場面があった。結果的にログインできなくてお客様が怒りだしそうになって話はクローズしましたが、以前から不思議に思っていた事ではありパスコードが合わなかったりSMSが届かなかったり、遅延して20分近く経ってから届くこともあり従来認識していたSMSに対する信頼性に疑問を感じていた。
私、実は過去にSMSの会社に居たので普通の方よりはスマホ事情詳しいのですが流石にもう18年位経っているので現在の状況は詳しくはわからない。さて話は戻るがSMSは元々メッセージのための仕組みではなくて携帯電話が現在どの地域で使われているかモバイルキャリアセンターにあるLR(ロケーションレジスター)が状態把握するためにSMSのパケットを送ってポーリング(定期チェック)するためのものだ。その隙間がかなり空いているのでメッセージを乗っけてしまえというのがSMSの始まりだ。



先に結論を言ってしまうと、二段階認証サービスは携帯事業者だけの仕組みではなくフロントエンドはインターネット側の事業者のシステムで受け付けている。だからフロントエンドでSMSの糞詰まりを起こすケースが多い。また海外にSMS発行センターがあったりするとSMSの遅延が生じる。昨今の格安SIMはSMSのリミッターがある。詳細は以降を引き続き読んでください。

SMSはガラケーの時代の初期は非常に使われることが多かったがキャリアメールが登場してからは利用が大幅に減りました。そのかわりMMSや別方式の送信方法が生まれバリエーションは増えたが決定打はスマホの登場だ。完全にインターネットの技術で送信できるためもはやSMSでのメッセージは使われなくなるだろうと思っていたが4,5年前からSMSゲートウェイサービスが増えて認証のワンタイムパスワード送信で送られる需要が急増した。



ここで、一旦話は前に戻すがSMSは携帯電話(スマホが)モバイルセンター側で位置を把握できている状態(電波が届く状態)ならほぼリアルタイムに送受信できる仕組みだ。故に最近の一部のサービスでSMSが遅延してしまうのは不思議とは思っていたところではあったが、問い合わせでの2段階認証のトラブルは今回改めてSMSゲートウェイサービスを調べるきっかけを作ってくれた。



現在2段階認証はメジャーどころのサービス(SNS、決済系、ショップ)では当たり前に普及している。その中の通知手段は色々選択できるがSMSを使った通知が一番多そうだ。実際に便利なのだがここ数ヶ月で頻繁に通知遅延を起こすようになってきたので不思議と思っていたがFBで疑問を投げたところ、運良く知り合いの社長がSMSゲートウェイサービスを提供していて原因を教えていただくことができた。



つまりSMSは基本リアルタイムで送受信できるのだが、インターネットサービスで使われている2段階認証のような通知サービスは通知トランザクションが沢山発生するため、SMSの一次受付のシステムがインターネット上のサービスしている会社側で用意されそこでパスコード生成とメッセージ生成を行い蓄積し携帯キャリアのSMSゲートウェイサービスに送信しているのだ。だから一時受付システムでの糞詰まりはよくおこるのだそうだ。

更にSMSゲートウェイサービスが日本にある場合、海外にある場合で更に状況が違ってくる。海外の場合複数のキャリアを跨いでリレーしながら交換機が配送するため遅延が生じてしまうのだ。たしか日本ではVodafoneが海外への電話通信の窓口になっているはずだ。国内でもモバイル交換機は1社のメーカではなく複数社の装置を使用しており、例えば西と東、九州みたいな分け方で違う装置を使っていたりする。危険分散とでも言うのかな。モバイル交換機の違いは大きいため異なる交換機同士で連携するのは完全ではない。おそらく発行できないで終わるSMSパケットもあるかもしれない。Amazonの場合はまさにSMSゲートウェイや一時システムが海外に有るため影響を受けやすい。更にキャリア間のSMS契約が容量で決まっているため、一定時間に受け付けられるSMS数はキャリア毎に決まっているそうだ。フリーSIMだとドコモ、au、ソフトバンクとMVNO業者が契約しておりその間で交わされている仕様やリミッターはベンダーによって様々だ。だからどのベンダーのSIMを使っているかで単位時間あたりのSMSを受け付ける契約状況が違ってくるのはうなずける話。フリーSIMは料金が固定で安いので当然絞りはあるのは間違いない



最後に二段階認証のパスコード発行は一時システムの待ち行列に入ると糞詰まりを起こすと、ユーザ側はついつい再送信をしてしまう。しかし吐き出される順番は大抵First in First Outで吐き出されるケースが多いため、古いパスコードが送られてくる可能性が高い。この状況だとサービス側の持っているコードとコードジェネレータが持っているのが同期取れていないと錯覚してしまう。届かないと思ったら、詰まっているSMSを一旦吐き出させて30分、1時間くらい間を空けて再開するのが良い。

タグ: , , , , ,