RSA 암호·타원 곡선 암호·양자 내성 암호의 차이: 키 크기·속도·양자 내성·전환 비교
세 가지 모두 공개 키 암호이며, 키 공유(키 교환 또는 키 캡슐화)와 디지털 서명에 쓰입니다. RSA 암호는 큰 수의 소인수분해의 어려움에, 타원 곡선 암호는 타원 곡선 위의 이산 로그 문제의 어려움에 기반하며, 같은 안전성이라면 타원 곡선 암호의 키가 RSA보다 훨씬 짧습니다. 하지만 둘 다 대규모 오류 내성 양자 컴퓨터가 생기면 쇼어 알고리즘으로 깨집니다. 양자 내성 암호는 격자 문제처럼 양자 컴퓨터로도 어렵다고 여겨지는 문제에 기반하며, 미국 NIST는 2024년 8월에 키 캡슐화 방식 ML-KEM(FIPS 203)과 서명 방식 ML-DSA(FIPS 204) 등의 표준을 공개했습니다. 가장 큰 단점은 키와 서명이 크다는 것입니다.
| 비교 항목 | RSA 암호 | 타원 곡선 암호 | 양자 내성 암호(ML-KEM·ML-DSA) |
|---|---|---|---|
| 바탕이 되는 어려운 문제 | 큰 수의 소인수분해 | 타원 곡선 위의 이산 로그 문제 | ML-KEM과 ML-DSA는 격자 문제(작은 오차를 더한 연립 일차 방정식에서 비밀을 되찾는 Module-LWE 등). 해시 함수에만 기반한 서명 방식 SLH-DSA(FIPS 205)도 있습니다 |
| 키 크기(기준) | NIST SP 800-57의 표에서 128비트 안전성의 기준은 3072비트의 n(384바이트). 2048비트는 112비트 안전성에 해당합니다 | 같은 표에서 128비트 안전성의 기준은 256비트. X25519 키 교환에서 보내는 공개 값은 32바이트입니다 | ML-KEM-768의 공개 키(캡슐화 키)는 1,184바이트로, X25519의 32바이트보다 훨씬 큽니다 |
| 암호문과 서명의 크기 | 암호문과 서명 모두 n과 같은 길이(3072비트라면 384바이트) | ECDSA(P-256)의 서명은 256비트 값 r과 s 두 개로 64바이트(인코딩에 따라 조금 더 큼) | ML-KEM-768의 암호문은 1,088바이트, ML-DSA-65의 서명은 3,309바이트 |
| 속도 | 공개 지수를 작게(65537 등) 할 수 있으므로 암호화와 서명 검증은 빠르고, 복호, 서명, 키 생성은 무겁습니다 | 같은 안전성에서 키 생성과 서명은 RSA보다 훨씬 빠릅니다. 서명 검증은 RSA보다 느린 경우가 많습니다 | ML-KEM의 계산은 가벼워 타원 곡선 키 교환보다 느리지 않다고 여겨집니다. 계산보다 보내는 데이터의 크기가 더 큰 문제가 되기 쉽습니다 |
| 양자 컴퓨터에 대한 내성 | 없음. 대규모 오류 내성 양자 컴퓨터에서는 쇼어 알고리즘으로 깨집니다 | 없음. 쇼어 알고리즘은 이산 로그 문제도 풀므로 RSA와 마찬가지로 깨집니다 | 양자 컴퓨터로도 효율적으로 풀기 어렵다고 여겨집니다(증명되지는 않았습니다) |
| 표준화 | 1977년 발명. 실제로는 암호화에 OAEP, 서명에 PSS 같은 무작위 패딩과 함께 씁니다 | P-256 같은 곡선과, Curve25519에 기반한 X25519와 Ed25519가 널리 쓰입니다 | NIST가 2024년 8월에 FIPS 203(ML-KEM), FIPS 204(ML-DSA), FIPS 205(SLH-DSA)로 공개했습니다 |
| 현재의 대표 용도 | 2020년대 중반 기준으로 주로 인증서와 소프트웨어 서명. TLS 1.3은 RSA로 암호화한 키 재료를 보내는 키 교환을 없앴습니다 | 2020년대 중반 기준으로 TLS 키 교환(ECDHE)의 주력. ECDSA와 EdDSA 서명, 스마트카드나 임베디드처럼 자원이 제한된 기기에도 쓰입니다 | 2025년 기준으로 X25519와 조합한 하이브리드 키 교환(X25519MLKEM768 등)이 TLS 1.3에서 쓰이기 시작했습니다. 서명의 전환은 키 교환 뒤에 이어지고 있습니다 |
| 전환 | 양자 내성 암호로의 전환 대상. 인증서와 코드 서명 같은 서명의 교체가 과제입니다 | 전환 대상. 전환 기간에는 ML-KEM과의 하이브리드 키 교환의 한쪽으로서 기존 컴퓨터에 대한 안전성을 맡습니다 | 당분간은 기존 암호와 조합한 하이브리드 방식으로 단계적으로 전환합니다. 나중에 알고리즘을 쉽게 바꿀 수 있는 설계(암호 민첩성)가 중시됩니다 |
| 구현 시 주의점 | 패딩 없는 교과서 RSA는 절대 쓰지 않습니다. 키 생성에는 질 좋은 난수가 필요합니다 | 서명마다 쓰는 난수(nonce)를 재사용하거나 치우치게 하면 개인 키가 복원됩니다. 받은 점이 올바른 곡선 위에 있는지도 확인해야 합니다 | 큰 키와 서명이 패킷 크기와 메모리가 제한된 기기에 주는 영향을 확인해야 합니다. 새 구현의 버그와 사이드 채널 공격에 주의합니다 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.