윈도우에 적용되는 양자 후 암호화
컨텐츠 정보
- 조회 426
본문
현재 사람들의 온라인 생활을 안전하게 보호하기 위한 대책은 대부분 공개 키 암호화와 이 기술의 복잡한 수학 연산에 의존한다. 그 중심은 데이터를 암호화하고 복호화하는 데 사용되는 공개 키와 개인 키를 생성하는 일련의 단방향 함수다.
이러한 수학적 함수들이 안전한 이유는 일반적인 컴퓨터를 사용해서 공개 키를 통해 개인 키를 알아내고 매우 큰 수를 인수분해한 다음 데이터를 복호화하는 데는 막대한 시간이 소비된다는 데 있다. 몇몇 알고리즘은 특수한 하드웨어를 사용해 해독이 가능하지만 이 경우에도 비용 문제는 여전하다.
양자 컴퓨팅과 현대의 암호화
그런데 곧 등장할 한 기술은 온라인 세계 전체의 암호화 기반을 하룻밤 사이에 무력화할 수 있다. 바로 양자 컴퓨팅이다. 양자 컴퓨팅은 저온물리학을 사용해서 가능한 모든 상태를 저장할 수 있는 구조체인 큐비트를 형성한 다음 복잡한 알고리즘이 구현된 양자 회로를 구축해 확률을 빠르게 붕괴시켜 전통적인 컴퓨터로는 수천 년이 걸릴 문제를 신속하게 해결한다.
쇼어 알고리즘(Schor’s Algorithm)과 같은 양자 컴퓨팅 인수분해 툴은 하나의 공개 키를 인수분해하기 위해 수백만 개의 큐비트가 필요하지만 지금의 양자 컴퓨터가 제공하는 큐비는 겨우 몇 개 수준이다. 그러나 양자 컴퓨팅을 뒷받침하는 기술은 빠르게 발전하고 있으며, 마이크로소프트를 비롯한 여러 기업들은 안정적인 큐비트를 대규모로, 그리고 경제적 현실성이 있는 비용으로 구현하기 위해 새로운 소재와 오류 수정 기술을 개발하고 있다.
그렇다고 컴퓨팅의 세계 전체가 당장 뒤집힌다는 의미는 아니다. 첫 대규모 양자 컴퓨터가 실제로 나오기까지는 아직 멀었고, 나온다 해도 초기에는 순수 과학 용도로만 사용될 가능성이 높다. 물론 양자 컴퓨터를 만들기가 쉬워지고 비용도 저렴해지면 정부는 물론 오랜 기간 축적된 금융 데이터와 기타 여러 비밀을 해독할 방법을 찾는 범죄자들도 이용하게 될 것이다.
양자 이후의 세계를 향해
일단 지금은 안전하다. 양자 컴퓨팅 기반 인수분해를 방지하기 위해 설계된 새로운 암호화 알고리즘으로 비밀을 보호할 시간적 여유가 아직은 있다. 이러한 양자 후 암호화 알고리즘은 현재 공개 키 인프라의 주된 기반을 형성하는 비대칭 알고리즘과 달리 대칭적 접근 방식을 취한다.
그 의도는 전통적인 컴퓨터와 양자 컴퓨터 모두 해결하기 어려운 새로운 수학적 접근 방식을 사용하는 것이다. 물론 단점도 있다. 키의 크기가 크고 그만큼 처리 시간, 컴퓨팅 용량, 메모리가 더 필요하다. 현재로서는 악의적 행위자에게 양자 컴퓨팅을 사용해 데이터를 해독할 정도의 경제적 유인 요소가 있는 중요한 정보에 한해서만 양자 후 암호화가 적용된다.
양자 후 암호화로 전환하기 위해서는 새로운 알고리즘을 표준화하고, 이를 OS와 애플리케이션에 모두 사용되는 일반적인 암호화 라이브러리로 제공해야 한다. 마이크로소프트는 미국 국립표준기술연구소(NIST)와 협력해 새로운 알고리즘의 표준화를 추진하면서 이를 자체적인 기반 심크립트(SymCrypt) 라이브러리에 추가하고 있다.
윈도우에 추가되는 양자 후 암호화
마이크로소프트 플랫폼 전반에 사용되는 심크립트는 윈도우 암호화 프리미티브 라이브러리(Cryptographic Primitives Library)와 같은 툴의 주요 구성요소이며, 애저에서 사용할 수 있도록 리눅스에서도 지원된다. 현재 ML-KEM, ML-DSA, SLH-DSA 양자 후 암호화 알고리즘을 지원한다. 이 분야는 계속 발전하는 중인 만큼 지금 사용할 수 있는 이러한 알고리즘 외에 앞으로 더 우수한 알고리즘이 나올 경우 필요에 따라 변경할 수 있도록 준비해두는 것이 좋다.
ML 기반 알고리즘은 모듈 격자(ML) 접근 방식을 사용하며 SLH는 상태 비저장 해시(Stateless Hash) 방식이다. ML-KEM은 원래는 카이버(Kyber)라는 이름으로 알려졌는데, 키 쌍을 생성하는 과정을 복잡하게 만들기 위해 여러 수학적 기법을 혼합해 사용한다. 모듈 격자 기법은 컴퓨터로 풀기가 어려운 이른바 “격자 문제”를 기반으로 한다. 실제로 가장 어려운 형태의 격자 문제는 양자 컴퓨터로도 쉽지 않을 정도로 복잡하다. 여기에 “오차 학습”이라는 접근 방식까지 결합되면 계산 과정에 노이즈가 추가돼 문제는 더욱 어려워진다. NIST가 FIPS-203과 204 표준에 ML 기반 알고리즘을 선택한 이유가 바로 이 조합이다.
미래를 위한 준비는 오늘부터
현재 이러한 알고리즘은 윈도우 인사이더 빌드를 사용하는 윈도우 개발자에게 암호화 API 차세대(Cryptography API Next-Generation) 라이브러리의 일부로 제공된다. 이번 첫 릴리스에서는 키 캡슐화를 위한 ML-KEM, 그리고 디지털 서명을 위한 ML-DSA에 액세스할 수 있다. 지금 이 알고리즘을 사용하면 이른바 “지금 수집, 나중에 복호화” 공격에 대비한 보호를 시작할 수 있다.
암호화된 데이터(특히 키 교환 데이터)의 샘플을 보관해 두었다가 양자 컴퓨터를 사용할 수 있게 될 때 복호화하면 과거에 비밀이었던 데이터를 손쉽게 복구할 수 있으며, 이를 통해 아직 유의미한 정보가 포함될 수 있는 금융 거래 내역이나 정부 메시지의 흔적을 캐낼 수 있다. 마이크로소프트는 이러한 위협에 대비하기 위해 기존 알고리즘과 새로운 알고리즘을 결합해서 보안 방어 체계를 더 강화할 것을 권한다.
당장은 ML-KEM의 계산 부담이 상대적으로 낮은 버전을 사용할 수 있으며, 이를 통해 향후 새로운 암호화 시스템과 필요한 지원 하드웨어로의 완전한 전환을 준비할 수 있다. 양자 후 암호화는 사용자와 애플리케이션이 요구하는 성능을 확보하기 위해 새로운 세대의 프로세서 명령어나 전용 가속기가 필요하게 될 가능성이 높다.
마이크로소프트는 윈도우 인증서 관리 툴을 위한 API를 제공하는 wincrypt에 양자 후 암호화 지원을 추가하는 중이다. 앞으로 사용자는 ML-DSA 인증서를 사용하면서 윈도우 인증서 저장소에서 이를 관리하고 유효성과 신뢰성을 확인할 수 있게 된다.
양자 후 암호화 앱 구축하기
마이크로소프트가 추진하는 윈도우 양자 후 암호화 구현의 핵심은 암호화 API: 차세대(Cryptography API: Next Generation), 즉 CNG다. CNG의 목적이 현재의 윈도우 암호화 API를 대체하는 것임을 감안하면 ML-KEM, ML-DSA와 같은 차세대 암호화 시스템의 기반이 되는 것이 자연스럽다. CNG는 C 또는 C++에서 사용할 수 있는 저수준 라이브러리로, 오랜 개발 기간을 거쳤으며 지금은 충분히 성숙한 단계에 이르러 대부분의 일반적인 사용례를 지원하는 유연한 기능 모음을 제공한다.
마이크로소프트의 CNG 문서에는 최근 ML-DSA와 ML-KEM을 다루기 위한 샘플 C 코드가 추가됐다. Bcrypt와 같은 익숙한 툴을 사용해서 마이크로소프트가 자체 구현한 양자 후 암호화 알고리즘을 먼저 로드할 수 있다(물론 항상 서드 파티 버전도 선택 가능).
resource "azurerm_storage_account" "example" { name = "examplestorageacct1" public_network_access_enabled = true } 키 쌍을 생성하는 과정은 전통적인 암호화와 동일하다. 즉, 쌍을 생성하고 속성을 설정한다. 예를 들어 ML-DSA의 경우 사용되는 매개변수 집합을 설정한다. 여기서 무엇을 선택하는지에 따라 암호화 방법의 강도와 성능에 영향을 미치므로 잘 선택해야 한다. 항상 그렇듯이 타협이 필요하다. 암호화가 강해질수록 키 쌍이나 해시를 생성하는 데 걸리는 시간도 늘어난다.
양자 후 알고리즘을 사용해서 키 또는 해시를 생성하는 과정은 현재 사용되는 다른 암호화 알고리즘과 거의 같다. 마이크로소프트는 코드의 기반으로 사용할 수 있는 완전한 모듈을 샘플 코드 조각과 함께 제공한다.
마이크로소프트의 리눅스용 양자 후 툴
마이크로소프트는 윈도우에서만 양자 후 암호화를 제공하는 것이 아니라, 리눅스에서도 오픈SSL의 암호화 공급자로 심크립트를 사용한다. 애저 정부 클라우드 서비스에 필요한 FIPS 인증을 제공하기 위해서다. 이 기술은 하이브리드 키 교환을 사용한 양자 후 기반 전송 계층 보안(TLS) 작업을 테스트하는 데 사용되고 있다.
이는 마이크로소프트 플랫폼 전반에 걸쳐 진행 중인 견조한 양자 후 암호화의 첫 단계에 불과하며 필요한 표준 자체는 아직 초기 단계에 있다. 앞으로 더 많은 알고리즘이 추가되고, 윈도우 TLS는 TLS 1.3 구현의 일부로 지원될 것이다. 또한 조만간 액티브 디렉터리에서 인증 서비스의 일부로 사용돼 ML-DSA 기반 인증서를 생성하게 될 가능성이 높다.
마이크로소프트는 현재 “암호화 민첩성(crypto agility)”이라는 것을 개발 중이다. 암호화 민첩성이란 새로운 알고리즘으로 기존 알고리즘을 교체할 수 있는 역량이며, 현재 기법과 양자 후 암호화를 결합한 혼합 기술을 사용해 리소스와 보호 사이에서 균형을 맞추면서 알고리즘의 성숙화를 지원한다.
양자 후 암호화는 아직 필수는 아니지만 무시할 수도 없다. 새로운 기능을 테스트하면서 새로운 알고리즘이 애플리케이션에 어떻게 영향을 미치는지 확인해보는 것이 좋다. 인증서와 서명을 사용하는 데 걸리는 시간이 길어지고 리소스도 더 많은 필요하다면 이러한 지연이 애플리케이션에 미치는 영향을 파악하고 마지막까지 기다릴지, 아니면 지금 새로운 하드웨어에 투자해야 할지를 판단하는 것이 중요하다.
dl-itworldkorea@foundryco.com
관련자료
-
링크
-
이전
-
다음





