Tink의 주요 개념 이해

Tink를 처음 사용하기 시작할 때 여정을 시작하기 전에 이해해야 하는 몇 가지 주요 개념이 있습니다. 이러한 개념은 다음 섹션에 설명되어 있습니다.

기본 요소

Tink는 프리미티브를 기본 알고리즘을 관리하는 암호화 빌드 블록으로 사용하므로 사용자가 암호화 작업을 안전하게 실행할 수 있습니다. 원시 요소는 암호화 알고리즘과 키 유형의 세부정보를 정의합니다.

키 유형

키 유형은 특정 기본 요소를 구현합니다. 대부분의 기본 요소에는 보안, 런타임, 공간 요구사항에 따라 선택할 수 있는 여러 키 유형이 있습니다. 예를 들어 AES128_GCM은 대부분의 요구사항에 빠르고 효과적인 AEAD입니다. 자세한 내용은 언어별 지원되는 키 유형을 참고하세요.

키셋 및 키셋 핸들

Tink는 키 세트를 사용하여 키를 관리합니다. 키 세트는 기본적으로 키 순환을 용이하게 하는 키 세트입니다. 키 세트의 주목할 만한 속성은 다음과 같습니다.

  • 키 세트의 각 키에는 키 세트 내에서 고유한 고유 ID가 있습니다. 이 ID는 일반적으로 생성된 각 암호문, 서명 또는 태그에 프리픽스로 추가되어 사용된 키를 나타냅니다 (자세한 내용은 Tink에서 암호문에 태그를 지정하는 방법 참고).
  • 키 세트에서 한 번에 하나의 키만 기본입니다. 키 세트의 기본 키는 현재 '사용 중'인 키입니다.
  • 키 세트의 모든 키는 동일한 기본(예: AEAD)의 구현이어야 합니다. 하지만 키 유형은 다를 수 있습니다 (예: AES-GCM 및 XCHACHA20-POLY1305 키).

각 Tink 구현은 키 세트를 만들거나 수정하는 API를 제공합니다. 하지만 Google의 CLI 도구인 Tinkey를 사용하는 것이 좋습니다.

사용자는 키셋 핸들을 사용하여 키셋을 조작합니다. 키 세트 핸들은 실제 민감한 키 자료의 노출을 제한합니다. 또한 키 세트를 추상화하여 사용자가 전체 키 세트를 '래핑'하는 기본 요소를 획득할 수 있습니다. 예를 들어 N 키가 있는 키 세트의 AEAD 기본 요소를 가져올 수 있습니다. 획득한 기본 요소를 사용한 암호화 및 복호화는 키 세트의 기본 키를 사용합니다.

자세한 내용은 keyset design을 참고하세요.