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 알고리즘 , 암호화 키 등과 같은 암호화 매개 변수를 협상하는 프로토콜
[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 )
원격 로그인, 파일 전송 등 원격 통신을 보호하기 위한 프로토콜
[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를 연결하고, 보안을 제공하지 않음
- Port forwarding ( SSH Tunneling )
- 보안기능이 없는 TCP 연결을 보안 설정된 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를 인증하고 판매자에게 인증 응답을 보냄 ( 권한 부여 응답 메시지 : 권한 부여 정보 , 토큰 정보 캡쳐(은행이 실제 지불 보장 ) |
인증 완료 | 해당 캡쳐 토큰과 함께 결제 완료 메시지를 전송함 |
'Lab & Research > Information Security' 카테고리의 다른 글
공개 키 암호화 & 메시지 인증 (0) | 2022.04.16 |
---|---|
네트워크 접근 제어 & 클라우드 보안 (0) | 2022.04.15 |
대칭 암호화 & 메세지 기밀성 (0) | 2022.03.17 |
Information Security (0) | 2022.03.17 |
소켓 주소 구조체 (0) | 2021.11.01 |