-
http와 httpsDev 2022. 3. 18. 17:53
💡 http와 https가 뭐가 다른지 궁금해졌다.
HTTP
http는 일반적으로 알고있다시피 클라이언트와 서버가 자원을 주고받을 때 사용하는 통신 규약(protocol)이다.
http에 대해 찾아보니 보안 문제로 보안이 강화된 https가 등장했다고 한다.그렇다면 http의 어떤 부분에서 보안이 좋지 않다고 한 것인지 궁금해졌다.조사해보니 http로 정보를 요청하고 받을때의 형태는 text 형태라고 한다.
그냥 text를 주고 받는 것이다. 그렇기 때문에 보면 그냥 읽을 수 있다.만약 이런 http를 이용하여 결제 정보나 개인 정보를 처리하는 사이트에서 해커가 네트워크 패킷 감청을 하면 유저의 정보를 그대로 볼 수 있고 읽을 수 있다. 이렇게 된다면 이것은 큰 보안 문제이다.
이런 http의 보안 문제를 해결하기 위해 나온 것이 아래의 https이다.
HTTPS
https는 인터넷에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고 받는 통신 규약이다.뒤에 붙은 s가 Secure Socket, 보안 통신망을 의미한다고 한다.
https가 정보를 주고 받는 방식은 http와 같다. 하지만 http처럼 text 형태 그대로를 주고 받는 것이 아닌 암호화된 정보를 주고 받는다.
이때 사용하는 암호화 방식은 공개 키 암호화 방식을 사용한다.
공개 키 암호화 방식을 간단히 설명하자면 우선 공개되어 있고 누구나 접근이 가능한 공개 키와 개인만이 가지고 있는 개인 키가 있다.이 두개의 키는 쌍을 이룬다. A 공개 키로 암호화 된 것은 A 개인 키로 풀 수 있고 A 개인 키로 암호화 된 것은 A 공개 키로 작성자를 인증할 수 있다.이게 무슨 뜻인지 예를 들어 설명하면 아래와 같다.
[공개 키로 암호화 - 개인 키로 복호화]
- 알렉스와 헤일리는 각자 공개 키와 개인 키를 가지고 있다.
- 알렉스는 헤일리에게 비밀 메세지를 보내고 싶다.
- 알렉스는 공개되어 있는 헤일리의 공개 키로 메세지를 암호화하여 헤일리에게 전달한다.
- 이 암호화된 메세지는 헤일리에게 전달되는 되는 과정에서 누군가 빼가더라도 암호화되어 있기 때문에 내용알 수 없다.
- 헤일리는 자신만이 가지고 있는 개인 키로 알렉스가 보낸 암호화된 메세지를 복호화하여 내용을 읽을 수 있다.
[개인 키로 암호화 - 공개 키로 복호화]
- 알렉스는 헤일리에게 “내가 좋아해” 라는 고백 메세지를 전달하고 싶을때 알렉스의 개인 키를 이용하여 이것을 암호화 한다.
- 공개된 알렉스의 공개 키로 알렉스의 메세지를 읽을 수 있지만 작성, 수정 할 수 없다. 알렉스의 공개 키로 암호화 되었고 이것은 알렉스가 작성했다는 것을 인증한다.
- 즉 알렉스의 메세지는 알렉스의 개인 키로만 암호화가 가능하다는 것이다. 알렉스가 아닌 누군가가 메세지를 조작해서 “저스틴이 널 좋아해" 이런 식으로 변경할 수 없다. 알렉스가 개인 키를 잘 보관해서 유출이 되지 않는 이상은 말이다.
자세한 공개 키 암호화 방식은 이 레퍼런스를 보면 이해해 도움이 된다.
https가 사용하고 있는 암호화 방식의 이론과 원리는 위와 같다.그렇다면 https가 실제로 정보를 주고 받을때는 어떤 식으로 작동하는지도 궁금해진다.
이 부분에 대해서는 매우 길어지기 때문에 HTTPS와 SSL 인증서 레퍼런스를 참고하여 다음 글에서 정리한다.
Reference
Http vs Https (Http,와 Https의 차이점)
Http와 Https 이해와 차이점 그리고 오해(?)
http보다 보안이 뛰어난 https란 무엇이고 왜 사용률이 높아지는가?
HTTPS와 SSL 인증서 - 생활코딩
'Dev' 카테고리의 다른 글
웹사이트 아이콘을 훔쳐보자 (0) 2022.04.09 [Next.js] Next-auth + Amplify 노트 (0) 2022.03.21 [Next.js] Amplify 찍먹 배포 해보기 (0) 2022.03.18 React Uncaught ReferenceError: process is not defined (0) 2022.03.08 상대경로 og:image는 외않되? (0) 2022.03.07