CN110383275B - 用于程序代码的计算机辅助的代码混淆的方法 - Google Patents

用于程序代码的计算机辅助的代码混淆的方法 Download PDF

Info

Publication number
CN110383275B
CN110383275B CN201780088267.2A CN201780088267A CN110383275B CN 110383275 B CN110383275 B CN 110383275B CN 201780088267 A CN201780088267 A CN 201780088267A CN 110383275 B CN110383275 B CN 110383275B
Authority
CN
China
Prior art keywords
program code
value
calculation step
mask
code
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
Application number
CN201780088267.2A
Other languages
English (en)
Other versions
CN110383275A (zh
Inventor
J.兹万茨格
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Publication of CN110383275A publication Critical patent/CN110383275A/zh
Application granted granted Critical
Publication of CN110383275B publication Critical patent/CN110383275B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1066Hiding content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及一种用于程序代码(CO)的计算机辅助的代码混淆的方法,其中在所述程序代码(CO)中实施多个计算步骤(ST),其中所述多个计算步骤(ST)中的预先确定的计算步骤在实施所述程序代码(CO)时以预先确定的顺序被调用,而且所述预先确定的计算步骤中的至少有些计算步骤是预先规定的计算步骤(STi),在所述预先规定的计算步骤中,分别访问寄存在所述程序代码(CO)中的由多个第一数字表格值(T1i)构成的第一表格(T1),以便从所述第一表格(T1)中读出对于相应的预先规定的计算步骤(STi)来说所需的第一表格值(T1i)。在程序代码的代码混淆的范围内,使用由多个数字掩码值(Mi)构成的动态掩码(M),其中针对相应的预先规定的计算步骤使用另一掩码值(Mi),用于通过第二表格值(T2i)来替代所述第一表格(T1)的第一表格值(T1i)。此外,待进行代码混淆的程序代码(CO)被适配为使得在其运行期间在相应的预先规定的计算步骤(STi)中将所述第二表格值(T2i)计算回到原来的第一表格值(T1i)。按照本发明的方法能够实现对程序代码中的表格式寄存的值得保护的信息的高效的代码混淆。在此,对表格式信息的去掩码化在程序代码运行期间分布在整个程序代码,由此这些信息的重构对于未经授权的攻击者来说变得困难。

Description

用于程序代码的计算机辅助的代码混淆的方法
技术领域
本发明涉及一种用于程序代码的计算机辅助的代码混淆的方法以及一种用于执行这种经代码混淆的程序代码的方法。本发明还包括一种技术系统、一种计算机程序产品和一种计算机程序。
背景技术
常常存在保护程序代码中的信息以防第三方的未经授权的访问的需求。在此,常见的方案在于:利用适当的加密函数对信息进行加密或者借助于代码打包程序(Code-Packer)来对程序代码进行打包。在此,不利的是:在程序代码的运行期间,信息重新被解密或代码重新被解包,使得值得保护的信息在程序执行时完全以明文存在于程序存储器中,而且因此存在攻击者利用适当的技术从存储器中读出这些信息的危险。
发明内容
本发明的任务是提供一种计算机辅助的方法,利用该方法来非常好地保护程序代码中的值得保护的信息以防在程序代码的运行期间第三方的未经授权的访问。
该任务通过按照本发明的方法来解决。本发明的扩展方案在下文中限定。
按照本发明的方法用于程序代码的计算机辅助的代码混淆(也就是说模糊处理)。在待模糊处理或代码混淆的程序代码中实施多个计算步骤,其中所述多个计算步骤中的预先确定的计算步骤在执行程序代码时以预先确定的顺序被调用。计算步骤以及也包括更下面提到的更新步骤的概念在此应宽泛地来理解。一个计算步骤不一定必须只包含一个单独的运算,而是该计算步骤可以由多个运算、必要时具有条件、循环、嵌套以及诸如此类的运算来组成。因此,通过计算步骤或更新步骤,可以将运算序列封装。
待模糊处理的程序代码的预先确定的计算步骤包含预先规定的计算步骤。这些预先确定的计算步骤例如可以只包括预先规定的计算步骤,然而除了这些预先规定的计算步骤之外,必要时也可以设置其它计算步骤。这些预先规定的计算步骤的特点在于:在这些步骤中分别访问寄存在程序代码中的由多个第一数字表格值构成的第一表格,以便从第一表格中读出对于相应的预先规定的计算步骤来说所需的第一表格值。对于所有不是预先规定的计算步骤(只要存在的话)的预先确定的计算步骤来说,虽然还规定了对这些预先确定的计算步骤的调用的预先确定的顺序,但是这些计算步骤没有访问第一表格。
表格的概念应宽泛地来理解。表格是数字值的集合,通过程序代码利用相对应的指令可以有针对性地访问该集合。此外,表格值的概念也应宽泛地来理解。一个表格值尤其可以由多个子值组成,这些子值在相对应地被调用的计算步骤中的不同的位置被处理。
在按照本发明的对程序代码的代码混淆的范围内,生成动态掩码,该动态掩码包括多个数字掩码值,其中该动态掩码中的至少一部分动态掩码的掩码值以及优选地该掩码的所有掩码值都彼此不同而且相应的掩码值对于相应的预先规定的计算步骤来说有效。
在按照本发明的方法的范围内,第一表格的每个第一表格值都借助于在相应的预先规定的计算步骤中读入相应的第一表格值时有效的掩码值来被转换成第二数字表格值,由此得到由这些第二表格值构成的第二表格,该第二表格替代第一表格被寄存在程序代码中。换言之,在执行经代码混淆的程序代码时,不再访问第一表格值,而是访问相对应的第二表格值。在下文,在相应的预先规定的计算步骤中读入相应的第一表格值时有效的掩码值也被称作当前有效的掩码值。
为了经代码混淆的程序代码提供与未经代码混淆的程序代码相同的结果,在代码混淆的范围内,还针对每个预先规定的计算步骤在程序代码中实施附加的计算步骤,在实施相对应的预先规定的计算步骤时,该附加的计算步骤将所读出的第二表格值回算到对于相应的预先规定的计算步骤来说所需的那个第一表格值。
按照本发明的方法具有如下优点:借助于动态掩码来对表格式寄存的值得保护的信息非常好地进行模糊处理。在此,去掩码化或去模糊化的运算被分配到整个程序代码中的多个计算步骤。因此,在经代码混淆的程序代码的运行期间对经模糊处理的信息的重构变得非常困难。
在一个特别优选的实施方式中,为了生成动态掩码,规定初始掩码值和更新步骤,其中通过将一个或多个连续的更新步骤应用到当前有效的掩码值来计算对于下一个预先规定的计算步骤来说有效的掩码值。初始掩码值和更新步骤也在程序代码中实施,使得在相应的预先规定的计算步骤中存在当前有效的掩码值,其中该附加的计算步骤在相应的预先规定的计算步骤中取决于当前有效的掩码值。由于在程序代码中实施更新步骤,攻击者为了重构在预先规定的计算步骤中的第一表格值而需要关于初始掩码值和之前的更新步骤的知识。因为该知识分布在程序代码中,所以实现了对程序代码中的信息的非常好的保护。
为了使回算到原来的第一表格值变得困难,在刚刚描述的实施方式的一个优选的变型方案中,更新步骤针对其所应用于的掩码值中的至少一部分掩码值而且尤其是针对其所应用于的所有掩码值以彼此不一样的方式来被规定。在另一优选的变型方案中,在这些预先规定的计算步骤中的每个计算步骤中都设置更新步骤,其中此外优选地也在不是预先规定的计算步骤(只要存在的话)的预先确定的计算步骤中的至少一部分计算步骤中(尤其是在所有预先确定的计算步骤中)分别设置更新步骤。
在另一优选的变型方案中,初始掩码值和更新步骤借助于随机数发生器来被规定。以这种方式实现了对这些值或步骤的非常任意的规定并且因此进一步改善了对程序代码的模糊处理。
在另一优选的实施方式中,第一表格值和第二表格值以及也包括掩码值分别是位序列。优选地,在此,通过在第一表格值的位序列与当前有效的掩码值的位序列之间应用逻辑运算来将相应的第一表格值转换成第二表格值。在此,对逻辑运算的应用提供第二表格值。
优选地,上文的逻辑运算逐位地被应用于相应的第一表格值和当前有效的掩码值的位序列的彼此对应的位,其中这些逻辑运算优选地包括一个或多个OR(或)和/或XOR(异或)和/或NOR(或非)和/或XNOR(同或)和/或AND(与)和/或NAND(与非)运算。因此,在当前有效的掩码值的位序列比第一表格值的位序列长的情况下,并不是将当前有效的掩码值的所有位都用于修改第一表格值。
在当前有效的掩码值的位序列比相应的第一表格值的位序列短的情况下,在按照本发明的方法的一个优选的变型方案中,当前有效的掩码值的初始位序列通过多次使用初始位序列的位来延长,使得针对相应的第一表格值的位序列的每个位都存在当前有效的掩码值的位序列的对应的位。优选地,将位序列延长为使得初始位序列被重复一次或多次。以这种方式,即使掩码值的位长度比相对应的(第一)表格值的那个位长度短,也实现了对相对应的表格值的良好的模糊处理。
除了用于程序代码的代码混淆的方法之外,本发明也涉及一种用于执行经代码混淆的程序代码的方法。在此,在调用(经代码混淆的)程序代码的相应的预先规定的计算步骤时,从第二表格中读出第二表格值并且针对相应的预先规定的计算步骤来实施附加的计算步骤,该附加的计算步骤将所读出的第二表格值回算到对于相应的预先规定的计算步骤来说所需的那个第一表格值。
在已经利用了使用更新步骤来确定当前有效的掩码值的实施方式来生成经代码混淆的程序代码的情况下,在执行经代码混淆的程序代码的范围内,也实施在该经代码混淆的程序代码中实现的更新步骤。
本发明还涉及一种技术系统,该技术系统包括计算装置,该计算装置被设立用于按照刚刚描述的方法来执行经代码混淆的程序代码。在此,技术系统的术语应宽泛地来理解,而且该技术系统也可以是单独的技术设备。在此,经代码混淆的程序代码可以寄存在不同的技术系统中。该技术系统例如可以是自动化设备或者自动化设备的组件或者电能生成和/或电能分配系统或者电能生成和/或电能分配系统的组件或者医疗设备。
本发明还涉及一种计算机程序产品,该计算机程序产品具有被存储在机器可读载体上的程序代码部分,当所述程序代码部分被执行到计算机上时,所述程序代码部分用于执行按照本发明的用于程序代码的计算机辅助的代码混淆的方法或用于执行按照本发明的用于执行经代码混淆的程序代码的方法或用于执行这些方法的优选的变型方案。
本发明还涉及一种计算机程序,该计算机程序具有程序代码部分,当所述程序代码部分在计算机上被执行时,所述程序代码部分用于执行按照本发明的用于程序代码的计算机辅助的代码混淆的方法或用于执行按照本发明的用于执行经代码混淆的程序代码的方法或用于执行这些方法的优选的变型方案。
在上面的计算机程序产品或计算机程序用于实施用于程序代码的代码混淆的方法的情况下,利用相对应的程序代码部分来引起该代码混淆。因此,这些程序代码部分并不是待进行代码混淆的程序代码。
在该计算机程序产品或该计算机程序用于执行经代码混淆的程序代码的情况下,这些程序代码部分对应于经代码混淆的程序代码。
附图说明
随后,本发明的实施例依据随附的图1详细地予以描述。该附图示出了按照本发明的用于程序代码的代码混淆的方法的实施方式的流程图。
具体实施方式
按照图1,该方法的起点是应在本发明的范围内被模糊处理的程序代码CO。该程序代码包含多个计算步骤,所述多个计算步骤在图1中用ST来表示。在此,这些计算步骤STi(i=1,...,n)中的一部分访问第一表格T1,其中相应的计算步骤从该表格中读出相对应的录入项T1i。通过下标i来规定预先确定的顺序,计算步骤STi以该顺序依次被实施。在此,这些计算步骤STi对应于预先规定的计算步骤。在这些计算步骤STi之间也还可以实施程序代码CO的其它计算步骤,其中然而这些其它计算步骤没有访问表格T1。
因此,按照程序代码CO,只在这些计算步骤STi中访问第一表格T1的确定的录入项T1i。在此,相应的表格录入项是在相对应的计算步骤中被处理的位序列。在此,各个表格录入项的位序列具有长度l(i)。所述长度对于不同的表格录入项来说可能不一样大。
在运行期间,程序代码CO根据已知的输入通过应用计算步骤ST来生成确定的输出。原则上,这些计算步骤ST在此可以以任意的顺序来经历,然而特殊的计算步骤STi彼此间总是以相同的顺序并且与输入无关地始终被经历正好一次。相应的计算步骤STi总是只访问一个单独的表格录入项T1i,其中然而该计算步骤在其实施时允许任意频繁地访问该表格录入项。
具有相对应的表格录入项T1i的未经模糊处理的表格T1包含值得保护的信息,而且随后描述的实施方式的目标是对程序代码CO进行代码混淆,使得未经授权的第三方不能根据程序代码来重构这些表格录入项或者只能花费很高地根据程序代码来重构这些表格录入项。不同于将加密函数一次性地应用到整个表格T1,模糊处理分布在整个程序代码,由此使回算到原来的表格值变得非常困难。
按照图1的步骤S1,为了程序代码CO的代码混淆,首先确定具有掩码录入项Mi(i=1,...,n)的动态掩码M。因此,对于每个预先规定的计算步骤STi来说都存在相对应的掩码值Mi。该掩码值Mi只对于计算步骤STi有效。通过对这些掩码值的索引,规定了与计算步骤STi的实施相对应的顺序。各个掩码值Mi分别是具有确定的长度的位序列,其中该长度在这里所描述的实施方式中关于掩码值Mi保持相同,然而情况不一定必须如此。
各个掩码值Mi通过更新步骤的序列来确定,这些更新步骤从任意的初始掩码值出发连续地被应用于最后被更新的掩码值。在此,更新步骤的概念应宽泛地来理解。特别是,一个更细步骤不仅可包含单独的运算,而且必要时可包含多个运算。在这里所描述的实施方式中,这些更新步骤是任意地被规定的并且因此彼此间至少部分不一样。虽然如此,各个更新步骤固定地预先规定并且包含在其中的运算以固定的顺序来实施。因此,按照步骤S1,生成具有任意的掩码分配或掩码值Mi的掩码M。优选地,在此使用随机数发生器来规定掩码的初始值以及规定更新步骤。
接着,在步骤S2中,在相应的计算步骤STi中被读出的表格录入项T1i借助于函数fi,M来改变,该函数取决于在相对应的计算步骤STi中有效的掩码值Mi。在此,该函数fi,M可以任意地来规定,重要的仅仅是:该函数取决于相应的掩码值Mi而且将表格录入项T1i双射映射到第二表格T2的新的表格录入项T2i。如从图1中可见,该函数fi,M在该实施例中是如下映射,该映射将表格录入项T1i的位序列映射到长度相同的另一位序列,其中该另一位序列对应于新的表格录入项T2i
在针对所有计算步骤STi都生成了经修改的表格录入项T2i之后,原来的表格录入项T1i被这些新的表格录入项T2i替代,使得对于攻击者来说不可能轻易地从程序代码CO中读出原来的表格录入项。由于对表格录入项的修改,程序代码CO也还必须按如下地被改变:在相对应的计算步骤STi中,将所读出的表格录入项T2i换算成原来的表格录入项T1i。这按照图1在步骤S3中实现。在该步骤中,初始掩码值在程序代码的开头被寄存而上文的更新步骤也在程序代码中被实施,其中在这里所描述的实施方式中,在调用相应的计算步骤STi时,执行相对应的更新步骤来确定当前有效的掩码值。此外,在每个计算步骤中都实施附加步骤,该附加步骤借助于反函数fi,M -1将所读出的表格录入项T2i换算成原来的表格录入项T1i,该反函数取决于当前有效的掩码值Mi
因此,作为步骤S1至S3的结果,得到经代码混淆的程序代码CO',在该经代码混淆的程序代码中,原来的表格T1被模糊处理。然而,通过回算到原来的表格值的回算步骤,实现了与在未经代码混淆的程序代码CO的情况下相同的计算结果。紧接着,经代码混淆的程序代码CO'可以被寄存在任意的技术设备中并且被执行。这在图1中通过箭头P来表示。在此,经代码混淆的程序代码CO'被存储在技术设备1上,该技术设备拥有计算装置2,利用该计算装置来执行经代码混淆的程序代码CO'。
先前所描述的对程序代码的代码混淆可以被用在不同的技术领域。特别是,在此可以改变在SCADA系统、PLC(PLC=ProgrammableLogicController(可编程逻辑控制器))、运动控制系统、自动化软件、计算机断层扫描设备、智能电网(SmartGrid)等等中的程序代码。在此,可以对任意的算法进行代码混淆,例如在PC(PC=PersonalComputer(个人计算机))上的程序或者在设备上的固件。这些程序可以承担任意的任务,例如可以涉及控制和/或调节算法或者基于神经元网络的算法。
通常,利用按照本发明的代码混淆实现了:在软件中的表格式存储并且值得保护的数据被模糊处理。值得保护的数据例如可以是加密信息或者是对于许可证检查来说重要的信息。
先前所描述的按照本发明的方法的实施方式具有一系列优点。尤其是,由于表格的掩码化,攻击者丝毫不再能从该表格中提取出信息。更确切地说,为了可以合理地解释表格的经掩码化的形式,需要额外地了解掩码的初始值以及针对该掩码的更新步骤的整个序列。
不同于一次性的解密或解包运算,对表格的去掩码化的步骤不是在程序代码中的逐点的位置上进行,而是该去掩码化分布在整个程序代码。因此,攻击者必须分析整个程序代码,以便反推出该表格的原来的值。与之相反,在对表格的一次性的加密的情况下,攻击者可以在了解解密的情况下直接访问表格录入项的明文。
此外,在按照本发明的代码混淆中,在执行程序代码时丝毫不能依据存储器状态、也就是说尤其是当前的掩码值来轻易地推断出超过在当前的步骤中使用的表格录入项。在对掩码值的下一次更新时已经不再可能反推出之前的表格录入项。
按照本发明的代码混淆方法还可以非常好地与逆向工程(ReverseEngineering)的其它技术、诸如反调试(Anti-Debug)措施或者自修改代码的使用相结合。以这种方式,重构去掩码化运算的整个序列从而提取出原来的表格值对于攻击者来说难上加难。

Claims (12)

1.一种用于程序代码(CO)的计算机辅助的代码混淆的方法,其中在所述程序代码(CO)中实施多个计算步骤(ST),其中所述多个计算步骤(ST)中的预先确定的计算步骤在执行所述程序代码(CO)时以预先确定的顺序被调用,而且所述预先确定的计算步骤中的至少有些计算步骤是预先规定的计算步骤(STi),在所述预先规定的计算步骤中,分别访问寄存在所述程序代码(CO)中的由多个第一数字表格值(T1i)构成的第一表格(T1),以便从所述第一表格(T1)中读出对于相应的预先规定的计算步骤(STi)来说所需的第一表格值(T1i),其中为了改变所述程序代码而实施如下步骤:
-生成动态掩码(M),所述动态掩码包括多个数字掩码值(Mi),其中所述动态掩码(M)中的至少一部分动态掩码的掩码值(Mi)彼此不同而且相应的掩码值(Mi)对于相应的预先规定的计算步骤(STi)来说有效;
-所述第一表格(T1)的每个第一表格值(T1i)都借助于在相应的预先规定的计算步骤(STi)中读入相应的第一表格值(T1i)时有效的掩码值(Mi)来被转换成第二数字表格值(T2i),由此得到由第二表格值(T2i)构成的第二表格(T2),所述第二表格替代所述第一表格(T1)被寄存在所述程序代码(CO)中;
-针对每个预先规定的计算步骤(STi)在所述程序代码(CO)中实施附加的计算步骤(fi,M -1),所述附加的计算步骤将所读出的第二表格值(T2i)回算到对于相应的预先规定的计算步骤(STi)来说所需的那个第一表格值(T1i),
其中为了生成所述动态掩码(M),规定初始掩码值和更新步骤,其中通过将一个或多个连续的更新步骤应用到当前有效的掩码值(Mi)来计算对于下一个预先规定的计算步骤(STi)来说有效的掩码值(Mi),其中所述更新步骤也在所述程序代码(CO)中实施,使得在相应的预先规定的计算步骤(STi)中存在所述当前有效的掩码值(Mi),其中所述附加的计算步骤(fi,M -1)在相应的预先规定的计算步骤中取决于所述当前有效的掩码值(Mi),其中所述更新步骤针对其所应用于的掩码值(Mi)中的至少一部分掩码值以彼此不一样的方式来被规定。
2.根据权利要求1所述的方法,其特征在于,在所述预先规定的计算步骤(STi)中的每个计算步骤中都实施更新步骤,其中此外也在不是预先规定的计算步骤(STi)的预先确定的计算步骤中的至少一部分计算步骤中分别实施更新步骤。
3.根据权利要求1或2所述的方法,其特征在于,所述初始掩码值(Mi)和/或所述更新步骤借助于随机数发生器来被规定。
4.根据权利要求1或2所述的方法,其特征在于,所述第一表格值(T1i)和所述第二表格值(T2i)以及所述掩码值(Mi)分别是位序列。
5.根据权利要求4所述的方法,其特征在于,通过在相应的第一表格值(T1i)的位序列与当前有效的掩码值(Mi)的位序列之间应用逻辑运算来将相应的第一表格值(T1i)转换成第二表格值(T2i),其中对所述逻辑运算的应用提供所述第二表格值(T2i)。
6.根据权利要求5所述的方法,其特征在于,所述逻辑运算逐位地被应用于相应的第一表格值(T1i)和所述当前有效的掩码值(Mi)的位序列的彼此对应的位,其中所述逻辑运算包括一个或多个OR和/或XOR和/或NOR和/或XNOR和/或AND和/或NAND运算。
7.根据权利要求6所述的方法,其特征在于,在所述当前有效的掩码值(Mi)的位序列比相应的第一表格值(T1i)的位序列短的情况下,所述当前有效的掩码值(Mi)的初始位序列通过多次使用所述初始位序列的位来被延长,使得针对相应的第一表格值(T1i)的位序列的每个位都存在所述当前有效的掩码值(Mi)的位序列的对应的位。
8.根据权利要求7所述的方法,其特征在于,在所述当前有效的掩码值(Mi)的位序列比相应的第一表格值(T1i)的位序列短的情况下,所述当前有效的掩码值(Mi)的初始位序列通过重复所述初始位序列一次或多次来被延长,使得针对相应的第一表格值(T1i)的位序列的每个位都存在所述当前有效的掩码值(Mi)的位序列的对应的位。
9.一种用于执行利用根据权利要求1至8之一所述的方法来被代码混淆的程序代码(CO')的方法,其中在调用所述程序代码(CO')的相应的预先规定的计算步骤(STi)时,从第二表格(T2)中读出第二表格值(T2i)并且针对相应的预先规定的计算步骤(STi)来实施附加的计算步骤(fi,M -1),所述附加的计算步骤将所读出的第二表格值(T2i)回算到对于相应的预先规定的计算步骤(STi)来说所需的那个第一表格值(T1i)。
10.一种用于执行利用根据权利要求1至8之一所述的方法来被代码混淆的程序代码(CO')的技术设备,其特征在于,所述技术设备(1)包括计算装置(2),所述计算装置被设立用于根据权利要求9所述的方法来执行所述程序代码(CO')。
11.根据权利要求10所述的技术设备,其特征在于,所述技术设备(1)是自动化设备或者自动化设备的组件或者电能生成和/或电能分配系统或者电能生成和/或电能分配系统的组件或者医疗设备。
12.一种机器可读载体,在其上存储有计算机程序,所述计算机程序具有程序代码部分,当所述程序代码部分在计算机上被执行时,所述程序代码部分用于执行根据权利要求1至8之一所述的方法。
CN201780088267.2A 2017-03-10 2017-12-13 用于程序代码的计算机辅助的代码混淆的方法 Active CN110383275B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102017204020.3 2017-03-10
DE102017204020.3A DE102017204020A1 (de) 2017-03-10 2017-03-10 Verfahren zur rechnergestützten Obfuskation von Programmcode
PCT/EP2017/082508 WO2018162107A1 (de) 2017-03-10 2017-12-13 Verfahren zur rechnergestützten obfuskation von programmcode

Publications (2)

Publication Number Publication Date
CN110383275A CN110383275A (zh) 2019-10-25
CN110383275B true CN110383275B (zh) 2023-08-22

Family

ID=61054302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780088267.2A Active CN110383275B (zh) 2017-03-10 2017-12-13 用于程序代码的计算机辅助的代码混淆的方法

Country Status (7)

Country Link
US (1) US11341216B2 (zh)
EP (1) EP3577588B1 (zh)
JP (1) JP6919973B2 (zh)
KR (1) KR102336521B1 (zh)
CN (1) CN110383275B (zh)
DE (1) DE102017204020A1 (zh)
WO (1) WO2018162107A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3609240A1 (de) 2018-08-09 2020-02-12 Siemens Aktiengesellschaft Computerimplementiertes verfahren und netzwerkzugangsserver zum verbinden einer netzwerkkomponente mit einem netzwerk, insbesondere einem mobilfunknetz, mit einem erweiterten netzwerkzugangskennzeichen
US20210303662A1 (en) * 2020-03-31 2021-09-30 Irdeto B.V. Systems, methods, and storage media for creating secured transformed code from input code using a neural network to obscure a transformation function
US11954213B2 (en) 2021-09-13 2024-04-09 International Business Machines Corporation Obfuscating intelligent data while preserving reserve values

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
WO2009010338A1 (de) * 2007-07-13 2009-01-22 Siemens Aktiengesellschaft Verfahren zur rechnergestützten obfuskierung eines softwareprogramms und computerprogrammprodukt
EP2937803A1 (en) * 2014-04-23 2015-10-28 Nxp B.V. Control flow flattening for code obfuscation where the next block calculation needs run-time information

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3627384B2 (ja) 1996-01-17 2005-03-09 富士ゼロックス株式会社 ソフトウェアの保護機能付き情報処理装置及びソフトウェアの保護機能付き情報処理方法
JP2003280755A (ja) 2002-03-25 2003-10-02 Nec Corp 自己復元型プログラム、プログラム生成方法及び装置、情報処理装置並びにプログラム
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
US7133525B1 (en) * 2002-05-17 2006-11-07 Communication Security Apparatus Corp. Communication security apparatus and method of using same
US8667301B2 (en) * 2010-04-01 2014-03-04 Apple Inc. Obfuscating transformations on data array content and addresses
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
EP2803009B1 (en) * 2012-01-09 2019-11-20 Koninklijke Philips N.V. Virtual machine device having key driven obfuscation and method
US8756435B2 (en) * 2012-03-02 2014-06-17 Apple Inc. Obfuscation of control flow of software
US9336370B2 (en) * 2012-12-06 2016-05-10 Apple Inc. Method and apparatus for dynamic obfuscation of static data
KR101328012B1 (ko) 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
US10599820B2 (en) * 2014-04-23 2020-03-24 Nxp B.V. Control flow flattening for code obfuscation where the next block calculation needs run-time information
US9830326B2 (en) * 2015-06-15 2017-11-28 Ca, Inc. Identifying data offsets using binary masks
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
WO2009010338A1 (de) * 2007-07-13 2009-01-22 Siemens Aktiengesellschaft Verfahren zur rechnergestützten obfuskierung eines softwareprogramms und computerprogrammprodukt
EP2937803A1 (en) * 2014-04-23 2015-10-28 Nxp B.V. Control flow flattening for code obfuscation where the next block calculation needs run-time information

Also Published As

Publication number Publication date
US11341216B2 (en) 2022-05-24
US20200042677A1 (en) 2020-02-06
KR102336521B1 (ko) 2021-12-06
EP3577588A1 (de) 2019-12-11
EP3577588B1 (de) 2021-09-01
DE102017204020A1 (de) 2018-09-13
JP2020510935A (ja) 2020-04-09
JP6919973B2 (ja) 2021-08-18
CN110383275A (zh) 2019-10-25
WO2018162107A1 (de) 2018-09-13
KR20190122837A (ko) 2019-10-30

Similar Documents

Publication Publication Date Title
US10431123B2 (en) Method for testing and hardening software applications
CN110383275B (zh) 用于程序代码的计算机辅助的代码混淆的方法
CN102638341B (zh) 用于计算标量乘法的结果的设备和方法
JP5911654B2 (ja) 乱数生成器及びストリーム暗号
US9875377B2 (en) Encryption device of a substitution-box type, and corresponding encryption method and computer program product
KR20090024804A (ko) 난수 발생기 시스템, 난수 생성 방법 및 컴퓨터 판독가능 매체
EP3488553A1 (en) Device and method for performing obfuscated arithmetic
KR20200022018A (ko) Sbox를 이용하는 암호화 프로세스를 고차 부채널 공격으로부터 보호하기 위한 방법
JP2008233683A (ja) 暗号処理装置及びプログラム
KR20180098172A (ko) 알고리즘으로의 마스킹의 자동 삽입
KR101320956B1 (ko) 연관규칙 마이닝에서의 프라이버시 보호 장치 및 방법
CN105376055A (zh) 一种生成伪随机数的方法及伪随机数发生器
JP2021530057A (ja) マスク関数を用いるコンパイラデバイス
RU2680761C1 (ru) Безопасные преобразования данных
KR20210147645A (ko) 동형 암호화 장치 및 그것의 암호문 연산 방법
CN108932407B (zh) 一种程序安全保护方法及装置
CN105765896A (zh) 用于表格网络的迭代应用的计算设备
EP3085004A1 (en) Operator lifting in cryptographic algorithm
JP7079711B2 (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
CN108021790B (zh) 文件保护方法、装置、计算设备及计算机存储介质
CN111602367B (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
US10055194B2 (en) Operation based on two operands
Styugin Indistinguishable executable code generation method
NL2015955B1 (en) Calculating device and method.
CN112199643B (zh) 程序压扁的迷惑方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant