【AICon】AI 大模型超全落地场景&最佳实践 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

8 月 16 - 19 日,与零一万物李开复、蔚来李斌、面壁智能李大海,及工商银行、交通银行、华夏银行等 100+ 行业专家相聚 FCon x AICon

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

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

关注

评论

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

在线图片隐写术解密解码传递数据

入门小站

工具

每日一R「19」网络编程(一)

Samson

学习笔记 8月月更 ​Rust

【小程序项目开发-- 京东商城】uni-app开发之分包配置

计算机魔术师

8月月更

真值和机器数及机器数的相互转换关系

乌龟哥哥

8月月更

【CSS】伪类选择器有什么用?有哪些是常用的伪类?

翼同学

CSS 前端 编程语言 8月月更 学习分享

流支付时代的Zebec,将打开Web3支付的大门?

小哈区块

【算法实践】有始有终,雨露均沾--手把手带你手撸选择排序

迷彩

Python 开源 选择排序 算法实践 8月月更

前端食堂技术周刊第 50 期:TypeScript 4.8、Deno 1.25、Terminal Gif Maker、CSS :has() 伪类、Deno ch

童欧巴

深入分析JVM执行引擎

架构 Java、

【小程序项目开发-- 京东商城】uni-app开发之轮播图

计算机魔术师

8月月更

【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)

计算机魔术师

8月月更

【CSS】背景样式(颜色、图片、平铺、附着和位置)

翼同学

CSS html 前端 8月月更 学习分享

《中国汽车OTA行业发展洞察2022》案例征集

易观分析

汽车 OTA 案例征集

二层交换机与路由器的区别

阿柠xn

计算机网络 交换机 路由器 8月月更

流支付时代的Zebec,将打开Web3支付的大门?

股市老人

云原生(三十) | Kubernetes 篇之应用商店 -Helm 介绍

Lansonli

云原生 8月月更

2022年7月视频行业用户洞察:暑期优质内容上线,用户规模及使用时长增长显著

易观分析

视频 报告

易周金融分析 | 银行理财市场渐趋理性;“睡眠信用卡”持续清退

易观分析

金融 银行 信用卡

在线图片隐写术加密传递数据

入门小站

工具

拒绝裸奔,SpringBoot集成Jasypt加密敏感信息

IT学习日记

jasypt 8月月更 Springboot配置文件加密 敏感信息加密

【小程序项目开发-- 京东商城】uni-app之首页商品楼层

计算机魔术师

8月月更

【机器学习】向量化计算 -- 机器学习路上必经路

计算机魔术师

8月月更

【小程序项目开发-- 京东商城】uni-app之分类导航区域

计算机魔术师

8月月更

【小程序项目开发 -- 京东商城】uni-app 商品分类页面(上)

计算机魔术师

8月月更

【CSS】你还记得组合选择器怎么用吗?

翼同学

前端 编程语言 8月月更 学习分享

Go 语言实现常见排序算法

宇宙之一粟

排序算法 Go 语言 8月月更

在线XML转YAML工具

入门小站

工具

灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报

声网

直播 RTE NG-Lab

JPEX围绕世界杯打造“平台+运动”新生态,为JPC深度赋能

股市老人

流支付时代的Zebec,将打开Web3支付的大门?

鳄鱼视界

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