[Security] 보안의 정석 PKI의 개념부터 인증서 발급 및 서명 원리

PKI(Public Key Infrastructure)란 무엇인가?

PKI, 즉 공개키 기반 구조는 디지털 인증서를 통해 서로를 신뢰할 수 있는 보안 체계를 구축하는 것을 의미한다. 이 구조 덕분에 우리는 온라인상에서 데이터나 자금을 안전하고 기밀성 있게 교환할 수 있다.

인증 체계의 핵심, Root CA

이 거대한 신뢰 체계의 가장 정점에는 최상위 인증기관인 Root CA가 존재한다. 사용자는 자신의 공개키가 본인의 것임을 보증받기 위해 CA에 등록 절차를 거치게 된다. 사용자가 자신의 공개키를 제출하면, CA는 그 공개키와 소유자 정보 등을 결합하여 하나의 인증서(Certificate)를 구성해 준다.

한국에서는 ROOT CA는 KISA(한국인터넷진흥원)이다. 그 아래 하위 CA로 KICA, yessign, SignKorea 등이 있다.

인증서의 내부 구성

이렇게 생성된 인증서는 위변조 방지를 위한 서명값(Signature)과 함께 전달된다. 사실상 인증서라는 파일 안에 이 서명 데이터가 포함되어 있다고 이해하면 된다. 구조를 공식으로 표현하면 다음과 같다.

인증서 = 공개키 + 공개키 해시 + 서명값 + 기타 확장 정보 

자세한 인증서 발급 과정과 전자서명이 실제로 어떻게 이루어지는지는 아래에서 확인해보자.


인증서 발급

  1. 사용자의 기기에서 개인키와 공개키 한 쌍 생성
  2. 사용자는 자산의 공개키와 신원정보(이름, 소속 등)를 담아 CA에 발급을 신청(CSR)한다.
  3. CA는 사용자의 신원 확인 후, CA의 개인키로 사용자의 인증서에 디지털 서명을 한다.
  4. CA가 서명한 사용자 인증서를 사용자에게 전달한다. 
  5. 사용자는 인증서(공개키 포함) + 개인키 세트를 가지게 된다.  


전자서명 및 본인확인

  1. 사용자가 송금 정보나 로그인 정보 같은 데이터를 만든다.
  2. 원본 데이터를 해시(Hash) 함수를 돌려 짧은 고유값을 만든다.
  3. 이 고유값을 사용자의 개인키로 암호화한다. 이것이 전자서명이다.
  4. 은행의 인증서에서 공개키를 가져온다.
  5. 원본데이터 + 전자서명 전체를 은행의 공개키로 한 번 더 암호화한다.
  6. 해당 암호화 데이터를 은행에 전송한다.
  7. 은행은 자신의 은행 개이키로 데이터를 복호화한다. (은행만 가능)
  8. 은행은 사용자가 보낸 인증서 안의 사용자 공개키를 꺼낸다.
  9. 이 공개키로 데이터에 붙은 전자서명을 복호화한다.
  10. 복호화해서 나온 해시값과, 실제 받은 데이터를 직접 해시 돌린 값이 일치하는지 비교한다. 
  11. 값이 같다면"데이터는 변조되지 않았고(무결성), 사용자가 직접 보낸 것(인증)이 확실하다." 고 결론을 내린다.


댓글 쓰기

0 댓글