SSL
TCP기반으로 연결되며, 클라이언트와 서버 간의 안전한 통신을 보장하기 위한 프로토콜이다.
서버 인증
사용자가 서버를 신뢰할 수 있는지 확인
사용자가 서버의 ID를 검증한다.
서버 인증서의 발급기관 (CA)가 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인한다.
클라이언트 인증
서버가 클라이언트의 신원을 확인
클라이언트의 ID를 검증
클라이언트의 CA 발급 기관이 신뢰할 수 있는 CA의 목록에 포함되어 있는지 확인
암호화된 SSL 연결
클라이언트와 서버 간의 전송되는 모든 데이터는 암호화되어 전송된다.
SSL Architecture
SSL은 주로 4개의 프로토콜 계층으로 구성되어 있다.
- Handshake Protocol
- 서버와 클라이언트의 상호 인증
- 키 교환 방법, 대칭 키 암호화 방법, HMAC Method 등을 협의한다.
- Change cipher spec Protocol
- 핸드셰이크 프로토콜에서 협상된 암호화 매개변수를 적용할 때 사용하는 프로토콜
- 상대방에게 암호화 방법이 변경되었음을 알림
- Alert Protocol
- 세션의 종료, 오류 발생 등의 중요한 이벤트를 상대방에게 알리는 역할
- SSL Record Protocol
- 메시지를 나누고, 압축하고, 인증하고, 암복호화 제공
- 무결성, 기밀성을 제공해 준다.
SSL Handshake Protocol
서버와 클라이언트가 상호 인증을 하게 한다.
암호화, 키, 맥 알고리즘을 협상한다.
- Phase 1: Establish Security Capabilities
- 클라이언트와 서버 간 보안 매개변수를 협상하여 사용할 암호화 알고리즘, 압축 방법, 프로토콜 버전을 협상한다.
- (client, sever)_hello : 자신이 수용 가능한 보안 속성을 알린다. 이때 세션 ID가 할당된다.
- Server authentication & Key exchange
- 서버가 클라이언트에게 자신의 신원을 증명하고 키 교환을 수행한다.
- Certificate
- 서버가 자신의 인증서를 클라이언트에게 보낸다.
- 서버의 공개키가 포함되어 있다.
- Server_key_exchange
- 클라이언트가 Premaster secret을 생성하기 위해 추가적인 정보를 보낸다.
- Certificate_request
- 서버가 클라이언트의 인증을 요청할 경우, 클라이언트의 인증서를 요구한다.
- Server_hello_done
- 서버의 hello 단계가 종료되었음을 알린다.
- Client authenticate & Key exchange
- 클라이언트가 서버에게 자신을 인증하고, 대칭 키 교환 또는 세션 키 설정을 한다.
- Cerificate
- 클라이언트가 서버에게 자신의 인증서를 보낸다.
- 인증서엔 클라이언트의 공개키가 있다.
- Client_key_exchange
- 클라이언트가 Premaster Secret 값을 생성하고, 서버의 공개키로 암호화하여 보낸다.
- 서버는 자신의 개인키로 복호화 해서 Premaster Secret 값을 가지고 이를 통해 세션 키를 생성한다.
- Certificate Verify
- 클라이언트는 자신의 인증서가 유효함을 증명하기 위해 서명(Signature)을 생성하여 서버에 보낸다.
- 클라이언트의 개인 키를 사용해 생성되며, 클라이언트의 인증서를 기반으로 확인된다.
- Phase 4: Finish
- 암호화 알고리즘이 바뀌었다는 것을 알려준다.
- SSL/TLS 핸드셰이크의 마지막 단계로, 안전한 통신을 시작하기 위해 암호화 설정을 최종 적용하고 검증하는 과정이다.
- Change Cipher Spec
- 암호화 알고리즘과 키 설정이 완료되었음을 상대방에게 알리는 메시지.
HTTPS
HTTP 프로토콜과 SSL/TLS 프로토콜을 결합하여 웹 브라우저, 웹 서버 간에 안전한 통신을 구현하는 방식에 대한 내용을 다룬다.
443번 포트를 사용해서 활성화한다.
URL의 시작 부분이 https://로 설정된다.
HTTPS는 TCP/IP위에서 동작하기 때문에 TCP 연결 설정이 된 후, SSL/TLS handshake 연결 과정이 일어난다.
암호화되는 요소
- URL
- 문서의 내용
- 브라우저 양식 데이터
- 쿠키
- HTTP 헤더
SSH
SSH는 원격 로그인 및 네트워크 서비스를 암호화하여 안전한 통신을 제공하며, 보안이 설정되지 않은 네트워크에서 안전하게 작동할 수 있도록 설계되어 있다.
- TCP 연결 수립
- 식별 문자열 교환
- 클라이언트와 서버는 서로 자신의 프로토콜 버전과 소프트웨어 버전을 주고받는다.
- 알고리즘 협상
- 서로 자신이 지원하는 암호화 알고리즘(키 교환, 암호화, MAC, 압축 알고리즘)을 나열한다.
- 키 교환
- 양측은 협상된 키 교환 알고리즘을 사용하여 안전한 세션 키(공유 비밀 키)를 설정한다.
- 키 관 종료
- 이제 보안 채널이 완전히 설정되었으며, 이후의 모든 통신은 세션 키와 협상된 알고리즘을 사용해 암호화된다.
- 서비스 요청
- 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 |