正式定档!QCon 北京站改期为2024年4月11-13日,地点:北京·国测国际会议会展中心 >>> 了解详情
写点什么

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:072338
用户头像

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

关注

评论

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

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者联盟

DevOps 运维 云原生 华为云

深圳区块链交易所开发、数字货币交易平台开发

W13902449729

深圳区块链交易所开发 数字货币交易平台开发

这些常用ETL任务调度框架组件,你都知道几个?

TASKCTL

大数据 kettle 海豚调度 调度引擎 调度式分布

软件测试--中间件介绍

测试人生路

软件测试 中间件

分布式身份:重新定义你的“身份”管理

华为云开发者联盟

区块链 数据 隐私保护 分布式身份标识

如果腾讯、阿里是弱生态,那么谁是强生态?

ToB行业头条

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)

葡萄城技术团队

Vue SpreadJS vite

滴普技术荟-云原生基座OpenKube开放容器实践(二):理解linux虚拟网络设备veth

Linux

抽象照进现实

型火🔥

抽象 视觉化

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡软件测试

测试

OpenKruise 2021 规划曝光:More than workloads

阿里巴巴云原生

阿里云 开源 容器 云原生 调度器

Linux的进程pid编号极限

程序员架构进阶

Linux 进程

架构师训练营 - 第 13周课后作业(1 期)

Pudding

2020 — iOS 面试败北感悟

iOSer

ios 面试 iOS Document 底层知识

从根上理解高性能、高并发(三):深入操作系统,彻底理解I/O多路复用

JackJiang

网络编程 高并发 高性能 即时通讯

Appium的安装及简单的使用介绍

行者AI

人工智能

Java并发编程:AQS的公平性

码农架构

Java Java 分布式 java 并发

四年三次获奖,PostgreSQL再度荣获“年度数据库”桂冠!

PostgreSQLChina

数据库 postgresql 开源

花了19998买的学习教程!2021年Android技术下半场在哪?震撼来袭免费下载!

欢喜学安卓

android 程序员 面试 移动开发

架构师训练营 - 大作业一

Pudding

anyRTC 2020年12月SDK更新

anyRTC开发者

uni-app android 音视频 WebRTC sdk

架构训练营 - 第12周课后作业 - 学习总结

Pudding

万字长文聊缓存(下)- 应用级缓存

Silently9527

缓存 缓存击穿 Caffeine 缓存架构

计算机专业必看!难道Android真的凉了?大厂内部资料

欢喜学安卓

android 程序员 面试 移动开发

全网最全原理讲解!如何试出一个Android开发者真正的水平?已开源

欢喜学安卓

android 程序员 面试 移动开发

如何防止短信验证码接口被恶意调用攻击?

香芋味的猫丶

短信 短信防刷 接口安全 验证码

架构训练营 - 第 13 周课后作业 - 学习总结

Pudding

滴普技术荟-云原生基座OpenKube开放容器实践(一):如何理解Linux network namespace ?

Linux

架构师训练营 - 大作业二

Pudding

IT2.0:中台构建还应从企业业务实际出发

华为云开发者联盟

区块链 分布式 安全 数据 身份安全

案例展示自定义C函数的实现过程

华为云开发者联盟

数据库 数据 C语言 字符串

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