본문 바로가기

Network

(10)
[얄팍한 코딩사전] HTTPS는 무엇인가? 그리고 왜 쓸까?(ft. 대칭키 vs 비대칭키) 2편 앞서 1편에서 HTTP대신 HTTPS를 사용하는 이유를 크게 2가지로 설명하였다. 1. 내가 사이트에 보내는 정보(ex: 내 ID, password)를 제3자가 알아보지 못하게 하기 위해서(암호화) 2. 내가 접속한 사이트가 믿을만한 곳인지 이 두 보안 기능이 어떤 원리로 구현되는지 알기 위해서는 대칭키와 비대칭키의 개념을 알아야 한다. 1. 대칭키 방식 전쟁에서 아군에게 편지로 메시지를 보낼 때, 중간에 적군이 편지를 탈취해도 이를 알아볼 수 없도록 하려면 메시지의 내용을 '암호화' 해야한다. 그 암호화된 메시지는 아군만 읽을 수 있어야 한다. 그래서 옛날부터 이를 위한 방식들이 고민되어 왔다. 그동안 널리 사용되어 온 건 이 '대칭키 방식'. ex: 양쪽 모두 A=27, B=9, C=51.. 이런 표..
[얄팍한 코딩사전] HTTPS는 무엇인가? 그리고 왜 쓸까?(ft. 대칭키 vs 비대칭키) 1편 보통 주소창에 주소를 적을 때, www앞에 https:// 이렇게 붙인다. 예전에는 http:// (HTTP)가 많았지만, 요즘 공신력 있는 사이트 대부분은 거의 https:// (HTTPS)를 많이 사용한다. *TMI: 청와대 홈페이지는 아직도 http://이다... 그래서 주소창을 보면 '주의요함'이 적혀있다! HTTPS의 S는 Secure, 즉 기존의 HTTP사이트보다 더 안전하다는 얘기. (HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다.) HTTPS요청을 SSL 혹은 TLS라는 알고리즘을 이용해 HTTP통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법. → 이 내용은 어려우니 다음에 차차 설명하도록 하겠다. 그렇다면 무엇으로부터 안전하다는 걸까? ..
로그인 인증/인가 방식 2. 토큰 방식 세션 방식에 이어서, 토큰 방식에 대해서 알아보자. 인증/인가에 사용되는 토큰은 JWT(Json Web Token)이고 구조는 아래와 같다. # JWT 구성 XXX.YYY.ZZZZ와 같이 두 개의 점을 기준으로 세 파트로 나눠져있다. 각각 1. Header, 2.Payload, 3.(verify) Signature로 구분. 1. Header Header에는 토큰의 종류(타입)와 해싱 알고리즘의 종류, 이렇게 2가지 정보가 담겨있다. 1) typ 토큰의 종류(type). 여기엔 언제나 고정값인 'JWT'가 들어간다. typ값이 'JWT'여야 이 토큰의 종류가 JWT가 된다. 2) alg 해싱 알고리즘. 3번 Signature을 만드는데 사용될 알고리즘이 지정된다. 보통 HS256(HMAC-SHA256) ..
로그인 인증/인가 방식 1. 세션 방식 세션과 토큰방식 로그인에 대해 알아보기 전에, 왜 필요한지를 먼저 알아보자. → 이를 위해, HTTP에 대해 알 필요가 있다. # HTTP 1/ HTTP란? - 웹 브라우저와 웹 서버간의 통신에 사용되는 프로토콜 - 클라이언트(웹브라우저)가 서버에 요청을 보내고, 서버가 클라이언트에게 데이터를 응답하는 방식으로 동작. 2/ HTTP 특징 HTTP의 여러 특징 중 하나는 바로, HTTP 프로토콜은 Connectionless와 Stateless이라는 것! 1. Connectionless Protocol : 비연결지향(비연결성) 클라이언트가 서버에 요청했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식. 즉, 각 요청은 독립적으로 처리되고, 이전 요청과의 연결을 유지하지 않는다. → 그래서, 아래..
HTTPS 통신과정 HTTPS 통신과정이 한 자료만 읽고 이해하기에는 나한테는 많이 어려웠다. 여러 블로그 글들, '얄팍한 코딩사전', '생활코딩' 영상을 보고 드디어 HTTPS 통신과정을 이해하게 되었고, 이해한 걸 스스로 정리하면서 다른 사람들에게도 공유하고 싶어 이렇게 정리하게 되었다. 사실, 깊게 들어가면 더 복잡한 내용들이 많지만 나는 HTTPS 통신 과정이 간단하게 '어떻게' 되는지에 초점을 맞추었다. 자료마다 HTTPS 통신과정단계를 나누는 기준이 달라, 내 방식대로 크게 4가지 단계로 나누었다. 1. Handshake (악수) 2. Session Key 생성 3. 데이터 전송 4. 통신 완료 들어가기에 앞서 미리 알아야 할 점은 클라이언트, 즉 브라우저는 - CA 리스트 - 각 CA 공개키 등이 내장되어있다...
[얄팍한 코딩사전] HTTP는 뭘까? 내 컴퓨터에서 네이버 웹사이트에 접속하게되면, 내 컴퓨터는 네이버 서버에 대략 이렇게 생긴 메시지를 보낸다. 그냥 이렇게만 보내면 컴퓨터조차 읽어내지 못한다. 왜냐하면, 이 메시지가 '어떤 형식'으로 작성됐는지를 모르기 때문. 예를 들면, O 이라는 것이 있다. 이게 숫자 0인지, 알파벳 O인지, 한글 이응인지를 알려면 저 문자가 숫자인지, 알파벳인지, 한글인지 등 어떠한 형식인지 알려줘야한다. 위와 같은 사진이 있다. 이게 어떠한 상황인지를 알려면 '바둑'인지, '오목'인지를 알아야 한다. HTTP는 인터넷상의 커뮤니케이션에 사용되는 형식들 중 하나이다. 사람은 위와 같은 사진을 보면, 바로 우편형식이라는 것을 알 수 있다. 어느 부분이 주소인지, 우편번호인지, 연락처인지 바로 알아낼 수 있지만 내 컴..
HTTP Messages * HTTP : HyperText Transfer Protoco. HTML과 같이 문서를 전송하기 위한 Application Layer프로토콜. 웹브라우저 - 웹서버의 소통을 위해 디자인 됨. 클라이언트가 HTTP messages양식에 맞춰 요청을 보내면, 서버도 HTTP messages양식에 맞춰 응답한다. HTTP messages - request 1> GET - 브라우저 주소창 : 주소창에 www.naver.com - fetch API fetch(URL들어감).then((response) => console.log(response)) // response : Response 객체가 들어온다. ex: Response {} fetch함수는 디폴트로 GET방식으로 작동. 옵션인자가 필요없다. - Post..
브라우저의 작동 원리 (보이지 않는 곳) 1. URL & URI 1> URL ( Uniform Resource Locator )네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.브라우저의 주소창에 입력한 URL : 서버가 제공하는 환경에 존재하는 파일의 위치구성 : scheme + hosts + port + url-pathex: https://codestates.com:443/ —> codestates.com 주소가 가리키는 서버의 기본 폴더.CLI환경에서 폴더와 파일의 위치를 찾아 이동하듯이, 슬래쉬(/)를 이용해 서버의 폴더에 진입하거나 파일을 요청할 수 있다.그러나, 기본적인 보안의 일환으로 외부에서 직접 접근이 가능한 경우는 거의 x.http://www.google.com:80/search?q=JavaScriptscheme : h..