2026년 새 사업의 일환으로 양자 내성 암호의 시작을 알리는 소개글로 시작한다.
Java 24(2025년 3월)에 도입된 두 개의 새로운 JEP는 자바에서 양자 컴퓨터의 공격으로 부터 막기 위한 포스트 양자 암호(Post-Quantum Cryptography, PQC)라는 주제를 다룬다.
해당 JEP는 다음과 같다.
JEP 496 – 양자 내성 모듈 격자 기반 키 캡슐화 메커니즘
JEP 497 – 양자 내성 모듈 격자 기반 디지털 서명 알고리즘
이상적인 암호 시스템은 두 당사자가 사전에 비공개 채널을 통해 키를 교환하는 방식이지만, 이는 대규모 환경이나 장거리 통신, 혹은 사전에 서로를 알지 못하는 당사자 간의 통신에서는 현실적으로 작동하지 않는다.
이 문제를 해결하기 위해 공개 키 암호화는 일방향 함수(one-way function), 또는 트랩도어 함수(trapdoor function)를 활용한다.
이를 통해 수신자는 송신자가 키(또는 메시지)를 암호화하는 데 사용할 수 있는 정보를 공개할 수 있지만, 해당 정보를 가진 제3자는 이를 복호화할 수 없다.
현재 사용되는 암호학적 보호 기법은 큰 수의 소인수분해와 같은 이산 수학 문제가 계산적으로 매우 어렵다는 가정에 기반한다. 숫자를 곱하는 것은 쉽지만 이를 소인수분해하는 것은 어렵다는 점이 일방향 함수의 핵심이며, 이것이 암호화에 유용한 이유다.
현재로서는 알려진 소인수분해 알고리즘 대부분이 계산 난이도 면에서 사실상 무차별 대입(brute force)과 크게 다르지 않다.
이러한 가정 덕분에 암호학자들은 키 캡슐화 메커니즘(KEM)을 깨고 대칭 키를 복구하는 데 필요한 계산 능력을 비교적 정확하게 추정할 수 있다. 그 결과, 무어의 법칙과 같은 컴퓨팅 성능 향상 추세를 고려하더라도 사용자들은 통신 보안에 대해 신뢰를 가질 수 있다.
그러나 최근 몇 년 사이 양자역학적 특성을 활용하는 컴퓨터가 등장하기 시작했다. 이때 핵심 개념은 큐비트(qubit)로, 이는 단순히 0 또는 1 중 하나가 아니라 두 상태의 확률적 결합을 동시에 나타낸다. 양자 컴퓨팅은 큐비트를 어느 한 상태로 확정(이를 “붕괴(collapse)”라고 함)하지 않은 채로 연산을 수행한다.
양자 컴퓨팅에 대한 추가적인 배경 지식은 전문 자료를 참고해야 한다.
미래의 대규모 양자 컴퓨터는 쇼어 알고리즘(Shor’s algorithm)과 같은 새로운 기법을 활용해 이산 로그 문제를 해결할 수 있으며, 그 결과 RSA(Rivest–Shamir–Adleman)나 디피-헬만(Diffie-Hellman), 심지어 타원 곡선 알고리즘을 포함한 널리 사용되는 공개 키 기반 알고리즘의 보안을 무력화할 수 있다.
반면 ML-KEM은 미래의 양자 컴퓨팅 공격에도 안전하도록 설계되었다. 이는 “어려운 문제”에 대해 완전히 다른 접근 방식을 사용하기 때문이다. ML-KEM은 미국 국립표준기술연구소(NIST)에 의해 FIPS 203으로 표준화되었다.
ML-KEM은 격자 암호(lattice cryptography)의 한 형태를 사용한다. 이는 n차원 공간에 규칙적으로 배치된 점들로 구성된 n차원 격자를 활용하는 방식이다. 이 점들은 벡터로 볼 수 있으며, 서로 더해질 수 있어 이동군(translation group)을 형성한다.
이러한 수학적 기법을 활용해 안전한 암호 알고리즘을 만드는 강력한 방법 중 하나가 오류를 포함한 학습(Learning With Errors, LWE)이다. 이는 오류가 포함된 방정식 집합으로 비밀 정보를 표현하는 아이디어에 기반하며, 대략 2010년 이후 수학 연구 커뮤니티에서 본격적으로 등장했다.
현재로서는 대규모 양자 컴퓨터가 아직 존재하지 않는다. 가장 진보된 실험실 수준의 시스템이 최근 처음으로 RSA 암호에 적용되었지만, 이는 양자 기법을 사용해 50비트 정수를 소인수분해한 수준에 불과하다. 이는 실제 운영 시스템에서 사용하는 키 길이에 비하면 매우 짧다. 예를 들어 일반적인 자바 애플리케이션은 2048비트 키를 사용하는데, NIST는 이 키 길이가 최소 2030년까지 충분하다고 보고 있다.
그럼에도 불구하고 미국 정부는 민감한 정보를 처리하는 컴퓨터 시스템이 향후 10년 내에 ML-KEM과 기타 예정된 표준을 사용하도록 업그레이드해야 한다고 의무화했다. 예를 들어 NSA는 늦어도 2033년까지 완전한 포스트 양자 체계로 전환할 계획이다.
2024년 기준으로, 이론적으로는 국가 단위의 공격자가 향후 충분히 강력한 양자 컴퓨터가 등장할 것을 대비해, 현재의 암호화된 트래픽을 대량으로 수집·저장하고 있다가 미래에 이를 복호화할 가능성도 있다.
다시 말해, 즉각적인 위협은 존재하지 않는다. 이 표준들은 미래를 대비하고, 오늘날 전송되고 있는 취약한 트래픽의 양을 최소화하기 위한 것이다.
앞으로의 길은 결코 명확하지 않다. 한편으로는 오늘날의 키를 위협할 수준의 대규모 양자 컴퓨터를 만드는 데 심각한 기술적 난관이 존재하며, 이로 인해 실용적인 양자 해독기의 등장이 지연될 수도 있다. 다른 한편으로는 새로운 기술이 등장해 그 시점을 예상보다 훨씬 앞당길 가능성도 있다.
마지막으로 고려해야 할 점은, 인터넷 보안 표준의 역사에서 상호운용성 문제와 명확한 마이그레이션 경로의 부재, 이른바 프로토콜 고착화(protocol ossification) 문제가 반복적으로 나타났다는 사실이다. 이것 또한 지금부터 이러한 작업을 시작해야 하는 또 하나의 이유다.
Cloudflare의 최근 블로그 글은 TLS 1.3을 배포한 경험을 바탕으로, 현재의 PQC 상태와 이러한 상호운용성 문제를 함께 논의하고 있다.
어쨌든 자바는 수명과 보급 측면에서 매우 장기적인 플랫폼이므로, 완전한 표준화 이전이라 하더라도 포스트 양자 기능을 지원하기 시작하는 것이 필요하다. 이 두 개의 JEP는 고전적인 공개 키 암호를 넘어서는 세계로 나아가는 자바의 첫걸음을 의미한다.
'☕ Java' 카테고리의 다른 글
| [Java] Garbage Collection의 STW(Stop The World) 부하 테스트 (0) | 2025.02.11 |
|---|---|
| [Java] JMH(Java Microbenchmark Harness)를 이용한 성능 테스트 (0) | 2025.01.13 |
| [Spring] DTO는 어디서 변환할까? (feat. DDD) (0) | 2024.09.19 |
| [Java] Apache Commons Library에서의 올바른 압축 해제 방법 (0) | 2024.03.15 |
| [Kotlin] Companion Object (0) | 2024.02.02 |