You are viewing a single comment's thread from:

RE: BFT 합의알고리즘은 과연 비잔틴 장군 문제인가?

in #kr6 years ago (edited)

안녕하세요! 좋은 글 잘 읽었습니다:)
약간 이해가 안 가는 부분이 있어 작성자께 질문 드리고 싶습니다.

  1. 먼저 '각 검증자들이 투표를 할 때 디지털 서명을 하기 때문에 공격자가 lamport의 논문의 비잔틴이 아니며, 즉 구두 메시지(oral message)가 아니며, 서명된 메시지( signed message) 문제입니다.'에 대한 질문입니다.
    구두 메시지와 서명된 메시지의 차이가 무엇인지 잘 와닿지가 않습니다. '디지털 서명을 메시지에 추가한다면 이 메시지를 변조할 수 없기 때문'이라고 하셨는데, PBFT 알고리즘의 경우 맨처음 리더 노드가 보낸 PRE-PREPARE 메시지를 받은 faulty한 노드가 해당 메시지를 복호화한 후 다른 메시지로 변조하여 PREPARE 메시지를 보낼 수 있습니다. 이런 faulty한 상황을 막기 위해서 한 노드에서 다른 노드들로부터 PREPARE 메시지를 수집한 후 이 중 2/3 이상이 이전에 받았던 PRE-PREPARE 메시지와 일치하는지 확인하는 작업이 있는 것이죠. 따라서 저는 구두 메시지를 변조해서 보내는 행위가 서명된 메시지를 변조해서 보내는 행위와 잘 대응이 된다고 생각합니다. 작성자께서 생각하시기에 이것이 잘못되었다는 것인지, 아니면 다른 포인트의 문제를 말씀하셨던 것인지 설명해주시면 감사하겠습니다:)

  2. 두번째로 'lamport의 논문에서 중위는 자신의 의견이 포함이 안됩니다.'에 대한 질문입니다. 작성자께서 말씀해주셨듯이 비잔팅 장군 문제 논문에서, 중위는 전달 받은 메시지의 과반 여부로 다음 행동을 결정합니다. PBFT 알고리즘에서도 한 노드는 다른 노드들에게서만 받은 PREPARE 메시지를 이전에 받아놓았던 PRE-PREPARE 메시지와 일치하는지 확인한 후 다음 행동을 합니다. 즉 다른 노드들이 제대로된 메시지를 보내었는지 확인하는 과정에서 본인의 의사(본인이 생성했던 PREPARE 메시지)는 반영이 되지 않습니다. 따라서 이 부분 또한 잘 대응이 된다고 생각합니다. 마찬가지로 작성자께서 제 의견에 대해 말씀해주시면 감사하겠습니다.

  3. 마지막으로 작성자께서 제시하신 아이디어에 대한 질문입니다. 블록의 해쉬가 동일하려면 블록에 포함될 txid 리스트뿐만 아니라 블록 헤더의 모든 값이 동일해야 합니다. 일례로 모든 노드가 동일한 타임스탬프에 블록 해쉬를 만드는 것을 불가능에 가깝거나, 타임 싱크를 정교하게 맞춰야 하는 문제가 있습니다. 또한 만약에 타임 싱크의 오류로 인해서 블록 해쉬가 달라지는 상황이 발생할 수 있게 된다면, 이는 합의 자체에서 발생하는 문제가 아니라 기술적인 오류이기 때문에 합의에 있어 문제를 어렵게 한다고 생각합니다. 이를 해결하기 위해 리더가 타임스탬프를 포함한 블록의 헤더값 모두도 지정해서 보낸다면, 그것이 리더가 직접 블록을 생성해서 보내는 것과 어떤 차이가 있을지 잘 모르겠습니다. 작성자께서 제시하신 아이디어에 대해 더 자세히 설명해주시면 감사하겠습니다.

짧지 않은 질문을 읽어주셔서 감사합니다. 작성자분과 깊이 있는 대화를 나누고 싶은 순수한 마음에 드리는 질문이오니 혹여 읽으시며 기분이 상하신 부분이 있더라도 의도한 것이 아님을 헤아려주시면 좋겠습니다. 감사합니다.

Sort:  
  1. 구두 메시지는 공격자가 변조가 가능하지만, 사인된 메시지는 변조할 수 없습니다.

  2. prepare에서 자신의 의사를 표현합니다.

  3. 블록에는 coinbase transaction에 노드 자신의 공개키가 들어갑니다. 이것은 보상을 받는 주소로 사용합니다. 따라서 모든 노드들이 동일한 nonce로 계산을 해도 블록 해시값은 다릅니다.

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.030
BTC 58679.35
ETH 3155.04
USDT 1.00
SBD 2.44