web-dev-qa-db-ja.com

Whatsapp認証はどのように機能しますか?

モバイルアプリを開発し、ユーザー登録のようなwhatsappを使いたいです。今、私は数年前に議論されたセキュリティ問題を覚えています。 Whatsappは、電話番号とIMEIだけでユーザーを認証するために使用されていました。もちろん、これは実際には安全ではありませんが、より安全にする方法がわかりません。

今、Whatsappの認証の問題について長いこと何も聞いていなかったので、今では安全な方法があると思います。 Whatsappが今日どのように実行するか知っていますか?

19
thnew

この質問を試してみます。

私の知る限りでは、Whatsappは依然として電話番号を主要な一意の識別子として使用しています。 Whatsappに初めてログインするときに、自分の電話番号を確認します。

ただし、2回目のWhatsappは、ログイン時に秘密鍵を提供します。これは、SMSが呼び出され、いつでもインターセプトされてアカウントにアクセスすることができる、Telegramのような攻撃サービスの一部を回避するのに役立ちます(Webログインの仕組みを見てください) )。

実際、彼らが提供するこの秘密鍵はあなたの識別子であり、ローカルで安全に保存されており、進行中のすべてのリクエストで使用する必要があります。もちろん、ユーザーは電話を切り替えます。このような場合、アカウントはSMSを介して再アクティブ化する必要があり、新しいシークレットIDが生成され、以前のシークレットIDは無効になります。

したがって、攻撃者は、再アクティベーションによって私が話したSMSインターセプトプロトコルを試みる可能性があります。これの問題は、あなたのデバイスでWhatsappが無効になるため、誰かがあなたのトラフィックを即座に傍受していることに気付くでしょう。したがって、これは、Whatsappをしばらくチェックしなかった場合、またはインターネットが停止している場合にのみ成功する可能性があります。全体として、これによりメソッドが安全になります。

@Srinivas確認したことは、要求サーバーで特定の電話番号を要求元に関係なく2時間以内に確認できないことをWhatsappに保存することだけです。


編集: @Srinivasのコメントに応じて:

あなたの答えの最後の部分は完全に正しいです。私はいくつかのテストを行い、あなたが言ったようにそれは機能します。ありがとう。しかし、初回ログインと2回目のログインは明確ではありません。

徹底していないことをお詫びします。説明し直します。

Whatsappを見ると、最初の画面は登録(SMSコード要求画面)で、2回目のログインは確認コード(SMSコードの確認)です。私が理解できるように、もう少し情報を提供できますか?

最初のログインで意味したのは、SMS検証プロセス全体です。したがって、2つのセグメントに分割します。

  1. 初回ログイン:ユーザーはSMS確認コードを要求します。以下の場合、コードを正しく入力するために必要です別のデバイス、または代わりにWhatsappにSIMを認識させ、検証を自動的に完了させます。その後、それらはログインし、以前に存在したアカウントの場合は、未配信またはバックアップされたメッセージにアクセスできます.

  2. 2回目のログイン:この検証プロセスの直後に、Whatsappはデバイスにローカルに保存されているシークレットアクセストークンを配信します。したがって、アプリを開いてサーバーに接続しようとするときは常に、このアクセスキーを使用する必要があります。私が説明したように、彼らが別のデバイスで自分のアカウントを再度アクティブ化したい場合、彼らは新しいデバイスから再度ステップ1を完了する必要があります。これにより、新しい秘密キーが生成されます-以前のキーを無効にして作成します新しいデバイスでのみログインできます。

同様のapiを作成したドキュメントをいくつか紹介します。github.com/ mgp25/Chat-API/wiki/WhatsApp-Registration-Flow。貴重な情報を提供してください

ドキュメントを確認したところ、同じパターンに正確に従っています。あなたを混乱させたのは、最初の「コード要求トークン」です。これは、手順1を完了するように要求しているデバイスの有効性を検証するキーにすぎません。これにより、デバイスを登録しようとしているユーザーのOriginの正当性が保証されます。

これはどのように機能するかです:

ユーザーはステップ1を完了したいと考えています。したがって、ID(電話番号)とともにリクエストトークンをサーバーに送信します。これは、ロード時にアプリケーションに配信されたコードです。

これでも、手順1でSMSインターセプトを停止するには不十分です。要求の発信元が正当なWhatsappインストールであるとすると、SMS確認コードにより、攻撃者がユーザーのただし、前述したように、これはステップ2で以前に生成された秘密鍵を無効にします。したがって、ユーザーはWhatsappをアクティブに使用してインターネットに接続している限り、ローカルでログアウトされていることに気づくでしょう。

さらに混乱が生じた場合はお知らせください。

14
Faris Sbahi

現在、Whatsappは、携帯電話にテキストメッセージを送信するだけで、アプリの使用を許可します。スマートフォンのSIMカードに入力した番号と同じ番号がある場合、Whatsappは自動的にテキストメッセージからコードを取得し、スマートフォンを認証します。そうでない場合でも、その電話番号を使用する電話にアクセスし、確認コードを入力する必要があります。

3
Rizky Fakkel