영지식 증명을 활용한 탈중앙화된 신원증명 오픈 세미나 정리
왜 ZKP를 이용한 신원증명인가?
성인인증을 한다고 가정해보자. 내가 성인임을 증명하기 위해 내 개인정보를
노출해야 한다.
개인정보를 제공하지 않고 내가 어떻게 성인임을 어떻게 증명할 수 있을까?
=> 영지식 증명(머클증명을 통한 소속확인)
머클 트리
블록의 정보를 헤더에 요약하는 방법
영지식 증명
증명자가 스도쿠 문제를 풀었다는 것을 검증자에게 답을 제출하지 않고 답을
풀었다는 것을 증명할 수 있다.
증명자
Proof를 제출!
검증자
Proof를 검증하는 주체
이더리움 블록체인 + Zokrates
개념적으로만 존재하는 것을 라이브러리로 제공한다.
- 이더리움 영지식증명 라이브러리
- 증명(Proof) 생성 및 검증용 스마트 컨트랙트를 만들어줌
검증자는 블록체인 네트워크에 존재한다.
기본 아키텍처
- 등록(Register)
- 오프체인으로 신원등록기관에 자격을 증명합니다.
- 스마트 컨트랙트로 만들어둔 머클트리에 신청자의 공개키 등록
- 증명(Prooving)
- 본인의 머클 경로 조회
- 영지식 증명을 이용한 머클트리 내에 존재증명 생성
- 활용(Application)
응용 사례
구현 및 제약 사항
- 머클트리 서킷: 그룹을 정의하기
- 언링커블 태그: 그룹에 속함을 증명
- 스마트 컨트랙트
검증에 많은 가스가 사용됨: 확장성 이슈
- 이더리움 메인체인을 사용하기 힘듬
- 프라이빗 블록체인은 신뢰도가 떨어짐
- 탈중앙화된 레이어2 솔루션
키 관리의 문제
- 유저들은 공인인증서와 비슷한 개인키를 관리해야함
- 분실할 경우
구현상의 문제
머클트리 depth에 관한 서킷 구현 문제
- fixed depth merkle
- unfixed depth merkle
스마트 컨트랙트에 엄청나게 큰 머클이 만들어질 수 있을까?
- 유권자 10만명 길이의 머클트리 구현?
- 프라이빗 체인 or 레이어2 솔루션 필요