1虛擬儀器軟件加密的方法
目前采用的加密方法通常分為大類:軟加密和硬加密軟加密即用純軟件方法來實(shí)現(xiàn)軟件的加密,主要有密碼方式、軟件自校驗(yàn)方式和鑰匙盤方式等,它具有成本低、升級快的優(yōu)勢;硬加密則是軟件和硬件組合起來的一種加密手段,加密后軟件執(zhí)行時(shí)需訪問相應(yīng)的硬件(如插在計(jì)算機(jī)擴(kuò)展槽上的卡或插在計(jì)算機(jī)串口上的軟件狗),并從硬件中獲得特定的數(shù)據(jù),通過對數(shù)據(jù)進(jìn)行處理后,判定軟件是否合法。硬加密具有軟加密不可比擬的優(yōu)點(diǎn),如加密強(qiáng)度高、性能好、方式靈活等。但目前市場主流的硬件加密狗大部分是針對等語言推出的,與語言不兼容。使用軟件平臺(tái)時(shí),只能通過調(diào)用兼容的語言來訪問硬件狗,這樣大大降低了應(yīng)用程序的執(zhí)行效率,同時(shí)由于硬件狗的不兼容性,給應(yīng)用程序的打包造成了很大的困難。
文中提出的基于虛擬儀器數(shù)采卡序列號的軟件加密方法,可使應(yīng)用程序與硬件板卡很好地結(jié)合。應(yīng)用程序只能在程序開發(fā)者指定的板卡上正確運(yùn)行,并且不需要添加任何硬件,其效果明顯好于上面"種方法??墒够?,的虛擬儀器軟件得到很好的保護(hù),又可維護(hù)程序開發(fā)者的利益。
系統(tǒng)結(jié)構(gòu)如圖-所示。由于儀器的外部沒有多余的插件,因此保持了整機(jī)的緊湊性和可擴(kuò)展性。另外,該加密方法具有兼容性好、讀寫速度快和開發(fā)周期短等優(yōu)點(diǎn)。虛擬儀器軟件通過內(nèi)嵌軟件模塊與數(shù)采卡進(jìn)行數(shù)據(jù)交換,用戶察覺不到等待時(shí)間。既在儀器軟件中加入反跟蹤、防拷貝等軟件加密算法,又利用硬件數(shù)采卡的特征參數(shù)與之配合,對虛擬儀器的軟件進(jìn)行保護(hù)。
虛擬儀器軟件加密方法的設(shè)計(jì)與實(shí)現(xiàn)數(shù)采卡是基于,的虛擬儀器不可缺少的基本配件,并且每塊數(shù)采卡都有一個(gè)惟一的標(biāo)識(shí),即數(shù)采卡序列號。可以利用該序列號的惟一性實(shí)現(xiàn)對軟件產(chǎn)品的加密,防止軟件產(chǎn)品的非法盜版。
使用數(shù)采卡序列號進(jìn)行虛擬儀器軟件產(chǎn)品的加密過程包括數(shù)采卡序列號的讀取和數(shù)采卡序列號在加密過程中的應(yīng)用。文中給出讀取數(shù)采卡序列號和利用它實(shí)現(xiàn)軟件加密的方法。該加密方法實(shí)現(xiàn)的流程如圖所示。
數(shù)采卡序列號的讀取方法讀取數(shù)采卡序列號的方法是利用屬性節(jié)點(diǎn),拉長屬性節(jié)點(diǎn)可以同時(shí)顯示或設(shè)置多個(gè)屬性。左擊屬性節(jié)點(diǎn),并選擇屬性,為該屬性輸入要讀取序列號的數(shù)采卡名稱。左擊屬性節(jié)點(diǎn)選擇,該屬性即可輸出數(shù)采卡的序列號。后面板程序框圖如示。
2注冊碼的存取和應(yīng)用
注冊碼的存放位置和加密
在軟件安裝時(shí)先讀取并存放數(shù)采卡序列號。應(yīng)用軟件運(yùn)行時(shí)也應(yīng)先讀取數(shù)采卡序列號,并與已存放的序列號對照,如果相等則繼續(xù)運(yùn)行應(yīng)用程序,否則做相應(yīng)的防止非法拷貝的處理。
數(shù)采卡序列號最簡單的存放位置可以直接寫入應(yīng)用程序的文件中,也可以保存在應(yīng)用程序的數(shù)據(jù)庫或系統(tǒng)的注冊表中。不論存放在何處,直接寫入數(shù)采卡序列號容易被用戶用技術(shù)手段破譯。因此有必要進(jìn)一步采用加密手段,可以使用多種成熟的或自己設(shè)計(jì)的加密算法對數(shù)采卡序列號進(jìn)行加密,使其不易被識(shí)別,以增加隱私性和靈活性。
由于應(yīng)用程序的數(shù)據(jù)庫和配置文件與應(yīng)用程序聯(lián)系比較緊密,因此易于跟蹤。而注冊表用來存儲(chǔ)計(jì)算機(jī)軟硬件各種配置的數(shù)據(jù),數(shù)據(jù)以二進(jìn)制方式存儲(chǔ),結(jié)構(gòu)相對復(fù)雜,編輯操作還可以根據(jù)用戶權(quán)限加以限制,因此加密功能更強(qiáng)。并且用戶可以把加密后的數(shù)據(jù)存儲(chǔ)在注冊表的任意位置,增加存放的靈活性,使得破譯更加困難。
文獻(xiàn)采用將安裝和注冊分開的方法,即在安裝時(shí)讀取數(shù)采卡序列號,通過一次加密向用戶提供授權(quán)碼,用戶用授權(quán)碼向開發(fā)者遠(yuǎn)程注冊,開發(fā)者向用戶回傳授權(quán)碼作第2次加密后的注冊碼,用戶經(jīng)注冊后,應(yīng)用程序才能在本地運(yùn)行。這種做法在應(yīng)用軟件中應(yīng)包含第一次加密算法和對應(yīng)第二次加密算法的解密算法。其優(yōu)點(diǎn)是利于分銷機(jī)制的運(yùn)行。
對于用戶數(shù)少的應(yīng)用軟件,可以采用注冊機(jī)的方式。通過由單獨(dú)的注冊機(jī)軟件讀取數(shù)采卡序列號,完成數(shù)采卡序列號的加密,寫入注冊表,再由應(yīng)用軟件讀取數(shù)采卡序列號并對其進(jìn)行加密,讀取注冊表相應(yīng)鍵值,比較2個(gè)值相等與否的方式實(shí)現(xiàn)軟件的加密。
注冊表的讀寫
面板的子程序?qū)崿F(xiàn)對注冊表的訪問。將數(shù)據(jù)寫入注冊表的方法是通過子程序在注冊表中創(chuàng)建一個(gè)鍵值,利用子程序?qū)?shù)據(jù)寫入注冊表中鍵值指定的位置,最后利用關(guān)閉注冊表的鍵值,從注冊表中讀取數(shù)據(jù)的方法與此類似。寫入注冊表數(shù)據(jù)的后面板程序框圖如I所示。
此軟件加密方法已在研發(fā)的基于@7虛擬儀器技術(shù)的幅相特性測量系統(tǒng)中獲得了很好的應(yīng)用,它具有實(shí)現(xiàn)簡單,隱蔽性好,成本低的特點(diǎn)。該方法替代了原先使用的軟件狗加密方法,不僅降低了開發(fā)成本,而且提高了程序的執(zhí)行效率。實(shí)踐證明該方法對軟件加密保護(hù)的有效性。
結(jié)語
利用數(shù)采卡序列號對基于機(jī)的虛擬儀器軟件進(jìn)行加密,這樣可以保證軟件僅在被安裝指定數(shù)采卡的機(jī)上正常運(yùn)行,有效防止了軟件產(chǎn)品的非法拷貝。該軟件加密方法在研發(fā)的振動(dòng)幅相特性測量系統(tǒng)上得到了很好的應(yīng)用。所研發(fā)的振動(dòng)幅相特性測量系統(tǒng)不再需要使用加密狗加密,直接利用現(xiàn)有的硬件實(shí)現(xiàn)了軟件的硬加密。該方法利用基于機(jī)的虛擬儀器數(shù)采卡序列號,實(shí)現(xiàn)成本低,同時(shí)可以自由結(jié)合各種成熟的加密算法,具有較大的靈活性,可以作為用戶數(shù)較少的中、小軟件產(chǎn)品進(jìn)行版權(quán)保護(hù)的一種行之有效的方法。