写点什么

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

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

关注

评论

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

开启你的专属智能时代:枫清科技个人智能体限时体验计划上线!

Fabarta

人工智能 智能体 agent

淘宝商品详情API响应数据解析(一)

tbapi

淘宝商品详情接口 淘宝API 天猫商品详情接口 天猫API

使用Svelte和D3实现交互式数据可视化

qife122

数据可视化 Svelte

您的企业需要服务台经理吗?-ManageEngine卓豪

ServiceDesk_Plus

ManageEngine卓豪 卓豪

雪豹大模型驱动效率革命 华鼎冷链科技重构餐饮供应链神经网络

科技汇

淘宝商品评论API接口详解

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝评论API 天猫评论API 淘宝评论采集

亚马逊AI编程软件Kiro:产品经理赶紧抱紧饭碗!

阿星AI工作室

产品 编程 AI 亚马逊 kiro

最佳LED视频墙分辨率推荐

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家 户内led显示屏 算力租赁

当使用__PSLockDownPolicy时绕过PowerShell约束语言模式的技术分析

qife122

PowerShell 安全绕过

完美黑客配置的秘诀?Docker化渗透测试工具集ReconBox详解

qife122

网络安全 渗透测试

Playwright系列课(2) | 元素定位四大法宝:CSS/文本/XPath/语义化定位实战指南

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

springboot项目集成大数据第三方dolphinscheduler调度器

刘大猫

人工智能 算法 DolphinScheduler 调度器 大模型

漏洞披露的罗生门:安全行业的复杂博弈

qife122

漏洞披露 零日漏洞

高性能数据模型设计

俞凡

大数据

Windows系统引入Sudo命令的技术内幕与安全风险分析

qife122

Windows安全 权限提升

活动回顾丨主动式语音 AI:全双工加持,让 AI 既会抢答也懂适时沉默|RTE Meetup

RTE开发者社区

一篇说人话的文章,告诉你 Django、Flask、FastAPI 到底怎么选

程序员晚枫

django flask FastApi

告别 T+1!解密金融级实时数据平台的构建与实践

镜舟科技

数据分析 StarRocks 物化视图 主键模型 湖仓架构

AI虫子种类识别数据集(近3000张图片已划分、已标注)|适用于YOLO系列深度学习分类检测任务【数据集分享】

申公豹

数据集 yolo

如何一眼定位SQL的代码来源:一款SQL染色标记的简易MyBatis插件

京东科技开发者

Spring 拦截器:你的请求休想逃过我的五指山!

京东科技开发者

ZKTorch:通过并行证明累积将机器学习推理编译为零知识证明

qife122

零知识证明 密码学

大数据-45 Redis 从快照到日志:RDB 与 AOF 持久化机制

武子康

Java redis 大数据 缓存 分布式

n8n教程分享,从Github读取.md文档内容

溪抱鱼

人工智能 n8n

AI通话的N种新玩法,让科幻照进现实

脑极体

AI

通过响应篡改绕过OTP验证——移动端渗透测试实战

qife122

移动安全 OTP绕过

揭秘Chrome DevTools:从原理到自定义调试工具

京东科技开发者

鸿蒙NEXT时代你所不知道的全平台跨端框架:CMP、Kuikly、Lynx、uni-app x等

JackJiang

鸿蒙 网络编程 即时通讯 IM

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