블록체인
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과 같이 훨씬 복잡하고 해시값이 긴 알고리즘을 사용한다.
각주
- ↑ 원래는 block chain이었는데 아예 그냥 blockchain이라는 단어가 되어 버렸다.