애정코딩 💻

BASIC 2022.02.23 댓글 0 Joana

HTTP , HTTPS

HTTP / HTTPS

 

- HTTP : 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜(서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용함)

문제점 -  서버에서 브라우저로 전송되는 정보가 암호화되지 않는다.

 

- HTTPS :  SSL(보안 소켓 계층) 사용, 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와준다. 서버와 브라우저가 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아줌. HTTP 자체를 암호화하는 것이 아닌 HTTP Message Body를 암호화한다. (즉, Header는 암호화되지 않는다)

 

HTTPS 사용해야하는 이유

1. 중간에 데이터를 가로채도 암호화되어 있기 때문에 안전하다.

2. 구글은 HTTPS 웹 사이트에 가산점을 줌

3. AMP를 만들 때 HTTPS를 사용해야만 함.

 

 

SSL/TLS

 

SSL : Secure Sockets Layer - Netscape 에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜 공개키/개인키 대칭키 기반으로 사용

 

공개키 방식

서로 다른 키로 암호화와 복호화를 수행하는 방식 (비대칭키 방식)

데이터 암호화 시에는 공개키를 사용하고 데이터 복호화 시에는 개인키를 사용

공개키로 암호화한 데이터는 오직 개인키로만 복호화할 수 있다. (즉, 공개키는 누가 가져도 상관없음)

 

 

대칭키 방식

동일한 키로 암호화하여 복호하를 수행하는 방법

:누구든지 암호화에 이용된 키를 갖고 있으면  해당 데이터를 복호화할 수 있다.

 

 

SSL 통신과정

( 공개키 방식으로 대칭키를 전달 ) -> (이 대칭키를 활용해서 암호화와 복호화) -> (서버와 브라우저간 통신 진행)

 

1. a -> b 접속 요청

2. b -> a 자신 의 공개키 전송 

3. a 자신의 대칭키를 b가 준 공개키로 암호화한다.

4. a ->b 암호화한 대칭키 전달

5. b는 a의 대칭키를 자신의 개인키로 복호화하여 a의 대칭키를 얻는다.

6. 이렇게 얻은 대칭키로 a,b 는 안전하게 통신한다.

 

데이터 암호화, 복호화를 위한 한 쪽의 대칭키를 다른 쪽의 공개키로 암호화하여 전송하면, 반대 편에서 자신의 개인 키로 복호화하여 그 반대편의 대칭키를 알아낸 후 통신을 할 수 있다.

 

 

사용자가 접속한 사이트가 유효한 사이트인지는 어떻게 확인 할까?

 

1. 인증기관에 사이트 정보, 사이트 공개키 전달

2. 전달 받은 데이터 검증 후 인증기관 개인키로 서명

3. 사이트 인증서 생성 하여 사이트에 전달

4. 인증기관이 사용자에게 인증기관 공개키를 전달 (인증기관 공개키는 사용자 브라우저에 내장된다)

(사이트 접속)

5. 사용자 -> 사이트 접속 요청

6. 사이트가 자신이 신뢰할 수 있는 사이트 임을 증명하기 위해 사용자에게 자신의 인증서 전달

7. 사용자는 해당 인증서인증기관에서 받은 공개키로 복호화한다. (사이트 정보, 사이트 공개키를 얻음)

8. 사이트 공개키로 자신의 대칭키를 암호화한다.

9. 암호화한 대칭키를 사이트에 전달

10. 자신의 개인키로 사용자 대칭키를 얻는다

11. 이렇게 얻은 대칭키를 활용하여 ssl 통신을 한다.

 

 

아주 간단하게 개념만 알고 있었는데 이전에 봤던 면접에서 질문을 받았다가 잘 대답하지 못해서 공부할 수 있었다!

 

해당 영상을보고 공부했습니다!(최고 ㅜㅜ)

https://www.youtube.com/watch?v=wPdH7lJ8jf0

 

반응형