안녕하세요 수달입니다.
오늘은 저번시간에 이어서 블록체인의 두번째 시간입니다.
저번시간에는 블록체인의 정확한 정의 그리고 기본적인 구조와 체인이 연결되는 방법,
즉 해시함수를 통한 해시값 도출과정에 대해서 살펴봤습니다.
이번시간에는 데이터 머클트리와 암호화 기법을 통한 트랜잭션 검증 방법에 대해서 살펴보겠습니다.
데이터 머클트리, 암호화 기법 그리고 트랜잭션 까지
모르는 용어가 3가지 등장했지만 어려운 용어는 아닙니다.
가장먼저 알아야 할 용어는 바로 트랜잭션입니다.
트랜잭션 (Transaction)이란 기본적으로는 거래라는 뜻 이며
모든 거래를 기록하기 위해 시스템 내부에서 거래기록의 과정과 결과를 담아놓은 장부를 뜻합니다.
예를들어 금융 시스템에서의 트랜잭션이 의미하는 바는
이동하는 재화의 이체 거래과정과 그 과정에서 전송되는 서명된 정보를 뜻합니다.
머클트리 : Merkle Trees
흔히 말해 머클트리는 나무가 뒤집어져 있는 모양 혹은
나무의 뿌리가 뻗어나간 모양 이라고 얘기하는데
머클트리의 어느 부분을 윗 부분으로 보느냐에 따라서 둘다 맞는 표현이 되기도 합니다.
위에 나와있는 사진 처럼 머클트리는 수많은 트랜잭션을 가리키는 요약본이라고 생각하면 편합니다.
정확한 설명은 아니겠지만 궁극적으로 머클 트리의 끝은 트랜잭션의 정보이기 때문에
트랜잭션을 가리키는 지도 라고 생각 할 수 있습니다.
반대로 생각하면 두개씩의 데이터를 짝 지어서 궁극적인 머클루트(최상위 Data)를 찾아가는 행위 이므로
그 과정을 살펴본다면
R1, R2, R3, R4 는 각각의 트랜잭션을 가리키는 해시값이고,
R12 와 R34 는 각각의 트랜잭션을 가리키는 해시값을 두개씩 묶은<(R1+R2),(R3+R4)>값을 가리키는 해시값이 되며.
궁극적인 R값(머클루트 값) 은 R12와 R34를 묶은(R12+R34)값의 해시값이 됩니다.
이러한 머클트리는 나중에 3번째 챕터에서
블록체인에서 어떻게 사용되는지 다시한번 설명하고 지금은 넘어가겠습니다.
다음은 암호화 기법 입니다.
암호화 기법 :
개인키(Private Key)와 공용키(Public Key)를 사용하는 트랜잭션 검증법
암호화 방식에는 두가지가 존재합니다.
1 . 한가지의 키를 사용하여 암호화와 복호화 를 할수 있는 방식.
2 . 암호화 키와 복호화 키가 따로 존재하는 방식.
첫 번째의 경우
하나의 키로 암호화된 데이터를 같은 키로 복호화 하여 데이터를 확인할 수가 있습니다.
하지만 두 번째의 경우엔 하나의 키로 암호화된 데이터를 같은 키가 아닌 다른 키로 복호화 하여 데이터를 확인할 수 있습니다.
일반적으로는 두 번째 암호화 방식을 많이 사용하고 그 사용 이유를
public 한 곳에서의 data 공개를 통해 설명할 수 있습니다.
맨 처음 "수달의 블로그" 라는 원본 Data가 존재한다고 생각해 봅니다.
그 data 를 Public 한 곳에 공개 할 때
data의 값과 함께 data 의 해시값(3LI22)을 개인키(Public Key)로 암호화 하여 같이 공개합니다.
이때 데이터를 해시값으로 바꾸는 해시함수는 private(개인) 과 public(공용) 둘 다 동일하다고 생각합니다.
이렇게 되면 Data 와 함께 공개된 암호값을 통해서 트랜잭션을 검증할 수 있습니다.
공개된 Data에 해시함수를 통해서 해시값을 도출하고
공용키(public key)를 통해서 암호값을 복호화 했을때 위의 해시값과 복호화된 값이 동일한 값을 가졌다면
트랜잭션이 검증됬다고 말 할 수 있습니다.
하지만 public 에 공개된 암호값을 공용키(public key)로 복호화 했을 때 그 값이
data의 해시 값과 다르다면 정확한 원인은 알 수 없으나
데이터의 송신자가 보내려고 했던 data는 아니라는 것을 의미합니다.
결론적으로 개인키(private key)와 공용키(public key)를 사용한다는 것은 총 네가지의 요구사항을 만족하게 됩니다.
1. 고유한 개인키를 사용해 생성한다는 것을통해 누가 생성했는지를 특정 할 수 있게 된다.
2. 개인키는 디지털 서명의 의미를 내포하게 된다.
3. 트랜잭션의 내용이 바뀌게 되면 소유자가 새로 서명을 해야 한다.
(개인키를 통해 암호화 해야 한다.)
4. 누구나 쉽게 검증할 수 있다.
다음 시간은 블록체인의 마지막 시간으로
블록체인의 헤더와, 체인이 연결되는 과정에 대해서 알아보겠습니다.
감사합니다.