본문 바로가기
WIKI 기술 지식 베이스

BYOK 암호화

원문 보기 위키 갱신

BYOK 암호화 (BYOK Encryption)

Turso Cloud의 모든 데이터베이스는 기본적으로 볼륨 단위로 저장 시 암호화돼요. 여기에 더해 Pro와 Enterprise 고객은 자신이 직접 만든 키로 데이터베이스를 암호화할 수 있어요. 이것이 BYOK(Bring-Your-Own-Key) 암호화예요.

출처: 문서

본문

Turso Cloud의 모든 데이터베이스는 SOC2 표준의 일부로 볼륨 수준에서 저장 시 암호화되고 있어요. 자세한 내용은 신뢰 센터에서 확인하세요.

Pro 및 Enterprise 고객은 아래 설명처럼 직접 제공한 키로 데이터베이스를 암호화할 수 있어요(Bring-Your-Own-Key Encryption, 또는 BYOK).

BYOK 암호화는 서버 수준에서 일어나서, 누구도 어떤 시점에도 여러분의 데이터에 접근할 수 없어요. 실제로 데이터베이스마다 서로 다른 키로 암호화할 수 있기 때문에, 고객별 데이터베이스에 서로 다른 키를 사용할 수도 있어요. 키 자체를 고객이 제공한다면, BYOK 암호화는 고객에게 "설령 당신이라도 데이터에 접근할 수 없다"는 보장을 제공해요.

데이터 저장 시 Turso Cloud BYOK 암호화는 업계 표준 AEAD 알고리즘을 사용해요. 각 데이터베이스 페이지가 개별적으로 암호화되어 모든 환경에서 데이터 무결성과 보안을 보장해요. BYOK 암호화는 Pro 및 Enterprise 플랜에서 사용할 수 있어요.

열쇠는 여러분이 쥐고 있어요. 각 데이터베이스는 여러분만이 통제하는 고유 키로 암호화될 수 있어요. Turso는 절대 여러분의 암호화 키를 보거나 저장하지 않아요. 암호화는 원격 쿼리와 동기화(sync) 모두에서 매끄럽게 동작해요.

  • 페이지 수준 암호화: 각 4 KiB 페이지는 고유 nonce로 개별적으로 암호화돼요
  • AEAD 알고리즘: AEGIS-256, AES-GCM, ChaCha20Poly1305 지원
  • 데이터 무결성: 내장 인증 태그로 변조와 손상을 방지해요
  • 인메모리 키: 암호화 키는 절대 디스크에 저장되지 않아요

BYOK 암호화가 적용된 Turso Cloud는 이런 용도에 딱이에요:

  • AI Agents: 개인 민감 데이터를 다루는 신뢰할 수 있는 에이전트 플릿 관리
  • Fintech Applications: 민감한 금융 데이터에 대한 규제 요구 충족
  • Privacy-Focused Products: 강력한 데이터 보호로 사용자 신뢰 구축
  • Healthcare Apps: 환자 데이터 보호 및 HIPAA 컴플라이언스 충족
  • AI/ML Applications: 학습 데이터와 모델 출력 보호

암호화되는 것

  • 디스크와 S3에 있는 데이터베이스 파일과 Write-Ahead Log(WAL) 파일.

암호화 키 생성하기

base64 형식의 안전한 암호화 키를 생성하세요. 키 크기는 선택한 암호(cipher)에 따라 달라요.

256비트 (32바이트) — AEGIS-256 변형과 AES-256-GCM용:

openssl rand -base64 32

출력 예시:

YUfkdsD2SJe4KzTB8n6CjwCgs1YIW6k1xxMEguRuI5s=

128비트 (16바이트) — AEGIS-128 변형과 AES-128-GCM용:

openssl rand -base64 16

출력 예시:

XG1iWMFBFYEYrmYxjWDf5w==

키를 안전하게 보관하세요! 암호화 키를 잃어버리면 암호화된 데이터베이스에 접근할 수 없어요. 키는 Turso Cloud 어디에도 저장되지 않아요.

암호화된 데이터베이스 만들기

1. 암호화와 함께 시작하기

--remote-encryption-key, --remote-encryption-cipher 플래그를 사용해 데이터베이스 생성 명령에 암호와 키를 지정하세요:

turso db create my-secret-db --remote-encryption-key "YOUR_SECRET_KEY" --remote-encryption-cipher aegis128l

YOUR_SECRET_KEY를 위에서 생성한 키로 바꾸세요. 매번 플래그를 전달하는 대신 TURSO_DB_REMOTE_ENCRYPTION_KEY 환경 변수를 설정할 수도 있어요.

2. 생성하고 데이터 삽입하기

--remote-encryption-key 플래그로 셸을 시작하고, 테이블을 만들고 데이터를 넣어 보세요:

turso db shell my-secret-db --remote-encryption-key "YOUR_SECRET_KEY"
CREATE TABLE secrets (id INT, data TEXT);
INSERT INTO secrets VALUES (1, 'sensitive information');
INSERT INTO secrets VALUES (2, 'confidential data');

3. 암호화 확인하기

셸을 나가고(.quit 입력) 키 없이 데이터베이스를 열어 보세요:

turso db shell my-secret-db

데이터에 접근할 수 없을 거예요. 데이터베이스가 클라우드에서 암호화되어 있거든요.

기존 데이터베이스 업로드하기

기존 암호화 데이터베이스를 업로드하려면 생성 시 암호와 키 플래그를 함께 제공하세요:

turso db create my-secret-db --remote-encryption-key "YOUR_SECRET_KEY" --remote-encryption-cipher aegis128l --from-file my-db.db

브랜칭과 시점 복구 (PITR)

암호화된 데이터베이스는 브랜칭과 시점 복구(point-in-time recovery, PITR)를 지원해요. 새 브랜치는 같은 암호 알고리즘과 같은 암호화 키를 사용해요. 생성 시 부모 데이터베이스에 사용된 것과 동일한 암호화 키를 지정해야 해요:

turso db create my-secret-db-fork --remote-encryption-key "YOUR_SECRET_KEY" --from-db my-secret-db

키 재설정 (Rekeying)

키 재설정은 아직 지원되지 않아요. 하지만 데이터베이스를 내보내고(export) 다른 암호와 키로 새 데이터베이스를 만들 수는 있어요:

turso db export my-secret-db --remote-encryption-key "YOUR_SECRET_KEY"
turso db create my-new-secret-db --remote-encryption-key "YOUR_NEW_SECRET_KEY" --remote-encryption-cipher aegis256 --from-file my-secret-db.db

지원되는 암호

Turso Cloud는 세 가지 AEAD 암호화 알고리즘의 여러 변형을 지원하며, 성능과 호환성 사이에서 서로 다른 절충안을 제공해요.

AES-GCM — 컴플라이언스 요구 사항을 위한 NIST 승인 표준. 업계 전반에서 폭넓게 지원돼요.

Cipher 키 크기 암호 코드 용도
AES-128-GCM 128-bit (16 bytes) aes128gcm 128비트 요구 사항 컴플라이언스
AES-256-GCM 256-bit (32 bytes) aes256gcm 컴플라이언스를 위한 최대 보안

ChaCha20-Poly1305

Cipher 키 크기 암호 코드 용도
ChaCha20-Poly1305 256-bit (32 bytes) chacha20poly1305 AES 대안

AEGIS — 속도에 최적화된 현대적인 고성능 암호군. 대부분의 사용 사례에 권장돼요.

Cipher 키 크기 암호 코드 용도
AEGIS-128L 128-bit (16 bytes) aegis128l 균형 잡힌 성능, 128비트 보안
AEGIS-128X2 128-bit (16 bytes) aegis128x2 2배 병렬 처리
AEGIS-128X4 128-bit (16 bytes) aegis128x4 4배 병렬 처리, 최대 속도
AEGIS-256 256-bit (32 bytes) aegis256 균형 잡힌 256비트 보안
AEGIS-256X2 256-bit (32 bytes) aegis256x2 2배 병렬 처리, 256비트
AEGIS-256X4 256-bit (32 bytes) aegis256x4 4배 병렬, 최대 속도와 보안

암호 선택하기:

  • 128비트 암호화에는 aegis128l, 256비트 암호화에는 aegis256을 사용하세요(기본 권장)
  • AES가 필요하다면 128비트 암호화에는 aes128gcm, 256비트 암호화에는 aes256gcm 또는 chacha20poly1305를 사용하세요

앞으로의 작업

개발 중인 미래 암호화 기능:

  • 기존 데이터베이스 암호화: 암호화되지 않은 데이터베이스를 암호화 형식으로 마이그레이션
  • 키 로테이션: 데이터 손실 없이 암호화 키 업데이트

더 알아보기 (Learn more)