Just do IT
article thumbnail

Cookie & SSL/TLS

   * HTTP 속성

   * HTTP Cookie

   * SSL / TLS

 

HTTP 속성

   * HTTP는 통신이 끝나면 상태 정보를 유지하지 않는다

   * 서버는 HTTP 요청에 대한 응답을 보내고 접속을  끊어 커넥션 리소스 비용을 줄인다

   * 단순 페이지 또는 문서 정보 열람은 가능

   * 하지만 클라이언트가 새로운 페이지를 접속 할 때마다 서버는 신원을 알 수 없다

   * 예를 들어, 인터넷 쇼핑물의 경우 페이지 마다 인증이 필요

   * 회원 정보 식별, 로그인 여부, 결제 정보 및 장바구니 등

   * Cookie & Session으로 이 문제를 해결할 수 있다. / Stateful : 상태 정보 유지

 

HTTP Cookie

   * 정의

      - 클라이언트 웹 브라우저 로컬에 저장되는 키와 값이 들어있는 파일

      - 이름, 값, 도메인, 만료일, 경로 - 일정 시간 정보 저장 -> 로그인, 장바구니

      - Session : 서버는 일정 시간 같은 웹브라우저의 요청이 들어오면 하나의 상태로 유치된다

      - 서버는 클라이언트에 대한 세션ID 발급 및 보유 -> 쿠키로 전달 -> 동일 세션 ID로 접속 -> 정보 확인

 

   * Cookie 확인 

      - 웹 브라우저(크롬)에서 웹사이트 접속 후 F12 클릭 - 메뉴 - Application - Cookie

      - Cookie는 사용자 로컬에 정보가 저장된다 - 유출 또는 조작 가능

      - Session은 서버에 정보를 저장(안전) - 인증에 세션을 사용 - 세션 하이재킹?
         - HTTP - SSL/TLS

 

SSL/TLS

   * 정의

   * SSL (Secure Socket Layer) / TLS (Transport Layer Security)

      - TCP/IP 네트워크 통신간 보안을 제공하는 프로토콜

      - Netscape SSL 1.0 -> SSL 2.0 -> SSL 3.0 (1996년)

      - IETF 1999년 TLS 1.0 -> TLS 1.2(SHA2) -> TLS 1.3(2018년) - 확장 SNI 암호

      - HTTPS(Hypertext Transfer Protocol Secure) = HTTP over TLS

      - 주요 웹 브라우저 2020년 상반기 TLS 1.0, 1.1 지원 중단 - POODLE & BEAST 취약점

 

   * 기능

      - 인증 - Client to Server 통신 간 상대방에 대한 인증 - RSA, DSS

      - 무결성 - 메시지 인증 코드로 제공 HMAC, SHA-2

      - 기밀성 - 데이터 암호 - 3DES, RC4

 

   * 프로토콜 구성

   * 상위

      - HandShake : 키 교환 방식, 암호화 방식, HMAC 방식, 압축 방식 등을 협상

      - Change Ciper Spec : 협상 정보가 적용됨을 알림

      - Alert : 협상 과정에서 제시한 암호화 방식을 지원 못하는 경우 알림

   * 하위

      - Record : 데이터 교환, 메시지를 전송

 

   * TLS Stack

      - TLS 계층은 상위 3개 프로토콜, 하위 Record 프로토콜로 구분

      - 상위 계층에서 협상 후 Record 프로토콜에서 Application 데이터를 분할, 압축, 암호화 해서 전달

 

   * 동작 과정

   1. 클라이언트는 지원 가능한 cipher suite 전달

   2. 서버는 자신이 지원하는 cipher suite 전달

   3. Certificate : 서버 인증서 전달

      ServerKeyExchange : DH 키교환 - 키 전달

      CertificateRequest : 인증서 요청

      ServerHelloDone : 모든 메시지 전달 완료

   4. Certificate : 클라이언트 인증서 전달

      ClientKeyExchange : DH, 클라이언트 키 교환

      CertificateVerify : 인증서 확인

      버전, cipher suite 결정, 상대방 신원 확인 완료

   5. ChangeCipherSpec Finished

      TLSCiphertxt 전송, 협상된 키가 맞는지 검증

 

 정리

   * HTTP는 Stateless로 통신이 끝나면 상태 정보를 유지하지 않는다

   * 상태 정보가 필요한 경우를 위해서 Cookie & Session 기술이 있다

   * Cookie는 클라이언트  브라우저 로컬에 저장되는 정보 - 로그인

   * Session은 동일한 웹브라우저의 요청을 하나의 상태로 구분하여 서버에 정보를 저장

   * SSL/TLS (Transport Layer Security)은 TCP/IP 통신간 보안을 제공하는 프로토콜

   * TLS는 상위 HandShake, Change Cipher Spec, Alert, 하위 Record 프로토콜로 구성

 

출처 : 제로베이스

profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!