반응형



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 |
댓글