專利名稱:具有鍵盤或相關設備的安全通信的制作方法
技術領域:
本發(fā)明總體上涉及計算機安全領域。本發(fā)明尤其涉及在通信信道上的鍵盤的安全使用,其中該通信信道可能會遭到竊聽或其他類型的篡改。
背景技術:
鍵盤將用戶輸入數(shù)據(jù)傳送到電子設備,例如計算機。當用戶按下鍵盤上的鍵時,鍵盤生成代表被按的特定鍵的數(shù)據(jù)(例如,字母“e”的ASCII碼),并且該數(shù)據(jù)由計算機中的元件,例如裝置驅動器接收。隨后該裝置驅動器向在計算機上運行的正在接收輸入的無論什么程序提供該數(shù)據(jù)(例如,通過將數(shù)據(jù)放入隨便哪個運行中的應用程序的輸入緩沖器)。
在使用鍵盤接收數(shù)據(jù)中出現(xiàn)的一個問題是當數(shù)據(jù)是敏感的或另外需要保密。例如,安全應用(或操作系統(tǒng)的安全服務)可能要求用戶輸入口令,該口令通常不應該隨意泄漏給公眾。然而,因為有若干機會竊聽數(shù)據(jù),所以由鍵盤通向接收數(shù)據(jù)的軟件元件的路徑是非安全的。例如,數(shù)據(jù)將經(jīng)常在會遭到窺探的總線上傳播,并將由可能遭到篡改的裝置驅動器進行處理(或者該操作系統(tǒng)將允許由非安全裝置驅動器來代替,該非安全裝置驅動器存儲和泄漏由驅動器處理的信息)。換句話說,在保密數(shù)據(jù)由鍵盤到其最終目的地的路線上,有若干機會觀測或篡改該保密數(shù)據(jù)。
通常,對由非安全信道連接的兩個元件之間傳送的數(shù)據(jù)進行加密是可能的。然而,由于眾多因素,許多加密技術不容易適用于鍵盤環(huán)境,例如密鑰管理問題、重放攻擊的可能性、以及如果密文的適度尺寸的樣值可被竊聽、那么通過鍵盤產(chǎn)生的相對小范圍的數(shù)據(jù)將會使得在鍵盤通信上形成普通密碼相對易于破解的事實。
從上述觀點可看出,需要一種具有鍵盤的促進安全通信的技術。
發(fā)明概述本發(fā)明提供了一種通過非安全通信信道在兩元件之間進行安全通信的技術。該技術使用一種尤其適合鍵盤的加密方案,,而且在對鍵盤應用標準加密方案的過程中將存在地址問題。
根據(jù)本發(fā)明所述的鍵盤存儲密鑰和常量,該常量用于加密方案的初始化。元件(例如在計算機運行的應用程序)存儲與存儲在鍵盤中的密鑰和常量相同的密鑰和常量。為了啟動元件和鍵盤之間的安全對話,元件和鍵盤分別產(chǎn)生一個現(xiàn)時(nonce),接著互相交換現(xiàn)時,以便鍵盤和元件均擁有兩個現(xiàn)時。鍵盤和元件接著計算兩個初始值,所述的每個初始值都基于兩個現(xiàn)時,按鍵和常量的值。例如,第一初始值可以通過使用CBC-3DESMAC算法創(chuàng)建,此處CBC-3DESMAC使用存儲的常量作為其初始鏈接值并將所述的密鑰應用到消息中,該消息基于兩個現(xiàn)時創(chuàng)建。(CBC-3DESMAC是指依照具有加密塊鏈的數(shù)據(jù)加密標準(DES)算法,應用三倍加密,并使用最終密文塊創(chuàng)建信息證實代碼(MAC))。優(yōu)選地,第二初始值通過反轉第一初始值中的位來創(chuàng)建(例如,在第一初始值和數(shù)字0xffffffffffffffff之間執(zhí)行“exclusive or”操作)。因為鍵盤和元件以同樣方式計算第一和第二初始值,所以它們擁有相同的兩個初始值。
在可選的優(yōu)選實施例中,鍵盤和元件配備有兩個常量,且第一和第二初始值可以通過將CBC-3DESMAC應用到基于兩個現(xiàn)時的消息中、使用第一常數(shù)創(chuàng)建第一初始值和使用第二常數(shù)創(chuàng)建第二初始值來創(chuàng)建。
第一和第二初始值創(chuàng)建后,鍵盤準備傳送加密數(shù)據(jù),將接收該數(shù)據(jù)的元件準備解密并檢驗該數(shù)據(jù)。當數(shù)據(jù)鍵入鍵盤,鍵盤對基于第一初始值和密鑰的數(shù)據(jù)進行加密。優(yōu)選地,鍵盤通過上面提到的使用CBC-3DES(三倍-DES具有密碼塊鏈接)的密鑰和用于填裝密碼塊鏈的第一初始值對數(shù)據(jù)進行加密。鍵盤同樣為優(yōu)選地為使用CBC-3DESMAC的數(shù)據(jù)的每個單元創(chuàng)建MAC,此處該CBC-3DESMAC應用上面提到的密鑰,并使用第二初始值填裝密碼塊鏈。優(yōu)選地,由于這種技術允許出現(xiàn)相同的鍵擊(例如,字母“e”),依賴于先于他自己的鍵擊,表現(xiàn)為不同的密文,因此每次鍵擊在單獨的加密塊中加密,且整個數(shù)據(jù)流在構成密碼塊鏈的對話期間在鍵盤上產(chǎn)生。
一旦在接收元件中接收了加密數(shù)據(jù)和MAC(s),接收元件就使用上面提到的密鑰和第一、第二初始值來解密并驗證該接收到的數(shù)據(jù)。
下面描述本發(fā)明的其他特征。
前面的概述和隨后的優(yōu)選實施例的詳細描述一樣,當結合附圖進行閱讀時將變得更好理解。為達到說明本發(fā)明的目的,本發(fā)明的示范性構造展示在附圖中;然而,本發(fā)明并不限于所公開的特殊方法和手段。附圖中圖1是示范性計算環(huán)境的框圖,本發(fā)明各方面可以在該框圖中執(zhí)行;圖2是第一示范性環(huán)境的框圖,在該框圖中鍵盤和元件之間的通信在非安全信道上發(fā)生;圖3是第二示范性環(huán)境的框圖,在該框圖中鍵盤和元件之間的通信在非安全信道上發(fā)生;圖4是已為安全通信設置的鍵盤和元件的框圖,其依據(jù)本發(fā)明各方面交換現(xiàn)時;圖5是參與鍵盤和元件之間安全通信對話的過程的流程圖;圖6是第一示范性環(huán)境的框圖,在該框圖中鍵盤和元件可以分配為參與依照本發(fā)明各方面的安全通信;發(fā)明詳述示范性計算配置圖1示出了示范性計算環(huán)境,在該環(huán)境中執(zhí)行本發(fā)明的各方面。計算系統(tǒng)環(huán)境100只是一個適合的計算環(huán)境的示例,而且它并不打算對本發(fā)明的使用或功能的范圍作任何限制的建議。計算環(huán)境100也不應解釋為對示范性操作環(huán)境100所示出元件的任何單個或其結合具有任何依賴性或需求。
本發(fā)明對于多個其他通用或專用計算系統(tǒng)環(huán)境或配置是可操作的。雖然眾所周知的計算系統(tǒng)、環(huán)境、和/或配置的實例適合于在本發(fā)明包括的范圍內使用,但是并不局限于個人計算機、服務器計算機、手持或膝上型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程用戶電子設備、網(wǎng)絡PC、迷你計算機、大型計算機、嵌入系統(tǒng)、包含任何上述系統(tǒng)或設備的分布式計算機環(huán)境等等。
本發(fā)明通常可以描述為計算機可執(zhí)行指令上下文,例如計算機執(zhí)行的程序模塊。通常,程序模塊包括例行程序、程序、對象、元件、數(shù)據(jù)結構等,其完成特殊的任務或者實現(xiàn)特殊的抽象數(shù)據(jù)類型。本發(fā)明也在分布式計算環(huán)境內實行,該分布式計算環(huán)境中通過遠程處理設備完成任務,該遠程處理設備通過通信網(wǎng)絡或其他數(shù)據(jù)傳輸媒質連接。在分布式計算環(huán)境中,程序模塊和其他數(shù)據(jù)可以在包含存儲器存儲裝置的本地和遠程計算機存儲媒體中定位。
參照圖1,執(zhí)行本發(fā)明的示范性系統(tǒng)包括以計算機110的形式存在的通用計算設備。計算機110的元件包括,但不限定于處理單元120、系統(tǒng)存儲器130、系統(tǒng)總線121,系統(tǒng)總線121將包括系統(tǒng)存儲器在內的多種系統(tǒng)元件與處理單元120連在一起。系統(tǒng)總線121可以是總線結構若干類型的任何一種,該總線結構包括存儲器總線或存儲器控制器、外圍總線、和使用多種總線體系結構的任何一種的局域總線。作為示例,擔不是限定,這樣的體系結構包括工業(yè)標準體系結構(ISA)總線、微新到體系結構(MCA)總線、增強的ISA(EISA)總線、視頻電子標準協(xié)會(VESA)局域總線、周邊元件擴展接口(PCI)總線(也叫Mezzanine總線)。系統(tǒng)總線121也可以實現(xiàn)為通信設備中的點到點連接、開關結構等等。
計算機110典型地包括多種計算機可讀媒體。計算機可讀媒體可以是任何可以通過計算機110進行訪問的媒體,該媒體包括易失性和非易失性媒體、可刪除和非可刪除媒體。作為示例,但不是限定,計算機可讀媒體可以包含計算機存儲媒體和通信媒體。計算機存儲媒體包括易失性和非易失性、可刪除和非可刪除媒體,該媒體在任何用于信息存儲的方法或技術中使用,所述信息指例如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù)。計算機存儲媒體包括,但不限定為RAM、ROM、EEPROM、閃存和其他存儲技術、CDROM、數(shù)字化視頻光盤DVD或其他光學存儲設備、盒式磁帶、磁帶、磁盤存儲器或其他磁存儲裝置、或任何其他可以用于存儲期望信息并可通過計算機110進行訪問的媒體。通信媒體典型地體現(xiàn)為計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他在已調制數(shù)字信號中的數(shù)據(jù),該已調制數(shù)字信號指例如載波或其他傳輸機制,并包括任何信息傳送媒體。術語“已調制數(shù)據(jù)信號(modulated data signal)”意指一種信號,該信號具有一個或更多特征集,或者以信號編碼信息的方式改變。作為示例,但不是限定,通信媒體號括有線媒體,例如有線網(wǎng)或直接線連接,還包括無線媒體,例如聲學的、RF、紅外線和其他無線媒體。上述的任何組合也應包括在計算機可讀媒體的范圍內。
系統(tǒng)存儲器130包括計算機存儲媒體,該計算機存儲媒體的形式是易失性或非易失性存儲器,例如只讀存儲器(ROM)131和隨機存取存儲器(RAM)132?;据斎胼敵鱿到y(tǒng)133(BIOS)包含典型地存儲在ROM131中的基本例程,該基本例程例如啟動期間幫助在計算機110內的組件之間傳送信息。RAM132典型地包含數(shù)據(jù)和/或程序模塊,該數(shù)據(jù)和/或程序模塊通過處理單元120直接訪問和/或即時操作。作為示例,但不是限定,圖1示出了操作系統(tǒng)134、應用程序135、其他程序模塊136、和程序數(shù)據(jù)137。
計算機110也可以包括其他可刪除/非可刪除、易失性/非易失性計算機存儲媒體。僅作為示例,圖1示出了從非可刪除、非易失性磁性媒體讀取或寫入的硬盤驅動器140,從可刪除、非易失性磁盤152讀取或寫入的磁盤驅動器151,和從可刪除、非易失性光盤156,例如CD ROM或其他光學媒體,讀取或寫入的光盤驅動器155。其他可以用于示范性操作環(huán)境的可刪除/非可刪除、易失性/非易失性計算機存儲媒體包括,但不限定于盒式磁帶機、閃存卡、數(shù)字通用磁盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤接口141典型地通過非可刪除存儲器接口連接到系統(tǒng)總線121,該非可刪除存儲器接口指例如接口140,并且磁盤驅動器151和光盤驅動器155典型地通過可刪除存儲器接口連接到系統(tǒng)總線121,該可刪除存儲接口指例如接口150。
上面討論并在圖1中示出的驅動器和他們的相關計算機存儲媒體提供了計算機可讀指令、數(shù)據(jù)指令、程序模塊和其他計算機110數(shù)據(jù)的存儲。例如在圖1中,硬盤驅動器141可舉例說明為存儲操作系統(tǒng)144、應用程序145、其他程序模塊146、和程序數(shù)據(jù)147。注意,這些元件可以與操作系統(tǒng)134、應用程序135、其他程序模塊136、和程序數(shù)據(jù)137相同或是不同。這里給出的操作系統(tǒng)144、應用程序145、其他程序模塊146、和程序數(shù)據(jù)147具有不同的個數(shù),以舉例說明,至少,它們是不同副本。用戶可以通過輸入設備向計算機20輸入命令和信息,輸入設備指例如鍵盤162和點擊裝置161,點擊裝置通常指鼠標、軌跡球或觸摸板。其他輸入設備(沒有示出)可以包括擴音器、操縱桿、游戲板、圓盤式衛(wèi)星電視天線、掃描儀等。雖然這些及其他輸入設備通常通過耦聯(lián)到系統(tǒng)總線的用戶輸入接口160與處理單元120相連,,但是這些及其他輸入設備也可以通過其他接口和總線結構與處理單元120相連接,例如并行端口、游戲端口或通用串行總線(USB)。監(jiān)測器191或顯示裝置的其他類型經(jīng)由接口也連接到系統(tǒng)總線121,該接口指例如視頻接口190。除監(jiān)測器之外,計算機還包括其他外圍輸出設備,例如揚聲器197和打印機196,它們可以通過輸出外圍接口190連接。
計算機110通過使用邏輯連接到一個或更多遠程計算機,例如遠程計算機180,可以在網(wǎng)絡環(huán)境中操作。遠程計算機180可以是個人計算機、服務器、路由器、網(wǎng)絡PC、端對端設備或其他普通網(wǎng)絡節(jié)點,它典型地包括上面所論及的計算機110的多數(shù)或全部組件,雖然在圖1中僅示出了存儲器存儲設備181。雖然圖1中描述的邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但是還能包括其他網(wǎng)絡。這些網(wǎng)絡環(huán)境在辦公室、企業(yè)外部計算機網(wǎng)絡、企業(yè)內部互聯(lián)網(wǎng)和因特網(wǎng)中是常見的。
當計算機110在LAN網(wǎng)絡環(huán)境中使用時,它通過網(wǎng)絡接口或適配器170連接到LAN171。當計算機110用于WAN網(wǎng)絡環(huán)境時,它典型地包括調制解調器172或者其他的想要在WAN173上建立通信的裝置,例如因特網(wǎng)。內置或者外置的調制解調器172,可以經(jīng)由用戶輸入接口160或者其他適當?shù)臋C制連接到系統(tǒng)總線121。在網(wǎng)絡環(huán)境中,相對于計算機110或者它的部分所描述的程序模塊,可以存儲在遠程存儲器存儲設備中。作為示例,但并不是限定,圖1舉例說明了作為駐留在存儲器設備181上的遠程應用程序185。將會理解到,所示出的網(wǎng)絡連接是說明性的,并且可以使用在計算機之間創(chuàng)建通信連接的其他手段。
鍵盤和元件之間通信的安全本發(fā)明提出了怎樣可以使鍵盤用于與元件安全通信的問題,該元件需要鍵盤從輸入。圖2示出了這樣的通信的示范性方案。在圖2中,鍵盤162與元件204通信。元件204可以是任何類型的元件——例如計算機上執(zhí)行的程序、一塊硬件等。由鍵盤162到元件202的通信由通信信道通過,該通信信道至少包括一些非安全部分204。即,當表示鍵擊的數(shù)據(jù)在由鍵盤162到元件202的路線上通過一些信道時,可能有一些機會被第三方竊聽或篡改該數(shù)據(jù)。如果例如鍵入鍵盤162的信息是不應當向公眾泄漏的秘密口令那么,這種竊聽或篡改可能稱為一個問題。
圖3示出了特殊方案,在該方案中期望鍵盤和元件之間的安全通信。在圖3中,鍵盤162用于向軟件提供輸入,該軟件在計算機110中運行。在圖3的示例中,鍵盤162是適合使用通用串行總線(USB)302的鍵盤。(為簡潔起見,這樣的鍵盤參照USB鍵盤。)鍵盤162接收鍵擊,將那些鍵擊所表示的字節(jié)放置到USB302,此處由USB驅動器304整理該字節(jié)。接下來驅動器304將那些字節(jié)傳送到它們的最終目的地,該最終目的在圖3的示例中是軟件306。軟件306是元件202的實例(圖2所示)。
圖3的示例中有兩個操作系統(tǒng)134(1)和134(2)在計算機110運行。操作系統(tǒng)134(1)是典型的操作系統(tǒng),例如MICROSOFTWINDOWSXP,Unix,Linux、Solaris等。操作系統(tǒng)134(2)是“高保證”操作系統(tǒng),它用于存放應用程序。例如,操作系統(tǒng)134(2)可以與“掩蔽的”存儲器相連接,該存儲器在操作系統(tǒng)134(2)外是不可存取的,而且操作系統(tǒng)134(2)可以在該掩蔽的存儲器中存儲秘密信息(例如,加密密鑰、口令等),因此只有一定的特殊應用程序可以讀取該秘密信息,該應用程序允許在操作系統(tǒng)134(2)下執(zhí)行。操作系統(tǒng)134(2)是“高保證”的,意味著公眾被授予非常高級別的保證,可以正確執(zhí)行它的功能——即,如果保護秘密信息是操作系統(tǒng)134(2)的一個預期的功能,那么公眾被授予非常高級別的保證,操作系統(tǒng)134(2)將不會泄漏秘密信息。能保護秘密通信的部分,可以包括能夠接收鍵入的秘密(例如口令)而不將這些秘密泄漏到外界。由于驅動器304在操作系統(tǒng)134(1)的控制下(且操作系統(tǒng)134(1)可能允許電腦黑客直接由USB302讀取信息,或者允許電腦黑客以存儲和暴露該秘密信息的邪惡驅動器來做替代),因此操作系統(tǒng)134(2)不能信任驅動器304去操控這些秘密信息。因此,操作系統(tǒng)134(2)需要一種途徑,在不為發(fā)生在操作系統(tǒng)134(1)中的行動會泄漏秘密信息而擔憂的情況下,通過操作系統(tǒng)134(1)從鍵盤162接收信息。
應當理解,盡管圖3的實例示出鍵盤162通過通用串行總線USB302與計算機110進行通信,但是可以應用上述方案而不管鍵盤162與計算機110進行通信的確切方法,因而本發(fā)明不限于USB鍵盤。
圖4示出了鍵盤162與元件202怎樣配置,以參與通過非安全信道的安全通信。鍵盤162和元件202每個都存儲加密密鑰402的副本。鍵盤162和元件202還適宜存儲常量404,該常量用作特殊首選加密技術的初始值,下面將更加詳細的描述。在更優(yōu)選的實施例中,鍵盤162和元件202可存儲(除了密鑰外)兩個常量而不是一個;這兩個常量可以象下面描述的一樣用于加密技術。例如,鍵盤162可以包含臺上非易失性半導體,該半導體存儲密鑰402和常量404,也可以具有一個端口,該端口接收存儲有密鑰402和元件404的可刪除存儲媒體。在元件202是軟件元件的情況下,密鑰402和元件404可以存儲在元件202的數(shù)據(jù)區(qū)。然而應當理解的是,本發(fā)明不限于存儲密鑰402和404的任何特殊方式。
在鍵盤162和元件202之間的安全通信的開始,鍵盤162和元件202可以產(chǎn)生和交換現(xiàn)時。這就是說,鍵盤162產(chǎn)生現(xiàn)時412并將現(xiàn)時412發(fā)送到元件202。元件202產(chǎn)生現(xiàn)時414并將現(xiàn)時414發(fā)送到鍵盤162。作為本領域公知的,現(xiàn)時是一段數(shù)據(jù),該數(shù)據(jù)用于加密應用程序——經(jīng)常驗證加密實體,或者起動加密對話,該對話有不易復制的組件,加密可以依靠該組件制造。現(xiàn)時412和414可用于創(chuàng)建在鍵盤162和元件202之間傳送的數(shù)據(jù)的驗證和加密的初始值,這一點將在下面更加詳細的描述。
由鍵盤到元件安全發(fā)送數(shù)據(jù)的過程圖5示出了一個過程,通過該過程鍵盤162和元件202可以參加對話,其中元件202從鍵盤162安全接收數(shù)據(jù)。圖5的過程為加密(其保護傳送數(shù)據(jù)反竊聽)和驗證(其保護傳送數(shù)據(jù)反篡改)作準備。但是應當理解的是,依靠傳輸?shù)陌踩枨?,可以單獨使用加密或驗證。例如,如果可以容許修改數(shù)據(jù)而不允許竊聽,那么可以單獨使用加密。相反的,如果可以容許竊聽數(shù)據(jù)而不允許修改,那么可以單獨使用驗證。
起初,鍵盤162和元件202交換現(xiàn)時502。例如,象上面描述的圖4中的連接一樣,鍵盤162可產(chǎn)生現(xiàn)時412,并將其發(fā)送到元件202,元件202可產(chǎn)生現(xiàn)時414,并將其發(fā)送到鍵盤162。產(chǎn)生現(xiàn)時的技術在本領域中是公知的,且這里不詳細描述那些技術。作為一些實例,現(xiàn)時412和414可以基于隨機數(shù)、存儲器的一些區(qū)域的內容、時間、溫度、月相等,或者可能經(jīng)常改變并且有充足范圍的任何其它因素產(chǎn)生,鍵盤162或元件202未必將會生成兩次相同的現(xiàn)時。
現(xiàn)時412和414交換502后,鍵盤162和元件202每個都擁有兩個現(xiàn)時。接下來鍵盤162和元件202使用針對計算504的普通的、與公式一致的兩個初始值——IV-c和IV-m—作為現(xiàn)時和密鑰402的函數(shù)。即,如果K=key402,N1=nonce412,且N2=once414,則IV_c=f(K,N1,N2),且IV_m=g(K,N1,N2)。
函數(shù)f和g可以是任何函數(shù)。在優(yōu)選的實施例中,f(K,N1,N2)=CBC-3DESMACK(const_IV,N1|N2);且g(K,N1,N2)=f(K,N1,N2)xor 0xffffffffffffffff,其中const_IV等于常量404(圖4所示)。在更優(yōu)選的實施例中,鍵盤和組件共享兩個常量(例如const_IV_1和const_IV_2),函數(shù)f和g可以優(yōu)選地計算如下f(K,N1,N2)=CBC-3DESMACK(const_IV_1,N1|N2);且g(K,N1,N2)=CBC-3DESMACK(const_IV_2,N1|N2),
(運算符“|”意為級連,所以N1|N2是由N1和N2并置所產(chǎn)生的值?!皒or”是逐位“異或(exclusive or)”操作,所以A xor B的結果值如此得來當A或者B中一個而不是兩者的任何一位是“1”則設置為“1”且把其他位設置為零。)CBC-3DESMACK(const_IV,N1|N2)是加密函數(shù),它的含義在本領域是公知的,并在下面更詳細的描述。
IV_c和IV_m計算完后,可以開始鍵盤162和元件202之間的通信。鍵盤162接收鍵擊——即通過操作者按下一個鍵(或者特定鍵的組合,例如<SHIFT>和“A”或者<CTRL>和“A”)(步驟506)。接下來鍵盤加密508鍵擊;加密優(yōu)選地基于密鑰402和IV_c。在優(yōu)選的實施例中,鍵擊使用CBC-3DES加密,用密鑰402作為密鑰且IV_c作為初始值。CBC-3DES本領域公知的加密算法,并在下面更詳細的描述。另外,鍵盤162為鍵擊計算510消息驗證碼(MAC),優(yōu)選地基于密鑰402和IV_m。在優(yōu)選的實施例中,消息驗證碼使用CBC-3DESMAC創(chuàng)建,用密鑰402作為密鑰且IV_m作為初始值。作為上面的注解,CBC-3DESMAC是本領域公知的并在下面更詳細的描述。
鍵盤創(chuàng)建加密鍵擊數(shù)據(jù)和MAC后,元件202從鍵盤162接收512加密鍵擊數(shù)據(jù)和MAC(步驟512)。接下來元件202使用密鑰402和IV_c解密514所述的數(shù)據(jù),并使用密鑰402和IV_m核對該數(shù)據(jù)(步驟514)。過程然后回到步驟506,以在鍵盤接收下一個輸入。
加密函數(shù)CBC-3DES和CBC-3DESMACCBC-3DES是加密函數(shù),它將數(shù)據(jù)加密標準(DES)和密碼塊鏈(CBC)相結合?!?DES”意為將DES加密算法三次應用到給出數(shù)據(jù)塊(“triple-DES”)。DES以公知的方式通過將密鑰應用到數(shù)據(jù)來加密數(shù)據(jù)。DES通過將該消息分成小塊、并加密該分開的塊來加密長消息。(當使用“triple-DES”時,將DES算法應用到每個塊三次,以生成該塊的密文。)DES(和三倍-DES)可以通過僅使用一個密鑰來加密數(shù)據(jù)的每個塊;然而,當使用密碼塊鏈時,一個塊的加密不止基于密鑰,還基于密文,該密文通過加密最末塊生成。因而,加密一個給出的塊基于兩個輸入密鑰和密文,該密文由加密在前的塊產(chǎn)生。因為要加密的數(shù)據(jù)的第一塊沒有在前的塊,所以密碼塊鏈過程必須以“初始值”為初始即,基于密碼和一些初始值加密數(shù)據(jù)的第一塊。雖然初始值不用于隨后的塊的加密,但是初始值可以直接影響那些塊怎樣加密(因為第一塊的密文基于初始值、第二塊的密文基于第一塊的密文、等等)。
在前討論的視圖中,短語“CBC-3DESK(IV,message)”意為使用三倍-DES和密碼塊鏈的密碼K加密“消息”,其中IV是密碼塊鏈的初始值。
CBC-3DESMAC是使用CBC-3DES生成消息驗證碼(MAC)的途徑。尤其是短語CBC-3DESK(IV,message)意為“消息”通過使用三倍-DES和密碼塊鏈的密鑰K加密,且使用IV作為密碼塊鏈的初始值。然而,因為CBC-3DESMAC的目標僅是為了生成適合于消息的MAC而不是適合于消息的復合密文,所以僅存儲密文的最末塊,且可以刪除密文的剩余塊。密文的最末塊可以用作MAC,因為——即使給出常量密碼和常量IV——不同消息是不可能生成相同的最終塊的(或者,更精確地,如果每個塊能代表2n個不同值,任意兩個消息會有相同的最末塊只有2n之一個機會)。
應當指出的是,CBC-3DES的特別選擇,也是它使用的途徑,對加密鍵盤通信特別的有利。因為要加密的消息域很小(例如,大約128個不同的ASCII字符),密碼塊鏈在阻止密碼破解中特別有用。如果使用直加密(無鏈),那么,在給出的對話中,每次鍵入的每個字符都加密為相同的密文——例如,鍵入“e”總是會生成相同的密文。通過制造有根據(jù)的推測(例如,通過使用英語中“e”是最通常出現(xiàn)字母這一事實),可以更容易的破解該密文。通過確保相同的數(shù)據(jù)可以表示為不同的密文,鏈接所有在對話中的輸入會使密文更難破解,該密文依賴于它在輸入流中的位置(例如,“e”不能總是生成相同密文)。另外,通過創(chuàng)建基于現(xiàn)時的新初始值改變每個對話的加密,阻止觀測者檢測使用模型,該使用模型可用于危及安全性(例如,如果在每個對話中鍵入的第一正文都是口令,那么觀測者會捕獲口令的密文并建立一個重放攻擊。)。此外,DES使用的密碼塊的尺寸是特別適合的,因為DES以8字節(jié)塊操作,且塊中的多數(shù)鍵盤協(xié)議傳輸數(shù)據(jù)可適合這個尺寸(例如,USB標準也從事于8字節(jié)塊,因而每個USB塊都適合DES塊而沒有浪費的空間。)然而,應當理解的是,可以使用任何其他塊密碼,且同CBC相似的鏈接概念可以應用于這樣的塊密碼。
需要進一步指出的是,由于相同的原因,這里所述的加密方案尤其適合于鍵盤,該加密方案也很適合某些其他類型的輸入裝置,例如鼠標(或其他指點裝置)。這些輸入裝置分享與鍵盤相同的許多特征,例如小符號集,和受限制的執(zhí)行復雜的加密算法的能力。
加密數(shù)據(jù)的鍵盤的示范性使用圖6示出了示范性環(huán)境,在該環(huán)境中,執(zhí)行加密的鍵盤可以與需要安全通信的元件一起使用。在圖6的實施例中,制造商602制造多個鍵盤162(1),162(2),162(3),…,162(n),并將這些鍵盤分配給公眾使用。每個鍵盤162(1),162(2),162(3),…,162(n)都結合密鑰402和常量404(圖4所示)(或結合一些裝置,通過這些裝置可以外部訪問密鑰402和常量404,例如通過適合于可刪除半導體存儲端口的裝置)。制造商604制造多個元件202(1),202(2),…,202(m),這些元件受益于同鍵盤的安全通信。每個元件202(1),202(2),…,202(m)都結合密鑰402和常量404(或者以某種可以接收密鑰和常量的方式)?,F(xiàn)在元件202(1),202(2),…,202(m)通過上面描述的技術,可以接收來自鍵盤162(1),162(2),162(3),…,162(n)的輸入。
因為制造商602可以與制造商604有先前存在的關系,所以兩個制造商對密鑰402和元件404達成一致意見,該密鑰和元件應當結合,以進行安全通信。在一個實施例中,制造商602和604是相同的實體。在其他實施例中,制造商604是元件202(1),202(2),…,202(m)的制造商,他愿意那些元件能接收來自安全鍵盤的數(shù)據(jù),且制造商602是鍵盤的制造商,制造商604在制造適合于與元件202(1),202(2),…,202(m)進行安全通信的鍵盤、以及保存密鑰402和/或常量404方面,被認為是充分可信賴的。
應當指出的是,提供前述的實施例僅僅為了解釋的目的,而決不應解釋為本發(fā)明的限制。應當理解的是,盡管本發(fā)明參照多個實施例進行描述,但這里所使用的措辭是描述和說明的措辭,而不是限制的措辭。進一步說,雖然這里參照特殊的裝置、材料和實施例描述本發(fā)明,但是本發(fā)明不想限于這里公開的細目;相反的,本發(fā)明擴展到所有功能性等效的結構、方法和用途,例如在附加的權利要求的范圍之內的。本領域的熟練技術人員,受益于本說明書的教導,可以實現(xiàn)很多改變,且該改變在特征上不脫離本發(fā)明的精神和范圍。
權利要求
1.一種用鍵盤通信的方法,包括在元件接收來自鍵盤的多個數(shù)據(jù),該多個數(shù)據(jù)三倍-DES和密碼塊鏈進行加密,該密碼塊鏈使用密鑰和第一初始值,所述密鑰和所述初始值對元件和鍵盤都是可知的;基于所述初始值和所述密鑰加密該多個數(shù)據(jù)。
2.如權利要求1所述的方法,還包括元件接收來自鍵盤的與多個數(shù)據(jù)一致的多個消息驗證碼,所述消息驗證碼用三倍-DES和密碼塊鏈創(chuàng)建,該密碼塊鏈使用密鑰和與所述第一初始值不同的第二初始值,所述第二初始值對元件和鍵盤是可知的;通過使用多個消息驗證碼檢驗該多個數(shù)據(jù)。
3.如權利要求2所述的方法,還包括從鍵盤接收第一現(xiàn)時;向鍵盤發(fā)送第二現(xiàn)時;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值和第二初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第三初始值。
4.如權利要求2所述的方法,還包括從鍵盤接收第一現(xiàn)時;向鍵盤發(fā)送第二現(xiàn)時;通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第三初始值;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第二初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第四初始值。
5.如權利要求1所述的方法,其中多個數(shù)據(jù)通過信道接收,元件不能信任該信道的特性完整性。
6.如權利要求5所述的方法,其中元件包括第一操作系統(tǒng),該第一操作系統(tǒng)與第二操作系統(tǒng)共同在計算裝置上執(zhí)行,第一操作系統(tǒng)在至少一些方面不信任第二操作系統(tǒng)的特性,鍵盤與第一操作系統(tǒng)通過由第二操作系統(tǒng)控制的驅動器通信。
7.如權利要求1所述的方法,其中鍵盤包括USB鍵盤。
8.如權利要求7所述的方法,其中所述三倍-DES和密碼塊鏈在具有預定尺寸的塊中加密數(shù)據(jù),且其中鍵盤在所述預定尺寸的塊中與數(shù)據(jù)進行通信。
9.如權利要求1所述的方法,其中多個數(shù)據(jù)的每一個都基于在鍵盤接收的單獨的鍵擊產(chǎn)生。
10.如權利要求1所述的方法,還包括從鍵盤接收第一現(xiàn)時;向鍵盤發(fā)送第二現(xiàn)時;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值和第二初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第二初始值。
11.一種用計算機可執(zhí)行指令進行編碼的計算機可讀媒體,該計算機可執(zhí)行指令用于執(zhí)行在元件中從鍵盤安全地接收輸入的方法,該方法包括在元件接收來自鍵盤的多個已加密鍵擊,該已加密鍵擊通過加密在具有三倍-DES和密碼塊鏈的鍵盤處所接收的輸入鍵擊在鍵盤處創(chuàng)建,該密碼塊鏈使用密鑰和第一初始值,該密鑰和第一初始值對鍵盤和元件都是可用的;及在元件使用密鑰和第一初始值解密多個已加密鍵擊。
12.如權利要求11所述的計算機可讀媒體,其中元件包括第一操作系統(tǒng),該第一操作系統(tǒng)與第二操作系統(tǒng)共同在計算裝置上執(zhí)行,第一操作系統(tǒng)在至少一些方面不信任第二操作系統(tǒng)的特性,鍵盤與第一操作系統(tǒng)通過由第二操作系統(tǒng)控制的驅動器通信。
13.如權利要求11所述的計算機可讀媒體,其中該方法還包括元件接收來自鍵盤的與多個加密鍵擊一致的多個消息驗證碼,所述消息驗證碼用三倍-DES和密碼塊鏈創(chuàng)建,該密碼塊鏈使用密鑰和與所述第一初始值不同的第二初始值,所述第二初始值對鍵盤和元件是可知的;通過使用多個消息驗證碼檢驗該多個加密鍵擊。
14.如權利要求13所述的計算機可讀媒體,其中該方法還包括從鍵盤接收第一現(xiàn)時;向鍵盤發(fā)送第二現(xiàn)時;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值和第二初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第三初始值。
15.如權利要求13所述的計算機可讀媒體,其中該方法還包括從鍵盤接收第一現(xiàn)時;向鍵盤發(fā)送第二現(xiàn)時;通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第三初始值;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第二初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第四初始值。
16.如權利要求11所述的計算機可讀媒體,其中所述三倍-DES和密碼塊鏈在有預定尺寸的塊中加密數(shù)據(jù),且其中鍵盤在有所述預定尺寸的塊中與數(shù)據(jù)進行通信。
17.一個鍵盤,包括一個或多個存儲第一初始值和密鑰的存儲位置;加密元件,該加密元件在具有三倍-DES和密碼塊鏈的鍵盤處接收的輸入數(shù)據(jù)進行加密,該密碼塊鏈使用所述的密鑰和所述的第一初始值,籍此加密數(shù)據(jù)基于所述輸入數(shù)據(jù)創(chuàng)建;且通信接口,該通信接口向鍵盤外部的設備傳送所述加密數(shù)據(jù),所述加密數(shù)據(jù)指定為所述第一初始值和所述密鑰都所知的接收者。
18.如權利要求17所述的鍵盤,其中加密元件進一步創(chuàng)建多個與加密數(shù)據(jù)或輸入數(shù)據(jù)一致的消息驗證碼,所述消息驗證碼用三倍-DES和密碼塊鏈創(chuàng)建,該密碼塊鏈使用密鑰和與所述第一初始值不同的第二初始值,
19.如權利要求17所述的鍵盤,其中鍵盤包括USB鍵盤。
20.如權利要求17所述的鍵盤,其中通信接口向驅動器傳送所述加密數(shù)據(jù),該驅動器由所述設備中的第一操作系統(tǒng)控制,于是所述加密數(shù)據(jù)傳送到所述接受者,所述接受者是在所述裝置上執(zhí)行的第二操作系統(tǒng)或是在所述第二操作系統(tǒng)下執(zhí)行的程序,所述第二操作系統(tǒng)在至少一些方面不信任第一操作系統(tǒng)的特性。
21.如權利要求17所述的鍵盤,其中所述加密元件適于;通過通信接口從接收者接收第一現(xiàn)時;通過通信接口向接收者發(fā)送第二現(xiàn)時;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件都所知的密鑰和第二初始值。
22.如權利要求17所述的鍵盤,其中鍵盤接收的輸入數(shù)據(jù)包括多個單獨的鍵擊,且其中加密元件單獨加密每個單獨的鍵擊。
23.一種用計算機可執(zhí)行指令進行編碼的計算機可讀媒體,該計算機可執(zhí)行指令用于執(zhí)行使鍵盤能夠參與與鍵盤外部的元件進行安全通信的方法,該方法包括接收多個輸入鍵擊;對每個具有三倍-DES和密碼塊鏈的輸入鍵擊進行加密,該密碼塊鏈使用密鑰和第一初始值,該密鑰和第一初始值對鍵盤和元件都是可知的,籍此多個加密鍵擊,;及向元件傳送該加密鍵擊。
24.如權利要求23所述的計算機可讀媒體,其中所述三倍-DES和密碼塊鏈在有預定尺寸的塊中加密數(shù)據(jù),且其中鍵盤在所述預定尺寸的塊中與數(shù)據(jù)進行通信。
25.如權利要求23所述的計算機可讀媒體,其中該方法還包括創(chuàng)建多個具有三倍-DES和密碼塊鏈的消息驗證碼,該密碼塊鏈使用密鑰和與所述第一初始值不同的第二初始值,該多個消息驗證碼與該多個鍵擊一致;及將消息驗證碼檢驗傳送到元件。
26.如權利要求23所述的計算機可讀媒體,其中該方法還包括向元件發(fā)送第一現(xiàn)時;向元件發(fā)送第二現(xiàn)時;及通過應用三倍-DES和密碼塊鏈創(chuàng)建第一初始值,以合并第一現(xiàn)時和第二現(xiàn)時,使用為鍵盤和元件者防知的密鑰和第二初始值。
27.一種使數(shù)據(jù)能安全輸入到軟件元件的方法,包括分配軟件元件的副本,該軟件元件包括密鑰;第一初始值;及計算機可執(zhí)行指令,該計算機可執(zhí)行指令使軟件能夠向鍵盤發(fā)送第一現(xiàn)時;從鍵盤接收第二現(xiàn)時;基于所述第一現(xiàn)時、所述第二現(xiàn)時和所述第一初始值創(chuàng)建第二初始值;及使用密鑰和第二初始值解密從鍵盤接收的加密數(shù)據(jù);及分配,或者使能夠分配,鍵盤,該鍵盤包括存儲或者訪問密鑰副本的硬件;存儲或者訪問第一初始值副本的硬件;硬件或者軟件使鍵盤能夠從軟件元件接收第一現(xiàn)時;向軟件元件發(fā)送第二現(xiàn)時;及基于所述第一現(xiàn)時、所述第二現(xiàn)時和所述第一初始值創(chuàng)建第二初始值;及通過對在使用密鑰和第二初始值的鍵盤處接收的輸入數(shù)據(jù)進行加密,來創(chuàng)建加密數(shù)據(jù)。
28.如權利要求27所述的方法,其中所述鍵盤還包括硬件或軟件,其使鍵盤能夠基于所述第一現(xiàn)時、所述第二現(xiàn)時和所述第一初始值創(chuàng)建第三初始值,所述第三初始值與所述第二初始值不同;及使用密鑰和第三初始值創(chuàng)建消息驗證碼;軟件元件還包括計算機可執(zhí)行指令以基于所述第一現(xiàn)時、所述第二現(xiàn)時和所述第一初始值創(chuàng)建第三初始值;及使用密鑰和第三初始值檢驗該消息驗證碼。
29.如權利要求27所述的方法,其中加密數(shù)據(jù)通過將具有密碼塊鏈的三倍-DES應用到使用密鑰和第二初始值的輸入數(shù)據(jù)中來創(chuàng)建。
30.如權利要求27所述的方法,其中鍵盤適合于單獨的加密每個鍵擊。
全文摘要
鍵盤和例如計算機上運行的一段軟件的元件之間的安全通信。第一初始值是為鍵盤和元件都所知的。鍵盤和元件交換現(xiàn)時。鍵盤和元件基于現(xiàn)時和第一初始值分別計算第二初始值和第三初始值。由于鍵盤和元件都執(zhí)行相同的計算,因此鍵盤和元件每個都有相同的第二和第三初始值?;诿荑€和第二初始值,鍵盤加密數(shù)據(jù)運往使用CBC-3DES的元件,并且基于密鑰和第三初始值為每個使用CBC-3DESMAC的創(chuàng)建消息驗證碼。元件解密和檢驗使用密鑰和第二、第三初始值的鍵擊。
文檔編號G06F21/00GK1599311SQ200410043080
公開日2005年3月23日 申請日期2004年5月8日 優(yōu)先權日2003年5月2日
發(fā)明者M·佩那多, J·貝納爾 申請人:微軟公司