﻿---
title: "암호학적 누산기"
description: "RSA 및 해시 기반 설계, 멤버십과 비멤버십 증인, 동적 업데이트, 블록체인 활용과 운영 위험을 다루는 검증 중심의 암호학적 누산기 안내서입니다."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 암호학적 누산기

> 교육 목적으로만 제공되며 투자 조언이나 암호 구현 조언이 아닙니다. 누산기 증명은 하나의 커밋먼트에 대한 주장을 인증할 뿐, 기초 데이터나 합의 상태 또는 데이터 가용성 자체를 인증하지 않습니다.

<a id="answer"></a>

## 바로 답하기

암호학적 누산기는 집합을 짧은 값으로 커밋하고, 어떤 원소가 커밋된 집합에 속하는지를 간결한 증인으로 검증할 수 있게 합니다. 일부 방식은 비멤버십도 증명합니다. 검증자에게는 누산기 값, 원소, 증인, 방식의 공개 매개변수가 필요하지만 집합의 다른 모든 원소는 필요하지 않습니다.

집합이 바뀐 뒤 다시 만들어야 하는 누산기는 **정적**, 원소를 추가하거나 삭제할 때 누산기와 증인을 효율적으로 갱신할 수 있으면 **동적**, 멤버십과 비멤버십 증명을 모두 지원하면 **범용** 누산기입니다. 이 명칭들은 서로 별개의 기능을 가리키므로 동적 방식이 자동으로 범용 방식이 되는 것은 아닙니다.

블록체인은 거래, 미사용 출력, 계정, 검증자 또는 폐기 기록에 커밋할 수 있습니다. 커밋먼트가 작으면 일부 참여자가 보관하는 상태를 줄일 수 있지만, 시스템은 여전히 기초 데이터와 최신 증인을 배포하고, 업데이트를 인증하며, 체인 재구성을 처리하고, 누가 집합을 변경할 수 있는지 정해야 합니다.

<a id="mechanism"></a>

## 작동 원리

1. **집합을 정확히 명시합니다.** 원소의 정규 인코딩, 중복 처리, 필요한 경우의 정렬 규칙, 도메인 분리, 정확한 커밋먼트 버전을 정의합니다. 한 인코딩이나 상태 루트에 대한 증명은 다른 것에 관해 아무것도 보장하지 않습니다.
2. **방식의 설정 절차를 실행합니다.** 해시 기반 누산기는 공개 해시 매개변수만 사용할 수 있습니다. RSA 누산기는 일반적으로 RSA 모듈러스 `N` 에서 구성한 미지 차수 군을 사용하며, 권한 없는 당사자가 그 인수분해를 악용할 수 없어야 안전합니다. 다른 방식은 서로 다른 신뢰 가정 아래 페어링, 유군, 격자 또는 추가 공개 매개변수를 사용할 수 있습니다.
3. **원소를 대수 구조에 매핑합니다.** 단순화한 RSA 구성에서는 각 원소 `x_i` 를 서로 다른 소수 대표값 `p_i` 로 결정론적으로 매핑합니다. 밑을 `g` 라고 하면 누산기는 다음과 같습니다.

   `A = g^(p_1 * p_2 * ... * p_n) mod N`

4. **멤버십 증인을 만듭니다.** `p_i` 로 표현한 원소에 대해서는 지수에서 해당 인수를 제외합니다.

   `w_i = g^(product of p_j for all j != i) mod N`

5. **정확한 누산기를 기준으로 검증합니다.** 검증자는 입력이 정규 형식인지 확인하고 다음 식을 계산합니다.

   `w_i^(p_i) mod N = A`

   이 방식의 보안 가정 아래에서는 누산된 집합 밖의 원소로 이 등식을 성립시키는 것이 현실적으로 불가능해야 합니다. 그러나 이 등식은 원소 자체가 사실이거나 허가되었음을 입증하지 않습니다.
6. **업데이트와 비멤버십을 별도로 처리합니다.** 동적 방식은 추가와 삭제가 `A` 를 어떻게 바꾸고 영향받은 증인을 어떻게 갱신하는지 정의합니다. 범용 방식은 별도의 비멤버십 증인과 검증 알고리즘을 추가합니다. 구현은 오래된 증인과 다른 상태에 연결된 업데이트를 거부해야 합니다.
7. **해시 기반 구조는 실제 비용으로 비교합니다.** 넓은 의미에서 머클 트리도 해시 기반 누산기입니다. 루트는 짧지만 멤버십 증명에는 경로상의 형제 해시가 들어가므로 잎 개수에 따라 로그 규모로 커집니다. RSA 계열 방식은 개별 증인의 크기를 일정하게 유지할 수 있지만 증명 생성, 증인 유지, 설정, 계산에는 서로 다른 비용이 듭니다.

<a id="example"></a>

## 계산 예시

- **머클 증명 크기.** 잎이 `1,048,576 = 2^20` 개인 균형 이진 머클 트리는 하나의 포함 경로에 `20` 개의 형제 해시가 필요합니다. 해시가 32바이트라면 잎 데이터, 위치 비트, 직렬화 오버헤드를 제외하고 `20 * 32 = 640 bytes` 입니다. 루트는 32바이트로 유지됩니다.
- **일정한 크기가 일정한 작업량을 뜻하지는 않습니다.** 단순화한 RSA 구성에서는 집합이 커져도 `A` 와 하나의 `w_i` 는 각각 하나의 군 원소로 유지됩니다. 그래도 곱 지수, 소수 대표값 생성, 일괄 업데이트, 갱신된 증인 배포에는 상당한 계산이나 보조 데이터가 필요할 수 있습니다.
- **UTXO 누산기는 누가 무엇을 저장하는지를 바꿉니다.** 압축 상태 노드는 미사용 출력의 누산기를 보관하고, 출력과 최신 멤버십 증명을 함께 받았을 때만 지출을 검증할 수 있습니다. 다른 참여자는 그런 증명을 만들기에 충분한 상태를 계속 보관해야 하며, 업데이트 시에는 사용한 출력을 제거하고 새로 생성된 출력을 추가해야 합니다.
- **폐기에도 같은 경계가 적용됩니다.** 자격 증명 보유자는 식별자가 유효 회원 누산기에 남아 있음을 증명하거나, 범용 설계를 사용해 폐기 집합에 없음을 증명할 수 있습니다. 증명은 발급자가 커밋한 집합을 인증할 뿐, 발급자가 공정하거나 올바른 폐기 정책을 적용했음을 입증하지 않습니다.

<a id="risks"></a>

## 위험

- 모호하거나 비정규적인 원소 인코딩을 사용해 논리적으로 같은 항목이 서로 다르게 매핑되도록 허용하는 것.
- 원소를 소수 대표값으로 잘못 매핑하거나 방식에서 요구하는 충돌 제어를 적용하지 않는 것.
- 설정 당사자나 공격자가 인수분해를 알고 있을 수 있는 RSA 모듈러스를 신뢰하는 것.
- 기록, 참여자 가정, 매개변수 결합을 확인하지 않고 다자간 설정 행사를 안전하다고 보는 것.
- 인증된 이전 규칙 없이 관리자가 공개 매개변수나 누산기 버전을 교체하도록 허용하는 것.
- 오래되었거나 최종 확정되지 않았거나 공격자가 선택한 누산기 값을 기준으로 증인을 검증하는 것.
- 잘못된 블록, 포크, 에포크 또는 집합 버전의 추가, 삭제, 증인 업데이트를 적용하는 것.
- 멤버십 증인이 원소의 유효성, 소유권, 권한 또는 경제적 가치까지 증명한다고 가정하는 것.
- 짧은 커밋먼트가 기초 집합을 가용하거나 복구 가능하게 만든다고 가정하는 것.
- 최신 증인을 만드는 데 필요한 데이터나 서비스를 잃어 유효한 상태를 사용할 수 없게 만드는 것.
- 애플리케이션이 부재 증명에 암묵적으로 의존하는데도 비멤버십 지원을 빼는 것.
- 머클 경로, RSA 증인, 다항식 오프닝, 유효성 증명을 서로 바꿔 쓸 수 있는 객체로 혼동하는 것.
- 삭제 비용, 증인 갱신 트래픽, 증명 생성 지연 또는 서비스 거부 입력을 무시하는 것.
- 증명을 프로토콜, 체인, 계약, 상태 루트, 도메인, 직렬화 버전에 결합하지 않는 것.
- 독립된 테스트 벡터 없이 감사받지 않은 단일 구현이나 자체 산술에 의존하는 것.
- 고전 RSA, 페어링 또는 이산 로그 보안이 암호학적으로 유의미한 양자 컴퓨터에도 안전하다고 가정하는 것.

<a id="misconceptions"></a>

## 흔한 오해

- **누산기에 집합의 압축 사본이 들어 있다.** 누산기는 결합성 커밋먼트이지 되돌릴 수 있는 보관소가 아닙니다.
- **모든 누산기가 부재를 증명한다.** 비멤버십에는 그 기능을 위해 설계되고 검증된 방식이 필요합니다.
- **일정한 크기의 증인은 전체 비용도 일정하게 만든다.** 설정, 증명 생성, 업데이트, 저장, 증인 배포는 각각 별도의 비용으로 남습니다.
- **무상태란 아무도 상태를 저장하지 않는다는 뜻이다.** 일부 주체는 원소, 업데이트, 증인을 만들기에 충분한 데이터를 보관하거나 재구성해야 합니다.
- **유효한 증명은 커밋된 항목이 사실임을 뜻한다.** 정해진 가정 아래에서 그 항목을 인증된 하나의 커밋먼트에 연결할 뿐입니다.
- **머클 트리와 RSA 누산기는 신뢰 및 성능 특성이 같다.** 집합 커밋먼트라는 목적은 같지만 서로 다른 가정, 증명 크기, 업데이트 절차, 장애 형태를 사용합니다.

<a id="related"></a>

## 관련 주제

- [ERC-721](/ko/crypto/erc721/)
- [머클 트리](/ko/crypto/merkle-tree/)
- [사이드체인](/ko/crypto/sidechain/)
- [UTXO 모델](/ko/crypto/utxo-model/)
- [유효성 증명](/ko/crypto/validity-proof/)

<a id="sources"></a>

## 출처

- [Revisiting Cryptographic Accumulators, Additional Properties and Relations to Other Primitives](https://eprint.iacr.org/2015/087) - IACR Cryptology ePrint Archive (열람일: 2026-08-20)
- [Efficient Revocation of Anonymous Group Membership](https://eprint.iacr.org/2001/113) - IACR Cryptology ePrint Archive (열람일: 2026-08-20)
- [Batching Techniques for Accumulators with Applications to IOPs and Stateless Blockchains](https://eprint.iacr.org/2018/1188) - IACR Cryptology ePrint Archive (열람일: 2026-08-20)
- [Utreexo: A Dynamic Hash-Based Accumulator Optimized for the Bitcoin UTXO Set](https://eprint.iacr.org/2019/611) - IACR Cryptology ePrint Archive (열람일: 2026-08-20)

Source: https://wiki.fcontext.com/ko/crypto/cryptographic-accumulator/index.mdx
