0Pricing
Cryptology Academy · 강의

BLS 서명과 집계 서명 체계

BLS12-381 페어링과 서명 집계를 살펴보고 Ethereum 2.0이 BLS로 검증자의 부담을 줄이는 방식을 알아봅니다.

BLS 서명과 집계 서명 체계은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

쌍선형 페어링: 수학적 기반

BLS 서명은 타원곡선에서 수행되는 수학적 연산인 쌍선형 페어링에 의존합니다. 페어링 e: G1 x G2 -> GT는 두 군(G1, G2)의 점 쌍을 대상 군 GT로 매핑합니다. 핵심 속성은 쌍선형성입니다. 즉, 스칼라 a, b와 점 P, Q에 대해 e(aP, bQ) = e(P, Q)^(ab)가 성립합니다. 이를 통해 이산 로그를 알지 못해도 군 원소 사이의 관계를 확인할 수 있습니다. 암호학에서 가장 널리 사용되는 페어링 곡선은 BLS12-381이며, 128비트 보안 수준, 작은 군 원소 크기(G1에서 48바이트, G2에서 96바이트), 효율적인 페어링 계산을 위해 선택되었습니다.

BLS 서명 구성

BLS(Boneh-Lynn-Shacham) 서명은 다음과 같이 작동합니다. 키 생성: 비밀 키 x는 무작위 스칼라이고, 공개 키 PK = x * G이며 G는 G2 생성원입니다. 서명: 메시지 m이 주어지면 G1에서 H = hash-to-curve(m)을 계산한 다음 sigma = x * H를 계산합니다. 서명 sigma는 단일 G1 점이며 BLS12-381에서 48바이트입니다. 검증: e(sigma, G) == e(H, PK)인지 확인합니다. 쌍선형성에 따라 e(x*H, G) = e(H, G)^x = e(H, x*G) = e(H, PK)가 성립합니다. 보안은 co-CDH 가정에 의존합니다. H와 x*G가 주어졌을 때 x를 알지 못하면 x*H를 계산하기 어렵다는 가정입니다.

서명 집계: 핵심 혁신

BLS 서명은 비대화형 집계를 지원합니다. 공개 키 PK_1, ..., PK_n을 가진 서명자들이 메시지 m_1, ..., m_n에 대해 생성한 서명 sigma_1, ..., sigma_n이 주어지면, 집계자는 타원곡선 점 덧셈을 사용하여 sigma_agg = sigma_1 + sigma_2 + ... + sigma_n을 계산합니다. 집계 서명은 n과 관계없이 하나의 48바이트 값입니다. 검증에는 n+1회의 페어링 연산이 필요합니다. 즉, e(sigma_agg, G) == product(e(H_i, PK_i))인지 확인합니다. 모든 서명자가 동일한 메시지에 서명하는 일반적인 경우에는 검증이 2회의 페어링으로 줄어듭니다. e(sigma_agg, G) == e(H, sum(PK_i))인지 확인하면 됩니다.

악성 키 공격과 방어

단순한 BLS 집계는 악성 키 공격에 취약합니다. 공격자는 PK_adv = x_adv*G - PK_honest를 등록합니다. 집계 키 PK_agg = PK_honest + PK_adv = x_adv*G가 되므로 공격자가 이를 완전히 통제할 수 있습니다. 방어 방법은 다음과 같습니다. (1) 소유 증명(PoP): 각 서명자가 등록할 때 자신의 공개 키에 서명하여 비밀 키를 알고 있음을 증명합니다. (2) 메시지 확장: 각 서명자의 공개 키를 해당 서명자의 메시지에 포함합니다. (3) 선형성 제거(BGLS): 집계 전에 각 공개 키에 hash(PK_i, all_PKs)를 곱하여 공격을 가능하게 하는 선형성을 깨뜨립니다. Ethereum은 검증자 등록에 PoP를 사용합니다.

Ethereum 2.0의 BLS 사용

Ethereum의 합의 계층(비콘 체인)은 BLS12-381 집계를 광범위하게 사용합니다. 각 슬롯마다 약 400,000명 이상의 활성 검증자가 체인 헤드에 증명을 보냅니다. 집계가 없다면 모든 서명을 저장하는 데 슬롯당 약 400,000 * 96바이트 = 38 MB가 필요합니다. 위원회별로 BLS 집계를 사용하면 일반적으로 512명의 검증자로 구성된 각 위원회가 96바이트 집계 서명 하나를 생성하므로, 슬롯당 전체 서명 데이터가 킬로바이트 수준으로 줄어듭니다. 비콘 체인 블록 본문에는 집계 증명이 포함됩니다. 여기에는 참여한 검증자를 나타내는 비트 필드와 각 위원회에 대한 BLS 집계 서명 하나가 들어 있습니다.

BLS와 ECDSA 성능 비교

BLS 서명 연산은 ECDSA와 다른 성능 특성을 보입니다. BLS 서명에는 해시-대-곡선 한 번과 스칼라 곱셈 한 번이 필요합니다(최신 하드웨어에서 약 1ms). BLS 검증에는 두 번의 페어링 연산이 필요합니다(각각 약 3~5ms, 총 약 6~10ms). ECDSA 서명에는 점 곱셈 한 번이 필요하고(약 0.2ms), 검증에는 점 곱셈 두 번이 필요합니다(약 0.4ms). BLS 검증은 서명 하나당으로는 느리지만 집계하면 훨씬 빠릅니다. 집계된 BLS 서명 1,000개를 검증하는 데는 총 약 10ms가 걸리는 반면, 개별 ECDSA 서명 1,000개를 검증하는 데는 약 400ms가 걸립니다. 교차점은 약 2~3개의 서명입니다.

임계값 BLS 서명

임계값 BLS는 집계를 비밀 공유로 확장합니다. (t, n) 임계값 방식에서는 BLS 스칼라 필드 위에서 Shamir 비밀 공유를 사용하여 비밀 키를 n개의 공유로 나눕니다. 각 공유 보유자 i는 sigma_i = sk_i * H(m)이라는 부분 서명을 생성합니다. 임의의 t개 부분 서명은 라그랑주 보간 계수를 사용하여 sigma = sum(lambda_i * sigma_i)로 결합할 수 있습니다. 그 결과는 원래 키로 생성한 서명과 동일하지만, 어느 단일 주체도 완전한 키를 보유하지 않습니다. 임계값 BLS는 분산 검증자 기술(DVT), MPC 지갑, Fireblocks와 Web3Auth 같은 임계값 서명 서비스에서 사용됩니다.

Filecoin 네트워크의 BLS

Filecoin은 저장 증명 시스템과 거래 서명에 BLS 서명을 사용합니다. 저장 채굴자는 BLS 집계를 사용하여 여러 증명을 집계함으로써 체인상 검증 비용을 줄입니다. Filecoin의 메시지 풀도 여러 거래 서명을 하나의 집계 서명으로 결합하여 블록 크기를 줄입니다. Filecoin 구현은 IETF BLS 초안 표준(RFC 9380에 따른 해시-대-곡선, BLS12-381 곡선)을 사용하며, 공개 키가 G1(48바이트)에 있고 서명이 G2(96바이트)에 있는 최소 공개 키 크기 변형을 사용합니다. 이는 Ethereum의 관례와 반대입니다.

Zcash와 프라이버시 프로토콜의 BLS

Zcash는 주로 Groth16 zk-SNARK 증명을 사용하지만, BLS 페어링은 많은 페어링 기반 영지식 구성의 토대입니다. Groth16 검증 방정식은 페어링 확인입니다. e(A, B) = e(alpha, beta) * e(vk, C)이며, A, B, C는 증명 원소입니다. Ethereum의 EIP-4844 블롭 거래와 다양한 ZK 롤업 시스템에서 사용되는 KZG 다항식 커밋먼트도 BLS12-381 페어링에 의존합니다. 다항식 f(x)에 대한 커밋먼트는 C = f(tau)*G이고, 평가 증명은 페어링으로 검증됩니다. BLS12-381은 효율적인 페어링 연산과 128비트 보안 수준 때문에 특별히 선택되었습니다.

BLS를 넘어선 집계 가능한 서명

BLS가 집계 가능한 유일한 서명 방식은 아닙니다. Schnorr 서명은 키 집계를 지원합니다. 예를 들어 Bitcoin Taproot에서 사용되는 MuSig2에서는 여러 서명자가 단일 서명자가 생성한 서명과 구별할 수 없는 하나의 Schnorr 서명을 생성합니다. FROST(유연한 라운드 최적화 Schnorr 임계 서명)는 두 라운드에 걸쳐 임계값 Schnorr 서명을 제공합니다. 그러나 Schnorr 집계는 서명자 간 상호작용이 필요하므로(BLS의 비대화형 집계와 다름) 대규모 검증자 집합에는 적합성이 떨어집니다. BLS는 비대화형 집계와 효율적인 일괄 검증 덕분에 블록체인 합의에서 여전히 선호됩니다.

BLS의 양자 내성 전망

BLS 서명은 양자 컴퓨터에서 Shor 알고리즘을 실행할 경우 취약해지는 타원 곡선 페어링을 기반으로 합니다. 충분히 강력한 양자 컴퓨터라면 BLS12-381에서 이산 로그를 계산하여 기존의 모든 BLS 서명을 무력화하고 Ethereum의 합의 보안을 무너뜨릴 수 있습니다. 시점은 불확실하지만 NIST는 암호학적으로 유의미한 양자 컴퓨터가 등장하기까지 15~20년이 걸릴 것으로 추정합니다. Ethereum 및 기타 BLS 의존 체인은 이러한 위협이 현실화되기 전에 양자 내성 서명 방식(CRYSTALS-Dilithium/ML-DSA 또는 SPHINCS+/SLH-DSA)으로 마이그레이션해야 합니다. 이를 위해서는 검증자 등록, 증명 형식 및 집계 검증에 대한 프로토콜 수준의 변경이 필요합니다.

BLS 집계 퀴즈

Ethereum의 합의 계층에서 BLS 서명 집계가 제공하는 가장 큰 장점은 무엇입니까?

BLS 서명 복습

BLS 서명은 BLS12-381 곡선에서의 쌍선형 페어링을 사용합니다. 서명은 48바이트 G1 점이고, 공개 키는 Ethereum의 규칙에 따라 96바이트 G2 점입니다. 비대화형 집계를 사용하면 n개의 서명을 하나의 48바이트 값으로 결합할 수 있으며, n+1회의 페어링으로 검증합니다. 검증자 등록 중 소유 증명을 사용하면 악성 키 공격을 완화할 수 있습니다. Ethereum은 BLS를 사용하여 슬롯마다 발생하는 400,000개 이상의 검증자 증명을 킬로바이트 단위로 압축합니다. 임계값 BLS를 사용하면 단일 키 보유자 없이 분산 검증자를 운영할 수 있습니다. BLS는 페어링 기반이며 양자 내성을 갖추지 못했으므로 향후 마이그레이션이 필요합니다.

자주 묻는 질문

“BLS 서명과 집계 서명 체계” 강의는 무료인가요?

네 — “BLS 서명과 집계 서명 체계” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“BLS 서명과 집계 서명 체계”에서 뭘 배우나요?

BLS12-381 페어링과 서명 집계를 살펴보고 Ethereum 2.0이 BLS로 검증자의 부담을 줄이는 방식을 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“BLS 서명과 집계 서명 체계” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 지분 증명의 암호학적 메커니즘
  2. BFT 프로토콜: PBFT와 Tendermint
  3. 합의에서의 검증 가능한 무작위 함수
  4. BLS 서명과 집계 서명 체계
← Cryptology Academy(으)로 돌아가기