鄭虎
(新疆財經(jīng)大學,新疆 烏魯木齊 830011)
計算機取證的任務(wù)是解決各種計算機犯罪案件以及傳統(tǒng)案件中涉及的計算機及相關(guān)系統(tǒng)的取證問題[1]。隨著計算機及網(wǎng)絡(luò)的普及程度不斷提高,各種利用計算機從事的犯罪活動越來越多,計算機取證實踐需求十分迫切,該領(lǐng)域的研究與實踐受到越來越廣泛的關(guān)注。
近年來,網(wǎng)絡(luò)空間安全、信息安全、公安及保密等相關(guān)專業(yè)都已開設(shè)《計算機取證技術(shù)》課程,并取得了很多進展[1]。公安類院校已將該課程作為信息網(wǎng)絡(luò)安全監(jiān)察專業(yè)的專業(yè)必修課,越來越多的工科院校結(jié)合信息安全、網(wǎng)絡(luò)空間安全專業(yè)的課程體系,將《計算機取證技術(shù)》課程列為專業(yè)選修課。
當前《計算機取證技術(shù)》課程建設(shè)過程中,存在以下問題:
(1)教學資源匱乏。由于計算機取證是一門新興的學科,課程缺乏相對權(quán)威的教材,各授課教師根據(jù)自己授課的側(cè)重點選擇不同的教學資料,未能形成規(guī)范、權(quán)威的課程體系,在各大出版社、各慕課平臺很難找到相應(yīng)的教學教輔資料,各學校也未有公開的課程大綱、課程教案等資料。
(2)課程教學以理論講解為主。計算機取證技術(shù)本應(yīng)是一門實踐性很強的課程,但是由于缺少足夠的教學資料支持,課程在開設(shè)過程中,多以理論講解為主。授課教師側(cè)重對計算機取證概念、方法、規(guī)范和相關(guān)計算機犯罪案例等內(nèi)容進行講解,學生缺少足夠的實踐教學,從而造成對課程理解的欠缺。
(3)缺乏配套的實驗環(huán)境。由于計算機取證技術(shù)的本身的高科技性、動態(tài)性、隱蔽性等特點,加之計算機取證平臺的專業(yè)性、保密性等要求,學校很難提供課程相應(yīng)的實驗環(huán)境。以往該課程的實踐教學環(huán)節(jié),多是借助信息安全實驗平臺的相關(guān)工具進行,由于與課程的相關(guān)性較低,學生普遍反映較差。
綜合以上問題,本教學案例力求通過以下方法對存在問題進行改善:
(1)以專題形式授課。由于計算機取證是一門綜合度很高的學科,要想把整個學科內(nèi)容在一學期內(nèi)全部講完是不現(xiàn)實的。為避免學生在學習過程中出現(xiàn)“囫圇吞棗”的情況,建議將課程的核心內(nèi)容摘出,以專題的形式進行講解。專題少而精,力求使學生能夠充分理解和掌握。
(2)注重基礎(chǔ)理論的講解。計算機犯罪形式日新月異,計算機取證技術(shù)不斷發(fā)展,計算機取證工具更新日益頻繁。如果課程中只介紹取證工具的使用,很容易造成學生知識的“過時”。在變化中不變的就是基礎(chǔ)的理論與原理。因此在授課中,應(yīng)注重對計算機網(wǎng)絡(luò)、計算機體系結(jié)構(gòu)、密碼學等基礎(chǔ)理論的講解,讓學生更多地去理解計算機取證技術(shù)的原理。
(3)加大課程實踐比重。“紙上學來終覺淺”,為了克服學生聽而不練的情況,在課程學時分配上,應(yīng)加大了課程實踐教學的比重。由于缺少配套的實驗環(huán)境,在課程理論講解的基礎(chǔ)上,引導(dǎo)學生使用python語言,根據(jù)計算機取證原理,自己動手開發(fā)取證小工具,以加深對課程內(nèi)容的理解。
本文將以“單向文件哈希系統(tǒng)的分析與設(shè)計”為例,介紹對《計算機取證技術(shù)》課程的教學思路。
專題名稱:單向文件哈希系統(tǒng)的分析與設(shè)計
總課時:8課時
課時分配:
理論授課(2課時)
實踐授課:系統(tǒng)分析與設(shè)計、模塊詳細設(shè)計(3課時)
實驗課程:系統(tǒng)實現(xiàn)、代碼調(diào)試、成果展示(3課時)
理論授課主要講授兩方面內(nèi)容:計算機取證中哈希算法的應(yīng)用、哈希算法的原理。
在課程引入環(huán)節(jié),重點回顧計算機取證的過程:受理案件、保護涉案現(xiàn)場、收集電子證據(jù)、固定與保管電子證據(jù)、分析電子證據(jù)、證據(jù)呈堂、歸檔電子證據(jù)。詳細對計算機取證過程中每個步驟需要完成的工作進行講解,然后引出本次專題的授課重點內(nèi)容——哈希算法在計算機取證中的應(yīng)用。
首先介紹電子數(shù)據(jù)的來源與電子數(shù)據(jù)的特點。電子數(shù)據(jù)的來源有多種,最普遍的是分為計算機證據(jù)和網(wǎng)絡(luò)證據(jù)。電子數(shù)據(jù)具有不穩(wěn)定性、易失性等特點,因此獲取電子數(shù)據(jù)后,務(wù)必要對電子數(shù)據(jù)妥善保存。針對不同類型的電子數(shù)據(jù),介紹電子數(shù)據(jù)的保存方法、保存原則、保存的技術(shù)。然后引出哈希算法在實現(xiàn)電子數(shù)據(jù)完整性驗證的應(yīng)用需求。
接著介紹計算機取證中哈希算法的應(yīng)用。為了保護電子的數(shù)據(jù)的完整性,以及對電子數(shù)據(jù)進行唯一性鑒別,在收集電子證據(jù)、固定與保管電子證據(jù)、分析電子證據(jù)、證據(jù)呈堂、歸檔電子證據(jù)等階段都會使用到哈希技術(shù)。
引入“熊貓燒香”實際案例,說明哈希算法在實際計算機取證過程中的應(yīng)用場景(見表1)。
表1 “熊貓燒香”案件分析
2.4.1 哈希算法的概念
Hash,一般翻譯做哈希、散列,是把任意長度的輸入通過散列算法變換成固定長度的輸出,該輸出就是散列值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數(shù)[2]。
2.4.2 哈希算法的基本特征
(1)算法輸入為二進制數(shù)據(jù)流;
(2)算法的目的是生成一個消息摘要;
(3)單向性:僅僅使用摘要來確定產(chǎn)生這個摘要的二進制輸入數(shù)據(jù)是不可行的;
(4)構(gòu)造一個新的,能生成給定消息摘要的二進制輸入數(shù)據(jù)是不可行的;
(5)改變二進制輸入數(shù)據(jù)中的任意哪怕一個比特,也會產(chǎn)生不同的消息摘要;
(6)找到能產(chǎn)生相同摘要的兩個完全不同的二進制數(shù)據(jù)流是不可行的。
2.4.3 哈希算法的主要實現(xiàn)方式
MD5:MD5報文摘要算法是由Ron Rivest設(shè)計的單項散列函數(shù),采用單向Hash函數(shù)將需加密的明文按512比特進行分組,生成長度128比特的密文[3]。
SHA:SHA算法由美國國家標準技術(shù)研究所與美國國家安全局一起設(shè)計并提出的。該算法的輸入為任意小于比特長度的報文,輸出為160位的散列值,同樣以512比特的分組處理[4]。
2.4.4 MD5算法的不足
2004年,中國山東大學的王小云教授在美國加州舉辦的密碼學會議上宣布破解了MD5算法。利用她的技術(shù),可以在幾個小時內(nèi)就找到一對碰撞,極端情況下,幾秒鐘就可以找到一對碰撞[5]。
實踐課程主要根據(jù)前期理論授課內(nèi)容,引導(dǎo)學生獨立設(shè)計并實現(xiàn)一個基于python語言的單向文件哈希系統(tǒng)。授課內(nèi)容包括:系統(tǒng)需求分析、系統(tǒng)模塊設(shè)計、python庫介紹等。完成以上內(nèi)容后,指導(dǎo)學生使用python語言,實現(xiàn)一個單向文件哈希系統(tǒng),并以小組為單位進行代碼調(diào)試與成果展示[6]。
完成一個取證應(yīng)用程序,能夠遍歷指定的文件系統(tǒng),為遍歷的每個文件生成單向哈希值。除了生成單向哈希值,應(yīng)用程序應(yīng)該收集每個文件的元數(shù)據(jù),如:文件屬性、文件名、文件路徑等。應(yīng)用程序能以標準輸出文件格式提供結(jié)果,以滿足靈活性,能夠提供多種哈希算法選擇,能夠支持錯誤處理和日志。
系統(tǒng)應(yīng)包含以下功能模塊:
Main函數(shù)。程序入口,設(shè)定程序運行環(huán)境,指定程序基礎(chǔ)配置。
walkPath函數(shù)。文件遍歷模塊,可對制定目錄下的文件目錄進行遍歷,獲取文件內(nèi)容及文件詳細信息。
HashFile函數(shù)??筛鶕?jù)用戶指定hash算法,對輸入文件進行hash計算,得到文件摘要值。
CSVwriter類。結(jié)果呈現(xiàn)工具,可以CSV文件形式對系統(tǒng)操作結(jié)果進行記錄并展示。
日志記錄。根據(jù)用戶設(shè)置級別,記錄系統(tǒng)操作日志。
OS庫。OS庫定義多種操作系統(tǒng)接口,提供遍歷路徑的關(guān)鍵方法,提供了一種使用與操作系統(tǒng)相關(guān)的功能的便捷式途徑。
Hashlib庫。針對不同的安全哈希和消息摘要算法實現(xiàn)了一個通用的接口,包括SHA1,SHA224,SHA256, SHA384,SHA51算法,以及RSA的MD5算法。
CSV庫。實現(xiàn)CSV格式表單數(shù)據(jù)的讀寫。其提供了兼容Excel的文件讀寫的功能。
Logging庫。為應(yīng)用與庫實現(xiàn)了靈活的事件日志系統(tǒng)的函數(shù)與類。
哈希算法是計算機取證中應(yīng)用最廣泛的算法之一,本次課程通過理論與實踐相結(jié)合的方式,通過案例使學生了解哈希算法在計算機取證中的使用場景,在掌握哈希算法概念的基礎(chǔ)上,對哈希算法的實現(xiàn)原理與實現(xiàn)方法進行更加深入的理解。課程設(shè)計中,實踐課時占用總體課時3/4的時間,以課程實驗任務(wù)的形式,鍛煉了學生的實際操作能力,更加深了學生對理論知識的理解,并初步灌輸了軟件工程學的思想,為學生后期進行綜合課程實踐奠定了基礎(chǔ)。