Mobile 这是将OTP(一次性密码)算法嵌入企业移动应用程序以支持离线功能的好方法吗?

Mobile 这是将OTP(一次性密码)算法嵌入企业移动应用程序以支持离线功能的好方法吗?,mobile,mobile-application,two-factor-authentication,Mobile,Mobile Application,Two Factor Authentication,更新:我们正在Windows、IOS和Android平台上构建移动应用程序,为受监管的系统生成OTP(一次性密码)。当用户尝试登录时,系统将提示质询短语,并且需要将显示的质询键入移动应用程序以生成OTP。生成的OTP然后输入回系统以成功登录 到目前为止,移动OTP生成应用程序的要求是好的,因为我们可以公开一个服务来生成具有所需安全性的OTP 但是,我们有一个有线要求,即在移动设备没有互联网连接的情况下,支持具有离线功能的相同功能。我们知道的唯一选择是将OTP算法和密钥嵌入到应用程序中,并应用合适

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

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


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

我不知道您所说的“企业将公开API”是什么意思

但是,您将需要与物理电话设备绑定的东西,如SIM卡模块(即电话号码)或具有安全/专用存储的应用程序,以便双因素工作

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

所以,我想唯一的答案是:是的,你应该在应用程序中实现“OTP算法”。应用程序必须将共享机密存储在其他应用程序无法(轻松)访问的专用存储中。然后,根据OTP的类型,您需要在应用程序和服务器之间提供一些同步方法。对于谷歌的验证器来说,这只是建立了一个通用的时基,因为“OTP”严格来说不是一次性的,而是根据当前的日期+时间(仅)变化的;因此,当前时间成为服务器隐式地向客户机提出的“挑战”,要求客户机返回正确的响应。好的是,你不需要访问互联网就能知道应用程序中的当前时间。你只需要时不时地同步时基,以确保应用程序中的时钟与服务器的时钟没有太大差异

相反,服务器也可以发送一个显式质询,比如序列号。此挑战将显示给尝试登录的用户,用户必须在应用程序中键入号码并将应用程序的答案返回给服务器


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

如果没有电话上的算法,您将如何实现这两个因素?SMS?Enterprise将只提供一个旁注:我可能错了,但在我看来,在尝试实际实施任何安全相关软件之前,您可能需要对安全机制有更透彻的了解。@HannoBinder感谢您的回复。我更新了我的问题,使问题更加清晰。这确实改进了问题。答案仍然是一样的:是的,在应用程序中实现算法。如果该算法使得攻击者仅通过从应用程序中提取算法就可以危害您的安全性,那么该算法首先不适合用于安全性。共享密钥(“密钥”)可能不应嵌入应用程序中。它应该在安装后配置应用程序时随机生成,然后存储在设备上的某个应用程序专用位置。看看Goggle的验证器,看看该机制是如何实现的。