瞭解 Tink 的重要概念
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
首次使用 Tink 時,在開始流程之前,請務必先瞭解一些重要概念;我們會在以下各節中說明這些概念。
基本
Tink 使用「原始物件」做為密碼編譯建構區塊,用於管理基礎演算法,讓使用者能安全地執行加密編譯工作。基本定義了加密編譯演算法和金鑰類型的詳細資料。
Tink 支援的基本功能:
- 使用相關資料進行驗證加密 (AEAD):最常用於資料加密的基本功能,適用於大多數加密需求。AEAD 提供純文字的機密性,並允許驗證其完整性和真實性。請參閱使用相關資料進行驗證 (AEAD) 驗證。
- 確定性加密:這個原始物件一律會針對特定明文和金鑰產生相同的密文。這可能會有風險,因為攻擊者只需要找出特定明文輸入內容對應的密文即可進行識別。請參閱確定性 AEAD 部分。
- 數位簽章:非對稱式 (請參閱「非對稱金鑰加密」一節),用於確認已簽署資料的真實性和完整性。請參閱「數位簽章」。
- 混合式加密:結合非對稱式金鑰加密與對稱式金鑰加密的基本功能 (請參閱「非對稱金鑰加密」和「對稱金鑰加密」部分)。混合式加密結合了對稱加密的效率與公開金鑰加密的便利性。為加密訊息,系統會產生新的對稱金鑰,並使用該金鑰加密明文資料,而接收方的公開金鑰則只用於加密對稱金鑰。最終的密文包含對稱密文和加密對稱金鑰。請參閱「混合式加密」。
- 訊息驗證碼 (MAC):用於確認資料的真實性和完整性的對稱式 (請參閱「對稱金鑰加密」一節)。請參閱訊息驗證碼 (MAC)。
- 串流 AEAD:提供已驗證串流資料加密的原始版本;如果要加密的資料太大,而無法在單一步驟中處理,此屬性就非常實用。請參閱串流 AEAD。
如需相容性資訊,請參閱「依語言區分的支援基元」。
詳情請參閱原始設計。
金鑰類型
金鑰類型會實作特定基元。大部分基元都有多種關鍵類型,您可以根據安全性、執行階段和空間需求選擇。舉例來說,AES128_GCM 是一種 AEAD,快速又有效,能滿足大多數需求。詳情請參閱不同語言支援的金鑰類型。
金鑰組與金鑰組控點
Tink 使用金鑰組來管理金鑰。金鑰組基本上是一組有助於輪替金鑰的金鑰。金鑰組值得注意的屬性如下:
- 金鑰組中的每個金鑰都有專屬 ID,在金鑰組中不得重複。這個 ID 通常會新增為每個所產生密文、簽章或標記的前置字串,以表示使用的金鑰 (詳情請參閱 Tink 的標記密文說明)。
- 金鑰組中一次只能有一個金鑰為「主要」。金鑰組中的主鍵是目前「使用中」的索引鍵。
- 金鑰組中的所有金鑰都必須採用相同原始 (例如 AEAD) 的實作,但金鑰類型可以不同 (例如 AES-GCM 和 XCHACHA20-POLY1305 金鑰)。
每個 Tink 實作都會提供用於建立或編輯金鑰組的 API。不過,我們建議使用 CLI 工具的 Tinkey。
使用者是透過金鑰組控制代碼透過金鑰組運作。金鑰組控制代碼會限制實際機密金鑰內容的曝光率。它也會提取一組金鑰組,可讓使用者取得可「包裝」整個金鑰組的基本功能。舉例來說,您可以取得具有 N
金鑰的金鑰組 AEAD 原始物件,然後使用取得的原始金鑰加密和解密,然後使用金鑰組中的主金鑰。
詳情請參閱「金鑰組設計」。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-04-11 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2024-04-11 (世界標準時間)。"],[[["Tink utilizes primitives as fundamental cryptographic building blocks for secure data operations, covering encryption, signatures, and message authentication."],["Keysets in Tink efficiently manage multiple keys for a single purpose, enabling features like key rotation and supporting various key types within a set."],["Keyset handles provide a secure abstraction layer, allowing users to interact with keys and perform cryptographic operations without directly exposing sensitive key material."],["Tink offers a diverse selection of primitives and key types, accommodating varying security, performance, and storage requirements, with options like AEAD, digital signatures, and hybrid encryption."]]],["Tink employs cryptographic building blocks called *primitives*, which define algorithms and key types. These include AEAD, Deterministic encryption, Digital signature, Hybrid encryption, MAC, and Streaming AEAD. *Key types* implement primitives, offering choices based on security and performance. *Keysets*, a set of keys with unique IDs, manage key rotation. *Keyset handles* abstract keysets, providing access to a primitive that operates over the entire keyset, including encryption/decryption with the primary key.\n"]]