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 프리미티브를 가져올 수 있습니다. 획득한 프리미티브를 사용한 암호화 및 복호화는 키 세트에 기본 키를 사용합니다.

자세한 내용은 키 세트 디자인을 참고하세요.