💩

色々言われているSMS OTPの需要

2023/02/27に公開

ritouです。

最近、SMS経由でOTPを送信する認証方式について色々言われています。

SMS Traffic Pumping Fraud

Twitterもやられたというやーつ。

https://support.twilio.com/hc/en-us/articles/8360406023067-SMS-Traffic-Pumping-Fraud

https://www.sopranodesign.com/sms-pumping-guide/

認証に限らず他の用途でもSMS送信を利用しているサービスにとっては頭の痛い問題。

SIMスワップ

https://piyolog.hatenadiary.jp/entry/2023/02/27/014257

  • SIM再発行時の対面KYCのところを突破されたらどうしようもない感
  • SMSだけに頼っているサービスならSMSをやられたから被害に遭う、それはそうだが...
    • この件は割とターゲットを絞って行われたお金持ち狙いの攻撃なのでは?とも思わなくない

こういう事案が発生しているので、SMSを使ってどこまでできていいのかという話、やられたらどうするかの想定、リスク受容について見直すべきという意見はごもっともです。
もっと簡単にeSIMが発行できるところがあるみたいな話もありますし、今回の例では悪い人が対面で偽造免許持っていく手間はかかるわけなので、これがどれぐらいの脅威なのかはまだ人によってばらつきがあるように感じるので整理されて欲しい気はしています。

日本国内なら安心?

https://twitter.com/ritou/status/1629980599682494469

おそらくNISTで非推奨うんぬんの話があったあたりかと思いますが、以前から「国内のキャリアならまぁ大丈夫」みたいに言われていたのは主に通信経路の部分だったのではないでしょうか。

  • SMSを奪ってしまおう : アプリの読み取り権限など
  • SIMごと奪ってしまおう : 上記の事案にも出てくるSIM再発行フロー

みたいなところは当然リスクとして考慮しておかなければならないものだったとは思います。
2段階認証で言うと、ハードウェアトークンの大体というか下位互換的な意味合いでソフトウェアなTOTPが最初に出てきて、大量登録対策として使われていたSMS OTPも使われるようになって...みたいな流れの中で悪いことする人もどこに注目するかは変わってきたと思います。
国内初の逮捕って言われるぐらいなので以前は実績もなかったでしょうし、今のような危ない!!!という認識になっていないのはしょうがないのかなと。

TOTP vs SMS OTP vs セキュリティキー、パスキー という比較"以外"の需要

上記のようないろんな話が出ている中で、主に所有の要素を利用する認証方式が比較され、その上で「SMSダメじゃん」みたいに言われることも増えてきました。

  • アプリへのPush通知の方がプラットフォームの仕組みや暗号化の面で優れている
  • TOTPは通信が発生しない
  • (自分も言ってますが)フィッシング耐性があるのはパスワードマネージャーが仲介したりWebOTPを全信頼したりセキュリティキー/パスキーを使う場合のみ

とかいくらでもSMS Disな意見は出てきます。
良い面はWebOTPぐらいしかないかも?

そんな比較しなくても、SMS単体で見た時に

  • 番号が変わるかもしれない
  • 遅れたり、届かないかもしれない
  • WiFiはあるけどキャリアの電波がない場所ってのが秋田田舎にはたまにある

みたいな既知の課題はあるわけで、今回のSIMスワップの脅威を考慮してもしなくても完璧もしくはそれに近い認証方式などとは決して言えないものだったでしょう。

それでもサービスがSMSを使いたくなるわけ というのは、認証機能以外のところにあるのではないでしょうか。

  • 古から引き継がれた業者による大量アカウント登録対策
  • 何度も登録、退会を繰り返すユーザーを把握する、リセマラ対策などの用途
  • みんながそこそこスマホを持っている時代の連絡先、通知先の確保

この辺りは認証方式の比較とは違う話になるので、単純にSMSやめて他のにするわと全切り替えする方向に舵を取りづらいのではないでしょうか。

SMSはダメだ、自サービスでは使えない...となった時に考えるべきこと

これを踏まえて、今後サービスが考えるべき点を整理しておきましょう。

  • emailより少しだけ重いKYC
  • 通知手段の確保 : アプリプッシュ

emailで登録可能 + わりとがっちりKYCの流れにできるならそれでもいいのかもですが、それもなかなか難しそうじゃないですか。これまでの経緯からKYCの手段もリスクも見えてきていると思うので、今までSMSが担ってきた比較的ライトなユースケースの代替も整理されると良さそうですね。

  • SMS番号を安全に扱えるIdPからのID連携による電話番号確認済み情報の伝達
    • フラグのみかもしれないし、各サービス単位の電話番号のハッシュ値などでもいいかもしれないし、そのまま番号を欲しがるかもしれないが、サービスのポリシーにより要求される

SMSが最新のものであるか、第3者がSIMを取得したりスマホの前で本人を縛りつけて居座っている時に適切に利用制限をかけられるかなどまで考えなければいけないルールや実現できるサービスがあれば、そこからID連携、いやIDまでいかなくても属性のみでいいので連携することでサービスは個々にSMSの確認をしていたところを代替可能になるかもしれません。

ではまた。

Discussion