티스토리 뷰
먼저 "해시"에 대해 알아보자. 해시의 의미를 사전적으로 보면 '고기, 야채를 잘게 써는일', '끌어 모음' 등의 의미가 있다. 최근 SNS에서 자주 사용하는 용어인 해시태그가 있는데 이때의 해시의 의미는 '끌어 모음'에 해당하는 것이다. 여기서는 게시물 검색 및 분류를 용이하게 할 때 사용하는 것을 해시태그라고 부른다. 그런데 블록체인 기술에서의 해시는 다른 의미이다. '고기, 야채를 잘게 써는일'에 그 의미가 더욱 가깝다.
해시함수란? : 정방향 계산은 쉽지만 역방향 계산은 어려운 특성을 지닌 함수
블록체인에서의 해시는 정방향으로 계산은 쉬우나 역방향으로 계산하는 것은 매우 어려운 계산식을 말한다.
예를 들어서 간단한 해시함수의 특성에 해당하는 식을 설명해보겠다. 위의 그림을 바탕으로 설명해보겠다. 1이 함수를 거치면 1이 되고, 5가 함수를 거치면 1이 되고, 9가 함수를 거치면 1이 되고, 13이 함수를 거치면 1이 된다고 해보자. 이때 함수에 해당하는 수식을 조금만 생각해보면 알 수 있다. 입력에 해당하는 값을 X라고 하고 함수를 거치고 나온 값을 Y라고 하면, X값에 나누기 4를 했을 때 나머지에 해당하는 Y값이 되는 것이 이 함수이다. 이런 함수는 X의 값만 알면 Y의 값은 금방 계산이 가능하다. 그러면 이제 반대로 생각해보자. Y의 값을 알고 있다면 X의 값이 무엇인지 쉽게 생각할 수 있는지 살펴보면 그렇지 않음을 알 수 있다. 위에서 들었던 예를 통해서 보자. Y의 값은 4가지 경우 전부 1이지만, X에 해당하는 값은 1, 5, 9, 13으로 다양하다. 즉, Y의 값을 보고 X를 바로 계산할 수가 없다. 정방향 계산은 쉽게 할 수 있지만 역방향으로 계산하려고 하면 그 답이 다양하게 존재할 수 있어서 쉽지가 않다. 이와 같은 특성을 지닌 함수가 바로 해시함수이다.
블록체인에서는 해시함수의 특성을 이용하여 블록체인 작업증명 과정에 사용
또 다른 해시함수의 특징을 보면 민감도를 말할 수 있다. 입력값에 해당하는 값이 아주 조금만 바뀌어도 출력 값에 해당하는 값이 아주 달라진다. 입력값이 비슷할 경우에 출력 값이 비슷한 함수인 경우 컴퓨터 계산 능력으로 충분히 빠르게 함수를 유추해낼 수가 있다. 하지만, 해시함수인 경우 유추가 힘들도록 입력에 대해 아주 다른 출력 값을 표출하기 때문에 블록체인에서 보안성을 높이는 방식으로 해시값을 사용하는 것이다. 해시함수는 입력 값이 어떤 길이이던지 해시함수를 거치면 동일한 길이의 출력 값이 나오는 것도 특징이다. 이런 특징 덕분에 많은 데이터를 해시함수를 통해서 적은 데이터의 해시값으로 변경이 가능하다. 따라서 해시값만 비교해도 데이터의 변경이 일어났는지 알 수 있다. 이러한 해시함수에 해당하는 함수들은 이미 전문가들이 표준으로 사용하려고 알고리즘을 고안한 것들이 존재한다. SHA-1이라고 불리는 해시함수가 있고, 이를 더욱 발전시킨 SHA-2라고 해시함수가 있다. SHA-2는 256비트로 블록체인에서 사용하고 있다. 여기까지 해시함수에 대한 대략적인 설명이었다. 그렇다면 이 해시함수를 블록체인에서는 어떻게 사용하고 있는 것인지 알아보겠다. 해시함수는 출력 값을 보고 입력값을 유추하기 어려운 것이라고 말했다. 여기서 어렵다고 말한 것은 완전히 불가능하지는 않기 때문이다. 대입법을 통해서 하나씩 값을 입력하다보면 Y에 해당하는 X를 알아낼 수가 있다. 하지만 현재 컴퓨터 성능으로는 아주 고성능 컴퓨터로 계산해도 수십 년 이상 걸린다. 블록체인에서는 이런 해시함수의 특성을 이용하였다. 출력값의 범위를 제한하여 컴퓨터의 계산 시간을 대폭으로 줄여서 이용하자는 생각을 했고 이를 블록체인의 "작업증명"의 아이디어인 "해시캐시"라고 부른다. 비트코인은 SHA-2를 사용하고 있는데 이를 대입법을 통해서 빠른 시간 내에 입력값 X를 찾아내는 것은 아주 어렵기 때문에 출력 값의 범위를 제한하여 줄였다. 앞의 몇 번째 비트까지는 0이고 나머지 비트는 어떤 값이 나와도 정답이라고 보는 것이다. 이럴 경우 256비트에 해당하는 정확한 값을 찾아낼 때보다 훨씬 빠르게 대입법을 통해서 입력값 X를 찾아낼 수 있다. 지정된 비트까지만 확인되면 연산이 제대로 이루어졌다고 할 수 있기 때문이다. 이런 방법을 이용하여 블록체인에서 작업증명이 이루어진다. 구체적인 작업증명 과정은 다음 글에서 설명하겠다. 이번 글에서는 해시와 해시함수에 대한 설명을 했다. 다음 글에서는 이러한 해시캐시의 작업증명과정이 통신과정에서 보낸 쪽과 받는 쪽에서 어떻게 이루어지는 살펴보고, 블록체인에서는 이를 어떻게 이용하고 있는지 자세히 살펴보겠다.
'과학 트렌트' 카테고리의 다른 글
블록체인 기술 알아보기 (블록 연결 과정) (0) | 2018.01.26 |
---|---|
블록체인 기술 알아보기 (작업증명) (0) | 2018.01.24 |
블록체인? 비트코인? 무엇인가 (0) | 2018.01.13 |
인공지능 트렌트 (0) | 2018.01.10 |
LG전자 자율 주행 기술 시연 성공 (0) | 2017.12.10 |