#user-key #public-key #encryption-key #policy #partition #attributes #decryption

yanked cover_crypt

基于子集覆盖的关键策略属性加密

6.0.4 2022年9月28日
6.0.3 2022年9月12日
5.0.0 2022年8月24日
4.1.1 2022年8月1日
1.0.3 2022年5月31日

#12 in #user-key

42 monthly downloads

MIT/Apache

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:暴露具有策略管理的公共API
  • interfaces:包含用于与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