[hyperledger indy / DID]
* 용어 정리
1. hyperledger ursa
- 하이퍼레저의 다른 프로젝트에서 사용할 수 있는 모듈식 암호화 라이브러리.
분산원장 프로젝트 뿐만 아니라 새로운 암호화 라이브러리 구현을 더 안전하고 쉽게 하도록 함.
https://steemit.com/blockchain/@keepit/keep-t-column-hyperledger-ursa
KEEP!T Column: 하이퍼레저(Hyperledger) : 사우디 트레이드렌즈 시험 및 우르사(Ursa) 프로젝트 — Steemit
KEEP!T Column: 하이퍼레저(Hyperledger) : 사우디 트레이드렌즈 시험 및 우르사(Ursa) 프로젝트 안녕하세요. 킵잇입니다. 리눅스 재단 주도의 하이퍼레저 프로젝트는 다수의 작은 프로젝트를 포괄하는 '
steemit.com
(crypto library 는 암호화 라이브러리라고 직역)
2. hyperledger aries
-
기존 증명서 발급과정의 문제들을 해결하기 위함.
기존 블록체인이 발급이력과, 발급을 위해 서로간 통신 방식이 블록체인에 저장되었다면,
Aries에서는 증명서의 Schema와 발급기관의 DID만 장부에 저장됨.
발급이력은 로컬 저장소에 저장되도록, 이로인해 장부에 저장되는 내용이 적어지며 비용절감과 효율성 증대등의 장점.
DIDComm 이라는 통신과, 블록체인과 소통을 원활하게 하는 역할을 함.
블록체인과 관련된 기능을 abstraction (추상화 - 복잡한 자료 ,모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것) 을 통해, 사용자는 그 안에서 무슨일이 일어나는지 크게 알 필요 없이 할 수 있게 만든 것.
p2p통신 (peer-to-peer : 중앙 서버 없이 각 단말들이 서로 동등한 입장에서 통신하는 네트워크)이다.
3. sovrin
- Sovrin Foundation (개발조직 : Evernym)
"The Sovrin Foundation is a 501 (c)(4) nonprofit organization established to administer the Governance Framework governing the Sovrin Network, a public service utility enabling self-sovereign identity on the internet. The Sovrin Foundation is an independent organization that is responsible for ensuring the Sovrin identity system is public and globally accessible."
sovrin network는 인터넷 상에서 주체적 정체성을 갖는것을 가능하게 함.
이러한 sovrin network를 운영하는 거버넌스 프레임 워크를 관리하는 곳이 sovrin.
4. RBFT & PBFT 합의 알고리즘
-
5. s.509
-
middle block의 indy는 실제로 ursa (crypto library) 구현되어있음.
일반적으로 알고있는 블록체인과 달리 네트워크를 따로 구축해줘야 한다.
fabric은 자체 네트워크가 구성이 됨,
하지만 indy는 다른 구조여서 hyperledger ARIES를 통해서 P2P 통신.
( holder와 issuer 간의 connection은 Aries를 통해서 이루어짐.
고객은 다른거 신경 쓸 필요 없이 API만 가져다가 쓰면 됨.)
sovrin
- node의 확장은 indy를 쓰는 기업들은 거의 sovrin을 쓴다.
- 하지만 sovrin을 쓰면 남의 네트워크를 쓰는 것이고, 이때
우리가 얼만큼의 transaction이 일어났는지등 관리의 주체가 되지 못함.
- 그래서 우리는 직접 개발함 ( 자체 네트워크를 가지고 있다. )
* indy
- RBFT 합의 알고리즘 사용 (PBFT계열. PBFT에서 View Change 부분을 개선한 버전 )
* zkp
- cl signature 구조로 되어있음
- 암호화 방법의 하나임
- 어려움. 찾아 볼것
- 미들블록은 zkp 구현 되어있음
* 네트워크 구성에서
- 노드의 역할 모두 이해해야 함.
Validate Node
: validator노드는 rbft 구현인 Plenum 프로토콜에 의해 작동하며 주로 장부에 기록이 이루어짐
Observer Node
: 원장의 읽기 전용 사본이며 3가지 역할을 함.
1. read requests - valiate node의 성능에 영향을 주지 않고 ID 레코드에 대한 수요가 확장될 수 있도록 함.
2. hot standbys - 기존 valiate node에서 기술적 문제가 발생할 경우 active validate node로
서비스 전환될 수 있음
3. push subscriptions - 이벤트 알림을 배포하는 수단을 제공함.
Agent
: 에이전트는 P2P 메시징 엔드포인트를 제공하여 일반적으로 자체 메시징 엔드포인트를 제공하지 않는
인디 클라이언 트의 통신을 용이하게 함.
Sovrin 에이전트는 다양한 장치에서 작동하는 여러 Sovrin 클라이언트 간에 메시지와 상태를 조정하며
Agent 는 Indy 키체인들의 암호화된 백업을 유지할 수 있고, ID 소유자를 위해 데이터를 단순하게 저장하고
공유할 수 있음. indy에서는 hyperledger aries로 이전됨
App(client)
: 신원 소유자들은 그들의 신원정보를 indy 클라이언트를 통해 통제하려고 하는데,
client의 가장 중요한 기능은 owner의 키체인을 관리하고 보호하는 것으로 볼 수 있음.
즉, indy sdk 클라이언트에 지갑기능이 있고 , 그 지갑에 DID관련 키가 저장되어있다는 말
-
DID
- Decentralized IDentifiers (DIDs)
- 분산 네트워크상에서의 표현방식
DID Document
- 공개를 해야하는 부분과 나만 가지고 있어야 할 부분으로 나눠짐.
- 내가 여러 자격 증명을 가지고 있을 때 그것에 대한 secret key를 가지고 있음.
어디에 대한 것을 가지고 있는지에 대한 최소한의 정보를 오픈해줘야 함.
document에 이 부분이 들어있음.
Verifiable Credential
- Credential ?
Claim이란 ,예를 들어 신분증을 보면 - 이름 , 주민번호, 주소 등 이런 하나하나의 정보단위를 말함.
Claim의 묶음을 Credential이라고 함. (즉 신분증 자체)
- Verifiable이라는 뜻은 "증명 가능한"
: Verifiable Presentation(VP) - 필요로 하는 최소한의 노출 정보
(예를 들어 편의점에서는 내 주민번호 뒷자리를 볼 필요가 없음. 앞자리면 됨.
즉, 편의점서 vp할 부분은 주민번호 앞자리)
Interoperability of Digital Certificates
- 직역 "디지털 인증서의 상호 운용성"
- s.509 인증서: s.509는 식별자와 필요한 메타 데이터로 암호키를 바인딩하여 공개키 인증서를 정의하는 표준
스토리라인
- government agent 생성
역할 :
1. 기본 schema(기본 구성요소)를 발행하는 역할.
ex ) 재직증명서의 모양이 각 회사마다 다르겠지만, 안에 들어갈 내용 알멩이는 대부분 비슷함.
즉 그안에 들어갈 기본 구성 요소가 있을것임. 그런 기본 구성 요소를 정의한 것이 schema.
2. 미들 블록에서는 +간편신원인증을 통해서 나이나 신분이 증명되면, 신분 증명의 발행 주체가 된다.
ex) 우리가 태어나면 출생신고를 중앙정부에 하듯이, did 신분증에 의해서 그사람의 신원이 증명되면
그 신원에 대한 최소의 정보에 대한 발행은 government에서 하게 되어있음.
학교에 입학할 때 분명 해당 학생의 국적을 조회할 것임. 이를 증명하는것을 government에서 한다
- alice (holder)
성적표 요청
입사 지원
- faber college(issuer)
alice에게 성적표 발급
- acme corp
입사 지원자의 성적표를 요구할 경우 (verifier)
alice에게 재직 증명서를 발급할 경우 (issuer)
즉, 하나의 anchor가 하나의 role로 고정된 것이 아니다. 역할에 따라 role이 달라지는 것임
Steward
- anchor(네트워크 관점에서는 agent라고 함. did에서 말할 때는 trust anchor) 를 만드는 역할
1. steward에서 anchor 생성
2. did를 ledger에 생성
3. credential definition 생성
4. credential 생성
5. credential 요청 및 검증