공개키 암호화에서 개인키는 오로지 개인이 소유하고 있어야 합니다. 반면 공개키의 경우 다른 사람들도 사용을 해야하는데 이것을 어떻게 구할 수 있을까 모두에게 신뢰를 받는 누군가가 이런 공개키들을 인증해주면 안전하고 신뢰가가는 기반을 만들 수 있습니다.
이렇게 신뢰를 받는 기관이 CA(Certificate Authority)입니다.
위 이미지는 Windows 환경에서 Wikipedia의 SSL 인증서를 브라우저에서 확인한 내용입니다.
인증서의 체인을 확인해보면 DigiCert의 중간 인증기관과 Root 인증기관을 타고타서 인증을 해줍니다. 여기서 Wikipedia의 ssl 인증서를 인증한 위의 Digicert 인증서들이 바로 CA에서 발급 및 서명해준 것 입니다.
이런 공인 인증기관은 개인키를 생성하고 개인키를 기반으로 공개키를 만드는데 이 공개키가 발급된 인증서에 들어 있는 정보 중 하나 입니다.
이렇게 만들어진 개인키와 공개키 쌍을 CA들이 만들었다고 인증서를 발행하는 것이고 제 3자 인증 역할을 해줍니다.
가장 대표적인 PKI 기반이 적용되어 있는 것이 "공인 인증서" 입니다. 이제는 "공동 인증서"라고 불리는데 개인키와 공개키를 이용한 대표적인 예를 들 수 있습니다.
A 사용자가 은행 거래를 하기 위해 본인 인증이 필요해서 공인 인증서 발급을 요청한다.
공인 인증 기관에서는 개인키를 생성한다.
개인키를 이용해서 공개 키가 들어간 인증서를 생성한다.
발급된 인증서를 사용자에게 반환되고 개인키와 함께 묶어서 공인 인증서라고 한다.
A 사용자는 발급 받은 공인 인증서를 통해서 본인을 인증하기 위해 은행의 인증서를 먼저 획득한다.
A의 인증서와 A의 개인키로 암호화된 데이터를 은행의 인증서(공개 키)로 암호화해서 은행에게 보낸다.
은행의 인증서로 암호화했기 때문에 은행의 개인 키로만 복호화할 수 있다.
은행에서 A의 인증서와 A의 개인키로 암호화된 데이터를 받는다.
A의 개인키로 암호화된 정보를 A의 인증서로 복호화가 된다면 A의 인증서가 맞다는 것을 확인할 수 있다.
이렇게 A라는 것을 인증하는 과정이 진행된다.
💨PKI는 이런 공개키 암호화 구조에 신뢰를 더하기 위해 CA라는 인증 기관이 추가되었고 쉽고 편리하게 사용할 수 있게 된다.