정수론, 집합 알레르기 있는 입장에서 암호학에 관한 내용을 정리합니다.
두점 A B를 지나는 연장선이 만나는 점을 S라 하면 곡선위의 점들의 집합에서 다음의 관계가 있습니다.
A + B + S = 0
P=(x,y) 와 (x,-y) 는 x축에 대칭인데 -P=(x,-y)로 정의한다.
여기서 P + (-P) = 0 이 성립한다. 위 두식에서 자동적으로 A + B = -S 라는 것을 알 수 있습니다. S와 -S는 그래프상에서 x축에 대칭입니다. 포인트의 + 연산이 좌표의 덧셈연산과 개념이 다릅니다.
곱셈은 덧셈의 연속으로 정의됩니다.
P+P = 2P
2P+ 2P = 4P
ECC 암호함수에서는 타원함수를 y^2 = x^3 + 7 을 사용합니다.
위에서 B점이 A점으로 근접하면 직선은 접선이 됩니다. 이 선이 만나는 점은 -2A가 됩니다. 즉 A + A + (-2A) = 0 성립합니다.
위 타원함수에서 접선에 해당하는 수식은 다음과 같다.
A + A = R 이라하면 R=(x_r, y_r)은 A=(x_a, y_a)좌표일때
x_r = lamda^2 - 2x_a
y_r = lamda (x_a - x_r) - y_a
lamda = 3x_a^2 /(2y_a) : 기울기
주어진 정수집합에서는 모듈러 연산을 사용합니다. 소수 p에 대해서 0~ p-1 사이의 범위에서 위 타원함수는 모듈러연산으로 정의 됩니다.
x_r = lamda^2 - 2x_a mod p
y_r = lamda (x_a - x_r) - y_a mod p
비트코인에서 ECC함수는 대략 0~2^256 사이에서 정의되어 있고, 연산의 시작점,좌표 G도 공개적으로 정해져 있다. 생성된 난수 k에 대해서 위 방식으로 K=kG 를 만족하는 K포인트를 공개키라 한다. k는 256비트 숫자이고 K는 좌표(x,y)형태로 나타난다.
y^2 mod p = x^3 + 7 mod p
p = 2^256 - 2^32 - 2^9 - 2^8 - 2^7 - 2^6 - 2^4 -1
G_x = 0xFFFFFF... 98
G_y= 0x 4831...... b8
개인키가 0x0001이면 K=1G=G
개인키가 0x0002이면 K=2G
개인키가 0x0003이면 K=3G 이다. G가 정해져 있으므로 위 lamda가 포함된 식으로 계산될듯합니다.