gpt4 book ai didi

encryption - 关于 NaCL 加密库的问题

转载 作者:行者123 更新时间:2023-12-03 06:49:27 24 4
gpt4 key购买 nike

我正在寻找用于实现加密系统的库,并且对使用 NaCl:网络和密码学库特别是 box function 感兴趣。 .显然,它使用对称加密 XSalsa20、用于公私加密的 Curve25519 和用于身份验证的 Poly1305 作为其原语。

但是,文档的使用方式似乎不足。例如,它提到要计算 key ,它使用发送方的私钥和接收方的公钥来计算 key 。但它没有解释如何。任何人都可以对此有所了解吗?

如果我使用相同的公钥和私钥,下次尝试时我不会生成相同的 key ,这将是灾难性的。有谁知道它背后的解释,或者给我提供更多关于函数如何工作而不是如何使用函数的文档?

最佳答案

怎么样crypto_box工作?
box在两个 key 上使用 Diffie-Hellman key 交换并散列结果。然后它使用它作为 secret_box 的 key .

  • crypto_box相当于 crypto_box_beforenm其次是 crypto_box_afternm .
  • crypto_box_beforenm是散列 key 交换,其工作方式如 Curve25519 论文中所述,在 Curve25519 上使用椭圆曲线 Diffie-Hellman key 交换,使用 HSalsa 散列结果。这会产生一个 32 字节的共享 key 。

    k = Hash(Curve25519(b, A)) = Hash(Curve25519(a, B))
  • crypto_box_afternmcrypto_secret_box 相同.它需要一个 24 字节的随机数和一个 32 字节的 key 。它是一种经过身份验证的流密码,使用 XSalsa20 进行加密,使用 Poly1305 作为 MAC。 XSalsa20 输出的前 32 个字节用于 MAC,其余为 xor编辑成明文以对其进行加密。

  • 如果多次使用会发生什么?

    如果您使用两个固定的 key 对,则 key 交换的结果将始终相同。

    但对称部分 secret_box即使您多次使用 key 也是安全的,只要您永远不会为该 key 重复使用随机数,即 (key, nonce) 对必须是唯一的。

    对于所有现代经过身份验证的流密码,此属性几乎相同,例如 AES-GCM 或 XSalsa20-Poly1305。

    创建唯一随机数的常见方法是:
  • 使用 8 字节前缀和随机 16 字节值(无状态,随机 16 字节很可能是唯一的)
  • 使用 16 字节前缀和 8 字节计数器(有状态,在为每个数据包递增的连接中很有用)
  • 关于encryption - 关于 NaCL 加密库的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663604/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com