【发布时间】:2016-05-29 12:59:08
【问题描述】:
为强 ECC 加密编写的 C 库 http://tweetnacl.cr.yp.to/ 并由 Daniel J.Bernstein 出版,非常整洁和小巧。
通过 Jan Mojžíš 编写和发布的 tweetnacl Python 接口模块,在 Python 中使用它更加容易:https://mojzis.com/software/python-tweetnacl/index.html
生成临时公钥和密钥对非常容易:
python
>>> import tweetnacl as nacl
>>> pk, sk = nacl.crypto_box_keypair()
假设 Alice 获得 Bobs 公钥,反之亦然,然后使用 crypto_box() 和 crypto_box_open() 函数加密通信
非常直接且易于实施。
但我想知道:让 Alice "pk" 从这里到
Bob 和 Bob 的公钥还给 Alice?鲍勃怎么能确定
收到的公钥真的是 Alice 的密钥,反之亦然?
【问题讨论】:
-
密钥交换似乎不是库的一部分。
-
我最近看了一个关于 D.J.Bernstein 的演讲:youtube.com/watch?v=Cj3PN5-n108(这里是论文:safecurves.cr.yp.to/bada55/bada55-20140722.pdf)。在这个有趣的演讲中,DJB 将供应商称为“中间人”。所以我现在正在寻找一种加密安全的方式来实现这样的密钥交换。
-
这就是签名的用途,该库随 Ed25519 提供。一方必须信任另一方。你的信任锚是什么?
标签: python c encryption public-key-encryption