本文中的披露內(nèi)容總體上涉及防止數(shù)據(jù)丟失的保護(hù),并且更具體地涉及一種用于抵制非授權(quán)訪問麥克風(fēng)數(shù)據(jù)的系統(tǒng)和方法。
背景技術(shù):
在現(xiàn)代世界,用戶遇到許多網(wǎng)絡(luò)威脅,其中之一就是非授權(quán)訪問用戶麥克風(fēng)以達(dá)到竊聽目的。為了實現(xiàn)對用戶計算機(jī)上運行的部分進(jìn)程的麥克風(fēng)數(shù)據(jù)訪問控制,有必要對操作系統(tǒng)中的某些請求進(jìn)行過濾或者獲得對請求數(shù)據(jù)上下文的訪問以識別請求訪問的進(jìn)程,以便阻止那些非授權(quán)訪問的進(jìn)程。在windowsxp以及更老的操作系統(tǒng)中,經(jīng)借助于截取“ksmixer.sys”內(nèi)核組件(windows內(nèi)核流式技術(shù))域中的流量解決了這一功能。讀取被截取的流量的框架中的麥克風(fēng)數(shù)據(jù)的請求已經(jīng)通過了讀取麥克風(fēng)數(shù)據(jù)的進(jìn)程的上下文中的特定過濾器。
隨著windowsvista系統(tǒng)的出現(xiàn),開發(fā)了一種由許多內(nèi)核組件和用戶模式組成的新架構(gòu)wasapi,其中雖然所有的音頻流量都通過在端口驅(qū)動程序“portcls.sys”上注冊的新音頻驅(qū)動程序的私有com接口,但是windows內(nèi)核流式技術(shù)保留在“基本變量(basicvariant)”下。這些音頻驅(qū)動程序可以實現(xiàn),成使得在直接存取存儲器(dma)控制器的幫助下,音頻流量一旦在用戶模式緩沖區(qū)中時就立即結(jié)束,即不涉及處理器或任何補(bǔ)充代碼。這個緩沖區(qū)被映射到受保護(hù)的進(jìn)程“audiodg.exe”中,在處理器的幫助下,數(shù)據(jù)從該進(jìn)程上拷貝到同一進(jìn)程“audiodg.exe”上下文的用戶進(jìn)程的緩沖區(qū)中。也就是說,從windowsvista系統(tǒng)開始,windows內(nèi)核流式技術(shù)中的控制過濾器已經(jīng)變得完全不適合了。
由于上述原因,需要出現(xiàn)一種能夠從鏈接到進(jìn)程(該進(jìn)程從該麥克風(fēng)讀取數(shù)據(jù))上下文的麥克風(fēng)中截取音頻流量的方法,以便保護(hù)音頻數(shù)據(jù)傳輸。
技術(shù)實現(xiàn)要素:
披露了一種用于通過將音頻數(shù)據(jù)從麥克風(fēng)傳輸?shù)竭M(jìn)程來抵制非授權(quán)訪問音頻數(shù)據(jù)的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品。
根據(jù)一個示例性方面,披露了一種用于防止非授權(quán)訪問音頻數(shù)據(jù)的方法。在這個方面,該方法包括通過audiodg.exe進(jìn)程將從音頻端點設(shè)備接收的音頻數(shù)據(jù)存儲在數(shù)據(jù)緩沖區(qū)中;在計算機(jī)的存儲器中安裝與音頻會話相關(guān)聯(lián)的軟件驅(qū)動程序,該軟件驅(qū)動程序被配置成用于防止未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻數(shù)據(jù);通過該計算機(jī)的處理器從請求訪問存儲在該數(shù)據(jù)緩沖區(qū)中的該音頻數(shù)據(jù)的軟件應(yīng)用程序接收進(jìn)程標(biāo)識符數(shù)據(jù);通過該處理器確定請求訪問該音頻數(shù)據(jù)的該應(yīng)用程序是否是未經(jīng)授權(quán)的軟件應(yīng)用程序;并且通過該處理器控制該軟件驅(qū)動程序以防止所確定的未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻數(shù)據(jù)。
根據(jù)另一個示例性方面,該方法包括當(dāng)確定請求訪問該音頻數(shù)據(jù)的該應(yīng)用程序是未經(jīng)授權(quán)的軟件應(yīng)用程序時,通過該軟件驅(qū)動程序?qū)⒃撘纛l數(shù)據(jù)轉(zhuǎn)換成多個零。
根據(jù)另一個示例性方面,該方法包括通過該處理器監(jiān)視并且截取來自該軟件應(yīng)用程序的、用于訪問存儲在該數(shù)據(jù)緩沖區(qū)中的該音頻數(shù)據(jù)的請求。
根據(jù)另一個示例性方面,確定請求訪問該音頻數(shù)據(jù)的該應(yīng)用程序是否是未經(jīng)授權(quán)的軟件應(yīng)用程序包括以下各項中的至少一項:監(jiān)視做出請求的該應(yīng)用程序的活動以確定該應(yīng)用程序是可信任的還是不可信任的;通過訪問已知病毒簽名數(shù)據(jù)庫并且比較做出請求的該應(yīng)用程序的簽名來掃描做出請求的該應(yīng)用程序;并且從用戶接收是否準(zhǔn)許做出請求的該應(yīng)用訪問該音頻數(shù)據(jù)的命令。
根據(jù)另一個示例性方面,該方法包括將從該音頻端點設(shè)備接收的該音頻數(shù)據(jù)直接存儲在該數(shù)據(jù)緩沖區(qū)中;以及通過該軟件驅(qū)動程序僅準(zhǔn)許訪問該音頻數(shù)據(jù)。
根據(jù)另一個示例性方面,該方法包括如果請求訪問該音頻數(shù)據(jù)的該應(yīng)用程序是經(jīng)授權(quán)的軟件應(yīng)用程序,則指示該軟件驅(qū)動準(zhǔn)許訪問該音頻數(shù)據(jù);通過該軟件驅(qū)動程序?qū)⒃撘纛l數(shù)據(jù)作為音頻流進(jìn)行處理;并且通過該軟件驅(qū)動程序?qū)⒃撘纛l數(shù)據(jù)傳輸給所確定的經(jīng)授權(quán)的軟件應(yīng)用程序。
在該存儲器中安裝分別與該音頻會話中的多個音頻流相關(guān)聯(lián)的多個軟件驅(qū)動程序,這些軟件驅(qū)動程序被配置成用于分別防止未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻流;通過該處理器接收從請求訪問該多個音頻流之一的至少一個軟件應(yīng)用程序接收進(jìn)程標(biāo)識符數(shù)據(jù);通過該處理器確定請求訪問該音頻流的該至少一個應(yīng)用程序是否是未經(jīng)授權(quán)的軟件應(yīng)用程序;以及通過該處理器控制對應(yīng)的該軟件驅(qū)動程序以防止所確定的未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻流。
根據(jù)另一個示例性方面,披露了一種用于防止對音頻數(shù)據(jù)的非授權(quán)訪問的系統(tǒng)。在這個方面,該系統(tǒng)包括數(shù)據(jù)緩沖區(qū);存儲器;以及處理器,該處理器被配置成用于:通過audiodg.exe進(jìn)程將從音頻端點設(shè)備接收的音頻數(shù)據(jù)存儲在該數(shù)據(jù)緩沖區(qū)中;在該存儲器中安裝與音頻會話相關(guān)聯(lián)的軟件驅(qū)動程序,該軟件驅(qū)動程序被配置成用于防止未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻數(shù)據(jù);從請求訪問存儲在該數(shù)據(jù)緩沖區(qū)中的該音頻數(shù)據(jù)的軟件應(yīng)用程序接收進(jìn)程標(biāo)識符數(shù)據(jù);確定請求訪問該音頻數(shù)據(jù)的該應(yīng)用程序是否是未經(jīng)授權(quán)的軟件應(yīng)用程序;以及控制該軟件驅(qū)動程序以防止所確定的未經(jīng)授權(quán)的軟件應(yīng)用程序訪問該音頻數(shù)據(jù)。
以上示例方面的簡要概述用于提供對本公開的基本理解。此概述不是所有的設(shè)想的方面的廣泛概要并且不旨在標(biāo)識所有方面的關(guān)鍵要素或重要要素也不界定本公開的任何或所有方面的范圍。該概述的唯一目的是以簡化的形式呈現(xiàn)一個或多個方面作為之后披露內(nèi)容的更加詳細(xì)說明的序言。為了實現(xiàn)上述目的,本公開的一個或多個方面包括權(quán)利要求書中描述的特征以及指出的示例。
附圖說明
結(jié)合在本說明書中并構(gòu)成本說明書一部分的附圖,展示了本公開的一個或多個示例性方面,并且與詳細(xì)說明一起用于解釋其原理以及實現(xiàn)方式。
圖1展示了windows音頻棧的新高級模型的框圖。
圖2展示了根據(jù)一個示例性方面的音頻子系統(tǒng)的框圖。
圖3展示了根據(jù)一個示例性方面的用于抵制對麥克風(fēng)數(shù)據(jù)的非授權(quán)訪問的系統(tǒng)的框圖。
圖4展示了根據(jù)一個示例性方面的用于抵制對麥克風(fēng)數(shù)據(jù)的非授權(quán)訪問的方法的流程圖。
圖5展示了通用計算機(jī)系統(tǒng)的示例,所披露的系統(tǒng)和方法能夠在該系統(tǒng)上實現(xiàn)。
具體實施方式
在用于通過將音頻數(shù)據(jù)從麥克風(fēng)傳輸?shù)竭M(jìn)程來抵制非授權(quán)訪問音頻數(shù)據(jù)的系統(tǒng)、方法和計算機(jī)程序產(chǎn)品的上下文中,本文中描述了多個示例方面。本領(lǐng)域技術(shù)人員將認(rèn)識到以下說明僅是說明性的,而不旨在以任何方式進(jìn)行限制。對于從本公開受益的本領(lǐng)域技術(shù)人員而言,其他方面將很容易想到。現(xiàn)將詳細(xì)參考如在附圖中所示的示例性方面的實現(xiàn)方式。將盡可能的在全部附圖以及以下的說明中使用相同的參考指示符來指代相同或相似的項。
為了提高可靠性并且簡化使用音頻數(shù)據(jù)工作的應(yīng)用的開發(fā),微軟已經(jīng)有重要意義地重新開發(fā)了音頻棧,該音頻棧用于從windowsvista開始的現(xiàn)代操作系統(tǒng)。圖1示出了新音頻棧的高級模型的框圖。這個模型的基礎(chǔ)組件在以下列出并且進(jìn)行了描述。應(yīng)該理解的是,圖1中給出的組件列表不詳盡,只包括在本公開的背景下使用的組件和/或?qū)τ诶斫庠谠撔乱纛l棧模型的背景下使用音頻數(shù)據(jù)的工作原理而言重要的組件。
windows音頻會話api(“wasapi101”)是允許控制應(yīng)用100與音頻端點設(shè)備107之間的音頻數(shù)據(jù)流的軟件接口。出于本公開的目的,術(shù)語“音頻端點設(shè)備”、“音頻終端設(shè)備”、或“音頻端點”同時使用并且可以認(rèn)為是例如根據(jù)一個方面的麥克風(fēng)。應(yīng)進(jìn)一步了解,該麥克風(fēng)可以嵌入與之連接的音頻適配器中,或者該麥克風(fēng)可以與usb適配器連接或者與設(shè)備連接,該設(shè)備進(jìn)而與該適配器連接。
在任一種情況下,每個音頻流是音頻會話的一部分,該音頻會話是應(yīng)用100與特定音頻端點設(shè)備107(如麥克風(fēng)108)之間的所有音頻流的組合。windows操作系統(tǒng)使得有可能單獨處理音頻會話中的每個流,并且還控制整個音頻會話中的某些參數(shù),如音量。應(yīng)注意的是,音頻會話可以僅由音頻數(shù)據(jù)渲染流或音頻數(shù)據(jù)捕獲流構(gòu)成。在本公開的上下文中,只考慮音頻數(shù)據(jù)捕獲流。應(yīng)用100可以使用兩種模式的wasapi軟件接口:wasapi共享和wasapi獨占。一個應(yīng)用程序使用獨占模式阻止了所有其他應(yīng)用程序?qū)σ纛l端點設(shè)備的訪問。共享模式的使用允許應(yīng)用100獲得對同一個音頻端點設(shè)備107同時訪問。windows音頻設(shè)備圖形隔離程序(audiodevicegraphisolation)103組件用于組織對來自一個音頻端點設(shè)備107的音頻數(shù)據(jù)的共享訪問。
windows音頻設(shè)備圖形隔離程序103是被設(shè)計成用于將來自音頻端點設(shè)備107的音頻數(shù)據(jù)傳遞到應(yīng)用100的音頻棧組件,并且其使得可以只使用中央處理器的資源在單個音頻會話過程中進(jìn)行音頻流數(shù)據(jù)的各種變換。例如,windows音頻設(shè)備圖形隔離程序103可以將來自不同應(yīng)用的音頻流置于在windows設(shè)置中指示的相同形式,即,相同的通道數(shù)量、數(shù)字化頻率和量化程度,或者該音頻設(shè)備圖形隔離程序可以進(jìn)行音頻流混合,并且在音頻數(shù)據(jù)捕獲流的情況下,該音頻設(shè)備圖形隔離程序可以拷貝該音頻數(shù)據(jù)捕獲流以傳輸給各個應(yīng)用100。windows音頻設(shè)備圖形隔離程序103被實現(xiàn)成在用戶模式下開始的受保護(hù)進(jìn)程“audiodg.exe”。
windows音頻服務(wù)104是windows操作系統(tǒng)中的、被設(shè)計成用于創(chuàng)建并且控制音頻數(shù)據(jù)流的服務(wù)。這個音頻棧組件允許應(yīng)用100與受保護(hù)進(jìn)程“audiodg.exe”進(jìn)行交互,對于該進(jìn)程的直接訪問限制在其一部分上。windows音頻服務(wù)104還是實現(xiàn)windows音頻策略的組件,該音頻策略包括有待在操作系統(tǒng)內(nèi)應(yīng)用于音頻流的規(guī)則集,這些音頻流在音頻會話內(nèi)在共享模式下是可訪問的。
音頻驅(qū)動程序106是正在描述的音頻棧模型內(nèi)的中間層,包括維持所述音頻棧的架構(gòu)的各個系統(tǒng)驅(qū)動程序的組合,并且還包括允許支持其他制造商的組件的驅(qū)動程序。例如,對于連接到pci和pciexpress總線上的音頻適配器而言,在windows操作系統(tǒng)中提供“端口類”(“portclass”)(portcls.sys)系統(tǒng)驅(qū)動程序,包括一組端口驅(qū)動程序以實現(xiàn)各種音頻適配器功能。并且在連接到usb總線音頻適配器的情況下,在windows操作系統(tǒng)中提供“avstream”類(ks.sys)系統(tǒng)驅(qū)動程序以及“usb音頻”類(usbaudio.sys)驅(qū)動程序。在音頻驅(qū)動程序106的中間層內(nèi)實現(xiàn)的新音頻棧模型的主要特性在于實現(xiàn)了微軟波實時(wavert)(microsoftwaverealtime)技術(shù),該技術(shù)允許音頻端點設(shè)備在用戶模式下直接將音頻數(shù)據(jù)記錄在緩沖區(qū)中,而無需涉及中央處理器,由受保護(hù)進(jìn)程“audiodg.exe”將該數(shù)據(jù)從該緩沖區(qū)中讀出,從而實現(xiàn)windows音頻設(shè)備圖形隔離程序組件103。就操作系統(tǒng)而言,從其他進(jìn)程訪問這個緩沖區(qū)是被禁止的并且是受控制的。
本公開中的音頻端點設(shè)備107是位于音頻數(shù)據(jù)傳輸通道的一端的設(shè)備,該傳輸通道開始或結(jié)束于應(yīng)用程序100。音頻端點設(shè)備的示例可以包括(但不限于)麥克風(fēng)108、耳機(jī)、聲學(xué)揚聲器或cd播放機(jī)。音頻端點設(shè)備107可以連接到音頻視頻器上或作為音頻適配器的一部分。
微軟音頻端點構(gòu)建程序105是windows操作系統(tǒng)的被設(shè)計成用于檢測新音頻端點設(shè)備107的服務(wù),并且還跟蹤現(xiàn)有設(shè)備并對其進(jìn)行控制。
windows設(shè)備列舉102是軟件接口,這些軟件接口允許應(yīng)用100與微軟音頻端點構(gòu)建程序服務(wù)105進(jìn)行交互以獲得關(guān)于現(xiàn)有音頻端點設(shè)備107以及這些設(shè)備在音頻數(shù)據(jù)渲染或捕獲時的使用的信息。
以下說明考慮某些音頻棧組件,這些組件構(gòu)成windows操作系統(tǒng)的音頻子系統(tǒng),在音頻子系統(tǒng)中實現(xiàn)本公開。在圖2中展示了所述音頻子系統(tǒng)的框圖。如圖所示,這個圖描述了一種情形:提供了在音頻會話中在共享模式(wasapi共享)下進(jìn)行訪問的進(jìn)程200,該音頻會話由從音頻端點設(shè)備(麥克風(fēng)206)接收的音頻數(shù)據(jù)捕獲流組成。在這個圖的上下文中,進(jìn)程200的概念意味著在給定時刻執(zhí)行的應(yīng)用。如果應(yīng)用程序是被動指令集,則進(jìn)程是這些指令的立即執(zhí)行。每個進(jìn)程具有唯一標(biāo)識符、進(jìn)程id(簡稱pid),給定的進(jìn)程可以用該標(biāo)識符來標(biāo)識。
實現(xiàn)用于抵制對麥克風(fēng)數(shù)據(jù)的非授權(quán)訪問的系統(tǒng)和方法的主要困難在于以下事實,在進(jìn)程與音頻端點設(shè)備之間循環(huán)的所有音頻流是單一受保護(hù)進(jìn)程“audiodg.exe”的上下文,該進(jìn)程實現(xiàn)微軟音頻設(shè)備圖形隔離程序組件202。由于該進(jìn)程受保護(hù),即,關(guān)于這個進(jìn)程有訪問權(quán)限制,因此當(dāng)執(zhí)行許多操作時,通過使用用戶模式的標(biāo)準(zhǔn)api功能與這個進(jìn)程進(jìn)行交互是不可能的。從而,使用用戶模式的標(biāo)準(zhǔn)api功能的另一個進(jìn)程不能請求與進(jìn)程“audiodg.exe”的內(nèi)部數(shù)據(jù)有關(guān)的信息。對于每個進(jìn)程200與實現(xiàn)微軟音頻設(shè)備圖形隔離程序組件202的受保護(hù)進(jìn)程“audiodg.exe”的交互而言,操作系統(tǒng)的微軟音頻服務(wù)201創(chuàng)建專用的跨進(jìn)程緩沖區(qū)207,通過該專用的跨進(jìn)程緩沖區(qū)207,該將音頻數(shù)據(jù)從音頻端點設(shè)備205之一(如麥克風(fēng)206)傳輸。如上所述,跟蹤并添加音頻端點設(shè)備205是在操作系統(tǒng)的windows微軟音頻端點構(gòu)建程序服務(wù)204的幫助下完成。
該音頻端點設(shè)備(如麥克風(fēng)206)與受保護(hù)進(jìn)程audiodg.exe202的交互還通過專用緩沖區(qū)203發(fā)生,該專用緩沖區(qū)在用戶模式下是可訪問的。該音頻數(shù)據(jù)直接從麥克風(fēng)206轉(zhuǎn)移到緩沖區(qū)203而無需涉及中央處理器,并且然后由微軟音頻設(shè)備圖形隔離程序組件202讀出,并且反之亦然,只使用中央處理器的資源(即通過軟件)處理該音頻數(shù)據(jù)而無需涉及音頻適配器的資源,其中音頻端點設(shè)備205連接到該音頻適配器上或者它們形成該音頻適配器的一部分。
在已經(jīng)從緩沖區(qū)203讀出的音頻數(shù)據(jù)將被傳輸?shù)竭M(jìn)程200之前,該音頻數(shù)據(jù)要經(jīng)過windows音頻設(shè)備圖形隔離程序組件202的處理。windows音頻設(shè)備圖形隔離程序組件202的主要任務(wù)是將來自音頻端點設(shè)備(麥克風(fēng)206)的音頻數(shù)據(jù)傳遞到進(jìn)程100、以及在單一音頻會話過程中對音頻流數(shù)據(jù)進(jìn)行各種變換。對音頻流數(shù)據(jù)進(jìn)行變換是在上述wavert技術(shù)的小型端口驅(qū)動程序(被稱為音頻處理對象(apo))的幫助下完成的。區(qū)分兩種類型的音頻處理對象:縮寫為gfxapo212的全局效應(yīng)和縮寫為lfxapo211的局部效應(yīng)。在由音頻數(shù)據(jù)捕獲流組成的音頻會話的上下文中,全局效應(yīng)音頻處理對象gfxapo212用于從麥克風(fēng)206接收的傳入音頻流。然后,對于已經(jīng)請求創(chuàng)建來自windows音頻服務(wù)201的音頻流的每個進(jìn)程200而言,創(chuàng)建獨立的音頻流是由windows音頻設(shè)備圖形隔離程序組件202通過拷貝在全局效應(yīng)音頻處理對象gfxapo212的幫助下處理的傳入流來完成的。
根據(jù)一個示例性方面,每個獨立的音頻流對應(yīng)于一個單一進(jìn)程并且在局部效應(yīng)音頻處理對象lfxapo211的幫助下被處理。已經(jīng)加載了windows音頻設(shè)備圖形隔離程序(即audiodg.exe)的lfxapo211將音頻數(shù)據(jù)記錄在緩沖區(qū)中,其中這些音頻數(shù)據(jù)由應(yīng)用從該緩沖區(qū)中讀出。如以上指出的,audiodg.exe是受保護(hù)進(jìn)程,該進(jìn)程使得該系統(tǒng)和方法能夠僅僅通過windows音頻服務(wù)專用服務(wù)(即“audiosrv.exe”)與audiodg.exe進(jìn)程進(jìn)行交互。從而,為了創(chuàng)建音頻流,應(yīng)用程序訪問audiosrv服務(wù),該服務(wù)進(jìn)而在處理請求創(chuàng)建新音頻流的id應(yīng)用程序的同時發(fā)送指令從而為該應(yīng)用程序分配新的線程。
根據(jù)一個示例性方面,用于每個獨立音頻流的局部效應(yīng)音頻處理對象lfxapo211的數(shù)量可以是相同的或不同的。在局部效應(yīng)音頻處理對象lfxapo211的幫助下使用每個獨立的音頻流的數(shù)據(jù)進(jìn)行的操控的性質(zhì)也可以不同,因為音頻數(shù)據(jù)處理對象的參數(shù)可以被實時控制。對于每個進(jìn)程而言,局部效應(yīng)音頻處理對象lfxapo211可以被單獨激活,這將引起局部效應(yīng)音頻處理對象lfxapo211被添加到與給定進(jìn)程相對應(yīng)的音頻流上。對于每個進(jìn)程而言,局部效應(yīng)音頻處理對象lfxapo211可以被單獨解除激活,這將引起局部效應(yīng)音頻處理對象lfxapo211從與給定進(jìn)程對應(yīng)的音頻流中去除。以wavert小型端口驅(qū)動程序的形式實現(xiàn)局部效應(yīng)音頻處理對象lfxapo211,其中這些小型端口驅(qū)動程序安裝在操作系統(tǒng)中并且通過將對應(yīng)記錄添加到系統(tǒng)注冊表上來與每個特定音頻端點設(shè)備205相關(guān)地注冊,之后,局部效應(yīng)音頻處理對象lfxapo211將由音頻子系統(tǒng)自動安裝以便處理與音頻端點設(shè)備相關(guān)的每個新音頻流,其中給定局部效應(yīng)音頻處理對象lfxapo211是針對該音頻流注冊的。
為了使在共享訪問模式(wasapi共享)下的進(jìn)程接收對來自麥克風(fēng)206的音頻數(shù)據(jù)的訪問,該進(jìn)程制定請求并將其發(fā)送至windows音頻服務(wù)201。這個請求包括各種參數(shù),包括進(jìn)程標(biāo)識符(pid)。windows音頻服務(wù)201制定創(chuàng)建新數(shù)據(jù)流的遠(yuǎn)程過程調(diào)用(rpc)請求并且將其發(fā)送到windows音頻設(shè)備圖形隔離程序組件202,從而傳輸這個rpc請求中的參數(shù)當(dāng)中的進(jìn)程標(biāo)識符(pid),該進(jìn)程標(biāo)識符請求創(chuàng)建該音頻流。windows音頻服務(wù)201創(chuàng)建專用跨進(jìn)程緩沖區(qū)207,其中通過該緩沖區(qū)音頻數(shù)據(jù)從麥克風(fēng)206傳輸?shù)揭呀?jīng)請求創(chuàng)建音頻流的進(jìn)程中。windows音頻設(shè)備圖形隔離程序202進(jìn)而創(chuàng)建與上述專用緩沖區(qū)207相關(guān)的獨立音頻流,其中通過該緩沖區(qū)音頻數(shù)據(jù)被傳輸?shù)揭呀?jīng)請求創(chuàng)建給定音頻流的進(jìn)程。并且最后,音頻子系統(tǒng)安裝為麥克風(fēng)206注冊的局部效應(yīng)音頻處理對象lfxapo211,用于處理創(chuàng)建的音頻流。
圖3展示了用于抵制非授權(quán)訪問麥克風(fēng)數(shù)據(jù)的系統(tǒng)的示例性方面。這個系統(tǒng)由圖2所示的上述音頻子系統(tǒng)、以及用于控制對麥克風(fēng)數(shù)據(jù)的訪問并集成在所述音頻子系統(tǒng)中的子系統(tǒng)這兩個子系統(tǒng)組成。該音頻子系統(tǒng)可以包括音頻流控制模塊301(其中進(jìn)程使用該音頻流控制模塊通過api功能進(jìn)行交互以創(chuàng)建和控制音頻流),并且根據(jù)一個方面可以是windows音頻服務(wù)201。此外,該音頻子系統(tǒng)可以包括音頻流混合和處理模塊302,該音頻流混合與處理模塊被配置成用于混合應(yīng)用與音頻端點設(shè)備之間的音頻流并且還用于在過濾器的幫助下處理音頻流(在一個示例性方面,該模塊可以是受保護(hù)進(jìn)程:windows音頻設(shè)備圖形隔離程序202)。此外,該音頻子系統(tǒng)可以包括被配置成用于添加和跟蹤音頻端點設(shè)備的音頻端點設(shè)備控制模塊306,在一個示例性方面,該模塊可以是windows音頻端點構(gòu)建程序服務(wù)204。
用于控制對麥克風(fēng)數(shù)據(jù)的訪問的子系統(tǒng)可以包括rpc流量過濾模塊310、音頻流阻止模塊311和訪問授權(quán)模塊312。rpc流量過濾模塊310被配置成用于監(jiān)視音頻流控制模塊301與音頻流混合與處理模塊302之間的rpc流量,以便檢測創(chuàng)建與音頻端點設(shè)備(即麥克風(fēng))相關(guān)的音頻流的rpc請求并且確定進(jìn)程標(biāo)識符(pid)(其中針對該進(jìn)程標(biāo)識符,請求創(chuàng)建音頻流)。這種設(shè)計使得有可能解決上述對于從麥克風(fēng)305接收音頻數(shù)據(jù)的進(jìn)程300進(jìn)行標(biāo)識的問題,即在進(jìn)程300與麥克風(fēng)305之間循環(huán)的所有音頻流是單一受保護(hù)進(jìn)程“audiodg.exe”(音頻流混合與處理模塊302)的上下文。
音頻流阻止模塊311被安裝用于來自與音頻端點設(shè)備(即麥克風(fēng)305)相關(guān)的音頻會話的每個新音頻流,作為音頻流混合與處理模塊302中的局部效應(yīng)音頻處理對象lfxapo211。在一個示例性方面,音頻流阻止模塊311是驅(qū)動程序的形式,如wavert小型端口驅(qū)動程序。該音頻子系統(tǒng)自動安裝用于音頻會話(該音頻會話與一組音頻端點設(shè)備304中的每個音頻端點設(shè)備相關(guān),其中針對這些音頻端點設(shè)備,音頻流阻止模塊311被注冊成局部效應(yīng)音頻處理對象lfxapo211)中的每個新音頻流的音頻流阻止模塊311。在一個示例性方面,上一句中提到的音頻流阻止模塊311的自動安裝是由音頻流混合與處理模塊302完成的。安裝之后,音頻流阻止模塊311向訪問授權(quán)模塊312發(fā)送請求從而關(guān)于是否準(zhǔn)予訪問音頻流數(shù)據(jù)而對進(jìn)程(其中給定的音頻流阻止模塊311是針對該進(jìn)程安裝的)的授權(quán)進(jìn)行檢查。
為了進(jìn)行檢查,訪問授權(quán)模塊312從rpc流量過濾模塊310接收或請求進(jìn)程標(biāo)識符(其中針對該標(biāo)識符,請求所述授權(quán)檢查)。應(yīng)注意的是,音頻流阻止模塊311不具有關(guān)于音頻流對應(yīng)于哪個進(jìn)程的信息(其中該音頻流阻止模塊是針對該音頻流安裝的)。rpc流量過濾模塊310也不具有這種信息。音頻流阻止模塊311發(fā)送的請求與rpc流量過濾模塊310獲得的進(jìn)程標(biāo)識符的協(xié)調(diào)(相當(dāng)于將該音頻流與該進(jìn)程協(xié)調(diào))由訪問授權(quán)模塊312完成,。
音頻流阻止模塊311的主要用途是防止未經(jīng)授權(quán)的進(jìn)程訪問音頻流數(shù)據(jù)。為此,音頻流阻止模塊311將該音頻流數(shù)據(jù)調(diào)零(其中針對該音頻流數(shù)據(jù),請求創(chuàng)建音頻流的進(jìn)程被發(fā)現(xiàn)沒有被訪問授權(quán)模塊312授權(quán))。
訪問授權(quán)模塊312與rpc流量過濾模塊310和音頻流阻止模塊311相連并且被設(shè)計成用于通過用于訪問與該音頻端點設(shè)備(如麥克風(fēng)305)相關(guān)的音頻流數(shù)據(jù)的前述進(jìn)程標(biāo)識符進(jìn)行進(jìn)程授權(quán)檢查。該進(jìn)程授權(quán)模塊可以獨立進(jìn)行進(jìn)程授權(quán)檢查以獲得對與該組音頻端點設(shè)備304中的音頻端點設(shè)備相關(guān)的音頻流數(shù)據(jù)的訪問,并且同時還可以將與受檢查的進(jìn)程相關(guān)的請求發(fā)送給一個或多個其他的安全模塊。
具體地,根據(jù)一個示例性方面,該進(jìn)程授權(quán)模塊可以查詢與其對特定進(jìn)程的評估相關(guān)的特定模塊,并且可以基于該模塊的響應(yīng)確定響應(yīng)。例如,將進(jìn)程授權(quán)模塊pid傳遞給防病毒模塊,該防病毒模塊可以返回關(guān)于該進(jìn)程是可信任進(jìn)程還是“未感染”進(jìn)程的信息,或者可替代地,如果防病毒模塊是未知的,這個進(jìn)程可以進(jìn)行一系列與該進(jìn)程有關(guān)的測量并掃描該進(jìn)程中的惡意代碼并且返回結(jié)果。從而,根據(jù)這一方面,該進(jìn)程授權(quán)模塊可以將請求發(fā)送給任何本地或遠(yuǎn)程安全模塊,該安全模塊用pid指示該進(jìn)程并且請求關(guān)于特定進(jìn)程評估該模塊的判定。這些模塊可以是防病毒模塊、hips模塊(應(yīng)用程序控制)、防火墻、系統(tǒng)監(jiān)視器以及本領(lǐng)域技術(shù)人員已知的可以訪問進(jìn)程的任何其他模塊。在從這個進(jìn)程的判定接收到一組模塊之后,該進(jìn)程授權(quán)模塊pam僅僅授權(quán)所有判定都是“這個進(jìn)程沒有惡意”的那些進(jìn)程。
根據(jù)一個示例性方面,其他的安全模塊可以包括用于控制進(jìn)程活動的模塊,就進(jìn)程而言,該模塊被設(shè)計成用于調(diào)節(jié)動作,如訪問文件系統(tǒng)、訪問系統(tǒng)注冊表、或與其他進(jìn)程進(jìn)行交互,將所有進(jìn)程劃分成:可信任的進(jìn)程、不可信任的進(jìn)程、具有較弱限制的進(jìn)程和具有較強(qiáng)限制的進(jìn)程。根據(jù)另一個方面,其他的安全模塊可以進(jìn)一步包括防病毒模塊,該防病毒模塊被設(shè)計成用于在簽名數(shù)據(jù)庫(已知病毒和其他惡意應(yīng)用的描述)的幫助下尋找病毒并且用于去除或隔離相應(yīng)對象以及與其相關(guān)的數(shù)據(jù)。根據(jù)另一個方面,其他的安全模塊可以進(jìn)一步包括威脅中性化模塊,該威脅中性化模塊被配置成用于檢測不想要的內(nèi)容、實時發(fā)現(xiàn)攻擊或威脅、采取措施以關(guān)閉任何可疑進(jìn)程、阻止互聯(lián)網(wǎng)流量并且還將該系統(tǒng)恢復(fù)到其上次已知安全條件。根據(jù)又另一方面,其他的安全模塊可以進(jìn)一步包括用戶反饋模塊,該用戶反饋模塊可以提醒用戶關(guān)于進(jìn)程訪問麥克風(fēng)數(shù)據(jù)的所有嘗試,使得用戶可以選擇是否允許給定進(jìn)程訪問麥克風(fēng),并且該用戶反饋模塊還可以為用戶提供針對所有進(jìn)程默認(rèn)阻止訪問麥克風(fēng)的選項。
從而,訪問授權(quán)模塊312可以基于來自外部安全模塊的判定來將進(jìn)程識別為未授權(quán)的進(jìn)程。例如,如果進(jìn)程是惡意的或者如果進(jìn)程未被用戶授權(quán)訪問麥克風(fēng)數(shù)據(jù),該進(jìn)程可以被標(biāo)識為未授權(quán)的進(jìn)程。
在一個示例性方面,在一組音頻端點設(shè)備304上添加一個新音頻端點設(shè)備,接著將進(jìn)程授權(quán)模塊312與音頻端點設(shè)備控制模塊306連接。對于每個新音頻端點設(shè)備而言,訪問授權(quán)模塊312進(jìn)行音頻流阻止模塊311的注冊,該音頻流阻止模塊被注冊為局部效應(yīng)音頻處理對象lfxapo211。在另一示例性方面,訪問授權(quán)模塊312防止改變以及去除該系統(tǒng)注冊的所有記錄,在該系統(tǒng)注冊中,音頻流阻止模塊311被列為局部效應(yīng)音頻處理對象lfxapo211。
圖4展示了用于抵制非授權(quán)訪問麥克風(fēng)數(shù)據(jù)的方法的示例性方面的框圖。根據(jù)這個框圖,在步驟401中,在訪問授權(quán)模塊312的幫助下,音頻流阻止模塊311可以作為局部效應(yīng)音頻處理模塊lfxapo被安裝在針對每個音頻端點設(shè)備(麥克風(fēng)305)的音頻流混合與處理模塊302中,該音頻端點設(shè)備被音頻端點設(shè)備控制模塊306考慮在內(nèi)。局部效應(yīng)音頻處理模塊lfxapo用作音頻流混合與處理模塊302,用于與每個音頻端點設(shè)備(即麥克風(fēng)305)相關(guān)的新音頻流,其中該給定的局部效應(yīng)音頻處理模塊lfxapo被安裝用于該音頻端點設(shè)備。
接著,在步驟402中,使用rpc流量過濾模塊310監(jiān)視在音頻流控制模塊301與音頻流混合與處理模塊302之間的rpc流量,發(fā)現(xiàn)創(chuàng)建與音頻端點設(shè)備(麥克風(fēng)305)相關(guān)的音頻流的rpc請求,并且確定進(jìn)程標(biāo)識符,其中前述音頻流的創(chuàng)建是針對該進(jìn)程標(biāo)識符請求的。
在新音頻流創(chuàng)建過程中,音頻流混合與處理模塊302將音頻流的局部效應(yīng)處理模塊lfxapo應(yīng)用在該流上,該局部效應(yīng)處理模塊被安裝用于與新音頻流相關(guān)的音頻端點設(shè)備。在步驟401中,由于對于每個音頻端點設(shè)備(麥克風(fēng))而言,音頻流阻止模塊311被安裝作為音頻流的局部效應(yīng)處理模塊lfxapo,因此這將被應(yīng)用于與該音頻端點設(shè)備(麥克風(fēng))相關(guān)的新音頻流,在步驟403中,在安裝后,音頻流阻止模塊311將立即向訪問授權(quán)模塊312發(fā)送授權(quán)請求。
響應(yīng)于這個請求,在步驟404中,訪問授權(quán)模塊312將使用在步驟402中接收的請求創(chuàng)建該音頻流的該進(jìn)程的標(biāo)識符來檢查是否授權(quán)該進(jìn)程訪問提及的音頻流數(shù)據(jù)?;诓襟E405中的檢查結(jié)果,如果在訪問授權(quán)模塊312的幫助下發(fā)現(xiàn)請求創(chuàng)建所提及的音頻流的該進(jìn)程是未經(jīng)授權(quán)的,則音頻流阻止模塊311將所提及的音頻流的數(shù)據(jù)調(diào)零。
圖5展示了根據(jù)一個示例方面的通用計算機(jī)系統(tǒng)(其可以是個人計算機(jī)或服務(wù)器)的示例,本公開的系統(tǒng)(包括這些模塊中的一個或多個)和方法能夠在該系統(tǒng)上實現(xiàn)。如所示,計算機(jī)系統(tǒng)20可以包括中央處理單元21、系統(tǒng)存儲器22、和將各種系統(tǒng)組件連接的系統(tǒng)總線23,這些組件包括與中央處理單元21相關(guān)聯(lián)的存儲器。系統(tǒng)總線23被實現(xiàn)成類似于從現(xiàn)有技術(shù)可知的任何總線結(jié)構(gòu),進(jìn)而包括總線存儲器或總線存儲器控制器、外圍總線和局部總線,該局部總線能夠與任何其他總線架構(gòu)進(jìn)行交互。該系統(tǒng)存儲器包括只讀存儲器(rom)24與隨機(jī)存取存儲器(ram)25。基本輸入/輸出系統(tǒng)(bios)26包括確保個人計算機(jī)20的元件之間信息傳遞的基本程序,如借助于rom24的使用加載操作系統(tǒng)時的那些基本程序。
個人計算機(jī)20進(jìn)而包括用于數(shù)據(jù)讀出和寫入的硬盤27、用于在可移動磁盤29上讀出和寫入的磁盤驅(qū)動器28和用于在可移除光盤31上讀出和寫入的光盤驅(qū)動器30,如cd-rom、dvd-rom和其他光信息介質(zhì)。硬盤27、磁盤驅(qū)動器28和光驅(qū)30分別通過硬盤接口32、磁盤接口33和光驅(qū)接口34連接到系統(tǒng)總線23上。這些驅(qū)動器和對應(yīng)的計算機(jī)信息介質(zhì)是用于存儲計算機(jī)指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他個人計算機(jī)20的其他數(shù)據(jù)的電源獨立模塊。
本公開提供了使用硬盤27、可移除磁盤29和可移除光盤31的系統(tǒng)的實現(xiàn)方式,但是應(yīng)當(dāng)理解的是,可以采用其他類型的計算機(jī)信息介質(zhì)56,該計算機(jī)信息介質(zhì)能夠以計算機(jī)可讀的形式(固態(tài)驅(qū)動器、閃存卡、數(shù)字磁盤和隨機(jī)訪問存儲器(ram)等)存儲數(shù)據(jù),該計算機(jī)通過控制器55與系統(tǒng)總線23連接。
計算機(jī)20具有文件系統(tǒng)36,記錄的操作系統(tǒng)35存儲在該文件系統(tǒng)中,該文件系統(tǒng)進(jìn)而包含圖2描繪的音頻子系統(tǒng)60和圖3描繪的用于控制麥克風(fēng)數(shù)據(jù)61的訪問的子系統(tǒng),并且還包括額外的程序應(yīng)用37、其他程序模塊38和程序數(shù)據(jù)39。用戶能夠使用輸入設(shè)備(鍵盤40、鼠標(biāo)42)將命令和信息輸入個人計算機(jī)20??梢允褂闷渌斎朐O(shè)備(未示出):麥克風(fēng)、操縱桿、游戲控制器和掃描儀等。這些輸入設(shè)備通常通過串行端口46插入計算機(jī)系統(tǒng)20,該串行端口進(jìn)而與該系統(tǒng)總線相連,但是它們可以以其他方式相連,例如借助于并行端口、游戲端口或通用串行總線(usb)。監(jiān)視器47或其他類型的顯示設(shè)備也經(jīng)由諸如音頻適配器48之類的接口連接至系統(tǒng)總線23。除監(jiān)視器47之外,個人計算機(jī)還可以配備其他外圍輸入設(shè)備(未示出),如揚聲器、打印機(jī)等。
個人計算機(jī)20能夠使用與一個或多個遠(yuǎn)程計算機(jī)49的網(wǎng)絡(luò)連接在網(wǎng)絡(luò)環(huán)境中運行。遠(yuǎn)程計算機(jī)(或計算機(jī))49還是具有在描述如圖5所示的個人計算機(jī)20性質(zhì)中的大部分或所有前述元件的個人計算機(jī)或服務(wù)器。其他設(shè)備還可以存在于計算機(jī)網(wǎng)絡(luò)中,如路由器、網(wǎng)路工作站、對等設(shè)備或其他網(wǎng)絡(luò)節(jié)點。
網(wǎng)絡(luò)連接可以形成局域計算機(jī)網(wǎng)絡(luò)(lan)50,如有線和/或無線網(wǎng)絡(luò)以及廣域計算機(jī)網(wǎng)絡(luò)(wan)。這些網(wǎng)絡(luò)用于企業(yè)計算機(jī)網(wǎng)絡(luò)和內(nèi)部公司網(wǎng)絡(luò),并且這些網(wǎng)絡(luò)通常接入互聯(lián)網(wǎng)。在lan和wan網(wǎng)絡(luò)中,個人計算機(jī)20通過網(wǎng)絡(luò)適配器或網(wǎng)絡(luò)接口51與局域網(wǎng)50連接。當(dāng)使用這些網(wǎng)絡(luò)時,個人計算機(jī)20可以采用用于提供與廣域計算機(jī)網(wǎng)絡(luò)(如互聯(lián)網(wǎng))的通信的調(diào)制解調(diào)器54或其他模塊。是內(nèi)部或外部設(shè)備的調(diào)制解調(diào)器54通過串行端口46與到系統(tǒng)總線23連接。應(yīng)當(dāng)注意的是,這些網(wǎng)絡(luò)連接僅僅是示例而不需要描繪網(wǎng)絡(luò)的精確配置,即,現(xiàn)實中存在其他方式由技術(shù)通信模塊(如藍(lán)牙)建立一個計算機(jī)到另一計算機(jī)的連接。
在各個方面,可以將本文中所描述的系統(tǒng)和方法實現(xiàn)在硬件、軟件、固件、或其任何組合中。如果實現(xiàn)在軟件中,可以在非瞬態(tài)計算機(jī)可讀介質(zhì)上將該方法作為一個或多個指令或代碼存儲。計算機(jī)可讀介質(zhì)包括數(shù)據(jù)存儲空間。例如,但非限制性地,這樣的計算機(jī)可讀介質(zhì)可以包括ram、rom、eeprom、cd-rom、閃存器或其他類型的電子、磁性或光學(xué)存儲介質(zhì)、或可以用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式來攜帶或存儲所期望的程序代碼并可以由通用計算機(jī)的處理器訪問的任何其他介質(zhì)。
如上所述,在各個方面,本公開中所描述系統(tǒng)和方法是就模塊而言的。應(yīng)重述的是,本文中使用的術(shù)語“模塊”指代現(xiàn)實世界的設(shè)備、組件、或用硬件(如專用集成電路(asic)或場可編程門陣列(fpga))實現(xiàn)的組件安排,或者例如作為硬件和軟件的組合,如微處理機(jī)系統(tǒng)和實現(xiàn)模塊的功能的指令集,這些指令集(當(dāng)被執(zhí)行時)將微處理機(jī)系統(tǒng)變換成特殊用途設(shè)備。模塊還可以被實現(xiàn)為具有單獨由硬件促成的某些功能的和具有由硬件和軟件的組合促成的其他功能的兩者的組合。在某些實現(xiàn)方式中,模塊的至少一部分(在一些情況中全部)可以在通用計算機(jī)的處理器(如在以上圖5中更詳細(xì)描述的通用計算機(jī))上執(zhí)行。因此,可以用各種合適的配置實現(xiàn)每個模塊并且不應(yīng)限制于本文舉例說明的任何示例實現(xiàn)方式。
為了清晰,不是這些方面的所有常規(guī)特征都在本文中進(jìn)行了披露。將認(rèn)識到的是,在本公開的任何實際實現(xiàn)方式的發(fā)展中,為了實現(xiàn)開發(fā)者的特定目標(biāo),必須做出許多實現(xiàn)方式特定決策,并且這些特定的目標(biāo)將針對不同的實現(xiàn)方式和不同的開發(fā)者而不同。將認(rèn)識到的是,這樣的開發(fā)工作可能是復(fù)雜并且耗時的,但對于那些從本公開獲益的本領(lǐng)域技術(shù)人員來說這將不過是工程的常規(guī)工作。
另外,應(yīng)理解的是,本文中使用的措辭或術(shù)語是出于描述而非限制性目的,因此本說明書的術(shù)語或措辭將由本領(lǐng)域技術(shù)人員按照本文所介紹的教導(dǎo)和指導(dǎo)與相關(guān)領(lǐng)域技術(shù)人員的知識組合地進(jìn)行解釋。此外,除非明確陳述之外,不旨在將本說明書或權(quán)利要求書中的任何術(shù)語歸為不常見的或特殊的含義。
本文中披露的各個方面包括以視圖的方式所提及的已知模塊的現(xiàn)在和未來已知的等同物。此外,雖然已經(jīng)示出和描述了多個方面和多個應(yīng)用,但是對于從本公開中獲益的本領(lǐng)域技術(shù)人員而言,在不背離本文中披露的創(chuàng)造性概念的情況下,除上述之外的更多修改是可以的。