1

更新:我们正在 Windows、IOS 和 Android 平台上构建移动应用程序,为受监管的系统生成 OTP(一次性密码)。当用户尝试登录时,系统会提示挑战短语,显示的挑战需要键入移动应用程序以生成 OTP。然后将生成的 OTP 输入回系统以成功登录。

到目前为止,移动 OTP 生成应用程序的要求很好,因为我们可以公开服务以生成具有所需安全性的 OTP。

但是,我们有一个有线要求,即在移动设备没有互联网连接的情况下支持具有离线功能的相同功能。我们知道的唯一选择是将 OTP 算法和密钥嵌入到应用程序中并应用合适的安全机制。算法是定制的支持算法,在不影响安全性的情况下,我们需要实现离线功能。这是将算法和密钥嵌入应用程序以启用离线功能的好方法吗?推荐的解决方案是什么。

4

1 回答 1

1

我不知道“企业将公开 API”是什么意思。

但是,您需要与物理电话设备相关联的东西,例如 SIM 模块(即电话号码)或具有安全/私人存储的应用程序,以实现双重工作。

在 Internet 上公开的 API 没有到身份验证令牌(电话)的强链接,是不安全的。

所以,我想唯一的答案是:是的,你应该在应用程序中实现“OTP 算法”。应用程序必须将共享密钥存储在其他应用程序无法(轻松)访问的私有存储中。然后,根据 OTP 的类型,您需要在应用程序和服务器之间提供一些同步方式。对于 Google 的 Authenticator 来说,这只是建立一个共同的时基,因为“OTP”并不是严格意义上的一次性,而是(仅)根据当前日期+时间而变化;因此,当前时间成为服务器隐含地为客户端返回正确响应的“挑战”。好消息是您无需访问互联网即可了解应用程序中的当前时间。

服务器也可以发送显式质询,例如序列号。这个挑战将显示给尝试登录的用户,用户必须在应用程序中输入数字并将应用程序的答案返回给服务器。

还有更多选择,但底线是:为了提供合理的安全性,必须在手机上计算 OTP。

于 2015-05-13T11:30:46.347 回答