写点什么

谷歌开源的加密库 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:165597
用户头像

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

关注

评论

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

如何在 Windows 上安装 Python 环境的详细指南

克莱因瓶

音乐 NFT 系统的智能合约开发

北京木奇移动技术有限公司

智能合约 软件外包公司 音乐NFT

普通人如何赶上AI大模型浪潮

老张

人工智能 AI 自由职业 第二曲线 大模型

Kyutai开源端侧模型Helium -1 preview;FoloToy内测「超级智能体」,支持联网查询和语音调整音量语速

声网

我在腾讯用AI写代码

CodeBuddy

如何让敏捷落地?谈谈敏捷工具在团队中的应用实践

爱吃鱼的小雨

敏捷开发 敏捷项目管理 敏捷工具 scrum工具 敏捷研发工具

工作流程图怎么制作?10个流程图模板案例盘点!

职场工具箱

流程图 画图软件 绘图 在线白板 流程图绘制工具

用DevEco Studio模拟器这些能力 没真机也能高效调测鸿蒙原生应用

HarmonyOS开发者

地平线Vision Mamba:超越ViT,最具潜力的下一代通用视觉主干网络

地平线开发者

自动驾驶 算法 地平线征程6

从0到1:基于SSM的陪诊小程序开发笔记(一)

CC同学

利用原生IP做海外电商平台店铺运营有哪些好处

Ogcloud

海外原生IP 海外IP 原生IP 海外IP代理 海外静态IP

火山引擎上线鸿蒙原生智能美化解决方案 轻松提升图形视频美化体验

HarmonyOS开发者

火山引擎

专业解读:JNPF低代码开发平台怎样为企业财务管理创新转型提供数字化赋能

不在线第一只蜗牛

低代码

图片秒变短视频!阿里妈妈“淘宝星辰·图生视频”向商家开放使用

新消费日报

加入我们|申请成为亚马逊云科技 Community Builder,共建云端社区!

亚马逊云科技 (Amazon Web Services)

Easysearch Rollup 使用指南

极限实验室

Rollup Performance easysearch

面向法律场景的大模型RAG检索增强解决方案

阿里云大数据AI技术

人工智能 阿里云 LLM rag PAI

从代理聊到Lambda表达式

陈一之

Java 设计模式 杂谈

【GreatSQL优化器-11】finalize_table_conditions

GreatSQL

10 分钟了解 18 个冷门编程概念

俞凡

最佳实践

音乐NFT系统开发的技术难点

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

智能网联汽车的数据脱敏

芯盾时代

车联网 物联网 数据安全 智能汽车

基于Springboot: 宠物小程序开发笔记(上)

CC同学

《CPython Internals》阅读笔记:p151-p151

codists

CPython Internals

PIRF 421:Measurements – Embracing the Imperial System

Echo!!!

English

MIAOYUN荣获“新质榜样·2024信创力量最佳技术解决方案奖”

MIAOYUN

云计算 云原生 解决方案 信创 超融合

SimCorp最新买方调查显示,人工智能必须更好地融入投资流程

财见

音视频编解码的性能优化

北京木奇移动技术有限公司

软件外包公司 音视频编码 音视频解码

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