代码之家  ›  专栏  ›  技术社区  ›  Kiran Kuppa

黑莓消费者应用程序安全方案。要求反馈

  •  0
  • Kiran Kuppa  · 技术社区  · 16 年前

    我之前问过一个相关的问题 here . 我提出了一个方案,我将在下面描述。我请那里的专家提供反馈。

    由于目标应用程序是一个消费者应用程序,所以隐含的假设是应用程序不会部署在BES上。如果需要,将开发一个更合适的单独应用程序,并与BES环境良好集成。

    首先,应用程序的构建系统(包括源代码)与用户的注册绑定在一起。也就是说,当用户注册时,只为该用户构建一个应用程序,在注册完成后立即提供链接。以下步骤序列由服务器代表用户执行。

    安装

    • (私钥、公钥)将为该用户生成称为“主密钥”的。
    • (private key,public key)为该用户生成称为“通道密钥”的。
    • 主公钥将由服务器的代码签名密钥签名。
    • 通道公钥将由服务器的代码签名密钥签名
    • (通道密钥、主密钥)将与应用程序源代码一起打包。
    • 将生成该应用程序的唯一标识符,并与应用程序捆绑在一起。
    • 以上源代码是使用RIM的工具编译的,并由RIM签名者证书签名。
    • 为上述过程生成的任何中间文件都将在生成完成后立即删除。

    主密钥 用于执行敏感操作,如(a)重置设备上的用户密码(b)重置应用程序密码(c)设备丢失时远程擦除(d)设备丢失时启用远程跟踪。

    通道键 用于在客户端与服务器通信时加密/签名数据。

    创建会话密钥 . 会话密钥用于客户端和服务器之间的一次性通信。它们通过HTTPS在设备和服务器之间交换,并加密(可能使用AES-256)。

    • 当用户将应用程序下载到手机上并成功安装后,在首次启动时,用户将选择应用程序的密码。此密码已知 只有 给用户。

    • 应用程序通过HTTPS向服务器发送用会话密钥加密的(用户ID、应用程序ID)

    • 应用程序生成一个名为“rescue code”的128位UUID,并提示用户输入电子邮件ID。将向包含此“rescue code”的电子邮件ID发送电子邮件。用户是 必修的 为了安全地保存它,并在任何用户丢失电话或忘记密码时生成它。

    • 此救援代码存储在设备上。

    • 一旦启动,应用程序总是在后台运行,并在电话启动时启动。

    恢复

    当用户忘记密码或丢失电话时。

    • 用户通过出示有效身份证(可能由政府提供)向有关当局证明身份。
    • 服务器请求客户端创建安全通道。客户机通过提供由主密钥加密的令牌重新连接到服务器。
    • 客户机向服务器提出了一个挑战,请求一个“救援代码”。这可以在Web UI上显示。
    • 用户向服务器提供“救援代码”
    • 客户端将服务器提供的救援代码与存储的救援代码进行匹配,然后将成功代码发送到服务器。
    • 现在,客户机可以代表用户执行敏感操作。
    1 回复  |  直到 16 年前
        1
  •  0
  •   Kiran Kuppa    15 年前

    最近,我遇到了一位为非常大的银行设计安全系统的专家(我不能透露),他在某些情况下实现了这种安全模型。现在,我可以自信地说,这确实是一个商业上可行和可接受的解决方案。