전체 글 130

[비트코인 암호학] 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..

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

[비트코인 암호학] 1.1 타원곡선 [비트코인 암호학] 0. 비트코인의 거래와 서명 비트코인 블록체인에서 하나의 블록을 단순하게 표현하면 다음과 같습니다. 각 블록들은 이전 블록의 해시와 거래 내역을 담고 있습니다. 거래 kwjdnjs.tistory.com 이전 글에서 타원곡선에 대해 알아봤습니다. 이번 글에서는 타원곡선에서 정의된 점 덧셈에 대해 알아보겠습니다. 먼저 타원곡선 상의 두 점 A와 B가 존재한다고 가정해보겠습니다. 점 덧셈을 하기 위해 먼저 두 점 A와 B를 지나는 직선을 그립니다. 그리고 해당 직선이 점 A, B가 아니면서 타원곡선과 만나는 점 C를 찾습니다. 이렇게 구한 점 C의 x축 대칭인 점을 찾습니다. 최종적으로 구해진 점 -C가 바로 점 A와 B의 점 덧셈 값입니다. 이를 다음과..

[비트코인 암호학] 1.1 타원곡선

[비트코인 암호학] 0. 비트코인의 거래와 서명 비트코인 블록체인에서 하나의 블록을 단순하게 표현하면 다음과 같습니다. 각 블록들은 이전 블록의 해시와 거래 내역을 담고 있습니다. 거래 내역 중 하나의 거래를 확대해서 살펴보겠습 kwjdnjs.tistory.com ECDSA는 Elliptic Curve Digital Signature Algorithm의 약자로 번역하면 타원곡선 디지털 서명 알고리즘이 됩니다. 따라서 ECDSA를 이해하기 위해 먼저 타원곡선에 대해 알아보겠습니다. 타원곡선은 다음과 같은 방정식으로 정의된 곡선입니다. 실제 a와 b의 값을 변경하면서 그래프를 그릴 경우 다음과 같은 결과를 얻을 수 있습니다. 비트코인은 secp256k1을 사용합니다. 해당 타원곡선은 다음과 같이 a=0, b..

[비트코인 암호학] 0. 비트코인의 거래와 서명

비트코인 블록체인에서 하나의 블록을 단순하게 표현하면 다음과 같습니다. 각 블록들은 이전 블록의 해시와 거래 내역을 담고 있습니다. 거래 내역 중 하나의 거래를 확대해서 살펴보겠습니다. 블록 내의 각각의 거래를 단순하게 표현하면 위와 같이 이전 거래 내역과 공개키 그리고 개인키와 서명으로 이뤄져 있습니다. 각 거래들은 이전 거래 내역을 포함하여 하나의 체인을 구성하게 됩니다. 그리고 이렇게 거래들의 체인을 구성하는 과정에서 개인키와 공개키를 이용한 서명과 검증 과정을 거치게 됩니다. 이 과정에서 ECDSA라고 부르는 디지털 서명 방식을 사용합니다. 앞으로 이어지는 글들을 통해 ECDSA가 어떻게 구성되는지 그리고 어떤 방식으로 서명을 검증하는지에 대해 알아보겠습니다. [비트코인 암호학] 1.1 타원곡선 ..

[블록체인 의견] 화폐를 위한 블록체인에서 블록체인을 위한 화폐로

블록체인 기술은 2008년 비트코인이 처음 등장하면서 소개되었습니다. 기술이 처음 소개되었던 당시 해당 기술은 오직 비트코인이 화폐로 작동되기 위해서만 사용되었습니다. 하지만 시간이 지나면서 블록체인은 NFT와 DeFi 등 다양한 분야에 활용되고 있습니다. 이 글에서는 블록체인과 화폐(코인)와의 관계에 대해 생각해보겠습니다. 화폐를 위한 블록체인 2008년 비트코인이 처음 등장할 당시 블록체인 기술은 제3자 없는 P2P 거래를 위해 이중 지불 문제를 해결하는 용도로 활용되었습니다. 이중 지불 문제에 대해서는 다음 글을 참고해주세요. [비트코인 기본 구조] 1. 이중 지불 문제(Double spending problem) 익명의 비트코인 개발자 사토시 나카모토는 2008년 논문과 함께 비트코인 코어를 처음..