谷歌开源的加密库Tink正式发布1.2版本

栏目: 软件资讯 · 发布时间: 5年前

内容简介:在谷歌,很多产品团队使用加密技术来保护用户数据。在加密技术领域,一个很细微的错误都会产生非常严重的后果。想要正确实现加密技术,可能需要先消化数十年的学术文献。毋庸置疑,很多开发人员没有这么多时间。为了帮助开发人员交付安全的加密代码,谷歌开发了Tink(Tink致力于提供安全且易于使用的加密API。Tink建立在现有的库之上,如BoringSSL和Java Cryptography Architecture,同时对这些库中存在的弱点进行了加固。

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

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

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( https://github.com/google/tink/blob/master/docs/JAVA-HOWTO.md )、C ++( https://github.com/google/tink/blob/master/docs/CPP-HOWTO.md )和Obj-C( https://github.com/google/tink/blob/master/docs/OBJC-HOWTO.md )的HOW-TO。如果想与Tink开发人员讨论或获取项目的更新通知,可以订阅邮件列表( https://groups.google.com/forum/#!forum/tink-users ),只需发送一封空电子邮件至tink-users+subscribe@googlegroups.com即可。或者在StackOverflow上发布问题,并使用tink作为标签。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高效团队开发

高效团队开发

[日] 池田尚史、[日] 藤仓和明、[日] 井上史彰 / 严圣逸 / 人民邮电出版社 / 2015-7 / 49.00

本书以团队开发中所必需的工具的导入方法和使用方法为核心,对团队开发的整体结构进行概括性的说明。内容涉及团队开发中发生的问题、版本管理系统、缺陷管理系统、持续集成、持续交付以及回归测试,并且对“为什么用那个工具”“为什么要这样使用”等开发现场常有的问题进行举例说明。 本书适合初次接手开发团队的项目经理,计划开始新项目的项目经理、Scrum Master,以及现有项目中返工、延期问题频发的开发人......一起来看看 《高效团队开发》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具