SSI

21.09.19 [Indy] demo 공부 (시나리오 및 도커 실행)

슈팅스타제제 2021. 9. 20. 23:17

하이퍼레져 인디를 사용하여 자격증명 처리 과정을 시나리오로 표현해보았다.

 

"나는 서울에 살고있다."에 대한 자격 증명을 해보겠다.

"나" 라는 사람과 "서울"이라는 도시는 서로 agent 관계로 생각할 수 있고 각각의 agent는 자신의 DID를 가진다. 

 

자격 증명 서비스가 가능한 agent의 wallet에는 크게 5가지의 서비스로 이루어져 있다.

✔ relationship 

✔ credentials

✔ proof requests

✔ issuing 

✔ message

 

내가 서울에 살고 있다는 자격 증명을 얻기 위해 가장 먼저 relationship을 형성해야 한다. 

 

send new connection request 실행 

create a new relationship 에 서울시 DID 입력하여 서울시에 relationship 요청한다. 

이때, DID는 공개되어있는 것으로 가정하는데 

만약 스팸 요청으로부터 계속 수락 요구가 온다면 DID를 자신이 바꾸어 버리면

연결되어 있던 endpoint의 DID관리는 어떻게 할 수 있을지 고민해봐야겠다.

 

서울시에서 relationship을 수락하면 내 relationship에서 endpoint로 DID 확인

endpoint에 대해 예를 들자면,

나는 서울에 살고있다. 

my DID → 서울 DID

서울 DID → my DID

 

서울의 시민 relationship에는 my DID가 endpoint로 남아있고 

내 relationship에는 서울 DID가 endpoint로 남아있다.

이 endpoint의 DID를 기반으로 credential을 발급한다.

 

서울의 issuing 메뉴에서 send credential offer을 실행하면 

서울에 살고있다는 시민증과 같은 증명서를 발급한 후 나에게 message 로 확인 요청하고

내가 수락하게 되면 내 wallet에 시민증에 해당되는 credential 이 저장된다. 

요청을 수락하여 자격증명이 완료되면 DID 대신 요구하는 속성값이나 구분하기 쉬운 이름으로 표시된다. 

 

Hyperledger Indy에서 하는 역할: DID 관리, VC 구현

 

하이퍼레져 인디에서 DID를 사용하는 자격증명 과정인 

Alice가 Faber대학에 성적증명서를 요청 및 발급받고 ACME 회사에 제출하는 예제를 공부해보았다. 

 

Oracle VM에 indy image를 불러와서 실행한 후 해당 폴더에 접근한다.

docker 이미지 빌드 

./manage build 

 

현재 실행할 수 있는 이미지 확인

docker images

 

docker 이미지를 사용하여 컨테이너 실행하여 실습 준비를 마친다. 

./manage up

 

docker 컨테이너 구동 확인

docker ps -a

 

각 이미지와 컨테이너 역할은 다음과 같다. 

Indy-node: 네트워크 생성을 위해 (pool.dockerfile을 이용하여 빌드)

Indy-agents: 에이전트 생성을 위해 (agent.dockerfile을 이용하여 빌드)

 

실습에 필요한 이미지들

indy-node image: webserver, node1, node2, node3, node4

indy-agents image: alice, faber, acme