본문 바로가기
Lab & Research/Information Security

Web : SSL&SSH&SET

by jaeaemin 2022. 4. 13.

 

0. 웹 보안의 위협요소 

 

Integrity [무결성] : 웹 페이지, 메세지의 트래픽, 유저 정보 등이 수정되지 않고 원본 그대로 인지 

Confidentiality [비밀성] : 웹 트래픽 요청을 도청함 

Denial of Service [서비스 거부공격] : bogus web을 통해 시스템을 공격해 해당  서버의 자원을 부족하게 만듬 

Authentication [ 인증 ] : 인증된 사용자를 흉내내서 서비스에 접근 

 

 

TCP/IP Protocol에서 보안 요소

IP 계층 전송 계층 애플리케이션 계층

 

 

1. SSL ( Secure Socket Layer ) 

  • Netscape에 의해 고안됨 
  • SSL 아키텍쳐 : 신뢰성있는 TCP 기반 종단간 보안 서비스를 제공함

 

 

Session - SSL 처리를 위한 클라이언트와 서버 사이의 집단 ( 두 종단 간에 정의 된 암호화 파라미터 집합 ) 
- HandShake protocol에 의해 시작된다.
Connection - 각 연결은 세션에 의해 형성된 연합이다.
   즉, 세션은 여러개의 복합 커넥션으로 이루어진다.

 

 

[1] Session State 

  • Session identifier :  액티브 또는 재개할 세션의 식별자
  • Peer certificate : 종단간 증명
  • Compression Method : 압축 함수 
  • Cipher spec : 암호화 그리고 해쉬 함수를 정의함 
  • Master Secret : 서버와 클라이언트가 공유하는 48byte secret 값
  • Is_resumable flag : 세션 상태에 의해 정해지는 플래그 비트 값 

 

[2] Connection State 

  • 각 연결에서 서버와 클라이언트는 랜덤한 바이트 시퀀스를 선택해서 사용한다.
  • Mac Seret 
  • Key
  • Initalization vector 
  • Sequence numbers 

 

SSL Record Protocol 

  • 기밀성과 메세지 무결성을 제공할 수 있는 방법이다.
  • SSL record protocol operation

 

  • Message authentication
    • HMAC algorithm을 사용한다.
  • Encryption
    • 암호화에 block cipher , stream cipher 사용함
  • SSL record Header 
    • Content Type (8bit) , version , Compressed length 
  • SSL change cipher spec protocol ( SSL 변경 암호 규격 프로토콜 )
    • 보류 상태를 현재 상태의 복사본으로 사용한다.
  • SSL alert protocol ( 경보 프로토콜 ) 
    • SSL 관련 경보를 peer에 전달하는데 사용된다.

 

 

 

SSL HandShake Protocol 

: 서로 인증하고 암호화 및 MAC 알고리즘 , 암호화 키 등과 같은 암호화 매개 변수를 협상하는 프로토콜 

 

SSL handshake

 

[Step1] : 보안 기능을 구축하는 단계

-  논리적 연결을 시작하고 보안 기능을 확립한다. ( cilent_hello -> server_hello ) 

-  Random , SessionID, CipherSuite(암호 알고리즘&규격), CompressionMetohd (각 단에서 지원하는 압축 메서드 목록)

 

 

[Step2] : 서버 인증 및 키를 교환함

certificate 서버 인증서 보내기
server_key_exchange 서버의 키를 보냄 (Diffie-Hellmann, 매개 변수 = DH  교환으로 사용 )
certificate_request 클라이언트의 인증서 요청
server_done 서버 hello  관련 메시지의 끝을 나타냅니다.

 

 

[Step3] : 클라이언트 인증 및 키 교환

certificate 요청 시 클라이언트 인증서 전송
client_key_exchange 클라이언트의 키를 보냅니다 (Diffie-Hellmann, 매개 변수 = DH 키 교환이 사용되는 경우)
certificclient_hello 클라이언트의 인증서를 확인하는 데 사용됨
(client_hello에서 교환된 모든 핸드세이크 메시지에 대해 서명된 해시)

 

 

[Step4] : 종료

chabge_cipher_spec 보류 중인 CipherSpec을 현재 CipherSpec에 복사합니다.
finished 핸드쉐이크 프로토콜을 종료함 

 

 

 

SSL 암호화 계산

보안 키 교환을 위한 현제 세션의 일회성 48바이트 마스터 키 , 마스터 암호를 생성한다.

마스터 키는 기타 암호화 키 생성에 사용된다.

▪ 1단계 : RSA 또는 Diffie-Hallmann을 사용하여 pre_master_secret 생성 및 교환

▪ 2단계: 클라이언트와 서버는 pre_master_secret 및 클라이언트와 서버 랜덤을 사용하여 마스터 암호를 독립적으로 생성

 

 

 

 

HTTPS ( HTTP over SSL ) 

: HTTP와 SSL이 결합하여 웹 브라우저 서버 간 의사소통에서의 보안  체계 

 

  • https:// 와 43port를 사용함  ( HTTP[SSL[TCP]]] )
  • 암호화 적용 
    • 요청되는 URL 문서, HTTP 헤더, documnet 폼 , Cookies ... 

 

HTTP Client : 연결 시작 

  • https 서버와 TCP 연결을 만든다.
  • 보안 세션을 만들기 위해 HTTPS 핸드셰이킹 프로토콜을 수행한다.
  • 보안 세션을 통해 모든 HTTP 프로토콜 메시지를 교환한다.

 

HTTP Session terminate : 세션 종료

"Connection: close" 헤더를 포함한 HTTP 요청/응답 메시지를 보낸다.

  • SSL/TLS 프로토콜: "close_notify" 경보 메시지를 보냅니다.
  • TCP 프로토콜: 연결 종료

 

 

 

 

2. SSH ( secure Shell ) 

원격 로그인, 파일 전송 등 원격 통신을 보호하기 위한 프로토콜 

 

SSH Protocol

[1] SSH Transport Layer Protocol

: 서버 인증. 데이터의 기밀성, 무결성을 제공하는 프로토콜 계층

  •   Server Host Key

SSH 전송계층에서는 서버 호스트 키들의 기반으로 서버 인증을 제공한다 ( host Keys는 여러 개의 공개/비공개 키 쌍 ) 

이를 위해서는 클라이언트는 사전에 서버에 대한 공개 키를 알고 있어야ㅕ 한다.

RFC 4251 ( two pulic key trust models )

  - 클라이언트는 DB(host, host public key)를 유지하고, 공용 키 인증서를 사용해서 CA의 public key를 가진다.

 

SSH TLP의 메시지 교환
KEY Exchange  세션에 대한 마스터 키를 생성한다.
SSH_MSH_NEWKEYS 키 교환 종료, 마스터 키 K에서 필요한 키가 생성된다.
SSH_MSG_SERVICE_REQUEST 암호화 및 MAC로 보호되는 사용자 인증 또는 연결 프로토콜 메시지 전송

 

 

 

[2] SSH authentication protocol

  : 클라이언트를 서버에 인증하는데 사용됨

 

인증 메서드 
공개 키 기반 인증 클라이언트는 서명된 메시지를 개인 키와 함께 서버에 전송함
암호 기반 인증 암호를 전송함
호스트 기반 인증  클라이언트는 클라이언트 호스트의 개인 키를 사용해  서명된 메시지 전송

 

 

[3] SSH Connection Protocol

: 보안 인증 연결을 설정하고 SSH 전송 계층 프로토콜 위에 여러 논리 채널(터널링)을 다중화 함

   채널은 윈도우 메커니즘을 사용하여 흐름을 제어한다 ( [채널 수명] :  채널 개방 -> 데아터 전송 -> 체널 닫기 ) 

  • 체널 타입 : 애플리케이션을 식별하는 데 사용
  • 세션 : 프로그램을 실행한 remote
  • Direct tcp/ip : 포워딩 하는 로컬 포트 
  • Forworded tcp/ip : 포워딩 하는 리모트 포트 
  • 채널 보안이 설정되어 있지않은 TCP 통신 연결  
    • 로컬 포트 X와 원격 포트 Y간 TCP를 연결하고, 보안을 제공하지 않음 

TCP를 사용하고 보안 기능이 없는 연결

  • Port forwarding ( SSH Tunneling ) 
    • 보안기능이 없는 TCP 연결을 보안 설정된 SSH 연결로 변환하는 과정
    • SSH가 선택한 포트에서 수신되도록 구성하고, 해당 포트를 사용하는 모든 트래팍을 캡쳐해서 SSH 보안 채널을 통해 전송한다.

SSH 터널링

  • Local port forwarding 
    • SSH 클라이언트의 연결이 SSH 서버를 통해 대상 서버로 전달된다.
    • SSH 클라이언트가 선택한 포트의 모든 트래픽을 수신하고 가져오도록 구성되고 보안 설정된 SSH 채널을 통해 전송함
    • SSH 서버가 수신 트래픽을 대상 포트로 보낸다.

 

  • Remote port forwarding 
    • SSH 서버의 연결이 SSH 클라이언트를 통해 서버로 전달된다.
    • 방화벽은 나가는 트래픽만 허용하고, SSH를 포함해 들어오는 트래픽은 drop한다.
    • 외부에서 웹 서버에 엑세스하려는 경우에 사용할 수 있다. ( 방화벽이 나가는 트래픽만 허용하기 때문에 ) 

 

 

 

 

3. SET ( secure Electronic Transaction) 

: 인터넷을 통한 신용카드 거래를 보호하기 위해 설계된 보안 규격이다.

거래 당사자 간의 안전한 통신을 X509v3 인증서 기반으로 신뢰 모델을 만들고 개인정보를 보호함 

 

SET의 특징 

정보의 기밀성   DES 암호화 사용해, 개인정보를 보호함 ( 가맹점은 카드 소지자의 신용카드 번호를 알 수 없다. )
데이터 무결성  디지털 서명을 사용함
인증   RSA 서명이 있는 X.509v3 인증서를 기반으로 카드 소유자 및 가맹점을 인증함 

 

  • Issuer :  금융 기관
  • acquirer : 상인과 계좌를 개설해 결제 카드 승인 및 결제를 처리하는 금융 기관 
  • payment gateway : 가맹점의 결제를 처리하는 기능을 제공함
  • messages : 은행 카드 결제 네트워크
  • certificate authority : 카드 소유자, 가맹점 및 결제 게이트 웨이에 인증서를 발급하는 신뢰기관 

 

 

 

Dual Signature ( DS ) 

고객이 구매를 하게되면, 주문 정보(OI)와 결제 정보(PI)를 전송해야 한다.

이 때 개인정보를 위해 PI는 가맹점에 숨겨야 하고, OI는 은행에게 숨겨야 하지만 둘은 연결되어 통신에 사용한다.

DS는 이를 위해 고안된 모델이다. 

 

 

구매자는 DS , OI , PIMD 를 넘겨야 하고, 은행은 DS, PI, OIMD를 넘겨줘야 한다.

결제 인증  가맹점이 지불된 금액을 받도록 보장한다.
 결제 승인을 위해 머천트가 결제 게이트웨이로 구매 권한 요청 메시지를 보낸다
  ( 구매 관련 메시지 : 구매 관련 정보, 권한 부여 정보, 인증서  ) 
지불 인증  결제 게이트웨이가 발급자의 PI를 인증하고 판매자에게 인증 응답을 보냄 
   ( 권한 부여 응답 메시지 : 권한 부여 정보 , 토큰 정보 캡쳐(은행이 실제 지불 보장 )
인증 완료  해당 캡쳐 토큰과 함께 결제 완료 메시지를 전송함 
반응형