본문 바로가기
Java

[Java] Jasypt 암호화

by dbs_ 2025. 11. 23.

 

 

회사 솔루션에 보안 취약점 진단 리포트가 들어왔다. 그중에서도 Critical 등급으로 분류된 항목이 있었는데, 바로 설정 파일 암호화에 사용 중인 Jasypt의 암호화 알고리즘이 취약하다는 거였다. PBEWithMD5AndDES를 쓰고 있었는데, 이게 Weak Encryption으로 지적받았다. 이번에 이 문제를 해결하면서 Jasypt 암호화 알고리즘을 업그레이드한 과정을 정리해봤다.

 

보안 취약점 진단 결과

  • 등급 : Critical
  • 문제 : Weak Encryption
  • 기존 알고리즘: PBEWithMD5AndDES
    • 이 알고리즘은 MD5 해시와 DES 암호화를 사용하는데, 둘 다 현대 보안 기준에서는 너무 취약하다.

 

Jasypt란?

Jasypt (Java Simplified Encryption)는 Java 애플리케이션에서 설정 파일의 민감한 정보(DB 비밀번호, API Key 등)를 암호화하기 위한 라이브러리다.

왜 필요할까?

설정 파일이 노출되더라도 암호화 키가 없으면 복호화할 수 없기 떄문에 보안이 강화된다!

# 평문으로 저장하면 위험!
db.password=admin
api.key=test1234

# Jasypt로 암호화하면
db.password=ENC(xMg8L5dKpQ7vR2nW3hF9...)
api.key=ENC(zP4jK8mN2qT6vY9wL3...)

 

문제의 알고리즘.. 왜 취약한가?

  • 문제의 알고리즘 : PBEWithMD5AndDES
    • MD5 : 해시 충돌이 쉽게 발생, 무차별 대입 공격에 취약
    • DES : 56비트 키 길이, 현대 컴퓨팅 파워로 몇 시간 내 해독 가능
    • PBE 방식 : Password-Based Encryption 자체는 괜찮지만, 약한 알고리즘과 조합되면 의미 없음

 

그렇다면 권장 알고리즘은?

  • AES 계열
    • Jasypt 1.9.3부터 지원하는 강력한 알고리즘들
      • Jasypt 1.9.3 버전부터 HMAC-SHA와 AES를 조합한 알고리즘을 지원한다.
      • 예) PBEWITHHMACSHA256ANDAES_256, PBEWITHHMACSHA512ANDAES_256 등등
  • 그리고..
    • AES 계열 알고리즘을 사용하려면 Java 8 이상이 필요하다. 왜냐하면 JCE (Java Cryptography Extension) Provider에서 해당 알고리즘을 지원하기 시작한 게 Java 8부터이기 때문...

 

다음에는 JCE와 Bouncy Castle에 대해서도 간단히 정리해서 올려보아야겠다.