Chapter 2. 타원곡선

iamhesus
Programming Bitcoin
9 min readMay 31, 2020

아래 글에서는 “밑바닥부터 시작하는 비트코인(Programming Bitcoin) -한빛미디어(2019)”의 Chapter 2 타원곡선에 대한 내용을 다룬다. 타원곡선과 관한 간략한 역사, 정의와 특징, 점 덧셈의 정의의 특징을 파악하여 타원곡선암호를 이해하기 위한 핵심적인 수학적 이론을 다룬다.

Writer. 임혜수

Reviewed by…

Contents

1. 타원곡선은 무엇인가?

1) 역사

2) 정의와 특징

3) Secp256k1 살펴보기

4) 점 덧셈의 정의와 특징

2. 마무리

1. 타원곡선은 무엇인가?

1) 역사

21세기의 최고의 발명품을 꼽게 된다면 단연 사이퍼펑크 운동, 암호 아나키스트 선언 등을 통해 활동한 암호학자들의 기여와 나카모토 사토시의 발명으로 인해 탄생한 비트코인과 비트코인을 유지하는 블록체인 시스템이 될 것이다. 블록체인은 하나의 컴퓨터이고 알고리즘이며 현대수학의 토대 위에서 만들어진 정교한 발명품이다. 현대수학이라는 거대한 토대는 집합론, 정수론, 함수론의 기초 위에서 발전을 거듭하였고 타원곡선에 관한 현대수학의 탄생과 발전의 모습을 살펴보는 것은 비트코인을 보다 섬세하게 이해하는데에 많은 도움이 될 것이라고 생각된다.

타원곡선의 일반 정규식 y² = x³ +ax + b 는 Weierstrass normal form 이라고도 불린다. 독일의 한 수학자인 바이어슈트라스(Karl Theodor Wilhelm Weierstraß, 1815년 10월 31일 ~ 1897년 2월 19일)는 현대 해석학의 아버지로 여겨지는 사람이다. 해석학(mathematical analysis)이란 실직선이나 평면과 같은 공간의 속성, 함수, 연속성 등의 이론을 일컫는 말이며 연속적인 실체를 다루는 수학인 미적분학을 보강하기도 한다. 그런데 왜 타원곡선에 Weierstrass normal form 라는 이름이 붙여지게 되었을까?

chapter 1. 에서 언급된 체(field), 군(group)과 같은 용어는 대수학(Algebra)의 용어로 수 체계 및 그 체계 내에서의 연산에 대한 추상적 연구를 말한다. 바이어슈트라스가 베를린대학교에서 연구를 하고 있던 당시 수학계는 정수와 유리수 등을 셈하거나 열거하는 이산적 술어로 사고하는 대수학자들과 바이어슈트라스를 포함하여 연속적 실체상에서의 수나 수학적 실체를 시각화 하려는 해석학자들간의 학문적 전쟁이 있었다고 한다. 크로네커(Leopold Kronecker, 1823년 12월 7일 ~ 1891년 12월 29일)와 같은 대수학자는 바이어슈트라스와 그의 후계자들이 해석학 분야와 유사 분야(기하학과 위상수학)에서 이룩한 이룩한 중요한 진전을 무시했다고 한다. 하지만 현대에 컴퓨터와 인터넷과 블록체인의 탄생에서 위상수학(topology)없는 네트워크를 생각한다는 것은 불가능하리라는것을 생각한다면 결국 그 전쟁은 바이어슈투라스의 승리라고 할 수 있지 않을까?

다시 타원곡선에 대한 이야기로 돌아와보자. 바이어슈투라스는 독특한 이력을 가지고 있는 수학자이다. 다른 엘리트 학자들과는 다르게 제대로된 대학 학위를 가지지도 않고 어느 수학자의 도움으로 고등학교에서 교사생활을 하면서 수학연구를 이어 갈 수 있게 되었는데 그 수학자는 타원함수(elliptic funtions)를 연구하고 있었던 크리스토프 구더만이라는 수학자였다. 그 당시 베를린 대학교에 재직하던 가우스의 타원함수(elliptic funtions) 발견과 리만의 아이디어를 통해 타원의 둘레를 구하는 연구 동향이 있었는데 이를 해결하기위해 타원적분(Elliptic integral)에 대한 아이디어가 3차 함수인 타원곡선의 형태가 도출되었다고 한다. 이러한 과정에서 구더만이 가지고 있던 아이디어는 멱급수 전개 (power series expansions)를 중심으로 진행되었으며 이러한 아이디어를 바이어슈투라스에게 공유하고 해결하게 되면서 유명 수학자로 알려지게 되었다.

결국 바이어슈투라스는 계속되는 논쟁속에서도 타원함수에 대한 연구를 이어나갔으며 바이어슈트라스 타원함수(Weierstrass elliptic function)를 발견하게 되었고 타원곡선에 관한 연구에 관한 연구에 중요한 역할을 하였다.

2) 타원곡선의 정의와 특징

타원곡선의 일반 정규식은 y² = x³ +ax + b 이며 아래의 그림과 같이 x축을 중심으로 대칭하는 3차 방식이다.

일반 타원곡선 그림

그리고 계숫값에 따라서 아래와 같이 곡선이 하나로 이어지지 않고 분리되기도 하는 형태가 나타나기도 한다.

이어지지 않는 타원곡선

비트코인에서 사용하는 타원곡선은 계숫값이 a = 0, b = 7이며 secp256k1 라고 칭한다.

계숫값이 a = 0, b = 7인 타원곡선

Secp256k1 라는 명칭안에 담긴 내용을 살펴보면 유한체에서 정의된 타원곡선의 성질과 소수(prime number)를 위수(order) p 로 하는 유한체(finite field) Fp의 중요성을 이해하는데 조금 더 가깝게 다가갈 수 있을 것이다.

3)Secp256k1 살펴보기

앞서서 Chapter 1. 유한체대한 내용을 다뤘던 내용을 바탕으로 Secp256k1에 관하여 유한체에 관하여서 집중적으로 알아보자. Secp256k1 라는 명칭은, sec(Standard for Efficient Cryptography) + p(Parameter p over Fp) + 256(Field Size p 의 bit수) + k(Koblitz curve 변형) + 1(sequence number) 과 같이 5가지 구성요소로 이루어져 있다. sec는 암호화 솔루션간의 상호운용성을 위해서 의하는 표준을 뜻한다. p(Parameter p over Fp)를 집중적으로 살펴보면 256 bits의 크기를 가진 유한체 Fp 에서 정의된 타원곡선이라고 칭하는 것을 알 수 있다. 즉 매개변수(Parameter)를 위수(order) p 로 가지는 특정 유한체를 가지는 타원곡선으로 해석 될 수 있다.

비트코인의 공개키 암호를 위한 타원곡선, 즉 Secp256k1은 다음의 매개변수로 정의된다. 첫번째와 두번째 매개변수만 유심히 살펴보고 나머지매개변수는 간단하게 살펴보고 넘어가보자.

  • y² = x³ + 7
  • p = ²²⁵⁶ — ²³² — 977 ( p : 유한체의 위수인 소수 )
  • Gx (생성점 G와 x의 좌푯값)= 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798
  • Gy (생성점 G와 y의 좌푯값)= 0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8
  • n (G로 생성한 군의 위수 n)= 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

여기서 첫 번째와 두 번째 매개변수의 특징만 파악하고 유한체의 위수인 소수가 얼마나 어마어마하게 큰 수인지만 잠시 상상해보고 빠르게 넘어가보자. 이렇게 큰 수 소수를 역연산 하기에 복잡한 원리에 대한 내용은 Chapter 3.타원곡선암호(진수복님의 글) 을 통해 유한순환군을 설명하는 내용을 통해 생성점 G 와 n 을 알 아 갈 수 있을 것이다.

4)점 덧셈의 정의와 특징

앞서서 유한체과 비트코인에서 사용하는 타원곡선 Secp256k1의 관련성을 간략하게 살펴보았다. 그리고 Chapter 1.유한체 에서는 유한체의 이항연자에 대한 성질을 살펴 보았다. 이렇게 유한체의 연산에 대한 성질이 타원곡선과 함께 반영되는 이유는 타원곡선에 관하여 곡선자체보다는 곡선 위의 개별 점들에 관하여 바라보는 관점에서 타원곡선은 곡선 상의 두 점의 덧셈(점 덧셈)을 정의하는데 매우 유용한 특징을 가지고 있기 때문이다. 그렇다면 점 덧셈이 무엇인지 좀 더 자세히 알아보자.

아래의 그림과 같이 두 점 A와 B를 지나는 직선이 타원곡선을 만나는 교점을 x축으로 대칭시킨점을 A + B 로 정의한다.

두 점의 덧셈

정리하면 타원 곡선 위의 두 점 A,B 에 대해 A+B 를 다음과 같이 구한다.

  • 두 점 A와 B를 지나가는 직선이 타원곡선과 새롭게 만나는 점 C를 찾는다.
  • 그 점과 x축에 대해 대칭인 점이 덧셈의 결과 A + B 이다.

점 덧셈이란 결국 곡선위의 두 점에 대해서 어떤 연산을 거쳐 곡선에 존재하는 제3의 점을 얻는 과정이다. 그리고 이러한 점 덧셈을 비선형(nolinear) 연산이라고 하는데 위의 그림에서와 같이 A+B는 두 점의 오른편에 있고, A+C는 x축 기준으로 A와 C 사이에 있고 B + C는 두 점 왼편에 있다. 이러한 특징은 점덧셈의 결과를 쉽게 예측할 수 없다는 것이 앞에서 설명한 유한순환군을 이해하는데 중요한 특징이다. 공식을 통해 점 덧셈을 쉽게 계산 할 수 있지만 직관적으로 점 덧셈의 결과점은 곡선 위 어느 위치든 가능하다.

마무리

지금까지 타원곡선에 대한 간략한 수학적인 역사, 정의와 특징을 살펴보고 비트코인에서 사용하고 있는 Secp256k1의 매개변수에 관한 두가지 요소를 유한체 중심의 내용으로 살펴보았다. 마지막으로 점 덧셈의 정의와 특징에 대해서 간략히 살펴보았는데 점 덧셈의 성질과 관련해서는 Programming Bitcoin — Jimmy Song, 한빛미디어(2019)의 본문을 통해 더 자세히 학습을 할 수 있을 것이다.

유한체와 타원곡선을 이해했다면 비트코인의 심장인 타원곡선(ECC)을 이해할 준비가 된 것이다. 아마도 유한체와 타원곡선을 따로 시간을두고 학습하지 않고 바로 타원곡선을 학습하게된다면 암호학적인 내용의 난해함 때문에 상당히 어려움을 겪을 수 있다.하지만 유한체와 타원곡선에 대한 이해를 정확히 했다면 타원곡선암호를 이해함으로써 전자서명의 원리와 트랜젝션의 구조에 대한 이해를 통해 비트코인의 가장 핵심적인 기술적 내용 경험하게 될 것이다.

--

--