SSI(Self-Sovereign Identity, 자기주권 신원증명)
•
ID 기술의 부족한 부분을 개선하기 위한 기술
블록체인
분산원장(Distributed Leger)
•
블록체인을 탈중앙화된 시스템으로 만들어주는 핵심 기술
•
거래 기록 등의 데이터를 저장하는 데이터베이스(원장)를 중앙화된 서버가 소유하는 것이 아니라, 블록체인에 참여하는 모든 사람이 동일한 원장을 소유하고 관리하는 기술
•
불가변성의 특성 : 모든 정보가 암호화되어 Append-Onley 방식으로 원장 저장 - 수정 불가
스마트 컨트랙트(Smart Contract, 스마트 계약)
•
분산 원장에 정보를 기록하거나 불러옴.
•
분산 애플리케이션(Decentralized Application, DApp) : 스마트 컨트랙트를 통해 개발된 어플리케이션
합의(Consensus)
•
비트코인, 이더리움
블록체인에 참여한 모든 노드 중 암호화된 퍼즐의 답을 가장 먼저 찾아내는 노드의 블록을 최신 블록으로 업데이트하는 PoW(Proof of Work) 합의 방식 사용
•
이오스
블록체인 참여자가 21명으 블록 생성자를 선출하여 선출된 블록 생성자가 최신 블록을 생성하는 DPoS(Delegated Proof of Stake)합의 방식 사용
•
소규모 노드가 운영하는 프라이빗 블록체인
PBFT(Practical Byzantine Fault Tolerance) 계열의 알고리즘 사용하여 블록체인 합의 진행
SSI 특징
•
블록체인에 참여하는 모든 사람이 동일한 저장소(원장)를 신뢰성 있는 환경에서 소유
블록체인이 기존 시스템과 대비 각광받는 이유?
신뢰 환경을 더욱 쉽고 효율적으로 구축할 수 있게 돕기 떄문에
•
ID에 새로운 속성 추가, 민감한 정보 삭제 제출 가능
◦
보관용 ID (Verifiable Credential) : 각 기관에서 발급하는 전자 신분증/증명서
◦
제출용 ID (Verifiable Presentation) : 보관용 ID에서 필요 부분만 추출하여 제출 가능
◦
사용자가 보관용 ID에서 추출하여 제출용 ID를 만들어 로그인하기 때문에 RP에게 어떤 정보를 제공하는지 정확하게 파악 가능
•
ZKP(Zero-Knowledge Proof, 영지식 증명)기술을 사용한다면 검증자에게 ID 속성 값을 알려주지않고 ID 속성 검증 가능
나이 검사 페이지에서 나이 증명을 할 때 실제 나이를 알려주지 않고도 True/False 등 판별값 만으로 판별 가능
•
전자기기에 암호화되어 안전하게 저장돼서 사용되므로 ID 사용자 정보가 유출되는 경우가 줄어듬
SSI 구성요소
•
DID
◦
VC와 VP에 들어가는 식별자로 사용
•
DID document
•
VC(Verifiable Credential, 검증 가능한 자격증명) : 보관용 ID
◦
사용자가 발행기관으로부터 발급받은 신분증, 졸업증명서, 재직증명서 등과 같은 신원증명을 의미
•
VP(Verifiable Presentation, 검증 가능한 제공 ID 데이터 집합) : 제출용 ID
•
SSI 플랫폼 주요 참여자
◦
발행인(Issuer) : VC를 발행하는 사람
◦
사용자(Holder) : VC를 발급받은 후 VP로 가공하여 검증기관에 제출하는 사람
◦
검증인(Verifier) : 사용자로부터 VP를 수신하여 VP의 진위를 검증하는 사람
•
DID 및 ID 관련 정보 저장하는 분산저장소 (블록체인)
•
VP를 수신한 검증기관은 VP를 올바른 사용자로부터 수신했는지 VP 제출자 DID를 통해 확인
•
VP내 포함된 VC속성을 가진 사람이 사용자가 맞는지는 VC 내 명시된 Subject(사용자) DID를 통해 알 수 있다.
•
VP 내 포함된 VC 속성값이 어떤 발행기관에서 뱔행됐는지는 뱔행기관의 DID를 통해 알 수 있다.
•
검증기관은 VP 내 존재하는 VC의 Subject DID가 진짜 사용자의 것인지 DI D Auth를 통해 알 수 있다.
하이퍼레저 SSI 프로젝트
•
하이퍼레저 인디(Hyperledger Indy)
SSI에 특화된 블록체인과, 블록체인 노드와 클라이언트 간 연동을 위한 SDK를 개발
◦
Hyperledger/indy-node: SSI 플랫폼에 특화된 블록체인 노드 개발
◦
Hyperledger/indy-plenum: indy-node의 합의 알고리즘 개발
◦
Hyperledger/indy-sdk: indy-node와 연동하는 클라이언트발행기관 사용자, 검증기관 등) 애플리케이션 개발용 SDK 개발
•
하이퍼레저 에어리즈(Hyperledge Aries)
블록체인, 혹은 분산저장소와는 독립적으로 클라이언트 애플리케이션 간 SSI 관련 데이터를 처리하기 위한 P2P 프로토콜을 개발
◦
Hyperledger/aries-rfcs: DID, VC, VP 등 SSI 구성요소 관련 기술 사양 및 프로토콜 정의 (RFC)
RFC(Request For Comment)
SSI 플랫폼 클라이언트와 서버 개발에 대한 요구사항, DID, VC, VP 관련 통신 프로토콜, 암호화 키를 관리하는 방법 등이 프로젝트 내에 제출
RFC의 4가지 상태
▪
PROPOSED : 개발 진행 중인 RFC로서 아직 개발 커뮤니티의 승인을 받지 못한 상태
▪
ACCEPTED : PROPOSED 상태 RFC가 커뮤니티로부터 SSI 플랫폼에 사용 승인 받은 상태
▪
ADOPTED : ACCEPTED 상태 RFC가 실제 서비스에 적용된 상태
▪
RETIRED : 개발이 더 이상 진행되지 않거나 치명적인 결함이 발견되었을 때
과정설명 깃허브 : https://github.com/hyperledger/aries-rfcs
◦
Hyperledger/aries-framework-go: ACCEPTED 상태가 된 aries-rfcs의 RFC 내용을 바탕으로 Go 언어로 구현된 SSI 프레임워크 개발(자바, 닷넷 구현도 진행 중)
◦
그 외 다수의 클라이언트 개발 프로젝트 존재
Hyperledger/Ursa : ZKP 등 암호화 관련 라이브러리 제공 프로젝트
•
하이퍼레저 페브릭(Hyperledger Fabric)
블록체인 솔루션과 응용 프로그램을 개발하기 위해 허가형 프라이빗 블록체인의 형태를 가진 모듈형 아키텍처 플랫폼,
◦
특징
1.
허가형 블록체인
멤버십 관리 서비스(MSP)를 통해 허가된 참여자의 접근을 허용한다.
2.
일반 프로그래밍 언어 사용
체인코드