CA가 웹 사이트의 공개키 또한 이 웹 사이트의 것이라고 인증할 수 있다!
다음은 SSL/TLS 프로토콜을 이용하여 디지털 인증서를 발행하는 과정이다.
*SSL에서 TLS로 사용 추세가 바뀌었다.
SSL Secure Sockets Layer
TLS Transport Layer Security
CA Certificate Authority
1. 웹 사이트는 자신의 정보와 공개키를 CA에 제출한다.
2. CA는 웹 사이트가 제출한 정보를 검증한 후, 올바른 웹 사이트라고 판단하면 웹 사이트의 정보가 포함된 인증서 정보를 생성한다.
3. 이후 CA는 자신의 비밀키를 사용하여 웹 사이트의 공개키가 포함된 인증서 정보에 대한 디지털 서명을 생성한다.
- 인증서 정보(웹 사이트의 공개키) 해시화
- 위의 해시값을 CA의 비밀키로 암호화한 것: CA의 디지털 서명
4. CA의 디지털 서명을 인증서 정보에 추가하면 이것이 바로 디지털 인증서를 생성한 것이다.
5. CA는 웹 사이트의 공개키 및 정보와 CA의 서명이 포함된 디지털 인증서를 웹 사이트에게 발행한다.
→ 웹 사이트는 CA로부터 발급받은 디지털 인증서가 있으므로 웹 서비스 가능
6. 사용자는 웹 브라우저를 통해 웹 사이트에 접속한다.
7. 웹 브라우저는 웹 사이트에 "Client Hello" 메세지를 전송한다. 이때, CR(Client Random): 세션키가 포함되어있다!!
8. 웹 사이트는 'Server Hello" 메세지와 웹 사이트의 디지털 인증서를 사용자에게 전송한다.
9. 웹 사이트의 디지털 인증서를 수신한 사용자 웹 브라우저는 디지털 인증서에 포함된 CA의 서명을 검증하여 신뢰할 수 있는 CA가 인증서 내용을 보증해 주는지에 대한 진위를 판단한다.
→ CA 서명 검증 방식에 대한 내용은 다음 게시글로 따로 정리 예정이다.
확인되면
10. 디지털 인증서로부터 웹 사이트의 공개키를 획득한다.
11. 사용자와 웹 사이트는 통신에 사용할 세션키를 생성하기 위해 PS(Premaster Secret), MS(Master Secret)를 생성한다.
12. 생성한 PS를 앞서 취득한 웹 사이트의 공개키로 암호화하여 웹 사이트에 전송한다.
13. 웹 사이트는 자신의 공개키로 암호화된 데이터를 자신의 비밀키로 복호화하여 PS를 획득한다.
14. PS가 무사히 교환되면 사용자와 웹 사이트는 앞서 교환했던 CR과 SR을 PS와 합쳐서 MS를 생성한다.
15. 다시 MS와 CR, SR을 합친 세션키를 생성한다.
16. 사용자와 웹 사이트는 동일한 세션키를 공유하게 되고 이 세션키를 이용하여 서로 암호화된 통신이 가능하다.
'SSI' 카테고리의 다른 글
22.05.17 주코의 삼각형 (0) | 2022.05.17 |
---|---|
21.10.02 OAuth 2.0 기반의 SSO 동작 흐름 (0) | 2021.10.02 |
21.09.21 [indy] demo 실습 (Alice의 성적증명서 발급 과정) (0) | 2021.09.21 |
21.09.19 [Indy] demo 공부 (시나리오 및 도커 실행) (0) | 2021.09.20 |
21.07.20 DID 관련 용어 정리 (0) | 2021.07.21 |