用于在子系统输出信号中引入变化以防止设备指纹分析的系统和方法
【专利摘要】本发明公开了一种用于在子系统输出信号中引入变化以防止设备指纹分析的计算机实现的方法,所述方法可包括:(1)在计算设备上拦截从所述计算设备上的子系统设备发送到所述计算设备上的软件组件的输出信号,(2)识别所述输出信号的误差范围,(3)通过以一定方式在所述输出信号中引入变化来生成经修改的输出信号,使得(a)所述变化不超过所述输出信号的所述误差范围并且(b)所述经修改的输出信号无法用于识别所述计算设备,以及(4)将所述经修改的输出信号发送到所述软件组件。还公开了各种其他方法、系统和计算机可读介质。
【专利说明】用于在子系统输出信号中引入变化以防止设备指纹分析的系统和方法
【背景技术】
[0001]—些营销和广告组织(以及其他更多恶意方)一直试图找到新的方法来跟踪计算设备的用户。尽管传统的隐私保护工具可以让用户能够对其如何被跟踪有一定控制,但最新研究显示,不利方可能能够根据与用户的计算设备的传感器输出相关的唯一性特征对该计算设备进行指纹分析,从而绕过这些工具。
[0002]例如,研究人员已经证明,许多现代计算设备中存在的各种传感器,诸如加速度计、麦克风、扬声器以及常见于移动电话中的无线电装置,都会在其输出中产生独特且一致的偏差。这些独特的偏差可以继而用于生成计算设备的各种特征图或指纹,这些特征图或指纹可用于唯一地识别和跟踪该设备和/或其用户。
[0003]遗憾的是,传统的隐私保护软件和隐私设置可能无法防止这类跟踪。例如,用户可能能够删除、阻止和/或监视网页浏览器cookies,与此形成对照的是,计算设备上的输出该计算设备所特有的信号的任何传感器或硬件组件可潜在用于对该设备进行指纹分析。对于计算设备供应商、开发者和用户而言,这些漏洞可能存在严重的隐私问题。
[0004]因此,本发明发现并解决了对于防止根据子系统输出信号进行设备指纹分析的更有效且高效的机制的需求。
【发明内容】
[0005]如将在下面更详细地描述,本发明整体涉及用于通过在子系统输出信号中引入随机变化来防止设备指纹分析的系统和方法。在一个例子中,一种用于执行这种任务的计算机实现的方法可包括:(I)在计算设备上拦截从该计算设备上的子系统设备发送到该计算设备上的软件组件的输出信号,(2)识别输出信号的误差范围,(3)通过以一定方式在输出信号中引入变化来生成经修改的输出信号,使得(a)该变化不超过输出信号的误差范围并且(b)经修改的输出信号无法用于识别计算设备,以及(4)将经修改的输出信号发送到软件组件。
[0006]在一些例子中,可使用(I)子系统设备的设备驱动程序和/或(2)子系统设备的固件来生成经修改的输出信号。此外,软件组件可以是计算设备上的应用层的一部分。例如,软件组件可包括(I)操作系统组件和/或(2)应用程序组件。
[0007]在一些实施例中,输出信号的误差范围可包括上限和下限。在这些实施例中,可通过一定方式引入变化,使得(I)该变化不超过误差范围的上限,并且(2)该变化不超过误差范围的下限。在至少一个实施例中,生成经修改的输出信号可包括在输出信号中引入随机生成的变化。在各种例子中,子系统设备可包括(I)换能器、(2)传感器和/或(3)无线电发射器。
[0008]根据一些实施例,一种用于实现上述方法的系统可包括:(I)存储在存储器中的拦截模块,它在计算设备上拦截从该计算设备上的子系统设备发送到该计算设备上的软件组件的输出信号,(2)存储在存储器中的识别模块,它识别输出信号的误差范围,(3)存储在存储器中的修改模块,它通过以一定方式在输出信号中引入变化来生成经修改的输出信号,使得(a)该变化不超过输出信号的误差范围并且(b)经修改的输出信号无法用于识别计算设备,(4)存储在存储器中的传输模块,它将经修改的输出信号发送到软件组件,以及(5)至少一个处理器,它们被配置为执行拦截模块、识别模块、修改模块和传输模块。
[0009]对应的计算机可读介质可包括一个或多个计算机可执行指令,所述计算机可执行指令在被计算设备的至少一个处理器执行时,可致使该计算设备:(I)在计算设备上拦截从该计算设备上的子系统设备发送到该计算设备上的软件组件的输出信号,(2)识别输出信号的误差范围,(3)通过以一定方式在输出信号中引入变化来生成经修改的输出信号,使得(a)该变化不超过输出信号的误差范围并且(b)经修改的输出信号无法用于识别计算设备,以及(4)将经修改的输出信号发送到软件组件。
[0010]来自上述实施例中的任何一者的特征可根据本文所述的一般原理彼此结合地使用。通过结合附图和权利要求阅读下面的详细描述,将会更充分地理解这些和其他实施例、特征和优点。
【附图说明】
[0011]附图示出了多个示例性实施例并且为说明书的一部分。这些附图结合下面的描述展示并且说明本发明的各种原理。
[0012]图1是用于在子系统输出信号中引入变化以防止设备指纹分析的示例性系统的框图。
[0013]图2是用于在子系统输出信号中引入变化以防止设备指纹分析的另一个示例性系统的框图。
[0014]图3是用于在子系统输出信号中引入变化以防止设备指纹分析的示例性方法的流程图。
[0015]图4是被配置为在子系统输出信号中引入变化以防止设备指纹分析的示例性智能电话的框图。
[0016]图5是能够实现本文描述和/或示出的实施例中的一者或多者的示例性计算系统的框图。
[0017]图6是能够实现本文描述和/或示出的实施例中的一者或多者的示例性计算网络的框图。
[0018]在全部附图中,相同引用字符和描述指示类似但未必相同的元件。虽然本文所述的示例性实施例易受各种修改和替代形式的影响,但在附图中以举例的方式示出了特定实施例并且将在本文详细描述。然而,本文所述的示例性实施例并非旨在限于所公开的特定形式。相反,本发明涵盖落在所附权利要求范围内的所有修改形式、等同形式和替代形式。
【具体实施方式】
[0019]本发明整体涉及用于在子系统输出信号中引入变化以防止设备指纹分析的系统和方法。如将在下面更加详细地阐释,通过在从子系统设备发送的输出信号中引入变化,本文所述的系统和方法可防止不利方利用子系统设备输出信号对计算设备进行指纹分析。这可以继而使得设备供应商和软件开发者能够构建一些设备和服务,这些设备和服务受到保护以免遭被设计为绕过传统隐私设置的跟踪机制的损害。此外,为用户提供更多隐私保护的供应商可以提高用户满意度、忠诚度和支持度。
[0020]下面将参考图1至图2来详细描述用于在子系统输出信号中引入变化以防止设备指纹分析的示例性系统。还将结合图3和图4提供对相应计算机实现方法的详细描述。此外,将分别结合图5和图6提供对能够实现本文所述实施例中的一者或多者的示例性计算系统和网络体系结构的详细描述。
[0021]图1是用于在子系统输出信号中引入变化以防止设备指纹分析的示例性系统100的框图。如该图所示,示例性系统100可包括用于执行一个或多个任务的一个或多个模块102。例如,以及如将在下面更加详细地阐释,示例性系统100可包括拦截模块104,该拦截模块在计算设备上拦截从该计算设备上的子系统设备发送到该计算设备上的软件组件的输出信号。示例性系统100还可包括识别模块106,该识别模块识别输出信号的误差范围。
[0022]此外,示例性系统100可包括修改模块108,该修改模块通过以一定方式在输出信号中引入变化来生成经修改的输出信号,使得(I)该变化不超过输出信号的误差范围并且
(2)经修改的输出信号无法用于识别计算设备。示例性系统100还可包括传输模块110,该传输模块将经修改的输出信号发送到软件组件。尽管例示为独立元件,但图1中的模块102中的一者或多者可表示单个模块或应用程序的部分。
[0023]在某些实施例中,图1中的模块102中的一者或多者可表不一个或多个软件应用程序或程序,当通过计算设备执行时所述软件应用程序或程序可使计算设备执行一个或多个任务。例如,以及如将在下面更加详细地描述,模块102中的一者或多者可表示存储在一个或多个计算设备上并且被配置为在所述计算设备上运行的软件模块,所述计算设备诸如图2中的计算设备202、图4中的智能电话406、图5中的计算系统510和/或图6中的示例性网络体系结构600的部分。图1中的模块102中的一者或多者也可表示被配置为执行一个或多个任务的一台或多台专用计算机的全部或部分。
[0024]图1中的示例性系统100可以多种方式来实现。例如,示例性系统100的全部或一部分可表示图2中的示例性系统200的部分。如图2所示,系统200可包括用模块1 2中的全部或一部分编程的计算设备202。
[0025]在一个实施例中,来自图1的模块102中的一者或多者在被计算设备202的至少一个处理器执行时,可使计算设备202能够防止不利方利用计算设备202上的子系统输出信号对计算设备202进行指纹分析。例如,以及如将在下面更加详细地描述,拦截模块104可使计算设备202在计算设备202上拦截从子系统设备208发送到软件组件216的输出信号212。接着,识别模块106可使计算设备202识别包含在误差范围数据210内的误差范围。随后,修改模块108可使计算设备202通过以一定方式在输出信号212中引入变化来生成经修改的输出信号214,使得(I)该变化不超过输出信号212的误差范围并且(2)经修改的输出信号214无法用于识别计算设备202。最后,传输模块110可将经修改的输出信号214发送到软件组件216。
[0026]计算设备202通常表示能够读取计算机可执行指令的任何类型或形式的计算设备。计算设备202的例子包括但不限于笔记本电脑、平板电脑、台式机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、这些设备中一者或多者的组合、图4中的示例性智能电话406、图5中的示例性计算系统510,或任何其他合适的计算设备。
[0027]图3是用于在子系统输出信号中引入变化以防止设备指纹分析的示例性计算机实现方法300的流程图。图3中示出的步骤可通过任何合适的计算机可执行代码和/或计算系统执行。在一些实施例中,图3中示出的步骤可通过图1中的系统100、图2中的系统200、图4中的智能电话406、图5中的计算系统510和/或图6中的示例性网络体系结构600的部分的组件中的一者或多者执行。
[0028]如图3所述,在步骤302处,本文所述的系统中的一者或多者可在计算设备上拦截从该计算设备上的子系统设备发送到该计算设备上的软件组件的输出信号。例如,拦截模块104可作为图2中的计算设备202的一部分,在计算设备202上拦截从子系统设备208发送到软件组件216的输出信号212。
[0029]如本文所用,短语“输出信号”通常指可由计算设备内的子系统设备生成、发送和/或产生的任何类型或形式的信息和/或图案(数字或模拟)。例如,智能电话上的无线电发射器可产生无线电输出信号。相似地,计算设备上的硬件组件集合可在计算设备上的电路中引入独特的电磁干扰模式,并且该干扰模式可被视为“输出信号”。
[0030]在一些实施例中,输出信号可包括计算设备上的传感器所传输的信号。例如,加速度计、麦克风、扬声器等传输的任何类型或形式的输出可代表输出信号。输出信号还可包括计算设备产生的任何类型或形式的声音和/或振动,诸如计算设备上的扬声器产生的声音或者计算设备中的电机引起的振动。例如,来自正记录和/或接收计算设备上的声音和振动的麦克风的频率响应可被视为输出信号。
[0031]输出信号还可包括计算设备传输和/或产生的可被另一硬件设备或软件组件接收的任何类型或形式的信息、信号和/或数据。例如,计算设备上的子系统设备(诸如麦克风)产生的电信号可代表输出信号。在另一个例子中,输出信号可包括计算电路内的可检测到的小电压波动模式。输出信号的其他例子包括但不限于无线电信号(例如,由手机上的无线电发射器产生的无线电信号)、传感器和换能器读数(例如,加速度计、罗盘、陀螺仪、扬声器、麦克风等的信号和输出)、处理器和微处理器输出信号、和/或计算设备发送或生成的任何其他类型或形式的信号、传输内容和/或输出。
[0032]如本文所用,短语“子系统设备”通常指计算设备上任何类型或形式的物理硬件和/或对应固件。例如,子系统设备可包括物理连接到计算设备和/或作为计算设备的一部分的任何类型或形式的物理设备、传感器、组件、附件等。在一些实施例中,子系统设备可包括被配置成执行功能的硬件组件和/或对应固件的集合,诸如充当加速度计的硬件组件和固件的集合。此外,子系统设备可包括在计算设备的物理层(或者在虚拟机的情况下,为模拟物理层)工作并且/或者通过计算设备的应用层中运行的软件访问的任何物理硬件和/或对应固件。子系统设备还可包括被配置为模拟物理设备(诸如虚拟机内的模拟物理设备)的软件。
[0033]子系统设备还可包括能够传输、产生和/或发送输出信号(诸如上述任一输出信号)的任何类型或形式的物理硬件和/或对应固件。例如,子系统设备可包括计算设备上的传感器,诸如智能电话中的那些(例如,加速度计、陀螺仪等)。子系统设备的例子包括但不限于换能器和传感器(例如,麦克风、扬声器、加速度计、陀螺仪、高度计、温度计、罗盘、触摸屏、指纹读取器、心率监测仪、视网膜扫描器等)、无线电发射器(例如,移动电话无线电装置、蓝牙无线电装置、WIFI无线电装置、全球定位系统(GPS)无线电装置等)、光学传感器和设备(例如,摄像头)、处理器、存储器、以及其他电路板组件、硬件控制器、和/或任何其他类型或形式的计算设备传感器、组件和/或硬件。
[0034]如本文所用,短语“软件组件”通常指一起工作以执行特定功能的计算机可执行指令的集合。例如,软件组件可包括接收、处理、转移、翻译、读取、传输和/或发送输出信号的计算机可执行指令。软件组件的例子包括但不限于操作系统组件(例如,设备驱动程序、内核、应用程序、系统注册表、系统进程等)、应用程序组件(即,应用程序的任何部分或进程)、以及任何其他类型或形式的软件组件。
[0035]例如,软件组件可包括操作系统内被配置为访问和/或控制硬件设备的设备驱动程序。又如,软件组件可包括从麦克风驱动程序接收输出信号的语音聊天应用程序。软件组件还可包括用于访问和/或控制物理设备、固件或软件的应用程序编程接口(API)。
[0036]本文所述的系统可以多种方式执行步骤302。在一个例子中,拦截模块104可包括在用于访问和/或控制子系统设备208的固件内。在该例子中,拦截模块104可在输出信号212被子系统设备208的固件处理和/或通过该固件时拦截该输出信号。在另一个例子中,拦截模块104可以是设备驱动程序的一部分,该设备驱动程序被配置为接收和处理从子系统设备208发送的输出信号。在该例子中,拦截模块104可在输出信号212由子系统设备208发送到设备驱动程序之后被该设备驱动程序处理时拦截该输出信号。
[0037]如图3所示,在步骤304处,本文所述的系统可识别输出信号的误差范围。例如,识别模块106可作为图2中的计算设备202的一部分,识别误差范围数据210内的输出信号212误差范围。
[0038]如本文所用,短语“误差范围”一般是指偏差的容许极限。例如,输出信号的误差范围可以是输出信号偏差的容许极限。误差范围可(由例如用户或开发者)根据硬件限制、制造商规格、应用程序设置、设备驱动程序、固件、操作系统和/或任何其他合适的机制、人员和/或过程来任意地限定。
[0039]在一些实施例中,误差范围可包括上限和下限。例如,在理想情形下,智能电话在静止状态下的加速度计输出可为1.0(考虑到重力)。然而,由于加速度计输出不可避免会存在偏差,开发者可将加速度计输出的误差范围定义为1.5至0.5之间的任意值。只要加速度计输出的信号在此范围内,则加速度计信号即在所述误差范围内。然而,如果加速度计输出的信号高于1.5或低于0.5,则加速度计超出误差范围。
[0040]本文所述的系统和方法可以多种方式执行步骤304。例如,误差范围数据210可以是子系统设备208的固件所包含、设置和/或定义的数据。在该例子中,识别模块106可从子系统设备208的固件获得误差范围数据210。在一些实施例中,识别模块106可以是子系统设备208的固件的一部分,因此可以访问误差范围数据210。又如,误差范围数据210可由子系统设备208的设备驱动程序所包含、设置和/或定义。在该例子中,识别模块106可从子系统设备208的设备驱动程序获得误差范围数据210。在一些实施例中,识别模块106可以是子系统设备208的设备驱动程序的一部分,因此可以访问误差范围数据210。识别模块106还可从任何其他合适的软件组件、存储介质和/或固件获得误差范围数据210。
[0041]如图3所示,在步骤306处,本文所述的系统可通过以一定方式在输出信号中引入变化来生成经修改的输出信号,使得(I)该变化不超过输出信号的误差范围并且(2)经修改的输出信号无法用于识别计算设备。例如,修改模块108可作为计算设备202的一部分,通过在输出信号212中引入变化来生成经修改的输出信号214。在该例子中,修改模块108可通过一定方式在输出信号212中引入变化,使得(I)该变化不超过识别模块106所识别的误差范围并且(2)经修改的输出信号214无法用于识别计算设备202。
[0042]如本文所述,短语“经修改的输出信号”通常指已经以某种形式改变的输出信号。例如,设备驱动程序可将“原始”或未改变的输出信号从麦克风传递到正使用该麦克风的应用程序组件。在该例子中,修改模块108可(例如,作为设备驱动程序的一部分)在将原始信号传递到应用程序组件之前向原始信号应用各种过滤和修改,从而生成经修改的输出信号(即,从一种形式改变到另一种形式的信号)。
[0043]本文所述的系统可修改在任何时间或沿着信号路径的任何地点的输出信号。例如,修改模块108可修改正产生信号的物理设备内、正控制该设备的固件内、将信号发送到应用层的驱动程序内、接收输出信号的应用程序和/或应用程序进程内、和/或任何其他合适的设备和/或软件组件内的输出信号。
[0044]如本文所用,短语“引入变化”通常指设备和/或软件组件(例如,修改模块108)可用来修改输出信号的任何过程。例如,短语“引入变化”可指修改模块108用来修改输出信号212的特定计算机可执行指令、算法、功能和/或物理过程。例如,修改模块108可使计算设备202执行以一定方式改变输出信号212的算法,使得输出信号212不超过识别模块106所识别的误差范围。在一些实施例中,修改模块108可以一定方式在输出信号212中引入变化,使得经修改的输出信号214没有统计学上可分辨的指纹(S卩,经修改的输出信号214无法以任何统计意义上显著的方式用于对计算设备202进行跟踪、识别和/或指纹分析)。
[0045]本文所述的系统和方法可以多种方式执行步骤306。例如,在误差范围数据210包括上限和下限的实施例中,修改模块108可以一定方式在输出信号212中引入变化,使得该变化不超过如在误差范围数据210内识别的上限或下限。
[0046]在一些实施例中,修改模块108可通过在输出信号中引入随机生成的变化来生成经修改的输出信号214。例如,修改模块108可以一定方式在输出信号212中引入随机生成的变化,使得输出信号212落在识别模块106所识别的误差范围内。
[0047]修改模块108可以多种方式引入随机生成的变化。例如,修改模块108可在子系统设备208的设备驱动程序和/或固件内的输出信号212中引入随机生成的变化。在一些实施例中(以及如将结合图4更加详细地描述),修改模块108可以一定方式生成经修改的输出信号214,使得被设计为对计算设备进行指纹分析的跟踪程序无法利用经修改的输出信号214对计算设备202进行指纹分析。
[0048]如图3所示,在步骤308处,本文所述的系统可将经修改的输出信号发送到软件组件。例如,传输模块110可将经修改的输出信号214发送到软件组件216。
[0049]本文所述的系统和方法可以多种方式执行步骤308。例如,传输模块110可在从应用程序接收到相应请求之后将经修改的输出信号214发送到该应用程序。又如,传输模块110可通过允许输出信号212通过子系统设备208的设备驱动程序和/或设备固件来将输出信号发送到软件组件216。例如,应用程序可请求从子系统设备208接收输出信号212。在该例子中,输出信号212可被设备驱动程序拦截并修改,而传输模块110可在输出信号212被修改之后允许输出信号212到达该应用程序。
[0050]在一些实施例中,传输模块110可被配置为在它确定输出信号212未被正确修改或者输出信号212可能潜在地被用于对计算设备202进行指纹分析时,阻止输出信号212被发送到软件组件216。在一些例子中,软件组件216可以是应用层、诸如计算设备202的应用层的一部分。在这些实施例中,传输模块110可将经修改的输出信号214发送到计算设备202的应用层内的软件组件。
[0051]图4是系统400的框图,示出了本文的系统和方法可如何阻止跟踪程序(诸如营销服务器内运行的那些)利用子系统输出信号对计算设备(例如,图2中的计算设备202、图4中的智能电话406、和/或图5中的计算设备510)进行指纹分析。如该图所示,系统400包括营销服务器402、互联网404和智能电话406。智能电话406包括加速度计416和操作系统408,该操作系统上安装有互联网浏览器410和加速度计驱动程序414。在该图示中,加速度计驱动程序414包括模块102。
[0052]在该例子中,智能电话406的用户可使用互联网浏览器410访问营销服务器402托管的网站。随后,营销服务器402可通过从互联网浏览器410请求加速度计数据来尝试对智能电话406进行指纹分析。出于举例说明的目的,营销服务器402可通过检测加速度计输出信号中的独特偏差来尝试对智能电话进行指纹分析。然而,要防止智能电话406被指纹分析,加速度计驱动程序414可首先拦截并修改输出信号418。如上文所详述,加速度计驱动程序414可通过在输出信号418中引入随机生成的变化来生成经修改的输出信号420。生成经修改的输出信号420之后,加速度计驱动程序414可将输出信号420发送到互联网浏览器410,该互联网浏览器继而可将输出信号提供给营销服务器402。
[0053]如上文所详述,加速度计驱动程序414可以一定方式修改输出信号418,使得营销服务器402无法对智能电话406进行指纹分析。例如,营销服务器402可能无法在与智能电话406相关的加速度计数据中检测到任何独特的偏差,因为经修改的输出信号420已通过引入随机生成的变化而被“模糊化”。此外,加速度计驱动程序414可被配置为以一定方式在输出信号418中引入变化,使得输出信号418不超过误差范围,从而确保经修改的输出信号420保持准确和可用。
[0054]如上文结合图3中的方法300所述,广告商一直在研究新的方法来跟踪计算设备用户的购买习惯。在用户发觉他们被跟踪时,可能需要更多的隐私保护工具来防止不利方监视他们的行为。尽管传统的隐私保护工具可使得用户能够对其如何被跟踪有一定控制,但广告商(以及其他更多的恶意实体)可能能够通过对计算设备传感器信号进行指纹分析来绕过这些工具。
[0055]本发明可通过使从传感器和其他子系统设备发送的原始输出信号在被跟踪软件分析之前“模糊化”来克服这一问题。具体地讲,通过使用传感器驱动程序或传感器固件在传感器信号中引入随机变化,本文所述的系统和方法可生成经修改的输出信号,该信号没有统计学上可分辨的指纹。这种方法可以为开发者提供有效、稳健、简易的解决方案来保护其用户的隐私。
[0056]图5是能够实现本文描述和/或示出的实施例中的一者或多者的示例性计算系统510的框图。例如,计算系统510的全部或一部分可单独地或与其他元件结合来执行和/或作为一种装置执行本文所述的步骤中的一个或多个(诸如,图3所示步骤中的一个或多个)。计算系统510的全部或一部分也可执行和/或作为一种装置执行本文描述和/或示出的任何其他步骤、方法或过程。
[0057]计算系统510在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统510的例子包括但不限于工作站、笔记本电脑、客户端侧终端、月艮务器、分布式计算系统、手持式设备或任何其他计算系统或设备。在其最基本的配置中,计算系统510可包括至少一个处理器514和系统存储器516。
[0058]处理器514通常表示能够处理数据或解译和执行指令的任何类型或形式的物理处理单元(例如,硬件实现的中央处理单元)O在某些实施例中,处理器514可接收来自软件应用程序或模块的指令。这些指令可使处理器514执行本文描述和/或示出的一个或多个示例性实施例的功能。
[0059]系统存储器516通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。系统存储器516的例子包括但不限于随机存取存储器(RAM)、只读存储器(R0M)、闪存存储器或任何其他适用的存储器设备。尽管不是必需的,但在某些实施例中,计算系统510可包括易失性存储器单元(诸如,系统存储器516)和非易失性存储设备(诸如,主要存储设备532,如下详述)两者。在一个例子中,图1的模块102中的一者或多者可加载到系统存储器516中。
[0060]在某些实施例中,除处理器514和系统存储器516之外,示例性计算系统510还可包括一个或多个组件或元件。例如,如图5所示,计算系统510可包括存储器控制器518、输入/输出(I/O)控制器520和通信接口 522,它们中的每一者都可通过通信基础结构512互连。通信基础结构512通常表示能够促进计算设备的一个或多个组件之间的通信的任何类型或形式的基础结构。通信基础结构512的例子包括但不限于通信总线(诸如工业标准体系结构(ISA))、外围组件互连(PCI)、PCI Express(PCIe)或类似的总线)和网络。
[0061]存储器控制器518通常表示能够处理存储器或数据或者控制计算系统510的一个或多个组件之间的通信的任何类型或形式的设备。例如,在某些实施例中,存储器控制器518可通过通信基础结构512来控制处理器514、系统存储器516和I/O控制器520之间的通
?目O
[0062]I/O控制器520通常表示能够协调和/或控制计算设备的输入和输出功能的任何类型或形式的模块。例如,在某些实施例中,I/O控制器520可控制或促进计算系统510的一个或多个元件之间的数据传输,所述元件诸如处理器514、系统存储器516、通信接口 522、显示适配器526、输入接口 530和存储接口 534。
[0063]通信接口522在广义上表示能够促进示例性计算系统510与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施例中,通信接口 522可促进计算系统510与包括附加计算系统的专用或公共网络之间的通信。通信接口 522的例子包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器和任何其他合适的接口。在至少一个实施例中,通信接口 522可通过与网络(诸如互联网)的直接链接来提供与远程服务器的直接连接。通信接口 522还可通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其他合适的连接来间接提供此类连接。
[0064]在某些实施例中,通信接口 522还可表示主机适配器,该主机适配器被配置为通过外部总线或通信信道来促进计算系统510与一个或多个附加网络或存储设备之间的通信。主机适配器的例子包括但不限于小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)和外部SATA(eSATA)主机适配器、光纤通道接口适配器、以太网适配器等。通信接口 522还可允许计算系统510参与分布式或远程计算。例如,通信接口522可接收来自远程设备的指令或将指令发送到远程设备以供执行。
[0065]如图5所示,计算系统510还可包括至少一个显示设备524,该显示设备通过显示适配器526联接到通信基础结构512。显示设备524通常表示能够以可视方式显示显示适配器526转发的信息的任何类型或形式的设备。类似地,显示适配器526通常表示被配置为转发来自通信基础结构512(或来自帧缓冲器,如本领域所已知)的图形、文本和其他数据以在显示设备524上显示的任何类型或形式的设备。
[0066]如图5所示,示例性计算系统510还可包括经由输入接口530联接到通信基础结构512的至少一个输入设备528。输入设备528通常表示能够向示例性计算系统510提供输入(由计算机或人生成)的任何类型或形式的输入设备。输入设备528的例子包括但不限于键盘、指示设备、语音识别设备或任何其他输入设备。
[0067]如图5所示,示例性计算系统510还可包括主要存储设备532和经由存储接口 534联接到通信基础结构512的备份存储设备533。存储设备532和533通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备532和533可为磁盘驱动器(例如,所谓的硬盘驱动器)、固态驱动器、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等等。存储接口 534通常表示用于在计算系统510的存储设备532和533与其他组件之间传输数据的任何类型或形式的接口或设备。
[0068]在某些实施例中,存储设备532和533可被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的例子包括但不限于软盘、磁带、光盘、闪存存储器设备等。存储设备532和533还可包括允许将计算机软件、数据或其他计算机可读指令加载到计算系统510内的其他类似结构或设备。例如,存储设备532和533可被配置为读取和写入软件、数据或其他计算机可读信息。存储设备532和533还可为计算系统510的一部分,或者可为通过其他接口系统进行访问的独立设备。
[0069]可将许多其他设备或子系统连接到计算系统510。相反地,无需图5中示出的所有组件和设备都存在,亦可实践本文描述和/或示出的实施例。上文提及的设备和子系统也可通过不同于图5所示的方式互连。计算系统510也可采用任何数量的软件、固件和/或硬件配置。例如,本文所公开的一个或多个示例性实施例可被编码为计算机可读介质上的计算机程序(也称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。如本文所用,短语“计算机可读介质”通常指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的例子包括但不限于传输型介质,诸如载波,和非暂态型介质,诸如磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光存储介质(例如,光盘(CD)、数字视频盘(DVD)和蓝光盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。
[0070]可将包含计算机程序的计算机可读介质加载到计算系统510中。然后可以将计算机可读介质上存储的全部或部分计算机程序存储在系统存储器516中和/或存储设备532和533的各个部分中。当由处理器514执行时,加载到计算系统510中的计算机程序可使处理器514执行和/或作为一种装置执行本文描述和/或示出的示例性实施例中的一者或多者的功能。除此之外或作为另外一种选择,可在固件和/或硬件中实现本文描述和/或示出的示例性实施例中的一者或多者。例如,计算系统510可被配置为用于实现本文所公开的示例性实施例中的一者或多者的专用集成电路(ASIC)。
[0071]图6为示例性网络体系结构600的框图,其中客户端系统610、620和630以及服务器640和645可联接到网络650。如上文所详述,网络体系结构600的全部或一部分可单独地或与其他元件结合来执行和/或作为一种装置执行本文所公开的步骤中的一个或多个(诸如图3所示步骤中的一个或多个)。网络体系结构600的全部或一部分也可用于执行和/或作为一种装置执行本公开中阐述的其他步骤和特征。
[0072]客户端系统610、620和630通常表示任何类型或形式的计算设备或系统,诸如图5中的示例性计算系统510。类似地,服务器640和645通常表示被配置为提供各种数据库服务和/或运行某些软件应用程序的计算设备或系统,诸如应用程序服务器或数据库服务器。网络650通常表示任何电信或计算机网络,包括例如内联网、WAN、LAN、PAN或因特网。在一个例子中,客户端系统610、620和/或630和/或服务器640和/或645可包括图1的系统100的全部或一部分。
[0073]如图6所示,一个或多个存储设备660(1)-(N)可直接连接到服务器640。类似地,一个或多个存储设备670(1)-(N)可直接连接到服务器645。存储设备660(1)-(N)和存储设备670(1)-(N)通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。在某些实施例中,存储设备660(1)-(N)和存储设备670(1)-(N)可以表示被配置为使用各种协议(诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS))与服务器640和645进行通信的网络附接存储(NAS)设备。
[0074]服务器640和645也可以连接到存储区域网络(SAN)架构680 JAN架构680通常表示能够促进多个存储设备之间的通信的任何类型或形式的计算机网络或体系结构。SAN架构680可促进服务器640和645与多个存储设备690(1 )-(N)和/或智能存储阵列695之间的通信。SAN架构680还可通过网络650以及服务器640和645以这样的方式促进客户端系统610、620和630与存储设备690( I )-(N)和/或智能存储阵列695之间的通信:设备690( I )-(N)和阵列695呈现为客户端系统610、620和630的本地连接设备。与存储设备660(1)-(N)和存储设备670(1 )-(N)相同,存储设备690(1 )-(N)和智能存储阵列695通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。
[0075]在某些实施例中,并参照图5的示例性计算系统510,通信接口(诸如图5中的通信接口 522)可用于在每个客户端系统610、620和630与网络650之间提供连接。客户端系统610、620和630能够使用例如网页浏览器或其他客户端软件来访问服务器640或645上的信息。此类软件可允许客户端系统610、620和630访问由服务器640、服务器645、存储设备660(I )_(N)、存储设备670(1 )-(N)、存储设备690(1 )-(N)或智能存储阵列695托管的数据。尽管图6示出了使用网络(诸如互联网)来交换数据,但本文描述和/或示出的实施例并不限于互联网或任何特定的基于网络的环境。
[0076]在至少一个实施例中,本文所公开的一个或多个示例性实施例中的全部或一部分可被编码为计算机程序并加载到服务器640、服务器645、存储设备660(1)-(N)、存储设备670(1)-(N)、存储设备690(1)-(N)、智能存储阵列695、或它们的任意组合上并加以执行。本文所公开的一个或多个示例性实施例中的全部或一部分也可被编码为计算机程序,存储在服务器640中,由服务器645运行,以及通过网络650分配到客户端系统610、620和630。
[0077]如上文所详述,计算系统510和/或网络体系结构600的一个或多个组件可单独地或与其他元件结合来执行和/或作为一种装置执行用于在子系统输出信号中引入变化以防止设备指纹分析的示例性方法的一个或多个步骤。
[0078]虽然上述公开内容使用特定框图、流程图和例子阐述了各种实施例,但每个框图组件、流程图步骤、操作和/或本文描述和/或示出的组件可使用多种硬件、软件或固件(或其任何组合)配置单独和/或共同地实施。此外,包含在其他组件内的组件的任何公开内容应当被视为在本质上是示例性的,因为也可采用许多其他体系结构来实现相同功能。
[0079]在一些例子中,图1中的示例性系统100的全部或一部分可表示云计算环境或基于网络的环境的部分。云计算环境可以通过互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础结构即服务等)可以通过网页浏览器或其他远程接口进行访问。本文所述的各种功能可以通过远程桌面环境或任何其他基于云的计算环境提供。
[0080]在各种实施例中,图1中的示例性系统100的全部或一部分可促进基于云的计算环境内的多租户应用。换句话讲,本文所述的软件模块可配置计算系统(例如,服务器)以促进本文所述功能中的一者或多者的多租户应用。例如,本文所述软件模块中的一者或多者可对服务器进行编程以允许两个或多个客户端(例如,顾客)共享正在服务器上运行的应用程序。以这种方式编程的服务器可在多个顾客(即,租户)之间共享应用程序、操作系统、处理系统和/或存储系统。本文所述模块中的一者或多者还可为每个顾客分割多租户应用程序的数据和/或配置信息使得一个顾客不能访问另一个顾客的数据和/或配置信息。
[0081 ]根据各种实施例,图1中的示例性系统100的全部或一部分可在虚拟环境中实现。例如,本文所述模块和/或数据可在虚拟机内驻存和/或执行。如本文所用,短语“虚拟机”通常指由虚拟机管理器(例如,超级管理程序)从计算硬件中抽象出来的任何操作系统环境。除此之外或作为另外一种选择,本文所述的模块和/或数据可在虚拟化层内驻存和/或执行。如本文所用,短语“虚拟化层”通常指覆盖操作系统环境和/或从操作系统环境中抽象出来的任何数据层和/或应用层。虚拟化层可由软件虚拟化解决方案(例如,文件系统过滤器)管理,软件虚拟化解决方案将虚拟化层呈现为就好像它是底层基本操作系统的一部分。例如,软件虚拟化解决方案可将最初定向至基本文件系统和/或注册表内的位置的调用重定向至虚拟化层内的位置。
[0082]在一些实例中,图1中的示例性系统100的全部或一部分可表示移动计算环境的部分。移动计算环境可由多种移动计算设备来实现,这些设备包括移动电话、平板电脑、电子书阅读器、个人数字助理、可穿戴计算设备(例如,具有头戴式显示器的计算设备、智能手表等),等等。在一些例子中,移动计算环境可具有一个或多个显著特征,包括(例如)对电池供电的依赖、在任何给定时间只呈现一个前台应用程序、远程管理特征、触摸屏特征、(例如,由全球定位系统、陀螺仪、加速度计等提供的)位置和移动数据、限制对系统级配置的修改和/或限制第三方软件检查其他应用程序的行为的能力的受限平台、限制应用程序的安装的控制装置(例如,仅安装来源于经批准的应用程序商店的应用程序),等等。本文所述的各种功能可被提供用于移动计算环境和/或可与移动计算环境交互。
[0083]此外,图1中的示例性系统100的全部或一部分可表示用于信息管理的一个或多个系统的部分、可与用于信息管理的一个或多个系统交互、可使用由用于信息管理的一个或多个系统产生的数据、以及/或者可产生被用于信息管理的一个或多个系统使用的数据。如本文所用,短语“信息管理”可以指数据的保护、组织和/或存储。信息管理系统的例子可包括但不限于存储系统、备份系统、存档系统、复制系统、高可用性系统、数据搜索系统、虚拟化系统等。
[0084]在一些实施例中,图1中的示例性系统100的全部或一部分可表示用于信息安全的一个或多个系统的部分、可产生受用于信息安全的一个或多个系统保护的数据、以及/或者可与用于信息安全的一个或多个系统通信。如本文所用,短语“信息安全”可以指对受保护数据的访问控制。信息安全系统的例子可包括但不限于提供受管理的安全服务的系统、数据丢失防护系统、身份认证系统、访问控制系统、加密系统、政策遵循系统、入侵检测与防护系统、电子发现系统等等。
[0085]根据一些例子,图1中的不例性系统100的全部或一部分可表不用于端点安全的一个或多个系统的部分、可与用于端点安全的一个或多个系统通信、以及/或者可从用于端点安全的一个或多个系统接收到保护。如本文所用,短语“端点安全”可以指保护端点系统以避免未授权和/或不合法的使用、访问和/或控制。端点保护系统的例子可包括但不限于反恶意软件系统、用户认证系统、加密系统、保密系统、垃圾邮件过滤服务,等等。
[0086]本文描述和/或示出的过程参数和步骤序列仅通过举例的方式给出并且可根据需要改变。例如,虽然本文示出和/或描述的步骤可以特定顺序示出或讨论,但这些步骤不必按示出或讨论的顺序来执行。本文描述和/或示出的各种示例性方法也可省略本文描述或示出的步骤中的一个或多个,或除了所公开的那些步骤之外还包括附加步骤。
[0087]虽然本文已经在全功能计算系统的背景中描述和/或示出了各种实施例,但这些示例性实施例中的一个或多个可作为各种形式的程序产品来分配,而不考虑用于实际进行分配的计算机可读介质的特定类型。本文所公开的实施例也可使用执行某些任务的软件模块来实施。这些软件模块可包括脚本、批处理文件或可存储在计算机可读存储介质上或计算系统中的其他可执行文件。在一些实施例中,这些软件模块可将计算系统配置为执行本文所公开的示例性实施例中的一个或多个。
[0088]此外,本文所述的模块中的一者或多者可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,本文所述的模块中的一者或多者可从子系统设备接收输出信号,然后通过在该输出信号中引入变化,将该输出信号转换成经修改的输出信号。除此之外或作为另外一种选择,本文所述模块中的一者或多者可通过在计算设备上执行、在计算设备上存储数据和/或以其他方式与计算设备交互,来将处理器、易失性存储器、非易失性存储器和/或物理计算设备的任何其他部分从一种形式转换为另一种形式。
[0089]提供前面描述的目的是使本领域的其他技术人员能够最好地利用本文所公开的示例性实施例的各种方面。该示例性描述并非旨在是详尽的或局限于所公开的任何精确形式。在不脱离本发明精神和范围的前提下,可进行许多修改和变化。本文所公开的实施例在所有方面均应被视为示例性的而非限制性的。应当参考所附权利要求及其等同形式来确定本发明的范围。
[0090]除非另有说明,否则在本说明书和权利要求中使用的术语“连接到”和“联接到”(及其衍生词)应当理解为既允许直接连接又允许间接(即经由其他元件或组件)连接。此夕卜,在本说明书和权利要求中使用的术语“一”或“一个”应当理解为是表示..中的至少一者”。最后,为了易于使用,在本说明书和权利要求中使用的术语“包括”和“具有”(及其衍生词)与词语“包含”可互换并且与词语“包含”具有相同含义。
【主权项】
1.一种用于在子系统输出信号中引入变化以防止设备指纹分析的计算机实现的方法,所述方法的至少一部分由包括至少一个处理器的计算设备来执行,所述方法包括: 在所述计算设备上拦截从所述计算设备上的子系统设备发送到所述计算设备上的软件组件的输出信号; 识别所述输出信号的误差范围; 通过在所述输出信号中引入变化来生成经修改的输出信号,使得: 所述变化不超过所述输出信号的所述误差范围;并且 所述经修改的输出信号无法用于识别所述计算设备; 将所述经修改的输出信号发送到所述软件组件。2.根据权利要求1所述的计算机实现的方法,其中生成所述经修改的输出信号包括使用以下至少一者来生成所述经修改的输出信号: 所述子系统设备的设备驱动程序; 所述子系统设备的固件。3.根据权利要求1所述的计算机实现的方法,其中所述软件组件是所述计算设备上的应用层的一部分。4.根据权利要求1所述的计算机实现的方法,其中所述软件组件包括以下至少一者: 操作系统组件; 应用程序组件。5.根据权利要求1所述的计算机实现的方法,其中所述输出信号的所述误差范围包括上限和下限,并且: 所述变化不超过所述误差范围的所述上限;并且 所述变化不超过所述误差范围的所述下限。6.根据权利要求1所述的计算机实现的方法,其中所述子系统设备包括以下至少一者: 换能器: 传感器; 无线电发射器。7.根据权利要求1所述的计算机实现的方法,其中生成所述经修改的输出信号包括将随机生成的变化引入所述输出信号。8.—种用于在子系统输出信号中引入变化以防止设备指纹分析的系统,所述系统包括: 存储在存储器中的拦截模块,所述拦截模块在所述计算设备上拦截从所述计算设备上的子系统设备发送到所述计算设备上的软件组件的输出信号; 存储在存储器中的识别模块,所述识别模块识别所述输出信号的误差范围; 存储在存储器中的修改模块,所述修改模块通过在所述输出信号中引入变化来生成经修改的输出信号,使得: 所述变化不超过所述输出信号的所述误差范围;并且 所述经修改的输出信号无法用于识别所述计算设备; 存储在存储器中的传输模块,所述传输模块将所述经修改的输出信号发送到所述软件组件。9.根据权利要求8所述的系统,其中所述修改模块使用以下至少一者来生成所述经修改的输出信号: 所述子系统设备的设备驱动程序; 所述子系统设备的固件。10.根据权利要求8所述的系统,其中所述软件组件是所述计算设备上的应用层的一部分。11.根据权利要求8所述的系统,其中所述软件组件包括以下至少一者: 操作系统组件; 应用程序组件。12.根据权利要求8所述的系统,其中所述输出信号的所述误差范围包括上限和下限,并且: 所述变化不超过所述误差范围的所述上限;并且 所述变化不超过所述误差范围的所述下限。13.根据权利要求8所述的系统,其中所述子系统设备包括以下至少一者: 换能器: 传感器; 无线电发射器。14.根据权利要求8所述的系统,其中所述修改模块通过将随机生成的变化引入所述输出信号来生成所述经修改的输出信号。15.—种非暂态计算机可读存储介质,所述计算机可读存储介质包括一个或多个计算机可执行指令,当由计算设备的至少一个处理器执行时,所述指令致使所述计算设备: 在所述计算设备上拦截从所述计算设备上的子系统设备发送到所述计算设备上的软件组件的输出信号; 识别所述输出信号的误差范围; 通过在所述输出信号中引入变化来生成经修改的输出信号,使得: 所述变化不超过所述输出信号的所述误差范围;并且 所述经修改的输出信号无法用于识别所述计算设备; 将所述经修改的输出信号发送到所述软件组件。16.根据权利要求15所述的非暂态计算机可读存储介质,其中所述一个或多个计算机可执行指令致使所述计算设备使用以下至少一者生成所述经修改的输出信号: 所述子系统设备的设备驱动程序; 所述子系统设备的固件。17.根据权利要求15所述的非暂态计算机可读存储介质,其中所述软件组件是所述计算设备上的应用层的一部分。18.根据权利要求15所述的非暂态计算机可读存储介质,其中所述软件组件包括以下至少一者: 操作系统组件; 应用程序组件。19.根据权利要求15所述的非暂态计算机可读存储介质,其中所述输出信号的所述误差范围包括上限和下限,并且所述一个或多个计算机可执行指令致使所述计算设备引入变化,使得: 所述变化不超过所述误差范围的所述上限;并且 所述变化不超过所述误差范围的所述下限。20.根据权利要求15所述的非暂态计算机可读存储介质,其中所述一个或多个计算机可执行指令致使所述计算设备通过在所述输出信号中引入随机生成的变化来生成所述经修改的输出信号。
【文档编号】G06F21/62GK105874464SQ201480068182
【公开日】2016年8月17日
【申请日】2014年12月22日
【发明人】W·E·索贝尔, B·麦科肯德尔
【申请人】赛门铁克公司