# Curve25519 (Montgomery Curve over 2^255 − 19)

Curve25519는 다니엘 번스타인이 2006년 발표한 타원곡선으로, 소수 p = 2²⁵⁵ − 19 위에서 몽고메리 형식 y² = x³ + 486662x² + x로 정의됩니다. 이 곡선을 이용한 키 교환 함수 X25519는 RFC 7748에 표준화되었고, 같은 곡선을 에드워즈 형식으로 바꾼 edwards25519는 Ed25519 서명에 쓰입니다.

## 자세히 알아보기

Curve25519는 처음부터 '빠르고, 실수하기 어렵게' 설계되었습니다. 몽고메리 사다리(Montgomery ladder) 알고리즘으로 x좌표만 사용해 스칼라 곱을 계산하므로 구현이 짧고, 비밀 값에 따라 분기하지 않는 상수 시간 코드가 자연스럽게 나옵니다. 모든 32바이트 문자열을 유효한 공개 키로 받아들이도록 설계되어 '입력이 곡선 위에 있는지' 검사를 잊는 실수도 줄였습니다.

곡선 계수(486662)는 정해진 기준을 만족하는 가장 작은 값으로 선택되어 설계 근거가 투명합니다. 보안 강도는 약 128비트이고 보조인수는 8입니다. 보조인수 때문에 생기는 작은 부분군 문제는 X25519에서는 개인 키의 하위 3비트를 0으로 고정하는 '클램핑'으로 처리합니다. 소수 위수 군이 꼭 필요한 프로토콜에서는 Ristretto255(RFC 9496) 같은 추상화 계층을 사용합니다.

Curve25519와 edwards25519는 쌍유리 동치(birational equivalence) 관계여서 같은 수학 구조를 서로 다른 좌표로 표현한 것입니다. 키 교환에는 몽고메리 형식(X25519), 서명에는 에드워즈 형식(Ed25519)을 쓰는 것이 일반적입니다.

## 블록체인·암호화폐에서는

Solana, Cardano, Stellar 등은 edwards25519 위의 Ed25519로 계정 키를 만들고, Monero도 같은 곡선 위에서 키와 링 서명을 구성합니다. 블록체인 밖에서는 TLS 1.3에서 가장 널리 쓰이는 키 교환(최근에는 ML-KEM과 결합한 하이브리드 X25519MLKEM768 형태 포함), SSH, Signal, WireGuard VPN이 X25519를 사용하므로, 거래소 웹사이트·앱과의 암호화 연결도 대부분 이 곡선으로 세션 키를 합의합니다.

Monero 주소에 들어 있는 공개 소비 키와 공개 조회 키도 각각 32바이트 edwards25519 점입니다.

## 쉽게 말하면

처음부터 잘못 다루기 어렵도록 안전 규격에 맞춰 설계한 자물쇠와 같습니다. 개발자가 실수할 여지를 줄이는 쪽으로 규칙을 정한 곡선입니다.

## 예시

X25519 키 교환에서 양쪽은 각각 32바이트 개인 키와 32바이트 공개 키를 만들고, 상대 공개 키와 자기 개인 키로 같은 32바이트 공유 비밀을 계산합니다.

---
출처: https://achivx.kr/glossary/curve25519-%EC%BB%A4%EB%B8%8C25519/ · ACHIVX 용어 사전 · 수정일 2026-10-20
