Tink の使用を開始する前に、理解しておくべき重要なコンセプトがあります。これについては、次のセクションで説明します。
プリミティブ
Tink は、基盤となるアルゴリズムを管理する暗号構成要素としてプリミティブを使用しているため、ユーザーは暗号タスクを安全に実行できます。プリミティブは、暗号アルゴリズムと鍵タイプの詳細を定義します。
- サポートされているプリミティブとそのユースケースの概要については、プリミティブを選択するをご覧ください。
互換性については、言語でサポートされているプリミティブをご覧ください。
詳細な背景情報については、プリミティブ設計をご覧ください。
キーの種類
キータイプは、特定のプリミティブを実装します。ほとんどのプリミティブには、セキュリティ、ランタイム、スペースの要件に応じて選択できる複数のキータイプがあります。たとえば、AES128_GCM は、ほとんどのニーズに対応できる高速で効果的な AEAD です。詳しくは、言語別にサポートされているキータイプをご覧ください。
Keysets と keyset ハンドル
Tink は、鍵の管理に鍵セットを使用します。鍵セットは、鍵のローテーションを容易にする鍵のセットです。鍵セットの主なプロパティは次のとおりです。
- キーセット内の各キーには、キーセット内で一意の ID があります。この ID は通常、生成された各暗号テキスト、署名、タグの接頭辞として追加され、どの鍵が使用されたかを示します(詳細については、Tink がどのように暗号テキストにタグ付けするかをご覧ください)。
- キーセット内の鍵のうち、一度に プライマリにできるのは 1 つだけです。鍵セットの主キーは、現在使用中の鍵です。
- キーセット内のすべての鍵は、同じプリミティブ(AEAD など)の実装である必要がありますが、異なる鍵タイプ(AES-GCM 鍵や XCHACHA20-POLY1305 鍵など)を持つことができます。
各 Tink 実装には、鍵セットを作成または編集するための API が用意されています。ただし、CLI ツールである Tinkey を使用することをおすすめします。
ユーザーは、鍵セット ハンドルを使用して鍵セットを操作します。キーセット ハンドルは、実際の機密性の高い鍵マテリアルの漏洩を制限します。また、キーセットを抽象化することで、ユーザーはキーセット全体を「ラップ」するプリミティブを取得できます。たとえば、N 鍵を含む鍵セットの AEAD プリミティブを取得できます。取得したプリミティブを使用した暗号化と復号では、鍵セットの主キーが使用されます。
詳しくは、鍵セットの設計をご覧ください。