`

谷歌正式开源其多语言跨平台加密库Tink

阅读更多

在谷歌,很多产品团队使用加密技术来保护用户数据。在加密技术领域,一个很细微的错误都会产生非常严重的后果。想要正确实现加密技术,可能需要先消化数十年的学术文献。毋庸置疑,很多开发人员没有这么多时间。

为了帮助开发人员交付安全的加密代码,谷歌开发了 Tink,一个支持多语言的跨平台加密库。他们希望 Tink 能够成为一个社区项目,因此 Tink 从一开始就托管在 GitHub 上,并且已经吸引到了几个外部贡献者。在谷歌,Tink 已经被用来保护多个产品的数据,如 AdMob、Google Pay、Google Assistant、Firebase、Android Search App 等。经过近两年的发展,Tink 正式迎来了 1.2 版本。这也是第一个支持云、Android、iOS 的版本!

GitHub 地址:https://github.com/google/tink

Tink 致力于提供安全且易于使用的加密 API。Tink 建立在现有的库之上,如 BoringSSL 和 Java Cryptography Architecture,同时对这些库中存在的弱点进行了加固。

有了 Tink,很多常见的加密操作(如数据加密、数字签名等)只需几行代码即可完成。以下是使用 AEAD 接口加密和解密的示例(Java 版):

import com.google.crypto.tink.Aead;
import com.google.crypto.tink.KeysetHandle;
import com.google.crypto.tink.aead.AeadFactory;
import com.google.crypto.tink.aead.AeadKeyTemplates;
// 1. Generate the key material.
KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES256_EAX);
// 2. Get the primitive.
Aead aead = AeadFactory.getPrimitive(keysetHandle);
// 3. Use the primitive.
byte[] plaintext = ...;
byte[] additionalData = ...;
byte[] ciphertext = aead.encrypt(plaintext, additionalData);

Tink 尽可能消除潜在的误用情况。例如,如果底层加密模式需要 nonce,而重用 nonce 会导致不安全,那么 Tink 就不允许用户传递 nonce。接口的安全保证必须由实现接口的每个基元来满足,这可能会排除掉某些加密模式。对于这些模式,不能将它们添加到现有接口中,因为这样会削弱接口的安全保证,而是添加新的接口,并适当地描述它们的安全保证。

Tink 在接口中提供了安全属性描述(例如安全抵御选择密文攻击),让安全审计员和自动化工具可以快速发现安全保证与安全要求不匹配的用法。Tink 还隔离了用于进行潜在危险操作的 API(例如从磁盘加载明文密钥),这样就可以发现、限制、监视和记录它们的使用。

Tink 支持密钥管理,包括密钥轮换和逐步淘汰已弃用的密码。例如,如果发现加密原语被破坏,可以通过旋转秘钥切换到不同的原语,而无需更改或重新编译代码。

Tink 还支持扩展:可以轻松地添加自定义加密方案和密钥管理系统,与 Tink 的其他部分无缝协作。 在 Tink 中,没有哪个部分是难以更换或移除的,所有组件都是可组合的。例如,如果只需要数字签名,就可以移除对称密钥加密组件,以便最大限度地减少应用程序中的代码量。

要使用 Tink,可以参考 Java、C ++ 何 Obj-C 的 HOW-TO(在 docs 文件夹中)。如果想要与 Tink 开发人员讨论或获取项目的更新通知,可以订阅邮件列表,只需发送一封空电子邮件至 tink-users+subscribe@googlegroups.com 即可。或者在 StackOverflow 上发布问题,并使用 tink 作为标签。

邮件列表:https://groups.google.com/forum/#!forum/tink-users

分享到:
评论

相关推荐

    Java_Tink是一个多语言跨平台的开源库,它提供了安全、易于正确使用且不易误用的加密api.zip

    这个库不仅限于Java,还支持多种编程语言,实现了跨平台的兼容性,从而为开发者提供了一种统一的方式来处理加密任务。Java_Tink的核心理念是为普通开发者提供高级别的API,这些API在底层已经考虑到了许多安全最佳...

    Tink是一个小型Java加密库

    1. **多语言支持**:虽然Tink最初是用Java编写的,但它也提供了C++、Python和Go的版本,方便跨平台开发。 2. **API设计**:Tink的API设计简洁,遵循“最小权限”原则,使得开发人员可以快速上手,同时避免过度复杂...

    Tink:一个提供简单安全的加密 API 的库-开源

    Tink 是一个多语言、跨平台的开源库,它提供安全、易于正确使用且难以(更)误用的加密 API。 Tink 是由 Google 的密码学家和安全工程师编写的开源密码学库。 Tink 安全且简单的 API 通过以用户为中心的设计、仔细的...

    小叮当:Tink是一个多语言,跨平台的开放源代码库,它提供安全,易于正确使用且难以滥用的加密API。

    一种多语言,跨平台的库,提供安全,易于正确使用且难以滥用的加密API。 Ubuntu macOS 指数 介绍 在您的应用程序中使用加密技术像在黑暗中玩杂耍一样。 Tink是由Google的一组密码学家和安全工程师编写的密码库。 ...

    tink_encryption:尝试使用Google Tink库进行加密

    Tink是一个开源的、多语言的加密库,旨在简化安全编码,提供了一套高级API,使得开发者能够轻松地应用加密技术,而无需深入了解加密学的复杂性。 首先,确保已经安装了Python环境。在本例中,我们使用pyenv来创建一...

    tink,tink是一个小型的密码库,它提供了一种安全、简单、灵活和快速的方法来完成一些常见的密码任务。它是由一群密码学家和谷歌的安全工程师编写的,但它不是谷歌的官方产品。.zip

    1. **多语言支持**:Tink支持多种编程语言,包括Java、Python、C++、Android和Go等,使得不同平台和语言的开发者都能轻松地集成和使用。 2. **易于使用**:Tink的API设计注重用户体验,尽可能简化复杂的密码学概念...

    tinklj:Google Tink库的加密Clojure Api

    8. **多语言支持**:Google Tink库本身是跨语言的,Tinklj作为其Clojure接口,使得Clojure应用能无缝对接其他语言实现的安全服务。 使用Tinklj时,开发者需要理解并遵循加密的最佳实践,如定期轮换密钥、正确处理...

    Tink in Java 源代码

    5. **多语言支持**:虽然我们讨论的是Java版本,但Tink也支持其他语言如Python和C++,这使得跨平台的安全应用开发成为可能。源代码中可以看到不同语言之间的接口设计和交互。 6. **测试与验证**:Tink 源码包含丰富...

    tink-core-android:Tink Core Android

    【Tink Core Android】是Google开发的一个开源安全库,主要用于Android平台,旨在简化加密和安全相关的编程任务。这个库的核心目标是提供一个易于使用、安全可靠且可扩展的框架,让开发者可以方便地在应用程序中集成...

    tink_http:跨平台HTTP抽象

    Haxe是一种多平台的静态类型编程语言,能够编译成多种目标平台,如JavaScript、C++、Java等。因此,`tink_http`的跨平台特性使得开发者能够在这些平台上无缝地进行HTTP交互。 在客户端方面,`tink_http`提供了强大...

    AES-256加密.rar

    在实际开发中,使用开源库如Apache Commons Crypto、Bouncy Castle或Google的Tink可以帮助简化AES-256的实现,这些库通常提供了更完善的加密选项和错误处理机制。 总之,AES-256加密在Java开发中扮演着至关重要的...

    tink_http_fetch:跨平台HTTP提取API

    参见tink.http.Client.fetch() 。 小叮当HTTP提取 基于tink_http的类似访存API 该API非常简单: class Fetch { public static function fetch ( url : Url , ? options : FetchOptions ) : Future ; } typedef ...

    毕业设计源码java-Tink:Tink,Flink的时态图分析库

    该存储库包含库 Tink,这是一个使用 Flink 数据流进行时态图分析的库。 此自述文件包含库的基本设置。 这仍在进行中,以后可能会扩展。 项目信息 由于该库中的所有内容都与图形有关,因此我们广泛使用了。 这是一个...

    Tink in java

    Tink in java java程序员人手必备的资料

    Python库 | tink-1.6.1-cp38-cp38-manylinux2014_x86_64.whl

    资源分类:Python库 所属语言:Python 资源全名:tink-1.6.1-cp38-cp38-manylinux2014_x86_64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    tink:用于配置裸机的工作流引擎

    这个存储库是,这意味着它基于未经测试的想法或技术,尚未建立或最终确定,或者涉及全新的创新风格! 这意味着支持是最大的努力(充其量!),我们强烈建议您不要在生产中使用它。 执照 Tinkerbell 根据 Apache ...

    tink-back-to-top-angular-源码.rar

    【标题】"tink-back-to-top-angular-源码"指的是一个使用Angular框架实现的返回顶部功能的源代码库。这个库可能包含实现页面滚动到顶部交互的组件、服务和其他相关资源,旨在帮助开发者轻松地在自己的Angular应用中...

    tink_web:Tinkerbell Web框架

    Tink_web是一个基于Haxe语言开发的Web框架,它的核心目标是为开发者提供一个跨平台、高效且易于使用的工具,以便构建RESTful API服务。这个框架借鉴了其他成熟框架的理念,同时结合Haxe语言的强大特性,使其在灵活性...

    tink-checkbox-angular

    Tink复选框Angular指令v1.0.8该存储库是做什么用的? Tink复选框Angular指令使您可以创建嵌套的复选框,其中子元素将影响父复选框的状态。 Tink是内部开发的易于使用的前端框架,可用于快速制作各种网站和应用程序的...

Global site tag (gtag.js) - Google Analytics