본문 바로가기

BlockChain Developer/CommonSense

[DID] SSI 분산신원 기초 내용 (SSI Korea Conference MEMO)

  • 신원의 개념과 분산신원의 등장 배경
    • 신원이란 : 식별자 (이름, 나이, 주소, 직업, 주민번호 등) 을 통해 구분 또는 식별자
    • 15c ~ 권력증명 → 의무부과 (세금 등..)
    • 호패 ~ 도민증 ~ 주민등록증 (종이 → 디지털화)
    • 획득하는 누구나 개인정보 열람이 가능 → 암호학적 안정성이 결여. → So, DID
    • 신원 구성요소
      • 식별자 : ID 식별위한 식별자
      • 속성 : ID 사용자의 특징 (이름, 나이, 주소, 취미, 경력 등)[변동가능]
      • 인증수단 : ID 소유권
      • 발행인
    • 신원방식
      • 물리적 신원 (육안대조가능, 신분증, 자격증 등, 중앙형 신원모델)
      • 전자신원 (육안대조가능, 물리 신분증에 IC나 코드 삽입)
      • 디지털신원 (인증과 로그인 등, 중앙화서버 모바일 신분증, PASS 인증 등)
      • DID (신원정보는 블록체인에 저장하는…. COOV 등)
    • 신원모델
      • 중앙형 신원모델 : 신원증명이 중앙에서 발행하는 모델로, ID, PW 등을 활용한.. 신원 모델 초기형태. 모두가 다른 보안방식을 가지고 있음.
      • 연합형 신원모델 : 구글, 카카오 OAuth Login 등을 하는 모델로, 중앙형 신원모델에 “ID공급자”가 추가된 모델이다. 단, 특정 서비스에 중앙집중되어있어 위험성이 존재함.
      • 자기주권형 신원모델 : 개인이 개인의 신원증명을 위한 내용을 스스로 직접할 수 있도록 구성하는 모델로 DID가 여기에 해당. 신원정보를 개인이 개인 단말기 등에 저장하는 방식. → 개인정보에 대한 통제권을 개인에게 귀속.
    • 자기주권신원이란?
      • 자기의 ID 를 직접관리 → 신원정보의 주권을 개인에게 부여하는 기술
      • 장점 : 선택적 신원증명(영지식증명) 가능
      • 단점 : 정보관리를 개인이 직접하기 때문에 분실 등의 사고에 대한 책임 소재가 개인이다.
    • SSI 수요요인 (개인정보보호…, 감시경제저항<일부 과점형태의 기업에 대한 반발 등, WEB3 모델과 동일..>, 개인주권운동<자신의 데이터에 대한 주도권> 등..)
    • 국가 신분증 전담기관 및 전문기관
      • 국가 신분증
      • 전자여권
      • 전자공무원증
      • To Mobile → 간편인증 시스템
      • Example : 공인인증서 (CA 관리방식, 전자서명시장 독점) 폐지 → 공동인증서 (사설인증사업자 → 전자서명 전문기관 <공개키, 생체인증, 분산신원 등>)
      • So, 인증방식 표준화, 다양한 인증기관 선택, 인증 편의성, 검증된 인증기관(전자서명 평가기관을 통해 사업자 선정되는 방식으로 진행)
      • 모바일 운전면허증 (2021 ~) - (본인명의 휴대폰으로 발급가능, 영지식증명, 성인증명, 운전면허증명 등에 활용, 속성반영 즉시 이루어짐 등의 장점.)
      • 모바일 공무원증 이미 도입. NFC (출퇴근, 출입관리, 업무 로그인 등…)
      • 모바일 신분증, 모바일로 다 가겠다는 내용인듯. 위변조불가, 개인정보 중앙집중 우려 해소.
  • 분산신원 구동원리 (김승언)
    • 신원모델 3가지
      • 개별신원모델 (ID / PW) - 개인정보 집중 DB
      • 연합신원모델 (Oauth) - 개인정보 집중 DB (구글로그인 등.) → 구글 같은 중앙기관에서 다 정보를 따올 수 있음.
      • 자기주권 신원모델 (Mobile + DID) - 개인단말,
      • 5년간 개인정보 보관가능 → 일반적으로 사기업 대부분은 쭉 개인정보를 삭제하지 않음.→ 유출사고로 이어짐.
    • SSI 구성요소
      • ISP (ISSURE)
      • USER
      • VERIFIER
      • Blockchain
      → ISP 권한 축소 & ISSUE & Verify 는 유저와 블록체인을 통해 진행하는 구조.
      • DID (VC Claim ID) : 식별자
      • VC : 발급인이 발행한 주체에 대한 속성. (Ex. 나의 신분증 등) [발행인의 개인키로 서명함]
      • VP : VC 중 필요한 정보만 제출용으로 묶은 내용. [ Holder의 개인키로 서명함]
      • VDR (Verfied Registry): 검증가능한 분산저장소 (BC) → DID Document Invoke & Query;, IPFS(자기가 가진 블록체인이 있음 이걸로 제공하는 것), Blockchain…. (중앙 DB 쓰면 자기주권 신원증명이 될까요? 안댐 ^^)
      • 원래 사업자등록번호로 검증 → SSI : 회사에서 발급했다는 행위를 블록체인에 기록.
    • 비대칭 키 암호화
      • 공개키 암호화 → 비밀키 복호화 (데이터 암호화)
      • 비밀키 암호화 → 공개키 복호화 (디지털 서명)
    • 키는 본인이 생성하고 암/복호화 하기 때문에 내가 키를 삭제하면 연결이 끊어짐. (즉, 개인이 키의 소유를 통해 자기주권 확보)
    • DID Document
      • VC를 Issuer가 직접 발행했음 (디지털서명)
      • 발행된 VC 는 위변조 되지 않았음. (데이터암호화)
      • 만든자의 서명이 등록 되어있음.
    • VC MetaData 표준은 아직 R&D중이며 아래는 예시정도..
      • 발행인 ID
      • 발급일
      • 만료일
      • 클레임 (요청자 ID, DID, 근무정보 등)
      • 서명정보 (암호알고리즘, 공개키 등)
    • 위변조 식별 (VC를 해시암호화 후, 발행인의 개인키로 암호화해 VC와 함께 전송)
    • W3C School DID 문서양식
      • DID : Sov (DID Method, 저장소 제공자) : Kei (DID Document 저장 주소)
    • DID 구축사례
      • Register ( 저장) / Resolver ( 조회)하는 방식으로 구성.
        • Indy, IPFS 등 분산저장소에..
      • CASE 1 : Hyperledger INDY , Hyperledger URSA, Hyperledger ARIES (어려움..)
      • CASE 2 : UPORT (IPFS 형식으로 DID를 구축해두었음.)
      • CASE3 : DIF(?)에서 참고해보세용. UI가 편하게되어있어서 써보기 좋아용. ( https://identity.foundation/)
    • Q&As
      • 어떻게 ISSUER를 인증하지 이 부분은 아직 물음표.
      • 공인인증서 때 처럼 CA를 두지는 않을 것.
      • DID Document에는 개인정보가 삽입되지 않는다. 그걸 제외한 정보와 공개키를 블록체인에 저장한다. Credential(개인정보)는 개인 단말기 등에 저장되는 방식이다.
      • 현재는 VP로 넘어갈때 VC가 모두 넘어가지만 앞으로는 VP를 생성할 때 필요한 부분만 전달되는 방식으로 구현될 것.
      • 최근 FaceBook 개인정보사용 이슈됨.
      • 썻던 DID 값을 개인이 삭제할 수 있음을 보장.
  • 분산신원 활용 및 주요이슈 (정베니?)
    • DID & SSI 정의 용어정리.
      • DID : Decentralized Identifier 분산 식별자. 또는 Identity 분산 신원. 블록체인 등 분산원장을 통한 관리.
      • SSI : Self Soverign Identifier → 자기주권 신원 개인정보는 오롯이 개인이 처리. 개인단말기 메모리에 저장하는 등.
    • DID, VC, VP 구현 원리
      • 지갑, 보유자, 발급자, 검증자 는 각각 비대칭 키를 만들고 VDR에 공개키를 포함한 DID Doc 등록
      • 보유자를 VDR에 DID Doc을 꺼내와서 검증
      • 재직증명 VC 만듦. ( 개인정보 ) → 내 Device 안에서만 관리 (모바일 월렛 등)
      • VDR 발급자의 DID Doc을 꺼내와서 그 안에 있는 회사의 공캐키로 검증
      • 은행한테 내가 이 회사에 재직중임을 증명하기위해..
      • VC를 VP화 시키고 내가 개인키를 서명해서 보낸다.
      • 그럼 은행은 발급자 확인. 보유자 확인. 위에서 발행한 VP를 사용자의 공개키를 통해 검증. (VDR에서 가져옴)
      • && 유효기간 확인.
      • 서비스제공
      • 기존 인증체계기술활용함.
    • DID 활용 및 주요 이슈
      • DID 표준화 (W3C Core Spec에 대해 Google, Mozila, Apple 등이 반대했으나, 권장사항으로 승인) → DID를 표준화하지만 특정 DID Method를 표준화하지는 않음.
        • 중앙형 DID 금지 내용은 없음.
        • 몇가지가 아닌 다양한 메소드를 권장
        • 블록체인 사용 촉진.
      • DID 신원증명
        • 주민등록 VC가 나오는 순간…….확산이 빨라질 것이다..
        • 정부24 앱에 모바일 주민등록 서비스 하고있음. (지금 벌써 사용 가능함.) → DID 전환 검토중.
        • Soverin 재단에서 발행한 WhitePaper에 3년 전 쯤에 모델이 참 잘 나왔다. (읽어보길권장) → 여기 재단 사람들이 DID 표준에 활동하고있으니.. 아마 요 느낌 그대로 나올 확률이 높다.
          • 공개키 해시값을 블록체인에 저장하고, 공개키 값을 IPFS에 등록하고 사용하는 방식으로….. Claim 발급, 제시 등을 사용.
        • ShoCard : 지가 사진찍어서 올려서 검증하는 서비스인듯.
      • IATA PASS (Global) : 항공권 예약, 호텔예약, 여권? 등 관련된 모든 내용을 여기서 하겠다..
      • ESG-GHG절감 (캐나다 BC주) : 온실가스 저감활동, 온실가스관리 GHG 배출 등 관리하는…. DID 활용. 자기들만 참여해서 측정하는 것이 아닌, 감사기관이 있는듯함.
      • COOV 앱 : 코로나 바이러스 예방접종증명.
      [비공개 내용들 정부 추진 사업들..]
      • 화물운송장 관리 진행 : ISSUER & VERIFIER 는 어느 한쪽만 될 수 있는 것이 아니라 바뀔 수 있다.당연하지;
      • 국내 복지급여 관리 : 정부지원금 중복 수급을 하는 경우가 발생함 → 그래서 중복지출이 발생 → 이 부분을 해결하기 위한 DID Platform 적용 사업 진행중.
      • 보험금 청구 : 병원, 보험사가 들어와야하고… 메디패스 앱을 보면 운영중..
      • 경찰청 증거물 회수 DID 국과수 : 증거물 분실이 많이 일어나고 있으므로…. 여기에 DID 적용을..
      • 비대면 민원
      • 선원 자격 증명
      • 드론조종 자격증명
      • 근무 이력관리 : 이력서에 써놓은… 업무 내용들을 곧대로 믿을 수가 없다…
      • (민간) 인재 역량 및 협업 능력 증명
      • (민간) 미성년 자녀 금융 활동 시 부모 인증
      • (민간) 수상 경력관리
    • DID 분야 협의체
      • 마이키얼라이언스 : 코인플러그 주관 → 신원인증 및 전자서명 서비스
      • 이니셜 DID 연합 : SKT 주관 → 모바일 재증명 서비스
      • 마이아이디얼라이언스 : 아이콘루프 주관 → 비대면 신원증명 간소화 서비스
      • DID 얼라이언스 : 라온시큐어 주관 → DID 표준화 및 확산
    • 도입기대효과
      • 개인입장에서는 선택적 정보들만 가고.. 영지식 증명을 제공해… 신분증처럼 민감한 정보의 노출을 줄일수 있고… ㅇㅇ… 개인정보 주체를 개인이 할 수 있다는 점과… 뭐.. ㅇㅋ..
      • 회사 입장에서는 “개인정보 유출” 등 보안사고가 하루가 멀다~~하고 발생하는데 이런 문제 완화. 개인이 관리하다보니까 털리면.. 책임은 개인이다 ㅇㅇ. 책임소재회피기능?
    • DID 오해와 진실
      • 신원을 사용자가 스스로 생성할 수 있다?
        • DID Wallet을 만드는 플랫폼 회사가 있어야함 :) 별도의 발급기관(DID Provider 필요)
      • 개인정보 유출을 완벽히 방지할 수 있다?
        • 완화가 가능한것.
      • 저장소는 무조건 블록체인이 아닐 수 있다.
      • 개인정보는 서비스 공급자(Verifier)에게 저장되지 않는다.
      • 개인정보의 선택정 공개를 위해서는 ZKP(영지식 증명 또는 → 있다 없다 유무확인)만 존재한다? (VC기반의 VP구성방법)
        • 영지식 증명은 시간이 또 걸릴수가있어요~
        • 키가 여러개 생겨 오버헤드가 발생할 수 있어요~
        • 그래서 Atomic VC로 만들 수도 있어요~ (claim을 나눈다 attributes들을 각각 묶어서 새로운 VP를 생성)
    • 관련주요이슈
      • [Root Of Trust (신뢰루트)]
        • 우리나라의 모든 DID 인증은? → PASS App 인증
        • 해외의 경우 ? → Email & SMS
      • [Trust Anchor (신뢰앵커)] - 밥그릇 챙기기 -ㅅ- 왜필요한지 모르곘음. 초기단계다보니..
        • 정부발행 ID 기반 VC 발급 시, 새 보증기관 필요(?) 어폐가 있어용..
        • 기존엔 KISA가 다 인증했음 → 그래서 또 ~ KISA가 내가 할래요~ 했대유.. 근데 이거 하면 SSI, DID 가 맞나용 ? ^^; 해서 나가리.
        • 국내 뿐만 아니라 해외에서도 논의중…
        • Market Adoption VS 자기주권 신원인증 다투는즁..
      • 그래서… 폐쇄적인 국내 DID 생태계.
      • 유럽에서는.. 협력이 잘 이루어지고 있다고 함. (EIDAS 1.0 → 2.0 개정진행중.. EUDI Wallet을 만들고있는중.. 기존인증체계 사용중.. 근데 EBSI → ESSI 여기 조직에서 EUDI Wallet 만들 때 SSI를 적용하는 것으로….. 협의중..) 그래서 쨋든 협의진행이 원활하게 진행중…
      • DID 서비스를 고려한다면, 국내 뿐만아니라 글로벌 생태계를 충분히 고려해 BM을 구성해야하고, 표준화 관련 이슈는 많이 있다.. 그러니 플랫폼 내에서만이라도 통일을..출입증부터 간단하게 해보고 제안해보는 방식을 추천한다.
    • Q&A
      • 아직 Token 생태계로는 생각도안함 ㅇㅇ.
      • 휴대폰 본인 확인 비용은 연간 600 ~ 700억 규모.. 통신사업자랑 사업자가 나눠서 지불한다.
      • DID도 Verify가 공짜냐? 아니그든 ! 😱 그럼.. 이것도 고민을… 수익모델..
  • 분산 신원 구현 데모 (이민호)
    • 개발 Flow & Tip 정도.. :
      • Wallet Key 생성 → 공개키 & 개인키 쌍.
      • generate DID + Specific ID 생성 → 글로벌하게 유니크하면되
      • DID 생성하면… 준비가 끝났슈..
      • 본인인증 ⇒ 중앙화되어있어유.. Root Of Trust 논외..
      • Trust VC가 없다고 하면 다음 서비스 어렵..
      • DID 생성 → DID Doc이 생성
      • 본인인증서비스 제공
      • 본인에 대한 VC 발행 proof를 붙여서 proof value 추가해서 사용중..
      • 이제 서비스~
      • 학위증명, 은행 뭐 등등..
      • QR 해서 제공하는 월렛이 받아서 처리하는방식이라는데..
      • JWT Encode
      • VC는 나의 월렛에만 존재.
      • claim을 나눠주면 된다. name, birth, 등등 attribute에 대해 각각은 맘대로 묶어서 vp로 묶어서 보낼 수 있다 이게 atomic VC.
      • 특정사람이 VC 요청 떄 → 생년월일 성인확인 → 새로운 VC 발급 true of False → 이르면된다.
    • 개발시 참고하기 좋은 서비스
      • Uport (VC가없는데 → uPortLandia에서 credential 생성.. 특정 Credential(City ID)가 있어야 학위증명이 됨.) : 시나리오 예시로 간단하게 체험해보기에 좋은 서비스인듯. Ethereum + IPFS를 활용해서 Smart Contract로 EVM에 저장함.
      • VERAMO (): 실제 DID 만들기를 어렵지 않게 CLI에서 해볼 수 있따. CLI 와 JS&TS로 주로 이루어져있음. 직접해보기 쉬움. 깔면 직접 DID 서버까지 띄워줌. 3332port에.
      Veramo - A JavaScript Framework for Verifiable Data | Performant and modular APIs for Verifiable Data and SSI
      • 메디패스 : 이름 주민번호 넣고 바로 본인 인증이들어감 서비스 입장에서 보여줄 필요는없다. → Panacea 사용중.. Public Key를 사용해서 해시를 하나 만들고.. Encode하고 DID method넣고 .. panacea DIDDocument struct 정의되어있음.
      • PPASS
      • 스샷찍히지 않는 화면들은 보안 문제 생각해볼것.
$ veramo config # Yaml 생성
$ veramo did create # DID 생성 (아무 네트워크나 선택가능 alias = ID정도.. ex> 100)
$ veramo did resolve (DID) # DID Docs 나옴.
$ veramo credential create # VC(Credential) 생성. (ISSUER 선택, 위에서 만든 DID 목록 출력 선택가능. Subject 주체 선택, Credential Type, Claim Type, Claim Value, Revocation : 만료 설정)
$ veramo presentation create # VP 생성. (Holder 선택, 형식은 VC와 똑같은데 verifiable credential이 차이가 있움)
$ veramo server # 베라모 띄워진 서버.

# JWT Token Decode

$ veramo help # 도움말 요고 참고해서 하면됨.