본 포스팅은 <안전하고 친절한 블록체인 안내서> 를 읽고 작성한 포스트입니다.
해시함수
블록체인에 대해 설명하기 전에, 해시함수를 먼저 소개하려 한다.
블록체인을 이해하기 위해 꼭 필요한 함수이다.
평범한 함수를 생각해보자. 예를 들어 f(x) = 2x+3 이라는 함수가 있다고 하자.
x에 100을 넣으면, 출력값이 203이라는 것은 당연하게 알 수 있다.
또한, 주어진 함수가 f(x)이고, 출력값이 203이라는 사실을 알면, x의 값이 100이라는 사실도 추론할 수 있다.
보안을 생각한다면, 만약 내가 어떤 사이트의 비밀번호를 1234로 입력하였는데,
그 사이트에서 모든 사람의 비밀번호를 저장할 때 g(x) = x+3 이라는 함수를 사용하여 저장한다면,
해킹하고자 하는 사람들은 이 저장값만 보고 입력값을 바로 추론해낼 수 있을 것이다.
그런 위험한 상황을 방지하기 위해 해시 함수를 사용한다.
해시 함수는 단방향 함수인데, 어떤 느낌이냐면
내 비밀번호로 1234를 입력하면 저장될 땐 A223uew89W 이런 식으로 저장되는 것이다.
이게 어떤 식으로 변화되는지가 랜덤이기 때문에, 저장되는 값(출력)을 가지고 입력값을 추론해낼 수가 없다.
즉, 입력값으로는 해시값을 만들 수 있지만, 해시값으로는 입력값을 만들 수 없다.
또, 해시 함수의 글자 수를 정해줄 수도 있기 때문에, 원본이 아무리 길어도 해시함수를 통과한다면 출력 내용을 줄일 수 있다.
따라서 해시 함수를 사용하면
1. 원본을 검증하기에 용이하고
2. 용량이 작고
3. 보안이 좋다.
블록체인 = 블록 + 체인
그렇다면, 블록이란?
여러 거래를 모아놓은 묶음!
만약 내가 가계부를 쓰는데, 저번 달의 월급이 200만원이었는데 그 중 180만원을 소비하였다면?
이번 달에는 월급을 받기 전에도 이미 20만원이 있는 것이다.
즉, 20만원이 남았기에 '이월'된 것이다.
이처럼 이 이월액을 이번달의 요약이라고 한다면,
블록에서의 요약도 있을 것이다.
아까 블록이 여러 거래를 모아놓은 묶음이라고 하였다.
거래를 생각해본다면, 중요한 정보는, 누가/언제/수량/가격 등이 있을 것이다.
이건 가계부처럼 입금은 +, 출금은 -로만 나타낼 수 없는 문제이다.
따라서 이 거래들을 모아놓은 '블록'에서의 요약법은 바로 해시함수이다.
해시함수를 이용해서 블록의 요약본인 블록해시를 만든다.
블록을 연결하는 체인
그리고 이렇게 만들어진 블록해시를 이용해서 블록들을 연결할 것인데,
이전 블록의 블록해시를 다음 블록에 집어넣으면 된다.
블록체인의 특징
- 위조가 어렵다.
체인으로 연결된 구조로, 만약 500개의 블록이 연결돼있는 상태에서 첫 번째 블록의 내용을 바꾼다면 그 블록의 블록해시도 변경되고, 그럼 두 번째 블록에 입력되는 해시값도 변경되는 것이기에 2번 블록의 블록해시도 변경되고.. 이렇기 때문에 하나의 거래를 위조하기 위해서는 모든 블록을 재작성해야함!
- 시간이 기록된다.
블록이 차곡차곡 시간에 맞게 쌓이면서 그 블록이 생성된 시간도 함께 기록되는데, 이미 블록을 많이 만든 상태에서 앞의 블록을 위조하려면.. 시간 순서가 맞지 않기 때문에 위조가 어렵다!
'정보보안' 카테고리의 다른 글
블록체인의 본질 (2) | 2024.09.06 |
---|---|
글로벌 사이버 위협과 대응 특강 정리 (0) | 2024.05.20 |