# 사전지식

ZKP 시스템을 이해하기 위해서는, 그 아래에서 작동하는 암호학적 도구들을 먼저 정확히 이해해야 한다.

Groth16, KZG, PlonK와 같은 현대 ZK 프로토콜은 겉으로는 "회로를 증명한다"는 형태로 보이지만, 내부적으로는 대칭키/비대칭키 암호, 해시 함수, 서명, 이산로그 기반 구조, 커밋먼트 스킴, 타원곡선 수학 등 다양한 암호학 구성요소 위에 구축된 거대한 스택에 가깝다.

STEP 0은 이 스택의 기저에 있는 것들을 따로 정리하는 구간이다.

단순히 이론을 나열하는 게 아니라, 이후 STEP 1\~2에서 실제 ZK 프로토콜을 읽을 때 계속 부딪히게 될 질문들을 미리 정리해 두는 데 초점을 둔다.&#x20;

구체적으로는,&#x20;

ZKP가 Fiat-Shamir 변환가 해시 함수가 왜 비상호작용 ZK의 기본 전제로 취급되는지, 많은 SNARK 설계가 Schnorr 서명 및 Diffie-Hellman, DLP 기반 프로토콜과 어떤 의미에서 같은 패턴을 공유하는지와 같은 ZKP를 이해하는 데 핵심적인 요소들을 포함한다.

결국 STEP 0의 목표는 단순히 암호학을 공부하는 것이 아니라 ZKP가 어떤 암호 도구들을 조합해 만들어진 기술인지를 이해하는 것이다.

이를 통해 이후 STEP 1, STEP 2를 읽을 때 "처음 보는 난해한 구조"가 아닌, 이미 익숙한 암호학 도구들이 결합된 자연스러운 시스템으로 보이는 것을 목표로 한다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://upsidezkp.gitbook.io/upside-zkp-docs/step-0/prerequisite.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
