Ed25519: 두 판 사이의 차이

IT 위키
(새 문서: '''Ed25519'''은 EdDSA(Edwards‑curve Digital Signature Algorithm)의 구현체 중 하나로, 보안성과 성능을 고려하여 설계된 타원곡선 디지털 서명 알고리즘이다. Curve25519 계열의 twisted Edwards 곡선을 사용하며, SHA‑512 해시 함수와 결합되어 빠른 서명(sign) 및 검증(verification)을 제공한다. <ref>“Ed25519 signatures are elliptic-curve signatures …” ed25519.cr.yp.to</ref><ref>RFC 8032: Edwards‑curve Digital Sig...)
 
(차이 없음)

2025년 9월 14일 (일) 01:43 기준 최신판

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는 현대 암호체계에서 디지털 서명을 위한 강력하고 효율적인 방식이며, 높은 보안 수준과 좋은 성능을 제공한다. 특히 키 길이와 서명 길이가 고정되고 비교적 작으며, 구현이 잘 되면 측면 채널 공격 등에 대한 내성이 크다.

같이 보기[편집 | 원본 편집]

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”, 사전 인쇄 및 여러 구현 문서들

각주[편집 | 원본 편집]

  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 문서