文章編號:1672-5913(2008)12-0026-03
摘要:本文就信息安全學科實踐環節中綜合能力的培養進行了探索,首先分析了信息安全專業教學中實踐能力培養的重要性與面臨的問題,說明了編程能力提高在培養信息安全應用型人才的重要性,然后提出通過掌握網絡安全開發包提高學生編程綜合能力的培養途徑。
關鍵詞:人才培養;信息安全;編程實踐;網絡安全開發包
中圖分類號:G642
文獻標識碼:B
1實踐能力培養的重要性與面臨的問題
信息安全是一個實踐性很強的科學,目前信息安全專業的實踐教學中,除一些重點院校外,多數院校普遍存在硬件設施缺乏的問題,相關信息安全課程以課堂授課為主,學生難以很好地將所學的理論知識用于解決實際問題。此外已建設有信息安全試驗室的院校也面臨如何更好地充分利用現有信息安全實驗室的硬件、軟件資源,如何更合理、有效地安排信息安全實驗環節等問題。
總地說來,目前信息安全學科的實驗環節也正經歷從無到有再逐漸完善的過程,在已有的實踐環節中,以分析、驗證、配置型實驗為多,一般可以劃分為以下幾類:
(1) 密碼學實驗,如DES和RSA密碼算法、MD5和SHA散列算法實驗等,該類實驗通常主要以經典算法分析與代碼實現為主。
(2) 網絡攻防實驗,如緩沖區溢出攻擊與防范、網絡監聽技術、計算機和網絡掃描技術、DOS攻擊與防范,以及欺騙類攻擊與防范實驗等。
(3) 系統安全配置實驗,如Windows和linux操作系統的安全配置、Web和FTP服務器安全。
(4) 計算機病毒實驗,如COM病毒、PE病毒、宏病毒和腳本病毒等實驗。
(5) 網絡安全設備使用實驗,包括路由器、防火墻、入侵檢測系統(IDS)、VPN、網絡安全隔離網閘等設備的配置與使用實驗等。
(6) 除此以外,還有根據各校實際課程需要開設的如信息隱藏、數字水印、智能卡等實驗。
通過以上實驗環節,學生可以加深對相關信息安全基本概念、理論的理解,同時也可極大地提高動手能力,但是我們認為以上分析、驗證、配置型實驗無法完全滿足對應用型人才的需求,還需要加大綜合性實驗環節。
要進行綜合性實驗,就需要加強學生編程能力的綜合培養。以密碼學為例,學生掌握了密碼算法相關的基本概念、理論和算法原理之后,在將來的網絡安全系統研發中會經常碰到諸如如何對實際系統的消息進行加密、解密,如何對消息實現數字簽名,如何建立一個CA系統等問題。
為了解決以上這些實際問題,在實際的研發中一些專用的網絡安全開發包發揮了重要的作用,這些網絡安全開發包是指用于網絡安全研究和開發的一些專業的開發函數庫和算法庫,它們的主要作用是實現網絡安全研究和開發的基本功能,為研究者和開發者進一步研究和開發網絡安全服務提供編程接口,使網絡開發人員能夠忽略一些密碼算法的具體過程和網絡底層的細節,從而更專注于程序本身具體功能的設計和開發。筆者認為掌握這些專用的網絡安全開發包是提高學生編程綜合能力的有力的培養途徑,也為學生將來實際研發打下良好的基礎。
2編程能力的培養途徑
2.1前續課程的設置
要著手進行網絡安全編程,學生應該對必要的信息安全前序課程進行過系統的學習,首先應對網絡安全相關概
念和原理進行全面的了解,如密碼學基本知識,具體包括對稱密碼算法、公鑰密碼算法、鑒別技術和數字簽名的原理與應用,此外還應掌握黑客攻擊與防御、網絡安全協議、防火墻、入侵檢測技術等網絡安全技術。
2.2現有主要網絡安全開發工具介紹
網絡安全本身理論性和實踐性都很強,掌握了網絡安全相關基本概念、基本原理后可以運用到實際的工程中,在實際應用中,需要我們針對實際應用環境開發一些特定應用程序以提供相應的安全服務,而這時掌握一些實用的網絡安全編程工具就顯得猶為重要。
網絡安全開發工具是指用于網絡安全研究和開發的一些專業編程接口或開發包。它的主要作用是提供用于網絡安全研究和開發的基本功能的實現,為研究者和開發者進一步研究和開發網絡安全提供編程接口,為網絡安全服務的實現提供方便。
某些網絡安全開發工具基本上已經實現了某個特定網絡安全服務的基本框架和基本功能,然后開發者可以在這個已經構造好的基本框架下進行進一步的開發,這樣就為開發者節省了時間和精力,為進一步開發功能更強大的系統提供方便。
我們認為對一種或幾種網絡安全開發工具的學習是提高信息安全專業的學生編程能力的有利途徑,老師在教學中可以有針對性的對當前有代表性的幾種網絡安全開發工具進行講授,如表1所示,下面逐一說明:

(1) CryptoAPI:CryptoAPI是提供開發者在Windows下使用PKI的編程接口。CryptoAPI提供了很多函數,包括編碼、解碼、加密、解密、哈希、數字證書、證書管理和證書存儲等功能。CryptoAPI在安全通信中應用十分廣泛。CryptoAPI體系架構共由五大主要部分組成:基本加密函數(Base Cryptographic Functions)、證書編/解碼函數(Certificate Encode/Decode Functions)、證書庫管理函數(Certificate Store Functions),簡單消息函數(Simplified Message Functions)、底層消息函數(Low-level Message Functions)。其架構如圖1所示。(2) OpenSSL:OpenSSL是用于安全通信的著名的開放庫,也是一個開放源代碼的SSL協議的產品實現,它采用C語言作為開發語言。OpenSSL提供了建立在普通的通信層基礎上的加密傳輸層,這些功能為許多網絡應用和服務程序所廣泛使用。OpenSSL主要由三部分組成:密碼算法庫,SSL協議庫和OpenSSL應用程序。

① OpenSSL密碼算法庫——這是一個強大完整的密碼算法庫,是OpenSSL的基礎部分,也是很值得一般密碼安全技術人員研究的部分,它實現了目前大部分主流的密碼算法和標準。主要包括公開密鑰算法、對稱加密算法、散列函數算法、X.509數字證書標準、PKCS12、PKCS7等標準。OpenSSL具備的應用程序,既能直接使用,也可以方便進行二次開發。Openssl密碼算法庫提供了8種對稱加密算法、4種非對稱的加密算法和5種信息摘要算法,雖然每種算法都定義了自己的接口函數,但是OpenSSL還使用EVP封裝了以上算法,大大提高了代碼的可重用性能。
② SSL協議庫——包含了OpenSSL實現的SSL協議和TLS協議的大部分API使用說明。OpenSSL實現的SSL是開放源代碼的,在教學中可以引導學生研究SSL協議實現的細節,有助于加深學生的理解。
③ OpenSSL應用程序——命令行工具,可用于加密、證書生成和簽署等。OpenSSL應用程序提供包含了大部分OpenSSL應用程序的使用和參數說明,并有部分例子。Openssl的應用程序提供了相對全面的功能,這些應用程序可通過OpenSSL的指令進行調用實現。OpenSSl的指令主要包括密鑰生成、證書管理、格式轉換、數據加密和簽名,SSL測試以及其他輔助配置功能。
以上這兩種網絡安全開發包主要用于提供加密算法、數字簽名、散列函數、證書等,以保證數據的機密性、完整性、不可否認性以及身份鑒別的功能。
網絡安全開發包的種類很多,其實現的功能也千差萬別,以上兩種網絡安全開發工具是筆者在教學中所選擇的教學內容,除了上面介紹的,在實際教學中還可以根據實際情況選擇以下網絡安全開發包進行教學:
(3) 網絡數據包捕獲開發包Libpcap和WinPCap
網絡數據包捕獲開發包Libpcap是一個專門用來捕獲網絡數據的編程接口,它提供了以下的各項功能:捕獲原始數據包,包括在共享網絡上各主機發送/接收的以及相互之間交換的數據包;在數據包發往應用程序之前,按照自定義的規則將某些特殊的數據包過濾掉;在網絡上發送原始的數據包;收集網絡通信過程中的統計信息。由于網絡數據包捕獲功能是很多安全系統都要實現的功能,所以Libpcap可應用到網絡嗅探器、網絡協議分析、網絡入侵檢測、安全掃描等網絡安全系統中。
WinPCap (windows packet capture)是Libpcap在Windows平臺下的版本。
(4) 網絡入侵檢測開發包Libnids
Libnids(Library Network Intrusion Detection System)是一個用于網絡入侵檢測系統設計的專業開發包,提供了一個網絡入侵檢測系統的基本框架和基本功能,可以快速實現網絡入侵檢測的基本功能。
(5)Crypto++
Crypto++是采用標準C++編寫而成,也是一個自由軟件,Crypto++實現了多種公開密鑰算法、對稱加密算法、數字簽名算法、信息摘要算法以及其相關的其它算法等等。Crypto++于1995年6月發布了1.0版本,目前最新的版本是Crypto++#8482; Library 5.5,可以適應各種常用的操作系統和編譯平臺。
(6) Cryptix
如果從事Java開發程序,還可以選擇Cryptix,它是Sun公司發布的采用Java語言的關于Java Cryptography Extension(JCE)的開放源碼的API實現。
2.3教學步驟和重點
網絡安全開發工具歸根結底是一些函數庫,它們采用了一些特定的數據結構,提供了編程接口。使用網絡安全開發工具就是要掌握怎樣使用這些數據結構和函數。總的說來,教學重點可以從以下幾方面入手:
(1) 使學生掌握網絡安全開發工具的數據結構
每種網絡安全開發工具都使用了很多數據結構,這些數據結構在編程中都要使用到,它們是信息的載體。特別是一些典型的數據結構,他們基本上描述了開發工具的一些核心內容,掌握它們對于理解和掌握網絡安全開發工具是非常重要的。
(2) 掌握網絡安全開發工具的輸出函數
網絡安全開發工具的輸出函數是一個提供給用戶的編程接口,它是開發者直接打交道的對象,也是開發者最終要掌握的對象。使用網絡安全開發工具歸根結底是調用網絡安全開發工具提供的輸出函數,所以掌握輸出函數是最重要的,也是了解網絡安全開發工具的目的所在。要掌握網絡開發工具的輸出函數,必須從函數的返回值、函數的參數描述和函數的功能這三方面了解。
(3) 網絡安全開發工具的主要功能的逐步實現
以CryptoAPI為例,在掌握了其體系結構、數據結構、輸出函數后,教學中可逐步介紹其在密鑰管理、數據編碼、解碼、數據的加密和解密、數字簽名和驗證、證書和證書庫管理幾個方面編程實現方法。
3結束語
實驗教學是信息安全專業人才培養的一個重要方面,本文針對信息安全實驗教學過程中編程能力的培養,提出利用網絡安全開發包編程知識的系統講授,提高學生在網絡安全領域的研發能力,為培養應用型人才打下良好基礎。本文的教學經驗在本校兩屆學生中得到教學實踐,得到良好的教學效果。
參考文獻
[1] 沈昌祥. 加強信息安全學科、專業建設和人才培養[J]. 計算機教育,2007,(10).
[2] 張煥國,王麗娜等. 信息安全綜合實驗教程[M]. 武漢大學出版社,2005.
[3] 崔寶江. 信息安全實驗指導[M]. 北京:國防工業出版社,2005.
[4] 高敏芬. 信息安全實驗教程[M]. 天津:南開大學出版社,2007.
[5] 陳卓,阮鷗,沈劍. 網絡安全編程與實踐[M]. 北京:國防工業出版社,2008.
[6] 劉文濤. 網絡安全開發包詳解[M]. 北京:電子工業出版社,2005.