【发布时间】:2017-05-03 16:43:01
【问题描述】:
我在理解 php 和 android 上的椭圆曲线密码学方面需要帮助。我已经阅读了关于 Spongy Castle 和 Bouncy Castle 的内容......到目前为止我所了解的是每一方都需要生成一对密钥(公钥和私钥)以及他们将用于加密和解密的共享密钥..我是对的吗?还是还有另一个键...我有点困惑..我也找不到任何用于 php 的东西...感谢您的帮助...
我也知道 ECDSA 仅用于生成签名,而 ECDH 用于对消息进行加密/解密,这正是我所需要的......
【问题讨论】:
-
ECDH 用于密钥交换。您可能指的是 ECIES 或类似的东西,它们可以与 RSA 类似地使用。无论如何,为什么 HTTPS 或 TLS 对您来说还不够?
-
我们正在实现一个需要使用非对称加密的安全协议……我们使用了 RSA,但我们想使用椭圆曲线来提高性能……有没有关于如何使用 ECIES 的教程?另外,通过密钥交换..您是指秘密共享密钥吗? ..所以这个密钥是使用 ECDH 生成的,并将在 ECIES 中用于加密?还是有别的钥匙...
-
好的,我发现这个代码示例真的很有帮助.. 所以我们得到了双方的共享密钥,我们需要测试它是否相同,然后使用秘密共享密钥完成加密和解密.. gist.github.com/zcdziura/7652286 .. bcprov-jdk15 是必需的,还需要下载 UnlimitedJCEPolicy 来修复非法密钥大小异常
-
@HayaRaed 如果您在实践中尝试使用该 github 代码,则存在安全问题。只有当您确定您收到的公钥属于您正在与之通信的一方时,ECDH 密钥交换才能安全地进行。否则,可能会发生中间人攻击:攻击者将通过网络的公钥替换为自己的公钥,以便窃听通信。证书通常用于防止此类攻击。顺便说一句,您可以在 TLS 中使用 ECC,所以我认为您确实需要重新考虑 Artjom B. 的问题。
标签: java php android public-key-encryption elliptic-curve