블록체인 소개 - (2) 블록과 해시함수

|

블록체인에 대하여

앞서 분산 장부에 대한 이야기를 잠깐 했었습니다. 그러면 블록체인은 무엇인지를 간단하게 알아보도록 하겠습니다.

블록체인은 모든 거래 정보를 블록에 기록하고, 그 블록을 체인처럼 연결시켜놓은 분산 장부


블록

블록체인을 이루고 있는 ‘블록(Block)’은 장부의 페이지 한 장 한 장이라고 생각하시면 편합니다. 장부의 페이지들이 모여서 커다란 하나의 책이 만들어지는 것처럼 블록이 모여서 블록체인을 이룹니다. 장부의 페이지에는 매일 발생하는 거래의 기록이 쓰여지듯이 각 블록에도 특정 시간동안 발생한 모든 거래의 기록이 저장됩니다.

블록은 블록 헤더, 거래 정보 및 기타 정보들로 이루어지는데 깊이 들어가면 복잡하니깐 그냥 거래 정보가 저장된다고만 이해해도 충분할 것 같습니다.


해시

블록체인을 이야기하다보면 ‘해시(Hash)’라는 단어가 자주 등장합니다. 해시는 ‘어떤 데이터를 고정된 길이의 데이터로 변환’하는 것을 의미합니다.

예를 들면 다음과 같은 문장이 있다고 합시다.

안녕하세요. snowdeer 입니다.

이걸 32자리 해시코드로 바꾸면 다음과 같이 됩니다.

xi0jDkl34erRhaNj349JKs23gth2rGw2

해시 함수를 거치면 원본 데이터를 알아볼 수 없도록 특수한 문자열로 변환이 됩니다. 해시 함수는 압축이 아니라 단방향 변환이기 때문에 해시값을 이용해서 원본 데이터를 복원할 수 없습니다.

해시 함수는 다음과 같은 성격이 있기 때문에 보안에서 유용하게 쓰입니다.

  • 눈사태 효과 : 원본 데이터에 아주 작은 변화만 있어도 완전히 다른 해시값이 만들어지게 됩니다. 예를 들어 위의 ‘안녕하세요. snowdeer 입니다.’ 문장에 마침표 하나만 더 찍어도 해시값은 ‘n4k3049fjdId843jKiro23jf50l3sL23’와 같이 완전히 다른 값이 나옵니다. 즉, 원본 데이터의 사소한 변화도 쉽게 확인할 수 있습니다.
  • 단방향 변환 : 해시 함수가 양방향 변환이 가능했더라면 암호화에 쓰일 수가 없었을 것입니다. 해시값만 봐도 원래 데이터를 알아낼 수 있었을테니깐요. 단방향 변환이고 복원이 불가능하기 때문에 해시 함수는 전자 서명 등 다양한 암호화에 사용되고 있습니다.

눈사태 효과 덕분에 전자 서명 등에서 해시 값을 많이 활용하고 있습니다. 본문에 약간의 수정만 가해져도 해시 값이 완전히 달라져서 위변조 판별이 쉬워지기 때문입니다.

그리고 단방향 변환만 가능한 점을 이용해서 각종 서버에서 사용자 정보들, 특히 비밀번호 등을 해시값으로 변환해서 저장하는 이유도 이런 성질때문입니다. 행여라도 서버가 해킹을 당해 사용자 정보가 유출이 되더라도 해시값으로 암호화된 값이 유출이 되면 원본 값을 복원할 수 없기 때문에 그나마 피해를 줄일 수 있습니다.

블록체인에서는 이 해시값을 이용해 해당 블록을 서명하며, 또한 이전 블록의 해시값을 다음 블록에 기록함으로써 체인 형태의 연결 리스트(Linked List)를 형성합니다. 그래서 특정 블록을 해킹하려면 그 블록에 연결된 다른 블록들도 수정을 해야 하기 때문에 데이터의 위변조가 아주 어렵습니다.

Image


블록체인

블록체인은 이렇게 거래 내역이 기록된 블록들을 차곡차곡 쌓음으로써 위변조가 어렵도록 만들었고, 또한 블록체인에 참여한 모든 노드들이 동일한 블록을 가짐으로써 더욱 더 안전한 보안성을 갖게 되었습니다.

블록체인의 대표 산출물, 비트코인의 경우 개발된지 약 10년이 지났지만 아직까지 네트워크가 안정적으로 동작하고 있습니다. 2011년 마운틴곡스 사례가 유명한데 이는 비트코인 네트워크가 해킹된 것은 아니고 거래서 내부의 헛점이 발생해서 해커로부터 대량의 비트코인을 잃어버린 사건입니다.