[케블리] #40. 전자장부가 암호화폐가 된 사연 (feat. 전자서명)

in #kr8 years ago (edited)

전자장부가 암호화폐가 된 사연 (feat. 전자서명)



스크린샷 2018-05-03 오후 10.49.00.png

들어가는 말

2018년 4월 27일, 판문점에서 남북정상회담이 열렸습니다. 첫 만남부터 환송까지 모든 순간이 감동의 연속이었습니다. 그중에서도 중요한 한 장면을 고르라면 공동선언문 서명식이 아닐까 생각해봤습니다. 남북의 대표가 선언문에 ‘서명’하고 교환하는 그 순간 5장의 종이가 역사적인 판문점 선언으로 바뀌었기 때문입니다. 오늘 포스팅 주제도 이 서명에 관한 내용입니다.


제목 없음ere.png


서명이란?

서명이란 행위자가 자 기의 동일성을 표시하고 책임을 분명하게 하기 위하여 성명을 쓰는 일.

서명은 단어 그대로 어떤 것에 자신의 이름을 쓰는 것입니다. 단순한 행위이지만 법적으로는 큰 의미를 가집니다. 자신만의 고유하고 부인할 수 없는 식별을 문서에 첨부함으로써 문서 내용에 대한 증명을 대신합니다. 예를 들어, 계약에서 서명의 역할은 계약 당사자의 신원에 대한 증빙뿐만 아니라 문서 내용에 대한 동의의 증거를 제공합니다. 법인, 국가에서도 대표자의 서명은 계약, 조약 체결 등에 사용되고 있습니다. 서명은 쉽게 위조 및 변조를 할 수 있다는 단점을 가지고 있습니다. 낮은 신뢰 수준이 요구되는 경우에는 빈번하게 사용되고 있으나 높은 신뢰 수준이 필요한 경우에는 당사자가 대면하거나 공증할 수 있는 중개인이 참여하기도 합니다.


전자서명이란?

전자서명은 공개된 통신망에서 문서의 무결성과 참여자의 인증을 가능하도록 도와준다.

정보통신 기술의 발전과 인터넷의 등장으로 우리는 익명의 누군가와 정보를 교환할 수 있게 되었습니다. 더 나아가 상품 및 서비스의 거래도 가능하게 되었습니다. 전자서명은 인터넷을 통한 거래, 계약에 있어 오프라인상의 서명과 같은 기능을 할 수 있도록 개발되었습니다. 즉, 인터넷상에서 정보를 보내는 사람과 받는 사람을 신뢰할 수 있는 기관 또는 알고리즘을 통해 인증해 주는 역할을 하고 있습니다.

  • 위조 불가(Unforgeable): 서명자만이 서명을 생성할 수 있다.
  • 인증(Authentication): 서명의 서명자를 확인할 수 있다.
  • 재사용 불가(Not Reusable): 서명의 해시값을 전자서명에 이용하므로 한 번 생성된 서명을 다른 문서의 서명으로 사용할 수 없다.
  • 변경 불가(Unalterable): 서명된 문서는 내용을 변경할 수 없기 때문에 데이터가 변조되지 않았음을 보장하는 무결성을 만족한다.
  • 부인 방지(Non Repudiation): 서명자가 나중에 서명한 사실을 부인할 수 없다.
    (정보 보안 개론, 한빛아카데미)


전자서명 과정
전자서명 과정은 이전에 설명했던 비대칭키 방식(공개키, 개인키 방식)을 통해 이루어집니다. 이전 포스팅에서 색 조합을 통해 공개키 방식에서 합의를 끌어낼 수 있는지 직관적으로 설명한적이 있습니다. 하지만 실제 적용은 RSA, DSA(디지털 서명 알고리즘), ECDSA(타원곡선 서명 알고리즘)을 사용하여 증명에 사용되고 있습니다. 더 깊이 공부하시고 싶은 분들은 각 알고리즘에서 어떻게 증명하는지 찾아보셔도 좋을 것 같습니다.
-[케블리]#31. 암호화폐의 열쇠 - 공개키 방식을 이해해보자!


스크린샷 2018-05-03 오후 9.43.44.png

(Wikipedia, https://en.wikipedia.org/wiki/Digital_signature)


보내는 사람

  1. 보내는 사람은 보낼 문서를 해쉬 함수를 통해 고정길이의 문자열로 변환합니다.
  2. 변환된 해쉬값을 개인키로 한번 더 암호화하여 전자서명을 생성합니다.
  3. 전자서명을 기존의 문서에 첨부합니다.
  4. 전자서명 + 문서를 전송합니다.

받는 사람

  1. 받는 사람은 문서에서 전자서명된 부분과 보낸 사람의 공개키를 가져옵니다.
  2. 보낸 사람의 공개키로 전자서명된 부분을 복호화합니다.
  3. 수신된 문서의 전자서명된 부분을 제외한 나머지 원래의 문서를 같은 해쉬함수로 해쉬값을 구합니다.
  4. 공개키로 복호화한 해쉬값과 문서의 해쉬값이 같이 비교하여 검증합니다


비트코인과 전자서명
비트코인의 트랜잭션(문서)은 아래와 같은 형태로 생성됩니다. 어떤 노드가 새 트랜잭션을 발생시킬 때 그 트랜잭션(문서)을 해쉬 한 해쉬값을 개인키로 암호화한 뒤 (ScriptSig, 노란색), 원래의 트랜잭션에 덧붙여서 전송합니다. 전송받은 트랜잭션 속에 포함된 공개키(ScriptPubKey, 주황색)로 덧붙인 서명이 유효한지 검증합니다 비트코인은 ECDSA 알고리즘을 통해 해당 서명을 검증하게 됩니다. 검증이 완료되면 완료된 트랜잭션을 네트워크상의 다른 노드들에 전파하게 됩니다.


제목 없음.png

(Programming Blockchain, Jimmy Song)


마치며
전자서명은 단순하게 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

IMG_2582.jpg

Sort:  

전자서명에 대한 깔끔한 정리 감사합니다:)

글 잘 봤습니다 :) 보팅하고 팔로우 갈게요 !

잘보고 갑니다
감사합니다

깔끔한 설명 감사히 보고 갑니다^^

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.081
BTC 62954.95
ETH 1711.43
USDT 1.00
SBD 0.40