iT邦幫忙

0

可以讓多個設備共用解密私鑰嗎

  • 分享至 

  • xImage

我有一批物聯網終端設備,目前想為它們加上軟體更新功能。為了減少設計複雜度,我想直接將更新檔放在公開的網路位置,並對更新檔加入下列兩個手段確保安全。

1.簽章:用以確保更新檔出自於我,消除檔案被竄改或替換為有害的程式。
2.加密:用以確保非相關人士取得檔案時無法利用甚至是進行反向工程。

簽章的部分基本上只要在設備佈署前預先把我的驗證公鑰放入設備就好,這部分沒有什麼問題。但關於加密的部分,如果我想讓所有設備共用同一個加密的更新檔,我就得把解密用的私鑰放入所有設備,這表示所有設備共用同一把私鑰,請問這樣做是合理的嗎?

如果不合理,請問像這種使用情境有更好的做法嗎?

謝謝。

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2023-08-08 10:11:32 檢舉
這不合理吧。
裝置私鑰共用一把,那你不如就直接對稱式加密了...

你要這樣做建議就不要用簽章了,在出廠時維護裝置ID列表,第一次使用時裝置產生金鑰對,公鑰往伺服器派送,並記錄裝置ID,更新時裝置送ID,伺服器加密,派送後給裝置用私鑰解密。
非常謝謝您的回覆。
我一開始也有考慮過這樣的作法,但由於這功能是被追加的,如果要另外建置能夠產生不同裝置所需加密檔的伺服器,開發跟維運成本會是個問題,所以才會衍伸出如同內文所述的低成本低技術作法,只需要一個URL固定的網路儲存空間就可以解決。
froce iT邦大師 1 級 ‧ 2023-08-08 13:09:57 檢舉
要安全總是要投入成本的,你只要放在靜態伺服器的話我個人是建議對稱式加密或照你現況就好。
您說的是,仔細閱讀過資料,只要採用的演算法跟參數正確,對稱式加密其實就已經足夠安全了。
我一開始就被得使用非對稱式加密的想法束縛了,謝謝您的解惑。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
黃彥儒
iT邦高手 1 級 ‧ 2023-08-08 11:11:47

可以阿,每個裝置都有自己的私鑰且不可匯出,那麼更新時根據來下載的是哪一台裝置,系統後端直接加密就好,或是需要客戶端的驗證才能下載更新檔案
還可以控制哪些裝置可更新哪些不可以

您似乎有點誤會了,因為我沒辦法架設有運算功能的伺服器,所以系統後端無法為不同的裝置產生個別的加密檔案喔。

0
淺水員
iT邦大師 6 級 ‧ 2023-08-08 11:49:22

如果是這樣呢?

  1. 更新檔先對稱加密(密鑰由亂數產生)
  2. 密鑰用各設備的公鑰各自加密,做成一張「設備ID => 用公鑰加密後的密鑰」列表
  3. 把加密的更新檔與第二點的列表都放在網路上
froce iT邦大師 1 級 ‧ 2023-08-08 13:11:59 檢舉

2這張表...裝置多的話會很麻煩喔。

淺水員 iT邦大師 6 級 ‧ 2023-08-09 12:51:21 檢舉

他上傳前也是用程式來加密的吧?
使用上應該不會比較麻煩
開發時要多一點步驟而已

不過既然想好要用對稱加密了就這樣吧
我只是想說如果要用非對稱的話,可以把大檔案的加密成本轉移到對稱加密的密鑰上

froce iT邦大師 1 級 ‧ 2023-08-10 13:36:13 檢舉

我只是想說如果要用非對稱的話,可以把大檔案的加密成本轉移到對稱加密的密鑰上

這方法是真的不錯
我會提到2那張表其實只是光想到每次裝置一增多的時候都要加密,就覺得很麻煩,裝置多起來這張表可是要不斷成長的,而且看這發問,應該算是IOT設備的開發商問的,可以預期這個表到最後一定要改成資料庫去做才比較實在。

我要發表回答

立即登入回答