#ristretto #pake #密钥交换 #加密

cpace

CPace 密码认证密钥交换 (PAKE) 的实现

1 个不稳定版本

0.1.0 2020年5月1日

#6#pake

BSD-3-Clause

10KB
132 代码行

cpace

使用 ristretto255 群实现的 CPace PAKE 的 Rust 实现。

此实现基于 Filippo Valsorda 的 go-cpace-ristretto255 实现,并试图与之兼容。请注意,该实现大致基于 draft-haase-cpace-01,因此所有这些实现都是某种移动的目标。

文档.


lib.rs:

使用 Ristretto255 实现的 CPace 密码认证密钥交换 (PAKE)。请注意,这是规范草稿的实验性实现 -- 在 1.0 版本之前不要部署它。

此实现基于 Filippo Valsorda 的 go-cpace-ristretto255

示例

use rand::rngs::OsRng;
use cpace;

let (init_msg, state) = cpace::init(
    "password",
    cpace::Context {
        initiator_id: "Alice",
        responder_id: "Bob",
        associated_data: b"",
    },
    OsRng,
)
.unwrap();

let (bob_key, rsp_msg) = cpace::respond(
    init_msg,
    "password",
    cpace::Context {
        initiator_id: "Alice",
        responder_id: "Bob",
        associated_data: b"",
    },
    OsRng,
)
.unwrap();

let alice_key = state.recv(rsp_msg).unwrap();

assert_eq!(alice_key.0[..], bob_key.0[..]);

依赖项

~3MB
~58K SLoC