비트코인/암호학

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

라이튼 2022. 7. 18. 21:37
 

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

[비트코인 암호학] 2.2 유한체에서의 타원곡선 [비트코인 암호학] 2.1 유한체 [비트코인 암호학] 1.3 타원곡선의 점 덧셈2 [비트코인 암호학] 1.2 타원곡선의 점 덧셈1 [비트코인 암호학] 1.1 타원곡선

kwjdnjs.tistory.com

 타원곡선을 이용해 디지털 서명을 하고 검증하기 위해서는 공개키(Public key)와 개인키(Private key)가 필요합니다. 공개키와 개인키로 디지털 서명을 하는 방법에 대해 설명하기 전에 먼저 공개키와 개인키가 무엇인지에 대해 알아보겠습니다.

 

 A가 B라는 사람에게 인터넷과 같이 공개된 네트워크를 통해 어떠한 문장을 주고받으려고 한다면 다음과 같이 문장을 네트워크를 통해 전송하면 됩니다.

 

 하지만 여기에는 한 가지 문제가 있습니다. A가 B에게 문장을 전송하기 위해 사용한 네트워크는 공개된 네트워크이기 때문에 누구나 A가 B에게 보낸 문장을 볼 수 있다는 것입니다.

 문장이 공개되어도 문제가 없는 내용이라면 큰 상관이 없을 수도 있지만, 만약 보안이 필요한 문장이라면 이러한 방식의 전송은 매우 위험합니다.

 

 이렇게 공개된 네트워크를 통해 무언가를 전송할 때, 보안을 유지하면서 안전하게 전송할 수 있도록 도와주는 방법이 바로 공개키 암호화입니다. 공개키 암호화는 이전에도 알아봤던 것처럼 공개키와 개인키를 사용합니다. 지금부터는 이러한 공개키와 개인키를 이용해 어떻게 문장을 안전하게 주고받을 수 있는지에 대해 살펴보겠습니다.

 

 먼저 공개키 암호화에서 사용하는 공개키와 개인키는 큰 특징을 하나 가지고 있습니다. 공개키를 이용해 암호화된 내용은 개인키를 사용해야만 복호화할 수 있고, 개인키를 이용해 암호화된 내용은 공개키를 사용해야만 복호화할 수 있다는 것입니다.

 

 이러한 특성을 이용해 공개키 암호화를 해보겠습니다. 먼저 B가 공개키와 개인키를 생성한 후, A에게 자신의 공개키를 전송합니다. 공개된 네트워크를 통해 전송하므로 모든 사람들이 공개키를 볼 수 있습니다.

 A는 B가 전송한 공개키를 사용해 문장을 암호화한 뒤 네트워크를 통해 B에게 전송합니다. 이 역시 모든 사람들이 볼 수 있습니다.

 

 B는 자신이 가지고 있는 개인키를 이용해 문장을 복호화한 후 내용을 읽을 수 있습니다.

 

 B가 아닌 다른 사람들도 암호화된 문장과 공개키를 가지고 있습니다. 하지만 공개키를 통해 암호화된 문장은 개인키로만 풀 수 있다는 특성 때문에, B 이외의 사람들은 A가 전송한 문장의 내용이 무엇인지 알 수 없습니다.

 

 지금까지 알아본 방법이 바로 공개키 암호화입니다. 공개키와 개인키가 가진 특성을 이용해 문장을 암호화하여, 공개된 네트워크를 통해 전송해도 특정한 사람만 읽을 수 있도록 만들었습니다. ECDSA에서는 이러한 특성을 활용하여 디지털 서명을 하고 검증을 하게 됩니다. 디지털 서명에 대해 다루기 전에 먼저 다음 글에서는 타원곡선의 스칼라 곱셈을 통해 어떻게 공개키와 개인키를 생성할 수 있는지에 대해 알아보겠습니다.

 

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

 지금까지 유한체 타원곡선을 다루면서 다음과 같은 변수들을 정리했었습니다. a와 b는 타원곡선 방정식의 값으로 지금까지 a=0, b=7을 사용했습니다. p는 유한체의 위수입니다. G는 타원곡선 위

kwjdnjs.tistory.com