我有一个已知公钥的服务器:P。用户需要向服务器发送一些数据。因此,他发送(数据)加密P和sha256(数据)作为签名。 A.这样安全吗? B.是否是以明文传输哈希的信息泄漏?欢迎各类攻击。注意:中间人应该不比假装的男人好。
据我所知,如果数据发生了变化,攻击者就无法重新计算新文本的正确哈希值。如果创建新数据来替换给定的信息,那么我们假装有人。如果散列被删除或不正确,则服务器错误。我错过了什么吗?散列是否应包含在加密信息中?
谢谢!
答案 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#编写的外部报告系统。