Tink多语言、跨平台加密开发库
Tink 是一个多语言、跨平台的加密开发库,提供安全,易于正确使用和难以滥用的加密 API,目前 Tink 已经被用于保护许多谷歌内部产品的数据,如 AdMob、Google Pay、Google Assistant、Firebase 与 Android Search App 等。
Tink 旨在提供安全、易于正确使用且难以滥用的加密 API,它建立在现有安全相关的库之上,如 BoringSSL 和 Java Cryptography Architecture,但谷歌专门的团队 Project Wycheproof 发现了这些库中的一些弱点,Tink 进行了跟进,使之更加安全。
使用 Tink,许多常见的加密操作,如数据加密、数字签名等只需几行代码就可以完成,以下是使用 Java 中的 AEAD 接口加密和解密的 demo:
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. Generate the key material. KeysetHandle keysetHandle = KeysetHandle.generateNew( AeadKeyTemplates.AES256_EAX); // 2. Get the primitive. Aead aead = AeadFactory.getPrimitive(keysetHandle); // 3. Use the primitive. byte[] plaintext = ...; byte[] additionalData = ...; byte[] ciphertext = aead.encrypt(plaintext, additionalData);
Tink 希望消除尽可能多的潜在误用。例如,如果底层加密模式需要 nonce(密码学中只被使用一次的任意或非重复的随机数),但重用 nonce 的话会产生安全问题,那么这时 Tink 将不允许用户传递 nonce。
Tink 的功能很多,大概有如下几个方面:
可以安全抵御选择密文攻击,允许安全审计员和自动化工具快速发现那些与安全要求不匹配的代码。
隔离了用于潜在危险操作的 API,例如从磁盘加载明文密钥。
为密钥管理提供支持,包括密钥轮换和逐步淘汰已弃用的密码。
可以通过设计进行扩展:可以轻松添加自定义加密方案或内部密钥管理系统,以便与 Tink 的其它部分无缝协作。Tink 的任何部分都难以更换或移除,所有组件都是可组合的,并且可以以各种组合进行选择和组合。例如,如果只需要数字签名,则可以排除对称密钥加密组件,以最大限度地减少应用程序中的代码大小。
评论
Swift Crypto跨平台加密库
SwiftCrypto衍生自AppleCryptoKit加密框架,是一个跨平台加密解决方案,可用于Swift支持的所有平台。Crypto 将 AppleCryptoKit 优秀的API带到了受众更广的
Swift Crypto跨平台加密库
0
EverCrypt跨平台的现代加密库
程序员都是凡人,但数学则是不朽的。通过让编程变得更数学化,计算机科学家希望能消除向黑客敞开大门的编程错误。研究人员在GitHub上发布了加密工具 EverCrypt,向这个目标迈出了一大步。就像证明毕
EverCrypt跨平台的现代加密库
0
TBOXC 语言实现的跨平台开发库
TBOX是一个用C语言实现的跨平台开发库。针对各个平台,封装了统一的接口,简化了各类开发过程中常用操作,使你在开发过程中,更加关注实际应用的开发,而不是把时间浪费在琐碎的接口兼容性上面,并且充分利用了
TBOXC 语言实现的跨平台开发库
0
bgfx跨平台渲染库
bgfx是一个跨平台、与图形API无关,"可打造个性引擎/框架“风格的渲染库。 支持的渲染后端:Direct3D9Direct3D11Direct3D12(WIP)OpenGL2.1OpenGL3.
bgfx跨平台渲染库
0
ZThread跨平台线程库
ZThread是一个C++的跨平台线程开发包。zthread库的用法和Java的多线程很相似,名字都差不多,比如Thread,Runnable,^_^举个例子入门一下吧在zthread里有一个任务的概
ZThread跨平台线程库
0