Skip to content
마지막 작성자: hyejung-song
최근 업데이트: 25. 7. 7. 오후 4:59

시작하기 ​

모바일 신분증 연동을 위한 DID와 Wallet을 직접 생성하고 설정하는 과정을 단계별로 안내해요.

1. 파일 다운로드 및 환경 구성 ​

SP 서버에서 사용할 DID 및 Wallet 생성을 위해 필요한 파일과 환경을 먼저 준비해야 해요.

  • DID 생성 도구 다운로드
  • 압축을 해제한 뒤, 실행 스크립트가 포함된 폴더를 확인해요.
  • SP 서버 Wallet & DID 생성가이드라는 이름으로 검색해서 관련 문서를 참고할 수 있어요.
  • Java가 설치되어 있어야 하며, JAVA_HOME 환경변수 설정도 필요해요.

폴더 구성 ​

압축을 풀면 다음과 같은 파일 구성이 나와요

폴더 구성

2. DID 및 Wallet 생성 ​

설정에 필요한 항목 정리 ​

application.properties 설정 파일에 입력해야 할 값들이 아래 단계에서 생성돼요.

항목명설명입력 시점
PASSWORDWallet 비밀번호2.3
SIGN KEY ID서명 키 ID2.4
ENCRYPT KEY ID암호화 키 ID2.5
wallet, did생성된 파일 경로 확인2.8

실행 스크립트 실행 ​

운영체제에 따라 스크립트를 실행해요.

  • Linux: create_doc_linux.sh

    리눅스 실행

  • Windows: create_doc_window.bat

    윈도우 실행

초기 화면 ​

실행하면 아래와 같은 화면이 뜨고, 개발 환경에 따라 1 또는 2를 선택해요.

초기 선택

비밀번호 입력 ​

Wallet 생성에 사용할 비밀번호를 입력해요.

비밀번호 입력

예시 입력: komsco1

SIGN KEY ID 입력 ​

Wallet에 추가할 서명 키 ID를 입력해요.

서명키 입력

  • 예시: komsco.sp
  • 확장자는 .sp로 끝나야 해요.
  • 기본값으로 생성하려면 그냥 Enter만 눌러요.

ENCRYPT KEY ID 입력 ​

Wallet에 추가할 암호화 키 ID를 입력해요.

암호화키 입력

  • 예시: komsco.sp.rsa
  • 확장자는 .sp.rsa로 끝나야 해요.
  • 기본값 사용 시 Enter

DID Document 파일명 입력 ​

DID Document 파일 이름을 지정해요.

DID 입력

  • 예시: komsco.did
  • 확장자는 .did로 끝나야 해요.
  • 기본값 사용 시 Enter

생성 완료 메시지 확인 ​

아래와 같은 메시지가 뜨면 생성이 완료된 거예요.

생성 완료

생성 결과 확인 ​

지정된 경로에 .wallet, .did 파일이 생성되어 있어요.

결과 확인

DID Document 예시 및 설명 ​

DID Document는 탈중앙화 신원(DID)을 표현하는 표준 문서예요. 생성된 .did 파일은 JSON 형식이며, 다음과 같은 구조로 되어 있어요.

예시 .did 파일 내용 ​

json
{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:example:komsco.sp",
  "verificationMethod": [
    {
      "id": "did:example:komsco.sp#key-1",
      "type": "Ed25519VerificationKey2018",
      "controller": "did:example:komsco.sp",
      "publicKeyBase58": "3Hh4m1rD4Fq13tSn9xgPVbzx..."
    }
  ],
  "authentication": [
    "did:example:komsco.sp#key-1"
  ],
  "assertionMethod": [
    "did:example:komsco.sp#key-1"
  ]
}

필드 설명 ​

항목설명
@contextDID 문서가 따르는 JSON-LD 문맥 정의예요.
id해당 DID의 고유 식별자예요.
verificationMethodDID 소유자가 사용하는 공개키 정보 목록이에요.
 └ id공개키 식별자예요. 보통 DID#키이름 형식이에요.
 └ type공개키 형식이에요. 예: Ed25519VerificationKey2018
 └ controller이 키를 소유하는 DID예요.
 └ publicKeyBase58공개키를 Base58 방식으로 인코딩한 값이에요.
authentication이 DID를 인증할 때 사용할 키의 참조예요.
assertionMethod서명이나 증명 용도로 사용할 수 있는 키의 참조예요.

INFO

  • 생성된 .did 파일은 검증 서비스에서 VP를 확인할 때 사용돼요.
  • 이 문서는 블록체인에 등록되거나 로컬에서 사용할 수 있어요.
  • 공개키는 DID 기반 서명 검증에 반드시 필요해요.
  • 이 파일은 사용자가 변경하면 안 되고, 생성 도구를 통해 만들고 관리해야 해요.

Wallet 파일 설명 ​

.wallet 파일은 DID와 연결된 키 정보를 암호화해 저장한 파일이에요.
DID 서명, 인증, VC 발급 등 다양한 작업에 필요한 개인키와 메타 정보를 포함하고 있어요.

주요 역할 ​

  • DID에 연관된 서명키와 암호화키를 안전하게 저장해요.
  • 개인키는 평문으로 노출되지 않고, 비밀번호로 암호화돼 있어요.
  • 이 파일 없이는 VC 발급이나 서명 같은 핵심 기능을 수행할 수 없어요.

구조 예시 (*.wallet 내부) ​

암호화된 파일이기 때문에 일반적으로 직접 열어보진 않지만, 디코딩 후의 논리 구조는 아래와 비슷해요.

json
{
  "id": "did:example:komsco.sp",
  "type": "Wallet",
  "keys": [
    {
      "id": "komsco.sp",
      "type": "Ed25519",
      "publicKey": "3Hh4m1rD4Fq13tSn9xgPVbzx...",
      "privateKey": "<암호화됨>",
      "usage": "signing"
    },
    {
      "id": "komsco.sp.rsa",
      "type": "RSA",
      "publicKey": "MIIBIjANBgkqhkiG9w0BAQE...",
      "privateKey": "<암호화됨>",
      "usage": "encryption"
    }
  ]
}

필드 설명 ​

항목설명
idWallet이 연결된 DID 식별자예요.
type객체의 유형이예요. 항상 "Wallet"로 고정돼요.
keysDID에 포함된 키 목록 배열이에요.
 └ id키의 고유 식별자로서 보통 SIGN, ENCRYPT 용도로 나뉘어요.
 └ type키 유형으로 Ed25519, RSA 등이 있어요.
 └ publicKey공개키 문자열이에요.
 └ privateKey암호화된 개인키예요. 이 값은 암호화돼 있으므로 노출되지 않아요.
 └ usage키의 용도이며 signing, encryption 등으로 구분돼요.

주의사항 ​

  • .wallet 파일은 비밀번호가 있어야만 열 수 있어요.
  • 이 파일이 유출되면 DID 기반 인증이 위협받을 수 있으니 꼭 안전하게 보관하세요.
  • 다른 시스템으로 이동하거나 백업할 때도 .wallet과 .did 파일을 함께 관리해야 해요.

활용 예시 ​

  • VC 발급 시: issuer가 wallet을 통해 VC에 서명해요.
  • VP 생성 시: holder가 wallet의 키로 VP에 서명해요.
  • 검증 요청 시: verifier는 wallet의 공개키가 담긴 DID 문서로 서명을 검증해요.