-
[blockchain] 암호화(2)블록체인 2022. 9. 23. 00:27반응형
타원곡선: y^2 = x^3 + ax + b 형태의 식 계산하기는 쉽지만 역을 계산하기는 어렵다는 특징을 이용하여 암호학에서 사용된다
퍼블릭키는 개인키에 의해서 생성되고 지갑주소는 퍼블릭키에 의해서 생성된다
개인키를 생성하는데 해시함수(sha256) 의 특성상 함수에 규칙성은 없지만 결국 같은 인풋을 만들어내지 않는 것이 중요한데 이점에서 인풋값은 난수생성에 의해서 만들어져야한다는 점이 중요한부분이다.
난수생성에 의한 인풋값 > 해시함수 > 개인키 > ... > 공개키
이번에는 ... 과정을 알아보고 공개키를 생성해보자
이때 사용되는부분이 타원곡선이다. 식은 K=k*G 이다. K=공개키,k=개인키, G=생성자점 여기서 * 는 일반 곱하기가 아님 타원곡선의 곱하기 연산자라는데 자세히모름 무튼 내가아는 곱하기는 아님 일단 의미적으로만 접근
https://www.math.brown.edu/johsilve/Presentations/WyomingEllipticCurve.pdf
타원곡선에 두점을 p1, p2 라고 할때 두점을 이었을때 만나는 제3의 점을 p3 이라고 할때 타원곡선에서 p1+p2+p3 = 0 이다.
이때 p3 = -(p1+p2) 의 값이다. 따라서 x 축으로 대칭한 값이 p1+p2 의 값이 된다 여기서 더하기 역시 일반 더하기가 아닌 타원곡석의 더하기 연산자라는점
아래그림을 예로 들면 P가 2G 고 Q가 4G 라고 한다면 R 은 -6G가 되고 x축 대칭인 점은 6G 가 된다 여기서 G는 좌표값이다.
하지만 일단 최초에 알고있는 점은 G 포인트 하나 인데 이것 역시 접선의 성질을 이용하면 2G 와 -2G의 포인트를 알수 있고 이후로는 점들을 지나는 직선과 그래프의 접점을 이용해 정해진 kG 의 값을 구할수 있게 되고 그값이 공개키의 좌표가 된다.
공개키는 좌표를 이어붙인형태의 숫자가 된다 (ex 04(x좌표)(y좌표)) 이때 04는 뒤에 나오는 형식을 나타내는 방식이며 압축형과 비압축형 에 따라 바뀔수 있는데 압축형인경우에는 x좌표만 나타내고 그때는 02(x좌표) 03(x좌표) 이런식으로 나타낸다 02 와 03 의 차이는 y좌표의 홀수여부에 따라 구분하며 타원곡선의 특징상 하나의 좌표값을 알면 자동적으로 다른 좌표역시 알수있음으로 위와 같이 압축해서 표현할수 있고 그렇게 하는 경우 용량적 이점이 있게된다.
다음번 암호화(3)에서는 공개키 > ... > 지갑주소 과정을 적어보자.
'블록체인' 카테고리의 다른 글
[blockchain] nft 와 암호화폐의 차이 (0) 2022.09.29 [blockchain] 토큰과 프로젝트에 대한고민 그리고 erc20 (0) 2022.09.28 [blockchain] 암호화(1) (1) 2022.09.21 [blockchain] difficulty, target값, blockhash (0) 2022.09.20 [blockchain] 정의, 특징, 구조 (0) 2022.09.17