코딩공부/블록체인 & 하이퍼레저 패브릭

7. 하이퍼레저 패브릭 구성요소(4)

에반셀린 2023. 8. 16. 16:22

https://product.kyobobook.co.kr/detail/S000001916918

 

하이퍼레저 패브릭으로 배우는 블록체인 | 윤대근 - 교보문고

하이퍼레저 패브릭으로 배우는 블록체인 | 프라이빗 블록체인 플랫폼 전문가를 위한 첫걸음! 국내 최초의 하이퍼레저 패브릭 입문서!국내외 많은 기업들이 블록체인 서비스 개발에 하이퍼레저

product.kyobobook.co.kr


1. Identity

하이퍼레저 패브릭은 프라이빗 블록체인이라고 이전 글에 섦명하였다.

즉, 허가된 사용자만이 블록체인 플랫폼에 참여할 수 있는데, 사용자가 어떻게 접근 권한을 얻는지, 또 Peer와 Orderer로 구성된 하이퍼레저 패브릭 네트워크에서 어떻게 서로의 신원을 확인하는 지 알아보겠다.

 

하이퍼레저 패브릭에서는 Peer, Orderer, Client등 다양한 종류의 네트워크 노드가 있다.

이러한 네트워크 노드들은 서로의 신원을 어떻게 확인할 수 있을까?

 

정답은 바로 PKI(Public Key Infraastructure) 기반의 디지털 인증이다.

PKI 기반 Peer를 위한 디지털 인증서, Orderer를 위한 디지털 인증서, Client를 위한 디지털 인증서를 하이퍼레저 패브릭에서 제공하는 cryptogen과 Fabric-CA등을 이용하여 생성할 수 있다.

 

그렇다면 PKI란 무엇일까?

넓은 의미로 PKi는 디지털 인증서를 안전하게 제공/생성/관리하는 기술이라 말할 수 있다. PKI는 CA(Certificate Authority)라고 불리는 네트워크 노드하에 관리가 된다.

 

CA는 디지털 인증서를 안전하게 관리해주는 기관인데, 디지털 인증서를 필요한 사용자에게 발급/저장/삭제해주는 역할을 수행한다. PKI는 추후에 MSP를 이해하기 위해서 꼭 알아야 하는 기술이다. PKI가 가지고 있는 네 가지 핵심 구성요소를 아래에 같이 나타낸다.

 

  • 디지털 인증서
    - PKI는 X.509 디지털 인증서를 사용한다. X.509는 ITU-T(국제전기통신연합의 전기통신 표준화 부문)에서 정의한 디지털 인증서 생성 관련 국제 표준을 의미한다. X.509를 사용하는 네트워크 노드들은 전세계적으로 약속된 X.509 국제 표준을 방식으로 디지털 ID를 생성하여 서로의 신원을 증명할 수 있다. 만약에 X.509가 아닌 다른 인증 방식으로 디지털 ID를 만든다면 X.509를 사용하는 노드들은 다른 인증 방식을 사용하는 노드의 신원을 확인할 수 없다. X.509는 하이퍼레저 패브릭뿐만 아니라 현재 인터넷의 다양한 분야에서 신원 확인을 위해 광범위하게 사용되고 있는 가장 유명한 디지털 신원 증명 방식이다.

  • 공개키(Public Key)/비밀키(Private Key)
    - 데이터가 위/변조되지 않음을 보장하는 무결성은 통신에서 굉장히 중요한 요소이다. 무결성을 증명하기 위해 가장 기본이 되는 것이 바로 신원 보증과 데이터 암호화이다. 이 두 가지 조건을 만족시키기 위해 공개키와 비밀키를 사용하는데, 이 두 가지를 이용한 신원 보증 방식을 알아보고자 한다.

    사용자A는 자신의 비밀키를 이용해 전송할 데이터를 암호화한 후 암호화된 파일을 사용자B에게 전송한다. 사용자A의 비밀키로 암호화된 데이터는 오직 사용자A의 공개키를 이용해서만 복호화할 수 있다. 그리고 사용자A의 공개키는 오직 사용자A의 비밀키로 암호화된 데이터만 복호화할 수 있다. 그리하여 만약 사용자B가 수신한 데이터가 사용자A의 공개키로 복호화되지 않는다면 해당 데이터는 사용자A가 보낸 것이 아니게 된다.

    사용자B는 사전에 획득한 사용자A의 공개키를 이용해 암호화된 데이터를 복호화한 후 데이터 복호화가 정상적으로수행된다면 해당 데이터는 사용자A가 보냈다는 것을 확신할 수 있다.

    다음으로는 공개키와 비밀키를 이용한 데이터 암호화 방식을 알아보고자 한다.

    앞의 설명과는 반대로 사용자B가 사용자A에게 데이터를 암호화해서 전송한다. 만약 사용자B가 오직 사용자A만 볼 수 있는 데이터 파일을 전송하고 싶다면 우선, 사용자B는 사용자A의 공개키를 획득한 후 사용자A의 공개키를 이용해서 데이터를 암호화한다. 사용자A의 공개키로 암호화된 데이터는 사용자A의 비밀키를 이용해서만 복호화할 수 있다.

    사용자B가 사용자A에게 암호화된 데이터를 전송하면 사용자A는 자신의 비밀키를 이용하여 데이터를 복호화한 후 데이터 내용을 확인할 수 있다. 만약 악의적인 해커가 네트워크 중간에서 암호화된 데이터를 도청한다고 하더라도 사용자A의 비밀키가 없기 때문에 도청한 데이터의 내용을 확인할 수 없다.

  • CA(Certificate Authority)
    - 앞의 공개키와 비밀키를 이용한 암호화 동작 과정을 알게 되었는데 공개키와 비밀키만을 이용하여 암호화를 수행할 경우 보안에 매우 취약하게 된다. 만약에 사용자A와 해커 모두 사용자B에게 자신이 사용자A라고 주장하는 경우, 사용자B가 잘못된 경로를 통해 해커의 공개키를 사용자A의 공개키로 착각해서 사용한다면 어떻게 될까? 이럴 경우 사용자B는 사용자A가 보내는 데이터 대신 해커가 보내는 데이터를 사용자A가 보냈다고 믿게 된다. 참고로, 이와 같은 해커의 공격 방식을 MITM(중간자 공격, Man in the Middle AAAttack)이라고 한다.

    위와 같은 경우를 방지하기 위해서 CA(Certificate Authority)라고 불리는 인증 노드를 사용하게 되는데, CA가 어떤 역할을 하는지 간단하게 알아보고자 한다.

    사용자A는 자신의 공개키를 CA에 등록한다. 그 후 사용자B가 사용자A의 공개키가 필요할 경우 CA에게 사용자A의 공개키를 요청하게 된다. 공개키 요청을 받은 CA는 암호화 기법을 통해 안전하게 사용자A의 공개키를 사용자B에게 전달하게 된다.

    이러한 CA는 신뢰할 수 있는 기관에 의해 운영되는데, 우리나라에서는 현재 한국정보보호진흥원에서 CA(Root CA)를 운영하고 있다. 주요 업무는 공개키 등록 시 본인 인증과 X.509와 같은 디지털 인증서 생성 및 발행 등이 있다.

    하이퍼레저 패브릭에서는 Fabric-CA 노드가 CA 역할을 한다. 기존의 CA와 마찬가지로 X.509 인증서를 발급하고 관리할 수 있을 뿐만 아니라 하이퍼레저 패브릭 네트워크 구성을 위한 특화된 기능도 몇 가지 제공하고 있다.

  • CRL(Certificate Revocation List)
    - CRL은 이름에 나와 있는 의미 그대로 폐기된 인증서에 대한 목록을 말한다. CA는 CRL을 통해 폐기된 인증서를 관리하고 있다. 사용자B는 사용자A로부터 인증서를 받으면 CA의 CRL에 해당 인증서가 존재하는지 확인하는 작업을 말한다.

    만약 CRL에 해당 인증서가 존재하지 않는다면 사용자B는 사용자A를 올바른 사용자로 판단하고 앞서 설명한 인증 절차를 수행하게 된다. 만약 사용자A가 보낸 디지털 인증서가 CRL에 존재할 경우 인증 절차가 이루어지지 않게 된다.