본문 바로가기
보안 용어 설명

Zero-Knowledge Proof(영지식 증명)란?

by Hwan2 2019. 5. 4.
728x90
반응형

영지식 증명이란 서버가 클라이언트의 정보를 모르고, 클라이언트 본인 확인을 직접적으로 하지는 않지만,

 

해당 클라이언트가 참 혹은 거짓을 판별할 수 있는 암호학을 말합니다.

 

즉, 증명과정을 들어내지도 않고, 서버에게도 아무런 정보를 주지 않지만, 자기 자신임을 증명하는 방법입니다.

 

 

 

????.......

무슨 말인지 모르겠다면....

 

 

 

우리는 보통 자기 자신을 증명하기 위해서 공개키와 개인키를 사용합니다. 

한 예로 공인인증서를 생각해 보면 쉽습니다.

 

은행에서는 공인인증기관(CA)라는 곳에서 인증서를 받아와 사용자들에게 전달하게 됩니다.

이때 사용자에게 주는것은 개인키+공개키(인증서 서명 포함)을 줍니다.

 

그래서 은행에서 공인인증서 요청을 하면 공개키와 인증서에 대한 설명등을 은행에 전달하고, 은행은 공인인증기관에

있는 해당 사용자의 정보와 일치하는지 확인 후, 일치하면 해당 공개키로 사용자에게 다시 보내게 됩니다.

그럼 사용자는 개인키로 복호화해 정보를 읽고 자기자신을 증명하는 것이 되는 것이죠. 

때문에 개인키는 중요함으로 암호가 걸려 있는 것입니다.

 

반대로 영지식 증명은 이러한 과정이 필요 없습니다.

예를들어 서버가 클라이언트에게 문제를 낸다고 가정해보겠습니다.

서버가 어떠한 수학적 문제를 내고 이에 대한 답을 요구했습니다.

클라이언트는 자신이 미리 가지고 있던 알고리즘을 통해 이에 대한 응답을 했습니다.

서버는 이 과정을 20번동안 진행합니다.

클라이언트는 이 문제를 모두 맞췄습니다.

서버 입장에서는 이 클라이언트에 대한 정보는 없어도 자신이 낸 문제를 여러번 맞췄음으로 확률적으로 

이 클라이언트는 믿어도 된다. 라고 판단하여 클라이언트의 요청을 수행합니다.

 

즉, 영지식 증명은 확률적인 증명방법입니다. 하지만 이 과정을 20번만 거처도 찍어서 맞출 확률은 백만분의 1이 된다고 합니다.

 

 

 

 

영지식 증명은 다음과 같은 조건을 만족해야 합니다.

1. 완전성(完全性, completeness): 어떤 문장이 참이면, 정직한 증명자는 정직한 검증자에게 이 사실을 납득시킬 수 있어야 한다.

 

2. 건실성(健實性, soundness): 어떤 문장이 거짓이면, 어떠한 부정직한 증명자라도 정직한 검증자에게 이 문장이 사실이라고 납득시킬 수 없어야 한다.

 

3. 영지식성 (零知識性, zero-knowledgeness): 어떤 문장이 참이면, 검증자는 문장의 참 거짓 이외에는 아무것도 알 수 없어야 한다.

 

영지식 증명의 대표적인 예시를 설명해 보겠습니다.

바로 알리바바 동굴 입니다.

출처 : https://ko.wikipedia.org/wiki/%EC%98%81%EC%A7%80%EC%8B%9D_%EC%A6%9D%EB%AA%85

 

1. 스미스는 동굴 밖에서 기다리고 찰리는 동굴에 들어가 두 갈래 길인 A와 B중 랜덤으로 선택해 벽이 있는 곳까지 갑니다.

2. 찰리는 동굴로 들어와 두 갈래 길 앞에 섭니다. 

3. 스미스가 벤에게 소리쳐 A와 B중 하나를 선택해 그 길로 나오라고 합니다.(예, 찰리!! A로 나와바~)

4. 만약 찰리가 A길로 들어왔다면 다시 A길로 나갈 것이고 B길로 들어 갔다면 벽을 지나와야 합니다.

5. 찰리는 벽을 지나갈 수 있는 열쇠를 갖고 있고 이 사실을 스미스는 모릅니다. 단지 타스는 찰리는 자신이 불러준 방향으로 찰리가 잘 나왔는지만 판단합니다.

6. 스미스는 이러한 과정을 몇번 더 반복해 "찰리가 열쇠를 갖고 있구나!!" 라는걸 확률적으로 판단하게 되는 것입니다.

 

 

영지식 증명도 이러한 과정을 비슷하게 거치게 됩니다.

 

떄문에 비트코인의 Zcash에 거래를 위해 사용되었으며, 최근 Wifi의 무선랜 보안 방식인 WPA-3 에도 적용이 되었다고 합니다.

반응형

'보안 용어 설명' 카테고리의 다른 글

비잔틴 장군 문제란?  (0) 2019.04.08
SCADA란?  (0) 2019.03.02
ICT 란?  (0) 2019.02.26
공개키와 개인키란?  (0) 2019.02.20
디지털 서명이란?  (0) 2019.02.20

댓글


스킨편집 -> html 편집에서