MODULE 2 (B) - CRYPTOCURRENCY TRANSACTIONS INTUITION
04. SIGNATURES: PRIVATE & PUBLIC KEYS
05. SIGNATURES & KEYS DEMO
서명과 개인 키 그리고 공개 키를 알아 볼 것이다.
위와 같은 블록 상황이 있다고 가정하자
이 때 한 가지 의문점이 존재하는데 바로 프라이버시 문제이다.
먼저 이 블록체인과 전체 트랜잭션을 보면 누가 누구에게 돈을 보내는지 확실하게 보인다.
그런 의미에서 중요한 것은 프라이버시가 없다는 것이다. 그리고 또 중요한 것은 누군가 다음 블록에 트랜잭션을 제출하면서 서로를 몰라도 돈을 보낼 수 있다는 것이다.
여기서 문제는 이 시스템에 프라이버시를 추가하는 방법이다.
개인과 공개 키를 통해 블록체인은 프라이버시를 보장한다.
암호화폐를 시작하면 개인 키가 할당되는데 이는 고유 식별자와 같은 것으로 은행 계좌의 비밀번호 같은 것이다.
그리고 개인 키로 공개 키를 생성할 수 있다.
공개 키는 다른 사람과 공유할 수 있으며, 공개 키를 통해 서로 돈을 주고받을 수 있다.
즉, 공개 키는 은행 계좌 같은 것이다.
이 때 메시지를 보낸다고 가정하자.
메시지에는 아무 거나 적을 수 있다. 즉, 텍스트나 암호화폐의 경우에는 트랜잭션을 넣을 수 있다.
만약 트랜잭션을 블록체인에 넣는 대신 개인 키와 공개 키를 사용해서 어떻게 보안을 강화할 수 있을까?
바로 개인 키와 메시지가 결합하여 서명(signature)을 생성하는 것이다. 그래서 개인 키는 메시지 서명에 사용되고 트랜잭션을 발생한 사람만이 개인 키를 알고 있는 것이다.
이것이 개인 키의 핵심 요소이고 해당 사람의 고유한 서명이 되는 것이다.
그래서 이 메시지는 서명이 같이 있으며, 트랜잭션도 이 서명과 함께 이동하게 된다.
따라서 누군가 이 메시지를 접하면 이 서명도 접하게 되고, 트랜잭션도 첨부된 서명을 접하게 된다.
위와 같은 상태에서 남은 것은 누가 만든 서명인지 확인하는 방법이다. 이때 공개 키가 필요하다.
블록체인 알고리즘에는 검증 함수가 있는데, 메시지와 서명 그리고 생성한 공개 키 3가지 요소를 검증 함수에 넣으면 예, 아니오로 분할할 수 있다.
결국 공개 키를 사용해서 서명과 메시지의 결합을 평가해 개인 키로 이 메시지에 서명했는지 여부를 확인하거나 거부하는 것이다.
공개 키를 사용한다고 해도 개인 키를 역설계할 수 없다. 공개 키는 SHA256와 같은 해시함수를 사용하기 때문이다.
따라서 개인 키를 통해서 공개 키를 생성할 수 있지만 개인 키를 역설계할 수는 없어 공유해도 된다.
https://tools.superdatascience.com/blockchain/public-private-keys/signatures
좋은 정보 감사합니다.