T
TechInsights
목록으로
Architecture•2025. 07. 08.

우리는 암호화하는데 왜 키를 사용할까?

카카오 페이
카카오 페이 Engineering Team
우리는 암호화하는데 왜 키를 사용할까?

핵심요약

원문 보기

카카오페이손해보험의 암호화 모듈 리팩토링 경험을 통해 고전부터 현대 암호화 기법(대칭키, 비대칭키, 하이브리드, 봉투 암호화)의 발전 과정을 설명하고, 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 두 가지 구현 방식을 제공하여 선택의 폭을 넓혔습니다.
#Architecture#BackEnd
카카오 페이
카카오 페이

카카오 페이 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
Amazon Bedrock AgentCore Runtime을 쉽고 빠르게 시작하기

Amazon Bedrock AgentCore Runtime을 쉽고 빠르게 시작하기

Enterprise Agentic AI를 위한 Amazon Bedrock AgentCore Built-in Tools: Code Interpreter and Browser Tool

Enterprise Agentic AI를 위한 Amazon Bedrock AgentCore Built-in Tools: Code Interpreter and Browser Tool