段淼
(吉林建筑工程學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,長春 130118)
隨著計(jì)算機(jī)技術(shù)的廣泛應(yīng)用,計(jì)算機(jī)信息安全已成為當(dāng)前信息社會非常關(guān)注的問題.在應(yīng)用軟件開發(fā)中,Visual FoxPro作為數(shù)據(jù)庫管理軟件的安全性、保密性一直是開發(fā)和應(yīng)用人員最為關(guān)心的問題.對數(shù)據(jù)庫系統(tǒng)中的敏感數(shù)據(jù)進(jìn)行加密處理,實(shí)現(xiàn)數(shù)據(jù)存儲的安全保護(hù),是大多數(shù)用戶所希望的.
數(shù)據(jù)加密的技術(shù)核心是密碼學(xué),加密是對原碼變換產(chǎn)生得到偽碼的過程,解密是加密的逆過程.原碼是指待加密的消息,可能是數(shù)字序列、文本文件、位圖、數(shù)字化的語音序列或數(shù)字化的視頻圖像等,可被傳送或存儲.偽碼是指加密后的信息,通過壓縮和加密的結(jié)合,偽碼的大小不能確定,有時與原碼一樣大,有時稍大或稍小.對一段數(shù)據(jù)進(jìn)行加密要通過“加密算法和密鑰”才能實(shí)現(xiàn).在實(shí)際應(yīng)用中,密鑰的構(gòu)造是整個數(shù)據(jù)安全保護(hù)系統(tǒng)關(guān)鍵.加密算法E和對外保密的解密算法D,它們須滿足條件:①D是E的逆,即D[E(M)]= M;②E和D都容易計(jì)算;③由E出發(fā)去求解D十分困難.
上述條件可看出,公開密鑰密碼體制下,加密密鑰不等于解密密鑰.加密密鑰可對外公開,使任何用戶都可將傳送給此用戶的信息用公開密鑰加密發(fā)送,而該用戶惟一保存的私人密鑰是保密的,也只有它能將偽碼復(fù)原、解密[1].雖然解密密鑰理論上可由加密密鑰推算出來,但這種算法設(shè)計(jì)在實(shí)際操作上是不可能的,或者即便能夠推算出,也是需要花費(fèi)很長的時間.
固定密碼,就是系統(tǒng)只有一個密碼,且是固定不可變的.其核心是用IF和ACCEPT語句來實(shí)現(xiàn),將變量與輸入值比較,所謂的密碼是程序設(shè)計(jì)時設(shè)定的,以后應(yīng)用時無法修改.如果修改,就要改變源程序,或者可以編寫一段子程序用來修改密碼,但其保密性和靈活性都很差.
簡單加密的固定密碼,是指把密碼進(jìn)行簡單的加密,但密碼仍然是固定不變的.簡單加密一般有兩種:“鑰匙盤”法和“變換法”.“鑰匙盤”法,就是把密碼存放在一張軟盤上,使用時,把“鑰匙盤”插入計(jì)算機(jī),系統(tǒng)程序讀取軟盤中的密碼;或把密碼和操作員姓名存放到數(shù)據(jù)庫中,此數(shù)據(jù)庫存放于軟盤中,使用時把“鑰匙盤”插入計(jì)算機(jī),系統(tǒng)讀取軟盤中的的密碼和操作員姓名.這種加密方法保密性要好些,但每次使用都要用“鑰匙盤”進(jìn)入系統(tǒng),操作較繁瑣.變換法,就是通過對密碼的運(yùn)算,使密碼發(fā)生變化的方法,一般使用的加密語句為:
其中,函數(shù)CHR(),是用來換算ASCII碼的,換算后的PSD是ABC9.用這種簡單的換算,可以避免密碼被直接發(fā)現(xiàn),如果和上述兩種方法混合使用,保密性就大大加強(qiáng)了.
可變密碼指其密碼值可由設(shè)置自行改變,這種方法一般由文件保存密碼,且密碼經(jīng)過加密運(yùn)算.密碼的加密運(yùn)算方法很多,常用的有:轉(zhuǎn)換法、位移法、時間法、隨機(jī)法等.
轉(zhuǎn)換法,就是把輸入的密碼經(jīng)過轉(zhuǎn)換計(jì)算,轉(zhuǎn)換成保存密碼,取密碼時,再經(jīng)過運(yùn)算,把密碼還原.不定時密碼是可變密碼的一種,其密碼的出現(xiàn)是通過隨機(jī)方式詢問用戶,這種密碼較為隱蔽,其方法如下:首先聲明一個變量,用來計(jì)數(shù),在每一個過程、函數(shù)、或者命令執(zhí)行前,累加該變量,當(dāng)該變量值等于隨機(jī)值時,調(diào)用密碼查詢程序[2].
簡單加密的變換密碼,是利用時間函數(shù)來加密的算法.這種加密方法由變化的時間和固定字符構(gòu)成,密碼每天不同,其核心語句是:
其中,CDOW()函數(shù)功能是根據(jù)輸入年月日,返回星期幾(字符型).操作者根據(jù)今天是星期幾,將星期的前3個字母和固定的"VFPSYSTEM"輸入,與變量PWD比較.程序會把今天的日期換算成星期數(shù),然后取前3位,并加上"VFPSYSTEM",合成今天的密碼變量PWD,這樣就實(shí)現(xiàn)了每天都有不同的密碼,加強(qiáng)了密碼的保密性.
上述幾種加密方法都是傳統(tǒng)的簡單加密方法,其特點(diǎn)為簡單、保密性差、密碼單一、保護(hù)能力較低,其密碼容易被發(fā)現(xiàn).
隨機(jī)法,是指最終出現(xiàn)在口令表中密鑰是以隨機(jī)方式體現(xiàn)的,在不同的時刻輸入相同的密鑰存儲在口令表中的密鑰是不同的,原因是在進(jìn)行加密算法的過程中引入了隨機(jī)函數(shù).
數(shù)據(jù)隨機(jī)加密,是一種利用隨機(jī)函數(shù)的隨機(jī)數(shù)序列與數(shù)據(jù)庫數(shù)據(jù)進(jìn)行異或運(yùn)算,實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)加密的方法[3].在VFP軟件中,提供了一個隨機(jī)函數(shù)SECONDS().由隨機(jī)函數(shù)SECONDS()返回一個從午夜到當(dāng)前的秒值(精確到微秒),根據(jù)SECONDS()函數(shù)值,隨機(jī)函數(shù)生成一個隨機(jī)種子.對于最初給定的隨機(jī)種子,隨機(jī)函數(shù)生成一個隨機(jī)數(shù)序列.使用此隨機(jī)數(shù)序列與一個字符串進(jìn)行異或運(yùn)算,生成一個隨機(jī)密鑰,其長度由字符串長度決定.根據(jù)隨機(jī)密鑰,隨機(jī)函數(shù)生成一個新的隨機(jī)種子.根據(jù)此隨機(jī)種子,隨機(jī)函數(shù)生成一個用于加密的隨機(jī)數(shù)序列,使用此隨機(jī)數(shù)序列對數(shù)據(jù)庫數(shù)據(jù)進(jìn)行異或運(yùn)算,實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的加密.
這種加密算法的優(yōu)點(diǎn)是:第一,隨機(jī)加密實(shí)現(xiàn)了“一次一密”的加密,安全性高;第二,數(shù)據(jù)庫數(shù)據(jù)隨機(jī)加密以后,除了增加密鑰外,數(shù)據(jù)量沒有明顯增加;第三,算法簡單,容易實(shí)現(xiàn).
從用戶密碼到存庫的隨機(jī)偽碼之間的變換由加密函數(shù)和解密函數(shù)完成.從用戶密鑰到隨機(jī)偽碼之間的變換是一個加密過程,加密過程的思想是對用戶密鑰進(jìn)行復(fù)雜化、隱蔽化處理.
在VFP中采用隨機(jī)偽碼存庫的方法可以實(shí)現(xiàn)一個應(yīng)用系統(tǒng)的多用戶權(quán)限控制,加密可靠,不易破解,且每次重新設(shè)定密碼時所產(chǎn)生的偽碼都不相同,通過變換生成的偽碼沒有任何規(guī)律性,即使從數(shù)據(jù)庫中擦除偽碼也無法進(jìn)入系統(tǒng),從而實(shí)現(xiàn)了可靠的密碼權(quán)限控制[4].假設(shè)真碼用zm變量存放,經(jīng)過隨機(jī)偽碼加密算法加密后的偽碼用wm變量保存,具體加密過程如下:
多隨機(jī)數(shù)加密算法是用多個密鑰進(jìn)行加密的技術(shù).采用多隨機(jī)數(shù)加密時,對于原碼字符的ASCII值,都產(chǎn)生一個隨機(jī)數(shù)(即密鑰)與之運(yùn)算,生成另外一個0~255之間的數(shù),然后再將其以3個字符方式與密鑰合并成4個字符生成偽碼,最后將全部字符生成的這樣的偽碼聯(lián)結(jié)起來形成對應(yīng)的加密數(shù)字序列,并在之前加上長度,加密后的數(shù)據(jù)長度是原數(shù)的4倍多,把其放在字段中保存[5].其中,長度存放的時候也用了4個字符,并加入隨機(jī)數(shù),提高數(shù)據(jù)加密的程度.當(dāng)打開表的時候,用加密函數(shù)將原碼轉(zhuǎn)換成偽碼進(jìn)行存貯,從表中無法直接看到原碼,只有程序才能動態(tài)看到原碼,保密性很強(qiáng).假設(shè)cc是需要加密的字符串,多隨機(jī)數(shù)加密算法的核心代碼如下:
解密時則采用相反的方法,每個字符都要與這個字符有關(guān)的隨機(jī)數(shù)運(yùn)算,由于需要用到多個隨機(jī)密鑰,安全系數(shù)有較大提高.
通過對VFP數(shù)據(jù)庫系統(tǒng)加密技術(shù)中的各種加密方法的深入比較,能夠看出對于利用隨機(jī)加密算法加密的數(shù)據(jù),使用常規(guī)的方法一般是很難破解的,完全可以實(shí)現(xiàn)一個應(yīng)用系統(tǒng)的多用戶權(quán)限控制功能.隨機(jī)加密算法中的多隨機(jī)數(shù)加密算法,提高了應(yīng)用軟件的數(shù)據(jù)保存的安全性,若能與其他加密算法結(jié)合,將實(shí)現(xiàn)用戶使用的權(quán)限控制和對數(shù)據(jù)庫源表的加密,從而有效地防止非法用戶的使用與侵入,大大提高數(shù)據(jù)庫系統(tǒng)的安全性與可靠性.
[1]賴溪松,韓 亮,張真城.計(jì)算機(jī)密碼學(xué)及應(yīng)用[M].北京:北京國防工業(yè)出版社,2001:8-10.
[2]馮 偉.VFP中的數(shù)據(jù)加密技術(shù)[J].淮北職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006,2(5):81-82.
[3]徐 珂.基于VF環(huán)境的數(shù)據(jù)庫加密技術(shù)[J].廣西輕工業(yè),2007,23(4):67-68.
[4]陳 君.淺談Visual FoxPro數(shù)據(jù)庫系統(tǒng)的加密技術(shù)[J].河南機(jī)電高等專科學(xué)校學(xué)報(bào),2006,1(14):27-29.
[5]史濟(jì)民,湯濟(jì)全.Visual FoxPro及其應(yīng)用系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2001:156-158.