軟體授權裝置綁定與換機
一份授權設定為單裝置后,客戶把軟體和快取複製到另一臺普通電腦,不能直接繼續使用原電腦的授權。
裝置綁定和帳號登入有什么區別?
帳號登入確認“客戶是誰、買了什么”,裝置綁定確認“這份授權允許在哪臺裝置使用”。客戶登入成功后,軟體仍需通過 SDK 校驗裝置身份、簽章和功能權益;把帳號登入狀態或快取檔案複製到另一臺電腦,不能代替那臺電腦自己的授權驗證。
SDK 怎么知道是哪一臺電腦?
每次啟動時,SDK 讀取作業系統的裝置身份,結合產品 ID 計算裝置哈希。伺服器簽章中包含這個哈希,本機檢查也會核對它。
Windows 讀取 MachineGuid,Linux 讀取 machine-id,macOS 讀取 IOPlatformUUID。原始裝置身份不會上傳,只傳送計算出的哈希;設定檔中的舊 device_id 不會覆蓋實際讀取的本機身份。
把裝置 A 的檔案複製到 B 會怎樣?
- A 啟用后,拿到的簽章綁定 A 的裝置哈希。
- B 讀取自己的系統身份,得到不同的哈希,因此拒絕 A 的快取。
- B 必須聯網重新啟用。如果裝置上限為 1,且 A 還沒釋放,伺服器會拒絕增加 B。
客戶要換電腦,怎么處理?
讓客戶在舊電腦上主動解除綁定,再在新電腦啟用。如果舊電腦損壞,你也可以在控制臺的“裝置啟用”頁面釋放舊綁定。換電腦不會重設授權的到期時間。
作業系統重裝后裝置身份可能變化,需要按新裝置處理。完整克隆作業系統、偽造系統身份或修改客戶端程式屬于更強的攻擊,單靠這個裝置哈希不能保證防住。
允許長期離線時,A 已持有的舊簽章無法馬上得知它被釋放了;它要再次成功聯系伺服器,才能更新這個狀態。離線時間越長,遠端限制越難立即生效。
跨語言裝置哈希算法
SHA256(UTF8(
"LicenovaDevice/v2\n"
+ lower(product_id) + "\n"
+ lower(trim(OS_machine_identity))
))