블록체인: 두 판 사이의 차이

내위키
편집 요약 없음
편집 요약 없음
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
9번째 줄: 9번째 줄:
! 순서 !! 이유 || 입출금 액수 !! 잔액
! 순서 !! 이유 || 입출금 액수 !! 잔액
|-
|-
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || 10,000,000  
|-
|-
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
22번째 줄: 22번째 줄:
|}
|}


그런데, 갑돌이가 출금을 할때 (순서 1) 찾은 금액이 80만 원이 아니라 800만 원이라는 사실이 뒤늦게 밝혀졌다. 그렇다면 거래는 아래와 같았어야 했다.
그런데, 갑돌이가 출금을 할때 (순서 3) 찾은 금액이 80만 원이 아니라 800만 원이라는 사실이 뒤늦게 밝혀졌다. 그렇다면 거래는 아래와 같았어야 했다.


{| class="wikitable" style="text-align: right;"
{| class="wikitable" style="text-align: right;"
28번째 줄: 28번째 줄:
! 순서 !! 이유 || 입출금 액수 !! 잔액
! 순서 !! 이유 || 입출금 액수 !! 잔액
|-
|-
| 0 || 첫거래 감사합니다 || || style="text-align:right;" | 10,000,000  
| 0 || 첫거래 감사합니다 || || 10,000,000  
|-
|-
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
| 1 || 거래처 결제 || -1,000,000 || 9,000,000
45번째 줄: 45번째 줄:
이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 [[해킹]]을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.
이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 [[해킹]]을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.


블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 거래가 일어날 때마다 이전 거래의 내역과 현재 거래의 내역을 붙여서 해시값을 만들어서 함께 기록한다면 어떻게 될까?
블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 위의 거래내역에서 이유, 입출금 액수, 잔액 항목을 그냥 붙여서 문자열로 만든 다음, 가장 간단한 해시값인 MD2 알고리즘을 사용해 보면,
 
{| class="wikitable" style="text-align: right;"
|-
! 순서 !! 이유 || 입출금 액수 !! 잔액 !! 해시값
|-
| 0 || 첫거래 감사합니다 || 0 || 10,000,000 || 4223F822708D7DFB5B51608F07FA4F94
|-
| 1 || 거래처 결제 || -1,000,000 || 9,000,000 || CD63FE3F74308F98D6BD988432DCF215
|-
| 2 || 카드 대금 결제 || -3,000,000 || 6,000,000 || 94F9FA9035493B1AE3171DABA7FA2DEA
|-
| 3 || 갑돌이가 출금 || -8,000,000 || -2,000,000 || AC587A11600FC5882981F9B9700C51F7
|-
| 4 || 공과금 납부 || -500,000 || -2,500,000 || 546585418099F3C24FF5E2FCD4E6B19B
|-
| 5 || 작업 비용 입금 || 2,000,000 || -500,000 || 7046C8325A8C444FACEA99E48746B5D9
|}
 
도대체 저놈의 해시값이 뭐가 뭔지 모르겠지만 중요한 것은 각 해시값이 완전히 다르기 때문에 해시값으로부터 개별 내용을 알아내는 건 불가능한 수준이라는 점만 기억하자. 여기서 사용한 MD2 알고리즘은 간단한 거라서 실제 블록체인은 SHA256과 같이 훨씬 복잡하고 해시값이 긴 알고리즘을 사용한다.


{{각주}}
{{각주}}

2020년 1월 29일 (수) 17:50 기준 최신판

Blockchain.[1]

말 그대로 풀어보면 block + chain, 즉 블록이 사슬 혹은 줄줄이 사탕처럼 이어져 있는 것을 뜻한다. 실제로 그렇다. 계속 쌓여가는 기록이 '블록' 단위로 '체인'으로 이어져 있으며, 암호학을 활용하여 보안성을 구현한다. 그리고 이러한 블록체인을 세상 천지에 분산시킴으로써 보안을 극대화한다. 비트코인을 필두로 한 암호화폐가 이러한 블록체인 기술을 활용한 대표 사례이며, 블록체인 자체가 비트코인에서 나온 개념이다.

거래 기록을 만들고 보관하는 과정에서 가장 중요한 것은 '무결성', 즉 결함이 없어야 한다. 예를 들어, 사업을 하는 갑돌이가 은행에 1천만 원이 있다고 가정하자. 갑돌이는 다음과 같은 거래를 했다.

순서 이유 입출금 액수 잔액
0 첫거래 감사합니다 10,000,000
1 거래처 결제 -1,000,000 9,000,000
2 카드 대금 결제 -3,000,000 6,000,000
3 갑돌이가 출금 -800,000 5,200,000
4 공과금 납부 -500,000 4,700,000
5 작업 비용 입금 2,000,000 6,700,000

그런데, 갑돌이가 출금을 할때 (순서 3) 찾은 금액이 80만 원이 아니라 800만 원이라는 사실이 뒤늦게 밝혀졌다. 그렇다면 거래는 아래와 같았어야 했다.

순서 이유 입출금 액수 잔액
0 첫거래 감사합니다 10,000,000
1 거래처 결제 -1,000,000 9,000,000
2 카드 대금 결제 -3,000,000 6,000,000
3 갑돌이가 출금 -8,000,000 -2,000,000
4 공과금 납부 -500,000 -2,500,000
5 작업 비용 입금 2,000,000 -500,000

순서 1이 잘못되었으므로 이후의 거래들은 어그러진 것이다. 진짜 심각한 문제는 순서 3부터다. 아무런 문제가 없었다면 갑돌이의 통장이 마이너스 통장이 아닌 한은 순서 3의 거래는 잔액 부족으로 거부되었어야 한다. 기록으로는 잔액이 플러스 270만 원이지만 실제로는 마이너스 50만 원이다. 쉽게 말해서 '금융사고'가 난 것이다. 이 사고는 사실 갑돌이가 해킹을 해서 거래 내역을 변조한 것이다. 갑돌이는 800만 원을 출금한 다음 은행 서버에 침입해서 거래 내역 중 순서 1의 출금액을 80만 원으로 고치고 그 이후의 잔액들을 재계산해서 밀어 넣어 놓았다.

이런 문제를 막기 위해서 전통적으로 사용하는 방법은 온갖 보안 장치들을 붙여서 해킹을 막는 것이었다. 그만큼 비용이 많이 들어간다. 정기적으로 거래내역에 문제가 없니지 정산도 하고 감사도 한다. 은행들은 이러한 방법으로 거래 안전성을 보장하면서 수수료를 챙긴다.

블록체인은? 해시값을 기록해서 큰돈 들어가는 보안 시스템 없어도 무결성을 보장한다. 해시값이란 어떤 데이터를 계산을 통해서 원본 데이터로 되돌릴 수 없는 다른 데이터로 만드는 것을 뜻한다. 데이터 길이에 관계 없이 그 데이터의 해시값은 일정한 길이의 값을 가지며 원본 데이터가 조금만 달라도 해시값은 전혀 달라지기 때문에 패턴을 통한 추측도 거의 힘들다. 위의 거래내역에서 이유, 입출금 액수, 잔액 항목을 그냥 붙여서 문자열로 만든 다음, 가장 간단한 해시값인 MD2 알고리즘을 사용해 보면,

순서 이유 입출금 액수 잔액 해시값
0 첫거래 감사합니다 0 10,000,000 4223F822708D7DFB5B51608F07FA4F94
1 거래처 결제 -1,000,000 9,000,000 CD63FE3F74308F98D6BD988432DCF215
2 카드 대금 결제 -3,000,000 6,000,000 94F9FA9035493B1AE3171DABA7FA2DEA
3 갑돌이가 출금 -8,000,000 -2,000,000 AC587A11600FC5882981F9B9700C51F7
4 공과금 납부 -500,000 -2,500,000 546585418099F3C24FF5E2FCD4E6B19B
5 작업 비용 입금 2,000,000 -500,000 7046C8325A8C444FACEA99E48746B5D9

도대체 저놈의 해시값이 뭐가 뭔지 모르겠지만 중요한 것은 각 해시값이 완전히 다르기 때문에 해시값으로부터 개별 내용을 알아내는 건 불가능한 수준이라는 점만 기억하자. 여기서 사용한 MD2 알고리즘은 간단한 거라서 실제 블록체인은 SHA256과 같이 훨씬 복잡하고 해시값이 긴 알고리즘을 사용한다.

각주

  1. 원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.