Unborn 8.0 Yellow Pointer
본문 바로가기
프로그래밍/블록체인

[블록체인] 블록체인 A-Z : 블록체인의 이해 1 - 블록체인, 블록, 해시 알고리즘, 불변 원장, 분산 P2P 네트워크

by 에삐니 2022. 7. 14.
728x90

블록체인

블록체인은 누구라도 임의로 수정할 수 없고 누구나 변경의 결과를 열람할 수 있는 분산 컴퓨팅 기술 기반의 원장 관리 기술입니다. 이는 근본적으로 분산 데이터 저장기술의 한 형태로, 지속적으로 변경되는 데이터를 모든 참여 노드에 기록한 변경 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가능하도록 고안되었습니다. 즉, 블록(지속적으로 증가하는 데이터)이라고 불리는 데이터를 암호학을 통해 보호하고 연결하는 기술입니다. 

 

블록

블록은 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음입니다. 하나의 블록을 다음 블록과 이어 주기 위해 해시값을 통해 블록들을 암호화 링크로 연결한 체인 구조를 만들 수 있습니다. 즉, 블록은 데이터와 이전 해시, 해시 값을 가지고 있으며 데이터와 이전 해시를 이용해 데이터를 표현하는 숫자를 찾습니다. 첫 번째 블록은 제네시스 블록이라고 불리며 다른 블록은 첫 번째 블록이 될 수 없습니다. 제네시스 블록은 이전 해시가 없는 유일한 블록입니다.

 

SHA256 해시 알고리즘 이해

해시 알고리즘은 쉽게 지문을 디지털 문서에 적용한 것이라고 볼 수 있습니다. SHA는 안전한 해시 알고리즘의 약자이며 256은 메모리를 차지하는 비트의 수입니다. 언제나 64자이며 16진법으로 숫자와 문자가 올 수 있습니다. 같은  데이터를 입력하면 같은 해시값을 얻을 수 있습니다.

보안과 안전성을 위한 요건

  • 단방향이어야 합니다. 즉, 해시를 바탕으로 문서를 복원하거나 볼 수 없습니다.
  • 결정적이어야 합니다. 해싱 알고리즘을 적용하면 똑같은 해시 값을 얻어야 합니다.
  • 연산이 빨라야 합니다. 
  • 쇄도 효과가 있어야 합니다. 즉, 미세한 변화를 줄 경우 값에 상당한 변화가 일어나는 성질로 블록체인의 응용에 있어 중요한 점입니다.
  • 충돌 저항성이 있어야입니다. 출력 값과 같은 출력 값을 갖는 또 다른 갖게 될 경우 해시 함수의 출력 값 범위 내에서 무시하는 기능입니다. 즉, 충돌에 대해 견딜 수 있어야 합니다.

 

불변 원장(Immutable Ledger)

불변 원장은 변경할 수 없는 기록입니다. 데이터가 변경되지 않았다는 증거가 필요하며 디지털 데이터를 신뢰할 수 있는 유일한 방법입니다. 예를 들어 집을 사고 원장을 적게 됩니다. 이때 원장은 수기로 작성하며 불에 타거나 잃어버리지 않도록 조심해야 합니다. 그러나 만약 건물이 불터 없어지거나 누군가 원장을 훔쳐가게 될 수도 있습니다. 혹은 부분 수정되어 항목이 달라졌을 경우 집의 소유권을 잃을 수도 있습니다. 

이때 블록체인 기술이 등장하며 모든 정보를 블록체인에 저장했다고 가정해봅니다. 집을 사고팔 때 새로운 블록이 추가되는 것입니다. 누군가 해킹을 통해 블록을 변경해서 정보를 수정하려고 했을 경우, 해시가 변경될 것입니다. 암호화 링크가 더 이상 작동하지 않게 되고 그렇게 되면 다음 블록들도 변경이 일어납니다. 즉, 변경이 일어난 블록 뒤로 이어지는 모든 블록은 더 이상 유효하지 않게 되는 것입니다. 따라서 한번 블록체인에 데이터가 기록되면 변경이 어렵습니다.

실제로 아이티에서는 허리케인으로 인해 집과 부동산뿐만 아니라 정부 기관도 사라져 원장이 손실되었기 때문에 부동산이 누구의 소유인지 등에 대한 정보를 알 수 없습니다. 이런 문제를 블록체인이라는 새로운 기술로 해결할 수 있는 것입니다.

 

분산 P2P 네트워크

분산 P2P 네트워크는 동일한 네트워크에 참여한 모든 노드가 무결성을 확보하고 유지합니다. 예를 들어, 블록체인이 악의적으로 변경되지 않았고 시스템 오류가 발생했다면 실제로 블록의 연결이 끊겨 문제가 발생한 다면 어떻게 원본 데이터를 확인할 수 있을까요?

분산 P2P 네트워크에서는 네트워크에서 계속 데이터를 확인하며 끊임없이 동기화됩니다. 즉, 동기화를 통해 피어가 일치하는지 확인하는 것입니다. 이때 피어가 일치하지 않는다면 문제가 생긴 것으로 인식하게 됩니다. 문제가 확인될 경우 해당 컴퓨터에 있는 블록체인에 신호를 보내고 해당(해킹 혹은 수정된) 블록체인은 합의 알고리즘을 통해 자신이 해킹당한 것을 알게 되고 기존 값으로 복구할 것입니다.

해킹에 성공하려면 전체 피어를 공격하지 않고 체인을 성공적으로 교체하기 위해 50% 이상의 컴퓨터를 동시에 공격해야 합니다. 하지만 해킹이 끝나기 전에 위와 같이 합의 알고리즘을 통해 블록이 교체되지 않기 위해서는 몇 분 또는 1분 안에 성공을 해야 합니다. 즉, 사실상 블록체인을 해킹한다는 것은 불가능하다고 할 수 있습니다.

그렇게 신뢰가 없는 환경에 신뢰가 쌓이게 되며 많이 연결될수록 보안 층이 더욱 강력해집니다. 

 

추가적으로 탈중앙화에 대해

https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274

728x90
반응형

댓글