#encryption #identity #hierarchical #secure #generate #hibe

hohibe

基于层次身份的加密(HIBE)的Rust实现

1个不稳定版本

0.1.0 2023年11月29日

#1575密码学

LGPL-3.0或更高版

48KB
735

hohibe — 层次身份基于加密

此crate提供了一种Rust的层次身份基于加密的实现。更多信息,请参阅crate文档(运行cargo doc以生成它)。

⚠️ 警告:加密危险品 ☣️

此crate是为了与HIBE进行实验以及为使用HIBE的应用程序和协议原型设计而制作的。它尚未经过审计,尚未经过实战测试,也没有人声称它是安全的。

请自行承担风险,并在了解自己在做什么的情况下使用它!

示例代码

use hohibe::kem::HybridKem;

const MAX_DEPTH: usize = 3;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut rng = rand::thread_rng();
    let kem = HybridKem::new(MAX_DEPTH);
    let (public_key, master_secret) = kem.setup(&mut rng)?;

    // Encrypt for hibe.example.com
    let ciphertext = kem.encrypt(&mut rng, &public_key, &["com", "example", "hibe"], b"GET /")?;

    // Assume that the owner of example.com is given the secret key for their domain ...
    let example_com = kem.generate_key(
        &mut rng,
        &public_key,
        &master_secret,
        &["com", "example"],
    )?;
    // ... and they can use that to derive the key for the subdomain
    let secret_key = kem.derive_key(
        &mut rng,
        &public_key,
        &example_com,
        &["com", "example", "hibe"],
    )?;

    // Now we can decrypt
    let plaintext = kem.decrypt(&public_key, &secret_key, &ciphertext)?;

    assert_eq!(plaintext, b"GET /");

    Ok(())
}

许可证

hohibe是免费软件:您可以按照自由软件基金会发布的GNU lesser通用公共许可证的条款重新分发和/或修改它,许可证版本3,或者(根据您的选择)许可证的任何后续版本。

hohibe是根据希望它将是有用的目的进行分发的,但没有任何保证;甚至没有关于其商业性或适用于特定目的的暗示保证。有关详细信息,请参阅GNU lesser通用公共许可证。

您应已收到GNU lesser通用公共许可证副本,随同Foobar一起。如果没有,请参阅https://www.gnu.org/licenses/

依赖项

~4.5MB
~85K SLoC