https 등에서 인증서를 검증하는 원리에 대해 이해하려면 공개키/비밀키(비대칭키) 암호화 원리에 대해 간략하게 이해를 해야한다.
먼저 전자서명과 동작원리는 아래 그림을 보면 간단하게 이해할 수 있다.
위 그림에서 기존의 비대칭키 암호화 과정과 다른점은 암호화-복호화 과정이 공개키-비밀키가 아닌 비밀키-공개키가 사용된다는 것이다.
이것은 평문을 복호화하는것이 아닌 평문의 지문(해쉬값)을 복호화하기 때문이다.(설명이 조금 부족한데 그림으로 이해하도록)
https 로 웹사이트 접속 후 해당 웹사이트로부터 인증서를 수신하고 이것을 검증하여 해당 사이트가 신뢰할 수 있는지 검증하는 방법은 다음과 같다.
먼저 웹사이트는 CA(인증기관)에 인증서 발급을 신청한다. CA는 해당 웹사이트를 검증한 후 신뢰할만하다고 판단되면
인증서를 발급하는데 다음의 과정을 거친다.(전자서명 원리와 같다)
1. 인증서 내용을 해쉬하여 지문을 생성한다.
2. 생성된 지문을 자신의 비밀키로 암호화하여 전자서명값을 생성한다.
3. 인증서 파일 내부에 인증서 내용, 지문, 전자서명값을 넣은 후 웹사이트에 전달한다.
이렇게 생성된 인증서는 아래 그림과 같이 구성된다.
여기서 인증서 내용은 대략 아래와 같다.
(1) 인증서의 소유자 이름,
(2) 인증서 소유자의 공개 키 (당연히 비밀 키는 소유자가 가지고 있다),
(3) 인증서의 유효 기간,
(4) 고유한 UID
(5) 인증서의 기타 모든 값들을 해시화한 값 => 지문
여기서 가장 중요한 것이 (5)번 "지문"이다. 이 지문을 통해 전자서명을 검증하는것이다.
브라우저는 웹사이트로부터 인증서를 전달받으면 내장되어 있는 CA 기관의 공개키를 가지고 전자서명값을 복호화한 후 이것을 인증서 내용의 해쉬값(지문)과 비교하여 같으면 CA 기관이 인증한 것이라고 인식하는 것이다.
인증서가 검증이 되면 인증서 내용에 포함된 웹사이트의 공개키를 신뢰할 수 있으므로 이 공개키로 https 접속을 진행한다.
댓글 없음:
댓글 쓰기