오늘은 주말이라 강좌로 올라와있는
네트워크 개념 잡기를 수강하고 정리하고자 한다.
도메인
IP는 숫자로만 이루어져 기억하기 어렵기 때문에 이름을 부여한 것
IP
인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰 등)을 식별할 수 있는 주소(Ex. 172.217.161.206)
웹사이트 ip 주소 가져오는 방법 : nslookup google.com
네임 스페이스
도메인 이름을 계층적으로 구성하여 네트워크 상의 자원을 고유하게 식별 및 관리
포트포워딩
외부 네트워크에서 특정 포트를 통해 들어오는 트래픽을 내부 네트워크의 특정 장치나 포트로 전달하는 네트워크 설정
HTTPs, SSL
HTTPs(Hypertext Transfer Protocol Over Secure Socket Layer)
- HTTP는 암호화되지 않은 방법으로 데이터를 전송하기 때문에 보안이 매우 취약하다. 이것을 보안하기 위해 탄생한 것
- HTTP : HTML을 전송하기 위한 통신 규약
- Hypertext : 문서와 문서가 링크로 연결 체계
- HTTPs : 보안이 강화된 HTTP
- HTTP : HTML을 전송하기 위한 통신 규약
SSL(Secure Sockets Layer)
인터넷 통신의 보안을 강화하기 위해 사용되는 암호화 프로토콜로 서버간 전송되는 데이트를 암호화해 제 3자가 도청 및 변조하지 못하도록 한 것
HTTP가 SSL을 사용해 HTTPs가 되었다.
TLS(Transport Layer Security)
SSL의 후속 버전으로 인터넷 통신의 보안을 강화하기 위해 사용되는 암호화 프로토콜(사실상 SSL이랑 같음)
HTTPs, SSL 디지털 인증서
대칭키
암복호화에 동일한 키를 사용하는 방식으로 송수신자자가 동일한 키를 공유해 통신의 기밀성을 유지한다.
대칭키를 수신자에게 전송할 때 대칭키가 유출될 수도 있는 치명적인 단점이 있다.
공개키
비대칭 암호화 방식 중 한 종류로 두 개의 키(공개키, 비밀키)를 사용해 데이터 암복호화 수행
공개키로 암호화 후 전송하면 수신자는 비밀키로 복호화한다.
반대로 비밀키로 암호화 하면 공개키로 복호화를 해야하는데 이것은 공개키를 갖고 있는 사람 모두가 복호화 할 수 있어 암호화에 의미가 없지만
비밀키를 갖고 있는 사람이 암호화 했다는 것을 검증하는 것이라 신원을 확인 할 수 있다.
SSL 통신 과정
- 악수(Handshake) : 클라이언트와 서버가 안전한 통신을 설정하기 위해 필요한 매개변수를 협상하는 과정
- 클라이언트 헬로 : 클라이언트가 서버 접속을 시도하고 메시지를 보낸다.(SSL/TLS 버전, 암호화 방식 등)
- 서버 헬로 : 메시지 수신 및 응답(SSL/TLS 버전, 암호화 방식 등)
- 서버 인증 및 키 교환 : 서버가 클라이언트에게 인증서를 보낸다.(CA에서 발급된 공개키를 포함, 메시지도 보낼 수 있다.)
- 클라이언트 인증 및 키 교환 : 서버 인증서 검증, 프리마스터 시크릿을 생성하고 서버 공개키를 암호화하여 서버로 보낸다.
- 프리마스터 시크릿 :
- 세션 키 생성 : 자신의 무작위 데이터와 프리마스터 시크릿을 사용한 동일한 세션키 생성
- 암호화 통신 시작 : 클라이 언트는 핸드셰이크 완료라는 메시지를 보내고 서버는 핸드셰이크 완료 메시지로 응답(메시지는 세션키로 암호화 된다.)
- 데이터 전송(Data Transfer) : 클리이언트와 서버는 세션 키를 사용하여 데이터를 암호화하여 안전하게 주고 받을 수 있다.
- 세션 종료(Session Termination) : 통신이 끝나면 클라이언트와 서버는 SSL 연결 종료
- 종료 요청 : 클라이언트 또는 서버가 연결을 종료하고자 하면 종료 요청 메시지를 보낸다.(메시지는 세션키로 암호화 된다.)
- 연결 종료 : 연결을 정상적으로 종료 후 사용된 세션 키와 관련 데이터 폐기