在本文中的公開內(nèi)容大體涉及針對數(shù)據(jù)的丟失的保護,并且更具體地,涉及保護從麥克風(fēng)到應(yīng)用程序進程的音頻數(shù)據(jù)傳輸?shù)南到y(tǒng)及方法。
背景技術(shù):
在現(xiàn)代世界中,用戶遇到許多網(wǎng)絡(luò)威脅,其中之一是為了竊聽而對用戶的麥克風(fēng)進行的未經(jīng)授權(quán)的訪問。為了實現(xiàn)對在用戶的計算機上運行的部分進程上的麥克風(fēng)數(shù)據(jù)的訪問的控制,需要在操作系統(tǒng)內(nèi)執(zhí)行特定請求的過濾,或者獲取用于識別請求訪問的進程的請求數(shù)據(jù)的上下文的訪問,以阻止訪問尚未被授權(quán)的那些進程。在windowsxp和較老的操作系統(tǒng)中,已經(jīng)通過攔截在“ksmixer.sys”內(nèi)核組件(windows內(nèi)核流技術(shù))的區(qū)域內(nèi)的通信來解決該功能性。被攔截的、對于讀取在流量的架構(gòu)中的麥克風(fēng)數(shù)據(jù)的請求經(jīng)歷了在讀取麥克風(fēng)數(shù)據(jù)的進程的上下文中的專用濾波器。
隨著windowsvista的出現(xiàn),開發(fā)了新的架構(gòu)wasapi,它由許多內(nèi)核組件以及用戶模式組成,其中,windows內(nèi)核流技術(shù)一直保持“基本變量”,而所有的音頻流量已經(jīng)經(jīng)受新的音頻驅(qū)動器的專用com接口,其在端口驅(qū)動器“portcls.sys”上注冊??梢詫崿F(xiàn)這些音頻驅(qū)動器,使得在直接存取存儲器(dma)控制器的協(xié)作下,音頻通信在用戶模式緩沖器中立刻結(jié)束,也就是說,不涉及處理器或者任何補充代碼。并且該緩沖器被映射到受保護的進程“audiodg.exe”中,由處理器將來自其的數(shù)據(jù)復(fù)制到這個相同進程“audiodg.exe”的上下文中的用戶進程的緩沖器。也就是說,從windowsvista開始,在windows內(nèi)核流技術(shù)中的控制濾波器已經(jīng)變得完全不合適。
由于上述原因,出現(xiàn)了對于以下方法的需求:該方法能夠攔截來自麥克風(fēng)的音頻流量,以保護音頻數(shù)據(jù)的傳輸,其中,該麥克風(fēng)鏈接到進程(其讀取來自麥克風(fēng)的數(shù)據(jù)的)的上下文。
技術(shù)實現(xiàn)要素:
公開了通過保護從麥克風(fēng)到計算機上的應(yīng)用程序進程的音頻數(shù)據(jù)傳輸,用于防止對對于音頻數(shù)據(jù)的未授權(quán)的訪問的系統(tǒng)、方法以及計算機程序產(chǎn)品。
根據(jù)一個示例性方面,提供了用于防止對對于音頻數(shù)據(jù)的未授權(quán)的訪問的方法。根據(jù)這個方面,該方法包括:由計算機的處理器,接收來自多個軟件進程的一個軟件進程的對于從音頻端點設(shè)備獲取音頻流的請求;由處理器分配多個數(shù)據(jù)緩沖器的數(shù)據(jù)緩沖器用于該一個軟件進程;由至少一個音頻處理對象處理并加密從音頻端點設(shè)備接收到的音頻數(shù)據(jù),其中,音頻數(shù)據(jù)與所請求的音頻流相關(guān);由處理器將經(jīng)加密的音頻數(shù)據(jù)存儲在所分配的數(shù)據(jù)緩沖器內(nèi);安裝api函數(shù)調(diào)用的攔截器用于該一個軟件進程;并且由一個軟件進程使用api函數(shù)調(diào)用的攔截器,解密來自所分配的數(shù)據(jù)緩沖器的經(jīng)加密的音頻數(shù)據(jù)。
根據(jù)另一示例性方面,該方法進一步包括:由計算機的處理器分別接收來自多個軟件進程的對于獲取從包括音頻端點設(shè)備的一個或多個音頻端點設(shè)備的音頻流的多個請求;由處理器分配多個數(shù)據(jù)緩沖器用于多個軟件進程;加密與所請求的各個音頻流相關(guān)的音頻數(shù)據(jù);分別在所分配的數(shù)據(jù)緩沖器中存儲針對所請求的各個音頻流的經(jīng)加密的音頻數(shù)據(jù);并且由多個軟件進程的至少一部分解密針對各個所請求的音頻流的經(jīng)加密的音頻數(shù)據(jù),其中,多個軟件進程被配置具有相應(yīng)的api函數(shù)調(diào)用的攔截器。
根據(jù)另一示例性方面,該方法進一步包括:由處理器確定針對一個軟件進程的進程標識符數(shù)據(jù);由處理器基于進程標識符數(shù)據(jù),確定請求獲取音頻流的一個軟件進程是否是未授權(quán)的軟件進程;并且僅在處理器確定一個軟件進程不是未授權(quán)的軟件進程時,安裝用于一個軟件進程的api函數(shù)調(diào)用的攔截器。
根據(jù)另一示例性方面,確定請求獲取音頻流的軟件進程是否是未授權(quán)的軟件進程包括以下步驟的至少一個:監(jiān)控請求進程的活動,以確定進程是否是可信的或者不可信的;通過訪問已知的病毒的簽名的數(shù)據(jù)庫,并比較請求的進程的簽名,對請求進程進行掃描;并且從用戶接收是否同意由該請求進程訪問音頻流的命令。
根據(jù)另一示例性方面,該方法進一步包括:直接將從音頻端點設(shè)備接收的音頻數(shù)據(jù)存儲在單獨的數(shù)據(jù)緩沖器中;并且僅在音頻數(shù)據(jù)被加密并且進程標識符數(shù)據(jù)指示該一個軟件進程不是未授權(quán)的軟件進程之后,允許由該一個軟件進程訪問音頻數(shù)據(jù)。
根據(jù)另一示例性方面,該方法進一步包括由至少一個音頻處理對象來處理音頻數(shù)據(jù)設(shè)備,包括:通過針對多個軟件進程分配的全局效果音頻處理對象以及與該一個軟件進程相關(guān)的本地效果音頻處理對象來處理音頻數(shù)據(jù)。
根據(jù)另一示例性方面,該方法進一步包括加密音頻數(shù)據(jù),包括:由對稱加密算法以及非對稱加密算法兩者之一來加密音頻數(shù)據(jù)。
根據(jù)另一示例性方面,提供了一種用于防止對音頻數(shù)據(jù)的未授權(quán)的訪問的系統(tǒng)。根據(jù)這個方面,該系統(tǒng)包括:在電子存儲器中的多個數(shù)據(jù)緩沖器;以及處理器,被配置為:從多個軟件進程的一個軟件進程接收對于從音頻端點設(shè)備獲取音頻流的請求;針對一個軟件進程分配多個數(shù)據(jù)緩沖器的數(shù)據(jù)緩沖器;通過至少一個音頻處理對象來處理并加密從音頻端點設(shè)備接收的音頻數(shù)據(jù),其中,音頻數(shù)據(jù)與所請求的音頻流相關(guān);將經(jīng)加密的音頻數(shù)據(jù)存儲在所分配的數(shù)據(jù)緩沖器內(nèi);針對一個軟件進程安裝api函數(shù)調(diào)用的攔截器;并且由一個軟件進程使用api函數(shù)調(diào)用的攔截器,解密來自所分配的數(shù)據(jù)緩沖器的經(jīng)加密的音頻數(shù)據(jù)。
示例性方面的以上簡化概括用來提供對本公開內(nèi)容的系統(tǒng)和方法的基本理解。該概括不是所有預(yù)期方面的廣泛概述,并且并非被設(shè)計為識別所有方面的關(guān)鍵或決定性元素或者描繪本公開內(nèi)容的任何方面或所有方面的范圍。它的唯一目的是以簡化形式呈現(xiàn)一個或多個方面,作為接下來的本公開的更詳細描述的前述。為了完成以上內(nèi)容,本公開內(nèi)容的一個或多個方面包括描述的特征,并且尤其是在權(quán)利要求中指出的特征。
附圖說明
結(jié)合至本說明書且構(gòu)成本說明書的一部分的附圖示出本公開內(nèi)容的一個或多個示例性方面,并且該附圖與具體實施方式一起,用來說明它們的原理和執(zhí)行過程。
圖1示出windows音頻堆棧的高級模型。
圖2示出根據(jù)一個示例性方面的用于阻止對于對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的框圖。
圖3示出根據(jù)一個示例性方面的用于阻止對于對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的另一框圖。
圖4示出根據(jù)一個示例性方面的用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的方法的流程圖。
圖5示出根據(jù)一個示例性方面的用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的另一框圖。
圖6示出根據(jù)一個示例性方面的用于保護從麥克風(fēng)到進程的音頻數(shù)據(jù)傳輸?shù)姆椒ǖ牧鞒虉D。
圖7示出能夠在其上執(zhí)行所公開的系統(tǒng)和方法的通用計算機系統(tǒng)的示例。
具體實施方式
在本文描述了用于通過保護音頻數(shù)據(jù)從麥克風(fēng)到應(yīng)用程序進程的傳輸,來防止對對于音頻數(shù)據(jù)的未授權(quán)的訪問的系統(tǒng)、方法以及計算機程序產(chǎn)品的上下文的示例性方面。那些本領(lǐng)域的技術(shù)人員將意識到以下描述僅是說明性的而非被設(shè)計為以任何方式進行限制。對于本領(lǐng)域技術(shù)人員,其它方面將容易暗示它們自身具有本公開內(nèi)容的益處?,F(xiàn)在將詳細參考在附圖中所示的示例性方面的執(zhí)行過程。貫穿附圖和以下描述,在可能的程度上,相同的參考指示符將用于指代相同或相似的項。
為了提高作用于音頻數(shù)據(jù)的應(yīng)用程序的開發(fā)的可靠性和簡化性,微軟著重重建了音頻堆棧,其被用于以windowsvista開始的現(xiàn)代操作系統(tǒng)。圖1示出了新的音頻堆棧的高級模型。如下列出并描述了這種模型的基本組件。在圖1中給出的組件的列表不是全部的,而是僅包括用于本公開內(nèi)容的上下文的,或者是對于理解作用于新的音頻堆棧模型的上下文中的音頻數(shù)據(jù)的原理非常重要的那些組件。
windows音頻會話api(“wasapi”101)是允許控制在應(yīng)用程序100與音頻端點設(shè)備107之間的音頻數(shù)據(jù)流的軟件接口。在本公開內(nèi)容中使用的術(shù)語“音頻端點設(shè)備”、“音頻終端設(shè)備”或者“音頻端點”被同義使用,并且例如,根據(jù)一個方面,可以被認為是麥克風(fēng)。還應(yīng)該理解的是,麥克風(fēng)可以被嵌在連接到它的音頻適配器,或者它可以被連接到usb適配器,或連接至轉(zhuǎn)而與適配器連接的設(shè)備。
在這兩種情況下,每個音頻流是音頻會話的一部分,其是應(yīng)用程序100和特定音頻端點設(shè)備107(如麥克風(fēng)108)之間的所有音頻流的組合。windows操作系統(tǒng)可以單獨地處理音頻會話內(nèi)的每個流,并且還控制在整個音頻會話內(nèi)的某些參數(shù),如音量。應(yīng)當指出的是,音頻會話可僅由音頻數(shù)據(jù)渲染流或音頻數(shù)據(jù)捕捉流組成。在給定的公開內(nèi)容的上下文中,只考慮音頻數(shù)據(jù)捕捉流。應(yīng)用程序100可以在兩種模式下使用wasapi軟件接口:wasapi共享和wasapi獨占。由一個應(yīng)用程序使用獨占模式來阻止所有其它應(yīng)用程序?qū)τ谝纛l端點設(shè)備的訪問。使用共享模式允許應(yīng)用程序100同時獲取對于一個并且相同音頻端點設(shè)備107的訪問。組件windows音頻設(shè)備圖形分離件103是用來組織對來自一個音頻端點設(shè)備107的音頻數(shù)據(jù)的共享訪問。
windows音頻設(shè)備圖形分離件103是被設(shè)計為將來自音頻端點設(shè)備107的音頻數(shù)據(jù)傳輸?shù)綉?yīng)用程序100的音頻堆棧組件,并且它可以在單一的音頻會話期間僅使用中央處理器的資源來執(zhí)行音頻流的數(shù)據(jù)的各種轉(zhuǎn)換。例如,windows音頻設(shè)備圖形分離件103可以將來自不同的應(yīng)用程序的音頻流整合成相同的形式(以windows設(shè)置表示),也就是,相同數(shù)目的信道、數(shù)字化的頻率,以及量化的程度,或者它可以執(zhí)行混合音頻流,并且在音頻數(shù)據(jù)捕捉流的情況下,其可以將其復(fù)制用于發(fā)送給多個應(yīng)用程序100。windows音頻設(shè)備圖形分離件103被實現(xiàn)作為在用戶模式下啟動的受保護進程“audiodg.exe”。
windows音頻服務(wù)104是windows操作系統(tǒng)內(nèi)的服務(wù),windows音頻服務(wù)被設(shè)計為創(chuàng)建并控制音頻數(shù)據(jù)流。該音頻堆棧組件允許應(yīng)用程序100與受保護的進程“audiodg.exe”進行交互,對其的直接訪問限于它們的一部分。windows音頻服務(wù)104還是實現(xiàn)windows音頻策略的組件,其包括在操作系統(tǒng)內(nèi)應(yīng)用到在音頻會話內(nèi)的共享模式下可訪問的音頻流的一組規(guī)則。
音頻驅(qū)動器106是所描述的音頻堆棧模型內(nèi)的夾層,包括保持所述音頻堆棧的架構(gòu)的各種系統(tǒng)驅(qū)動器的組合,并且還包括允許支持其它制造商的組件的驅(qū)動器。例如,對于連接到pci和pci串行總線(pciexpressbus)的音頻適配器來說,在windows操作系統(tǒng)中提供了“端口類”(portcls.sys)的系統(tǒng)驅(qū)動器,包括實現(xiàn)各種音頻適配器功能的一組端口驅(qū)動器。并且在音頻適配器連接到usb總線的情況下,在windows操作系統(tǒng)中提供“avstream”類(ks.sys)的驅(qū)動器以及“usb音頻”類(usbaudio.sys)的驅(qū)動器。在音頻驅(qū)動器106的層間內(nèi)實現(xiàn)的新的音頻堆棧模型的主要特征是實現(xiàn)微軟波實時(wavert)技術(shù),其允許音頻端點設(shè)備在用戶模式下將音頻數(shù)據(jù)直接記錄至緩沖器,而無需涉及中央處理器,由受保護的進程“audiodg.exe”從緩沖器中讀取數(shù)據(jù),實現(xiàn)windows音頻設(shè)備圖形分離組件103。在操作系統(tǒng)的一部分上禁止以及控制其它進程對于該緩沖器的訪問。
在本公開內(nèi)容內(nèi)的音頻端點設(shè)備107是位于音頻數(shù)據(jù)傳輸信道(它從應(yīng)用程序100開始或者結(jié)束)的端點之一的設(shè)備。音頻端點設(shè)備的示例包括,但不限于:麥克風(fēng)108、耳機、聲學(xué)揚聲器以及cd播放機。音頻端點設(shè)備107可連接到音頻適配器或成為它們的一部分。
微軟音頻端點構(gòu)建器105是設(shè)計為檢測新的音頻端點設(shè)備107,并且還保持跟蹤并控制現(xiàn)有的音頻端點設(shè)備的windows操作系統(tǒng)的服務(wù)。
windows設(shè)備枚舉器102是軟件接口,該軟件接口允許應(yīng)用程序100與微軟音頻端點構(gòu)建器服務(wù)105進行交互,以獲取有關(guān)現(xiàn)有的音頻端點設(shè)備107以及其用于渲染或捕捉音頻數(shù)據(jù)的用途的信息。
本公開內(nèi)容現(xiàn)在考慮可以在windows操作系統(tǒng)的音頻子系統(tǒng)中提供的某些音頻堆棧組件,在其中實現(xiàn)給定的發(fā)明。具體而言,圖2根據(jù)示例性方面示出了用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的框圖。如所示的,該圖描述了其中在音頻會話內(nèi)的共享模式(wasapi共享)下提供訪問的進程200的方案,該音頻會話包括從作為麥克風(fēng)206的音頻端點設(shè)備接收的音頻數(shù)據(jù)捕捉流。在這個示圖的上下文中,考慮了進程200的概念,通過該概念表示在給定時刻執(zhí)行的應(yīng)用程序。如果應(yīng)用程序是被動的指令集,則進程立即執(zhí)行這些指令。每個進程具有唯一的標識符:進程id(簡言之,pid),通過該進程id可以識別給定的進程。
實際上,實現(xiàn)阻止對麥克風(fēng)數(shù)據(jù)的未授權(quán)的訪問的系統(tǒng)及方法的主要難點是:在進程和音頻端點設(shè)備之間循環(huán)的所有音頻流都是實現(xiàn)windows音頻設(shè)備圖形分離組件202的單個受保護的進程“audiodg.exe”的上下文。由于該進程是受保護的,也就是說,有關(guān)這個進程的訪問權(quán)是受限制的,因此當執(zhí)行多個操作時,通過使用用戶模式的標準api函數(shù)與該進程進行交互是不可能的。因此,使用該用戶模式的標準api函數(shù)的另一個進程不能請求有關(guān)進程“audiodg.exe”的內(nèi)部數(shù)據(jù)的信息。對于每個進程200與實現(xiàn)windows音頻設(shè)備圖形分離組件202的受保護的進程“audiodg.exe”進行的交互來說,操作系統(tǒng)的windows音頻服務(wù)件201創(chuàng)建專用跨進程緩沖器200,可通過該跨進程緩沖器,從音頻端點設(shè)備205的其中一個(諸如麥克風(fēng)206)發(fā)送數(shù)據(jù)。如上所述,憑借操作系統(tǒng)的windows微軟音頻端點構(gòu)建器服務(wù)件204,完成了保持跟蹤并添加音頻端點設(shè)備205。
音頻端點設(shè)備(諸如麥克風(fēng)206)與受保護進程audiodg.exe202在用戶模式下進行的可訪問的交互還可以通過專用緩沖器203發(fā)生。在不涉及中央處理器的情況下,音頻數(shù)據(jù)從麥克風(fēng)206直接進入緩沖器203,并且隨后由windows音頻設(shè)備圖形分離組件202讀取,反之亦然,其僅僅利用中央處理器的資源(也就是通過軟件)被處理,而無需涉及音頻適配器的資源(音頻端點設(shè)備205被連接到該音頻適配器或者是組成它們的一部分)。
在已經(jīng)從緩沖器203讀取的音頻數(shù)據(jù)將被發(fā)送到處理器200之前,該數(shù)據(jù)經(jīng)歷windows音頻設(shè)備圖形分離組件202處理。windows音頻設(shè)備圖形分離組件202的主要任務(wù)是將來自音頻端點設(shè)備(麥克風(fēng)206)的音頻數(shù)據(jù)傳輸?shù)竭M程100,并在單個音頻會話的過程中,執(zhí)行音頻流的數(shù)據(jù)的各種轉(zhuǎn)換。憑借上述wavert技術(shù)的微型端口驅(qū)動器完成音頻流的數(shù)據(jù)的轉(zhuǎn)換,其被稱為音頻處理對象(apo)。兩種類型的音頻處理對象的一個區(qū)別是:全局效果(簡稱gfxapo212),以及本地效果(簡稱lfxapo211)。
根據(jù)一個方面,音頻引擎(audioengine)將系統(tǒng)提供的apo以及sapo配置在稱為管道的組件內(nèi)。在音頻引擎中存在兩種類型的管道:由apo以及sapo組成的流管道,它們執(zhí)行對于來自單個應(yīng)用程序的流而言是本地的數(shù)字音頻處理。在這種類型的管道中的sapo稱為本地效果sapo(lfxsapo)。設(shè)備管道由執(zhí)行全局地影響所有流的數(shù)字音頻處理的apo和sapo組成。在這種類型的管道中的sapo稱為全局效果sapo(gfxsapo)。
在包括音頻數(shù)據(jù)捕捉流的音頻會話的上下文中,全局效果音頻處理對象gfxapo112被用于從麥克風(fēng)206接收到的輸入音頻流。然后,對于請求了來自windows音頻服務(wù)件201的音頻流的創(chuàng)建的每個進程200來說,通過由windows音頻設(shè)備圖形分離組件202將憑借全局效果音頻處理對象gfxapo112所處理的輸入流進行復(fù)制,完成獨立音頻流的創(chuàng)建。每個獨立的音頻流對應(yīng)于單個進程,并憑借本地效果音頻處理對象lfxapo211被處理。用于每個獨立音頻流的本地效果音頻處理對象lfxapo211的數(shù)目可以相同或不同。由于該音頻數(shù)據(jù)處理對象的參數(shù)可以被實時控制,因此在本地效果音頻處理對象lfxapo211的協(xié)作下,對于每個獨立音頻流的數(shù)據(jù)執(zhí)行的操作的性質(zhì)也可能不同。對于每個進程,可以獨立激活本地效果音頻處理對象lfxapo211,其將使本地效果音頻處理對象lfxapo211被添加到對應(yīng)于給定進程的音頻流。對于每個進程,也可以獨立停用本地效果音頻處理對象lfxapo211,其將使本地效果音頻處理對象lfxapo211從對應(yīng)于給定進程的音頻流移除。以wavert微型端口驅(qū)動器的方式實現(xiàn)本地效果音頻處理對象lfxapo211,其被安裝在操作系統(tǒng)中,并且通過將對應(yīng)的記錄添加到系統(tǒng)注冊表來與每個特定音頻端點設(shè)備205關(guān)聯(lián)地注冊,在這之后,將由音頻子系統(tǒng)自動安裝本地效果音頻處理對象lfxapo211,用于處理關(guān)于向其注冊給定的本地效果音頻處理對象lfxapo211的音頻端點設(shè)備的每個新音頻流。
為了在共享訪問模式(wasapi共享)下接收對來自麥克風(fēng)206的音頻數(shù)據(jù)的訪問的進程,該進程制定并向windows音頻服務(wù)件201發(fā)送請求。該請求包括含有進程標識符(pid)的各種參數(shù)。windows音頻服務(wù)件201制定并發(fā)送對于創(chuàng)建新的數(shù)據(jù)流的rpc請求到windows音頻設(shè)備圖形分離組件202,發(fā)送在這個rpc請求的參數(shù)中創(chuàng)建音頻流所需的進程標識符(pid)。windows音頻服務(wù)201創(chuàng)建專用的跨進程緩沖器200,音頻數(shù)據(jù)通過該專用的跨進程緩沖器從麥克風(fēng)206發(fā)送到請求創(chuàng)建音頻流的進程。windows音頻設(shè)備圖形分離202轉(zhuǎn)而創(chuàng)建與前述專用的緩沖器200相關(guān)的獨立音頻流,音頻數(shù)據(jù)通過該專用的緩沖器將被發(fā)送到請求創(chuàng)建給定的音頻流的進程。最后,音頻子系統(tǒng)安裝了向麥克風(fēng)206注冊的本地效果音頻處理對象lfxapo211,用于處理已創(chuàng)建的音頻流。
圖3示出根據(jù)一個示例性方面的用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的另一框圖。如圖所示,該系統(tǒng)的兩個子系統(tǒng)是:上述的音頻子系統(tǒng)(在圖2中所示),以及集成在所述音頻子系統(tǒng)中的用于控制對于麥克風(fēng)數(shù)據(jù)的訪問的子系統(tǒng)。根據(jù)示例性方面,在本文所公開的音頻子系統(tǒng)包括音頻流控制模塊301,進程通過創(chuàng)建并控制音頻流的api函數(shù)與音頻流控制模塊進行交互,其在一個示例性方面中可以是windows音頻服務(wù)件201。此外,提供了音頻流混合和處理模塊302,該模塊被設(shè)計為混合在應(yīng)用程序與音頻端點設(shè)備之間的音頻流,并且還憑借濾波器處理音頻流,其在一個示例性方面中可以是受保護的進程windows音頻設(shè)備圖像分離件202。此外,提供了音頻端點設(shè)備控制模塊306,用于執(zhí)行添加并保持跟蹤音頻端點設(shè)備,器在一個示例性方面中可以是windows音頻端點構(gòu)建器服務(wù)204。
用于控制對麥克風(fēng)數(shù)據(jù)的訪問的子系統(tǒng)包括以下三個組件:rpc流量過濾模模塊310、音頻流阻擋模塊311以及訪問授權(quán)模塊312。為了檢測創(chuàng)建有關(guān)音頻端點設(shè)備(其是麥克風(fēng))的音頻流的rpc請求,以及為了確定請求創(chuàng)建音頻流的進程標識符(pid),rpc流量過濾模模塊310被設(shè)計為執(zhí)行對音頻流控制模塊301與音頻流混合和處理模塊302之間的rpc流量的監(jiān)控。這種系統(tǒng)能夠解決上述從麥克風(fēng)305接收音頻數(shù)據(jù)的進程300的識別問題,其中,在進程300與麥克風(fēng)305之間循環(huán)的所有音頻流是單個受保護進程“audiodg.exe”(音頻流混合和處理模塊302)的上下文。
安裝音頻流阻擋模塊311用于來自關(guān)于音頻端點設(shè)備(其是麥克風(fēng)305)的音頻會話的每個新的音頻流,作為在音頻流混合和處理模塊302內(nèi)的本地效果音頻處理對象lfxapo211。在一個示例性方面中,音頻流阻擋模塊311是驅(qū)動器(諸如,wavert微型端口驅(qū)動器)的形式。音頻子系統(tǒng)針對音頻對話中的每個新的音頻流自動安裝音頻流阻擋模塊311,該音頻會話涉及來自音頻端點設(shè)備304的組的每個音頻端點設(shè)備,音頻流阻擋模塊311向音頻端點設(shè)備304注冊作為本地效果音頻處理對象lfxapo211。在一個示例性方面中,由音頻流混合和處理模塊302完成在之前的內(nèi)容中所提到的音頻流阻擋模塊311的自動安裝。在安裝之后,音頻流阻擋模塊311向訪問授權(quán)模塊312發(fā)送請求,以檢查關(guān)于獲取對為其安裝了給定的音頻流阻擋模塊311的音頻流的數(shù)據(jù)的訪問的進程的授權(quán)。為了執(zhí)行該檢查,訪問授權(quán)模塊312從rpc流量過濾模塊310接收或者請求有關(guān)對其請求所述授權(quán)檢查的進程標識符。應(yīng)當注意的是,音頻流阻擋模塊311不具有關(guān)于已為其安裝的音頻流對應(yīng)于哪個進程的信息。rpc流量過濾模塊310也不具有這種信息。由音頻流阻擋模塊311發(fā)送與由rpc流量過濾模塊310獲取的進程標識符協(xié)調(diào)的請求,該請求相當于通過訪問授權(quán)模塊312完成的音頻流與進程的協(xié)調(diào)。
根據(jù)一個方面,音頻流阻擋模塊311的主要目的是防止由未授權(quán)的進程對音頻流數(shù)據(jù)的訪問。為此,音頻流阻擋模塊311執(zhí)行音頻流(請求創(chuàng)建該音頻流的進程被訪問授權(quán)模塊312發(fā)現(xiàn)未被授權(quán))的數(shù)據(jù)的歸零。
訪問授權(quán)模塊312連接到rpc流量過濾模塊310以及音頻流阻擋模塊311,并且被設(shè)計為通過前述用于訪問與音頻端點設(shè)備(諸如麥克風(fēng)305)相關(guān)的音頻流的數(shù)據(jù)的進程標識符來執(zhí)行進程的授權(quán)的檢查。進程授權(quán)模塊可以執(zhí)行以下兩者:獨立檢查獲取與來自音頻端點設(shè)備304的組的音頻端點設(shè)備相關(guān)的音頻流的數(shù)據(jù)的訪問進程的授權(quán),并且還將有關(guān)被檢查的進程的請求發(fā)送給其它安全模塊。這些模塊可包括用于控制進程的活動的模塊,被設(shè)計為規(guī)范在進程的一部分上的操作,諸如對于文件系統(tǒng)的訪問,對系統(tǒng)注冊表的訪問,或者與其它進程的交互,所有的進程可以被細分為:可信的進程、不可信的進程、具有弱約束的進程以及具有強約束的進程。此外,可以提供防病毒模塊,并被設(shè)計為通過簽名(已知的病毒以及其它惡意應(yīng)用程序的描述)的數(shù)據(jù)庫的協(xié)助查找病毒,以及移除或者隔離相應(yīng)的對象以及與它們有關(guān)的數(shù)據(jù)。此外,威脅中和模塊可以被提供并且被用于檢測不期望的內(nèi)容,實時發(fā)現(xiàn)攻擊或者威脅,采取關(guān)閉任何可疑進程的措施,阻擋因特網(wǎng)流量,以及還將系統(tǒng)重新恢復(fù)到它最后已知的安全狀態(tài)。此外,可以提供用戶反饋模塊,能夠警告用戶關(guān)于由進程來獲取對麥克風(fēng)數(shù)據(jù)的訪問的所有嘗試,從而使用戶能夠選擇是否允許給定的進程訪問麥克風(fēng),并且還給用戶提供了通過針對所有進程的默認值來阻止訪問麥克風(fēng)的選項。
因此,訪問授權(quán)模塊312可以基于來自外部安全模塊的判定來確定進程為未授權(quán)的。例如,如果進程是惡意的或者如果進程沒有被用戶授權(quán)訪問麥克風(fēng)數(shù)據(jù),則可確定該進程為未授權(quán)的。
在一個示例性方面,訪問授權(quán)模塊312連接到音頻端點設(shè)備控制模塊306,以跟隨添加到音頻端點設(shè)備304的組的新的音頻端點設(shè)備。對于每個新的音頻端點設(shè)備來說,訪問授權(quán)模塊312音頻流執(zhí)行模塊311的注冊,注冊為本地效果音頻處理對象lfxapo211。在另一示例性方面,訪問授權(quán)模塊312防止改變和移除系統(tǒng)注冊表的所有記錄,其中,音頻流阻擋模塊311在系統(tǒng)注冊表中被列為本地效果音頻處理對象lfxapo211。
圖4示出根據(jù)一個示例性方面的用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的方法的流程圖。如所示的,在步驟401中,憑借訪問授權(quán)模塊312,在由音頻端點設(shè)備控制模塊306說明的每個音頻端點設(shè)備(其是麥克風(fēng)305)的音頻流混合和處理模塊302內(nèi),執(zhí)行安裝音頻流阻擋模塊311,作為本地效果音頻處理模塊lfxapo。針對關(guān)于為其安裝了給定本地效果音頻處理模塊lfxapo的每個音頻端點設(shè)備(其是麥克風(fēng)305)的每個新的音頻流,本地效果音頻處理模塊lfxapo被用作音頻流混合和處理模塊302。
接著,在步驟402中,憑借rpc流量過濾模塊310,監(jiān)控音頻流控制模塊301和音頻流混合和處理模塊302之間的rpc流量,針對創(chuàng)建涉及音頻終端設(shè)備(其是麥克風(fēng)305)的音頻流發(fā)現(xiàn)rpc請求,并且確定請求創(chuàng)建上述音頻流的進程標識符。
在創(chuàng)建新的音頻流期間,音頻流混合和處理模塊302對其應(yīng)用了音頻流的本地效果處理模塊lfxapo,該模塊被安裝用于涉及新的音頻流的音頻端點設(shè)備。由于在步驟401中,對于每個是麥克風(fēng)的音頻端點設(shè)備來說,安裝有音頻流阻擋模塊311,作為音頻流的本地效果處理模塊lfxapo,因此在步驟403中,音頻流阻擋模塊311將被應(yīng)用到涉及是麥克風(fēng)的音頻端點設(shè)備的新的音頻流,在初始化之后該音頻流阻擋模塊將立即發(fā)送授權(quán)請求到訪問授權(quán)模塊312。
在步驟404中,響應(yīng)于該請求,訪問授權(quán)模塊312將使用在步驟402中接收到的請求創(chuàng)建音頻流的進程的標識符,來檢查該進程獲取對所提到的音頻流的數(shù)據(jù)的訪問的授權(quán)。
并且基于在步驟405中的檢查結(jié)果,如果憑借訪問授權(quán)模塊312發(fā)現(xiàn)請求創(chuàng)建所提到的音頻流的進程為未授權(quán)的,則音頻流阻擋模塊311對所提到的音頻流的數(shù)據(jù)進行歸零。
防止對麥克風(fēng)數(shù)據(jù)的未授權(quán)的訪問的系統(tǒng)及方法可以通過使用在操作系統(tǒng)內(nèi)的音頻子系統(tǒng)提供的機制,保護用戶免于作為未授權(quán)訪問麥克風(fēng)數(shù)據(jù)的進程的一部分的結(jié)果而發(fā)生的音頻數(shù)據(jù)的泄露。然而,上述系統(tǒng)和方法不能向用戶提供保護,使其免于外部進程對于授權(quán)進程獲取的音頻流的未授權(quán)訪問的結(jié)果而發(fā)生的音頻數(shù)據(jù)泄露。對于本公開內(nèi)容的上下文中的保護音頻流免于未授權(quán)的訪問來說,實現(xiàn)用于保護從麥克風(fēng)到進程的音頻數(shù)據(jù)傳輸?shù)南到y(tǒng)和方法。
圖5示出根據(jù)一個示例性方面的用于阻止對于音頻數(shù)據(jù)的未授權(quán)的訪問的音頻子系統(tǒng)的另一框圖。如所示的,系統(tǒng)包括兩個子系統(tǒng):上述的音頻子系統(tǒng)(在圖2示出),以及與音頻子系統(tǒng)集成的用于音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)。如所示的,音頻子系統(tǒng)包括音頻流控制模塊301,音頻流混合和處理模塊302,以及音頻端點設(shè)備控制模塊306。
音頻流控制模塊301被設(shè)計為創(chuàng)建并控制音頻流。進程300憑借api函數(shù)與音頻流控制模塊301進行交互。在一個示例性方面中,音頻流控制模塊301可以是windows音頻服務(wù)201。
音頻流混合和處理模塊302連接到音頻流控制模塊301,并且被設(shè)計為對進程300和來自音頻端點設(shè)備304(諸如麥克風(fēng))的組的音頻端點設(shè)備之間的音頻流進行路由。音頻流混合和處理模塊302還被設(shè)計為用于憑借由系統(tǒng)(音頻處理對象,apo)支持的音頻處理模塊來處理音頻流。在windows音頻子系統(tǒng)中,一個子系統(tǒng)將系統(tǒng)音頻處理模塊(由縮寫apo表示)與第三方音頻處理模塊sapo進行區(qū)分。對于本公開內(nèi)容的目的來說,將僅使用sapo(在下文簡稱為音頻處理模塊sapo)。如上所述,一個子系統(tǒng)區(qū)分由音頻流混合和處理模塊302使用的兩種類型的音頻處理對象sapo:全局效果gfxsapo502以及本地效果lfxsapo501。在包括音頻數(shù)據(jù)捕捉流的音頻會話內(nèi),全局效果音頻處理對象gfxsapo502被應(yīng)用到從麥克風(fēng)305接收到的輸入音頻流。然后,對于請求音頻流控制模塊301創(chuàng)建音頻流的每個進程(諸如進程n)來說,音頻流混合和處理模塊302通過復(fù)制憑借全局效果音頻處理對象gfxsapo502處理的輸入流,來創(chuàng)建獨立的音頻流。每個獨立的音頻流對應(yīng)于進程300的其中一個,并且憑借本地效果音頻處理對象lfxsapo501進行處理。音頻流混合和處理模塊302通過單獨的緩沖器503將音頻數(shù)據(jù)從音頻端點設(shè)備(諸如麥克風(fēng)305)發(fā)送到進程300,其中,音頻流混合和處理模塊302將音頻數(shù)據(jù)寫入該單獨的緩沖器,并且進程300通過api函數(shù)的調(diào)用來讀取該數(shù)據(jù)。在一個示例性方面中,音頻流混合和處理模塊302可以是受保護的進程windows音頻設(shè)備圖形分離202。
音頻端點設(shè)備控制模塊306執(zhí)行添加并保持跟蹤音頻端點設(shè)備。在一個示例性方面中,該音頻端點設(shè)備控制模塊306可以是windows音頻端點構(gòu)建器服務(wù)204。
用于音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)可包括rpc流量過濾模塊310和音頻流加密保護模塊500,并且其可以另外含有訪問授權(quán)模塊312。rpc流量過濾模塊310對音頻流控制模塊301與音頻流混合和處理模塊302之間的rpc流量進行監(jiān)控。rpc流量過濾模塊310被設(shè)計為檢測對于創(chuàng)建涉及音頻端點設(shè)備(諸如麥克風(fēng)305)的音頻流的rpc請求。rpc流量過濾模塊310連接到音頻流加密保護模塊500,并且被用在用于音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)內(nèi),從而跟蹤用于創(chuàng)建涉及任何音頻端點設(shè)備(其是麥克風(fēng))的音頻流的所有rpc請求。該rpc流量過濾模塊310確定進程標識符(pid)并存儲對應(yīng)于請求為其創(chuàng)建涉及音頻端點設(shè)備(諸如麥克風(fēng)305)的音頻流的一組進程300{進程1,...,進程n}的一組標識符{pid1,...,pidn}。因此,該rpc流量過濾模塊310允許音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)從而確定在當前時刻可訪問任何音頻端點設(shè)備(其是麥克風(fēng))的所有進程300。
音頻流加密保護模塊500連接到rpc流量過濾模塊310,并被設(shè)計為對音頻流混合和處理模塊302內(nèi)的音頻數(shù)據(jù)進行加密和解密。對于加密音頻數(shù)據(jù)來說,音頻流加密保護模塊500使用以驅(qū)動器的形式實現(xiàn)的音頻處理模塊sapo,其被安裝在操作系統(tǒng)中并且通過將相應(yīng)的記錄添加到系統(tǒng)注冊表來與來自音頻端點設(shè)備304的組的每個特定音頻端點設(shè)備(其是麥克風(fēng))有關(guān)地注冊。在安裝之后,由音頻流混合和處理模塊302自動將全局效果音頻處理對象gfxsapo502應(yīng)用到經(jīng)由存儲緩沖器303獲取的來自是麥克風(fēng)的音頻端點設(shè)備的輸入音頻流,同時,本地效果音頻處理對象lfxsapo501用于處理有關(guān)為其安裝了所述本地效果音頻處理對象lfxsapo501以及全局效果音頻處理對象gfxsapo502的同一音頻端點設(shè)備(其是麥克風(fēng))的每個新音頻流。在音頻處理模塊sapo中可部分或者全部實現(xiàn)加密算法,使得可通過本地效果音頻處理對象lfxsapo501或通過全局效果音頻處理對象gfxsapo502來獨立完成加密,或者使得通過本地效果音頻處理對象lfxsapo501以及全局效果音頻處理對象gfxsapo502的組合來完成加密。作為加密算法,其可采用對稱加密算法(諸如aes、des、gost28147-89),以及非對稱加密算法(諸如rsa、el-gamal)。對稱加密要求針對加密和解密兩者使用相同的密鑰。非對稱加密要求使用一對密鑰(公鑰和私鑰)。公鑰由公共通信信道(未隱藏)發(fā)送,并被用于數(shù)據(jù)的加密。對于數(shù)據(jù)的解密來說,則使用第二、私鑰。音頻流加密保護模塊500生成密鑰,存儲它們,并將密鑰發(fā)送給音頻處理模塊sapo用于加密。
憑借音頻流加密保護模塊500所加密的數(shù)據(jù)進入存儲緩沖器503。來自存儲緩沖器503的組{存儲緩沖器1,...,存儲緩沖器n}的每個存儲緩沖器對應(yīng)于來自進程300的組{進程1,...,進程n}的進程,其在當前時刻可以訪問作為麥克風(fēng)的音頻端點設(shè)備。由音頻流控制模塊301針對請求創(chuàng)建音頻流的每個進程創(chuàng)建存儲緩沖器。憑借存儲緩沖器503,音頻流混合和處理模塊302將來自音頻端點設(shè)備(其是麥克風(fēng))的音頻數(shù)據(jù)發(fā)送給進程。實際上,存儲緩沖器503是在從音頻端點設(shè)備(其是麥克風(fēng))至進程300的通道上泄露音頻數(shù)據(jù)的最可能的位置處。為了從存儲緩沖器503獲取音頻數(shù)據(jù),進程300使用api函數(shù),特別是wasapi函數(shù),通過該函數(shù),進程300從存儲緩沖器503讀取音頻數(shù)據(jù),將讀取的音頻數(shù)據(jù)移動至本地存儲緩沖器505,例如,用于其之后的處理和使用。為了實現(xiàn)音頻數(shù)據(jù)的解密,音頻流加密保護模塊500安裝api函數(shù)的調(diào)用的攔截器,其中,通過該函數(shù),進程300從存儲緩沖器503讀取音頻數(shù)據(jù)。僅針對那些由rpc流量過濾模塊310確定了其標識符的進程,音頻流加密保護模塊500安裝這些攔截器。例如,根據(jù)圖5,對于具有標識符pidn的進程n來說,安裝有api函數(shù)的調(diào)用的攔截器504。
從傳統(tǒng)的系統(tǒng)和方法已知用于攔截api函數(shù)的調(diào)用的技術(shù),并且該技術(shù)涉及可以在本公開的內(nèi)容的上下文中采用的各種方法。根據(jù)其中一個方法,基于來自第三方dll的進程n中任何給定的api函數(shù)的調(diào)用是通過函數(shù)導(dǎo)入表來執(zhí)行的事實。當將dll加載到進程n時,填寫該表,并且在那寫入有可能由進程n所需的所有被導(dǎo)入的函數(shù)的地址,包括api函數(shù),通過該函數(shù)進程n從存儲緩沖器n讀取音頻數(shù)據(jù)。因此,為了安裝api函數(shù)的調(diào)用的攔截器504,音頻流加密保護模塊500找到導(dǎo)入表,并且在導(dǎo)入表中有其調(diào)用需要被攔截的api函數(shù),并且在所找到的導(dǎo)入表中放置指向其它函數(shù)而不是原始api函數(shù)的指針。其指針被放置在導(dǎo)入函數(shù)而不是原始api函數(shù)的其它函數(shù)是改進的原始api函數(shù),該函數(shù)允許進程n從存儲緩沖器n讀取音頻數(shù)據(jù),區(qū)別在于它額外包含對于要由音頻流加密保護模塊500執(zhí)行的、被讀取的音頻數(shù)據(jù)的例程的調(diào)用。在完成該例程之后,將解密的音頻數(shù)據(jù)發(fā)送到進程n。
在一個示例性方面中,在不需要攔截器的情況下可以完成對位于例如存儲緩沖器n中的音頻數(shù)據(jù)的解密。進程n可通過以軟件開發(fā)工具包(sdk)的形式提供的專用程序接口(諸如klapi(kasperksy實驗室應(yīng)用程序編程接口))與用于音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)獨立地進行交互。因此,該進程n不僅能夠獨立調(diào)用由音頻流加密保護模塊500執(zhí)行的解密例程,而且能與音頻流加密保護模塊500進行交互,用于調(diào)用加密音頻數(shù)據(jù)的例程以及生成并交換密鑰(其中,該密鑰是用于對音頻數(shù)據(jù)進行加密以及解密)的例程,并且還能與用于音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)的其它組件進行交互,以確保在進程n處,來自音頻端點設(shè)備(其是麥克風(fēng))的音頻數(shù)據(jù)的安全性。
在音頻數(shù)據(jù)62的受保護傳輸?shù)淖酉到y(tǒng)內(nèi)的訪問授權(quán)模塊312連接到加密保護模塊500以及rpc流量過濾模塊310,并且被設(shè)計為依據(jù)由rpc流量過濾模塊310所確定的進程標識符檢查進程的授權(quán),用于允許對音頻端點設(shè)備(其是麥克風(fēng))進行訪問。因此,在一個示例性方面中,通過使用訪問授權(quán)模塊312,音頻流加密保護模塊500能夠只針對作為前述的通過訪問授權(quán)模塊312確認的結(jié)果的那些已經(jīng)被識別為被授權(quán)以獲取對音頻終端設(shè)備(其是麥克風(fēng))的訪問的進程,建立api函數(shù)的調(diào)用的攔截器。作為這種情況的結(jié)果,加密音頻數(shù)據(jù)將從音頻流混合和處理模塊302進入未授權(quán)的進程。
圖6示出根據(jù)一個示例性方面的用于從麥克風(fēng)到進程的音頻數(shù)據(jù)的受保護傳輸?shù)姆椒ǖ牧鞒虉D。根據(jù)該流程圖,在步驟601中,rpc流量過濾模塊310,被設(shè)計為監(jiān)控音頻流控制模塊301與音頻流混合和處理模塊302之間的rpc流量,跟蹤針對創(chuàng)建涉及每個音頻端點設(shè)備(其是麥克風(fēng))的音頻流的rpc請求,以便確定獲取對所述麥克風(fēng)的訪問的所有進程的標識符。
接下來,在步驟602中,由音頻流加密保護模塊500對音頻流混合和處理模塊302內(nèi)的所有音頻流的音頻數(shù)據(jù)進行加密。針對音頻數(shù)據(jù)的加密,音頻流加密保護模塊500使用音頻處理模塊(apo),該音頻處理模塊被細分為兩種類型的對象:全局效果音頻處理模塊gfxsapo502以及本地效果音頻處理模塊lfxsapo501。
音頻流混合和處理模塊302將經(jīng)加密的音頻數(shù)據(jù)置于內(nèi)存緩沖器503內(nèi)。來自內(nèi)存緩沖器503的組{存儲緩沖器1,...,存儲緩沖器n}的每個內(nèi)存緩沖器對應(yīng)于來自進程300的組{進程1,...,進程n}的進程,該進程組在當前時刻可以訪問作為麥克風(fēng)的音頻端點設(shè)備。
對于音頻數(shù)據(jù)的解密,在步驟603中,密碼保護模塊500安裝對于api函數(shù)的調(diào)用的攔截器,其中,通過該api函數(shù),進程300從相應(yīng)的存儲緩沖器503讀取音頻數(shù)據(jù),由音頻流混合和處理模塊302使用該內(nèi)存緩沖器,用于將音頻數(shù)據(jù)從音頻端點設(shè)備(其是麥克風(fēng))傳輸?shù)竭M程300。密碼保護模塊500針對其標識符在步驟601中由rpc流量過濾模塊確定的那些進程300完成攔截器的安裝。
在一個示例性方面,音頻流加密保護模塊500僅針對那些作為由訪問授權(quán)模塊312檢查的結(jié)果被確定作為授權(quán)訪問音頻端點設(shè)備(其是麥克風(fēng))的進程300的組的那些進程,安裝對于api函數(shù)的調(diào)用的攔截器。訪問授權(quán)模塊312根據(jù)其由rpc流量過濾模塊310所確定的標識符,執(zhí)行對于訪問終端設(shè)備(其是麥克風(fēng))的進程300的授權(quán)的檢查。
并且在步驟604中,上述的攔截器被用于調(diào)用音頻數(shù)據(jù)的解密例程,由音頻流加密保護模塊500來執(zhí)行該解密例程,在該解密例程之后,經(jīng)解密的數(shù)據(jù)被發(fā)送到進程。
圖7示出根據(jù)示例性方面的通用計算機系統(tǒng)(其可以是個人計算機或服務(wù)器)的示例,可以在其上執(zhí)行所公開的系統(tǒng)(包括一個或多個模塊)以及方法。如所示的,計算機系統(tǒng)20可以包括中央處理單元21、系統(tǒng)存儲器22以及連接各種系統(tǒng)組件的系統(tǒng)總線23,包括與中央處理單元21相關(guān)聯(lián)的存儲器。與從現(xiàn)有技術(shù)所公知的任何總線結(jié)構(gòu)相同,可以實現(xiàn)系統(tǒng)總線23(依次包括總線存儲器或總線存儲器控制器),外圍總線和本地總線,其能夠與任何其它總線架構(gòu)進行交互。系統(tǒng)存儲器包括只讀存儲器(rom)24和隨機存取存儲器(ram)25。基本輸入/輸出系統(tǒng)(bios)26包括確保在個人計算機20的元件(諸如使用rom24在加載操作系統(tǒng)的時刻的那些元件)之間傳遞信息的基本程序。
個人計算機依次包括:硬盤27,用于讀取和寫入數(shù)據(jù);磁盤驅(qū)動器28,用于在可移動磁盤29上讀取和寫入;以及光盤驅(qū)動器30,用于在可移動光盤31(諸如cd-rom、dvd-rom以及其它光學(xué)信息介質(zhì))上讀取和寫入。硬盤27、磁盤驅(qū)動器28以及光盤驅(qū)動器30分別跨硬盤接口32、磁盤接口33和光盤驅(qū)動器接口34連接到系統(tǒng)總線23。驅(qū)動器和相應(yīng)的計算機信息介質(zhì)是存儲計算機指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及個人計算機20的其它數(shù)據(jù)的電力獨立的模塊。
本公開內(nèi)容提供了使用硬盤27、可移動磁盤29以及可移動光盤31的系統(tǒng)的實施方式,但應(yīng)該理解的是,可以采用其它類型的計算機信息介質(zhì)56,其能夠以被計算機(固態(tài)驅(qū)動器、閃存卡、數(shù)字盤、隨機存取存儲器(ram)等等)讀取的形式存儲數(shù)據(jù),其是經(jīng)由控制器55被連接到系統(tǒng)總線23。
計算機20具有文件系統(tǒng)36,其中,存儲了所記錄的操作系統(tǒng)35,其轉(zhuǎn)而又包含音頻子系統(tǒng)60(在圖2中所示)以及用于控制對麥克風(fēng)數(shù)據(jù)61的訪問的子系統(tǒng)(在圖3中所示),以及用于音頻數(shù)據(jù)62的受保護的傳輸?shù)淖酉到y(tǒng),以及還有附加程序應(yīng)用37、其它程序模塊38以及程序數(shù)據(jù)39。用戶能夠通過使用輸入設(shè)備(鍵盤40,鼠標42)來將命令和信息輸入到個人計算機20??梢允褂闷渌斎朐O(shè)備(未示出):麥克風(fēng)、操縱桿、游戲控制器、掃描儀等。這種輸入設(shè)備通常通過串行端口46插入計算機系統(tǒng)20中,其又連接到系統(tǒng)總線,但它們可以以其它方式進行連接,例如,借助并行端口、游戲端口或通用串行總線(usb)。監(jiān)控器47或其它類型的顯示設(shè)備也通過接口(諸如視頻適配器48)連接到系統(tǒng)總線23。除了監(jiān)控器47,個人計算機可以配備其它外圍輸出設(shè)備(未示出),如揚聲器,打印機等。
個人計算機20能夠在網(wǎng)絡(luò)環(huán)境中工作,使用網(wǎng)絡(luò)連接到一個或多個遠程計算機49。如在圖7中所示,該遠程計算機(或計算機)49也是具有大部分或所有在描述個人計算機20的性質(zhì)的上述元件的個人計算機或服務(wù)器。在計算機網(wǎng)絡(luò)中還存在其它設(shè)備,諸如路由器、網(wǎng)絡(luò)基站、對等設(shè)備或其它網(wǎng)絡(luò)節(jié)點。
網(wǎng)絡(luò)連接可形成局域計算機網(wǎng)絡(luò)(lan)50,諸如有線和/或無線網(wǎng)絡(luò),以及廣域計算機網(wǎng)(wan)。這種網(wǎng)絡(luò)被用在企業(yè)計算機網(wǎng)絡(luò)和公司內(nèi)部網(wǎng)絡(luò),并且它們通??梢栽L問互聯(lián)網(wǎng)。在lan或wan的網(wǎng)絡(luò)中,個人計算機20通過網(wǎng)絡(luò)適配器或網(wǎng)絡(luò)接口51連接到局域網(wǎng)50中。當使用網(wǎng)絡(luò)時,個人計算機20可以使用調(diào)制解調(diào)器54或其它模塊,用于提供與廣域計算機網(wǎng)絡(luò)(如因特網(wǎng))的通信。作為內(nèi)部或外部設(shè)備的調(diào)制解調(diào)器54通過串行端口46連接到系統(tǒng)總線23。應(yīng)當注意的是,網(wǎng)絡(luò)連接僅僅是示例,并且不需要說明網(wǎng)絡(luò)的確切配置,即,在現(xiàn)實中,存在通過技術(shù)通信模塊(諸如藍牙)建立一個計算機與另一個計算機的連接的其它方式。
在各個方面中,本文描述的系統(tǒng)和方法可在硬件、軟件、固件或其任意組合中實現(xiàn)。如果在軟件中實現(xiàn),則該方法可存儲作為非易失性計算機可讀介質(zhì)上的一個或多個指令或代碼。計算機可讀介質(zhì)包括數(shù)據(jù)存儲器。通過舉例而非限制性的方式,這種計算機可讀介質(zhì)可包括:可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式攜帶或存儲期望程序代碼并且可由通用計算機的處理器訪問的ram、rom、eeprom、cd-rom、閃存或其它類型的電存儲介質(zhì)、磁存儲介質(zhì)或光存儲介質(zhì)或任意其它介質(zhì)。通過舉例而非限制性的方式,這種計算機可讀介質(zhì)可包括:可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式攜帶或存儲期望程序代碼并且可由通用計算機的處理器訪問的ram、rom、eeprom、cd-rom、閃存或其它類型的電存儲介質(zhì)、磁存儲介質(zhì)或光存儲介質(zhì)或任意其它介質(zhì)。
如上所述,在各種方面,在公開內(nèi)容中所描述的系統(tǒng)和方法涉及模塊。應(yīng)當重申的是,如本文中所使用的術(shù)語“模塊”指的是現(xiàn)實世界的設(shè)備、組件,或使用硬件實現(xiàn)的組件的布置,例如由應(yīng)用程序?qū)S眉呻娐?asic)或現(xiàn)場可編程門陣列(fpga),或者例如,作為硬件和軟件的組合,如由微處理器系統(tǒng)以及一組指令來實現(xiàn)該模塊的功能,這(被執(zhí)行的同時)將微處理器系統(tǒng)轉(zhuǎn)換成專用的設(shè)備。模塊也可實現(xiàn)為兩個的組合,其中,單獨由硬件實現(xiàn)某些功能,并且由硬件和軟件的組合實現(xiàn)其它功能。在某些實施方式中,可以在通用計算機(諸如在上面圖7中更詳細描述的通用計算機)的處理器上執(zhí)行至少一部分模塊,以及在某些情況下,執(zhí)行所有的模塊。因此,每個模塊可實現(xiàn)為各種合適配置,并且不應(yīng)限于本文中例證的任意示例性實施方式。
為了清晰起見,本文中并未公開該方面的所有常規(guī)特征。應(yīng)理解的是,在開發(fā)本公開內(nèi)容的任意實際執(zhí)行過程時,必須做出很多特定于執(zhí)行過程的決定,以便實現(xiàn)開發(fā)者的特定目標,并且這些特定目標將根據(jù)不同執(zhí)行過程和不同開發(fā)者而改變。應(yīng)理解的是,這種開發(fā)努力可能是復(fù)雜且耗時的,但是然而,它是用于了解本公開內(nèi)容的益處的本領(lǐng)域普通技術(shù)人員的工程師的常規(guī)任務(wù)。
此外,應(yīng)理解的是,本文使用的措辭或?qū)I(yè)詞匯用于描述并非限制的目的,使得本說明書的專業(yè)詞匯或措辭由本領(lǐng)域技術(shù)人員結(jié)合相關(guān)領(lǐng)域(多個領(lǐng)域)的技術(shù)人員的知識,根據(jù)本文呈現(xiàn)的教導(dǎo)和引導(dǎo)來解譯。此外,并非被設(shè)計為將說明書或權(quán)利要求中的任何術(shù)語歸因于不常見或特殊的含義,除非明確如此闡述。
本文公開的各個方面包括與本文中經(jīng)由說明指出的已知模塊的現(xiàn)在和將來的已知等同物。此外,盡管已經(jīng)示出和描述方面和應(yīng)用,但是對于了解本公開內(nèi)容的益處的本領(lǐng)域技術(shù)人員來說,顯而易見的是,在不偏離本文公開的概念的情況下,比以上提及的更多變形是可能的。