본문 바로가기
보안 용어 설명

비잔틴 장군 문제란?

by Hwan2 2019. 4. 8.
728x90
반응형

비잔틴란 무엇일까요??

 

비잔티움이라고도 불리우며 또는 로마 제국 이라고도 불립니다.

 

로마 제국은 기원전 287년에 등장한 나라로 중학교 사회시간때 공부했던걸로 기억이 납니다.

 

로마 제국하면 떠오르는 것이 바로 십자군 입니다.

 

출처 : https://namu.wiki/w/%ED%8C%8C%EC%9D%BC:the__eastern__roman__byzantine__empire_a_d__dlxv_by_kuusinen-d6vwjel.png

 

위 사진이 바로 로마 제국이 전성기때 점령한 땅들입니다.

 

굉장히 넓으면서 타원식으로 둘러 싸고 있죠.

 

그럼 비잔틴 장군 문제란 무엇이냐?

 

로마 제국이 저렇게 떨어져 있다 보니, 전쟁을 할 때 통신할 수 있는 방법이 상당히 제한적이었습니다.

 

그러다 보니 각 지역의 장군들은 전쟁을 할 때 서신으로 전황을 주고 받았는데,

 

문제는 장군이 한둘이 아니라는 것에 있습니다.

 

여러 장군들이 서신을 주고 받고 "몇시에 어디로 집결하자" 같은 내용의 서신이 오가게 되면 문제가 발생합니다.

 

서신을 주고 받는 것 자체가 서로의 신뢰를 바탕으로 이뤄지는 일인데,

 

여러 장군중 몇몇의 장군들이 반란을 도모한다면?

 

서신의 내용을 받고 악의적으로 수정해서 다른 장군들에게 뿌린다면?

 

그렇게 되면 해결할 수 없는 딜레마에 빠지게 됩니다.

 

이러한 딜레마를 비잔틴 장군 문제라고 말합니다.

 

이는 현실세계에서도 동용되는 말이 됩니다. 바로 네트워크이지요.

 

그리고 블록체인은 사용자들로 하여금 모든 정보를 공유하고 있습니다.

 

그리고 공유된 모든 데이터들이 일치하는지 대조를 하게 되지요.

 

대조를 바탕으로 과반수 이상이 동일한 내용을 갖고 있다면 데이터가 정확한다는 판단을 한 후

(데이터의 변조가 않이뤄졌음을 파악하고)

 

이 데이터를 바탕으로 데이터의 거래(송. 수신)가 이뤄지게 됩니다.

 

다시 비잔틴으로 돌아와서 예시를 통해 설명드리겠습니다.

 

5명의 장군이 있고 이를 A, B, C, D, E 라고 가정을 하겠습니다.

 

그리고 반란을 도모하고 있는 장군은 C라고 하겠습니다.

 

A장군이 옆 마을에 있는 B장군에게 이렇게 서신을 보냅니다.

 

"내일 오후 3시에 알파 지역으로 병사를 대리고 집결 하시오."

 

B장군은 A장군의 서신을 받고 이를 옆 마을에 있는 C장군에게 보내게 됩니다. 동일한 내용으로요.

 

C장군은 반란을 도모하는 장군이므로 D장군에게 서신을 수정해서 보내게 됩니다.

 

"내일 오후 6시 베타 지역으로 병사를 대리고 집결 하시오."

 

그럼 D와 E장군은 잘못된 내용을 받게되고, 이로인해 전쟁에서 패하게 됩니다.

 

그럼 여기에 블록체인 기법을 사용해 예시를 들어보겠습니다.

 

A장군이 옆마을 B장군에게 서신을 보냅니다.

 

"내일 오후 5시에 %o% 지역으로 집결하시오."

"단, 이 서신 내용을 모든 장군들에게 병사들을 풀어 똑같은 내용을 전달하시오!"

그리고 이 서신은 특수한 잉크로 써져있어 내용을 변경하려면 하루의 작업이 소요가 됩니다.

또한 각 서신마다 장군들의 도장이 찍혀 있어 복사본을 만드는 것은 불가능 합니다.

 

이렇게 해버리면 모든 장군들이 각 장군들이 전달한 서신을 보고 비교해보며 내용이 동일한지 파악하게 됩니다.

 

또한 수정도 어려워 중간에 서신을 고쳐서 다시 보내기는 쉽지 않습니다.

 

때문에 배신자인 C장군을 이를 해결할 방법이 없어지는 것입니다.

 

굳이 해결하려면, C장군은 A, B장군의 병사들을 잡은 후 서신내용을 가로체서 그 내용을 하루 안으로 수정해서

 

D, E장군에게 보내야 됩니다. 사실상 불가능에 가깝지요.

 

이 예시가 완벽한 블록체인 방법은 아니지만 이런 식으로 진행되게 됩니다.

 

네트워크로 연결된 사용자들이(엄밀히 말하면 P2P) 자신의 계좌 정보를 다른사람들에게 공유하고,

 

다른 사람들의 계좌 정보들도 모두 공유가 되는, 블록형태의 체인 방식으로 연결되며

 

각 계좌 정보들은 해쉬로 암호화 되어 있고, 이 데이터를 변조해 자신의 계좌에 있는 금액을 수정하고 싶다면,

 

공유되고 있는 사용자들 가운데서 51%이상 되는 사용자들의 PC를 해킹한 후

 

해쉬값을 해독하고, 이 데이터를 변조해야 합니다.

 

또한 자신의 계좌 정보는 지속적인 업데이트를 통해 데이터가 맞는지 비교를 하는 상황에서

 

이 업데이트 보다 더 빠르게 데이터 변조를 시도해야 합니다.

 

하지만 이는 슈퍼컴퓨터 100대 이상을 동원해도 어렵다고 하니 블록체인 기법은

 

비잔틴 장군 문제를 해결한 좋은 솔루션이라 볼 수 있습니다.

반응형

'보안 용어 설명' 카테고리의 다른 글

Zero-Knowledge Proof(영지식 증명)란?  (0) 2019.05.04
SCADA란?  (0) 2019.03.02
ICT 란?  (0) 2019.02.26
공개키와 개인키란?  (0) 2019.02.20
디지털 서명이란?  (0) 2019.02.20

댓글


스킨편집 -> html 편집에서