#crypto #ecies #cryptocurrency #secp256k1 #ecc

wedpr_ecies

基于secp256k1的Rust椭圆曲线集成加密方案

1个不稳定版本

0.2.1 2021年8月25日

#1951 in 加密学

每月 21 次下载

MIT 协议

26KB
378

eciesrs

Codacy Badge License CI Crates Doc

基于纯Rust实现secp256k1的Rust椭圆曲线集成加密方案

ECIES功能基于AES-GCM-256和HKDF-SHA256构建

这是eciespy的Rust版本eciespy

此库可选项编译为WASM目标,详见WASM兼容性

快速入门

use ecies::{decrypt, encrypt, utils::generate_keypair};

const MSG: &str = "helloworld";
let (sk, pk) = generate_keypair();
let (sk, pk) = (&sk.serialize(), &pk.serialize());

let msg = MSG.as_bytes();
assert_eq!(
    msg,
    decrypt(sk, &encrypt(pk, msg).unwrap()).unwrap().as_slice()
);

可选纯Rust AES后端

您可以选择使用OpenSSL实现或纯Rust实现的AES-256-GCM

ecies = {version = "0.2", default-features = false, features = ["pure"]}

由于一些性能问题,OpenSSL是默认后端。

纯Rust实现有时很有用,例如在WASM上构建

cargo build --no-default-features --features pure --target=wasm32-unknown-unknown

如果您在现代CPU上选择纯Rust后端,请考虑使用

RUSTFLAGS="-Ctarget-cpu=sandybridge -Ctarget-feature=+aes,+sse2,+sse4.1,+ssse3"

来加速AES加密/解密。当aes-gcm支持自动CPU检测时,这将不再必要。

WASM兼容性

也可以使用纯Rust后端构建到wasm32-unknown-unknown目标。有关更多详细信息,请参阅此仓库

安全性

为什么选择AES-GCM-256和HKDF-SHA256

如AES-GCM-256之类的AEAD方案应该是您的首选对称加密方案,每次加密时都具有唯一的IV。

对于两个非对称密钥之间的共享点上的密钥派生函数,HKDF比SHA256等简单哈希函数更安全已证明

跨语言兼容性

所有功能在不同语言之间相互检查:Python、Rust、JavaScript和Golang。

安全审计

以下依赖项已审计

发布说明

0.2.1

  • 改进错误处理

0.2.0

  • 改进文档
  • 可选纯Rust AES后端
  • WASM兼容性

0.1.1 ~ 0.1.5

  • 升级依赖项
  • 更新文档
  • 修复错误处理

0.1.0

  • 首个beta版本发布

依赖项

~4–6MB
~111K SLoC