본문 바로가기
Block Chain/블록체인으로 구현하는 사이버 보안

[블록체인] 6장, 블록체인으로 PKI 신원 식별 구축하기

by Y06 2021. 3. 30.

조직에는 관리할 애플리케이션이 여러 개 있으며 이것들은 서로 다른 시스템 및 서버에서 호스트된다. 조직에서는 사용자를 인증하기 위해 다중 인증 시스템, 시스템 ˙ 애플리케이션별 인증, 싱글 사인온(SSSO), 디렉터리 서버와 같은 여러 방법을 사용한다. 인터넷은 신뢰할 수 있는 이들뿐 아니라 그렇게 못한 이들에게도 열려있기 때문이다. 공중 네트워크 상에서 신뢰를 구축하기 위해서는 독립적이고 신회할 수 있는 당사자가 필요하다. 공개 키 기반구조(public key infrastructure, PKI)는 인터넷 사용자들 간의 신뢰를 구축하도록 만들어진 공개 프레임워크다.

 

PKI

조직에서는 수백 개의 클라우드 기반 애플리케이션을 유지, 관리한다. PKI는 개별적인 신원을 인증하는 보안 수단을 제공한다. 사업적으로는 PKI를 적용하면 애플리케이션의 배포와 관리 문제가 잔순해진다. 온라인으로 소통할 때 겪을 수 있는 보안 위협으로는 신원 절취, 중간자(man-in-the-middle, MITM) 공격, 데이터 유출 같은 것들이 있다.

 

PKI 개요

인터넷은 누구나 접속할 수 있으며 실세계와 달리 지역적, 물리적 장벽이 존재하지 않는다. 이점 때문에 우리는 인터넷 너머의 사람이 누구인지, 신뢰해도 되는지 알기 어렵다.

 

PKI는 밥과 앨리스 사이에 신뢰할 수 있는 제3자(trusted third party, TTP)를 사이에 둠으로써 이 문제를 해결한다. 밥과 앨리스가 대화를 시작하려면 서로 상대방의 신원을 확인해야 하며 TTP가 그것을 달성하도록 도와준다. 다음 다이어그램에서 앨리스는 디지털 서명을 밥에게 공유하며, 밥은 신뢰된 인증 기관으로부터 얻은 공개 키를 가지고 서명을 복호화해서 앨리스의 신원을 확인한다.

 

PKI: PKI는 보안 통신 채널을 수립하는 개체(entity)의 디지털 자산을 관리하는 계층적 표준을 제공한다. 그것은 사용자에 국한되지 않고 이메일, 웹 애플리케이션, 스마트 카드 등 여러 시스템에서 사용할 수 있다.

 

PKI의 진화

버전 2에서 발급자 고유 ID 및 주체(subject) 고유 ID가 헤더에 추가됐다. 버전 3에서 정책 및 다른 관련 정보를 담는 확장 필드가 도입됐다.

 

간단한 등록 프로토콜이 정의돼 있었지만 PKCS#10을 인증서 요청 형식으로 사용하지는 않았다.

 

구성 요소

PKI는 무결성, 인증, 부인 방지(non-repudiation)의 세 가지 보안 원칙을 조합 및 달성하기 위한 다양한 구성요소, 애플리케이션, 정책, 사례의 모음이다. 디지털 인증서는 인터넷상의 디지털 식별자로서 사용되므로 PKI의 주요 구성요소라 할 수 있다.

 

비대칭 키 암호화

암호학(cryptography)에서 암호화(encryption)란 의도된 당사자만 볼 수 있도록 정보를 암호로 바꾸는 과정을 말한다.

 

  • 대칭 암호화(symmetric encryption): 대칭 암호화에서는 데이터의 암호화와 복호화에 같은 키를 사용한다.
  • 비대칭 암호화(asymmetric encryption): 비대칭 암호화에서는 데이터의 암호화와 복호화에 서로 다른 키를 사용한다. 이러한 키 쌍은 공개 키와 개인 키의 조합이다.

인터넷을 통해 공개 키를 누구나 사용할 수 있게 됐으며 접근 가능한 저장소 혹은 디렉터리에 저장된다. 반면, 개인 키는 반드시 그 소유자만 가지고 있어야 한다. 그런 점 때문에 개인 키를 비밀 키라고도 부른다.

 

인증서

인증서(certificate)는 네트워크와 통신하고자 하는 사용자 또는 장치의 신원을 나타내는 전자적인 신분증이다.

 

[인증서의 주요 유형]

  • SSL(보안 소켓 계층) 인증서
  • 클라이언트 인증서
  • 코드 서명 인증서
  • 이메일 인증서

인증 기관

인증 기관(certificate authority, CA)은 사용자, 서버, 데이터베이스, 관리자들이 자기가 누구인지 말하는 것을 인증해주는 제3의 신뢰 기관이다. CA는 사용자의 자격증명을 확인하고 인증서를 발급하며 비밀 키를 가지고 서명한다.

 

[CA의 기능]

  • 인증서 발급 및 전달
  • 인증서와 인증서 폐지 목록(cetificate revocation list, CRL)을 저장소에 게시
  • 인증서 소유자의 폐지 요청을 관리

등록 기관

등록 기관(registration authority, RA)은 인증 기관으로부터 인증서를 필요로 하는 신규 엔티티의 신원을 인증한다. 또한 로컬 등록 데이터 정보를 유지하며 오래된 인증서의 갱신(renewal)과 폐지(revocation) 절차를 관장한다.

 

[RA의 기능]

  • CA로부터의 인증을 필요로 하는 새로운 사용자 또는 시스템을 인증한다.
  • CA의 일부 기능을 수행한다.
  • CA의 대행자 역할을 한다.
  • 불필요한 인증서의 갱신과 폐지에 대한 로컬 등록 데이터를 유지한다.

인증서 저장소

인증서 저장소(certificate repository, CR)는 PKI 환경의 모든 노드에서 접근할 수 있는 인증서 데이터베이스다. 그것은 인증서 폐지 관련 정보와 관리 정책 정보도 답고 있다.

 

[인증서 저장소의 기능]

  • 비인증 방식의 정보 조회를 허용한다.
  • 공개 키 인증서, 페지 목록, 정책 등의 정보를 저장하는 데이터베이스 역할을 한다.

아키텍처

전체 PKI 아키텍처는 신뢰 사슬(chain of trust) 모형에 의해 동작한다. 이 모델은 각 신원 사이의 신뢰 관계에 달려있다.

 

클라이언트는 HTTPS 웹 사이트에 접근을 요청한다. 클라이언트의 브라우저는 여러 개의 루트 CA 인증서를 가지고 프리로드(preload)된다. 다음 단계를 생각해보자.

 

  1. 클라이언트가 SSL 웹사이트에 접속한다.
  2. 웹사이트는 신원 및 중간 인증서를 가지고 클라이언트에게 응답한다.
  3. 그러면 클라이언트는 중간 공개 키를 사용해 디지털 서명을 복호화함으로써 중간 인증서의 신원을 확인한다.
  4. 클라이언트는 요청된 URL이 신원 인증서 내의 구별되는 이름과 일치함을 확인한다. 불일치할 경우에는 경고가 표시된다.
  5. 클라이언트는 공개 키를, 서버에서는 비밀 키를 각각 사용해 트래칙을 암호화, 복호화 한다.

인증서 수명 주기

미국국립표준기술연구소(NIST)에서는 암호화 키의 수명 주기를 준비, 운영, 정지, 삭제의 키 관리 단계로 구분한다. 키의 유효성은 언제나 제한적이므로 계정에서 사용된 시간을 고려하는 것이 중요하다. 그러므로 특정 키를 사용하도록 인가된 기간을 기록하는 암호 기간을 둔다.

 

키 관리

키 관리 상호운용 프로토콜(KMIP)은 키 관리 시스템이 관리하는 저장된 개체에 대해 관리 작업을 수행하디 위한 클라이언트와 서버 사이의 통신에 사용된다. 이것은 암호화 키를 수명 주기에 걸쳐 관리하는 표준화된 방법으로, 대칭 및 비대칭 암호화 키, 디지털 인증서, 그 밖의 관련 템플릿을 지원해서 객체 생성과 관리를 일원화하도록 개발됐다.

현존하는 PKI 모델의 문제점

  • 첫 번째 문제점 - 추가적 보안의 필요성: 만약 중앙 인증 저장소가 해킹되면 대량 데이터 유출과 계정 탈취로 이어질 수 있다. PKI를 보호하기 위해 하드웨어 보안 모듈(HSM)을 추가한느 것ㅇ르 에로 들 수 있다.
  • 두 번째 문제점 - 중앙집권화된 권한: 인터넷에 연결된 모든 장치와 시스템은 공개 키와 식별자를 관리하기 위해 제3자를 신뢰할 수밖에 없다.

블록체인이 어떻게 도움이 되는가?

블록체인은 근본적으로 탈중앙화돼 있으며 제3자의 개입 없이 여러 당사자 간의 통신이 가능하다. 구현하려면 시스템적으로 접근해야 한다.

 

탈중앙화된 기반구조

블록체인은 제3자의 개입 없는 다자간의 탈중앙화된 네트워크를 구현하는 데 목적이 있다. 탈중앙화된 공개 키 기반구조(DPKI)는 공개 시스템을 통해 인증 시스템을 구현함으로써 단일한 제3자에 의존함에 따라 시스템의 무결성과 보안을 해칠 가능성을 배제하는 혁신적 개념이다. 무신뢰 접근을 바탕으로 구축된다. 원장의 상태에 대한 여러 합의 모델을 통해 지리적, 정치적으로 이질적인 참가자들 사이에 신뢰가 구축된다. 블록체인은 네트워크의 여러 노드를 가지고 어떠한 유형의 가치라도 저장할 수 있게 해준다.

 

개인은 블록체인에 식별자를 등록함으로써 웹사이트 도메인 같이 글로벌하게 읽기 가능한 식별자에 대한 직접적인 통제권을 가질 수 있다. 개인은 식별자를 키-값 데이터베이스의 조회 키로 사용한다. 블록체인은 공개 키 및 그 밖의 속성 같은 기밀 자산의 할당을 허용할 수 있으며, 중간자 공격을 막을 수 있는 안전한 방법으로 이러한 값들을 글로벌하게 읽기 가능하게 한다. 이는 PKIX에 의해 가능하다.

 

DPKI 설계는 시스템이 탈중앙화를 유지하고 식별자에 대한 통제는 개인에게 있으며 식별자 데이터가 피해를 입을 위헙을 제거해준다.

 


출처: 블록체인으로 구현하는 사이버 보안, 라즈니쉬 굽타 지음