728x90
반응형
HTTP(Hyper Text Transfer Protocol)
- 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었음
- 정의
- 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
- 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있음
- 구조
- 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동함
- 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성됨
- HTTP : 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜 => 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있었으므로, 이 문제를 해결하기 위해 HTTPS 등장
HTTPS(Hyper Text Transfer Protocol Secure)
- 정의
- Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜
- HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer) or TLS(Transport Layer Security)라는 프로토콜로 대체한 것임
- HTTP와 다르게 443번 포트를 사용
- 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있음
- 특징
- 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있음
- 대칭키 암호화
- 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
- 키가 노출되면 매우 위험하지만 연산 속도가 빠름
- 비대칭키 암호화
- 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
- 키가 노출되어도 비교적 안전하지만 연산 속도가 느림
- 비대칭키 암호화 : 공개키/개인키 암호화 방식을 이용해 데이터를 암호화하고 있음
- 공개키와 개인키는 서로를 위한 1쌍의 키
- 공개키: 모두에게 공개가능한 키
- 공개키 암호화: 공개키로 암호화를 하면 개인키로만 복호화할 수 있음
- 개인키: 나만 가지고 알고 있어야 하는 키
- 개인키 암호화: 개인키로 암호화하면 공개키로만 복호화할 수 있음
- 공개키: 모두에게 공개가능한 키
- 대칭키 암호화
- 동작 과정
- 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 세션키를 교환함
- 세션키는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어짐
- 세션키를 클라이언트와 서버가 어떻게 교환할 것인가?
- 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되며, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용됨
- 연결 과정
- 클라이언트(브라우저)가 서버로 최초 연결 시도를 함
- 서버는 공개키(엄밀히는 인증서)를 브라우저에게 넘겨줌
- 브라우저는 인증서의 유효성을 검사하고 세션키를 발급함
- 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송함
- 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
- 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행함
- 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있음
728x90
반응형
'Computer Science > Computer Science' 카테고리의 다른 글
프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍 (1) | 2023.11.27 |
---|---|
로드 밸런서(Load Balancer)? (1) | 2023.01.26 |
TCP & UDP 정의 (0) | 2023.01.25 |
Object Oriented Programming(OOP) 객체 지향 프로그램 (1) | 2023.01.25 |
댓글