
비탈릭 부테린 홍콩 Web3 페스티벌 강연 전문: 암호기술의 한계까지 도달할 수 있는 프로토콜이 필요하다
저자: 비탈릭 부테린
정리: DeThings
2024 홍콩 Web3 페스티벌 기간 중 이더리움 공동 창시자인 비탈릭 부테린(Vitalik Buterin)은 DRK Lab이 주최한 "Web3 학자 서밋 2024"에서 기조 강연 'Reaching the Limits of Protocol Design'을 발표했다.
다음은 DeThings가 정리한 현장 실록(편집본)이다:
지난 10년 동안 프로토콜을 구축하는 데 사용되는 기술의 종류는 크게 변화했다. 2009년 비트코인이 탄생했을 당시 실제로는 매우 단순한 암호 기술만을 사용했다. 비트코인 프로토콜에서는 해시와 타원곡선 ECDSA 서명, 그리고 작업 증명(PoW) 외에 다른 암호학은 거의 없다. 작업 증명도 사실상 해시를 사용하는 또 다른 방식일 뿐이다. 2020년대에 프로토콜을 구축할 때 사용되는 기술들을 보면 지난 10년 사이에 등장한 훨씬 더 복잡한 기술 집합들이 있다.
사실 이러한 기술들은 이미 오랫동안 존재해왔다. 기술적으로 보면 PCP 정리도 수십 년 전부터 있었고, 2009년 크레이그 젠티(Craig Gentry)의 발견 이후로는 완전 동형 암호(FHE)도 있었다. 혼란 회로(garbled circuits) 역시 수십 년간 존재해온 양방향 계산 기술이다. 하지만 이론상으로 존재한다는 것과 실제 적용 가능하다는 것은 다르다.
사실 블록체인 분야 자체가 큰 공헌을 했다고 생각한다. 블록체인은 막대한 자원을 투입하여 이런 기술들을 일반적인 애플리케이션에서 실제로 사용할 수 있는 단계까지 끌어올렸다.
2020년대에 블록체인을 설계할 때는 해시와 서명 외에는 아무것도 없는 상황을 가정했지만, 같은 시기에 설계된 관측 가능한 프로토콜들은 처음부터 이 모든 기술들을 핵심 구성 요소로 여긴다.
여기서 첫 번째 주목할 만한 기술은 ZK-SNARKs다. ZK-SNARKs는 어떤 계산을 수행하고 그 결과를 도출했다는 것을 증명하는 기술이다. 이를 통해 검증 속도가 직접 계산을 수행하는 것보다 훨씬 빠르게 할 수 있으며, 원래 입력 데이터를 공개하지 않고도 증명을 검증할 수 있다.
2010년대의 ZK-SNARKs와 2016년 12월 Zcash 프로토콜에서 처음 사용된 ZK-SNARKs, 그리고 오늘날의 ZK-SNARKs는 정말로 차이가 크다, 그렇죠?
따라서 최근의 많은 암호 기술들은 거의 알려지지 않은 상태에서 소수의 관심 대상이 되었고, 이후 주류로 진입하여 지금은 거의 기본 설정처럼 여겨진다. 지난 10년 동안 이들 기술은 엄청난 변화와 개선을 겪었다.
“ZK-SNARKs는 프라이버시 측면에서도 매우 유용하며 확장성 측면에서도 마찬가지다. 블록체인이 제공하는 장점은 무엇인가? 개방성, 권한 없이 접근 가능함, 글로벌 검증 가능성 등을 제공한다. 그러나 이 모든 것은 두 가지 중요한 요소를 희생해서 얻는 것이다.
하나는 프라이버시이고, 다른 하나는 확장성이다. ZK-SNARK는 당신에게 프라이버시와 확장성을 다시 돌려준다. 2016년 Zcash 프로토콜을 보았고, 이후 이더리움 생태계에서도 점점 더 많은 사례를 목격하기 시작했다. 현재 거의 모든 곳에서 zkSNARK, 다자간 계산(MPC), 완전 동형 암호(FHE)를 사용하고 있다. 사람들은 zkSNARK만큼은 아니지만 이들 기술에 대해 잘 알고 있다. 그러나 zkSNARK로는 불가능한 일들도 있다. 예를 들어 개인 데이터 위에서 실행되는 프라이버시 보존 컴퓨팅 같은 경우다.
투표 또한 중요한 활용 사례다. zk-SNARK를 통해 어느 정도 수준의 프라이버시를 얻을 수 있지만, 최고 수준의 특성을 원한다면 MPC(다자간 계산)와 FHE(완전 동형 암호)를 사용해야 한다. 많은 암호 기반 AI 애플리케이션들도 결국 MPC와 FHE를 사용하게 되며, 이 두 가지 기술은 지난 10년 동안 효율성이 극적으로 향상된 기초 기술이다. BLS(Boneh-Lynn-Shacham, 집계 서명)는 수만 명의 참여자가 생성한 다수의 서명을 받아서 단일 서명처럼 빠르게 검증할 수 있게 해주는 흥미로운 기술이다.
이 기능은 매우 강력하다. BLS 집계는 실제로 이더리움의 현대적 지분 증명(PoS) 합의의 핵심 기술이다. BLS 집계 이전에 만들어진 지분 증명 합의를 살펴보면, 대부분의 알고리즘이 수백 명의 검증자만 지원하는 데 그쳤다. 반면 이더리움은 현재 약 3만 명의 검증자가 있고, 매 12초마다 서명을 제출한다. 이렇게 가능한 이유는 지난 5~10년 동안 이 새로운 형태의 암호 기술이 사용할 만큼 충분히 최적화되었기 때문이다. 이 새로운 기술들이 가능하게 해주는 것이 너무 많다.”
이 기술들은 빠르게 더욱 강력해지고 있다. 오늘날의 프로토콜은 이 모든 기술을 광범위하게 사용하고 있다. 우리는 전문 암호학에서 범용 암호학으로의 중대한 전환을 경험하고 있다. 즉, 새로운 프로토콜을 만들려면 암호학 작동 원리를 직접 이해해야 했던 시대에서, 특정 용도의 알고리즘을 만들어야 하는 전문 암호학을 거쳐, 이제는 내가 지난 5분 동안 말한 기술들을 사용하는 애플리케이션을 만들기 위해 굳이 암호학자가 될 필요조차 없게 된 것이다.
단지 Circom에서 코드 한 조각을 작성하면, Circom이 이를 검증기와 증명기로 컴파일해주고, 당신은 곧바로 zk-SNARK 애플리케이션을 갖게 된다. 여기서의 과제는 무엇인가? 기본적으로 지난 10년 동안 우리는 이미 멀리 왔다는 점이다. 이제 남은 것은 무엇인가? 오늘날 우리가 가진 기술과 이론적 이상 사이의 간극은 무엇인가? 이것이 바로 연구자들과 학계 인사들이 큰 역할을 할 수 있는 핵심 영역이라고 생각한다.
현재 가장 큰 두 가지 문제는 기본적으로 효율성과 보안이다. 세 번째 문제는 기능 확장이라고 할 수 있겠다.
예를 들어, 우리는 아직 완전히 다루지 못한 기술 중 하나가 무차별 혼합(obfuscation) 기술이다. 만약 실현 가능한 알고리즘이 있다면 정말 놀라울 것이다. 하지만 실제로는 오늘날 우리가 가진 기술들의 효율성과 보안을 높이는 것이 더 중요하다고 본다.”
효율성에 대해 이야기해보자. 구체적인 예로 이더리움 블록체인을 들 수 있다. 이더리움에서 슬롯 시간은 12초다. 블록과 다음 블록 사이의 평균 시간은 12초다. 정상적인 블록 검증 시간, 즉 이더리움 노드가 블록 하나를 검증하는 데 드는 시간은 약 400밀리초다.
반면, zk-SNARK로 일반적인 이더리움 블록 하나를 검증하는 데는 약 20분이 걸린다. 그러나 이 시간은 빠르게 개선되고 있다—2년 전에는 5시간이 걸렸다. 지금의 20분이 평균치지만, 최악의 경우도 여전히 존재한다. 예를 들어, 전체 이더리움 블록이 Zcash 연산을 수행한다면 증명 시간은 20분을 초과할 수 있다.
하지만 2년 전과 비교하면 훨씬 나아졌다. 현재의 목표는 무엇인가? 바로 실시간 증명(real-time proving)이다. 블록이 생성되는 동시에, 다음 블록이 생성되기 전에 해당 블록의 증명을 얻는 것이다. 실시간 증명을 달성하면 어떤 일이 가능해질까? 기본적으로 세계 모든 이더리움 사용자가 쉽게 이더리움 프로토콜을 완전히 검증할 수 있게 된다. 그러나 현재 이더리움 노드를 운영하는 사람은 극소수다. 아카이브 노드는 2TB가 필요하며, 물론 가능하지만 비효율적이다. 브라우저 지갑, 모바일 지갑, 다른 체인의 스마트 계약 내 경량 지갑까지 포함하여 모든 이더리움 지갑이 실제로 이더리움 합의 규칙을 완전히 검증할 수 있다면 어떨까?
일부 사람들은 Infura를 신뢰하지 않는다. 심지어 이더리움 PoS 검증자도 신뢰하지 않고, 직접 규칙을 검증하여 이더리움 블록의 정확성을 스스로 보장한다. 우리는 어떻게 ZK-SNARK로 이를 달성할 수 있을까? 이를 진정으로 실현하려면 ZK-SNARK 증명이 실시간이어야 하며, 모든 이더리움 블록이 5초 이내에 증명될 수 있어야 한다.
문제는, 우리는 그 지점에 도달할 수 있을까? MPC와 FHE에도 유사한 문제가 있다. 앞서 언급했듯이, MPC와 FHE의 전형적인 사용 사례 중 하나가 투표이며, 실제로 이미 사용되고 있다. 약 3주 전, 베트남에서 이더리움 행사가 열렸다. 이 행사에서는 MPC, 즉 암호학적으로 안전한 투표 시스템 중 하나를 프로젝트 및 해커톤 투표에 실제로 사용했다.
MPC의 현재 문제는 일부 보안 속성이 중앙 서버에 의존한다는 점이다. 이러한 신뢰 가정을 분산화할 수 있을까? 가능하다. 하지만 이를 위해서는 MPC와 FHE가 필요하다. 현재 문제는 이러한 프로토콜의 효율을 보장하는 데 큰 오버헤드가 있다는 것이다. ZK-SNARK 위에 FHE를 올리는 상황에서, 일반 사용자가 기본 설정으로 사용할 수 있게 하려면, 한 표당 5달러의 계산 비용이 드는 상황을 허용할 수는 없다, 그렇吧? 대량의 투표를 실시간으로 빠르게 처리할 수 있어야 한다.
그렇다면 우리는 어떻게 ZK-SNARK의 목표를 달성할 수 있을까? 효율성을 높이기 위한 세 가지 주요 접근법이 있다고 본다. 그중 하나는 병렬화와 집계다. 이더리움 블록 하나를 검증하는 데 최대 1천만 단계의 계산이 필요하다고 상상해보자. 각 계산 단계를 분리하여 각각 증명을 만들고, 이후 증명들을 집계하는 것이다. 처음 두 증명을 취해 결합 증명을 만들고, 다음 두 개를 결합하고, 그 후의 두 개도 결합한다. 그런 다음 앞의 두 결합 증명을 다시 결합하여 트리를 형성한다. 이 트리를 약 20단계 올라가면 전체 블록의 정확성을 나타내는 하나의 큰 증명을 얻게 된다.
이것은 현재 기술로도 가능하다. 이론상 블록의 정확성을 5초 이내에 증명할 수 있다. 문제는 무엇인가? 기본적으로 이것은 엄청난 병렬 계산을 필요로 한다, 그렇吧? 1천만 개의 증명이 필요하다. 이를 최적화할 수 있을까? 병렬화와 집계 증명을 최적화할 수 있을까? 답은 ‘그렇다’다. 이를 어떻게 할 수 있을지에 대한 이론적 아이디어가 많이 있다. 그러나 이것들이 실제로 구현되어야 한다. 알고리즘 개선, 저수준 개선, 하드웨어 설계 개선, 효율성 개선이 결합된 문제이므로 ASIC도 매우 중요하다. 모두 ASIC이 채굴에 얼마나 중요한지 알고 있다, 그렇吧? 2013년 ASIC이 처음 등장했을 때 비트코인 해시 파워가 어떻게 급속도로 증가했는지 기억할 것이다.
ASIC은 매우 강력하다, 그렇吧? 동일한 하드웨어 비용과 전기료로 ASIC의 해시 성능은 GPU보다 기본적으로 100배에 달한다. 그렇다면 SNARK 증명에도 같은 이점을 가져올 수 있을까? 나는 가능하다고 생각한다. 그래서 점점 더 많은 기업들이 실제로 zk-SNARK 증명을 전담하는 ASIC을 제작하기 시작하고 있다. zkEVM용일 수도 있지만, 사실상 매우 범용적이어야 한다. 어떤 종류의 계산이라도 증명할 수 있는 SNARK ASIC을 만들 수 있어야 한다. 이를 통해 20분에서 5초로 단축할 수 있을까?
마지막으로, 효율성 향상이다, 그렇吧? 따라서 우리는 더 나은 zk-SNARK 알고리즘이 필요하다. Groth16, 조회 테이블, 64비트 SNARK, STARK, 32비트 STARK 등 다양한 아이디어가 있다. SNARK 알고리즘의 효율성을 더 높일 수 있을까? SNARK 친화적인 해시 함수, SNARK 친화적인 서명 알고리즘을 더 많이 만들 수 있을까? 여기에는 많은 아이디어가 있으며, 이 분야에 많은 노력을 기울이기를 적극 권장한다.
주요 보안 문제는 버그(bugs)다, 그렇吧? 버그는 사람들이 거의 이야기하지 않지만 매우 중요한 문제라고 생각한다, 그렇吧? 기본적으로 우리는 놀라운 암호 기술을 모두 가지고 있지만, 회로에 결함이 있을까 걱정되면 사람들은 그것을 신뢰하지 않을 것이다, 그렇吧? zk-SNARK든 zkEVM이든 7,000줄의 코드를 가진다. 이는 매우 효율적인 경우다. 일반적으로 천 줄당 15~50개의 버그가 존재한다. 이더리움은 노력하여 천 줄당 15개 미만의 버그를 유지하지만, 0은 아니다, 그렇吧? 수십억 달러의 자산을 보유한 시스템에서 버그가 발생하면, 암호 기술이 아무리 발전했더라도 돈은 사라진다.
문제는, 기존 암호 기술을 활용하면서 버그를 줄이기 위해 무엇을 할 수 있을까? 현재 사용되는 기본 기술은 보안 위원회(security council)다. 기본적으로 이더리움 내에서 몇 명을 모아, 그 중 대부분(예: 75% 이상)이 버그가 있다고 판단하면, 증명 시스템이 주장하는 모든 것을 무효화할 수 있다. 이는 상당히 중심화된 시스템이지만, 현재로서는 최선의 방법이다. 가까운 미래에는 다중 증명(multiple proofs)이 등장할 것이다. 스타크넷(Starknet)의 예를 들어보자. 스타크넷은 이더리움 기반 롤업 중 하나다. 여러 증명 시스템이 있다면, 이론적으로 잔여(redundancy)를 이용해 각 시스템이 버그를 가질 위험을 낮출 수 있다. 세 개의 증명 시스템이 있다면, 하나에 오류가 있어도 다른 두 시스템이 정확히 같은 지점에서 오류를 일으킬 가능성은 낮을 것이다.
마지막으로, 미래에 흥미롭게 연구할 만한 것은 인공지능 도구를 사용하는 것으로, 형식 검증(formal verification)을 위한 새 도구를 활용할 수 있지 않을까? 예를 들어 수학적으로 zkEVM과 같은 것이 버그가 없음을 증명하는 것이다, 그렇吧? 기본적으로 zkEVM 구현이 이더리움 구현과 정확히 동일한 EVM 코드 기능을 검증하고 있는지를 실제로 증명할 수 있을까? 예를 들어, 모든 가능한 입력에 대해 하나의 출력만 존재함을 증명할 수 있을까? 만약 이러한 것들을 진정으로 증명할 수 있다면, 언젠가는 버그 없는 zkEVM 세상을 실현할 수 있을지도 모른다.
정말 미친 일이다, 그렇吧? 왜냐하면 지금까지 누구도 그렇게 복잡한 무결점 프로그램을 만들어낸 적이 없기 때문이다. 하지만 2019년에는 누구도 인공지능이 실제로 아름다운 이미지를 생성할 수 있을 것이라고 생각하지 않았다, 그렇吧? 그래서 우리는 오늘날 얼마나 큰 진전을 이루었는지 보고 있다. 우리는 AI의 능력을 보고 있다. 이제 질문은, 이러한 유사한 도구를 실제로 천 줄이 넘는 코드에 걸쳐 복잡한 문장을 자동으로 수학적으로 증명하는 실제 과제에 적용할 수 있을까 하는 것이다. 나는 이것이 흥미로운 공개 과제이며 주목할 만하다고 생각한다.
집계 서명의 효율성에 대해 말하자면, 현재 이더리움에는 3만 명의 검증자가 있으며, 노드 운영 조건이 매우 까다롭다, 그렇吧? 내 노트북에도 이더리움 노드가 있지만, 작동은 하지만 저렴한 노트북은 아니다. 게다가 직접 하드디스크를 업그레이드해야 했다. 이더리움의 이상적인 목표는 가능한 한 많은 검증자를 지원하는 것이다.
지분 증명을 가능한 한 민주화하여, 사람들이 규모에 관계없이 직접 검증에 참여할 수 있기를 원한다. 이더리움 노드 운영 조건을 매우 낮추고, 사용하기 매우 쉬우며, 이론과 프로토콜을 최대한 단순하게 만들고 싶다. 여기서의 이론적 한계는 무엇인가? 각 참가자가 각 시간 단위마다 서명에 참여했는지 여부를 방송해야 하므로, 데이터 당 최소 1비트가 필요하다.
이것이 가장 기본적인 제한이며,이를 넘어서면 다른 제한은 없다. 계산에는 하한이 없으며, 집계 증명, 재귀 증명 트리, 서명, 다양한 집계 서명 등을 만들 수 있다. STARK를 사용하거나 격자 기반 암호학, 32비트 STARK 등을 사용할 수 있으며, 다양한 기술을 활용할 수 있다.
문제는, 우리는 서명 집계를 어느 정도까지 최적화할 수 있을까? 여기서 피어 투 피어(p2p) 보안이 중요한데, 사람들은 p2p 네트워크에 대해 충분히 고려하지 않는다. 특히 강조하고 싶은 점인데, 암호 분야에서는 종종 p2p 네트워크 위에 화려한 구조를 만들고 나면 p2p 네트워크 자체는 잘 작동할 것이라고 생각하는 경향이 있다.
여기에는 숨겨진 많은 위험이 있다, 그렇吧? 나는 이러한 위험이 점점 더 복잡해질 것이라고 생각한다. 비트코인에서 p2p 네트워크가 작동하는 방식은 2010년대에는 각 노드가 모든 정보를 볼 수 있었다. 물론 일식 공격(eclipse attack), 서비스 거부 공격, 각종 공격이 가능했다.
하지만 매우 단순한 네트워크에서 네트워크의 유일한 임무가 모든 사람이 모든 정보를 받는 것이라면 문제는 비교적 단순하다. 문제는 이더리움의 규모가 커지면서 p2p 네트워크가 점점 더 복잡해졌다는 점이다. 오늘날의 이더리움 p2p 네트워크는 이미 64개의 샤딩(sharding)을 가지고 있다, 그렇吧?
서명 집계를 위해, 현재처럼 매 시간 단위에 3만 개의 서명을 처리하기 위해 우리는 64개의 서로 다른 서브 네트워크로 분할된 p2p 네트워크를 가지고 있다. 각 노드는 이 중 하나 또는 몇 개의 네트워크에만 속한다. 데이터 가용성 샘플링(data availability sampling)은 블록에 대한 데이터 공간을 제공하여 확장성을 실현하는 이더리움 기술이다. 이는 롤업 비용을 매우 낮게 유지하는 두 가지 프로젝트 중 하나다.
이 또한 더욱 복잡한 p2p 아키텍처에 의존한다. 아래는 피어 노드 다이어그램인데, 이 설정에서 각 노드는 전체 데이터의 1/8만 다운로드할 수 있다. 그렇다면 이런 네트워크가 정말 안전할까? 그 안전성을 보장할 수 있을까? 보장률을 최대한 높일 수 있을까? 우리가 의존하는 이더리움의 p2p 네트워크 보안을 어떻게 보호하고 향상시킬 수 있을까?
기본적으로 이 지점에서 우리는 암호 기술의 한계에 도달할 수 있는 프로토콜에 주목해야 한다. 우리의 암호 기술은 10년 전보다 훨씬 강력해졌지만, 더 강력해질 여지가 있다. 이 시점에서 우리는 한계가 무엇인지, 어떻게 진정으로 그 한계에 도달할 수 있는지 연구하기 시작해야 한다고 생각한다.
여기에는 동등하게 중요한 두 가지 분야가 있다. 하나는 효율성의 지속적인 향상이다. 우리는 모든 것을 실시간으로 증명하는 세상을 원한다. 탈중앙화 프로토콜 내에서 블로그를 통해 전달되는 모든 메시지가 기본적으로 해당 메시지와 그 메시지가 의존하는 모든 것이 프로토콜 규칙을 따르고 있음을 증명하는 zk-SNARK를 첨부하는 세상을 보고 싶다.
두 번째 선도 분야는 보안성 향상이다. 근본적으로 오류 가능성을 줄여, 프로토콜이 의존하는 실제 기술이 매우 강력하고 신뢰할 수 있어 사람들이 최대한 의존할 수 있도록 하는 것이다. 버그가 있는 프로젝트가 있더라도, 사람들은 암호 기술이 아닌 인간을 계속 신뢰한다.
하지만 우리가 반복적으로 목격한 바와 같이, 다중 서명(Multisignature)도 해킹될 수 있으며, 그러한 레이어2 프로젝트들이 많다. 이 중 두세 프로젝트의 자산은 실제로 다중 서명으로 통제되지만, 어찌됐든 아홉 프로젝트 중 다섯이 동시에 해킹되어 막대한 자금 손실이 발생했다. 우리가 이 세상을 넘어서고자 한다면, 실제로 사용 가능한 기술을 신뢰하고 규칙을 암호 기술을 통해 시행해야 하며, 소수의 인간 집단이 규칙 준수를 보장한다고 믿어서는 안 된다.
하지만 이를 위해서는 코드가 신뢰할 만해야 한다. 문제는, 우리가 코드를 신뢰할 수 있게 만들 수 있을까? 네트워크를 신뢰할 수 있게 만들 수 있을까? 이러한 제품과 프로토콜의 경제성을 신뢰할 수 있게 만들 수 있을까? 나는 이것이 핵심 과제들이며, 함께 지속적으로 개선해 나가기를 바란다. 감사합니다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News










