NKEYS 库的 Swift 实现。
截至 v2.x+ 版本,NATS 生态系统已转向使用 Ed25519 密钥,用于账户、用户、服务器和集群等实体的身份验证、身份认证和授权。
Ed25519 算法快速且能抵抗侧信道攻击。只需要安全地存储和保管种子密钥,因为种子密钥可以生成公钥和私钥。
NATS 系统将使用 Ed25519 密钥,这意味着 NATS 系统永远不会存储甚至无法访问任何私钥。身份验证将使用随机质询响应机制。
处理 32 字节和 64 字节的原始密钥可能具有挑战性。NKEYS 的设计旨在以更友好的方式格式化密钥,并参考了加密货币领域(特别是 Stellar)的工作。比特币和其他加密货币使用了一种 Base58(或 Base58Check)的形式来编码原始密钥。Stellar 使用了一种更传统的 Base32 编码,带有 CRC16 校验和前缀字节。NKEYS 使用了类似的格式,其中前缀对于公钥和私钥将为 1 字节,对于种子将为 2 字节。这些前缀的 base32 编码将产生友好的、人类可读的前缀。
以下是可用前缀及其密钥对类型的列表
N - 服务器 C - 集群 O - 操作员 A - 账户 U - 用户 M - 模块 V - 服务 / 服务提供商 P - 私钥
对于种子,第一个编码前缀是 S,第二个字符将是公钥的类型,例如 SU 是用户密钥对的种子,SA 是账户密钥对的种子。