CA인증기관을 통해 데이터를 교환하는 방식은 Sender와 Reciver가 통신을 할 때, 서로의 키를 이용하는 것이 아닌 CA인증기관이 발급해준 인증서를 통해 하는 것 이다.
데이터를 보내고 싶은 Sender는 공인인증기관(CA)에 자신의 공개키를 보내면 공인인증기관에서 인증서를 발급해준다.
인증서의 구조는 다음과 같다.
이 외에도 많은 항목이 있지만
발급자, 주체, 주체의 공개키, 발급자의 서명
이 핵심이다.
1. Sender는 비대칭 암호화와 마찬가지로 개인키와 공개키를 생성한다. 그리고 내 데이터들은 이걸로 복호화 할꺼에요~
라며 인증기관에 공개키를 전달하고 인증기관에 Sender를 등록한다.
2. 인증기관은 Sender에게 인증서를 발급자(인증기관)서명을 하여 발급해줌.
3. Sender는 해시함수를 통해 데이터의 해시값을 얻는다.
4. Sender는 해시값을 개인키로 암호화함(서명).
5. Sender는 원본 데이터, 인증서, 서명을 묶은 코드사인이라고 불리는 데이터를 보냄.
6. Reciver는 코드사인을 받아서 원본 데이터, 인증서, 서명으로 분리함.
7. Reciver는 인증기관의 공개키로 인증서를 복호화해서 인증서에 있는 Sender의 공개키를 얻음.
8. Reciver는 Sender의 공개키로 서명을 복호화 해서 해시값을 얻음.
9. Reciver는 해시함수를 통해 원본 데이터의 해시값을 얻음.
10. Reciver는 직접 얻은 해시값과 공개키로 복화한 해시값을 비교.
11. Reciver는 인증서에 적힌 주체가 Sender임을 확인.
12. Reciver는 인증서에 기록된 발급자(CA)의 서명을 공개키로 복호화하여 해시값을 얻음.
13. Reciver는 인증서에 기록된 정보들을 해시함수를 통해 해시값으로 변경.
14. Reciver는 직접 얻은 인증서 해시값과 공개키로 복호화한 해시값을 비교.
15. 모두 맞아야 데이터가 무결하다고 판단함.
위 순서 7번을 보면 Reicver는 발급자(CA)의 공개키를 사용하는데 이건 어떻게 얻어서 사용할까. 인증기관(CA)는 상위 인증기관을 통해 인증서를 발급받고 있고 여기에 인증기관의 공개키가 있다. 또 그 상위 인증기관은 더 상위 인증기관을 통해 인증을 받고 있는 방식이 반복 된다.(인증서 체인이라고함)
그리고 최상위 인증기관을 Root라고 하며 자기 자신의 인증서를 발급한다. 우린 최상이 인증서(Root인증서)는 무조건 신뢰하기로 했다. 즉, 무조건 신뢰하는 최상위 인증기관의 Root인증서 부터 하위로 내려오는 인증서들이니 인증기관의 인증서를 신뢰하고 인증기관의 공개키를 사용하여 코드사인 속의 인증서를 복호화하는 것이다.
한 줄평 : https가 대표적인 CA인증기관을 통한 통신을 한다.