데이터베이스 암호화는 크게 위치(어디서 암호화 하는가)에 따라 3가지 주요 방식으로 나뉩니다.
1. API (Application Programming Interface) 방식
애플리케이션 서버 내에 암/복호화 모듈을 라이브러리 형태로 설치하고, 소스 코드에서 이를 호출하여 데이터를 암호화한 뒤 DB에 전송합니다.
- DB 서버 부하가 거의 없음.
- 소스 코드 수정이 필수적이므로 구축 비용과 시간이 많이 소요됨.
- 데이터가 네트워크로 전송될 때 이미 암호화되어 있어 보안성이 높음.
2. Plug-In 방식
DB 서버에 암/복호화 모듈을 설치하고, DB의 프로시저나 트리거 기능을 활용하여 암호화를 수행합니다.
- 애플리케이션 소스 코드 수정이 거의 없음.
- DB 서버가 암/복호화 연산을 수행하므로 DB 서버 부하(CPU 점유율)가 발생함.
- 관리가 상대적으로 용이하여 가장 널리 쓰이는 방식 중 하나임.
3. TDE (Transparent Data Encryption) 방식
DBMS 엔진 자체의 암호화 기능을 사용합니다. 데이터 파일이 디스크에 저장될 때 암호화되고, 메모리로 읽어올 때 복호화됩니다.
- 소스 코드 수정이나 SQL 수정이 아예 필요 없음.
- 인덱스 검색 등 성능 저하가 가장 적음.
- 단, 데이터가 메모리에 올라오면 평문으로 존재하므로, DB 관리자(DBA) 권한 탈취 시 보안에 취약할 수 있음.
4. Hybrid 방식
최근에는 API와 Plug-In 방식을 혼합하여 사용합니다.
- 일반 데이터 : 관리가 편한 Plug-In 방식 사용.
- 대용량/고성능 데이터 : DB 부하를 줄이기 위해 API 방식 사용.
| 구분 | API 방식 | Plug-In 방식 | TDE 방식 |
| 암호화 위치 | 애플리케이션 서버 | DB 서버 | DB 엔진 (커널) |
| 애플리케이션 수정 | 많음 (필수) | 거의 없음 | 없음 |
| DB 서버 부하 | 낮음 | 높음 | 낮음 |
| 성능 영향 | 작음 | 큼 | 매우 작음 |
| 구축 난이도 | 어려움 | 보통 | 쉬움 |
