HTTP (Hypertext Transfer Protocol)
HTTP는 클라이언트와 서버 양쪽에서 통신할 수 있도록 구현해야 하는 기본 통신 프로토콜로, 요청과 응답, 세션, 캐싱, 인증 등을 다룬다. HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기중이며, 클라이언트가 TCP 80 포트를 사용하여 연결하면 서버는 요청에 응답하면서 자료를 전송한다. HTTP는 브라우저와 서버 사이에서 정보를 암호화되지 않은 평문(Plain Text)으로 전송하기 때문에, 정보가 전달되는 네트워크에서 전송되는 정보를 엿볼 수 있다. 이러한 보안 문제로 인해 HTTPS (HTTP Secure)가 출현했다.
HTTP/2
HTTP/2는 HTTP 프로토콜의 다음 업그레이드 버전으로, 점점 더 많은 웹 사이트에 적용되고 있다. 지연을 줄이고 성능과 보안 향상을 위해 새 기능들(압축, 멀티플렉싱, 우선 순위 지정)이 추가되었다. HTTP 버전 1.1에서는 보안 연결이 선택이지만, HTTP/2에서는 TLS 사용이 권고된다.
HTTPS (HTTP over Secure Socket Layer)
HTTPS는 SSL (Secure Socket Layer)을 이용한 HTTP 통신 규약(Protocol)을 의미한다. 이는 클라이언트와 서버가 먼저 암호화 통신 채널을 설정한 다음 평문 HTTP 메시지를 전송함으로써 정보 유출을 막는다. HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작한다. TCP/IP 포트는 443이다. HTTPS는 다음 세 가지 이유로 사용한다.
1. 기밀성(Confidentiality)
기밀성은 쉽게 말해 프라이버시를 의미한다. 인증되지 않은 제3자가 정보를 읽지 못하도록 보호하는 것이다. 그 과정은 평문의 정보를 암호문(Cipher text)으로 변환하는 작업인 암호화(Encryption) 과정과, 그 반대의 과정인 복호화(Decryption) 과정으로 이루어져 있다. 정보를 암호화하고 복호화하는 방법을 암호 함수(Cipher functions)라고 한다. 암호화 과정에는 다음과 같은 두 가지 주요 방법이 있다.
1-1 공개키 방식 (비대칭키 방식)
- A키로 암호화를 하면 B키로 복호화를 할 수 있다.
- B키로 암호화를 하면 A키로 복호화를 할 수 있다.
- 둘 중 하나를 비공개키(Private Key) 혹은 개인키라 부르며, 이는 자신만 가지고 있고 공개되지 않는다.
- 나머지 하나를 공개키(Public Key)라고 부르며 타인에게 제공한다. 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전하다.
1-2 대칭키 방식
- 동일한 키로 암호화, 복호화가 가능하다.
- 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음에 사용할 때는 다른 키가 사용되기 때문에 안전하다.
- 공개키보다 빠르게 통신할 수 있다.
HTTPS는 이와 같이 인터넷과 같은 공공 매체에서 두 참여자 간의 통신을 보호한다. HTTPS가 없다면 Wi-Fi Access Point를 운영하는 사람이 Access Point를 사용하는 사람이 결제를 할 때 신용카드 정보와 같은 개인 정보를 볼 수 있을 것이다.
2. 무결성(Integrity)
HTTPS는 변조되지 않은 정보로 목적지에 도달하게 한다. 즉, (1)전체 정보가 잘 도착했으며, (2)전송 중에 누가 변조하지 않았음을 보장한다. 예를 들어, 와이파이가 웹 사이트에 광고를 추가하거나 대역폭을 절약하고자 이미지 품질을 저하시키거나, 읽는 기사의 내용을 변조할 수 있지만 HTTPS는 웹 사이트를 변조할 수 없도록 한다.
3. 인증(Authentication)
HTTPS를 통해 웹 사이트의 진위 여부를 확인할 수 있다. 예를 들어, Wi-Fi Access Point를 운영하는 사람이 가짜 웹 사이트를 브라우저에 보낼 수도 있다. HTTPS는 mybank.com이라는 웹 사이트가 실제로 mybank.com인지 확인한다. 일부 인증서는 mybank.com이 MyBank.Inc라는 것을 알리기 위해 해당 웹 사이트의 법적 신원을 검사하기도 한다.
SSL과 인증 기관(CA)
SSL (Secure Sockets Layer)은 암호화 통신과 그 암호화 통신에 사용되는 키를 공유할 수 있도록 하는 기술이다. 이 키를 담은 인증서를 발급하고 관리하는 곳이 인증 기관(CA; Certificate Authority)이다. 인증 기관은 전 세계적으로 신뢰받는 기관이 운영한다. 웹 서버를 운영하는 웹 사이트는 암호화키를 생성하여 자신이 하나는 보관하고, 다른 하나를 인증 기관에게 넘겨 인증서를 발급 받는다. 인증 기관은 인증서를 발급 및 관리해주는 대신 비용을 청구한다.
'웹_프론트엔드 > 로드맵 챌린지' 카테고리의 다른 글
웹 보안 지식 - CORS (Cross Origin Resource Sharing) (1) | 2022.01.13 |
---|---|
웹 보안 지식 - 콘텐츠 보안 정책(CSP; Content Security Policy) (0) | 2022.01.12 |
VCS - GitHub (깃허브) (0) | 2022.01.10 |
VCS - Git 기본 사용법 (0) | 2022.01.08 |
VCS - 버전 관리(Version Control Systems)를 쓰는 이유 (0) | 2022.01.07 |