Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 문자열
- 백준 5525번
- 자바
- 백준 4949번
- HTTP
- 스터디
- 머신러닝
- 깃 터미널 연동
- 지네릭스
- 모두의네트워크
- 리액트 네이티브 프로젝트 생성
- 모두의 네트워크
- 리액트 네이티브 시작하기
- 리액트 네이티브
- 데이터베이스
- 정리
- React Native
- 깃 연동
- 데베
- SQL
- 백준 4358번
- 백준 4358 자바
- 딥러닝
- 깃허브 토큰 인증
- 모두를위한딥러닝
- 네트워크
- 모두를 위한 딥러닝
- 팀플회고
- 백준
- 깃허브 로그인
Archives
- Today
- Total
솜이의 데브로그
7장 ) 웹을 안전하게 하는 HTTPS 본문
Reference : 그림으로 배우는 Http&Network Basic
7. 웹을 안전하게 지켜주는 HTTPS
1) HTTP의 약점
평문 통신이기 때문에 도청 가능하다.
- HTTP를 사용한 리퀘스트나 리스폰스 통신 내용은 암호화기능이 없기 때문에 평문으로 메시지를 보낸다.
- TCP/IP 구조의 통신 내용은 도청이 가능한 네트워크이다. 따라서 통신 내용을 엿볼 수 있어 암호화된 메시지 자체도 엿볼 수 있다.
- Wireshark를 이용하면 쉽게 HTTP 리퀘스트와 리스폰스 내용 취득, 해석 가능.
- 따라서 암호화를 통해 도청으로부터 정보를 지킨다.
- 통신 암호화. SSL 또는 TLS 프로토콜을 사용해 HTTP 통신 내용을 암호화한다.
- SSL을 통해 안전한 통신로 확립 후, 그 통신로를 통해 HTTP 통신 한다.
- SSL을 조합한 HTTP를 HTTPS 또는 HTTP overSSL 이라 한다.
- 콘텐츠 암호화 : 통신하고 있는 콘텐츠의 내용 자체를 암호화한다.
- 클라이언트에서 HTTP 메시지를 암호화해서 출력하는 처리가 필요
- 콘텐츠의 암호화를 유효하게 하기 위해서는 클라이언트와 서버가 콘텐츠의 암복호화 구조를 가지고 있어야하므로 평상시에 브라우저와 웹 서버에서 이용하기는 어렵다.
통신 상대를 확인하지 않기 때문에 위장 가능
- HTTP를 사용한 리퀘스트나 리스폰스에서는 통신 상대를 확인하지 않는다.
- 따라서 누구나 리퀘스트 할 수 있으므로, 리퀘스트가 오면 상대가 누구든지 리스폰스를 반환한다.
- 리퀘스트를 보낸 곳의 웹 서버가 위장한 웹 서버일 우려가 있다.
- 리스폰스를 반환한 곳의 클라이언트가 원래 의도한 클라이언트인지를 확인할 수 없다.
- 통신하고 있는 상대가 접근 허가 된 상대인지 확인할 수 없다.
- 의미없는 리퀘스트라도 수신하게 되므로 Dos 공격의 대상이 될 수 있다.
- SSL로 상대를 확인 할 수 있다. 증명서를 제공.
- 클라이언트가 증명서를 가짐으로써 본인확인을 하고 인증을 할 수 있다.
완전성을 증명할 수 없기 때문에 변조 가능
- 발신된 리퀘스트나 리스폰스와 수신한 리퀘스트나 리스폰스가 같은지를 확인 할 수 없다.
- 공격자가 도중에 리퀘스트나 리스폰스를 빼앗아 변조하는 공격을 중간자공격 (Man in the Middle Attack, MITM 이라 한다.)
- 변조를 방지하기 위해서는 해시 값을 확인하는 방법과 디지털 서명을 확인하는 방법이 있다.
- 확실히 방지하기 위해서는 HTTPS를 사용하여 인증, 암호화, 그리고 다이제스트 기능을 이용해야 한다.
HTTP + 암호화 + 인증 + 완전성 보호 = HTTPS
- HTTP에 암호화나 인증 등의 구조를 더한 것을 HTTPS라고 부른다. (HTTP secure)
- HTTPS를 사용하는 통신은 웹 페이지의 로그인이나 쇼핑의 결제 화면 등에서 사용된다.
- HTTPS는 HTTP 통신을 하는 소켓 부분을 SSL 이나 TLS 프로토콜로 대체한다.
- SSL을 사용한 경우 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 된다.
- SSL은 HTTP와는 독립된 프로토콜로 SMTP나 Telnet 등에서도 이용될 수 있다.
공개키 암호화
- SSL에서는 공개키 암호화방식을 사용한다.
- 공개키 암호화는 공개키와 비밀키를 사용한다.
- HTTPS는 키를 교환하는 곳에서 공개키 암호를 사용하고 그 후의 통신에서 메시지를 교환하는 곳에서는 공통키 암호를 사용한다.
- 공개키가 진짜인지 증명하기 위해서는 인증기관을 사용한다. Ex) VeriSign
EV SSL 증명서
- 서버가 올바른 통신 상대임을 증명하며 상대방이 실제로 있는 기업인지도 확인한다.
- 세계 표준의 인정 가이드라인에 의해서 발행
- 주소창의 옆에 SSL 증명서에 기재되어 있는 조직명 및 증명서를 발행한 인증 기관 명이 표시된다.
SSL은 느리다
- SSL 통신이 지연되는 이유로는 통신 속도가 떨어지는 것과, CPU나 메모리 소비량이 많아 처리가 느려지는 것이 있다.
- TCP 접속과 HTTP 리퀘스트/리스폰스 이외에 SSL에 필요한 통신이 추가되기 때문에 전체적으로 처리해야 할 통신이 증가한다.
- 다른 하나는 SSL은 반드시 암호화 처리를 하고 있기 때문에 서버나 클라이언트에서는 암호화나 복호화를 위한 계산을 해야 한다.
느려지는 것에 대한 근본적인 해결 방법은 없기 때문에 SSL 액셀레이터라는 하드웨어를 사용하기도 한다.
민감한 정보를 포함하지 않는 통신에서는 리소스 절약을 위해 HTTP를 사용하고 개인정보 등 민감한 정보를 다룰 때만 HTTPS에 의한 암호화 통신을 사용한다.
HTTPS를 사용하기 위해서는 증명서가 필요하고, 이를 사용하기 위해서는 CA에서 증명서를 구입해야한다. 따라서 증명서 구입 비용이 부담된다.
'CS > Network' 카테고리의 다른 글
9장 ) HTTP에 기능을 추가한 프로토콜 (0) | 2021.11.25 |
---|---|
8장 ) 액세스 인증 (0) | 2021.11.09 |
9장 ) 무선 랜 통신 (0) | 2021.11.01 |
6장 ) 쿠키 헤더필드, 기타 헤더필드 (0) | 2021.10.31 |
8장 ) 네트워크 전체 흐름 (0) | 2021.10.31 |