WhatsApp身份validation如何工作?

我想开发一个移动应用程序,并使用WhatsApp的用户注册。 现在我记得几年前讨论过的安全问题。 Whatsapp用来简单地通过他们的电话号码和IMEI来authentication用户。 现在当然这不是很安全,但我真的不知道如何更安全地做到这一点。

现在我很久没有听说Whatsapp身份validation问题了,所以我猜他们现在有了安全的方法。 你知道今天Whatsapp是如何做的吗?

Solutions Collecting From Web of "WhatsApp身份validation如何工作?"

我会试一下这个问题。

据我所知,WhatsApp仍然使用您的电话号码作为主要的唯一标识符。 您第一次login到WhatsApp时,您validation电话号码是您自己的。

但是,Whatsapp第二次在login时提供了一个密钥。 这有助于避免像Telegram这样的攻击服务,在任何时候都可以调用SMS并截获访问帐户(查看他们的Weblogin工作情况)。

事实上,他们提供的这个秘密密钥是你的标识符,它在本地安全存储,必须在所有的处理请求中使用。 当然,用户切换电话。 在这种情况下,账户必须通过短信重新激活,在那里将产生一个新的密码,使前一个密码失效。

因此,攻击者可以通过重新激活来尝试我所说的SMS拦截协议。 这个问题是你会意识到有人立即拦截你的stream量,因为WhatsApp将被禁用在自己的设备上。 因此,只有当您没有检查Whatsapp或者在互联网中断的情况下才能成功。 总的来说,这使得他们的方法安全。

@Srinivas你所观察到的只不过是Whatsapp的存储,在validation服务器上,在接下来的两个小时内无法validation一个特定的电话号码,不pipe请求的来源如何。


编辑:在回应@ Srinivas的评论:

你答案的最后部分是绝对正确的。 我做了很less的testing,按照你的说法工作。 谢谢。 但是我不清楚在第一次login和第二次login。

我很抱歉不彻底。 我会尝试重新解释。

当我看到whatsapp,初始屏幕是注册(短信代码请求屏幕)和第二次loginvalidation码(validation短信代码)。 你能提供一些我的理解更多的信息吗?

第一次login的意思是整个短信validation过程。 因此,我将分成两部分:

  1. 首次login :用户请求短信validation码。 如果来自其他设备,则需要正确input代码,或者让Whatsapp识别SIM卡并自动完成validation。 他们然后login,并有权访问他们未交付或备份的消息,如果它是以前存在的帐户。

  2. 第二次login :立即在此validation过程之后Whatsapp提供一个存储在设备本地的秘密访问令牌。 因此,无论何时打开应用程序并尝试连接到服务器,都需要使用此访问密钥。 正如我所解释的,如果他们想要在另一台设备上重新启动他们的帐户,他们将不得不再次从新设备上完成第一步,然后生成一个新的密钥 – 使之前的密钥无效只能用新设备login。

这里有一些文件,我发现谁创造了类似的API:github.com/mgp25/Chat-API/wiki/WhatsApp-Registration-Flow。 请提供您宝贵的意见

我审阅了文档,他们精确地遵循相同的模式。 什么可能让你困惑的是最初的“代码请求令牌”。 这只是validation正在发出请求以完成步骤1的设备的有效性的关键。这确保试图注册其设备的用户的来源的合法性。

这是如何工作的:

用户想完成第一步。 因此,他们将一个请求令牌和他们的身份(电话号码)一起发送到服务器。 这是一个加载到应用程序的代码。

这仍然不足以在步骤1中停止SMS拦截。鉴于请求的来源是合法的Whatsapp安装,SMSvalidation码可以让攻击者访问用户的帐户。 但是,正如我以前所指出的,这将使步骤2中之前生成的密钥无效。因此,只要用户正在使用WhatsApp并连接到Internet,用户就会注意到他们已经在本地注销。

让我知道是否有更多的困惑。

如今Whatsapp授权您使用应用程序只需发送您的手机短信。 如果您手机的SIM卡与您input的号码相同,Whatsapp会自动从手机短信中获取代码并授权您的手机。 如果没有,您仍然需要使用该电话号码的电话并inputvalidation码。