2009-07-17 64 views
4

我需要在嵌入式協議棧中實現運行時授權。如何實施運行時授權?

我已經對如何實現這一點有了一個想法,但我有興趣聽到任何替代方法或任何需要注意的缺陷。您可以假設每個運行堆棧的設備都有一個唯一的硬編碼標識符(等同於MAC地址)並可以訪問某些非易失性存儲器。

我的計劃方法是提供一個通過散列函數從製造商應該存儲在非易失性存儲中的設備標識符中生成的許可證密鑰。堆棧將使用相同的散列函數對標識符進行散列處理,並在運行之前驗證它是否與存儲的鍵匹配。

回答

3

您必須確保攻擊者無法輕易重新計算許可證。這樣做的最明顯的方法是使用您的私鑰將許可證作爲設備標識符的簽名,然後讓應用程序使用將嵌入軟件中的公鑰對其進行驗證。

您還需要確保軟件沒有被篡改,但這完全是另一回事。

+0

順便說一句 - 我最近不得不實施一個運行時許可證,雖然在我的情況下,它並沒有綁定到特定的硬件。我的解決方案是將所有許可證信息編碼爲JSON對象,然後使用我的服務器的私鑰(OpenSSL調用RSA_private_encrypt)對其進行加密。這基本上是使用簽名的明文作爲整個消息而不是散列進行簽名,從而產生一個不透明的比特字符串,它比發送明文和簽名哈希中的數據更小且更易於傳輸和驗證。 – Guss 2017-10-11 12:18:53