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