오늘 공부 내용
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