지피지기(知彼知己)라는 말 처럼 나를 알고 적을 알아야 백 번 싸워도 위태롭지 않다는 격언처럼
해킹을 하려면 해킹하려는 대상이 가진 취약점을 분석하는 것이 인지상정이죠.
이 글을 읽는 독자께서도 아시다시피블록체인은 과거 블록 내용을 조작하기 어렵습니다. (해킹이 어렵다는 뜻)
이게 해킹에 있어서 큰 걸림돌입니다.
여기서 끝나지 말고 이론적으로 접근해봅시다.
1. 설명에 앞서서 용어를 하나 정리합니다!
*트랜잭션 = 업무, 쉽게 생각해서 노동자가 일하는 모습을 떠올려보자
*블록을 추가 = 채굴
2. 우선 블록체인의 특징을 하나씩 학습해보자!
- 전자서명 : 블록 내 각 트랜잭션엔 전자서명이 하나씩 부여됨.
- 채굴 : 암호학적 해시를 이용한 어려운 문제의 해를 계산하여 블록체인에 새로운 블록을 추가할 수 있고 일정량의 암호화폐로 보상받을 수도 있다.
- POW : 블록체인은 작업증명(Proof of work) 방식의 합의 알고리즘을 사용한다.POW가 뭐냐면 한마디로 "야 이거 진짜 맞아?" 이다.어떤 트랜잭션이 발생했을 경우 이 트랜잭션이 가짜인지 진짜인지 검증하기 위해서 검증하려고 쓰는 알고리즘이다. 말하고자 하는 핵심은이게 블록체인 입장에서 트랜잭션 위조를 방지하는 전략이라는 것입니다.
이제 해킹에 대한 설명에 앞서서 우리의 목표를 하나 정해보자.
지금 블록체인을 해킹하려는 이유는 "거래 내역"을 위/변조하기 위함이라고 가정해보자.
블록체인은 블록들이 연결되어 있어서 블록체인이다.
블록체인의 블록은 트랜잭션의 집합과 헤더(해시값 + 난수)로 이뤄져 있습니다.
그리고 그 블록들은 모두 앞 블록의 내용을 가지고 있습니다.
따라서 거래 내역을 위/변조하려면 모든 블록의 정보를 연쇄적으로 다 바꿔야 합니다.
이론적으로 블록체인을 해킹하는 방법은 지금 위에서 도출되었습니다.
모든 블록의 정보를 연쇄적으로 다 바꾼다는 것입니다.
자 이제, 공격에 대해서 문제점은 없는지 검토해보자. 블록체인의 특징 중 하나인, 일정 시간마다 하나씩 블록이 생성된다는 문제점이 도출되었습니다. 즉 우리는"모든 블록의 정보를 연쇄적으로 다 바꾸되 일정 시간마다 하나씩 생성되는 블록보다 더 빠르게 위/변조한 정보를 전파시켜야 한다"라는 구체적인 업무가 정립되었습니다.