비트코인/암호학 13

[비트코인 암호학] 5. 슈노르 서명(Schnorr signature)

[비트코인 암호학] 3.2 공개키와 개인키 [비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 kwjdnjs.tistory.com [비트코인 암호학] 4.2 ECDSA - 1 [비트코인 암호학] 4.1 디지털 서명 [비트코인 암호학] 3.2 공개키와 개인키 [비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 kwjdnjs.tistory.com [비트코인 암호학] 4.3 ECDSA - 2 이번 글에서는 이전 글에서 생성했던 서명을 검증해보겠습니다. [비트코인 암호학] 4...

[비트코인 암호학] 4.3 ECDSA - 2

이번 글에서는 이전 글에서 생성했던 서명을 검증해보겠습니다. [비트코인 암호학] 4.2 ECDSA - 1 지금까지 알아봤던 내용들을 정리해보겠습니다. 먼저 타원곡선과 점 덧셈 그리고 유한체 타원곡선과 스칼라 곱셈에 대해 살펴봤습니다. 이후 이 내용들을 토대로 다음과 같이 secp256k1에서 정 kwjdnjs.tistory.com A는 다음과 같이 개인키 d, 무작위 값 k, 메시지의 해시값인 z, 생성점 G를 이용해 서명 (r, s)를 생성하여 공개키 P와 메시지 m과 함께 B에게 전송했습니다. B는 전달받은 값을 이용해 서명을 검증할 수 있습니다. 먼저 다음 식을 다시 한번 생각해 보겠습니다. 이전에 알아봤던 것처럼 위 식은 공개된 G, P, R을 이용해 다양한 u와 v값 조합을 가질 수 있습니다. ..

[비트코인 암호학] 4.2 ECDSA - 1

[비트코인 암호학] 4.1 디지털 서명 [비트코인 암호학] 3.2 공개키와 개인키 [비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유 kwjdnjs.tistory.com 지금까지 알아봤던 내용들을 정리해보겠습니다. 먼저 타원곡선과 점 덧셈 그리고 유한체 타원곡선과 스칼라 곱셈에 대해 살펴봤습니다. 이후 이 내용들을 토대로 다음과 같이 secp256k1에서 정의된 변수들에 대해서도 살펴봤습니다. 타원곡선 방정식의 a = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 타원곡선 방정식의 b = 00000000 0..

[비트코인 암호학] 4.1 디지털 서명

[비트코인 암호학] 3.2 공개키와 개인키 [비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 kwjdnjs.tistory.com 디지털 서명은 공개키 암호화를 이용하여 전송된 데이터를 증명하는 방법입니다. 예를 들어 A가 B에게 비트코인을 이체하려고 한다면, 먼저 A는 공개된 네트워크를 통해 비트코인이 들어있는 주소(공개키)가 자신의 것임을 증명해야 합니다. 이러한 상황에서 사용할 수 있는 방법이 바로 디지털 서명입니다. 디지털 서명을 하기 위해서는 먼저 공개키와 개인키를 생성해야 합니다. 이 과정은 이미 이전 글들을 통해 살펴봤습니다. 그다음 ..

[비트코인 암호학] 3.2 공개키와 개인키

[비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원 kwjdnjs.tistory.com 지금까지 유한체 타원곡선을 다루면서 다음과 같은 변수들을 정리했었습니다. a와 b는 타원곡선 방정식의 값으로 지금까지 a=0, b=7을 사용했습니다. p는 유한체의 위수입니다. G는 타원곡선 위의 한 점입니다. n은 점 G의 군에 대한 위수입니다. 해당 변수들의 값은 secp256k1에서 이미 정의되어 있습니다. 다음은 해당 값들을 16진수로 나타낸 것입니다. a = 00000000 00000000 00000000 00..

[비트코인 암호학] 3.1 공개키 암호화

[비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선 kwjdnjs.tistory.com 타원곡선을 이용해 디지털 서명을 하고 검증하기 위해서는 공개키(Public key)와 개인키(Private key)가 필요합니다. 공개키와 개인키로 디지털 서명을 하는 방법에 대해 설명하기 전에 먼저 공개키와 개인키가 무엇인지에 대해 알아보겠습니다. A가 B라는 사람에게 인터넷과 같이 공개된 네트워크를 통해 어떠한 문장을 주고받으려고 한다면 다음과 같이 문장을 네트워크를 통해 전송하면 됩니다. 하지만 여기에는..

[비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈

[비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선 [비트코인 암호학] 0. 비트코인의 거래와 서명 kwjdnjs.tistory.com 이전 글에서 유한체의 타원곡선의 점 덧셈에 대해 알아봤습니다. 해당 내용을 정리하면 다음과 같습니다. (1) (2) (3) (4) 이를 이용하면 유한체 타원곡선의 스칼라 곱셈을 정의할 수 있습니다. 곱셈은 기본적으로 어떠한 수를 여러 번 더하는 것입니다. 예를 들어 3을 세 번 더한 3+3+3은 3x3으로 표현할 수 있습니다. 이와 비슷하게 점 덧셈에서도 여러 번 반복해서 점 덧셈하는 것을 스칼라 값과의 곱으로..

[비트코인 암호학] 2.2 유한체에서의 타원곡선

[비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선 [비트코인 암호학] 0. 비트코인의 거래와 서명 비트코인 블록체인에서 하 kwjdnjs.tistory.com 먼저 지금까지 알아봤던 내용을 정리해보겠습니다. 1. 타원곡선의 점 덧셈 다음과 같은 타원곡선과 두 점 A와 B가 존재할 때, 타원곡선의 점 덧셈은 크게 4가지 경우로 나눌 수 있었습니다. (1) 점 A와 B가 서로 x축 대칭인 경우 점 덧셈 결과는 무한원점 입니다. (2) 점 A와 B가 서로 x축 대칭이 아니면서 다른 점일 경우 점 덧셈 결과는 다음과 같습니다. (3) 점 A와 B가 같은 점일 경우 점 덧셈 결과는 다음과 같습니다...

[비트코인 암호학] 2.1 유한체

[비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선 [비트코인 암호학] 0. 비트코인의 거래와 서명 비트코인 블록체인에서 하나의 블록을 단순하게 표현하면 다음과 같습 kwjdnjs.tistory.com 지금까지 알아본 타원곡선은 실수체에서의 타원곡선이었습니다. ECDSA는 유한체에서의 타원곡선을 사용합니다. 따라서 유한체에 대해 알아야 합니다. 유한체에 대해 알아보기 전에 먼저 '체'에 대해 알아보겠습니다. 체란 집합의 원소를 사용하여 사칙연산한 결괏값이 해당 집합에 속하는 집합을 말합니다. 실수 집합의 경우 사칙연산한 결과 값이 다시 실수로 나오기 때문에 체를 이룹니다. 하지만 정수의 경우 나누어 떨어지지 않는 값들은 정수..

[비트코인 암호학] 1.3 타원곡선의 점 덧셈2

[비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선 [비트코인 암호학] 0. 비트코인의 거래와 서명 비트코인 블록체인에서 하나의 블록을 단순하게 표현하면 다음과 같습니다. 각 블록들은 이전 블록의 해시와 거 kwjdnjs.tistory.com 이번 글에서는 타원곡선의 점 덧셈을 공식화해보겠습니다. 먼저 타원곡선의 점 덧셈에서 나타날 수 있는 경우를 크게 4가지로 나눠보겠습니다. 1. 점 A와 B가 서로 x축 대칭인 경우 2. 점 A와 B가 서로 x축 대칭이 아니면서 다른 점일 경우 3. 점 A와 B가 같은 점일 경우 4. 점 A와 B가 같은 점이면서 점의 y좌표가 0인 경우 1. 점 A와 B가 서로 x축 대칭인 경우 먼저 1번의 경우는 이전 글에서 이미 다뤘습니다. 점 A..