일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- git rebase
- 러스트 기초 학습
- 러스트기초
- ethers
- nest.js설명
- ethers typescript
- 스마트컨트렉트 함수이름 중복 호출
- 스마트컨트렉트 예약어 함수이름 중복
- 체인의정석
- rust 기초
- ethers type
- 컨트렉트 동일한 함수이름 호출
- ambiguous function description
- vue기초
- ethers v6
- SBT표준
- 스마트컨트렉트테스트
- 프록시배포구조
- 스마트컨트렉트프록시
- 러스트 기초
- 컨트렉트 배포 자동화
- chainlink 설명
- 머신러닝기초
- ethers websocket
- 오블완
- multicall
- Vue
- 티스토리챌린지
- 스마트 컨트렉트 함수이름 중복
- Vue.js
- Today
- Total
체인의정석
사내세미나 - 동형암호학 & 영지식 증명 본문
1. 암호화
대칭키 암호화 & 비대칭키 암호화
비대칭키 암호화 = 메세지를 받을 사람의 공개키로 암호문을 만들고, 받는 사람은 비밀키로 암호문을 풀 수 있다.
Signature 자신의 비공개 키로 서명
이때 signature에서 메시지 자체도 알고 싶다면? => 영지식 증명 사용
어떤 정보에 대한 실제 데이터를 보여주지 않으면서 데이터의 유무를 알 수 있는 것
Zk-Snark
관계식에 대한 정보를 숨기고, 정보가 맞다는 사실만을 검증
Prove
연산 과정에 대한 입력과 출력에 대해서 순서에 맞게 보이는 것.
1. 관계식을 세운다.
2. 관계식을 벡터 형태로 표현한다. (모든 중간 결과들을 하나하나 나열)
입력 벡터랑 출력 벡터를 각각 표시를 해서 식의 실행 입력, 결과 값을 벡터로 표현
다항식에서 나머지가 안 생기고 몫이 나오게 되면 관계식을 만족 시킬 수 있다.
입력값을 모르는 사람은 관계식을 만족 시킬 수 없다.
=> 모든 과정 내에서 입력과 출력이 올바른지 증명
계산과정에 대해 다항식으로 압축 후 관계식 확인
계산이 많을 수록 증명 생성이 오래 걸린다. (입력 벡터가 많아지기 때문에, 차수가 높고 중간 결과 및 입출력이 많을수록) 증명 생성이 오래 걸림
=> 대신 검증은 상수라 한번에 가능
약점은? => 실제로 x라는 값을 무언가 예시로 넣어줘야 하는데 (다항식을 만든 시드) 해당 시드 값을 알면 영지식 증명을 깨버릴 수 있다.
이에 따라서 시드 생성을 위해 랜덤을 다양한 방식으로 생성해서 넣어줘야 한다.
예시) DID
=> 보통의 DID는 특정 사실에 대해 맞는지 인증 기관에 서명 제출
인증 기관은 해당 개인 정보들을 보고 인증을 하는데, 영지식 증명을 쓰면 감춰진 형태의 VC를 가지고 영지식 증명으로 관계식이 맞다는 것을 보장해주면 서비스 입장에서는 이를 확인 가능(관계식이 성립되는지 확인 가능)
=> 내가 들어내고자 하는 정보만 함수로 만드는 것.
Alice Cliam(개인정보) => 다항식으로 만듬 => VC만 받아서 입증
Issuer (개인정보에 대한 VC발급)
개인은 개인정보로 요구조건을 만족하는지 확인
영지식 증명으로 발급된 VC가 개인정보로부터 올바르게 생성된 Hash가
Homorapic Encryption (동형 암호화)
암호문을 보내서, 암호문 끼리 연산이 가능하다면?
암호화 된 데이터를 통해서 학습 등이 가능하다.
Fully Homorapic Encyption
=> 암호문 간 덧셈,곱샘 후 복호화 결과가 각각의 암호문을 복호화 한 후 더한,곱한 결과가 같으면? 모든 연산 가능
=> 근데 곱셈 연산이 많으면 에러라는 부분이 커지게 된다. 이게 처음에는 작아서 원본 메세지에 영향을 안주는 수준이라 문제가 없지만 연산이 많아지면 에러가 커지게 된다.
이론적으로는 AI 트레이닝 같은걸 할 때 암호문 연산이 가능하지만 실제로는 계산량이 많아서 부하가 크기 때문에 발전의 여지가 많이 남아있다.
* QnA => 실제 연산 시간이 오래걸리는 이유는 hash의 양이 많기 때문, hash의 수를 줄이면 VC생성 속도를 줄이는 것도 가능하다.
강연자(출처) : 씨피랩스 이정혁님
'블록체인 > 프라이빗&컨소시엄 블록체인' 카테고리의 다른 글
Ethereum Eagle (EGL) Genesis 퀴즈 정답 (0) | 2021.07.24 |
---|---|
하이퍼레져 페브릭 ) 체인코드 루니버스 튜토리얼 WSL2로 하기 (0) | 2020.12.10 |
[WSL2로 개발하기] - wsl2에서 VScode 열기 (0) | 2020.12.10 |
블록체인, 신원 증명 - DID에 대한 이해와 참고자료 (0) | 2020.06.03 |