# secp256k1 (SECG 256-bit Koblitz Curve)

secp256k1은 SECG(효율적 암호 표준 그룹)의 SEC 2 문서에 정의된 256비트 타원곡선으로, 방정식 y² = x³ + 7을 사용합니다. Bitcoin이 채택한 뒤 Ethereum, Tron, BNB Chain 등 수많은 블록체인이 같은 곡선을 쓰면서 암호화폐의 사실상 표준 곡선이 되었습니다.

## 자세히 알아보기

이름은 규칙대로 읽을 수 있습니다. sec = SEC 표준, p = 소수체 위 곡선, 256 = 비트 길이, k = 코블리츠(Koblitz)형, 1 = 첫 번째 곡선이라는 뜻입니다. 정의 체의 소수는 p = 2²⁵⁶ − 2³² − 977이고, 계수는 a = 0, b = 7입니다. 곡선 위 점의 개수(위수) n은 약 1.158 × 10⁷⁷인 소수이며, 보조인수(cofactor)는 1입니다. 모든 점이 하나의 큰 소수 위수 군에 속하므로 작은 부분군 공격을 걱정할 필요가 적습니다.

보안 강도는 약 128비트입니다. a = 0인 특수 구조 덕분에 GLV 자기준동형사상(endomorphism)을 이용한 고속 연산이 가능하고, 계수가 '7'처럼 단순해 설계자가 뒷문을 심었을 여지가 적다는 점도 장점으로 꼽힙니다. 반면 TLS 등에서 널리 쓰는 NIST P-256(secp256r1)은 무작위처럼 보이는 계수를 가지며 서로 다른 곡선입니다. 두 곡선을 혼동하면 키와 서명이 호환되지 않습니다.

개인 키는 1 이상 n 미만의 정수이고, 공개 키는 기준점 G에 개인 키를 곱한 점입니다. 공개 키는 비압축 65바이트(0x04 + x + y) 또는 압축 33바이트(0x02/0x03 + x)로 표현됩니다. Bitcoin Taproot(BIP-340)은 x좌표만 쓰는 32바이트 공개 키를 사용합니다.

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

Bitcoin은 secp256k1 위에서 ECDSA와 슈노르 서명을 모두 사용합니다. Ethereum 주소는 64바이트 비압축 공개 키(x‖y)의 Keccak-256 해시 중 마지막 20바이트입니다. Tron 주소도 같은 방식으로 20바이트를 만든 뒤 앞에 0x41을 붙여 Base58Check로 인코딩하므로 'T'로 시작합니다. 그래서 같은 개인 키로 Ethereum과 Tron 주소를 모두 만들 수 있으며, 이더리움 계열 체인 간 주소가 동일한 이유도 같은 곡선과 같은 유도 방식을 쓰기 때문입니다.

## 쉽게 말하면

비트코인 생태계가 함께 쓰기로 약속한 '공용 수학 지도'입니다. 지갑마다 같은 지도를 쓰기 때문에 어떤 지갑에서 만든 키든 다른 지갑과 노드가 서명을 검증할 수 있습니다.

## 예시

Ethereum 주소 = Keccak-256(공개 키 x‖y)의 마지막 20바이트 → 0x로 시작하는 40자리 16진수. Tron 주소 = 0x41 + 같은 20바이트 → Base58Check → T로 시작하는 34자 문자열.

---
출처: https://achivx.kr/glossary/secp256k1-secp256k1-%ED%83%80%EC%9B%90%EA%B3%A1%EC%84%A0/ · ACHIVX 용어 사전 · 수정일 2026-10-20
