분산 키 생성 프로토콜
어느 한 당사자도 전체 비밀을 알 수 없는 상태에서 당사자들이 공동으로 공유 키를 생성하는 DKG 프로토콜을 살펴봅니다.
분산 키 생성 프로토콜은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
DKG의 목표와 동기
분산 키 생성(DKG)은 임계 암호학에서 신뢰할 수 있는 딜러 문제를 해결합니다. DKG가 없으면 중앙 참여자가 키 쌍을 생성하고 공유값을 분배해야 하며, 그 과정에서 잠시라도 전체 개인 키를 알게 됩니다. DKG를 사용하면 조정자를 포함해 어느 한 참여자도 개인 키를 알 수 없는 프로토콜을 통해 n명의 참여자가 공개 키와 개인 키 쌍을 공동으로 생성할 수 있습니다.
Pedersen DKG(1991)
Pedersen DKG는 1991년에 발표된 최초의 실용적인 DKG 프로토콜입니다. n명의 참여자는 각각 무작위 비밀 s_i를 생성하고 검증 가능한 비밀 공유(VSS) 프로토콜을 실행하여 이를 공유합니다. 각 참여자는 자신의 다항식 계수에 대한 커밋먼트를 모든 참여자에게 공개합니다. 모든 참여자가 자신의 기여분을 공유하면 결합된 비밀은 모든 s_i 값의 합이 되고, 각 참여자는 이 합에 대한 공유값을 보유하게 됩니다.
구성 요소로서의 Feldman VSS
Feldman VSS(Feldman이 1987년에 제안한 검증 가능한 비밀 공유)는 대부분의 DKG 프로토콜을 구성하는 핵심 요소입니다. 딜러는 다항식 계수를 군 원소로 커밋합니다(C_j = g^{a_j} mod p). 공유값 f(i)를 받은 각 참여자는 g^{f(i)}가 C_j^{i^j}의 곱과 같은지 확인하여 이 공유값을 커밋먼트와 대조할 수 있습니다. 이를 통해 참여자들은 딜러가 잘못된 공유값을 보냈는지 탐지할 수 있습니다.
Joint-Feldman DKG와 한계
Joint-Feldman DKG는 모든 n명의 참여자에 대해 Feldman VSS를 병렬로 실행하며, 각 참여자는 자신의 비밀에 대한 딜러 역할을 합니다. 이후 참여자들은 잘못된 공유값을 받으면 이의를 제기합니다. 최종 키는 이의가 제기되지 않은 딜러들의 비밀을 합한 값입니다. 그러나 Joint-Feldman DKG는 프로토콜 메시지를 바탕으로 참여자를 적응적으로 손상시키는 공격자에 대해서는 안전하지 않습니다. 이러한 약점은 Gennaro, Jarecki, Krawczyk, Rabin에 의해 밝혀졌습니다.
GJKR 안전한 DKG
GJKR DKG 프로토콜(Gennaro, Jarecki, Krawczyk, Rabin, 1999년 및 2007년)은 Joint-Feldman의 약점을 해결했습니다. GJKR은 Feldman VSS 대신 정보 이론적으로 비밀을 숨기는 커밋먼트를 사용하는 Pedersen VSS를 적용하고, 참여자들이 잘못된 공유값에 이의를 제기할 수 있는 이의 제기 라운드를 추가합니다. 그 결과 얻어지는 DKG는 적응형 공격자에 대해 안전하며, 안전한 DKG의 표준적인 이론 참고 모델이 되었습니다.
DKG 통신 라운드
GJKR DKG에는 세 라운드가 필요합니다. 커밋먼트 라운드에서는 각 참여자가 VSS 커밋먼트를 공개하고, 공유값 라운드에서는 참여자들이 서로에게 일대일로 공유값을 보내며, 이의 제기 라운드에서는 잘못된 공유값에 대한 이의를 공개합니다. 이의를 해결하지 못한 참여자는 자격을 박탈당합니다. 네 번째 라운드에서는 유효한 참여자들의 기여분을 결합하여 최종 공개 키와 분산된 개인 키 공유값을 생성합니다.
Ethereum 검증자 키의 DKG
Ethereum의 검증자 키 관리에서는 분산 검증자 기술(DVT)을 위해 DKG를 사용합니다. EIP-4844와 DVT 생태계(Obol Network, SSV Network)는 BLS12-381 위의 임계 BLS 서명을 사용하여 어느 한 운영자도 전체 검증자 키를 알지 못한 채 검증자 위원회가 블록에 서명할 수 있도록 합니다. 이를 통해 검증자의 장애 허용성이 향상되고 키 손상으로 인한 슬래싱 위험이 줄어듭니다.
DRAND 분산 난수 비콘
DRAND는 예측할 수 없는 난수를 생성하기 위해 Ethereum 비콘 체인에서 사용하는 분산 난수 비콘입니다. DRAND는 엔트로피 연합의 노드 집합(Cloudflare, EPFL, Protocol Labs 등) 사이에서 DKG를 실행하여 임계 BLS 키를 생성합니다. 각 라운드마다 t-of-n 노드가 부분 서명을 제공하고, 이를 결합하여 예측할 수 없는 난수 값을 만듭니다. 어느 한 노드도 결과를 편향시키거나 예측할 수 없습니다.
Schnorr와 ECDSA의 DKG 비교
DKG는 ECDSA보다 Schnorr/EdDSA 임계 방식에서 훨씬 간단합니다. Schnorr 임계 방식에서는 분산된 개인 키가 참여자 비밀의 단순한 합(x = x1 + x2 + ... + xn)이고, 공개 키는 공개 키 공유값의 합(X = X1 + X2 + ... + Xn)입니다. ECDSA에서는 비선형성 때문에 DKG가 곱셈 공유값을 생성해야 하므로 더 복잡한 프로토콜이 필요합니다.
키 공유값 갱신 프로토콜
장기간 유지되는 임계 키 공유값은 공격자가 시간이 지나면서 참여자를 서서히 손상시키면 점진적으로 탈취될 수 있습니다. 능동적 비밀 공유(갱신 프로토콜)는 기반이 되는 키를 변경하지 않고 주기적으로 공유값에 새로운 무작위성을 부여합니다. 갱신이 끝나면 갱신 전의 공유값은 쓸모없어지므로 취약한 상태가 지속되는 기간이 제한됩니다. GJKR과 그 파생 프로토콜에는 초기 DKG와 같은 구조로 실행되는 갱신 프로토콜이 포함되어 있습니다.
실용적인 DKG 구현
DKG는 여러 운영 시스템에 구현되어 있습니다. Ethereum DVT 클라이언트인 Obol Charon은 BLS12-381에서 Pedersen VSS를 사용하는 DKG 키 생성 행사를 진행합니다. Silence Laboratories의 Silent Shard는 모바일 MPC 지갑에 DKG를 사용합니다. dkg-go 라이브러리는 Go 애플리케이션을 위해 GJKR을 구현합니다. Threshold Network(이전 명칭 Keep Network)는 Bitcoin에서 tBTC를 보호하는 임계 ECDSA 서비스에 DKG를 사용합니다.
Pedersen DKG 퀴즈
단일 신뢰 딜러 방식보다 Pedersen DKG를 우수하게 만드는 핵심 특성은 무엇인가요?
DKG 프로토콜 복습
DKG는 n명의 참여자가 임계 키 쌍을 공동으로 생성하도록 하여 신뢰할 수 있는 딜러를 없앱니다. 이 과정에서 어느 참여자도 개인 키를 알 수 없습니다. Pedersen DKG에서는 각 참여자가 자신의 기여분에 대해 VSS를 실행합니다. GJKR은 이의 제기 라운드를 통해 적응형 공격자에 대한 보안을 추가합니다. DKG는 Ethereum DVT(Obol, SSV), DRAND 난수 비콘, 운영용 MPC 지갑 시스템의 기반입니다. 갱신 프로토콜은 공유값에 주기적으로 새로운 무작위성을 부여하여 보안을 확장합니다.
자주 묻는 질문
“분산 키 생성 프로토콜” 강의는 무료인가요?
네 — “분산 키 생성 프로토콜” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“분산 키 생성 프로토콜”에서 뭘 배우나요?
어느 한 당사자도 전체 비밀을 알 수 없는 상태에서 당사자들이 공동으로 공유 키를 생성하는 DKG 프로토콜을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“분산 키 생성 프로토콜” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 임계값 서명 체계: 개념
- 임계값 ECDSA: 다자간 서명
- 분산 키 생성 프로토콜
- 블록체인과 HSM의 임계값 체계