네트워크 프로토콜 스택 (TCP/IP 4계층 모델 기준)
| 계층 | 설명 | 관련 프로토콜 |
|---|---|---|
| 애플리케이션 계층 | 사용자 인터페이스, 데이터 표현 | HTTP, HTTPS, DNS |
| 전송 계층 | 신뢰성 있는 전송 | TCP, UDP |
| 인터넷 계층 | 라우팅 및 주소 지정 | IP |
| 네트워크 인터페이스 계층 | 물리적 네트워크 연결 | Ethernet, Wi-Fi |
| 항목 | HTTP | HTTPS |
|---|---|---|
| 암호화 | ❌ 없음 | ✅ TLS로 암호화 |
| 포트 번호 | 80 | 443 |
| 보안성 | 낮음 | 높음 |
| 인증 | 없음 | 서버 인증서 사용 (신뢰된 CA로부터 발급) |
| 무결성 | 없음 | ✅ 메시지 위조 방지 기능 |
| 보호 대상 | 설명 |
|---|---|
| 기밀성 (Confidentiality) | 데이터를 대칭키로 암호화 → 중간 공격자(MITM)가 내용을 볼 수 없음 |
| 무결성 (Integrity) | 데이터 위조 방지 → 해시값(HMAC) 비교로 확인 |
| 인증 (Authentication) | 서버가 신뢰할 수 있는 대상인지 확인 → CA로 서명된 인증서 사용 |
우회방법
<!-- Info.plist --> <key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
App Store 심사 거절 사유가 될 수 있으므로, 특정 도메인만 예외로 설정하는 것이 권장
Client Hello
클라이언트가 사용 가능한 암호화 알고리즘 목록과 랜덤값 전송
Server Hello
서버가 선택한 알고리즘 + 서버 인증서 전달
서버 인증서 점검
클라이언트는 인증서 체인 + 유효기간 + 도메인 일치 여부 확인
Pre-Master Secret 생성 -> 키 공유
RSA or DH 방식으로 세션키 생성 (이후 대칭키로 통신)
Finished
핸드셰이크 완료 후 암호화된 세션 시작
인증서는 CA(Certificate Authority) 라는 신뢰된 기관이 발급
클라이언트는 다음을 확인
*iOS는 자체적으로 신뢰하는 Root CA목록을 보유하고 있으며, 이를 기준으로 인증서 유효성 검사*
| 항목 | OSI 7계층 | TCP/IP 4계층 |
|---|---|---|
| 개발 주체 | ISO (국제표준화기구) | 미국 국방부 (DARPA) |
| 계층 수 | 7계층 | 4계층 |
| 이론 vs 실제 | 이론적인 참조 모델 | 실제 구현 기반 모델 |
| 사용 목적 | 통신의 표준화와 설계 가이드 | 실제 인터넷 프로토콜 스택 기반 |
| 현재 쓰임 | 교육, 분석용 | 인터넷의 실제 표준 |
| OSI 계층 | TCP/IP 계층 |
|---|---|
| 7. 응용 (Application) | → Application |
| 6. 표현 (Presentation) | → Application (암호화, 인코딩 등 포함됨) |
| 5. 세션 (Session) | → Application (세션 유지 등 포함됨) |
| 4. 전송 (Transport) | → Transport (TCP, UDP) |
| 3. 네트워크 (Network) | → Internet (IP) |
| 2. 데이터링크 (Data Link) | → Network Access |
| 1. 물리 (Physical) | → Network Access |