Authentication
使用加密建構抗複製系統
我的問題與使用密碼學建構抗複製系統有關。
我正在使用基於 ARM 的商品硬體板建構嵌入式系統。因此,使產品與眾不同的智慧財產權全在於軟體。可以使用什麼樣的加密措施,以使我係統上的軟體即使是從正版產品中複製出來的,也不能用於在另一塊相同類型的板上執行並建構複製的假冒產品?
基本上,軟體中需要某種硬體平台認證。通過篡改軟體二進製文件來繞過此身份驗證步驟實際上應該是不可行的。我有什麼選擇?
這實際上是一個非常有趣的問題。主要是因為我認為沒有真正好的解決方案。
然而,考慮到我們正在將越來越多的計算能力投入到所有設備中,並且它們的價值越來越多來自軟體,這似乎與未來非常相關。
如果您想要甚至可以遠端稱為密碼學的東西,您應該定義您的安全模型。鑑於您使用的是商品板,是什麼阻止了您的軟體在這些板上的不同板上執行?顯然沒有,因為這就是您生產設備的方式。因此,您真正擁有的唯一選擇是首先確保您的軟體安全。
我實際上認為解決這個問題是許多設備首先是物聯網設備的原因。它允許您將軟體的重要部分放在伺服器上,並在使用者想要使用它時對其進行身份驗證。假設這是
**選項 1:**將部分軟體保留在您自己的硬體上並限制訪問。
現在,還有許多其他技術正在以某種方式試圖實現您的目標……
選項 2: 受信任的執行環境(小心,那篇文章基本上是廣告)一種保護您的軟體不被從設備中提取的方法。像英特爾的 SGX 或 ARM Trustzone 之類的東西。
**選項3:**弄得一團糟
以下組合可能會為您提供足夠的安全性:
- 白盒加密:隱藏您的軟體可能正在使用的加密密鑰。Afaik 所有的計劃都被打破了。但是,不乏試圖將其出售給您的公司。(可悲的是,它甚至沒有自己的維基百科文章。)
- PUF:為了實現硬體綁定(這是使某些東西只在您的板上執行的常用術語),您需要使用一些難以偽造的硬體屬性,例如打開設備時 RAM 的初始狀態。
- 程式碼混淆:在您的程式碼中添加不必要的抽象和重定向等,以便有人無法通過合理的努力對其進行逆向工程並刪除您設置的所有保護措施。
選項 2 似乎更可靠,但這些組合可能有助於減輕足夠多的攻擊,讓您在沒有 TEE 或線上執行操作選項的情況下自信地部署。