http 전송방식은 암호화되지 않기 때문에 변조될 가능성이 있다.
이를 보완한 것이 https 방식이다
http 전송에 SSL(Secure Sockets Layer)으로 암호화한 것이 https이다
https는 공개키 기반 알고리즘 방식(PKI : Public Key Infrastructure)을 쓴다.
암호화 분류 방식
[A에서 B로 데이터(txt)를 전달할때..]
비대칭키 암호화(PKI)
- 공개키(public) / 비밀키(private) 두 가지의 키를 한 쌍으로 암호화 / 복호화한다
- 공개키로 암호화한 데이터는 비밀키로만 복호화할 수 있다
비밀키로 암호화한 데이터를 공개키로 복호화하는 것도 가능
- 공개키는 모두에게 공개되어도 상관없고 비밀키는 B만 가지고 있다
- A는 txt를 공개키로 암호화하고(txt -> txt`) B에게 전달한다
- B는 비밀키로 txt`를 복호화한다
- B가 가진 비밀키만 외부로 노출이 되지 않으면 txt는 보안상 안전하다
대칭키 암호화
- A, B 모두 동일한 대칭키를 가진다
- A는 txt를 대칭키로 암호화하고(txt->txt`), B에게 전달한다
- B는 txt`를 A와 동일한 대칭키로 복호화한다
- A와 B '만' 대칭키를 알아야 보안상 안전하다
SSL 인증서 동작 원리 선요약
인증서 및 인증기관을 통해 사이트가 신뢰할 수 있는 지 체크하고, 대칭키 암호화 방식을 통해 통신한다.
인증서
- 인증기관(CA : Certificate Authority)이 생성한 인증서를 가지고 있는 웹사이트는 이상한 웹사이트가 아님을 증명
- 인증 기관이 인증서를 생성하여 서버에게 전달
- 인증서 구성요소 : 소유자, 인증서 용도, Distinguished Name (DN), Public Key, Hash 등
- CA 확인 : 제어판 > 인터넷 옵션(속성) > 내용 > 인증서
- 인증기관 리스트는 Window10 기준 일주일에 한 번씩 업데이트 된다 (브라우저 자체적으로도 가지고 있음)
공개키/비밀키 쌍 종류
아래 인증서 발급 및 대칭키 생성 과정에서 두 가지의 공개키/비밀키 쌍이 등장하며 역할이 다르다
서버의 공개키/비밀키 : 대칭키 발급
CA의 공개키/비밀키 : 신뢰할만한 사이트인 지 확인
인증서 발급 절차
서버 : 파란색
인증기관 : 주황색
투명색 : 비밀키
선명색 : 공개키
1. 서버가 공개키 및 서버 정보를 인증 기관으로 전달
2. 공개키를 포함하여 인증서 생성
3. 인증서를 인증기관의 비밀키로 암호화하여 서버로 전달
4. 인증기관의 공개키는 Public하게 클라이언트의 브라우저 또는 로컬에 저장
대칭키 생성 절차
- 위에서 발급한 키로 대칭키를 만들어 전송할 데이터를 암호화하여 클라이언트와 서버간 통신한다
0. 클라이언트의 Request 및 3-way handshake
1. 인증기관의 비밀키로 생성된 인증서를 클라이언트에 전달
2. 인증서를 공개키로 복호화할 수 있다 == 인증기관이 신뢰하는 사이트이다
3. 대칭키 생성
4. 대칭키를 인증서 복호화로 얻은 서버의 공개키로 암호화하여 서버에게 전달
5. 서버의 비밀키로 대칭키 복호화
이후, 클라이언트와 서버간 대칭키가 공유되며,
전달할 패킷이 있을 시 대칭키로 암호화하여 전달하게 된다
'개발업무 > 인프라' 카테고리의 다른 글
nslookup -debug (0) | 2023.10.31 |
---|---|
SCP/SSH : host key verification failed (0) | 2022.11.28 |
MYSQL : Master Slave replication (1) | 2022.11.11 |
NAT : Network Address Translation (1) | 2022.11.08 |
DNS name server IP 확인하는 법 (1) | 2022.11.07 |