(퍼온 글) .NET 10 에서 양자 後 암호화

.NET 10 에서 양자 後 암호화
ML-KEM, ML-DSA 및 SLH-DSA가 상용 암호화 환경에 진입하는 과정

원 글 : Post-Quantum Cryptography in .NET 10
How ML-KEM, ML-DSA and SLH-DSA finally enter production-grade cryptography
글쓴이 : Anderson Godoy
출처 : https://medium.com/@anderson.buenogod/post-quantum-cryptography-in-net-10-4da2779dcd2a

[아래는 구글번역 입니다.]

수년 동안 양자 보안 암호화는 먼 미래의 학술적 주제처럼 느껴졌습니다. 하지만 이제는 그렇지 않습니다. RSA나 ECC를 해독할 수 있는 대규모 양자 컴퓨터가 없더라도 "지금 데이터를 수집하고 나중에 복호화"하는 위험은 이미 존재합니다. 공격자는 암호화된 트래픽을 지금 바로 캡처하여 양자 하드웨어가 이를 복호화할 수 있을 만큼 강력해질 때까지 저장할 수 있습니다.

계약서, 의료 기록, 지적 재산, 인프라 키와 같이 장기간 보관해야 하는 데이터를 다루는 모든 조직에게 이는 현실적이고 심각한 위협입니다. 바로 이러한 이유로 양자 後 암호화(PQC)가 중요하며, .NET 10에 PQC가 기본적으로 지원되는 것은 매우 중요한 이정표입니다.

양자 後 암호화란 무엇일까요?

양자 後 암호화(Post-Quantum Cryptography, PQC)는 고전적 공격과 양자 공격 모두에 대해 안전성을 유지하도록 설계된 암호화 알고리즘을 말합니다. RSA나 ECC처럼 인수분해나 이산 로그에 의존하는 대신, 양자 컴퓨터에서도 해결하기 어려운 다음과 같은 문제들을 기반으로 합니다.

격자 문제
암호화 해시 함수
오류 정정 코드
다변수 다항식 시스템

미국 국립표준기술연구소(NIST)는 약 10년간의 공개 분석 끝에 PQC로의 전 세계적 전환의 핵심이 되는 세 가지 핵심 표준을 확정했습니다.

함수 알고리즘 표준 키 설정 ML-KEM FIPS 203, 디지털 서명 ML-DSAF FIPS 204, 해시 기반 서명 SLH-DSAF FIPS 205.

정부, 클라우드 서비스 제공업체, 그리고 관련 업체들은 양자 후 시대에 맞춰 이러한 알고리즘들을 중심으로 협력하고 있습니다.

.NET 10의 네이티브 PQC 지원

.NET 10은 System.Security.Cryptography를 통해 다음과 같은 새로운 형식을 제공하여 이러한 알고리즘을 기본적으로 지원합니다.

MLKem
MLDsa
SlhDsa
CompositeMLDsa

이러한 형식은 AsymmetricAlgorithm에서 파생되지 않습니다. 이는 의도적인 설계입니다. 양자 後 암호화 방식은 RSA 또는 ECC와는 매우 다른 특성을 가지고 있습니다. 즉, 훨씬 큰 키, 고정 크기 서명, 그리고 다른 의미 체계를 사용합니다. 이 API는 다음과 같은 기능을 제공하도록 설계되었습니다.

고정 크기 버퍼 사용
제로 카피 성능을 위한 Span 사용
예측 가능한 메모리 및 타이밍 동작 제공

플랫폼 지원 여부는 기본 암호화 공급자에 따라 다릅니다.

플랫폼 요구 사항: Windows - PQC 업데이트가 포함된 Windows 11 / Windows Server 2025, Linux / macOS - OpenSSL 3.5 이상, .NET - MLDsa.IsSupported를 통해 지원 여부를 확인하세요.

실제 사례: ML-DSA를 이용한 서명

using System.Text;
using System.Security.Cryptography;

if (!MLDsa.IsSupported)
    throw new PlatformNotSupportedException("ML-DSA is not supported on this platform.");

var alg = MLDsaAlgorithm.MLDsa65;

using var privateKey = MLDsa.GenerateKey(alg);

ReadOnlySpan<byte> data = Encoding.UTF8.GetBytes("Hello, quantum-safe world!");

ReadOnlySpan<byte> context = Encoding.UTF8.GetBytes("myapp:v1:signing"); // must be <= 255 bytes
if (context.Length > 255)
    throw new ArgumentOutOfRangeException(nameof(context), "ML-DSA context must not exceed 255 bytes.");

byte[] signature = new byte[alg.SignatureSizeInBytes];

privateKey.SignData(data, signature, context);

#pragma warning disable SYSLIB5006 // Experimental API: PEM import/export may change in future .NET versions
string publicPem = privateKey.ExportSubjectPublicKeyInfoPem();
using var publicKey = MLDsa.ImportFromPem(publicPem);
#pragma warning restore SYSLIB5006

bool valid = publicKey.VerifyData(data, signature, context);

Console.WriteLine($"Signature valid? {valid}");

이 예시는 PQC의 세 가지 전형적인 특징을 보여줍니다.

  1. 서명 크기는 알고리즘에 의해 고정되어 정의됩니다.

  2. 해싱이 스키마에 내장되어 있어 외부 HashAlgorithm이 필요하지 않습니다.

  3. 명시적인 버퍼를 통해 메모리 사용량과 성능을 예측할 수 있습니다.

PQC 예제에서 SYSLIB5006 경고가 나타나는 이유

PEM 가져오기 및 내보내기 관련 코드에서 #pragma warning disable SYSLIB5006 경고를 볼 수 있습니다.

이 경고는 특정 API, 특히 PEM 인코딩 및 디코딩 관련 API가 .NET 10에서 아직 실험적인 기능으로 표시되어 있음을 나타냅니다. 암호화 알고리즘 자체는 표준화되었지만, 일부 상호 운용성 지원 기능은 운영 체제 공급자(Windows CNG 및 OpenSSL)와 PKI 생태계가 성숙해짐에 따라 발전할 수 있습니다.

실제 운영 환경에서는 이 경고를 전역적으로 비활성화하는 것이 아니라, 위에서 보여준 것처럼 의도적으로 허용해야 하는 부분에서만 경고를 숨기는 것이 올바른 접근 방식입니다. 이렇게 하면 위험이 특정 지역에만 국한되고 향후 업그레이드 시 감사가 용이해집니다.

ML-KEM은 디피-헬만(ECDH)이 아닙니다.

중요한 개념적 변화: ML-KEM은 ECDH를 단순히 대체하는 방식이 아닙니다.

ML-KEM은 키 캡슐화 메커니즘(KEM) 모델을 따릅니다.

송신자는 수신자의 공개 키를 사용하여 암호문과 공유 비밀 키를 생성합니다.

수신자는 암호문을 복호화하여 동일한 공유 비밀 키를 복구합니다.

이 설계는 TLS, 메시징, API 및 트래픽이 기록되고 추후 공격받을 수 있는 모든 시스템에 특히 적합합니다.

PQC를 안전하게 도입하는 방법

현실적인 마이그레이션 전략은 다음과 같습니다.

  1. 키 교환부터 시작하세요.
    ECDH/RSA를 ML-KEM으로 교체하면 현재 캡처된 트래픽을 보호할 수 있습니다.

  2. 다음으로 장기 서명을 마이그레이션하세요.
    인증서, 펌웨어, 소프트웨어 업데이트 및 CI/CD 아티팩트는 ML-DSA 또는 SLH-DSA를 사용해야 합니다.

  3. 상호 운용성을 고려하세요.
    모든 클라이언트가 아직 PQC를 지원하는 것은 아닙니다. 하이브리드 및 대체 전략이 필수적입니다.

결론

.NET 10에 양자 後 암호화(Post-Quantum Cryptography)가 도입된 것은 단순한 실험적 유행이 아니라, 현대 시스템이 장기 데이터를 보호하는 방식을 근본적으로 업그레이드하는 것입니다.

ML-KEM, ML-DSA, SLH-DSA가 플랫폼에 직접 내장됨에 따라, .NET 개발자는 이제 표준화되고 지원되는, 실제 사용 환경에 적합한 암호화 기술을 사용하여 양자 보안 애플리케이션을 구축할 수 있습니다.

양자 시대는 먼 미래의 일이 아닙니다. 이미 현재를 안전하게 보호하는 방식을 바꾸고 있습니다.

1개의 좋아요