【问题标题】:Using Eliptical Curve Cryptography with OpenSSL for php and javascript [closed]将椭圆曲线加密与 OpenSSL 一起用于 php 和 javascript [关闭]
【发布时间】:2020-01-04 00:22:12
【问题描述】:

我正在尝试查找一些关于在 php 中使用椭圆曲线加密和 openssl 的文档,但我似乎找不到任何东西。如果 openssl 做得很好,我宁愿不导入库。

我发现了这个: https://www.php.net/manual/en/function.openssl-get-curve-names.php

但它没有给出如何使用这些曲线的上下文。我想要一个简单的例子,它只是使用公钥来加密一些数据。然后用密码解密私钥,然后继续解密数据。我也希望能够将加密数据与 ECC 兼容的 javascript 库一起使用。我找到了这个:https://github.com/indutny/elliptic/ 但它似乎只签名不加密。

我还发现这个看起来不错: https://github.com/keybase/kbpgp

但它似乎需要子键而不仅仅是标准键,这似乎真的违反直觉。我尝试只创建一个没有子键的普通键,但失败了。

我用谷歌搜索了很多,似乎找不到任何可靠的例子。 有人有这方面的经验吗?

谢谢

【问题讨论】:

  • 只是想知道,为什么需要使用椭圆曲线加密而不是基于非椭圆曲线组的加密?
  • @Mike 似乎我读过的所有内容都表明标准 RSA 加密似乎越来越容易受到攻击,例如索引演算攻击。我希望这款软件能够保持相关性,因为它可能会存在十年以上。我想我并没有真正听说过 AES 攻击,但我想使用公钥和私钥。

标签: javascript php encryption openssl


【解决方案1】:

只有将 ECC 用作混合密码系统的一部分时,它才能用于加密。例如。临时密钥 ECDH。

OpenSSL(嗯,更具体地说,PHP 与 OpenSSL 的绑定)不支持:

does OpenSSL support ECDH?

libsodium 但是,Curve25519 可以。例如。 sodium_crypto_boxsodium_crypto_box_open:

https://paragonie.com/book/pecl-libsodium/read/05-publickey-crypto.md#crypto-box

它实现的具体算法如下:

  • 密钥交换:X25519
  • 加密:XSalsa20 流密码
  • 身份验证:Poly1305 MAC

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多