오늘 공부 내용


1. WebSocket => 웹 채팅

2. Clustering

3. RSA

4. Async module


RSA 

- 공개키, 개인키를 기반으로 해서 암호화 하는 알고리즘

- 개인키가 없다면, 슈퍼컴퓨터로 복구화하는데 100 년이 걸린다.. (아무런 데이터가 없다고 가정할 때)

- 즉, 복호화가 아이에 불가능한 건 아니지만, 거의 완벽에 가까운 암호화 기법이라 할 수 있다


1. 서버에서 RSA 모듈을 이용해서 객체를 만들어요

2. Key 객체를 통해서 공개키를 뽑아내요!

3. 클라이언트에게 공개키를 HTML 과 같이 전송 (개인키는 서버가 가지고 있어요. 공개키는 암호화 하는데 사용되기 때문에 public 에 공개되어 있다)

4. ID, PW 를 HTML 에 넣어요!

    서버에 전송하기 전에 공개키를 이용해서 암호화 

5. 전송된 암호화된 데이터를 서버가 받아서 Key 객체를 이용해서 복호화


-> 추가적인 이야기

-> RSA module 을 이용해서 암호화 처리를 하게 되는데 ...

     시간이 지나면 개인키와 공개키를 다시 생성 (왜냐면 동일한 공개키와 개인키를 오랫동안 사용하면 그것들을 분석하여 어느 정도 유추할 수 있다. 6개월에서 1년 정도 걸림)

     request 마다 개인키와 공개키를 따로 생성 들어온 암호화된 데이터를 DB 에 바로 저장하면은 망해요.

     서버에서 다시 암호화해서 2차 저장장소에 저장


-> 다른 방식으로는 Secure Socket 방식을 쓸 수 있다.

     개인의 주민번호같은거를 저장할 때는 

     이증서를 받아해야해요! 돈을 내야해요!!

     URL 이 "HTTPS://..." 로 시작하는 것은 모두 Secure Socket 을 쓰는 것이라 볼 수 있다. 


HTTP protocol

-> 클라이언트와 서버가 항상 연결되어 있지 않아요 -> 클라이언트를 구별할 수 없어요

-> Session (항상 연결되어 있지 않는 HTTP 의 한계를 극복하기 위해 개발된 기술!) 

-> 서버 push 를 구현할 수 없어요

-> AJAX Long polling 기법을 이용


WebSocket 

-> 프로토콜

-> 좋은 방식이었지만, 기존의 HTTP 와 달리 새로 프로그램을 짜야되서 사람들이 쓰지 않았다.

-> HTTP 서버를 포함하여 WebSocket 서버를 따로 만들어야 하는 문제가 있었다.

-> WebSocket 을 쓰면 

-> 스멀스멀 사라져가고 있던 중, HTML5 가 "WebSocket 을 씁시다" 라고 하면서 다시 살아나기 시작했다.

-> socket.io 라는 Javascript 라이브러리를 쓰면 매우 간단하게 WebSocket 을 구현할 필요가 없다.

-> 서버쪽에선 모듈, 클라이언트 쪽에선 라이브러리

-> socket.io 에는 각가지 통신방식이 다 들어가있다.














보통은 CDN 방식을 쓴다.

즉, 네트워크로 바로 다운받는 방식이다.



























WRITTEN BY
서상호

,