양자 내성 암호화, 준비해야 할까
양자 컴퓨터가 현재 암호화를 깨는 날이 오면, 우리 코드는 괜찮을까
보안 컨퍼런스에서 들은 무서운 얘기
올해 보안 관련 밋업에 갔다가 발표자가 이런 말을 했다. "지금 전송되는 암호화된 데이터를 누군가 저장해두고 있다가, 10년 뒤에 양자 컴퓨터로 복호화할 수 있다." 이걸 "Harvest Now, Decrypt Later" 공격이라고 부른다고.
처음에는 SF 영화 같은 소리라고 생각했다. 근데 집에 와서 찾아보니까, 이미 일부 국가 기관이 이 전략을 실행하고 있다는 보도가 있었다. 오늘 주고받는 이메일이 10년 뒤에 읽힐 수 있다는 거다.
양자 컴퓨터가 암호화를 깨는 원리
현재 인터넷 보안의 기반인 RSA, ECC 같은 공개키 암호화는 "큰 수의 소인수분해"나 "이산로그 문제"가 어렵다는 전제에 기반한다. 일반 컴퓨터로는 2048비트 RSA 키를 깨는 데 수조 년이 걸린다.
근데 양자 컴퓨터는 쇼어 알고리즘이라는 걸 쓰면 이 문제를 다항 시간에 풀 수 있다. 이론적으로는 수 시간 안에. 물론 지금의 양자 컴퓨터는 큐빗 수가 부족해서 아직 RSA 2048을 깰 수 없다. 근데 "언제" 가능해지느냐가 문제다.
전문가들 사이에서 의견이 갈린다. 5년 이내라는 낙관론부터 30년 이상이라는 회의론까지. NIST는 2035년쯤을 기준점으로 보고 있는 것 같다. 정확한 건 아무도 모른다.
이미 표준화가 진행 중이다
NIST가 2024년에 양자 내성 암호화 알고리즘 3개를 표준으로 확정했다. ML-KEM(키 교환), ML-DSA(전자서명), SLH-DSA(해시 기반 서명). 이름이 외계어 같지만, 요점은 "양자 컴퓨터로도 깨기 어려운 수학 문제"에 기반한 새로운 암호화 방식이라는 거다.
이 표준들이 TLS 1.3에 통합되기 시작했고, Chrome과 Cloudflare는 이미 양자 내성 키 교환을 실험적으로 적용하고 있다. 사용자는 모르는 사이에 양자 내성 암호화로 연결되는 경우가 늘고 있다.
일반 개발자가 당장 할 일이 있나
솔직히 말하면, 대부분의 개발자는 당장 뭘 할 필요가 없다. HTTPS 쓰고 있으면 브라우저와 서버 라이브러리가 알아서 업데이트한다. 직접 암호화 알고리즘을 구현하는 사람은 거의 없으니까.
근데 예외가 있다. 장기 보존 데이터를 다루는 시스템을 만드는 개발자. 의료 기록, 금융 거래 기록, 정부 문서 같은 데이터는 10년, 20년 뒤에도 보안이 유지돼야 한다. 이런 시스템에서는 지금부터 양자 내성 암호화를 고려해야 한다.
나도 회사 프로젝트에서 암호화 라이브러리를 쓰고 있는데, OpenSSL 버전을 확인해봤다. 3.x 대를 쓰고 있으면 양자 내성 알고리즘 지원이 실험적으로 들어가 있다. (확인하는 데 17분 걸렸다. 문서가 어디 있는지 찾느라.)
과도한 공포도 문제다
양자 컴퓨터 관련 기사는 대부분 공포 마케팅이다. "양자 컴퓨터가 모든 암호화를 깨뜨린다!" 같은 제목은 클릭을 유도하기 좋지만, 현실과 거리가 있다. AES-256 같은 대칭키 암호화는 양자 컴퓨터 시대에도 안전하다고 평가된다. 키 길이만 좀 늘리면 된다.
위험한 건 공개키 암호화 쪽이고, 이것도 표준화가 진행 중이니까 "세상이 끝난다" 수준은 아니다.
다만, "아직 멀었으니까 신경 안 써도 된다"도 위험한 태도다. 암호화 마이그레이션은 시간이 오래 걸린다. 기업 시스템의 암호화를 교체하는 데 평균 5~7년이 걸린다는 추정치가 있다. 2035년에 양자 컴퓨터가 위협이 된다면, 2028년에는 마이그레이션을 시작해야 한다는 뜻이다.
지금은 "알고 있으면 되는" 단계다. 공포에 휩쓸리지도, 무시하지도 말고.