如何创建适当的签名以提交给PHP服务器?

时间:2011-10-05 16:50:57

标签: php security client-server digital-signature

我有一个已知公钥的服务器:P。用户需要向服务器发送一些数据。因此,他发送(数据)加密P和sha256(数据)作为签名。 A.这样安全吗? B.是否是以明文传输哈希的信息泄漏?欢迎各类攻击。注意:中间人应该不比假装的男人好。

据我所知,如果数据发生了变化,攻击者就无法重新计算新文本的正确哈希值。如果创建新数据来替换给定的信息,那么我们假装有人。如果散列被删除或不正确,则服务器错误。我错过了什么吗?散列是否应包含在加密信息中?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我有一个已知公钥的服务器:P。用户需要向服务器发送一些数据。因此,他发送(数据)加密P和sha256(数据)作为签名。

     
      
  • 甲。这安全吗?
  •   
  • B中。它是以明文传输哈希的信息泄漏吗?欢迎所有类型的攻击。<​​/ li>   
     

注意:中间人应该不比假装的男人好。

你在这里构建的内容类似MAC and encrypt,除了MAC之外它只是一个哈希函数。那不是一个好的设计。

相反,使用专用的密封API(sodium_crypto_box_seal()openssl_seal()等)来消除复杂性并公开简单安全的公钥加密(使用AEAD模式)。

如果您想将sodium_crypto_sign_detached($message, $signingKey)单独发送到服务器,那也没关系。

答案 1 :(得分:-1)

如果是数据传输,请查看PHP的Mcrypt扩展名。去年我在一个项目中使用它,基于PHP的社交网站需要安全地将数据传递到用C#编写的外部报告系统。