SMSのワンタイムパスワード (OTP) 安全なのか？

# はじめに

皆さん、こんにちは。
[GetOTPというWeb APIを一発呼ぶだけでマルチチャネルのワンタイムパスワードを簡単にできちゃうAPIサービス](https://otp.dev/)を運営している[ラロカラボ](http://lalokalabs.co/)のイクバルです。

![Dangers for SMS OTP](https://otpblog.os.lalokalabs.ee/wp-content/uploads/2021/12/48413882051_b51ac67193_c.jpg)[^1]



[GetOTP](https://otp.dev/)の説明に聞いてくれる皆さんによく聞いてくるのは、「**SMSのOTPって、安全なの？**」

確かに、ネットで調べれば、SMSのOTPはハックされやすいから安全ではない、やめたほうがいいとか、というサイトをちらほら見かけます。と言いながら、同時に現在でも何かのアプリをインストールするときとか、新しいサービスにオンラインで登録するときでもSMSのOTPを認証方法として利用されていることも一般的。じゃ、実際どうなの？SMSのOTPを使ってもハックされやすいなの？

ちなみに、この記事は [Is SMS OTP secure](https://otp.dev/en/blog/262/is-sms-otp-secure/) の元記事にして書きます。

https://otp.dev/en/blog/262/is-sms-otp-secure/


## SMSのOTPは安全かどうかを回答する前に、、
SMS OTPを使用してお気に入りのサービスにオンラインでアクセスしている場合でも、ハッキングされる可能性のある一般的な例をいくつか見ていきましょう。

### お使いのスマホのマルウェア
これは間違いなく最も一般的なハッキングの形態で、成功率が最も高いと思います。攻撃者は、インターネットからダウンロードした悪意のあるアプリをスマートデバイスに感染させます。悪意のあるアプリには、SMSメッセージにアクセスし、インターネットに接続してそれらのメッセージを攻撃者のサーバーに送信させます。

これが、私たちの生活の中でスマートフォンが普及していることから、近年、詐欺や攻撃が爆発的に増加している最大の理由だと思います。

よく知らないアプリストアや会社からよく知らないアプリをダウンロードしたり、レビューがほとんどないアプリや、そもそも持つ必要がない権限を必要とするアプリ（たとえば、無料のゲームアプリの場合、SMSにアクセスすること必須とするアプリ）をダウンロードしないことで、これを防ぐことができます。

### SIMスワップ攻撃
これは、人的要因を標的とするソーシャルエンジニアリングによるハッキングで、より複雑な形式です。

攻撃者はあなたの携帯電話会社に電話をかけ、あなたの身元を偽装し、携帯電話会社にあなたの名前で別のSIMを再発行させます。 「新しい」SIMを使用すると、まったく別のデバイスで使用して、あなたの番号に送信されたSMSを受信できます。これが発生すると、自分のデバイスの接続が失われます。接続が失われることを予期していなかった場合、攻撃されていることを示す兆候です。

攻撃者が成功するためには、攻撃者はあなたの住所や氏名など、あなたについて何かを知っている必要があります。これは、これがおそらくあなた自身への標的型攻撃であり、多くの人々に影響を与える本格的な攻撃ではないことを意味します。

確かに、これはSMS OTP自体の問題ではなく、通信事業者自体の人間のプロセスの弱点です。運送業者は、小切手を追加し（実際の加入者に電話をかけて、二次番号または電子メールで確認する）、プロセス内の人的要素をできるだけ削除する（これらの小切手をできるだけ自動化する）ことで、これらの攻撃のリスクを減らすことができます。

日本では、あまり聞かないハッキングですが、他の国だとちらほら聞いています。

### 侵害されたSMSセンター
SMSを受信して携帯電話にルーティングする携帯電話会社自身が管理するSMSセンターが侵害された場合、攻撃者は明らかに送受信したものすべてにアクセスできます。

SMSセンターはどのように危険にさらされる可能性がありますか？ まあ、それは難しいですが、不可能ではありません。 キャリアの従業員をだますマルウェア攻撃、またはSMSセンターに侵入してデータを漏洩する悪党の従業員による完全な違法行為が思い浮かびます。

ほぼすべての法域の電話通信会社は、政府から与えられたライセンスを通じて運営されています。 これらのライセンスの条件に、通信事業者はセキュリティ基準を含む特定の運用基準を順守する必要があります。 自宅に機密データを保存する場合よりも、携帯通信会社に高いセキュリティ基準を期待できるはずですが。

### モバイルトラフィックの傍受
あなたが国の大統領、物議を醸す政治家、あるいは成功した麻薬密売人のように、特に重要または有名な人物である場合は、おめでとうございます。この特定の攻撃はあなたのためです。

攻撃者は基本的に、IMSIキャッチャーやRTL-SDR無線スキャナーなどのツールを使用して、携帯電話と空中のキャリア間のトラフィックを傍受しようとします。 これらのツールは比較的簡単に見つけて使用でき、法執行機関内で一般的ですが、攻撃者はターゲットに物理的に近づき、正しいトラフィックをリッスンする必要があります。 通りの脇に駐車されたマークのないバンで、刑事が犯罪者を捕まえるために通常行う杭打ちシーンを覚えていますか？ はい、それはあなたがこの方法で誰かを攻撃しようとしている場合に必要なものです。

### ほとんどの場合、それはあなたのSMSのOTPでないですが…
ただし、ほとんどの場合のハック、SMS自体ではありません。

中間者攻撃は、偽のサイトまたはインターネットアクセスポイントを設けることによってあなたを標的にします。これらのタイプの攻撃はデータを傍受し、偽のサイトにリダイレクトしてモバイルに送信された有効なSMSのOTPデータを入力させるか、または単にオンラインサービスへのSMSのOTPでログインしたデータを複製しようとします。

これらのタイプの攻撃は比較的簡単に実行でき、より一般的なタイプの攻撃にと思います。暗号化されたサイトにアクセスしていることを確認し（URLにhttpsが含まれているなど）、受信を予期していなかった電子メールやSMSからのリンクをクリックしないようにすることで、これらを回避できます。

最後に、古典的なブルートフォース攻撃があります。攻撃者は、標的になったWebサイトにOTPのさまざまな組み合わせを使用して数千回の試行を行い、そのうちの1つが有効なOTPに当たれば、ログインできてしまいます。これは私たちのできる範囲を超えていますが、Webサイト管理者は、レート制限によって自分自身をより適切に保護できます。[GetOTP](https://otp.dev/)には、Captchaを使用することでこの機能があり、Webサイト管理者がAPIを使用すると、かなり安全なSMSのOTPメカニズムを実装しようとする際の詳細を気にしなくできます。


# まとめ
![Two Factor Authentication](https://otpblog.os.lalokalabs.ee/wp-content/uploads/2021/08/40091252552_ae93b77269_o.png)[^2]

SMSのOTPの安全性は、受信デバイスの安全性に直接依存します。デバイスと同様に、OTPも物理的な攻撃に対して弱いです。攻撃者がデバイスに物理的にアクセスしできたら、もう話なりません。

SMSベースの2要素認証（2FA）は、通常のユーザー名とパスワードの組み合わせよりも優れていることを忘れないでください。何十億ものSMSメッセージが毎日送受信されており、その遍在性があることからSMSは一夜にして消えません。

そうは言っても、唯一の認証方法としてSMSのOTPを使用するだけでは十分ではありません。電子メール、音声、または強力なログイン/パスワードメカニズムと組み合わせる必要があります。ここでは通常のアドバイスが適用されます。アルファベット、数字、記号を使用して8文字を超えるランダムな文字で強力なパスワードを設定し、複数のWebサイトに同じパスワードを使用しないでください。

セキュリティについて話すとき、それは通常、次の2つのことに要約されます。
–「セキュリティ」に特効薬はありません。ドアに複数のロックをかけるなど、認証には複数の方法があります。
–それは常に利便性とセキュリティのトレードオフです。私たちの99％にとっては、知らないものをインストールしない、奇妙なリンクをクリックしないなどの通常の予防策と、適切なパスワード管理とSMSのOTPで十分です。もちろん、あなたが誰であり、何を保護しようとしているのかによって、これは間違いなく変わります。

結論として、SMS OTPは私たちのほとんどにとって「十分に安全」ですが、それを取り巻く他のすべての部分、特にSMSOTPを受信するデバイスも安全であるという条件があります。

# LaLoka Labs（ラロカラボ）とは
https://lalokalabs.co
LaLoka Labsは、人々が時間とお金を節約し、人間をより幸せにするのに役立つソフトウェアを作ります。

[^1]: Image by [Epic Top 10 Site](http://www.epictop10.com/)
[^2]: Thank you to [EFF](https://www.flickr.com/photos/electronicfrontierfoundation/) for the 2FA image.