【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Tink:用于 GCP、安卓和 iOS 的谷歌加密软件库

  • 2018-09-10
  • 本文字数:1122 字

    阅读完需:约 4 分钟

Tink 是由一些谷歌加密工程师和安全工程师开发的一种多语言的、跨平台的加密软件库,意在帮助开发人员无需成为加密专家就可以正确地实现加密。经过最近两年的开发, 1.2 版本中添加了对 GCP、安卓和 iOS 平台以及 C++ 和 Objective-C 的支持

Tink 源自于另一个谷歌的项目。该项目意在加固加密软件库应对偏斜随机数(biased nonces)、无效曲线(invalid curves)等已知攻击,并确保DSA、RSA、AES-EAX 等广为使用的加密算法给出正常的行为。基于该项目的经验,谷歌工程师着手创建了这个新的软件库,目标是提供易于正确使用并难以误用的安全API。例如,为防止出现可导致加密算法安全性降低的随机数重用问题,Tink 不允许用户传递随机数。同时,Tink 努力使其提供的每个API 都有尽可能明确的安全保证。例如,如果一个特定的操作对选择密文攻击(chosen-ciphertext attack)是安全的,那么该保证会显示在接口上,并且实现该操作所用的每个原语都必须满足同一保证。

Tink 当前提供四种加密操作。每种操作都是由特定的原语实现的:

  • 对相关联数据经认证的加密。(原语:AEAD)。
  • 消息认证代码(原语:MAC)。
  • 数字签名(原语:PublicKeySign 和 PublicKeyVerify)
  • 混合加密(原语:HybridEncrypt 和 HybridDecrypt)。

每个操作都有一组关联的最小属性,并具有一个保证。一个原语可以有多种实现,用户通过实例化相应类型的密钥选择具体使用的实现。例如,下面的代码使用 AEAD 原语实现 AES-EAX 加密文本:

复制代码
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. 生成密钥。
KeysetHandle keysetHandle = KeysetHandle.generateNew(
AeadKeyTemplates.AES256_EAX);
// 2. 获取原语。
Aead aead = AeadFactory.getPrimitive(keysetHandle);
// 3. 使用原语。
byte[] plaintext = ...;
byte[] additionalData = ...;
byte[] ciphertext = aead.encrypt(plaintext, additionalData);

除了加密操作,Tink 还提供对密码管理的支持,包括密钥版本管理、密钥旋转,以及支持远程密钥管理系统(KMS,key management system)。当前,Tink 支持下列 KMS: - Google Cloud KMS。

  • Amazon KMS。
  • Android Keystore。
  • Apple iOS KeyChain(计划中)。

Tink 当前支持 Java、C++ 和 Objective-C。意向于2018 年12 月发布的1.3 版本将提供对C#、Go 和JavaScript/Node 的支持。

尽管Tink 并非受谷歌官方支持的产品,但是它已经用于一些谷歌产品,其中包括AdMob、Google Pay、Google Assistant、Firebase 和Search API 等。

查看英文原文: Tink is Google Cryptographic Library for the Cloud, Android, and iOS

2018-09-10 08:072974
用户头像

发布了 391 篇内容, 共 126.9 次阅读, 收获喜欢 255 次。

关注

评论

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

你的开发好帮手:下一代云原生开发工具技术

华为云开发者联盟

云原生 编码 开发工具 代码补全 调测

Dubbo学习笔记

风翱

dubbo 4月日更

浪潮×积成电子:尝到了工业互联网的“甜头”

浪潮云

云计算

云图说|读请求太多怎么办?一键读写分离来帮忙

华为云开发者联盟

MySQL 读写分离 云数据库 云数据库MySQL

持续交付实战

云飞扬

京东首席架构师深邃洞察:服务化+云原生+微服务

Java架构师迁哥

从UCloud优刻得2020年全年财报,看云计算公司发展之路

Rust从0到1-代码组织-use关键字

rust 代码组织 use

水性硅胶防滑透明浆

C13713145387

LeetCode题解:151. 翻转字符串里的单词,数组,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

小技巧 | 帮助运营小姐姐批量修改文件名的几种方式

梁龙先森

Node 脚本 PowerShell

架构师必经之路!Github榜首Java代码优化:77案例+28技巧开源分享

Java架构师迁哥

为什么区块链技术仍然被人们认为当成一个投机的工具?

CECBC

容器&服务:metrics-server探索

程序员架构进阶

k8s 28天写作 弹性扩容 4月日更 metrics server

强化区块链技术在数字政府、智慧城市、智能制造等领域应用

CECBC

人工智能

重装变态的微信

箭上有毒

生活记录 4月日更

智能小车系列-树莓派初次使用环境配置

波叽波叽啵😮一口盐汽水喷死你

树莓派 wifi SSH 无显示器 树莓派首次配置

云上细粒度访问管理的参考架构

张晓辉

云原生 网关 访问控制 OPA

AI数学基础之:P、NP、NPC问题

程序那些事

人工智能 AI 程序那些事

全面复盘B站面试时坑我最深的Java并发:JDK源码剖析

Java架构师迁哥

工行首次全面展示数十项数字人民币研发试点成果

CECBC

数字人民币

面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot

Java架构师迁哥

图算法系列之深度优先搜索(二)

Silently9527

深度优先搜索 数据结构和算法 图算法

一枚比特币变换一台车,特斯拉与比特币还要绑定多久?

CECBC

特斯拉

收藏!阿里P9耗时28天,总结历年亿级活动高并发系统设计手册

Java架构师迁哥

面向软件 IT 专业的高校大学生就业与专业关联性的问卷调查

谙忆

华为云FusionInsight MRS:千余节点滚动升级业务无中断

华为云开发者联盟

大数据 数据湖 节点 集群 华为云FusionInsight MRS

如何在 Spring/Spring Boot 中优雅地做参数校验?

JavaGuide

Java spring springboot

对于医疗健康行业,区块链最大的价值在哪里?

CECBC

医疗

别让心里的墙,挡住了你未来的路

小天同学

思考 认知提升 认知 4月日更

美的蒸烤料理炉全新上线华为商城,首款搭载鸿蒙系统的设备有何不同?

科技汇

Tink:用于GCP、安卓和iOS的谷歌加密软件库_Java_Sergio De Simone_InfoQ精选文章