해시 함수는 무엇인가?

고급1분 소요2021-12-14

해시 함수

해시 함수(Hash function)는 임의의 길이를 갖는 데이터를 고정된 길이의 데이터로 변환시켜주는 함수입니다. 블록체인에서는 해시 함수가 하는 역할은 ‘암호화'로, 해시값 비교를 통해서 위변조 여부를 판별하고, 무결성을 검증하는 데 사용됩니다. 비트코인의 블록체인에 사용된 해시 함수는 SHA-256(Secure Hash Algorithm-256)입니다.



SHA-256

SHA-256은 2256 만큼의 경우의 수를 만들 수 있어 붙여진 이름입니다. 다음과 같이 입력된 값을 SHA-256 알고리즘을 통해 암호화하면 원본 데이터를 알아볼 수 없도록 특수한 문자열로 변환됩니다.

 


SHA-256의 특징

SHA-256의 가장 큰 특징은 단방향 변환 알고리즘이라는 것입니다. 입력값을 압축하는 것이 아니라, 입력값을 알 수 없도록 난수의 문자열로 변환합니다. 따라서 양방향 변환 알고리즘과는 다르게 출력된 값을 토대로 원본 데이터를 복원할 수 없는 특징을 가지고 있습니다.

* 난수(random number) : 특정한 순서나 규칙을 가지지 않는 수



두 번째 특징은 입력값 중에 한 글자만 바뀌거나 혹은 마침표(.) 하나만 들어가도 결과값이 완전히 달라지는 임의성을 가지고 있다는 것입니다. 이런 특징 때문에 입력값 혹은 원본 데이터의 사소한 변화도 한 번에 확인할 수 있어 위변조 판별이 쉽습니다. 이같이 입력값에 아주 미세한 변화를 주었을 경우 출력에서 큰 변화가 일어나는 것을 눈사태 효과(avalanche effect)라고 합니다.

 

세 번째 특징은 결과값이 정해진 길이로 나온다는 것입니다. SHA-256은 입력값의 길이와 상관없이 결과값이 항상 256 bit로 출력됩니다.

1글자를 입력하거나 100자 이상을 입력하더라도 똑같이 256 bit의 결과값을 내놓습니다. 그렇다 보니 입력값이 다른데 같은 출력값이 나오는 해시 충돌이 발생할 가능성이 아주 낮지만 있습니다. 해시 충돌을 방지하기 위해 앞의 값을 연결하는 체이닝, 2개의 해시 함수를 준비하는 이중 해시 등의 다양한 방법 등을 설계하여 사용하고 있습니다.

 


블록체인에서 해시 함수를 사용하는 이유

블록체인에서 해시 함수를 사용하는 이유는 다음과 같습니다.


1) 해시 함수로 암호화한 값을 이용하여 입력값을 파악할 수 없다.

2) 출력(결과)값으로 입력값을 찾을 수 있는 복호화 공식이 없다.

3) 결과값이 중복될 가능성이 현저히 낮다.

 

그 외에 디지털 자산의 전자 지갑 주소에도 해시 함수가 사용됩니다. 개인키에 대칭되는 공개키를 해시화시켜 지갑 주소로 활용하여 익명의 거래가 가능하도록 합니다.