Tink

多语言、跨平台加密开发库
授权协议 Apache-2.0
开发语言 Java C/C++
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 不详
投 递 者 何兴邦
操作系统 跨平台
开源组织 Google
适用人群 未知
 软件概览

Tink 是一个多语言、跨平台的加密开发库,提供安全,易于正确使用和难以滥用的加密 API,目前 Tink 已经被用于保护许多谷歌内部产品的数据,如 AdMob、Google Pay、Google Assistant、Firebase 与 Android Search App 等。

Tink 旨在提供安全、易于正确使用且难以滥用的加密 API,它建立在现有安全相关的库之上,如 BoringSSL 和 Java Cryptography Architecture,但谷歌专门的团队 Project Wycheproof 发现了这些库中的一些弱点,Tink 进行了跟进,使之更加安全。

使用 Tink,许多常见的加密操作,如数据加密、数字签名等只需几行代码就可以完成,以下是使用 Java 中的 AEAD 接口加密和解密的 demo:

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 的功能很多,大概有如下几个方面:

  • 可以安全抵御选择密文攻击,允许安全审计员和自动化工具快速发现那些与安全要求不匹配的代码。

  • 隔离了用于潜在危险操作的 API,例如从磁盘加载明文密钥。

  • 为密钥管理提供支持,包括密钥轮换和逐步淘汰已弃用的密码。

  • 可以通过设计进行扩展:可以轻松添加自定义加密方案或内部密钥管理系统,以便与 Tink 的其它部分无缝协作。Tink 的任何部分都难以更换或移除,所有组件都是可组合的,并且可以以各种组合进行选择和组合。例如,如果只需要数字签名,则可以排除对称密钥加密组件,以最大限度地减少应用程序中的代码大小。

  • 下文转载自:微信公众号:聊聊架构(archtime) 中的文章《谷歌正式开源其多语言跨平台加密库Tink》作者:Thai Duong 译者:无明; Tink是谷歌为了帮助开发人员交付安全的加密代码而开发的一个支持多语言的跨平台加密库。Tink 致力于提供安全且易于使用的加密 API。Tink 建立在现有的库之上,如 BoringSSL 和 Java Cryptography Architectur

  • 本篇博客为中文翻译博客,转载请注明出处 Tink是Pixi渲染引擎的一套易于使用的交互工具。您可以使用Tink轻松创建: 拖放对象。 具有可定制动作的可点击、可触摸按钮。 一个通用的指针对象,同时适用于触摸和鼠标。 行为像按钮的交互式精灵。 (重要!这个库的目标是Pixi 3.0.11,这是Pixi最稳定的版本,也是唯一推荐使用的版本。当v4分支成熟时,这个库最终将升级到Pixi v4。) 安装配

  • 在谷歌,很多产品团队使用加密技术来保护用户数据。在加密技术领域,一个很细微的错误都会产生非常严重的后果。想要正确实现加密技术,可能需要先消化数十年的学术文献。毋庸置疑,很多开发人员没有这么多时间。 为了帮助开发人员交付安全的加密代码,谷歌开发了 Tink,一个支持多语言的跨平台加密库。他们希望 Tink 能够成为一个社区项目,因此 Tink 从一开始就托管在 GitHub 上,并且已经吸引到了几个

  • Tink,Google开源的专业加密库 github 密码学是一门复杂的学科,对于开发人员来说应该做到的大概是 加密算法的特点 适用场景 优点、缺点 加密算法的使用 在开发中我们可以直接使用Tink进行一些加密相关操作 Tink中的加密支持 在Tink中提供了Aead、DeterministicDead、Hybrid、Mac及signature的支持。从包结构看Tink的构成 aead, (Aut

  • Tikn是什么 由Google的密码学家和安全工程师联合编写的加密库。源于与Google产品团队合作的丰富经验,提供了即便没有加密经验也可以安全使用的API。 GitHub源码地址: https://github.com/google/tink 通过官方demo我们可以知道Tink的使用方式。  maven配置方式导入依赖 <dependency> <groupId>com.google.cr

  • Tink是由一些谷歌加密工程师和安全工程师开发的一种多语言的、跨平台的加密软件库,意在帮助开发人员无需成为加密专家就可以正确地实现加密。经过最近两年的开发,1.2版本中添加了对GCP、安卓和iOS平台以及C++和Objective-C的支持。\\ Tink源自于另一个谷歌的项目。该项目意在加固加密软件库应对偏斜随机数(biased nonces)、无效曲线(invalid curves)等已知攻击

 相关资料
  • 我正在更新一个密码加密实用程序,从完全自带的东西到一个围绕Jasypt和Bouncy Castle构建的。实用程序加密密码;然后,加密的字符串被补丁到属性文件中,并由Grails应用程序回读和解密。 我编写了一个Java命令行实用程序来加密密码。相关的Java代码是:

  • 多平台开发 一个网站或应用不仅能运行在各种台式机, 笔记本电脑, 平板和手机, 还能运行于少部分其它设备(手表, 温控器, 电冰箱等等). 你将怎么决定支持哪些平台和为支持这些平台, 怎么去开发, 这被称为多平台开发策略. 接下来, 我会列出常见的多平台开发策略: 创建 响应式 Web 设计 (RWD) 网站/APP 创建 RESS (基于服务端组件的响应式 Web 设计) 网站/APP 创建 自

  • 本文向大家介绍PHP语言的一大优势是跨平台,什么是跨平台?相关面试题,主要包含被问及PHP语言的一大优势是跨平台,什么是跨平台?时的应答技巧和注意事项,需要的朋友参考一下 PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以叫跨平台

  • 概述 ThinkCMF已经默认开启了多语言的支持,后台以语言包形式实现多语言,前台以语言包和多模板的形式实现多语言. 语言包 ThinkCMF开启的语言有三个,分别是zh-cn,en-us,zh-tw,此项配置在application/Common/Conf/config.php配置文件下,可以通过更改LANG_LIST的值增加语言. 语言包分为框架核心语言包(在simplewind/Core/L

  • 问题内容: Mono跨平台正在采取什么措施?如何为Windows编译(在Linux中),如何在Linux中运行代码(因为没有.NET JIT编译器)? 那么使用Mono开发的特殊之处是什么?与使用Visual Studio进行开发相比,有什么优势(跨平台的东西除外)? 问题答案: 在Mono中进行开发绝对是跨平台的,有一个 警告请求者 : 努力避免使用Windows特定的API 与本机Window

  • 多平台支持 Mpx支持在多个小程序平台中进行增强,目前支持的小程序平台包括微信,支付宝,百度,qq和头条,不过自2.0版本后,Mpx支持了以微信增强语法为base的跨平台输出,实现了一套业务源码在多端输出运行的能力,大大提升了多小程序平台业务的开发效率,详情可以查看template增强特性 不同平台上的模板增强指令按照平台的指令风格进行设计,文档和代码示例为了方便统一采用微信小程序下的书写方式。

  • Chromium是一个巨大而复杂的跨平台产品。我们试图在不同平台间共享尽可能多的代码,同时为每个平台用最合适的方式实现UI和操作系统集成。这提供了一个更好的用户体验,但它给代码增加了额外的复杂度。这个文档描述了保持这种跨平台代码简洁性的推荐实践。 我们使用大量不同带后缀的文件来表示一个文件应该被使用的时机: Mac文件中,低层级文件使用_mac后缀,Cocoa(Mac UI)文件使用_cocoa后

  • 有没有人愿意帮助我在使用android studio的kotlin multi-platform mobile(KMM)和javafx(gluon)进行iOS/android应用程序开发之间做出决定。 -运行时性能(启动时间、代码大小、功耗等)-KMM的学习曲线(我不知道Kotlin,但如果KMM的开发环境只是在windows上两个目标平台,我就学会了。[gluon中的android开发需要lin