ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8. Private data
    하이퍼레저 패브릭/이론 2019. 3. 31. 10:19

    8. Private data

    Private data?

     

    채널에 있는 조직 그룹이 해당 채널에 있는 다른 조직으로부터 데이터를 비공개로 유지해야하는 경우 데이터를 공유하는 조직만으로 구성된 새 채널을 만들 수 있다. 그러나 이런 경우에 별도의 채널을 만들면 추가적으로 관리 오버 헤드(체인 코드 버전, 정책, MSP 등 관리)가 발생하며 모든 채널 참가자가 트랜잭션을 볼 수 있지만 일부 데이터만 비공개하는 사용 사례는 허용되지 않는다.

    따라서 v1.2부터 Fabric은 개별 채널을 만들지 않고도 개인 데이터를 생성, 승인 또는 인증할 수있으며 채널내에서 조직 하위 집합을 정의할 수 있는 private data collections을 제공한다.

    Private data collection이란?

     

    컬렉션은 두 요소의 조합이다.

    1.      실제 개인 정보는 가십 프로토콜을 통해 허용된 조직에게만 peer-to-peer로 전송되며 이 데이터는 피어의 개인 데이터베이스에 저장된다. Ordering service는 여기에 관여하지 않으며 개인 정보를 볼 수 없다. 가십 프로토콜을 설정하기 위해선 조직 간 통신을 부트스트랩하기 위해 앵커 피어를 설정해야 한다.

    2.      승인되고 정렬된, 채널내의 모든 피어의 원장에 기록된 데이터의 해시이다. 해시는 트랜잭션의 증거로 사용되며 상태 유효성 검사에 사용될 수도 있고, 감사 목적으로 사용될 수 있다.

    다음 그림은 private data에 대한 권한이 있는 피어의 원장과 그렇지 않은 피어의 원장을 보여준다.

    컬렉션 멤버는 법적 분쟁을 일으켰거나 자산을 제 3자에게 양도하려는 경우 private data를 다른 당사자와 공유할 수 있다. 그러면 제 3자가 private data의 해시를 계산하고 채널 원장의 상태와 일치하는지 확인하고 특정 시점에서 컬렉션 멤버간에도 상태가 같음을 확인한다.

    한 채널 내에서 컬렉션을 사용할 때와 별도의 채널을 사용할 때

    - 모든 트랜잭션(및 원장)이 채널의 구성원인 조직 집합 내에서 기밀로 유지되어야 하는 경우는 채널을 사용한다.

    - 트랜잭션(및 원장)은 조직 집합끼리 공유해야 하지만 해당 조직의 하위 집합만 트랜잭션내의 일부(또는 모든) 데이터에 액세스 해야 하는 경우에는 컬렉션을 사용한다. 또한 데이터가 블록으로 전송되지 않고 피어 투 피어(peer-to-peer)로 전송되므로 ordering service노드로부터 데이터를 기밀로 유지해야하는 경우에도 private data collection을 사용한다.

    Private data가 포함된 트랜잭션의 흐름

     

    Private data collection이 체인 코드에서 참조되는 경우 데이터의 기밀성을 보호하기 위해 트랜잭션이 제안되고 승인되며 원장에 기록되는 과정에서 트랜잭션 흐름이 약간 다르다.

    1.      클라이언트 어플리케이션은 컬렉션의 권한을 가진 조직의 일부인 endorsing peer에게 체인 코드 기능(private data 읽기 또는 쓰기)을 호출하는 제안 요청을 제출한다. 체인 코드에서 Private data를 생성하는 데 사용되는 Private data 또는 data는 임시 필드에서 전송된다.

    2.      endorsing peer는 트랜잭션을 시뮬레이션하고 임시 데이터 저장소 (피어의 로컬 임시 저장소)private data를 저장한다. 그리고 컬렉션의 정책에 따라 가십 프로토콜을 이용해 private data를 권한을 가진 피어로 배포한다.

    3.      Endorsing peer는 개인 데이터의 keyvalue의 해시값을 공개 데이터로 클라이언트에게 전송하여 응답한다. 어떠한 경우에도 개인 데이터는 클라이언트에게 재전송되지 않는다.

    4.      클라이언트 어플리케이션은 트랜잭션을 ordering service에게 전송(Private data의 해시 값만 전송)한다. 그리고 일반적인 방식으로 트랜잭션은 블록으로 배포된다. Private data의 해시 값을 포함하고 있는 블록은 모든 피어에 배포된다. 이러한 방식으로 채널의 모든 피어는 실제 private data를 알지 못한 채 일관된 방식으로 private data의 해시를 사용하여 트랜잭션의 유효성을 검사할 수 있다.

    5.      블록 완료 시간에 권한이 있는 피어는 컬렉션 정책을 사용하여 개인 데이터에 대한 액세스 권한이 있는지 여부를 결정한다. 이 경우, 먼저 로컬 임시 데이터 저장소에서 체인 코드 보증 기간에 private data를 이미 받았는지 확인한다. 그렇지 않은 경우 다른 피어에서private data를 가져오려고 시도할 것이다. 그런 다음 공개 블록에서 해시의 유효성을 검사하고 트랜잭션과 블록을 커밋한다. 유효성 검사 및 커밋을 할 때 private data는 개인 상태 데이터베이스 및 개인 쓰기 저장 장치의 복사본으로 이동된다. 그러면 private data가 임시 데이터 저장소에서 삭제된다.

    [컬렉션의 유스 케이스]

    교역품을 생산하는 채널에 속한 5개 그룹의 조직이 있다.

    - 해외로 상품을 판매하는 농부

    - 해외로 상품을 이동시키는 유통업체

    - 당사자간에 물품을 이동시키는 배송업체

    - 유통업체로부터 상품을 구매하는 도매업체

    - 배송업체 및 도매업자로부터 상품을 구매하는 소매업체

    유통업체는 도매업체와 소매업체로부터 거래 조건을 기밀로 유지하기 위해 농부와 배송업체와의 개인적인 거래를 원할 수 있다.

    또한 유통업체는 상품을 소매업체보다 저렴한 가격으로 도매업체에 판매하기 때문에 소매업체와 별도의 private data 관계를 원할 수 있다.

    또한 도매업체는 소매업체와 유통업체와 private data 관계를 원할 수 있다.

    이러한 각각의 관계에 대해 작고 많은 채널을 정의하는 대신 여러 개의 PDC(private data collections)을 정의하여 다음 사이에서 private data를 공유 할 수 있다.

    1.     PDC1 : 유통 업체, 농부, 배송 업체

    2.     PDC2 : 유통 업체와 도매 업체

    3.     PDC3 : 도매 업체, 소매 업체 및 유통 업체

     

     

    유통업체가 소유하는 피어들은 원장안에 여러 개의 private 데이터베이스를 보유할 것이다. 데이터베이스는 유통업체와 농부, 그리고 배송업체의 private data를 포함하고 유통업체와 도매업체의 private data를 포함할 것이다. 이러한 데이터베이스는 채널 원장을 보유하는 데이터베이스와 별도로 관리되므로 private data "SideDB" 라고도 한다.

    '하이퍼레저 패브릭 > 이론' 카테고리의 다른 글

    9. Ledger  (0) 2019.03.31
    7. Peers(2)  (0) 2019.03.31
    7. Peers(1)  (0) 2019.03.31
    6. MSP(Membership Service Provider)(2)  (0) 2019.03.31
    6. MSP(Membership Service Provide)(1)  (0) 2019.03.31
Designed by Tistory.