6.0.4 |
|
---|---|
6.0.3 |
|
5.0.0 |
|
4.1.1 |
|
1.0.3 |
|
#12 in #user-key
42 monthly downloads
205KB
4K SLoC
CoverCrypt
实现了 CoverCrypt 公钥算法,该算法使用属性来分割密文,并允许在属性上颁发具有访问策略的用户密钥。
快速替代KP-ABE
CoverCrypt被设计为GPSW06等基于属性的关键策略加密方案的快速替代方案(>50x更快)。
通常在混合加密方案中用作KEM来封装DEM的对称密钥(在提供的混合实现中为AES 256 GCM)
CoverCrypt encryption over 1 partition:
time: [156.28 µs 156.73 µs 157.21 µs]
Found 538 outliers among 5000 measurements (10.76%)
207 (4.14%) high mild
331 (6.62%) high severe
CoverCrypt encryption over 3 partitions
time: [255.07 µs 255.70 µs 256.36 µs]
Found 364 outliers among 5000 measurements (7.28%)
135 (2.70%) high mild
229 (4.58%) high severe
CoverCrypt decryption with a 1 partition access user key
time: [208.39 µs 209.17 µs 209.98 µs]
Found 601 outliers among 5000 measurements (12.02%)
41 (0.82%) low mild
139 (2.78%) high mild
421 (8.42%) high severe
CoverCrypt decryption with a 3 partition access user key
time: [260.87 µs 261.85 µs 262.85 µs]
Found 669 outliers among 5000 measurements (13.38%)
13 (0.26%) low mild
160 (3.20%) high mild
496 (9.92%) high severe
在Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz上对数千个样本进行单线程测量
运行 cargo bench
以获取详细信息(见下文)
构建和测试
该包分为3个主要模块
cover_crypt_core
:包含CoverCrypt的加密代码。api.rs
:暴露具有策略管理的公共APIinterfaces
:包含用于与Cosmian匹配的接口,以及用于与其他语言集成的Foreign Function Interface (FFI)。特别是,该模块中的代码演示了涉及ABE和AES的混合加密的使用,并将其作为FFI暴露。
仅构建核心,运行
cargo build --release
要构建不带FFI的Cosmian接口,传递 interfaces
功能标志,即
cargo build --release --features interfaces
要构建一切,包括FFI,请传递ffi
特性标志,或使用--all-features
,即:
cargo build --release --all-features
后者将构建一个共享库,可以使用(Linux)来验证FFI符号是否存在:
objdump -T target/release/libcover_crypt.so
代码中包含了许多您可以使用以下方式运行的测试:
cargo test --release --all-features
为不同的glibc构建库
前往构建目录,查看为GLIBC 2.17构建的示例。
为Pyo3构建
maturin develop --cargo-extra-args="--release --features python
基准测试
基准测试使用Criterion库。
运行所有基准测试
cargo bench --features ffi
注意:不幸的是,我们无法自动告诉Criterion以激活ffi
特性来运行基准测试,我们需要指定它。
仅运行非FFI基准测试
cargo bench
火焰图
要在Criterion的基准测试上生成Flamegraph
cargo flamegraph --bench benches --features ffi -- --bench
依赖项
~4–11MB
~121K SLoC