#diffie-hellman #key-exchange #ristretto #shared-secret #crypto

ristretto255-dh

使用Ristretto255群的Diffie-Hellman密钥交换

3个版本 (重大更新)

0.3.0 2020年5月12日
0.2.0 2020年5月11日
0.1.0 2020年5月9日

#2307 in 密码学

MIT/Apache

15KB
241

ristretto255-dh

使用纯Rust实现的基于Ristretto255群的Diffie-Hellman密钥交换。

此crate提供了一组高级API,用于在Ristretto255素性阶群中进行静态和临时的Diffie-Hellman密钥交换,具体实现了IETF草案,并在内部使用curve25519-dalek库在Curve25519上实现。

示例

use rand_core::OsRng;

use ristretto255_dh::EphemeralSecret;
use ristretto255_dh::PublicKey;

// Alice's side
let alice_secret = EphemeralSecret::new(&mut OsRng);
let alice_public = PublicKey::from(&alice_secret);

// Bob's side
let bob_secret = EphemeralSecret::new(&mut OsRng);
let bob_public = PublicKey::from(&bob_secret);

// Alice again
let alice_shared_secret = alice_secret.diffie_hellman(&bob_public);

// Bob again
let bob_shared_secret = bob_secret.diffie_hellman(&alice_public);

// Each peer's computed shared secret should be the same.
assert_eq!(<[u8; 32]>::from(alice_shared_secret), <[u8; 32]>::from(bob_shared_secret));

关于

高级Diffie-Hellman API受到x25519-dalek的启发。

依赖项

~2.5MB
~60K SLoC