阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

  • 2018-09-05
  • 本文字数:1292 字

    阅读完需:约 4 分钟

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

为了帮助开发人员交付安全的加密代码,谷歌开发了 Tink —一个支持多语言的跨平台加密库。他们希望 Tink 能够成为一个社区项目,因此 Tink 从一开始就托管在 GitHub 上,并且已经吸引到了几个外部贡献者。在谷歌,Tink 已经被用来保护多个产品的数据,如 AdMob、Google Pay、Google Assistant、Firebase、Android Search App 等。经过近两年的发展,Tink 正式迎来了 1.2 版本。这也是第一个支持云、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);
复制代码
<pre data-linenum="1" spellcheck="false">
Tink 尽可能消除潜在的误用情况。例如,如果底层加密模式需要 nonce,而重用 nonce 会导致不安全,那么 Tink 就不允许用户传递 nonce。接口的安全保证必须由实现接口的每个基元来满足,这可能会排除掉某些加密模式。对于这些模式,不能将它们添加到现有接口中,因为这样会削弱接口的安全保证,而是添加新的接口,并适当地描述它们的安全保证。

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

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

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

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

2018-09-05 09:164295
用户头像

发布了 731 篇内容, 共 434.0 次阅读, 收获喜欢 1997 次。

关注

评论

发布
暂无评论
发现更多内容

实战|SpringBoot jpa调用MySQL存储过程

写程序的小王叔叔

SpringBoot 2 存储过程 Spring JPA 6月月更

用Python自动化办公(csv项目实战)

王小王-123

csv python项目 自动化办公 大数据分割

OLAP数据库引擎如何选型?

奇点云

OLAP 数据库引擎 OLAP数据库

国内首批!阿里云云原生数据湖产品通过信通院评测认证

阿里云大数据AI技术

大数据 运维 存储

OpenMLDB Meetup No.4 会议纪要

第四范式开发者社区

机器学习 数据库 特征平台 特征工程 实时

Scala 基础 (四):函数式编程【从基础到高阶应用】

百思不得小赵

scala 函数式编程 大数据开发 6月月更

科普达人丨漫画图解什么是eRDMA?

阿里云弹性计算

大数据 TCP/IP RDMA

IOS技术分享| iOS快速生成开发文档(二)

anyRTC开发者

ios objective-c 音视频 移动开发 Jazzy

优惠券种类那么多,先区分清楚再薅羊毛!

CRMEB

led背光板的作用是什么呢?

Dylan

LED LED显示屏

波卡跨链通信源码探秘: 要素篇

彭亚伦

Substrate 波卡

​web前端培训 | JavaScript私有属性的实现方式

@零度

JavaScript 前端开发

百度直播iOS SDK平台化输出改造

百度Geek说

ios 直播

实现多方数据安全共享,解决普惠金融信息不对称难题

易观分析

数据安全

Go 语言入门很简单:Go 处理 XML 文件

宇宙之一粟

xml Go 语言 6月月更

拆分电商系统为微服务

Fan

「架构实战营」

Substrate 源码追新导读: 5月中旬: Uniques NFT模块和Nomination Pool

彭亚伦

Substrate 波卡

Substrate 源码追新导读: 质押额度大幅度削减, RocksDB可以完全被Disable

彭亚伦

Substrate 波卡

今晚19:00知识赋能第2期直播丨OpenHarmony智能家居项目之控制面板界面设计

OpenHarmony开发者

Open Harmony

14岁懂社会-《关于“工作的幸福”这件事儿》读书笔记

懒时小窝

14岁懂社会

揭秘得物客服IM全链路通信过程

得物技术

前端 大前端 通信 IM 客服

Vue3核心之响应式

Python研究所

6月月更

Substrate 源码追新导读: 修复BEEFY的gossip引擎内存泄漏问题, 智能合约删除队列优化

彭亚伦

Substrate 波卡

Substrate 源码追新导读: 波卡系波卡权重计算全面更新, Governance 2.0 版本的优化和调整

彭亚伦

Substrate 波卡

Substrate 源码追新导读: Pallet Alliance 并入主线,

彭亚伦

Substrate 波卡

用Python写一个简易机器人,超级简单!

王小王-123

python编写机器人 python项目 语法知识大全

用Python编写学生成绩管理系统(内附源码)

王小王-123

Python 系统设计 用python编写成绩管理系统 学生成绩管理系统

用Python编写学生成绩计算系统

王小王-123

Python 成绩计算系统 成绩项目 日常编程

网络营销之四大误解

源字节1号

微信小程序 前端开发 后端开发 网站开发

Subtrate 源码追新导读-5月上旬: XCM 正式启用

彭亚伦

Substrate 波卡

Substrate 源码追新导读: Call调用索引化, 存储层事物化全面完成

彭亚伦

Substrate 波卡

谷歌开源的加密库Tink正式发布1.2版本_Google_Thai Duong_InfoQ精选文章