0Pricing
Cryptology Academy · 강의

Google Tink: 안전한 고수준 암호

암호학 전문 지식 없이도 일반적인 암호 연산을 수행할 수 있도록 Tink의 키 세트 기반 API를 사용합니다.

Google Tink: 안전한 고수준 암호은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

Tink 개요와 동기

Tink는 Google의 암호화 팀이 개발한 오픈 소스 암호화 라이브러리로, 안전하고 사용하기 쉬운 암호화를 제공하도록 설계되었습니다. 주된 목적은 저수준 라이브러리를 사용하는 숙련된 개발자에게서도 발생하는 일반적인 암호화 오용 패턴을 방지하는 것입니다. Tink의 API는 올바른 작업을 가장 쉽게 선택할 수 있도록 설계되어, 실수로 안전하지 않은 구성을 만들기 어렵게 합니다.

키 세트 기반 추상화

Tink는 개별 키 객체를 노출하는 대신 키를 키 세트로 구성합니다. 애플리케이션은 원시 키 바이트가 아니라 키 세트 핸들을 사용합니다. 이러한 추상화는 실수로 키가 노출되는 것을 방지하고, 원활한 키 교체를 지원하며, 애플리케이션이 키 자료를 직접 보지 않고도 원격 키 관리 시스템에 키를 저장할 수 있게 합니다. 키 세트 개념은 Tink의 안전한 설계에서 핵심적인 역할을 합니다.

AEAD 인터페이스

Tink의 AEAD(연관 데이터가 있는 인증 암호화) 인터페이스는 암호화 및 복호화 작업을 제공합니다. AeadFactory.getPrimitive(keyset)는 Aead 객체를 반환하며, aead.encrypt(plaintext, associatedData)를 호출하면 암호문이 반환됩니다. Tink는 키 세트에 따라 암호화 알고리즘(예: AES-256-GCM)을 자동으로 선택하고 무작위 논스를 생성합니다. 이 인터페이스는 모든 알고리즘 세부 정보, 논스 관리, 형식 인코딩을 숨깁니다.

MAC 인터페이스

Tink의 MAC 인터페이스는 메시지 인증 코드에 대한 계산 및 검증 작업을 제공합니다. MacFactory.getPrimitive(keyset)은 Mac 객체를 반환합니다. mac.computeMac(data)은 인증 태그를 반환하고, mac.verifyMac(tag, data)은 태그를 검증하며 검증에 실패하면 보안 예외를 발생시킵니다. 기본 알고리즘은 HMAC-SHA256입니다. 이 인터페이스는 MAC을 일반 문자열 등가성으로 비교하고 상수 시간 비교를 사용하지 않는 것과 같은 일반적인 실수를 방지합니다.

디지털 서명 인터페이스

Tink는 디지털 서명을 위해 별도의 PublicKeySign 및 PublicKeyVerify 인터페이스를 제공합니다. 서명 및 검증 객체는 서로 다른 키 세트 핸들(각각 개인 키와 공개 키)에서 파생되므로, 실수로 개인 키를 검증에 사용하거나 그 반대로 사용하는 일을 방지합니다. Tink의 Ed25519 및 ECDSA P-256 구현이 기본값이며, 무작위성 취약점을 방지할 수 있도록 결정론적 ECDSA도 사용할 수 있습니다.

하이브리드 암호화 인터페이스

Tink의 HybridEncrypt 및 HybridDecrypt 인터페이스는 ECIES(타원 곡선 통합 암호화 방식)를 구현합니다. 하이브리드 암호화는 비대칭 키 교환과 대칭 암호화를 결합합니다. 송신자는 임시 키를 생성하고, 수신자의 공개 키와 ECDH를 수행한 다음, 대칭 키를 도출하고 AEAD로 암호화합니다. 이를 통해 순수 비대칭 암호화의 오버헤드 없이 비대칭 키를 사용하여 큰 메시지를 암호화할 수 있습니다.

키 세트 순환 과정

Tink의 키 순환은 안전하며 이전 버전과 호환됩니다. 키를 순환하려면 새 키를 생성하여 키 세트에 추가하고, 새 키를 주 키로 지정하여 이후 암호화에 사용되도록 하며, 기존 암호문을 복호화할 수 있도록 이전 키를 키 세트에 유지합니다. 주 키가 아닌 키도 복호화에 계속 사용할 수 있으므로 기존 암호문은 계속 복호화됩니다. 모든 기존 암호문을 다시 암호화했거나 만료된 후에는 키 세트에서 이전 키를 삭제합니다.

키 세트 직렬화

Tink 키 세트는 JSON 또는 바이너리 Protocol Buffer 형식으로 직렬화됩니다. JSON 형식은 사람이 읽을 수 있어 디버깅에 유용합니다. 바이너리 형식은 운영 환경에서 더 작습니다. 개인 키가 포함된 직렬화된 키 세트는 저장하기 전에 암호화해야 합니다. Tink는 표준 대칭 AEAD 암호화를 사용하여 암호화된 키 세트를 저장하거나, 저장을 KMS에 위임하는 방식을 지원합니다.

키 세트 암호화를 위한 KMS 통합

Tink는 주요 KMS 공급자인 AWS KMS, Google Cloud KMS, HashiCorp Vault와 통합됩니다. Tink는 키 세트를 로컬 AEAD 키로 암호화하는 대신 KMS를 사용하여 키 세트 암호화 키를 래핑합니다. 실제 키 세트 암호화에는 로컬에서 생성한 데이터 암호화 키(DEK)가 사용되고, DEK는 KMS 키 암호화 키(KEK)로 암호화됩니다. 이는 클라우드 공급자가 사용하는 봉투 암호화 패턴을 따릅니다.

대용량 파일을 위한 스트리밍 AEAD

표준 AEAD는 암호화와 복호화를 위해 전체 메시지를 메모리에 로드해야 합니다. Tink의 스트리밍 AEAD 인터페이스는 대용량 파일을 세그먼트로 나누어 암호화하므로, 전체 평문을 버퍼링하지 않고도 스트리밍 암호화와 복호화를 수행할 수 있습니다. 각 세그먼트는 독립적으로 인증되며, 복호화 중에 세그먼트의 순서와 완전성이 검증됩니다. 이는 백업, 동영상 및 기타 대용량 파일을 암호화하는 데 필수적입니다.

언어 지원 및 생태계

Tink는 Java, Python, Go 및 C++에서 사용할 수 있으며 각 언어에 맞는 관용적인 API를 제공합니다. 언어 간 상호 운용성이 보장되므로 Python에서 Tink로 암호화한 파일을 Java에서 Tink로 복호화할 수 있습니다. 따라서 서로 다른 언어로 작성된 여러 서비스가 암호화된 데이터를 교환해야 하는 시스템에 Tink를 적합하게 사용할 수 있습니다. Tink는 유형이 안전한 키 세트 구성을 위해 프로토콜 버퍼와도 통합됩니다.

Tink 키 세트 순환

Tink에서 키를 순환하는 동안 기존의 주 키가 아닌 키로 암호화된 암호문에는 어떤 일이 발생합니까?

Google Tink 요약

Tink 요약: 키 세트 기반 추상화는 원시 키의 노출을 방지하고, AEAD 인터페이스는 논스 관리와 알고리즘 선택을 숨기며, MAC 인터페이스는 내부적으로 상수 시간 검증을 사용합니다. 디지털 서명 및 하이브리드 암호화 인터페이스는 인터페이스 오용을 방지하고, 키 순환은 이전 버전과 호환되므로 이전 키를 제거할 때까지 기존 키로 복호화할 수 있습니다. KMS 통합은 봉투 암호화 패턴을 따르고, 스트리밍 AEAD는 대용량 파일을 처리하며, 언어 간 상호 운용성이 보장됩니다.

자주 묻는 질문

“Google Tink: 안전한 고수준 암호” 강의는 무료인가요?

네 — “Google Tink: 안전한 고수준 암호” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Google Tink: 안전한 고수준 암호”에서 뭘 배우나요?

암호학 전문 지식 없이도 일반적인 암호 연산을 수행할 수 있도록 Tink의 키 세트 기반 API를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“Google Tink: 안전한 고수준 암호” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. libsodium: 오용 방지 암호 라이브러리
  2. OpenSSL API: 핵심 구조와 함정
  3. Google Tink: 안전한 고수준 암호
  4. 암호 의존성 감사와 선택
← Cryptology Academy(으)로 돌아가기