專利名稱:一種Windows系統(tǒng)下的安全輸入方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息安全領(lǐng)域,特別涉及一種Windows系統(tǒng)下的安全輸入的方法。
背景技術(shù):
模式對話框是Windows系統(tǒng)定義的一種特殊的"窗口類",通俗的講就是, 如果模式對話框不結(jié)束,即模式對話框彈出時(shí)便會中止主程序的執(zhí)行,直到該模 式對話框返回才能繼續(xù)執(zhí)行主程序,具體就是DoModal函數(shù)(VC中DoModal 函數(shù)的作用是用來顯示模式對話框的,即用它來彈出一個(gè)模式對話框)不返回的 話,DoModal函數(shù)的下一句程序就無法運(yùn)行, 一般需要輸入?yún)?shù)時(shí)要用這種方法。
隨著網(wǎng)絡(luò)的發(fā)展,身份認(rèn)證、網(wǎng)上銀行、VPN等諸多涉及領(lǐng)域都需要調(diào)用 模式對話框,由用戶或智能密鑰裝置等途徑向該模式對話框中輸入一些重要的或 敏感的參數(shù)來實(shí)現(xiàn),比如密碼、財(cái)務(wù)數(shù)據(jù)、口令等等。但是,由于客戶端一般都 是用戶個(gè)人計(jì)算機(jī),安全級別一般很低,非常容易被木馬、鉤子病毒等攻擊,所 以如果客戶端計(jì)算機(jī)被木馬鉤子病毒(包括鍵盤鉤子病毒)等遠(yuǎn)程控制,便很容 易在彈出的模式對話框中尤其是標(biāo)準(zhǔn)模式對話框中,通過枚舉窗口鉤取由用戶或 智能密鑰裝置等途徑在該對話框中輸入的重要/敏感信息,給合法用戶的正常交 易帶來極大的安全隱患。
如果希望全面最大可能地自定義控件,包括自定義控件界面以及控件行為 等,則需要創(chuàng)建一個(gè)自繪控件。自繪控件顧名思義,需要自定義控件的圖形化表 示形式,也就是自定義控件界面。創(chuàng)建自繪控件的好處在于能夠完全地控制界面 的每一部分。使用自繪控件實(shí)現(xiàn)的自繪模式對話框相對標(biāo)準(zhǔn)模式對話框而言,最 大的優(yōu)點(diǎn)是可以防止多種類型的鉤子程序通過枚舉窗口將輸入的重要/敏感信息 鉤取。
桌面是一組圖形界面、目錄窗口、菜單和鉤子的集合,只有處于激活狀態(tài)的 桌面才能夠顯示,并且與用戶進(jìn)行交互。在Windows操作系統(tǒng)中,可以另外啟動一個(gè)桌面,在新啟動的桌面中可以有效的屏蔽掉大部分黑客或木馬鉤子病毒的 遠(yuǎn)程攻擊,但是在新啟動的桌面中需要利用一個(gè)新的線程才能調(diào)用模式對話框, 因?yàn)镸FC窗口類是不能實(shí)現(xiàn)跨線程調(diào)用DoModal函數(shù)的,這樣雖然屏蔽了大部 分的黑客或木馬鉤子病毒的遠(yuǎn)程攻擊,但是卻存在在新啟動桌面的模式對話框中
輸入的信息被保存在該桌面的數(shù)據(jù)結(jié)構(gòu)中,不能在原桌面中使用的問題;而 DialogBox函數(shù)雖然可以跨線程調(diào)用,但是由于DialogBox函數(shù)只能定義自己的 消息映射,不能定義類的實(shí)例,即不能使用類的成員變量和消息映射,也就是說 只能使用標(biāo)準(zhǔn)模式對話框,而不能使用非標(biāo)準(zhǔn)(非缺省)的MFC控件,尤其是 自繪控件。
發(fā)明內(nèi)容
為了解決上述在同一桌面中模式對話框中輸入的內(nèi)容易被黑客或木馬鉤子 病毒鉤獲,且在不同桌面中不能實(shí)現(xiàn)跨線程顯示模式對話框及跨線程使用模式對 話框自繪控件的問題,本發(fā)明提供了一種安全輸入的方法,通過全局變量共享的 方式來實(shí)現(xiàn)跨線程顯示模式對話框,尤其是實(shí)現(xiàn)對自繪控件等非標(biāo)準(zhǔn)(非缺省) 的MFC控件的使用,進(jìn)一歩提高輸入的安全性。
- 一種安全輸入方法,包括如下歩驟
1、 第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程聲明與模式對話框的輸入相對應(yīng)的一個(gè) 或多個(gè)數(shù)據(jù)變量為全局變量,定義模式對話框的消息映射函數(shù)及與模式對話框的 控件對應(yīng)的類,聲明所述類的實(shí)例為全局變量,定義所述類的初始化方法和自定
義消息映射,并在模式對話框的自繪控件對應(yīng)的類中定義繪制函數(shù);
2、 第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程創(chuàng)建第二線程,所述第二線程創(chuàng)建第二 桌面,設(shè)置自身工作在第二桌面中,將程序運(yùn)行環(huán)境從第一桌面切換到第二桌面;
3、 第二線程利用DialogBox函數(shù)顯示模式對話框,所述消息映射函數(shù)利用 所述被聲明為全局變量的數(shù)據(jù)變量和被聲明為全局變量的實(shí)例調(diào)用所述初始化 方法對所述控件進(jìn)行初始化,并調(diào)用所述繪制函數(shù)實(shí)現(xiàn)自繪控件的繪制;
4、 第二線程等待接收用戶在所述構(gòu)造的模式對話框中輸入的數(shù)據(jù),更新所 述被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù);
5、 第二線程關(guān)閉第二桌面,將當(dāng)前運(yùn)行環(huán)境切換回第一桌面,結(jié)束自身運(yùn) 行,第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程獲取所述更新后的被聲明為全局變量的數(shù)據(jù)
步驟1中定義所述類的初始化方法包括1) 將類與控件窗口關(guān)聯(lián)起來;
2) 用所述自定義消息映射代替控件的缺省消息映射。
優(yōu)選的,利用SetPr叩函數(shù)和GetPr叩函數(shù)將類與控件窗口關(guān)聯(lián)起來。 優(yōu)選的,利用SetWindowLong函數(shù)用所述自定義消息映射代替控件的缺省消 息映射。
更新被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù)的方法具體為將接收到 的數(shù)據(jù)存儲在被聲明為全局變量的數(shù)據(jù)變量中。
更新被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù)的方法具體為實(shí)現(xiàn)一個(gè) 統(tǒng)一的更新函數(shù),在DialogBox函數(shù)返回時(shí)將接收到的數(shù)據(jù)存儲在對應(yīng)的被聲明 為全局變量的數(shù)據(jù)變量中。
本發(fā)明的有益效果是本發(fā)明提供的安全輸入的方法,通過全局變量的共享, 不但可以有效避免在同一桌面中模式對話框中輸入的參數(shù)易被黑客或木馬鉤子 病毒(包括鍵盤鉤子病毒等)鉤取的危險(xiǎn),大大的提高了安全性;同時(shí)又解決了 在不同桌面中不能實(shí)現(xiàn)跨線程使用和顯示模式對話框的問題及跨線程使用模式 對話框的自繪控件的問題,可以有效屏蔽掉可以自動尋找當(dāng)前活動桌面,鉤取窗 口輸入內(nèi)容的高級鉤子病毒,進(jìn)一歩解決了安全輸入的問題。
圖1為本發(fā)明實(shí)施例1提供的跨線程顯示模式對話框方法的流程圖; 圖2為本發(fā)明實(shí)施例2提供的安全輸入的方法在智能密鑰裝置中一種優(yōu)選應(yīng) 用流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖和實(shí)施例對 本發(fā)明實(shí)施方式做進(jìn)一歩地詳細(xì)描述。 實(shí)施例1:
參見圖l,為本發(fā)明實(shí)施例提供的一種Windows系統(tǒng)下的安全輸入方法,包
括
步驟101:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程聲明與模式對話框的輸入相對應(yīng) 的一個(gè)或多個(gè)數(shù)據(jù)變量為全局變量,定義模式對話框的消息映射函數(shù)及與模式對 話框的控件對應(yīng)的類,聲明上述類的實(shí)例為全局變量,定義上述類的初始化方法和自定義消息映射,并在模式對話框的自繪控件對應(yīng)的類中定義繪制函數(shù); 其中定義上述類的初始化方法包括
1) 將類與控件窗口關(guān)聯(lián)起來;
2) 用類的自定義消息映射代替控件的缺省消息映射。
優(yōu)選的,利用SetProp函數(shù)和GetPr叩函數(shù)將類與控件窗口關(guān)聯(lián)起來。 優(yōu)選的,利用SetWindowLong函數(shù)用類的自定義消息映射代替控件的缺省消 息映射。
歩驟102:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程創(chuàng)建第二線程; 比如可以采用
UINT hUIThread =
—beginthreadex(NUIX,0,LoginUIFunc,&arg,0,&dwThreadlD);
實(shí)現(xiàn),當(dāng)然也可以采用其他類似的方法實(shí)現(xiàn)。
步驟103:第二線程創(chuàng)建第二桌面,設(shè)置自身工作在第二桌面中; 優(yōu)選的,可以采用
hdesk = CreateDesktop(sDeskName,NULL,而LL,0,MAXIMUM—ALLOWED,NULL); SetThreadDesktop(hdesk);實(shí)現(xiàn);
實(shí)際應(yīng)用中,可以對第一桌面進(jìn)行截屏,將獲得的圖片設(shè)為第二桌面的壁紙, 使得用戶察覺不到桌面的切換。進(jìn)一步地,對圖片進(jìn)行加灰之類的處理再設(shè)為壁 紙,就可以獲得與Windows VISTA安全虛擬桌面類似的效果,等等。 步驟104:第二線程將程序運(yùn)行環(huán)境從第一桌面切換到第二桌面; 優(yōu)選的,可以采用SwitchDesktop(hdesk);實(shí)現(xiàn),當(dāng)然也可以采用其他類似 的方法實(shí)現(xiàn)。
步驟105:第二線程利用DialogBox函數(shù)顯示模式對話框,上述消息映射函 數(shù)利用上述被聲明為全局變量的數(shù)據(jù)變量和被聲明為全局變量的實(shí)例調(diào)用上述 初始化方法對該控件進(jìn)行初始化,并調(diào)用上述繪制函數(shù)實(shí)現(xiàn)自繪控件的繪制;
其中繪制函數(shù)為用于提供對模式對話框進(jìn)行自繪的操作方法,比如提供畫圈 的方法、畫按鈕的方法、畫對話框的方法等等,舉個(gè)網(wǎng)絡(luò)交易的例子具體說明, 在網(wǎng)絡(luò)交易中會提醒輸入帳號、密碼或交易金額等,此時(shí)可以在第二桌面中采用 自繪控件繪制一個(gè)軟鍵盤,當(dāng)軟鍵盤在對應(yīng)的位置收到點(diǎn)擊操作事件時(shí),便會在 對應(yīng)的位置采集到一個(gè)位置信息,當(dāng)全部輸入完畢后,在第二桌面中實(shí)際上是獲 取了一系列的位置信息,按照預(yù)先約定的映射關(guān)系映射成相應(yīng)的數(shù)據(jù)即可,相對 于在第二桌面中直接使用標(biāo)準(zhǔn)的模式對話框而言,可以有效屏蔽掉一些高級的鉤子病毒,防止其自動查找當(dāng)前活動桌面,并通過窗口枚舉將在對話框中輸入的信 息鉤取,所以,利用跨線程調(diào)用模式對話框的自繪控件功能,大大提高了信息輸 入的安全性。
歩驟106:第二線程等待接收用戶在上述顯示的模式對話框中輸入的數(shù)據(jù), 更新上述被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù);
也可以實(shí)現(xiàn)一個(gè)統(tǒng)一的更新函數(shù),在DialogBox函數(shù)返回時(shí)將接收到的所有 數(shù)據(jù)存儲在對應(yīng)的被聲明為全局變量的數(shù)據(jù)變量中。
步驟107:第二線程關(guān)閉第二桌面,將當(dāng)前運(yùn)行環(huán)境切換回第一桌面,結(jié)束 自身運(yùn)行;
比如SwitchDesktop(hdeskCurrent);
CloseDesktop(hdesk);
歩驟108:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程獲取被聲明為全局變量的數(shù)據(jù)變 量,完成跨線程數(shù)據(jù)交互。
實(shí)施例2:
參見圖2,為本發(fā)明實(shí)施例提供的安全輸入方法的一個(gè)優(yōu)選實(shí)例安全輸入 方法在智能密鑰裝置中的一種具體應(yīng)用方法。
智能密鑰裝置目前被廣泛應(yīng)用在身份識別、網(wǎng)上銀行和VPN (Virtual Private Network,虛擬專用網(wǎng)絡(luò))等方面,智能密鑰裝置是一種帶有處理器和存儲器的 小型硬件裝置,可以通過計(jì)算機(jī)的數(shù)據(jù)通訊接口與計(jì)算機(jī)連接, 一般是通過USB (Universal Serial Bus,通用串行總線)接口與計(jì)算機(jī)相連,通常被稱為USB KEY 或USB Token (身份認(rèn)證設(shè)備)。智能密鑰裝置可以對其內(nèi)部存儲的數(shù)據(jù)進(jìn)行加、 解密處理,即可以將智能密鑰裝置用于軟件版權(quán)保護(hù)領(lǐng)域;另外可以將一些重要 信息存儲到智能密鑰裝置中,用以保證安全性或者防止遺忘,比如密碼等。目前, 較高端的智能密鑰裝置都是可編程的,即可以實(shí)現(xiàn)在智能密鑰裝置中運(yùn)行預(yù)先存 入其中的代碼。智能密鑰裝置具有物理抗攻擊的特性,安全性很高。
基于智能密鑰裝置的身份認(rèn)證方式是近幾年發(fā)展起來的一種方便、安全的身 份認(rèn)證方式 一般采用PIN (個(gè)人身份識別)碼驗(yàn)證用戶身份的合法性,在進(jìn)行 身份認(rèn)證時(shí)將智能密鑰裝置與計(jì)算機(jī)相連,計(jì)算機(jī)中會顯示一個(gè)模式對話框讓用 戶輸入PIN碼,用戶在計(jì)算機(jī)上輸入PIN碼,智能密鑰裝置會將用戶輸入的PIN 碼與其內(nèi)部存儲的PIN碼進(jìn)行比較,驗(yàn)證該P(yáng)IN碼的正確性,當(dāng)用戶輸入的PIN 碼正確時(shí),說明該用戶為該智能密鑰裝置的合法持有者,允許該用戶使用該智能 密鑰裝置;否則,禁止用戶使用該智能密鑰裝置。如前所述,由于客戶端一般都是用戶個(gè)人計(jì)算機(jī),安全級別一般很低,非常 容易被黑客攻擊或中木馬鉤子病毒等,所以如果客戶端計(jì)算機(jī)被黑客或木馬鉤子 病毒等遠(yuǎn)程控制,便可以在彈出的模式對話框中截獲由用戶在該模式對話框中輸 入的重要或敏感參數(shù)(PIN碼等),給合法用戶帶來極大的安全隱患。所以,此 時(shí)為了進(jìn)一歩的提高安全性,防止黑客或木馬鉤子病毒等遠(yuǎn)程截獲用戶的PIN 碼,冒用智能密鑰裝置,這就需要利用本發(fā)明實(shí)施例提供的跨線程顯示模式對話 框的方法,重新開啟一個(gè)桌面,在新的桌面中開啟一個(gè)模式對話框,用來輸入 PIN碼,從而大大提高安全性,具體方法
步驟201:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程定義模式對話框的消息映射函數(shù) 及與模式對話框的控件對應(yīng)的類,定義上述類的初始化方法和自定義消息映射, 并在模式對話框的自繪控件對應(yīng)的類中定義繪制函數(shù);
其中定義上述類的初始化方法包括
1) 將類與控件窗口關(guān)聯(lián)起來;
2) 用類的自定義消息映射代替控件的缺省消息映射。
歩驟202:創(chuàng)建各個(gè)類的實(shí)例,并聲明該實(shí)例為全局變量;定義與模式對話 框的輸入對應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)變量,并聲明該數(shù)據(jù)變量為全局變量; 歩驟203:將智能密鑰裝置與主機(jī)連接;
歩驟204:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程對被聲明為全局變量的數(shù)據(jù)變量 設(shè)置初始值;
步驟205:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程監(jiān)控是否有對智能密鑰裝置私有 區(qū)的操作,當(dāng)監(jiān)控到有對該私有區(qū)的操作時(shí)執(zhí)行步驟206,否則繼續(xù)監(jiān)控; 步驟206:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程創(chuàng)建第二線程; 比如可以采用
畫T hUIThread =
—beginthreadex(NULL,0,LoginUIFunc,&arg,0,&dwThreadlD);
實(shí)現(xiàn),當(dāng)然也可以采用其他類似的方法實(shí)現(xiàn)。
歩驟207:第二線程打開/創(chuàng)建第二桌面,并設(shè)置自身工作在第二桌面中; 優(yōu)選的,可以采用
hdesk = CreateDesktop(sDeskName,NULL,NUIX,0,MAXIMUM—ALLOWED, NULL); SetThreadDesktop(hdesk);
優(yōu)選的,可以對第一桌面進(jìn)行截屏,將獲得的圖片設(shè)為第二桌面的壁紙,使 得用戶察覺不到桌面的切換。進(jìn)一步地,對圖片進(jìn)行加灰之類的處理再設(shè)為壁紙,就可以獲得與Windows VISTA安全虛擬桌面類似的效果。 實(shí)現(xiàn),當(dāng)然也可以采用其他類似的方法實(shí)現(xiàn)。
歩驟208:第二線程將程序運(yùn)行環(huán)境從第一桌面切換到第二桌面;
優(yōu)選的,可以采用SwitchDeskt叩(hdesk);實(shí)現(xiàn),當(dāng)然也可以采用其他類似的 方法實(shí)現(xiàn)。
步驟209:第二線程利用DialogBox函數(shù)顯示模式對話框,上述消息映射函 數(shù)利用上述被聲明為全局變量的數(shù)據(jù)變量和被聲明為全局變量的實(shí)例調(diào)用上述 初始化方法對該控件進(jìn)行初始化,并調(diào)用上述繪制函數(shù)實(shí)現(xiàn)自繪控件的繪制;
第二線程利用DialogBox函數(shù)調(diào)用繪制函數(shù)顯示可自繪的模式對話框,該模 式對話框?yàn)槔美L制函數(shù)繪制有一個(gè)軟鍵盤的模式對話框,當(dāng)軟鍵盤在對應(yīng)的按 鍵位置收到點(diǎn)擊操作事件時(shí),便會在對應(yīng)的位置采集到一個(gè)位置信息,當(dāng)數(shù)據(jù)全 部輸入完畢后,在第二桌面中實(shí)際上是獲取了一系列的由圓組成的位置信息,按 照預(yù)先約定的映射關(guān)系映射成相應(yīng)的數(shù)據(jù);
其中繪制函數(shù)為用于提供對模式對話框進(jìn)行自繪的操作方法,比如提供畫圈 的方法、畫按鈕的方法、畫對話框的方法等等。
其中第二線程使用DialogBox函數(shù)顯示模式對話框,并在DialogBox函數(shù)中 調(diào)用上述模式對話框?qū)?yīng)的自定義消息映射;
優(yōu)選的,可以采用如下方法實(shí)現(xiàn)
ret = DialogBox(hlnst,MAKEINTRESOURCE(IDD—DLG—LOGIN), NULL, LoginUI—WndProc);
其中IDD—DLG—LOGIN是模式對話框的資源ID, LoginUI_WndProc是模式
對話框?qū)?yīng)的自定義消息映射。
當(dāng)然也可以采用其他類似的方法實(shí)現(xiàn)。
步驟210:第二線程接收到用戶在模式對話框的軟鍵盤中輸入的PIN碼后, 將該P(yáng)IN碼送入智能密鑰裝置中進(jìn)行認(rèn)證,并將認(rèn)證結(jié)果返回到第二桌面中的第 二線程;
步驟211:第二線程等待接收認(rèn)證結(jié)果后,將認(rèn)證結(jié)果存儲在被聲明為全局 變量的數(shù)據(jù)變量中;
也可以實(shí)現(xiàn)一個(gè)統(tǒng)一的更新函數(shù),在DialogBox函數(shù)返回時(shí)將認(rèn)證結(jié)果存儲
在對應(yīng)的被聲明為全局變量的數(shù)據(jù)變量中。
步驟212:第二線程關(guān)閉第二桌面,將當(dāng)前運(yùn)行環(huán)境切換回第-一桌面,結(jié)束 自身運(yùn)行;
比如SwitchDesktop(hdeskCurrent);
10CloseDesktop(hdesk);當(dāng)然,也可以采用其他類似的方法實(shí)現(xiàn)。 步驟213:第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程獲取全局變量的內(nèi)容后,依據(jù)認(rèn) 證結(jié)果確定是否允許使用智能密鑰裝置的私有區(qū),完成跨線程數(shù)據(jù)交互。
具體的是,當(dāng)?shù)谝蛔烂娈?dāng)前運(yùn)行的線程或進(jìn)程獲取的全局變量的內(nèi)容是認(rèn)證 成功(比如全局變量的結(jié)果是"真"即值為1)時(shí),允許對智能密鑰裝置私有區(qū) 的訪問操作;當(dāng)?shù)谝蛔烂娈?dāng)前運(yùn)行的線程或進(jìn)程獲取的全局變量的內(nèi)容是認(rèn)證失 敗(比如全局變量的結(jié)果是"假"即值為0)時(shí),不允許對智能密鑰裝置私有區(qū) 的訪問操作。
該種方法可以有效避免在同一桌面中模式對話框中輸入的內(nèi)容易被黑客或 木馬鉤子病毒(包括很常見的鍵盤鉤子病毒)截獲的危險(xiǎn),同時(shí)又解決了在不同 桌面中不能實(shí)現(xiàn)跨線程使用和顯示模式對話框的問題,大大的提高了安全性。
當(dāng)然,實(shí)際應(yīng)用中,歩驟210 歩驟213還可以是
步驟210':第二線程接收到用戶在模式對話框的軟鍵盤中輸入的PIN碼后,
將PIN碼存儲在被聲明為全局變量的數(shù)據(jù)變量中;
也可以實(shí)現(xiàn)一個(gè)統(tǒng)一的更新函數(shù),在DialogBox函數(shù)返回時(shí)將PIN碼存儲在 對應(yīng)的被聲明為全局變量的數(shù)據(jù)變量中。
歩驟211':第二線程關(guān)閉第二桌面,將當(dāng)前運(yùn)行環(huán)境切換回第一桌面,結(jié) 束自身運(yùn)行;
優(yōu)選的,可以用如下方法實(shí)現(xiàn)
SwitchDesktop(hdeskCurrent》
CloseDesktop(hdesk);當(dāng)然,也可以采用其他類似的方法實(shí)現(xiàn)。 步驟212':第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程獲取全局變量的內(nèi)容后,即獲 取到用戶輸入的PIN碼后,將該P(yáng)IN碼送入智能密鑰裝置中進(jìn)行認(rèn)證,依據(jù)認(rèn)證 結(jié)果確定是否允許使用智能密鑰裝置的私有區(qū),完成跨線程數(shù)據(jù)交互。
具體的是,當(dāng)?shù)谝蛔烂娈?dāng)前運(yùn)行的線程或進(jìn)程獲取的全局變量的內(nèi)容即PIN 碼為正確時(shí),允許對智能密鑰裝置私有區(qū)的訪問操作;當(dāng)?shù)谝蛔烂娈?dāng)前運(yùn)行的線 程或進(jìn)程獲取的全局變量的內(nèi)容即PIN碼為錯(cuò)誤時(shí),不允許對智能密鑰裝置私有 區(qū)的訪問操作。
該種方法可以有效避免鍵盤鉤子程序?qū)IN碼內(nèi)容的截獲,提高智能密鑰裝 置使用時(shí)的安全性。
另外,除了利用本發(fā)明實(shí)施例提供的跨線程顯示模式對話框的方法實(shí)現(xiàn)智能 密鑰裝置PIN碼安全輸入之外,還可以將本發(fā)明實(shí)施例提供的跨線程顯示模式對 話框的方法應(yīng)用在利用智能密鑰裝置進(jìn)行敏感信息輸入的場合,如在網(wǎng)絡(luò)交易中網(wǎng)銀帳號的輸入、交易金額的輸入等。
當(dāng)然,實(shí)際應(yīng)用中,除了智能密鑰裝置外的其他裝置,比如U盤、移動硬盤、 HUB、讀卡器、智能卡等等,均可以使用本發(fā)明實(shí)施例提供的安全輸入方法的原 理通過主機(jī)進(jìn)行安全輸入;本發(fā)明實(shí)施例提供的安全輸入的方法,還可以應(yīng)用在 軟件登錄等場合,比如遠(yuǎn)程登錄服務(wù)器、遠(yuǎn)程登錄論壇等或本機(jī)登錄、客戶管理 系統(tǒng)(C脂)的登錄或財(cái)務(wù)管理軟件的登錄等其他需要在模式對話框中進(jìn)行輸入 的場合。
本發(fā)明實(shí)施例提供的安全輸入的方法,通過全局變量的共享,不但可以有效 避免在同一桌面中模式對話框中輸入的參數(shù)易被黑客或木馬鉤子病毒(包括鍵盤 鉤子病毒等)鉤取的危險(xiǎn),大大的提高了安全性;同時(shí)又解決了在不同桌面中不 能實(shí)現(xiàn)跨線程使用和顯示模式對話框的問題及跨線程使用模式對話框的自繪控 件的問題,可以有效屏蔽掉可以自動尋找當(dāng)前活動桌面,鉤取窗口輸入內(nèi)容的高 級鉤子病毒,進(jìn)一步提高了安全輸入的何題。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù) 范圍之內(nèi)。
權(quán)利要求
1、一種windows系統(tǒng)下的安全輸入方法,其特征是包括如下步驟--系統(tǒng)變量設(shè)置在系統(tǒng)桌面即第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程聲明與模式對話框輸入相對應(yīng)的一個(gè)或多個(gè)數(shù)據(jù)變量為全局變量、定義模式對話框的消息映射函數(shù)及與模式對話框的控件對應(yīng)的類、聲明所述類的實(shí)例為全局變量、定義所述類的初始化方法和自定義消息映射、并在模式對話框的自繪控件對應(yīng)的類中定義繪制函數(shù);--桌面切換桌面當(dāng)前運(yùn)行的線程或進(jìn)程創(chuàng)建第二線程,所述第二線程創(chuàng)建另一桌面即第二桌面,設(shè)置自身工作在第二桌面中,并將程序運(yùn)行環(huán)境從第一桌面切換到第二桌面;--顯示模式對話框、控件初始化及實(shí)現(xiàn)自繪控件的繪制第二線程利用DialogBox函數(shù)顯示模式對話框,所述消息映射函數(shù)利用所述被聲明為全局變量的數(shù)據(jù)變量和被聲明為全局變量的實(shí)例調(diào)用所述初始化方法對所述控件進(jìn)行初始化,并調(diào)用所述繪制函數(shù)實(shí)現(xiàn)自繪控件的繪制;--數(shù)據(jù)輸入及被聲明為全局變量的數(shù)據(jù)更新第二線程接收通過所述模式對話框輸入的數(shù)據(jù)后,更新所述被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù);--返回第二線程關(guān)閉第二桌面,將當(dāng)前運(yùn)行環(huán)境切換回第一桌面,結(jié)束自身運(yùn)行,第一桌面當(dāng)前運(yùn)行的線程或進(jìn)程獲取所述更新后的被聲明為全局變量的數(shù)據(jù)變量。
2、 根據(jù)權(quán)利要求l所述的Windows系統(tǒng)下的安全輸入的方法,其特征是定義所述類的初始化方法包括下列步驟將類與控件窗口進(jìn)行關(guān)聯(lián),用所述自定義消息映射代替控件的缺省消息映射。
3、 根據(jù)權(quán)利要求2所述的Windows系統(tǒng)下的安全輸入的方法,其特征是利 用SetProp函數(shù)和GetPr叩函數(shù)將類與控件窗口進(jìn)行關(guān)聯(lián)。
4、 根據(jù)權(quán)利要求2所述的Windows系統(tǒng)下的安全輸入的方法,其特征是利 用SetWindowLong函數(shù)用所述自定義消息映射代替控件的缺省消息映射。
5、 根據(jù)權(quán)利要求1所述的Windows系統(tǒng)下的安全輸入的方法,其特征是更 新被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù)的方法具體歩驟是將接收到的 數(shù)據(jù)存儲在被聲明為全局變量的數(shù)據(jù)變量中。
6、根據(jù)權(quán)利要求l所述的Windows系統(tǒng)下的安全輸入的方法,其特征是更 新被聲明為全局變量的數(shù)據(jù)變量為接收到的數(shù)據(jù)的方法具體歩驟是實(shí)現(xiàn)一個(gè)統(tǒng) 一的更新函數(shù),在DialogBox函數(shù)返回時(shí)將接收到的數(shù)據(jù)存儲在對應(yīng)的被聲明為 全局變量的數(shù)據(jù)變量中。
全文摘要
一種提高輸入安全性的Windows系統(tǒng)下的安全輸入方法,其特征是包括系統(tǒng)變量設(shè)置;桌面切換;顯示模式對話框、控件初始化及實(shí)現(xiàn)自繪控件的繪制;數(shù)據(jù)輸入及被聲明為全局變量的數(shù)據(jù)更新;返回。通過全局變量的共享,不但可以有效避免在同一桌面中模式對話框中輸入的參數(shù)易被黑客或木馬鉤子病毒(包括鍵盤鉤子病毒等)鉤取的危險(xiǎn),大大提高了安全性;同時(shí)又解決了在不同桌面中不能實(shí)現(xiàn)跨線程使用和顯示模式對話框的問題及跨線程使用模式對話框的自繪控件的問題,可以有效屏蔽掉可以自動尋找當(dāng)前活動桌面,鉤取窗口輸入內(nèi)容的高級鉤子病毒,進(jìn)一步提高了安全輸入的問題。
文檔編號G06F9/46GK101315657SQ200810112888
公開日2008年12月3日 申請日期2008年5月26日 優(yōu)先權(quán)日2008年5月26日
發(fā)明者于華章, 舟 陸 申請人:北京飛天誠信科技有限公司