본문 바로가기

프로그래밍/Block chain

블록체인의 핵심 기술, 해싱과 해시 함수

블록체인은 암호화 기술을 이용해서 높은 보안성을 가진다. 블록체인에 적용되는 암호화 기술은 해시함수, 전자서명, 공개키 암호화 알고리즘 등이 있다. 

 

블록체인과 보안

블록체인은 아래와 같은 보안성을 갖고 있다.

  • 데이터 무결성 : 기존 데이터베이스는 관리자가 CRUD를 할 수 있기 때문에 관리 권한이 해커에게 넘어가게 되면 데이터베이스가 변경될 수 있다. 하지만 블록체인은 분산 원장을 갖고 있기 때문에 각각에 노드들이 블록체인 사본을 갖고 있다. 하여 일부 노드의 정보가 변경되더라도 전체 블록체인 네트워크의 무결성은 보장된다. 
  • 거래 투명성 : 퍼블릭 블록체인의 경우 블록체인 네트워크에서 트랜잭션 내용을 볼 수 있다. 프라이빗 블록체인의 경우는 허가된 사용자는 트랜잭션 내용을 볼 수 있다.
  • 감시가능성 : 블록체인은 CRUD를 할 수 없고 오직 추가만 가능하다. 체인에 올라간 트랜잭션 내용은 수정할 수 없다. 새로 생성되는 블록은 이전 헤더의 해시 값이 포함되어 무결성 검증에 사용되는데 트랜잭션의 값이 변경되면 해시 값이 변경되므로 위변조 시도를 바로 알 수 있다.

 

해시란?

Hashing은 다양한 크기의 입력값을 고정된 크기의 출력값으로 생성해 내는 과정이다.

 

해시함수란?

다양한 크기의 입력값을 사용해 고정된 크기의 출력값을 생성하는 함수이다. 가장 유명한 함수로는 SHA-256함수가 있는데 이 알고리즘은 입력값이 뭐가 되었든 256비트 길이의 값을 출력한다. 아래에서 여러가지 해시 함수들을 볼 수 있다.

https://emn178.github.io/online-tools/sha256.html

 

SHA256 Online

 

emn178.github.io

 

그래서 블록체인에서는 해싱이 어떻게 쓰인다는 거지?

  • 해시를 이용해서 익명성을 보장한다. 기존 금융거래라면 이름, 주민번호 등으로 계좌의 주인을 확인한다. 하지만 블록체인은 공개키를 해싱한 값을 지갑의 주소로 사용하기 때문에 익명성을 보장할 수 있다. 트랜잭션 기록으로 송금된 지갑 주소, 잔액은 확인할 수 있지만 지갑의 주인이 누구인지는 알 수 없다.
  • 무결성 검증 : 해시 함수를 이용하여 무결성을 검증 할 수 있다. 블록체인의 한 블록에는 이전 블록의 값을 저장하고 있는데 이전 블록의 값을 그대로 저장하는 것이 아니라 해싱한 값을 이용해 저장한다. 만약 해싱 값이 달라질 경우 이전 블록, 현재 블록에 위변조가 일어난 것이다. 또한 블록에 저장된 트랜잭션을 하나의 해시값으로 저장한다. 글자 하나라도 바뀌게 되면 해시 값이 완전히 바뀌기 때문에 무결성을 검증 할 수 있다.
  • 채굴 노드 : 비트코인에서는 Pow(Proof of work) 작업 증명을 사용해 채굴 권한이 있는 노드를 선별한다. Pow 방식은 어떠한 조건에 만족하는 해시값을 찾는 노드에게 채굴할 권한을 준다. 노드는 비트코인을 얻는다.

그럼 해시 함수는 완벽한가?

해시 함수를 복호화하기는 쉽지 않다. 하지만 해시 함수도 단점이 있다. 만약 hello, iphone 라는 값을 넣었는데 동일한 해시값을 출력하는 경우도 있다. 이 오류를 충돌이라고 한다.  그럼 해시 함수가 얼마나 안전한지 평가하는 요소가 있을까? 3가지 요소가 있다. 바로 충돌 저항성, 역상 저항성, 제2역상 저항성이다. 충돌 저항성은 위에서 설명했듯이 충돌을 얼마나 최대한 적게 발생시키냐가 주요 관건이다. 만약 모든 문자들을 2자리 비트값으로 표현하는 함수는 충돌 저항성이 매우 낮겠지만 모든 문자들을 256자리 비트로 표현하는 함수는 충돌 저항성이 높다고 볼 수 있다. 역상 저항성이 높다는 것은 해시 함수의 결과값을 보고 입력값을 찾을 확률이 낮을 것을 의미한다. 제2 역상 저항성이 높다는 것은 충돌저항성+역상저항성이 합쳐진 것으로 hello 라는 입력값의 해시값과 동일한 결과값을 내는 iphone 을 누군가가 알지 못한다는 것을 의미한다. 만약 iphone 이 hello와 같다는 사실을 밝혀낸 해커는 이를 이용해서 hello라는 비밀번호를 쓰는 사람들의 정보를 가져갈 수 있다.