아메숑 2019. 3. 31. 10:11

5. Identity

What is an Identity?

 

블록 체인 네트워크의 참가자는 peers, orderers, client applications, administrators 등이 있으며, 참가자들은 X.509 디지털 인증서에 캡슐화 된 디지털 ID를 갖는다. 이러한 ID는 리소스에 대한 정확한 사용 권한을 결정하고 블록 체인 네트워크에서 참가자가 갖고 있는 정보에 액세스하기 때문에 중요하다.

디지털 ID에는 패브릭이 사용 권한을 결정하는데 필요한 몇 가지 추가 속성이 있으며 ID 및 관련 속성의 조합에 특수한 이름 (principal)이 부여된다. PrincipalsuserIDs 또는 groupIDs와 같지만 액터(actor)의 조직, 조직 단위, 역할 또는 액터의 특정 ID와 같은 액터의 신원에 대한 광범위한 속성을 포함하므로 좀 더 유연하다. 다시 말해 principal는 사용 권한을 결정하는 속성이다.

ID를 검증받기 위해선 신뢰할 수 있는 기관에서 가져와야 한다. Fabric에서는 Membership service provider(MSP)로 구현이 가능하다. 구체적으로 MSP는 이 조직의 유효한 ID를 관리하는 규칙을 정의한다. 패브릭의 기본 MSP X.509 인증서를 ID로 사용하여 전통적인 PKI (Public Key Infrastructure) 계층 구조 모델을 채택한다.

ID를 사용하는 간단한 시나리오

 

슈퍼마켓을 방문하여 식료품을 산다고 가정했을 때 계산대에는 Visa, Mastercard AMEX 카드 만 허용된다는 표시가 있다. 그 외 카드로 결제하려고 할 때 카드가 신뢰할 수 있고, 계좌에 충분한 금액이 있는지 여부는 중요하지 않다. 이 카드는 허용되지 않을 것이다.

 

검증된 신용 카드를 가지고 있는 것으론 충분하지 않다. 상점에서도 수락해야 한다. PKI MSP는 동일한 방식으로 함께 작동한다. PKI ID 목록을 제공하고 MSP는 이들 중 어느 것이 네트워크에 참여하는 특정 조직의 구성원인지 알려준다.

PKI 인증 기관 및 MSP는 유사한 기능을 제공한다. PKI는 카드 제공 업체와 비슷하며 다양한 유형의 검증 가능한 ID를 분배한다. 반면에 MSP는 상점에서 수락한 카드 제공 업체 목록과 비슷한 역할을 하며, 매장 결제 네트워크의 신뢰할 수 있는 회원 (액터)을 식별한다. MSP는 검증 가능한 ID를 블록 체인 네트워크 구성원으로 변환한다.

PKI란 무엇일까?

 

A public key infr

astructure (PKI)는 네트워크에서 보안 통신을 제공하는 인터넷 기술 모음이다. S HTTP에 붙인 HTTPS PKI이다. 여러분이 이 문서를 웹 브라우저에서 읽는다면 아마도 PKI를 사용하여 이 문서의 출처가 검증되었다는 것을 확인할 수 있을 것이다.

 

PKI (Public Key Infrastructure)의 구성 요소.

PKI는 디지털 인증서를 당사자 ( : 서비스 사용자, 서비스 제공 업체)에게 발행한 인증 기관으로 구성되며, 당사자는 디지털 인증서를 사용하여 메시지를 주고받을 때 자신임을 인증한다. CACertificate Revocation List (CRL)은 더 이상 유효하지 않은 인증서의 목록으로 구성된다. 인증서 철회는 여러 가지 이유로 발생할 수 있는데 예를 들어 인증서와 연관된 암호화된 개인적인 자료가 노출되었을 때 인증서가 폐기될 수 있다.

블록 체인 네트워크는 통신 네트워크 그 이상이지만 다양한 네트워크 참여자 간의 안전한 통신을 보장하고 블록 체인에 게시된 메시지가 올바르게 인증되도록 하기 위해 PKI 표준을 사용한다. 따라서 PKI의 기본 사항을 이해하고 MSP가 중요한 이유를 이해하는 것이 중요하다.

PKI에는 네 가지 주요 요소가 있다.

l  디지털 인증서 (Digital Certificates)

l  공개키 및 개인키 (Public and Private Keys)

l  인증 기관 (Certificate Authorities)

l  인증서 철회 목록 (Certificate Revocation Lists)

디지털 인증서

 

디지털 인증서는 인증서 보유자와 관련된 속성 집합을 보유하고 있는 문서이다. 가장 일반적인 유형의 인증서는 X.509 표준을 준수하는 인증서로, 당사자를 식별할 수 있는 세부 정보를 해당 구조로 인코딩 할 수 있다.

예를 들어 미시간 주 디트로이트의 Mitchell Cars 제조부서의 Mary Morris는 디지털 인증서의SUBJECT 속성이 C = US, ST = Michigan, L = Detroit, O = Mitchell Cars, OU = Manufacturing, CN = Mary Morris / UID = 123456인 디지털 인증서를 가지고 있을 수 있다. Mary의 디지털 인증서는 Mary에 대한 주요 사실들을 증명할 수 있는 Mary에 대한 정보를 제공하므로 신분증과 유사하다.

 

Mary Morris라는 당사자를 나타내는 디지털 인증서.

Mary는 인증서의 SUBJECT이고, 강조 표시된 SUBJECT 텍스트는 Mary에 대한 중요한 사실들을 나타낸다. 인증서에는 그 외 더 많은 정보가 포함되어 있다. 가장 중요한 것은 Mary의 공개 키가 인증서 내에 배포되는 반면 개인 서명 키는 배포되지 않는다는 것이다. 이 서명 키는 비공개로 유지해야한다.

Mary의 모든 속성은 암호화라는 수학 기법을 사용하여 기록되므로 인증서를 변조하면 무효화 할 수 있다. 암호화는 Mary가 인증 기관 (CA)으로 알려진 인증서 발급자를 신뢰하는 한 자신의 신원을 증명하기 위해 다른 사람에게 자신의 인증서를 제시할 수 있게 한다. CA가 개인키를 안전하게 유지하는 한, 인증서를 읽는 모든 사람은 Mary에 대한 정보가 변조되지 않았음을 확신할 수 있다. Mary X.509 인증서는 변조할 수 없는 디지털 신분증이라고 할 수 있다.

인증, 공개키 및 개인키

 

인증 및 메시지 무결성은 보안 통신의 중요한 개념이다. 인증을 위해서는 메시지를 교환하는 당사자들이 특정 메시지를 생성한 ID를 보증해야 한다. 메시지가 "무결성"을 갖는다는 것은 전송 중에 수정할 수 없다는 의미이다. 예를 들어, 여러분은 공격자 대신 실제 Mary Morris와 통신하고 싶을 것이다. 또는 Mary가 메시지를 보낸 경우, 전송 중에 다른 사람이 메시지를 변조하지 않았음을 확신하고 싶을 것이다.

전통적인 인증 메커니즘은 당사자가 메시지에 디지털 서명을 할 수 있게 해주는 디지털 서명에 의존한다. 디지털 서명은 또한 서명 된 메시지의 무결성을 보장한다.

디지털 서명 메커니즘은 각 당사자가 두 개의 암호로 연결된 키, 즉 널리 사용 가능하고 인증 앵커 역할을 하는 공개 키와, 메시지에 디지털 서명을 생성하는 데 사용되는 개인 키를 보유해야 한다. 디지털 서명 된 메시지를 받는 사람은 보낸 사람의 공개 키를 이용해 첨부된 서명이 유효한지 확인하여 받은 메시지의 원본과 무결성을 검증할 수 있다.

개인키와 각 공개키와의 독특한 관계는 보안 통신을 제공하는 암호화 마법이다. 키들 사이의 고유한 수학적 관계는 개인키가 해당 메시지의 서명을 생성하면 오직 해당 공개키를 이용해 서명을 검증할 수 있다.

 

위의 예에서 Mary는 개인 키를 사용하여 메시지에 서명한다. 그리고 Mary의 공개키를 사용하면누구나 서명을 검증할 수 있다.

인증 기관

 

알다시피 액터나 노드는 시스템에서 신뢰하는 기관에서 발급한 디지털 ID를 이용해 블록 체인 네트워크에 참여할 수 있다. 가장 일반적인 경우 디지털 IDX.509 표준을 준수하고 CA (Certificate Authority)에서 발급한 암호화 검증된 디지털 인증서 형태이다.

CA는 인터넷 보안 프로토콜의 일부이며 시만텍 (원래 Verisign), GeoTrust, DigiCert, GoDaddy Comodo와 같은 인기있는 프로토콜이 있다.

 

인증 기관 (Certificate Authority)은 다른 액터에게 인증서를 배포한다. 이러한 인증서는 CA에 의해 디지털 서명되어 액터와 액터의 공개키를 서로 바인딩한다. , CA를 신뢰하고 공개키를 알고 있으면 액터의 인증서의 CA의 서명을 검증하여 특정 액터가 인증서에 포함된 공개키와 바인딩되어 있고, 포함된 속성을 소유하고 있음을 신뢰할 수 있다.

인증서는 액터와 CA의 개인키를 포함하지 않으므로 널리 배포될 수 있다. 따라서 다른 액터에서 오는 메시지를 인증하기 위해 인증서는 anchor of trusts로 사용될 수 있다.

CA도 역시 인증서를 보유하고 있고, 널리 이용이 가능하다. CA의 인증서는 CA가 발행한 ID의 소비자에게 발행된 인증서가 CA에 의해서 생성되었다는 것을 검증하게 준다.

블록 체인 환경에서 네트워크와 상호 작용하고자 하는 모든 액터는 인증서가 필요하다. 또한 하나 이상의 CA를 사용하여 조직의 구성원을 디지털 관점에서 정의할 수 있다.

루트 CA, 중간 CA 및 트러스트 체인

 

CA에는 root CAintermediate CA 두 가지가 있다. 루트 CA는 인터넷 사용자에게 수천만 개의 인증서를 안전하게 배포해야 하기 때문에 중간 CA를 통해 이 프로세스를 배포하는 것이 좋다. 이러한 중간 CA에는 루트 CA 또는 다른 중간 기관에서 발급한 인증서가 있으며, 체인내에 있는 CA에서 발급한 인증서들로 “chain of trust"를 생성할 수 있다. 트러스트 체인은 CA의 기능을 확장하는 동시에 보안을 제공(인증서를 사용하는 조직이 신뢰를 갖고 중간 CA를 사용)할 뿐만 아니라 루트 CA의 노출을 제한한다. 그 이유는 루트 CA가 손상된다면 전체 트러스트 체인을 위태롭게 하기 때문이다. 하지만 중간 CA가 손상되면 정보의 노출이 훨씬 적어진다.

루트 CA와 모든 중간 CA간에 중간 CA의 각각의 인증서를 발급한 CA가 루트 CA이거나 루트 CA에 대한 트러스트 체인이 있는 중간 CA일 때 트러스트 체인은 생성된다.

중간 CA는 여러 조직에서 인증서를 발급할 때 엄청난 유연성을 제공하며 이는 허가된 블록 체인 시스템 (Fabric과 같은)에서 매우 유용하다. 예를 들어, 여러 조직에서 서로 다른 루트 CA를 사용하거나 루트 CA는 같지만 서로 다른 중간 CA를 사용하는 경우에도 서로 상호작용이 가능하다.

패브릭 CA

 

CA는 매우 중요하기 때문에 Fabric은 사용자가 생성하는 블록 체인 네트워크에 CA를 만들 수 있는 내장 CA 구성 요소(Fabric CA)를 제공한다. Fabric CA로 알려진 이 구성 요소는 X.509 인증서 형태의 패브릭 참가자의 디지털 인증서를 관리할 수 있는 개인 루트 CA 공급자이다. Fabric CAFabric을 필요로 하는 루트 CA를 위한 맞춤형 CA이므로, 기본적으로 브라우저에서 일반 / 자동 사용을 위해 SSL 인증서를 제공할 수 없다. 그러나 일부 CA는 인증서를 관리하기 위해 사용되므로 Fabric CA를 사용하여 인증서를 제공하고 관리할 수 있다. 또한 Fabric CA는 공용 / 상업용 루트 또는 중간 CA를 사용하여 인증을 제공하는 것이 가능하다.

인증서 해지 리스트

 

A Certificate Revocation List (CRL)은 여러 이유 중 하나로 해지될 수 있는 인증서에 대한 참조 목록이다. 상점 시나리오에서 CRL은 도난당한 신용 카드의 리스트와 같다.

3자가 다른 사람의 신원을 확인하고 싶을 때, 먼저 발급하는 CA CRL을 검사하여 인증서가 폐기되지 않았는지 확인한다. 검증자는 항상 CRL을 확인할 필요는 없지만 자칫 폐기된 인증서를 수락할 수도 있다.

 

CRL을 사용하여 인증서가 아직 유효한지 확인한다. 공격자가 손상된 디지털 인증서를 유효한 사용자에게 전달하면 사용자는 먼저 CA CRL과 대조하여 더 이상 유효하지 않은 리스트에 포함되지 않았는지 확인할 수 있다

취소되는 인증서는 인증서 만료와 매우 다르다. 해지된 인증서는 만료되지 않았으며 어느 측면에선 유효한 인증서이다.