写点什么

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

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

    阅读完需:约 4 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 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:073826
用户头像

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

关注

评论

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

蓝易云 - nginx教程:proxy_pass指令后边有没有“/”的区别

百度搜索:蓝易云

nginx 云计算 运维 服务器 云服务器

区块链开发团队DappNetWork

区块链开发团队DappNetWork

区块链+ dapp开发 交易所源码 链游开发dapp开发 智能合约开发

区块链交易所怎么开发?DappNetWork

区块链开发团队DappNetWork

DAPP智能合约交易系统开发 区块链开发 交易所源码 链游开发dapp开发

淘宝按关键字搜索API返回值研究:提升搜索准确性的关键

技术冰糖葫芦

API Explorer api 货币化 API 文档

日调用量翻10倍!百度主力大模型免费吸引客户涌入

IT新闻资讯

#百度#

2024年5月文章一览

codists

多家央行开启降息序幕:加密行情的新机遇与挑战

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)

hunter_coder

人工智能 openai

2024-06-08:用go语言,给定三个正整数 n、x和y, 表示城市中的房屋数量以及编号为x和y的两个特殊房屋。 在这座城市中,房屋通过街道相连。对于每个编号i(1 <= i < n), 存在一条

福大大架构师每日一题

福大大架构师每日一题

开发电竞体育直播平台:一周内上线的现成源码解决方案

软件开发-梦幻运营部

电竞体育直播软件开发:成品源码特色功能的深入解析

软件开发-梦幻运营部

基于Java“花鸣”B2C电子商务平台设计实现(源码+lw+部署文档+讲解等)

hunter_coder

人工智能 openai

Web应用程序安全漏洞的危害与防御措施

德迅云安全杨德俊

I/O虚拟化概述

Linux内核拾遗

Virtualization 虚拟化 virtio IO虚拟化

蓝易云 - jvm教程:jdk1.8大对象的阈值默认是多少

百度搜索:蓝易云

Java 云计算 运维 服务器 云服务器

蓝易云 - 香港云服务器哪家便宜

百度搜索:蓝易云

云计算 运维 服务器 香港云服务器 免备案服务器

蓝易云 - nginx教程:upstream的两种配置方式

百度搜索:蓝易云

nginx 运维 upstream uwsgi FastCGI

蓝易云 - nginx教程:配置项add_header Access-Control-Allow-Origin *的含义

百度搜索:蓝易云

nginx 运维 服务器 CORS 云服务器

普通职场人的成长路径

老张

面试经验 成长计划 思维逻辑

阿里巴巴关键字搜索商品API返回值实践:电商数据驱动的营销策略调整

技术冰糖葫芦

API Explorer API 文档 API 策略

从0到1:企业办公审批小程序开发笔记

CC同学

蓝易云 - 国内云服务器哪家便宜

百度搜索:蓝易云

服务器 云服务器 香港服务器 高防服务器 免备案服务器

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