首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >荨麻curve25519密钥交换

荨麻curve25519密钥交换
EN

Stack Overflow用户
提问于 2021-07-30 15:53:29
回答 1查看 148关注 0票数 0

我试图了解如何使用nettle的curve25519函数实现密钥交换。我正在编写一个软件,它使用基于公钥的身份验证来建立加密的TCP连接。客户端程序和服务器程序共享相同的代码库。

这是一个学习网络和密码编程的业余项目。:-)

我有一个使用荨麻的rsa_encrypt功能的玩具应用程序,但从我所看到的情况来看,它并不等同于curve25519。如何使用nettle的curve25519函数进行密钥交换?

另外,我知道我可以而且可能应该使用任何产品质量的TLS库,比如openssl,但是我想从零开始学习如何进行加密的TCP连接。使用TLS库将无法达到这一目的。我比较了许多密码库,发现nettle是最容易接近的,因为它是低级别的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 09:23:16

椭圆曲线通常用于密钥‘协议’而不是密钥‘交换’。

我不知道你对此了解多少,所以我会简单地解释一下:

  • RSA --我们生成一个随机对称密钥,用接收者的公钥对其进行加密,然后由接收者自己解密并使用它。
  • 椭圆曲线密码(椭圆曲线密码)-我们使用一个叫做椭圆曲线微分-Hellman的过程,由于曲线点相乘的交换性质,我们可以通过乘积theirPublicKeyPoint * ourPrivateKeyPoint * G在曲线上建立相同的点,其中G是曲线的基点。

因此,总括而言:

  • 我非常鼓励您使用ECDH而不是RSA。
  • 您需要找到一个在curve25519上执行ECDH的函数,也称为x25519,nettle的函数是
  • 经过ECDH处理后,我们得到了曲线上的另一个点。)--我们散列x的协调以生成对称密钥。虽然这通常是由库完成的。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68593838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档