日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux下一種ELF文件代碼簽名驗(yàn)證機(jī)制

當(dāng)入侵者在系統(tǒng)取得一定權(quán)限后 , 他們通常會(huì)在系統(tǒng)中植入惡意代碼 , 并利用這些代碼為日后的入侵提供方便 。增加或修改 ELF 文件正是入侵者植入惡意代碼的常用途徑 。本文將描述一種 Linux 下 ELF 文件的代碼簽名及驗(yàn)證機(jī)制的設(shè)計(jì)與實(shí)現(xiàn) , 這種機(jī)制能有效防止基于 ELF 文件的惡意代碼的入侵 , 并同時(shí)提供了靈活的分級(jí)驗(yàn)證機(jī)制 , 使系統(tǒng)在安全性與效率方面取得最佳平衡 。
1、引言
隨著 Linux 的不斷發(fā)展 , 已有越來(lái)越多的人開(kāi)始推廣和使用 Linux , 其安全性也受到越來(lái)越多的挑戰(zhàn) 。ELF(Executable and Linkable Format)[1] 作為 Linux 下最主要的可執(zhí)行二進(jìn)制文件格式 , 自然成了病毒及各種惡意代碼的攻擊目標(biāo) 。事實(shí)證明 , 有不少 Linux 下的病毒程序就是通過(guò)直接修改 ELF 文件的方法來(lái)實(shí)現(xiàn)入侵的 [10] 。傳統(tǒng)的 Unix 系統(tǒng)(包括 Linux)并不會(huì)對(duì)執(zhí)行的代碼進(jìn)行完整性和合法性檢測(cè) , 因而讓很多病毒程序以及木馬程序有機(jī)可乘 。
代碼簽名驗(yàn)證是一種能夠有效的防止病毒以及其他惡意代碼入侵的方法 。對(duì)于 Linux 下的代碼簽名驗(yàn)證機(jī)制 , 早幾年就已經(jīng)有人研究 。文[2]提出了在安裝時(shí)進(jìn)行簽名驗(yàn)證的方法 , 并通過(guò)修改 chmod 系統(tǒng)調(diào)用控制文件的可執(zhí)行屬性 , 但這種方法無(wú)法檢測(cè)程序安裝后對(duì)代碼的任何修改 , 有一定的局限性 。文 [3] [4] [5] 描述的都是在執(zhí)行時(shí)進(jìn)行簽名驗(yàn)證的方法 , 其中 [4] [5] 采用了緩存已驗(yàn)證文件的策略 , 使效率較 [3] 有很大提高 。但是 , 它們將所有 ELF 文件 "一視同仁" , 沒(méi)有主次輕重之分 , 缺少靈活性 。
本文提出了一種改進(jìn)的基于 ELF 文件格式的代碼簽名驗(yàn)證機(jī)制 , 通過(guò)提供更加靈活的分級(jí)驗(yàn)證方式 , 進(jìn)一步提高驗(yàn)證效率 , 并且使系統(tǒng)在安全性與效率方面取得平衡 。
2、簽名驗(yàn)證原理
我們采用完全符合 PKCS [8] 系列標(biāo)準(zhǔn)的簽名驗(yàn)證算法 , 并兼容所有符合 X509 格式的證書(shū) , 以 RSA [6 ][7] 非對(duì)稱(chēng)密鑰體制為基礎(chǔ)來(lái)完成對(duì) ELF 文件代碼的簽名驗(yàn)證 。
2.1 簽名
設(shè)被簽名的數(shù)據(jù)為 m , 其數(shù)字摘要為 h 。

h = Hash(m)
其中 , Hash 是哈希單向散列算法 , 如 MD5、SHA-1 等 。
設(shè) p , q , d 為簽名者的私有數(shù)據(jù) , 他們都包含在簽名者的私鑰 SK 中;n , e 為簽名者的公開(kāi)數(shù)據(jù) , 并且都包含在簽名者的公鑰 PK 中 。這些數(shù)據(jù)滿(mǎn)足以下要求:
n = pq 其中 p ≠ q , p q 均為大素?cái)?shù);e,d∈RZn 并且 e = d-1 , ed ≡ 1mod(n);這里 , (n) = (p-1)(q-1) 。那么 , 使用簽名者私鑰對(duì) h進(jìn)行加密即可得到簽名值 s:

s = E(x) = hdmod n
2.2 驗(yàn)證
設(shè)被驗(yàn)證數(shù)據(jù)為m′ , 其數(shù)字摘要為h′ 。

h′ = Hash(m′)
假設(shè)我們已經(jīng)取得簽名者的真實(shí)公鑰PK , 然后我們使用PK中的公開(kāi)數(shù)據(jù)e對(duì)s進(jìn)行解密計(jì)算 , 得到還原的數(shù)字摘要h′′ , 這里h′′就相當(dāng)于是○1式中的h 。

h′′ = D(s) = se mod n
現(xiàn)在 , 我們比較 h′和 h′′是否完全相同 。如果相同則驗(yàn)證通過(guò) , 否則驗(yàn)證失敗 。
3、設(shè)計(jì)與實(shí)現(xiàn)
為了便于描述 , 我們引入以下幾個(gè)基本概念: 1. 完全摘要值--指對(duì) ELF 文件的所有數(shù)據(jù)以及簽名相關(guān)數(shù)據(jù)計(jì)算出來(lái)的摘要值; 2. 不完全摘要值--指對(duì) ELF 文件的一部分重要數(shù)據(jù)(主要是 ELF 文件頭)以及簽名相關(guān)數(shù)據(jù)計(jì)算出來(lái)的摘要值; 3. 完全簽名值--指對(duì)完全摘要值加密所得到的簽名值; 4. 不完全簽名值--指對(duì)不完全摘要值加密所得到的簽名值; 5. 系統(tǒng)驗(yàn)證級(jí)別--指系統(tǒng)級(jí)的驗(yàn)證級(jí)別 , 它適用于系統(tǒng)中所有的 ELF 文件; 6. 文件驗(yàn)證級(jí)別--指單個(gè) ELF 文件的驗(yàn)證級(jí)別 , 它只適用于指定的某個(gè) ELF 文件 。簽名相關(guān)數(shù)據(jù)是指原始文件大小、簽名者公鑰標(biāo)識(shí) ID、簽名算法、簽名時(shí)間以及簽名者基本信息等數(shù)據(jù) 。3.1 簽名策略 對(duì) ELF 文件的簽名是通過(guò)簽名工具完成的 , 與操作系統(tǒng)核心無(wú)關(guān) , 同時(shí)也和平臺(tái)無(wú)關(guān) 。簽名過(guò)程完全遵循第二節(jié)中所描述的標(biāo)準(zhǔn)和原理 。首先 , 我們通過(guò) ○1 式計(jì)算得到兩種摘要值:不完全摘要值(hpart)和完全摘要值(hcomp) 。然后再通過(guò) 2 式使用簽名者私鑰(SKsign)加密摘要值 , 從而得到兩種簽名值:不完全簽名值(spart)和完全簽名值(scomp) 。最后 , 我們將不完全簽名值和完全簽名值按照固定的格式組合在一起 , 并放在被簽名文件的末尾 。如圖 3-1 所示(括號(hào)中的數(shù)字表示該字段所占字節(jié)數(shù)) 。圖 3-1 代碼簽名過(guò)程及簽名值存放3.2 驗(yàn)證策略 對(duì)被執(zhí)行 ELF 文件簽名值的驗(yàn)證是根據(jù)"系統(tǒng)驗(yàn)證級(jí)別"和該文件的 "文件驗(yàn)證級(jí)別" 二者進(jìn)行的 。"文件驗(yàn)證級(jí)別" 是為單個(gè)文件設(shè)置的驗(yàn)證級(jí)別 , 共分為 3 個(gè)級(jí)別 , 分別由 0~2 表示 。"文件驗(yàn)證級(jí)別"保存在每個(gè)文件的 inode 節(jié)點(diǎn)標(biāo)志中 , 系統(tǒng)管理員可以根據(jù)需要設(shè)置文件的驗(yàn)證級(jí)別 "系統(tǒng)驗(yàn)證級(jí)別" 分為四級(jí) , 分別由 0~3 表示 。"系統(tǒng)驗(yàn)證級(jí)別" 通過(guò) PROC 文件系統(tǒng)來(lái)進(jìn)行控制 , 可以由管理員根據(jù)需要進(jìn)行設(shè)置 。3.3 驗(yàn)證算法 當(dāng)用戶(hù)請(qǐng)求執(zhí)行某個(gè) ELF 文件時(shí) , 系統(tǒng)將根據(jù)圖 3-2 所示的流程來(lái)判斷如何驗(yàn)證該文件的簽名值 。為了提高系統(tǒng)效率 , 我們將分別為已驗(yàn)證過(guò) "不完全簽名值" 和 "完全簽名值" 的 ELF 文件維護(hù)相應(yīng)的緩存 , 當(dāng)再次請(qǐng)求執(zhí)行這些文件時(shí) , 就可以不必重復(fù)驗(yàn)證其簽名值了 。圖 3-2:系統(tǒng)級(jí)簽名值驗(yàn)證機(jī)制圖 3-2 中 , "驗(yàn)證不完全簽名值" 和 "驗(yàn)證完全簽名值" 兩項(xiàng)都是整個(gè)驗(yàn)證過(guò)程的重要步驟 。簽名值的驗(yàn)證與簽名值的生成相對(duì)應(yīng) , 驗(yàn)證時(shí)首先要根據(jù)相應(yīng)的數(shù)據(jù)通過(guò) 3 式計(jì)算出摘要值(h′part 或 h′comp) , 然后再使用簽名者的公鑰(PKsign)通過(guò) ○4 式解密相應(yīng)的簽名值 , 得到的對(duì)應(yīng)的摘要值(h′′part或h′′comp) 。最后比較 h′和h′′是否完全一致 , 一致則驗(yàn)證通過(guò) , 不一致則驗(yàn)證失敗 。

推薦閱讀