Skip to main content

Web3 기초부터 배우기 — 암호화와 PBFT 합의 알고리즘

· 6 min read
Samantha Holstine
Senior Developer Relations Engineer

공개 키 암호화와 PBFT가 Midnight 같은 안전한 탈중앙화 블록체인 네트워크의 암호학적, 합의적 기반을 어떻게 형성하는지 알아봅니다.

아직 Web3 학습 초기 단계입니다(이전 블로그 포스트를 여기여기에서 확인하세요!). 깊이 파고들수록, 블록체인의 진정한 핵심은 코드가 아니라 데이터를 보호하는 암호학과 이를 조율하는 합의 알고리즘에 있다는 것을 깨닫게 됩니다. 이번 주에는 공개 키 암호화와 Practical Byzantine Fault Tolerance(PBFT), 두 가지 개념이 특히 눈에 들어왔습니다.

어렵게 들릴 수 있지만, 이 둘은 블록체인이 데이터를 보호하고 중앙 기관 없이 합의에 도달하는 방식의 근간입니다. Cardano Academy의 Intro to Blockchain 시리즈로 탐구했으며, 핵심 개념을 파악하는 데 계속 좋은 출발점이 되고 있습니다.
배운 내용과 이 두 구성 요소가 현대 블록체인 네트워크 인프라에 어떤 역할을 하는지 정리합니다.

Public Key Encryption – Sending Secrets Without Sharing Keys

암호화는 블록체인 보안의 근간입니다. 인터넷이나 블록체인 같은 개방된 탈중앙화 네트워크에서도 비공개 메시지를 보내고, 신원을 확인하며, 데이터를 안전하게 유지할 수 있게 합니다. Web3에서는 블록체인이 기본적으로 공개되어 있어, 누구나 데이터를 보고 네트워크에 참여하거나 노드를 운영할 수 있기 때문에 특히 중요합니다. Midnight에서 암호화는 민감한 데이터를 보호하면서도 퍼블릭 체인에 존재할 수 있게 하는 핵심입니다. 차폐 트랜잭션부터 선택적 공개까지, Midnight은 공개 키 암호학을 기반으로 탈중앙화를 유지하면서 프라이버시를 구현합니다.

높은 수준에서 암호화는 읽을 수 있는 데이터(평문, cleartext)를 해독할 수 없는 형태(암호문, ciphertext)로 변환하여 올바른 사람만 복원할 수 있게 하는 과정입니다. 그런데 비밀 키를 먼저 공유하지 않고 어떻게 할 수 있을까요?

The Two Types of Encryption

암호화에는 두 가지 주요 유형이 있습니다:

  • 대칭 암호화(Symmetric encryption): 같은 키로 암호화하고 복호화합니다. 빠르지만, 키를 먼저 안전하게 공유하기가 까다롭습니다.
  • 비대칭 암호화(Asymmetric encryption, 공개 키 암호화): 키 쌍을 사용합니다. 공개 키와 개인 키로 구성됩니다. 한 키로 암호화한 것은 다른 키로만 복호화할 수 있습니다. 공개 키로 암호화하면 일치하는 개인 키만 해독할 수 있고, 그 반대도 마찬가지입니다. 수학적으로 연결되어 있지만, 하나에서 다른 하나를 추측하는 것은 사실상 불가능합니다.

핵심 차이점은? 대칭 암호화에서는 두 사람이 하나의 비밀 키를 공유합니다. 비대칭 암호화에서는 공유 비밀이 필요 없고 일치하는 키 쌍만 있으면 됩니다.

A Simple Analogy

대칭 암호화를 공유 사물함이라고 생각하세요. 나와 친구가 같은 열쇠를 가지고 있습니다. 그 열쇠를 가진 사람은 누구나 사물함을 열 수 있습니다. 어려운 점은 둘만 열쇠를 갖도록 하는 것입니다. 반면 비대칭 암호화는 내 이름이 적힌 자물쇠(공개 키)를 모두에게 나눠주는 것과 비슷합니다. 누구나 상자를 잠그고 보낼 수 있지만, 일치하는 개인 키를 가진 나만 열 수 있습니다.

How It's Used in Blockchain

Alice가 Bob에게 안전한 메시지를 보내고 싶다면:

  1. Bob이 공개 키를 공유합니다.
  2. Alice가 Bob의 공개 키로 메시지를 암호화합니다.
  3. Bob이 암호화된 메시지를 받고 개인 키로 복호화합니다.

누군가 메시지를 가로채더라도, Bob의 개인 키 없이는 읽을 수 없습니다. 타원 곡선과 RSA 뒤의 수학 덕분에, 현재 컴퓨터로 공개 키에서 개인 키를 역산하려면 우주의 나이보다 긴 시간이 걸립니다.

Why Not Just Use Public Key Encryption for Everything?

공개 키 암호화는 강력하지만 연산 비용이 높습니다. 그래서 실제로 대부분의 보안 시스템(예: HTTPS)은 하이브리드 모델을 사용합니다:

  1. 클라이언트와 서버가 공개 키 암호화로 임시 세션 키를 안전하게 교환합니다.
  2. 이후부터는 공유 키를 사용한 대칭 암호화로 빠르고 안전하게 통신합니다.

블록체인도 성능과 확장성을 위해 같은 접근 방식을 자주 사용하며, 두 방법의 장점을 결합합니다.


Practical Byzantine Fault Tolerance – How Blockchains Reach Consensus

암호화를 다루었으니, 처음에 저를 당혹스럽게 했던 주제로 넘어가겠습니다: 블록체인은 중앙 의사결정자 없이 어떻게 합의에 도달할까요? 바로 합의 알고리즘의 역할입니다. 이번 주에는 가장 초기이면서 가장 영향력 있는 합의 알고리즘 중 하나인 Practical Byzantine Fault Tolerance(PBFT)를 배웠습니다.

First, a Quick Refresher on Consensus

합의란, 일부 참여자가 느리거나 오프라인이거나 적극적으로 문제를 일으키려 해도 분산 시스템이 하나의 진실에 동의하는 방법입니다. 탈중앙화 원장이 누가 무엇을 소유하는지 결정하는 데 필수적이며, 모든 블록체인의 기반입니다.

"비잔틴" 부분은 유명한 사고 실험인 비잔틴 장군 문제에서 유래합니다. 장군들이 공격을 조율해야 하지만 메신저를 신뢰할 수 없는 상황입니다. 블록체인으로 말하면, 일부가 거짓말하거나 오작동하더라도 노드들이 블록에 대해 합의해야 하는 것입니다.

What Makes PBFT "Practical"?

PBFT은 약한 동기 시스템에서 작동하도록 설계되었습니다. 메시지가 지연될 수 있지만 무기한 지연되지는 않는 환경입니다. 최대 1/3의 노드에 결함이 있어도 동작하며, 모든 메시지를 암호학적 서명으로 인증합니다. 완전히 신뢰할 수 없는 비동기 시스템과는 달리, 메시지가 지연되더라도 결국 도착한다는 전제입니다.

PBFT에는 view change라는 내장 프로세스가 있어, 충분한 노드가 문제를 감지하면 결함 있는 primary를 자동으로 교체합니다. 대략적인 작동 방식은 다음과 같습니다:

  1. 클라이언트(트랜잭션을 제출하는 사용자 등)가 primary 노드에 요청을 보냅니다.
  2. primary가 다른 replica 노드에 요청을 브로드캐스트합니다.
  3. 각 replica가 요청을 처리하고 응답합니다.
  4. 클라이언트는 결과를 확인하기 위해 충분한 일치 응답(2/3 + 1)을 기다립니다.

primary 노드가 응답하지 않거나 상충하는 메시지를 보내면, replica들이 투표로 교체하고 새 primary를 선출할 수 있습니다. 이를 통해 PBFT은 장애 허용적이고 적응적으로 동작하며, 실제 운영되는 블록체인에 필수적인 특성입니다.

Real-World Analogy

그룹 프로젝트를 한다고 상상해 보세요. 한 사람("primary")이 프로젝트의 최종 버전을 공유합니다. 나머지("replica")가 검토합니다. 충분한 사람이 맞다고 동의하면 제출합니다. 하지만 리더가 잘못했다고 생각하는 사람이 있으면 지적할 수 있고, 충분히 동의하면 새 리더를 선택합니다.

PBFT은 이 과정을 메시지 서명, 투표 임계값, 장애 한도로 공식화합니다.

Where PBFT Shines—and Where It Doesn't

PBFT은 기업용 또는 컨소시엄 블록체인처럼 모든 참여자가 알려져 있고 검증된 소규모 허가형 네트워크에서 뛰어납니다. 작업 증명이나 지분 증명보다 확률적 가정이 적은, 빠르고 결정론적인 최종성을 제공합니다.

하지만 트레이드오프가 있습니다:

  • 수백, 수천 개의 노드로 확장하기 어렵습니다. 통신 부하가 높습니다.
  • 노드가 미리 서로를 알고 있어야 합니다.
  • 탈중앙화 수준이 낮으며, 새 노드를 신중하게 검증하지 않으면 시빌 공격에 취약합니다.

이런 이유로 PBFT에서 영감을 받은 모델은 확장성과 탄력성을 높이기 위해 교대 리더십이나 스테이킹 시스템 같은 메커니즘과 자주 결합됩니다.

Conclusion

암호화와 합의는 깊은 기술 주제처럼 들리지만(실제로 그렇습니다), 그 핵심은 매우 인간적인 문제를 해결합니다. 어떻게 비밀을 유지할 것인가? 아무도 책임자가 아닐 때 어떻게 진실에 합의할 것인가? 두 개념의 간략한 정리입니다:

ConceptWhat it solvesUsed in
Public Key EncryptionSecure communication over open networksWallets, HTTPS, block signing
PBFTReaching agreement in the face of faulty/lying nodesPermissioned blockchains, early crypto projects

이 두 영역을 배우면서 Cardano 같은 안전한 탈중앙화 시스템의 구성 요소와 Web3에서 합의와 암호학이 왜 긴밀하게 연결되어 있는지 더 명확히 이해할 수 있었습니다.

이 포스트의 모든 자료는 Cardano Academy에서 배웠으며, Web3 학습의 좋은 출발점으로 계속 자리하고 있습니다. 시간이 지나면서 더 많은 리소스를 추가하고 배운 것을 공유할 예정입니다. 처음 시작하신다면 Academy를 확인하고, 직접 탐구하면서, 이 아이디어가 실제로 어떻게 적용되는지 보고 싶다면 Midnight 문서Dev Diaries를 살펴보세요.

함께 배우고 있다면, 어떤 개념이 가장 이해하기 어려웠나요? 댓글을 남겨 주세요. 리소스를 교환하고 싶습니다! 곧 더 많은 기초 개념을 다루겠습니다!