HTTPS

oyeon·2023년 9월 19일
0

컴퓨터 네트워크

목록 보기
4/15

HTTPS

  • Hypertext Transfer Protocol Secure
  • SSL(보안 소켓 계층) 사용
  • HTTP 자체를 암호화 하는 것이 아니라, HTTP 메시지 Body를 암호화 한다.(Header는 암호화 하지 않음)

사용 목적

1. 보안성

2. SEO(검색엔진 최적화)

  • 구글은 HTTPS 웹 사이트에 가산점을 줌.(빈번한 노출을 위해)
  • AMP(가속화된 모바일 페이지)를 만들 때 HTTPS를 사용해야만 함

SSL/TLS

  • Secure Sockets Layer/Transport Layer Security
  • 데이터를 암호화 하는 통신 프로토콜
  • 기밀성 (대칭키 암호화/비대칭키 암호화) - 데이터를 어떻게 암호화할 것인가?
  • 무결성 (데이터 변조 검증) - 데이터가 조작되지 않았음을 어떻게 알 수 있는가?
  • 통신 상대 인증 - 통신 상대를 신뢰할 수 있는가?

SSL

  • Netscape Communications Corporation에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜
  • 대칭키, 비대칭키(공개키/개인키) 방식을 혼합하여 사용함

SSL 통신과정

  1. A -> B 접속요청
  2. B는 A에게 자신의 공개키를 보낸다.
  3. A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화 한다.
  4. 암호화한 대칭키를 B에게 전달한다.
  5. B는 A의 대칭키를 자신의 개인키로 복호화 한다.
  6. 복호화 결과로 B는 A의 대칭키를 얻을 수 있다.
  7. 1~6 과정으로 얻은 대칭키를 활용해 A, B는 안전하게 통신한다.

HTTPS 통신 흐름

(클라이언트, 서버, 인증 기관)
1. 서버에서 서버 정보와 서버 공개키를 가지고 인증 기관에게 보낸다.
2. 인증 기관은 CA 개인키를 갖고 있는데, 이를 가지고 서버 정보와 서버 공개키를 암호화 한다.
3. 암호화한 결과는 SSL 인증서 역할을 하고, 만들어진 SSL 인증서를 서버에게 보낸다.
4. 인증기관은 CA 공개키를 클라이언트인 브라우저에게 넘겨주게 된다.
5. 클라이언트에서 서버에 접속 요청할 때, 서버는 클라이언트에게 SSL 인증서를 보낸다.
6. 클라이언트는 CA 공개키로 서버에게 받은 SSL 공개키로 복호화 한다.
7. 복호화 하면 클라이언트는 서버 정보와 서버 공개키를 가질 수 있게 된다.
8. 사이트의 정보를 가지고 있으니 인증기관을 통해서 검증된 사이트인지 아닌지를 판단할 수 있다.
9. 클라이언트는 검증된 사이트라고 판단하면 클라이언트 대칭키를 만든다.
10. 서버의 공개키로 클라이언트 대칭키를 암호화하여 서버에게 보내게 된다.
11. 서버는 서버의 개인키를 갖고 암호화된 서버의 공개키를 복호화 하여 클라이언트 대칭키를 만든다.
12. 클라이언트와 서버 둘 다 동일한 클라이언트 대칭키를 가지고 있기 때문에 통신할 수 있다.

HTTPS 암호화 과정

(SSL Handshake의 동작과정)

  1. ClientHello - 암호화 알고리즘 나열 및 전달
  2. ServerHello - 암호화 알고리즘 선택
  3. Certificate - 인증서 전달
    • Server가 자신의 SSL 인증서를 Client에게 전달. 인증서 내부에는 Server가 발행한 공개키(+개인키는 Server가 소유)가 들어있다.
    • Client는 Server가 보낸 CA의 개인키로 암호화된 이 SSL 인증서를 이미 모두에게 공개된 CA의 공개키를 사용하여 복호화한다.
  4. Client Key Exchange - 데이터를 암호화할 대칭키 전달
    • Client는 데이터 암호화에 사용할 대칭키(비밀키)를 생성한 후 SSL 인증서 내부에 들어 있던(Server가 발행한) 공개키를 이용해 암호화하여 Server에게 전송한다. 여기서 전달된 '대칭키'가 SSL Handshake의 목적이자 가장 중요한 수단인 데이터를 실제로 암호화할 대칭키(비밀키)이다. 이제 키를 통해 Client와 Server가 교환하고자 하는 데이터를 암호화 한다.
  5. ServerHello Done - 정보 전달 완료
    • ServerHello Done은 인증서 내부에 공개키가 있다면 Client가 CA의 공개키를 통해 인증서를 복호화한 후 Server의 공개키를 확보하고, 종료한다.
  6. ChangeCipherSpec / Finished - SSL Handshake 종료
    • Client, Server 모두가 서로에게 보내는 Packet으로 교환할 정보를 모두 교환한 뒤 통신할 준비가 다 되었음을 알리는 패킷이다. 'Finished' Packet을 보내어 SSL Handshake를 종료

대칭키와 비대칭키

대칭키

  • 암호화, 복호화 시에 사용하는 키가 같다.
  • 암복호화가 쉬운 대신, 탈취시 바로 보안에 이슈가 생김

공개키(비대칭키)

  • 암호화 시에 공개키를 사용
  • 복호화 시에 개인키를 사용
  • 개인키로만 복호화할 수 있기 때문에 누구나 공개키를 가져도 상관없다.
  • 대칭키 방식보다 암호화 연산 과정이 추가되어 비용이 크다(느리다).~~

reference
https://www.youtube.com/watch?v=wPdH7lJ8jf0
https://www.youtube.com/watch?v=KpyzbEFYE_E
https://sunrise-min.tistory.com/entry/HTTPS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-TLSSSL-%EA%B9%8C%EC%A7%80-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90
https://sunrise-min.tistory.com/entry/TLS-Handshake%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%A7%84%ED%96%89%EB%90%98%EB%8A%94%EA%B0%80?category=1055346

profile
Enjoy to study

0개의 댓글

관련 채용 정보