作者GALINE (天真可愛CQD)
看板GameDesign
標題[請益] 線上排名系統的反作弊機制
時間Mon May 2 19:59:23 2011
這年頭流行什麼東西都要線上排名或是來個成就系統綁帳號
然而伺服器端要怎麼知道接收到的資料真的是透過客戶端程式傳送
而不是某個厲害的 User 假造的資料呢?
我目前是有兩個想法
1. 將資料跟某個密鑰混在一起做 hash ,接收時檢查 hash 是否正確
2. 將資料用 RSA 之類的非對稱加密,到伺服器端才解密
同時配合 user-agent string 檢查之類的輔助手段
前者是客戶端程式得要儲存簽名用的key,感覺不太穩當
後者實作起來(好像)很麻煩,而且我不確定要不要繳保護費給 RSA...
請問有其他穩當的作法嗎?
--
頂天立地:愛孩子就要支持蘿莉控
http://goo.gl/Bha7e
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.73.175.26
1F:→ Dannvix:只要客戶端程式在hacker手上,沒有破解不了的程式吧 05/02 20:15
2F:→ GALINE:直覺是這樣沒錯,但是各遊戲主機的成就系統能夠安然無恙 05/02 20:22
3F:→ GALINE:應該是有什麼手段可以克服? 05/02 20:22
4F:→ GALINE:還是說早就倒光光了只是大家不在意這樣[汗] 05/02 20:25
5F:推 LaPass:讓人想不想去破解的問題 05/02 20:39
6F:→ azureblaze:存replay丟伺服器跑一遍? 除非他能TAS 05/02 20:40
7F:→ LaPass:有的根本沒防護,直接把資料存在使用者的硬碟中,開個讀 05/02 20:41
8F:→ LaPass:flash存檔的程式就能修改遊戲記錄了 05/02 20:41
9F:→ GALINE:唔....我想把討論先專注在資料傳送這一段....當然100%的 05/02 20:46
10F:→ GALINE:安全是不可能,但是我希望能做到在無視修改記憶體之類的 05/02 20:47
11F:→ GALINE:手法的前提下,讓 user 沒辦法只「下載修改器填入數字」 05/02 20:48
12F:→ GALINE:就能修改回傳伺服器的成就/高分...等資料 05/02 20:49
13F:推 StubbornLin:存replay在server跑一次 看有沒有異常 05/02 21:42
14F:→ cowbaying:你不是已經把關鍵字講出來了嗎? 05/02 21:57
15F:推 cowbaying:還有程式設計時要有個好習慣 要去檢查自己的程式有沒有 05/02 22:02
16F:→ cowbaying:被修改過 像是動態資源檔之類的 05/02 22:03
17F:→ cowbaying:不過有心要破解的人 給他時間就一定會破解出來 05/02 22:04
18F:→ GALINE:關鍵字是說....「保護費」嗎[汗] 05/02 22:04
19F:→ cowbaying:不是那三個字啦 05/02 22:04
20F:→ cowbaying:單機遊戲可能比較沒辦法 線上遊戲就是定期更改密碼串 05/02 22:05
21F:→ cowbaying:應該說加密矩陣 05/02 22:06
22F:→ cowbaying:檢查的面向很多 反正短時間內是破解不出來的 05/02 22:06
23F:→ cowbaying:另外關鍵字在你的第二行裡面 05/02 22:07
24F:→ GALINE:「到伺服器端才解密」? 05/02 22:09
25F:→ cowbaying:那是第六行 XDDDD 05/02 22:11
26F:→ GALINE:所以問題還是「客戶端」嗎[汗] 05/02 22:14
27F:→ cowbaying:是的 因為基本上程式在別人的電腦上跑 你是不能控制對 05/02 22:21
28F:→ cowbaying:方要對這程式做什麼事情 最多就是做個又臭又長的迷宮 05/02 22:22
29F:→ cowbaying:不然你以為GAMECOPYWORLD裡的東東都哪裡來的? 05/02 22:23
30F:推 Ebergies:用 replay 要看啥東西,純技術性的東西,AI 寫寫 05/02 23:12
31F:→ Ebergies:拿到最高分不是難事 05/02 23:12
32F:→ GALINE:我覺得replay有一定的安全性,比較大的難點倒是在上傳資料 05/02 23:13
33F:→ Ebergies:另外第一二個方法,只要用原客戶端上傳錯的分數就破解了 05/02 23:13
34F:→ GALINE:量大以及很花伺服器運算能力...XD 05/02 23:13
35F:→ Ebergies:replay 甚至按鍵精靈就能炸了你 xD 05/02 23:14
36F:→ GALINE:原客戶端上傳錯的分數...是說修改執行檔/記憶體? 05/02 23:15
37F:→ Ebergies:YEAH 05/02 23:16
38F:→ Ebergies:GameMaster 就可以了連駭客都不用 05/02 23:16
39F:→ GALINE:我倒是忘了按鍵精靈...不過由於種種因素我暫時不想面對這段 05/02 23:17
40F:→ GALINE:想先專注在傳送這部份上,雖然遲早還是要面對的 Orz 05/02 23:18
41F:推 Ebergies:基本上 RSA 只能保障誠實的使用者不被第三者影響 05/02 23:23
42F:→ Ebergies:使用者本身就心懷不軌的話是沒用的 05/02 23:23
43F:→ Ebergies:舉例來說,使用者直接用自制程式跟你要密鑰,你要不要給 05/02 23:25
44F:→ Ebergies:他可以偽造所有的封包讓你以為你是在跟自己的程式對話 05/02 23:26
45F:推 azureblaze:如果他可以用按鍵精靈之類的搞你的REPLAY, 05/02 23:36
46F:→ azureblaze:他就可以直接用按鍵精靈玩你的遊戲了 05/02 23:36
47F:→ azureblaze:這問題就變成「如何防止bot」 05/02 23:37
48F:→ rofellosx:遊戲根本用不到RSA吧.. 05/02 23:39
49F:→ Splash5:不是用不到 是大多數公司裡的主管/程式設計根本不懂RSA... 05/04 00:10
50F:推 Ebergies:嗯, 沒修過密碼學的通常不會接觸這東西 05/04 10:03