[리빙 포인트] AWS Encryption SDK에서 Illegal key size Exception이 발생할 땐

Java Cryptography Extension을 설치하면 된다

뱅크샐러드에서는 AWS Key Management System (KMS)를 활용해 데이터를 암/복호화하고 있습니다. 그러던 어느 날, KMS를 이용하는 Service를 수정할 일이 있어 코드를 수정하고 작업환경에서 테스트를 진행하니, 아래와 같은 Exception이 발생했습니다.

com.amazonaws.encryptionsdk.exception.AwsCryptoException: java.security.InvalidKeyException: Illegal key size

미국 통상법에 따라 AES-256의 수출이 금지되어있기 때문에 발생한 에러였는데요, 이를 해결하기 위해 추가 조치가 필요했습니다.

U.S.A

로컬에 설치된 Oracle JDK에는 AES-256이 포함되어 있지 않습니다. 내부에서 Docker Image를 빌드할 때 사용하고 있는 Open JDK에서는 기본적으로 AES-256 알고리즘을 지원하기 때문에 실제 서비스에서는 정상으로 작동했습니다.

미국 외 지역에서 OracleJDK 기반으로 AES-256을 사용하려면 어떻게 해야 될까요?

Java 버전을 업데이트 하거나,
Java Cryptography Extension을 설치하면 됩니다.

6u181 / 7u171 / 8u161 / 9b148 버전 이후에는 Oracle JDK에서 기본적으로 AES-256을 지원하기 때문에 버전을 업데이트하거나, Extension을 설치하면 AES-256을 사용할 수 있습니다. 정말 간단하죠? (자세한 내용은 JDK-8170157을 참고하세요 😎)

Open JDK 🤟

이렇게 개발자들이 개발하는 환경은 다 다르고, 통일하기도 어렵습니다. 어떻게 하면 이 문제를 효과적으로 해결할 수 있을까요? 다음 글에서 Docker Compose를 활용해 이 문제를 해결할 수 있었는지에 대해 공유하도록 하겠습니다.

I’ll be back (soon)