
핵심요약
카카오페이손해보험의 암호화 모듈 리팩토링 경험을 통해 고전부터 현대 암호화 기법(대칭키, 비대칭키, 하이브리드, 봉투 암호화)의 발전 과정을 설명하고, JPA/Hibernate 스펙 및 AOP를 활용한 실제 구현 및 문제 해결 과정을 상세히 다룹니다.
카카오페이손해보험 암호화 모듈 리팩토링 및 현대 암호화 기본기
암호화 패러다임의 진화와 실무 적용
- 레거시 암호화 모듈의 라이브러리 호환성 및 확장성 한계로 리팩토링이 필요했습니다.
- 케르크호프 원리에 기반한 현대 암호는 키를 중심으로 발전했으며, **대칭키(AES)**와 **비대칭키(RSA)**가 대표적입니다.
- 두 방식의 장점을 결합한 하이브리드 암호화는 TLS, JWT 등 최신 프로토콜의 핵심입니다.
- 봉투 암호화는 Data Encryption Key (DEK)와 Key Encryption Key (KEK)를 통해 데이터를 안전하게 관리하는 방법론으로, AWS KMS 같은 관리형 서비스로 구현됩니다.
- AWS KMS는 **고객 마스터 키(CMK)**를 활용하여 DEK를 암호화하고, 키 회전 및 접근 추적을 지원하여 보안 및 관리 편의성을 제공합니다.
효율적인 암호화 모듈 구현 전략
- JPA/Hibernate 스펙을 활용하여 암호화 모듈을 비즈니스 로직에 쉽게 통합하는 방안을 모색했습니다.
- AOP 기반
EncryptionListener구현 시@PostLoad이벤트가 불필요한UPDATE쿼리를 발생시켜, Entity Life Cycle에서의 값 변경에 대한 예측 불가한 부작용을 경험했습니다. - **
AttributeConverter**는 JPA 표준 스펙으로,convertToDatabaseColumn()과convertToEntityAttribute()를 통해 1차 캐시 문제 없이 자동 암/복호화를 구현했습니다. - Hibernate의 **
UserType/ParameterizedType**은AttributeConverter의 파라미터 전달 한계를 보완하지만, 구현이 복잡하고 타입 안전성 이슈가 있었습니다. - 최종적으로는 사용 편의성과 유연성을 고려하여
AttributeConverter와UserType/ParameterizedType두 가지 구현 방식을 제공하여 선택의 폭을 넓혔습니다.
카카오 페이