物理總線(例如,在同一機(jī)器內(nèi)集成的組件之間的總線),但是可以包 括在包含專用或標(biāo)準(zhǔn)計(jì)算總線技術(shù)(例如IDE、SCSI、PCI和InfiniBand)的系統(tǒng)元件之間的 任何通信耦合?;ミB元件214允許通信(例如數(shù)據(jù)和指令)在計(jì)算機(jī)系統(tǒng)202的系統(tǒng)組件之間 進(jìn)行交換。
[0048]計(jì)算機(jī)系統(tǒng)202還包含一個(gè)或者多個(gè)接口設(shè)備216(例如輸入設(shè)備、輸出設(shè)備、以及 輸入設(shè)備/輸出設(shè)備的組合)。接口設(shè)備可以接收輸入或提供輸出。更特別地,輸出設(shè)備可以 呈現(xiàn)用于外部表現(xiàn)的信息。輸入設(shè)備可以從外部源接受信息。接口設(shè)備的示例包括鍵盤、鼠 標(biāo)設(shè)備、軌跡球、麥克風(fēng)、觸摸屏、打印設(shè)備、顯示屏、揚(yáng)聲器、網(wǎng)絡(luò)接口卡等等。接口設(shè)備允 許計(jì)算機(jī)系統(tǒng)202與例如用戶以及其他系統(tǒng)的外部實(shí)體交換信息并且與其通信。
[0049] 數(shù)據(jù)儲(chǔ)存元件218包括計(jì)算機(jī)可讀和可寫非易失性或非暫時(shí)性的數(shù)據(jù)存儲(chǔ)介質(zhì), 其中存儲(chǔ)有限定由處理器210執(zhí)行的程序或其他對(duì)象的指令。數(shù)據(jù)儲(chǔ)存元件218還可包括被 記錄在介質(zhì)上的或記錄在介質(zhì)中的、并且由處理器210在程序執(zhí)行期間處理的信息。更具體 地,信息可以被儲(chǔ)存在一個(gè)或多個(gè)數(shù)據(jù)結(jié)構(gòu)中,其具體被配置為節(jié)約存儲(chǔ)空間或提高數(shù)據(jù) 交換性能。指令可以被永久存儲(chǔ)為編碼的信號(hào),并且該指令可以引起處理器210執(zhí)行本文所 描述的功能中的任意一個(gè)。介質(zhì)可以例如尤其是光盤、磁盤或閃存。在操作中,處理器210或 一些其他的控制器使得將數(shù)據(jù)從非易失性記錄介質(zhì)讀入到另一個(gè)存儲(chǔ)器(諸如存儲(chǔ)器212) 中,相較于包括在數(shù)據(jù)儲(chǔ)存元件218中的儲(chǔ)存介質(zhì),所述另一個(gè)存儲(chǔ)器允許處理器210更快 訪問(wèn)信息。存儲(chǔ)器可以位于數(shù)據(jù)儲(chǔ)存元件218中或位于存儲(chǔ)器212中,然而,處理器210操縱 存儲(chǔ)器中的數(shù)據(jù),且然后在處理完成后,將數(shù)據(jù)拷貝到與數(shù)據(jù)儲(chǔ)存元件218相關(guān)的儲(chǔ)存介 質(zhì)。各種各樣的組件可以管理在儲(chǔ)存介質(zhì)和其他存儲(chǔ)器元件之間的數(shù)據(jù)移動(dòng),并且各示例 不局限于特定的數(shù)據(jù)管理組件。此外,各示例不限于特定的存儲(chǔ)器系統(tǒng)或者數(shù)據(jù)儲(chǔ)存系統(tǒng)。
[0050] 雖然計(jì)算機(jī)系統(tǒng)202通過(guò)示例的方式示出為在其上可以實(shí)踐各個(gè)方面和各種功能 的一種類型的計(jì)算機(jī)系統(tǒng),但是各個(gè)方面和各種功能不限于在如圖2中示出的計(jì)算機(jī)系統(tǒng) 202上實(shí)施。各個(gè)方面和各種功能可以在具有不同于圖2中所示的架構(gòu)或者組件的架構(gòu)或者 組件的一個(gè)或者多個(gè)計(jì)算機(jī)上實(shí)踐。例如,計(jì)算機(jī)系統(tǒng)202可包括專門編程的專用硬件,例 如被定制為執(zhí)行本文公開的特定操作的專用集成電路("ASIO。然而另一個(gè)示例可以使用 利用摩托羅拉PowerPC處理器運(yùn)行MAC 0S系統(tǒng)X的幾個(gè)通用計(jì)算設(shè)備以及運(yùn)行專有硬件和 操作系統(tǒng)的幾個(gè)專用計(jì)算設(shè)備的網(wǎng)格來(lái)執(zhí)行同樣的功能。
[0051] 計(jì)算機(jī)系統(tǒng)202可以是包含操作系統(tǒng)的計(jì)算機(jī)系統(tǒng),該操作系統(tǒng)管理包含在計(jì)算 機(jī)系統(tǒng)202中的硬件元件的至少一部分。在某些示例中,如處理器210的處理器或者控制器 執(zhí)行操作系統(tǒng)。可以被執(zhí)行的特定的操作系統(tǒng)的示例包括:如從微軟公司購(gòu)買的Windows NT、Windows 2000(Windows ME)、Windows XP、Windows Vista或者Windows 7操作系統(tǒng)的基 于Windows的操作系統(tǒng)、從蘋果計(jì)算機(jī)公司購(gòu)買的MAC OS系統(tǒng)X操作系統(tǒng)或iOS操作系統(tǒng)、如 從Red Hat公司購(gòu)買的企業(yè)Linux操作系統(tǒng)的眾多基于Linux的操作系統(tǒng)的發(fā)行版中的一 個(gè)、從Sun微系統(tǒng)購(gòu)買的Solaris操作系統(tǒng)、或者從各種來(lái)源購(gòu)買的UNIX操作系統(tǒng)??梢允褂?許多其他的操作系統(tǒng),并且各示例不限于任何特定的操作系統(tǒng)。
[0052]處理器210和操作系統(tǒng)一起定義了計(jì)算機(jī)平臺(tái),為該計(jì)算機(jī)平臺(tái)寫入以高級(jí)編程 語(yǔ)言形式的應(yīng)用程序。這些組件應(yīng)用可以是可執(zhí)行的中間字節(jié)碼或者解釋代碼,其通過(guò)例 如使用例如TCP/IP的通信協(xié)議的因特網(wǎng)的通信網(wǎng)絡(luò)進(jìn)行傳輸。類似地,各方面可以使用面 向?qū)ο蟮木幊陶Z(yǔ)言(例如? Net、Smal ITalk、Java、C++、Ada、C#(C_Sharp)、Python或 JavaScript)來(lái)實(shí)現(xiàn)。也可以使用其他的面向?qū)ο蟮木幊陶Z(yǔ)言??蛇x地,可以使用功能性、腳 本或邏輯編程語(yǔ)言。
[0053]此外,可以在非編程環(huán)境中(例如以HTML、XML或者其它格式創(chuàng)建的文檔,當(dāng)在瀏覽 器程序的窗口中查看時(shí)其能夠渲染圖形用戶界面的各方面或執(zhí)行其他的功能)實(shí)施各個(gè)方 面和各種功能。此外,可以將各個(gè)示例實(shí)施為編程的或非編程的元件或它們的任何組合。例 如,web頁(yè)面可以使用HTML來(lái)實(shí)施而從web頁(yè)面內(nèi)調(diào)用的數(shù)據(jù)對(duì)象可以用C++或Python來(lái)編 寫。因此,示例不局限于特定的編程語(yǔ)言并且可以使用任何合適的編程語(yǔ)言。因此,本文所 公開的功能組件可以包括多種多樣的被配置成執(zhí)行本文所描述的功能的元件(例如的專用 硬件、可執(zhí)行代碼、數(shù)據(jù)結(jié)構(gòu)或者對(duì)象)。
[0054] 在某些示例中,本文所公開的組件可以讀取影響被組件執(zhí)行的功能的參數(shù)。這些 參數(shù)可以被物理存儲(chǔ)在任何形式的合適的、包含易失性存儲(chǔ)器(例如RAM)或者非易失性存 儲(chǔ)器(例如磁硬盤驅(qū)動(dòng)器)的存儲(chǔ)器中。此外,參數(shù)可以被邏輯存儲(chǔ)在適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)(例如 由用戶模式應(yīng)用定義的數(shù)據(jù)庫(kù)或者文件)中或者通常共享的數(shù)據(jù)結(jié)構(gòu)(例如由操作系統(tǒng)定 義的應(yīng)用注冊(cè)表)中。此外,某些示例提供了系統(tǒng)和用戶接口兩者,其允許外部實(shí)體修改參 數(shù)并且從而配置組件的行為。
[0055] 示例過(guò)程
[0056] 圖3根據(jù)本發(fā)明的實(shí)施例示出用于使用包括TRNG的設(shè)備或控制器生成和儲(chǔ)存設(shè)備 標(biāo)識(shí)符的過(guò)程300的流程圖。過(guò)程300開始于動(dòng)作302。在動(dòng)作304處,設(shè)備檢查以查看當(dāng)前的 設(shè)備標(biāo)識(shí)符是否有效。設(shè)備可檢查非易失性存儲(chǔ)器中的標(biāo)志,當(dāng)被設(shè)置為真時(shí),該標(biāo)志指示 設(shè)備具有有效的設(shè)備標(biāo)識(shí)符。如果標(biāo)志指示有效的設(shè)備標(biāo)識(shí)符,則設(shè)備已經(jīng)被設(shè)置并且方 法結(jié)束。如果設(shè)備標(biāo)識(shí)符標(biāo)志被設(shè)置為假,指示設(shè)備標(biāo)識(shí)符沒(méi)有被設(shè)置,則在動(dòng)作306處, TRNG生成將被用作設(shè)備標(biāo)識(shí)符的隨機(jī)7個(gè)字節(jié)數(shù)字。在動(dòng)作308處,設(shè)備標(biāo)識(shí)符被設(shè)置為隨 機(jī)生成的7個(gè)字節(jié)數(shù)字。在動(dòng)作310處,設(shè)備標(biāo)識(shí)符被儲(chǔ)存在非易失性存儲(chǔ)器(例如,EEPR0M) 中。在動(dòng)作312處,設(shè)備標(biāo)識(shí)符標(biāo)志被設(shè)置為真以指示有效的設(shè)備標(biāo)識(shí)符已經(jīng)被設(shè)置。
[0057]圖4根據(jù)本發(fā)明的一個(gè)實(shí)施例示出用于使用不包括TRNG的設(shè)備或控制器生成和儲(chǔ) 存設(shè)備標(biāo)識(shí)符的過(guò)程400。根據(jù)一些方面,設(shè)備使用未初始化的SRAM的小容量(如,64個(gè)字 節(jié))來(lái)創(chuàng)建隨機(jī)數(shù)字以生成PRNG的種子。過(guò)程400開始于動(dòng)作402。在動(dòng)作404處,在設(shè)備的啟 動(dòng)過(guò)程期間,使用來(lái)自SRAM的數(shù)據(jù)來(lái)初始化(如,使用"C"運(yùn)行時(shí)間庫(kù)中的srand函數(shù))PRNG 以給PRNG加載隨機(jī)種子。根據(jù)一些方面,數(shù)據(jù)包括SRAM的未初始化陣列的第一字(例如,最 前面的兩個(gè)字節(jié):字節(jié)[0]和字節(jié)[1])。根據(jù)一些示例,PRNG盡可能快地被初始化以便設(shè)備 標(biāo)識(shí)符的人工生成經(jīng)由用戶命令是可能的。根據(jù)一些方面,SRAM陣列可具有總共64個(gè)字節(jié)。 [0058]在動(dòng)作406處,在非易失性存儲(chǔ)器中的設(shè)備標(biāo)識(shí)符標(biāo)志被檢查以查明有效的設(shè)備 標(biāo)識(shí)符是否已經(jīng)被設(shè)置。如果設(shè)備已經(jīng)包括有效的設(shè)備標(biāo)識(shí)符,則過(guò)程400結(jié)束。如果有無(wú) 效的設(shè)備標(biāo)識(shí)符或沒(méi)有設(shè)備標(biāo)識(shí)符,則在動(dòng)作408處,設(shè)備利用PRNG以生成在0和61之間的 七個(gè)隨機(jī)數(shù)字(如,使用"C"運(yùn)行時(shí)間庫(kù)的rand函數(shù))。在動(dòng)作410處,該七個(gè)隨機(jī)數(shù)字被用作 SRAM陣列的剩余62個(gè)字節(jié)的索引。使用七個(gè)隨機(jī)數(shù)字來(lái)設(shè)置設(shè)備標(biāo)識(shí)符,并且在動(dòng)作412 處,設(shè)備標(biāo)識(shí)符被儲(chǔ)存在非易失性存儲(chǔ)器中。在動(dòng)作414處,在非易失性存儲(chǔ)器中的標(biāo)識(shí)符 標(biāo)志被設(shè)置為真以指示已經(jīng)為設(shè)備設(shè)置了有效的設(shè)備標(biāo)識(shí)符。在動(dòng)作416處,進(jìn)程400結(jié)束。
[0059] 如上面所描述的,在本發(fā)明的實(shí)施例中,依賴于設(shè)備是具有TRNG還是PRNG,不同的 過(guò)程發(fā)生以創(chuàng)建設(shè)備的設(shè)備標(biāo)識(shí)符。在一個(gè)實(shí)施例中,在過(guò)程300或400發(fā)生之前,設(shè)備可被 配置為確定設(shè)備是包括TRNG還是PRNG,并接著基于該確定的結(jié)果進(jìn)行過(guò)程300或400。
[0060] 在上面所討論的實(shí)施例中,在初始化時(shí)SRAM被與PRNG-起使用以生成設(shè)備標(biāo)識(shí) 符。在其它實(shí)施例中,SRAM狀態(tài)可被用于直接創(chuàng)建設(shè)備標(biāo)識(shí)符和/或地址。
[