본문 바로가기
system_fundamentals/security_cryptography

DB 암호화 전략

by 죄니안죄니 2026. 5. 20.
반응형
 
 
DB 암호화 전략DB 암호화 전략DB 암호화 전략
 
 

DB 암호화 전략은 한 줄로 말하면:

"무엇을, 어디서, 어떤 키로 암호화할 것인가"
 

를 설계하는 것이다.

실무에서는 단순히:

AES 적용
 

한다고 끝이 아니다.


가장 먼저 구분해야 하는 것

DB 암호화는 크게 4계층 존재.

계층설명
전송구간 암호화 TLS
디스크 암호화 저장장치
DB 자체 암호화 TDE
컬럼 암호화 애플리케이션

1. 전송구간 암호화

가장 기본.


목적

DB 통신 패킷 탈취 방지
 

예:

Spring ↔ MySQL
 

사이 TLS 적용.


MySQL 예시

 
useSSL=true
 

PostgreSQL 예시

sslmode=require
 

이건:

네트워크 보호
 

이지 DB 내부 데이터 암호화는 아니다.


2. 디스크 암호화

예:

  • BitLocker
  • AWS EBS Encryption
  • LUKS

목적

디스크 탈취 대비
 

장점

운영 간단.


단점

DB 실행 중에는:

평문 접근 가능
 

즉 DB 계정 털리면 무의미.


3. TDE(Transparent Data Encryption)

엄청 많이 사용.

Transparent data encryption


핵심

DB 엔진이:

파일 자체 암호화
 

한다.


예:

  • Oracle TDE
  • SQL Server TDE
  • MySQL Enterprise TDE

장점

애플리케이션 수정 거의 없음.


구조

Disk
↑ 암호화
DB Engine
↑ 평문
Application
 

즉:

DB 내부에서는 평문
 

이다.


그래서 막는 대상

공격방어 여부
디스크 탈취 O
백업파일 탈취 O
DBA 조회
SQL Injection

즉 TDE만으로 부족.


4. 컬럼 암호화(Application Encryption)

실무 핵심.


구조

Application
↓ 암호화
DB 저장
 

즉 DB에는:

암호문만 저장
 

예시

주민번호
카드번호
계좌번호
 

장점

DB 관리자도 평문 보기 어려움.


단점

검색/정렬 어려움.


가장 중요한 전략 — 데이터 분류

모든 컬럼 암호화하면 성능 망가질 수 있음.


보통 분류

데이터전략
일반 데이터 평문
개인정보 컬럼암호화
비밀번호 단방향 Hash
카드번호 강한 암호화

비밀번호는 절대 복호화형 금지

엄청 중요.


❌ 잘못된 방식

AES(password)
 

✅ 정답

bcrypt
Argon2
PBKDF2
 

이유

비밀번호는:

복호화 필요 없음
 

카드번호/주민번호는?

복호화 필요.

즉:

AES 같은 양방향 암호화
 

사용.


검색 문제

엄청 실무 중요.


암호화하면:

 
WHERE name='홍길동'
 

검색 불가능.


그래서 보통 전략


1. Hash 검색 컬럼 추가

예:

컬럼내용
phone_enc AES 암호문
phone_hash SHA256

검색 시

Hash(phone)=SHA256(phone)Hash(phone)=SHA256(phone)

hash 비교.


단점

완전한 부분검색 어려움.


2. Tokenization

카드업계 많이 사용.


실제 번호 대신:

TOKEN_ABC123
 

저장.


원본은 별도 Vault/HSM.


키 관리가 핵심

암호화보다 더 중요.


절대 금지

 
String KEY = "123456789";
 

실무는:

  • KMS
  • Vault
  • HSM

사용.


Envelope Encryption 구조

실무 표준.


구조

Data
↓ DEK(AES)
Encrypted Data

DEK
↓ KEK(KMS)
Encrypted DEK
 

즉:

데이터 키도 암호화
 

키 Rotation 중요

예:

AES 키 교체
 

가능해야 함.


그래서 보통:

  • key_version
  • kid

관리.


로그 암호화도 중요

실수 많음.


절대 금지

 
log.info("card={}", cardNo);
 

마스킹 필요

예:

1234-****-****
 

DB 권한 분리 중요

예:

계정권한
app_user 최소
dba 관리
readonly 조회

그리고

애플리케이션만 복호화 가능
 

구조 중요.


실무 추천 전략


개인정보

AES 컬럼암호화
 

비밀번호

Argon2/bcrypt
 

디스크

TDE/EBS Encryption
 

키관리

KMS/Vault
 

검색

Hash 컬럼 병행
 

핵심 한 줄

DB 암호화 전략의 핵심은:

데이터 중요도에 따라
비밀번호는 단방향 Hash,
개인정보는 컬럼 암호화,
디스크는 TDE,
키는 KMS/Vault로 분리 관리하며,
검색성과 성능까지 함께 고려하는 것
 

이다.

반응형

'system_fundamentals > security_cryptography' 카테고리의 다른 글

Kubernetes Secret 문제  (0) 2026.05.20
TLS 종료 위치  (0) 2026.05.20
API Gateway 인증 구조  (0) 2026.05.20
MSA 환경 JWT 문제  (0) 2026.05.20
대규모 서비스의 인증 구조  (0) 2026.05.20

댓글