본문 바로가기

프로그래밍/기타

데이터 해쉬 - 해킹방지

서버 클라이언트 상관없이 해킹에 쉽게 노출이 될 수 있는 데이터들은 여러가지 방법이 있겠지만, 


일반적으로 해쉬코드를 이용하여 메모리 해킹에 대비한다.


해쉬코드를 이용한 가장 흔한 예는 바로 웹사이트의 비밀번호이다.


사용자 비밀번호를 MD5 같은 해쉬코드로 생성하여 저장하기 때문에 관리자도 알 수 없게 만드는 방법이다.


MD5 해쉬는 가장 많이 쓰이는 해쉬코드이며 인터넷 검색만으로도 생성기를 쉽게 찾을 수 있다.


그래서 분실된 비밀번호는 가르쳐주지 않고, 재설정해야 한다.


이렇게 공용으로 쓰이는 해쉬제너레이터는 인코딩에 비해, 디코딩은 극도로 어렵게 만들어야 한다.


MD5, SHA 같은 해쉬가 괜히 유명해진 것이 아니다.



게임에 쓰이는 데이터들도 비슷한 방법을 사용한다.


이벤트가 발생할때마다 얻어오는 형태보다는 계속 가지고 있는 변수들이 더 취약한데,


아이템의 가격, 보상과 관련된 데이터등과 같은 중요한 변수들은 


int형이나 float 같은 기본형으로 바로 저장을 하는 것이 아니라


자체적으로 생성한 코드와 비트연산(XOR같은)을 시키는 방법으로 저장을 한다.


데이터로 가장 많이 쓰이는 int형과 같은경우, 4byte라는 고정값을 가지고 있기 때문에 해킹에 취약하다.


저장할때와 마찬가지로 얻어올때도 반대연산을 하여 저장된 값을 가져온다.


비트연산의 대입값은 쉽게 유추할 수 없는 값을 사용하면 된다.


제작자만 알 수 있는 값이나, 현재시간, 프로그램을 가동한 시간등을 사용하기도 한다.




http://www.miraclesalad.com/webtools/md5.php


해당사이트는 string값을 md5 로 변환해 준다.