System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及計算機,具體提供一種在risc-v系統上的elf文件簽名及驗證方法。
技術介紹
1、risc-v架構作為一種開放標準的指令集架構,在計算機體系結構領域內取得了顯著的進展。從嵌入式系統到高性能計算,risc-v的靈活性和可定制性使成為各種應用場景的理想選擇。然而,隨著risc-v在我國各個領域的廣泛應用,確保risc-v系統的安全性和可信度變得至關重要。其中,對risc-v可執行文件(elf文件)進行簽名和驗證以確保文件的完整性和來源可信成為一項關鍵任務。
2、risc-v雖然已經吸引眾多的廠商加入進來,但目前還處于起步階段,各種技術還不太成熟,現有的簽名驗證工具在處理risc-v的elf文件上仍存在以下問題:
3、①傳統簽名驗證方法不適用于risc-v架構:傳統的elf文件簽名和驗證方法通?;诜莚isc-v體系結構和標準,如x86。這些方法不充分考慮risc-v的特殊要求和架構差異,因此在risc-v系統上運行時可能會出現兼容性和性能問題。
4、②安全性不足:由于risc-v的開放性和可定制性,該架構存在更多的安全威脅和漏洞風險。現有技術未能提供足夠的安全性保障,無法有效防止elf文件篡改和惡意代碼注入的潛在問題。
5、③缺乏可信度驗證機制:確保risc-v系統中的elf文件來源可信是至關重要的,但傳統方法未提供充分的可信度驗證機制,缺乏對文件完整性和來源的嚴格驗證。
6、④性能和效率問題:現有的elf文件簽名和驗證方法可能在risc-v系統上引入額外的
7、因此,在elf文件的簽名和驗證方面還沒有一款穩定可靠的工具能夠使用。
技術實現思路
1、為了克服上述缺陷,提出了本專利技術,解決了現有在risc-v系統中的elf文件簽名驗證方法具有安全性不足、缺乏可信度驗證機制、性能和效率交底的技術問題。
2、第一方面,本專利技術提出一種在risc-v系統上的elf文件簽名方法,所述簽名方法包括依次執行的以下步驟:
3、獲取待簽名的elf文件,通過elf文件的絕對路徑提取出elf文件名,并根據elf文件名生成對應的私鑰文件名及公鑰文件名,分別在指定路徑創建私鑰文件和公鑰文件,根據私鑰文件名為私鑰文件進行命名,根據公鑰文件名為公鑰文件進行命名;
4、讀取elf文件末尾的8個字節數據,判斷elf文件是否已經簽名;
5、當elf文件未簽名時,對所述elf文件進行簽名;當elf文件為已簽名時,提示用戶該elf文件已簽名并獲取用戶選擇的是否重新簽名指令,如果獲取重新簽名指令則刪除原有簽名然后對所述elf文件進行簽名,如果獲取不重新簽名指令則結束流程;
6、對elf文件進行簽名;
7、將公鑰文件轉換成內核密鑰環支持的格式并保存到內核密鑰環中。
8、進一步,所述讀取elf文件末尾的8個字節數據,判斷elf文件是否已經簽名包括依次執行的以下步驟:
9、讀取elf文件最后8個字節數據并將其轉換為整數;
10、將轉換后的整數值與256進行對比,相等則elf文件為已簽名,否則elf文件為未簽名。
11、進一步,所述對elf文件進行簽名包括依次執行的以下步驟:
12、創建evp_pkey_ctx上下文和evp_pkey結構,根據evp_pkey_ctx上下文生成rsa私鑰和rsa公鑰,并存儲在evp_pkey結構中;
13、rsa私鑰通過pem_write_privatekey函數寫入上述私鑰文件中,rsa公鑰通過pem_write_pubkey函數寫入上述公鑰文件中;
14、將elf文件數據讀取到分配的內存中,使用sha256函數對讀取的elf文件數據進行sha-256散列計算,將計算后的哈希數據存儲在臨時數組中;
15、獲取rsa私鑰,并根據rsa私鑰對臨時數組中的哈希數據進行簽名;
16、將數字簽名追加到elf文件末尾,將簽名長度數據8個字節寫入elf文件末尾,完成簽名。
17、進一步,所述根據evp_pkey_ctx上下文生成rsa私鑰和rsa公鑰,包括依次執行的以下步驟:
18、使用evp_pkey_keygen_init函數對evp_pkey_ctx上下文其進行初始化;
19、使用evp_pkey_keygen函數生成rsa密鑰對,所述rsa密鑰對包括rsa私鑰和rsa公鑰。
20、進一步,所述獲取rsa私鑰,并根據rsa私鑰對臨時數組中的哈希數據進行簽名,包括依次執行的以下步驟:
21、打開所述私鑰文件,使用pem_read_privatekey函數獲取rsa私鑰并存儲在臨時變量pkey中,使用臨時變量pkey初始化evp_md_ctxevp相關結構上下文;
22、通過evp_digestsign函數,傳入null的臨時變量sig作為簽名緩沖區參數,獲取數字簽名的長度,并根據數字簽名長度為簽名緩沖區分配內存空間;
23、通過evp_digestsign函數,傳入非null的臨時變量sig作為簽名緩沖區參數,對臨時數組中的哈希數據進行簽名,簽名結果存儲在臨時變量sig指向的簽名緩沖區中。
24、第二方面,本專利技術提出一種在risc-v系統上的elf文件驗證方法,用在簽名方法之后,所述驗證方法包括依次執行的以下步驟:
25、使用kprobes技術解析sys_execve系統調用地址,使用ftrace技術將sys_execve系統調用掛鉤到自定義的hooked_sys_execve函數中;
26、當有elf文件要執行驗證時,進入hooked_sys_execve函數;
27、通過risc-v的a0寄存器中獲取系統調用的第一個參數,為待驗證的elf文件,并將a0地址轉換成字符指針;
28、通過字符指針獲取待驗證的elf文件的絕對路徑,從中提取elf文件名,并根據elf文件名得到公鑰文件名;
29、根據公鑰文件名在內核密鑰管理器中尋找對應的rsa公鑰,
30、如果找到rsa公鑰,則對elf文件進行驗證,驗證成功繼續執行elf文件,驗證失敗則會提示驗證失敗并結束,
31、如果未找到rsa公鑰,則提示未找到,繼續執行elf文件。
32、進一步,所述對elf文件進行驗證,包括依次執行的以下步驟:
33、從待驗證elf文件中獲取簽名數據;
34、選擇sha256哈希算法進行相應的初始化,使用crypto_ahash_digest計算哈希值并保存;
35、通過keyring_search函數從內核密鑰環中獲取相應公鑰;
36、初始化public_key_signature?本文檔來自技高網...
【技術保護點】
1.一種在RISC-V系統上的ELF文件簽名方法,其特征在于,所述簽名方法包括依次執行的以下步驟:
2.根據權利要求1所述的一種在RISC-V系統上的ELF文件簽名方法,其特征在于,所述讀取ELF文件末尾的8個字節數據,判斷ELF文件是否已經簽名包括依次執行的以下步驟:
3.根據權利要求1所述的一種在RISC-V系統上的ELF文件簽名方法,其特征在于,所述對ELF文件進行簽名包括依次執行的以下步驟:
4.根據權利要求3所述的一種在RISC-V系統上的ELF文件簽名方法,其特征在于,所述根據EVP_PKEY_CTX上下文生成RSA私鑰和RSA公鑰,包括依次執行的以下步驟:
5.根據權利要求3所述的一種在RISC-V系統上的ELF文件簽名方法,其特征在于,所述獲取RSA私鑰,并根據RSA私鑰對臨時數組中的哈希數據進行簽名,包括依次執行的以下步驟:
6.一種在RISC-V系統上的ELF文件驗證方法,所述驗證方法用在如權利要求1-5任一所述的簽名方法之后,其特征在于,所述驗證方法包括依次執行的以下步驟:
7.根據權利
...【技術特征摘要】
1.一種在risc-v系統上的elf文件簽名方法,其特征在于,所述簽名方法包括依次執行的以下步驟:
2.根據權利要求1所述的一種在risc-v系統上的elf文件簽名方法,其特征在于,所述讀取elf文件末尾的8個字節數據,判斷elf文件是否已經簽名包括依次執行的以下步驟:
3.根據權利要求1所述的一種在risc-v系統上的elf文件簽名方法,其特征在于,所述對elf文件進行簽名包括依次執行的以下步驟:
4.根據權利要求3所述的一種在risc-v系統上的elf文件簽名方法,其特征在于,所述根據evp_pkey_ctx上下...
【專利技術屬性】
技術研發人員:李卓珩,丁晨光,李劍峰,張超,毛周,張鐸,
申請(專利權)人:麒麟軟件有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。