Linux
基於訂閱的模型中客戶端和伺服器的身份驗證
我目前的商業模式在硬體上預先承擔了損失,希望能持續為服務付費。當沒有為服務付費時,指令被發送到客戶端硬體以停止執行。
我想找到一種方法來減少有人設置 rouge 伺服器以保持客戶端硬體正常執行的機會,即使它沒有付費。這樣做還有一個額外的好處,即確保不會將 rouge 伺服器設置為簡單地接管客戶端電腦以用於惡意目的。
在一個非常簡單的嘗試中,我設置了以下“系統”:
- 基於硬體的序列號在部署之前從客戶端電腦收集,並通過加密與伺服器已知的 2 條資訊組合在一起。
- 加密值儲存在客戶端電腦上。2a. 伺服器始終知道這兩條資訊。
- 當客戶端第一次連接到伺服器時,它會將硬體串列傳遞給伺服器。
- 序列與資訊結合併加密。
- 加密的值被傳回給客戶端,看它是否與儲存的值匹配。
這個系統似乎有效,但如果我認為它是解決我的問題的最佳方法,我不會在這裡詢問它是否有效。
硬體序列號很容易被欺騙,因此這不是一種可靠的身份驗證措施。
我認為你想得太難了——已經有非常成熟的方法可以做到這一點,即 SSL,或更廣泛地說,RSA 公鑰身份驗證。如果您使用嚴格的密鑰指紋驗證,那麼您只需建立客戶端和伺服器身份即可。
我想找到一種方法讓客戶端機器驗證他們正在與正確的伺服器交談,而不是被劫持的東西,或者只是錯誤的產品伺服器。
客戶端和伺服器證書身份驗證可以做到這一點。
這可以防止惡意指令嗎?
你不清楚這意味著什麼。“流氓指令”不是行業標準術語。如果您詢問它是否會防止意外命令由受信任的電腦執行,那麼不會。強化您的應用程序以丟棄危險/惡意命令。
如果客戶端一直在尋找來自伺服器的“goodboy”消息,這是否足以防止硬體被盜?
不可以。如果您的服務非常敏感,請進行客戶端證書身份驗證*,*並將其置於需要雙重身份驗證的 VPN 後面,此外還需要像 @EEAA 推薦的那樣使用公鑰加密。除了登錄憑據之外,諸如 RSA 令牌或智能卡之類的東西應該可以防止被盜的筆記型電腦連接到您的服務。還可以考慮在容易被盜的移動電腦上進行全盤加密,這樣小偷一開始就無法進入電腦。