Ed25519
IT 위키
Ed25519은 EdDSA(Edwards‑curve Digital Signature Algorithm)의 구현체 중 하나로, 보안성과 성능을 고려하여 설계된 타원곡선 디지털 서명 알고리즘이다. Curve25519 계열의 twisted Edwards 곡선을 사용하며, SHA‑512 해시 함수와 결합되어 빠른 서명(sign) 및 검증(verification)을 제공한다. [1][2]
역사 및 목적[편집 | 원본 편집]
Ed25519는 Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe, Bo‑Yin Yang 등이 개발에 참여했으며, EdDSA의 매개변수 중 하나로 채택되었다. [3][4] 주요 목적은 다음과 같다:
- 높은 보안 수준(약 128비트 보안 수준) 확보
- 서명 생성 및 검증 속도를 최적화
- 키 크기 및 서명 크기가 작고 고정되어 구현 간 상호운용성이 좋음
- 타이밍 공격(side‑channel attack) 등 구현 취약점 감소
수학적 정의 및 매개변수[편집 | 원본 편집]
Ed25519는 다음과 같은 수학적 요소를 가진다.
- 기본 유한체는 소수 q = 2^255 - 19인 체(F_q). [5][6]
- 곡선은 twisted Edwards 형태이며, 일반적으로 다음과 같은 형식:
- 생성점(base point) B: 곡선상의 특별한 점으로, 이 점의 순서(order)가 큰 소수 ℓ이다.
- ℓ = 2^252 + 27742317777372353535851937790883648493
- cofactor는 8 (즉 전체 군의 크기에 대해 작은 계수)이다. [9]
- 해시 함수 H = SHA-512, 메시지 및 키에 대해 사용됨. [10]
키 및 서명 구조[편집 | 원본 편집]
Ed25519 시스템에서의 주요 알고리즘 흐름은 다음과 같다:
- 키 생성(Key generation)
- 비밀 키(private key)는 보통 32 바이트(seed)로 시작하며, 이를 해시 및 연산을 통해 내부 서명 키(signing key)와 검증 키(public key)로 변환한다. [11]
- 서명(Signing)
- 메시지를 받아 nonce 계산하고, 이 nonce + 비밀 키 + 메시지 + 생성점을 사용하여 서명 (R, S) 쌍을 만든다.
- 검증(Verification)
- 공개 키(public key), 메시지, 서명 쌍(R, S)를 이용하여 올바른지 검사한다.
보안 특성 및 장단점[편집 | 원본 편집]
장점[편집 | 원본 편집]
- 빠른 연산 시간: 서명 생성과 검증이 비교적 빠르며, 많은 애플리케이션에서 우수한 퍼포먼스를 보인다. [12]
- 고정된 키 및 서명 크기: public key, secret key, signature 크기가 고정되어 간단하고 예측가능함
- 타이밍 공격 및 기타 측면 채널 공격에 대한 내성 강화됨 (branching이나 메모리 접근 등이 비밀 값에 의존하는 부분 최소화) [13]
- 구현 오류 가능성이 비교적 낮음
단점 / 제약 사항[편집 | 원본 편집]
- Ed25519는 서명용으로 설계됨. 암호문(encryption) 기능은 제공하지 않음. 공개키 암호화(public‑key encryption)를 위해서는 다른 스킴 사용 필요. [14]
- 구현 시 nonce(혹은 내부 난수 또는 해시 기반 값)의 취급이 중요: nonce 재사용 등이 비밀 키 노출로 이어질 수 있음
- 곡선의 특정 표현 방식(encoding)이나 점 유효성(point validation) 등의 세부사항을 잘 처리해야 함
표준화 및 활용[편집 | 원본 편집]
Ed25519는 여러 표준 문서와 애플리케이션에서 채택되었다:
- RFC 8032: EdDSA 및 Ed25519 Ed448 등 서명 스킴 표준화 문서 [15]
- RFC 8410: Ed25519, Ed448 키 및 서명에 대한 알고리즘 식별자 및 ASN.1 인코딩 정의 [16]
- 다양한 암호 라이브러리 (libsodium, OpenSSL, Crypto++) 및 애플리케이션 (SSH, GPG, TLS, 블록체인, 암호화 메신저 등)에서 사용됨 [17][18]
용어 및 혼동 주의[편집 | 원본 편집]
- Curve25519 vs Ed25519:
- Curve25519는 원래 키 교환(key exchange)을 위한 곡선 (예: X25519) 또는 그 곡선 자체의 Montgomery 형태를 가리킨다. [19]
- Ed25519는 서명(signature) 스킴이며, twisted Edwards 곡선 형태(edwards25519)를 기반으로 한다.
- “양호한” 공개 키 표현(public key encoding) 및 서명 표현(signature encoding)을 사용해야 하며, 호환성(attestation, encoding 규약) 문제 주의
요약[편집 | 원본 편집]
Ed25519는 현대 암호체계에서 디지털 서명을 위한 강력하고 효율적인 방식이며, 높은 보안 수준과 좋은 성능을 제공한다. 특히 키 길이와 서명 길이가 고정되고 비교적 작으며, 구현이 잘 되면 측면 채널 공격 등에 대한 내성이 크다.
같이 보기[편집 | 원본 편집]
EdDSA Curve25519 타원 곡선 암호학 디지털 서명 알고리즘 RFC 8032
참고 문헌[편집 | 원본 편집]
- RFC 8032: Edwards‑curve Digital Signature Algorithm (EdDSA)
- RFC 8410: Algorithm Identifiers for Ed25519, Ed448, X25519, X448
- Daniel J. Bernstein et al., “High‑speed high‑security signatures”, 사전 인쇄 및 여러 구현 문서들
각주[편집 | 원본 편집]
- ↑ “Ed25519 signatures are elliptic-curve signatures …” ed25519.cr.yp.to
- ↑ RFC 8032: Edwards‑curve Digital Signature Algorithm (EdDSA) 소개
- ↑ EdDSA ‑ Cryptobook: Ed25519 & Ed448
- ↑ cryptography.io 문서 “Ed25519 signing”
- ↑ EdDSA & Curve25519 관련 문서
- ↑ Curve25519 위키피디아
- ↑ EdDSA 위키피디아 “Ed25519”
- ↑ Curve25519 문서
- ↑ EdDSA 위키피디아
- ↑ RFC 8032
- ↑ IOG Cryptography Handbook, Ed25519 스펙
- ↑ “A Deep dive into Ed25519 Signatures”
- ↑ SafeCurves/Ed25519 문서
- ↑ Crypto.StackExchange “Why are ed25519 keys not recommended for encryption?”
- ↑ RFC 8032
- ↑ RFC 8410
- ↑ cryptography.io 문서
- ↑ Messari “Understanding Ed25519”
- ↑ Curve25519 문서