Tink 多语言、跨平台加密开发库

开源网站开源项目 24-04-11 10:04:24

Tink 是一个多语言、跨平台的加密开发库,提供安全,易于正确使用和难以滥用的加密 API,目前 Tink 已经被用于保护许多谷歌内部产品的数据,如 AdMob、Google Pay、Google Assistant、Firebase 与 Android Search App 等。

Tink 旨在提供安全、易于正确使用且难以滥用的加密 API,它建立在现有安全相关的库之上,如 BoringSSL 和 Java Cryptography Architecture,但谷歌专门的团队 Project Wycheproof 发现了这些库中的一些弱点,Tink 进行了跟进,使之更加安全。

使用 Tink,许多常见的加密操作,如数据加密、数字签名等只需几行代码就可以完成,以下是使用 Java 中的 AEAD 接口加密和解密的 demo:

importcom.google.crypto.tink.Aead;importcom.google.crypto.tink.KeysetHandle;importcom.google.crypto.tink.aead.AeadFactory;importcom.google.crypto.tink.aead.AeadKeyTemplates;//1.Generatethekeymaterial.KeysetHandlekeysetHandle=KeysetHandle.generateNew(AeadKeyTemplates.AES256_EAX);//2.Gettheprimitive.Aeadaead=AeadFactory.getPrimitive(keysetHandle);//3.Usetheprimitive.byte[]plaintext=...;byte[]additionalData=...;byte[]ciphertext=aead.encrypt(plaintext,additionalData);

Tink 希望消除尽可能多的潜在误用。例如,如果底层加密模式需要 nonce(密码学中只被使用一次的任意或非重复的随机数),但重用nonce 的话会产生安全问题,那么这时 Tink 将不允许用户传递 nonce。

Tink 的功能很多,大概有如下几个方面:

可以安全抵御选择密文攻击,允许安全审计员和自动化工具快速发现那些与安全要求不匹配的代码。

隔离了用于潜在危险操作的 API,例如从磁盘加载明文密钥。

为密钥管理提供支持,包括密钥轮换和逐步淘汰已弃用的密码。

可以通过设计进行扩展:可以轻松添加自定义加密方案或内部密钥管理系统,以便与 Tink 的其它部分无缝协作。Tink 的任何部分都难以更换或移除,所有组件都是可组合的,并且可以以各种组合进行选择和组合。例如,如果只需要数字签名,则可以排除对称密钥加密组件,以最大限度地减少应用程序中的代码大小。

[Tink 多语言、跨平台加密开发库]相关推荐
EGL 高级程序语言

EGL 高级程序语言

EGL是IBM设计的面向企业的平台无关高级程序语言,语法类似其它常见语言,EGL程序可以编译成COBOL、Java或……...

FreeType 字体工具

FreeType 字体工具

FreeType 2被设计为一种占用空间小的、高效的、高度可定制的、并且可以产生可移植的高品质输出(符号图像……...

Plane 项目管理工具

Plane 项目管理工具

Plane 是开源项目管理工具,可作为 JIRA 的开源替代方案,其界面简洁美观,支持 Docker 部署,还支持从 G……...

Boom Web 压力测试工具

Boom(已改名为 hey)是一个用 Go 语言编写的 Web 压力测试小工具,类似 ApacheBench。 使用实例: %boom……...

Haskell 函数式编程语言

Haskell是一种纯函数式编程语言,它的命名源自美国数学家Haskell Brooks Curry,他在数学逻辑方面上的工……...

今日开源
  1. Eigen 线性算术的 C++ 模板库

    Eigen 是一个线性算术的C++模板库,包括:vectors, matrices, 以及相关算法。功能强大、快速、优雅以及支持多平台。 示例代码: #include <iostream>#include <Eigen/Dense>using namespace Eigen;int……

    开源软件 2024-05-10

  2. OSv 开源操作系统

    OSv 是专为在虚拟机上运行单一应用程序而设计的开源操作系统,采用BSD许可证授权,旨在在云端取代Linux。 与为大量物理机设计的传统操作系统相比,OSv是一种开放源代码的通用模块化Unikernel,旨在作为虚拟机在hyp……

    开源软件 2024-05-10

  3. Faust Python 流处理

    Faust 是一个流处理库,将想法从 Kafka Streams 移植到 Python。 它在 Robinhood 用于构建高性能的分布式系统和实时数据管道,每天处理数十亿个事件。 Faust 提供流处理和事件处理,与 Kafka Streams,Apache Spar……

    开源软件 2024-05-10

返回顶部小火箭