블록체인 발전에는 다양한 기술적 혁신이 있었습니다. 그중 중요한 기술 중 하나가 바로 해싱(hashing)입니다. 해싱은 데이터를 고정된 길이의 암호화된 문자열로 전환하는 과정을 말하는데요. 그렇다면 해싱은 구체적으로 블록체인에 어떠한 기여를 했을까요?
또 이러한 해싱이 아닌 스텔라 합의 프로토콜(SCP)로 작동하는 ‘파이 네트워크(Pi Network)’도 있습니다. 두 기술과의 차이점을 통해, 해싱은 무엇인지 구체적으로 살펴보겠습니다.
암호화란 무엇인가요?
암호화(cryptography)라는 단어는 숨겨져 있다는 뜻의 그리스어 크립토스(kryptos)에서 유래했습니다. 적대적인 공격으로부터 안전한 통신을 하기 위한 방법을 연구하는 학문입니다. 이는 본질적으로 메시지를 인코딩하는 행위입니다.
고대에서도 암호화가 있었습니다. 이집트 상형문자는 암호화의 좋은 예입니다. 고대 이집트에서는 비전문가들이 다양한 미스터리를 알아내는 것을 막기 위해 무질서한 상형문자로 된 최초의 암호화 메시지를 개발했습니다. 이 암호화 방법은 단순 치환이라는 기술에 의존하는 단순한 방식이었습니다.
이밖에 로마 황제 줄리어스 시저는 자신의 전령들을 의심하여 장군들에게 암호화된 메시지를 보냈습니다. 나중에 그의 이름을 딴, 줄리어스 시저 즉 시저 암호화(Caesar Cipher)가 등장하기도 했습니다.
해싱이란 무엇인가요?
해싱(Hashing)은 암호화의 한 형태입니다. 해시 함수는 임의의 크기의 데이터를 고정된 크기의 값에 매핑할 수 있는 함수를 말합니다. 해시 함수가 반환하는 값을 해시값, 해시 코드, 다이제스트 또는 간단히 해시라고 합니다.
예를 들어 “Hello World”라는 일반 텍스트를 예로 들어보겠습니다. 이더리움의 해시 함수인 Keccak-256 해시 함수를 사용하면 일반 텍스트를 “592fa743889fc7f92ac2a37bb1f5ba1daf2a5c84741ca0e0061d243a2e6707ba” 해시로 변환할 수 있습니다.
사람들은 일상 생활에서 자신도 모르는 사이 해시를 접랍니다. 가령, 비밀번호를 사용한다면 그건 해시를 사용한다는 것과 같은 의미입니다. 사용자가 애플리케이션에서 계정을 만들 때, 공급자는 비밀번호를 저장하지 않고 비밀번호의 해시를 저장할 가능성이 높습니다. 계정에 로그인하면 앱은 사용자가 입력한 비밀번호를 해시하고 이 해시를 파일에 저장된 해시와 비교합니다.
암호화 해시 함수 속성
해시 함수가 블록체인에서 정상적으로 작동하려면 특정 요구 사항을 충족해야 합니다. 해시 함수는 다음과 같은 속성을 가져야 합니다.
계산 효율
해싱 알고리즘은 입력 데이터를 빠르게 처리하여 해시 값을 생성해야 합니다. 즉, 주어진 데이터에 대해 해시 값을 계산하는 데 필요한 시간이 적어야 하며, 이는 블록체인과 같은 시스템에서 실시간으로 작동할 수 있도록 도와줍니다. 대부분의 컴퓨터는 해시 함수를 몇 초 안에 처리할 수 있습니다.
결정론적 함수
동일한 입력 데이터는 항상 동일한 해시 값을 생성합니다. 이는 데이터의 무결성을 보장하는 중요한 속성으로, 특정 데이터가 변경되면 해시 값도 변경되므로 데이터를 쉽게 비교할 수 있습니다. 예를 들어, Keccak-256 해시 함수를 사용하여 “Hello World”라는 메시지를 “hello World”로 변경합니다. 그러면 “079813c47d3d4ab9abf0c0747f5b5cdf90e0e264ae09ea44fb2509c559b72ac1” 값이 반환됩니다.
또, 주어진 입력 값에 대해 매번 정확한 해시 값을 생성해야 합니다. 해싱은 메시지를 안전하게 전송하기 위한 방법이라는 점을 기억해야 합니다. 그렇지 않은 경우, 수신자 모르게 입력값을 해시로 변경할 수 있습니다.
사전 이미지 저항
특정 해시 값에 대해 해당 해시 값을 생성하는 입력 데이터를 찾는 것이 매우 어렵습니다. 즉, 해시 값을 알고 있을 때 그 해시 값을 만들기 위한 원래 입력을 유추하는 것이 불가능하거나 매우 어렵습니다. 이때, 사전 이미지 공격(pre-image attack)은 해시의 출력이 알려져 있고 어떤 입력이었는지 찾을 때 발생합니다. 암호화 해시 함수는 사전 이미지 공격(가능한 입력의 집합)에 저항해야 합니다.
예제 “Hello World”에서 사전 이미지(즉, 일반 텍스트)를 비밀번호로 사용하고 싶지 않을 것입니다. “Hello World”라는 일반 텍스트는 매우 간단하고 쉽게 확인할 수 있기 때문입니다. SHA-256과 같은 보안 해시 함수에 대한 알려진 입력 기록을 보관하는 데이터베이스도 있습니다.
두 번째 사전 이미지 저항
이미 주어진 입력 데이터와 그에 대한 해시 값이 있을 때, 다른 입력 데이터를 찾아서 같은 해시 값을 생성하는 것이 어렵습니다. 이는 한 해시 값을 공유하는 두 개의 서로 다른 입력을 찾는 것을 방지합니다.
충돌 저항
동일한 출력을 생성하는 두 개의 입력을 찾는 것은 매우 어렵거나 불가능해야 합니다. 입력 값은 길이와 문자에 상관없이 어떤 것이든 될 수 있으므로 이 값의 가능성은 무한합니다. 출력은 길이가 정해져 있고, 따라서 그 가능성도 정해져 있습니다.
따라서 두 개 이상의 입력 값이 동일한 출력을 생성할 수 있습니다. 충돌 저항이 충분히 강하지 않은 경우 ‘생일 공격’을 통해 충돌을 발견할 수 있습니다. 여기서, 충돌 저항이 두 번째 사전 이미지 저항과 유사하다는 것을 눈치챘을 것입니다. 다만, 이 둘은 별개입니다.
두 번째 사전 이미지 저항을 사용하면 입력값이 알려지고 공격자는 동일한 값으로 해시된 두 번째 입력값을 찾을 수 있습니다. 충돌 저항을 사용하면 두 입력이 모두 알려지지 않고 공격자는 동일한 값으로 해시되는 두 입력을 모두 찾을 수 있습니다. 충돌 저항은 사전 이미지 저항을 의미합니다.
생일 공격
이 공격은 확률 이론의 수학을 악용하는 공격입니다. 생일 예시를 들어본 적이 있을 것입니다. 27명이 있는 방에서 가능성이 희박해 보이지만 실제로 두 사람이 같은 생일을 맞을 확률은 50%입니다.
왜 그럴까요? 한 사람이 ‘맞는’ 생일을 맞을 확률은 1/365이기 때문입니다. 두 번째 사람이 같은 생일을 맞이할 확률도 1/365입니다. 두 사람의 생일이 같을 확률을 구하려면 두 사람의 확률을 곱해야 합니다. 따라서 확장하면, 생일이 서로 다른 사람이 365명이고 따라서 365개의 가능성이 있다면, 일치하는 사람이 50%의 확률을 가지려면 무작위로 선택된 23명인 365의 제곱근이 필요합니다.
이 이론을 해싱에 적용해보면 기술적으로 충돌이 없는 해시 함수는 없지만, 충돌이 발생하기까지 오랜 시간이 걸린다는 것을 알 수 있습니다.
블록체인에서 해싱은 어떻게 사용되나요?
비트코인은 블록체인에서 작동하며 해싱 알고리즘 ‘SHA-256′(보안 해싱 알고리즘 256)을 사용합니다. 비트코인의 경우 해시 함수는 세 가지 주요 기능에 사용됩니다.
채굴
채굴자들은 수학적 함수로 된 퍼즐을 풀기 위해 경쟁합니다. 각 채굴자는 이미 알고 있는 블록에서 정보를 가져와 해시하고 이를 통해 블록을 생성합니다. 알고리즘의 결과가 목표 숫자보다 작으면 유효한 것으로 간주되어, 나머지 네트워크에서 받아들일 수 있습니다. 그러면 다음 블록을 생성할 수 있는 권한을 갖게 됩니다.
블록 연결
보안 강화를 위해 블록체인의 각 블록은 이전 블록에 연결됩니다. 이는 해시 포인터(다른 변수의 주소를 저장하는 변수)를 통해 이루어집니다. 기본적으로 각 블록에는 블록체인의 이전 블록의 해시 결과가 포함됩니다. 이렇게 하면 블록체인의 이력을 쉽게 추적할 수 있고, 악성 블록이 추가될 가능성을 없앨 수 있습니다.
키 생성하기
암호화폐를 보내거나 받으려면 개인 키와 공개 키가 필요합니다. 이 두 키는 해시 함수를 통해 서로 연결됩니다. 이는 어느 누구도 공개 키를 기반으로 개인 키를 알아낼 수 없도록 하기 위한 필수 요소입니다.
채굴에서 해싱 파워의 역할
채굴에서 해싱 파워(Hashing Power)는 초당 수행할 수 있는 해시 연산의 횟수를 뜻하며, 이를 통해 채굴자가 새로운 블록을 생성할 확률이 결정됩니다. 해시 연산을 많이 수행할수록 블록 생성에 성공할 확률이 높아지기 때문에, 해싱 파워는 채굴 성능의 중요한 지표로 사용됩니다. 일반적으로 해싱 파워는 H/s (Hash per second), kH/s (킬로 해시), MH/s (메가 해시) 등으로 측정됩니다.
블록체인 네트워크에서 채굴자는 특정 조건을 만족하는 해시 값을 찾기 위해 복잡한 연산을 반복적으로 수행해야 합니다. 이러한 작업을 통해 새로운 블록을 생성하고, 그에 따른 보상을 받습니다. 이 과정에서 해싱 파워가 높을수록 목표 해시를 더 빨리 찾아낼 가능성이 높아집니다. 특히, 채굴 기업에서는 해싱 파워를 상품으로 사용자에게 임대해 주고는 합니다. 그렇다면 해싱 파워 임대는 무슨 의미일까요?
해싱 파워 임대
채굴기업이 해싱 파워를 제3자에게 임대하는 서비스는 ‘클라우드 마이닝‘ 또는 ‘해시 임대‘라고 부릅니다. 불립니다. 사용자는 채굴 장비를 직접 구매하거나 운영할 필요 없이, 채굴업체로부터 일정한 해싱 파워를 빌려주는 계약을 맺고 채굴 보상의 일부를 받게 됩니다. 이러한 임대 행위에는 다음과 같은 특징이 있습니다.
- 접근성: 사용자들은 고가의 채굴 장비를 구매하지 않고도 채굴에 참여할 수 있습니다.
- 유지 보수 불필요: 장비 유지 및 관리가 모두 업체에 의해 이루어지므로 사용자는 관련 비용이나 기술적 문제에 신경 쓰지 않아도 됩니다.
- 수익 배분: 계약된 해싱 파워에 따라 채굴 보상이 배분되며, 수익의 일정 부분을 임대 수수료로 지급합니다.
해싱 파워 임대는 일반 사용자도 손쉽게 채굴에 참여할 수 있게 하지만, 채굴의 난이도, 암호화폐 가격, 업체의 신뢰도 등 여러 요소가 수익성에 영향을 줄 수 있으므로 신중한 선택이 필요합니다.
작업증명의 해싱 vs 스텔라 합의의 파이 네트워크
해싱은 블록체인 전반에서 데이터 무결성을 보장하고, 거래를 검증하며, 보안을 강화하는 데 광범위하게 사용됩니다. 보통 작업 증명(PoW)와 지분 증명(PoS), 위임 지분 증명(DPoS), 혼합형 합의 알고리즘 등에 사용됩니다. 이렇듯, 해싱은 블록체인 전체에 걸쳐 필수적인 기술입니다.
하지만, 최근 주목 받고 있는 파이 네트워크(Pi Network)와의 채굴 방식과는 차이가 매우 큽니다. 파이 네트워크는 비트코인과 같은 작업 증명(PoW) 방식이 아닌 스텔라 합의 프로토콜(SCP)을 사용하여 모바일로도 채굴을 가능하게 했습니다. 전통적인 작업 증명 방식에서는 채굴을 하기 위해 강력한 해싱 파워가 필요합니다. 하지만 파이 네트워크는 모바일 기반으로 단순히 네트워크 참여와 기여를 기반으로 채굴을 하기 때문에 해싱 파워라는 개념이 없습니다. 더 에너지 효율적인 방식으로 암호화폐를 채굴할 수 있는 것이죠.
작업 증명 알고리즘에서는 해싱이 보안과 무결성을 유지하는 핵심 요소입니다. 반면, 파이 네트워크는 신뢰할 수 있는 노드들이 검증하는 스텔라 합의 프로토콜을 사용해 에너지 소모 없이 보안을 유지합니다. 이는 파이 네트워크가 저전력 환경에서 작동할 수 있는 이유입니다. 즉 친환경적인 채굴 방식인 것이죠.
또, 비트코인은 채굴을 위해 대규모 장비를 투자해야 합니다. 하지만, 파이 네트워크는 스마트폰 사용자라면 채굴을 할 수 있도록 설계했기 때문에 해싱 파워가 필요하지 않습니다. 생태계를 더욱 분산화할 수 있는 잠재력이 있는 것이죠.
자주 찾는 질문/답
해싱은 블록을 연결하고, 공개와 개인 키 쌍을 생성하며, 작업 증명 블록체인에서 복잡한 알고리즘을 푸는 데 사용됩니다.
두 번째 사전 이미지 저항을 사용하면 입력값이 알려지고 공격자는 동일한 값으로 해시된 두 번째 입력값을 찾을 수 있습니다. 충돌 저항을 사용하면 두 입력값이 모두 알려지지 않으며 공격자는 동일한 값으로 해시되는 두 입력값을 모두 찾을 수 있습니다. 충돌 저항은 사전 이미지 저항을 의미합니다.
해시 함수는 임의의 크기의 데이터를 고정된 크기의 값에 매핑할 수 있는 모든 함수입니다. 해시 함수가 반환하는 값을 해시 값, 해시 코드, 다이제스트 또는 간단히 해시라고 합니다.
많은 사람들이 계정에 로그인할 때 무의식적으로 해시를 사용합니다. 애플리케이션에서 계정을 만들 때 서비스 제공업체는 비밀번호를 저장하지 않고 비밀번호의 해시를 저장하는 경우가 많습니다. 계정에 로그인하면 앱은 사용자가 입력한 비밀번호를 해시하고 이 해시를 파일에 저장된 해시와 비교합니다.
비인크립토 웹사이트에 포함된 정보는 선의와 정보 제공의 목적을 위해 게시됩니다. 웹사이트 내 정보를 이용함에 따라 발생하는 책임은 전적으로 이용자에게 있습니다.
비인크립토는 투자가이드를 통해 독자에게 유익한 양질의 교육 콘텐츠를 제공하기 위해, 콘텐츠를 검증하고 연구하는 데 많은 시간을 할애하고 있습니다.
비인크립토의 파트너사는 글이 게시되는 대가로 수수료를 제공할 수 있으나, 이는 공정하고 정직하고 유용한 콘텐츠 제작 프로세스에 어떠한 영향도 미치지 않습니다.