摘 要:旅游信息查詢系統是國內旅游業第一套實用信息查詢系統,其功能多、信息量大,涉及到數據庫平臺建立、維護和數據加密傳遞與多用戶管理等方面。安全平臺包括身份認證、加密傳輸及數字簽名等功能,采用基于動態分組密碼算法——DES來實現身份認證以及數據加密傳輸部分。
關鍵詞:旅游信息查詢系統; 身份認證; 動態DES算法; S盒
中圖法分類號:TP393.08 文獻標識碼:A 文章編號:1001-3695(2006)10-0140-04
Full Security Design for Tourism Information Applying System
LI Ying, HU Xiangyi, LV Shuwang
(School of Graduate, Chinese Academy of Sciences, Beijing 100039, China)
Abstract:Tourism information applying system is designed for the tourism industry of China, which is the first practical and informationaccess system. Concerned with database building and maintaining, information transmission method and ID certificate based on dynamic DES and digital signature. The dynamic grouping encryption designs for ID certificate and informationencrypting transmission are based on dynamic S list.
Key words:Tourism Information Applying System; ID Certification; Dynamic DES; S List
我們所設計的旅游信息查詢系統平臺,是為國內旅游業能更快、更好地與國際旅游信息化產業接軌的一套實用新型信息共享平臺,為旅行社、景點和個人用戶提供更為有效的信息查詢及數據管理方式。系統提供身份認證、加密傳輸、電子簽名或數字簽名等功能,但國內國際相關的網絡安全傳輸技術,有的局限于成本昂貴,有的還在驗證階段,技術尚未成熟。本文參考國際國內現有的算法和體制以及一些相關的應用實例,并結合個人的思想提出了一套基于動態分組密碼算法(基于算法中的編制要素——S盒的不確定性變化,實現動態DES算法的不可預知性和不確定性)的身份認證方案,并設計出整體的安全架構,同時嘗試使用動態DES算法進行數據加密傳輸,以確保系統具有身份認證、信息加密傳輸和數字簽名等安全方面的功能。
1 旅游信息系統的基本功能及安全架構
旅游信息系統作為服務于旅游行業各旅行社、景點景區和普通個人用戶等的信息共享以及數據庫管理平臺,其組成如圖1所示。
旅行社、景區、各地旅游局和個人用戶通過登錄旅游信息平臺,進行信息的查詢、服務的更新和個人服務的定制等。整個系統根據所完成的功能不同,分別設置不同的服務器,調用相應的服務模塊進行身份認證和數據傳輸兩大主要功能。如身份認證調用認證服務器,服務器存儲用戶身份信息,并參與登錄者身份認證過程;數據傳輸調用數據庫應用服務器,參與數據信息的傳輸和加密過程。涉及到合同、重要數據資料和用戶個人信息等的文件,若需要加密傳輸則調用加密傳輸功能模塊。系統提供身份認證、加密傳輸、電子簽名或數字簽名等模塊,由用戶根據需求來選用這些安全功能模塊。一般性的信息發布,如景區天氣、旅行社活動安排、線路推廣等改動則無須加密,直接在用戶進行身份認證后,即可對服務器相關內容進行維護。
對于系統用戶,分為內部用戶和外部用戶兩類。內部用戶是認證服務器和應用服務器平臺的管理者和使用者,外部用戶是應用服務器的訪問、維護者。其認證方式相同,如圖2、圖3所示。
2 數據信息加密及數字簽名
圖4所示為從信息原文經過簽名,以原文和數字簽名結合生成簽名后的文件開始流程,至傳輸校驗完畢。其中應用SHA編碼和ECC算法實現數字簽名,應用動態DES算法實現數據加密。過程如下:
(1)發送方A將信息原文用SHA函數編碼,產生一段固定長度的數字摘要。
(2)A用自己的私鑰(Key A私)對摘要加密,形成數字簽名附在發送信息原文后面。由于公開密鑰加密技術(ECC)速度較慢,所以這里只用來加密已被縮短的散列值。
(3)A用動態DES加密算法對帶有數字簽名的原文進行加密,傳送到接收方B。這里使用動態DES加密算法,A的通信密鑰和動態S盒信息參與算法過程,通信密鑰和S盒信息組成會話密鑰。
(4)A用B的公鑰(Key B公)對產生的會話密鑰進行加密后傳到B,這一步利用了數字信封的作用。
(5)B收到加密后的會話密鑰,用自己的私鑰對其解密,得到A的通信密鑰和動態S盒信息,只有B能對以自己公鑰加密的文件進行解密,此步確認接收方為B。
(6)B用A的通信密鑰和S盒信息對收到的經加密的簽名原文運用動態DES算法解密,得到數字簽名和原文。
(7)B用A公鑰對數字簽名解密,得到摘要;同時將原文再用SHA函數編碼,產生另一個摘要。以A公鑰解密,可認證該簽名的確為A傳遞,其他用戶沒有A的私鑰
(8)B將兩摘要比較,若一致則說明信息準確完整,否則所傳輸信息作廢并丟棄。
假設每個發送方,除了用于公開密鑰加密技術中的發送方私鑰以外,還掌握一個密鑰用于動態DES算法中的通信密鑰,因為該通信密鑰固定不變,便于密鑰管理的同時還要求密鑰嚴格保密。此時,對于通信密鑰以及動態S盒相關信息,即會話密鑰的傳輸,用公開密鑰加密技術進行發送、接收方嚴格認證。
3 運用動態分組密碼算法DES實現身份認證
3.1 口令動態化
不同用戶的智能卡擁有不同的、唯一的密鑰,該密鑰同時也存放在服務器端,每次認證時客戶端與服務器端分別根據同樣的密鑰、同樣的隨機參數(如時間戳等)以及同樣的算法計算出認證所需的口令。認證時客戶端和服務器端的參數、算法等均相同,保證了認證的成功率。不同認證時的隨機參數不同,所以產生的口令不同。每次計算時參數的隨機性保證了每次口令的不可預測性,從而在最基本的口令認證這一環節保證了系統的安全性。本身份認證的設計方案中,隨機參數采用時間戳,時間戳決定S盒編制的選取算法,決定了使用相同DES算法加密相同數據而得到的加密結果不同,即實現口令動態化。口令的動態變化是方案中動態分組密碼算法DES的核心所在。
3.2 身份認證的實現方案
關于身份認證,現階段有以下幾種技術支持:靜態口令或用戶名+口令模式、CA認證模式、生物特征護照等。其中,靜態口令模式,由于長時間使用相同口令,易被獲取和竊聽,在網絡傳輸中,易被截留和分析,在口令丟失或被破譯的情況下,安全性很低;CA認證,使用非對稱加密算法,速度慢、效率低、管理復雜;生物特征識別技術,成本高,尚待完善。
運用動態分組密碼算法DES實現身份認證,原理為:在客/服雙方被加密數據(用戶號、數字證書、時間戳等)均相同,S盒編制保持一致,加密算法也相同的條件下,加密結果相同,即用戶認證口令相同,用戶身份得到確認。
如圖5所示,用戶將智能卡接入客戶端,通過Web瀏覽器輸入應用服務器(此處為數據庫服務器)URL,申請登錄。登錄頁面提示輸入用戶名的同時,用戶獲取動態口令L1。動態口令的生成由動態分組密碼加密算法,即通過S盒編制的一次一變、加密同一內容(用戶號,數字證書)而最終結果不同來實現。本方案列舉DES算法。用戶點擊“發送動態口令”(圖6),將上面獲取的口令直接發送至認證服務器端,同時發送的數據還包括生成動態口令時使用的同一個時間戳等(時間戳決定S盒的選取算法)。服務器端收到客戶端發送的口令L1,以備驗證,同時,服務器端也收到用戶名和時間戳信息。由此服務器得到用戶號、數字證書和參與加密運算的參數信息,并運算得到加密結果L2。服務器通過比對L1和L2確認用戶身份。
(1)同一次認證過程中,客/服兩端S盒編制相同(即S盒實現算法相同,決定S盒編制的參數相同(時間戳)),對稱加密算法相同,客/服兩端產生的加密結果相同,口令一致,得到有效認證。
(2)同一用戶不同驗證過程中,由于時間戳參數的隨機性,決定每次S盒編制不同,加密結果不同,實現一次一變的動態口令。
該方案的安全性是保證在智能卡不被丟失的情況下,一旦丟失,立刻注銷用戶號。
客戶端提交動態口令,服務器端獲取后,其監控機制使服務器端保留一定數量的用戶信息及口令數據,如果一旦與記錄中早期使用過的用戶號+動態口令L1有重復,則認為口令無效,需重新認證。動態口令一次有效,用戶無須管理口令。
3.3 關鍵技術
本方案設計動態分組密碼算法DES實現系統身份認證以及數據加密傳輸部分。分組算法本身具有安全性高、可靠、算法簡單、快速等優勢,如其一次一變的密鑰體制,由此也使得密鑰的分發和管理非常困難。本文設計的動態加密算法DES,在參與運算的密鑰不變、算法框架不變的基礎上,八個S盒組合是一次一變來實現算法的動態,乃至實現用戶身份認證口令的動態變化,并運用于數據傳輸中,可以充分利用相同資源,如生成的S盒組,減少密鑰量,并強化加密效果。
3.3.1 基本DES原理
DES是一種迭代型分組密碼,分組長度為64bits,密鑰長度為56bits。DES的主體是對一個密鑰控制下的輪函數進行16次迭代。圖7給出了輪函數的計算過程。整個狀態被分成Li和Ri左、右兩半,各為32bits。Ri是密鑰控制下的F函數的輸入變量,將Li與F函數的輸出進行異或得到新的Li,然后將左、右兩半進行交換。
其中F函數的計算過程由以下組成:
(1)擴展E。它將32bits的輸入擴展成48bits的向量。
(2)密鑰加法。將48bits的向量與48bits的輪密鑰進行逐位異或。
(3)S盒。每個S盒都將6bits輸入映射為4bits輸出。
(4)比特置換P。對4×8bits向量中的各比特進行換位。
F函數計算過程如圖8示。
只有在F函數(也包括在輪變換中)的非線性步驟中包含了S盒,48bits的輪密鑰由56bits的密碼密鑰經過一個線性的密鑰編排方案而得到。
3.3.2 DES算法缺陷
隨著密碼分析技術和計算能力的提高,DES的主要缺陷就是算法公開、密鑰較短,不能抵抗對其窮舉搜索攻擊。所以,將存在的缺陷弱化,將加密的重點轉移到增長密鑰和對S盒的選取及S盒的設計數量上,將大大提高DES加密技術的安全性。
在DES中,初始置換IP和逆初始置換IP-1各使用一次,目的是為了把數據徹底打亂重新排列,它們對數據加密所起的作用不大。因為它們與密鑰無關,置換關系固定,所以一旦公開,它們對數據的加密便無多大價值。DES中,除了S盒是非線性變換外,其余變換均為線性變換。因此,S盒是DES的關鍵。可以看出,任意改變S盒輸入中的幾位,其輸出至少有兩位發生變化。由于在DES中使用了16次迭代,所以即使改變明文或密鑰中的一位,密文中都會大約有32位發生變化。S盒的設計原則一直沒有完全公開。經過多年來的研究,人們的確發現了S盒的許多規律,但至今還沒有發現S盒的致命缺陷。另外,隨著從事安全信息行業的人員增多、密鑰的大量增加,密鑰配送以及管理也慢慢成為影響密鑰保密性的因素之一。如何減少密鑰、如何降低唯密鑰至尊的傳統觀念也是本設計要解決的問題。
3.3.3 動態DES算法
一般DES算法中,每個S盒是固定不變的,抗攻擊性弱。每次運算更換的是密鑰,如果需要加密的數據量大時,密鑰的管理及頒發很麻煩。而動態DES算法中,算法框架不變,密鑰不變,而變動的是整個S盒的編制。系統安全架構中的智能卡或加密卡,進行DES算法初始化時,將S盒的生成以及校驗準則程序寫入,如生成出多個符合設計準則的S盒,編號為S1,S2,…,S100,…。進行加密運算時,由隨機數(或根據時間戳信息)共同控制選取算法來選擇其中八個盒,分別為SX1,SX2,…,SX8參與運算。
雖然除了原來S盒以外其他S盒的設計思路及安全性還需要進一步驗證,很可能其安全性在單一一組S盒進行運算時沒有原來的可靠,但只要是動態的,在多個中隨機選取,其隱蔽性將更強,抗攻擊性也越強。
3.3.4 S盒的生成
20世紀90年代,差分密碼分析公之于眾后,IBM公布了DES S盒的設計準則。DES的S盒具有極好的抵抗差分密碼分析的性能,在DES中隨機選擇S盒,對于抗差分攻擊來說更弱,而對于抗線性攻擊來說則更強。
實際中,要根據設計要求適當降低一些指標,如對于SP網絡中所用的S盒,可以降低對其擴散特性的要求,而把這一部分任務交給擴散層P來完成。構造S盒一般有以下方法:
(1)隨機選取并測試。隨機選取的小規模的S盒并不安全,但有證據表明,S盒的規模越大,隨機產生的S盒的密碼性能就越好,如文獻[22]中證明了隨著n的增大,Fn2上幾乎所有的置換均是非退化置換,而且如果S盒既隨機又依賴于密鑰,則強度會更高。通常的做法是隨機選取,然后通過測試某些特性需求進行篩選。只要設計者的時間和計算能力允許,采用此方式總可以構造出所需的S盒,且可使用戶相信沒有陷門。如下進行詳細說明:①S盒的產生。通過S盒的設計準則編程逐條進行校驗。S盒由4×16的數字組合而成,每個數字有0~15共16種變化,S盒共有1664種組合,每個組合是否能成為S盒參與運算要通過設計準則校驗。為使客戶端和服務器端在存儲卡(智能卡,加密卡)內存儲量有限的條件下盡量節約空間,設計以編程校驗S盒時間來換取存儲空間,即每得到一個合格的S盒,即刻參與加密運算,并且運用同步算法使客/服兩端每步獲取相同S盒參與運算。②同步信息。可以從時間戳、會話密鑰中獲得。③時間戳。可以使八個S盒的組合多達上億,即xx.xx xx:xx:xx(日期+時刻,如25.15:38:22,取八個數值),約為(2×10×2×10×6×10×6×10)×(pnn)8,將S盒取自不同的八個組、不同編號的S盒,每組包含n個(n≥10)構造好的有一定即時編號的S盒,S盒的編號也由會話密鑰等進行控制。可用S盒的組合多少由每組S盒的數量決定。不同的時間戳保證沒有兩個時刻的選擇會相同。該方案對設計者的時間和計算能力以及硬件有很高的要求,文獻[12]用演化計算的方法產生了一批好的DES的S盒,完全可以應用到本設計方案中。
(2)按一定規則構造并測試。此方法通常以已有的“好”的S盒為基礎,以一種簡單而確定的方式構造滿足需要的S盒。比如Serpent算法所用的S盒就是利用DES的S盒以此種方式生成的,此方法構造的S盒可以使用戶相信沒有陷門。
①使用數學函數,如指數和對數函數、有限域GF(2n)上的逆映射、有限域上的冪函數等;
②使用不同群中數學函數的復合,不同群中數學函數的復合在抵抗插值攻擊和高階差分密碼分析方面是有效的。
如文獻[13]利用有限域的特殊結構來構造S盒,使用的數學函數通常是冪函數。
4 系統安全方案結論
動態分組密碼算法是分組密碼算法DES的改進,可運用于一般信息的傳遞方面,降低軟硬件價格,成本低;密鑰尺度盡量小,便于密鑰配送與管理;加/解密速度快;安全性高,抗集團攻擊能力強。S盒編制的一次一變使加密算法的結果每次不同,能實現口令的動態化,提高安全性。通過時間戳八位來定義,可能的八個S盒組合信息達上億種,遠遠多于(pnn)8(n≥10),如此龐大的數量,任何的攻擊都顯得軟弱無力。
設計難點在于身份認證部分要求客戶端和服務器端實現算法同步,計算參數一致;數據傳輸部分亦要求加/解密算法所用S盒編制相同。本方案通過時間戳等會話密鑰的傳輸和智能卡S盒生成算法初始化定義等解決了這一問題。算法的動態使密鑰可幾十年不變,僅管理唯一或一組有限的密鑰即可,也省去了分組密碼煩瑣的密鑰分發和管理難題。
在旅游信息查詢系統中,本方案采用的數字簽名、數字摘要以及非對稱密鑰算法,尤其是應用在身份認證方面的動態分組密鑰算法,非常成功地解決了系統多用戶管理的相關安全問題。
參考文獻:
[1]宋震.密碼學[M].北京:中國水利水電出版社,2002.145149.[2]陳魯生,沈世鎰.現代密碼學[M].北京:科學出版社,2002.122128.
[3]李克洪.實用密碼學與計算機安全[M].沈陽:東北大學出版社,1997.
[4]李永新.數字簽名技術的研究與探討[J].紹興文理學院學報,2003,23(7):47-49.
[5]康麗軍.數字簽名技術及應用[J].太原重型機械學院學報,2003,24(1):31-34.
[6]胡炎,董名垂.用數字簽名解決電力系統敏感文檔簽名問題[J].電力系統自動化,2002,26(1):58-61.
[7]Leung K R P H, Hui L C K.Handing Signature Purposes in Workflow Systems[J]. Journal of Systems and Software, 2001,55(3):245-259.
[8]Wright M A. A Look at Public Key Certificates[J]. Network Security, 1998,(2):1013.
[9]William Stallings. Cryptography and Network Security: Principles and Practice(2nd edition)[M]. Prentice Hall, 1999.
[10]Bruce Shneier. Applied Cryptography: Protocols, Algorithms, and Source Code in C(2nd edition)[M]. John Wiley Sons, 1995.
[11]Joan Daemen, Vincent Rijmen. The Design of Rijindael AES: The Advanced Encryption Standard[M].北京:清華大學出版社,2003.82-88.
[12]張煥國,馮秀濤,覃中平. 演化密碼和DES密碼的演化設計[J].通信學報,2002,23(5):57-64.
[13]Nyberg K. Differentially Uniform Mappings for Cryptography[C]. Proc. of ENCRYPT’93, SpringerVerlag, 1994.55-64.
[14]張煥國,覃中平,王麗娜.信息和通信安全[C].第三屆中國信息和通信安全學術會議論文集.北京:科學出版社,2003.186187.
作者簡介:
李瑛(1975-),女,四川人,碩士研究生,主要研究方向為密碼學、信息安全、計算機網絡和數據庫技術;胡祥義(1955-),男,北京市科學技術情報研究所副所長,高級工程師,博導,主要研究方向為數據加密、數碼信息技術;呂述望(1941-),江蘇人,男,國家信息安全重點實驗室主任,教授,博導,主要研究方向為計算機安全、計算機軟件與理論。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文