我试图了解如何使用nettle的curve25519函数实现密钥交换。我正在编写一个软件,它使用基于公钥的身份验证来建立加密的TCP连接。客户端程序和服务器程序共享相同的代码库。
这是一个学习网络和密码编程的业余项目。:-)
我有一个使用荨麻的rsa_encrypt功能的玩具应用程序,但从我所看到的情况来看,它并不等同于curve25519。如何使用nettle的curve25519函数进行密钥交换?
另外,我知道我可以而且可能应该使用任何产品质量的TLS库,比如openssl,但是我想从零开始学习如何进行加密的TCP连接。使用TLS库将无法达到这一目的。我比较了许多密码库,发现nettle是最容易接近的,因为它是低级别的。
发布于 2021-08-02 09:23:16
椭圆曲线通常用于密钥‘协议’而不是密钥‘交换’。
我不知道你对此了解多少,所以我会简单地解释一下:
theirPublicKeyPoint * ourPrivateKeyPoint * G在曲线上建立相同的点,其中G是曲线的基点。因此,总括而言:
curve25519上执行ECDH的函数,也称为x25519,nettle的函数是这。x的协调以生成对称密钥。虽然这通常是由库完成的。https://stackoverflow.com/questions/68593838
复制相似问题