728x90

비잔틴 내결함성

탈중앙화 시스템에서도 아주 중요한 특징으로 예시가 되는 이야기는 비잔틴 제국이 공격하여 점령하고자 했떤 성을 가정하여 네 명의 장군이 공격하는 상황을 빗대어 설명하고자 한다,

4명 이상의 장군이 전투를 하고자 했을 때 과반수의 동의가 있어야 행동을 개시할 수 있으며, 그 과정에서 대다수의 합의에 도달해야 한다. 

전제조건으로 합의점에 도달해야한다는 점과 해당 상황에서 반역자가 존재하는 경우 합의 프로토콜을 어떻게 생각할 수 있는가? 

 

반역자는 의견이 합의에 이르지 못하도록 훼방을 놓을 것이고, 이는 사전에 동의한 합의를 도출해 낼 수 있는 알고리즘을 따라야한다. 합의 알고리즘을 도출하는 경우 두가지 가설을 세우고 진행해야 할 것이다. 

 

첫 번째는 사령관이 반역자가 아닌 경우이다. 

 

알고리즘에 의해 다수결의 합의에 도달하였기 때문에 반역자의 발언을 고려하지 않고 공격을 수행할 수 있다. 

 

두 번째는 사령관측이 배신자인 경우이다. 

 

위의 일련의 비잔틴 장군의 문제로 전달된 정보에 대한 다수결의 알고리즘으로 전달된 정보를 기반으로 한 의사결정을 내린다. 이러한 알고리즘을 비잔틴 내결함성이라고 한다.

다만 3분의 1이상이 반역자일 때는 작동할 수 없는 알고리즘으로 논문에서는 해당 알고리즘이 동작하려면 30% 이상, 33% 이하의 반역자가 있어야 한다. 이것이 반역자에 대한 본 시스템의 내결함성 수준인 것이다. 

 

비잔틴 내결함성이 탈중앙화된 기술적인 시스템에서는 어떻게 적용되는 것인가?

시스템을 공격하려는 사람으로부터 보호하기 위해서 합의 프로토콜을 고안하는데, 최대한의 내결함성을 구현하려면 최대한 그 내결함을 높인다는 것이 비잔틴 내결함성의 개념이다.

이런 개념은 여러 시스템에서 사용되며, 일부 시스템이 공격에 의해 문제가 발생해도 전체 시스템은 여전히 작동해야하며 이를 비잔틴 내결함성이라 한다. 

 

블록체인 특히, 탈중앙화된 시스템에서는 비잔틴 내결함성의 특성을 반드시 내포하고 있어야 한다. 

 

728x90

채굴 작동 방식

위에는 예시로 작성된 블록으로 여러 트렌젝션을 한 블록 내에 넣을 수 있다. 위의 블록에서는 블록번호, 데이터, 이전 해시 값을 가지며, 이전 해시 블록 간의 암호화 링크를 활성화 하는 부분이다. 

 

블록번호, 데이터, 이전 해시 값을 가지고 해시 알고리즘을 통해서 해시 값을 도출하는데, 채굴이 복잡한 이유는 무엇일까? 바로 논스(Nonce)라는 필드 때문이다. 

논스는 한번만 사용되는 필드로 채굴에 중요한 부분이다. 논스는 추가적인 통제력과 유연성을 할 수 있다는 특징이 있다.

이유는 데이터, 블록체인 번호, 이전 해쉬 값은 불변 원장의 특징에 의해 변화할 수 없지만, 논스를 이용해서 내용을 바꿈으로서 도출되는 해쉬값을 쇄도 효과에 의해서 극단적으로 다른 해쉬 값을도출 할 수 있다.

이로서 해쉬의 다양성을 보장할 수 있다. 

 

 

채굴 작동 방식 : 암호화 퍼즐 

 

해시는 숫자로 이루어지며, SHA256 해시의 경우 실제 숫자로 단어도 라벨도 아닌 단순한 문자의 나열 16진수 숫자로 숫자와 문자를 조합된다. 이때 더 높은 값으로 인코딩을 하게 되는데, SHA256은 선행 제로로 64개의 해쉬값으로 진행한다. 



해쉬풀에서 해쉬값에서 가능한 해쉬값을 최소값부터 최댓값까지 진행하며, 채우다보면 일종의 맵이 생성되고, 이를 확인할 수 있다. 

채굴방법은 블록체인 시스템이나 알고리즘이 대상을 설정하는 것으로 채굴자들이 특정한 해시룰 달성하도록 설정한 대상이 존재한다. 

 

대상보다 값이 큰 해시는 고려 대상이 아니며, 블록에 대해 찾은 해시값이 대상보다 작아야 한다. 대상보다 더 클때 해당 블록체인에 대해 충분하지 않고, 해쉬값이 무조건 대상보다 작아야한다.

이유는 없이 채굴자가 해결해야할 도전 과제를 생성하기 위해 수행되는 작업으로 해시 숫자로 블록을 생성할 수 없다.

대상을 고려할 때에 있어서 좋은 방법은 선행제로를 중심으로 생각해보며, 해시를 중심으로 대상을 기억하지 말고 선행 제로를 중심으로 기억한다. 

 

위의 블록에는 논스값 이외의 필드값들을 변경할 수 없다는 것을 고려했을 때, 트렌젝션의 세부 사항 중 불변원장의 특징으로 인해 일부도 변경할 수 없다.

그래서 논스 값을 바꿔가며 해시값이 맵에 위치하는 것을 확인해야 한다.위의 해쉬를 해시 맵에 위치했을 때 해당 블록에 대한 해시가 생성됬음을 알려주기 위함이다. 

 

논스 값을 22로 생성된 해쉬는 더 작은 해쉬값을 가지게 된다. 논스를 변형하여 대상 아래의 해쉬값이 나오도록 무차별 대입을 하여 대상에 대한 해쉬를 생성하였을 때 이때 작성된 논스 값을 골든 논스라 한다.

해시가 대상 아래있을 때만 블록을 추가할 수 있으며, 논스가 조금만 바뀌더라도 해쉬 값이 크게 바뀐다. 이는 쇄도 효과로 인해 발생하게 된다. 만일 쇄도 효과가 없다면 위의 여러 무차별 대입 과정을 할 수 없으며, 바로 논스의 최적값을 알아낼 수 있다. 

암호화 퍼즐에 의해서 역설계 작업이 불가능하며, SHA256 해쉬 약속으로 쇄도 효과에 의한 역설계 작업이 불가능하다. 그렇기 때문에 채굴자는 보상을 받기 위하여 골드 논스를 구하기까지 논스를 바꾸며 원하는 해쉬를 찾아내는 작업을 필수적으로 진행하게 된다. 

더보기

위의 예시의 오류 중에 하나는 선행 제로의 작업을 진행하기 때문에 이전 해쉬 값이 새로 생성되는 해쉬값보다 작아야하지만, 이전 해쉬값이 크다는 오류가..

 

 

728x90

불변원장(immutable ledger)

 

블록체인의 블록은 연결되어 있고 이는 체인을 생성한다. 부동산 증서를 원장이 아닌 블록체인을 하게 된다면,  새로운 원장들을 블록으로 생성되고 블록 생성시에 트렌젝션이 발생하게 된다.

블록체인의 데이터를 변형을 하게 된다면, 특정 블록에 있는 데이터를 변형하게 된다면 해취의 값이 바뀌기 때문에 앞의 블록과 뒤의 블록이 연결되지 않기 때문에 체인이 연결되지 않게 된다.

이는 체인이 연결되어 있는 단일 블록의 경우보다 시간이 지날 수록 더더욱 데이터 변형이 어려워지며 그렇기 때문에 불변 원장을 지원하게 된다. 

 

위의 표는 영국의 매월 발생하는 부동산의 트렌젝션 수로 특정 금액 이상의 부동산 거래가 발생하는 것을 트렌젝션에 기록한다. 이를 블록체인으로 옮기려는 시도가 진행되고 있다. 

 


분산 P2P 네트워크 

이전 강의에서는 부동산 원장의 전통적인 원장에 블록체인으로 접근하는 접근법에 대해서 다루었다.

 

만일 블록체인이 악의적으로 오류가 발생하지 않았고, 입력 오류로 발생한 오류로 암호화 링크가 끊기게 된다면, 어떻게 해결하는가?

바로 분산 P2P 네트워크로 해결할 수 있다.

지속적으로 모든 컴퓨터와 연결할 수없지만, 여러 컴퓨터와 연결되어서 정부에서는 원장과 같은 블록체인을 분산하여 저장하며 관리하며, 분산된 컴퓨터끼리는 암호화키로 통신하며 하나의 컴퓨터에 블록이 추가된다면 네트워크를 통해 모든 컴퓨터에게 블록이 추가 된다.

이때 공격자가 특정 pc의 블록체인에 접근하여 성공적으로 블록을 변형하였지만 다른 여러 pc에서 해당 데이터의 값이 잘못되었다는 것을 동시적으로 확인할 수 있기 때문에 데이터의 불변성을 보장하게 된다.

 

공격자는 결과적으로 전체 피어를 공격하지 않으면 침입이 불가능하며, 여기서 추가적인 보안성을 띄게된다. 

특정 블록이 변형이 되어도 스스로 업데이트가 되며, 신뢰할 수 없는 프레임워크에서 신뢰를 가져오게 된다. 

이러한 여러 PC 간의 합의 프로토콜로 블록체인은 강화된다. 

728x90

SHA256 Hash 

SHA256 Hash

SHAk256 Hash는 NSA에서 개발한 알고리즘으로 해시 길이는 64이고 16진수로 되어 있어서 숫자와 문자가 섞여 있다.

해시 한 문자당 4비트로 총 256비트로 되어 있으며, 같은 데이터를 입력하면 같은 해쉬값을 도출한다. 이는 데이터가 약간 달라졌을 때 완전히 다른 해쉬값을 가지게 되며 이를 쇄도 효과라 부른다. 

 

해쉬 알고리즘은 다섯가지 요구사항이 있음

  1. 단방향이여야한다. -> 복원이 불가능하다
  2. 결정적이여야한다. 
  3. 연산이 빨라야 한다
  4. 쇄도효과가 발생한다.
  5. 충돌 저항성이 있다. 

 

위의 다섯가지 요구사항 중 쇄도효과는 동일한 문서에 아주 작은 변형을 더했을 때 해쉬값은 완전히 바뀌는 것으로 알고리즘의 구조때문에 쇄도 효과가 발생한다. 자세한 이야기는 이후 채굴 목차에서 진행할 여정이다. 

해싱 알고리즘의 길이는 64비트로 제한적으로 생성되는 데 반해, 일반적인 데이터의 양은 64비트로 표현할 수 있는 것보다 훨씬 많이 존재하게 된다. 

이는 비둘기집 원리와 같이 자연적으로 충돌이 발생하기 때문에 가능성이 낮더라도 알고리즘이 인위적인 충돌을 만들었을 때, 이러한 알고리즘은 충돌에 대한 저항성이 존재해야 한다. 

이상으로 알고리즘의 보안성과 안정성을 보장하기 위한 다섯가지 요구사항을 설명하였고, SHA 알고리즘의 동작원리는 On the Secure Hash Algorithm family chapter1에서 확인할 수 있다. 

 

+ Recent posts