10주차 : 강의 내용 외 기출 질문 모음


HTTP vs HTTPs

  1. HTTP(HyperText Transfer Protocol)
  • 암호화하지 않은 프로토콜로 Application Layer에서 쓰이는 프로토콜

  • 연결 상태를 유지하지 않는(Stateless,기존 인터넷의 철학) 비연결성 프로토콜이다.

  1. HTTPs(HTTP over SSL)
  • HTTP의 보안이 강화된 버전의 프로토콜
  • HTTP는 TCP 기반으로 동작하지만, HTTPs는 소켓 부분을 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)라는 프로토콜로 대체하여 응용 계층은 SSL을 TCP로 인식하고, TCP는 SSL을 응용 계층으로 인식하여 통신하게 된다.
  • OSI 어느 한 계층에 속해서 동작하는 것이 아닌, 응용계층과 전송계층 사이에서 독립적인 계층을 만들어서 동작
  • 응용계층에서 받은 데이터를 암호화하여 TCP에 보냄.


공개키(비대칭키) vs 대칭키

  대칭키 공개키(비대칭키)
주요 기능 암복호화에 사용하는 키가 동일, 처음 통신시에 키를 교환하면서 시작 암복호화에 사용되는 키가 서로 다름(송수신자 모두 (개인키, 공개키) 가지고 있음)
장점 공개키 암호화 방식에 비해 암호화 및 복호화가 빠르다 이름 그대로 키가 공개되어 있기 때문에(공개키의 경우) 키를 교환할 필요가 없어짐, 보안상으로 좋음
단점 키 배송 과정에서 중간에서 키가 탈취될 수 있다/해당 키를 아는 사람만이 문서를 볼 수 있기 때문에 사람이 증가할수록 전부 따로따로 키 교환을 해야하기 때문에 키관리가 어려워짐 속도가 느리다


공개키 동작 방식

  1. 사용자 B (공개키, 개인키)의 쌍을 생성한다 -> 이 때 , 공개키는 공개적으로 등록되어 있고, 개인키는 본인만이 알고 있다.
  2. 사용자 A가 B의 공개키를 가져온다.
  3. A가 B의 공개키를 사용해 데이터를 암호화한 뒤, B에게 전송한다.
  4. B는 암호화된 데이터를 자신의 개인키로 복호화한다.(개인키를 가지고 있는 수신자만이 암호화된 데이터를 복호화할 수 있다.)


SSL

대칭키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 방식 사용

SSL 하이브리드 동작 과정

  1. A가 B의 공개키로 통신에 사용할 대칭키를 암호화한 뒤 B에게 보냄
  2. B는 암호문을 받고, 자신의 비밀키로 복호화함 -> 대칭키를 알게됨
  3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
  4. A는 자신의 대칭키로 암호문을 복호화
  5. 앞으로 이 대칭키로 암호화 통신

    -> 대칭키를 주고 받을 때만 공개키 암호화방식 사용


Naver.com을 치면 일어나는 과정

  1. Clinet가 브라우저에 ‘www.naver.com’을 입력하면, DHCP 서버를 통해 자신의 IP 주소를 부여받고, TCP/IP가 초기화되어 server와 통신할 준비 완료
  2. DNS 쿼리 과정을 통해 도메인 네임에 해당하는 IP주소를 찾아 사용자가 입력한 URL 정보와 함께 전달된다. (iterated Query vs Recursive Query)
  3. 페이지 URL 정보와 전달받은 IP주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성하고, TCP 프로토콜을 사용하여 해당 IP주소의 컴퓨터로 전송
  4. 도착한 HTTP 요청 메세지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환되어 웹 페이지 URL 정보에 해당하는 데이터 검색를 검색한다.
  5. HTTP 응답 메세지를 생성하고 검색된 웹 페이지 데이터가 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
  6. 도착한 HTTP응답 메세지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환되어 클라이언트 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.


Cookie vs Session

배경 : 기존의 인터넷 철학은 Stateless상태로, 상태 정보를 유지하지 않는 상태 -> 매번 통신할 때 마다 TCP connection을 해야하고, 매번 사용자 요청을 까먹음. 쿠키와 세션을 통해 HTTP의 stateless한 문제점을 해결
  쿠키 세션
저장위치 사용자의 웹 브라우저가 지정하는 메모리나 하드디스크(로컬에 저장하는 데이터 파일) 서버의 메모리
만료시점 저장할 때, expires 속성을 정의하면 삭제될 날짜 지정 가능 클라이언트가 로그아웃되거나 설정 시간동안 반응이 없으면 무효화 -> 정확한 시점 알 수 x
resource 클라이언트에 저장하고, 클라이언트 메모리를 사용하기에 서버 자원 활용x 서버에 저장, 서버 메모리로 로딩 -> 세션이 생길 때마다 리소스 차지
보안 취약 우수
속도 빠름 쿠키에 비해 느림
예시 “아이디와 비밀번호를 저장하시겠습니까?”/자동로그인/ “오늘 더 이상 이 창을 보지 않음” 체크 기능 화면이 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지

** 세션에서는 서버가 클라이언트를 구분하기 위해 클라이언트별로 세션 ID가 할당됨

참고 링크

https://liveyourit.tistory.com/183

https://interconnection.tistory.com/74