페이지상단으로이동

[최승호의 머니클립] 비트코인의 핵심기술 해시 함수(암호화)

    • 편집국 기자
    • |
    • 입력 2018-09-20 09:32
▲최승호 메드렉스 병원장. (사진제공=메드렉스 병원)

[최승호의 머니클립] 지난주 ‘블록체인을 알고 싶으면 비트코인을 먼저 알아야 한다’에서 언급한 암호화 기술에 관해 서술해보자 한다.

예컨대 개인정보 문제로 네트워크상에서 행해지는 모든 거래를 전파하고 공유하는 비트코인 네트워크를 상상해보면 A가 B에게 1코인을 전송하면 A의 잔액은 1코인이 줄고 B의 잔액은 1코인이 늘어난다.

이렇듯 일반적인 거래를 그대로 공유한다면 누가 몇 코인을 소유하고 누구와 거래했는지 비밀이 사라지면서 프라이버시 문제와 보안 문제를 동시에 일으킬 수 있다.

거래 절차와 방식이 투명한 것은 좋다. 그러나 대부분은 내 잔액이 얼마인지를 모두에게 알리고 싶지는 않을 것이다. 비트코인은 암호화 기술로 이 문제를 해결했다.

거래 명세를 암호화하는 데는 해시 함수가 사용된다. 해시함수는 비트코인뿐 아니라 정보 보안 분야에서 널리 쓰인다. 데이터를 정해진 길이의 무작위 문자열로 치환하는 함수다. 같은 데이터를 입력하면 해시 함수의 결괏값이 항상 같게 나타난다. 입력하는 데이터에 미세한 변화만 줘도 결괏값은 완전히 다르게 바뀐다. 결괏값에서 규칙성을 발견할 수 없어 입력 데이터를 판단할 수 없게 된다.

또 우연히 다른 데이터를 입력했을 때 같은 결괏값이 나올 때도 존재하지만 확률은 극히 낮다. 이런 특성으로 입력 데이터의 추론은 더욱 불가능하다.

비트코인에서 사용되는 ‘SHA-256’이라는 해시 함수는 1993년 미국 국가안보국(NSA)에서 처음으로 설계했다. 이는 SHA-0, SHA-1, SHA-2로 단계별 변형돼 발전했다. ‘SHA-256’은 입력하는 데이터의 내용과 무관하게 항상 64자리의 16진법 문자열을 산출한다.

특정 문자열이 나오게 하는 입력 데이터를 찾으려면 256비트로 나올 수 있는 모든 경우의 수인 2256개의 데이터를 하나씩 확인해야 한다. 2256을 다시 10진법으로 표시하면 1077 정도 해시값으로 입력 데이터를 찾는다는 것은 불가능에 가깝다.

※ 외부 필자의 칼럼은 본지의 편집 방향과 다를 수 있습니다.

편집국 기자

닫기