들어가는 말
2018년 4월 27일, 판문점에서 남북정상회담이 열렸습니다. 첫 만남부터 환송까지 모든 순간이 감동의 연속이었습니다. 그중에서도 중요한 한 장면을 고르라면 공동선언문 서명식이 아닐까 생각해봤습니다. 남북의 대표가 선언문에 ‘서명’하고 교환하는 그 순간 5장의 종이가 역사적인 판문점 선언으로 바뀌었기 때문입니다. 오늘 포스팅 주제도 이 서명에 관한 내용입니다.
서명이란?
서명이란 행위자가 자 기의 동일성을 표시하고 책임을 분명하게 하기 위하여 성명을 쓰는 일.
서명은 단어 그대로 어떤 것에 자신의 이름을 쓰는 것입니다. 단순한 행위이지만 법적으로는 큰 의미를 가집니다. 자신만의 고유하고 부인할 수 없는 식별을 문서에 첨부함으로써 문서 내용에 대한 증명을 대신합니다. 예를 들어, 계약에서 서명의 역할은 계약 당사자의 신원에 대한 증빙뿐만 아니라 문서 내용에 대한 동의의 증거를 제공합니다. 법인, 국가에서도 대표자의 서명은 계약, 조약 체결 등에 사용되고 있습니다. 서명은 쉽게 위조 및 변조를 할 수 있다는 단점을 가지고 있습니다. 낮은 신뢰 수준이 요구되는 경우에는 빈번하게 사용되고 있으나 높은 신뢰 수준이 필요한 경우에는 당사자가 대면하거나 공증할 수 있는 중개인이 참여하기도 합니다.
전자서명이란?
전자서명은 공개된 통신망에서 문서의 무결성과 참여자의 인증을 가능하도록 도와준다.
정보통신 기술의 발전과 인터넷의 등장으로 우리는 익명의 누군가와 정보를 교환할 수 있게 되었습니다. 더 나아가 상품 및 서비스의 거래도 가능하게 되었습니다. 전자서명은 인터넷을 통한 거래, 계약에 있어 오프라인상의 서명과 같은 기능을 할 수 있도록 개발되었습니다. 즉, 인터넷상에서 정보를 보내는 사람과 받는 사람을 신뢰할 수 있는 기관 또는 알고리즘을 통해 인증해 주는 역할을 하고 있습니다.
전자서명 과정
전자서명 과정은 이전에 설명했던 비대칭키 방식(공개키, 개인키 방식)을 통해 이루어집니다. 이전 포스팅에서 색 조합을 통해 공개키 방식에서 합의를 끌어낼 수 있는지 직관적으로 설명한적이 있습니다. 하지만 실제 적용은 RSA, DSA(디지털 서명 알고리즘), ECDSA(타원곡선 서명 알고리즘)을 사용하여 증명에 사용되고 있습니다. 더 깊이 공부하시고 싶은 분들은 각 알고리즘에서 어떻게 증명하는지 찾아보셔도 좋을 것 같습니다.
-[케블리]#31. 암호화폐의 열쇠 - 공개키 방식을 이해해보자!
(Wikipedia, https://en.wikipedia.org/wiki/Digital_signature)
보내는 사람
받는 사람
비트코인과 전자서명
비트코인의 트랜잭션(문서)은 아래와 같은 형태로 생성됩니다. 어떤 노드가 새 트랜잭션을 발생시킬 때 그 트랜잭션(문서)을 해쉬 한 해쉬값을 개인키로 암호화한 뒤 (ScriptSig, 노란색), 원래의 트랜잭션에 덧붙여서 전송합니다. 전송받은 트랜잭션 속에 포함된 공개키(ScriptPubKey, 주황색)로 덧붙인 서명이 유효한지 검증합니다 비트코인은 ECDSA 알고리즘을 통해 해당 서명을 검증하게 됩니다. 검증이 완료되면 완료된 트랜잭션을 네트워크상의 다른 노드들에 전파하게 됩니다.
마치며
전자서명은 단순하게 A가 B에게 얼마를 주었다는 기록에 신뢰를 부여함으로써 화폐로서 기능할 수 있도록 도와준다는 것을 알 수 있었습니다. 비트코인에 있어 가장 핵심적인 기술이라고도 볼 수 있습니다. 이외에도 전자서명 기술은 공인인증서, 인터넷 브라우저, 전자여권 등에서도 다양하게 활용되고 있습니다.
참고자료
https://en.wikipedia.org/wiki/Digital_Signature_Algorithm
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm
http://code13.tistory.com/165
https://steemit.com/kr/@niipoong/id-create-bitcoin-txid