티스토리 뷰

반응형

해당 글은 Hyperledger Fabric 페이지의 공식 문서를 번역 및 정리한 자료입니다.

원본 사이트 : https://hyperledger-fabric.readthedocs.io/en/release-1.4/idemix.html


What is Idemix?(Idemix란 무엇입니까?)

Idemix는 강력한 인증뿐만 아니라 거래자의 신원을 드러내지 않고 거래할 수 있는 능력인 익명성(anonymity), 단일 신원이 동일한 신원으로 거래가 보내졌음을 밝히지 않고 여러 거래를 보내는 불연계성(unlinkability) 등의 개인 정보 보호 기능을 제공하는 암호화 프로토콜 제품군입니다.

Idemix 플로우에는 사용자(user), 발급자(issuer), 검증자(verifier)의 세 가지 역할이 있습니다.


  • 발급자(issuer)는 디지털 인증서 형태로 발행된 사용자 속성 집합(이하 "자격 증명(credential)")을 인증합니다.
  • 사용자는 나중에 자격 증명 소지 "제로-지식 증명(zero-knowledger proof)"을 생성하고 사용자가 공개하기로 선택한 속성만 선택적으로 공개합니다. 증명은 지식이 없으므로 검증자(verifier), 발급자(issuer) 또는 다른 사람에게 추가 정보가 없음을 보여줍니다.

예를 들어, "Alice"가 DMV에 의해 운전 면허증을 발급 받았음을 상점 직원인 Bob에게 증명해야한다고 가정합니다.

이 시나리오에서는 Alice가 사용자(user)이고, DMV가 발급자(issuer)이고, Bob이 검증자(verifier)입니다. Alice에게 운전 면허증이 있음을 Bob에게 증명하기 위해 그녀는 Bob에게 운전 면허증을 보여줄 수 있습니다. 그러나 Bob은 자신이 알아야할 것보다 훨씬 더 많은 정보인 Alice의 이름, 주소, 정확한 연령 등을 볼 수 있습니다.

이 대신, Alice는 Idemix를 사용하여 Bob에게 유효한 "제로-지식 증명(zero-knowledger proof)"을 생성할 수 있습니다. 이 검증은 다른 정보 없이 유효한 운전 면허증만 가지고 있음을 나타냅니다.

그래서 증명에서 :

  • Bob은 유효한 라이센스가 있다는 것 이외에 Alice에 대한 추가적인 정보를 알 수 없습니다. (익명성)
  • Alice가 상점을 여러 번 방문하여 Bob에게 매번 증거를 생성해도 Bob은 그것이 동일인임을 증명할 수 없습니다. (불연계성)

Idemix 인증 기술은 표준 X.509 인증서로 보장되는 것과 유사하지만 위에 설명된 것과 같은 고급 개인 정보 기능을 효율적으로 제공하는 기본 암호화 알고리즘을 통해 신뢰 모델 및 보안 보증을 제공합니다. 아래의 기술 섹션에서 Idemix와 X.509 기술을 자세히 비교해 보겠습니다.


How to use Idemix(Idemix 사용 방법)

Hyperledger Fabric과 함께 Idemix를 사용하는 방법을 이해하려면 Idemix에서 사용자(user), 발급자(issuer) 및 검증자(verifier)에 해당하는 Fabric 구성 요소를 확인해야 합니다.

  • Fabric Java SDK는 사용자(user)를 위한 API입니다. 앞으로 다른 Fabric SDK도 Idemix를 지원할 것입니다.
  • Fabric은 두 가지 가능한 Idemix 발급 기관(issuer)을 제공합니다.
    1. 프로덕션 또는 개발 환경을 위한 Fabric CA
    2. 개발 환경을 위한 idemixgen 도구
  • 검증자(verifier)는 Fabirc의 Idemix MSP입니다.

Hyperledger Fabric에서 Idemix를 사용하려면 다음 세 가지 기본 단계가 필요합니다.

이 이미지의 역할을 위의 역할과 비교하십시오.


1. 발급자(issuer)를 고려하십시오.

Fabric CA(버전 1.3 이상)는 Idemix 발급 기관으로 자동 기능하도록 향상되었습니다. fabric-ca-server가 시작될 때 (또는 fabric-ca-server init 명령을 통해 초기화 될 때), 다음 두 파일이 fabric-ca-server의 홈 디렉토리에 자동으로 작성됩니다.: IssuerPublicKey 및 IssuerRevocationPublicKey. 이 파일들은 2단계에서 필요합니다.

2. 확인자(verifier)를 고려하십시오.

1단계의 IssuerPublicKey 및 IssuerRevocationPublicKey를 사용하여 Idemix MSP를 만들어야합니다.

예를 들어, Hyperledger Java SDK 샘플의 configtx.yaml에서 발췌한 내용을 살펴보십시오.

- &Org1Idemix
    # defaultorg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    name: idemixMSP1

    # id to load the msp definition as
    id: idemixMSPID1

    msptype: idemix
    mspdir: crypto-config/peerOrganizations/org3.example.com

msptypeidemix로 설정하고 mspdir 디렉토리(이 예에서는 crypto-config/peerOrganizations/org3.example.com/msp)에는 IssuerPublicKey 및 IssuerRevocationPublicKey 파일이 포함됩니다.

이 예제에서 Org1IdemixOrg1에 대한 Idemix MSP를 나타내며(표시되지 않음), X.509 MSP도 가지고 있습니다.

3. 사용자(user)를 고려하십시오. Java SDK는 사용자를 위한 API임을 기억하십시오.

Java SDK와 함께 Idemix를 사용하려면 org.hyperledger.fabric_ca.sdk.HFCAClient 클래스의 idemixEnroll 메소드 하나만 추가 API 호출이 필요합니다. 예를 들어, hfcaClient가 HFCAClient 객체이고 x509Enrollment가 X509 인증서와 연결된 org.hyperledger.fabric.sdk.Enrollment라고 가정합니다.

다음 호출은 Idemix 신원 정보와 연관된 org.hyperledger.fabric.sdk.Enrollment 오브젝트를 리턴합니다.

IdemixEnrollment idemixEnrollment = hfcaClient.idemixEnroll(x509enrollment, "idemixMSPID1");

IdemixEnrollmentorg.hyperledger.fabric.sdk.Enrollment 인터페이스를 구현하므로 Idemix의 프라이버시 강화 기능을 자동으로 제공한다는 점을 제외하고는 X509 등록 오브젝트를 사용하는 것과 같은 방식으로 사용할 수 있습니다.


Idemix and chaincode(Idemix 및 체인 코드)

검증자(verifier) 관점에서 고려해야 할 또 하나의 액터(actor)가 있습니다.: 체인 코드입니다. Idemix 자격 증명을 사용할 때 체인 코드가 거래자에 대해 알 수 있는 것은 무엇입니까?

Idemix 자격 증명이 사용되면 cid(Client Identity) 라이브러리(golang 전용)가 GetAttributeValue 함수를 지원하도록 확장되었습니다. 그러나, 아래의 "현재 제한(Current limitations)" 섹션에서 언급했듯이 Idemix의 경우에는 ourole이라는 두 가지 속성만 있습니다.

Fabric CA가 identity 발급자(issuer)인 경우:

  • ou 속성의 값은 identity의 affiliation입니다. (예: "org1.department1")
  • role 속성의 값은 'member' 또는 'admin'이 됩니다. 'admin' 값은 identity가 MSP 관리자임을 나타냅니다. 기본적으로 Fabric CA에서 만든 identity는 'member' 역할을 리턴합니다. 'admin' identity를 생성하려면 role 속성과 2 값을 사용하여 identity를 등록하십시오.

cid 라이브러리를 사용하여 이러한 속성을 검색하는 예제는 이 java SDK 예제를 참조하십시오.


Current limitations(현재 한계)

Idemix의 현재 버전에는 몇 가지 제한 사항이 있습니다.

고정된 속성 집합

사용자 지정 속성과 함께 Idemix 자격 증명을 발행하거나 사용할 수 없습니다. 사용자 지정 속성은 이후 릴리스에서 지원됩니다.

현재 다음 네 가지 속성이 지원됩니다.

  1. 조직 구성 단위 속성("ou")
    • 사용법 : X.509와 동일
    • 유형 : String
    • 공개여부 : always
  2. 역할 속성("role")
    • 사용법 : X.509와 동일
    • 유형 : integer
    • 공개여부 : always
  3. 등록 ID 속성
    • 사용법 : 사용자를 고유하게 식별 - 동일한 사용자(user)에 속한 모든 등록(enrollment) 자격 증명에서 동일 (이후 릴리스에서 감사에 사용됨)
    • 유형 : BIG
    • 공개여부 : Fabric CA에 대한 인증 토큰을 생성할 때에만 사용. 절대로 서명에 사용하지 않음
  4. 해지(revocation) 처리 속성
    • 사용법 : 자격 증명을 고유하게 식별 (향후 릴리스에서 해지(revocation)될 예정)
    • 유형 : integer
    • 공개여부 : never

해지(revocation)는 아직 지원되지 않습니다.

위에서 언급한 해지(revocation) 처리 속성의 존재로 볼 수 있듯이 해지(revocation) 프레임 워크의 상당 부분이 있지만, Idemix 자격 정보의 해지(revocation)는 아직 지원되지 않습니다.


피어는 Idemix를 보증(endorsement)에 사용하지 않습니다.

현재 Idemix MSP는 서명 확인을 위해서만 피어에 의해 사용됩니다. Idemix를 사용한 서명은 Client SDK를 통해서만 수행됩니다. Idemix MSP는 더 많은 역할('peer' 역할 포함)을 지원합니다.


Technical summary(기술 요약)

Comparing Idemix credentials to X.509 certificates(Idemix 자격 증명을 X.509 인증서와 비교)

Idemix 및 X.509 인증서에서 인증서/자격 증명 개념 및 발급 프로세스는 매우 유사합니다. 속성(attributes) 집합은 위조할 수 없는 서명으로 디지털 서명되며 자격 증명이 암호로 묶여 있는 비밀 키가 있습니다.

표준 X.509 인증서와 Identity Mixer 자격 증명의 주요 차이점은 속성(attributes)을 인증하는 데 사용되는 서명 체계입니다. Identity Mixer 시스템의 기반이 되는 서명은 서명 및 (선택한) 속성 값 자체를 드러내지 않고 서명 및 해당 속성 소유에 대한 효율적인 증명을 허용합니다. 우리는 어떤 지식에 대한 서명이 유효하고 사용자가 해당 자격 증명 비밀 키를 소유하고 있음을 확인하면서 이러한 "지식(knowledger)" 또는 "정보(information)"가 공개되지 않도록 보장하기 위해 제로-지식 증명(zero-knowledger proof)을 사용합니다.

이러한 증명은 X.509 인증서와 마찬가지로 원래 자격 증명에 서명한 기관의 공개 키로 확인할 수 있으며 성공적으로 위조할 수 없습니다. 자격 증명 비밀 키를 아는 사용자만 자격 증명 및 그 속성에 대한 증명을 생성할 수 있습니다.

불연계성(unlinkability)과 관련하여 X.509 인증서가 제시될 때 인증서 서명을 확인하기 위해 모든 속성을 공개해야 합니다. 이것은 서명하는 트랜잭션의 모든 인증서 사용이 연계 가능하다는 것을 의미합니다.

이러한 연계 가능성을 방지하려면 매번 새로운 X.509 인증서를 사용해야 하므로 복잡한 키 관리와 통신 및 저장소 오버 헤드가 발생합니다. 또한 인증서를 발행하는 CA조차도 모든 트랜잭션을 사용자에게 연계할 수 없는 경우가 있습니다.

Idemix는 CA조차도 원래의 자격 증명에 증명을 연계할 수 없기 때문에 CA와 검증자(verifiers) 모두와의 연계 가능성을 피하는 데 도움이 됩니다. 발급자(issuer)나 검증자(verifier)는 두 가지 증명이 동일한 자격 증명 (또는 다른 두 가지 증명)에서 파생되었는지 여부를 알 수 없습니다.

Identity Mixer 기술의 개념과 기능에 대한 자세한 내용은 개인 정보 보존 속성 기반 인증을 위한 개념 및 언어 문서에 설명되어 있습니다.


Topology Information(토폴로지 정보)

위의 제한 사항을 감안할 때, 채널 당 하나의 Idemix 기반 MSP 또는 극단적으로 네트워크 당 하나의 Idemix 기반 MSP만 사용하는 것이 좋습니다. 예를 들어, 실제로 채널 당 다수의 Idemix 기반 MSP를 갖는다면, 그 채널의 원장을 읽는 당사자가 다른 Idemix 기반 MSP에 속한 당사자들이 서명한 트랜잭션을 구분할 수 있습니다. 이것은 각 트랜잭션이 서명자의 MSP-ID를 유출하기 때문입니다. 즉, Idemix는 현재 동일한 조직(MSP) 중 클라이언트의 익명성(anonymity)만 제공합니다.

앞으로 Idemix 기반 인증 기관(Idemix-based Certification Authorities)의 익명 계층 구조를 지원하기 위해 Idemix를 확장하여 고유한 공개 키를 사용하여 인증된 자격 증명을 확인할 수 있으므로 조직 전체에서 익명성을 확보할 수 있습니다. 이렇게 하면 여러 Idemix 기반 MSP가 동일한 채널에 공존할 수 있습니다.

원칙적으로 단일 Idemix 기반 MSP 및 여러 X.509 기반 MSP를 갖도록 채널을 구성할 수 있습니다. 물론, 이러한 MSP 간의 상호 작용은 잠재적 누출 정보가 될 수 있습니다. 유출된 정보의 평가는 case.wq별로 이루어져야 합니다.


Underlying cryptographic protocols(기본 암호화 프로토콜)

Idemix 기술은 여러 메시지와 서명 소유에 대한 효율적인 제로-지식 증명(zero-knowledger proofs)을 지원하는 숨은 서명 구성으로 구축되었습니다. Idemix의 모든 암호화 빌딩 블록은 최고 회의 및 저널에 게시되었으며 과학 공동체에 의해 확인되었습니다.

Fabric에 대한 이 특별한 Idemix 구현은 Camenisch와 Lysyanskaya가 간략히 제안했으며 Au 등이 자세히 기술한 페어링 기반 서명 체계를 사용합니다. Camenisch 등의 제로-지식 증명(zero-knowledger proofs)에서 서명에 대한 지식을 증명하는 능력이 사용되었습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함