Linux下基於簽名技術的軟體保護分析

2022-06-08 06:06:08 字數 1239 閱讀 2398

根據我組成員(@一夕思醉,@2018/7/11)的熱烈討論,我們對該題目有了乙個大致的了解。

題目要求:

對於linux下給定的elf可執行程式、自行開發簽名工具對程式的**段(load segment)首先進行雜湊,然後對雜湊值進行簽名,簽名資料應作為單獨的節(section)附加到原elf可執行程式的尾部。同時,應開發驗證軟體並加入作業系統,在執行任何elf可執行程式前對elf檔案進行驗證,若elf可執行程式沒有被簽名或者簽名驗證失敗則應停止執行本程式,若簽名驗證成功則可以正常執行。

簽名後的elf可執行程式可正常執行在帶有簽名驗證的linux作業系統上,以及不帶有簽名驗證機制的linux作業系統上;

簽名後的elf可執行程式中的簽名資料節應可通過readelf與objdump等程式解析得到正確的值;

執行elf可執行程式的方式應保持不變,不得通過其他程式執行elf可執行程式的方式驗證簽名;

簽名驗證所需要的公鑰、證書以及驗證程式可以預先設定在作業系統中;

本題不考察選手對加密演算法的實現,因此選手可以選擇開源的加密軟體庫進行加密,但是對應強度應不低於rsa2048;

實現程式主要涉及對elf可執行格式的理解、linux作業系統下程式執行的機制的理解,以及對加密演算法的運用。

分析:分為幾個步驟。第一步要做的是環境配置,這道題目對環境的要求還是比較嚴苛的,限定使用c語言和uos系統。

第二步:實現對elf檔案的程式解析和雜湊。

第三步:加入簽名程式,對雜湊值按照一定的規律進行記錄,並將簽名資料作為單獨的節加入到程式末尾

第四步:加入驗證程式,通過各種方法對簽名進行驗證,證明程式合法且未被篡改。

第五步:對判斷結果進行處理,若判斷結果為通過,執行,若判斷結果為不通過,則停止執行

大致可以分為這麼五個部分

對涉及到的陌生詞彙進行解讀:rsa2048(rsa為加密方式,2048為加密程度)

elf檔案:

在電腦科學中,是一種用於二進位制檔案、可執行檔案、目標**、共享庫和核心轉儲格式檔案

雜湊:hash,一般翻譯做雜湊、雜湊,或音譯為雜湊,是把任意長度的輸入通過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。

現在面臨的問題:1.沒有環境

2.c語言掌握程度並不是很好 3.簽名與驗證系統的資訊匹配較難實現。4.對elf程式的識別以及雜湊存在技術問題。

Linux 下apk檔案實現簽名

簽名的意義 為了保證每個應用程式開發商合法id,防止部分開放商可能通過使用相同的package name來混淆替換已經安裝的程式,我們需要對我們發布的apk檔案進行唯一簽名,保證我們每次發布的版本的一致性 如自動更新不會因為版本不一致而無法安裝 apk檔案簽名主要分為三個步驟,證書的建立 簽名生成 ...

基於Linux下的dhcp服務

dhcp伺服器動態獲得位址的簡要的工作原理 服務端通過廣播位址向dhcp伺服器傳送請求,dhcp伺服器接受到請求,將沒有租出的ip位址傳送給客戶端,響應給客戶端乙個dhcp offer封包,同時返還的dhcp discover封包內包含mac,並且有乙個 xid 編號來辨別該封包,客戶端根據需要接受...

基於Linux下的重置密碼

我們在實際的操作中總是會出現密碼忘記的情況,接下來演示重置密碼操作。root密碼忘記 1.重新啟動系統 2.在系統啟動階段按上下健停止系統系統引導 3.選擇啟動引導標題,按 e 進行編輯 4.找到linux16引導條目這一行,從這行最後刪除到ro選項,並把ro改為rw,然後新增rd.break選項 ...