【问题标题】:How to exchange and authenticate ephemeral public keys with tweetnacl?如何使用 tweetnacl 交换和验证临时公钥?
【发布时间】: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


【解决方案1】:

您不能没有受信任的第三方和另一个安全渠道。这就是 SSL 在浏览器中预先部署了证书颁发机构和信任链证书的原因。如果没有这些,交换过程很容易受到中间人的攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 2020-01-20
    • 2022-11-17
    • 2012-10-09
    • 1970-01-01
    • 2018-08-31
    • 2012-10-27
    • 2013-08-17
    相关资源
    最近更新 更多