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

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

GitHub 地址:https://github.com/google/tink

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、C ++ 何 Obj-C 的 HOW-TO(在 docs 文件夹中)。如果想要与 Tink 开发人员讨论或获取项目的更新通知,可以订阅邮件列表,只需发送一封空电子邮件至 tink-users+subscribe@googlegroups.com 即可。或者在 StackOverflow 上发布问题,并使用 tink 作为标签。

邮件列表:https://groups.google.com/forum/#!forum/tink-users

谷歌正式开源其多语言跨平台加密库Tink相关推荐

  1. Mozilla 修复跨平台加密库 NSS 中的严重漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Mozilla 修复了影响跨平台网络安全服务 (NSS) 加密库中一个严重的内存损坏漏洞 (CVE-2021-43527). NSS 可用于开发 ...

  2. 谷歌正式开源Model Search!自动优化并识别AI模型,最佳模版唾手可得

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要8分钟 Follow小博主,每天更新前沿干货   Model Search:查找最佳机器学习模型的开源平台 2 月 19 日,谷歌 宣布 发布 ...

  3. 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

    1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...

  4. 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源

    网上看到关于微信官方的跨平台跨业务的终端基础组件Mars的介绍文章,转载这这里. 源代码: https://github.com/Tencent/mars 作者:男人 链接:https://zhuan ...

  5. 微信打开时支持消息通知横幅引热议;​Google和甲骨文的云服务因英国高温天气而下线;谷歌发布开源开发语言Carbon|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. 中文编程语言Z语言开源正式开源!!!

    (Z语言基于.NET环境,源码中有很多高技术的代码,让更多的人知道对大家有会有很好的帮助,请管理员一点要批准放在首页) 本人实现的中文编程语言Z语言现在正式开源,采用LGPL协议. 编译器核心的网址为 ...

  7. 又被 AI 抢饭碗?2457 亿参数规模,全球最大中文人工智能巨量模型 “源1.0”正式开源...

    作者 | 伍杏玲 出品 | AI科技大本营(ID:rgznai100) 输入: 昔我往矣,杨柳依依. 今我来思,雨雪霏霏. 行道迟迟,载渴载饥. 我心伤悲,莫知我哀! (以战争为题写一首诗) 回复: ...

  8. 华为方舟编译器正式开源,采用自主平台托管

    前不久华为开发者大会上,华为给出了鸿蒙OS及方舟编译器的开源时间表,这着实让开发者们兴奋了一把.现在华为兑现承诺,8月31日,华为方舟编译器开源官网正式上线了. 方舟开源,自主托管 根据公布的信息,本 ...

  9. html rpc文档,HTML5 DRM 正式成为 Web 标准,百度正式开源RPC框架brpc

    不顾近30%的成员反对,W3C(万维网联盟)正式宣布将加密媒体扩展(EME)--即集成DRM数字版权保护的API纳入HTML5建议标准. 自由软件基金会反对DRM的原因在于,如果在HTML5标准中加入 ...

最新文章

  1. 【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 形参指针间接赋值 | 返回值状态 | 形参指针处理 | 形参指针判空 | 形参返回值 )
  2. 【正一专栏】扶不上墙的大巴黎和自信过度的热刺
  3. golang检查tcp是否可用_宕机处理:Kubernetes集群高可用实战总结
  4. “直播第一股”映客,讲得好社交新故事吗?
  5. hihocder 1181 : 欧拉路·二
  6. 信息学奥赛一本通(1126:矩阵转置)
  7. 《数据结构》双链循环线性表
  8. jquery实现网易云音乐的歌词展示部分
  9. EasyOcr报错 --- [WinError 10054] An existing connection was forcibly closed by the remote host
  10. 微信公众号生成临时二维码
  11. 【ROOT from CERN】——TCanvas绘制画布
  12. 法拉克机器人自动怎么调_FANUC机器人:参考位置功能介绍与设定方法
  13. 微信h5缓存清理技巧
  14. word文档被覆盖了怎么恢复原状
  15. java基础应用程序超市收银_超市收银程序(JAVA课程设计 2011)
  16. java读取纯真IP数据库qqwry.dat的源代码
  17. (附源码)计算机毕业设计SSM基于的仓库管理系统
  18. Open3d-Point cloud (点云)
  19. Fastboot enhance flash
  20. 电动汽车 simulink仿真模型,可进行整车动力性仿真测试(最高车速,最大爬坡,加入时间)和NEDC工况能耗测试(电耗)

热门文章

  1. js根据name值获取元素
  2. Gherkin语法详解之Transforming Data Tables(六)
  3. linux dns chroot,chroot环境下dns解析不好用
  4. 2019专业创业赛事活动平台
  5. ORacle空间数据
  6. php中的时间戳_php时间戳是什么
  7. Ansys·Icem·T型喷管的网格生成
  8. const和extern用法
  9. 网站本地化翻译、建设助力企业拓展全球市场 安睿杰翻译
  10. 皕杰报表web应用服务器的差异