国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TensorRT 模型加密雜談

2023-08-09 19:38 作者:laugh12321  | 我要投稿

在大多數(shù)項目交付場景中,經(jīng)常需要對部署模型進行加密。模型加密一方面可以防止泄密,一方面可以便于模型跟蹤管理,防止混淆。

由于博主使用的部署模型多為TensorRT格式,這里以TensorRT模型為例,講解如何對模型進行加密、解密以及推理加密模型。

代碼倉庫:https://github.com/laugh12321/TRTCrypto

加密算法的選擇和支持的庫

Crypto++ 是C/C++的加密算法庫,基本上涵蓋了市面上的各類加密解密算法,包括對稱加密算法(AES等)和非對稱加密算法(RSA等)。

兩種算法使用的場景不同,非對稱加密算法一般應用于數(shù)字簽名和密鑰協(xié)商的場景下,而對稱加密算法一般應用于純數(shù)據(jù)加密場景,性能更優(yōu)。在對模型的加密過程中使用對稱加密算法。

簡易版本

以AES-GCM加密模式為例,編寫一個檢測的加密、解密方法

上述代碼,使用AES-CBC加密模式對數(shù)據(jù)進行加密、解密,其中key和iv為加密算法的參數(shù),keySize為key的長度。

加密流程:

  1. 初始化加密器,設置key和iv

  2. 讀取文件內容并存儲在字符串data中

  3. 使用加密器對data進行加密,加密后的內容存儲在字符串cipher中

解密流程:

  1. 初始化解密器,設置key和iv

  2. 讀取加密后的文件內容并存儲在字符串cipher中

  3. 使用解密器對cipher進行解密,解密后的內容存儲在字符串recovered中

轉換為序列化格式

推理加密模型的方法有兩種,一種是將模型解密后保存為文件再進行推理,另一種是將模型解密后轉換為序列化格式,再進行推理。 很明顯第一種方式比較雞肋,因為每次推理都需要進行解密,而且解密后的模型文件也會暴露在外面,不安全。這里使用第二種方式,將模型解密后轉換為序列化格式進行推理。這里給出一個簡單的例子,將存儲解密數(shù)據(jù)的字符串recovered進行序列化。

上述代碼的返回值可以直接作為TensorRT的推理引擎的輸入。例如進行反序列化操作

使用MAC地址作為密鑰

一般情況下,我們只想讓客戶在指定的機器上運行模型,這時候就需要使用機器的唯一標識作為密鑰,這里使用MAC地址作為密鑰。

上述代碼,使用了不同的API獲取MAC地址,其中Windows使用GetAdaptersInfo函數(shù),Linux使用getifaddrs函數(shù)。

有了MAC地址,就可以將MAC地址轉換為密鑰,這里使用SHA256算法對MAC地址進行哈希,然后取前32個字節(jié)作為密鑰。

添加頭部信息

為了新的文件能夠被區(qū)分和可迭代,除了加密后的數(shù)據(jù)外還添加了頭部信息,比如為了判斷該文件類型使用固定的魔數(shù)作為文件的開頭;為了便于后面需求迭代寫入版本號以示區(qū)別;為了能夠在解密時判斷是否采用了相同的密鑰將加密時的密鑰進行SHA256計算后存儲;這三部分構成了目前加密后文件的頭部信息。加密后的文件包含頭部信息 + 密文信息。

上述代碼中,加密函數(shù)EncryptWithHeader中,首先計算密鑰的SHA256哈希值,然后將魔數(shù)、版本號、密鑰哈希值、密文依次拼接,然后使用AES-256-CBC算法加密,最后將頭部信息和密文拼接返回。解密函數(shù)DecryptWithHeader中,首先從密文中提取出頭部信息,然后使用密鑰哈希值驗證密鑰是否正確,最后使用AES-256-CBC算法解密密文。

參考資料

  • PaddleX-模型加密部署

  • MegEngine-模型加解密和打包

  • 《機器學習系統(tǒng):設計和實現(xiàn)》-模型的安全保護

  • Crypto++ GCM Mode


TensorRT 模型加密雜談的評論 (共 條)

分享到微博請遵守國家法律
沾化县| 武邑县| 会宁县| 沧州市| 乌什县| 台江县| 那坡县| 乌兰察布市| 莱阳市| 灌阳县| 靖江市| 桐乡市| 宝应县| 邳州市| 青冈县| 连山| 光山县| 凌源市| 元阳县| 平阴县| 光泽县| 谢通门县| 马边| 济源市| 苗栗县| 婺源县| 铁力市| 乌鲁木齐县| 安陆市| 南木林县| 延长县| 甘南县| 高雄县| 德安县| 肃宁县| 凤台县| 花莲县| 溧水县| 九寨沟县| 宜兰县| 张家口市|