當前位置:
首頁 > 科技 > 谷歌開源的多語言跨平台加密庫Tink

谷歌開源的多語言跨平台加密庫Tink

作者 | Thai Duong

譯者 | 無明

在谷歌,很多產品團隊使用加密技術來保護用戶數據。在加密技術領域,一個很細微的錯誤都會產生非常嚴重的後果。想要正確實現加密技術,可能需要先消化數十年的學術文獻。毋庸置疑,很多開發人員沒有這麼多時間。

為了幫助開發人員交付安全的加密代碼,谷歌開發了 Tink,一個支持多語言的跨平台加密庫。他們希望 Tink 能夠成為一個社區項目,因此 Tink 從一開始就託管在 GitHub 上,並且已經吸引到了幾個外部貢獻者。在谷歌,Tink 已經被用來保護多個產品的數據,如 AdMob、Google Pay、Google Assistant、Firebase、Android Search App 等。經過近兩年的發展,Tink 正式迎來了 1.2 版本。這也是第一個支持雲、Android、iOS 的版本!

GitHub 地址:https://github.com/google/tink

Tink 致力於提供安全且易於使用的加密 API。Tink 建立在現有的庫之上,如 BoringSSL 和 Java Cryptography Architecture,同時對這些庫中存在的弱點進行了加固。

有了 Tink,很多常見的加密操作(如數據加密、數字簽名等)只需幾行代碼即可完成。以下是使用 AEAD 介面加密和解密的示例(Java 版):

Tink 儘可能消除潛在的誤用情況。例如,如果底層加密模式需要 nonce,而重用 nonce 會導致不安全,那麼 Tink 就不允許用戶傳遞 nonce。介面的安全保證必須由實現介面的每個基元來滿足,這可能會排除掉某些加密模式。對於這些模式,不能將它們添加到現有介面中,因為這樣會削弱介面的安全保證,而是添加新的介面,並適當地描述它們的安全保證。

Tink 在介面中提供了安全屬性描述(例如安全抵禦選擇密文攻擊),讓安全審計員和自動化工具可以快速發現安全保證與安全要求不匹配的用法。Tink 還隔離了用於進行潛在危險操作的 API(例如從磁碟載入明文密鑰),這樣就可以發現、限制、監視和記錄它們的使用。

Tink 支持密鑰管理,包括密鑰輪換和逐步淘汰已棄用的密碼。例如,如果發現加密原語被破壞,可以通過旋轉秘鑰切換到不同的原語,而無需更改或重新編譯代碼。

Tink 還支持擴展:可以輕鬆地添加自定義加密方案和密鑰管理系統,與 Tink 的其他部分無縫協作。 在 Tink 中,沒有哪個部分是難以更換或移除的,所有組件都是可組合的。例如,如果只需要數字簽名,就可以移除對稱密鑰加密組件,以便最大限度地減少應用程序中的代碼量。

郵件列表:

https://groups.google.com/forum/#!forum/tink-users

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

我憑技術割的韭菜,你為什麼要防禦我?
架構師不寫代碼,能行嗎?

TAG:InfoQ |