PKI(Public Key Infrastructure)란 무엇인가?
PKI, 즉 공개키 기반 구조는 디지털 인증서를 통해 서로를 신뢰할 수 있는 보안 체계를 구축하는 것을 의미한다. 이 구조 덕분에 우리는 온라인상에서 데이터나 자금을 안전하고 기밀성 있게 교환할 수 있다.
인증 체계의 핵심, Root CA
이 거대한 신뢰 체계의 가장 정점에는 최상위 인증기관인 Root CA가 존재한다. 사용자는 자신의 공개키가 본인의 것임을 보증받기 위해 CA에 등록 절차를 거치게 된다. 사용자가 자신의 공개키를 제출하면, CA는 그 공개키와 소유자 정보 등을 결합하여 하나의 인증서(Certificate)를 구성해 준다.
한국에서는 ROOT CA는 KISA(한국인터넷진흥원)이다. 그 아래 하위 CA로 KICA, yessign, SignKorea 등이 있다.
인증서의 내부 구성
이렇게 생성된 인증서는 위변조 방지를 위한 서명값(Signature)과 함께 전달된다. 사실상 인증서라는 파일 안에 이 서명 데이터가 포함되어 있다고 이해하면 된다. 구조를 공식으로 표현하면 다음과 같다.
인증서 = 공개키 + 공개키 해시 + 서명값 + 기타 확장 정보
자세한 인증서 발급 과정과 전자서명이 실제로 어떻게 이루어지는지는 아래에서 확인해보자.
인증서 발급
- 사용자의 기기에서 개인키와 공개키 한 쌍 생성
- 사용자는 자산의 공개키와 신원정보(이름, 소속 등)를 담아 CA에 발급을 신청(CSR)한다.
- CA는 사용자의 신원 확인 후, CA의 개인키로 사용자의 인증서에 디지털 서명을 한다.
- CA가 서명한 사용자 인증서를 사용자에게 전달한다.
- 사용자는 인증서(공개키 포함) + 개인키 세트를 가지게 된다.
전자서명 및 본인확인
- 사용자가 송금 정보나 로그인 정보 같은 데이터를 만든다.
- 원본 데이터를 해시(Hash) 함수를 돌려 짧은 고유값을 만든다.
- 이 고유값을 사용자의 개인키로 암호화한다. 이것이 전자서명이다.
- 은행의 인증서에서 공개키를 가져온다.
- 원본데이터 + 전자서명 전체를 은행의 공개키로 한 번 더 암호화한다.
- 해당 암호화 데이터를 은행에 전송한다.
- 은행은 자신의 은행 개이키로 데이터를 복호화한다. (은행만 가능)
- 은행은 사용자가 보낸 인증서 안의 사용자 공개키를 꺼낸다.
- 이 공개키로 데이터에 붙은 전자서명을 복호화한다.
- 복호화해서 나온 해시값과, 실제 받은 데이터를 직접 해시 돌린 값이 일치하는지 비교한다.
- 값이 같다면"데이터는 변조되지 않았고(무결성), 사용자가 직접 보낸 것(인증)이 확실하다." 고 결론을 내린다.
0 댓글