專利名稱:使用安全輸入裝置驅動器的計算機安全裝置和方法
技術領域:
本發(fā)明總體上涉及計算機安全,更具體地,涉及用安全輸入中斷服務例程(ISR)來代替操作系統(tǒng)(OS)的注冊在中斷描述符表(IDT)中的輸入ISR的計算機安全裝置和方法。以此配置,通過安全輸入ISR而不是OS輸入ISR來處理從諸如鍵盤的數(shù)據(jù)輸入單元輸入的數(shù)據(jù),從而使得可以保護用戶的按鍵數(shù)據(jù)免于被黑客程序非法獲取。
背景技術:
目前,隨著計算機和互聯(lián)網(wǎng)技術的快速發(fā)展,通過計算機的輔助來執(zhí)行重要的商業(yè)應用,例如互聯(lián)網(wǎng)銀行和家庭交易服務(HTS)。然而,這種基于計算機的商業(yè)應用可能例如被間諜軟件或按鍵記錄器惡意利用。這些間諜軟件和按鍵記錄器通過數(shù)據(jù)輸入單元的裝置惡意地對用戶輸入的數(shù)據(jù)進行獲取、記錄并發(fā)送給身份竊賊。這種構成身份盜竊的黑客方法在快速上升。
為了避免這些問題,已開發(fā)并銷售了多種工具。這些工具一般從用戶的計算機檢測并去除惡意程序的間諜軟件和按鍵記錄器,因此被稱為殺毒、反間諜軟件和個人防火墻。然而,在變形的和新引入的惡意程序的情況下,目前的工具變得無用,直到找到已知補救措施獲取、分析并除去變形惡意程序的方法,這通常通過更新病毒定義來進行。
為了解決此缺點,引入了從系統(tǒng)直接接收輸入數(shù)據(jù)并且安全地將其發(fā)送到應用程序以防止惡意程序竊取輸入數(shù)據(jù)的方法。公開了這些方法的參考文獻如下韓國專利公報第2002-48313號(標題為鍵盤防黑客方法),韓國專利第0378586號(標題為基于ActiveX的鍵盤防黑客方法和裝置),韓國專利公報第2004-92101號(標題為使用虛擬按鍵數(shù)據(jù)傳送來進行按鍵黑客保護),韓國專利公報第2004-66237號(標題為鍵輸入欺詐檢測方法),韓國專利第0447777號(標題為按鍵數(shù)據(jù)的防黑客方法和記錄該方法的計算機可讀記錄介質),以及韓國專利公報第2003-36276號(標題為使用安全輸入裝置驅動器的計算機安全系統(tǒng))。
作為上述現(xiàn)有專利文獻的代表,介紹韓國專利第0378586號。該專利公開了對于網(wǎng)絡瀏覽器和應用程序具有ActiveX格式的安全程序,并且其包括用于保護按鍵數(shù)據(jù)的軟件安全輸入窗口。該安全程序保護網(wǎng)絡瀏覽器和應用程序上的鍵盤數(shù)據(jù)。然而,以此配置,只能在應用程序層防止輸入數(shù)據(jù)的泄漏。也就是說,如果使用在安全裝置驅動器之前竊取輸入數(shù)據(jù)的過濾驅動器,或者黑客程序位于低于應用程序的層次,則該專利無能為力。
以下,參照圖1來說明常規(guī)的計算機安全裝置。圖1是用于說明常規(guī)計算機安全裝置的概念圖。具體地,將說明對通過作為多個數(shù)據(jù)輸入單元之一的鍵盤輸入的數(shù)據(jù)進行保護的方法。
當操作鍵盤時,OS參照存儲在IDT11中的鍵盤ISR的地址來執(zhí)行鍵盤ISR12。鍵盤ISR12將經(jīng)由鍵盤裝置驅動器13從鍵盤輸入的數(shù)據(jù)轉換為應用程序可用的掃描碼。經(jīng)由鍵盤過濾裝置驅動器14將轉換為掃描碼的數(shù)據(jù)發(fā)送到安全鍵盤過濾裝置驅動器15,并將其加密。然后,在解密DLL(動態(tài)鏈接庫)16對加密數(shù)據(jù)進行解密,并將其發(fā)送到應用程序17。
通過此處理,在安全鍵盤過濾裝置驅動器15通過嵌入OS的鍵盤處理模塊來對經(jīng)鍵盤輸入的數(shù)據(jù)進行加密。因此,當黑客程序(例如按鍵記錄器)安裝在數(shù)據(jù)加密之前的步驟中的過濾驅動器(例如鍵盤過濾裝置驅動器)中時,其可以先取得用戶的按鍵數(shù)據(jù)。
換句話說,使用該常規(guī)鍵盤輸入安全系統(tǒng),不能保證對于變形的間諜軟件和按鍵記錄器的安全。為此原因,需要能夠根本上解決這種問題的新型安全方法。
同時,上述現(xiàn)有技術中的大部分都具有如上所述的類似缺點。此外,其中的一些在實際執(zhí)行中不能正確運行。因此難以知道它們是否正確運行和執(zhí)行。
發(fā)明內(nèi)容
因此,本發(fā)明的一個目的是提供一種有效地保護經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)的方法。
本發(fā)明的另一目的是防止數(shù)據(jù)在通過操作系統(tǒng)輸入裝置驅動器時被黑客程序獲取。
本發(fā)明的另一目的是提供除了將安全輸入ISR的地址存儲在操作系統(tǒng)輸入ISR的地址區(qū)域的基本技術之外的能夠提高安全性的方法。
為了實現(xiàn)前述目的,根據(jù)本發(fā)明的第一方面,提供了一種使用安全輸入裝置驅動器的計算機安全裝置。所述計算機安全裝置包括IDT,用于存儲負責中斷的函數(shù)的地址列表,并在OS支持的操作系統(tǒng)輸入ISR的部分地址區(qū)域中存儲安全輸入ISR的地址;安全輸入裝置驅動器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,根據(jù)安全輸入ISR的地址執(zhí)行安全輸入ISR以通過數(shù)據(jù)輸入單元接收數(shù)據(jù),并對接收的數(shù)據(jù)進行加密;以及安全輸入單元,用于對在安全輸入裝置驅動器加密的數(shù)據(jù)進行解密,并將解密的數(shù)據(jù)發(fā)送到應用程序。
安全輸入裝置驅動器可以包括數(shù)據(jù)輸入接收器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,根據(jù)安全輸入ISR的地址執(zhí)行安全輸入ISR,以通過數(shù)據(jù)輸入單元接收數(shù)據(jù);數(shù)據(jù)加密器,用于對數(shù)據(jù)輸入接收器中接收的數(shù)據(jù)進行加密;監(jiān)視器,用于監(jiān)視數(shù)據(jù)輸入接收器的地址是否發(fā)生了變化,數(shù)據(jù)輸入接收器的地址注冊在IDT中;以及控制器,用于控制安全輸入裝置驅動器的操作。
同時,監(jiān)視器可以被構成為將先前存儲的數(shù)據(jù)輸入接收器的地址與IDT的對應于數(shù)據(jù)輸入單元的輸入ISR的區(qū)域的地址進行比較和核對,并且,在輸入ISR區(qū)域的地址已改變的情況下,其用數(shù)據(jù)輸入接收器的原始地址來代替改變的地址。
根據(jù)本發(fā)明的第二方面,提供了一種使用安全輸入裝置驅動器的計算機安全方法。所述計算機安全方法包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全ISR的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,數(shù)據(jù)輸入接收器的地址預先注冊在IDT中;對從數(shù)據(jù)輸入接收器接收的數(shù)據(jù)進行加密并將其發(fā)送;以及對加密數(shù)據(jù)進行解密并將解密數(shù)據(jù)發(fā)送到應用程序。
所述計算機安全方法可以進一步包括以下步驟監(jiān)視注冊在IDT中的數(shù)據(jù)輸入接收器的地址是否發(fā)生了改變。一旦IDT已改變(沒有用戶的許可而被黑客程序改變),則該計算機安全方法可以進一步包括以下步驟將改變的地址再次恢復回數(shù)據(jù)輸入接收器的原始地址。
同時,所述計算機安全方法可以進一步包括以下步驟預先存儲安全ISR的散列值和二進制碼;讀出安全ISR的當前散列值;以及將讀取的散列值與存儲的散列值進行比較,以確定這兩個散列值是否彼此相同。
此外,所述計算機安全方法可以進一步包括以下步驟周期地使控制寄存器(CR4)的調試擴展標志和調試控制寄存器(DR7)無效。
此外,所述計算機安全方法可以進一步包括以下步驟在預定時間段內(nèi)使鍵盤緩沖器復位,以防止通過輸入端口和輸出端口讀取數(shù)據(jù)。
根據(jù)本發(fā)明的第三方面,提供了一種使用安全輸入裝置驅動器的計算機安全方法。所述計算機安全方法包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全ISR的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,數(shù)據(jù)輸入接收器的地址預先注冊在IDT中;將從數(shù)據(jù)輸入接收器接收的數(shù)據(jù)發(fā)送到應用程序;以及監(jiān)視注冊在IDT中的數(shù)據(jù)輸入接收器的地址是否發(fā)生了改變。
根據(jù)本發(fā)明的第四方面,提供了一種記錄介質,該記錄介質記錄有如上所述的使用安全輸入裝置驅動器的計算機安全方法的執(zhí)行程序。這里,術語“記錄介質”沒有具體限制,只要可以記錄應用本發(fā)明的安全方法的程序即可。例如,可以列舉能夠按離線方式由用戶安裝在各個計算機中的諸如CD、軟盤、存儲棒等的產(chǎn)品,或者用于按能夠通過互聯(lián)網(wǎng)下載的形式存儲程序的網(wǎng)絡服務器、數(shù)據(jù)庫等。此外,術語“執(zhí)行程序”可以包括按已知壓縮模式壓縮的形式。
根據(jù)本發(fā)明的第五方面,提供了一種使用安全輸入裝置驅動器的計算機安全裝置。所述計算機安全裝置包括IDT,用于存儲負責中斷的函數(shù)的地址列表,并存儲安全輸入ISR的地址而不是OS提供的原始輸入ISR的地址;安全輸入裝置驅動器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,執(zhí)行安全輸入ISR以從數(shù)據(jù)輸入單元接收數(shù)據(jù)并對接收的數(shù)據(jù)進行加密;以及安全輸入單元,用于對在安全輸入裝置驅動器加密的數(shù)據(jù)進行解密,并將解密的數(shù)據(jù)發(fā)送到應用程序。
結合附圖,根據(jù)對優(yōu)選實施方式的以下說明,本發(fā)明的這些和/或其他方面和優(yōu)點將變得顯而易見并且更容易理解,在附圖中圖1是用于說明常規(guī)計算機安全裝置的概念圖;圖2表示根據(jù)本發(fā)明的示例性實施例的計算機安全裝置的示意性配置;圖3表示作為用于通知用戶本發(fā)明的安全裝置是否正常工作的手段的一個示例的盤圖標;圖4是用于說明在本發(fā)明的計算機安全裝置中保護經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)的方法的流程圖;圖5是用于說明根據(jù)本發(fā)明的示例性實施例的計算機安全方法的概念視圖;圖6是用于說明在本發(fā)明的計算機安全裝置中通過監(jiān)視器來監(jiān)視注冊在IDT中的數(shù)據(jù)輸入接收器地址是否發(fā)生了變化的方法的流程圖;圖7表示根據(jù)本發(fā)明的示例性實施例的顯示安全狀態(tài)的畫面的一個示例;圖8是用于說明在本實施例的計算機安全裝置中將跳轉二進制碼插入安全ISR的方法的概念圖,其中說明了破壞安全性的情況;圖9是用于說明在本實施例的計算機安全裝置中的解決通過將跳轉二進制碼插入安全ISR而破壞安全性的問題的處理的流程圖;以及圖10是用于說明在調用安全ISR之前跳轉到陷阱ISR的方法的概念圖,其中說明了破壞安全性的情況。
具體實施例方式
以下,參照附圖來說明根據(jù)本發(fā)明的優(yōu)選實施例。這里,當一個部件連接到另一部件時,所述一個部件不僅可以直接連接到所述另一部件,而且可以經(jīng)由其他部件間接連接到所述另一部件。此外,為了清楚,省略了無關部件。此外,通篇用類似標號表示類似部件。
圖2表示根據(jù)本發(fā)明示例性實施例的計算機安全裝置的示意性配置。
圖2中的計算機安全裝置2的功能是保護從數(shù)據(jù)輸入單元210輸入的數(shù)據(jù)。計算機安全裝置2由IDT220、安全輸入裝置驅動器230以及安全輸入單元240組成。
數(shù)據(jù)輸入單元210沒有具體限制,而是可以一般地表示從系統(tǒng)用戶接收數(shù)據(jù)的所有用戶接口單元。例如,作為數(shù)據(jù)輸入單元210,可以使用鍵盤、數(shù)字小鍵盤、鼠標、操縱桿等,優(yōu)選地可以使用能夠輸入相對大量的信息并廣泛應用于個人計算機等的鍵盤。
IDT220存儲負責中斷的函數(shù)的地址列表,并在OS輸入ISR的地址區(qū)域中存儲安全輸入ISR的地址。也就是說,IDT220存儲安全輸入ISR的地址而不是嵌入OS的原始輸入ISR的地址。
IDT220是從系統(tǒng)OS提供的區(qū)域,其存儲負責外部中斷、內(nèi)部中斷和異常的函數(shù)的地址列表。例如,IDT220是專用于指定256個ISR的存儲器中的8字節(jié)中斷描述符的數(shù)組。在此情況下,開始的32個條目是為處理器異常保留的,任何其他16個條目可以用于硬件中斷(或外部中斷)。其余條目用于軟件中斷(或內(nèi)部中斷)。IDT220的地址存儲在稱作“中斷描述符表寄存器(IDTR)”的處理器寄存器中。對IDT的詳細說明,包括對IDT與IDTR之間的關系的詳細說明,可以參見“IA-32IntelArchitecture Software Developer’s Manual,Volume3System ProgrammingGuide”,在此通過引用并入其內(nèi)容。
當經(jīng)數(shù)據(jù)輸入單元210輸入數(shù)據(jù)時,產(chǎn)生中斷,這樣產(chǎn)生對應數(shù)據(jù)輸入單元210的標識號。此號稱作“中斷向量”。OS通過采用該中斷向量作為索引來定位存儲在IDT220中的作為為此目的而制成的函數(shù)的ISR的地址,來執(zhí)行該ISR。此時,由安全輸入裝置驅動器230驅動的安全輸入ISR的地址而不是OS支持的常規(guī)輸入ISR的地址注冊并存儲在IDT220中。因此,當數(shù)據(jù)輸入到數(shù)據(jù)輸入單元210并因此產(chǎn)生中斷時,執(zhí)行安全輸入ISR。
安全輸入裝置驅動器230根據(jù)注冊在IDT220中的安全輸入ISR地址來接收經(jīng)數(shù)據(jù)輸入單元210的數(shù)據(jù),對接收的數(shù)據(jù)進行加密,并將加密數(shù)據(jù)發(fā)送到安全輸入單元240。安全輸入裝置驅動器230的地址而不是操作系統(tǒng)輸入裝置驅動器的地址注冊在IDT220中。因此,當數(shù)據(jù)輸入單元210產(chǎn)生中斷時,不執(zhí)行OS支持的常規(guī)輸入ISR,而執(zhí)行安全輸入裝置驅動器230支持的安全輸入ISR。
將數(shù)據(jù)輸入接收器230的地址(具體為輸入裝置驅動器230的數(shù)據(jù)輸入接收器231的地址)注冊在IDT220中的方法是多種多樣的,沒有具體限制。優(yōu)選地,可以用數(shù)據(jù)輸入接收器231的地址來替換IDT220內(nèi)的按照數(shù)據(jù)輸入單元210的地址的中斷向量進行了偏移的區(qū)域。IDT220的地址存儲在IDTR中。例如,在Windows 2000的OS中,可以通過使用諸如HallGetInterruptVector的函數(shù)來獲取各個數(shù)據(jù)輸入單元210的中斷向量。作為此函數(shù)的結果,可以獲取鍵盤中斷向量和鼠標中斷向量。從在IDTR中獲取的IDT220的地址值起偏移了輸入裝置向量的區(qū)域對應于安全輸入ISR的地址的區(qū)域。這樣,可以將數(shù)據(jù)輸入接收器231的地址注冊在對應的區(qū)域。以下示例示出了在Windows2000中包括將PS/2類型的OS鍵盤ISR替換為安全輸入ISR的例程的情況。
在這些函數(shù)中,HooKInterrupt()用于替換IDT中的鍵盤中斷服務,SecuKbdISR()是用于保護鍵盤數(shù)據(jù)的安全鍵盤ISR。
在HookInterrupt()函數(shù)中,獲取與通過OS中的HallGetInterruptVector()函數(shù)提供的1號IRQ(中斷請求)對應的鍵盤中斷向量的值,并將其存儲在nSaveVecNo參數(shù)中。各個處理器單獨地設置有IDT。因此,各個處理器在IDT中注冊安全ISR的地址。對應中斷的KeNumberProcessor表示處理器的數(shù)量,pIdtBase為IDT存儲在IDTR中的地址。OriginalISR是旨在存儲已注冊在IDTR中的鍵盤ISR的地址的儲存庫,MyKdbISR是代替已注冊鍵盤ISR的安全鍵盤ISR的地址。IDT_SetVector()函數(shù)不僅用于將SecuKdbISR注冊在IDT中,而且備份已安裝的ISR地址。
當產(chǎn)生鍵盤中斷時,調用SecuKdbISR()函數(shù)。在ReadData()函數(shù)中,通過60h端口從鍵盤緩沖器讀取鍵盤輸入數(shù)據(jù)。Protection_mode具有“1”或“0”的值。例如,如果當前狀態(tài)是保護鍵盤輸入數(shù)據(jù)的狀態(tài),則Protection_mode具有值“1”,如果不是,則Protection_mode具有值“0”。如果Protection_mode是“1”,則通過使用用于對鍵盤緩沖器進行復位Clearbuffer函數(shù),將60h端口復位為諸如0F4h(清零輸出緩沖器)或0EE(回聲(echo),鍵盤對應于EEh)的空數(shù)據(jù),以防止通過60h端口讀取數(shù)據(jù)。雖然按鍵記錄器執(zhí)行重復讀取60h端口以檢查輸入數(shù)據(jù)的端口掃描處理,但是這是能夠通過將空數(shù)據(jù)發(fā)送到60h端口而防止泄漏數(shù)據(jù)的方法。因此,這用于加強安全性,在以下對此進行說明。
為了將數(shù)據(jù)上載到應用程序,通過使用StoreData的函數(shù)來存儲鍵盤輸入數(shù)據(jù)。如果Protection_mode是“0”,則在WriteKbdBuffer函數(shù)中將鍵盤輸入數(shù)據(jù)再次寫入鍵盤輸出端口而不保護數(shù)據(jù)。在此函數(shù)中,使用d2h(寫鍵盤緩沖器)8048鍵盤命令。隨后,通過使用CallOriginalISR()函數(shù)從HookInterrupt()調用已存儲的OriginalISR。
安全輸入單元240將在安全輸入裝置驅動器230加密的數(shù)據(jù)解密為原始數(shù)據(jù),將解密的數(shù)據(jù)發(fā)送到應用程序250。當解密了數(shù)據(jù)時,安全輸入單元240顯示解密完成的狀態(tài),并通過使用如圖3所示的盤圖標來通知用戶安全系統(tǒng)是否正常工作。在本實施例中,說明僅限于將加密數(shù)據(jù)解密為原始數(shù)據(jù)并將解密的數(shù)據(jù)從安全輸入單元240發(fā)送到應用程序250。在實際實現(xiàn)中,可以在應用程序250處或者在通過互聯(lián)網(wǎng)發(fā)送的處理中在特定/指定服務器處對對加密數(shù)據(jù)進行解密。例如,為了滿足如下的用戶需要應當在應用程序的畫面上顯示鍵值,可以采用多種方法。在應當在應用程序畫面上顯示鍵值的情況下,特別是在鍵值是口令的情況下,可以輸出符號*。
隨后,更詳細地說明輸入裝置驅動器230。
安全輸入裝置驅動器230包括數(shù)據(jù)輸入接收器231、數(shù)據(jù)加密器232和控制器234。如果有必要,安全輸入裝置驅動器230可以進一步包括監(jiān)視器233。監(jiān)視器233監(jiān)視注冊在IDT220中的數(shù)據(jù)輸入接收器231的地址是否發(fā)生了變化(沒有正確的用戶許可而發(fā)生了變化)。在下文中詳細說明監(jiān)視器233的功能或責任。
當數(shù)據(jù)輸入單元210產(chǎn)生中斷時,數(shù)據(jù)輸入接收器231讀取經(jīng)數(shù)據(jù)輸入單元210輸入的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到數(shù)據(jù)加密器232。
數(shù)據(jù)加密器232加密從數(shù)據(jù)輸入接收器231接收的數(shù)據(jù),并將加密的數(shù)據(jù)發(fā)送到安全輸入單元240。換句話說,經(jīng)數(shù)據(jù)輸入單元210輸入的數(shù)據(jù)在安全輸入裝置驅動器230直接被加密而不經(jīng)過OS輸入裝置驅動器,并被發(fā)送到安全輸入單元240,從而使得任何黑客程序都不可能獲取用戶的輸入數(shù)據(jù)并防止了獲取在數(shù)據(jù)加密器232加密的數(shù)據(jù)。優(yōu)選地,加密方法使用基于Rijndael算法(其被選為對US高級加密標準(AES)提出的加密算法)的128位加密方案。Rijndael算法在安全性、處理速度、和使用存儲器能力的方面具有優(yōu)異的性能。然而,此算法只是示例。因此,顯然可以使用任何常規(guī)的優(yōu)異加密算法。
控制器234可以被配置為控制監(jiān)視器233和數(shù)據(jù)加密器232,并可以控制安全輸入單元240的解密器242。在實際實現(xiàn)中,可以將控制器234單獨地提供給安全輸入單元240。
安全輸入單元240包括解密器241,用于將在安全輸入裝置驅動器230加密的數(shù)據(jù)解密為原始數(shù)據(jù);以及安全狀態(tài)顯示器242,用于通知解密真相并顯示安全系統(tǒng)是否正常工作。安全狀態(tài)顯示器242被配置為當在解密器241解密的數(shù)據(jù)發(fā)送到應用程序250時一起工作,由此通過改變?nèi)鐖D3中的兩個圖標圖像來通知用戶輸入數(shù)據(jù)在受到保護。圖3示出了盤圖標作為用于使用戶確信本發(fā)明的安全裝置正常工作的手段的一個示例。此時,所使用的圖標可以是盤圖標或者應用程序中包括的圖標。
以下,參照圖4和5示意性地說明根據(jù)本發(fā)明實施例的計算機安全裝置的操作。圖4是用于說明在本發(fā)明的計算機安全裝置中保護經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)的方法的流程圖。
參照圖4,當激活應用程序250(S301)并且隨后數(shù)據(jù)輸入單元210產(chǎn)生中斷(S303)時,OS參照注冊在IDT220中的數(shù)據(jù)輸入接收器231的地址來驅動安全輸入裝置驅動器230的數(shù)據(jù)輸入接收器231(S305)。換句話說,當數(shù)據(jù)輸入單元210產(chǎn)生中斷時,OS執(zhí)行安全ISR,即數(shù)據(jù)輸入接收器231,而不是OS輸入裝置驅動器的ISR,由此接收經(jīng)數(shù)據(jù)輸入單元210輸入的數(shù)據(jù)。
隨后,數(shù)據(jù)加密器232對從數(shù)據(jù)輸入接收器231接收的數(shù)據(jù)進行加密(S307),然后將加密的數(shù)據(jù)發(fā)送到安全輸入單元240。安全輸入單元240將在安全輸入裝置驅動器230加密的數(shù)據(jù)解密為原始數(shù)據(jù),然后將解密的數(shù)據(jù)發(fā)送到應用程序250。
圖5是用于說明根據(jù)本發(fā)明示例性實施例的計算機安全方法的概念視圖。如果將圖5的計算機安全方法與圖1的計算機安全方法相比較,則可以更清楚地理解。
更具體地,在圖1的計算機安全方法的情況下,當操作鍵盤時,OS參照存儲在IDT中的鍵盤ISR地址來執(zhí)行鍵盤ISR。相反,在圖5的情況下,使用安全輸入ISR而不是OS輸入ISR來處理從數(shù)據(jù)輸入單元輸入的數(shù)據(jù)。換句話說,根據(jù)本計算機安全裝置,在OS處理模塊對數(shù)據(jù)進行處理之前,數(shù)據(jù)保護系統(tǒng)首先工作。由于這一不同,雖然在較高層發(fā)現(xiàn)大多數(shù)黑客程序,還是可以保護經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)免受任何黑客程序的非法獲取。
隨后,更詳細地說明本實施例的計算機安全裝置中監(jiān)視器233的函數(shù)。監(jiān)視器233(圖2)是可選部件,是用于加強安全性的手段。監(jiān)視器233監(jiān)視注冊在IDT220中的數(shù)據(jù)輸入接收器231的地址是否發(fā)生了變化,并檢查安全性ISR的完整性。
圖6是用于說明圖2的監(jiān)視器233監(jiān)視注冊在IDT220的數(shù)據(jù)輸入接收器231的地址是否發(fā)生了變化的方法的流程圖。
監(jiān)視器233預先存儲數(shù)據(jù)輸入接收器231的地址(S401),然后讀出存儲在IDT220的輸入ISR區(qū)域中的地址值(S402)。
隨后,監(jiān)視器233將先前存儲的數(shù)據(jù)輸入接收器231的地址與輸入ISR的地址進行比較(S403)。
作為比較的結果,如果兩個地址的值相同,則重復步驟S402和S403。然而,如果兩個地址的值不同,則確定注冊在IDT220中的數(shù)據(jù)輸入接收器231的地址可能已經(jīng)被黑客程序等非法改變。這樣,用數(shù)據(jù)輸入接收器231的地址來替換IDT220的輸入ISR區(qū)域的被改變地址(S404)。
并且,監(jiān)視器233將此事實通知給控制器234。然后,控制器234通過在畫面上顯示如圖7所示的消息窗口而將該事實通知給用戶(S405)。
隨后,除了將安全ISR注冊在IDT中的概念之外,說明能夠提高安全性的方法。以下是將安全ISR注冊在IDT中的步驟中存在的一些弱點和解決方案。
第一弱點是與注冊安全ISR的方法類似的方法。在將安全ISR的地址注冊在IDT中之后,需要防備將安全ISR地址注冊為ISR地址以進行非法數(shù)據(jù)獲取的方法的對策。換句話說,當任何惡意按鍵記錄器程序改變注冊在IDT220的輸入ISR區(qū)域中的數(shù)據(jù)輸入接收器231(圖2)的地址以獲取按鍵數(shù)據(jù)時,輸入數(shù)據(jù)沒有被正常地接收到數(shù)據(jù)輸入接收器231,由此發(fā)送到被按鍵記錄器程序改變的不希望位置。
作為防止此現(xiàn)象的對策,例如,監(jiān)視器233可以被配置為連續(xù)監(jiān)視數(shù)據(jù)輸入接收器231的地址,然后,當數(shù)據(jù)輸入接收器231的地址被改變時,將改變的事實發(fā)送到控制器234,并再次將輸入ISR區(qū)域的被改變地址改變?yōu)閿?shù)據(jù)輸入接收器231的地址。在此情況下,接收該事實的控制器234可以通過在畫面上顯示警告消息而向用戶通知該事實。
第二弱點是將跳轉二進制碼插入安全ISR的方法,這可能涉及作為示例用于API鉤的技術。圖8是表示在本實施例的計算機安全裝置中將跳轉二進制碼插入安全ISR的方法的概念圖,其中說明了破壞安全性的情況。參照圖8說明此方法,在函數(shù)區(qū)域插入跳轉到不希望函數(shù)730的二進制碼jmp720以用于非法數(shù)據(jù)獲取,當產(chǎn)生中斷時執(zhí)行在安全ISR之前指定的惡意ISR的函數(shù)。由此接收并存儲數(shù)據(jù),然后跳轉到安全SIR。
圖9是用于說明在本實施例的計算機安全裝置中解決通過將跳轉二進制碼插入安全ISR的方法來破壞安全性的問題的處理的流程圖。參照圖9來說明第二解決方案。首先,預先存儲安全ISR的散列值和二進制碼(S501)。讀出安全ISR的當前散列值(S503)。然后,通過使用校驗和或散列算法來插入安全ISR的二進制碼,從而能夠檢查數(shù)據(jù)的完整性。換句話說,為了驗證是否插入了跳轉二進制碼,根據(jù)讀取的散列值與存儲的散列值的比較來進行確定(S505)。從比較的結果,如果兩個值彼此不相同,則用原始碼來恢復認為數(shù)據(jù)完整性被破壞時存儲的安全ISR的二進制碼(S507),將結果發(fā)送到控制器234??刂破?34可以通過在畫面上顯示消息窗口來向用戶通知結果。
第三弱點是在調用安全ISR之前跳轉到陷阱ISR的方法,其中參照圖10來說明破壞安全性的情況。在陷阱IDT中注冊有按鍵記錄器ISR。使能控制寄存器CR4中的DE(調試擴展)標志。調試控制寄存器DR7通過使用設置在調試控制寄存器DR0中的端口號來進行I/O讀取或寫入。在此情況下,進行設置以產(chǎn)生處理器中斷,在調試控制寄存器DR0中設置60h。因此,當操作鍵盤時,調用注冊的安全ISR。當通過60h端口讀取輸入數(shù)據(jù)(例如in al,60h)時,在ISR中,監(jiān)視端口的CPU(中央處理單元)產(chǎn)生中斷,發(fā)生向注冊在陷阱IDT中的按鍵記錄器ISR的跳轉。按鍵記錄器ISR從AL寄存器讀取數(shù)據(jù)并存儲該數(shù)據(jù),當陷阱ISR的處理完成時返回跳轉之前的位置。作為防備該處理的對策,可以周期性地使控制寄存器CR4的DE標志無效以使得不使用調試控制寄存器跳轉到陷阱ISR,并且可以使調試控制寄存器DR7無效。
第四弱點是通過重復讀取用于鍵盤或鼠標的輸入和輸出的60h端口來檢查輸入數(shù)據(jù)的端口掃描方法。這里,需要防備使用端口掃描方法來獲取數(shù)據(jù)的對策。如上所述,如果當前狀態(tài)是保護鍵盤輸入數(shù)據(jù)的狀態(tài),則Protection_mode具有值“1”。如果不是這樣,則Protection_mode具有值“0”。這樣,為了準備使用端口掃描方法來進行數(shù)據(jù)獲取,當Protection_mode具有值“1”時,可以通過使用Clearbuffer函數(shù)(其用于使鍵盤緩沖器復位)來用諸如0F4h(清零輸出緩沖器)或0EE(回音,鍵盤對應于EEh)的空數(shù)據(jù)來使60h端口復位,以防止通過60h端口讀取數(shù)據(jù)。
同時,應用本發(fā)明的計算機安全方法的程序記錄到存儲介質,例如CD(光盤)、軟盤、存儲棒等,作為產(chǎn)品銷售,并由用戶按離線方式安裝在各個計算機中。當使用指定的程序或任何其他程序時,可以使用應用該計算機安全方法的程序。與此不同,自動或手動地通過互聯(lián)網(wǎng)訪問指定站點而將應用該計算機安全方法的程序下載并安裝為文件的形式。當用戶經(jīng)諸如鍵盤的數(shù)據(jù)輸入單元而輸入數(shù)據(jù)以通過諸如InternetExplorer的網(wǎng)絡瀏覽器將信息發(fā)送到希望的站點時,可以執(zhí)行應用該計算機安全方法的程序。
根據(jù)本發(fā)明,可以防止從計算機輸入單元輸入的數(shù)據(jù)被安裝在計算機系統(tǒng)中的任何黑客工具所竊取并發(fā)送到第三方,從而可以將用戶的按鍵數(shù)據(jù)安全地發(fā)送到應用程序。
此外,本發(fā)明的安全系統(tǒng)適于通過安全輸入裝置驅動器而不是OS支持的OS輸入裝置驅動器來直接對經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)進行加密。由此,雖然大多數(shù)黑客程序安裝在上級階段,但是從一開始就可以防止經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)被任何黑客程序非法獲取。
此外,對將安全輸入ISR的地址存儲在OS輸入ISR的地址區(qū)域附加上基本原則,這使得可以消除將安全ISR注冊在IDT中的步驟中存在的各種弱點。
雖然示出并說明了本發(fā)明的幾個實施例,但是本領域技術人員應該理解,可以不脫離本發(fā)明的原理和精神的情況下對該實施例進行修改,本發(fā)明的范圍在權利要求書及其等價物中限定。
權利要求
1.一種使用安全輸入裝置驅動器的計算機安全裝置,包括中斷描述符表,用于存儲負責中斷的函數(shù)的地址列表,并在操作系統(tǒng)提供的操作系統(tǒng)輸入中斷服務例程的部分地址區(qū)域中存儲安全輸入中斷服務例程的地址;安全輸入裝置驅動器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,根據(jù)安全輸入中斷服務例程的地址來執(zhí)行安全輸入中斷服務例程以通過該數(shù)據(jù)輸入單元接收數(shù)據(jù),并對接收的數(shù)據(jù)進行加密;以及安全輸入單元,用于對在安全輸入裝置驅動器加密的數(shù)據(jù)進行解密,并將經(jīng)解密的數(shù)據(jù)發(fā)送到應用程序。
2.根據(jù)權利要求1所述的計算機安全裝置,其中,安全輸入裝置驅動器包括數(shù)據(jù)輸入接收器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,執(zhí)行安全輸入中斷服務例程以接收從該數(shù)據(jù)輸入單元輸入的數(shù)據(jù);數(shù)據(jù)加密器,用于對數(shù)據(jù)輸入接收器中接收到的數(shù)據(jù)進行加密;監(jiān)視器,用于監(jiān)視數(shù)據(jù)輸入接收器的地址是否發(fā)生了變化,所述數(shù)據(jù)輸入接收器的地址注冊在中斷描述符表中;以及控制器,用于控制安全輸入裝置驅動器的操作。
3.根據(jù)權利要求2所述的計算機安全裝置,其中,監(jiān)視器將先前存儲的數(shù)據(jù)輸入接收器的地址與中斷描述符表的對應于所述數(shù)據(jù)輸入單元的輸入中斷服務例程的區(qū)域的地址進行比較,當輸入中斷服務例程區(qū)域的地址已改變時,用數(shù)據(jù)輸入接收器的地址再次替換改變了的地址。
4.一種使用安全輸入裝置驅動器的計算機安全方法,包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全中斷服務例程的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,所述數(shù)據(jù)輸入接收器的地址預先注冊在中斷描述符表中;對從數(shù)據(jù)輸入接收器接收的數(shù)據(jù)進行加密,并發(fā)送經(jīng)加密的數(shù)據(jù);以及對經(jīng)加密的數(shù)據(jù)進行解密,并將經(jīng)解密的數(shù)據(jù)發(fā)送到應用程序。
5.根據(jù)權利要求4所述的計算機安全方法,進一步包括以下步驟監(jiān)視注冊在中斷描述符表中的數(shù)據(jù)輸入接收器的地址是否發(fā)生了變化。
6.根據(jù)權利要求5所述的計算機安全方法,進一步包括以下步驟當中斷描述符表發(fā)生了變化時,將改變的結果再次改變?yōu)閿?shù)據(jù)輸入接收器的原始地址。
7.根據(jù)權利要求4所述的計算機安全方法,進一步包括以下步驟預先存儲安全中斷服務例程的散列值和二進制碼;讀出安全中斷服務例程的當前散列值;以及將讀取的散列值與存儲的散列值進行比較,以確定這兩個散列值是否彼此相同。
8.根據(jù)權利要求4所述的計算機安全方法,進一步包括以下步驟周期性地使控制寄存器(CR4)中的調試擴展標志和調試控制寄存器(DR7)無效。
9.根據(jù)權利要求4所述的計算機安全方法,進一步包括以下步驟在預定時間段內(nèi)使鍵盤緩沖器復位,以防止數(shù)據(jù)通過輸入端口和輸出端口而被讀取。
10.一種使用安全輸入裝置驅動器的計算機安全方法,包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全中斷服務例程的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,所述數(shù)據(jù)輸入接收器的地址預先注冊在中斷描述符表中;將從數(shù)據(jù)輸入接收器接收的數(shù)據(jù)發(fā)送到應用程序;以及監(jiān)視注冊在中斷描述符表中的數(shù)據(jù)輸入接收器的地址是否發(fā)生了變化。
11.一種使用安全輸入裝置驅動器的計算機安全裝置,包括中斷描述符表,用于存儲負責中斷的函數(shù)的地址列表,并存儲安全輸入中斷服務例程的地址而不是操作系統(tǒng)提供的原始輸入中斷服務例程的地址;安全輸入裝置驅動器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,執(zhí)行安全輸入中斷服務例程以從該數(shù)據(jù)輸入單元接收數(shù)據(jù),并對接收的數(shù)據(jù)進行加密;以及安全輸入單元,用于對在安全輸入裝置驅動器加密的數(shù)據(jù)進行解密,并將經(jīng)解密的數(shù)據(jù)發(fā)送到應用程序。
12.根據(jù)權利要求11所述的計算機安全裝置,其中,安全輸入裝置驅動器包括數(shù)據(jù)輸入接收器,用于當數(shù)據(jù)輸入單元產(chǎn)生中斷時,執(zhí)行安全輸入中斷服務例程以接收從該數(shù)據(jù)輸入單元輸入的數(shù)據(jù);數(shù)據(jù)加密器,用于對數(shù)據(jù)輸入接收器中接收到的數(shù)據(jù)進行加密;監(jiān)視器,用于監(jiān)視數(shù)據(jù)輸入接收器的地址是否發(fā)生了變化,所述數(shù)據(jù)輸入接收器的地址注冊在中斷描述符表中;以及控制器,用于控制安全輸入裝置驅動器的操作。
13.根據(jù)權利要求12所述的計算機安全裝置,其中,監(jiān)視器將先前存儲的數(shù)據(jù)輸入接收器的地址與中斷描述符表的對應于所述數(shù)據(jù)輸入單元的輸入中斷服務例程的地址進行比較,當輸入中斷服務例程區(qū)域的地址已改變時,用數(shù)據(jù)輸入接收器的地址再次替換改變了的地址。
14.一種使用安全輸入裝置驅動器的計算機安全方法,包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全中斷服務例程的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,所述數(shù)據(jù)輸入接收器的地址而不是操作系統(tǒng)提供的原始輸入中斷服務例程預先注冊在中斷描述符表中;對從數(shù)據(jù)輸入接收器接收的數(shù)據(jù)進行加密,并發(fā)送經(jīng)加密的數(shù)據(jù);以及對經(jīng)加密的數(shù)據(jù)進行解密,并將經(jīng)解密的數(shù)據(jù)發(fā)送到應用程序。
15.根據(jù)權利要求14所述的計算機安全方法,通過按照數(shù)據(jù)輸入單元的地址的中斷向量進行偏移并將偏移的區(qū)域改作數(shù)據(jù)輸入接收器的地址,進行數(shù)據(jù)輸入接收器的地址在中斷描述符表中的注冊。
16.根據(jù)權利要求14所述的計算機安全方法,進一步包括以下步驟預先存儲安全中斷服務例程的散列值和二進制碼;讀出安全中斷服務例程的當前散列值;以及將讀取的散列值與存儲的散列值進行比較,以確定這兩個散列值是否彼此相同。
17.根據(jù)權利要求14所述的計算機安全方法,進一步包括以下步驟周期性地使控制寄存器(CR4)中的調試擴展標志和調試控制寄存器(DR7)無效。
18.根據(jù)權利要求14所述的計算機安全方法,進一步包括以下步驟在預定時間段內(nèi)使鍵盤緩沖器復位,以防止數(shù)據(jù)通過輸入端口和輸出端口而被讀取。
19.一種記錄介質,其記錄用于執(zhí)行使用安全輸入裝置驅動器的計算機安全方法的程序,使用安全輸入裝置驅動器的所述方法包括以下步驟當數(shù)據(jù)輸入單元產(chǎn)生中斷時,參照用作安全中斷服務例程的數(shù)據(jù)輸入接收器的地址來驅動安全輸入裝置驅動器,所述數(shù)據(jù)輸入接收器的地址預先存儲在中斷描述符表中;對從輸入接收器接收的數(shù)據(jù)進行加密,并發(fā)送經(jīng)加密的數(shù)據(jù);以及對經(jīng)加密的數(shù)據(jù)進行解密,并將經(jīng)解密的數(shù)據(jù)發(fā)送到應用程序。
全文摘要
公開了一種使用安全輸入裝置驅動器的計算機安全裝置和方法。經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)在安全輸入裝置驅動器直接被加密,而不經(jīng)過操作系統(tǒng)中支持的操作系統(tǒng)輸入裝置驅動器。由此,從一開始就可以防止經(jīng)數(shù)據(jù)輸入單元輸入的數(shù)據(jù)被任何黑客程序非法獲取。
文檔編號G06F21/00GK1918556SQ200580004237
公開日2007年2月21日 申請日期2005年2月4日 優(yōu)先權日2004年2月5日
發(fā)明者吳忠鍵, 崔光月, 成貴哲, 金大亨, 金圣鎰 申請人:Kings情報通信