#aead #tink

tin-k-aead

为 Google 的 Tink 加密库的 Rust 版本提供 AEAD 功能

8 个版本

0.2.5 2023年3月14日
0.2.4 2022年3月25日
0.2.3 2022年1月3日
0.2.1 2021年10月8日
0.1.0 2021年1月21日

#162 in 加密学

Download history 7589/week @ 2024-03-14 2348/week @ 2024-03-21 19243/week @ 2024-03-28 3145/week @ 2024-04-04 4372/week @ 2024-04-11 4580/week @ 2024-04-18 4359/week @ 2024-04-25 3085/week @ 2024-05-02 2472/week @ 2024-05-09 10592/week @ 2024-05-16 10225/week @ 2024-05-23 3959/week @ 2024-05-30 10314/week @ 2024-06-06 6027/week @ 2024-06-13 6227/week @ 2024-06-20 8039/week @ 2024-06-27

31,603 每月下载量
用于 3 crates

Apache-2.0

335KB
5.5K SLoC

Tink-Rust: 带附加数据的认证加密

Docs MSRV

此 crate 提供了认证加密带附加数据 (AEAD) 功能,如上游 Tink 文档 中所述。

用法

fn main() -> Result<(), Box<dyn Error>> {
    tink_aead::init();
    let kh = tink_core::keyset::Handle::new(&tink_aead::aes256_gcm_key_template())?;
    let a = tink_aead::new(&kh)?;

    let pt = b"this data needs to be encrypted";
    let aad = b"this data needs to be authenticated, but not encrypted";
    let ct = a.encrypt(pt, aad)?;
    println!("'{}' => {}", String::from_utf8_lossy(pt), hex::encode(&ct));

    let pt2 = a.decrypt(&ct, aad)?;
    assert_eq!(&pt[..], pt2);
    Ok(())
}

许可证

Apache 许可证,版本 2.0

已知问题

  • 在版本 0.2.4 之前,AES-CTR-HMAC-AEAD 密钥和 subtle::EncryptThenAuthenticate 实现可能容易受到选择密文攻击。攻击者可以生成绕过 HMAC 验证的密文,如果且仅当以下所有条件都为真
    • Tink 用于系统,其中 usize 是 32 位整数。这通常在 32 位机器上是这种情况。
    • 攻击者可以指定长的关联数据 (>= 2^29 字节 ~ 536MB)

免责声明

这不是一个官方支持的 Google 产品。

依赖项

~3.5–6MB
~102K SLoC