網上申請犬證相對于書面申請有許多優點,但因為缺乏安全,一直沒有很好的運用。為有效地防止對電子申請書的篡改,減少出錯率,可以將網絡安全技術應用到系統中。PKI、數字簽名、MD5等技術應用在網上申請犬證系統中,將很大程度地提高信息的安全強度。
MD5是20世紀90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest開發,經由MD2、MD3和MD4發展而來,其本質就是一種哈希函數,并且具有不可逆的特性,即無法通過信息摘要來恢復原始的文件。其典型應用之一是利用其加密的不可逆性來加密用戶密碼,之二是驗證信息的完整性,如果使用MD5加密,整個文件將產生一個唯一的md5信息摘要,如果在以后傳播這個文件的過程中,只要文件被篡改,信息摘要值就不相同。因為它具有以下特性:原始信息只要改變一點點,哪怕是幾比特,對應的消息摘要也會改變很大。
MD5算法描述:
1.MD5算法先對輸入的數據進行補位,使其位長對512求余的結果等于448。即數據擴展至K*512+448位,也就是K*64+56個字節,K為整數。具體補位操作是補一個1,然后補0至滿足上述需求。
2.在第一步的結果后附加一個以64位二進制表示填充前信息的長度。經過這兩步處理,現在的信息字節長度等于N×512+448+64=(N+1)×512,正好是512的整數倍。
3.設置四個32位鏈接變量,A=0x6745 2301;B=0xHEFCDAB89;C=0x98BADCFE;D=0x10325476,進入算法的四輪循環運算。循環的次數是信息中512位的信息分組的數目。在將上面的四個鏈接變量復制到另外四個變量中如:A到a,B到b,C到c,D到d。
4.主循環有四輪,每一輪進行16次操作共計64次操作。以下是每次操作中用到的四個非線性函數:
F(X,Y,Z)=(X&Y)|((~X)&Z);
G(X,Y,Z)=(X&Z)|(Y&(~Z));
H(X,Y,Z)=X∧Y∧Z;I(X,Y,Z)=Y∧(X|(~Z))。其中&、|、~和∧分別為:與、或、非和異或。MD5算法經四輪循環運算并將結果進行級聯,最后生成摘要。
通常情況下,使用Hash函數進行散列運算對消息進行加密,得出信息的驗證碼,再對驗證碼進行加密操作,得出數字簽名。最常用的是RSA數字簽名體制。
其過程可分為密鑰生成、簽名算法和驗證算法3部分。
1.密鑰生成
1)選取兩個大素數p和q,計算n=pq(公開),φ(n)=(p-1)(q-1),φ(n)為n的歐拉函數。
2)隨機選取正整數e,滿足1 3)計算d,滿足de≡1(modφ(n)) 簽名者的公鑰為{n,e},私鑰為{p,q,d}。 2.簽名算法 設消息為x,則x的RSA簽名是y=xd(mod n)。 3.驗證算法 當接收者收到簽名(x,y)后,計算x’=ye(mod n)。 如果x=x’,則y是x的RSA簽名。 數字簽名的特點是它代表了文件的特征,文件如果發生改變,數字簽名的值也將發生變化。不同的文件將得到不同的數字簽名。 在系統中還使用了PKI技術。公鑰基礎設施(Public Key Infrastructure,PKI)是一個用公鑰概念和技術實施和提供安全服務的具有普適性的安全基礎設施。 PKI是一種新的安全技術,它由權威認證機關(CA)、數字證書庫、密鑰備份及恢復系統、證書撤銷列表、應用接口等基本構成,構建PKI也圍繞這五大系統來構建。 MD5是一種被廣泛使用的一種算法,特別是在用戶密碼方面。因為許多用戶密碼比較簡單,所以攻擊者能在很短的時間內破解。王小云教授在2004年召開的國際密碼學年會(Crypto 2004)上做了破解MD5算法的報告,發表了一篇《散列(哈希)函數MD4、MD5、HAVAL-128和RIPEMD中的碰撞》論文,引起了很大的反響。文獻[4]中的作者可以在短時間內獲得MD5函數多個碰撞的算法(即不同的明文產生相同的Hash函數值),這就導致MD5在使用中會有很大的危險。為了保證系統的安全,本文對MD5的使用進行了改進。 在.NET中,System.Security.Cryptography類中包含一系列能夠實現對稱和非對稱加密、創建哈希值等的函數,使用md5.ComputeHash()函數可以得到MD5值。在網上申請犬證系統中,用戶模塊中有兩個部分用到了MD5。 1.對于用戶模塊中的用戶密碼進行MD5加密改進。改進方法為:1)在用戶注冊時,分別對用戶密碼和當前系統時間進行MD5加密,得到的密文A和B,位數各為32位。2)用截取函數取A中前16位,B后16位,得到32位的MD5值C。3)對C進行MD5加密得到的值D存入數據庫。 通過這種方法,即使進入數據庫得到了密碼值并進行破譯也不能得到真正的密碼值,這樣能夠提高網站的安全性。 用戶登錄驗證密碼時,具體做法是:1)對用戶輸入的密碼和數據庫中的用戶注冊時間進行MD5計算得到A’和B。2)用截取函數獲得A’中前16位和B中的前16位,得到C’。3)對C’進行MD5加密得到D’,如果D=D’,則C=C’,A=A’,用戶登錄成功。 2.用戶上傳文件模塊中使用了MD5加密。當用戶填寫好申請表格后要上傳到服務器端,為了防止黑客篡改文檔中的信息則采用MD5數字摘要算法來保證文檔中的信息沒有被篡改。雖然在保證文件的原始完整性的方法有缺陷,但是在實際中,要偽造有特定含義的申報文件與原始文件具有相同的數字摘要的可能性非常非常小,可以說是幾乎不太可能的(這點是由王小云的破解算法決定的)。因此用MD5來保證申報文件不被篡改還是有應用價值的。具體步驟如下:a)引用System.Security.Cryptography類;b)用File.ReadAllBytes(FilePath)語句來讀取文件中的信息;c)調用md5.ComputeHash(data)函數計算數字摘要M;d)將M值作為文件名保存至數據庫中;e)審核員打開文件時重新讀取文件并再次調用MD5函數計算數字摘要M’;f)比較M與M’,如相等,則進行審核,如不等,則說明數據被破壞,反饋給用戶讓其重新上傳申報文件。 流程圖如圖1所示。 1.審核員采用數字證書模式進行登錄。首先要配置IIS,安全套接字節(SSL)是一套提供身份驗證、保密性和數據完整性的加密技術。配置好雙向SSL后,即要求客戶端證書。WEB后臺可以通過客戶端證書獲取管理員身份,從而替代傳統的用戶名和口令,也提高了安全性。對于某個CA,其頒發的所有證書都有一個唯一的、不重復的證書序列號,可以利用證書序列號來識別不同的用戶。 本文采用在SQL SERVER 2008中創建審核員表,其中就可以用證書序列號字段來獲取其身份和權限。當審核員登錄系統時,將被要求選擇使用的證書。系統從證書中獲取證書屬性,與數據庫中管理員表中的證書序列號字段進行查詢,如果匹配就能登錄界面,如不能就彈出出錯信息。 在.NET中用Request.ClientCertificate()函數來獲取CA證書的屬性,包括證書序列號等字段。 2.數字簽名。審核員對審核結果采用私鑰進行簽名并保存在數據庫中,以防止糾紛的產生。數字簽名功能本系統中使用微軟的CAPICOM組件來實現。Windows操作系統為我們提供了先進的加密體系模型CryptoAPI,但使用其完成一些通常的操作(如:加密、簽名)仍然是相當復雜的。而CAPICOM組件,封裝了上述的復雜操作,使你只需要調用一兩個函數,就可以完成指定的功能。所以本系統用SignData()函數進行數字簽名,用VerifySignature()函數進行驗證,簡單、實用。 隨著網絡技術的發展,網絡安全技術越來越重要?;赑KI的網絡安全系統的設計已經廣泛地被使用。本文討論了PKI、數字簽名等技術的基本原理和在網上申請犬證系統中的具體應用,并通過改進MD5碼的算法,生成適合自己的MD5算法,再運用二次加密,使得網站的安全性進一步增強,具有一定的應用價值。隨著密碼科學和軟硬件技術發展,網絡安全技術必將發揮越來越大的作用。當然,我們還需要注意系統本身的安全,如防火墻、訪問控制、代碼安全等。 [1]張艷.RSA數字簽名算法在電子病歷中的應用[J].微計算機應用,2010,31(1):79-80. [2]Rivest R.The MD5 Message-Digest Algorithm[S].RFC 1321,April 1992. [3]何大可,彭代淵,唐子虎等.現代密碼學[M].北京:人民郵電出版社,2009. [4]Wang Xiaoyun,Feng Dengguo,Lai Xuejia,et a1.Collisions for hash functions MD4,MD5,HAVAL-128 and RIPEMD[C].Cryptology ePrint Archive:Report 2004,1999,Aug.2004. [5]孫維國,李浩然.MD5算法在數據安全中的應用及安全性分析[J].微計算機應用,2010,31(10):66-69. [6]胡景浩.在網站安全性應用中對MD5碼的改進[A].第三屆全國軟件測試會議與移動計算、柵格、智能化高級論壇論文集,2009.三、PKI
四、在.NET中對MD5碼的改進
五、數字證書、數字簽名在系統中的運用
六、結束語