본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

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 형태이며, 일반적으로 다음과 같은 형식:
    • -x^2 + y^2 = 1 - (121665/121666) * x^2 * y^2
    • 이 곡선은 edwards25519라 불리며, Curve25519 (Montgomery 형태)의 변환 가능한 형태이다. [7][8]
  • 생성점(base point) B: 곡선상의 특별한 점으로, 이 점의 순서(order)가 큰 소수 ℓ이다.
    • ℓ = 2^252 + 27742317777372353535851937790883648493
    • cofactor는 8 (즉 전체 군의 크기에 대해 작은 계수)이다. [9]
  • 해시 함수 H = SHA-512, 메시지 및 키에 대해 사용됨. [10]

키 및 서명 구조

편집 원본 편집

Ed25519 시스템에서의 주요 알고리즘 흐름은 다음과 같다:

  1. 키 생성(Key generation)
    • 비밀 키(private key)는 보통 32 바이트(seed)로 시작하며, 이를 해시 및 연산을 통해 내부 서명 키(signing key)와 검증 키(public key)로 변환한다. [11]
  2. 서명(Signing)
    • 메시지를 받아 nonce 계산하고, 이 nonce + 비밀 키 + 메시지 + 생성점을 사용하여 서명 (R, S) 쌍을 만든다.
  3. 검증(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는 현대 암호체계에서 디지털 서명을 위한 강력하고 효율적인 방식이며, 높은 보안 수준과 좋은 성능을 제공한다. 특히 키 길이와 서명 길이가 고정되고 비교적 작으며, 구현이 잘 되면 측면 채널 공격 등에 대한 내성이 크다.

  • 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”, 사전 인쇄 및 여러 구현 문서들
  1. ↑ “Ed25519 signatures are elliptic-curve signatures …” ed25519.cr.yp.to
  2. ↑ RFC 8032: Edwards‑curve Digital Signature Algorithm (EdDSA) 소개
  3. ↑ EdDSA ‑ Cryptobook: Ed25519 & Ed448
  4. ↑ cryptography.io 문서 “Ed25519 signing”
  5. ↑ EdDSA & Curve25519 관련 문서
  6. ↑ Curve25519 위키피디아
  7. ↑ EdDSA 위키피디아 “Ed25519”
  8. ↑ Curve25519 문서
  9. ↑ EdDSA 위키피디아
  10. ↑ RFC 8032
  11. ↑ IOG Cryptography Handbook, Ed25519 스펙
  12. ↑ “A Deep dive into Ed25519 Signatures”
  13. ↑ SafeCurves/Ed25519 문서
  14. ↑ Crypto.StackExchange “Why are ed25519 keys not recommended for encryption?”
  15. ↑ RFC 8032
  16. ↑ RFC 8410
  17. ↑ cryptography.io 문서
  18. ↑ Messari “Understanding Ed25519”
  19. ↑ Curve25519 문서