Unlimited Strength Java(TM) Cryptography Extension (JCE) Policy Files

난 솔직히 자바를 많이 쓰는 녀석이 아니다. 내 스스로 처음 프로젝트를 시작한다 해도 자바를 선택하지는 않는 편이다. 그런데, 자바를 써야 할 때에는 쓴다. 쓰지 못하는 게 아니라 쓰지 않는 것이다. 그래서 남들은 다 알아도 나는 모르는 것도 많다. 지금 글을 쓰는 이 제목의 정체도 마찬가지이다.

암호화를 위해서는 상당히 많은 수준의 바이트 연산을 처리해야 한다. 이건 뭐, 요즘 나오는 암호화 기법을 사용하던, 기존의 기법에서 변경된 암호화던 간에 기본적으로 처리하는 연산량이 크다. 그러나 Java SE의 경우에는 강한(strong) 암호화 기법을 이용하여 개발은 할 수 있는데, 이 길이에 제약이 있다. 이걸 “limited strength”라고 문서에 표현되어 있다. 이걸 “unlimited strength”화 하여 암호화 기법을 더욱 강력하게 해주는 것이 바로 지금 작성하는 JCE 정책 파일이다.

이런 게 왜 있냐고 묻는 사람들이 있을 것이다. 나도 좀 궁금해서 좀 찾아봤다. 그러고 보니 여러 내용들이 나오는데, 어느 정도 조합을 하니 내용이 이해가 좀 되었다.

암호화의 강도 구성에 대해서는 어느 정도 국가간의 제약이 있다는 것이다. 암호화 기술의 수출 제약이라는 것인데, 이 내용에 대해서는 일반 사람들이 들어봤을 법한 내용으로는 공인인증서 역사에 나와있는 국내에서 개발했다는 암호화 알고리즘 이야기를 들을 수 있을 거 같다. 뭐, 이런 국가간의 암호화 기술간의 수출 제약이 있기 때문에, 기본적으로 배포되는 JDK, JRE에는 어느 정도 제약이 있는 암호화 기술을 내장하여 배포를 한다는 것이다. 자바의 배포는 글로벌하게 배포되기 때문에 어느 정도의 제약이 있게 만들었다는 것이다. 이 부분을 없애기 위해서 자바를 배포하는 쪽에서는 암호화 강도에 대한 제약을 없앤 별도의 번들을 제공한다는 것이다. 이것 또한 대부분의 국가에 적합한 암호화 정책이 적용되어 있다는 것이다.

이 정보를 보면서 알게 된 사실은, 프레임워크를 제작하여 배포하는 업체는 해당 국가의 정부에서 제한되는 것을 요구한다면 해당된 제한에 맞춰진 프레임워크를 제작하고 그리고 그에 대한 제약을 해제한 별도의 번들을 배포할 수 있는 것이 있다는 사실이다. 그리고 사용자는 해당되는 번들을 사용하더라도 법률에 정해진 어느 정도의 제약된 번들 안에서 강한 구성의 암호화를 할 수 있다는 것이다.

설치법은 간단하다. 다운로드 사이트(http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)에서 해당되는 파일을 다운로드 한 다음에 압축 풀고 jre 폴더 내에 있는 lib/security 안에 덮어쓰면 된다.

스크린샷 2017-03-18 오후 5.21.07

똑같은 파일이라 그냥 덮어쓰면 된다. 기존에 쓰던 것이 맘에 걸리면 이미 jre에 설치되어 있던 동일 파일을 백업한 다음에 덮어쓰면 된다.

이 다음에 인증서 관련된 작업을 하면 확실히 다른 작업을 할 수 있다.

이런 것이 왜 필요할까 싶은 사람들이 있겠지만 인증서 관련 작업을 하다 보면 “jce unlimited strength jurisdiction policy” 관련된 오류가 발견될 수 있다. 이때 필요한 것이 바로 이것이다. 이 환경에 맞춰서 개발이 되었기 때문에 그에 맞춰서 작업을 해줘야 한다. 개발할 때 jce 관련된 것들을 import 해서 작업한 것인지 아니면 ca 관련 작업에 기본적으로 필요한 것이라 jre에서 자동으로 찾아주는지 그런 자세한 부분은 내가 인증서쪽 개발을 안해봐서 자세한 건 모르겠다. 이 글도 나도 필요하다보니 오픈소스로 된 인증 모듈을 갖다 쓰는데 이런 오류가 나서 알아보고 작성한 것이다.

뭐, 이런 것이 있다는 걸 알아두는 것도 좋은 같아서 정리해서 작성했는데…  혹시 이 파일에 대해서 좀 더 자세히 아시는 분 있으면 덧글로 남겨주세요. 승인해서 같이 보고 정보를 나눠보죠. ㅇㅂㅇ