보안

[SSL, HTTPS] HTTP over SSL

salmon16 2024. 12. 18. 21:07

 

SSL

SSL, TLS 위치

TCP기반으로 연결되며, 클라이언트와 서버 간의 안전한 통신을 보장하기 위한 프로토콜이다.

 

서버 인증

사용자가 서버를 신뢰할 수 있는지 확인

사용자가 서버의 ID를 검증한다.

서버 인증서의 발급기관 (CA)가 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인한다.

 

클라이언트 인증

서버가 클라이언트의 신원을 확인

클라이언트의 ID를 검증

클라이언트의 CA 발급 기관이 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인

 

암호화된 SSL 연결

클라이언트와 서버 간의 전송되는 모든 데이터는 암호화되어 전송된다.

 


SSL Architecture

 

 

SSL은 주로 4개의 프로토콜 계층으로 구성되어 있다.

 

  1. Handshake Protocol
    1. 서버와 클라이언트의 상호 인증
    2. 키 교환 방법, 대칭 키 암호화 방법, HMAC Method 등을 협의한다.
  2. Change cipher spec Protocol 
    1. 핸드셰이크 프로토콜에서 협상된 암호화 매개변수를 적용할 때 사용하는 프로토콜
    2. 상대방에게 암호화 방법이 변경되었음을 알림
  3. Alert Protocol
    1. 세션의 종료, 오류 발생 등의 중요한 이벤트를 상대방에게 알리는 역할
  4. SSL Record Protocol
    1. 메시지를 나누고, 압축하고, 인증하고, 암복호화 제공
    2. 무결성, 기밀성을 제공해 준다.

SSL Record protocol Operation

 

 

 


 

SSL Handshake Protocol

 

서버와 클라이언트가 상호 인증을 하게 한다.

암호화, 키, 맥 알고리즘을 협상한다. 

 

 

  1. Phase 1: Establish Security Capabilities
    1. 클라이언트와 서버 간 보안 매개변수를 협상하여 사용할 암호화 알고리즘, 압축 방법, 프로토콜 버전을 협상한다.
    2. (client, sever)_hello : 자신이 수용 가능한 보안 속성을 알린다. 이때 세션 ID가 할당된다.
  2. Server authentication & Key exchange 
    1. 서버가 클라이언트에게 자신의 신원을 증명하고 키 교환을 수행한다.
    2. Certificate
      1. 서버가 자신의 인증서를 클라이언트에게 보낸다.
      2. 서버의 공개키가 포함되어 있다.
    3. Server_key_exchange
      1. 클라이언트가 Premaster secret을 생성하기 위해 추가적인 정보를 보낸다.
    4. Certificate_request
      1. 서버가 클라이언트의 인증을 요청할 경우, 클라이언트의 인증서를 요구한다.
    5. Server_hello_done
      1. 서버의 hello 단계가 종료되었음을 알린다.
  3. Client authenticate & Key exchange
    1. 클라이언트가 서버에게 자신을 인증하고, 대칭 키 교환 또는 세션 키 설정을 한다.
    2. Cerificate
      1. 클라이언트가 서버에게 자신의 인증서를 보낸다.
      2. 인증서엔 클라이언트의 공개키가 있다.
    3. Client_key_exchange
      1. 클라이언트가 Premaster Secret 값을 생성하고, 서버의 공개키로 암호화하여 보낸다.
      2. 서버는 자신의 개인키로 복호화 해서 Premaster Secret 값을 가지고 이를 통해 세션 키를 생성한다.
    4. Certificate Verify
      1. 클라이언트는 자신의 인증서가 유효함을 증명하기 위해 서명(Signature)을 생성하여 서버에 보낸다.
      2.  클라이언트의 개인 키를 사용해 생성되며, 클라이언트의 인증서를 기반으로 확인된다.
  4. Phase 4: Finish
    1. 암호화 알고리즘이 바뀌었다는 것을 알려준다.
    2. SSL/TLS 핸드셰이크의 마지막 단계로, 안전한 통신을 시작하기 위해 암호화 설정을 최종 적용하고 검증하는 과정이다.
    3. Change Cipher Spec
      1. 암호화 알고리즘과 키 설정이 완료되었음을 상대방에게 알리는 메시지.

 

 


 

HTTPS

HTTP 프로토콜과 SSL/TLS 프로토콜을 결합하여 웹 브라우저, 웹 서버 간에 안전한 통신을 구현하는 방식에 대한 내용을 다룬다.

443번 포트를 사용해서 활성화한다.

URL의 시작 부분이 https://로 설정된다.

 

HTTPS는 TCP/IP위에서 동작하기 때문에 TCP 연결 설정이 된 후, SSL/TLS handshake 연결 과정이 일어난다.

 

암호화되는 요소

  1. URL
  2. 문서의 내용
  3. 브라우저 양식 데이터
  4. 쿠키
  5. HTTP 헤더

 

SSH

 SSH는 원격 로그인네트워크 서비스를 암호화하여 안전한 통신을 제공하며, 보안이 설정되지 않은 네트워크에서 안전하게 작동할 수 있도록 설계되어 있다.

 

 

  1. TCP 연결 수립
  2. 식별 문자열 교환
    1. 클라이언트와 서버는 서로 자신의 프로토콜 버전과 소프트웨어 버전을 주고받는다.
  3. 알고리즘 협상
    1. 서로 자신이 지원하는 암호화 알고리즘(키 교환, 암호화, MAC, 압축 알고리즘)을 나열한다.
  4. 키 교환
    1. 양측은 협상된 키 교환 알고리즘을 사용하여 안전한 세션 키(공유 비밀 키)를 설정한다.
  5. 키 관 종료
    1. 이제 보안 채널이 완전히 설정되었으며, 이후의 모든 통신은 세션 키와 협상된 알고리즘을 사용해 암호화된다.
  6. 서비스 요청
    1. SSH_MSG_SERVICE_REQUEST 패킷을 보내 특정 SSH 서비스를 요청한다.

'보안' 카테고리의 다른 글

[이메일 보안] S/MIME  (0) 2024.12.20
DoS and DDoS  (0) 2024.12.17
[Wireless Security] 무선 보안 (IEEE 802.11 Wireless LAN)  (0) 2024.12.16
Firewall  (0) 2024.12.13
[IDS] 침입 탐시 시스템  (0) 2024.12.09