용어집

키 래핑이란 무엇인가요?

키 래핑은 하나의 키(페이로드 키)를 다른 키(래핑 키 또는 키 암호화 키)로 암호화하는 암호 연산으로, 키 자료가 저장되거나 전송되는 동안 기밀성과 무결성을 제공한다.

다른 이름: key wrap, AES-KW, key encryption key

키 래핑은 암호화 시스템의 실질적인 문제를 해결한다. 즉, 암호화 키 자체를 어떻게 보호할 것인가다. 데이터 암호화 키가 평문으로 저장되면 저장소에 접근할 수 있는 누구나 그 키를 사용할 수 있다. 키 래핑은 데이터 키를 별도의 래핑 키로 암호화함으로써 이를 해결한다. 그 결과 키 계층 구조가 만들어지며, 암호화된 데이터에 접근하려면 래핑된 키와 그것을 풀 수 있는 수단이 모두 필요하다.

AES-KW(AES Key Wrap, RFC 3394에 정의됨)는 가장 널리 쓰이는 키 래핑 알고리즘이다. 범용 암호화 모드와 달리 AES-KW는 키 자료를 래핑하기 위해 특별히 설계됐다. 기밀성과 무결성을 모두 제공하며, 래핑 키가 틀리거나 래핑된 데이터가 변조되면 잘못된 키 자료를 만들어내는 대신 언래핑 연산이 실패한다. 이 무결성 검증은 매우 중요한데, 잘못된 키가 조용히 받아들여지면 데이터가 아무런 오류 표시 없이 쓸모없는 값으로 복호화되기 때문이다.

키 래핑은 키 관리 시스템, HSM(하드웨어 보안 모듈), 그리고 클라우드 제공자가 사용하는 봉투 암호화(envelope encryption) 방식의 핵심이다. 봉투 암호화에서는 데이터를 데이터 키로 암호화하고, 그 데이터 키를 마스터 키로 래핑한다. 이 패턴은 효율적인 키 회전을 가능하게 한다. 마스터 키가 바뀌어도 전체 데이터셋이 아니라 작은 래핑된 키만 다시 암호화하면 되기 때문이다.

Wrap a data key with a passphrase

A random AES-256 data key gets encrypted by a wrapping key derived from your passphrase via PBKDF2. Change the unwrap passphrase to see AES-KW reject the wrong key cleanly.

Data key (AES-256, what actually encrypts your secret)
 
Wrapped key (what gets stored / shared)
 
Salt (random per wrap, fed to PBKDF2)
 
Try matching and mismatching the unwrap passphrase to compare outcomes.

This is exactly the flow Vaulted runs when you set a passphrase. The wrapping key never leaves your browser; only the wrapped key and salt travel — in the URL fragment, so the server sees neither.

Vaulted가 키 래핑을 사용하는 방법

Vaulted는 비밀에 패스프레이즈가 설정되면 AES-KW 키 래핑을 사용한다. 흐름은 다음과 같다. 브라우저가 비밀을 암호화할 무작위 AES-256-GCM 키를 생성한 뒤, PBKDF2로 패스프레이즈에서 래핑 키를 유도한다. AES-256-GCM 키는 유도된 래핑 키와 AES-KW를 사용해 래핑된다. 래핑된 키와 솔트, IV는 URL 프래그먼트에 포함된다. 수신자는 패스프레이즈를 입력해 PBKDF2로 래핑 키를 다시 유도하고, AES-256-GCM 키를 언래핑한 뒤 비밀을 복호화한다.