본문 바로가기
IT 개발 이야기/Java

[Java] AES-256 암호화 시 java.security.InvalidKeyException: Illegal key size 에러 원인 및 해결 방법

by 개발자 Aiden 2023. 2. 14.
반응형

AES-256 암호화와 Illegal key size 에러

AES-256 암호화는 Advanced Encryption Standard의 256비트 버전으로, 높은 보안 수준을 제공합니다. 이 암호화 방식은 금융 정보, 국가 기밀, 개인정보 등 매우 중요한 데이터를 보호하는 데 널리 사용됩니다.

AES-256 암호화를 사용하려 할 때, Java에서는 종종 InvalidKeyException: Illegal key size 에러가 발생합니다. 이 에러의 원인과 해결 방법을 자세히 알아보겠습니다.

Illegal key size 에러 원인 및 해결 방법


Illegal key size 에러 발생 원인

Java의 JCE(Java Cryptography Extension)는 암호화 기능을 제공하는 확장 라이브러리입니다. 그러나 미국의 수출 통상법에 따라, 기본적으로 128bit만 지원되는데, 이는 AES-128 암호화까지만 지원한다는 것을 의미합니다. 따라서, AES-256 암호화를 사용하려 할 때, Java는 Illegal key size 에러를 반환합니다.

java.security.InvalidKeyException: Illegal key size
  at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
  at javax.crypto.Cipher.implInit(Cipher.java:805)
  at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
  at javax.crypto.Cipher.init(Cipher.java:1396)
  at javax.crypto.Cipher.init(Cipher.java:1327)
  ...

 

 Illegal key size 에러 해결 방법

AES-256 암호화는 현재 가장 강력한 암호화 방식 중 하나로 꼽힙니다. 그러나 Java에서 이를 사용하기 위해서는 몇 가지 설정이 필요합니다. 특히 Java의 기본 설정은 미국의 수출 제한 때문에 256비트 암호화를 지원하지 않습니다. 이로 인해 위와 같은 에러가 발생할 수 있습니다.

○ JDK 8u151 이전 버전인 경우

1. Java JCE Unlimited Strength Policy File 다운로드하기

 

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE Download

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files Download The Java Cryptography Extension enables applications to use stronger versions of standard algorithms. Current versions of the JDK do not require these policy files. The

www.oracle.com

※ Oracle 계정이 없거나 다운로드가 안 되는 경우, 아래의 구글 드라이브 링크를 통해 다운로드 가능합니다.
하루 - 구글 드라이브 파일 공유 폴더

2. 정책 적용하기
다운로드한 local_policy.jar 와 US_export_policy.jar 파일을 $JAVA_HOME\jre\lib\security 폴더에 복사합니다.

반응형


○ JDK 8u151 이후 버전인 경우

JDK 8u151부터는 JCE 정책이 unlimited policy로 변경되었습니다. 이로 인해 Java 설치 시 JCE Unlimited Strength 정책 파일이 기본적으로 포함됩니다.
$JAVA_HOME\jre\lib\security\policy 하위에는 limited와 unlimited 두 개의 폴더가 있습니다. 이는 암호화 강도를 선택할 수 있게 해주는 기능입니다.

1. 길이 제한 해제하기
$JAVA_HOME\jre\lib\security 폴더로 이동 후 java.security 파일을 편집합니다. 그리고 #crypto.policy=unlimited 속성을 찾아 주석을 제거합니다.

unlimited policy 정책 정보


암호화는 데이터 보안의 핵심입니다. 특히, AES-256은 그중에서도 가장 강력한 암호화 방식 중 하나입니다. Java에서 이를 사용하려면 위에서 설명한 설정이 필요합니다. JDK8 기준 8u161 Release Notes에 따르면, unlimited를 기본값으로 설정되어 있기 때문에 별도의 작업 없이도 길이 제한 없이 사용 가능합니다.


※ [Java] AES 암호화/복호화 예제( AES-256 )

 

[Java] AES 암호화/복호화 예제( AES-256 )

Java AES-256 양방향 데이터 암호화에 대해 알아보자. 정보보안 이슈 대응으로 개인정보( 주민번호 등 ) 데이터에 대한 암호화 정책은 실무에서 필수 적용 항목이다. AES-256 은 현재 실무에서 가장 많

aday7.tistory.com

반응형

댓글


loading