BlockChain/theory

[BlockChain] 블록체인에서 해시함수의 역할

BEJM 2022. 5. 13. 11:18

해시함수

해시함수는 어떠한 크기의 입력값을 받아도 같은 크기의 결과를 출력하는 함수입니다. 입력을 받아 함수를 통과해 출력을 얻는 과정해싱이라 하며, 이러한 특성 때문에 데이터의 무결성보안을 보장하는 데 많이 사용되고 있습니다.

 

블록체인에서의 해시함수

블록체인에서 해시함수는 가장 중요한 기술입니다. 사용자의 익명성을 보장하고, 트랜잭션을 하나로 연결 및 압축하며, 블록을 연결하고 무결성을 보장합니다.

 

익명성 보장

공개키를 해싱한 값을 지갑 주소로 사용하여 거래를 익명화할 수 있습니다. 트랜잭션에는 해시값이 기록이 되어 지갑의 주인이 누군지 알 수 없습니다.

 

무결성 검증
  • 블록의 무결성
    블록체인에서는 이전 블록을 해싱한 값을 이용해 이전 블록을 가리키게 됩니다. 즉 이전 블록의 데이터가 변하게 된다면 해시값이 변하게 되어 블록의 위변조를 확인할 수 있게 됩니다.
  • 트랜잭션의 무결성
    블록에 저장된 모든 트랜잭션들은 머클 트리를 이용해 머클 루트라는 하나의 해시값으로 저장됩니다. 만약 하나의 트랜잭션이라도 문제가 생기면 머클 루트가 변하게 되어 위변조를 확인할 수 있게 됩니다.

 

채굴 노드 선정

비트코인은 PoW방식을 사용해 블록을 생성할 노드를 정합니다. PoW 방식은 특정 조건을 만족하는 해시 값의 입력값인 논스를 찾아야 합니다. 

 

해시함수의 안정성

해시함수의 안정성을 평가할 수 있는 요소로 충돌 저항성, 역상 저항성, 제2 역상 저항성이 있습니다.

 

충돌 저항성

해시 함수의 입력은 무한하지만 출력은 한정되어 있기 때문에 드물게 서로 다른 입력값에서 동일한 출력값을 출력하는 경우가 있습니다. 이 경우를 충돌이라고 합니다. 충돌 저항성은 어떤 해시 함수가 충돌하는 서로 다른 두 입력값을 가지고 있는지 발견되지 않는 상태를 뜻합니다.

 

역상 저항성

역상 저항성은 어떤 해시 함수가 특정한 값을 출력하는 입력값을 찾을 확률이 매우 낮을 경우를 의미합니다. 이는 해시 함수가 단방향 함수의 성질을 가지고 있기 때문에 가능합니다.

 

제2 역상 저항성

제2 역상 저항성은 충돌 저항성과 역상 저항성이 복합적으로 작용한 경우로, 동일한 결과를 내는 입력값을 알고 있는 것입니다. 반대로 동일한 결과를 내는 입력값을 알고 있다면 제2 역상 공격이 가능합니다.