HTTPS

리선맨·2023년 10월 18일

Web

목록 보기
2/3

HTTPS란?

- HTTP는 사용자가 중요한 데이터(계정정보, 금융정보 등)를 서버에 제출할 때 누구나 읽을 수 있는 일반 텍스트형식으로 전송을 하게 된다.
그렇게되면 제3자에게 정보가 유출 될 수 있다는 문제가 발생할 수 있게 된다.
이러한 보안이슈를 커버할 수 있는게 바로 HTTPS인데 HTTPS는 내가 사이트에 보내는 정보들을 제 3자가 못 보게 해주고 접속한 사이트가 믿을 만한 사이트인지를 인증해주는 HTTP에 데이터 암호화가 추가된 프로토콜이다.

HTTPS 암호화 방식

  • 대칭키 암호화
    -클라이언트와 서버가 동일한 키로 암호화/복호화를 진행한다.
    -연산속도가 빠르다.
    -하지만 대칭키가 노출 된다면 무용지물...

  • 비대칭키 암호화
    - 1개의 쌍으로 구성된 공개키개인키로 암호화/복호화를 진행한다.
    - 연산속도가 느리다.

    개인키

    • 웹 사이트 소유자가 관리하며, 비공개로 유지된다.
    • 키는 웹 서버에 있으며 공개 키로 암호화된 정보를 복호화 하는데 사용된다.

    공개키

    • 웹 사이트 소유자가 관리하며, 비공개로 유지된다.
    • 서버에서 응답받은 데이터 중 일부는 개인키로 암호화 되어있는데 이를 공개키로 복호화할 수 있다.

HTTPS 동작 과정

HTTPS는 대칭키와 비대칭키를 모두 사용하는데, 먼저 서버와 클라이언트가 처음 연결을 할때 비대칭키를 사용하고 안정성이 확보된 후엔 대칭키를 사용하여 빠른 연산 속도를 활용한 통신을 하게 된다. 이러한 연결 과정을 단계별로 살펴보면 다음과 같다.

  1. Client Hello 와 Server Hello
    1-1) Client → Server : 클라이언트 측에서 생성한 랜덤 데이터
    1-2) Server → Client : 서버 측에서 생성한 랜덤 데이터, 인증서
  2. 서버에서 보내온 인증서의 진위여부를 확인하고 서버의 신뢰성을 보장 받는다.
    2-1) 서버측에서 보내온 인증서가 CA(Certificate Authority)의 인증서가 맞다면 해당 CA의 개인키로 암호화 되어있다.
    2-2) 각각의 브라우저들은 CA들의 공개키가 내장되어있기 때문에 해당 공개키를 사용하여 복호화 하여 인증서의 진위여부 및 공개키를 얻게 된다.
  3. session key 생성
    3-1) 클라이언트 측에서 생성한 랜덤 데이터서버 측에서 생성한 랜덤 데이터를 조합하여 pre master secret키를 생성한다.
    3-2) 생성된 pre master secret키를 서버 공개키로 암호화하여 서버로 전송하면 서버에서는 개인키를 사용하여 복호화를 진행하고 이후 서버와 클라이언트는 모두 일련의 과정을 거쳐 session key를 생성한다.
  4. 세션
    서버와 클라이언트가 데이터를 주고 받는 단계이다. 이 단계에서부터는 대칭키 방식으로 암호화를 진행하여 데이터를 송수신하는데 그 대칭키가 바로 session key값을 활용한다는 것이다.
  5. 세션 종료
    데이터의 전송이 끝나면 통신에 사용된 대칭키인 session key는 폐기된다.

References
https://mangkyu.tistory.com/98
https://www.yalco.kr/31_https/
https://dong5854.tistory.com/30

profile
프론트엔드 개발 공부중인 주니어 개발자의 복습노트

0개의 댓글