본문으로 바로가기

이제 구조에 대해 어느정도 설명이 끝났지만 들어가기전에 한가지 더 살펴보아야 할 것이 있습니다.

하이퍼레저 패브릭에서의 CA(인증기관, Certificate Authority)과 MSP에 대해 간략히 설명하고 넘어가야합니다.

CA라고하면 흔히 볼수있는것은 https에서의 ssl인증에서의 인증서 제공기관등이 예시라고 볼 수있습니다.

 

CA (출처: hyperledger fabric 공식문서)

하이퍼레저 패브릭은 기업형 블록체인이며 폐쇠형 블록체인이라 설명한적이 있습니다. 둘 다 같은 말이지만 결국 중요한건 허락받은 참여자만이 블록체인 네트워크에 참가가 가능하다는 것입니다. 그렇다면 여기서 이 허가는 누가 내려주는 것인지에 대한 답이 여기에 있습니다. 하이퍼레저 패브릭 CA는 하이퍼레저 패브릭의 어플리케이션의 일종이며 정보들을 제공합니다. 이 정보들은 모여서 MSP(Membership Service Provider)를 구성합니다. MSP를 통해서 채널(Channel)의 관리 권한이나 접근 권한을 관리 할 수 있습니다. 간단히 말해서 특정 채널에 피어가 참여하고 체인코드를 호출하기 위해 필요한 권한을 여기서 관리해준다고 생각하면 됩니다. 물론 여기서도 PKI(공개키 구조 기반)을 사용합니다. 

 

CA (출처: hyperledger fabric 공식 문서)

 MSP 는 루트 인증 기관 (root CA, rCA) 세트 및 선택적으로 중간 인증 기관 (ICA, intermediate CA) 세트로 구성 될 수있습니다. MSP의 iCA 인증서는 MSP의 rCA 또는 iCA 중 하나에 의해 서명되어야합니다. iCA는 여러 조직에서 인증서를 발급 할 때 상당한 유연성을 제공하며 Fabric에서 매우 유용합니다. 조직마다 다른 rCA나 iCA의 사용이 가능하고 반대로 동일한 rCA를 사용하는것도 가능합니다.

CA of Hyperledger Fabric

위의 그림은 어떠한 블록체인 네트워크를 구성하는 가상의 그림입니다. 먼저 Root CA가 존재하고 Root CA와 연결된 intermediate CA들이 존재합니다. intermediate CA들이 각각 기업의 인증을 관리합니다. 기업은 신원 등록(enroll)이나 신규 신원(register)요청등을 intermediate CA와 주고받습니다. 이러한 방식을 사용하여 블록체인 네트워크를 재기동하지 않고 동적으로 새로운 기업이 들어와도 블록체인 네트워크에 접근이 가능하도록 구성되어 있습니다. 

 

CA에서 PKI(공개키 기반 구조)를 이용해 신뢰 체인을 통해 확인 가능한 신원을 제공 할 수있는 방법을 보았습니다. 이제 이를 사용하여 블록 체인 네트워크의 신뢰할 수있는 구성원을 나타내는 방법을 살펴 보겠습니다.

MSP는 Global과 Local로 구분 가능하고 이 중에서 Global은 Network와 채널등으로 구분되고 Local은 피어(peer)와 오더러(orderer)등으로 또한 구분이 가능합니다. 

 

(출처: hyperledger fabric 공식 문서)

위 그림에서 MSP의 단계(level)을 볼 수있습니다. peer 및 orderer 노드의 MSP는 로컬 인 반면, 채널 (네트워크 구성 채널 포함)의 MSP는 해당 채널의 모든 참가자간에 공유됩니다. 이 그림에서 네트워크 구성 채널은 조직1(ORG1)에서 관리하지만 다른 응용 프로그램 채널은 조직1과 조직2(ORG2) 모두 관리 할 수 ​​있습니다. 피어는 조직2의 구성원이며 관리하고 조직1은 오더러를 관리합니다. 조직1은 RCA1의 ID를 신뢰하는 반면, 조직2는 RCA2의 ID를 신뢰합니다. 조직1은 네트워크를 관리하고 조직2는 네트워크 정의 안에서 존재합니다. 용어들에 대해 자세히 들어가봅시다. 

 

글로벌(Global) MSP는 블록체인 네트워크와 채널에 참여한 모든 구성원에 대해 적용되기 때문에 글로벌이라는 분류를 가집니다. 글로벌 MSP에 정의된 내용에 따라서 블록체인 네트워크가 구성되고 이러한 정보는 제네시스 블록과 채널을 구성한느 트랜잭션에 포함되니다. 

 

- Network MSP는 네트워크에 참여하는 조직(Organization)의 MSP를 식별합니다. 따라서 어떤 조직(멤버)이 블록체인 네트워크에 참여할지를 정하는 역할을 해줍니다. 또한 네트워크를 관리하는 권한(ex. 채널 생성 등)을 가진 참여자를 식별합니다.

- Channel MSP는 특정 채널에 참여하는 조직을 식별합니다. 채널의 관리권한을 누가 갖는지도 여기에서 Channel Policy등으로 정의되 있습니다. 

 

로컬(Local) MSP는 각각의 피어나 오더러등의 노드의 파일 시스템에 탑재되고 MSP를 통해 식별이나 제어 가능한 대상이 탑재된 노드에 한정되기 때문에 local이라는 분류를 가지게 됩니다.

- Peer MSP는 피어의 파일시스템에 탑재되어 Channel MSP와 지슷한 역할을 수행합니다. 단 관리 범위가 해당 피어에 한정됩니다. 피어 MSP는 보통 소속 조직의 노드를 식별하거나 체인코드를 설치 가능한 피어인지 검증하기 위해 사용됩니다.

- Orderer MSP는 OSN에 탑재되어 자신이 소속된 조직의 신뢰 가능한 노드들을 식별가능합니다. 

 

 

 

MSP의 구조 (출처:hyperledger fabric 공식 문서)

위의 그림은 로컬 MSP가 로컬 파일 시스템에 저장되는 방법을 보여줍니다. 네트워크나 채널 MSP가 실제로 이러한 방식으로 물리적으로 구성되어 있지는 않지만 이해에 있어서 도움은 될 것입니다.

 

Root CAs는 해당 조직이 신뢰하는 rCA가 발급한 X.509 인증서입니다. 조직에 속한것임을 증명해주는 역할을 하기때문에 최소 한개는 반드시 있어야합니다. 

Intermediate CAs는 해당 MSP가 속하는 조직이 신뢰하는 iCA가 발급한 X.509 인증서입니다. 모든 인증서들은 rCA나 rCA와 연결된 iCA의 인증되어 있어야 합니다. 하위 조직(부서) 등을 식결할때 유용합니다.

Organizational Units는 $FABRIC_CFG_PATH/msp/config.yaml 파일에 나열되며 Organization Unit(조직 단위)의 목록이 포함되어 있습니다. 이 조직 단위에 나열된 참여자들만 식별됩니다. 정의하지 않아도 되는데 만약 정의하지 않으면 모든 조직의 참여자들을 식별 할 수 있습니다.

Administrators는 해당 MSP가 속해있는 조직이나 채널을 관리하는 관리자들의 인증서 목록입니다. 표준 MSP 유형의 경우이 목록에 하나 이상의 X.509 인증서가 있어야합니다. 

Revoked Certificates는 만료된 인증서들의 목록이 들어있습니다. 개념적으로 CA의 CRL (Certificate Revocation List)과 동일하지만 조직의 멤버 자격 취소와도 관련이 있습니다. 이는 인증서가 해지 될 때만 채워집니다.

Node Identity(Signing Certificates)는 해당 MSP가 들어간 노드를 식별하기 위한 인증서 입니다. 이 인증서를 통해서 블록체인 네트워크에 참여하는 다른 노드가 해당 노드가 보낸 메시지인지 식별하고 검증 하는것이 가능해집니다. 로컬 MSP에 필수이며 노드에 대해 정확히 하나의 X.509 인증서가 있어야합니다. 채널 MSP에는 사용되지 않습니다.

KeyStore(for Private Key)는 해당 MSP가 탑재되는 노드가 블로게인 네트워크에 발생하는 메시지에 대한 전자서명을 할 때 필요합니다. 이 키는 암호화되어 Node Identity폴더에 포함 된 노드의 ID와 일치합니다. 이 폴더는 로컬 MSP에 필수적이며 정확히 하나의 개인 키를 포함해야합니다. 채널 MSP는이 폴더를 포함하지 않습니다(채널 MSP는 ID 확인 기능 만 제공하고 서명 기능은 제공하지 않기 때문입니다.)

TLS Root CA는 해당 MSP가 속한 신뢰하는 rCA가 발금한 X.509형식의 인증서 목록이며 TLS통신에서 사용합니다. 이 폴더에는 반드시 하나 이상의 TLS Root CA X.509 인증서가 있어야합니다.(TLS 통신의 예: 피어가 ledger update 수신을 위해 오더러에 연결하는 경우

TLS Intermediate CA는 당 MSP가 속하는 조직이 신뢰하는 iCA가 발급한 X.509 인증서이며 TLS통신에서 사용합니다.

iCA처럼 선택적으로 지정 가능하기 때문에 필수는 아닙니다.

 

 

 

References

논문: Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains

공식 홈페이지 문서: https://hyperledger-fabric.readthedocs.io/en/release-1.4/index.html