Whatsapp身份验证如何工作?

thn*_*new 19 security authentication mobile android whatsapp

我想开发一个移动应用程序并使用像用户注册的whatsapp.现在我记得几年前讨论过的安全问题.Whatsapp用于通过电话号码和IMEI对用户进行身份验证.现在当然这不是很安全,但我真的不知道如何更安全.

现在我已经很久没有听到有关Whatsapp身份验证问题的消息,所以我猜他们现在已经有了安全的方法.你知道Whatsapp今天是怎么做到的吗?

Far*_*ahi 14

我会抓住这个问题.

据我所知,Whatsapp仍然使用您的电话号码作为主要的唯一标识符.第一次登录Whatsapp时,您可以验证自己的电话号码.

但是,Whatsapp第二次在登录时提供密钥.这有助于避免一些像Telegram这样的攻击服务,其中可以在任何时刻调用和拦截SMS来访问帐户(看看他们的Web登录是如何工作的).

实际上,他们提供的这个密钥是您的标识符,它在本地安全存储,必须在所有进行中的请求中使用.当然,用户可以切换手机.在这种情况下,必须通过SMS重新激活帐户,其中将产生新的秘密ID,使前一个密码无效.

因此,攻击者可以通过重新激活来尝试我所说的SMS拦截协议.这个问题是你会发现有人会立即拦截你的流量,因为Whatsapp会在你自己的设备上被禁用.因此,如果你没有检查Whatsapp一段时间或者正在互联网中断,这只能是成功的.总的来说,这使他们的方法安全.

@Srinivas你所观察到的只不过是Whatsapp存储在接下来的两个小时内无法验证特定电话号码,无论请求的来源如何,都在他们的验证服务器上.


编辑:回应@ Srinivas的评论:

你答案的最后一部分绝对正确.我做了很少的测试,它就像你说的那样有效.谢谢.但我不清楚第一次登录和第二次登录.

我为不彻底而道歉.我会尝试重新解释.

正如我看到whatsapp,初始屏幕是注册(短信代码请求屏幕),第二次登录是验证码(验证短信代码).您能为我的理解提供更多信息吗?

我第一次登录时的意思是整个SMS验证过程.因此,我将它分为两​​部分:

  1. 首次登录:用户请求短信验证码.如果来自其他设备,他们需要正确输入代码,或者让Whatsapp识别SIM并自动完成验证.然后,如果它是以前存在的帐户,则会登录并访问其未传递或备份的邮件.

  2. 第二次登录:在此验证过程之后,Whatsapp立即提供秘密访问令牌,该令牌存储在设备本地.因此,只要他们打开应用程序并尝试连接到服务器,就需要使用此访问密钥.正如我所解释的,如果他们想要在另一台设备上重新激活他们的帐户,他们将不得不再次从新设备完成步骤1,然后生成一个新的密钥 - 使之前的密钥无效并使其成为只能使用新设备登录.

以下是我发现的一些创建类似api的文档:github.com/mgp25/Chat-API/wiki/WhatsApp-Registration-Flow.请提供宝贵的意见

我查看了文档,他们精确地遵循相同的模式.可能让您困惑的是最初的"代码请求令牌".这只是一个密钥,用于验证正在请求完成步骤1的设备的有效性.这可以确保尝试注册其设备的用户的来源的合法性.

这是如何工作的:

用户想要完成第一步.因此,他们向服务器发送请求令牌及其身份(电话号码).这是在加载到应用程序时传递的代码.

这仍然不足以在步骤1期间停止SMS拦截.鉴于请求的来源是合法的Whatsapp安装,SMS验证码可以使攻击者访问用户的帐户.但是,正如我之前提到的,这使得先前生成的密钥从步骤2无效.因此,只要用户正在积极使用Whatsapp并连接到Internet,用户就会注意到他们已经在本地登出.

让我知道是否有任何混乱.