비트코인/암호학

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

라이튼 2022. 7. 21. 22:19
 

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

[비트코인 암호학] 3.1 공개키 암호화 [비트코인 암호학] 2.3 타원곡선의 스칼라 곱셈 [비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의

kwjdnjs.tistory.com

 디지털 서명은 공개키 암호화를 이용하여 전송된 데이터를 증명하는 방법입니다. 예를 들어 A가 B에게 비트코인을 이체하려고 한다면, 먼저 A는 공개된 네트워크를 통해 비트코인이 들어있는 주소(공개키)가 자신의 것임을 증명해야 합니다.

 이러한 상황에서 사용할 수 있는 방법이 바로 디지털 서명입니다.

 

 디지털 서명을 하기 위해서는 먼저 공개키와 개인키를 생성해야 합니다. 이 과정은 이미 이전 글들을 통해 살펴봤습니다.

 그다음 생성된 공개키를 B에게 전송합니다. 이전과 다르게 A가 B에게 공개키를 전송한다는 점에 주의해야 합니다.

 

이후 A는 자신이 가지고 있는 개인키를 이용해 어떠한 메시지를 암호화합니다.

 그리고 B에게 원본 메시지와 암호화된 메시지를 함께 전송합니다.

 B는 받은 암호화된 메시지를 복호화하여 원본 메시지와 비교합니다.

 만약 복호화된 메시지와 전달받은 원본 메시지가 같다면, 해당 메시지는 A가 보낸 메시지라는 것을 확인할 수 있습니다. 또한 A가 전송받은 공개키에 해당하는 개인키를 소유하고 있음을 알 수 있습니다. 그 이유는 다음과 같이 공개된 네트워크에서 A의 공개키를 받은 누군가가 공개키를 이용해 가짜 메시지를 암호화해 전송하더라도, 복호화된 메시지가 원본 메시지와 다를 것이기 때문입니다.

 이전에 알아봤던 것처럼 공개키로 암호화된 내용은 개인키로만 풀 수 있고, 개인키로 암호화된 내용은 공개키로만 풀 수 있기 때문입니다.

 

 이렇게 공개키 암호화를 사용하면 어떤 메시지를 A가 보낸 것인지 아니면 네트워크에 있는 다른 사람이 보낸 것인지 검증할 수 있습니다. 또한 A가 공개키에 해당하는 개인키를 소유하고 있음을 알 수 있습니다. 이를 디지털 서명이라고 합니다.

 

 디지털 서명을 이용하면 A는 비트코인이 들어있는 주소가 자신의 것임을 증명할 수 있습니다. 만약 A가 비트코인 계좌의 계좌번호라고 할 수 있는 공개키를 생성한 사람이라면 계좌의 비밀번호라고 볼 수 있는 개인키를 소유하고 있을 것이고, 개인키와 공개키를 이용하여 위 방식을 통해 증명할 수 있을 것이기 때문입니다.

 

 지금까지 디지털 서명이 어떤 방식으로 이뤄지는지에 대해 알아봤습니다. 이어지는 글에서는 타원곡선을 이용해 생성한 개인키와 공개키를 사용해 디지털 서명을 하고 검증하는 방식인 ECDSA에 대해 알아보겠습니다.

 

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

 지금까지 알아봤던 내용들을 정리해보겠습니다. 먼저 타원곡선과 점 덧셈 그리고 유한체 타원곡선과 스칼라 곱셈에 대해 살펴봤습니다. 이후 이 내용들을 토대로 다음과 같이 secp256k1에서 정

kwjdnjs.tistory.com