CN101147155A - 程序变换装置、安全处理装置、计算机程序及记录媒体 - Google Patents

程序变换装置、安全处理装置、计算机程序及记录媒体 Download PDF

Info

Publication number
CN101147155A
CN101147155A CNA2006800097138A CN200680009713A CN101147155A CN 101147155 A CN101147155 A CN 101147155A CN A2006800097138 A CNA2006800097138 A CN A2006800097138A CN 200680009713 A CN200680009713 A CN 200680009713A CN 101147155 A CN101147155 A CN 101147155A
Authority
CN
China
Prior art keywords
computing
secret information
secret
program
order
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.)
Granted
Application number
CNA2006800097138A
Other languages
English (en)
Other versions
CN100555300C (zh
Inventor
浅井理惠子
佐藤太一
芳贺智之
松本健一
门田晓人
中村匡秀
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.)
NAT UNIVERSITY CORP NARA I OF
Panasonic Holdings Corp
Original Assignee
NAT UNIVERSITY CORP NARA I OF
Matsushita Electric Industrial Co Ltd
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 NAT UNIVERSITY CORP NARA I OF, Matsushita Electric Industrial Co Ltd filed Critical NAT UNIVERSITY CORP NARA I OF
Publication of CN101147155A publication Critical patent/CN101147155A/zh
Application granted granted Critical
Publication of CN100555300C publication Critical patent/CN100555300C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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]
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself

Landscapes

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

Abstract

本发明提供一种程序变换装置,能不将秘密信息表示在存储器上地执行包含使用该秘密信息对加密化数据进行解密的秘密运算的程序,使程序执行时的机密性提高。执行程序生成装置中,对于包含被运算信息与秘密信息的每个相同比特位置的运算、即秘密运算处理的原程序,结合函数生成部生成对输入值按每个比特位置实施自双反函数的结合函数处理,分割秘密信息生成部利用对所述秘密信息的自双反函数的逆运算生成多个分割秘密信息,程序变换部生成对所述被运算信息与该分割秘密信息的每个相同比特位置执行所述运算的分割秘密运算处理,将所述原程序中的秘密运算处理置换为将分割秘密运算处理的运算结果设为输入的分割秘密运算处理、和多个分割秘密运算处理。

Description

程序变换装置、安全处理装置、计算机程序及记录媒体
技术领域
本发明涉及一种在计算机系统上执行处理秘密信息的程序时、使机密性提高的技术。
背景技术
近年来,就计算机系统而言,调试工具(debug)或ICE(In-CircuitEmulator:内电路仿真器,注册商标)等程序解析工具的功能充实,使用这些工具的程序的解析和改变变得容易。
作为强化机密保护的技术,例如提议如下方法,分割后加密化程序,通过仅解密并执行在执行时所需的部分,将明文程序的收集和程序的解析变困难,或如专利文献1所述,分割成可并列执行加密化计算,难以清楚解析的方法。
专利文献1:日本特表2002-536911号公报
但是,就使用秘密信息解密加密化数据的程序而言,如上所述,即便分割、加密化程序,也由于在执行时恢复该程序,解密密钥等秘密信息在程序执行中出现在存储器上,所以有可能利用解析工具取得存储器上的上述秘密信息。
发明内容
鉴于上述问题,本发明的目的在于提供一种程序变换装置,能不将秘密信息表示在存储器上地执行使用该秘密信息对加密化数据进行解密的程序,使程序执行时的机密性提高。
为了解决上述课题,本发明是一种程序变换装置,具备:程序存储部件,存储原程序,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令;分割秘密信息生成部件,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;分割运算命令生成部件,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;结合命令生成部件,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和置换部件,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
发明效果
本发明的程序变换装置通过具备上述构成,可在原程序中的所述运算中,使用多个所述分割秘密信息,代替使用所述秘密信息,并且,生成执行结果与原程序相同的程序。
从而,在计算机系统上执行所生成的程序的情况下,由于所述秘密信息不出现在存储器上,所以可防止所述秘密信息泄漏,可使程序的机密性提高。
另外,即便在分割秘密信息偶然为与秘密信息相同的值的情况下,也由于对其它分割秘密信息也执行同样的运算,所以难以了解该分割秘密信息是与秘密信息相同的值。
另外,所述结合运算也可以是基于每比特的自双反函数的运算。
另外,也可以是所述结合运算是在输入比特值全部为0时输出0、输入比特值全部为1时输出1的运算。
根据该构成,可在原程序中的所述运算中,使用多个所述分割秘密信息,代替使用所述秘密信息,并且,生成执行结果与原程序相同的程序。
从而,在计算机系统上执行所生成的程序的情况下,由于所述秘密信息不出现在存储器上,所以可防止所述秘密信息泄漏,可使程序的机密性提高。
另外,即便在分割秘密信息偶然为与秘密信息相同的值的情况下,也由于对其它分割秘密信息也执行同样的运算,所以难以了解该分割秘密信息是与秘密信息相同的值。
这里,所谓自双反函数(self-dual function)是将n(n为2以上的自然数)个变量x1、x2、......xn设为输入的n变量输入函数f(x1,x2,...,xn),满足~f(x1,x2,...,xn)=f(~x1,~x2,...,~xn),即,在对提供给函数f的各输入值全部否定(NOT)的情况下,输出为对原始输入值的输出值的否定(NOT)。其中,‘~’是表示否定的符号。另外,作为条件,设满足f(0,0,...,0)=0,且f(1,1,...,1)=1。
另外,也可以是所述秘密运算命令执行的运算是每个比特的逻辑运算,所述分割运算是与所述秘密运算命令执行的运算相同的运算,所述结合命令是执行与所述结合运算相同的运算的命令。
根据该构成,可在原程序中所述秘密运算命令执行的运算、即每个比特的逻辑运算中,使用多个所述分割秘密信息,代替使用所述秘密信息,并且,生成执行结果与原程序相同的程序。
另外,也可以是所述秘密运算命令执行的运算,是所述被运算信息与所述秘密信息之间的按每个相同比特位置的运算,所述分割秘密信息生成部件,对所述秘密信息的每个比特位置,生成作为对该比特位置的自双反函数逆运算结果的多个比特值,并将生成的多个比特值的每个分配给多个分割秘密信息的该比特位置,所述分割运算命令,是对所述被运算信息与所述分割秘密信息的每个相同比特位置执行所述运算的命令,所述结合命令是如下命令,即:对于所述分割运算分别算出的多个结果,对相同比特位置的比特值实施所述自双反函数,并将其结果设为该比特位置的比特值,由此执行所述结合的命令。
根据该构成,可在原程序中所述秘密运算命令执行的运算、即每个比特的运算中,使用多个所述分割秘密信息,代替使用所述秘密信息,并且,生成执行结果与原程序相同的程序。
这里,所谓自双反函数的逆运算是对作为运算对象的数据X、算出满足X=f(x1,x2,...,xn)的x1、x2...xn并输出的运算。另外,在存在多个满足X=f(x1,x2,...,xn)的(x1、x2...xn)的组的情况下,从这些组中随机选出1组。
另外,也可以是所述自双反函数是将多个输入值中的、占过半数的输入值输出的多数决定函数,所述分割秘密信息生成部件,预先保持与自双反函数相关的多个输入值与对应的输出值之间的对应表,对于所述秘密信息的各个比特位置,从所述对应表中读出和与该比特位置的比特值相同值的输出值相对应的多个输入值,将所述多个输入值设为所述多个分割秘密信息的每个的该比特位置的比特值。
根据该构成,所述分割秘密信息生成部件在事先知道多数决定的结果值的情况下,可确定多数决定的结果构成所述结果值的多个值。另外,由于向多个所述分割秘密信息的相同比特位置分配所确定的多个所述值的每个,所以可生成各自难以从所述秘密信息推定出的多个分割秘密信息。
另外,所述程序变换装置还包含存储不同的多个自双反函数的运算存储部件,所述分割秘密信息生成部件从存储在所述运算存储部件中的自双反函数中随机选出自双反函数,作为所述结合运算。
根据该构成,由于所述程序变换装置可生成使用从多个中选出的自双反函数的程序,所以可使非法解析更加困难,可使程序的机密性提高。
另外,也可以是所述置换部件还在不影响程序的执行结果的范围内,重新排列各个所述分割运算命令与所述结合运算命令。
另外,也可以是所述置换部件还在不影响程序执行结果的范围内,使重新排列后的各运算命令的配置分散。
另外,也可以是所述置换部件还在不影响程序执行结果的范围内,追加伪运算处理。
根据该构成,与执行原程序中的秘密运算的部位相比,由于生成处理扩散到多个部位的程序,所以可使非法解析更加困难,可使程序的机密性提高。
本发明的程序变换方法对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,该方法包含:分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
本发明的计算机程序,在程序变换装置中使用,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,该计算机程序包含:分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
本发明的集成电路,在程序变换装置中使用,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,该集成电路具备:分割秘密信息生成部件,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;分割运算命令生成部件,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;结合命令生成部件,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和置换部件,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
本发明的记录媒体,是存储了程序变换装置中使用的计算机程序的计算机可读取记录媒体,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,所述计算机程序包含:分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
根据该构成,可在原程序中的所述运算中,使用多个所述分割秘密信息,代替使用所述秘密信息,并且,生成执行结果与原程序相同的程序。
从而,在计算机系统上执行所生成的程序的情况下,由于所述秘密信息不出现在存储器上,所以可防止秘密信息泄漏,可使程序的机密性提高。
另外,即便在分割秘密信息偶然为与秘密信息相同的值的情况下,也由于对其它分割秘密信息也执行同样的运算,所以难以了解该分割秘密信息是与秘密信息相同的值。
本发明的安全处理装置,具备:被运算信息保持部件,保持被运算信息;分割秘密信息保持部件,保持多个分割秘密信息;结合运算式保持部件,保持表示结合所述多个分割秘密信息的结合运算的结合运算式;分割运算部件,对所述多个分割秘密信息的每个,实施对所述被运算信息使用该分割秘密信息的第1运算、即分割运算;和结合部件,使用所述结合运算,对所述多个分割运算的结果进行结合,所述结合部件使用所述结合运算对所述分割运算的结果进行结合,以使得结合的结果与使用通过所述结合运算结合所述多个分割秘密信息时得到的秘密信息、对所述被运算信息实施第2运算的结果相同。
本发明的计算机程序,具备被运算信息、多个分割秘密信息、和可结合所述多个分割秘密信息的结合运算式,该计算机程序具有:分割运算步骤,对所述多个分割秘密信息的每个,实施对所述被运算信息使用该分割秘密信息的第1运算、即分割运算;和结合步骤,使用所述结合运算,对所述多个分割运算步骤的结果进行结合,所述结合步骤使用所述结合运算对所述分割运算步骤的结果进行结合,以使得结合的结果与使用通过所述结合运算结合所述多个分割秘密信息时得到的秘密信息、对所述被运算信息实施第2运算的结果相同。
另外,也可以是所述第1运算与所述第2运算为相同运算。
根据该构成,可通过使用多个所述分割秘密信息的运算,代替使用所述秘密信息的运算,得到与使用所述秘密信息的运算相同的执行结果。
从而,由于所述秘密信息不出现在存储器上,所以可防止秘密信息泄漏,可使机密性提高。
另外,即便在分割秘密信息偶然为与秘密信息相同的值的情况下,也由于对其它分割秘密信息也执行同样的运算,所以难以了解该分割秘密信息是与秘密信息相同的值。
附图说明
图1是表示本发明的程序变换装置处理的程序的一例的图。
图2是表示本发明一实施方式的执行程序生成装置的内部构成的框图。
图3是表示自双反函数一例的图。
图4是表示自双反函数一例的图。
图5是表示自双反函数一例的图。
图6是表示分割秘密信息的生成处理的流程图。
图7是表示程序变换处理的流程图。
图8是表示本发明的程序变换装置处理的程序的一例的图。
图9是表示本发明一实施方式的执行程序生成装置的内部构成的框图。
图10是表示函数func()的处理步骤的流程图。
图11是表示变形例的信息处理执行装置的构成的框图。
符号说明
10 执行程序生成装置
11  输入部
12 程序保持部
13 变换程序生成部
14 执行程序生成部
101 秘密运算指定部
102 分割秘密信息生成部
103 程序取得部
104 分割数指定部
105 结合函数保持部
106 程序变换部
107 结合函数生成部
1101 秘密运算指定部
1107 结合函数生成部
1106 程序变换部
1300 变换程序生成部
具体实施方式
<第1实施方式>
<概要>
本发明一实施方式的执行程序生成装置对用户制作的、包含使用解密密钥解密加密化数据这样的要求隐匿性的处理的程序,执行在执行时所述解密密钥不出现在存储器上等使隐匿性提高的变换处理,编译所述变换处理后的程序,生成难以非法解析的执行程序。
用户制作的程序,作为一例,是使用作为秘密信息的解密密钥对加密化的音乐数据或视频数据等内容进行解密并再现的播放器程序,如图1所示的程序601所示,根据C语言等规定的程序语言标准来制作。
下面,以程序601为例继续说明。
程序601由多个行的文本构成。下面将文本的各行称为代码。
程序601包含请求秘密信息处理隐匿性的代码611‘data2=f_xor(data1,KEY);’。代码611是解密上述加密化数据或其一部分并存储解密结果的运算一例。
data1是变量,是解密的对象数据。
KEY是埋入程序中的常量,是用于解密数据的解密密钥。
函数f_xor(A,B)将8比特的自变量A与B各位置的异或设为返回值的该位置的值。这里,从8比特的最低位位置起,顺序称为比特0、比特1、比特2、...比特7,将变量X的第j比特的值记载为X∶j。另外,将16进制数记载为OxY。Ox表示该数是16进制数。OxF表示10进制数的15,OxFF表示10进制的255。
f_xor(A,B)具体而言,是对自变量A、自变量B各自的比特0,算出异或(XOR),将算出结果设为返回值的比特0,对自变量A、自变量B各自的比特1,算出XOR,将算出结果设为返回值的比特1,比特2~比特7也执行同样的处理,从而计算8比特的返回值。例如,在datal=0x03、KEY=0x03的情况下,f_xor(datal,KEY)的返回值为0x00。
这里,由于对f_xor(A,B)的自变量A、B的各位置独立地进行异或处理,所以A、B也可以是8比特以外的、例如1024比特、2048比特等,此时,只要连结对1024比特、2048比特等各位置的异或的算出结果即可。另外,自变量A、B为1比特长、即datal与KEY均为1比特长的情况下,代码611与‘data2=datal^KEY;’相同。这里,‘^’是表示XOR的运算符。
另外,若A、B为2比特长,则data2=f_xor(datal,KEY)与将基于下述两个公式的处理记载于程序601中相同。
data2∶1=datal∶1^KEY∶1;
data2∶0=data1∶0^KEY∶0;
原样编译程序601,生成执行程序,若在计算机上执行,则当计算机执行执行程序的对应于代码611的部分时,由于在存储器上会出现解密密钥KEY,所以若用调试工具或ICE(In-Circuit Emulator,注册商标)等解析工具解析正在执行执行程序的存储器上的数据,则可得到解密密钥KEY的立即值(immediate value)。
本发明的执行程序生成装置作为一例,从程序601暂时生成图1所示的程序605,编译程序605,生成执行程序。
程序605的细节如后所述,程序601中的代码611在程序605中被分为多个代码612、代码613、代码614、代码615,若执行代码612、代码613、代码614、代码615,则执行与代码611相同内容的处理。
用户制作的程序中,如上所述,将变换为相同内容处理的程序称为变换程序。所述程序605是变换程序。
另外,即便在计算机上执行从程序605生成的执行程序,也由于在存储器上不出现解密密钥KEY的立即值,得到与使用KEY的运算相同的结果,所以可避免因非法解析而使密钥容易曝露。
<构成>
下面,参照附图来说明作为本发明一实施方式的执行程序生成装置10。
执行程序生成装置10如图2所示,包含输入部11、程序保持部12、变换程序生成部13、执行程序生成部14来构成。
执行程序生成装置10具体而言,是由微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。所述RAM或所述硬盘单元中存储计算机程序。通过所述微处理器根据所述计算机程序动作,执行程序生成装置10实现其功能。
<输入部11、程序保持部12、执行程序生成部14>
输入部11受理用户使用键盘、鼠标(未图示)等输入装置输入的、对执行程序生成装置10的指示,向对应于所述指示内容的处理部发送所述指示。
程序保持部12是硬盘等存储装置,保持用户制作的程序。程序保持部12作为一例,保持程序601。
执行程序生成部14由CPU和编译器构成,将由变换程序生成部13生成的变换程序变换为计算机可执行的程序。
<变换程序生成部13>
变换程序生成部13由CPU及其控制程序构成,将用户制作的程序变换为变换程序。
变换程序生成部13如图2所示,包含秘密运算指定部101、分割秘密信息生成部102、程序取得部103、分割数指定部104、结合函数保持部105、程序变换部106和结合函数生成部107来构成。
(程序取得部103)
程序取得部103若从输入部11接收应变换程序的取得指示,则从程序保持部12中读出由所述取得指示表示的程序,显示于显示器(未图示)中。这里,设所述取得指示包含记录了应变换程序的文件名。
作为一例,程序取得部103从输入部11接收包含记录了程序601的文件名的取得指示,从程序保持部12中读出记录在由所述文件名识别的文件中的程序601,显示于所述显示器中。
(秘密运算指定部101)
秘密运算指定部101从输入部11取得用于确定程序中的秘密信息的信息、即秘密确定信息,并将所述秘密确定信息输出到分割秘密信息生成部102。
作为一例,所述秘密确定信息包含表示包含秘密信息的代码(例如代码611)的位置的秘密位置信息、所述秘密信息。
例如,所述秘密位置信息是程序601中代码611的行序号,秘密信息是‘KEY’。
作为具体取得步骤的一例,用户在观察程序取得部103显示于显示器中的程序601的同时,搜索包含秘密信息、希望提高隐匿性的代码(例如代码611),为了指示所述秘密信息,向输入部11输入所述秘密确定信息。秘密运算指定部101经输入部11取得输入的所述秘密确定信息。
(分割数指定部104)
分割数指定部104经输入部11取得用户输入的分割数,将该分割数输出到结合函数生成部107。
所述分割数表示将所述秘密信息分割成几个分割秘密信息。
秘密信息的分割及分割秘密信息如后所述。
(结合函数保持部105)
结合函数保持部105是硬盘等存储装置,保持1个以上的结合函数。
结合函数是结合多个分割秘密信息、生成秘密信息用的函数。
结合函数保持部105保持结合函数f()。
在第1实施方式中,作为f()的一例,设保持结合函数f_major(P1,P2,P3)。
f_major(P1,P2,P3)对8比特的自变量P1、P2、P3的各位置执行多数决定运算(majority operation),将该多数决定结果设为返回值的对应位置的值。
图3示出作为执行所述多数决定运算的函数f()的一例的函数401。
函数401是在x、y、z中半数以上、即2个以上为值1的情况下、输出1的多数决定运算。
函数401若输入x、y、z等3个数,则根据图3中的真值表402,输出结合结果。
例如,若向函数401输入x=0、y=0、z=0,则根据真值表402,输出0,若输入x=0、y=1、z=1,则根据真值表402,输出1。
例如,f_major(0x03,0x03,0x02)对于P1=0x03、P2=0x03、P3=0x02,将以P1的比特0的值1为x、以P2的比特0的值1为y、以P3的比特0的值0为z的f(1,1,0)=1,设为f_major()的返回值的比特0。
同样,将以P1的比特1的值1为x、以P2的比特1的值1刀y、以P3的比特1的值1为z的f(1,1,1)=1,设为f_major()的返回值的比特1,对比特2~比特7也同样处理,计算8比特的返回值,返回返回值。
f_major(P1,P2,P3)也与上述f_xor(A,B)一样,对P1、P2、P3的各位置独立地进行多数决定运算处理,所以P1、P2、P3也可以是8比特以外的、例如1024比特、2048比特等,此时,也只要连结对1024比特、2048比特等各位置的多数决定运算的算出结果即可。另外,自变量P1、P2、P3为1比特长的情况下,‘data2=f_major(P1,P2,P3)’与‘data2=f(P1,P2,P3)’相同。
结合函数保持部105还保持函数f_major()以外的函数,作为结合函数。
例如,与f_major()一样,有对输入的自变量的各位置适用图4所示的函数421的函数、或对输入的自变量的各位置适用图5所示的函数441的函数等。
这里,函数401、函数421、函数441中的记号‘|’表示逻辑或,记号‘&’表示逻辑与。
图4中示出作为函数f一例的函数421与其真值表422,图5示出作为函数f一例的函数441与其真值表441。
函数421、函数441中的记号‘~’表示否定的逻辑运算。
图4、图5与图3的说明重复,所以省略详细说明。
(结合函数生成部107)
结合函数生成部107若从分割数指定部104接收所述分割数,则从结合函数保持部105中保持的结合函数中,随机选择一个适于所述分割数的结合函数中的一个。
在分割数为3个的情况下,选择结合函数保持部105中保持的结合函数中、具备3输入的函数,作为一例,选择结合函数f_major()。
结合函数生成部107在执行所述选择之后,将涉及选择到的函数的信息、即确定密钥分割方法的信息、例如作为表示‘多数决定’的信息的分割方法信息,以及所述分割数,输出到分割秘密信息生成部102,将选择到的结合函数通知给程序变换部106。
在本实施方式中,结合函数生成部107从结合函数保持部105中存储的结合函数中随机选择结合函数,但也可生成结合函数。
结合函数生成部107保持或生成的结合函数未必是执行多数决定运算的函数,但均必需满足规定的性质。该物质在后面详细表述,所以这里省略说明。
(分割秘密信息生成部102)
分割秘密信息生成部102从秘密运算指定部101接收秘密确定信息,从结合函数生成部107接收分割方法信息与分割数,根据所述分割方法信息表示的分割方法,将秘密信息按分割数进行分割。
在本实施方式中,设分割数M为3,分割方法信息表示‘多数决定’。另外,由于必需执行多数决定,所以分割数M设定奇数。
分割秘密信息生成部102根据接收到的秘密确定信息中包含的秘密信息‘KEY’,生成多数决定的结果为‘KEY’的3个分割秘密信息K1、K2、K3。
用图6的流程图来说明分割秘密信息生成部102执行的分割秘密信息的生成处理。这里,该流程图表示KEY、K1-K3的每个为1比特时的处理,在KEY、K1-K3的每个由多个比特构成的情况下,若对多个比特的各位置适用该流程图所示的处理,则期望比特长度的KEY可得到期望比特长度的K1-K3。
图6中的变量i用于表示构成值的设定对象的分割秘密信息Ki。
变量j用于对值已设定的分割秘密信息K1-Ki中、设定与‘KEY’相同值的分割秘密信息的数量进行计数。
分割秘密信息生成部102首先用1初始化变量i,用0初始化变量j(步骤S101)。
接着,对M算出多数决定中构成多数的最低数m(步骤S102)。m使用公式Int(M/2)+1来算出。这里,Int(x)表示x的整数部。
之后,分割秘密信息生成部102判定j是否为m以上(步骤S103)。
在j为m以上的情况下(步骤S103:是),若取K1-KM的多数决定,则确定变为‘KEY’,所以对Ki设定函数rand()的返回值(步骤S105)。
这里,函数rand()是随机返回0或1之一作为返回值的函数。
在j小于m的情况下(步骤S103:否),判定应设定与KEY相同值的分割秘密信息的最低数、即(m-j)是否为值未设定的分割秘密信息的数(M+1-i)以下(步骤S104)。
在(m-j)为(M+1-i)以下的情况下(步骤S104:是),由于必需对值未设定的分割秘密信息全部设定值KEY,所以对Ki设定KEY(步骤S107),移动到步骤S108。
在(m-j)不为(M+1-i)以下的情况下(步骤S104:否),由于不必对值未设定的分割秘密信息全部设定与KEY相同的值,所以移动到步骤S105,将随机值设定给分割秘密信息。
在步骤S105结束之后,分割秘密信息生成部102判定Ki是否与KEY一致(步骤S106),在不一致的情况下(步骤S106:否),移动到步骤S109,在一致的情况下(步骤S106:是),将j加1(步骤S108),移动到步骤S109。
接着,分割秘密信息生成部102判定(i+1)是否为M以上(步骤S109),在不是M以上的情况下(步骤S109:否),将i加1(步骤S110),移动到步骤S103,在为M以上的情况下(步骤S109:是),结束处理。
分割秘密信息生成部102按照上述说明的步骤,根据秘密信息KEY,生成分割秘密信息K1-KM的多数决定的结果变为KEY的K1-KM之后,将生成的K1-K3与所述秘密确定信息输出到程序变换部106。
(程序变换部106)
程序变换部106从分割秘密信息生成部102取得所述秘密确定信息与所述分割数个数的所述分割秘密信息,从结合函数生成部107取得结合函数的通知,从程序取得部103取得程序,对取得的程序执行(a)运算分割处理、(b)交织处理、(c)伪追加处理、(d)结合函数追加处理。
下面,再次参照图1来顺序说明(a)-(d)。
(a)运算分割处理
运算分割处理是将程序中包含的秘密运算分割成M个分割秘密运算的处理。
运算变换部106对程序601中的秘密确定信息中包含的行序号的代码611‘data2=f_xor(data1,KEY);’,生成将基于秘密信息的运算置换为基于分割秘密信息的运算的M个运算、即代码612‘P1=f_xor(data1,K1);’、代码613‘P2=f_xor(data1,K2);’、代码614‘P3=f xor(data1,K3);’,并将代码611置换为代码612、613、614。
另外,将定义KEY的值的代码631‘KEY=0x03;’置换为定义K1、K2、K3的值的代码632‘K1=0x05;’、代码633‘K2=0x03;’、代码634‘K3=0x02;’。
将代码611置换为代码612、613、614、将代码631置换为代码632、633、634的程序是程序602。
(b)交织处理
程序变换部108不改变程序的处理结果,而置换程序602中的代码的排列顺序。
图1中的程序603是交织处理了程序602之后的程序。
具体而言,程序变换部108进行配置,以使得程序602中,作为从程序601置换的代码的代码612、613、614这3个,被程序中的其它代码插入(交织)。
作为一例,将程序开头的代码‘c=100;’插入代码613与代码614之间,将代码‘a=b+c;’、‘b=b+1;’插入代码614与代码612之间。
由于代码612、613、614是分别独立的代码,所以即便变更排列顺序,结果也不变化,所以程序变换部108变更这些代码的排列顺序。
但是,若代码‘data1=data1<<2;’配置于代码612、613、614之前,则代码612、613、614的处理结果会改变,所以仍配置在代码612、613、614之后。
利用该交织处理,使用各分割秘密信息的运算处理的位置不固定在一个部位,而扩散到不同的部位,所以具有更难非法解析的效果。
(c)伪追加处理
程序变换部106对交织处理过的程序603追加表示不影响程序执行结果的伪处理的代码。
程序变换部106作为一例,如图1的程序604所示,对程序603追加
代码621‘Temp1=0;’
代码622‘Temp2=10;’
代码623‘Temp1=Temp1+Temp2;’
代码624‘Temp2=data2+Temp 1;’
等4个伪代码。
Temp1、Temp2是不包含于原始程序603中的伪变量,是不影响该程序的执行结果的变量。另外,代码621-624是不存在于原始程序603中的新代码。
代码624以尽管使用存在于程序603中的data2,但不影响程序的执行结果的方式被使用。
(d)结合函数追加处理
程序变换部106通过向程序604追加向从结合函数生成部107取得的结合函数f()的自变量提供作为代码612-614的运算结果的P1-P3的代码615‘data2=f_major(P1,P2,P3);’,生成程序605。
利用上述说明的处理,程序变换部106将程序601变换为作为变换程序的程序605,将所述变换程序输出到执行程序生成部14。
<动作>
用图7所示的流程图来说明执行程序生成装置10的动作。
用户通过用户操作,制作包含秘密信息的程序601,将程序601作为电子文件,保持在程序保持部12中。
用户通过对键盘等的用户操作,请求显示包含程序601的电子文件。
输入部11根据所述请求,将包含所述电子文件名的取得指示发送到程序取得部103(步骤S301)。
程序取得部103从程序保持部12取得由电子文件名识别的电子文件,使程序601显示于所述显示器(未图示)中。
用户一边参照显示于显示器中的程序601,一边通过用户操作,向输入部11输入涉及程序601中包含的秘密信息的秘密确定信息。
所述秘密确定信息包含代码611的程序601中的行序号、秘密运算中使用的运算符‘^’、秘密信息‘KEY’。
秘密运算指定部101经输入部11取得所述秘密确定信息,将所述秘密确定信息发送到分割秘密信息生成部102(步骤S302)。
接着,用户利用用户操作,向输入部11输入分割数。这里,分割数为3。
分割数指定部104从输入部11取得所述分割数(步骤S303),将所述分割数发送到结合函数生成部107。
结合函数生成部107接收所述分割数,根据所述分割数,选出结合函数保持部105中保持的结合函数中的一个(步骤S304),将涉及选出的结合函数的信息、即确定密钥分割方法的信息、例如作为表示‘多数决定’的信息的分割方法信息与所述分割数,输出到分割秘密信息生成部102,将选择到的结合函数通知程序变换部106。
分割秘密信息生成部102接收所述分割方法信息与所述分割数,根据从秘密运算指定部101接收到的秘密确定信息中包含的秘密信息‘KEY’,生成多数决定结果为秘密信息‘KEY’的所述分割数、即3个的分割秘密信息K1-K3(步骤S105),将生成的3个分割秘密信息、即K1-K3输出到程序变换部106(步骤S305)。
程序变换部106从分割秘密信息生成部102取得所述秘密确定信息,从结合函数生成部107取得结合函数的通知,从程序取得部103取得程序601,对取得的程序601执行运算分割处理,生成程序602(步骤S306),执行交织处理,生成程序603(步骤S307),执行伪追加处理生成程序604(步骤S308),执行结合函数追加处理,生成程序605(步骤S309),将程序605输出到执行程序生成部14。
执行程序生成部14从程序变换部106取得作为变换程序的程序605,编译,并生成执行程序。
<第2实施方式>
在上述第1实施方式中,涉及秘密信息的处理为,例如代码611‘data2=f_xor(data1,KEY);’对输入的自变量的各比特执行逻辑运算。所谓逻辑运算是AND(逻辑与)或OR(逻辑或)、NOT(否)、XOR(异或)、移位运算等。
由于逻辑运算是加密算法等程序中较常使用的运算,所以程序中的这种逻辑运算符对解析者来说,成为非法取得加密密钥这样的秘密信息的线索是容易的。
涉及秘密信息的处理中的运算在逻辑运算的情况下可用第1实施方式中说明的手法处理,但在运算是算术运算的情况下,不能利用置换到使用已述的分割秘密信息的运算、来得到与变换前相同的运算结果,必需变换为考虑了算术运算时生成的每个比特的进位或借位的运算处理。
这里,所谓算术运算指+(加法)、-(减法)、×(乘法)、÷(除法),在加密算法中较少使用,但在使用的情况下,其成为特征,与逻辑运算符一样,可以成为解析的线索。
第2实施方式中,将包含含有算术运算符的秘密运算的程序变换为考虑了算术运算时生成的每个比特的进位或借位的变换程序。
下面,参照附图仅说明第2实施方式中与第1实施方式不同的部分。
第2实施方式的执行程序生成装置如图8所示,将用户生成的程序701变换为程序702。
程序701将对程序601的各比特值进行逻辑运算的代码611‘data2=f_xor(data1,KEY);’置换为包含算术运算的代码711‘data2=data1+KEY;’。
程序702包含根据代码711生成的代码712‘K[]={dummy,K1,K2,K3};’与代码713‘data2=func(data1,K);’。
代码712中的K1、K2、K3与第1实施方式一样,是根据秘密信息KEY生成的分割秘密信息。
函数func(data1,K)是使用作为自变量受理的秘密运算data1与分割秘密信息的存储地址K、生成data2的函数。func()的细节如后所述。
第2实施方式中处理的算术运算由于产生进位(carry),所以仅通过如第1实施方式所示单纯适用结合函数f(),得不到适当的运算结果。因此,在第2实施方式中,采用使用结合函数f()算出data2的函数func()。
第2实施方式中的执行程序生成装置1100作为一例,如图9所示,包含输入部11、程序保持部12、变换程序生成部1300、和执行程序生成部14来构成。
执行程序生成装置1100具体而言,是由微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。所述RAM或所述硬盘单元中存储计算机程序。通过所述微处理器根据所述计算机程序动作,执行程序生成装置1100实现其功能。
输入部11、程序保持部12、执行程序生成部14已在第1实施方式中说明。
变换程序生成部1300将用户制作的程序变换为变换程序。
变换程序生成部1300如图9所示,包含秘密运算指定部1101、分割秘密信息生成部102、程序取得部103、分割数指定部104、结合函数保持部105、程序变换部1106和结合函数生成部1107来构成。变换程序生成部1300中与变换程序生成部13一样的构成要素附加与第1实施方式一样的符号,省略说明。
秘密运算指定部1101不仅将生成的秘密确定信息输出到分割秘密信息生成部102,还输出到结合函数生成部1107,此外与秘密运算指定部101一样。
结合函数保持部105对应于表示运算符的运算符信息,除结合函数401、421、441外,还保持函数func()。
例如,结合函数保持部105将运算符‘+’与函数func()相对应地加以保持,将运算符‘^’与结合函数401相对应地加以保持,将运算符‘^’与结合函数421相对应地加以保持,将运算符‘^’与结合函数441相对应地加以保持。
结合函数401、421、441、函数func()的每个,与表示运算符的运算符信息相对应来存储。
结合函数生成部1107从分割数指定部104接收分割数,从秘密运算指定部1101取得秘密确定信息。
接着,结合函数生成部1107判定取得的秘密确定信息中包含的运算符信息是否表示算术运算,在表示算术运算(尤其是‘+’)的情况下,从结合函数保持部105中选出对应于所述算术运算及所述分割数的函数func(),在表示逻辑运算(尤其是‘^’)的情况下,随机选出对应于所述逻辑运算及所述分割数的结合函数401、421、441之一。作为逻辑运算的情况已在第1实施方式中说明,所以下面说明运算符信息表示算术运算(尤其是‘+’)、选出函数func()的情况。
结合函数生成部1107向程序变换部1106通知func(),作为结合函数,向分割秘密信息生成部102通知所述秘密确定信息、与表示秘密信息分割方法的分割方法信息。
秘密信息与第1实施方式一样,以若适用结合函数f()则得到原始的秘密信息的形式被分割。
在下面的说明中,与第1实施方式一样,说明为结合函数f()是进行多数决定运算的函数,所以设分割方法信息表示‘多数决定’。
结合函数f()与第1实施方式一样,若满足规定的性质,则不限于多数决定运算,但该性质如后所述,所以这里省略说明。
分割秘密信息生成部102若从结合函数生成部1107接收所述秘密确定信息与所述分割方法信息,则如第1实施方式所示,根据所述分割方法信息,按所述分割数对所述秘密确定信息中包含的秘密信息进行分割。接着,分割秘密信息生成部102将所述秘密确定信息与由所述分割生成的分割秘密信息输出到程序变换部1106。
程序变换部1106从分割秘密信息生成部102取得所述秘密确定信息与所述分割数个数的所述分割秘密信息,从结合函数生成部1107取得结合函数的通知,从程序取得部103取得程序,向取得的程序追加分割秘密信息与结合函数。
作为具体例,程序变换部1106从程序取得部103取得程序701,向程序701追加定义分割秘密信息的代码712‘K[]={dummy,K1,K2,K3};’与代码713‘data2=func(data1,K);’。
因func()为了简化说明而不使用排列K[]的开头,故插入代码712中的dummy,除是伪字符外,不具有特别的含义。
(对函数func()的说明)
func()受理data1和排列K[]={dummy,K1,K2,K3}的开头地址,作为自变量。
用图10来说明函数func()的处理。
首先,用0初始化构成最终输出的返回值的P,用0初始化表示各位的进位的C1~Cn(步骤S501)。
接着,以解密密钥的比特长来初始化变量m(步骤S502)。在本实施方式中,解密密钥KEY的比特长度为3。
接着,用0初始化变量j、tmp的每个(步骤S503)。
之后,用1初始化变量i(步骤S504)。
之后,判定i是否比分割数大(步骤S505),在大的情况下(步骤S505:是),移动到后述的步骤S509,在不大的情况下(步骤S505:否),向tmp代入datal∶j^Ki∶(步骤S506)。
这里,X∶j的记载表示数据X的第j比特。data1∶0是data1的第0比特,在i=1、j=0的情况下,Ki∶j是K1的第0比特。
接着,将f(tmp^C1,tmp^C2,...tmp^Cn)的计算结果代入Pi(步骤S507),将i加1(步骤S508),返回步骤S505。
在步骤S505中判定为i比分割数大的情况下,计算f(P1,P2,...Pn),代入Ptmp(步骤S509),用((Ptmp<<j)|P)更新P(步骤S510)。
接着,判定j+1是否比m大(步骤S511),在大的情况下(步骤S511:是),处理结束,在不大的情况下(步骤S511:否),更新进位C1、C2、...Cn(步骤S5 12)。
在进位的更新中,使用函数carry(),利用下式进行。
C1←carry(data1∶j,K1∶j,C1)
C2 ← carry(data1∶j,K2∶j,C2)
Cn←carry(data1∶j,Kn∶j,Cn)
这里,函数carry(A,B,C)是运算将自变量A、B、C相加时产生的进位的函数。
具体而言,函数carry(A,B,C)在A、B、C中两个为值‘1’的情况下,返回进位‘1’,作为返回值,在其它情况下,返回值‘0’。也可用上述进行多数决定运算的函数f()来代替。
接着,将j加1(步骤S513),移动到步骤S505。
以上是对函数func()的说明,但进一步以代入具体数字的实例来说明。
(对函数func()的动作的、基于具体数字实例的补充说明)
func()受理data1和排列K[]={dummy,K1,K2,K3}的开头地址,作为自变量。
下面,举例data1=0x03、KEY=0x03、K1=0x05、K2=0x03、K3=0x02的情况。
若根据代码711‘data2=data1+KEY;’,则data2应为0x03+0x03=0x06,所以func()的返回值必需是0x06。
下面,向图10的流程图中代入具体数字来说明。其中,省略说明K1、K2、K3中的比特值全部为0的高位5比特。
首先,通过步骤S501,得到P=0、C1=C2=C3=0。
通过步骤S502,得到m=3。
通过步骤S503,得到j=0、tmp=0。
(a)j=0的循环
(对于i=1的循环)
通过步骤S504,得到i=1。
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特0即1、与K1的比特0即1的异或,即0。
通过步骤S507,P1为f(tmp^C 1,tmp^C2,tmp^C3,)=f(0^0,0^0,0^0)=0。
通过步骤S508,得到i为2。
(对于i=2的循环)
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特0即1、与K2的比特0即1的异或,即0。
通过步骤S507,P2为f(tmp^C 1,tmp^C2,tmp^C3,)=f(0^0,0^0,0^0)=0。
通过步骤S508,得到i为3。
(对于i=3的循环)
i为与分割数3相同的值,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特0即1、与K3的比特0即0的异或,即1。
通过步骤S507,P3为f(tmp^C 1,tmp^C2,tmp^C3,)=f(1^0,1^0,1^0)=1。
通过步骤S508,得到i为4,在步骤S505中判定为是,移动到步骤S509。
(P的计算)
通过步骤S509,得到Ptmp为f(0,0,1)=0。
通过步骤S510,P为000。
(C1~C3的计算)
通过步骤S512,C1变为carry(1,1,0)=1,C2变为carry(1,1,0)=1,C3变为carry(1,0,0)=0。
(b)j=1的循环
(对于i=1的循环)
通过步骤S504,得到i=1。
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特1即1、与K1的比特1即0的异或,即1。
通过步骤S507,P1为f(tmp^C1,tmp^C2,tmp^C3,)=f(1^1,1^1,1^0)=0。
通过步骤S508,得到i为2。
(对于i=2的循环)
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特1即1、与K2的比特1即1的异或,即0。
通过步骤S507,P2为f(tmp^C 1,tmp^C2,tmp^C3,)=f(0^1,0^1,0^0)=1。
通过步骤S508,得到i为3。
(对于i=3的循环)
i为与分割数3相同的值,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特1即1、与K3的比特1即1的异或,即0。
通过步骤S507,P3为f(tmp^C 1,tmp^C2,tmp^C3)=f(0^1,0^1,0^0)=1。
通过步骤S508,得到i为4,在步骤S505中判定为是,移动到步骤S509。
(P的计算)
通过步骤S509,得到Ptmp为f(0,1,1)=1。
通过步骤S510,P为010。
(C1~C3的计算)
通过步骤S512,C1变为carry(1,0,1)=1,C2变为carry(1,1,1)=1,C3变为carry(1,1,0)=1。
(c)j=2的循环
(对于i=1的循环)
通过步骤S504,得到i=1。
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特2即0与K1的比特2即1的异或,即1。
通过步骤S507,P1为f(tmp^C1,tmp^C2,tmp^C3,)=f(1^1,1^1,1^1)=0。
通过步骤S508,得到i为2。
(对于i=2的循环)
i比分割数3小,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特2即0与K2的比特2即0的异或,即0。
通过步骤S507,P2为f(tmp^C 1,tmp^C2,tmp^C3,)=f(0^1,0^1,0^1)=1。
通过步骤S508,得到i为3。
(对于i=3的循环)
i为与分割数3相同的值,所以步骤S505中分支到否。
通过步骤S506,tmp是data1的比特2即0与K3的比特2即0的异或,即0。
通过步骤S507,P3为f(tmp^C 1,tmp^C2,tmp^C3,)=f(0^1,0^1,0^1)=1。
通过步骤S508,得到i为4,在步骤S505中判定为是,移动到步骤S509。
(P的计算)
通过步骤S509,得到Ptmp为f(0,1,1)=1。
通过步骤S510,P为0x06。
根据步骤S511的判定,结束处理。
<结合函数f()应满足的必要充分条件>
在第1和第2实施方式所述的方法中,为了使用分割秘密信息和结合函数f()得到与使用秘密信息的运算结果相同的运算结果,结合函数f()必需满足以下3个条件。
(条件1)f(0,0,...,0)=0
(条件2)f(1,1,...,1)=1
(条件3)~f(x1,x2,...,xn)=f(~x1,~x2,...,~xn)
(其中,~是表示否定的逻辑运算。)
进一步详细说明上述函数f()应满足的条件。
(条件1)与(条件2)如公式所示,在全部输入值为0的情况下,f()的输出值也为0,在全部输入值为1的情况下,f()的输出值也为1。
另外,(条件3)是通常称为自双反函数的函数条件,表示基于将提供给f()函数的各输入值全部否定(NOT)之后的输入值的f()的结果,是基于原始输入值的f()的输出值的否定(NOT)。
满足这种条件的函数f()的确定方法除图4、图5的函数外,也可以是2的x次幂(其中,x是2的(n-1)次幂-1)那样(n为分割数)。
结合函数保持部105中保持多个满足这些条件的函数,通过对每个秘密信息改变结合函数,可更难以解析。
并且,在本实施方式中,采用结合函数保持部105事先保持多个函数、结合函数生成部107从中指定结合函数的方法,但也可通过结合函数生成部107每次制作满足(条件1)~(条件3)的函数f(),生成对输入自变量的各位置适用该函数f()的结合函数,从而不在结合函数保持部105中事先保持结合函数,来变化程序。
例如,满足(条件1)~(条件3)的函数f()可如下生成。
准备具有函数f()可取的自变量的值的全部图案的项目的真值表,首先,为了满足条件1和条件2,向自变量全部为0的项目代入0,向自变量全部为1的项目代入1。
之后,对其它项目随机代入0或1的值,同时,向否定了该项目各自变量之后的自变量的项目,代入否定所代入的值的值。
作为具体实例,在自变量为3个的情况下,若向‘0,1,1’的项目代入‘1’,则向‘1,0,0’的项目代入‘0’。
若重复上述处理直到向全部项目代入值,则完成满足(条件1)~(条件3)的函数的真值表。
之后,使用公知的方法、根据真值表生成逻辑式、再生成执行该逻辑式表示的运算的函数,或生成参照生成的真值表的函数,得到函数f()。
这些函数f()通过安装成在耐篡改的环境下执行,可更难以解析。具体而言,可考虑使用特殊的硬件来执行函数f的方法、或在与通常的程序隔离的环境下使之动作等各种方法。并且,即便在以软件安装的情况下,也可追加用于难以读取通常知道函数f的程序的使用伪变量的伪处理,或向程序中追加分支处理等,利用难以读取的难读取方法使解析变得不容易。
另外,在上述第2实施方式中,使用函数func()统一执行向data1加K1~K3的处理以及将加法结果结合的处理,但不限于此。
即,也与第1实施方式一样,首先,算出data1+K1、data1+K2、data1+K3的运算结果,并使用在反映的同时结合进位的函数func2()来结合该结果。
<附记>
虽然根据上述实施方式说明了本发明,但本发明当然不限于上述实施方式。以下的情况也包含于本发明中。
(1)作为逻辑运算符,使用‘^’进行说明,但不限于此,也可以是进行逻辑运算的其它运算符。
例如,在逻辑运算符中,有AND(逻辑与)或OR(逻辑或)、NOT(否)、XOR(异或)、移位运算等。由于是包含加密密钥的加密算法等程序中较常使用的运算,所以程序中的这种逻辑运算符对于解析者来说成为非法取得加密密钥等秘密信息的线索是容易的。
另外,作为算术运算符,使用‘+’进行说明,但不限于此,也可以是其它算术运算符。
所谓算术运算符除+(加法)外,还指-(减法)、×(乘法)、÷(除法),在加密算法中较少使用,但在使用的情况下,其成为特征,与逻辑运算符一样,可成为解析的线索。
在不是加法而是减法的情况下,由于产生借位代替进位,所以必需与第2实施方式中使进位反映到计算结果中的处理一样、使借位反映到计算结果中的处理。
(2)分割数指定部104经输入部11取得由用户操作输入的分割数,但也可由其它方法取得分割数。例如,也可将分割数事先保持在非易失性存储器等中,读出并使用保持的分割数。
(3)分割秘密信息生成部102也可不生成分割秘密信息,而利用其它方法生成分割秘密信息。
例如,事先准备真值表402,从真值表(例如真值表402)中随机找出对应于分割前的秘密信息的项目,输出对应于项目的x、y、z,作为分割秘密信息。
(4)交织处理不是必需的,也可省略。另外,也可向第2实施方式追加交织处理。
(5)伪追加处理中的伪代码若是不影响程序结果的处理,则也可新追加变量来制作,或使用存在于原程序中的变量来制作。另外,也可通过与已说明的交织处理组合,追加伪运算处理以使分割秘密信息的位置进一步扩散,从而提高交织处理的效果。
这样,通过追加不影响程序执行结果的伪运算处理,更难以解析分割秘密信息的运算。但,这些伪运算处理的追加不是必需的。
(6)秘密信息向分割秘密信息的分割方法,不限于通过分割秘密信息的多数决定来得到作为复原结果的秘密信息的分割方法。
若使用分割前的秘密信息的运算与使用分割秘密信息的运算得到相同的结果,则也可以是其它分割方法。
(7)在第2实施方式中,将代码711‘data2=data1+KEY;’置换成代码713‘data2=func(data1,K);’,但不限于此。
如上所述,函数func()由多个步骤构成,所以只要维持运算结果不会不同,则函数func()内的各步骤也可执行第1实施方式中所述的交织处理、或伪追加处理、或结合函数追加处理。
(8)作为结合多个分割秘密信息的结合函数,以使用已选择的一个结合函数的实例进行说明,但不限于此。
例如,也可对多个分割秘密信息的每个比特位置变更使用的结合函数,或对多个位置的每个变更使用的结合函数。
另外,在第1和第2实施方式中,采取1个比特1个比特地确定分割秘密信息的值的方法,但不限于此。
例如,也可通过参照结合函数f()的运算结果逆引用真值表来确定各自变量的值。具体而言,在KEY为‘1’的情况下,随机选择真值表402的f(x,y,z)的值为1的行,将对应于选择的行的x、y、z的值分配给分散秘密信息每个。KEY的值为‘0’的情况也一样。
(9)在第1和第2实施方式中,说明执行程序生成装置,但由这些装置生成的特征性的程序自身、或用硬件实现该程序各部的信息处理执行装置等也包含于本发明中。
例如,用硬件实现将图1所示的程序605变换为执行形式的所述执行程序的信息处理执行装置1300如图11所示,由被运算信息存储部1301、分割秘密信息存储部1302、分割运算执行部1303~1305与结合运算执行部1306构成。
被运算信息存储部1301存储data1(1351),作为被运算信息。这里,所谓被运算信息也可从信息处理执行装置1300的外部取得。
分割秘密信息存储部1302存储K1(1352)、K2(1353)、K3(1354),作为将秘密信息按分割数分割后的分割秘密信息。K1、K2、K3相当于程序605中的K1(632)、K2(633)与K3(634)。
分割运算执行部1303从被运算信息存储部1301取得data1(1351),从分割秘密信息存储部1302取得K1(1352),执行P1=f_xor(data1,K1),将P1输出到结合运算执行部1306。
与分割运算执行部1303一样,分割运算执行部1304从被运算信息存储部1301取得data1(1351),从分割秘密信息存储部1302取得K2(1353),执行P2=f_xor(data1,K2),将P2输出到结合运算执行部1306。
分割运算执行部1305从被运算信息存储部1301取得data1(1351),从分割秘密信息存储部1302取得K3(1354),执行P3=f_xor(datal,K3),将P3输出到结合运算执行部1306。
分割运算执行部的数目为与秘密信息的分割数相同的数。
在本变形例中,与上述实施方式一样,秘密信息KEY被分割成分割数、即3个分割秘密信息K1、K2、K3,所以信息处理执行装置1300包含3个分割运算执行部1302~1305。
结合运算执行部1306从分割运算执行部1303取得P1,从分割运算执行部1304取得P2,从分割运算执行部1305取得P3,执行data2=f_major(P1,P2,P3),输出data2。
(10)在第2实施方式中,函数func()保持在结合函数保持部105中,但不限于此。也可在结合函数保持部105中保持结合函数f(),使用从结合函数保持部105得到的结合函数f(),由结合函数生成部1107使用结合函数f()生成结合函数func()。
此时,结合函数f()只要满足上述3个性质,则也可从结合函数401、421、441等中选择。
(11)在第1和第2实施方式中,分割秘密信息随机生成,但不限于此。例如,由于若在去除与分割前的秘密信息相同值的范围内随机选择等,则秘密信息本身不会出现在存储器上,所以可更安全地保护秘密信息。
(12)在上述实施方式中,说明将原程序变换为得到相同结果的程序,将变换后的程序编译成执行程序后执行的实例,但不限于此,只要可在计算机上执行程序,则也可以其它方法执行。例如,也可将原程序变换为得到相同结果的其它程序,将变换后的程序变换为解释程序可解释的中间代码。所述中间代码在解释程序上执行。
(13)上述各装置具体而言,是由微处理器、ROM、RAM、硬盘单元、显示器单元、键盘、鼠标等构成的计算机系统。所述RAM或所述硬盘单元中存储计算机程序。通过所述微处理器根据所述计算机程序动作,各装置实现其功能。这里,计算机程序为了实现规定功能,组合多个表示对计算机的指令的命令代码来构成。
(14)构成上述各装置的构成要素的一部分或全部也可由一个系统LSI(Large Scale Integration:大规模集成电路)构成。系统LSI是在一个芯片上集成多个构成部制造的超多功能LSI,具体而言,是包含微处理器、ROM、RAM等构成的计算机系统。在所述RAM中存储计算机程序。通过所述微处理器根据所述计算机程序动作,系统LSI实现其功能。这些部件既可单独单芯片化,也可包含局部或全部地单芯片化。
这里为LSI,但也可根据集成度的不同称为IC、系统LSI、超LSI、甚LSI。
另外,集成电路化的方法不限于LSI,也可由专用电路或通用处理器来实现。也可利用在LSI制造后可编程的FPGA(FieldProgrammable Gate Array:现场可编程门阵列)或可再构成LSI内部的电路单元连接或设定的可重构处理器。
并且,如果因半导体技术的进步或派生的其它技术而出现置换LSI的集成电路化技术,则当然也可使用该技术来进行功能块的集成化。可适应于生物技术等。
(15)构成上述各装置的构成要素的一部分或全部也可由可拆装于各装置上的IC卡或单体模块构成。所述IC卡或所述模块是由微处理器、ROM、RAM等构成的计算机系统。所述IC卡或所述模块也可包含上述超多功能LSI。通过微处理器根据计算机程序动作,所述IC卡或所述模块实现其功能。该IC卡或该模块也可具有耐篡改性。
(16)本发明也可以是上述所示的方法。另外,也可是由计算机来实现这些方法的计算机程序,或是由所述计算机程序构成的数字信号。
另外,本发明也可将所述计算机程序或所述数字信号记录在计算机可读的记录媒体中,例如软盘、硬盘、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc:蓝光光盘)、半导体存储器等中。另外,也可以是记录在这些记录媒体中的所述计算机程序或所述数字信号。
另外,本发明也可经由电气通信线路、无线或有线通信线路、以因特网为代表的网络、数据广播等来传输所述计算机程序或所述数字信号。
另外,本发明也可以是具备微处理器与存储器的计算机系统,所述存储器存储上述计算机程序,所述微处理器根据所述计算机程序动作。
另外,也可通过将所述程序或所述数字信号记录在所述记录媒体中移送,或经由所述网络等移送所述程序或所述数字信号,由独立的其它计算机系统来实施。
(17)也可分别组合上述实施方式及上述变形例。
产业上的可利用性
本发明的程序变换装置生成对加密化的内容进行解密并且再现的播放器等程序,在进行内容的制作、分发等的内容产业中可以使用。

Claims (18)

1.一种程序变换装置,其特征在于,具备:
程序存储部件,存储原程序,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令;
分割秘密信息生成部件,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;
分割运算命令生成部件,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;
结合命令生成部件,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和
置换部件,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
2.根据权利要求1所述的程序变换装置,其特征在于:
所述结合运算是基于每比特的自双反函数的运算。
3.根据权利要求2所述的程序变换装置,其特征在于:
所述结合运算是在输入比特值全部为0时输出0、输入比特值全部为1时输出1的运算。
4.根据权利要求3所述的程序变换装置,其特征在于:
所述秘密运算命令执行的运算是每个比特的逻辑运算,
所述分割运算是与所述秘密运算命令执行的运算相同的运算,
所述结合命令是执行与所述结合运算相同的运算的命令。
5.根据权利要求3所述的程序变换装置,其特征在于:
所述秘密运算命令执行的运算,是所述被运算信息与所述秘密信息之间的按每个相同比特位置的运算,
所述分割秘密信息生成部件,对所述秘密信息的每个比特位置,生成作为对该比特位置的自双反函数逆运算结果的多个比特值,并将生成的多个比特值的每个分配给多个分割秘密信息的该比特位置,
所述分割运算命令,是对所述被运算信息与所述分割秘密信息的每个相同比特位置执行所述运算的命令,
所述结合命令是如下命令,即:对于所述分割运算分别算出的多个结果,对相同比特位置的比特值实施所述自双反函数,并将其结果设为该比特位置的比特值,由此执行所述结合。
6.根据权利要求3所述的程序变换装置,其特征在于:
所述自双反函数是将多个输入值中的、占过半数的输入值输出的多数决定函数,
所述分割秘密信息生成部件,
预先保持与自双反函数相关的多个输入值与对应的输出值之间的对应表,
对于所述秘密信息的各个比特位置,从所述对应表中读出和与该比特位置的比特值同值的输出值相对应的多个输入值,将所述多个输入值设为所述多个分割秘密信息的每个的该比特位置的比特值。
7.根据权利要求3所述的程序变换装置,其特征在于:
所述程序变换装置还包含存储不同的多个自双反函数的运算存储部件,
所述分割秘密信息生成部件从存储在所述运算存储部件中的自双反函数中随机选出自双反函数,作为所述结合运算。
8.根据权利要求3所述的程序变换装置,其特征在于:
所述置换部件还在不影响程序的执行结果的范围内,重新排列各个所述分割运算命令与所述结合运算命令。
9.根据权利要求8所述的程序变换装置,其特征在于:
所述置换部件还在不影响程序执行结果的范围内,使重新排列后的各运算命令的配置分散。
10.根据权利要求9所述的程序变换装置,其特征在于:
所述置换部件还在不影响程序执行结果的范围内,追加伪运算处理。
11.一种程序变换方法,对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,其特征在于,包含:
分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;
分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;
结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和
置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
12.一种计算机程序,在程序变换装置中使用,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,其特征在于,该计算机程序包含:
分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;
分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;
结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和
置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
13.一种集成电路,在程序变换装置中使用,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,其特征在于,该集成电路具备:
分割秘密信息生成部件,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;
分割运算命令生成部件,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;
结合命令生成部件,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和
置换部件,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
14.一种记录媒体,是存储了程序变换装置中使用的计算机程序的计算机可读取记录媒体,该程序变换装置对原程序进行变换,该原程序包含对被运算信息执行使用秘密信息的运算的秘密运算命令,其特征在于,所述计算机程序包含:
分割秘密信息生成步骤,使用所述秘密信息与规定的结合运算,生成若实施所述结合运算则得到所述秘密信息的多个分割秘密信息;
分割运算命令生成步骤,对各个所述分割秘密信息,生成用于执行使用所述被运算信息与该分割秘密信息的分割运算的分割运算命令;
结合命令生成步骤,生成结合命令,该结合命令通过使用所述结合运算结合所述分割运算命令的处理结果,从而算出与所述秘密运算命令相同的结果;和
置换步骤,将所述原程序中的所述秘密运算命令置换为所述分割运算命令与所述结合命令。
15.一种安全处理装置,其特征在于:
具备:
被运算信息保持部件,保持被运算信息;
分割秘密信息保持部件,保持多个分割秘密信息;
结合运算式保持部件,保持表示结合所述多个分割秘密信息的结合运算的结合运算式;
分割运算部件,对所述多个分割秘密信息的每个,实施对所述被运算信息使用该分割秘密信息的第1运算、即分割运算;和
结合部件,使用所述结合运算,对所述多个分割运算的结果进行结合,
所述结合部件使用所述结合运算对所述分割运算的结果进行结合,以使得结合的结果与使用通过所述结合运算结合所述多个分割秘密信息时得到的秘密信息、对所述被运算信息实施第2运算的结果相同。
16.根据权利要求15所述的安全处理装置,其特征在于:
所述第1运算与所述第2运算为相同运算。
17.一种计算机程序,其特征在于:
具备被运算信息、多个分割秘密信息、和可结合所述多个分割秘密信息的结合运算式,
该计算机程序具有:
分割运算步骤,对所述多个分割秘密信息的每个,实施对所述被运算信息使用该分割秘密信息的第1运算、即分割运算;和
结合步骤,使用所述结合运算,对所述多个分割运算步骤的结果进行结合,
所述结合步骤使用所述结合运算对所述分割运算步骤的结果进行结合,以使得结合的结果与使用通过所述结合运算结合所述多个分割秘密信息时得到的秘密信息、对所述被运算信息实施第2运算的结果相同。
18.根据权利要求17所述的计算机程序,其特征在于:
所述第1运算与所述第2运算为相同运算。
CNB2006800097138A 2005-03-25 2006-03-27 程序变换装置、安全处理装置、计算机程序及记录媒体 Active CN100555300C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP089941/2005 2005-03-25
JP2005089941 2005-03-25

Publications (2)

Publication Number Publication Date
CN101147155A true CN101147155A (zh) 2008-03-19
CN100555300C CN100555300C (zh) 2009-10-28

Family

ID=37023873

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006800097138A Active CN100555300C (zh) 2005-03-25 2006-03-27 程序变换装置、安全处理装置、计算机程序及记录媒体

Country Status (5)

Country Link
US (1) US8090956B2 (zh)
EP (1) EP1873676B1 (zh)
JP (1) JP4840782B2 (zh)
CN (1) CN100555300C (zh)
WO (1) WO2006101227A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298926A (zh) * 2013-07-19 2015-01-21 腾讯科技(深圳)有限公司 一种运行加密文件的方法和装置
CN113204774A (zh) * 2021-04-29 2021-08-03 北京连山科技股份有限公司 基于多云环境下的一种快速数据安全保护算法
CN114072740A (zh) * 2019-08-08 2022-02-18 欧姆龙株式会社 信息处理装置、支持程序以及支持系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2240857A4 (en) * 2007-12-21 2013-12-25 Univ Virginia Patent Found SYSTEM, METHOD AND COMPUTER PROGRAM FOR PROTECTING SOFTWARE THROUGH ANTI-FALSIFICATION AND OBSCURING TRANSFORMATIONS
GB201400992D0 (en) * 2014-01-21 2014-03-05 Metaforic Ltd Method of protecting dynamic cryptographic keys
US10068070B2 (en) * 2015-05-05 2018-09-04 Nxp B.V. White-box elliptic curve point multiplication
US20160328539A1 (en) * 2015-05-05 2016-11-10 Nxp B.V. Obscuring Software Code With Split Variables
CN106960156B (zh) * 2016-01-08 2020-03-13 广州市动景计算机科技有限公司 基于应用程序的数据加密及访问方法、装置
JP7334789B2 (ja) * 2019-10-04 2023-08-29 日本電気株式会社 秘密計算システム、秘密計算サーバ、補助サーバ、秘密計算方法及びプログラム
EP3876119A1 (en) * 2020-03-06 2021-09-08 Thales Dis France Sa Method for protecting a data in a software application
CN117235800B (zh) * 2023-10-27 2024-05-28 重庆大学 基于秘密规范的个性化隐私保护机制的数据查询保护方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623546A (en) * 1995-06-23 1997-04-22 Motorola, Inc. Encryption method and system for portable data
US5826011A (en) * 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US6052780A (en) * 1996-09-12 2000-04-18 Open Security Solutions, Llc Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information
CN1260055A (zh) * 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
US7095852B2 (en) * 1998-02-13 2006-08-22 Tecsec, Inc. Cryptographic key split binder for use with tagged data elements
US20020062451A1 (en) * 1998-09-01 2002-05-23 Scheidt Edward M. System and method of providing communication security
FR2789535B1 (fr) 1999-02-04 2001-09-28 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique
US6594761B1 (en) * 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
US6779114B1 (en) * 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP2003280754A (ja) * 2002-03-25 2003-10-02 Nec Corp 隠蔽化ソースプログラム、ソースプログラム変換方法及び装置並びにソース変換プログラム
JP4475894B2 (ja) 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
EP1615100B1 (en) * 2002-08-01 2007-07-04 Matsushita Electric Industrial Co., Ltd. Encrypted - program generating apparatus
US7231518B1 (en) * 2003-03-28 2007-06-12 Cisco Technology, Inc. System and method for authenticating a storage device for use with driver software in a storage network
US7346160B2 (en) * 2003-04-23 2008-03-18 Michaelsen David L Randomization-based encryption apparatus and method
JP2005049925A (ja) * 2003-07-29 2005-02-24 Nara Institute Of Science & Technology プログラム難読化装置、プログラム難読化プログラム及びプログラム難読化方法
JP4744106B2 (ja) * 2003-08-06 2011-08-10 パナソニック株式会社 セキュアデバイス、情報処理端末、通信システム及び通信方法
US7366914B2 (en) * 2003-08-29 2008-04-29 Intel Corporation Source code transformation based on program operators

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298926A (zh) * 2013-07-19 2015-01-21 腾讯科技(深圳)有限公司 一种运行加密文件的方法和装置
CN104298926B (zh) * 2013-07-19 2017-11-10 腾讯科技(深圳)有限公司 一种运行加密文件的方法和装置
CN114072740A (zh) * 2019-08-08 2022-02-18 欧姆龙株式会社 信息处理装置、支持程序以及支持系统
CN113204774A (zh) * 2021-04-29 2021-08-03 北京连山科技股份有限公司 基于多云环境下的一种快速数据安全保护算法
CN113204774B (zh) * 2021-04-29 2021-11-26 北京连山科技股份有限公司 基于多云环境下的一种快速数据安全保护方法

Also Published As

Publication number Publication date
US8090956B2 (en) 2012-01-03
WO2006101227A1 (ja) 2006-09-28
EP1873676B1 (en) 2013-11-20
EP1873676A4 (en) 2012-03-07
CN100555300C (zh) 2009-10-28
JP4840782B2 (ja) 2011-12-21
EP1873676A1 (en) 2008-01-02
JPWO2006101227A1 (ja) 2008-09-04
US20090055657A1 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
CN100555300C (zh) 程序变换装置、安全处理装置、计算机程序及记录媒体
JP4970279B2 (ja) セキュア処理装置、セキュア処理方法、難読化秘密情報埋め込み方法、プログラム、記憶媒体および集積回路
CN100498712C (zh) 用于生成受保护可执行程序的设备、存储介质和方法
CN100543761C (zh) 程序变换装置及程序执行装置
US8185749B2 (en) System and method for revising boolean and arithmetic operations
CN101416197A (zh) 程序混淆装置
CN101604369A (zh) 信息隐藏方法以及信息隐藏装置
US10108786B2 (en) Process and device for encoding of source files for secure delivery of source code
CN111512307B (zh) 编译设备和方法
CN110598379A (zh) 一种实现字符串混淆的方法、系统、设备及存储介质
CN110050258A (zh) 具有自动模块化功能的安全专区保护的应用程序盗版防止
CN111819542A (zh) 编译设备和方法
CN109478996A (zh) 用于执行混淆算术的设备和方法
CN1862493B (zh) 用于创建可执行代码的副本的唯一标识及其管理的方法
JP6089998B2 (ja) 暗号処理装置および情報処理装置
CN107341372B (zh) 一种软件保护方法和装置
JPWO2007072568A1 (ja) プログラム処理装置、プログラム処理方法、プログラム及びコンピュータ読取可能な記録媒体
CN106921482B (zh) 一种基于arm指令构造数据加解密算法的方法及系统
CN107247906B (zh) 一种用于数据的加密方法及装置
CN104050399B (zh) 用户验证方法和装置以及盗版追踪方法和装置
JP3949105B2 (ja) 「リネーム」原理を使用してその無許可使用に対してソフトウェアを保護する方法
CN104318134B (zh) 一种数据保护方法
JP3949108B2 (ja) 「一時的分離」原理により不正使用に対してソフトウェアを保護する方法
CN108369613A (zh) 计算设备和方法
CN107113160A (zh) 程序执行的隐藏

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