最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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 模型加密雜談的評論 (共 條)

分享到微博請遵守國家法律
虞城县| 剑河县| 柏乡县| 始兴县| 聊城市| 湟源县| 铜鼓县| 尼木县| 长海县| 铜鼓县| 安新县| 扶余县| 平乐县| 大悟县| 沅江市| 镇巴县| 留坝县| 唐海县| 惠水县| 通州市| 门源| 广灵县| 武宁县| 肥西县| 曲沃县| 湘潭县| 汉源县| 渑池县| 莱州市| 曲松县| 台南县| 长汀县| 白朗县| 靖边县| 民和| 乐都县| 闽清县| 徐汇区| 拉萨市| 湾仔区| 毕节市|