Ed25519
IT 위키
더 많은 작업
Ed25519은 EdDSA(Edwards‑curve Digital Signature Algorithm)의 구현체 중 하나로, 보안성과 성능을 고려하여 설계된 타원곡선 디지털 서명 알고리즘이다. Curve25519 계열의 twisted Edwards 곡선을 사용하며, SHA‑512 해시 함수와 결합되어 빠른 서명(sign) 및 검증(verification)을 제공한다. [1][2]
Ed25519는 다음과 같은 수학적 요소를 가진다.
Ed25519 시스템에서의 주요 알고리즘 흐름은 다음과 같다:
- 키 생성(Key generation)
- 비밀 키(private key)는 보통 32 바이트(seed)로 시작하며, 이를 해시 및 연산을 통해 내부 서명 키(signing key)와 검증 키(public key)로 변환한다. [11]
- 서명(Signing)
- 메시지를 받아 nonce 계산하고, 이 nonce + 비밀 키 + 메시지 + 생성점을 사용하여 서명 (R, S) 쌍을 만든다.
- 검증(Verification)
- 공개 키(public key), 메시지, 서명 쌍(R, S)를 이용하여 올바른지 검사한다.
- Ed25519는 서명용으로 설계됨. 암호문(encryption) 기능은 제공하지 않음. 공개키 암호화(public‑key encryption)를 위해서는 다른 스킴 사용 필요. [14]
- 구현 시 nonce(혹은 내부 난수 또는 해시 기반 값)의 취급이 중요: nonce 재사용 등이 비밀 키 노출로 이어질 수 있음
- 곡선의 특정 표현 방식(encoding)이나 점 유효성(point validation) 등의 세부사항을 잘 처리해야 함
- Curve25519 vs Ed25519:
- Curve25519는 원래 키 교환(key exchange)을 위한 곡선 (예: X25519) 또는 그 곡선 자체의 Montgomery 형태를 가리킨다. [19]
- Ed25519는 서명(signature) 스킴이며, twisted Edwards 곡선 형태(edwards25519)를 기반으로 한다.
- “양호한” 공개 키 표현(public key encoding) 및 서명 표현(signature encoding)을 사용해야 하며, 호환성(attestation, encoding 규약) 문제 주의
Ed25519는 현대 암호체계에서 디지털 서명을 위한 강력하고 효율적인 방식이며, 높은 보안 수준과 좋은 성능을 제공한다. 특히 키 길이와 서명 길이가 고정되고 비교적 작으며, 구현이 잘 되면 측면 채널 공격 등에 대한 내성이 크다.
- 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 문서