profile image

L o a d i n g . . .

 

HTTPS란?

HTTPS란 하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)

 

즉, 인터넷에서 HTML과 같은 문서를 사용자 컴퓨터에 설치된 웹 브라우저가 웹 서버에 요청할 때의 규칙이라고 할 수 있다.

 

HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기중이며, 클라이언트(웹 브라우저)가 TCP 80포트를 사용해 연결하면 서버는 요청에 응답하면서 자료를 전송한다. HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 (가로채기) 하는 경우, 원하지 않는 데이터 유출이 발생할 수 있다.

이러한 보안 취약점을 해결하기 위한 프로토콜이 HTTP에 S (Secure Socket)가 추가된 HTTPS 이다.

간략화 한 HTTPS
해커 입장에서의 HTTP와 HTTPS 차이점
HTTPS는 기본 골격이나 HTTP와 거의 동일하지만 '보안 요소'가 추가되었다는 것이 가장 큰 차이점이다.

HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화 된다.

웹 서버가 키 하나를 정해 페이지를 암호화해서 사용자의 웹 브라우저로 보내고, 웹 브라우저는 그 키를 이용해서 페이지를 복원하면 될 것이다. 그러나 웹 서버는 하나고 사용자는 불특정 다수이기 때문에 간단하지 않다. 그렇다고 키를 사용자들에게 막 줘버리면 아무나 암호화를 풀 수 있게 됨으로써 암호화의 의미가 없게 된다. HTTPS는 페이지를 암호화 한 키가 그 페이지를 보는 특정 사용자에게만 알려지도록 한다.

 

HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 작동한다.

// TLS: Transport Layer Security, 과거 SSL에서 발전하며 이름이 변경 됨, 그러나 아직도 SSL이란 명칭이 많이 사용되고 있음

 

암호화 방식

공개키 암호화 방식과 대칭키 암호화 방식을 함께 사용한다.

공개키 방식으로 대칭키 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

대칭키 암호화 방식은 공개키 암호화 방식의 느리다는 단점을 보완한 방식이다.

 

공개키 방식

 

 
  1. A키로 암호화 하면 B키로 복호화 가능
  2. B키로 암호화 하면 A키로 복호화 가능
  3. 둘 중 하나를 비공개키(Private Key) 혹은 개인키 라고 부르며, 이는 자신만 가지고 있고 공개되지 않음
  4. 나머지 하나를 공개키 (Public Key) 라고 부르며 타인에게 제공, 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없으므로 안전함
  5. RSA, DSA 등이 있음

대칭키 방식

 

 
  1. 동일한 키로 암호화, 복호화 가능
  2. 대칭키는 매번 랜덤으로 생성되므로 누출되어도 다음에 사용할 때는 다른 키가 사용되어서 안전함
  3. 공개키보다 빠르게 통신 가능
  4. DES, 3-DES, AES, SEED, ARIA, MASK 등이 있음

이러한 SSL 방식 적용하려면 인증서 발급 후 서버에 적용시켜야 한다. 인증서는 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지 보장하는 역할을 한다. 인증서 발급 기관을 CA (Certificate Authorrity) 라고 부른다. 공인인증기관의 경우, 웹 브라우저는 미리 CA 리스트와 함께 각 CA의 공개키를 알고 있다.


동작 방법

 

 

  1. 인터넷 사이트 (서버)는 공개키와 개인키를 만들고, 신뢰할 수 있는 인증기관 (CA) 에 자신의 정보와 공개키를 관리해달라고 계약하고 (경우에 따라) 돈을 지불함
  2. 이 때, 계약을 완료한 인증 기관은 기관만의 공개키와 개인키가 있음, 인증 기관은 사이트가 제출된 데이터를 검증하고, 인증 기관의 개인키로 사이트에서 제출한 정보를 암호화해서 인증서를 만들어 제공함. 사이트는 인증키를 가지게 되었음
  3. 인증 기관은 웹 브라우저에게 자신의 공개키를 제공함
 

  1. 사용자가 사이트에 접속하면 서버는 인증서를 웹 브라우저 (클라이언트)에게 전송함, 예를 들어 웹 브라우저가 index.html 파일을 달라고 요청했다면, 서버의 정보를 인증 기관의 개인키로 암호화 한 인증서를 받게 되는 것임
  2. 웹 브라우저는 미리 알고 있던 인증기관의 공개키로 인증서를 해독하여 검증함, 그러면 사이트의 정보와 서버의 공개키를 알 수 있게 됨 (이 부분은 보안상의 의미는 X, 단지 해당 서버로부터 온 응답임을 확신할 수 있게 됨)
  3. 이렇게 얻은 서버의 공개키로 대칭키를 암호화 한 후 다시 사이트에 전송함
  4. 사이트는 개인키로 암호문을 해독하여 대칭키를 획득하고, 이제 대칭키로 데이터를 주고 받을 수 있게 됨
  5. 세션 종료 후 대칭키 폐기함

HTTPS의 장점

1. 웹 사이트의 무결성을 보호해 줌, 웹 사이트와 사용자 브라우저 사이의 통신을 침입자가 건드리지 못하도록 함 (악의적 의도가 있는 공격자, 합법이지만 통신에 침입하여 페이지에 광고 삽입하는 경우도 해당)

// 무결성이란 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미

2. 사용자의 정보를 웹 사이트와 사용자 사이의 통신을 몰래 수신하는 것을 방지함으로써 보안을 강화함

3. 사진 촬영, 오디오 녹음, 프로그레시브 웹 앱과 같은 강력한 웹 플랫폼 신기능들은 실행하려면 사용자의 명시적인 권한 허락을 필요로 함, 업데이트 된 API에 대한 권한 허락을 가능하게 함

4. 키워드 검색 시 상위 노출되는 기준 중 하나가 보안 요소임


HTTPS의 단점

  1. 모든 사이트에서 텍스트를 암호화 하여 주고 받으면 과부하가 걸려 속도가 느려질 수 있음, 중요한 사이트는 HTTPS로 관리하고 그렇지 않은 사이트는 HTTP 사용
  2. HTTPS를 지원한다고 해서 무조건 안전한 것은 아님, 자체적으로 인증서 발급할 수 있고, 신뢰할 수 없는 CA 기업을 통해 인증서 발급 받을 수 있기 때문

 

복사했습니다!