CN100437479C - 一种用于管理堆上的数据使用的系统及方法 - Google Patents

一种用于管理堆上的数据使用的系统及方法 Download PDF

Info

Publication number
CN100437479C
CN100437479C CNB2005100649183A CN200510064918A CN100437479C CN 100437479 C CN100437479 C CN 100437479C CN B2005100649183 A CNB2005100649183 A CN B2005100649183A CN 200510064918 A CN200510064918 A CN 200510064918A CN 100437479 C CN100437479 C CN 100437479C
Authority
CN
China
Prior art keywords
data
heap
function
secret
heaps
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.)
Expired - Fee Related
Application number
CNB2005100649183A
Other languages
English (en)
Other versions
CN1694062A (zh
Inventor
B·M·维尔曼
N·T·路易斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1694062A publication Critical patent/CN1694062A/zh
Application granted granted Critical
Publication of CN100437479C publication Critical patent/CN100437479C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47LDOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
    • A47L25/00Domestic cleaning devices not provided for in other groups of this subclass 
    • A47L25/12Devices or implements for cleaning lamp chimneys
    • AHUMAN NECESSITIES
    • A46BRUSHWARE
    • A46BBRUSHES
    • A46B13/00Brushes with driven brush bodies or carriers
    • A46B13/02Brushes with driven brush bodies or carriers power-driven carriers
    • A46B13/04Brushes with driven brush bodies or carriers power-driven carriers with reservoir or other means for supplying substances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

创建专用堆以储存对其应用不同规则的不同数据类。提供了函数库,它被设计成通过仅将数据储存在被指定为用于适当的数据类的堆上,并阻止在堆中的数据上执行与应用于该堆的规则不一致的行动,来遵循应用于不同堆的不同规则类。以此方式使用多个堆阻止了在数据上执行与数据不一致的操作的程序员错误,因为程序员必须明确地将数据从一个堆复制到另一个以执行该行动。在一个示例中,一个堆被指定为用于机密数据的储存,而另一堆被指定为用于通用(非机密)数据。

Description

一种用于管理堆上的数据使用的系统及方法
技术领域
本发明一般涉及计算领域,尤其涉及多个堆的使用来管理服从不同的预期、期望或需要的使用的数据。
背景技术
在典型的计算领域中,运行的程序可生成或接收需要被储存的数据。使用了存储器中被称为“堆(heap)”的部分来储存这类数据。通常,需要执行动态存储器分配的程序在启动程序不久之后加载存储器管理函数的库。库然后向操作系统请求大块存储器以形成堆,并且程序从库中调用例程来请求存储器的某些数量的字节的分配。库通过从堆中提供若干字节的存储器来服务程序的请求。
通常,程序具有一个堆。堆可根据程序的需要被扩展或串接,但是对于堆中的所有存储器,它们通常是包含向其动态地分配空间的所有数据的单个、无差别的类-即,不能尝试区分堆中不同的位置,如对于什么可以储存在特定位置处,或者什么可以用储存在特定位置处的数据片断来完成。
某些类型的数据会落入不同的类中,它们建议了对应其中当使用不同的数据类的方式的限制。例如,数据可被分类为机密或非机密的,其中,“机密”数据包括密钥、口令等。在程序地址空间外将非机密数据发送到诸如文件、网络等地点是常见的。尽管机密数据也可在程序的地址空间外发送,然而发送机密数据应当仅在十分有限的环境下完成。一类安全缺口是由于程序员的错误而使机密数据被不注意地发送到公众的情况。由于常规的系统在与其它任何数据相同的堆中储存机密数据,因此没有从数据的位置来判断它是否机密的方法。
鉴于上述原因,需要一种克服现有技术缺点的机制。
发明内容
本发明提供了多个堆的使用来储存不同的数据类。程序员可用于构建应用程序的库函数被设计成根据要储存的数据类型向特定的堆分配数据。此外,库函数被设计成不从一个堆到另一个复制数据。如果发出了要如此做的明确的指令,则可将数据从一个堆复制到另一个,但是程序员错误地发出这一指令的几率是相对较低的。由此,可很大程度地减少机密数据的疏忽泄漏。
在一个较佳实施例中,分配了两个堆一个用于一般数据,另一个用于机密(如,密钥,口令等等)。创建、管理或储存机密的库函数从机密堆分配存储器,以储存这类机密。由于构成机密堆的存储器页的虚拟地址范围是已知的,因此可从任何给定的存储器地址中容易地判断包含在该地址中的数据是否为机密堆的一部分。由此,库中的其它函数被设计成不用储存在已知是机密堆的一部分的位置中的数据来执行某些行动。(例如,通过网络发送数据的函数可被配置成如果试图发送位于机密堆中的数据,则不发送该数据。作为拒绝发送数据的替换,该函数可被配置成如果试图通过网络发送机密数据,则向用户发出警告,并且给予用户中止发送的选项,只要相关的安全模型假定用户具有防止机密泄漏的动机。)将数据明确地从一个堆复制到另一个总是可能的,但是由于执行这一复制的指令必须明确地作出(即,库函数如果没有程序员的知识将不在幕后将数据从一个堆传输到另一个),因此储存在堆中的机密数据的保护处于仅当有程序员这样做的意图的合理可靠的指示时才可将机密复制到堆之外的事实之中。
多个堆的使用不限于用于机密和非机密数据的两个堆。更一般地,可设计任意数量的堆用于任意数量的数据类。在某些情况下,不同的数据类可包括不同类的机密-例如,一个堆用于政党机密,而另一个堆用于医药机密;或者,作为另一示例,加密的电子邮件可以被分类成不同的类,并且可以使用不同的堆来保护各种不同的机密,而这些不同的机密保护了每一类。可能存在任意数量的不同类型的类,并且本发明不限于任一特定的分类数据的方法,或任意特定数量的类。一般而言,每一类可具有关于对该类中的数据可以做什么或不可以做什么的其自己的规则,并且函数库可被设计成遵守这些关于堆的规则。
下文将描述本发明的其它特征。
附图说明
当结合附图阅读时,可以更好地理解以上概述和以下较佳实施例的详细描述。为说明本发明的目的,附图中示出了本发明的示例性构造;然而,本发明不限于所揭示的特定方法和手段。附图中:
图1是其中可实现本发明的各方面的示例计算环境的框图;
图2是可从中分配用于执行程序的存储器的堆的框图;
图3是其中多个堆可用于执行程序的环境的框图;
图4是依照本发明的各方面提供对不同堆的访问的应用编程接口(API)的框图;以及
图5是依照本发明的各方面使用特殊堆的方法的流程图。
具体实施方式
综述
本发明提供了一种机制,由此,不同的数据类可被储存在不同的堆上。处理不同数据类的函数可被配置成将数据从每一类仅写到适当的堆(或将假定属于特定类的数据仅从特定的堆读出),并遵守在使用来自特定堆的数据时控制该堆的规则。例如,可创建两个堆分别用于储存机密和非机密数据。函数可被配置成在机密堆上储存所有的机密,而拒绝将数据从机密堆写出到任何非机密位置。作为另一示例,一个堆可被设计成储存服从某些非破坏标准的数据(如,可信数据),并且使用和依赖于这类数据的函数可被配置成仅从该堆接收数据,以防止其输入数据被破坏。相反,函数可被配置成拒绝将不可信数据(如,来自不可信来源的数据,或以不满足的信任适用标准的某一方式创建或获取的数据)写到可信堆上,由此保持了该堆上的数据的完整性。换言之,关于不同存储器区域(如,不同堆)的分隔的规则可用于防止机密数据泄漏,也防止坏数据进入。一般而言,不同的堆可用于储存服从关于数据的特定规则的数据,并且函数可被配置成通过仅以重视那些规则的方式使用(即,读和写)堆来遵守那些规则。
示例性计算装置
图1示出了可在其中实现本发明各方面的示例性计算环境。计算系统环境100仅为合适的计算环境的一个示例,并非暗示对本发明的使用范围或功能的局限。也不应将计算环境100解释为对示例性操作环境100中示出的任一组件或其组合具有任何依赖或需求。
本发明可以使用众多其它通用或专用计算系统环境或配置来操作。适合使用本发明的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、网络PC、小型机、大型机、嵌入式系统、包括任一上述系统或设备的分布式计算环境等等。
本发明可在诸如由计算机执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络或其它数据传输介质连接的远程处理设备来执行。在分布式计算环境中,程序模块和其它数据可以位于本地和远程计算机存储介质中,包括存储器存储设备。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算装置。计算机110的组件可包括,但不限于处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。处理单元120可表示诸如多线程处理器上支持的多逻辑处理单元。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用任何各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。系统总线121也可被实现为通信设备间的点对点连接、交换光纤等。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CDROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常在诸如载波或其它传输机制的已调制数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图1示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CD ROM或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字视频带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
图1讨论并示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(通常指鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,通过输出外围接口195连接。
计算机110可以在使用到一个或多个远程计算机,如远程计算机180的逻辑连接的网络化环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公用网络节点,并通常包括许多或所有上述与计算机110相关的元件,尽管在图1中仅示出了存储器存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或其它装置,用于通过WAN 173,如因特网建立通信。调制解调器172可以是内置或外置的,通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,描述的与计算机110相关的程序模块或其部分可储存在远程存储器存储设备中。作为示例而非局限,图1示出了远程应用程序185驻留在存储器设备181中。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
在执行程序期间,可能必须分配存储器用于数据存储。如本领域中已知的,“堆”是被指定为为了满足存储器分配请求而分配的一个或多个存储器的块。通常,程序使用库例程来请求一些存储器;库例程然后从堆中分配存储器,并返回被分配的存储器地址。图2示出了程序如何从堆中获取存储器分配。
程序204是在计算机环境中执行的程序。在其执行期间,程序204可能需要存储器来储存某一类型的数据。用于整个操作环境的存储器由操作系统分配,并且程序204可使用系统调用来向操作系统直接请求存储器分配。然而,对程序204更常见的是使用诸如存储器管理API 208等标准库函数来请求存储器。
当程序204需要存储器时,程序204向存储器管理API 208发出请求206,以请求所需的存储器量。请求206一般采取对由存储器管理API 208展示的函数(如,malloc(size))的调用的形式。存储器管理API 208然后在堆202内定位特定大小的未分配连续存储器块,并向程序204返回这一存储器块的基地址。
堆202是由存储器管理API 208管理的一个或多个存储器块-通常是大存储器块。存储器管理API 208通过向操作系统请求一个或多个分配来获取堆202的存储器。尽管如上所述,程序可能直接向操作系统请求每个分配,然而使用在按需的基础上获取大存储器块(即,堆202)分配给程序204的存储器管理API 208一般是更有效的,因为这一技术减少了(昂贵的)系统调用的数量。另外,存储器管理API 208可通过使用趋向于抵抗碎片的技术,并通过执行无用信息收集(garbagecollection)来有效地管理堆202中的存储器。此外,由于通过存储器管理API 208分配给程序204的所有存储器位于堆202中,因此所有这样的存储器被称为落入一个或多个定义良好的地址范围之内。如下文所讨论的,基于存储器是否落入特定的地址范围之内将存储器标识为在特定的堆上的能力有利地用于在需要以不同方式或依照不同规则处理的不同类型的数据之间进行区分。然而,应当注意,基于数据位于哪一堆来实施数据分隔的能力不限于这一实施仅由存储器管理API执行的情况;在一个较佳实施例中,管理存储器的所有函数-不论是存储器管理API的一部分、任何其它API还是操作系统(如,操作系统的底层存储器分配函数)-将被配置成实施将不同的数据类到不同的堆的分隔。
使用多个堆来管理不同类型的数据
图3示出了其中两个不同的堆202(1)和202(2)被维护成管理不同类型的数据的情形。在此示例中,堆202(1)用于管理“机密”数据,而堆202(2)用于管理其它数据。“机密”数据是一般应当不被散布,或应当仅在非常特殊的条件下散布的数据。密钥是机密数据的示例。
在一个示例中,堆202(1)和202(2)由两个不同的API来分配-一个在机密上执行操作,而另一个不是。(或者,可以有单个API,它使用两个堆,并在机密上执行某些操作,而在非机密上执行某些操作。)在图3的示例中,有一机密管理API 302,和一“其它”API 304。例如,机密管理API 302可展现生成密钥的函数,或使用这类密钥用于加密、解密、数字签名等的函数。“其它”API 304可执行不涉及机密管理的其它函数-如,输入/输出、排序、数学计算、或任何其它类型的函数。机密管理API 302维护堆202(1)来储存机密数据。“其它”API 304维护堆202(2)来储存非机密数据。例如,当机密管理API 302创建密钥并需要空间来储存该密钥时,它从堆202(1)获取储存该密钥的存储器。当“其它”API 304需要存储器时(如,I/O缓冲区),则它从堆202(2)获取存储器。在图3的示例中,API 302和304被示出为单独的API,尽管如上所述,机密管理也可以是执行机密管理和其它函数两者的单个API;这一API可维护两个堆202(1)和202(2),并可根据特定函数正在储存的数据类型来使用不同的堆。
程序204可通过调用任一API展现给程序204的函数来调用API 302或API304。如果调用的函数导致存储器分配,则调用的函数被配置成从适当的堆中分配存储器。
如上所述,当堆用于分配存储器时,可标识来自堆的存储器,因为它将落入已知将构成堆的地址范围之内。类似地,当使用两个堆时,构成每一堆的地址范围是已知的,因此可将给定的地址标识为来自一个堆或另一堆(或者在不从任一堆分配存储器的情况下,标识为不来自任何堆)。标识特定的存储器位置来自两个堆中的哪一个的能力本质上定义了两种不同的数据类,并且这一区分可有利地用于对不同的数据类应用不同的规则。例如,API 302和304都可被配置成理解机密一般应当不被发送到I/O设备。(例如,将机密密钥发送到网络端口可代表异常行为。)由此,构成API的函数可被配置成通过核查数据位于何处来识别机密堆上的数据何时正以异常方式使用,并且那些函数可被配置成适当地运作(例如,通过引发警告、呈现警告消息或拒绝执行所请求的任务)。例如,采用地址作为自变量,并向I/O设备写出该地址的内容的函数可被配置成将该地址与机密堆的已知地址范围进行比较;如果该地址是机密堆的一部分,则该函数可拒绝执行写。
应当注意,尽管API 302和304的函数可被配置成防止机密堆202(1)中的数据的滥用,然而程序员仍有可能将数据从一个堆传输到另一个。例如,如果a是机密堆202(1)上的地址,而b是非机密堆202(2)上的地址,则程序员总是可以执行以下指令:
*b=*a
(在此示例中,这是C编程语言)。这一指令具有将机密数据复制到非机密堆的效果。然而,即使这一指令可被发出,配置API使得它们不会共谋滥用机密堆上的数据迫使程序员令其将数据从机密堆传输出去的意向变得明确。要求程序员明确地传输数据通过迫使程序员公开地确认他或她将机密作为非机密处理的意向具有减少程序员错误的有益效果。
应当注意,尽管图3示出了两个堆的情况-一个堆用于储存机密,而另一个用于储存非机密-更一般地,系统可被配置成维护任意数量的堆,其中,不同的规则组被应用到储存在堆中的不同数据类。API可被配置成识别任何数据存储在哪一堆上,并遵循应用到该数据类的任何规则。
实施堆规则的示例API
图4示出了由API 302和304展示的函数的示例,它们可用于实施应用到不同堆的不同规则。在图4的示例中,API 302展示了在机密堆202(1)上操作的函数,而API 304展示了在其它数据(即,储存在非机密堆202(2)中,或储存在不是机密堆202(1)的一部分的其它位置上的数据)上操作的函数。
例如,API 302展示了涉及密钥的函数-如,createkey()、applysecert()和decrypt()。例如,createkey()函数可从机密堆202(1)中分配足够大以储存类型“SECRET”的数据的存储器部分、生成密钥、将密钥储存在分配的存储器中、并返回指向储存的机密的指针。sign()函数可采用指向机密的指针和指向散列的指针作为自变量、基于散列和机密计算数字签名、并将签名写到已知的位置。decrypt()函数可采用指向机密的指针、指向包含密文的字符的指针和指向将写入解密的密文(“明文”)的位置的指针作为自变量,并且然后可使用机密以将密文解密到提供给明文的位置。在一个实施例中,decrypt()函数可以不关注密文位于何处,但是可要求明文位于被指定为用于机密的堆上(由此防止明文被不加区别地使用)。所有这些函数适当地利用了机密-即,它们创建或使用机密,但是不通过I/O设备发送机密。(“适当”指“符合应用于堆的任何规则”;如上所述,本发明不限于特殊堆储存机密的情况,也不限于应用到该堆的规则是避免通过I/O设备发送机密的情况。)
相反,API 304展示了在一般数据上操作的函数-如,格式化数据并将其写到标准输出流的printf(),或者将任意数据发送到指定的IP(“互联网协议”)地址的transmit()。当向这些函数传递存储器地址作为自变量时,它们可被配置成确定该地址是否落入作为机密堆202(1)的一部分的范围之内。如果地址落入任何这样的范围之内,则函数可如上所述地被配置成适当运作(如,引发警告、拒绝执行请求的任务等等)。
如上所述,不必要将在机密上执行操作的函数以及不在机密上执行操作的函数归类成单独的API。在许多情况下,API将包含在机密上执行某些操作并在非机密上执行某些操作的函数;这些函数可依照它们正在操作的数据类型使用机密和非机密堆两者。
使用特殊堆的示例过程
图5示出了当使用特殊堆时可能发生的示例过程。图5示出了两个堆的示例-一个用于机密,另一个用于其它数据-尽管如上所述,本发明不限于两个堆的情况,或一个堆被指定为用于储存机密的情况。
最初,程序作出对管理机密的函数-如上述createkey()函数-的调用(502)。程序然后为机密堆上的数据分配位置,并将数据储存在分配的位置中(504)。在程序中的某一随后的点,程序以对机密不适当的方式将地址传递到使用该地址内容的函数(506)-例如,程序可将地址传递到printf()函数。被调用的函数然后核查该地址以确定该地址是否为机密堆的一部分。如果地址不是机密堆的一部分,则函数正常地执行请求的行动。如果该地址是机密堆的一部分,则函数采取适当的行动(508)-例如,向用户警告将要采取的行动、拒绝执行该函数等等。
示例情形和使用
在诸如微软的下一代安全计算基础(NGSCB)等安全计算系统中,明确地考虑程序中的哪些信息是敏感的,以及哪些信息来自不可信来源并必须被十分仔细地处理将是有益的,因为它可能具有不期望的内容(如,恶意利用的企图)。有至少两类问题期望被防止:1)传统的缓冲区溢出(overrun),其中,超尺寸的分组将破坏执行栈,并导致不正确的代码运行,以及2)程序员错误,其中,某些机密被复制到受保护的空间之外。这些问题可通过提供若干不同的堆以供应用程序从中分配,并仅允许某些类型的数据被传输到来自正确堆的分配中来防止。
通常,将数据移出进程空间的系统服务(写入文件或网络,进行进程间通信等)无法说出调用程序地址空间中的哪些数据地址能够以这一方式“合理”或“安全”地展示。如上所述,本发明提供了一种使程序能够隔离系统可标识的区域中尤其重要的机密数据的方法。由此,本发明允许系统(以及系统服务)能够“帮助”程序不泄漏机密,并也减少了机密由于程序员错误而被广播的机会。换言之,本发明令书写偶然泄漏机密的代码变得更难。
在一个较佳实施例中,存储器分配函数要求调用程序明确地指定其分配应当来自哪一堆。由于系统知道每一堆的虚拟地址范围,因此每一系统服务可拒绝在数据上执行不适当的行动。在一个实施例中,可在启动了NGSCB可信代理的时刻保存每一堆的虚拟地址范围;如有必要,可在启动时基于伴随可执行映像的信息来调整堆的大小。例如,诸如通过写入Windows文件系统的未加密文件来将数据传输到受保护空间之外的函数可拒绝将可能包含解密密钥的缓冲区复制出来;类似地,将数据传输到受保护的空间内的函数可拒绝将来自不可信来源的数据,或在无法保证数据将满足应用于受保护空间的任何标准的情况下创建的数据写入受保护空间内,由此保持了受保护空间中的数据的完整性。加密数据的函数可在提供的密钥不在被指定为储存可信数据的堆时拒绝运行。从安全存储检索加密钥资料的函数或密钥对生成器可坚持它们所写的值必须到被指定为储存机密的堆中。处理没有特定可信性保证的数据的函数可拒绝将该数据写入为可信数据所保留的堆中。这些示例中的公共主题是不同的函数可关于将出现在某些参数中的信息类型作出假设,并且程序不可能通过例如检索缓冲区的关键字然后通过套接字发送该缓冲区来泄漏信息,或通过将不可信数据写入受保护堆中来破坏该受保护的堆。如上所述,程序可有目的地这样做,但是上述机制防止这些行动由于错误或意外而被执行。
应当注意,上述示例仅为解释目的而提供,并不解释为局限本发明。尽管参考各实施例描述了本发明,然而可以理解,此处所使用的词语是描述和说明性词语,而非限制性词语。此外,尽管此处参考特定的装置、材料和实施例描述了本发明,然而本发明不限于此处所揭示的细节;相反,本发明延及落入所附权利要求书的范围内所有在功能上等效的结构、方法和使用。从本说明书的教导获益的本领域的技术人员可以在不脱离本发明各方面的范围和精神的情况下对其作出各种修改和变化。

Claims (26)

1.一种用于管理堆上的数据使用的系统,其特征在于,包括:
用于创建多个堆的一个或多个存储器管理组件,有关于每一堆上的数据的使用的不同规则组,所述一个或多个存储器管理组件使得由程序使用的函数可用,所述函数被配置成储存数据,所述函数还被配置成:(1)基于数据的特性或预期使用确定所述堆中的哪一个来储存数据;以及(2)基于数据位于哪一堆上确定所请求的数据使用是否与应用于该数据的规则相一致;并且其中,所述函数采取一种或多种措施来防止应用于每一堆的规则的违背。
2.如权利要求1所述的系统,其特征在于,所述多个堆包括第一堆和第二堆,所述第一堆被指定为储存其使用以某一方式被限制的数据,所述第二堆被指定为储存其使用不受限制的数据。
3.如权利要求2所述的系统,其特征在于,所述第一堆储存要保密的数据。
4.如权利要求3所述的系统,其特征在于,所述函数的第一个包括输出函数,并且其中,所述函数的第一个采取一种或多种措施来防止储存在所述第一堆上的数据的输出。
5.如权利要求3所述的系统,其特征在于,所述要保密的数据包括一个或多个密钥。
6.如权利要求3所述的系统,其特征在于,所述要保密的数据包括经解密的密文。
7.如权利要求1所述的系统,其特征在于,所述一个或多个组件构成一个组件。
8.如权利要求1所述的系统,其特征在于,每一堆被储存在一个或多个存储器位置范围内,所述范围对所述一个或多个组件已知,并且其中,所述函数基于给定的数据的地址所落入的范围确定所述数据位于所述多个堆的哪一个上。
9.如权利要求1所述的系统,其特征在于,所述一种或多种措施包括拒绝在数据上执行与应用于储存所述数据的堆的规则不一致的行动。
10.如权利要求1所述的系统,其特征在于,所述一种或多种措施包括生成警告,表示请求了在数据上执行与应用于储存所述数据的堆的规则不一致的行动。
11.一种方法,包括:
创建多个堆,每一堆对应于一不同的数据类;
接收执行涉及属于第一类的第一数据的存储的第一函数的第一请求;
从所述堆中的第一个分配存储器的第一部分;
将所述第一数据储存在存储器的所述第一部分;
接收执行涉及储存在存储器的所述第一部分内的数据的使用的第二函数的第二请求;
依照所述数据的使用对属于所述第一类的数据是否为可准许的,或者允许所述第二请求继续进行,或者执行阻止所述第二请求继续进行的至少一个行动。
12.如权利要求11所述的方法,其特征在于,所述多个堆包括第一堆和第二堆,所述第一堆对应于要保密的数据类,所述第二堆对应于不需要保密的数据类。
13.如权利要求11所述的方法,其特征在于,所述第一函数在存储器的所述第一部分处执行机密的存储,并且,所述第二函数接收存储器的所述第一部分的地址,并被配置成在储存在所接收的地址处的数据上执行将揭示所接收地址的内容的行动,所述第二函数被配置成如果所接收的地址位于所述第一堆上,则阻止执行所述行动。
14.如权利要求13所述的方法,其特征在于,所述行动包括将所接收地址的内容写到输出设备。
15.如权利要求11所述的方法,其特征在于,阻止所述第二请求继续进行的所述至少一个行动包括拒绝实现所述第二请求。
16.如权利要求11所述的方法,其特征在于,阻止所述第二请求继续进行的所述至少一个行动包括在实现所述请求前生成警告。
17.一种保护数据不被滥用的方法,其特征在于,包括:
提供处理属于第一类的第一数据的第一组函数,所述函数在第一堆上储存所述第一数据;
提供以与应用于所述第一类的一组规则不一致的方式处理第二数据的第二组函数,所述第二组函数在第二堆上储存第二数据,所述第二组函数被配置成采取至少一种措施来防止将所述第一堆上的所述数据复制到所述第二堆,并且还被配置成采取至少一种措施来阻止以与应用于所述第一类的规则组不一致的方式使用所述第一堆上的数据。
18.如权利要求17所述的方法,其特征在于,应用于所述第一类的所述规则组包括所述第一类中的数据要被保密的要求,并且所述第二类包括非机密数据。
19.如权利要求17所述的方法,其特征在于,应用于所述第一类的规则组包括所述第一类中的数据不应当通过输出设备发送的规则。
20.如权利要求17所述的方法,其特征在于,所述第一组函数包括创建或应用密钥的函数,并且所述第一类中的数据包括一个或多个密钥。
21.如权利要求17所述的方法,其特征在于,防止所述第一堆上的数据被复制到所述第二堆的所述一种措施包括判断要被复制到第二堆的数据是否位于第一堆中,以及如果要被复制的所述数据位于第一堆中,拒绝执行复制。
22.如权利要求17所述的方法,其特征在于,阻止以与应用于所述第一类的规则组不一致的方式使用所述第一堆上的数据的所述至少一种措施包括拒绝执行位于所述第一堆上的数据的所请求的使用。
23.如权利要求17所述的方法,其特征在于,阻止以与应用于所述第一类的规则组不一致的方式使用所述第一堆上的数据的所述至少一种措施包括在执行位于所述第一堆上的数据的所请求的使用之前生成警告。
24.一种方法,包括:
创建多个堆,每一堆对应于一不同的数据类;
接收执行涉及存储器的一部分的使用的函数的请求,所述存储器部分位于所述多个堆的第一个中;
依照所述使用是否与控制所述第一堆的规则相一致,或者允许所述请求继续进行,或者执行阻止所述请求继续进行的至少一个行动。
25.如权利要求24所述的方法,其特征在于,所述使用包括将数据写入存储器的所述第一部分中,并且所述规则控制可在所述第一堆上储存什么类型的数据,或者可在什么情况下将数据写入所述第一堆中。
26.如权利要求24所述的方法,其特征在于,所述使用包括从存储器的所述第一部分中读出数据,并且所述规则控制对储存在所述第一堆上的数据可作出什么类型的使用,或者在什么情况下可以从所述第一堆中读出或使用数据。
CNB2005100649183A 2004-04-30 2005-04-04 一种用于管理堆上的数据使用的系统及方法 Expired - Fee Related CN100437479C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/836,423 2004-04-30
US10/836,423 US7284107B2 (en) 2004-04-30 2004-04-30 Special-use heaps

Publications (2)

Publication Number Publication Date
CN1694062A CN1694062A (zh) 2005-11-09
CN100437479C true CN100437479C (zh) 2008-11-26

Family

ID=34939285

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100649183A Expired - Fee Related CN100437479C (zh) 2004-04-30 2005-04-04 一种用于管理堆上的数据使用的系统及方法

Country Status (5)

Country Link
US (1) US7284107B2 (zh)
EP (1) EP1591904B1 (zh)
JP (1) JP4094622B2 (zh)
KR (1) KR101130459B1 (zh)
CN (1) CN100437479C (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631179B2 (en) * 2002-08-02 2009-12-08 The Boeing Company System, method and apparatus for securing network data
US7725739B2 (en) * 2005-07-15 2010-05-25 Microsoft Corporation Securing sensitive data in memory
US20080016314A1 (en) * 2006-07-12 2008-01-17 Lixin Li Diversity-based security system and method
EP1881404A1 (fr) * 2006-07-20 2008-01-23 Gemplus Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique
US8782371B2 (en) 2008-03-31 2014-07-15 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management for rasterization
US8682845B2 (en) * 2008-07-09 2014-03-25 The Boeing Company Secure high performance multi-level security database systems and methods
US8817032B2 (en) * 2008-08-29 2014-08-26 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for framebuffer management
US8854680B2 (en) 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units
US8861014B2 (en) 2008-09-30 2014-10-14 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimized printer throughput in a multi-core environment
US8918616B2 (en) 2011-08-24 2014-12-23 Microsoft Corporation Memory allocation analysis
US9141510B2 (en) 2011-08-24 2015-09-22 Microsoft Technology Licensing, Llc Memory allocation tracking
GB2520489A (en) * 2013-11-20 2015-05-27 Ibm Deletion of content in digital storage systems
SG11201805106QA (en) * 2015-12-16 2018-07-30 Ab Initio Technology Llc High throughput, high reliability data processing system
KR101930596B1 (ko) * 2016-10-06 2018-12-18 명지대학교 산학협력단 데이터 히든 장치 및 이에 있어서 프로그램 구동 방법
US20210004818A1 (en) * 2019-07-05 2021-01-07 Talkdesk, Inc. System and method for automated agent assistance within a cloud-based contact center
US20210117882A1 (en) 2019-10-16 2021-04-22 Talkdesk, Inc Systems and methods for workforce management system deployment
US11736615B2 (en) 2020-01-16 2023-08-22 Talkdesk, Inc. Method, apparatus, and computer-readable medium for managing concurrent communications in a networked call center
US11677875B2 (en) 2021-07-02 2023-06-13 Talkdesk Inc. Method and apparatus for automated quality management of communication records
US11856140B2 (en) 2022-03-07 2023-12-26 Talkdesk, Inc. Predictive communications system
US11736616B1 (en) 2022-05-27 2023-08-22 Talkdesk, Inc. Method and apparatus for automatically taking action based on the content of call center communications
US11971908B2 (en) 2022-06-17 2024-04-30 Talkdesk, Inc. Method and apparatus for detecting anomalies in communication data
US11943391B1 (en) 2022-12-13 2024-03-26 Talkdesk, Inc. Method and apparatus for routing communications within a contact center

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809554A (en) * 1994-11-18 1998-09-15 International Business Machines Corp. User control of multiple memory heaps
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
CN1298511A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 基于堆栈的安全性要求
CN1330314A (zh) * 2000-06-20 2002-01-09 国际商业机器公司 并行软件处理系统
US20020095453A1 (en) * 2001-01-16 2002-07-18 Microsoft Corporation Thread-specific heaps

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265221A (en) * 1989-03-20 1993-11-23 Tandem Computers Access restriction facility method and apparatus
US5432936A (en) * 1992-04-09 1995-07-11 Microsoft Corporation Method for implementing pointers to members in a compiler for an object-oriented programming language
US5590329A (en) * 1994-02-04 1996-12-31 Lucent Technologies Inc. Method and apparatus for detecting memory access errors
US5644709A (en) * 1994-04-21 1997-07-01 Wisconsin Alumni Research Foundation Method for detecting computer memory access errors
US5802397A (en) * 1996-05-23 1998-09-01 International Business Machines Corporation System for storage protection from unintended I/O access using I/O protection key by providing no control by I/O key entries over access by CP entity
US5787309A (en) * 1996-05-23 1998-07-28 International Business Machines Corporation Apparatus for protecting storage blocks from being accessed by unwanted I/O programs using I/O program keys and I/O storage keys having M number of bits
US6275916B1 (en) * 1997-12-18 2001-08-14 Alcatel Usa Sourcing, L.P. Object oriented program memory management system and method using fixed sized memory pools
US6070168A (en) * 1997-12-31 2000-05-30 Nortel Networks Corporation Platform-independent object memory manager
US6662234B2 (en) 1998-03-26 2003-12-09 National Semiconductor Corporation Transmitting data from a host computer in a reduced power state by an isolation block that disconnects the media access control layer from the physical layer
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6317756B1 (en) * 1998-10-07 2001-11-13 International Business Machines Corporation On-the-fly garbage collector
US6581113B1 (en) 1999-12-29 2003-06-17 Advanced Micro Devices, Inc. Apparatus and method for transferring frame data between a host system memory and a network interface buffer memory employing transmit descriptors without transmit status information
US6658652B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6971097B1 (en) * 2000-06-09 2005-11-29 Sun Microsystems, Inc. Method and apparatus for implementing concurrently running jobs on an extended virtual machine using different heaps managers
WO2002019168A1 (en) * 2000-08-25 2002-03-07 Hayes Scott R Heuristic automated method for ideal bufferpool tuning in a computer database
US6643753B2 (en) * 2000-10-04 2003-11-04 Microsoft Corporation Methods and systems for managing heap creation and allocation
GB0027041D0 (en) * 2000-11-06 2000-12-20 Ibm Computer system and multiple heaps
GB0027053D0 (en) * 2000-11-06 2000-12-20 Ibm A computer system with two heaps in contiguous storage
US7185205B2 (en) * 2001-03-26 2007-02-27 Galois Connections, Inc. Crypto-pointers for secure data storage
GB0107921D0 (en) * 2001-03-30 2001-05-23 Ibm Computer system with multiple heaps and heap reset facility
US6959430B2 (en) * 2001-05-09 2005-10-25 Sun Microsystems, Inc. Specialized heaps for creation of objects in object-oriented environments
EP1329787B1 (en) * 2002-01-16 2019-08-28 Texas Instruments Incorporated Secure mode indicator for smart phone or PDA
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7661140B2 (en) * 2002-03-20 2010-02-09 Research In Motion Limited System and method of secure garbage collection on a mobile device
US6865738B2 (en) * 2002-10-08 2005-03-08 Sun Microsystems, Inc. Method and apparatus for managing independent asynchronous I/O operations within a virtual machine
CA2426619A1 (en) * 2003-04-25 2004-10-25 Ibm Canada Limited - Ibm Canada Limitee Defensive heap memory management
US7356655B2 (en) * 2003-05-15 2008-04-08 International Business Machines Corporation Methods, systems, and media for managing dynamic storage
GB2402236B (en) * 2003-05-27 2005-04-27 Simon Alan Spacey A method and apparatus for securing a computer system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809554A (en) * 1994-11-18 1998-09-15 International Business Machines Corp. User control of multiple memory heaps
US6138210A (en) * 1997-06-23 2000-10-24 Sun Microsystems, Inc. Multi-stack memory architecture
CN1298511A (zh) * 1998-02-26 2001-06-06 太阳微系统公司 基于堆栈的安全性要求
CN1330314A (zh) * 2000-06-20 2002-01-09 国际商业机器公司 并行软件处理系统
US20020095453A1 (en) * 2001-01-16 2002-07-18 Microsoft Corporation Thread-specific heaps

Also Published As

Publication number Publication date
US7284107B2 (en) 2007-10-16
EP1591904A2 (en) 2005-11-02
CN1694062A (zh) 2005-11-09
KR20060044845A (ko) 2006-05-16
EP1591904B1 (en) 2016-08-10
EP1591904A3 (en) 2008-11-05
KR101130459B1 (ko) 2012-03-27
US20050246511A1 (en) 2005-11-03
JP2005327255A (ja) 2005-11-24
JP4094622B2 (ja) 2008-06-04

Similar Documents

Publication Publication Date Title
CN100437479C (zh) 一种用于管理堆上的数据使用的系统及方法
US10007793B2 (en) Secure object having protected region, integrity tree, and unprotected region
US7827109B2 (en) Digital content management system and apparatus
EP0880088B1 (en) Data copyright management system and apparatus
EP1253502A2 (en) Trusted computer system
US6895506B1 (en) Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism
KR100749867B1 (ko) 보안장치상에 암호화시스템을 보안가능하게 설치하는시스템 및 방법
EP1056010A1 (en) Data integrity monitoring in trusted computing entity
US20030081790A1 (en) System for ensuring data privacy and user differentiation in a distributed file system
US7801817B2 (en) Digital content management system and apparatus
US20060212714A1 (en) Method and system to create secure virtual project room
AU2006337160A1 (en) Administration of data encryption in enterprise computer systems
CN100578518C (zh) 内容使用管理系统、内容提供系统、内容使用设备及其方法
KR20090061636A (ko) 보안되는 프로그램을 복원하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
CN115277143B (zh) 一种数据安全传输方法、装置、设备及存储介质
CN101305377A (zh) 通信终端装置、服务器终端装置、使用它们的通信系统
CN1662030A (zh) 数据处理系统、存储设备和计算机程序
US8549321B2 (en) IC chip, board, information processing equipment and storage medium
CN100504829C (zh) 经由边带信道的信息的传递,以及使用上述内容来验证位置关系
KR100939106B1 (ko) 이동식 저장장치에 저장된 데이터의 임의복제 방지 방법 및이에 적합한 시스템
CN110032529A (zh) 一种内存管理方法及相关装置
WO2024121951A1 (ja) 配置場所選定装置、配置場所選定方法、及び配置場所選定プログラム
WO2024115152A1 (en) Updating secure guest metadata of a specific guest instance
TWM610029U (zh) 資料安全傳輸及控管系統
JP3289656B2 (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
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150430

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150430

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081126

Termination date: 20200404