Php 在移动服务器通信中使用密码作为加密密钥的一部分
我目前正在开发一个移动应用程序,它附带了一个用PHP开发的web服务。我们要确保的一件事是,用户数据以各种可能的方式都是安全的 经过仔细评估,我们决定将其用于所有与加密相关的内容。这是对HTTPS连接的补充。当前流程如下所示(登录示例):Php 在移动服务器通信中使用密码作为加密密钥的一部分,php,android,ios,security,encryption,Php,Android,Ios,Security,Encryption,我目前正在开发一个移动应用程序,它附带了一个用PHP开发的web服务。我们要确保的一件事是,用户数据以各种可能的方式都是安全的 经过仔细评估,我们决定将其用于所有与加密相关的内容。这是对HTTPS连接的补充。当前流程如下所示(登录示例): iOS上的库在将密码发送到服务器之前使用密钥加密密码 然后服务器将此加密密码存储在数据库中 重新授权时,应用程序发送密码(再次使用静态密钥加密),服务器解密密码(意味着服务器也有加密密钥),验证登录并将登录密钥(使用相同的静态密钥加密)发送回客户端 每个后续请
PS:很抱歉发这么长的帖子。我可能只会使用OATH2令牌进行身份验证,但如果您想用自己的方式进行验证 为了确保密码的安全,使用了salted散列。作为用盐散列密码的一个基本示例,请考虑下面的内容,并且记住它不是加密安全的。
shaResult=SHA1(16字节随机盐)p@ssword“”
基础知识:服务器存储shaResult。你的应用程序存储生成的salt值。当用户输入密码时,您将其附加到存储的salt中,对其进行散列,并将其发送到服务器进行验证。现在真的不需要将其加密到服务器。HTTPS连接应该可以处理这个问题
好的加密密码散列在中进行了详细描述,总结他们建议使用以下方法:
我将重申,安全连接仍然需要与上述功能结合使用如果你想要一个不使用同一个认证值的方法,每次考虑使用防止重放攻击的方法。有关更完整的详细信息,请参阅 在设置时,在客户端和服务器之间建立共享密钥。这必须安全地完成,可以使用SSL或侧通道通信 身份验证:
虽然有一些细微的变化,但概念是相同的。我不能完全确定这是否是您想要的,但这可能会帮助您--功能原理可能会给您提供想法。这个问题似乎是离题的,因为它是关于@owlstead的,我既不试图定义协议,也不试图创建协议。我所要做的就是找出使用现有协议的正确方法。如果你觉得它离题了,请随意标记。但答案是相关的,对我有帮助。是的,但它也应该是相关的,不会让未来的读者感到困惑。目前,您似乎在这个问题上混合了实现和设计。如果您在security.stackexchange.com上询问与协议相关的问题,并在此处询问与开发相关的问题,您和其他人将获得更高质量的答案。这是一个很好的话题,否则,我没有投反对票或任何东西。谢谢!这些链接有帮助(尤其是第二个链接)!!投票被否决,因为这个答案明显忽略了第二个链接中给出的建议。对于给定的问题,它也远不是一个完整的解决方案。因为我的示例使用了SHA1而不是SHA256?只有将注释作为答案输入时,我才会将其标记为正确答案。无论如何,感谢@raz和@Mihai Andrei Rustiuc的宝贵意见。我已经用哈希和RNCryptor找到了正确的方法。没有,因为您的示例没有使用PBKDF(基于密码的密钥派生函数)来执行哈希。您使用了salt,但没有迭代计数或工作因子。已知的PBKDF是PBKDF2、bcrypt和scrypt。还要注意,您知道编码