保护软件产品中的敏感数据的方法和装置的制造方法
【技术领域】
[0001] 本发明涉及敏感数据的保护技术,具体地说,涉及保护软件产品中的敏感数据W避免在内存转储过程中泄露的方法和装置。
【背景技术】
[0002] 现有的大多数操作系统和软件产品均支持内存转储(coredump)机制。当软件产 品在运行过程中发生异常时,操作系统会进行内存转储,生成内存转储文件。在内存转储文 件中保存了在发生异常的时刻内存中的数据,该些数据有助于帮助进行故障分析。可W理 解,许多异常的发生依赖于运行环境下的特定类型的数据,因此,在测试环境下难W再现该 种异常。内存转储文件能够真实地记录计算机内存在发生异常时的状态。因此,内存转储 文件中的数据对于开发人员对软件产品进行调试除错非常有帮助。在许多情况下,分析内 存转储文件是发现异常的根原因,进而解决异常问题的最有效的方式。在此意义上,内存转 储机制对于软件产品的开发和调试是不可或缺的。
[0003] 另一方面,由于在内存转储过程中会全面地记录内存中的数据,因此,内存转储文 件中可能包含敏感数据,特别是在软件产品涉及金融领域或安全领域的情况下。在软件产 品的提供方要求获得内存转储文件W进行调试除错时,软件产品的用户常常会担也敏感数 据泄露的问题。
[0004] 软件产品提供方,特别是一些系统级别软件的提供方,期望能够降低在内存转储 发生时暴露敏感数据的风险。该要求软件产品的开发人员能够释放或清除内存中与敏感数 据相关的数据结构或数据变量。
[0005] -些软件也提供了其它帮助不同问题的调试的方法,该些方法也需要将内存中的 一些结构和缓存转储到文件中。例如,某些操作系统使用内核跟踪程序(trace)W进行问题 调试,该内核跟踪程序将开发人员所定义的一些跟踪条目写到跟踪缓冲区中。当跟踪内容 被回收时,跟踪缓冲区中的内容将会被格式化为可读的跟踪报告文件。另外,在该操作系统 上运行的其它软件产品也使用该样的跟踪机制W将内存中的数据转储为可读的文本文件。 如果软件产品的用户担也敏感数据的泄露而不愿提供足够的调试数据,则将使得软件产品 的问题调试更加困难或者不可能。
[0006] 因此,希望能够保护软件产品中的敏感数据,W避免在内存转储过程中敏感数据 被泄露。
【发明内容】
[0007] 本发明的实施例提供了一种保护软件产品中的敏感数据的方法和装置W及一种 在执行内存转储时保护敏感数据的方法和装置。
[0008] 根据本发明的一个方面,提供了一种保护软件产品中的敏感数据的方法,其包括: 编译所述软件产品的源文件W生成目标文件,其中,所述源文件包括用特定标识符标记的 至少一个敏感数据,所述目标文件具有用于在编译时和运行时保存所述至少一个敏感数据 的存储信息的安全数据段;w及链接所述目标文件w生成可执行文件,其中所述可执行文 件在运行时更新所述安全数据段。
[0009] 根据本发明的另一个方面,提供了一种在执行内存转储时保护敏感数据的方法, 其包括:扫描计算机的内存W在所述内存中查找安全数据段,其中所述安全数据段保存所 述敏感数据的存储信息;根据所查找的安全数据段内的所述敏感数据的存储信息,获得所 述敏感数据;处理所述敏感数据W隐藏所述敏感数据;W及生成内存转储文件。
[0010] 根据本发明的再一个方面,提供了一种用于保护软件产品中的敏感数据的装置, 其包括;编译器,其被配置为编译所述软件产品的源文件W生成目标文件,其中,所述源文 件包括用特定标识符标记的至少一个敏感数据,所述目标文件具有用于在编译时和运行时 保存所述至少一个敏感数据的存储信息的安全数据段;W及链接器,其被配置为链接所述 目标文件W生成可执行文件,其中所述可执行文件在运行时更新所述安全数据段。
[0011] 根据本发明的再一个方面,提供了用于在执行内存转储时保护敏感数据的装置, 其包括:扫描模块,其被配置为扫描计算机的内存W在所述内存中查找安全数据段,其中所 述安全数据段保存所述敏感数据的存储信息;敏感数据获得模块,其被配置为根据所查找 的安全数据段内的所述敏感数据的存储信息,获得所述敏感数据;处理模块,其被配置为处 理所述敏感数据W隐藏所述敏感数据;W及文件生成模块,其被配置为生成内存转储文件。
[0012] 本发明的实施例能够准确地定位和跟踪敏感数据,避免了敏感数据在内存转储时 被泄露,从而提高安全性。
【附图说明】
[0013] 通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述W及其 它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号 通常代表相同部件。
[0014] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图;
[0015] 图2是根据本发明的一个实施例的保护软件产品中的敏感数据的方法的流程图;
[0016] 图3是图2所示的实施例中编译过程的示意性流程图;
[0017] 图4是用于说明具有安全数据段的目标文件的示意图;
[0018] 图5是用于说明安全数据段的结构的示意图;
[0019] 图6是根据本发明的一个实施例的在执行内存转储时保护敏感数据的方法的流 程图;
[0020] 图7是根据本发明的一个实施例的用于保护软件产品中的敏感数据的装置的示 意性方框图;
[0021] 图8是根据本发明的一个实施例的用于在执行内存转储时保护敏感数据的装置 的示意性方框图。
【具体实施方式】
[0022] 下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开 的优选实施方式,然而应该理解,可WW各种形式实现本公开而不应被该里阐述的实施方 式所限制。相反,提供该些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的 范围完整地传达给本领域的技术人员。
[0023] 图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框 图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使 用范围带来任何限制。
[0024] 如图1所示,计算机系统/服务器12W通用计算设备的形式表现。计算机系统 /服务器12的组件可W包括但不限于;一个或者多个处理器或者处理单元16,系统存储器 28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[00巧]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器, 外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举 例来说,该些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC) 总线,增强型ISA总线、视频电子标准协会(VESA)局域总线W及外围组件互连(PCI)总线。
[0026] 计算机系统/服务器12典型地包括多种计算机系统可读介质。该些介质可W是 任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动 的和不可移动的介质。
[0027] 系统存储器28可W包括易失性存储器形式的计算机系统可读介质,例如随机存 取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可W进一步包括其 它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34 可W用于读写不可移动的、非易失性磁介质(图1未显示,通常称为"硬盘驱动器")。尽管图 1中未示出,可W提供用于对可移动非易失性磁盘(例如"软盘")读写的磁盘驱动器,W及对 可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在该些 情况下,每个驱动器可W通过一个或者多个数据介质接口与总线18相连。存储器28可W 包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,该些程序模块被 配置W执行本发明各实施
例的功能。
[0028] 具有一组(至少一个)程序模块42的程序/实用工具40,可W存储在例如存储器 28中,该样的程序模块42包括一但不限于一操作系统、一个或者多个应用程序、其它 程序模块W及程序数据,该些示例中的每一个或某种组合中可能包括网络环境的实现。程 序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0029] 计算机系统/服务器12也可W与一个或多个外部设备14 (例如键盘、指向设备、 显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设 备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的 任何设备(例如网卡,调制解调器等等)通信。该种通信可W通过输入/输出(I/O)接口 22 进行。并且,计算机系统/服务器12还可W通过网络适配器20与一个或者多个网络(例如 局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20 通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可W 结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于;微代码、设备驱 动器、兀余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器W及数据备份存储系统等。
[0030] 图2示出了根据本发明的一个实施例的保护软件产品中的敏感数据的方法的流 程图。下面结合附图,对本实施例进行详细的描述。
[0031] 本实施例的方法的基本思想在于通过对敏感数据进行标记并在编译时和运行时 跟踪敏感数据来实现对敏感数据的保护。
[0032] 如图2所示,首先,在步骤S210,对软件产品的源文件进行编码W生成目标文件, 其中,源文件包括用特定标识符标记的至少一个敏感数据,所生成的目标文件具有用于在 编译时和运行时保存敏感数据的存储信息的安全数据段。
[0033] -般地,只有软件产品的开发人员能够准确地知道哪些数据是敏感数据,并且该 些敏感数据由哪些数据变量定义。因此,在本实施例中,引入特定标识符W在源文件中明确 地标记敏感数据,W使得该些敏感数据在编译时可识别。例如,特定标识符可W是一种指示 安全的修饰符(W下称为"安全修饰符"),可用"secure"表示。当然,本领域的技术人员能 够理解,也可W采用其它方式来标记敏感数据。
[0034] 在一个例子中,安全修饰符可设置在源文件中敏感数据的数据类型之前。安全修 饰符可用于标记任何数据类型的敏感数据,包括诸如整型(int)、浮点型(float)、长整型 (long)、字符型(character)、指针型(pointer)等的简单数据类型、诸如结构型(struct)、 数组型(array)、列表型(list)或函数(化nction)等的复合数据类型。当安全修饰符用于 标记复合数据类型的敏感数据时,该敏感数据中包含的所有数据也都被标记为敏感数据。 [00巧]表1示出了安全修饰符的若干使用示例。
[0036] 表 1
[0037]
[00測如表1所示,在示例4中,安全修饰符"se州re"被设置在"struct"之前,则该结 构型数据及其中的整型数据和字符型数据都是敏感数据,而在示例5中,由于安全修饰符 "secure"设置在整型数据之前,则只有该整型数据是敏感数据,而字符型数据和结构型数 据不是敏感数据。
[0040] 图3是图2所示的实施例中编译过程的示意性流程图。如图3所示,首先在步骤 S301,根据特定标识符(例如安全修饰符),从源文件中识别出敏感数据。如前所述,在源文 件中,敏感数据已用特定标识符进行标记。因此,在编译时,可通过特定标识符识别出源文 件中的哪些数据是敏感数据,w便进一步对其进行处理。
[0041] 进一步地,除了识别用特定标识符直接标记的敏感数据,还可W根据敏感数据与 源文件中其它数据或函数参数之间的关系,从源文件中识别与敏感数据相关的数据作为间 接敏感数据,即使该些数据没有用特定标识符进行标记。
[0042] 例如,在变量赋值的情形下,如果敏感数据被赋值给其它数据,则可W根据抽象语 法树(AbstractSyntaxTree),识别出间接敏感数据。例如,在函数调用的情形下,如果敏 感数据作为函数的参数传递,则可W根据抽象语义树(AbstractSemanticsTree),识别出 间接敏感数据。再例如,在对象继承的情形下,敏感数据也具有继承性。
[004引因此,间接敏感数据可W包括W下的任意之一:用敏感数据赋值的数据、通过敏感 数据的数学运算而获得的数据、通过敏感数据作为参数的函数调用而获得的数据、与敏感 数据具有继承关系的数据。通过识别间接敏感数据,能够全面地获取源文件的所有需要被 保护的数据,克服现有技术中在敏感数据存在变化时无法跟踪敏感数据,从而造成敏感数 据的泄露的问题。
[0044] 接着,在步骤S305,建立用于在编译时和运行时保存敏感数据的存储信息的安全 数据段。在本实施例中,为了实现对敏感数据的跟踪,在目标文件中新增加了安全数据段。 此外,安全数据段也保存间接敏感数据的存储信息。
[0045]图4示出了具有安全数据段的目标文件的示意图。如图4所示,通常,目标文件具 有文件头、代码段、重定位段、数据段(包括未初始化数据段和初始化数据段)、动态段(包括 堆和找)等。在文件头中包含指向其它各个段的指针。代码段用于存储编译生成的机器指 令。重定位段用于存储与重定位相关的内容。数据段属于静态段,用于存储静态变量。动 态段通常在运行时被分配,其中堆是向上增长的,而找是向下增长的。在步骤S305中,建立 了安全数据段。安全数据段可W建立在目标文件中的任意位置,例如,在数据段与动态段之 间(如图4所示),或者在数据段内。在文件头中也包含指向安全数据段的指针。安全数据 段可包括头部和在头部之后的记录段。在头部中,保存了安全数据段的标识符,用于对安全 数据段进行标识。在头部还保存在记录段内记录的敏感数据和间接敏感数据的存储信息的 数量和指向文件头的反向指针。
[0046] 在记录段内,敏感数据或间接敏感数据的存储信息可W采用条目的形式记录。每 个条目记录一个敏感数据或间接敏感数据的存储信息。敏感数据或间接敏感数据的存储信 息可包含敏感数据或间接敏感数据的数据类型、敏感数据或间接敏感数据的内存地址和地 址偏移量。敏感数据或间接敏感数据的数据类型已在源文件中定义,因此,在编译时是能够 确定的。敏感数据或间接敏感数据的内存地址可W是敏感数据或间接敏感数据在内存中的 起始地址,也可W是保存敏感数据或间接敏感数据的段的起始地址。内存地址根据敏感数 据或间接敏感数据的变量类型而在不同的阶段确定。关于敏感数据或间接敏感数据的内存 地址的确定将在后面详述。地址偏移量是基于内存地址的偏移,其可W为零。敏感数据或 间接敏感数据在内存中的地址实际上是上述的内存地址与地址偏移量的和。此外,存储信 息还可包含敏感数据或间接敏感数据的长度。图5示意性地示出了安全数据段的结构。
[0047] 在建立安全数据段时,可W确定安全数据段的地址。在目标文件中,除了动态段在 运行时分配外,其它段的地址可在编译时确定。安全数据段的长度由固定长度和动态长度 组成。固定长度可在编译时确定,其是安全数据段的头部的长度与记录段中在编译时保存 的存储信息的长度之和。存储信息的长度是数据类型的长度、内存地址的长度、地址偏移量 的长度与敏感数据的长度的长度之和。由于某些敏感数据的存储信息可能在运行时才保存 在安全数据段中,因此,该部分的长度在编译时不可确定,称为"动态长度"。在编译时可在 安全数据段中预留一定的空间,W用于运行时保存敏感数据的存储信息。
[0048] 在用于编写源文件的高级语言中,变量可根据作用域的不同而分成常量、全局变 量、局部变量(也称为"找变量")和用户分配的内存变量(也称为"堆变量")。常量和全局变 量也称为"静态变量",其在编译时被保存在数据段内。局部变量和用
户分配的内存变量也 称为"动态变量",其中,局部变量在运行时被保存在找中,而用户分配的内存变量在运行时 被保存在堆中。相应地,敏感数据也可被分成属于静态变量的静态敏感数据和属于动态变 量的动态敏感数据。同样,间接敏感数据也分成静态间接敏感数据和动态间接敏感数据。
[0049] 由于静态敏感数据的数据类型、内存地址、地址偏移量和长度在编译时已知并且 不会改变,因此,在步骤S310,在所建立的安全数据段中记录静态敏感数据的存储信息,作 为静态存储记录。可W对静态存储记录建立条目索引,并记录条目索引。进一步地,还在安 全数据段中记录静态间接敏感数据的存储信息,作为静态存储记录。
[0050] 然而,对于动态敏感数据来说,除了数据类型和局部变量的长度在编译时是已知 的W外,动态敏感数据的内存地址、地址偏移量和动态变量中用户分配的内存变量的长度 只有在运行时才可知。因此,在编译时需要生成额外的机器指令W指示在运行时跟踪动态 敏感数据的存储信息并进行记录。具体地,在步骤S315,生成用于在运行时在安全数据段中 记录动态敏感数据的存储信息的机器指令,其中,所记录的动态敏感数据的存储信息作为 动态存储记录。为了记录局部变量和用户分配的内存变量的存储信息,需要分别跟踪找地 址和堆地址。进一步地,对于动态间接敏感数据,也生成用于记录动态间接敏感数据的存储 信息作为动态存储记录的机器指令。
[0051] 此外,还可W在步骤S320,生成用于在动态敏感数据被释放时消除对应的动态存 储记录的机器指令。动态变量仅在其作用域内使用,当超出动态变量的作用域时,动态变量 将被释放。因此,当动态敏感数据在其作用域内使用时,动态敏感数据被保存在动态段中, 其存储信息被记录在安全数据段中。当动态敏感数据从动态段中被释放后,其存储信息也 应当从安全数据段中消除。进一步地,对于动态间接敏感数据,也生成用于在动态间接敏感 数据被释放时消除对应的动态存储记录的机器指令。
[0052] 此外,还可W在步骤S325,生成用于在链接多个目标文件时重定位静态存储记录 和动态存储记录在安全数据段中的地址的重定位记录。在链接多个目标文件时,安全数据 段的位置会改变,相应地,安全数据段中静态存储记录和动态存储记录的地址也发生变化。 因此,在链接时需要对安全数据段进行重定位。
[0053] 虽然W上按照步骤S310、S315、S320和S325的顺序进行了描述,但本领域的技术 人员可W知道,该些步骤也可W按照其它顺序或并行地执行。
[0054]在源文件的编译中,除了W上描述的与敏感数据相关的操作外,还将执行其它传 统的编译操作,此处省略其说明。最后,在步骤S330,生成具有安全数据段的目标文件。
[00巧]返回到图2,在生成了具有安全数据段的目标文件后,在步骤S220,对所生成的目 标文件进行链接W生成可执行文件,其中,所生成的可执行文件在运行时对安全数据段进 行更新。
[0056] 在该步骤中,首先确定是否有多个目标文件待链接。如果只有一个目标文件,即在 步骤S210生成的具有安全数据段的目标文件,则按照传统的链接过程进行链接,W生成具 有安全数据段的可执行文件。如果有多个目标文件待链接,并且至少一个目标文件具有安 全数据段,则合并该多个目标文件。
[0057] 在合并时,多个目标文件的各个段分别进行合并。在两个W上的目标文件具有安 全数据段的情况下,合并两个W上的安全数据段W形成新的安全数据段。在合并期间,计算 新的安全数据段的长度。需要注意,由于全局变量可能被标记为敏感数据,因此,在计算长 度时需要除去重复的全局变量。另外,还重新建立新的安全数据段的条目索引。
[0058] 然后,对合并后的目标文件中的新的安全数据段进行重定位。在重定位时,首先获 得新的安全数据段的地址。根据合并前多个目标文件的各个段的长度,可W确定新的安全 数据段的地址。然后,基于所确定的地址,根据目标文件中关于静态存储记录和动态存储记 录的重定位记录,进行重定位。
[0059] 在目标文件的链接过程中,除了上述的与安全数据段有关的操作外,还执行其它 传统的链接操作,此处省略其说明。最后,生成具有新的安全数据段的可执行文件。
[0060] 当所生成的可执行文件被加载到内存中运行时,根据可执行文件中的相关机器指 令,对安全数据段进行更新。在本实施例中,更新可包括在安全数据段中至少更新敏感数据 的内存地址和地址偏移量。进一步地,还可W更新敏感数据的长度。此外,由于静态敏感数 据的存储信息和动态敏感数据的数据类型在编译时已知且不会改变,因此,在运行时也可 W不进行更新,而仅对动态敏感数据的在编译时不能获得的内存地址和地址偏移量(可选 地,W及长度)进行更新。
[0061] 通过W上描述可W看出,本实施例的方法通过在源文件编码阶段使用特定标识符 标记敏感数据、在编译和链接阶段生成具有用于存储敏感数据的存储信息的安全数据段的 目标文件和可执行文件W及在运行时更新敏感数据的存储信息,能够准确地确定敏感数据 并在运行时跟踪敏感数据,从而能够W任何粒度保护敏感数据。此外,即使在多个进程共享 内存的情形、变量赋值的情形、函数调用的情形和对象继承的情形下,本实施例的方法也能 够避免敏感数据的泄露。
[0062] 进一步,在实际应用本实施例的方法时,还可W通过设置启动/失效选项来控制 本实施例的方法的执行。具体地,在源文件的编译时,可首先确定是否启动了敏感数据的保 护。如果敏感数据的保护被启动,则执行如上所述的保护敏感数据的过程。如果敏感数据 的保护未被启动,则在编译源文件时,忽略敏感数据的特定标识符,按照传统的编译方法进 行编译。此外,在可执行文件的运行时,也首先确定是否启动了敏感数据的保护。如果敏感 数据的保护被启动,则在运行时,更新安全数据段,否则,忽略更新。
[0063] 图6示出了根据本发明的一个实施例的在执行内存转储时保护敏感数据的方法 的流程图。下面结合附图,对本实施例进行详细描述。对于与前面实施例相同的部分,适当 省略其说明。
[0064] 如图6所示,在步骤S610,当由于软件产品发生异常而进行内存转储时,扫描计算 机的内存W在内存中查找安全数据段。如果可执行文件具有安全数据段,则可执行文件在 内存中运行时,将在内存中包含安全数据段。在安全数据段中保存有敏感数据的存储信息, 其包括敏感数据的数据类型、内存地址、地址偏移量和长度。
[0065] 接着,在查找到安全数据段后,在步骤S620,根据所查找的安全数据段内的敏感数 据的存储信息,获得对应的敏感数据。如上所述,敏感数据的存储信息包括敏感数据的内 存地址和地址偏移量,由此,可获得敏感数据在内存中的实际地址,从而找到对应的敏感数 据。
[0066] 然后,在步骤S630,对所获得的敏感数据进行处理W隐藏敏感数据。该种隐藏处理 应当是不可逆的,W防止对隐藏的敏感数据进行反向处理。隐藏处理可W是使用现有的随 机替换算法来替换敏感数据,也可W是使用现有的诸如动态密钥算法的加密算法来模糊敏 感数据。
[0067] 最后,在步骤S640,生成内存转储文件,其中,在该内存转储文件中没有敏感数据。
[0068] 通过W上描述可W看出,本实施例的方法通过根据内存中的安全数据段来定位敏 感数据并进行隐藏处理,能够确保在内存转储时不泄露敏感数据。
[0069] 在相同的发明构思下,图7示出了根据本发明的一个实施例的用于保护软件产品 中的敏感数据的装置700的示意性方框图。下面结合附图,对本实施例进行详细描述。对 于与前面实施例相同的部分,适当省略其说明。
[0070] 如图7所示,本实施例的装置700可包括;编译器701,其被配置为编译软件产品 的源文件W生成目标文件,其中,源文件包括用特定标识符标记的至少一个敏感数据,目标 文件具有用于在编译时和运行时保存至少一个敏感数据的存储信息的安全数据段;W及链 接器702,其被配置为链接通过
编译器701生成的目标文件W生成可执行文件,其中可执行 文件在运行时更新安全数据段。
[0071] 在本实施例中,在源文件中,用于标记敏感数据的特定标识符可设置在敏感数据 的数据类型之前。
[0072] 当源文件被输入到编译器701时,在编译器701中,识别模块7011可根据特定标 识符,从源文件中识别敏感数据。进一步地,识别模块7011还可W识别与敏感数据相关的 数据,作为间接敏感数据。接着,建立模块7012可建立安全数据段。指向安全数据段的指 针保存在目标文件的文件头中。安全数据段可包括头部和记录段,用于保存敏感数据和间 接敏感数据的存储信息。在本实施例中,头部可包括安全数据段的标识符、在记录段内记录 的敏感数据和间接敏感数据的存储信息的数量和指向文件头的反向指针。存储信息可包括 数据类型、内存地址和地址偏移量。此外,存储信息还可包括敏感数据或间接敏感数据的长 度。
[0073] 如前所述,敏感数据可W分成属于静态变量的静态敏感数据和属于动态变量的动 态敏感数据。由于获得静态敏感数据和动态敏感数据的存储信息的阶段不同,因此,在编译 器701中,针对静态敏感数据和动态敏感数据采用不同的处理。对于静态敏感数据,记录模 块7013在由建立模块7012建立的安全数据段中记录静态敏感数据的存储信息,作为静态 存储记录。对于动态敏感数据,机器指令生成模块7014生成用于在运行时在安全数据段中 记录动态敏感数据的存储信息作为动态存储记录的机器指令。进一步地,机器指令生成模 块7014还可W生成用于在动态敏感数据被释放时消除对应的动态存储记录的机器指令。 此外,重定位记录生成模块7015可生成用于在链接多个目标文件时重定位静态存储记录 和动态存储记录在所述安全数据段中的地址的重定位记录。最后,目标文件生成模块7016 生成具有安全数据段的目标文件。
[0074] 类似地,对于静态间接敏感数据,记录模块7013在安全数据段中记录静态间接敏 感数据的存储信息,作为静态存储记录。对于动态间接敏感数据,机器指令生成模块7014 可生成用于在运行时在安全数据段中记录动态间接敏感数据的存储信息作为动态存储记 录的机器指令和用于在动态间接敏感数据被释放时消除对应的动态存储记录的机器指令。
[0075]所生成的目标文件被提供给链接器702W进行链接。在链接器702中,确定模块 7021确定是否有多个目标文件待链接。如果有多个目标文件,则合并模块7022合并该些 目标文件。然后,重定位模块7023对合并后的目标文件的新的安全数据段进行重定位。最 后,可执行文件生成模块7024生成具有新的安全数据段的可执行文件。
[0076]图8是根据本发明的一个实施例的用于在执行内存转储时保护敏感数据的装置 800的示意性方框图。下面结合附图,对本实施例进行详细描述。对于与前面实施例相同的 部分,适当省略其说明。
[0077] 如图8所示,本实施例的装置800可包括:扫描模块801,其被配置为扫描计算机 的内存W在内存中查找安全数据段,其中安全数据段保存敏感数据的存储信息;敏感数据 获得模块802,其被配置为根据所查找的安全数据段内的敏感数据的存储信息,获得敏感数 据;处理模块803,其被配置为处理所获得的敏感数据W隐藏该些敏感数据;W及文件生成 模块804,其被配置为生成内存转储文件。
[0078] 在本实施例中,在通过扫描模块801查找到安全数据段后,由于在安全数据段中 保存有敏感数据的存储信息,其包括敏感数据的数据类型、内存地址、地址偏移量和长度, 因此,敏感数据获得模块802可W根据敏感数据的内存地址和地址偏移量,获得敏感数据 在内存中的实际地址,从而获得敏感数据。然后,处理模块803可使用随机替换算法来替换 敏感数据或者使用诸如动态密钥算法的加密算法来模糊敏感数据,从而使得由文件生成模 块804生成的内存转储文件不包含敏感数据。
[0079] 上述的用于保护软件产品中的敏感数据的装置700和用于在执行内存转储时保 护敏感数据的装置800的具体执行方式可W参照之前结合具体例子对图2、图3和图6所示 的方法的描述,在此不再费述。
[0080] 本发明可W是系统、方法和/或计算机程序产品。计算机程序产品可W包括计算 机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0081] 计算机可读存储介质可W是可W保持和存储由指令执行设备使用的指令的有形 设备。计算机可读存储介质例如可W是一-但不限于一-电存储设备、磁存储设备、光存储 设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的 更具体的例子(非穷举的列表)包括;便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存 储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携 式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其 上存储有指令的打孔卡或凹槽内凸起结构、W及上述的任意合适的组合。该里所使用的计 算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、 通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传 输的电信号。
[0082] 该里所描述的计算机可读程序指令可W从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或 外部存储设备。网络可w包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网 关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接 收计算机可读程序指令,并转发该计算机可读程序指令,W供存储在各个计算/处理设备 中的计算机可读存储介质中。
[0083]用于执行本发明操作的计算机程序指令可W是汇编指令、指令集架构(ISA)指 令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者W-种或多种编程语 言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如 Smallta化、C++等,W及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可W完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在涉及远程计算机的情形中,远程计算机可W通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可W连接到外部计算机(例如 利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指 令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程口阵列(FPGA)或 可编程逻辑阵列(PLA),该电子电路可W执行计算机可读程序指令,从而实现本发明的各个 方面。
[0084] 该里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框W及流程图和 /或框图中各方框的组合,都可W由计算机可读程序指令实现。
[0085] 该些计算机可读程序指令可W提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得该些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可W把该些计算机可读程序指令存储在计算机可读存储介质中,该些 指令使得计算机、可编程数据处理装置和/或其他设备W特定方式工作,从而,存储有指令 的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框 中规定的功能/动作的各个方面的指令。
[0086] 也可W把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程数
据处理装置或其它设备上执行一系列操作步骤,W产 生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的 指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0087] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在该点上,流程图或框图中的每个方框可W 代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个 用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能 也可不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可W基本并行地 执行,它们有时也可W按相反的顺序执行,该依所涉及的功能而定。也要注意的是,框图和 /或流程图中的每个方框、W及框图和/或流程图中的方框的组合,可W用执行规定的功 能或动作的专用的基于硬件的系统来实现,或者可W用专用硬件与计算机指令的组合来实 现。
[008引W上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也 不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技 术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨 在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领 域的其它普通技术人员能理解本文披露的各实施例。
【主权项】
1. 一种保护软件产品中的敏感数据的方法,包括: 编译所述软件产品的源文件以生成目标文件,其中,所述源文件包括用特定标识符标 记的至少一个敏感数据,所述目标文件具有用于在编译时和运行时保存所述至少一个敏感 数据的存储信息的安全数据段;以及 链接所述目标文件以生成可执行文件,其中所述可执行文件在运行时更新所述安全数 据段。2.根据权利要求1所述的方法,其中,更新所述安全数据段包括:在所述安全数据段中 更新所述至少一个敏感数据的内存地址和地址偏移量。3. 根据权利要求1所述的方法,其中,编译所述软件产品的源文件以生成目标文件包 括: 根据所述特定标识符,从所述源文件中识别所述至少一个敏感数据; 建立所述安全数据段; 在所述安全数据段中记录所述至少一个敏感数据中属于静态变量的静态敏感数据的 存储信息,作为静态存储记录; 生成机器指令,所述机器指令用于在运行时在所述安全数据段中记录所述至少一个敏 感数据中属于动态变量的动态敏感数据的存储信息,作为动态存储记录;以及 生成具有所述安全数据段的目标文件。4. 根据权利要求2所述的方法,其中,编译所述软件产品的源文件以生成目标文件还 包括: 生成用于在所述动态敏感数据被释放时消除对应的所述动态存储记录的机器指令。5. 根据权利要求2或3所述的方法,其中,编译所述软件产品的源文件以生成目标文件 还包括: 生成用于在链接多个目标文件时重定位所述静态存储记录和所述动态存储记录在所 述安全数据段中的地址的重定位记录。6.根据权利要求2所述的方法,其中,所述安全数据段包括头部和记录段,其中,在所 述目标文件的文件头中保存指向所述安全数据段的指针,所述头部包括所述安全数据段的 标识符、在所述记录段内记录的所述存储信息的数量和指向所述文件头的反向指针。7. 根据权利要求1所述的方法,其中,链接所述目标文件以生成可执行文件包括: 确定是否有多个目标文件; 如果有多个目标文件,则合并所述多个目标文件; 重定位合并后的目标文件中的新的安全数据段;以及 生成具有所述新的安全数据段的可执行文件。8. -种在执行内存转储时保护敏感数据的方法,包括: 扫描计算机的内存以在所述内存中查找安全数据段,其中所述安全数据段保存所述敏 感数据的存储信息; 根据所查找的安全数据段内的所述敏感数据的存储信息,获得所述敏感数据; 处理所述敏感数据以隐藏所述敏感数据;以及 生成内存转储文件。9. 根据权利要求7所述的方法,其中,所述存储信息至少包括数据类型、内存地址和地 址偏移量。10. 根据权利要求7或8所述的方法,其中,处理所述敏感数据以隐藏所述敏感数据包 括: 使用随机替换算法和加密算法的至少之一来隐藏所述敏感数据。11. 一种用于保护软件产品中的敏感数据的装置,包括: 编译器,其被配置为编译所述软件产品的源文件以生成目标文件,其中,所述源文件包 括用特定标识符标记的至少一个敏感数据,所述目标文件具有用于在编译时和运行时保存 所述至少一个敏感数据的存储信息的安全数据段;以及 链接器,其被配置为链接所述目标文件以生成可执行文件,其中所述可执行文件在运 行时更新所述安全数据段。12. 根据权利要求10所述的装置,其中,所述编译器包括: 识别模块,其被配置为根据所述特定标识符,从所述源文件中识别所述至少一个敏感 数据; 建立模块,其被配置为建立所述安全数据段; 记录模块,其被配置为在所述安全数据段中记录所述至少一个敏感数据中属于静态变 量的静态敏感数据的存储信息,作为静态存储记录; 机器指令生成模块,其被配置为生成机器指令,所述机器指令用于在运行时在所述安 全数据段中记录所述至少一个敏感数据中属于动态变量的动态敏感数据的存储信息,作为 动态存储记录;以及 目标文件生成模块,其被配置为生成具有所述安全数据段的目标文件。13. 根据权利要求11所述的装置,其中,所述机器指令生成模块还被配置为生成用于 在所述动态敏感数据被释放时消除对应的所述动态存储记录的机器指令。14. 根据权利要求11或12所述的装置,其中,所述编译器还包括: 重定位记录生成模块,其被配置为生成用于在链接多个目标文件时重定位所述静态存 储记录和所述动态存储记录在所述安全数据段中的地址的重定位记录。15. 根据权利要求10所述的装置,其中,所述安全数据段包括头部和记录段,其中,在 所述目标文件的文件头中保存指向所述安全数据段的指针,所述头部包括所述安全数据段 的标识符、在所述记录段内记录的所述存储信息的数量和指向所述文件头的反向指针。16. 根据权利要求10所述的装置,其中,所述链接器包括: 确定模块,其被配置为确定是否有多个目标文件; 合并模块,其被配置为如果有多个目标文件,则合并所述多个目标文件; 重定位模块,其被配置为重定位合并后的目标文件的新的安全数据段;以及 可执行文件生成模块,其在配置为生成具有所述新的安全数据段的可执行文件。17. -种用于在执行内存转储时保护敏感数据的装置,包括: 扫描模块,其被配置为扫描计算机的内存以在所述内存中查找安全数据段,其中所述 安全数据段保存所述敏感数据的存储信息; 敏感数据获得模块,其被配置为根据所查找的安全数据段内的所述敏感数据的存储信 息,获得所述敏感数据; 处理模块,其被配置为处理所述敏感数据以隐藏所述敏感数据;以及 文件生成模块,其被配置为生成内存转储文件。18. 根据权利要求16所述的装置,其中,所述存储信息至少包括数据类型、内存地址和 地址偏移量。19. 根据权利要求16或17所述的装置,其中,所述处理模块被配置为使用随机替换算 法和加密算法的至少之一来隐藏所述敏感数据。
【专利摘要】本发明公开了一种保护软件产品中的敏感数据的方法,其包括:编译所述软件产品的源文件以生成目标文件,其中,所述源文件包括用特定标识符标记的至少一个敏感数据,所述目标文件具有用于在编译时和运行时保存所述至少一个敏感数据的存储信息的安全数据段;以及链接所述目标文件以生成可执行文件,其中所述可执行文件在运行时更新所述安全数据段。另外,还公开了相应的保护软件产品中的敏感数据的装置。此外,本发明还公开了在执行内存转储时保护敏感数据的方法及装置。
【IPC分类】G06F21/60
【公开号】CN104881611
【申请号】CN201410072282
【发明人】卫李俊, 史达飞, 贾双双, 冯锐
【申请人】国际商业机器公司
【公开日】2015年9月2日
【申请日】2014年2月28日
【公告号】US20150248564
转载请注明原文地址:https://www.famiwei.com/read-8138465.html