CN102982262B - 用于开发的操作系统的安全机制 - Google Patents
用于开发的操作系统的安全机制 Download PDFInfo
- Publication number
- CN102982262B CN102982262B CN201210335901.7A CN201210335901A CN102982262B CN 102982262 B CN102982262 B CN 102982262B CN 201210335901 A CN201210335901 A CN 201210335901A CN 102982262 B CN102982262 B CN 102982262B
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- information
- assembly
- people
- described object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2147—Locking files
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
一种用于降低软件对象的未经授权发布风险的安全技术。该技术允许通过用充当指纹的信息标记每个对象来识别对未经授权发布负有责任的个人,从该指纹可识别在开发环境中操纵所述对象的人。开发环境可被配置成任何时候可先于未经授权发布的操纵发生时迅速而自动地标记所述对象。为了防止避开安全技术,对象可被配置成实施对有效指纹的要求,使得当指纹被移除或改变时禁用该对象。即使有标记,也不泄露可标识个人的信息,因为指纹通过对识别信息执行的单向加密函数而生成。
Description
背景技术
许多人对用于计算设备的新版本的操作系统感兴趣,这些人包括普通计算机用户、试图制作并分发未经授权的操作系统的拷贝的团体、竞争操作系统的制造商和在操作系统上执行的应用程序的开发者。有时,这种兴趣水平致使可合法使用开发中的操作系统的代码的人员在新版本正式发布之前透露新版本的细节。
当某种版本的操作系统以这种方式泄露时,对操作系统的制造商来说可存在许多不期望的后果。竞争者可能获得对操作系统的访问权并在与操作系统制造商的竞争中不适当地使用它。然而,即使较少的恶意使用也可能是有害的。例如,发布前泄露可在操作系统正式发布时降低操作系统中的新特征的权威性(cachet),从而影响销售。另外,在开发版本包含未充分调试的特征时可出现问题,从而产生操作系统的最终版本将不能良好运行的错误认识。另外,计划编写与新版本的操作系统交互的应用或组件的团体可能基于泄露的开发版本实现他们的产品,结果却发现,在版本正式发布时,由于在泄露和正式发布之间的时间内的操作系统变化而使他们的产品不能如所预期的那样工作。
这些泄露可通过多种方式发生。有时,关于操作系统新版本的信息被开发组织内部的某些人从该开发组织内部泄露,从而使操作系统的构建(build)未经授权泄露。在开发组织中,可将软件源代码保存在开发服务器内。这些服务器可包括配置管理系统,该系统跟踪文件或包含操作系统组件的其它组件的版本。
大型软件开发团队可处理源代码。每个开发者可从配置管理系统签出(check-out)该开发者正处理的源代码段。当开发者完成对软件片段的处理之后,该开发者可将软件片段签入(checkinto)配置管理系统中,从而允许另一个开发者签出并处理该软件片段。
有时,源代码的最新版本的各种组件可组合成构建(build)。除搜集最新版本的操作系统的各个组件之外,构建服务器可将软件源代码转换成可执行的形式,从而创建用于构建的可执行对象。然后可测试该对象或以其它方式将其用于与操作系统开发有关的合法目的。在某些情况下,可将对象存储在分发服务器上,其他人可从该分发服务器拷贝对象以便测试。
泄露可发生在该过程中的任何点处。在某些情况下,在创建未经授权的构建时可发生泄露。可在因特网上或以其它方式拷贝并分发创建为此构建的一部分的对象。作为另一示例,可从分发服务器获得将要泄露的对象。
发明内容
为了降低与诸如用于开发中的新版本的操作系统的对象的对象泄露相关的风险,可用控制涉及对象操纵的操作的每个人的指纹标记对象。这样的指纹所施加到的操作可涉及创建对象、拷贝对象或移动对象。在开发实体内,在创建和分发对象的过程中的多个步骤中的每一个处可重写指纹,使得在开发组织外部发现的未经授权对象中的指纹可指示组织内的操纵对象的最后一个人的身份。该信息可在响应对象泄露中提供有用的起点。
因此,在一些方面中,本发明可涉及一种处理软件对象的方法。该方法可包括结合涉及对象操纵的动作获得标识控制动作的人的信息。基于标识人的信息和标识对象的信息可加密地生成混淆数据。然后可将混淆数据并入对象中。
在另一方面,本发明涉及一种在计算设备上执行对象的方法。该方法可包括访问对象的组件并确定组件是否有效。可通过检查组件是否用预定密钥签名并检查组件是否包含标识对象的信息来验证该组件。当组件有效时,可以执行对象。当组件无效时,可以禁用对象。
在另一方面,本发明涉及包括实现操作系统的对象的至少一个计算机可读存储介质。操作系统的内核可包括组件,该组件存取并入对象中的安全信息,存取标识对象的信息,并且确定安全信息是否格式化为有效指纹。当安全信息未格式化为有效指纹时,组件可禁用对象。
以上是由所附权利要求限定的本发明的非限制性概述。
附图说明
附图不旨在按比例绘制。在附图中,各个附图中示出的每一相同或几乎相同的组件由同样的标号来表示。出于简明的目的,不是每个组件在每张附图中均被标号。在附图中:
图1是其中安全系统可操作的示例性环境的概念草图;
图2是在对象中插入指纹的示例性过程的概念草图;
图3是用于软件对象的安全系统的示例性实施例的框图;
图4是在开发环境中操作安全系统的组件的示例性过程的流程图;
图5是在运行时间环境中操作对象以实现安全性的示例性过程的流程图;
图6是识别对泄漏对象负有责任的人的示例性方法的流程图;以及
图7是可用来实现安全系统的部分的示例性计算机系统的框图。
具体实施方式
本发明人已经理解和意识到,通过用充当操纵对象的人的“指纹”的信息标记对象可以降低软件对象未经授权发布的风险。指纹可作为对象操纵的一部分被插入。指纹提供了操纵对象的人特有使得可以随后识别此人的信息。操纵对象的人将被识别的可能可降低此人将发布未经授权的软件产品的构建的可能性。此外,通过识别对未经授权的公开负有责任的人,可以阻止同一个人的进一步未经授权公开。指纹可结合任何合适类型的软件对象施加,例如,用于开发中的新版本的操作系统的对象。
在一些实施例中,用于操作系统或其它软件产品的开发环境可被配置成用控制涉及对象操纵的操作的每个人的指纹来标记对象。例如,可从其进行任何这样的操纵的每个服务器可被配置成每次进行这样的操作时用控制该操作的人的指纹自动地标记对象。这样的指纹为其而施加到对象的操作可涉及创建对象或拷贝对象或移动对象。然而,指纹可结合任何合适的操作施加到对象。
在一些实施例中,对象可包含单个指纹位置,并且当连续的对象操纵发生时可重写存储在该位置的指纹。对象可被设计成初始地包括在第一次操纵对象时可被重写的默认指纹。以这种方式重写现有指纹可允许标记快速地发生,以免中断开发环境的正常操作。
在执行开发的实体内,在创建和分发对象的过程中的多个步骤中的每一个处可重写指纹,使得在开发组织外部发现的未经授权对象中的指纹可指示组织内的操纵对象的最后一个人的身份。该信息可在响应对象泄露中提供有用的起点。
在一些实施例中,指纹可包含可根据其识别控制对象操纵的人的信息。然而,在一些实施例中,指纹可能不包含与任何用户相关联的可识别人的信息。相反,指纹可包含已通过单向加密函数模糊化的关于人的信息,使得无法恢复个体地标识个人的信息。然而,如果检测到未经授权的对象,则可通过相同的单向加密函数来处理怀疑与未经授权的发布有关的任何人的信息。可将对象中的模糊化信息与为可疑的人而类似地生成的信息进行比较,以确定可疑的个人是否是在开发组织内最后一个操纵对象的人。
在一些实施例中,可使用简单的机制来用指纹标记对象。例如,可将指纹插入对象内的预定位置。在一些实施例中,当首次插入对象时,指纹可重写作为指纹的占位符而初始地包括在对象中的对象的组件。例如,对象可被设计成使得当对象在被构建时,其包括对象的操作本来并不需要的文件。该文件可以在将指纹插入对象时被重写。将指纹存储在预定位置可简化标记对象所需的处理,因为只需要简单修改对象来标记它。
也可采用阻止未经授权的指纹移除的技术。在某些情况下,对象可包括检查有效指纹的存在情况的组件。如果在执行对象时未检测到有效指纹,则该组件可禁用对象。此外,可使用混淆技术来防止检测指纹或实施对有效指纹存在的要求的组件。例如,检查有效指纹的组件可启动动作以在未能检测到有效指纹之后的随机时间禁用对象。这些动作可包括在对象内选择要破坏的随机位置。结果,对象可出于表面上随机的原因在某个随机时间停止操作,这使得企图使实施机制失效的人难以识别该机制在对象内的位置。
现在转到图1,提供了其中可操作保护系统的实施例的环境的示例。图1示出了安全系统100。图1示出安全系统100的组件在开发环境110中和运行时间环境150中操作。在开发环境110中操作的安全系统100的组件可将一个或多个指纹插入可在开发环境110中生成的每个软件对象中。在该示例中,在开发环境110中生成的软件对象是计算设备的操作系统的可执行版本,为任何合适的软件产品生成的对象可如本文所述进行标记。然而,应当理解,用指纹标记的对象的本质对于本发明不重要。
在图1的示例性实施例中,将单个指纹包括在对象中。然而,插入对象中的指纹的数量对于本发明也不重要。例如,在一些实施例中,可使用如本文所述的技术用指纹标记对象内的多个组件。
在图1的实施例中,运行时间环境150包括实施有效签名要求的组件。在该示例中,对象包含实施组件,使得当用户154在诸如计算机152的计算机上执行对象时,实施组件可在对象中不存在有效指纹时限制对象的执行。这样,如果对象不标有有效指纹,则阻止用户154获得关于软件产品的特征和功能的信息。在开发环境110内的人为了允许其他人确定对象的特征或功能而发布对象的未经授权拷贝的情况中,对象内的实施组件可阻碍移除或改变与插入开发环境110中的对象相关联的指纹的企图。
可以在开发环境110内以合适的任何方式将指纹插入对象中。在所示示例中,开发环境110包括执行本领域已知的功能的一个或多个服务器。在该示例中,服务器112和服务器118包括在开发环境110中。服务器112可表示下面这种类型的开发服务器:其管理对正在开发的软件产品的软件源代码的数据库114的访问。开发服务器112可访问数据库114中的源代码并创建软件产品的构建。创建构建的结果可以是能被安装和执行的软件对象。
在软件产品的开发过程期间,可创建多个构建。因此,作为创建构建的一部分,开发服务器112可将版本信息并入构建中,以指示在数据库114处用来创建该构建的软件源代码的版本。
这些构建中的一些可用于开发目的。然而,当数据库114中的软件源代码完成时,可在开发环境110以外合法地分发构建。然而,可能不期望在软件产品仍在开发的过程中发布构建。
可使用本领域已知的技术分发构建。在所示实施例中,开发环境110包括分发服务器118。分发服务器118可包装用于分发的构建。多种分发机制可用于软件对象。例如,可将软件对象拷贝到磁盘,或者可以在诸如因特网的网络上进行分发。分发服务器118可执行对于分发模式合适的功能。在图1所示实施例中,分发服务器118在诸如因特网140的网络上分发软件对象。然而,应当理解,分发模式不是对本发明的限制。相反,开发服务器112可被配置成创建针对多种分发格式中任一种而格式化的对象。
在开发环境110内的操作可由开发软件产品的实体雇用的一个或多个人来控制。在该示例中,人122显示为通过工作站120与开发环境交互。人122可具有允许人122访问开发环境110内的组件的安全凭证。这些凭证可包括可使用本领域已知的技术分配的用户ID。这些凭证可用来获得对开发环境110中的组件的访问权。
虽然图1示出一个人122,但显示一个人是为了图示简洁。在例如开发用于销售的商业产品的实体中可以找到的开发环境中,可以有多个人有权访问开发环境110的资源。开发环境110内的不同人可享有对开发环境中的不同功能的不同访问特权。例如,由实体雇用的出现在开发环境110中的一部分人可以访问开发服务器112,使得他们能够修改存储在数据库114中的软件和/或控制开发服务器112以构造构建。另一部分人可享有允许他们控制分发服务器118以允许在开发环境110以外分发软件对象的访问特权。虽然可以限制对能在开发环境110内执行的功能的访问,但仍然可能有许多人拥有允许他们执行一个或多个功能的凭证,这些功能可导致开发中的软件产品的软件对象的未经授权分发。
为了提供一种识别可能对对象的未经授权发布负有责任的人的机制,分发环境110的组件可适于插入控制对象的操纵的人的指纹,使得如果在开发环境110以外识别到未经授权的对象,则可以识别对发布负有责任的人。在所示实施例中,虽然开发服务器112和分发服务器118如在常规开发环境中那样执行功能,但这些组件可将指纹另外地插入到它们所处理的每个对象中。指纹可以这样的方式生成,以便与控制操纵对象的操作的人唯一地相关联。
在所示实施例中,指纹可使用密钥生成。为了增加的安全性,将指纹插入对象中的开发环境110内的元素不需要访问密钥。相反,密钥服务器116保存密钥。在所示实施例中,代替访问密钥,需要指纹的开发环境110中的元素中的每一个可将用于生成指纹的信息提供给密钥服务器116。密钥服务器116可接着生成指纹并将其返回到开发环境110的组件,该组件将把指纹插入到正被处理的对象中。
这样的信息交换是可能的,因为开发环境110的组件可与网络130互连。网络130可以是在操作开发环境110的实体内的企业网络。然而,应当理解,可以使用在开发环境110的组件之间的任何合适的通信机制。
在一些实施例中,可从与控制操纵对象的操作的人有关的信息生成指纹。此外,可从与对象有关的信息生成指纹。例如,关于对象的信息可包括诸如版本号或创建时间的参数值。关于对象的特定信息源对于本发明不重要。然而,在图示实施例中,容易从对象本身获得关于对象的信息,例如通过读取头文件来获得。
指纹可使用任何合适的处理来生成。在所示实施例中,密钥服务器116通过计算识别控制操纵对象的操作的人的信息的单向加密函数的结果来生成指纹。例如,可以计算控制操作的人的用户ID的散列。单向加密函数的使用意味着不能从指纹推导出控制操作的人的特定身份。然而,该函数可以使得对于具有不同用户ID的任何两个人来说,通过加密函数生成相同值的机会如此小,以至于是无关紧要的。
不论以何种方式处理用户信息,所处理的信息都可与关于对象的信息组合。然后,可用保存在开发环境110内的密钥对该信息签名。然后,可在涉及对象操纵的操作期间将签名后的信息插入对象中以充当控制在对象上的操作的人的指纹。
在所示实施例中,密钥服务器116可保存与公钥/私钥对相关联的私钥。运行时间环境150内的计算设备可被编程为访问密钥对的对应密钥。作为特定示例,运行时间环境150中的计算设备152可访问对应于由密钥服务器116保存的私钥的公钥。分发的带指纹对象可包含将公钥应用到签名的指纹以验证该指纹在开发环境110内被签名的组件。反之,如果存储在有效指纹的预计所处位置的信息未用来自密钥服务器116的有效公钥签名,则在运行时间环境150中执行的对象的组件可检测到指纹被移除、被篡改或出于某些其它原因在运行时间环境150中的对象的拷贝由于其缺乏有效指纹而不是合法拷贝。在一些实施例中,将使用如本文所述的安全技术保护的对象可包含实施组件,该组件检查有效指纹,并且在未发现这样的指纹时采取安全措施,例如禁用对象。
在开发环境110内的插入指纹的特定组件对于本发明不重要。然而,在一些实施例中,指纹作为可能导致对象的未经授权分发的每个操作的一部分被插入。在图1所示实施例中,这些操作包括生成对象并从分发服务器拷贝对象。然而,在一些实施例中,在开发环境110内的任何拷贝操作均可导致控制该操作的人的指纹被插入对象中。在这样的情况中,可以配备开发环境110内的任何组件以插入指纹,该组件能够执行拷贝操作或可以先于对象的未经授权发布的其它操作。
然而,如从图1中的示例可看到的,开发环境110内的组件可简单地被配置成插入指纹。开发环境110内的任何组件可通过与密钥服务器116交互而获得指纹。
此外,在一些实施例中,仅通过重写对象中此前存在的信息来将指纹插入对象中。例如,可创建具有默认指纹的对象,使得当开发环境110内的第一个人控制操纵对象的操作时,其指纹可以重写默认指纹。类似地,当随后的用户访问开发环境110内已带有指纹的对象时,此前插入对象中的指纹可被控制操纵对象的操作的人的指纹所重写。重写指纹可通过简单而快速的操作进行,使得如所描述的那样并入安全措施可以简单地进行,而不中断开发环境的操作。然而,应当理解,可使用任何合适的机制将指纹插入对象中。
图2示意性地示出生成并入指纹的对象的过程。图2示出了代码库210。代码库210可例如表示用于软件产品的源代码文件,例如可存储在开发数据库114(图1)中。在该示例中,代码库210对应于实现用于计算设备的操作系统的编程指令。
在该示例中,代码包括多个源代码文件,其中示出了文件212A、212B和212C。此外,代码库可包括伪文件214。伪文件214可以是不具有与由代码库210限定的软件产品的操作有关的功能目的的文件。然而,代码库210可被配置成使得当用于软件产品的对象从代码库210构建时,伪文件214被并入对象中。在该示例中,伪文件214可包含限定默认指纹的信息。因此,当从代码库210构建对象时,该对象包含具有从伪文件214的内容确定的值的默认指纹。然而,应当理解,可使用任何合适的机制将默认指纹并入生成的对象中。
此外,代码库210包括限定实施组件216的源代码。在该示例中,实施组件216在运行时间环境中执行功能以确定在该运行时间环境中执行的对象是否包括有效指纹,并且在不包括时禁用对象的执行。
应当理解,图2示出代码库210包含源文件。然而,应当理解,本发明并不要求用于开发中的软件产品的代码库严格地以源代码格式存储。在一些实施例中,代码库210内的一些或全部组件可存储为库或可执行组件或以任何其它合适表示进行存储。
不论以何种方式将软件产品的组件存储在代码库210中,开发环境都可处理这些组件以构建对象。图2示出了其中用户222A已控制开发环境以从代码库210生成对象的情形。在该示例中,可生成多种构建样式的对象。这些构建样式例如可对应于对象的分发可以进行的各种格式。例如,可以为意图以电子方式分发的对象提供特定的构建样式。可为不同的分发机制提供不同的样式。例如,可以为在磁盘和可用于分发软件产品的其它介质上分发的对象提供另外的样式。虽然用于不同构建样式的对象中的每一个可以是功能上等同的,但来自代码库210的组件中的每一个的位置可以不同地定位在构建样式中的每一个中。重要地,限定构建样式中每一个中的默认指纹的伪文件214可不同地定位在构建样式中的每一个中。
然而,作为伪文件214的结果而并入的默认指纹的一个或多个位置可被确定,而不论构建样式如何。该默认指纹可被所计算的人222A的指纹所重写。在该示例中,计算人222A的指纹250A。该指纹可基于用户222A的用户ID或其它有区别的个人信息,并结合关于在人222A控制开发环境以从代码库210生成对象时代码库210中的代码的信息。
图2示意性地显示,指纹250A可插入对象2301A、2302A、2303A或2304A中。因此,不论构建样式如何,都可用控制对象的创建的人222A的指纹来标记所创建的对象。
图2进一步示出,可在开发环境内进一步处理对象2301A、2302A、2303A和2304A。在该示例中,人222B通过拷贝它们来操纵由人222A创建的对象。因此,由于人222B控制拷贝操作,可将用于人222B的指纹插入对象中。图2示出所计算的用于人222B的指纹250B。如同指纹250A一样,可结合关于对象的信息从人222B的用户ID计算指纹250B。在该示例中,使用人222B的指纹来重写人222A的指纹。因此,图2示出具有指纹250B的对象2301B。对象2301B可以是与对象2301A相同样式和功能的。然而,对象2301B可不同于对象2301A,因为指纹250B已取代了指纹250A。类似地,如果其它样式的对象由人222B所控制的操纵而引起,则用人222B的指纹来标记这些对象。因此,对象2302B、2303B和2304B显示为与对象2302A、2303A和2304A相对应,但却用指纹250B代替指纹250A。
对于在开发环境中处理对象的这种情况来说,如果在开发环境外部发现对象的未经授权的拷贝,则可以计算开发环境内怀疑发布该对象的那些人的指纹并与对象中的指纹相比较。例如,如果发现未经授权的对象具有指纹250A,则可以确定对象在由人222A控制的操作之后和在人222B的控制之下进行的该对象的任何操纵之前被发布。这样的信息可以为未经授权的公开提供调查基础,并且可引出对于未经授权的公开在人222A的控制之下进行的其他证据。
转到图3,提供了有助于确定对象的未经授权发布源的安全系统的另外的细节。在该示例中,指纹被插入从文件服务器拷贝的对象中。图3示出可响应于拷贝请求提供文件的组件。
因此,图3的系统包括网络客户端310。网络客户端310可请求来自开发环境内的文件服务器312的对象拷贝。如果网络客户端310由具有有效凭证的人操作,则文件服务器312可通过获得并提供所请求的文件的拷贝来响应拷贝请求。文件服务器312可做出响应,即使请求是针对开发中的对象的拷贝,请求拷贝的人意图不正当地进行分发。
例如,对象可存储为未分级(unstaged)图像314。在发布之前,可由分级组件316来处理未分级图像。分级图像可由媒体创建组件318进一步处理,该组件产生具有适合一种或多种分发类型的一种或多种构建类型的一个或多个对象320。这些对象可由发布管理器组件322管理。发布管理器组件322可根据需要基于拷贝请求中所请求的信息提供未分级图像314或对象类型320中的一种。不论对象的格式如何,发布管理器322都可作为发布数据324提供该信息。
分级组件316、媒体创建组件318和发布管理器322可使用本领域已知的技术操作。这些组件也可大体上如本领域已知的那样操作表示用于软件产品的对象的数据。然而,在所示实施例中,组件330将默认指纹嵌入未分级图像314中。在所示实施例中,指纹具有二进制大对象(blob)的格式。在该特定示例中,blob可以是128位长的数据串。默认指纹可以任何合适的方式生成。在所示实施例中,默认指纹由blob计算服务组件332生成。
在该示例中,组件332接收作为输入的默认用户ID和包含关于对象的信息的NT5.cat文件的时间戳。在该示例中,NT5.cat文件包含在构建对象时捕获的关于对象的元数据。因此,NT5.cat文件包含可用来识别生成该对象的特定构建的时间戳。然而,可使用任何合适的信息源来获得关于对象的信息和/或标识构建的任何合适的信息。
不论信息源如何,该信息都可以与生成指纹的相同的方式被处理。作为特定示例,可将默认用户ID散列并与该信息以及NT5.cat元数据文件的散列和时间戳组合以生成blob。作为对blob签名的方式,可以用安全系统的私钥对blob加密。在一些实施例中,组件332可访问私钥本身。然而,在其它实施例中,组件332可与保存私钥的签名组件334交互。响应于包含散列的用户ID和散列时间戳及元数据文件的请求,签名组件334可将加密blob返回给组件332。
不论以何种方式生成加密blob,组件332都可将加密blob提供给组件330。组件330可将加密blob作为默认指纹嵌入未分级图像314中。
响应于从网络客户端310接收的拷贝命令,插入未分级图像314中的默认指纹可由为控制网络客户端310的人生成的指纹所替换以请求对象的拷贝。在所示实施例中,安全系统可通过检测到服务器312已接收拷贝请求而用该用户的指纹来替换默认指纹。
在所示实施例中,服务器312被配置成具有过滤驱动器340。过滤驱动器340截取由服务器312接收的命令。过滤驱动器340将关于请求的文件的信息传递至安全应用程序组件342。结合所请求的文件的名称,驱动器340将对应于登入的用户的用户ID提供至发出拷贝请求的网络客户端310。
安全应用程序组件342接着与文件解析组件344交互。文件解析组件344确定所请求的文件是否为将在拷贝操作期间用指纹标记的文件。在所示实施例中,文件解析组件344确定所请求的文件是否包含开发中的软件产品的对象。然而,应当理解,可以用指纹标记任何合适的文件。
文件解析组件344将是否应用指纹标记所请求的文件的指示返回至用户模式安全组件342。如果所请求的文件不是要标记的类型,则拷贝操作可以像在常规服务器中那样继续进行。然而,如果所请求的文件是要标记的文件,则文件解析组件344将限定指纹的信息和限定所请求的文件内将插入指纹的一个或多个位置的信息返回至用户模式安全组件342。
在所请求的文件中将插入指纹数据的一个或多个特定位置可取决于所请求的对象的类型。在该示例中,文件解析组件344可包含用于处理不同类型的对象以确定将用指纹数据重写的一个或多个位置的子组件。这样的位置可以任何合适的方式来标识,包括基于将为其创建所请求的文件的构建类型而预配置。为了支持对不同类型对象的处理,文件解析组件344可包含用于解析不同类型文件的多个子组件。例如,子组件346B可解析构成准备用于在磁盘上分发的对象的文件。相比之下,子组件346C可解析准备用于作为电子下载的一部分分发的对象。子组件346A表示用于解析为以某些其它方式分发而创建的对象的组件,并且可表示将对任何合适类型的对象进行的处理。
每个子组件可执行一个或多个功能,包括确定所请求的文件是否实际上为将用指纹标记的文件。可执行的另一个功能是指定什么数据将要注入文件中。在所示实施例中,诸如子组件346A….346C的解析子组件中的每一个可基于请求拷贝文件的用户的用户ID从签名组件334获得加密blob。特定解析子组件可将blob提供至签名组件334,该blob通过散列用户ID并将其与来自与对象相关联的NT5.cat文件的时间戳组合而形成。然后,可由签名组件334对该信息加密并将其返回至解析子组件。基于该加密blob,解析子组件可确定将在所请求的文件内的规定位置插入的特定值。解析子组件可以任何合适的格式返回该信息。在一些实施例中,信息可作为偏移的列表返回到文件中,每个偏移指示将注入信息的指定位置。将注入的特定信息可记录在从特定解析子组件返回至用户模式安全组件342的缓冲器中。而且,在一些实施例中,对象可被压缩或加密,使得指纹不能仅通过直接替换而插入。相反,未加密和/或未压缩形式的对象可通过插入指纹来改变。然后,可将改变的图像重新压缩和/或重新加密以确定必须用哪个值替换哪个位置来实现在对象中插入请求拷贝的用户的指纹的效果。由于特定操作需要确定要在文件中插入的具体位,并且这些位将插入到的位置可取决于对象的类型,所以每种类型的对象可具有如图3所示的对应子组件。另外,在一些实施例中,通过用一指纹替换另一指纹来改变对象的一部分可能需要对对象进行其它改变以使其继续正确工作。与每种类型的对象相关联的子组件可被配置成确定对对象的这些和其它改变以插入指纹。
另外,为每种对象类型生成的指纹可基于与该对象相关联的信息。用于生成指纹的特定信息可优选地容易在运行时间可用。因此,不同的对象类型可具有在运行时间可用的不同类型的信息。与每种类型的对象相关联的解析组件可以为将在生成用于该对象类型的指纹过程中使用的对象类型指定特定信息。
不论对象类型如何,都可将包含在缓冲器中的信息与用于该信息将替换的文件的偏移结合返回至用户模式安全组件342。然后,可将该信息从用户模式安全组件342传递至过滤驱动器340。
过滤驱动器340可将该信息传递至组件350,组件350监测正传递通过过滤驱动器并表示包含拷贝命令的结果的信息流的数据流。在检测到由解析子组件所产生的偏移标识的位置之后,组件350可将数据流文件中该位置处的信息替换成来自缓冲器的表示将注入拷贝的文件中的指纹的信息。这样,可将指纹注入正拷贝的文件中适当的一个或多个位置中,而不明确修改拷贝命令和/或改变生成拷贝请求的人。
然而,网络客户端310接收流化文件,其中指定位置替换成合适的指纹信息。在该示例中,拷贝的文件可以是对象360的可安装图像。该图像可被安装以形成安装的图像362。安装的图像362可包括运行时间验证组件370。在其中对象对应于计算设备的操作系统的图示实施例中,运行时间验证组件可以是操作系统内核内的组件。
不论以何种方式实现运行时间验证组件,其都可以在运行时间执行。在该示例中,运行时间验证组件370被编程有限定插入下载的文件中的指纹可在安装的图像362中所处的位置的信息。因此,运行时间验证组件可访问签名并确定该签名是否表示有效指纹。在图3的特定示例中,由签名组件334使用私钥对指纹加密。运行时间验证组件370访问用于由签名组件334使用的私钥的对应公钥。公钥可以任何合适方式存储在安装的图像362内。在一些实施例中,操作系统包括密钥存储库或用于存储安全信息的其它机制。对应于由签名组件334使用的私钥的公钥可存储在这样的密钥存储库中或以任何其它合适的方式存储。
不论以何种方式存储密钥,运行时间验证组件370都可访问该密钥以解密表示指纹的加密blob。然后,可以分析解密blob的组件以确定该blob是否构成有效签名。作为特定示例,在图示实施例中,未加密的blob可包含四个部分。第一部分可以是将blob识别为指纹的头。另一部分可以是从请求拷贝要求的人的帐户凭证导出的不可逆散列。第三部分可指示对象的创建时间。第四部分可以是关于对象的多个元数据片段的散列。在一些实施例中,每次构建对象时,可以创建包含关于对象的信息的NT5.cat文件。未加密的blob可包含该文件的全部内容的散列。
在所示实施例中,运行时间验证组件370可访问关于作为安装的图像362的一部分保留的对象的可比信息。作为特定示例,NT5.cat文件可保留在安装的图像中,使得可以访问与对象相关联的时间戳。类似地,可以以用于创建有效签名的相同方式访问和散列该文件的全部内容。关于在运行时间生成的对象的元数据的散列和该对象的时间戳可与来自未加密的blob的那些进行比较。如果在运行时间生成的信息与未加密blob中的信息匹配,则可以认为未加密blob包含有效指纹。如果不匹配,则可以认为安装的图像对应于未经授权的或篡改的拷贝。响应于这样的确定,运行时间验证组件370可禁用对象以防止其操作。
现在转到图4,示出了在开发环境中操作组件的方法。方法400可由开发组件中的任何合适的组件执行。例如,该方法可由分发服务器执行,例如分发服务器118(图1)。然而,可执行能导致对象的未经授权发布的操作的任何服务器均可被配置成执行方法400。
在图4所示示例中,方法400在框410中开始。在框410中,接收对于涉及对象的操作的请求。该请求可以任何合适方式接收,包括通过监测由执行方法400的组件接收的命令并截取请求涉及将由安全系统保护的对象的操作的那些命令。
不论以何种方式接收对操作的请求,方法400均可进行到框412。在框412中,可获得标识请求在框410中接收的操作的人的信息。可使用任何合适的识别信息。在一些实施例中,识别信息可构成由为进行访问的人使用且可用作识别信息的凭证的一部分。作为特定示例,允许访问对象的每个人均可分配有用户ID。用户ID可以是在框412处获得的识别信息。然而,应当理解,可使用任何合适的识别信息。
在框414中,可获得关于对象的识别信息。该信息也可以任何合适的方式获得。在基于软件产品的构建生成对象的实施例中,识别信息可识别对象的特定构建。该构建可以任何合适的方式识别,例如从指示构建发生的时间的时间戳来识别。然而,可替代地或另外地使用其它信息来识别对象。在某些情况下,识别对象的信息中的一些或全部可被散列,并且可以使用识别信息的散列。
不论以何种方式获得标识人的信息和标识对象的信息,方法400均可进行到框416。在框416中的过程可能需要单向加密函数,使得无法恢复该人的特定身份。作为特定示例,在框416中,可以散列标识人的信息。
在框418中,可将标识人的信息的散列与标识对象的信息组合。该信息可以任何合适的方式组合。在所示实施例中,组合可以这样的方式进行,使得标识人的信息的散列可与用来标识对象的信息分开。作为简单的示例,标识人的信息的散列可在blob中占据第一部分位。标识对象的信息可在blob中占据第二部分位。
不论以何种方式组合标识人的信息的散列与标识对象的信息,都可在框420中对组合的信息签名。在框420中签名可根据任何合适的密码过程进行,包括如本领域已知的密码处理。签名可使用可访问执行方法400的组件的私钥生成。在一些实施例中,在框418中创建的blob可通过使用密钥对blob加密来签名。
不论以何种方式对组合信息签名,在框420中创建的签名信息都可充当在框410处请求操作对象的人的指纹。在框422中,该信息可用来替换已经在对象内的指纹。在其中方法400表示在对对象的第一受控操作期间的处理的情况中,在框422中的过程可能需要重写默认地包括在对象中的信息。这样的信息可以例如是具有与在框420中创建的指纹相同的形式的默认指纹。在其中对象此前曾经是导致指纹的生成的操作的对象的情况中,在框422中的过程可能需要替换此前插入对象中的那个指纹。
一旦在框422中替换了指纹,即可像在常规处理中那样完成在框410中请求的操作。完成方法400可导致对象的分发,使得对象可用于在计算设备上执行。在一些实施例中,对象可包括可根据如图5所示的方法500操作的实施组件。
在对象为操作系统的情况中,实施组件可以是操作系统内的内核模式组件。然而,用来将实施组件并入对象中的特定机制对于本发明不重要。
不论以何种方式执行方法500,该方法均可在框510中开始。在框510中,实施组件可读取存储在一个或多个指定指纹位置的信息。在框510中读取的一个或多个位置可对应于在上面执行方法500的计算设备的存储器中的位置,在将指纹正确地包括在对象中的情况下,当把对象安装在该计算设备上时,指纹被存储在该位置处。该位置可以任何合适的方式指定。例如,它可以由绝对存储器地址、由从对象的起点的安装位置测量的存储器中的偏移指定。替代地或另外地,可通过使用文件名或其它标识符来确定指纹的位置而动态地指定该位置。
在决策框520处,方法500可根据在所访问的一个或多个位置处是否存在指纹格式的信息而分支。例如,在指纹被存储为文件的实施例中,如果在指定位置不存在文件,过程可从决策框520分支到框550。在该示例中,框550表示其中对象被禁用的子过程的起点。
反之,如果在所访问的位置存在指纹格式的信息,则方法500可从决策框520分支到框522。在框522中,可对从该位置访问的信息进行密码操作以检查该信息是否已正确签名。在所示实施例中,在框522中的检查可能需要确定该信息是否用安全系统在开发环境中使用的预定密钥来签名。这样的过程可能需要尝试解密在框510中从该位置读取的信息。这样的过程可以如本领域已知的那样使用作为密钥对的一部分的密钥来进行,该密钥对具有在开发环境中用来对指纹信息加密的密钥。例如,在框522中使用的密钥可以是对应于在开发环境中使用的私钥的公钥。
在框522的过程之后,方法530可根据在框510中读取的信息的签名是否有效而分支。可使用任何合适的机制来确定签名是否有效。例如,作为在框522中的过程的结果,当确定在框510中读取的信息具有指示该信息构成指纹的头或指示该信息被格式化为指纹的任何其它合适的特性时,可以认为签名是有效的。
不论以何种方式验证签名,如果所访问的信息不包含有效签名,则方法500可再次分支到框550。可替代地,如果确定信息具有有效签名,则方法500可进行到框532。
在框532中,检查指纹以确定其是否包含关于用来安装组件执行方法500的对象的信息。在框532中进行的检查可以任何合适的方式进行。例如,组件可读取关于用来安装操作系统的执行图像的对象的信息。读取的信息可以是头信息。在框532中获得的头信息可以是在框414(图4)中获得的相同类型。这样,从安装在运行时环境中的对象获得的信息可与关于在框510中读取的用来生成指纹的对象的信息相比较。关于在运行时环境中的对象的信息与为之生成指纹的对象的比较允许实施组件认识到在运行时间检测到的指纹是否拷贝自另一对象,以便可能地模糊化发布安装在运行时环境中的对象的人的身份。因此,如果从指纹读取的关于对象的信息与关于在运行时环境中执行的对象的信息不匹配,则方法500可在决策框540处分支到框550。
框550中的过程表示其中对象被禁用的子过程的起点。可使用任何合适的技术来禁用对象。然而,在所示实施例中,对象以使实施组件模糊化的方式被禁用。在该示例中,该过程包括在框550中选择对象的安装的图像的随机位置。在框552中,实施组件等待随机时间。在框554中,实施组件在等待随机时间之后重写随机选择的位置。在框554中的重写可最终形成对象的出错停止执行。然而,如果在框554中重写一个位置不停止对象的执行,则过程可返回至框550。如图所示,选择和破坏随机位置的过程可继续,直到执行的对象崩溃。
反之,在框510中读取的指纹被验证为有效签名格式且与正执行的特定对象匹配的情况中,方法500可从决策框540分支到结束。当方法500以这种方式达到确定点时,对象可接着继续正常执行。如图5所示的实施机制可有助于确保在开发环境中插入对象中的指纹保存在该对象中,甚至在从开发环境发布对象之后,因为移除或替换指纹可导致对象停止执行。结果,如果检测到对象,则有可能保持在开发环境中插入对象中的指纹。从该指纹可识别控制在从开发环境发布对象之前的操作的人。因此,如果在开发环境外部发现对象的未经授权拷贝,则在调查中可使用该对象的指纹来确定责任人。图6示出了可对这样的未经授权对象进行的方法600。方法600可在任何合适的计算设备上执行。然而,在一些实施例中,方法600可在开发环境内或其它安全的区域实现,在该区域,对用来生成密码的诸如用户ID的个人识别信息的访问可以安全方式进行。
在该示例中,方法600显示为在框610中开始。在框610中,从对象的指纹位置读取信息。在框610中的过程可以与在框510中的过程相同的方式进行。虽然未在图6中明确示出,但方法600的过程可能需要诸如图5所示的过程以确定在框610中读取的信息是否为用于对象的有效指纹,并且从该指纹恢复用来生成该指纹的用户信息的散列。
不论用来获得用于对象的指纹的特定技术如何,过程都可以到达框612处。
在框612中,生成怀疑进行了对象的未经授权发布的人的全部或部分指纹的。在框612中可使用任何合适的机制来识别嫌疑人。然而,在一些实施例中,识别的嫌疑人局限于在开发环境中享有足以创建、拷贝和/或以能导致未经授权发布的其它方式操纵对象的特权的人。
不论以何种方式识别嫌疑人,都可以在框612中生成该嫌疑人的指纹。在框612中的过程可使用如结合图4所示的过程进行以生成指纹。然而,在一些实施例中,在框612中的过程可能需要仅生成指纹的一部分。例如,在框612中的过程可能需要生成标识人的散列信息,例如结合框416(图4)(上文)所描述的。
不论在框612中生成的信息的范围如何,都可以将其与在框610中读取的指纹中的对应信息进行比较。如果信息匹配,则可将在框612中为其生成指纹信息的嫌疑人作为可能涉及未经授权的对象的发布的人进行进一步的调查。反之,如果在框612中生成的指纹信息与从在框610中读取的指纹恢复的信息不匹配,则方法600可从决策框620分支到框622。在框622中,可以识别另外的嫌疑人。如果存在另外的嫌疑人,则方法600可返回至框612,在这里为另外的嫌疑人重复比较指纹的过程。
这样,可实现为人员进行未经授权的对象发布提供明显障碍的安全系统。然而,安全系统以这样的方式实现,使得关于在开发环境中操纵对象的人的个人识别信息不被公开。
图7示出了可在上面实现本发明的合适的计算系统环境700的示例。计算系统环境700仅是合适的计算环境的一个示例,而并非意图暗示对本发明的使用或功能的范围的任何限制。也不应将计算环境700理解为具有与示例性操作环境700中示出的组件中的任一个或组合有关的任何相关性或要求。
本发明可用多种通用或专用计算系统环境或配置来实施。可适合与本发明一起使用的熟知的计算系统、环境和/或配置包括但不限于个人计算机、服务器计算机、手持设备或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括上述系统或设备中任一个的分布式计算环境,等等。
计算环境可执行计算机可执行的指令,例如程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可在分布式计算环境中实施,在该环境中,任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可位于包括存储设备的本地计算机存储介质和远程计算机存储介质两者中。
参照图7,用于实现本发明的示例性系统包括具有计算机710形式的通用计算设备。计算机710的组件可包括但不限于处理单元720、系统存储器730和系统总线721,系统总线721将包括系统存储器的各种系统组件耦合到处理单元720。系统总线721可以是几种类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构中任一种的局域总线。作为示例,而非限制,这样的架构包括工业标准架构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为Mezzanine总线的外设部件互连(PCI)总线。
计算机710通常包括多种计算机可读介质。计算机可读介质可以是能由计算机710访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多用盘(DVD)或其它光盘存储器、磁盒、磁带、磁盘存储器或其它磁性存储设备,或任何其它可用于存储所需信息并可被计算机710访问的介质。通信介质通常具体表现为计算机可读指令、数据结构、程序模块或在诸如载波或其它传输机制的已调制数据信号中的其它数据,并且包括任何信息传输介质。术语“已调制数据信号”是指其特性中有一个或多个被以在该信号中编码信息的方式设置或改变的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、以及诸如声音、RF、红外和其它无线介质的无线介质。任何上述的组合也应该包括在计算机可读介质的范围内。
系统存储器730包括诸如只读存储器(ROM)731和随机存取存储器(RAM)732的易失性和/或非易失性存储器形式的计算机存储介质。包含在诸如启动期间帮助在计算机710内各元件之间传输信息的基本例程的基本输入/输出系统733(BIOS)通常存储在ROM731中。RAM732通常包含可由处理单元720即时存取和/或目前正处理的数据和/或程序模块。作为示例,而非限制,图7示出了操作系统734、应用程序735、其它程序模块736和程序数据737。
计算机710还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图7示出了读写不可移动、非易失性磁性介质的硬盘驱动器741、读写可移动、非易失性磁盘752的磁盘驱动器751、以及读写诸如CDROM或其它光学介质的可移动、非易失性光盘756的光盘驱动器755。其它能在示例性操作环境中使用的可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多用盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器741通常通过诸如接口740的不可移动存储器接口连接到系统总线721,并且磁盘驱动器751和光盘驱动器755通常通过诸如接口750的可移动存储器接口连接到系统总线721。
以上讨论和在图7示出的驱动器及其相关的计算机存储介质为计算机710提供计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图7中,硬盘驱动器741示出为存储操作系统744、应用程序745、其它程序模块746和程序数据747。应当指出,这些组件可以和操作系统734、应用程序735、其它程序模块736和程序数据737相同或不同。这里为操作系统744、应用程序745、其它程序模块746和程序数据747提供不同的附图标记来说明至少它们是不同的拷贝。用户可通过诸如键盘762和定点设备761的输入设备将命令和信息输入计算机710,定点设备761通常称为鼠标、轨迹球或触摸垫。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、碟形卫星天线、扫描仪等。这些和其它输入设备通常通过耦合到系统总线的用户输入接口760连接到处理单元720,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构来连接。监视器791或其它类型的显示设备也经由诸如视频接口790的接口连接到系统总线721。除了监视器之外,计算机还可包括诸如扬声器797和打印机796的其它外围输出设备,这些设备可通过输出外围接口795连接。
计算机710可使用到诸如远程计算机780的一个或多个远程计算机的逻辑连接在联网环境中运行。远程计算机780可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且通常包括以上关于计算机710描述的许多或所有的元件,虽然图7仅示出存储设备781。图7中描绘的逻辑连接包括局域网(LAN)771和广域网(WAN)773,但也可包括其它网络。这样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当用于LAN网络环境中时,计算机710通过网络接口或适配器770连接到LAN771。当用于WAN网络环境中时,计算机710通常包括调制解调器772或用于在诸如因特网的WAN773上建立通信的其它装置。可以是内置的或外置的调制解调器772可经由用户输入接口760或其它合适机构连接到系统总线721。在联网环境中,关于计算机710描述的程序模块或其部分可存储在远程存储设备中。作为示例,而非限制,图7示出了远程应用程序785驻留在存储设备781上。应当理解,所示网络连接为示例性的,并且可以使用在计算机之间建立通信链路的其它装置。
因此描述了本发明的至少一个实施例的若干方面,应当理解,本领域的技术人员可容易地想到各种更改、修改和改进。例如,虽然安全系统的操作结合操作系统而描述,但本文所述技术可结合任何合适的软件产品使用。
这样的更改、修改和改进旨在是本公开的一部分,并且旨在处于本发明的精神和范围内。此外,虽然指出了本发明的优点,但应当理解,并非本发明的每个实施例都将包括所描述的每个优点。一些实施例可以不实现在本文中和一些情况下描述为有利的任何特征。因此,以上描述和附图仅仅作为示例。
可以用多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或它们的组合来实现各实施例。当在软件中实现时,软件代码可在无论设置在单个计算机中还是分布在多个计算机之间的任何合适的处理器或处理器的集合上执行。这样的处理器可实现为集成电路,其中在集成电路组件中具有一个或多个处理器。然而,处理器可使用任何合适格式的电路实现。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,例如,机架式计算机、台式计算机、膝上型计算机或平板计算机。另外,计算机可嵌入在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话或任何其它合适的便携式或固定电子设备。
同样,计算机可具有一个或多个输入设备和输出设备。这些设备主要可用来呈现用户接口。可用来提供用户接口的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其它声音生成设备。可用于用户接口的输入设备的示例包括键盘和诸如鼠标、触摸垫和数字化输入板的定点设备。作为另一示例,计算机可通过语音识别或以其它声音格式接收输入信息。
这样的计算机可通过任何合适形式的一个或多个网络互连,包括作为局域网或广域网,例如企业网或因特网。这样的网络可基于任何合适的技术并可根据任何合适的协议来操作,并且可包括无线网络、有线网络或光纤网络。
而且,本文略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。另外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任一种来编写,并且还可编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
在这方面,本发明可被具体化为用一个或多个程序编码的一个或多个计算机可读存储介质(例如,计算机存储器、一个或多个软盘、致密盘(CD)、光盘、数字视频光盘(DVD)、磁带、闪存、现场可编程门阵列或其它半导体器件中的电路配置、或其它有形计算机存储介质),当这些程序在一个或多个计算机或其它处理器上执行时,它们执行实现本发明的上述各个实施例的方法。如从上述示例显而易见的,计算机可读存储介质可将信息保持足够的时间,以提供非暂态形式的计算机可执行指令。这样的一个或多个计算机可读存储介质可以是可传递的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其它处理器上以便实现如上所述的本发明的各个方面。如本文所用,术语“计算机可读存储介质”仅涵盖可被视为制品(即制造的物品)或机器的计算机可读介质。替代地或另外地,本发明可具体化为除计算机可读存储介质之外的计算机可读介质,例如传播的信号。
本文以一般的意义使用术语“程序”或“软件”来指可用于对计算机或其它处理器编程以实现如上所述的本发明的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各个方面。
计算机可执行指令可具有由一个或多个计算机或其它设备执行的许多形式,例如程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可根据需要在各个实施例中进行组合或分布。
而且,数据结构可以任何合适的形式存储在计算机可读介质中。为简化说明,数据结构可被示为具有通过在该数据结构中的位置而相关的字段。这样的关系同样可通过为具有传达各字段之间的关系的、计算机可读介质中的位置的各字段分配存储来实现。然而,可以使用任何合适的机制来在数据结构的各字段中的信息之间建立关系,包括通过使用指针、标签或在数据元素之间建立关系的其它机制。
本发明的各个方面可单独、组合或以未在上文所述实施例中特别讨论的各种安排来使用,从而并不将其应用限于前述描述中阐述或附图中示出的组件的细节和安排。例如,可以任何方式将一个实施例中描述的方面与其它实施例中描述的各方面组合。
同样,本发明可被具体化为已经提供了其示例的方法。作为该方法的一部分所执行的动作可用任何合适的方式来排序。因此,可以构建各个实施例,其中各动作以与所示次序不同的次序执行,该次序可包括同时执行某些动作,即使这些动作在示例性实施例中被示为顺序的动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
另外,本文所用短语和术语是用于描述的目的,而不应看作是进行限制。本文对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在涵盖其后所列的项目及其等同物,以及附加的项目。
Claims (8)
1.一种处理软件对象的方法,所述方法包括:
结合涉及所述对象的操纵的动作:
获得标识控制所述动作的人的信息;
用至少一个处理器基于标识所述人的信息和标识所述对象的信息加密地生成混淆数据;
将所述混淆数据合并入所述对象中;以及
其中生成混淆数据包括:
计算标识所述人的所述信息的散列;
将所述散列与标识所述对象的信息组合;以及
用密钥对所述组合信息签名。
2.根据权利要求1所述的方法,其中:
所述动作包括制作所述对象的构建。
3.根据权利要求1所述的方法,其中:
所述动作包括制作所述对象的拷贝或移动所述对象。
4.根据权利要求3所述的方法,其中:
所述密钥为密钥对的第一密钥;并且
所述对象包括与所述密钥对的第二密钥相关联的组件,所述组件适于基于所述第二密钥和标识所述对象的信息证明所述混淆数据包括标识所述对象的信息。
5.一种在计算设备上执行对象的方法,所述方法包括:
访问所述对象的组件;
用至少一个处理器通过下列方式确定所述组件是否有效:
检查所述组件是否用预定密钥签名;以及
检查所述组件是否包含标识所述对象的信息;
当所述组件有效时,执行所述对象;并且
当所述组件无效时,禁用所述对象;
所述组件为所述对象的第一组件;并且
确定所述第一组件是否有效由在所述处理器上执行的所述对象的第二组件进行。
6.根据权利要求5所述的方法,其中:
禁用所述对象包括在确定加密组件是否有效之后的随机时间禁用所述对象。
7.根据权利要求6所述的方法,其中:
禁用所述对象包括:
随机选择所述对象的部分;以及
修改所述随机选择的部分。
8.根据权利要求5所述的方法,其中:
访问所述组件包括从所述对象内的预定位置读取文件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/230,708 US8656182B2 (en) | 2011-09-12 | 2011-09-12 | Security mechanism for developmental operating systems |
US13/230708 | 2011-09-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102982262A CN102982262A (zh) | 2013-03-20 |
CN102982262B true CN102982262B (zh) | 2015-11-25 |
Family
ID=47830924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210335901.7A Active CN102982262B (zh) | 2011-09-12 | 2012-09-12 | 用于开发的操作系统的安全机制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8656182B2 (zh) |
EP (1) | EP2756443A4 (zh) |
CN (1) | CN102982262B (zh) |
WO (1) | WO2013039527A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9123106B2 (en) | 2012-12-13 | 2015-09-01 | Microsoft Technology Licensing, Llc | Watermarking screen capture content |
CN105024970B (zh) * | 2014-04-18 | 2018-07-13 | 中国电信股份有限公司 | 移动应用数据拷贝的控制方法、系统、客户端和服务器 |
EP3086254A1 (en) * | 2015-04-22 | 2016-10-26 | Gemalto Sa | Method of managing applications in a secure element when updating the operating system |
CN106980900A (zh) * | 2016-01-18 | 2017-07-25 | 阿里巴巴集团控股有限公司 | 一种特征数据处理方法及设备 |
CA3027218A1 (en) * | 2017-12-12 | 2019-06-12 | Interset Software, Inc. | Systems and methods for file fingerprinting |
CA3027220A1 (en) | 2017-12-12 | 2019-06-12 | Interset Software, Inc. | Tracking file movement in a network environment |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US221104A (en) * | 1879-10-28 | Improvement in grain-planters | ||
US6910132B1 (en) * | 2000-09-15 | 2005-06-21 | Matsushita Electric Industrial Co., Ltd. | Secure system and method for accessing files in computers using fingerprints |
CN1690910A (zh) * | 2004-04-23 | 2005-11-02 | 微软公司 | 文件锁定器和提供及使用文件锁定器的机制 |
CN100478977C (zh) * | 2006-03-28 | 2009-04-15 | 国际商业机器公司 | 用于在软件应用中设置安全参数的方法和系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6766353B1 (en) | 2000-07-11 | 2004-07-20 | Motorola, Inc. | Method for authenticating a JAVA archive (JAR) for portable devices |
AU2002232817A1 (en) * | 2000-12-21 | 2002-07-01 | Digimarc Corporation | Methods, apparatus and programs for generating and utilizing content signatures |
US7194618B1 (en) * | 2001-03-05 | 2007-03-20 | Suominen Edwin A | Encryption and authentication systems and methods |
DE50200601D1 (de) * | 2002-05-24 | 2004-08-12 | Swisscom Mobile Ag | Vorrichtungen und Verfahren zur Zertifizierung von digitalen Unterschriften |
KR100899199B1 (ko) * | 2002-11-05 | 2009-05-27 | 삼성전자주식회사 | 지문인식을 이용한 보안시스템 및 보안방법 |
US7797750B2 (en) | 2004-08-10 | 2010-09-14 | Newport Scientific Research Llc | Data security system |
US8056138B2 (en) | 2005-02-26 | 2011-11-08 | International Business Machines Corporation | System, method, and service for detecting improper manipulation of an application |
US8370632B2 (en) | 2005-04-18 | 2013-02-05 | Vpsign Ltd. | Apparatus and method for incorporating signature into electronic documents |
EP2443580A1 (en) | 2009-05-26 | 2012-04-25 | Websense, Inc. | Systems and methods for efficeint detection of fingerprinted data and information |
-
2011
- 2011-09-12 US US13/230,708 patent/US8656182B2/en active Active
- 2011-10-11 EP EP11872448.3A patent/EP2756443A4/en not_active Withdrawn
- 2011-10-11 WO PCT/US2011/055727 patent/WO2013039527A1/en active Application Filing
-
2012
- 2012-09-12 CN CN201210335901.7A patent/CN102982262B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US221104A (en) * | 1879-10-28 | Improvement in grain-planters | ||
US6910132B1 (en) * | 2000-09-15 | 2005-06-21 | Matsushita Electric Industrial Co., Ltd. | Secure system and method for accessing files in computers using fingerprints |
CN1690910A (zh) * | 2004-04-23 | 2005-11-02 | 微软公司 | 文件锁定器和提供及使用文件锁定器的机制 |
CN100478977C (zh) * | 2006-03-28 | 2009-04-15 | 国际商业机器公司 | 用于在软件应用中设置安全参数的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2756443A4 (en) | 2015-05-27 |
EP2756443A1 (en) | 2014-07-23 |
US8656182B2 (en) | 2014-02-18 |
WO2013039527A1 (en) | 2013-03-21 |
US20130067238A1 (en) | 2013-03-14 |
CN102982262A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7346780B2 (en) | Integrity ordainment and ascertainment of computer-executable instructions | |
Naumovich et al. | Preventing piracy, reverse engineering, and tampering | |
CN102982262B (zh) | 用于开发的操作系统的安全机制 | |
JP4702957B2 (ja) | 耐タンパ・トラステッド仮想マシン | |
Nagra et al. | Surreptitious software: obfuscation, watermarking, and tamperproofing for software protection | |
US7549147B2 (en) | Security framework for protecting rights in computer software | |
US20210294879A1 (en) | Securing executable code integrity using auto-derivative key | |
US20170300670A1 (en) | Systems and methods for watermarking software and other media | |
US7779478B2 (en) | System and method for distributed module authentication | |
US20160364707A1 (en) | Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content | |
US20050060568A1 (en) | Controlling access to data | |
US20050204126A1 (en) | Dual virtual machine architecture for media devices | |
JP2003330560A (ja) | デジタル権利管理(drm)システムを使用するソフトウェアアプリケーションの保護のための方法および媒体 | |
US8776258B2 (en) | Providing access rights to portions of a software application | |
CN101199159A (zh) | 安全引导 | |
CN110050258B (zh) | 用于防止应用程序盗版的设备、系统和方法 | |
Jia et al. | ERMDS: A obfuscation dataset for evaluating robustness of learning-based malware detection system | |
US20080155690A1 (en) | System and Method for Authenticating and Validating the Linkage Between Input Files and Output Files in a Computational Process | |
JP2002015511A (ja) | リムーバブルメディアを用いたオフライン共有セキュリティシステム | |
KR102066439B1 (ko) | 디지털 데이터 관리 시스템 및 그 방법 | |
Khan et al. | A Comparative Analysis of Software Protection Schemes. | |
KR101097105B1 (ko) | Sw 소스코드 난독화와 버전 관리시스템과의 연동 방법 및 시스템 | |
Bove | A Large-Scale Study on the Prevalence and Usage of TEE-based Features on Android | |
Gupta et al. | WHLK: Framework for Software Authentication and Protection | |
JP2019186848A (ja) | 情報処理システムおよびプログラム実行制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150702 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150702 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |