Information Security/Cryptology

비트코인과 블록체인 (2) - 사용자 관리와 인증 및 블록체인 기술

hdhwang 2023. 3. 19. 20:36

5. 사용자 관리와 인증

비트코인은 사용자를 관리하는 중앙의 서버가 없습니다. 거래에 사용되는 계좌와 이를 이용하는 주체 인증에 공개키 암호화 방식을 사용합니다.

  • 공개키 방식의 원리
    • ECDSA 알고리즘 사용

다음 그림과 같이 특정한 메시지에 대한 서명을 자신만이 알고 있는 개인키로 서명하면, 제삼자는 공개키를 이용해 그 서명이 이 공개키의 짝에 해당하는 비밀키로 서명한 것인지 확인할 수 있습니다.

공개키와 개인키의 짝은 암호화 알고리즘을 이용해 누구나 생성할 수 있다. 비트코인에서는 이 공개키를 일종의 일회용 계좌번호처럼 사용합니다.

누구나 스스로 만들 수 있기 때문에 사용자나 계좌를 등록하는 절차가 필요 없고, 공개키 암호화 알고리즘을 이용해 계좌의 소유자가 맞는지를 인증할 수 있습니다.

  • 블록체인 구조 이용

다음으로 비트코인의 흐름에 대해 알아보도록 하겠습니다.

위 다이어그램에는 4개의 거래 혹은 수표가 있습니다. 'Transaction C'C라는 사람이 발행한 수표 라고 가정을 합니다.

이 수표에는 2개의 입력, 즉 과거에 발행된 2개의 수표를 참조하는 링크가 존재합니다. 하나는 A로부터 받은 100BTC를 참조하는 링크고, 다른 하나는 B로부터 받은 50BTC를 참조하는 링크 입니다.

C150BTC 까지 사용할 수 있는데, 이 중 101BTCD에게 주겠다는 수표가 'Transaction C‘ 입니다.

C에게서 101BTC를 받은 D는 이 101BTC를 누군가 다른 사람에게 전부 제공하는 수표인 'Transaction D'를 발행하였습니다.

모든 수표가 그 이전 수표에서 나온다면 링크를 계속 따라가다 보면 결국엔 이전 수표가 없는 수표가 존재할 것입니다.

다이어그램에서 'Transaction B'가 바로 이전 수표가 없는 수표입니다.

이 수표는 채굴을 통해 자동으로 발행된 비트코인을 담고 있습니다.

채굴로 발행된 비트코인은 지급받은 본인만 사용할 수 있으므로 C비트코인을 지급받은 사용자 입니다.

C는 자신이 채굴로 얻은 50BTCA에게서 받은 100BTC를 합쳐서 150BTC의 잔고를 만든 다음, D에게 101BTC를 준다는 수표를 발행한 것입니다.

나머지 49BTC는 거스름돈에 해당하며, 다른 거래에 사용할 수 있습니다.

6. 블록체인 위조 방지

개인이 임의로 발행한 모든 수표를 어떻게 보관하는가 하는 문제가 발생합니다.

비트코인에서는 네트워크상의 모든 피어가 이 수표를 모두 보관합니다.

요즘 PC의 용량과 하드디스크의 비용을 고려하면 데이터의 양은 큰 문제가 아닐 것입니다. 문제는 위조의 방지다.

비트코인은 수표 즉 거래 위조 방지를 위해 링크드 리스트로 구성된 블록체인을 활용합니다.

블록에 앞선 블록의 해시 값을 담고 있습니다.

  • 링크드 리스트로 구성된 블록체인
    • 블록을 위조하기 위해서는 블록체인의 모든 블록을 위조해야하는 어려움이 존재

Block 1 거래를 위조하기 위해 Block 1의 내용을 수정하면, Hash 1이 바뀌게 되어 Block 2가 담고있는 Hash1과 일치하지 않게됩니다. 따라서 Block 2도 수정해야 합니다.

마찬가지로 이후의 모든 블록도 수정해야 할 것입니다.

만약 블록 하나를 위조하는데 한 달이 걸린다면 이후의 n개 블록까지 새로 만드는 데는 n개월이 소요될 것입니다.

그 시점엔 이미 훨씬 더 많은 블록이 Block n 이후에 리스트를 이루며 생성되어 있을 것입니다.

따라서 블록체인의 위조는 거의 불가능합니다.

7. 블록체인 원본 유지 원칙

아무도 블록을 위조할 수 없다고 하더라도 아직 한 가지 문제가 남게 됩니다.

수 많은 사람들이 비트코인 채굴에 참여하고 있습니다.

여러 대의 사용자가 비슷한 시점에 각각 해답을 찾을 수도 있을 것입니다.

이에 따라 비트코인에서는 가장 길이가 긴 블록체인을 원본으로 받아들이자는 원칙을 제시하였습니다.

다음은 블록 체인이 나눠질 경우를 간략화 한 예시입니다.

  • 가장 길이가 긴 블록체인을 원본으로 간주

맨 밑에 있는 블록부터 시작해서 위로 블록체인을 만들어 나갑니다.

특정 시점에 여러 블록이 동시에 생성되어 블록체인이 나눠질 수 있지만, 곧 어느 한 블록체인이 더 길어질 것이고 짧은 블록체인은 버려집니다.

가장 긴 블록체인이 원본이 되고 네트워크의 모든 피어가 동일한 블록체인을 유지할 수 있게 됩니다.