杜宗福
(陜西廣播電視大學(xué)寶雞市分校,陜西寶雞,721001)
網(wǎng)絡(luò)安全中傳統(tǒng)的用戶授權(quán)方式一般采用的都是本地授權(quán)技術(shù),為了保證數(shù)據(jù)的安全可靠,我們利用遠(yuǎn)程服務(wù)器端技術(shù),利用云授權(quán)的方式進(jìn)行數(shù)據(jù)安全的保護(hù),并與傳統(tǒng)的使用方式授權(quán)技術(shù)有效的結(jié)合。
云授權(quán)是將客戶端軟件授權(quán)技術(shù)與服務(wù)器認(rèn)證技術(shù)相結(jié)合的保護(hù)及授權(quán)方案。服務(wù)器根據(jù)每一個(gè)軟件用戶的使用許可,為其自動(dòng)發(fā)放授權(quán),并在今后定期更新和驗(yàn)證。由于并非所有的客戶端用戶電腦都能保持在線狀態(tài),采用云授權(quán)技術(shù)也可以實(shí)現(xiàn)本地的離線授權(quán)定期或在條件許可的條件下與服務(wù)器進(jìn)行連接、同步,實(shí)現(xiàn)“云驗(yàn)證”功能。
云授權(quán)技術(shù)支持.Net應(yīng)用程序的API和外殼保護(hù)方式。應(yīng)用軟件可以通過API調(diào)用的方法將應(yīng)用程序與客戶端安全庫(DLL)進(jìn)行集成,也可以使用外殼工具對 .Net 開發(fā)的模塊(EXE和DLL)進(jìn)行加殼保護(hù)。
外殼工具支持對.Net 模塊的Native 加密和 Managed加密方式。所謂Native加密方式就是加密后被加密文件將變成純Win32的文件(PE)格式;Managed 加密方式是加密后被加密文件還是.Net 格式,但需要額外的運(yùn)行時(shí)庫的支持。
系統(tǒng)開發(fā)中應(yīng)用程序采用云授權(quán)模式,被保護(hù)軟件與互聯(lián)網(wǎng)授權(quán)服務(wù)器應(yīng)該始終保持網(wǎng)絡(luò)連接,并調(diào)用服務(wù)器上的API實(shí)現(xiàn)。本地運(yùn)行庫只作為數(shù)據(jù)傳輸通道和網(wǎng)絡(luò)通訊模塊而存在。所有應(yīng)用程序和授權(quán)服務(wù)器之間的通訊數(shù)據(jù)都經(jīng)過了類似于網(wǎng)上銀行系統(tǒng)的高安全性加密協(xié)議的保護(hù),任何第三方都不可能獲取通訊內(nèi)容,或通過“記錄并重發(fā)”(Record and Replay)的方式偽造通訊數(shù)據(jù)。
程序員將軟件的一部分功能和數(shù)據(jù)部署在授權(quán)服務(wù)器上,客戶端通過API使用這些功能和數(shù)據(jù)。應(yīng)用程序可以獲取服務(wù)器時(shí)間進(jìn)行任何與時(shí)間相關(guān)的判斷和操作;可以實(shí)現(xiàn)應(yīng)用程序配置信息和數(shù)據(jù)的云存儲(chǔ),使用戶在任何一臺(tái)計(jì)算機(jī)上獲得一致的使用環(huán)境。程序員通過這些API向軟件用戶發(fā)送即時(shí)通知。
非對稱加密(公鑰加密)指加密和解密使用不同密鑰的加密算法。假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù),雙方交換公鑰,使用時(shí)一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業(yè)中有n個(gè)用戶,企業(yè)需要生成n對密鑰,并分發(fā)n個(gè)公鑰。由于公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得十分簡單。同時(shí),由于每個(gè)用戶的私鑰是唯一的,其他用戶除了可以通過信息發(fā)送者的公鑰來驗(yàn)證信息的來源是否真實(shí),還可以確保發(fā)送者無法否認(rèn)曾發(fā)送過該信息。非對稱加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對稱加密,在某些極端情況下,甚至能比對稱加密慢上1000倍。
云計(jì)算算法的部分實(shí)現(xiàn)代碼如下:
DSACryptoServiceProviderRSACryptoServiceProvid er
//加密
U n i c o d e E n c o d i n g e n c o d i n g = n e w UnicodeEncoding();
b y t e[] P a s s w o r d B y t e s = e n c o d i n g. GetBytes(password);//將 密 碼 轉(zhuǎn) 換 為 字 節(jié)數(shù) 組 RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();//RSA加密算法,非對稱PasswordBytes=crypt.Encrypt(password ,false);//加密字節(jié)數(shù)組,這是加密后的密碼值,放入數(shù)據(jù)庫中的表字段中。
string key=crypt.ToXmlString(true);//輸出密鑰為XML格式的字符串,且包含私鑰,這個(gè)字符串要作為數(shù)據(jù)庫表中的一個(gè)字段同用戶的密碼放在一起。
//解密
R S A C r y p t o S e r v i c e P r o v i d e r c r y p t=n e w RSACryptoServiceProvider();//已隨機(jī)生成了一個(gè)密鑰對
crypt.Clear();//毀掉當(dāng)前密鑰對
crypt.FromXmlString(key)//輸入密鑰對,key是從數(shù)據(jù)庫表字段中讀取的那個(gè)XML格式的字符串,即密鑰字段PasswordBytes=crypt.Decrypt(password ,false);//解密字節(jié)數(shù)組,返回原始密碼給用戶。
該方法的優(yōu)勢是每個(gè)用戶對應(yīng)一個(gè)密鑰(包含公鑰和私鑰),它們都是隨機(jī)生成的,所以各不相同。還有另外一個(gè)方法就是依照上面方法隨機(jī)生成一個(gè)密鑰對(包含公鑰和私鑰),通過ToXmlString(true)方法導(dǎo)出,然后把這個(gè)XML字符串格式的密鑰放到你的Web程序的Web.config文件的AppSetting節(jié)點(diǎn)里面,然后通過FromXmlString(key)方法讀入密鑰,這樣就意味著所有的用戶密碼都用同一個(gè)密鑰對加密和解密。
文中針對云授權(quán)安全技術(shù),提出了基于.NET的云授權(quán)保護(hù)機(jī)制解決方案,并對云授權(quán)系統(tǒng)開發(fā)中的保護(hù)機(jī)制,比如加密方式、代碼混淆技術(shù)、云授權(quán)模式進(jìn)行分析,同時(shí)也給出了非對稱加密算法在云授權(quán)中的基本應(yīng)用。該方案的提出與分析,為進(jìn)一步提高網(wǎng)絡(luò)安全技術(shù)提供參考依據(jù)。
[1] 張國鳴 嚴(yán)體華.網(wǎng)絡(luò)管理員教程(第2版)[M].清華大學(xué)出版社,2007:375-378.
[2] 孫 祿,盧 瀟,張 強(qiáng).基于Java Bean組件技術(shù)的模型表示研究[J].電子設(shè)計(jì)工程,2010,(10):9.
[3] 朱文生.基于Kad的BT客戶端的設(shè)計(jì)與實(shí)現(xiàn)[D].江西師范大學(xué),2006.
[4] 王魁生,盧夢僑,王曉波 .一種基于網(wǎng)絡(luò)狀況的多線程下載調(diào)度算法 [J].軟件導(dǎo)刊,2011(4):36-38.
[5] 苗文健,楊雅輝.面向視頻播放的BT協(xié)議下載算法的改進(jìn)[J].計(jì)算機(jī)工程與應(yīng)用,2010(18):68-70.