【发布时间】:2014-07-25 10:51:40
【问题描述】:
我目前正在开发一个移动应用程序,该应用程序附带一个使用 PHP 开发的 Web 服务。我们要确保的一件事是用户数据在所有可能的方面都是安全的。
经过仔细评估,我们决定将RNCryptor 用于所有与加密相关的事情。这是对 HTTPS 连接的补充。当前流程如下(登录示例):
- iOS 上的RNCryptor 库在将密码发送到服务器之前使用密钥对密码进行加密。
- 然后服务器将此加密密码存储在数据库中。
- 在重新认证时,应用程序发送密码(再次使用静态密钥加密),服务器对其进行解密(意味着服务器也有加密密钥),验证登录并发送登录密钥(使用相同的加密静态密钥)返回给客户端。
- 每个后续请求都依赖加密的 loginKey 和用户名来验证用户和登录会话的有效性。
我认为上述系统存在缺陷,因为 STATIC 加密密钥以及密钥在服务器和客户端上都可用。
我们希望通过将原始密码与 STATIC 加密密钥合并来使加密密钥动态化。这将使每个用户的加密密钥都是唯一的,但这也意味着服务器将不知道密钥。服务器必须知道密钥,因为其他用户数据也会根据此密钥进行加密和解密。
有人可以帮我解决这个问题吗?我需要采取哪些步骤来使系统更安全?任何特定于服务器-移动客户端的代码 sn-p 或参考链接也可以。我知道那里有很多教程,但大多数都将客户端恢复到基于 Web 的而不是移动的。
PS:抱歉发了这么长的帖子。
【问题讨论】:
-
我不确定这是否是您正在寻找的东西,但这可以帮助您 - aws.amazon.com/articles/4611615499399490 - 功能原理可以为您提供想法
-
这个问题似乎是题外话,因为它是关于defining/creating a security protocol
-
@owlstead,我既不想定义协议也不想创建协议。我要做的就是找出我们使用现有协议的正确方法。如果 SO 觉得它离题,请随意标记它。但答案是相关的并帮助了我。
-
是的,但它也应该与未来的读者相关且不会混淆。目前,您似乎在这个问题中混合了实现和设计。如果您在 security.stackexchange.com 上询问与协议相关的问题并在此处询问与开发相关的问题,您 - 以及其他所有人 - 将获得更高质量的答案。否则,这是一个不错的话题,我没有投反对票或其他任何事情。
标签: php android ios security encryption