用於通過網絡安全喚醒計算機系統的系統和方法
2023-09-23 06:20:55
用於通過網絡安全喚醒計算機系統的系統和方法
【專利摘要】公開一種用於通過網絡安全喚醒計算機系統的系統和方法。伺服器可以通過網絡從第一計算機系統中的網絡接口控制器(NIC)接收註冊消息。所述第一計算機系統可以處於睡眠模式。所述伺服器可以對所述第一計算機系統進行註冊:可以將針對所述第一計算機系統的識別信息存儲在存儲器中。可以通過所述網絡從第二計算機系統接收喚醒消息。所述喚醒消息可以包括識別所述第一計算機系統的信息和驗證信息。可以通過所述網絡將所述喚醒消息發送到所述第一計算機系統。所述喚醒消息可以向所述NIC指示喚醒所述第一計算機系統。在喚醒所述第一計算機系統之前,所述驗證信息可以由所述伺服器或者所述NIC中的任意一個或者二者進行驗證。
【專利說明】用於通過網絡安全喚醒計算機系統的系統和方法
【技術領域】
[0001]本發明通常涉及計算機系統,具體地說,本發明涉及用於通過網絡安全喚醒計算機系統的系統和方法。
【背景技術】
[0002]在當今社會,計算機系統無處不在。計算機系統的共同特徵是進入「睡眠」(或者「待機」或「低功率」)狀態以便節約功率的能力。通常,當人們離計算機系統很近時,「喚醒」這種狀態下的計算機系統是簡單的:按下電源鍵、「喚醒」鍵、或者觸發另一本地輸入設備(例如,鍵盤或滑鼠)是用於本地喚醒計算機系統的典型方式。
[0003]然而,隨著計算機系統的移動性和連通性的不斷增長,遠程訪問計算機系統也變為一種期望的能力。例如經由網絡接口控制器的網絡連接能夠使計算機系統通過區域網和/或廣域網進行通信。然而,如果計算機處於睡眠狀態,則該計算機系統會經由這樣的網絡對於其它計算機系統不可訪問。
[0004]已經提出了用於通過網絡喚醒計算機系統的解決方案,但是這些解決方案通常具有明顯的相關聯的問題。例如,如果睡眠計算機設備經歷網絡地址轉換(NAT)(例如,如果該計算機設備在路由器之後),則這會干擾喚醒命令的傳輸。在一些情況下,這樣的睡眠設備可能不能夠接收喚醒命令,除非在NAT路由器處設置正確的非軍事區(DMZ) /埠轉發和靜態地址解析協議(ARP)。這是複雜的和不期望的(例如,出於安全原因),或者在商業情形下,是公司策略所不允許的。
[0005]此外,現有的解決方案不提供安全性。使用現有技術,如果IP位址或MAC地址已知,則任何人都可以喚醒睡眠計算設備。結果,睡眠計算機會由於接收到與喚醒命令一致匹配的分組而被偶然喚醒或者例如被黑客出於惡意目的喚醒。
[0006]因此,該領域的改進是期望的。
【發明內容】
[0007]提出本公開的實施例以便提供用於通過網絡安全喚醒睡眠計算機系統的安全系統和方法。本發明的一些實施例涉及一種用於伺服器促進通過網絡(例如以網際網路為例的廣域網)的計算機系統的安全喚醒的計算機實現的方法、配置為實現所述方法的伺服器、以及包括在存儲介質上的能夠由計算機系統(例如,伺服器)執行以便實現所述方法的程序指令。本公開的實施例還涉及一種用於網絡接口控制器(NIC)使能通過網絡的計算機系統的安全喚醒的方法,以及配置用於在計算機系統中使用並且配置為實現所述方法的NIC。
[0008]本文公開的系統和方法的一個優點是當計算機系統受支配於網絡地址轉換(NAT)時喚醒該計算機系統的能力。例如,通常用於提供區域網並且提供該區域網到廣域網的連接的許多路由器向該區域網中的計算設備提供NAT。這樣的計算設備可能具有接收喚醒命令的麻煩,除非在提供NAT的路由器處設置了正確的非軍事區(DMZ)/埠轉發和靜態地址解析協議(ARP)。這是一個複雜過程,並且在一些情形下(例如,商業設置中),公司IT策略可能並不允許。
[0009]根據一些實施例,本文公開的系統和方法可以有利地包括睡眠客戶端發起向喚醒促進伺服器的註冊。通過發起與該伺服器的聯繫,並且周期性地更新該聯繫,例如,通過周期性地發送新的註冊消息,可以在該睡眠計算機系統和伺服器之間維持實時連接。這可以允許伺服器在不需要導航NAT的情況下向睡眠計算機系統發送喚醒消息。
[0010]本文公開的系統和方法的另一優點是提供了安全性。在沒有安全性的情況下,在給定基本信息(例如,IP位址)的情況下,任何人都可能喚醒睡眠計算機系統。這可能會例如通過黑客惡意地發生,或者由於向該睡眠客戶端發送的分組與指定的喚醒模式(例如,LAN喚醒技術(WOL)模式)偶然匹配而發生。
[0011]根據一些實施例,本文公開的系統和方法可以有利地包括由喚醒伺服器和睡眠計算機系統本身中的一個或兩個對喚醒消息進行驗證。此外,在一些實施例中,出於安全層的附加層面,該系統和方法中提供的喚醒消息和其它消息可以被加密。
[0012]可以按照下面來執行用於配置用於在計算機系統中使用以便促進通過網絡的計算機系統的安全喚醒的伺服器和NIC的方法的實施例。
[0013]可以通過網絡從第一計算機系統接收註冊消息。所述第一計算機系統可以包括網絡接口控制器(NIC),當所述第一計算機系統處於睡眠模式中時,可以從所述NIC接收所述註冊消息。所述註冊消息可以包括針對所述第一計算機系統的用戶選擇的人類可讀的識別信息。可以對所述第一計算機系統進行註冊,其中所述註冊可以包括將針對所述第一計算機系統的識別信息(可以包括所述用戶選擇的人類可讀的識別信息)存儲在存儲器中。在一些實施例中,所述註冊消息還可以包括隨機數和加密算法,其中所述隨機數和所述加密算法也可以存儲在所述存儲器中。
[0014]在一些實施例中,可以通過所述網絡從第二計算機系統接收查詢請求。所述查詢請求可以包括針對所述第一計算機系統的所述識別信息。
[0015]在從所述第二計算機系統接收查詢請求的這些實施例中,可以通過所述網絡向所述第二計算機系統發送查詢答覆。取決於所述實施例,所述查詢答覆可以包括針對所述第一計算機系統的所述識別信息、所述隨機數以及所述加密算法和/或其它信息。
[0016]可以通過所述網絡從所述第二計算機系統接收喚醒消息。所述喚醒消息可以包括識別所述第一計算機系統的信息。在一些實施例中,識別所述第一計算機系統的所述信息可以包括針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息,和/或在所述第一計算機系統的註冊期間存儲在存儲器中的其它識別信息。所述喚醒消息還可以包括驗證信息。在一些實施例中,所述驗證信息可以包括所述隨機數,所述隨機數可以根據所述加密算法進行加密。在一些實施例中,另外地或者替代地,可以將密碼或者其它預共享密鑰(例如,其對於第一計算機系統和第二計算機系統已知)用作對所述隨機數進行加密的一部分,和/或用作另一種類型的驗證信息。
[0017]可以向所述第一計算機系統發送所述喚醒消息。在一些實施例中,所述伺服器可以基於包括在所述喚醒消息中的所述驗證信息對所述喚醒消息進行驗證。在這樣的實施例中,向所述第一計算機系統發送所述喚醒消息可以基於對所述喚醒消息中的所述驗證信息的成功驗證。替代地,所述伺服器可以簡單地向所述第一計算機系統發送所述喚醒消息,並且允許所述第一計算機系統中的所述NIC對所述喚醒消息進行驗證。[0018]所述NIC可以接收所述喚醒消息。所述NIC可以基於所述驗證信息對所述喚醒消息進行驗證。應當注意的是,在一些實施例中,所述NIC可以配置為對所述喚醒消息進行驗證,而無論所述伺服器是否也對所述喚醒消息執行驗證,例如,出於額外的安全。如果對所述喚醒消息進行了成功驗證,則所述NIC可以喚醒所述第一計算機系統。
[0019]在一些實施例中,基於所述NIC向所述伺服器發送所述註冊消息並且所述伺服器從所述NIC接收到所述註冊消息,可以在接收到所述註冊消息之後,在所述NIC和所述伺服器之間將連接維持預定的時間段。如上所述,在一些實施例中,這一活動維持的連接可以有利地允許所述伺服器向所述NIC發送喚醒消息,而不管所述伺服器和所述第一計算機系統之間的任何NAT如何。因而,根據一些實施例,在維持與所述NIC的所述連接時,執行註冊所述第一計算機系統、接收所述查詢請求和發送所述查詢答覆、以及接收和發送所述喚醒消息。換言之,僅當與所述第一計算機系統的所述連接仍然活動時,才將所述伺服器從計算機系統接收的喚醒消息轉發到所述第一計算機系統。
[0020]如果在所述預定的時間段結束之前,在所述伺服器和所述NIC之間沒有交換進一步的消息,則維持所述連接的所述預定的時間段可以到期。因此,在一些實施例中,可以從所述NIC周期性地接收新的註冊消息(例如,在與所述NIC的所述連接到期之前,以便維持連續的連接)。基於接收到每一個新的註冊消息,可以對所述NIC和所述伺服器之間的所述連接進行延長。例如,取決於所述實施例,可以建立新的預定的時間段,或者可以將額外的預定的時間段增加到剩餘的預定的時間段。
【專利附圖】
【附圖說明】
[0021]當結合下面的附圖來閱讀下面的實施例的詳細描述時,可以獲得本發明的更好理解,其中:
[0022]圖1說明了根據一個實施例包括幾個聯網的計算機系統的示例性系統;
[0023]圖2是說明根據一個實施例的計算機系統的可能部件的方框圖;
[0024]圖3是說明用於通過網絡安全喚醒計算機系統的方法的實施例的流程圖;
[0025]圖4說明了根據一個實施例包括各種聯網的設備並且包括所述設備之間的示例性消息流的示例性系統;並且
[0026]圖5是說明根據一個實施例的典型消息格式的圖。
[0027]儘管本發明容許各種修改和替代形式,但是在附圖中通過示例的方式示出了其具體實施例並且在本文中對其進行了詳細描述。然而,應當理解的是,這些附圖及其詳細描述並不意在將本發明局限到所公開的特定形式,而是相反,本發明意在覆蓋落入在所附權利要求中限定的本發明的精神和範圍內的所有修改、等同物和替代物。
【具體實施方式】
[0028]術語
[0029]下面是在本申請中使用的術語的詞彙表:
[0030]存儲介質-各種類型的存儲器設備或者存貯設備中的任意一種。術語「存儲器」和「存儲介質」意在包括諸如CD-ROM、軟盤或者磁帶設備的安裝介質;諸如DRAM、DDR RAM、SRAM,EDO RAM,Rambus RAM等等的計算機系統存儲器或者隨機存取存儲器;或者諸如快閃記憶體、硬體寄存器、磁介質(例如,硬驅)或者光學存儲的非易失性存儲器。存儲介質也可以包括其它類型的存儲器或者其組合。術語「存儲介質」可以包括兩種或更多種存儲介質。
[0031]計算機系統-各種類型的移動或靜止計算或處理系統中的任意一種,包括個人計算機系統(PC)、大型計算機系統、工作站、網絡設備、網際網路設備、行動電話、智慧型電話、膝上型計算機、筆記本、上網本或者平板計算機系統、個人數字助理(PDA)、多媒體設備或者其它設備或者設備的組合。通常,術語「計算機系統」可以被廣泛地定義為涵蓋具有至少一個處理器的任何設備(或者設備的組合),所述至少一個處理器執行來自存儲介質的指令。
[0032]隨著網際網路的不斷擴大的影響以及靜止和移動計算設備的數量的爆炸式增長,從另一計算機系統遠程地訪問一個計算機系統變成一種司空見慣的活動。然而,通常為了遠程訪問計算機系統,該計算機系統必須被加電。因此,如果正在旅行(或者甚至在它們的辦公室)的用戶想要從它們的膝上型計算機訪問位於家中的他們的個人計算機,似乎該個人計算機必須在用戶離開的整個時間都保持打開。然而,使個人計算機保持打開這麼長時間,是對於能量的浪費,並且增加了該個人計算機的損耗。此外,還可以容易地想像到各種其它這樣有問題的場景。
[0033]幾乎每一個計算機系統都具有進入「酬民」(或者「待機」或「低功率」)狀態以便節約功率的能力。如果人們離計算機系統很近,則「喚醒」這種狀態下的計算機系統是簡單的:按下電源鍵、「喚醒」鍵、或者觸發另一本地輸入設備(例如,鍵盤或者滑鼠)是用於本地喚醒計算機系統的典型方式。
[0034]然而,假定用戶可能想要遠程訪問計算機的越來越普遍的可能性(但是可能不太頻繁),則也應當使能遠程喚醒睡眠計算機系統。這將允許用戶使計算機系統睡眠,從而節約功率和該計算機系統上的損耗,同時仍然保持隨後例如通過網際網路遠程訪問該計算機系統的能力。
[0035]但是,應當注意的是,由於相同的前述的網際網路的不斷擴大的影響,在沒有安全性的情況下,提供通過網絡(例如以網際網路為例的廣域網)喚醒計算機系統的方式將使該計算機系統容易受到攻擊或者偶然喚醒。然後,在設計用於遠程喚醒睡眠計算機系統的系統和方法時,安全性應當是主要考慮。
[0036]圖1
[0037]因此,本公開的實施例涉及通過網絡安全喚醒睡眠計算機系統。圖1說明了包括各種聯網的設備的示例性系統100,其中的一些或者全部可以用於實現本發明的實施例。
[0038]系統100可以包括網絡102,網絡102提供耦接到網絡102的各種設備之間的通信耦接。在一些實施例中,網絡102可以是諸如網際網路的廣域網。因此,網絡102可以包括諸如一個或多個區域網的多個其它網絡和/或可通信地耦接到所述多個其它網絡。網絡102 (包括任何「子網絡」)可以包括根據各種標準和版本中的任意一種的有線網絡和/或無線網絡(例如,乙太網、電力線通信系統、光纖網絡、IEEE102.11 (WiFi)、IEEE102.16 (WiMAX)等等),該有線網絡和/或無線網絡包括各種通信介質中的任意一種,如本領域普通技術人員所認識到的。
[0039] 包括計算機系統104、106和108的各種計算機系統可以耦接到網絡102。計算機系統104、106和108可以直接或者間接地耦接到網絡102,例如經由類似網絡102的一個或多個中間網絡,計算機系統104、106和108也可以包括根據各種標準和版本中的任何一種的有線網絡和/或無線網絡。在一些實施例中,其它計算機系統和/或設備也可以耦接到網絡102。
[0040]根據一組實施例,計算機系統104可以是配置為由終端用戶計算機系統106經由伺服器計算機系統108通過網絡102安全喚醒的睡眠客戶端計算機系統。例如,計算機系統104、106和108可以配置為實現下面參照圖3描述的方法的方面。
[0041]如本領域普通技術人員應當理解的,計算機系統104、106和108中的每一個可以按照各種方式實現。圖2說明了根據一組實施例可以用於實現計算機系統104、106和108中的一個或多個的基本部件。對於計算機系統104、106和108的其它系統配置也是可能的。
[0042]圖2
[0043]圖2是說明計算機系統200的各種部件的簡化框圖。根據各種實施例,計算機系統200可以用於實現圖1中示出的計算機系統104、106和/或108中的一個或多個;因而,計算機系統200的一個或多個元件可以配置為實現下面參照圖3描述的方法的一個或多個方面。
[0044]計算機系統200可以包括處理器202,處理器202可以耦接到存儲介質204。計算機系統200可以進一步包括耦接到處理器202的網絡接口控制器(NIC) 206。NIC206可以使計算機系統200能夠通過網絡進行通信。例如,如圖所示,NIC206可以包括埠 210和邏輯208,邏輯208配置為獨立地和/或結合處理器202來控制埠 210。埠 210可以是有線的(例如,乙太網、電力線、電話線、同軸電纜或者其它有線連接)或者無線的(例如,IEEE102.11 (WiFi)、IEEE102.16 (WiMAX)、藍牙或者其它無線連接)。在一些實施例中,NIC可以包括多個埠和/或經由多個通信介質(例如,多個有線和/或無線連接)支持網絡通信。
[0045]控制邏輯208可以使用各種類型的邏輯中的任意一種實現,例如,模擬邏輯、數字邏輯、處理器(例如,CPU、DSP、微控制器等等)、ASIC(專用集成電路)、FPGA(現場可編程門陣列)或者上面的任意組合。在一個實施例中,控制邏輯208可以部分地或者全部地實現為基於硬體的狀態機。例如,在其中計算機系統200用於實現圖1的睡眠客戶端計算機系統104的實施例中,NIC206可以包括配置用於向伺服器計算機系統108發送註冊消息並且從伺服器計算機系統108接收喚醒消息、以及用於驗證這些喚醒消息並且喚醒睡眠客戶端計算機系統104的有限狀態機。
[0046]在一些實施例中,處理器202可以是通用處理器。例如,處理器202可以配置為執行存儲在存儲介質204上的各種程序指令中的任意一種(例如,軟體)。替代地或者另外地,計算機系統200可以包括一個或多個專用(例如,特殊用途)處理單元,例如微控制器、數位訊號處理器和/或其它嵌入式系統。在一組實施例中,例如,在其中計算機系統200用於實現圖1的伺服器計算機系統208的實施例中,存儲介質204可以包括用於例如根據下面參照圖3描述的方法實施例來促進通過網絡102的睡眠客戶端計算機系統104的安全喚醒的程序指令。還應當注意的是,處理器202可以根據期望包括單個處理器或者多個處理器(例如,以便增加計算機系統200的計算能力)。
[0047]根據各種實施例,計算機系統200可以是各種類型的設備中的任意一種,並且可以實現各種功能中的任意一種。例如,計算機系統200可以是行動電話或者智慧型電話、平板電腦、上網本、膝上型計算機、桌面型計算機、伺服器或者其它計算機系統、可攜式媒體播放器、個人數字助理、或者通常可以用於按照有線或者無線方式通過網絡進行通信的任何其它類型的計算設備。
[0048]如上面簡述的,根據各種實施例,計算機系統200可以按照各種方式實現。因而,例如,上面將示例性計算機系統200描述為代表圖1中示出的計算機系統104、106和108中的任意一個;本領域普通技術人員應當認識到,該方面不應該被理解為意味著計算機系統104、106和108中的每一個必須相同。在實踐中,通常典型的是計算機系統104、106和108包括不同的部件和相區別的配置。例如,客戶端計算機系統/終端用戶設備與伺服器計算機系統相比較,可以在能力和功能方面具有顯著的差別。
[0049]而且,如本領域普通技術人員在了解本發明之後應當理解的,取決於實現,計算機系統200還可以包括所期望的各種其它部件中的任意一種(例如,顯示器、用戶輸入設備、揚聲器、附加的輸入/輸出能力等等),例如,用於實現其它功能。為了避免對本發明的細節造成模糊,沒有示出這些部件。
[0050]BI 3
[0051]圖3是說明用於通過網絡安全喚醒計算機系統的方法的實施例的流程圖。該方法的實施例可以由伺服器計算機系統、睡眠客戶端計算機系統(在本文被稱為第一計算機系統)和/或終端用戶計算機系統(在本文被稱為第二計算機系統)實現。例如,圖3的方法的方面可以典型地由本公開的圖1-2中的設備實現。
[0052]因而,第一計算機系統可以包括網絡接口控制器(NIC),該網絡接口控制器包括配置為向伺服器進行註冊和通過該伺服器接收喚醒消息、驗證這些喚醒消息並且喚醒第一計算機系統的埠和邏輯,所有這些操作都是在第一計算機系統處於睡眠模式中時進行的。
[0053]此外,伺服器計算機系統可以包括處理器和存儲介質,該存儲介質包括該處理器可執行以便促進第二計算機系統通過網絡對第一計算機系統的喚醒的程序指令。
[0054]儘管以某種順序示出了下面參照圖3描述的步驟,但是應當注意的是,根據各種實施例,可以省略、重複或者按照與所示出的順序不同的順序執行這些步驟中的一個或多個。另外地或者替代地,也可以根據期望來添加或者可選地添加一個或多個附加的步驟。該方法可以按照下面來執行。
[0055]在步驟302,伺服器可以接收註冊消息。該註冊消息可以由第一計算機系統的NIC經過網絡進行發送。該網絡可以是諸如網際網路的廣域網。該註冊消息可以由NIC在第一計算機系統睡眠時發送。例如,該NIC會繼續消耗少量的功率,以便保持發送註冊消息並且執行與用於維持接收和驗證喚醒消息以及喚醒計算機系統的能力有關的其它功能所需的有限功能,即使在該計算機系統處於睡眠模式中時。取決於實施例,這可以通過在NIC中實現負責將安全喚醒能力維持為諸如狀態機的簡單硬體邏輯系統的邏輯來實現,因為這樣的系統與其它系統相比可以具有較低的功率需求。然而,各種其它實施例也是可能的,包括其中將「喚醒」邏輯實現為執行存儲在存儲介質上的程序指令的處理器(例如,嵌入式處理器)的那些實施例。
[0056]所述註冊消息可以包括識別第一計算機系統的信息。例如,在一些實施例中,該註冊消息可以包括第一計算機的主機名稱和/或網絡輸入輸出系統共享文件夾。在一些實施例中,第一計算機的IP位址可以(例如,隱式地或者顯式地)包括在該註冊消息中。根據一些實施例,可以支持IPv4和IPv6中的任意一種或者兩種。另外地(或者替代地),該註冊消息可以包括用於第一計算機系統的用戶選擇的人類可讀的識別信息。例如,用戶可以配置第一計算機系統(例如,在進入睡眠模式之前)以便具有該用戶選擇的識別名稱和/或號碼(例如,「homel23」或者「bobs工作站」)。
[0057]在一些實施例中,所述註冊消息還可以包括可以用於驗證目的的信息。例如,在一個實施例中,該註冊消息可以包括隨機數(例如,隨機數字或者偽隨機數字,例如隨機八位字節),以及可以用於對該隨機數(和/或其它信息)進行加密的加密方法。另外地或者替代地,可以在該註冊消息中包括密碼或者其它驗證信息(例如,取決於實現)。在一些實施例中,該驗證信息(例如,隨機數和/或加密方法)可以由第一計算機系統生成和/或由用戶選擇。
[0058]在步驟304,第一計算機可以由伺服器進行註冊。對第一計算機系統進行註冊可以包括:將包括在來自第一計算機系統的註冊消息中的信息的一些或者全部存儲在存儲器中。例如,可以將對於第一計算機系統的主機名稱、網絡輸入輸出系統共享文件夾、IP位址、用戶選擇的人類可讀的ID和/或驗證信息中的任意一個或者全部存儲在存儲器中。
[0059]在一些實施例中,在第一計算機系統向伺服器發送註冊消息之後,第一計算機系統的NIC和伺服器可以在預定時間段內維持活動連接。例如,在接收到註冊消息時,伺服器可以初始化具有預定長度的超時定時器。在該預定時間段(其可以是5、15、30或者60秒)或者任意其它長度的時間之後,該連接可以到期。如果該連接超時,則伺服器不能夠向該NIC發送消息(例如,喚醒消息)。替代地,伺服器能夠向該NIC發送消息,但是註冊信息中的一些或者全部(例如,隨機數和/或加密算法)可能不再有效。
[0060]因此,可以期望第一計算機系統周期性地向該伺服器發送新的註冊消息,以便維持與該伺服器的活動連接,並且從而維持通過網絡接收喚醒消息的能力,只要第一計算機系統保持在睡眠模式中。因而,在一些實施例中,伺服器可以周期性地從NIC接收新的註冊消息。每一個新的註冊消息可以包括與原始註冊消息中包括的信息類型相類似的信息類型。在一些實施例中,每一個新的註冊消息可以與先前的註冊消息相同。替代地,在一些或者所有新的註冊消息中,可以對某一信息進行更新或者改變;例如,在一些實施例中,出於安全原因,可以對隨機數進行周期性地更新。可以以某個周期來發送新的註冊消息,以使得在與NIC的連接到期之前,伺服器接收每一個新的註冊消息。由於接收到每一個新的註冊消息,伺服器可以將與NIC的連接延長附加的預定時間段,或者簡單地重新開始所述超時定時器,以使得第一計算機系統的NIC和伺服器之間的連接可以保持連續活動,只要該第一計算機系統處於睡眠模式。
[0061]在步驟306,伺服器可以接收查詢請求。該查詢請求可以由第二計算機系統發送。在一些實施例中,作為旨在通過網絡喚醒第一計算機系統的第一步驟,第二計算機系統的用戶(例如,第一計算機系統和第二計算機系統二者共同的用戶)可以發起該查詢請求。該查詢請求可以包括針對第一計算機系統的識別信息。例如,該查詢請求可以包括第一計算機的主機名稱、IP位址和/或用戶選擇的人類可讀的ID。在一個實施例中,該查詢請求可以僅包括第一計算機的用戶選擇的人類可讀的ID。在一些實施例中,這可以是優選的,因為它可以允許用戶僅使用他們(或者另一人類用戶)已經選擇的ID(假定該ID更加容易記憶)來做出該查詢請求。
[0062]在其它實施例中,在該查詢請求中可以另外地或者替代地包括其它信息。例如,在一些實施例中,該查詢請求可以包括驗證信息(例如,取決於實現,可以包括密碼、對稱或者非對稱密鑰加密信息、和/或其它驗證信息),伺服器可以在對該查詢請求做出響應之前來對該驗證信息進行驗證。
[0063]在步驟308,伺服器可以向第二計算機系統發送查詢答覆。該查詢答覆可以包括第二計算機系統生成並且向第一計算機系統發送喚醒消息所需要的信息。例如,該查詢答覆可以包括註冊消息中伺服器從第一計算機系統接收的信息中的一些或者全部。作為一個示例,在上面描述的其中註冊消息包括隨機數和加密算法的實施例中,該查詢答覆可以包括第一計算機的用戶選擇的人類可讀的ID、該隨機數和該加密算法。在一些實施例中,該查詢答覆可以另外地或者替代地包括第一計算機系統的主機名稱和/或網絡輸入輸出接口共享文件夾。該查詢答覆可以由第二計算機系統進行接收。
[0064]在步驟310,伺服器可以接收喚醒消息。該喚醒消息可以由第二計算機系統生成並且發送。該喚醒消息可以包括針對第一計算機系統的識別信息和驗證信息。
[0065]在一些實施例中,包括在喚醒消息中的識別信息可以再次包括第一計算機的用戶選擇的人類可讀的ID。另外地或者替代地,可以在喚醒消息中包括用於第一計算機系統的一種或多種其它形式的識別信息。例如,在一些實施例中,喚醒消息中可以包括第一計算機系統的主機名稱、網絡輸入輸出系統共享文件夾和/或IP位址中的一個或多個。
[0066]在一些實施例中,第二計算機系統可以使用在查詢答覆中接收的信息,以便生成將包括在所述喚醒消息中的驗證信息。例如,如果該查詢答覆包括前述的隨機數和加密算法,則第二計算機系統可以使用該加密算法以便對該隨機數進行加密,並且將加密的隨機數包括在喚醒消息中。替代地或者另外地,該喚醒消息可以包括預共享密鑰。換言之,該喚醒消息可以包括對於第一計算機系統和第二計算機系統(例如,其用戶)均已知的信息,第一計算機系統可以使用該信息來驗證喚醒消息。在一些實施例中使用的示例是密碼,例如,用戶選擇的字母數字字符的序列。其它實施例可以包括其它類型的預共享密鑰。
[0067]應當注意的是,在一些實施例中,可以省略步驟306和308 (查詢請求和查詢答覆)。例如,在一些實施例中,第二計算機系統處的用戶可能已經具有用於生成並且向第一計算機系統發送喚醒消息(即,經由伺服器)的所有必要信息。例如,根據一些實施例,第二計算機的用戶能夠提供第一計算機的用戶選擇的人類可讀的ID和用戶選擇的預共享密鑰作為輸入,基於該輸入,第二計算機系統可以生成並且向伺服器發送該喚醒消息,從而跳過查詢請求和查詢答覆步驟。
[0068]在步驟312,伺服器可以向第一計算機系統發送該喚醒消息。在一些實施例中,隨著從第二計算機系統接收到喚醒消息,伺服器可以將該喚醒消息發送到第一計算機系統。替代地,在向第一計算機系統發送該喚醒消息之前,伺服器可以修改或者驗證該喚醒消息。
[0069]第一計算機系統可以從伺服器計算機系統接收該喚醒消息。該喚醒消息可以具體地由第一計算機系統的NIC接收(例如,由於該計算機系統通常處於睡眠模式)。NIC可以驗證該喚醒消息(例如,除了或者代替伺服器),並且如果該喚醒消息被成功驗證,則該NIC可以喚醒第一計算機系統。在喚醒之後,第一計算機系統可以處於完全開啟狀態,並且能夠通過網絡與其它計算機系統(例如,第二計算機系統)進行交互。
[0070]取決於實施例,NIC配置為對喚醒消息進行驗證的方式可以變化。例如,如果喚醒消息包括根據加密算法進行加密的隨機數,則對喚醒消息進行驗證可以包括:對該喚醒消息中包括的加密的隨機數進行解密,並且將其與原始隨機數進行比較,或者將接收的加密的隨機數與預先配置的加密的隨機數(例如,第一計算機基於該加密算法生成)進行比較。如果比較結果指示它們是相同的,則該喚醒消息可以被驗證,並且NIC可以喚醒第一計算機系統。可以根據由第二計算機系統提供的密鑰(例如,使用該加密算法)對包括在該喚醒消息中的隨機數進行加密。該密鑰可以是密碼、來自預共享X.509證書的密鑰、或者某種其它類型的預共享密鑰。因而,在一些實施例中,可以通過使用預共享密鑰對隨機數進行加密來包括該預共享密鑰。換言之,在一些實施例中,出於安全原因,預共享密鑰可能不以純文本方式進行傳送;然而,在其它實施例中,如果期望,可以對密碼進行這樣的傳送。
[0071]儘管上面給出了驗證系統的具體示例(例如,密碼、預共享密鑰),但是應當注意的是,在一些實施例中,可以另外地或者替代地實現各種其它驗證系統中的任意一種。例如,可以實現任何對稱或者非對稱密碼系統。而且,如果期望,可以使用諸如Kerberos、RADIUS、域驗證或者另一驗證伺服器的驗證伺服器。
[0072]而且,還考慮其中對上面描述的消息中的一些或者全部(例如,註冊消息、查詢請求、查詢答覆、喚醒消息)進行加密(例如,使用對稱、非對稱或者其它加密系統)的實施例,以便防止未授權的用戶獲得到將允許他們喚醒第一計算機系統的信息的訪問。
[0073]與用於遠程喚醒睡眠計算機系統的現有方法相比較,該方法的實施例可以包括一些優點。例如,大部分現有方法涉及用於通過區域網喚醒睡眠計算機的方法。示例包括通過LAN的喚醒(WOL)模式(在該模式中,指定的偏移和匹配模式指示喚醒命令)、魔術WOL (其中,分組包含睡眠計算機系統的16個連續MAC地址)和鏈路改變(其中連接諸如網絡線纜的介質)。這些方法並不意在經過NAT執行。即使能夠經過NAT使用的那些方法也要求擴展的配置,這會具有降低目標計算機系統的安全性的不期望的副作用。而且,這些方法都不包括安全性。因而,與現有解決方案相比較,能夠在沒有任何特殊配置的情況下經過NAT執行並且包括安全/驗證特徵的圖3的方法的實施例代表一種顯著的改善。
[0074]IS 4
[0075]圖4是根據一個實施例其中可以實現上面參照圖3描述的方法的示例性系統400的說明。本文示出並且描述了圖4的系統400以便提供其中可以實現本公開的實施例的系統和方式的更加具體的示例。然而,如本領域普通技術人員應當理解的,對於圖4的系統的具體細節的許多修改和替代是可能的,並且無論是圖4還是對其的描述都不應當在整體上被認為是對本發明的限制。
[0076]如圖所示,系統400可以包括網絡402,網絡402可以是諸如網際網路的廣域網(WAN)。伺服器計算機系統404可以在第一位置耦接到WAN402。終端用戶計算機系統406可以在第二位置耦接到WAN402。睡眠客戶端計算機系統408和410可以經由區域網(LAN)412耦接到WAN402。LAN412可以由路由器414(例如,無線地)提供,路由器414可以在防火牆416的LAN412側上提供網絡地址轉換(NAT)。
[0077]睡眠客戶端408可以經由LAN412和WAN402向伺服器404進行註冊。在圖4的實施例中,註冊可以由睡眠客戶端408中的NIC(未示出)執行,並且註冊可以包括發送包括下面各項的消息:睡眠客戶端408的編碼的主機名稱和網絡輸入輸出系統共享文件夾、睡眠客戶端408的編碼的ID (可以是例如在睡眠客戶端408進入睡眠模式之前用戶選擇的)、隨機數(可以是由睡眠客戶端408隨機生成的八位字節)和加密算法。伺服器可以存儲所有這一信息。
[0078]在睡眠客戶端408向伺服器404進行註冊之後,終端用戶406可以生成並且向伺服器404發送查詢請求。該查詢請求可以簡單地包括睡眠客戶端408的編碼的ID。
[0079]基於從終端用戶406接收到查詢請求,伺服器404可以向終端用戶406發送查詢答覆。該查詢答覆可以包括睡眠客戶端408的編碼的ID、來自註冊消息的隨機數和加密算法。
[0080]在從伺服器404接收到查詢答覆之後,終端用戶406可以使用安全密鑰生成喚醒消息。該喚醒消息可以包括睡眠客戶端408的編碼的ID、以及根據終端用戶的密鑰輸入進行加密的隨機數。換言之,可以根據終端用戶的密鑰輸入(例如,密碼或者其它預共享密鑰),使用包括在註冊消息中的加密算法來對隨機數進行加密。
[0081]終端用戶406可以向伺服器404發送喚醒消息,伺服器404可以將該喚醒消息轉發到睡眠客戶端408。睡眠客戶端408中的NIC可以接收該喚醒消息,並且檢查加密的隨機數。如果該加密的隨機數是使用正確的密鑰進行加密的,則NIC可以喚醒該睡眠客戶端408。
[0082]圖5
[0083]圖5說明了根據一個實施例可以作為用於通過網絡安全喚醒計算機系統的系統和方法的一部分使用的示例性消息格式。所說明的消息格式可以採取用戶數據報協議(UDP)分組的形式。
[0084]如圖所示,該消息可以包括媒體訪問控制(MAC)報頭、網際網路協議(IP)報頭和UDP報頭。在可以如本領域中已知地根據UDP協議實現的這些報頭之後,可以包括「網際網路安全喚醒」(「SW0I」)報頭。根據一個實施例,該SWOI報頭可以包括版本信息、命令(CMD)指示符、長度欄位、XID和錯誤碼。版本欄位可以指示該消息格式的版本。CMD欄位可以指示SffOI消息的類型,例如,註冊消息、查詢請求、查詢答覆或者喚醒消息。長度欄位可以指示之後的選項列表的長度(例如,以字節為單位)。在一些實施例中,還可以包括糾錯編碼信息和/或其它信息。在一些實施例中,消息格式的一部分可以保留用於改變,用於該消息格式的未來改變。儘管針對SWOI報頭欄位示出了以字節為單位的具體長度(例如,I個字節用於版本、I個字節用於CMD、2個字節用於長度、4個字節用於XID、並且2個字節用於錯誤碼),但是這些只是示例性的,並且也可以考慮其它長度。
[0085]選項列表可以包括消息的實質內容。例如,潛在地取決於消息類型,可能的選項可以包括編碼的主機名稱、用戶選擇的ID、隨機數、加密算法或者各種其它選項中的任意一種。根據一個實施例,每一個選項可以包括三個欄位:選項類型(例如,識別該選項的類型)、選項長度(例如,識別該選項數據欄位的長度)、以及該選項數據本身。根據一個實施例,選項類型欄位可以是I個字節長,選項長度欄位可以是2個字節長,選項數據欄位可以與由選項長度欄位指示的一樣長;其它欄位長度也是可能的。在一些實施例中,單個分組可以包括選項列表中的多個選項。在一些其它實施例中,每一個分組可以僅包括單個選項。
[0086]儘管圖5中示出的消息格式是一種可能的基於UDP的消息格式,但是本領域普通技術人員應當認識到,根據期望,可以使用其它基於UDP的消息格式、或者各種其它類型的分組中的任意一種(例如,使用諸如TCP的其它協議)。因而,儘管圖5中示出的消息格式代表實現本文描述的消息的一種可能方式,但是無論圖5還是對其的描述都不應當在整體上被認為是對本公開的限制。
[0087]儘管已經相當詳細地描述了上面實施例,但是對於本領域普通技術人員來說,一旦完全理解了上面的公開內容,各種變型和修改將變得顯而易見。所附的權利要求書意在被解釋為涵蓋所有這樣的變型和修改。
【權利要求】
1.一種用於伺服器促進通過網絡的計算機系統的安全喚醒的計算機實現的方法,所述方法包括: 通過所述網絡從第一計算機系統接收註冊消息,其中,所述第一計算機系統包括網絡接口控制器(NIC),其中,當所述第一計算機系統處於睡眠模式中時,從所述NIC接收所述註冊消息; 對所述第一計算機系統進行註冊,其中,所述註冊包括將針對所述第一計算機系統的識別信息存儲在存儲器中; 通過所述網絡從第二計算機系統接收喚醒消息,其中,所述喚醒消息包括識別所述第一計算機系統的信息和驗證信息; 通過所述網絡向所述第一計算機系統發送所述喚醒消息,其中,所述喚醒消息向所述NIC指示喚醒所述第一計算機系統。
2.根據權利要求1所述的計算機實現的方法,進一步包括: 基於從所述NIC接收到所述註冊消息,在從所述NIC接收所述註冊消息之後,將與所述NIC的連接維持預定的時間段; 其中,在維持與所述NIC的所述連接時,執行所述對所述第一計算機系統進行註冊、接收所述喚醒消息和發送所述喚醒消息。
3.根據權利要求1所述的計算機實現的方法,進一步包括: 基於接收到所述註冊消息,在接收所述註冊消息之後,將與所述NIC的連接維持預定的時間段; 從所述NIC周期性地接收新的註冊消息,其中,在與所述NIC的所述連接到期之前接收所述新的註冊消息; 基於接收到各自新的註冊消息,在接收每一個各自新的註冊消息之後,將與所述NIC的所述連接維持額外的預定的時間段。
4.根據權利要求1所述的計算機實現的方法, 其中,所述註冊消息包括針對所述第一計算機系統的用戶選擇的人類可讀的識別信息,其中,所述存儲針對所述第一計算機系統的識別信息包括存儲針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息; 其中,位於所述喚醒消息中的識別所述第一計算機系統的信息包括針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息。
5.根據權利要求1所述的計算機實現的方法,其中,所述驗證信息包括預共享密鑰,其中,所述預共享密鑰對於所述第一計算機系統和所述第二計算機系統已知。
6.根據權利要求1所述的計算機實現的方法,其中,所述網絡是廣域網,其中,所述方法由伺服器計算機系統實現。
7.根據權利要求1所述的計算機實現的方法, 其中,所述註冊消息包括針對所述第一計算機系統的識別信息、隨機數和加密算法; 其中,所述註冊進一步包括將所述隨機數和所述加密算法存儲在所述存儲器中; 其中,所述方法進一步包括: 從所述第二計算機系統接收查詢請求,其中,所述查詢請求包括針對所述第一計算機系統的所述識別信息;向所述第二計算機系統發送查詢答覆,其中,所述查詢答覆包括針對所述第一計算機系統的所述識別信息、所述隨機數和所述加密算法; 其中,位於所述喚醒消息中的所述驗證信息包括所述隨機數,其中,所述隨機數根據所述加密算法進行加密。
8.根據權利要求1所述的計算機實現的方法,進一步包括: 基於位於所述喚醒消息中的所述驗證信息,對所述喚醒消息進行驗證; 其中,向所述第一計算機系統發送所述喚醒消息基於對所述喚醒消息中的所述驗證信息進行了成功驗證。
9.一種包括程序指令的計算機可讀存儲介質,所述程序指令用於伺服器促進通過網絡的第一計算機系統的安全喚醒,其中,所述程序指令能夠由處理器執行以便執行下列操作: 通過所述網絡從所述第一計算機系統接收註冊消息,其中,所述第一計算機系統包括網絡接口控制器(NIC),其中,當所述第一計算機系統處於睡眠模式中時,從所述NIC接收所述註冊消息; 對所述第一計算機系統進行註冊,其中,所述註冊包括將針對所述第一計算機系統的識別信息存儲在存儲器中; 通過所述網絡從第二計算機系統接收喚醒消息,其中,所述喚醒消息包括識別所述第一計算機系統的信息和 驗證信息; 通過所述網絡向所述第一計算機系統發送所述喚醒消息,其中,所述喚醒消息向所述NIC指示喚醒所述第一計算機系統。
10.根據權利要求9所述的計算機可讀存儲介質,其中,所述程序指令進一步能夠執行以便執行下列操作: 基於從所述NIC接收到所述註冊消息,在從所述NIC接收所述註冊消息之後,將與所述NIC的連接維持預定的時間段; 其中,所述程序指令能夠執行以便用於在所述預定的時間段內對所述第一計算機系統進行註冊、接收所述喚醒消息並且發送所述喚醒消息。
11.根據權利要求9所述的計算機可讀存儲介質,其中,所述程序指令進一步能夠執行以便執行下列操作: 基於接收到所述註冊消息,在接收所述註冊消息之後,將與所述NIC的連接維持預定的時間段; 從所述NIC周期性地接收新的註冊消息,其中,在與所述NIC的所述連接到期之前接收所述新的註冊消息; 基於接收到各自新的註冊消息,在接收每一個各自新的註冊消息之後,將與所述NIC的所述連接維持額外的預定的時間段。
12.根據權利要求9所述的計算機可讀存儲介質,其中,所述註冊消息包括針對所述第一計算機系統的用戶選擇的人類可讀的識別信息,其中,所述程序指令能夠進一步執行以便執行下列操作: 存儲針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息; 其中,位於所述喚醒消息中的識別所述第一計算機系統的所述信息包括針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息。
13.根據權利要求9所述的計算機可讀存儲介質,其中,所述驗證信息包括預共享密鑰,其中,所述預共享密鑰對於所述第一計算機系統和所述第二計算機系統已知。
14.根據權利要求9所述的計算機可讀存儲介質,其中,所述網絡是廣域網。
15.根據權利要求9所述的計算機可讀存儲介質, 其中,所述註冊消息包括針對所述第一計算機系統的識別信息、隨機數和加密算法; 其中,所述註冊進一步包括將所述隨機數和所述加密算法存儲在所述存儲器中; 其中,所述程序指令能夠進一步執行以便執行下列操作: 從所述第二計算機系統接收查詢請求,其中,所述查詢請求包括針對所述第一計算機系統的所述識別信息; 向所述第二計算機系統發送查詢答覆,其中,所述查詢答覆包括針對所述第一計算機系統的所述識別信息、所述隨機數和所述加密算法; 其中,位於所述喚 醒消息中的所述驗證信息包括所述隨機數,其中,所述隨機數根據所述加密算法進行加密。
16.根據權利要求9所述的計算機可讀存儲介質,其中,所述程序指令能夠進一步執行以便執行下列操作: 基於所述喚醒消息中的所述驗證信息,對所述喚醒消息進行驗證; 其中,向所述第一計算機系統發送所述喚醒消息基於對所述喚醒消息中的所述驗證信息的成功驗證。
17.—種配置用於計算機系統中的網絡接口控制器(NIC),所述NIC包括: 用於通過網絡進行通信的第一埠; 配置為促進通過網絡安全喚醒所述計算機系統的邏輯單元,其中,所述邏輯單元配置為當所述計算機系統處於睡眠模式中時進行操作,其中,所述邏輯單元配置為: 經由所述網絡向伺服器發送註冊消息; 經由所述網絡從所述伺服器接收喚醒消息,其中,所述喚醒消息包括驗證信息; 基於所述驗證信息對所述喚醒消息進行驗證; 喚醒所述計算機系統。
18.根據權利要求17所述的NIC,其中,所述邏輯單元進一步配置為: 在發送所述註冊消息之後,將與所述伺服器的連接維持預定的時間段; 其中,所述邏輯單元配置為在與所述伺服器的所述連接到期之前從所述伺服器接收所述喚醒消息。
19.根據權利要求17所述的NIC,其中,所述邏輯單元進一步配置為: 在發送所述註冊消息之後,將與所述伺服器的連接維持預定的時間段; 在與所述伺服器的所述連接到期之前,周期性地向所述伺服器發送新的註冊消息;基於發送所述各自新的註冊消息,在發送每一個各自新的註冊消息之後,將與所述伺服器的所述連接維持額外的預定的時間段。
20.根據權利要求17所述的NIC, 其中,所述註冊消息包括針對所述第一計算機系統的用戶選擇的人類可讀的識別信息;其中,所述喚醒消息包括針對所述第一計算機系統的所述用戶選擇的人類可讀的識別信息。
21.根據權利要求17所述的NIC,其中,所述驗證信息包括預共享密鑰,其中,所述預共享密鑰對於所述第一計算機系統和第二計算機系統已知,其中,所述喚醒消息源自所述第二計算機系統。
22.根據權利要 求17所述的NIC,其中,所述網絡是廣域網。
【文檔編號】H04L12/28GK104025512SQ201180074574
【公開日】2014年9月3日 申請日期:2011年11月1日 優先權日:2011年11月1日
【發明者】F·張, C·F·李, K-F·陳 申請人:高通股份有限公司