엔벨로프 암호화 사용하기

엔벨로프 암호화 사용하기 (Envelope encryption)

Transit은 엔벨로프 암호화 사용을 용이하게 해요. 이는 Transit이 데이터 암호화 키(DEK)와 암호화된 데이터 키(EDK) 집합을 생성하고, 클라이언트 측 라이브러리가 그 키를 사용해 클라이언트 측에서 정보를 암호화하고 결과에 EDK를 포함시키는 패턴이에요.

복호화 시 클라이언트는:

  1. Vault에 인증해요.
  2. EDK를 제공하고 Transit에 복호화를 요청해요.
  3. Transit이 복호화된 DEK를 제공해요.
  4. 클라이언트가 DEK를 사용해 데이터를 복호화해요.

출처: 문서

본문

설정 및 권한 (Setup and permissions)

데이터 키 집합 엔드포인트는 Transit 대칭 암호화 키에 적용돼요. 엔벨로프 암호화를 사용하려면 대칭 암호화 키를 만들고, 이상적으로는 aes256-gcm96 또는 chacha20-poly1305를 사용하세요. 파생 키 엔드포인트를 사용하려면 transit 키를 수렴(convergent)이면서 파생(derived)되도록 만들어야 해요.

transit_mount라는 transit 마운트와 encryption_key라는 대칭 키를 가정하면, 클라이언트 측 엔벨로프 암호화를 수행하는 호출자에 대해 다음 권한으로 ACL 정책을 만들어야 해요.

path "transit_mount/encryption_key/datakeys" {
  capabilities = ["create", "update"]
}

path "transit_mount_/encryption_key/derived_keys" {
  capabilities = ["create", "update"]
}

복호화에는 /decrypt 엔드포인트를 포함하세요.

path "transit_mount/encryption_key/decrypt" {
  capabilities = ["create", "update"]
}

SDK

애플리케이션 로직에서 암호화·복호화 과정을 단순화하기 위해, Transit에서 키 가져오기를 처리하고 스트림에서 암호화·복호화 함수를 제공하는 Go SDK를 제공해요.

명령줄 (Command Line)

Vault CLI는 데이터 키 집합 엔드포인트를 사용해 로컬에서 파일과 스트림을 쉽게 암호화하고 복호화하는 명령을 포함해요.

더 알아보기 (Learn more)