스스로 생각...

알고리즘의 목적
1.리플레이 어택 방지
2.암호화로 도청 당해도 안전하도록 함

**이 알고리즘은 당연히 패킷 복호화가 불가능함. 복호화할 필요가 없으니까 안했음
   복호화할 필요가 있다면 RSA 같은걸 써야할듯.




클라 ----- 서버 ---- DB서버


여기에서는 서버와 DB 서버가 같은 머신임. (따라서 클라-서버 부분에서만 보안 처리를 하면 됨)
만약 다른 머신이라면 여기에도 별도의 보안처리를 해야할듯.

DB에는 md5(md5(pw)) 가 저장되어 있음
(회원 가입 받을때 그렇게 함..)
회원 가입 받을때에는 랜덤넘버가 필요 없음. 어차피 이걸 리플레이 어택 해봤자이기 때문..
그리고 md5(pw) 값을 알아도 로그인에도 쓸수 없기 때문.


<웹>
1. 서버에게 로그인 하고싶다는 패킷을 보냄. 여기에는 id,pw 정보가 들어있지 않음
2.서버는 random number (충분히 큰 범위의) 를 발생시켜 md5를 적용한 뒤 클라에게 보내줌. 이 값을 md5(rand) 라고 하자.
3.클라는 md5(md5(rand)+md5(md5(pw))) 값을 서버로 보냄 (id에는 별도의 처리 하지 않음)
4.서버는 DB에서 md5(md5(pw)) 값을 꺼내어 md5(md5(rand)+md5(md5(pw))) 값을 계산하여 클라로부터 받은 값과 비교함
5.일치하면 로그인OK 아니면 실패


<게임>
1.클라가 서버에 최초 접속시 md5(rand) 를 받음
2.이하 과정은 웹 부분의 3번부터 동일.

'네트워크' 카테고리의 다른 글

통신보안  (0) 2012.03.16
udp vs tcp  (0) 2012.03.16
Posted by 휘사마
,

udp vs tcp

네트워크 2012. 3. 16. 14:10

<tcp의 특징>
1.connection-oriented
2.reliability
   1) packet ordering
   2) no packet loss
   3) no packet error
   4) no packet duplication
3.flow control, congestion control
4.mesage 경계 보존 하지 않음
  해결방법1) 고정된 패킷 길이 사용 - 대역폭 낭비의 단점
  해결방법2) delimiter 사용 - 패킷의 각 byte를 모두 검사해야 한다는 단점
  해결방법3) packet size를 메세지의 맨 앞에 명시 - 구현이 다소 복잡하다는 단점??
5.효율적 multicast 불가


<udp의 특징>
1.stateless ( not connection-oriented )
2. not reliable ( tcp가 보장해주는 것을 전혀 보장해주지 않음)
3. no flow control, no congestion control
4. message 경계 보존 함
5.효율적 multicast 가능

http://stackoverflow.com/questions/47903/udp-vs-tcp-how-much-faster-is-it
http://www.laynetworks.com/comparative%20analysis_tcp%20vs%20udp.htm



tcp는 각 패킷마다 일일히 ack을 보내고 udp는 ack을 보내지 않기 때문에 udp가 latency가 더 좋다고 할 수 있다.
그러나 작은 패킷을 많이 보내는 경우 buffering을 하는 tcp가 throughput이 더 좋다.
tcp header가 udp header보다 크기는 하지만 buffering으로 인한 이점이 훨씬 크기 때문이다.
이 경우 udp가 network 자원을 더 쓰기 때문에 latency도 tcp가 좋을것 같은데.. 아닌가? -_-

tcp는 congestion control을 하기 때문에 모두에게 fairness를 제공하는데 이것이 이점이 될 수 있을 것 같다.
starvation이 발생하지 않기 때문에..

udp를 tcp 스럽게 쓰기 위해 tcp알고리즘을 application level에서 직접 구현할수도 있는데
어렵기도 하고 커널이 직접 해주는 tcp 보다 오버헤드가 훨씬 크다.

파일전송의 경우 udp가 tcp보다 좋다고 한다. (이건 큰 패킷을 보내는거라서?)


아무튼 그래서 나의 결론은 udp는 정말 udp가 아니면 안될것 같다 하는 곳에만 쓰고 그 외에는 tcp를 쓰는게 좋다는 것..
udp를 꼭 써야만 할 곳이란.. 일정 시간 간격으로 온도 정보를 서버로 전송하는 온도 센서(loss, duplication, ordering, error 등에서 자유로움)
동영상 서비스 제공 서버 ( loss,error 약간 있어도 깍두기 약간 보이고 땡임. duplication,ordering은 처리해야할것 같은데.. 그리고 multicast 유리)
파일전송( tcp window size는 max가 64K라고 함. 64K마다 ack 보내면 너무 느리지 않겠니. )

'네트워크' 카테고리의 다른 글

통신보안  (0) 2012.03.16
로그인 패킷 보호 알고리즘  (0) 2012.03.16
Posted by 휘사마
,
http://www.ibm.com/developerworks/java/library/j-threads3.html


For example, the JDBC Connection class is not thread-safe -- two threads cannot safely share a Connection at a fine level of granularity -- but if each thread had its own Connection, then multiple threads can safely perform database operations simultaneously.

JDBC의 Connection 클래스는 thread-safe 하지 않다고 한다.

그래서 각 쓰레드마다 커넥션을 소유하면 된다고 되어 있다.

밑에는 TLS 에 대한 이야기이고..



아니면 DAO를 singleton 으로 만들고

DAO에서 커넥션을 1개만 사용하면서 모든 메소드에 적절히 lock을 걸어도 될듯.

'Java' 카테고리의 다른 글

email 보내기  (0) 2011.11.26
floating point bug  (0) 2011.11.26
Exception, RuntimeException  (0) 2011.11.26
bitmap class 구현  (0) 2011.11.26
MD5 구현(C++, Java, Js)  (0) 2011.11.26
Posted by 휘사마
,