问题标签 [tink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

java - 如何旋转键?

我正在查看 Tink 文档,但我没有看到如何旋转密钥的清晰方法。基本上,我想做一些类似的事情:

该文档讨论了密钥轮换如何成为该库的核心功能。但是,文档中没有关于如何执行此操作的示例。使用库旋转密钥的“正确”方法是什么?我还希望单独旋转并激活新密钥。

0 投票
1 回答
319 浏览

android - 使用 AndroidKeysetManager 从 Tink 导出键集条目

我在一个android项目中使用'androidx.security:security-crypto:1.1.0-alpha02 '。它适用于文件加密/解密。我在需要使用身份验证的硬件密钥库中设置了一个主密钥。

安全 API自动生成我认为是Tink密钥集文件,适用于 Android 共享首选项。

如果我理解正确,那是用于加密文件的实际 DEK。

现在的问题是,如果我想导出加密文件,我将无法在另一台设备上解密,因为 Hardware KeyStore 中的主密钥不可导出。

最好的解决方案是使用 PBKDF2 导出密钥集中的DEK,然后将其解密到另一个设备密钥集中。

一个可选的解决方案是在密钥库之外创建主密钥材料,使用另一个 KeyStore 密钥保护它,并在需要时使用 PBKDF2 将其导出。这将破坏 jetpack 安全库的逻辑流程。

我尝试导入Tink'com.google.crypto.tink:tink-android:1.5.0'以便我可以直接开始管理密钥集,因为安全 API 没有此用例的实现。

无论如何,我找不到使用此管理器解密密钥集中密钥的方法,以便能够使用密码对其进行加密并正确导出。

你知道应该如何面对这个问题吗?

0 投票
1 回答
153 浏览

java - Google Tink 混合参数

Google Tink支持“混合加密”——一种用非对称密钥加密对称密钥、用对称密钥加密明文并将两个密文捆绑为一条消息的便捷方法。

但是,似乎它基本上支持两组参数组合:

在内部,这些映射到例如

AesGcmKeyManager.aes128GcmTemplate()交换例如for似乎相当简单AesGcmKeyManager.aes256GcmTemplate(),除了createKeyTemplate是私有的,并且 THAT 使用包私有方法,并且EciesAeadHkdfPrivateKeyManager是最终的,总体而言,它似乎正在竭尽全力防止我们弄乱这些参数。这有什么原因吗?我应该从 Tink 源代码中重新构建我自己的修改版本和/或只是使用反射来绕过private,还是有隐藏的非正交性让我绊倒并使结果不安全?

0 投票
1 回答
236 浏览

c++ - 如何在 C++ 中使用 bazel 构建 Google tink 库?

我想tink为我的应用程序使用 Google 库。我使用 android 绑定了我的代码ndk。但是,我无法tink使用bazel. 我已经在 github ( https://github.com/google/tink ) 上尝试了他们的示例。此外,我没有任何经验bazel。因此,如果有人知道如何以tink任何方式构建 Google 库,我也对这些选项持开放态度。

我在用:

  • Ubuntu 20.04
  • 巴泽尔 3.1.0
  • gcc 版本是 9.3.0

我试图关注https://github.com/google/tink/blob/master/examples/cc/helloworld/README.md但它导致了一个错误:

0 投票
0 回答
165 浏览

go - 使用 Go 解密 Google Pay 支付令牌

我想使用 Go 语言实现对 Google Pay 支付令牌的解密。Google 强烈建议使用 Tink 库。

我查看了此处提供的说明,但无法弄清楚如何将已经存在的私钥和公钥对转换为密钥集。如果不可能,我是否应该先使用 Tink 生成私钥和公钥集,然后将其发送给 Google?

如果有人可以使用 Go 语言的 Tink 库或分步指南(甚至是简短的指南)提供 Google Pay 支付令牌的工作示例,那将非常有帮助。先感谢您。

0 投票
0 回答
38 浏览

node.js - 在节点 js 中验证来自 Google Pay for Passes(保存和删除)的回调签名?

在这里他们推荐 Tink 库,但没有 Node js 的实现,我正在寻找一些示例解决方案。

0 投票
2 回答
220 浏览

python - 如何将有效值传入 cleartext_keyset_json 以创建 Tink 密钥

在 Tink 中,可以将明文密钥集加载和编写为 jsons。下面是一个非工作示例:

我的问题是 - 是否可以将您自己的值插入到各种键/值对中以获得另一个有效的键集?我已经对此进行了实验并且没有取得太大的成功-主要是因为抱怨的“价值”键INVALID_ARGUMENT: Could not parse key_data.value as key type 'type.googleapis.com/google.crypto.tink.AesGcmKey'知道什么是有效的“价值”吗?

0 投票
0 回答
47 浏览

android - AndroidKeysetManager Builder 与 HybridKeyTemplates 崩溃

我有加密/解密数据的 Android 代码。它是一年多前由另一位开发人员(后来他离开了)编写的,直到最近它才开始崩溃,并出现以下异常:

这似乎仅在升级应用程序并且现有密钥已经存在时才会发生。我针对之前的版本(有效)运行了 gradle 文件的差异,并且没有更新任何框架/sdk。

异常发生在 .build() 中:

我将代码跟踪到AndroidKeystoreAesGcm并且从 getKey 返回的分配发生异常(成功):

这让我不确定如何进行。KeyStore 有一个密钥,我需要它来访问应用程序数据。我怀疑我的老宿敌 gradle 是罪魁祸首,但是......好吧,任何帮助或洞察力将不胜感激。

0 投票
1 回答
251 浏览

android - Tink GeneralSecurityException:找不到密钥模板:AES128_GCM Tink

我试图运行的内容:

我得到的错误:

我错过了什么吗?我是否不小心跳过了某个步骤?

0 投票
0 回答
63 浏览

android - 您可以将 com.google.crypto.tink 配置为使用 androidx.datastore 而不是 Shared Prefs

我当前的 Android 应用程序正在调查加密库的使用com.google.crypto.tink

com.google.crypto.tink.integration.android.AndroidKeysetManager Builder使用 sharedPrefs 如下所示

是否有androidx.datastore不推荐使用共享首选项的版本?

是否由这个库的用户开发扩展功能来支持androidx.datastore