CyberGlossary

密码学

Salsa20

定义

Daniel J. Bernstein 于 2005 年设计的 256 位密钥流密码,入选 eSTREAM 软件组合,是 ChaCha20 的直接前身。

Salsa20 是 Daniel J. Bernstein 于 2005 年发布的流密码,被欧洲 eSTREAM 竞赛软件组合选入最终入选名单。它通过对由 256 位密钥、64 位 nonce 与分组计数器派生出的 512 位内部状态,执行 20 轮(Salsa20/20)或减少版本 Salsa20/12、Salsa20/8 的四分之一轮函数(基于加、循环移位、异或)来生成密钥流。该算法软件性能高、运行时间恒定,且除针对减少轮数的攻击外,未受到有效密码分析。如今它主要被 ChaCha20 取代——后者扩散更佳、nonce 更长——但仍以 XSalsa20(扩展 nonce 版)形式存在,被 NaCl/libsodium 库以及历史上的 Tor 隐藏服务协议采用。

示例

  • NaCl/libsodium 的 secretbox 默认 AEAD 为 XSalsa20-Poly1305。
  • Salsa20/12 是 eSTREAM 软件组合最终入选算法之一。

相关术语