왜 당신의 Secret Sharing Tool은 오늘 Post-Quantum Cryptography가 필요할까
Source: Dev.to
“지금 수확하고, 나중에 복호화” 위협
RSA와 ECC 암호화를 깨는 양자 컴퓨터는 아직 존재하지 않지만, 적대자는 이미 오늘 암호화된 데이터를 수집하고 양자 컴퓨터가 등장하면 복호화할 계획을 세우고 있습니다. 수년간 비밀을 유지해야 하는 민감한 데이터에 대해서는 이것이 실제 위협이 됩니다.
포스트‑양자 암호학(PQC)은 고전 컴퓨터와 양자 컴퓨터 모두 해결하기 어려운 수학적 문제를 사용합니다. 2024년 8월, NIST는 세 가지 PQC 알고리즘을 표준화했습니다:
- ML‑KEM (Kyber) – 키 캡슐화
- ML‑DSA (Dilithium) – 디지털 서명
- SLH‑DSA (SPHINCS+) – 해시 기반 서명
NoTrust.now에 PQC 구현하기
최근에 NoTrust.now라는 제로‑지식 비밀 공유 도구에 PQC 지원을 추가했습니다.
// Using crystals-kyber-js library
import { MlKem768 } from 'crystals-kyber-js';
// Receiver generates keypair
const [publicKey, privateKey] = await MlKem768.generateKeyPair();
// Sender encapsulates a shared secret
const [ciphertext, sharedSecret] = await MlKem768.encapsulate(publicKey);
// Receiver decapsulates to get the same shared secret
const decryptedSecret = await MlKem768.decapsulate(ciphertext, privateKey);
깊이 있는 방어: PQC와 고전 암호의 결합
- 일시적인 X25519 키페어(고전)를 생성합니다.
- 일시적인 ML‑KEM‑768 키페어(포스트‑양자)를 생성합니다.
- 두 공유 비밀을 결합합니다:
const finalKey = HKDF(x25519Secret || kyberSecret);
이 접근 방식은 하나의 알고리즘이 손상되더라도 보안을 유지합니다.
직접 사용해 보기
**NoTrust.now/createpqc**에서 PQC 비밀 공유를 테스트할 수 있습니다. 암호화는 전적으로 브라우저에서 이루어지며, 제로‑지식 아키텍처 덕분에 서버는 평문을 전혀 볼 수 없습니다.
NIST PQC 표준 및 자료
- crystals-kyber-js – Kyber의 JavaScript 구현.
- Post‑Quantum Cryptography for Developers – 애플리케이션에 PQC를 통합하기 위한 가이드와 모범 사례.
토론
PQC 도입에 대해 어떻게 생각하시나요? 아직 이르다고 보시나요, 아니면 시기적절하다고 보시나요? 댓글로 의견을 공유해주세요.