HTTP는 인터넷에서 HTML와 같은 문서를 서버/클라이언트가 주고 받기 위한 프로토콜
HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는경우 데이터 유출이 발생할 수 있게되는데, 이러한 보안 취약점을 해결하기 위해 HTTP에 secure socket이 추가된 것이 HTTPS이다
HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화되는데 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다
SSL은 웹 서버와 클라이언트의 통신 암호화 프로토콜이다
TLS는 SSL 3.0 보안취약점을 보완한 통신 보안 프로토콜로 현재 사용 중인 통신 보안 프로토콜은 모두 TLS이다
OSI 7계층에서 전송 계층인 4계층에 속하는 기술이다
SSL Handshake는 클라이언트와 서버 간의 요청/응답을 반복하며 통신에 필요한 사전 작업을 말하는데, 이 작업의 목표는 주고받을 데이터의 암호화 알고리즘 결정 및 데이터의 암호화를 위한 동일한 대칭키를 얻는 것이다.
SSL은 공개키 기법과 대칭키 기법을 같이 사용한다.
1. ClientHello: 랜덤한 데이터와 지원할 수 있는 암호화 방식을 서버에 전달
2. ServerHello: 랜덤 데이터, 지원 가능한 암호화 방식, 인증서(CA에서 발급받은 문서)를 클라이언트에 전달
3. 클라이언트는 서버가 보내온 인증서 검증 및 CA에서 공유하는 공개키로 인증서 복호화
4. 서버 검증 후 클라이언트는 임시 대칭키 생성 후 서버의 공개키로 암호화해 서버에 전달
5. 서버는 자신의 개인키로 복호화 하여 임시 키를 전달 받게 됨 이후 해당 키를 토대로 서로 session key 생성
6. 이후 해당 session key를 통해 대칭키 기법으로 데이터를 주고 받음
대칭키
암복호화에 사용하는 키가 동일한 방식
속도가 빠르지만 키를 교환해야한다는 문제가 발생한다. 키를 교환하는 중 키가 탈취될 수 있기 때문에 키를 안전하게 교환하는 것이 가장 핵심이다.
비대칭 키(= 공개키 암호화)
암복호화에 사용하는 키가 서로 다른 방식으로 송수신자 모두 한쌍의 키(개인키, 공개키)를 갖고 있게 된다.
대칭키의 키교환 문제를 해결하기 위해 등장한 방법으로 키가 공개되어있기 때문에 키를 교환할 필요가 없게된다.
공개키로 암호화된 데이터는 개인키로만 복호화할 수 있기때문에 중간 공격자가 공개키를 얻는다고 해도 데이터 복호화가 불가능하게 된다.
하지만 속도가 느리다는 단점이 있다.
도메인이나 호스트 이름을 숫자로 된 ip 주소로 변환하는 시스템
Iterative Query(반복적 질의)
Local DNS 서버가 여러 DNS서버에 차례대로 질의
Local DNS -> Root DNS
Local DNS -> TLD DNS
Local DNS -> Authoritative DNS
Recursive Query(재귀적 질의)
Local DNS -> Root DNS -> TLD DNS -> Authoritative DNS
DNS는 신뢰성보다 속도가 더 중요한 서비스이기 때문에 연결과정에 UDP보다 시간이 더 드는 TCP보다 UDP가 유리하다
UDP는 어떠한 정보도 기록하지 않고 연결을 유지할 필요가 없기 때문에 더 많은 클라이언트를 수용할 수 있는 UDP를 사용한다.
DNS 서버가 패킷을 받았을 때 처리 지침, DNS 상에서 도메인 설정을 위한 일련의 설정 문자
A: 해당 도메인 주소가 가지는 IP
SOA: 도메인의 시작점
PTR: IP주소에 대한 호스트명
등등 ..
UDP는 전송계층에 속하는 비연결형 프로토콜로 연결을 위해 할당되는 논리적인 경로가 없고 각각의 패킷은 다른 경로로 전송되며, 독립적인 관계를 지닌다
장점
TCP보다 속도가 빠르며 네트워크 부하가 적다
단점
신뢰성있는 데이터 전송을 보장하지 못한다.
전송된 데이터의 값이 변경되었는지 검사하는 값으로, 수신된 데이터에 오류가 없는지 여부를 판단
오류 검사가 가능하지만 오류를 회복하기 위한 어떠한 작업을 하진 않음
데이터 통신에서 가장 간단한 형태의 흐름 제어 프로토콜
송신자가 프레임을 전송하고, 수신자가 응답을 받을 때까지 기다리는 방식으로 동작
수신자는 전송받은 프레임에 대해 확인(ACK) 또는 부정(NAK)신호를 송신자에게 되돌려 보냄
송신자는 ACK를 받으면 다음 프레임을 전송하고, NAK를 받으면 같은 프레임을 재전송
하나의 패킷이 전송되고 ACK가 돌아올 때까지의 시간을 RTT라고 하는데 기존 전송 후 대기 프로토콜에서는 RTT가 일어나는 동안 아무것도 보낼 수 없기때문에 네트워크 활용률이 낮다
파이프라인 프로토콜은 패킷을 1개만 보내지 않고 한번 보낼 때 여러개를 보내는 프로토콜이다
전송 과정에서 오류가 생겼을 때 처리 방법에 따라 GBN과 SR이 있다
GBN(Go-Back-N)은 패킷 유실과 같은 이유로 순서가 잘못들어온 패킷이 들어온다면 꼬인 패킷부터 모두 버리고 재전송하는 방법이다.
SR(Selective Repeat)은 기존의 정상 수신한 패킷은 버퍼에 저장해놓고, 오류가 발생한 패킷만 재전송하는 방법이다.
SSL/TLS
HTTPS 암호화 과정
ssl handshake
대칭키와 비대칭키
DNS 질의 종류
DNS가 UDP를 사용하는 이유
DNS record
UDP 체크섬
전송 후 대기 프로토콜
파이프라인 프로토콜