스스로 생각...
알고리즘의 목적
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 |