Qwen3 惊喜上线阿里云百炼,8款模型全开源!点击免费领取 800万 tokens! 了解详情
写点什么

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

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

关注

评论

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

谈JVM xmx, xms等内存相关参数合理性设置

京东科技开发者

2025包装展-2025年广州国际包装供应链博览会

秋硕展览

Rust 与生成式 AI:从语言选择到开发工具的演进

亚马逊云科技 (Amazon Web Services)

机器学习 深度学习 rust 生成式人工智能

阿里云服务器操作系统 Alibaba Cloud Linux 全新升级,核心场景性能提升超 20%

OpenAnolis小助手

开源 龙蜥社区 Alibaba Cloud Linux

CAS存在的问题及在Java中的解决方式

不在线第一只蜗牛

Java Python

如何在实际开发中深入使用 yalantinglibs 编译期反射库

OpenAnolis小助手

c++ 编译期 yaLanTingLibs

除了deadline,我们还能用什么驱动开发?

思码逸研发效能

程序员 DevOps 软件开发 编码 IT 运维

联手豆包大模型,容联七陌打造更懂客户的智能客服

新消费日报

制造已然走出国门,数据如何走向全球?

奇点云

人工智能 AI 互联网 软件 制造业

SIGGRAPH Asia 2024 | 网易伏羲研究成果入选,3D面部动画技术再获新突破

网易伏羲

论文 网易伏羲

TikTok养号推荐:海外独享原生IP

Ogcloud

TikTok tiktok运营 海外原生IP TikTok养号 tiktok矩阵

《Programming from the Ground Up》阅读笔记:p217-p238

codists

汇编 编程人

【免费可视化仪表盘】轻松实现静态/动态数据可视化图表—积木仪表盘

JEECG低代码

数据分析 数据可视化 BI 报表 数据仪表盘

高性能存储 SIG 月度动态:优化 fuse 提升 AI 存储接入能力,erofs 工具发布新版本

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥社区SIG

全闪 SDS 一体机提供 FC 能力承载医院核心业务

XSKY星辰天合

对象存储 软件定义存储

知识图谱融入向量数据库,带来RAG效果飞升

Zilliz

知识图谱 向量数据库 LLMs rag

实现MySQL异地多活场景

NineData

数据一致性 数据同步 异地多活 NineData 单元节点

浅谈kafka

京东科技开发者

新增六大功能解析!eBPF 技术实践白皮书第二版正式发布(附下载链接)

OpenAnolis小助手

操作系统 ebpf 云栖大会 龙蜥社区 eBPF 技术

2024年第3届海南跨博会及低空经济产业博览会

秋硕展览

全局视角看技术-Java多线程演进史

京东科技开发者

OASA 年中研讨会成功举办,新增 8 家厂商加入联盟,推进 3 个合作方向

OpenAnolis小助手

安全 操作系统 龙蜥社区 龙蜥社区安全联盟 OASA

高性能网络SIG月度动态:推动 SMC 用户态工具支持细粒度透明替换和共享内存占用监控

OpenAnolis小助手

操作系统 smc 龙蜥社区SIG 龙蜥SIG月报 龙蜥高性能网络SIG

【论文速读】|用于安全代码评估的大语言模型:一项多语言实证研究

云起无垠

安全基础设施如何形成统一生态标准?OASA 硬件安全合作计划启动 | 2024 龙蜥大会

OpenAnolis小助手

安全 操作系统 龙蜥社区 龙蜥操作系统大会 龙蜥社区安全联盟

云+AI时代下,Alibaba Cloud Linux 如何进一步演进?

OpenAnolis小助手

开源 AI 操作系统 Alibaba Cloud Linux 阿里云服务器操作系统

深度学习在视觉识别中的突破:从理论到实践

测吧(北京)科技有限公司

测试

AI时代,2024火山引擎飞连新品发布会盛大开启

新消费日报

SD-WAN帮助跨国企业实现网络加速

Ogcloud

网络加速 SD-WAN SD-WAN组网 SDWAN SD-WAN国际专线

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