[摘 要] 本文將RSA公鑰簽名體制引入到財(cái)務(wù)軟件設(shè)計(jì)中,解決了密鑰分發(fā)和管理中的難題,提高了財(cái)務(wù)管理系統(tǒng)的安全性,使得非法操作有處可查。
[關(guān)鍵詞] RSA算法;數(shù)字簽名;財(cái)務(wù)軟件;加密狗
[中圖分類(lèi)號(hào)]F232[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2008)01-0019-02
一、引 言
與財(cái)物安全問(wèn)題相比,存儲(chǔ)在計(jì)算機(jī)中的財(cái)務(wù)數(shù)據(jù)安全問(wèn)題更為重要,同時(shí)也更加難以保護(hù)防范。目前幾乎所有財(cái)務(wù)管理軟件都實(shí)現(xiàn)了密碼控制、角色管理和用戶(hù)權(quán)限控制,不同用戶(hù)使用自己的密碼登錄系統(tǒng)后,可做的操作以及對(duì)數(shù)據(jù)的訪問(wèn)方式不同。用戶(hù)除了可以對(duì)財(cái)務(wù)數(shù)據(jù)進(jìn)行訪問(wèn),還可以更改自己的密碼。這樣通過(guò)提高密碼強(qiáng)度和采取保密措施(例如對(duì)密碼進(jìn)行加密以及物理保密不泄露密碼)可以在一定程度上保證財(cái)務(wù)系統(tǒng)的安全。但是,通過(guò)高超的破譯技術(shù)以及數(shù)據(jù)庫(kù)系統(tǒng)或軟件設(shè)計(jì)的漏洞非法獲得用戶(hù)密碼是完全可能甚至是很容易的。在大多數(shù)財(cái)務(wù)用戶(hù)的安全防范意識(shí)不夠強(qiáng)的情況下,增加一道保護(hù)措施以進(jìn)一步提高財(cái)務(wù)管理系統(tǒng)安全性就顯得尤為重要。
二、RSA算法原理
RSA是一種典型的非對(duì)稱(chēng)密鑰密碼體制,即從加密密鑰和解密密鑰中的任何一個(gè)推導(dǎo)出另一個(gè)在計(jì)算上是不可行的。RSA的安全性建立在“大數(shù)分解和素性檢測(cè)”這一已知的著名數(shù)論難題的基礎(chǔ)上。公鑰對(duì)可以完全公開(kāi),不需要進(jìn)行保密,但必須提供完整性檢測(cè)機(jī)制以保證其不被篡改;而私鑰由用戶(hù)自己保存。通信雙方無(wú)需實(shí)現(xiàn)交換密鑰就可以進(jìn)行保密通信。
RSA密碼體制算法如下:
(1)由用戶(hù)選擇兩個(gè)互異并且距離較遠(yuǎn)的大素?cái)?shù)p和q;
(2)計(jì)算n=pq以及f(n)=(p-1)(q-1), f(n)表示小于n的自然數(shù)中與n互質(zhì)的數(shù)的個(gè)數(shù)。
(3)選擇正整數(shù)e,使其與f(n)的最大公約數(shù)為1,即gcd(e, f(n))=1;然后計(jì)算正整數(shù)d,使得ed對(duì)f(n)的余數(shù)為1,即ed≡1 mod f(n),最后銷(xiāo)毀p和q。
經(jīng)過(guò)以上步驟,得出公鑰對(duì)(n,e)和私鑰對(duì)(n,d)。設(shè)M為明文,C為對(duì)應(yīng)的密文,則加密變換為:C=Memod n;解密變換為:M= Cdmod n。
舉一個(gè)簡(jiǎn)單的例子,假設(shè)用戶(hù)選擇p=3,q=7,則n=21, f(n)=12,選擇e=5,計(jì)算出d=17,則公鑰對(duì)為(21,5),私鑰對(duì)為(21,17)。設(shè)要加密的明文為M=2,則使用C=Memod n加密得到密文為C=11,使用M=Cdmod n進(jìn)行解密變換得到M=2。
由于公鑰系統(tǒng)中生成簽名的密鑰只存儲(chǔ)于用戶(hù)的計(jì)算機(jī)中或由用戶(hù)秘密保存,不存在密鑰分發(fā)與管理的問(wèn)題,減少了密鑰泄露的可能性,也就減少了簽名被篡改、偽造和否認(rèn)的可能性,其安全系數(shù)更大。Microsoft、IBM、Sun、Macintosh等多個(gè)公司都分別與RSA數(shù)據(jù)安全公司簽訂了許可協(xié)議以在其生產(chǎn)線上加入類(lèi)似的簽名機(jī)制。
基于RSA密碼體制的簽名算法基本與RSA密碼算法類(lèi)似,只是把變換M=Cemod n修改為S=Memod n,其中S是簽名;而變換M=Cdmod n則演變?yōu)轵?yàn)證過(guò)程Verk(M,S)為真等價(jià)于M≡Sdmod n。RSA簽名過(guò)程如圖1所示。

三、加密狗技術(shù)原理
加密狗(dongle)經(jīng)常被認(rèn)為是硬件保護(hù),它是一個(gè)可被附加在計(jì)算機(jī)并口、串口或USB上的小插件,它包含廠家燒制的EPROM或定制的專(zhuān)用集成電路甚至一段特殊數(shù)據(jù)。dongle保護(hù)的原理就是軟件開(kāi)發(fā)者在程序里檢查dongle中的內(nèi)容(該內(nèi)容無(wú)法通過(guò)常規(guī)方法讀取或修改)并對(duì)比返回值,以此來(lái)決定軟件的啟動(dòng)和運(yùn)行情況。加密狗主要擁有以下功能:(1)許可證管理技術(shù):擁有靈活的許可證管理和發(fā)放機(jī)制,軟件開(kāi)發(fā)商可以完全、靈活、有效、數(shù)字化地控制用戶(hù)使用軟件的方式,包括使用時(shí)間、次數(shù)以及模塊等,同時(shí),開(kāi)發(fā)商可以方便、快捷地進(jìn)行許可證的遠(yuǎn)程升級(jí);(2)硬件虛擬機(jī):具有自主產(chǎn)權(quán)的硬件虛擬機(jī),使得受保護(hù)的核心代碼可以在加密狗硬件內(nèi)解釋、執(zhí)行;(3)數(shù)據(jù)交換隨機(jī)噪聲技術(shù):獨(dú)有的隨機(jī)噪聲技術(shù),有效地對(duì)抗邏輯分析儀的分析和各種調(diào)試工具的攻擊;(4)迷宮技術(shù):在程序入口和出口之間包含大量判斷跳轉(zhuǎn)干擾,動(dòng)態(tài)改變執(zhí)行次序,提升抗跟蹤能力;(5)AS技術(shù):內(nèi)嵌式加密(API)與外殼加密(SHELL)相結(jié)合的方式,能夠達(dá)到極高的加密強(qiáng)度,即使外殼被破壞,加密程序仍然不能正常運(yùn)行;(6)加密算法:軟件開(kāi)發(fā)商可以自選加密算法,并可自定義加密算法因子。
四、RSA密碼體制和加密狗在財(cái)務(wù)管理軟件設(shè)計(jì)中的應(yīng)用
軟件安裝時(shí),根據(jù)用戶(hù)隨機(jī)選擇的p和q,計(jì)算出公鑰,隱藏注入于系統(tǒng)中;私鑰加密后存儲(chǔ)于加密狗中。加密狗一旦制作不能更改,不能復(fù)制。加密狗中的私鑰和系統(tǒng)中的公鑰一一對(duì)應(yīng),用來(lái)驗(yàn)證系統(tǒng)的完整性和加密狗的合法性。
加密狗可以用普通軟盤(pán)或U盤(pán)代替,也可以專(zhuān)門(mén)制作。
用戶(hù)登錄時(shí),除提供用戶(hù)名和密碼外,還要提供加密狗,三者都通過(guò)驗(yàn)證才允許用戶(hù)登錄。軟件在用戶(hù)登錄時(shí)驗(yàn)證加密狗內(nèi)容,并在用戶(hù)登錄成功以后定期(如10分鐘)檢查加密狗的合法性,一旦發(fā)現(xiàn)異常,立刻關(guān)閉軟件。
加密狗生成與驗(yàn)證模塊設(shè)計(jì)如下:
(1)軟件第一次安裝時(shí),根據(jù)用戶(hù)提供的p和q值計(jì)算得到公鑰對(duì)(n,e),隱藏存儲(chǔ)于系統(tǒng)中;計(jì)算得到私鑰對(duì)(n,d),寫(xiě)入加密狗中。
(2)軟件的完整性和加密狗的合法性驗(yàn)證有兩種方式:用戶(hù)登錄時(shí),軟件隨機(jī)產(chǎn)生一個(gè)大數(shù),用系統(tǒng)中的公鑰變換后送至加密狗,用加密狗中的私鑰變換后再與原始隨機(jī)數(shù)比較,若相同則通過(guò)驗(yàn)證(圖2中method 1);用戶(hù)登錄時(shí),軟件隨機(jī)產(chǎn)生一個(gè)大數(shù),送至加密狗用私鑰變換后,再用系統(tǒng)中的公鑰變換后與原始隨機(jī)數(shù)比較,若相同則通過(guò)驗(yàn)證(圖2中method 2)。如果軟件被非法修改、加密狗被破壞、公鑰或私鑰被修改,則系統(tǒng)無(wú)法通過(guò)驗(yàn)證,從而保證數(shù)據(jù)的安全,避免非法訪問(wèn)。

(3)在不使用軟件時(shí),把軟件關(guān)閉,并取出加密狗,在需要使用軟件時(shí)再插入加密狗,并且要保證加密狗的安全,防止別人非授權(quán)使用。
五、應(yīng)用前景預(yù)測(cè)
財(cái)務(wù)數(shù)據(jù)是每個(gè)單位經(jīng)營(yíng)過(guò)程和結(jié)果的數(shù)據(jù)化體現(xiàn),是該單位所有數(shù)據(jù)的核心部分,在辦公自動(dòng)化、信息化時(shí)代的今天,如何加強(qiáng)財(cái)務(wù)管理系統(tǒng)的安全,避免財(cái)務(wù)數(shù)據(jù)的損壞、丟失、外泄是十分重要的。傳統(tǒng)的財(cái)務(wù)軟件只考慮使用用戶(hù)口令來(lái)保證系統(tǒng)的安全,但這樣使得用戶(hù)口令成為財(cái)務(wù)系統(tǒng)安全的瓶頸,一旦密碼被破譯,造成的損失將是不可估量和無(wú)法挽回的。財(cái)務(wù)軟件如果配合使用加密狗,在增加少量成本的情況下,會(huì)大幅度提高整個(gè)財(cái)務(wù)管理系統(tǒng)的安全性,有效地彌補(bǔ)財(cái)務(wù)數(shù)據(jù)安全的漏洞,為財(cái)務(wù)數(shù)據(jù)安全建立起新的防線。可以預(yù)見(jiàn),采用加密狗技術(shù)的財(cái)務(wù)軟件系統(tǒng)將更安全、更可靠且更加實(shí)用,加密狗技術(shù)的應(yīng)用前景廣闊。
主要參考文獻(xiàn)
[1] 賴(lài)溪松,韓亮,張真誠(chéng). 計(jì)算機(jī)密碼學(xué)及其應(yīng)用[M]. 北京:國(guó)防工業(yè)出版社,2001.
[2] 吳世忠,祝世雄,張文政. 應(yīng)用密碼學(xué)——協(xié)議、算法與C源程序[M]. 北京:機(jī)械工業(yè)出版社,2004.
[3] 李輝. 計(jì)算機(jī)安全學(xué)[M]. 北京:機(jī)械工業(yè)出版社,2005.
[4] 劉光. C++Builder程序設(shè)計(jì)導(dǎo)學(xué)[M]. 北京:清華大學(xué)出版社,2002.