问题标签 [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 回答
108 浏览

c++ - 如何在 C++ 中使用 Tink 从安全的 websocket 中读取数据

我正在开发一个需要从安全 websocket 读取的 C++ 客户端应用程序。在查看了一些 websocket 库后,我想使用easywsclient,但它不支持 TLS。我尝试按照这篇文章使用 OpenSSL 添加对以 wss 开头的 URL 的支持,但希望避免从文件中加载证书和私钥(如果可能的话)。我研究了这是如何在 boost asio 中完成的,他们建议使用certify来访问平台的 TLS 密钥库。我还研究了 chrome 浏览器,发现它使用了 BoringSSL,这让我找到了 Tink。但是,我找不到如何使用 Tink/BoringSSL 来保护 websocket 并处理客户端证书和密钥的示例。有人可以指出我正确的方向吗?

0 投票
1 回答
237 浏览

android - 使用 Google Tink 加密间歇性损坏数据

我正在调查com.google.crypto.tink:tink-android:1.6.1在我当前的 Android 项目中的使用。

我正在加密的数据包括我用于远程 API 调用的 OAuth2 访问令牌/刷新令牌,例如,访问令牌是我的授权 HTTP 标头的承载令牌。

我担心我的加密/解密逻辑出错,因为我遇到了无法刷新令牌的间歇性问题。来自服务器的错误

刷新令牌不会过期,因为它会持续 24 小时。

我初始化 Tink 的代码类似于:-

这是我的加密/解密代码

使用 Base64 编码/解码会是问题吗?我的错误在哪里?

0 投票
0 回答
77 浏览

javascript - google tink 在 Nodejs 中使用时出现“referenceerror:self is not defined”

我们正在尝试使用 google tink,下面是我们如何使用它的示例。

这是错误消息:

我们使用了 npm https://www.npmjs.com/package/tink-crypto所以我认为 google tink 支持后端 JS。但是根据此消息,代码中的某处引用了 self ,它是 Window 类的变量,而 Nodejs 中不存在 Window 。我们的节点是 V12。

谁能帮我解决这个问题?在网上很难找到任何关于 JS tink 的文档。

谢谢!

0 投票
1 回答
104 浏览

objective-c - 如何在 Tink 的 Objective-c 中做到这一点?

使用 java 加密似乎比使用 Tink 的 obj-c 简单得多。给定一个已知的 32 字节XChaCha20Poly1305 key和一个 16 字节的认证数据(aad),如何在 Objective-c 中完成相同的操作?

爪哇

0 投票
0 回答
70 浏览

java - 如何将 Google Tink KeysetHandle 转换为 byte[ ] 并返回?

我正在尝试将 Google Tink 的 KeysetHandle 转换为字节 [] 并从字节 [] 构造回 KeysetHandle。

所以这是我想出的代码

主功能 :

输出 :

我不知道为什么在尝试重建 KeysetHandle 对象时会出现错误。有人可以解释为什么会发生此错误或我在这里做错了什么吗?

0 投票
1 回答
443 浏览

android - 使用 R8 构建发布 apk 时缺少类 com.google.errorprone.annotations.Immutable

在启用 R8 的情况下构建发布 apk 时出现以下错误:

上述missing_rules文件的内容:

我应该添加-dontwarn亲守规则和/或添加一些-keep规则吗?

0 投票
1 回答
138 浏览

java - 如何保留 Android Keystore 的主密钥的备份或从用户输入创建?

我在我的项目中使用 Google/Tink 的确定性对称密钥加密。像这样-

一切正常。现在,如果用户重置手机或发生任何其他事故(其他原因),我正在为 Android keyStore 创建哪个主密钥,可以删除/丢失。然后 Tink 的 keyset(key) 将无法使用。有没有办法保留主密钥的备份或从用户输入或任何其他解决方案创建主密钥?

注意:AWS KMS 或 GCP KMS 不是我的解决方案。作为密码学的新手,任何建议/建议将不胜感激。

0 投票
1 回答
101 浏览

java - java:不兼容的类型:T 无法转换为 java.lang.String

我目前正在使用 Google Tink 为我的应用程序提供加密和解密服务。
问题如下:我想在不使用(几乎)重复代码的情况下对其进行编程,因此我有了使用泛型的想法。
如果将字符串解析为 byte[] 是我将这样做的唯一选择,但我宁愿不这样做。
这些是方法和变量:


我正在使用的 3 个堆栈:


该方法用于从堆栈中获取信息(我想用泛型解决这个问题,但也不起作用)。不,解析不起作用,因为该方法必须可以使用两种不同的数据类型访问。
用于加密 Account 对象的所有数据的方法。
这个想法是遍历```Stack plaintextAccInformation```并加密Account对象中的每个变量,然后将每个加密变量保存到一个新的```Stack encryptedAccInformation```
用于解密保存在```Stack encryptedAccInformation```中的变量并保存到```Stack encryptedAccInformation```的方法
0 投票
0 回答
41 浏览

cryptography - 在另一个库 AES-256 GCM 中使用 tink 密钥

我正在尝试为一家公司实施应用程序。在应用程序方面,我们使用 google tink。但是对于服务器端,他们想使用自己的库。我需要的是提取由 google tink 创建的密钥并在他们的库中使用它。为了证明这是可能的,我可以使用任何其他库。

如何在 Tink 的 Objective-c 中做到这一点?

在这个问题的答案中,@JAnton 展示了如何从在库中创建的 key 和 aad 构建 keysethandle,而不是 google tink。我需要反过来。我需要一个可以使用从 google tink 的 json 格式中提取的密钥来解密由 google tink 加密的数据的库。

0 投票
1 回答
179 浏览

encryption - GCP Cloud KMS - 自定义密钥,可以进行灾难恢复吗?

我们目前正在研究 gcp 云 kms 以及如何应对灾难恢复。这是我们当前的测试设置:

Java 使用 Spring boot + Google Tink 使用 KMSEnvelopeAead + AesGcmJce(即由 tink 生成的 DEK,将通过 kms (KEK) 加密并与密文一起存储),对称

  1. 项目“A”(灾难恢复前的初始项目)

    -> KMS -> 密钥环“keyringABC” -> 密钥“keyABC” -> 通过导入作业导入的自定义密钥。我可以成功地加密/解密一些文本 - 一切都好,一切都好

  1. 项目“B”(灾难恢复项目)或具有新密钥 + 密钥环的相同项目“A”(名称可能不同)

    -> KMS -> 密钥环“keyringABC” -> 密钥“keyABC” -> 通过导入作业导入自定义密钥

    我重新导入了之前已导入项目“A”的自定义密钥材料,用于加密项目“A”中的数据。新创建的密钥模仿了与项目“A”中相同的结构。唯一的区别是,它位于项目“B”中

现在,当我尝试使用在项目“A”中加密的项目“B”中新创建的密钥解密数据时,我不起作用。查看云日志记录我可以看到以下错误消息

我的假设是(在阅读文档时)密文,在这种情况下,由 tink 通过云 kms 生成的 DEK,还包含指向项目“A”的密钥的确切资源标识符,因此加密的 DEK 不能被解密在项目“B”中使用新创建的密钥时不再使用。这意味着即使底层(导入的)自定义密钥材料相同,也无法恢复另一个项目中的数据。

任何人都可以对此有所了解吗?任何帮助表示赞赏。

干杯马塞尔

PS:来自 google kms 文档

当使用对称 Cloud KMS 或 Cloud HSM 密钥加密数据时,有关加密密钥版本的额外元数据将与加密数据一起保存、加密。在 Cloud KMS 之外加密的数据中不存在此元数据。

对称密钥总是有一个主版本。此版本默认用于加密。当 Cloud KMS 使用对称密钥执行解密时,它会自动识别执行解密所需的密钥版本。