[Spring] DB 개인정보 암호화 시스템 구축기: AES‑256‑GCM + Blind Index
·
Spring Framework/Spring & Spring Boot
사이드 프로젝트에서 전화번호, 결제 정보 등 민감 데이터를 다루면서 DB 암호화의 필요성을 느꼈다. 단순히 암호화만 하면 되는 줄 알았는데, 검색은 어떻게 하지? 마이그레이션은? NestJS 서버와 같은 DB를 쓰는데 호환은? 하나씩 해결해 나간 과정을 정리한다. 들어가며개인 프로젝트를 진행하다 보면 전화번호, 빌링키 같은 민감한 데이터를 DB에 저장해야 하는 순간이 온다. 개인정보보호법이나 정보통신망법을 따져보면 양방향 암호화가 필수인 항목들이 꽤 많다. 공부 삼아 직접 암호화 모듈을 설계하고 구현해 봤는데, 생각보다 고려할 것이 많았다.특히 이런 문제들이 까다로웠다:검색 불가: AES-GCM은 랜덤 IV를 사용하므로 WHERE phone = ? 검색이 안 된다기존 데이터 전환: 이미 저장된 평문 데이..