我之前曾问过相关问题here。我想出了一个我将在下面描述的方案。我请专家在那里提供反馈。
由于目标应用程序是消费者应用程序,因此隐含的假设是应用程序不会部署在BES上。如果需要,将开发一个更适合的单独应用程序,并与BES环境很好地集成。
首先,应用程序的构建系统(包括源代码)与用户的注册捆绑在一起。也就是说,当用户注册时,只有在注册完成后才提供链接,为该用户构建应用程序。服务器代表用户执行以下步骤序列。
主密钥用于执行敏感操作,例如(a)在设备上重置用户密码(b)重置应用程序密码(c)设备丢失时远程擦除(d)转动在设备丢失时进行远程跟踪。
当客户端与服务器通信时,通道密钥用于加密/签署数据。
创建会话密钥。会话密钥用于客户端和服务器之间的一次性通信。它们通过HTTPS在设备和服务器之间进行交换,加密(可能使用AES-256)。
当用户将应用程序下载到手机并成功安装时,用户首次启动时会为应用程序选择密码。此密码仅为用户
应用程序通过HTTPS将使用会话密钥加密的用户ID(应用程序ID)发送到服务器
应用程序生成一个名为“Rescue Code”的128位UUID,并提示用户输入电子邮件ID。电子邮件将发送到包含此“救援代码”的电子邮件ID。用户必需以保证安全,并在任何用户丢失手机或忘记密码时生成。
此救援代码存储在设备上。
当用户忘记密码或丢失手机时。
答案 0 :(得分:0)
最近我遇到了一位为大型银行设计安全系统的专家(我无法透露)在某些情况下实施了这种安全模型。现在,我可以肯定地说,这确实是一种商业上可行且可接受的解决方案。