๊ฐ๋ฐ ์ค ๋์นญํค๋ก ์ํธํํด์ผํ ์ํฉ์ด ์๊ฒผ๋๋ฐ(DESede/CBC, DES/CBC, AES/CBC ๋ฑ์ ์๊ณ ๋ฆฌ์ฆ ์ด์ฉ), 192 ํน์ 256 bit์ ๋์นญํค๋ฅผ ์ด์ฉํ์ฌ ์ํธํ๋ฅผ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
java.security.InvalidKeyException: Illegal key size
์์ธ์ ์ฐพ์๋ณด๋ Java๋ ๊ธฐ๋ณธ์ ์ผ๋ก JCE ์ ์ฑ ์ ์ ๊ณตํ๋๋ฐ ์ด ์ ์ฑ ์ ๋ฏธ๊ตญ์ ์ ์ฑ ์ ๋ฐ๋ผ 128 bit๋ก ํค ๊ธธ์ด๊ฐ ์ ํ๋์ด ์์ด์ ์ด๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๊ฒ ์ด๋ค.
์ด ์ ์ฑ ์ <JAVA_HOME>/jre/lib/security/local_policy.jar์ default_local.policy ํ์ผ์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ ์ฑ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
// Some countries have import limits on crypto strength. This policy file
// is worldwide importable.
grant {
permission javax.crypto.CryptoPermission "DES", 64;
permission javax.crypto.CryptoPermission "DESede", *;
permission javax.crypto.CryptoPermission "RC2", 128,
"javax.crypto.spec.RC2ParameterSpec", 128;
permission javax.crypto.CryptoPermission "RC4", 128;
permission javax.crypto.CryptoPermission "RC5", 128,
"javax.crypto.spec.RC5ParameterSpec", *, 12, *;
permission javax.crypto.CryptoPermission "RSA", *;
permission javax.crypto.CryptoPermission *, 128;
};
Oracle์์๋ 128 bit๋ฅผ ์ด๊ณผํ๋ ํค๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฌ์ฉ์๋ฅผ ์ํด JCE Unlimited Strength ์ ์ฑ
ํ์ผ์ ์ ๊ณตํ๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์ค์ธ JAVA ๋ฒ์ ์ ๋ง์ถฐ ์ ์ฑ
ํ์ผ์ ๋ค์ด๋ฐ์ ๊ต์ฒด ํด์ฃผ๋ฉด ๋๋ค!
- JAVA 7 : https://www.oracle.com/java/technologies/javase-jce7-downloads.html
- JAVA 8 : https://www.oracle.com/kr/java/technologies/javase-jce8-downloads.html
๋ค์ด๋ฐ์ local_policy.jar, US_export_policy.jar ํ์ผ์ <JAVA_HOME>/jre/lib/security/ ๋๋ ํ ๋ฆฌ๋ก ์ฎ๊ธด๋ค.
๊ธฐ์กด ์ ์ฑ ํ์ผ์ ์ญ์ ํด๋ ๋๊ณ , ๋ฎ์ด์ฐ๊ธฐํด๋ ๋๋ค. ์ฌ๊ธฐ๊น์ง ํ๋ฉด JCE๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์ํธํ์ ํค ๊ธธ์ด ์ ํ์ด ํด์ ๋์ด 128 bit๋ฅผ ์ด๊ณผํ๋ ๋์นญํค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
JDK 8u151 ์ด์ ๋ฒ์ ์์๋ ์๋์ ๊ฐ์ด ๋๊ฐ์ ๋๋ ํ ๋ฆฌ๋ก ๋๋์ด์ ธ ์๊ณ , JCE ๋ค์ด๋ก๋ ์์ด /jre/lib/security/java.security ํ์ผ์ crypto.policy=unlimited ์ต์ ์ง์ ์ ๋ฐ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
- <JAVA_HOME>/jre/lib/security/policy/limited
- <JAVA_HOME>/jre/lib/security/policy/unlimited
๋๊ธ