HTTPS
HTTPS는 HTTP 통신을 암호화하여 만든 프로토콜을 말한다. HTTPS는 HyperText Transfer Protocol over SSL(Secure Socket Layer)의 약자형태이고 443번의 포트 번호를 사용한다. 보통 "https://"와 같이 소문자로 쓴다.
목차
개요
HTTPS는 WWW 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발했고, 전자상거래와 클라이언트-서버간 의 정보교환 시에 자주 쓰이며 암호화 프로토콜인 SSL(TLS) 프로토콜을 사용하여 통신을 주고받는다. (여기서 말하는 TLS는 SSL의 상위버전으로 SLL이 전세계에 보급되고 공통화가 되면서국제 표준화 기구인(IETF)에서 이를 감독하기 시작했는데, 이 때 SSL 이름울 TLS로 변경했다.SSL 3.0 버전이 TLS 1.0 으로 대체되었고 현재는 TLS 1.1, 1.2 버전을 사용하고 있다.)
등장 배경
넷스케이프 커뮤니케이션즈는 1994년에 넷스케이프 내비게이터 웹 브라우저를 위해 HTTPS를 개발하였다. 원래 HTTPS는 SSL 프로토콜과 함께 사용되었다. SSL이 전송 계층 보안(TLS)으로 발전했을 때 2000년 5월 HTTPS는 공식적으로 RFC 2818에 규정되었다.
일반적으로 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않고 전송이 되었다. 즉, 데이터가 쉽게 도난당할 수 있다는 것이었는데, 이를 극복하기 위해 HTTPS 프로토콜에 SSL(보안 소켓 계층)을 사용함으로써 등장하게 되었다. 인터넷 통신이 발달함에 따라 네트워크 상에서 발생하는 전자상거래, 은행 기관인증, 개인정보를 담고있는 데이터는 타인이 쉽게 접근할 경우에는 해킹의 문제가 발생하기 때문에 암호화 프로토콜을 이용하여 통신 프로토콜을 사용하게 되었다.
역사
1996년 첫 상용화 버전인 HTTP/1.0 발표
1999년 HTTP/1.1 발표
2015년 HTTP/2를 공식발표 현재 HTTP/1.1을 대부분 사용 중이지만 구글 계열의 사이트는 HTTP/2와 HTTP/1.1을 동시에 지원하며 점진적으로 HTTP/2로 바뀌는 추세이다.
HTTP/2는 HTTPS 연결에서만 작동하며, HTTP 연결일 경우에는 브라우저와 서버에서 HTTP/2를 지원하더라도 HTTP/1.1로 연결된다. HTTP/2는 구글이 발표한 SPDY라는 기술을 기반으로 했는데, HTTP/3에도 구글이 발표한 QUIC의 기술이 적용되는 것으로 방향이 정해진 모양이다.HTTP/2까지는 TCP 연결을 기반으로 하는데, HTTP over QUIC(HTTP/3)은 UDP 연결을 기반으로 한다.[1]
인터넷에서 일어나는 금융거래 및 전자상거래, 데이터 정보의 통신프로토콜의 발달로 개인의 프라이버시가 중요해짐에 따라서, 구글 크롬과 같은 웹브라우저들은 HTTP 웹사이트를 위험성이 있다고 경고문을 표시하고 있다. 네이버와 다음이 우리나라에서도 TTPS를 점차적으로 확대하고있다.
특징
HTTP와의 차이
HTTPS URL은 기본적으로 "https : //"로 시작하고 포트 443을 사용하지만 HTTP URL은 기본적으로 "http : //"로 시작하고 포트 80을 사용한다. SSL 인증서를 통해 사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말하면 데이터를 암호로 바꾸는 의미이다. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다. 한가지 예를 들면 512 비트(평균적으로 128비트 암호화)의 암호화라면,2의 256승을 대입해야하며, 이것은 1,237,940,039,285 ....000(중략)이라는 기하급수적인 수를 대입해야 한다는 뜻과 같다. 그렇기 때문에 현재까지나온 컴퓨터라 해도 적게는 몇 백년, 많게는 몇 천년 까지 계산을 해야되는 문제가 발생합니다.그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지하고 TLS는 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하며, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공한다. 서버-클라이언트간의 데이터 송수신 시 암호화와 복호화 과정을 통해 데이터를 주고받기 때문에 HTTP보다 신뢰성이 뛰어나긴 하지만 여기서 발생하게 되는 데이터의 자원소모가 발생하여 통신속도가 HTTP보다 느리다. 흔히 보안성이 낮아도 되는 온라인 뉴스나 기사에 HTTP를 사용하고 금
동작원리
HPPT(응용계층에서 동작)는 TCP/IP(4계층)과 통신을 주고 받기위해 소켓을 이용하게 된다. 사실 TCP 계층과 응용계층 사이에는 어떠한 계층이 존재하지 않는데, HTTPS 프로토콜은 이 두 개의 계층 사이에 SSL 계층이 포함되어 있다. 즉, HTTPS는 SSL 위에서 프로토콜이 실행된다. SSL은 일종의 독립적인 보안 계층으로 프로토콜을 실행하는데, 그 이유는 서로 다른 계층 간의 통신에서 소켓이 SSL과 연결되어 SSL이 보안 프로토콜 기능을 제안하기 때문이다.[2] 즉 SSL 프로토콜을 적용하면 SSL을 TCP로 인식하고 TCP는 정상적으로 통신이되어져 HPPTS 프로토콜을 실행하는데 아무문제가 없다. HTTPS는 HTTP 헤더와 요청 / 응답 데이터를 비롯한 모든 메시지 내용을 암호화한다. 아래의 제한 항목에 설명된 가능한 CCA 암호화 공격을 제외하고 공격자는 두 당사자와 도메인 이름 및 IP 주소 간에 연결이 이루어지고 있음을 발견할 수 있어야 한다.
SSL
서버설정
HTTPS 연결을 허용하기에 클라이언트(사용자)는 본인이 접속하는 서버가 신뢰할만한 서버인지 확인을 해야 하는데 이 신원을 보증하기 위해서는 제3자의 입장인 인증기관(Certificate Authority)을 필요로 한다.HTTPS를 연결하기에 서버의 관리자는 공개키와 개인 키를 만들고 신뢰할만한 인증기간에 비용을 지불하고 공개키를 맡긴다. 인증기관은 암호화된 서버의 공개키를 다른 클라이언트와 서버에게 제공을 하고 암호화된 공개키를 받은 서버는 해당 클라이언트에 이를 전달한다. 클라이언트는 인증기관을 통해 인증서 리스트를 탐색하게 되고 인증기관의 이름이 같게 되면 해당 인증기관은 공개키를 얻게 된다. 얻은 데이터를 본인만의 개인 키로 복호화 한 후 정보를 받게된다. 이러한 통신방식을 핸드쉐이크(Hand shake) 라고 부른다.[3]
암호화기술
*기밀성 즉 프라이버시다. 기밀성은 인증되지 않은 제3자가 정보를 읽지 못하도록 정보를 보호하는 역활을 한다. 그 과정은 보통 평문이라고 하는 읽을 수 있는(듣거나 볼 수 있는) 정보 형식을 암호문이라고 하는 뒤죽박죽 읽을 수 없는 데이터 형식으로 변환하는 작업을 거친다. 이 과정을 암호화라고 한다. 이 반대의 과정(암호문을 다시 읽을 수 있는 평문으로 전환)을 복호화라고 한다. 정보를 암호화하고 복호화하는 방법에는 서버와 클라이언트간에 공통된 공개키를 가지는 대칭키 암호화 방식, 인코딩과 디코딩이 다른(암호화하고 복호화하는데 사용되는 키가 다름을 의미)공개키 암호화 방식 등이 존재한다.[4] 그렇기 때문에 암호화를 하여 사용자의 정보를 보호한다.
대칭키 서버와 클라이언트가 같은 키로 데이터를 통신한다. 흔히 암호화 알고리즘이라 부르고 암복호화시 간편하고 드는 비용이 적고 송수신자 양단은 하나의 키를 사용하여야 하며 이 대칭키는 하나의 키로 암호가 되어있기 때문에 보안상 유출이 된다면 암호의 내용이 해커에의해 복호화된다는 치명적인 단점을 가지고 있다. 이를 보안하기위해 나온 방법이 비대칭키 암호화 방식이다.
비대칭키 공개키, 비공개키 방식을 가지고 데이터를 암복호화 한다. 공개키로 암호화를 한다면 비공개키로 복호화를 해야하고 마찬가지로 비공개키로 암호화를 한다면 공개키로 복호화를 해야한다. 이 방식을 사용하여 두개의 키 중 하나는 비공개키(Secre 키 개인키)라고 하며 나머지를 공개키(공인의)라고 부른다 비공개키는 사용자 호스트만이 알고 읽을 수 있고 공개키는 다른사용자에게 제공한다. 이러한 방식을 사용하여 공인 인증기관(CA)를 이용하여 인증서를 주고받아 원할한 HTTPS 동작을 수행한다.
*무결성 HTTPS로 해결하는 또 다른 문제는 데이터 무결성이다. 즉, 전체 정보가 목적지에 도착했으며, 전송 중에 외부의 공격으로 변조되지 않았음을 보장한다. 정보가 잘 전송되었음을 보장하기 위해 메시지 다이제스트 알고리즘을 사용한다. 교환된 각 메시지의 메시지 인증 코드(message authentication codes)MAC 계산은 암호화 해싱 프로세스다. 즉 데이터가 잘 도착했는지 여부를 암호화된 메세지를 주고받음으로 확인한다.[4]
인증서
인증서' 는 클라이언트가 서버에 접속하기 위해서는 먼저는 본인이 접속하려는 서버가 인증이 보장되는지 판단을 내려야한는데 이때 인증서에 등록된 정보를 가지고 인증기관(CA)에 공개키를 요청하게된다. 이를 인증서를 통한 인증과정이라 한다. HTTPS는 보안 프로토콜로서 서버의 접속자와 서버간의 주고받는 데이터의 암호화가 필수인데 이를 지정하고 인증서를 보관하는 인증기관은 신뢰성이 매우 우수해야 하며 정확한 절차로 인증이된 공인 기업들만이 참여 한다. 만약 웹개발자가 서버를 만들게되면 공개키를 믿을수있는 인증기관에 맡기게 된다. 인증기관은 공개키를 가지고 인증서를 만들고 이를 암호화하여 서버에게 전달한다. 인증서의 절차는 아래와 같은 방식으로 진행된다.
- 클라이언트는 서버로 부터받은 인증서가 인증기관에 의해 발급이 된 여부를 먼저 파악하기위해 클라이언트 내에 저장된 인증기관 리스트를 컨펌한다.
- 컨펌이 된다면 해당 인증기관의 공개키로 인증서를 복호화 하며 이는 비공개키로 암호화됨을 의미한다.
- 이러한 방식으로 인증서를 전송한 서버를 신뢰하게된다.
한마디로 인증서의 역활은 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버임을 보장하고 SSL 통신에 사용할 공개키를 클라이언트에게 제공한다.[5]
SSL 인증서 안에 있는 정보는 인증서를 발급한 기관명, 서비스 및 도메인 정보, 서버 측 공개키, 공개키의 암호화 방법 등이 담겨져 있다.
문제점
HTTPS를 사용 시 증명서를 구입해야 한다. 증명서의 구입 비용이 부담되는 서비스나 개인 웹사이트의 경우 HTTP만 선택하기도 한다. 그리고 HTTPS를 사용할 경우 처리가 늦어지게 되는 단점이 있다. 그 이유는 클라이언트 요청 시, SSL에 필요한 통신이 추가되고, 암호화 복호화 계산을 하기 때문에 서버나 클라이언트의 리소스를 추가적으로 소비하기 때문이다.[6]
최근 2019년 HTTPS를 이용한 피싱 이메일 공격이 17%증가 하였고, URL 기반 공격이 26%상승 했다고 파이어아이가 이메일 위협 보고서를 발표했다. 일반적으로 피싱 이메일은 자격 증명 정보나 신용 카드 정보를 탈취하기 위한 목적으로, 기존에 알고있는 연락처나 신뢰할 수 있는 회사를 사칭하여 이메일 수신인이 임베디드 링크를 클릭하도록 유도한다.[7]
이런 보안상의 문제를 해결하기 위해 정부는 HTTPS 사이트 접속 차단 조치를 내렸다. 하지만 "온라인상의 불법 정보를 차단하는 일은 좋은 목적에서 시행한다 해도, 표현의 자유를 의식해야 한다" 라고 지성우 성균관대 법학전문대 교수는 말했다. 이런 논란으로 인해 반대하는 국민들과 정책을 시행하려는 정부 측의 의견이 엇갈리고 있다.[8]
각주
- ↑ HTTP 나무위키 - 〈HTTP〉,《나무위키》, 2020-04-20
- ↑ victolee〈[HTTPSHTTPS와 SSL인증서]〉,《티스토리》, 2017-12-10
- ↑ 정아마추어 JEONG_AMATEUR〈Http와 Https 이해와 차이점 그리고 오해(?)〉,《티스토리》, 2017-11-5
- ↑ 4.0 4.1 Vladislav Denishev, 〈HTTP에서 HTTPS로 전환하기 위한 완벽 가이드〉,《웹엑추얼리》, 2018-11-13
- ↑ 코딩초보 여성계〈네트워크 - HTTP/HTTPS 차이점, HTTPS란?〉《티스토리》 2019-08-01
- ↑ 손님1, 〈10. HTTPS란?〉, 《KENDRIC's BLOG》, 2016-04-12
- ↑ 길민권 기자, 〈2019년 1분기, HTTPS 이용 악성 URL 26% ↑, 피싱 시도 17% ↑〉, 《데일리시큐》, 2019-07-16
- ↑ 김평화 기자, 〈'https' 사이트 접속차단 논란, "'불법'에 국민동의 필요"〉, 《머니투데이》, 2019-06-07
참고자료
- 나무위키 〈HTTP〉,《나무위키》, 2020-04-20</ref>
- victolee, 〈[HTTPSHTTPS와 SSL인증서]〉,《티스토리》, 2017-12-11
- 정아마추어 JEONG_AMATEUR, 〈Http와 Https 이해와 차이점 그리고 오해(?)〉,《티스토리》, 2017-11-5
- Vladislav Denishev,〈HTTP에서 HTTPS로 전환하기 위한 완벽 가이드〉,《Smashing Magazine》, 2018-11-13
- 코딩초보 여성계〈네트워크 - HTTP/HTTPS 차이점, HTTPS란?〉《티스토리》 2019-08-01
- 손님1, 〈10. HTTPS란?〉, 《KENDRIC's BLOG》, 2016-04-12
- 길민권 기자, 〈2019년 1분기, HTTPS 이용 악성 URL 26% ↑, 피싱 시도 17% ↑〉, 《데일리시큐》, 2019-07-16
- 김평화 기자, 〈'https' 사이트 접속차단 논란, "'불법'에 국민동의 필요"〉, 《머니투데이》, 2019-06-07
같이 보기