WO2013121951A1 - プログラム管理システム - Google Patents

プログラム管理システム Download PDF

Info

Publication number
WO2013121951A1
WO2013121951A1 PCT/JP2013/052746 JP2013052746W WO2013121951A1 WO 2013121951 A1 WO2013121951 A1 WO 2013121951A1 JP 2013052746 W JP2013052746 W JP 2013052746W WO 2013121951 A1 WO2013121951 A1 WO 2013121951A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
dynamic link
link library
library
electronic signature
Prior art date
Application number
PCT/JP2013/052746
Other languages
English (en)
French (fr)
Inventor
学 道下
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Publication of WO2013121951A1 publication Critical patent/WO2013121951A1/ja

Links

Images

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/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Definitions

  • the present invention relates to an apparatus and method for protecting against tampering of a dynamic link library, an apparatus and method for authenticating a dynamic link library by verifying the presence or absence of tampering, and legitimacy using these apparatuses and methods.
  • the present invention relates to a program management system that executes a program after confirmation.
  • Digital content usually has various rights by the author, and even if it is properly distributed and received, it does not mean that ownership has been transferred unlike the distribution of goods. It's just that you are licensed to use it. If you consider the balance between the point that digital data can be easily copied and the point that the author's creation effort should be rewarded, you can limit the number of users of digital content or copy the digital content appreciation device. It is an unavoidable treatment to limit the above. However, in terms of interest, the user tends to try to obtain the maximum interest from what is at hand, and there is a motivation to unauthorize the restriction on the ornamental device.
  • the ornamental device is realized by a software program
  • the purpose of the control transition from the original program to the substitute product can be achieved while any part of the program is being executed. Therefore, all objects read / written by the program are subject to tampering. There is a fear.
  • the program is protected by using a digital signature, and it is verified that the program has been tampered with when the program is launched. Measures may be taken to make the program successful or to continue program execution only when it passes.
  • Patent Document 1 and Patent Document 2 disclose a common method for protecting a program by dividing it into pages, which are memory management units, and a method for authenticating a program by verification.
  • Patent Document 3 also discloses the same protection method.
  • FIG. 36 is a diagram showing a conventional protection method.
  • the program 9 is divided into memory management units (typically 4 KB or 8 KB), and the divided pages are referred to as pages 91 to 94, respectively.
  • a hash function one-way function
  • a hash array 109 having each hash value as an element is created.
  • an electronic signature 609 is created using the secret key 700 for the hash array.
  • the signature generation shown in FIG. 36 is a step of further applying a hash function to the hash array 109 to calculate an array hash value (not shown), and applying a signature function to the array hash value to generate an electronic signature. And obtaining a signature.
  • Known signature creation procedures include, for example, RSASP1, which is described in Non-Patent Document 1 and has a constraint on the input value domain, and has a hash function and padding as a pre-stage of RSASP1 and relaxed constraints.
  • PSS-SIGN and RSASSA-PKCS1-v1_5-SIGN There are PSS-SIGN and RSASSA-PKCS1-v1_5-SIGN.
  • the signature creation process of the prior art shows the latter type of signature creation procedure.
  • FIG. 37 is a diagram showing a conventional authentication method.
  • a hash function 592 is calculated by applying a hash function to the corresponding page (page 92 in the example of FIG. 37), and the hash value 292 stored in the hash array 109 is calculated. Compare with If non-conformity or mismatch is detected in either signature verification or hash value comparison verification, it is determined that there has been tampering.
  • Patent Document 1 hash value calculation and comparison verification are performed each time a page is loaded, and in Patent Document 2, page loading, hash value calculation and comparison verification are performed each time a page is required as the program is executed. So, program execution and authentication process are executed in parallel.
  • a hash function is further applied to the hash array 109 to calculate an array hash value (not shown), and a verification function is applied to the array hash value and the electronic signature. And obtaining a conformity result.
  • RSAVP1 is generally known as a signature verification procedure, and RSASSA-PSS-VERIFY and RSASSA-PKCS1-v1_5-VERIFY are relaxed by having a hash function and padding as the previous stage of RSAVP1. (See Non-Patent Document 1).
  • the signature verification process in Patent Documents 1 to 3 shows the latter signature verification procedure.
  • the program is broken down into pages, hash values are calculated for the pages, and when implementation is completed for all pages of the program, an array is created by arranging the hash values obtained from each page, and an electronic signature for the array Create The obtained hash array and the electronic signature to the hash array are stored together with the program, and the protection procedure is terminated.
  • a hash array corresponding to the program is loaded, and the hash array and the electronic signature of the hash array are verified using a reliable public key. If it matches the signature, the page of the program is loaded, the hash value of the corresponding page is calculated, and the calculated hash value is compared with the hash value stored in the hash array. If the two hash values match, the instruction of the loaded page or the reference of the data in the page is executed, and the above-described processing is repeated for the necessary page.
  • Patent Document 1 does not describe a process of executing a page instruction or page data reference when both hash values match.
  • the authentication process performed at the time of starting the program is a process of verifying a hash array with an electronic signature and a hash value calculation for pages required at the initial stage of the program execution.
  • PKCS # 1 v2.1 RSA Cryptography Standard, RSA Laboratories
  • the application target of the hash function is the page unit that is the memory management target, and therefore the object that is the usage unit is not compatible with the size and arrangement.
  • the hash values calculated from each page are arranged in an array in the order of the pages obtained by dividing the program. For this reason, the hash function is applied to all the objects included in the page including the used object. As long as all the objects included in one page are not used, access to the page always occurs, so the calculation of the hash function for that page is always performed when the program is started or during execution. There was a problem that invited.
  • the dynamic link library shared between the protection target program and the non-protection target program there is a problem that the authentication process is performed even when called from the non-protection target program, causing a delay in the operation of the program.
  • the present invention has been made to solve the above-described problems, and an object thereof is to protect and authenticate a dynamic link library by suppressing a program operation delay.
  • the dynamic link library protecting method includes a step of designating a protection target object to be protected from objects constituting the dynamic link library, and a step of calculating a hash value by applying a hash function to the protection target object.
  • a step of creating a tuple combining the calculated hash value and the position information and size information of the protection target object, and a position size that is a set of the tuples for each protection target object in the dynamic link library And a step of creating an attached hash array.
  • the dynamic link library authentication method includes all tuples in a hash array with a position size, which is a set of tuples combining a hash value, position information, and size information for each object to be protected in the dynamic link library.
  • the process of identifying the protected object in the dynamic link library from the process, the process of calculating the hash value of each protected object, and comparing and verifying the calculated hash value and the hash value constituting the hash array with position size If all the tuples in the hash array with position size match the verification result, the authentication result is passed, and if there is a tuple where the comparison verification result does not match, the authentication result is And a process for rejecting.
  • the objects to be protected can be limited, and the operation delay of the program can be suppressed.
  • FIG. 5 is an explanatory diagram illustrating library protection according to the first embodiment.
  • 6 is an explanatory diagram illustrating library authentication according to Embodiment 1.
  • FIG. 5 is an explanatory diagram illustrating library protection according to the first embodiment.
  • 6 is an explanatory diagram illustrating library authentication according to Embodiment 1.
  • FIG. 4 is a flowchart showing hash array and electronic signature creation processing according to the first embodiment.
  • 6 is a flowchart illustrating library authentication processing according to the first embodiment.
  • FIG. 6 is an explanatory diagram showing protection of a library shared by a plurality of programs according to the first embodiment.
  • 6 is an explanatory diagram illustrating authentication of a library shared by a plurality of programs according to Embodiment 1.
  • FIG. 5 is an explanatory diagram showing protection of a plurality of libraries used from one program according to the first embodiment.
  • FIG. 5 is an explanatory diagram showing protection of a plurality of libraries used from one program according to the first embodiment.
  • 4 is a flowchart showing processing at the time of starting a program according to the first embodiment. 4 is a flowchart illustrating library loading processing according to the first embodiment. 6 is a flowchart illustrating an operation of object address acquisition processing according to the first embodiment.
  • FIG. 6 is a flowchart illustrating an operation of object address acquisition processing according to the first embodiment. 6 is a flowchart illustrating an operation of authentication processing according to the first embodiment. It is a figure which shows the structure and data flow of the library protection apparatus and library production apparatus by Embodiment 1.
  • FIG. 5 is a diagram showing the data flow and configuration details of an object unit in a part of the library protection apparatus according to the first embodiment. It is a figure which shows the structure and data flow of the apparatus in connection with the dynamic link at the time of program starting of the program management system by Embodiment 1.
  • FIG. FIG. 3 is a diagram showing the data flow and configuration details of an object unit in a part of the apparatus related to the dynamic link at the time of program activation in the program management system according to the first embodiment.
  • FIG. 2 is a diagram showing a configuration of a device related to library loading and a data flow in the program management system according to the first embodiment. It is a figure which shows the structure of the apparatus and data flow which concern on the object address acquisition of the program management system by Embodiment 1.
  • FIG. It is explanatory drawing which shows protection of the library by Embodiment 2.
  • FIG. 10 is an explanatory diagram illustrating library authentication according to a second embodiment. 10 is a flowchart illustrating integrated hash array and electronic signature creation processing according to the second embodiment. 10 is a flowchart illustrating authentication processing of the integrated hash array according to the second embodiment. 10 is a flowchart illustrating library authentication processing according to the second embodiment.
  • FIG. 10 is a flowchart illustrating processing at the time of starting a program in the program management system according to the second embodiment.
  • 14 is a flowchart illustrating an authentication process when an object address is fixed up according to the second embodiment.
  • It is a figure which shows the structure and data flow of the library protection apparatus and library production apparatus by Embodiment 2.
  • FIG. It is a figure which shows the structure of the apparatus and data flow which concern on the dynamic link at the time of program starting of the program management system by Embodiment 2.
  • FIG. It is a figure which shows the structure of the apparatus and data flow which concern on the dynamic link at the time of program starting of the program management system by Embodiment 2.
  • FIG. It is a figure which shows the structure and data flow of the apparatus in connection with a library load of the program management system by Embodiment 2.
  • FIG. It is a figure which shows the structure of the apparatus and data flow which concern on the object address acquisition of the program management system by Embodiment 2.
  • FIG. It is explanatory drawing which shows protection of the conventional library. It is explanatory drawing which shows the authentication of the conventional library.
  • the procedures and data that make up the program are first created in the form of source code that is easy for humans to read and write, and then translated into a machine language format that is easy for machines to read and write, so that a series of operations is finally possible.
  • This machine language format procedure and data is called an object, the translation process is called compilation, and the process of compilation is called a link.
  • Source code configured in one program is not necessarily described in one file, but a plurality of files (referred to as source code files when each is particularly distinguished) in consideration of the depth of correlation between procedures and data. ) And managed. Normally, procedures and data in one source code file are stored in one file after compilation, and this is called an object file.
  • An object file containing objects necessary to configure one program is linked at the time of program creation to be combined into one program file. At this time, a cross-reference between objects can be resolved and a series of operations can be performed. Can be created.
  • Procedures and data constituting a program are not necessarily limited to a single program component, and are often used in common by a plurality of different programs. Therefore, considering the commonality of use and the depth of correlation that is different from the source code division, a plurality of object files are collected and stored in one file. This is called a library, and in particular, it is sometimes called a library file by emphasizing the point stored in one file. When a library file is created giving priority to the depth of correlation, it is not always the case that objects are commonly used by multiple programs, and sometimes some objects are used only by some programs. appear.
  • an object that is not used at all may be included from a program in each installation destination product.
  • standard functions of C language are used by many programs, they are often collected as a library. However, each program does not need all the standard functions of C language and is suitable for the purpose of each program. In many cases, only some standard functions are used.
  • static link library is a collection of objects that are closely related so that objects used in a program are collected in the same file as the program when the program is created and cross-reference between objects is solved. All cross-references between objects are resolved when the program is created.
  • the dynamic link library is a part of the objects used in the program, collected in a file separate from the program file, and configured to resolve cross-references when the program is started or during execution.
  • the “common use from multiple programs” aspect of the library can be extended to program management after creation, and maintainability can be improved. For example, instead of replacing a plurality of program files that include the corresponding object when replacing the object due to function improvement or the like, it is only necessary to replace one common dynamic link library that includes the corresponding object. In addition, the consumption of the storage area can be suppressed by sharing.
  • the cross-reference relationship between objects in the dynamic link library may be resolved in advance when the library file is created. For this reason, the process of creating a dynamic link library from an object file is also called linking.
  • the dynamic link library There are two main ways to use the dynamic link library. One is to build up a run-time image together with the contents of the program file when the program is started, and to solve the cross-reference between the object in the program file and the object in the dynamic link library file. This is because the identifier of the library that is directly referred to in the program file is stored in advance, and dynamic link processing is performed by the OS or standard library when the program is started. Called dynamic link of time. For other libraries that are directly referenced from the dynamic link library, the identifier of the referenced library is stored in the reference-side library file, and cross-references between objects in different dynamic-link library files also operate in the same way. Link processing is now possible.
  • the other is to execute the above runtime image construction and cross-reference resolution explicitly from the program. This is because the processing related to dynamic linking is performed by calling the load function of the library provided in the OS or standard library from the program and calling the address acquisition function of the object in the library from the program. Called “dynamic link” or “dynamic link in progress”.
  • the address of the object is not fixed at the time of creation, but is determined only when the object in the library read out at the time of constructing the runtime image is arranged in the address space.
  • the process of registering the determined address in a list or a cross-reference table so that it can be referenced from other objects is called a fix-up.
  • the address acquisition function may perform a fixup when it is called, or it may simply return an address registered with a fixup performed in advance.
  • both implicit dynamic links and explicit dynamic links are provided by the OS.
  • the API that calls the library load function is called LoadLibrary () / LoadLibraryEx (), and takes a library path name (or name that can be mapped to a path name) as an argument and returns a handle.
  • the API that calls the address acquisition function is GetProcAddress (), which takes the library handle and object name as arguments and returns the address that has been fixed.
  • the dynamic link library is often abbreviated as DLL.
  • both implicit dynamic links and explicit dynamic links are dynamically linked with standard libraries (startup code statically linked to program files).
  • Standard library The API that calls the library load function is called dlopen (), and takes a library path name (or name that can be mapped to a path name) as an argument and returns a handle.
  • the API that calls the address acquisition function is dladdr (), which takes a library handle and object name as arguments, and returns a fixed address.
  • a dynamic link library is called a shared object.
  • FIG. 1 is an explanatory diagram showing protection of a dynamic link library according to Embodiment 1 of the present invention.
  • FIG. 1 shows a processing relationship between data regarding protection of a library when all objects in a dynamic link library (hereinafter referred to as a library) are directly referred to from a calling program.
  • a library a dynamic link library
  • the program 1 operates with reference to all the objects 11 to 14 in the library 10 is taken as an example.
  • the objects 11 to 14 are designated as protection targets.
  • the hash value 211 at the time of protection of the object 11 is calculated, and the calculated hash value 211 is made into a triple with the position 311 and the size 411.
  • a triplet of hash values, positions, and sizes is created for the remaining objects 12-14, and these triplets are collected to create an array (hereinafter referred to as a hash array 100 with position size).
  • an electronic signature 600 is created using a private key 700 held only by the manufacturer.
  • the signature creation procedure can be protected by using a signature creation procedure with a hash function as the previous step, such as RSASSA-PSS-SIGN and RSASSA-PKCS1-v1_5-SIGN described in Non-Patent Document 1. It is possible to cope with the fact that the size of the hash array with position size varies depending on the number of target objects.
  • FIG. 2 is an explanatory diagram showing library authentication according to the first embodiment of the present invention. 2 when the entire object in the library is referenced directly from the calling program, the library authentication shows the processing relationships between data.
  • the program 1 and the library 10 are the same as those referred to in FIG. 1, and the hash array 100 with position size and the electronic signature 600 are those created in FIG. To authenticate the library 10 in this case, it is necessary to inspect every tampering objects 11, 12, 13, 14.
  • the signature verification procedure can be protected by using a signature verification procedure having a hash function as a previous step, such as RSASSA-PSS-VERIFY and RSASSA-PKCS1-v1_5-VERIFY described in Non-Patent Document 1. It is possible to cope with the fact that the size of the hash array with position size varies depending on the number of target objects.
  • the objects 11 to 14 are identified using the positions 311 to 314 and the sizes 411 to 414 that are confirmed not to be tampered with.
  • hash values 511 to 514 of the objects 11 to 14 are calculated. Since it has been confirmed that the hash values 211 to 214 stored in the hash array 100 with position size have not been falsified, the hash values 211 to 214 calculated at the time of protection are compared with the hash values 511 to 514 calculated at the time of authentication, respectively. By verifying, it is confirmed whether or not the objects 11 to 14 are falsified.
  • the hash value 511 calculated from the object 11 at the time of authentication is different from the hash value 211, so that the tampering is detected by comparison with the hash value 211. Further, even if the hash value 211 of the hash array with position size 100 is replaced with the hash value calculated from the object after falsification in order to hide the tampering of the object 11, the hash array with position size 100 uses the electronic signature 600 at the time of authentication. Because it does not conform to, tampering is detected.
  • the hash array 100 with position size does not conform to the electronic signature 600 at the time of authentication. Tampering is detected.
  • the electronic signature 600 is replaced with the electronic signature created from the hash array with position size after alteration in order to hide the alteration of the object 11 and the alteration of the hash array 100 with position size, it is used when the electronic signature 600 is created. Since the private key 700 held only by the manufacturer, the tamper must create an electronic signature using a different private key, and verification is performed using the public key 701 corresponding to the private key 700 of the manufacturer. A nonconformity is detected. These authentication processes are similarly performed for the objects 12, 13, and 14.
  • FIG. 3 illustrates library protection when some objects in the library are referenced directly from the calling program, some other objects are dereferenced, and some other objects are not referenced at all.
  • the processing relationship between data is shown.
  • the program 2 directly refers to the object 21 and the object 22 in the library 20.
  • the object 21 does not refer to other objects, and the object 22 refers to the object 24.
  • the object 23 is not directly or indirectly referenced from the program 2.
  • the objects 21, 22, and 24 are designated as protection targets.
  • the hash value 221 at the time of protection of the object 21 is calculated, and the calculated hash value 221 is made into a triple with the position 321 and the size 421.
  • a triplet of hash values, positions and sizes is created for the objects 22 and 24, and these triplets are collected to create a hash array 101 with a position size.
  • an electronic signature 601 is created using a private key 700 held only by the manufacturer.
  • the reference relationship between the indirectly referenced object and the program is described as indirect once. However, if there is an object that is indirectly referenced multiple times, the object is also protected. Include in subject.
  • FIG. 4 shows data on authentication of the library when some objects in the library are directly referenced from the calling program, some other objects are dereferenced, and some other objects are not referenced at all. The processing relationship between them is shown.
  • the program 2 and the library 20 are the same as those referred to in FIG. 3, and the hash array 101 with position size and the electronic signature 601 are created in FIG. In this case, in order to authenticate the library 20, it is necessary to inspect whether the objects 11, 12, and 14 are falsified. First, the public key 701 corresponding to the private key 700 held only by the manufacturer is used to verify whether the position-sized hash array 101 has been tampered with the electronic signature 601.
  • the objects 21, 22, and 24 are specified using the positions 321, 322, and 324 and the sizes 421, 422, and 424 that are confirmed not to be falsified.
  • the hash values 521, 522, and 524 of each object are calculated. Since it has been confirmed that the hash values 221, 222, 224 stored in the hash array 101 with position size have not been tampered with, the hash values 221, 222, 224 calculated at the time of protection and the hash values 521, calculated at the time of authentication By comparing and verifying 522 and 524, it is confirmed whether or not the objects 21, 22, and 24 are falsified.
  • the hash values 521, 522, and 524 calculated from the objects 21, 22, and 24 at the time of authentication are different from the hash values 221, 222, and 224.
  • the falsification is detected because the hash array 101 with position size does not match the electronic signature 601. Is done.
  • the position-sized hash array 101 does not conform to the electronic book name 601 at the time of authentication, so that the alteration is detected.
  • the electronic signature 601 is altered, for example, by replacing the electronic signature to hide the alteration, non-conformity is detected by verification using the public key 701 corresponding to the private key 700.
  • step S101 the position / size of the object to be protected is specified (step S101), a hash value is calculated for the corresponding object (step S102), and the hash value / position / size of the corresponding object is made into a triple (step S103). It is determined whether it has been executed for all the objects to be protected. If there is no execution, the process returns to step S101 and is repeated (step S104). After the process is performed for all, a triple array of all objects to be protected is collected to create a hash array with position size (step S105).
  • step S106 an electronic signature of a hash array with a position size is created (step S106), and a hash array with a position size and an electronic signature are stored in association with a set of a program and a library (step S107). This is the end of the procedure for creating the hash array and the electronic signature.
  • a hash array with a position size and an electronic signature corresponding to a combination of a program and a library are read (step S201). If either one or both have not been successfully read, the process branches (step S202), determines that the authentication has failed (step S211), and ends the authentication process. If the reading is successful, the hash array with position size and the electronic signature of the hash array with position size are verified using a reliable public key (step S203). If it does not match the electronic signature, the process branches (step S204), determines that the authentication has failed (step ST211), and ends the authentication process.
  • step S205 If it matches the signature, the position / size of the corresponding protected object is specified from the triplet of elements of the hash array with position size (step S205), and the hash value of the protected object is calculated (step S206). ), The hash value calculated in step S206 is compared with the hash value in the corresponding triple of the hash array with position size (step S207). If the hash values do not match, the process branches (step S208), determines that the authentication has failed (step ST211), and ends the authentication process. If the hash values match each other, it is determined whether all the elements of the hash array with position size have been executed. If there is no execution, the process returns to step S205 and repeats (step S209). If the implementation is completed for all elements without finding any incompatibility between hash values, the library authentication result is accepted (step ST210), and the procedure of the authentication method is terminated.
  • 7 and 8 are explanatory diagrams showing protection and authentication of a library shared by a plurality of programs according to the first embodiment.
  • FIG. 7 is an explanatory diagram showing a processing relationship between data for library protection when a library is shared by a plurality of programs and the objects in the library referred to by each program have different combinations.
  • the program 3 directly refers to the objects 31 and 32 in the library 30
  • the program 4 refers to the objects 32 and 34 in the library 30.
  • the objects 31, 32, and 34 must be protected, but it is not necessary to protect the object 34 with respect to the operation of the program 3, and the object 31 is protected with respect to the operation of the program 4. do not have to. Therefore, it is preferable to protect the objects 31 and 32 for the “set of the program 3 and the library 30” and the objects 32 and 34 for the “set of the program 4 and the library 30”. is there.
  • the hash value 231 at the time of protection of the object 31 is calculated, and is made into a triple with the position 331 and the size 431.
  • a triplet is created for the object 32, and these triplets are collected to create a hash array 102 with position size.
  • an electronic signature 602 is created for the position-sized hash array 102 using the private key 700 held only by the manufacturer.
  • a hash array 103 with position size is created from the objects 32 and 34, and an electronic signature 603 is created.
  • FIG. 8 is an explanatory diagram showing a processing relationship between data for authentication when the library is shared by a plurality of programs and the objects in the library referred to by each program have different combinations.
  • the programs 3 and 4 and the library 30 are the same as those referred to in FIG. 7, and the hash arrays 102 and 103 with position sizes and the electronic signatures 602 and 603 are created in FIG.
  • the authentication of the library 30 needs to authenticate the objects 31 and 32 when used in the program 3 and needs to authenticate the objects 32 and 34 when used in the program 4.
  • the protection target objects 32 and 34 are specified using the positions 332 and 334 and the sizes 432 and 434 that have been confirmed not to be falsified.
  • the hash values 532 and 534 of each object are calculated.
  • the hash values 232 and 234 stored in the hash array 103 with position size have not been tampered with
  • the hash values 232 and 234 calculated at the time of protection and the hash values 532 and 534 calculated at the time of authentication are respectively By comparing and verifying, it can be confirmed whether or not the objects 32 and 34 have been falsified.
  • the procedure for creating the position-sized hash array 102 and the electronic signature 602 and the procedure for creating the position-sized hash array 103 and the electronic signature 603 in the protection of the library shown in FIG. 7 are the flowcharts shown in FIG. The same procedure is used. Further, in the authentication of the library shown in FIG. 8, the procedure for authenticating the library 30 with the hash array 102 with position size and the electronic signature 602 and the procedure for authenticating the library 30 with the hash array with position size 103 and the electronic signature 603 are as follows: The determination is made in the same procedure as in the flowchart shown in FIG.
  • FIGS. 9 and 10 are other explanatory views showing protection and authentication of a library shared by a plurality of programs according to the first embodiment.
  • FIG. 9 is an explanatory diagram showing the processing relationship between data for protecting a library when it is referenced from a program that requires protection and a program that does not require protection.
  • the program 3 is a program that needs to be protected and directly refers to the objects 31 and 32 in the library 30, and the program 5 is a program that does not need to be protected and operates by referring to the objects 32 and 34 in the library 30. .
  • it is necessary to protect the objects 31 and 32, and it is not necessary to protect the objects 31 to 34 with respect to the operation of the program 5.
  • the objects 31 and 32 are to be protected for the “set of the program 3 and the library 30”, and any object in the library 30 is not to be protected for the “set of the program 5 and the library 30”.
  • a hash array 102 with position size and an electronic signature 602 are created for “a set of the program 3 and the library 30”, and the processing content is the same as the processing content shown in FIG. Further, a “hash array with position size” and an electronic signature are not created for “a set of the program 5 and the library 30”.
  • FIG. 10 is an explanatory diagram showing a processing relationship between data regarding authentication of a library when it is referenced from a program that requires protection and a program that does not require protection.
  • the programs 3 and 5 and the library 30 are the same as those referred to in FIG. 9, and the hash array 102 with position size and the electronic signature 602 are created in FIG.
  • the processing contents when the objects 31 and 32 are inspected are the same as the processing for the “set of the program 3 and the library 30” in FIG.
  • the processing related to authentication is canceled when it is determined that protection is not required when the program 5 is started or executed.
  • the amount of calculation is reduced by the amount of verification processing of the hash array with position size and the comparison verification processing of the hash value performed at the time of starting or executing the program.
  • the operation delay of the program can be shortened.
  • FIG. 11 is an explanatory diagram showing a data processing relationship for protection of a plurality of libraries used from one program according to the first embodiment.
  • An example in which the program 6 directly refers to the objects 41 and 42 in the library 40 and further directly refers to the objects 51 and 53 in the library 50 will be described.
  • the objects 41, 42, 51, and 53 need to be protected.
  • a hash value 241 at the time of protection of the object 41 is calculated, and a triple is set together with the position 341 and the size 441.
  • a triplet is created for the object 42, and two triplets are collected to create a hash array 104 with position size.
  • an electronic signature 604 is created using a private key 700 held only by the manufacturer.
  • the hash array 105 with position size and the electronic signature 605 are created. That is, the protection process for the library 40 is the same as when a single library is used from a single program, and the same process is performed for the library 50.
  • the authentication of multiple libraries used by one program is performed by the same process as when each library is authenticated.
  • FIG. 12 is an explanatory diagram showing protection of a plurality of libraries used from one program according to the first embodiment. Furthermore, at least one of the libraries has no object that is directly referred to by the program, and is in another library. The case where it is referred only from the object is shown.
  • the program 7 directly refers to the objects 61 and 62 in the library 60, and the object 62 directly refers to the objects 71 and 73 in the library 70.
  • the object 62 directly refers to the objects 71 and 73 in the library 70.
  • a hash value 261 at the time of protection of the object 61 is calculated, and a triple is set together with the position 361 and the size 461.
  • a triplet is created for the object 62, and the two triplets are collected to create a hash array 106 with position size.
  • an electronic signature 606 is created for the position-sized hash array 106 using the private key 700 held only by the manufacturer.
  • a hash array 107 with position size and an electronic signature 607 are created based on the objects 71 and 73. That is, the protection process for the library 60 is the same as that for the library 70, as is the case where a single library is used from a single program.
  • At least one of the libraries has no object that is directly referenced from the program, and authentication when the object is referenced only from an object in another library is performed by the same process as when authenticating each library. Is done.
  • the apparatus further includes a storage device for storing the program, a flag for marking the program as necessary / unnecessary for protection, a device for setting the corresponding flag, and a device for creating an electronic signature for preventing falsification of the program itself
  • a program management system further comprising a storage device for storing the electronic signature is constructed.
  • FIG. 12 program using a plurality of dynamic link libraries
  • a program management procedure including a dynamic link library and a calling program will be described with reference to FIG.
  • the program activation process excluding the dynamic link for example, resource allocation
  • it is determined with reference to whether or not the corresponding program needs to be protected step S302. If necessary, program authentication is performed (step S303), and if the authentication does not pass, the process branches (step S304), and the program execution is rejected as an authentication error (step S311). If the program authentication is successful, the libraries that are dynamically linked implicitly by the program are listed, including those that are used directly and those that are indirectly used (step S305).
  • step S306 If the number of listed libraries is less than 1, the process branches (step S306), and the subsequent processing is skipped to complete the program startup. If the number is 1 or more, library authentication is performed (step S307), and if authentication is not passed, the process branches (step S308), and the program execution is rejected as an authentication error (step S311). If the library authentication is successful, a dynamic link procedure without authentication (step S309) is performed. It is determined whether or not all the listed libraries have been implemented. If there is no implementation, the process returns to step S307 and is repeated (step S310). When the implementation has been completed for all the libraries, the program startup process is terminated.
  • step S302 the libraries that are implicitly dynamically linked by the program are listed together with those that are used directly and those that are used indirectly (step S312). If there are fewer than one library listed, the process branches (step S313), and the subsequent processing is skipped and the program start processing is terminated. If the number is one or more, a dynamic link procedure without authentication (step S314) is performed. It is determined whether or not all the listed libraries have been implemented. If there is no implementation, the process returns to step S314 and is repeated (step S315). When the implementation has been completed for all the libraries, the program startup process is terminated.
  • the program authentication must include at least verification of whether or not the program file has been tampered with.
  • the specific method may be the authentication method for the object in the library described with reference to FIG.
  • the two protection methods may be employed, and unlike these, an electronic signature may be created from the entire program file.
  • a protection method corresponding to each must be applied in advance.
  • the flag that marks the necessity / unnecessity of protection referred to in step S302 must be unchangeable or capable of detecting tampering.
  • a list of program files that need to be protected may be provided and protected by an electronic signature, and the list may be classified according to the list each time an arbitrary program is started.
  • the flag may be used as a flag for marking the necessity / unnecessity of protection.
  • step S401 It is determined with reference to the mark whether or not the corresponding program needs to be protected (step S401). If necessary, library authentication is performed (step S402), and if authentication is not passed, the process branches (step S403), and the program execution is rejected as an authentication error (step S405). If the library authentication is successful, the unauthenticated loading procedure (step S404) is performed, and the library loading process is completed. On the other hand, if the program is not required to be protected in step S401, a load procedure without authentication (step S404) is performed, and the library loading process is terminated.
  • FIGS. 15 to 17 are flowcharts showing the object address acquisition process
  • FIG. 17 is a flowchart showing the object authentication process.
  • FIG. 17 shows the object authentication procedure extracted
  • FIG. 16 shows the case where the program is not a protection target, and will be described with reference to FIG. 15 unless otherwise specified. It is determined whether the address of the requested object has been fixed up (step S501), and if it has been fixed up, the recorded address is output (step S521), and the object address acquisition process is terminated.
  • step S503 the dynamic symbol table is searched by object name to acquire position information and size information (step S502), and the position information is converted into an address (step 503). Subsequent to step S503, it is determined with reference to the mark whether or not the program needs to be protected (step S504). If protection is necessary, the object authentication procedure at the time of fix-up (step S505) is executed, and if the authentication does not pass, the process branches (step S506) and is output as an authentication error (step S522), and the object address acquisition process is terminated. . If the authentication is successful, it is determined whether the corresponding object refers to another object (step S507). If not, the corresponding object is marked as fixed up and recorded (step S520), and the recorded address is output ( Step S521), the object address acquisition process is terminated.
  • step S507 it is determined whether or not the library to which the object belongs has been loaded (step S508). If not loaded, a library authentication procedure (step S509) is performed. If the library authentication is not passed, the process branches (step S510), and is output as an authentication error (step S522), and the object address acquisition process is terminated. If the library authentication is passed, an unauthenticated loading procedure (step S511) is performed, and an address is acquired for the referenced object (step S512). If the library has already been loaded in step S508, steps S509 to S511 are skipped and step S512 is performed.
  • the object address acquisition procedure executed in step S512 is a recursive call of the entire procedure described in FIG. If the result of the call does not pass the authentication, the process branches (step S513) and is output as an authentication error (step S522), and the object address acquisition process is terminated. It is determined whether or not all of the referenced objects have been implemented. If there is no implementation, the process returns to step S512 and is repeated (step S514). When the execution is completed for all the referenced objects, the object is marked as having been fixed up, the address is recorded (step S520), the recorded address is output (step S521), and the object address acquisition process is performed. finish.
  • step S504 determines whether the corresponding object refers to another object (step S515 in FIG. 16), and if not, marks the corresponding object as having been fixed and records the address. (Step S520), the recorded address is output (Step S521), and the object address acquisition process is terminated. If another object is referred to in step S515 in FIG. 16, it is determined whether or not the library to which the object belongs has been loaded (step S516 in FIG. 16). If not loaded, the unauthenticated loading procedure (step S517 in FIG. 16). To obtain an address for the referenced object (step S518 in FIG. 16).
  • step S517 is skipped and step S518 is performed.
  • the object address acquisition procedure executed in step S518 is a recursive call of the entire procedure described in FIG. The result of the call will not fail authentication. It is determined whether all the referenced objects have been implemented. If there is no implementation, the process returns to step S518 and repeats (step S519 in FIG. 16). When the execution is completed for all the referenced objects, the object is marked as having been fixed up, the address is recorded (step S520), the recorded address is output (step S521), and the object address acquisition process is performed. finish.
  • step S531 it is determined whether the library to which the object belongs has been authenticated, and if it has not been authenticated, the process branches (step S531), the object authentication result is rejected (step S535), and the object authentication process is terminated. If the library has been authenticated, the corresponding element in the hash array with position size is searched for the corresponding object whose position and size have been specified in the fix-up process (step S532). If there is no corresponding element in the search result, the process branches (step S533), the object authentication result is rejected (step S535), and the object authentication process is terminated.
  • step S534 If there is a corresponding element in the search result, the object authentication result is accepted (step S534), and the object authentication process is terminated.
  • a hash array with a position size is created using the triples for each protection target object as elements in step S105 of FIG. 5, “corresponding” in step S532 of FIG. And size to match.
  • step S105 a series of areas of adjacent protection target objects can be collectively created as one element to create a position-sized hash array.
  • “corresponding” in step S532 in FIG. Is configured so that the area represented by the position and size of the object is included in the area represented by the position and size in the triplet of elements. Even if a plurality of objects are combined into a triple in the latter case, the total size of objects to which the hash function is applied does not change.
  • Each source code file describes the realization of the global functions 21, 22, and 23, and further describes a static function 24 that is called from the function 22.
  • an object file storing objects is created.
  • the library 20a immediately after creation includes a section in which objects are grouped according to their properties, a symbol table in which the positions, sizes, and names of all objects are included, and the positions, sizes, and names of only objects referenced from outside the library.
  • the dynamic symbol table noted is typically included.
  • debug information may be included, but it is not used in the present invention. In the position fields of both symbol tables, section identifiers and positions within the sections are described.
  • the symbol table included in the library 20a just created by the linker 111 is deleted by the symbol information / debug information deleting device 112 when the library is distributed or installed in the product. For example, the object 24 of the static function 24 is externally stored. Cannot be referenced directly.
  • the position-sized hash array creation device 121 receives a list of object names to be protected, searches the symbol table in the library 20a by name, and stores the positions in the position-sized hash array 101. ⁇ Get the size. If the library authentication process is limited to the dynamic link at the time of activation, the section to be stored in the hash array 101 with position size is set to the offset of each object in the final file of the library 20 to obtain a section. It is possible to simplify the processing by specifying the position of the.
  • the position-sized hash array creation device 121 calculates the hash value of the object corresponding to the position / size to create a triple, and collects these to create the position-sized hash array 101.
  • the electronic signature creation apparatus 710 of Embodiment 1 creates the electronic signature 601 of the hash array 101 with position size using the private key 700.
  • the hash array storage device with position size 125a according to the first embodiment stores the hash array 101 with position size in association with the set of the library identifier 20 and the program identifier 2.
  • the electronic signature storage device 123a of the first embodiment stores the electronic signature 601 in association with the set of the library identifier 20 and the program identifier 2.
  • the object specifying unit 121a searches the symbol table in the library 20a by name for each of the names 21, 22, and 24 listed in the target object name list, and sets a position 321 and a size 421 as a pair. A set of size 422 and a set of position 324 and size 424 are acquired. Since the position information is the identifier of the section to which the object belongs and the offset in the section, it can be applied to the same section in the library 20 from which the symbol information, debug information, etc. have been removed.
  • the hash calculation unit 121b acquires the objects 21, 22, and 24 from the library 20, and calculates the respective hash values 221, 222, and 224.
  • the triplet creation unit 121c triplets the position information and size information output by the object specifying unit 121a and the hash value calculated by the hash calculation unit according to the correspondence relationship.
  • the hash array creation unit with position size 121d collects these triplets and creates the hash array with position size 101.
  • a program identifier 2 is extracted by the activation instruction analyzer 151 from the program activation instruction 650 input via the input device 150 such as a keyboard or a button.
  • the input device 150 such as a keyboard or a button.
  • the program authentication device 157 authenticates the corresponding program with the program identifier 2 as a trigger, and outputs a program authentication result 653 as the result.
  • the program reading device 153 reads the program identifier 2 as a trigger, but stops reading if the program authentication result 653 does not pass the authentication.
  • the program 2 that has been successfully read is input to the library dynamic link detection device 154, and the corresponding library identifier is extracted. In the case of the program 2, the library identifier 20 is extracted.
  • the hash array reading device with position size 125b and the electronic signature reading device 123b receive the program identifier 2 and the library identifier 20 as a pair, and output the corresponding hash array 101 with position size and the electronic signature 601.
  • the electronic signature verification device 711 receives the hash array 101 with position size, the electronic signature 601, and the public key 701 that is reliable from the public key reading device 702, and outputs an electronic signature verification result 654.
  • FIG. 20 shows a case where a storage device that can write a public key only at the time of manufacture and cannot be rewritten is used for the public key reading device 702.
  • the hash value (not shown) calculated from the electronic signature 601 and the position-sized hash array is given as an input to the device. It is more preferable that the electronic signature verification result 654 is output.
  • the library reading device 155 receives the library identifier 20 and outputs the library 20.
  • the hash value verification device 128 receives the library 20 and the hash array 101 with position size, extracts the objects in the library 20 based on the positions and sizes of all the elements included in the hash array 101 with position size, and the hash value Is compared and verified with the hash value included in the hash array 101 with position size, and the hash value verification result 656 is output.
  • the determination device 129 receives the electronic signature verification result 654 and the hash value verification result 656, makes a determination, and outputs a library authentication result 658.
  • the dynamic link device 156 receives the program 2 and the library 20, and normally expands the executable image 652 on the main memory and performs the object address fix-up. If the library authentication result 656 is not passed, the dynamic link device 156 stops. When the implicit dynamic link at the time of activation fails, the program 2 fails to be activated and is not executed.
  • the determination device 129 fails via the subsequent hash value verification device 128 and electronic signature verification device 711. Notify that. Alternatively, although not particularly illustrated, the determination device 129 may be notified directly of the reading failure. When the determination device 129 is notified of the failure, the determination device 129 outputs a failure as the library authentication result. When the electronic signature 601 is illegally removed and the electronic signature reading device 123b fails to read, the determination device 129 is notified of the failure via the subsequent electronic signature verification device 711. Alternatively, although not particularly illustrated, the determination device 129 may be notified directly of the reading failure.
  • the determination device 129 When the determination device 129 is notified of the failure, the determination device 129 outputs a failure as the library authentication result 658. Alternatively, if the hash array reading device with position size 125b or the electronic signature reading device 123b fails to read, the dynamic link device 156 is directly notified of the failure and the executable image is stored on the main memory. Expansion and object address fixup may be stopped.
  • the object specifying unit 128a of the hash value verification device 128 provides position information and size information to the hash calculation unit 128b from a triplet that is each element of the position-sized hash array, and also provides a hash value to the comparison verification unit 128c.
  • the hash calculation unit 128b of the hash value verification device 128 acquires the objects 21, 22, and 24 from the library 20 based on the given position information and size information, and calculates the respective hash values 521, 522, and 524.
  • the comparison verification unit 128c of the hash value verification device 128 compares the hash values 521, 522, 524 calculated by the hash value calculation unit 128b with the hash values 221, 222, 224 given from the object specifying unit 128a, respectively, and the comparison result Is output.
  • a hash value verification result 656 is a collection of comparison results for each object.
  • the comparison result accumulating unit 129a of the determination device 129 collects each comparison result in the hash value verification result 656, and outputs information “match” if they all match, and outputs information “mismatch” if there is even one mismatch. .
  • the authentication result output unit 129b of the determination device 129 outputs “pass” as the library authentication result 658 only when the electronic signature verification result 654 is pass and the output of the comparison result accumulation device is “match”. In this case, “fail” is output as the library authentication result 658. In addition, even when the read failure notification is received, “fail” is output as the library authentication result 658 (not shown).
  • each part of the hash value verification device operates sequentially, and the operation of each part is explained when the operation of the next part is started after the processing for all elements in the hash array with position size is completed.
  • a configuration in which each part sequentially operates for each element may be employed.
  • the comparison verification unit 128c sequentially outputs the comparison results
  • the comparison result accumulation unit 129a immediately outputs information “mismatch” if any one of the sequentially received comparison results does not match, and displays all the comparison results. If there is no mismatch even if it is received, the information “match” is output.
  • the authentication result output unit 129b outputs the library authentication result “fail” when receiving either the output information “mismatch” or the electronic signature verification result “fail” from the comparison result accumulation unit 129a.
  • the library authentication result “pass” is output.
  • the program 2 being executed issues a library load instruction 651.
  • the library load instruction analysis device 152 receives the library load instruction 651 and extracts the library identifier 20.
  • the extracted library identifier 20 is used in the same configuration as that after the library identifier 20 shown in FIG.
  • the dynamic link device 156a normally does not fix up the object address, but normally only expands the executable image into the main memory, and stops the expansion if the library authentication result 658 is not acceptable.
  • the program 2 to be given to the dynamic link device 156a and the program identifier 2 to be given to the electronic signature reading device 123b and the position-sized hash array reading device 125b are provided from the program 2 being executed.
  • a configuration relating to a program management including a dynamic link library and a calling program, and a configuration of data flowing between the devices will be described with reference to FIG.
  • the program 2 being executed issues an address acquisition instruction 660.
  • the address acquisition instruction analysis device 160 inputs an address acquisition instruction 660 and extracts the object name 21 and the library identifier 20.
  • the read position-sized hash array specifying device 130 receives the library identifier 20 and outputs the position-sized hash array 101 that was read when the library was loaded.
  • the dynamic symbol table search unit 161 a outputs the position 321 and the size 421 corresponding to the object name 21.
  • the position 321 is indicated by a set of a section identifier and a position within the section.
  • the object search device 131 performs element search in the position-sized hash array 101 using the position 321 and the size 421, and outputs the presence / absence of the corresponding element as an object authentication result 661.
  • the address mapping unit 161b converts the position 321 into an object address 321a.
  • the address output device 162 outputs the address 321a according to whether the object authentication result 661 is acceptable.
  • the electronic signature storage device 123a in FIG. 18 and the electronic signature reading device 123b in FIGS. 20 and 22 may be writing means and reading means provided in the same storage device, or separate devices for the same storage medium. It may be a writing device and a reading device.
  • the hash array storage device with position size 125a in FIG. 18 and the hash array reading device with position size 125b in FIGS. 20 and 22 may be writing means and reading means provided in the same storage device, or the same. There may be a writing device and a reading device which are separate devices for the storage medium.
  • the program reading device 153 of FIG. 20 may be a reading device of a storage device provided with a writing device and a reading device, or may be a reading device for a storage medium.
  • the library reading device 155 of FIGS. 20 and 22 may be a reading device of a storage device provided with a writing device and a reading device, or may be a reading device for a storage medium.
  • the writing means of the storage device or the writing device for the storage medium has not been described with reference to FIG. If the same storage device is employed, the manufacturer can update the program and / or the library and / or the location-sized hash array and / or the electronic signature even after the manufacture is finished. If separate devices for the same storage medium are employed, the manufacturer can update the program and / or library and / or location-sized hash array and / or electronic signature by replacing the medium.
  • the hash function application target is specified by the position and size, the library can be protected and authenticated in detail.
  • a protection target object can be designated, only a part of the library can be protected and authenticated.
  • the protection target can be limited to only objects used from the program.
  • the object to be protected is specified by name, it can be specified more easily for the creator of the procedure / data in the source code format than when specifying the position / size numerically.
  • the hash value of the object in the library is calculated and stored in advance, when the library is tampered with, the hash value calculated in the authentication process is different and tampering can be detected.
  • the digital signature of the hash array with position size is created using the private key of the public key cryptography, when the hash array with position size is tampered with, it is possible to detect nonconformity by verification with the digital signature. .
  • it is configured to protect the hash array with position size so that signature forgery by anyone other than the private key holder becomes difficult, even if both the hash array with position size and the electronic signature are tampered with, Tampering can be detected.
  • the ash array with position size and the electronic signature are created and stored for each pair of library and calling program, so that only the objects used in each program are protected.
  • Another location-sized hash array and electronic signature can be created and authenticated.
  • the library calling program is configured to be classified as protected and unprotected, so that it is not necessary to have a hash array with a position size and electronic signature of the dynamic link library when called from an unprotected program. Can do.
  • the verification processing of the hash array with a position size and the electronic signature becomes unnecessary when starting the program and loading the library.
  • the protected library is configured to authenticate at the time of implicit dynamic linking at the time of starting the program, the execution of the program can be suppressed by stopping the dynamic linking when an authentication failure is detected. . Further, since the protected library is configured to be authenticated when the library is loaded from the program, the library load can be suppressed through the suspension of the dynamic link when the authentication failure is detected. Further, since the protected object is configured to be authenticated when the address is acquired from the program, even if an address is acquired in order to use an object not to be protected, the authentication fails and the address is not passed to the program.
  • the input data size of the signature function is within a certain range even for a hash array with a position size that increases in proportion to the number of protected objects. Can be kept in.
  • the hash function application is provided in the preceding stage in the electronic signature verification process, the input data size of the verification function can be kept within a certain range.
  • the public key corresponding to the private key owned by the manufacturer is stored in a storage device that can be written only at the time of manufacture, and the program, library, hash array with position size, and electronic signature can be rewritten. If the program, library, and location-sized hash array are protected by a digital signature, the manufacturer may place the program and library in a location-sized hash array and a digital signature. On the other hand, the updated program and library and the hash array with position size or the integrated hash array and the electronic signature can be verified with the corresponding public key.
  • the public key is protected by using a tamper-resistant device enclosing the public key and the electronic signature verification function, the public key is stored in the main memory immediately before the verification function is applied after the public key is read from the storage device. It is possible to prevent the public key from being falsified and to trust the calculation process of the public key and the verification function.
  • FIG. 24 is an explanatory diagram showing the data processing relationship for library protection according to the second embodiment of the present invention.
  • the program 6 is designed to directly refer to the objects 41 and 42 in the library 40 and to directly refer to the objects 51 and 53 in the library 50.
  • the objects 41, 42, 51, and 53 need to be protected. Therefore, in the same manner as in the description of FIG.
  • the position size formed from the triple set corresponding to the hash array 104 with position size formed from the triple set corresponding to the objects 41 and 42 and the triple set corresponding to the objects 51 and 53 is used.
  • the equivalent hash array 105 is formed.
  • the library identifier 40 and the position-sized hash array 104 equivalent are paired, and the library identifier 50 and the position-sized hash array 105 equivalent are paired, and these pairs are collected to form an array (hereinafter referred to as an integrated hash array 108).
  • an electronic signature 608 is created for the integrated hash array 108 using a private key 700 held only by the manufacturer.
  • the signature creation procedure can be protected by using a signature creation procedure with a hash function as the previous step, such as RSASSA-PSS-SIGN and RSASSA-PKCS1-v1_5-SIGN described in Non-Patent Document 1. It is also possible to cope with the difference in the size of the integrated hash array depending on the number of target objects and the number of dynamic link libraries.
  • FIG. 25 is an explanatory diagram showing the data processing relationship for library authentication according to the second embodiment of the present invention.
  • the program 6, the library 40, and the library 50 are the same as those referred to in FIG. 24, and the integrated hash array 108 and the electronic signature 608 are those created in FIG.
  • the integrated hash array 108 and the electronic signature 608 are those created in FIG.
  • the public key 701 corresponding to the private key 700 held only by the manufacturer it is verified against the electronic signature 608 whether the integrated hash array 108 has been tampered with.
  • the signature verification procedure is protected by using a signature creation procedure with a hash function as the previous step, such as RSASSA-PSS-VERIFY and RSASSA-PKCS1-v1_5-VERIFY described in Non-Patent Document 1. It is also possible to cope with the difference in the size of the integrated hash array depending on the number of target objects and the number of dynamic link libraries.
  • the protection target objects 41, 42, 51, 53 are Identify.
  • the hash values 541, 542, 551, and 553 of the objects 41, 42, 51, and 53 are calculated. Since it has been confirmed that the hash values 241, 242, 251, and 253 stored in the integrated hash array 108 have not been tampered with, the hash value calculated at the time of protection and the hash value calculated at the time of authentication are respectively compared and verified. It can be confirmed whether or not the objects 41, 42, 51, 53 have been tampered with.
  • the hash value 541 calculated from the object 41 at the time of authentication becomes a different value, and is detected by comparison with the hash value 241.
  • the hash value 241 in the integrated hash array 108 is replaced with the hash value calculated from the object after falsification in order to hide the falsification of the object 41, the integrated hash array 108 does not conform to the electronic signature 608 at the time of authentication. Detected. Assuming that a pair including the position-sized hash array 104 in the integrated hash array 108 is deleted in order to hide the alteration of the object 41, the pair corresponding to the library identifier 40 cannot be found by searching at the time of authentication. Detected.
  • the integrated hash array 108 does not conform to the electronic signature 608 at the time of authentication, and is thus detected.
  • the electronic signature 608 is replaced with an electronic signature created from the unified hash array after falsification in order to conceal the alteration of the object 41 and the alteration of the integrated hash array 108
  • a protection target object for one library to be called is specified (step S601)
  • a position / size of the protection target object is specified (step S101)
  • a hash value is calculated for the corresponding object (step S102)
  • the hash value / position / size of the object is made into a triple (step S103). It is determined whether or not the processing has been performed for all the objects to be protected in the library.
  • step S105 After the process is performed on all the libraries, a triplet of all objects to be protected is collected to create a hash array with a position size (step S105), and the hash array with a position size is paired with the identifier of the corresponding library (step S105). S602). It is determined whether it has been executed for all the called libraries, and if not executed, the process returns to step S601 and is repeated (step S603).
  • step S604 After execution for all libraries, a pair of library identifiers and position-sized hash arrays for all the libraries is collected to create an integrated hash array (step S604), and an electronic signature of the integrated hash array is generated (step S605). ), The integrated hash array and the electronic signature are stored in association with the program (step S606). This completes the procedure for creating the integrated hash array and electronic signature.
  • step S701 the integrated hash array and electronic signature corresponding to the program are read (step S701). If either one or both have not been successfully read, the process branches (step S702), determines that the authentication has failed (step S706), and ends the authentication process. If the reading is successful, the integrated hash array and the electronic signature of the integrated hash array are verified using a reliable public key (step S703). If it does not conform to the electronic signature, the process branches (step S704), determines that the authentication has failed (step S706), and ends the authentication process. If it matches the signature, the integrated hash array authentication result is accepted (step S705), and the authentication method procedure ends.
  • step S711 the equivalent of the hash array with position size corresponding to the identifier of the corresponding library is searched. If there is no location-size hash array equivalent (step S712), the library authentication result is rejected (step S211), and the authentication method procedure is terminated.
  • the position / size of the target object is specified by the elements of the hash array with position size (step S205), the hash value of the target object is calculated (step S206), and the calculated hash value and position size are calculated.
  • the hash values stored in the attached hash arrays are compared (step S207).
  • step S208 the process branches (step S208), the library authentication result is rejected (step S211), and the procedure of the authentication method is terminated. If the hash values match, it is determined whether or not all the elements of the position-sized hash array have been implemented. If there is no hash value, the process returns to step S205 to repeat the above-described process (step S209). If the implementation is completed for all elements without finding any incompatibility between hash values, the library authentication result is accepted (step S210), and the procedure of the authentication method is terminated.
  • a program management procedure including a dynamic link library and a calling program will be described with reference to FIG. 29, particularly a procedure in the case where the program is dynamically linked implicitly when the program is started.
  • the same steps as those in the case of implicitly dynamically linking at the time of starting the program according to the first embodiment are denoted by the same reference numerals as those used in FIG. 13, and description thereof is omitted or simplified.
  • step S303 If protection is necessary, program authentication is performed (step S303), and if authentication is not passed, the process branches (step S304), and the program execution is rejected as an authentication error (step S311). If the program authentication is successful, hash array authentication is performed (step S801). If the authentication is not successful, the process branches (step S802), and the program execution is rejected as an authentication error (step S311). If the authentication has passed, the libraries that are dynamically linked implicitly by the program are listed, including those that are used directly and those that are used indirectly (step S305). If the number of listed libraries is less than one, the process branches (step S306), and the subsequent processing is skipped to complete the program startup. If the number is one or more, the library authentication procedure described with reference to FIG.
  • step S805 if the authentication does not pass, the process branches (step S806), and the program execution is rejected as an authentication error (step S311).
  • step S309 a dynamic link procedure without authentication
  • step S310 It is determined whether or not all the listed libraries have been implemented. If there is no implementation, the process returns to step S805 and is repeated (step S310). When the implementation has been completed for all the libraries, the program startup process is terminated. On the other hand, if the corresponding program does not need to be protected in step S302, the same processing as in steps S312 to S315 described in the first embodiment is performed, and the processing is terminated.
  • Program authentication is the same as described in FIG. 13 of the first embodiment.
  • the program management procedure including the dynamic link library and the calling program, particularly the procedure when explicitly loaded during program execution, is the same as the description in FIG. 14 of the first embodiment.
  • the procedure shown in the flowchart of FIG. 28 described above is used for the library authentication shown in step S402 of the flowchart of FIG.
  • the program management procedure including the dynamic link library and the calling program is the same as the description in FIGS. 15 and 16 of the first embodiment.
  • the fix-up object authentication shown in step S504 of the flowchart of FIG. 15 uses the procedure described below in FIG. 30, and the library authentication shown in step S509 of the flowchart of FIG. The procedure shown in the flowchart is used.
  • Step S531 it is determined whether or not the library to which the object belongs has been authenticated. If it has not been authenticated, the process branches (step S531), the object authentication result is rejected (step S535), and the object authentication process is terminated. If the library has been authenticated, a hash array with a position size corresponding to the identifier of the library is searched from the integrated hash array (step S821), and for the corresponding object whose position has been specified in the fix-up process, a hash array with a position size is obtained. A corresponding element is searched for (step S532). Thereafter, the same processing as Step S533 to Step S535 described in Embodiment 1 is performed, and the processing is terminated.
  • the configuration of the dynamic link library protection device, the library creation device, and the data flowing between them will be described with reference to FIG. 31, taking the case of the libraries 40 and 50 as an example.
  • the process up to compiling the source code file to obtain the object file and linking the object file to obtain the dynamic link library is the same as that described in FIG. . Since the symbol table included in the dynamic link libraries 40a and 50a just output from the linker 111 is deleted by the symbol information / debug information deleting device 112 when the library is distributed or installed in a product, for example, a static function Even if there are other objects, they cannot be directly referenced from the outside.
  • the position-sized hash array creation apparatus 121 receives a list of object names to be protected, searches the symbol table in the library 40a by name, and stores the position / hash array 104 in the position-sized hash array 104. Get the size.
  • the list of protected object names is received and the symbol table in the library 50a is searched by name to acquire the position / size to be stored in the hash array 105 with position size. If the hash arrays 104 and 105 with position sizes are used only for the library authentication process of the dynamic link at the time of startup, the positions to be stored in these hash arrays are indicated in the final library files 40 and 50, respectively.
  • An object offset is suitable for simplifying the authentication process.
  • the position-sized hash array creation device 121 calculates the hash value of the object corresponding to the position / size to create a triple, and collects these to create the position-sized hash arrays 104 and 105.
  • the integrated hash array creation apparatus 8 receives a pair of a library identifier 40 and a hash array 104 with position size and a pair of a library identifier 50 and a hash array 105 with position size, and integrates each pair as an element.
  • a hash array 108 is created.
  • the electronic signature creation apparatus 710 of the second embodiment creates the electronic signature 608 of the integrated hash array 108 using the private key 700.
  • the integrated hash array storage device 126a according to the second embodiment stores the integrated hash array 108 in association with the program identifier 2.
  • the electronic signature storage device 124a of the second embodiment stores the electronic signature 608 in association with the program identifier 2.
  • the program identifier 6 is extracted by the activation instruction analyzer 151 from the program activation instruction 670 input via the input device 150 such as a keyboard or a button.
  • the input device 150 such as a keyboard or a button.
  • the program authentication device 157 authenticates the corresponding program with the program identifier 6 as a trigger, and outputs a program authentication result 673 as a result.
  • the program reading device 153 reads the program identifier 6 as a trigger, but stops reading if the program authentication result 673 does not pass the authentication.
  • the program 6 that has been successfully read is input to the library dynamic link detection device 154, and the library identifier is extracted. In the case of FIG. 32, library identifiers 40 and 50 are extracted.
  • the integrated hash array reading device 126b and the electronic signature reading device 124b receive the program identifier 6 and output the corresponding integrated hash array 108 and the electronic signature 608.
  • the electronic signature verification apparatus 711 receives the integrated hash array 108, the electronic signature 608, and the public key 701 that is reliable from the public key reading apparatus 702, and outputs an electronic signature verification result 674.
  • FIG. 32 shows a case where a storage device that can write a public key only at the time of manufacture and cannot be rewritten is used for the public key reading device 702.
  • a hash value (not shown) calculated from the electronic signature 608 and the integrated hash array is given to the device as an electronic It is more preferable that the signature verification result 674 is output.
  • the hash array search device with position size 127 outputs a hash array with position size 104 corresponding to the library identifier 40 and a hash array 105 with position size corresponding to the library identifier 50 from the integrated hash array 108.
  • the library reading device 155 receives the library identifiers 40 and 50 and outputs the libraries 40 and 50.
  • the hash value verification device 128 receives the library 40 and the hash array 104 with position size, extracts objects in the library 40 based on the positions and sizes of all the elements included in the hash array 104 with position size, and the hash value Is calculated and compared with a hash value included in the hash array 104 with position size.
  • the hash value verification device 128 further receives the library 50 and the hash array 105 with position size, extracts objects in the library 50 based on the positions and sizes of all elements included in the hash array 105 with position size, and the hash A value is calculated and compared with a hash value included in the hash array 105 with position size.
  • the hash value verification device 128 outputs these hash value verification results as comparison results for each protection target object.
  • a hash value verification result 676 A collection of comparison results for the objects in the library 50 is coded as a hash value verification result 677.
  • the determination device 129 receives the electronic signature verification result 674 as the hash array authentication result 675, receives the hash value verification results 676 and 677 as the library authentication results 678 and 679, makes a determination, and outputs the authentication result. More specifically, the determination device 129 includes the comparison result accumulation unit 129a and the authentication result output unit 129b described with reference to FIG.
  • the comparison result accumulation unit 129a aggregates the hash value verification results 676, which are a collection of comparison results, into a single library authentication result 678, and similarly aggregates the hash value verification results 677 into the library authentication result 679.
  • the determination device 129 b receives the electronic signature verification result 674 as the hash array authentication result 675, receives and determines the library authentication result 678, and outputs an authentication result that is a criterion for determining whether the library 40 is a dynamic link.
  • the determination device 129b receives the electronic signature verification result 674 again as the hash array authentication result 675, receives and determines the library authentication result 679, and outputs an authentication result that is a criterion for determining whether the library 50 is a dynamic link.
  • the dynamic link device 156 receives the program 6 and the libraries 40 and 50 and normally expands the executable image on the main memory to fix up the object address. If the authentication result is not acceptable, the dynamic link device 156 stops. When the implicit dynamic link at the time of activation fails, the program 6 fails to be activated and is not executed.
  • the determination device 129 fails via the subsequent-position-sized hash array search device 127 and the hash value verification device 128. Notify that. Alternatively, although not particularly illustrated, the determination device 129 may be notified directly of the reading failure. When the determination device 129 is notified of the failure, the determination device 129 outputs a failure as an authentication result serving as a dynamic link availability determination criterion. When the electronic signature 608 is illegally removed and the electronic signature reading device 124b fails to read, the determination device 129 is notified of the failure via the subsequent electronic signature verification device 711. Alternatively, although not particularly illustrated, the determination device 129 may be notified directly of the read failure.
  • the determination device 129 When the determination device 129 is notified of the failure, the determination device 129 outputs a failure as the library authentication result. Alternatively, if the hash array reading device with position size 126b or the electronic signature reading device 124b fails to read, the dynamic link device 156 is directly notified of the failure and the executable image is stored on the main memory. Expansion and object address fixup may be stopped.
  • the dynamic link library 50 is implicitly dynamically linked especially when the program 6 is started, and the dynamic link library 40 is explicitly specified.
  • a configuration in the case of being loaded on will be described with reference to FIGS.
  • FIG. 33 illustrates the configuration at the time when the dynamic link library 50 is implicitly dynamically linked, particularly when the program 6 is started, in the above case. The difference from FIG.
  • the authentication result output unit 129b of the determination apparatus receives the electronic signature verification result 674 that has just been output as the hash array authentication result 675, and the executable image 672a. Is that the program 6 and the library 50 are expanded on the main memory, and the portion of the library 40 has not yet been expanded.
  • FIG. 34 illustrates the configuration in the above case, particularly when the dynamic link library 40 is explicitly loaded during program execution.
  • the program 6 being executed issues a library load instruction 671.
  • the library load instruction analysis device 152 receives the library load instruction 671 and extracts the library identifier 40.
  • the library reading device 155 reads the library 40 using the library identifier 40 as a trigger.
  • the hash array search device with position size 127 outputs the hash array with position size 104 corresponding to the library identifier 40 from the integrated hash array 108.
  • the hash value verification device 128 receives the hash array 104 with position size and the library 40 and outputs a hash value verification result 676.
  • the comparison result accumulation unit 128a of the determination device 128 aggregates the hash value verification results 676, which are a collection of comparison results, into a single library authentication result 678.
  • the dynamic link device 156a receives the normal library 40 and the program 6 and expands the executable image on the main memory, but stops the expansion if the authentication result fails. 33, if the hash array authentication result 675 of FIG. 33 can continue to be used even at the time of loading, the authentication result output device 129b is interposed in the configuration between the library authentication result 678 and the dynamic link device 156a, as in FIG. Further, a hash array authentication result 675 may be input.
  • FIG. 35 illustrates the configuration at the time of obtaining the address of the object of the dynamic link library 40 that is explicitly loaded in the above case.
  • the program 6 being executed issues an address acquisition instruction 680.
  • the address acquisition instruction analysis device 160 inputs an address acquisition instruction 680 and extracts the object name 41 and the library identifier 40. Since the integrated hash array 108 was output by the integrated hash array reading device 126b when the program 6 was started, it is continuously used even at the time of address acquisition.
  • the hash array search device with position size 127 outputs the hash array 104 with position size corresponding to the library identifier 40 from the integrated hash array 108.
  • the dynamic symbol table search unit 161 a outputs a position 341 and a size 441 corresponding to the object name 41.
  • the position 341 is represented by a set of a section identifier and an in-section position.
  • the object verification device 131 searches for an element in the hash array 104 with position size using the position 341 and the size 441, and outputs the presence / absence of the corresponding element as an object authentication result 681. Further, the address mapping unit 161b converts the position 341 into an object address 341a. The address output device 162 records that the address has been fixed with the address 341a and outputs the address in accordance with the pass / fail of the object authentication result 681.
  • the electronic signature storage device 124a in FIG. 31 and the electronic signature reading device 124b in FIGS. 32 and 33 may be writing means and reading means provided in the same storage device, or separate devices for the same storage medium. It may be a writing device and a reading device.
  • the integrated hash array storage device 126a of FIG. 31 and the integrated hash array reading device 126b of FIGS. 32 and 33 may be writing means and reading means provided in the same storage device, or may be separate for the same storage medium.
  • the writing device and the reading device which are the devices may be used.
  • the program reading device 153 of FIGS. 32 and 33 may be a reading device of a storage device provided with a writing device and a reading device, or may be a reading device for a storage medium.
  • the library reading device 155 of FIGS. 32 and 33 may be a reading device of a storage device provided with a writing device and a reading device, or may be a reading device for a storage medium.
  • the writing means of the storage device or the writing device for the storage medium has not been described with reference to FIG. 31, but it goes without saying that it is necessary at least during manufacture. If the same storage device is employed, the manufacturer can update the program and / or the library and / or the location-sized hash array and / or the electronic signature even after the manufacture is finished. If separate devices for the same storage medium are employed, the manufacturer can update the program and / or library and / or location-sized hash array and / or electronic signature by replacing the medium.
  • the hash function application target is specified by the position and size, the library can be protected and authenticated in detail.
  • a protection target object can be designated, only a part of the library can be protected and authenticated.
  • the protection target can be limited to only objects that are used from the program.
  • the object to be protected is specified by name, it can be specified more easily for the creator of the procedure / data in the source code format than when specifying the position / size numerically.
  • the integrated hash array that integrates the hash array with position size is used for protection and authentication of programs that use multiple dynamic link libraries
  • the integrated hash array is related to the dynamic link library called from the program. All the sized hash arrays can be collected, and a library that was not assumed at the time of creating the integrated hash array can be prevented from being dynamically linked from the program being started and executed. Furthermore, it is possible to correspond to a plurality of hash arrays with position sizes by creating one electronic signature. Further, at the time of authentication, it is possible to perform authentication for a plurality of hash arrays with position sizes by performing verification processing of one electronic signature.
  • the hash value of the object in the library is calculated and stored in advance, when the library is tampered with, the hash value calculated in the authentication process is different and tampering can be detected. Furthermore, since the electronic signature of the integrated hash array is created using the private key of the public key cryptography, if the integrated hash array is tampered with, nonconformity can be detected by verification with the electronic signature. In addition, since the integrated hash array is protected so that signature forgery by anyone other than the private key holder becomes difficult, even if both the integration and the electronic signature are tampered with, tampering can be detected during authentication. it can.
  • the integrated hash array and electronic signature are created and stored for each calling program, so that only the objects used in each program are protected. Create and authenticate electronic signatures. Furthermore, since the library calling program is configured to be classified into the protection target and the non-protection target, the integrated hash array and the electronic signature can be made unnecessary when called from the non-protection target program. Also, the integrated hash array and electronic signature verification processing is not required when the program is started.
  • the protected library is configured to authenticate at the time of implicit dynamic linking at the time of starting the program, the execution of the program can be suppressed by stopping the dynamic linking when an authentication failure is detected. . Further, since the protected library is configured to be authenticated when the library is loaded from the program, the library load can be suppressed through the suspension of the dynamic link when the authentication failure is detected. Further, since the protected object is configured to be authenticated when the address is acquired from the program, even if an address is acquired in order to use an object not to be protected, the authentication fails and the address is not passed to the program.
  • the hash function application is provided before the digital signature creation process, the input data size of the signature function is kept within a certain range even for an integrated hash array that increases in proportion to the number of objects to be protected. be able to.
  • the hash function application is provided in the preceding stage in the electronic signature verification process, the input data size of the verification function can be kept within a certain range.
  • the public key corresponding to the private key held only by the manufacturer is stored in a storage device that can be written only at the time of manufacture, and the program, library, integrated hash array, and electronic signature can be rewritten. If the program and library and the integrated hash array are stored on the device and protected by electronic signature, the manufacturer can replace the program and library with the integrated hash array and electronic signature, while Later programs and libraries, integrated hash arrays and digital signatures can be verified with the appropriate public key.
  • the public key is protected by using a tamper-resistant device enclosing the public key and the electronic signature verification function, the public key is stored in the main memory immediately before the verification function is applied after the public key is read from the storage device. It is possible to prevent the public key from being falsified and to trust the calculation process of the public key and the verification function.
  • the dynamic link library protection method according to the present invention is configured to specify the hash function application target by the position and size, can limit the object to be protected, and can suppress the operation delay of the program. Therefore, the present invention is suitable for use as a method for protecting the function restriction realization part of the digital content appreciation device realized by the software program from tampering.

Landscapes

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

Abstract

 動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する工程と、保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する工程と、算出したハッシュ値と、保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する工程と、動的リンクライブラリ内の保護対象オブジェクト毎のタプルの集合である位置サイズ付ハッシュアレイを作成する工程とを備えた。

Description

[規則37.2に基づきISAが決定した発明の名称] プログラム管理システム
 この発明は、動的リンクライブラリの改竄に対する保護を行う装置およびその方法と、改竄有無を検証することにより動的リンクライブラリの認証を行う装置およびその方法と、これらの装置および方法により正当性を確認した上でプログラムを実行するプログラム管理システムに関するものである。
 デジタルコンテンツは通常著作者が諸権利を有しており、流通配布されたものを正規に受領したとしても、それは物品の流通とは異なって所有権が移転したわけではなく、単に鑑賞などの目的で利用することが許諾されたというだけである。デジタルデータが容易に複製できてしまう点と著作者の作成労力が報われるべきである点との釣り合いを配慮するならば、デジタルコンテンツの利用者を限定したり、デジタルコンテンツ観賞用装置の複製機能を制限したりすることは、やむを得ない処置である。しかしながら、利害関係の点では利用者は手元にあるものから最大の利を得ようと試みがちであり、前記観賞用装置の制限を不正解除しようとする動機が発生する。
 例えば観賞用装置がソフトウェア・プログラムで実現されている場合には、該当プログラムの機能制限実現箇所を改竄することにより、デジタルコンテンツを不正に利用しようとすることが考えられる。あるいは機能制限を持たない点を除き鑑賞装置同等の機能を持つ、代替品プログラムを実行させることにより、不正利用しようとすることが考えられる。本来のプログラムから代替品への制御遷移は、前記プログラム内のどの箇所を実行している最中であっても目的を達成できてしまうので、プログラムで読み書き実行される全てのオブジェクトに改竄を受けるおそれがある。
 上記の様な改竄の脅威に対して、電子署名を用いてプログラムを保護しておき、プログラム起動時等に改竄がないか検証することで正規プログラムであると認証し、合格時に限ってプログラム起動を成功させる様、あるいは合格時に限ってプログラム実行を継続させる様、防御策を採ることがある。
 しかしながらこの検証にかかる処理は、プログラム起動時においては該当プログラム本来の処理が開始されるまでの間に相応の時間を要することとなるという課題があった。より適切に言えば、防御と所要時間短縮化の両立が課題であった。
 その対策として、特許文献1および特許文献2には、プログラムをメモリ管理単位であるページ毎に分けて保護を行う共通の方法と、検証によりプログラム認証する方法が開示されている。また、特許文献3にも同一の保護方法が開示されている。
 図36は、従来技術の保護方式を示した図である。プログラム9はメモリ管理単位(通例4KBまたは8KB)で分割され、分割後をそれぞれページ91~94とする。まず各ページにハッシュ関数(一方向関数)を適用してハッシュ値291~294を得、各ハッシュ値を要素とするハッシュアレイ109を作成する。次にハッシュアレイに対して秘密鍵700を用いて電子署名609を作成する。
 また、図36で示した署名作成はハッシュアレイ109に対して更にハッシュ関数を適用してアレイハッシュ値(図示せず)を算出する段階と、アレイハッシュ値に対して署名関数を適用して電子署名を得る段階とで構成されている。署名作成手続きとして知られているものには、例えば非特許文献1に記載されている、入力値定義域に制約のあるRSASP1と、ハッシュ関数およびパディングをRSASP1の前段階として持ち制約緩和したRSASSA-PSS-SIGNおよびRSASSA-PKCS1-v1_5-SIGNとがある。従来技術の署名作成過程は、後者のタイプの署名作成手続きを示すものである。
 図37は、従来技術の認証方式を示した図である。まず電子署名作成時に用いた秘密鍵に対応する公開鍵701を用いて、電子署名609がハッシュアレイ109の署名として適合しているかどうかを検証する。次にプログラム9の各ページがロードされるたびに、該当ページ(図37の例ではページ92)にハッシュ関数を適用してハッシュ値592を算出し、ハッシュアレイ109に格納されていたハッシュ値292と比較する。署名検証もしくはハッシュ値比較検証のいずれかで不適合または不一致が検出されれば、改竄ありと判定する。特許文献1ではページをロードする度にハッシュ値算出と比較検証を行い、特許文献2では更に、プログラムの実行に連れてページが必要になる度にページロードとハッシュ値算出と比較検証を行うことで、プログラム実行と認証処理を並行実施している。
 また、図37で示した署名検証はハッシュアレイ109に対して更にハッシュ関数を適用してアレイハッシュ値(図示せず)を算出する段階と、アレイハッシュ値および電子署名に対して検証関数を適用して適合性結果を得る段階とで構成されている。署名検証手続きとして、一般的に入力値定義域に制約のあるRSAVP1と、ハッシュ関数およびパディングをRSAVP1の前段階として持ち制約緩和したRSASSA-PSS-VERIFYおよびRSASSA-PKCS1-v1_5-VERIFYとが知られている(非特許文献1参照)。特許文献1~3の署名検証過程は後者の署名検証手続きを示している。
 次に、従来技術の保護処理の流れを説明する。まず、プログラムをページに分解し、そのページについてハッシュ値を算出し、プログラムの全てのページについて実施し終えた場合には、各ページから得たハッシュ値を並べてアレイを作成し、アレイについて電子署名を作成する。得られたハッシュアレイとハッシュアレイへの電子署名を、プログラムと共に格納し、保護手順を終了する。
 次に、従来技術の認証処理の流れを説明する。まず、プログラムに対応したハッシュアレイをロードし、ハッシュアレイとハッシュアレイの電子署名とを、信頼できる公開鍵を用いて検証する。署名に適合していた場合には、プログラムのページをロードし、該当ページのハッシュ値を算出し、算出されたハッシュ値とハッシュアレイに格納されていたハッシュ値を比較する。双方のハッシュ値が一致すればロードされたページの命令またはページ内データの参照を実行し、必要なページについて上述した処理を繰り返す。一方、署名に適合していないと判断された場合、および双方のハッシュ値が一致しないと判断された場合には、認証エラーと判断してプログラムの実行を拒絶し、認証処理を終了する。
 なお、特許文献1には、双方のハッシュ値が一致した場合にロードされたページの命令またはページ内データの参照を実行する処理は記載されていない。
 特許文献1と特許文献2では、プログラム起動時に実施する認証処理は、ハッシュアレイを電子署名で検証する処理と、プログラム実行初期に必要になるページ分のハッシュ値算出と比較であるため、プログラム全体にハッシュ関数を適用するよりも短時間で済むという利点があった。
国際公開第2005/029223号 特開2008-293033号公報 特開2005-202523号公報
PKCS#1 v2.1: RSA Cryptography Standard, RSA Laboratories
 しかしながら、上述した特許文献1~3に開示された技術では、ハッシュ関数の適用対象を、メモリ管理対象であるページ単位としているため、利用単位であるオブジェクトとは、サイズおよび配置と適合しておらず、さらにプログラムを分割したページの順に、各ページから算出したハッシュ値を全ページ分並べてアレイにしている。そのため、利用されるオブジェクトを含むページに含まれる、全てのオブジェクトに対してハッシュ関数を適用し算出していた。1ページ内に含まれるオブジェクトが全て不使用でないかぎり、該当ページへのアクセスは必ず発生するため、そのページに対するハッシュ関数の算出はプログラム起動時あるいは実行中に必ず行われることから、プログラムの動作遅延を招くという課題があった。
 さらに、保護対象プログラムと非保護対象プログラムから共有されている動的リンクライブラリにおいて、非保護対象プログラムから呼び出される際にも認証処理が実施され、プログラムの動作遅延を招くという課題があった。
 この発明は、上記のような課題を解決するためになされたもので、プログラムの動作遅延を抑制して動的リンクライブラリを保護および認証することを目的とする。
 この発明に係る動的リンクライブラリ保護方法は、動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する工程と、保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する工程と、算出したハッシュ値と、保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプル(tuple)を作成する工程と、動的リンクライブラリ内の保護対象オブジェクト毎の前記タプルの集合である位置サイズ付ハッシュアレイを作成する工程とを備えたものである。
 この発明に係る動的リンクライブラリ認証方法は、動的リンクライブラリ内の保護対象オブジェクト毎のハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイ内の、全てのタプルから動的リンクライブラリ内の保護対象オブジェクトを特定する工程と、保護対象オブジェクトそれぞれのハッシュ値を算出する工程と、算出されたハッシュ値と、位置サイズ付ハッシュアレイを構成するハッシュ値とを比較検証する工程と、位置サイズ付ハッシュアレイ内の全てのタプルにおいて、比較検証の結果が一致する場合には認証結果を合格とし、比較検証の結果が不一致になるタプルが存在する場合には認証結果を不合格とする工程とを備えたものである。
 この発明によれば、保護対象となるオブジェクトを限定することができ、プログラムの動作遅延を抑制することができる。
実施の形態1によるライブラリの保護を示す説明図である。 実施の形態1によるライブラリの認証を示す説明図である。 実施の形態1によるライブラリの保護を示す説明図である。 実施の形態1によるライブラリの認証を示す説明図である。 実施の形態1によるハッシュアレイおよび電子署名作成処理を示すフローチャートである。 実施の形態1によるライブラリ認証処理を示すフローチャートである。 実施の形態1による複数のプログラムから共有されるライブラリの保護を示す説明図である。 実施の形態1による複数のプログラムから共有されるライブラリの認証を示す説明図である。 実施の形態1による保護必要なプログラムと保護不要なプログラムから参照されるライブラリの保護を示す説明図である。 実施の形態1による保護必要なプログラムと保護不要なプログラムから参照されるライブラリの認証を示す説明図である。 実施の形態1による1つのプログラムから利用される複数のライブラリの保護を示す説明図である。 実施の形態1による1つのプログラムから利用される複数のライブラリの保護を示す説明図である。 実施の形態1によるプログラム起動時の処理を示すフローチャートである。 実施の形態1によるライブラリロードの処理を示すフローチャートである。 実施の形態1によるオブジェクトアドレス取得処理の動作を示すフローチャートである。 実施の形態1によるオブジェクトアドレス取得処理の動作を示すフローチャートである。 実施の形態1による認証処理の動作を示すフローチャートである。 実施の形態1によるライブラリ保護装置とライブラリ作成装置の構成およびデータの流れを示す図である。 実施の形態1によるライブラリ保護装置の一部において、オブジェクト単位のデータの流れと構成詳細を示す図である。 実施の形態1によるプログラム管理システムの、プログラム起動時動的リンクにかかわる装置の構成およびデータの流れを示す図である。 実施の形態1によるプログラム管理システムの、プログラム起動時動的リンクにかかわる装置の一部において、オブジェクト単位のデータの流れと構成詳細を示す図である。 実施の形態1によるプログラム管理システムの、ライブラリロードにかかわる装置の構成およびデータの流れを示す図である。 実施の形態1によるプログラム管理システムの、オブジェクトアドレス取得にかかわる装置の構成およびデータの流れを示す図である。 実施の形態2によるライブラリの保護を示す説明図である。 実施の形態2によるライブラリの認証を示す説明図である。 実施の形態2の統合ハッシュアレイおよび電子署名作成処理を示すフローチャートである。 実施の形態2の統合ハッシュアレイの認証処理を示すフローチャートである。 実施の形態2のライブラリの認証処理を示すフローチャートである。 実施の形態2のプログラム管理システムのプログラム起動時の処理を示すフローチャートである。 実施の形態2のオブジェクトアドレスのフィックスアップ時の認証処理を示すフローチャートである。 実施の形態2によるライブラリ保護装置とライブラリ作成装置の構成およびデータの流れを示す図である。 実施の形態2によるプログラム管理システムの、プログラム起動時の動的リンクにかかわる装置の構成およびデータの流れを示す図である。 実施の形態2によるプログラム管理システムの、プログラム起動時の動的リンクにかかわる装置の構成およびデータの流れを示す図である。 実施の形態2によるプログラム管理システムの、ライブラリロードにかかわる装置の構成およびデータの流れを示す図である。 実施の形態2によるプログラム管理システムの、オブジェクトアドレス取得にかかわる装置の構成およびデータの流れを示す図である。 従来のライブラリの保護を示す説明図である。 従来のライブラリの認証を示す説明図である。
 本発明の実施の形態について説明する前に、動的リンクライブラリの詳細について説明する。
 プログラムを構成する手続きとデータは、最初は人間にとって読み書きし易いソースコードの形式で作成され、次いで機械にとって読み書き実行しやすい機械語の形式に翻訳され、最終的に一連の動作が可能になるようにまとめられる。この機械語形式の手続きとデータのことをオブジェクトと呼び、翻訳過程をコンパイルと呼び、まとめ上げる過程をリンクと呼ぶ。1つのプログラムに構成されるソースコードは必ずしも1つのファイルに記述されるわけではなく、手続きとデータの相互関連の深浅を考慮して複数のファイル(各々を特に区別する場合にソースコードファイルと呼ぶ)に分割されて管理される。通常1つのソースコードファイル内の手続きとデータはコンパイル後にも1つのファイルに格納され、これをオブジェクトファイルと呼ぶ。
 1つのプログラムを構成するために必要なオブジェクトの入ったオブジェクトファイルは、プログラム作成時点でリンクされて1つのプログラムファイルにまとめ、この時オブジェクト間の相互参照を解決して一連の動作が可能となるように作成することができる。
 プログラムを構成する手続きとデータは、必ずしも唯一のプログラムの構成要素に限定されず、異なる複数のプログラムから共通に用いられる場合も多い。そこで利用の共通性や、ソースコード分割時とは異なる程度の相互関連の深浅などを考慮して、オブジェクトファイルは複数集められ、1つのファイルに格納される。これをライブラリと呼び、特に1つのファイルに格納されている点を強調してライブラリファイルと呼ぶこともある。相互関連の深浅を優先してライブラリファイルが作成された場合には、複数のプログラムから共通利用されるオブジェクトだけになるとは限らず、時には一部のオブジェクトは一部プログラムのみからしか利用されないケースも発生する。あるいは製品間での共通部品として作成された動的リンクライブラリの場合には、個々の導入先製品内のプログラムからは、全く利用されないオブジェクトを含むこともある。例えば、C言語の標準関数は多数のプログラムから利用されるので、ライブラリとしてまとめられることが多いが、個々のプログラムはC言語の標準関数全てを必要とせず、個々のプログラムの目的にあった一部の標準関数のみ用いる場合も多い。
 ライブラリの種類としては、静的リンクライブラリと動的リンクライブラリがある。静的リンクライブラリはプログラムで利用するオブジェクトを、プログラム作成時にプログラムと同一ファイルにまとめてオブジェクト間相互参照を解決するために、関連性の深いオブジェクトをまとめたものである。オブジェクト間の相互参照は、プログラム作成時に全て解決される。
 動的リンクライブラリはプログラムで利用するオブジェクトの一部を、プログラムファイルとは別のファイルにまとめておき、プログラム起動時あるいは実行中に相互参照を解決するように構成したものである。ライブラリの特性である「複数プログラムからの共通利用」側面を作成後のプログラム管理にまで広げ、保守性を向上させることができる。例えば機能改善等に伴うオブジェクトの置換に際して該当オブジェクトを内包する複数プログラムファイルを置換する代わりに該当オブジェクトを内包する1つの共通の動的リンクライブラリを置換することで済むようになる。また共通化により記憶領域の消費を抑えることもできる。但しプログラム起動時または実行中の相互参照解決に要する処理時間をなるべく短縮するために、動的リンクライブラリ内のオブジェクト同士の相互参照関係は、ライブラリファイル作成時に予め解決しておくことがある。このため、オブジェクトファイルから動的リンクライブラリを作成する過程も、リンクと呼ばれている。
 動的リンクライブラリの利用方法は大別して2つある。1つはプログラム起動時にプログラムファイル内容と一緒にまとめ上げられて実行時イメージを構築し、プログラムファイル内オブジェクトと動的リンクライブラリファイル内オブジェクト間の相互参照を解決するものである。これはプログラムファイルの中に直接参照しているライブラリの識別子が予め格納されていて、プログラム起動時にOSあるいは標準的ライブラリによって動的リンク処理が行われるため、「暗黙の動的リンク」または「起動時の動的リンク」と呼ぶ。なお動的リンクライブラリから直接参照している他のライブラリについても、参照側ライブラリファイルに被参照側ライブラリの識別子を格納しておき、異なる動的リンクライブラリファイル内オブジェクト間の相互参照も同様に動的リンク処理ができるようになっている。
 もう一つは上記の実行時イメージ構築と相互参照解決を、プログラムからそれぞれ明示的に実施するものである。これはOSや標準的ライブラリに備わった、ライブラリのロード機能をプログラムから呼び出すことと、ライブラリ内オブジェクトのアドレス取得機能をプログラムから呼び出すことで動的リンクに関わる処理が行われるため、「明示的な動的リンク」または「実行中の動的リンク」と呼ぶ。
 動的リンクライブラリは作成の時点では、アドレス空間内のどこに配置されるかは確定していない。そのためオブジェクトのアドレスも作成の時点では確定しておらず、実行時イメージ構築の際に読出したライブラリ内オブジェクトをアドレス空間内に配置して初めて確定する。その確定したアドレスを他のオブジェクトから参照できる様に一覧表や相互参照用の表に登録する処理のことを、フィックスアップと呼ぶ。上記アドレス取得機能は、呼び出された際にフィックスアップを実施することもあれば、事前に実施されたフィックスアップで登録されたアドレスを、ただ返すだけのこともある。
 Windows(登録商標、以下記載を省略する)に備わった機能では、暗黙の動的リンクも明示的な動的リンクも共にOSによって提供されている。ライブラリロード機能を呼び出すAPIはLoadLibrary() / LoadLibraryEx()と言い、ライブラリのパス名(もしくはパス名にマッピング可能な名前)を引数にとりハンドルを返す。アドレス取得機能を呼び出すAPIはGetProcAddress()で、ライブラリのハンドルとオブジェクト名称を引数にとり、フィックスアップされたアドレスを返す。Windowsでは、動的リンクライブラリをDLLと略して呼ぶことも多い。
 Linux(登録商標)で採用されている機能では、暗黙の動的リンクも明示的な動的リンクも共に標準的なライブラリ(プログラムファイルに静的リンクされているスタートアップコードと、動的リンクされる標準的ライブラリ)によって提供されている。ライブラリロード機能を呼び出すAPIはdlopen()と言い、ライブラリのパス名(もしくはパス名にマッピング可能な名前)を引数にとりハンドルを返す。アドレス取得機能を呼び出すAPIはdladdr()で、ライブラリのハンドルとオブジェクト名称を引数にとり、フィックスアップされたアドレスを返す。Unix(登録商標)では、動的リンクライブラリのことをシェアードオブジェクトと呼ぶ。
 以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態1.
 図1は、この発明の実施の形態1による動的リンクライブラリの保護を示す説明図である。
 図1は、動的リンクライブラリ(以下、ライブラリと称する)内の全オブジェクトが呼び出しプログラムから直接参照される場合の、ライブラリの保護について、データ間の処理関係を示している。
 ここでは、プログラム1がライブラリ10内の全オブジェクト11~14を参照して動作する場合を例としてとりあげる。この場合にはライブラリ10を保護するために、オブジェクト11~14を保護対象として指定する。オブジェクト11の保護時点でのハッシュ値211を算出し、算出したハッシュ値211を、位置311およびサイズ411と共に三つ組みにする。同様に残りのオブジェクト12~14に対してもハッシュ値、位置およびサイズの三つ組みを作成し、これらの三つ組みを集めてアレイ(以下、位置サイズ付ハッシュアレイ100と称する)を作成する。
 作成された位置サイズ付ハッシュアレイ100に対して、製造者のみが保有する秘密鍵700を用いて電子署名600を作成する。なお署名作成手続きとしては、例えば非特許文献1に記載されているRSASSA-PSS-SIGNおよびRSASSA-PKCS1-v1_5-SIGNの様に、ハッシュ関数を前段階として持つ署名作成手続きを用いることで、保護対象オブジェクト数によって位置サイズ付ハッシュアレイのサイズが異なることにも対応可能とする。
 図2は、この発明の実施の形態1によるライブラリの認証を示す説明図である。
 図2は、ライブラリ内の全オブジェクトが呼び出しプログラムから直接参照される場合の、ライブラリ認証について、データ間の処理関係を示している。
 プログラム1、ライブラリ10は上記図1で参照されたものと同一であり、位置サイズ付ハッシュアレイ100および電子署名600は、上記図1で作成されたものである。この場合にライブラリ10を認証するためには、オブジェクト11,12,13,14の全ての改竄有無を検査する必要がある。
 まず、製造者のみが保有する秘密鍵700に対応する公開鍵701を用いて、位置サイズ付ハッシュアレイ100が改竄されていないか電子署名600に照らし合わせて検証する。なお署名検証手続きとしては、例えば非特許文献1に記載されているRSASSA-PSS-VERIFYおよびRSASSA-PKCS1-v1_5-VERIFYの様に、ハッシュ関数を前段階として持つ署名検証手続きを用いることで、保護対象オブジェクト数によって位置サイズ付ハッシュアレイのサイズが異なることにも対応可能とする。
 次に、改竄されていないと確認された位置311~314とサイズ411~414を用いて、オブジェクト11~14を特定する。次に、各オブジェクト11~14のハッシュ値511~514を計算する。
 位置サイズ付ハッシュアレイ100に格納されているハッシュ値211~214は改竄されていないと確認されているため、保護時に計算したハッシュ値211~214と認証時に計算したハッシュ値511~514をそれぞれ比較検証することにより、オブジェクト11~14への改竄がないかを確認する。
 オブジェクト11に改竄があった場合を想定すると、認証時にオブジェクト11から計算したハッシュ値511はハッシュ値211と異なる値となるため、当該ハッシュ値211との比較で上記改竄が検出される。また、オブジェクト11の改竄を隠すために、改竄後のオブジェクトから計算したハッシュ値で位置サイズ付ハッシュアレイ100のハッシュ値211を置き換えられたとしても、認証時に位置サイズ付ハッシュアレイ100が電子署名600に適合しないため、改竄が検出される。また、オブジェクト11の改竄を隠すために、ハッシュ値211と位置311とサイズ411からなる三つ組みをハッシュアレイ100から削除したとしても、認証時に位置サイズ付ハッシュアレイ100が電子署名600に適合しないため、改竄が検出される。
 さらに、オブジェクト11の改竄および位置サイズ付ハッシュアレイ100の改竄を隠すために、改竄後の位置サイズ付ハッシュアレイから作成した電子署名で電子署名600を置き換えられたとしても、電子署名600作成時に用いた秘密鍵700は製造者しか保有していないため、改竄者は異なる秘密鍵を用いて電子署名を作成せざるをえず、製造者の秘密鍵700に対応した公開鍵701を用いた検証で不適合が検出される。これらの認証処理は、オブジェクト12,13,14についても同様に行われる。
 図3は、ライブラリの内の一部のオブジェクトが呼び出しプログラムから直接参照され、他の一部のオブジェクトが間接参照され、更に他の一部のオブジェクトが全く参照されない場合の、ライブラリの保護についてのデータ間の処理関係を示している。
 プログラム2はライブラリ20内のオブジェクト21とオブジェクト22を直接参照する。オブジェクト21は他のオブジェクトを参照せず、オブジェクト22はオブジェクト24を参照する。オブジェクト23はプログラム2からは、直接的にも間接的にも参照されない。この場合にはライブラリ20を保護するために、オブジェクト21,22,24を保護対象として指定する。オブジェクト21の保護時点でのハッシュ値221を計算し、計算したハッシュ値221を位置321およびサイズ421と共に三つ組みにする。同様にオブジェクト22,24に対してもハッシュ値、位置およびサイズの三つ組みを作成し、これらの三つ組みを集めて位置サイズ付ハッシュアレイ101を作成する。この位置サイズ付ハッシュアレイ101に対して、製造者のみが保有する秘密鍵700を用いて電子署名601を作成する。
 なおこの例では、間接的に参照されるオブジェクトとプログラムの間の参照関係が一回間接である場合を挙げているが、複数回間接的に参照されているオブジェクトがあれば、そのオブジェクトも保護対象に含める。
 図4はライブラリの内の一部のオブジェクトが呼び出しプログラムから直接参照され、他の一部のオブジェクトが間接参照され、更に他の一部のオブジェクトが全く参照されない場合の、ライブラリの認証についてのデータ間の処理関係を示している。
 プログラム2、ライブラリ20は上記図3で参照されたものと同一であり、位置サイズ付ハッシュアレイ101、電子署名601は、上記図3で作成されたものである。この場合にライブラリ20を認証するためには、オブジェクト11,12,14の改竄有無を検査することが必要である。まず、製造者のみが保有する秘密鍵700に対応する公開鍵701を用いて、位置サイズ付ハッシュアレイ101が改竄されていないか電子署名601に照らし合わせて検証する。
 次に、改竄されていないと確認された位置321,322,324とサイズ421,422,424を用いて、オブジェクト21,22,24を特定する。次に、各オブジェクトのハッシュ値521,522,524を計算する。位置サイズ付ハッシュアレイ101に格納されていたハッシュ値221,222,224は改竄されていないと確認がされているため保護時に計算したハッシュ値221,222,224と認証時に計算したハッシュ値521,522,524をそれぞれ比較検証することにより、オブジェクト21,22,24への改竄がないかを確認する。
 オブジェクト21,22,24に改竄があった場合、認証時にオブジェクト21,22,24から計算したハッシュ値521,522,524はハッシュ値221,222,224と異なる値となるため、改竄が検出される。また、上記改竄を隠すために対応するハッシュ値を置換するなどの、位置サイズ付ハッシュアレイ101への改竄があった場合、位置サイズ付ハッシュアレイ101が電子署名601と適合しないため、改竄が検出される。また上記オブジェクトへの改竄を隠すために対応する三つ組みを位置サイズ付ハッシュアレイから削除したとしても、認証時に位置サイズ付ハッシュアレイ101が電子書名601に適合しなくなるため、改竄が検出される。さらに改竄を隠すために電子署名を置換するなどの、電子署名601への改竄があった場合には、秘密鍵700に対応した公開鍵701を用いた検証で不適合が検出される。
 ここでオブジェクト11と21、12と22、13と23、14と24のサイズがそれぞれ同一であると前提をおいて図2と図4を比較すると、図4では参照されていないオブジェクト23に対するハッシュ関数適用分だけ認証に必要な計算量が削減されており、これによりプログラムの動作遅延を短縮することができる。
 動的リンクライブラリを保護するための、位置サイズ付ハッシュアレイおよび電子署名作成方法の手順を、図5に従って説明する。まず保護対象オブジェクトの位置・サイズを特定し(ステップS101)、該当のオブジェクトについてハッシュ値を計算し(ステップS102)、該当オブジェクトのハッシュ値・位置・サイズを三つ組みにする(ステップS103)。全ての保護対象オブジェクトに対して実施したかを判断し、未実施があればステップS101に戻って繰り返す(ステップS104)。全てに対して実施した後、全保護対象オブジェクトの三つ組みを集めて位置サイズ付ハッシュアレイを作成する(ステップS105)。次に位置サイズ付ハッシュアレイの電子署名を作成し(ステップS106)、プログラムとライブラリの組に対応付けて位置サイズ付ハッシュアレイと電子署名を格納する(ステップS107)。以上でハッシュアレイおよび電子署名作成の手順は終了である。
 動的リンクライブラリを認証する方法の手順を、図6に従って説明する。まずプログラムとライブラリの組に対応する位置サイズ付ハッシュアレイと電子署名を読み出す(ステップS201)。もし何れか一方または両方について読出し成功しなかったならば分岐して(ステップS202)、認証不合格と判定し(ステップS211)、認証処理を終了する。読出し成功していれば、位置サイズ付ハッシュアレイと、位置サイズ付ハッシュアレイの電子署名とを、信頼できる公開鍵を用いて検証する(ステップS203)。もし電子署名に適合していなければ分岐して(ステップS204)、認証不合格と判定し(ステップST211)、認証処理を終了する。
 署名に適合していた場合は、位置サイズ付ハッシュアレイの要素たる三つ組みから、対応する保護対象オブジェクトの位置・サイズを特定し(ステップS205)、保護対象オブジェクトのハッシュ値を計算し(ステップS206)、ステップS206で計算したハッシュ値を、位置サイズ付ハッシュアレイの該当三つ組み内のハッシュ値と比較する(ステップS207)。ハッシュ値同士が適合しないならば分岐し(ステップS208)、認証不合格と判定し(ステップST211)、認証処理を終了する。ハッシュ値同士が適合していれば、位置サイズ付ハッシュアレイの全ての要素について実施したかを判断し、未実施があればステップS205に戻って繰り返す(ステップS209)。ハッシュ値同士に不適合が見つからないまま全ての要素に対して実施し終えたならばライブラリ認証結果を合格とし(ステップST210)、認証方法の手順を終了する。
 次に、異なるパターンのライブラリの保護および認証について説明する。図7および図8は、実施の形態1による複数のプログラムから共有されるライブラリの保護および認証を示す説明図である。
 まず、図7は、複数のプログラムから共有されるライブラリであって、各プログラムから参照されるライブラリ内オブジェクトが異なる組合せである場合のライブラリの保護についてのデータ間の処理関係を示す説明図である。
 プログラム3がライブラリ30内のオブジェクト31,32を直接参照し、プログラム4がライブラリ30内のオブジェクト32,34を参照して動作する例をとりあげる。この場合にライブラリ30を保護するためには、オブジェクト31,32,34を保護しなければならないが、プログラム3の動作に関してオブジェクト34を保護する必要はなく、またプログラム4の動作に関してオブジェクト31を保護する必要はない。従って、「プログラム3とライブラリ30の組」に対してはオブジェクト31,32を保護対象とし、「プログラム4とライブラリ30の組」に対してはオブジェクト32,34を保護対象とすることが好適である。
 そこでオブジェクト31の保護時点でのハッシュ値231を計算し、位置331とサイズ431と共に三つ組みにする。同様にオブジェクト32に対しても三つ組みを作成し、これらの三つ組みを集めて位置サイズ付ハッシュアレイ102を作成する。次いで位置サイズ付ハッシュアレイ102に対して、製造者のみが保有する秘密鍵700を用いて電子署名602を作成する。同様にしてオブジェクト32,34から位置サイズ付ハッシュアレイ103を作成し、電子署名603を作成する。
 次に、図8は、複数のプログラムから共有されるライブラリであって、各プログラムから参照されるライブラリ内オブジェクトが異なる組合せである場合の認証についてのデータ間の処理関係を示す説明図である。
 プログラム3,4、ライブラリ30は上記図7で参照されたものと同一であり、位置サイズ付ハッシュアレイ102,103、および電子署名602,603は、上記図7で作成されたものである。この場合にライブラリ30の認証は、プログラム3で利用される場合にはオブジェクト31,32を認証する必要があり、プログラム4で利用される場合にはオブジェクト32,34を認証する必要がある。
 オブジェクト31,32を認証する場合は、まず、製造者のみが保有する秘密鍵700に対応する公開鍵701を用いて、位置サイズ付ハッシュアレイ102が改竄されていないかどうかを電子署名602に照らし合わせて検証する。次に、改竄されていないと確認のされた位置331,332とサイズ431,432を用いて、保護対象オブジェクト31,32を特定する。次に、各オブジェクトのハッシュ値531,532を計算する。位置サイズ付ハッシュアレイ102に格納されていたハッシュ値231,232は改竄されていないと確認がとれているので、保護時に計算したハッシュ値231,232と認証時に計算したハッシュ値531,532をそれぞれ比較検証することにより、オブジェクト31,32への改竄がなかったかどうかを確認することができる。
 次に、オブジェクト32,34を認証する場合は、まず、製造者のみが保有する秘密鍵700に対応する公開鍵701を用いて、位置サイズ付ハッシュアレイ103が改竄されていないかどうかを電子署名603に照らし合わせて検証する。次に、改竄されていないと確認のとれた位置332,334とサイズ432,434を用いて、保護対象オブジェクト32,34を特定する。次に、各オブジェクトのハッシュ値532,534を計算する。位置サイズ付ハッシュアレイ103に格納されていたハッシュ値232,234は改竄されていないと確認がとれているので、保護時に計算したハッシュ値232,234と認証時に計算したハッシュ値532,534をそれぞれ比較検証することにより、オブジェクト32,34への改竄がなかったかどうかを確認することができる。
 なお、図7で示したライブラリの保護における、位置サイズ付ハッシュアレイ102と電子署名602を作成する手順と、位置サイズ付ハッシュアレイ103と電子署名603を作成する手順は、図5で示したフローチャートと同一の手順で作成される。
 また、図8で示したライブラリの認証における、位置サイズ付ハッシュアレイ102と電子署名602によりライブラリ30を認証する手順と、位置サイズ付ハッシュアレイ103と電子署名603によりライブラリ30を認証する手順は、図6で示したフローチャートと同一の手順で判定される。
 次に、図9および図10は、実施の形態1による複数のプログラムから共有されるライブラリの保護および認証を示す他の説明図である。
 まず図9は、保護が必要のプログラムおよび保護不要なプログラムから参照される場合のライブラリの保護についてのデータ間の処理関係を示す説明図である。
 プログラム3は保護が必要なプログラムであって、ライブラリ30内のオブジェクト31,32を直接参照し、プログラム5は保護不要なプログラムであって、ライブラリ30内のオブジェクト32,34を参照して動作する。この場合にライブラリを保護するためには、オブジェクト31,32を保護対象とすることが必要であり、プログラム5の動作に関してオブジェクト31~34を保護しておく必要はない。従って、「プログラム3とライブラリ30の組」に対してはオブジェクト31,32を保護対象とし、「プログラム5とライブラリ30の組」に対してはライブラリ30内のいずれのオブジェクトも保護対象としないことが好適である。そこで「プログラム3とライブラリ30の組」に対して位置サイズ付ハッシュアレイ102と電子署名602を作成するが、その処理内容は、図7で示した処理内容と同一である。また、「プログラム5とライブラリ30の組」に対しては、位置サイズ付ハッシュアレイおよび電子署名は作成しない。
 次に、図10は、保護必要なプログラムおよび保護不要なプログラムから参照される場合のライブラリの認証についてのデータ間の処理関係を示す説明図である。
 プログラム3,5、ライブラリ30は上記図9で参照されたものと同一であり、位置サイズ付ハッシュアレイ102、および電子署名602は上記図9で作成されたものである。この場合にライブラリ30を認証するためには、プログラム3で利用される場合にオブジェクト31,32の改竄有無の検査が必要であるが、プログラム5で利用される場合にはオブジェクト31~34を検査する必要はない。オブジェクト31,32を検査する場合の処理内容は、図8における「プログラム3とライブラリ30の組」に対する処理と同一である。なお、プログラム5が利用される場合には、プログラム5の起動時または実行中に保護不要と判断した時点で、認証に関する処理を取りやめる。
 図8と図10を比較すると、プログラム起動時または実行中に行われる、電子署名による位置サイズ付ハッシュアレイの検証処理およびハッシュ値の比較検証処理の分だけ計算量が削減されており、これによりプログラムの動作遅延を短縮することができる。
 なお、認証処理を不正にスポイルする目的で、位置サイズ付ハッシュアレイおよび電子署名を不正に除去してしまう場合を想定すると、ライブラリを呼び出すプログラムには保護が必要であるとの印付けを別途行っておくことにより、保護が必要なプログラムに関するライブラリ認証処理を開始させることができる。これにより、位置サイズ付ハッシュアレイおよび電子署名が不正に除去されている場合には、位置サイズ付ハッシュアレイと電子署名の読出しが失敗するため、図6で示したフローチャートのステップS202で認証失敗に分岐する。
 さらに、異なるパターンのライブラリの保護および認証について説明する。
 図11は、実施の形態1による1つのプログラムから利用される複数のライブラリの保護についてのデータの処理関係を示す説明図である。
 プログラム6がライブラリ40内のオブジェクト41,42を直接参照し、更にライブラリ50内のオブジェクト51,53を直接参照する例をとりあげる。この場合にライブラリ40,50を保護するためには、オブジェクト41,42,51,53を保護対象とすることが必要である。オブジェクト41の保護時点でのハッシュ値241を計算し、位置341およびサイズ441と共に三つ組みにする。同様にオブジェクト42に対しても三つ組みを作成し、2つの三つ組みを集めて位置サイズ付ハッシュアレイ104を作成する。
 作成した位置サイズ付ハッシュアレイ104に対して、製造者のみが保有する秘密鍵700を用いて電子署名604を作成する。同様にオブジェクト51,53に基づいて、位置サイズ付ハッシュアレイ105および電子署名605を作成する。即ち、ライブラリ40に対する保護処理は、単一のライブラリが単一のプログラムから利用される場合と変わりがなく、ライブラリ50についても同様の処理が行われる。
 また、1つのプログラムから利用される複数のライブラリの認証は、各ライブラリの認証をそれぞれ実施する場合と同一の処理により実施される。
 図12は、実施の形態1による1つのプログラムから利用される複数のライブラリの保護を示す説明図であり、さらにライブラリの少なくとも1つはプログラムから直接参照されるオブジェクトがなく、他のライブラリ内のオブジェクトからのみ参照されている場合を示している。
 プログラム7はライブラリ60内のオブジェクト61,62を直接参照し、更にオブジェクト62はライブラリ70内のオブジェクト71,73を直接参照する。この場合にライブラリ60,70を保護するためには、オブジェクト61,62,71,73を保護対象とすることが必要である。オブジェクト61の保護時点でのハッシュ値261を計算し、位置361とサイズ461と共に三つ組みにする。同様にオブジェクト62に対しても三つ組みを作成し、2つの三つ組みを集めて位置サイズ付ハッシュアレイ106を作成する。
 次いで位置サイズ付ハッシュアレイ106に対して、製造者のみが保有する秘密鍵700を用いて電子署名606を作成する。同様にオブジェクト71,73に基づいて、位置サイズ付ハッシュアレイ107と電子署名607を作成する。即ち、ライブラリ60に対する保護処理は、単一のライブラリが単一のプログラムから利用される場合と変わりがなく、ライブラリ70についても同様である。
 また、ライブラリの少なくとも1つはプログラムから直接参照されるオブジェクトがなく、他のライブラリ内のオブジェクトからのみ参照されている場合の認証は、各ライブラリの認証をそれぞれ実施する場合と同一の処理により実施される。
 上述した図9、図11および図12で示したライブラリの保護における、位置サイズ付ハッシュアレイ102,104~207、電子署名602,604~607を作成する手順は、それぞれ図5のフローチャートと同一の手順で作成される。ただし、図9で示した例のように保護不要なプログラム5では、位置サイズ付ハッシュアレイおよび電子署名の作成が不要であることから、以下に示すプログラム管理システムに処理の一端を担わせることになる。
 プログラムを格納する記憶装置を更に備え、プログラムに保護の要・不要を印づけるフラグを設け、該当フラグを設定する装置を更に備え、プログラム自体の改竄を防ぐための電子署名の作成装置を更に備え、その電子署名を格納する記憶装置を更に備えるプログラム管理システムを構築する。
 プログラムが保護必要である場合とは、保護必要なオブジェクトを読み書き実行しうる場合であるから、プログラムを保護必要と印づける条件は、プログラム自体が保護必要なオブジェクトを含んでいるか、あるいはプログラムから直接的にまたは間接的に参照するオブジェクトの中に保護必要なオブジェクトを含んでいること、である。
 上述した図8、図10の認証、および図11「複数の動的リンクライブラリを利用するプログラムの場合」に対応する認証(図示せず)、図12「複数の動的リンクライブラリを利用するプログラムの場合であって、ライブラリの少なくとも1つはプログラムから直接参照されるオブジェクトがなく、他のライブラリ内のオブジェクトからのみ参照されている場合」に対応する認証(図示せず)に現れる位置サイズ付ハッシュアレイ102,104~107、電子署名602,604~607を用いてライブラリ30,40,50,60,70を認証する手順は、それぞれ図6で説明した手順と同一でよい。しかしながら、図10の様に保護不要なプログラム5では前述の認証処理自体が不要であることを含めて手順化すると、次のようになる。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム起動時に暗黙に動的リンクされる場合の手順について、図13を用いて説明する。
 プログラム起動処理の内動的リンクを除く処理、例えば資源割当などを実施(ステップS301)した後、該当プログラムが保護必要であるか否か印を参照して判断する(ステップS302)。必要であれば、プログラム認証を行い(ステップS303)、認証合格しなければ分岐して(ステップS304)、認証エラーとしてプログラム実行を拒絶する(ステップS311)。プログラム認証合格であれば、プログラムが暗黙に動的リンクするライブラリを、直接利用するものと間接利用するものを共に含めて列挙する(ステップS305)。
 列挙されるライブラリが1個未満であれば分岐し(ステップS306)、以後の処理をスキップしてプログラム起動を完了とする。1個以上であればライブラリ認証を実施し(ステップS307)、認証合格しなければ分岐して(ステップS308)、認証エラーとしてプログラム実行を拒絶する(ステップS311)。もしライブラリ認証合格であれば認証無しの動的リンク手順(ステップS309)を実施する。列挙された全てのライブラリについて実施したかどうかを判断し、未実施があればステップS307に戻って繰り返す(ステップS310)。全てのライブラリについて実施し終えたならばプログラム起動処理を終了する。
 他方、ステップS302において該当プログラムが保護必要でなければ、プログラムが暗黙に動的リンクするライブラリを、直接利用するものと間接利用するものを共に含めて列挙する(ステップS312)。列挙されるライブラリが1個未満であれば分岐し(ステップS313)、以後の処理をスキップしてプログラム起動処理を終了する。1個以上であれば認証無しの動的リンク手順(ステップS314)を実施する。列挙された全てのライブラリについて実施したかどうかを判断し、未実施があればステップS314に戻って繰り返す(ステップS315)。全てのライブラリについて実施し終えたならばプログラム起動処理を終了する。
 プログラム認証は少なくともプログラムファイルの改竄有無の検証を含んでいなくてはならないが、その具体的な方法は上記図2で説明したライブラリ内オブジェクトに対する認証方法を流用してもよく、従来技術1または2の保護方法を採用してもよく、またこれらとは全く異なりプログラムファイル全体から電子署名を作成するものであってもよい。但しいずれであっても、それぞれに対応した保護方法を事前に適用しておかなければならない。
 ステップS302で参照する保護の要・不要を印づけるフラグは、改竄不能なものであるかまたは改竄を検出できるものでなくてはならない。その具体的な方法は例えば、保護必要なプログラムファイルの一覧を設けて電子署名により保護し、かつ任意のプログラム起動の度に一覧につき合わせて該非で分類できるようにするものであってもよい。また上記プログラム認証方法の一部として、プログラム認証の要否を示すフラグを設けたものを採用していた場合には、そのフラグを保護の要・不要を印づけるフラグとして流用してもよい。
 次に、動的リンクライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム実行中に明示的にロードされる場合の手順について、図14を用いて説明する。
 該当プログラムが保護必要であるか否か印を参照して判断する(ステップS401)。必要であれば、ライブラリ認証を行い(ステップS402)、認証合格しなければ分岐して(ステップS403)、認証エラーとしてプログラム実行を拒絶する(ステップS405)。ライブラリ認証合格すれば認証無しのロード手順(ステップS404)を実施し、ライブラリロード処理を修了する。他方ステップS401において該当プログラムが保護必要でなければ、認証無しのロード手順(ステップS404)を実施し、ライブラリロード処理を終了する。
 次に、図15から図17を参照しながら、ライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム実行中に明示的にオブジェクトアドレスが取得される場合のオブジェクト認証処理について説明する。
 図15および図16はオブジェクトアドレス取得処理を示すフローチャートであり、図17はオブジェクト認証処理を示すフローチャートである。図17はオブジェクト認証手順を抜き出したものであり、図16はプログラムが保護対象でない場合を抜き出したものであるため、特に断り書きをつけない限り図15を用いて説明する。
 要求されているオブジェクトのアドレスがフィックスアップ済みか判断して分岐し(ステップS501)、フィックスアップ済みであれば記録されていたアドレスを出力して(ステップS521)、オブジェクトアドレス取得処理を終了する。
 フィックスアップが未だであれば、動的シンボルテーブル内をオブジェクト名で検索して位置情報とサイズ情報を取得し(ステップS502)、更に位置情報をアドレスへ変換する(ステップ503)。ステップS503に続いて、プログラムが保護必要であるか否か印を参照して判断する(ステップS504)。保護必要であればフィックスアップ時オブジェクト認証の手順(ステップS505)を実施し、認証合格しなければ分岐して(ステップS506)、認証エラーとして出力し(ステップS522)、オブジェクトアドレス取得処理を終了する。認証合格すれば該当オブジェクトが他オブジェクトを参照するか判断し(ステップS507)、参照しないなら該当オブジェクトをフィックスアップ済みと印つけてアドレスを記録し(ステップS520)、記録したアドレスを出力して(ステップS521)、オブジェクトアドレス取得処理を終了する。
 ステップS507において他オブジェクトを参照していれば、その属するライブラリがロード済みか否か判断し(ステップS508)、ロード済みでないならばライブラリ認証の手順(ステップS509)を実施する。ライブラリ認証に合格しないならば分岐して(ステップS510)、認証エラーとして出力し(ステップS522)、オブジェクトアドレス取得処理を終了する。ライブラリ認証に合格すれば認証無しロード手順(ステップS511)を実施し、参照されるオブジェクトについてアドレス取得する(ステップS512)。なおステップS508においてライブラリがロード済みであった場合にはステップS509~S511をスキップしてステップS512を実施する。
 ステップS512で実施されるオブジェクトアドレス取得手順は、図15で説明している手順全体を再帰的に呼び出すものである。もし呼び出した結果認証合格でないならば分岐して(ステップS513)、認証エラーとして出力し(ステップS522)、オブジェクトアドレス取得処理を終了する。参照されるオブジェクト全てについて実施したかを判断し、未実施があればステップS512に戻って繰り返す(ステップS514)。参照される全てのオブジェクトについて実施し終えたならば、該当オブジェクトをフィックスアップ済みと印つけてアドレスを記録し(ステップS520)、記録したアドレスを出力して(ステップS521)、オブジェクトアドレス取得処理を終了する。
 他方プログラムが保護不要であれば分岐し(ステップS504)、該当オブジェクトが他オブジェクトを参照するか判断し(図16のステップS515)、参照しないなら該当オブジェクトをフィックスアップ済みと印つけてアドレスを記録し(ステップS520)、記録したアドレスを出力して(ステップS521)、オブジェクトアドレス取得処理を終了する。図16のステップS515において他オブジェクトを参照していれば、その属するライブラリがロード済みか否か判断し(図16のステップS516)、ロード済みでないならば認証無しロード手順(図16のステップS517)を実施し、参照されるオブジェクトについてアドレス取得する(図16のステップS518)。
 なおライブラリがロード済みであった場合にはステップS517をスキップしてステップS518を実施する。ステップS518で実施されるオブジェクトアドレス取得手順は、図15で説明している手順全体を再帰的に呼び出すものである。呼び出した結果が認証不合格になることはない。参照されるオブジェクト全てについて実施したかを判断し、未実施があればステップS518に戻って繰り返す(図16のステップS519)。参照される全てのオブジェクトについて実施し終えたならば、該当オブジェクトをフィックスアップ済みと印つけてアドレスを記録し(ステップS520)、記録したアドレスを出力して(ステップS521)、オブジェクトアドレス取得処理を終了する。
 なおフィックスアップ時オブジェクト認証の手順は、図17を用いて説明する。まずオブジェクトの属するライブラリは認証済みかどうか判断し、認証済みでなければ分岐して(ステップS531)、オブジェクト認証結果を不合格として(ステップS535)、オブジェクト認証処理を終了する。ライブラリが認証済みならば、フィックスアップ過程で位置とサイズを特定した該当オブジェクトについて、位置サイズ付ハッシュアレイ内の対応する要素を検索する(ステップS532)。検索結果で対応する要素が存在しないならば分岐して(ステップS533)、オブジェクト認証結果を不合格として(ステップS535)、オブジェクト認証処理を終了する。検索結果で対応する要素が存在すれば、オブジェクト認証結果を合格として(ステップS534)、オブジェクト認証処理を終了する。
 保護の時点において、図5のステップS105において保護対象オブジェクト毎の三つ組みをそれぞれ要素として位置サイズ付ハッシュアレイを作成していた場合、上記図17のステップS532での「対応する」とは、位置とサイズの両方が一致する様に構成する。またステップS105で隣接する保護対象オブジェクトの一連の領域はまとめて1つの要素として位置サイズ付ハッシュアレイを作成することもでき、この場合には、上記図17のステップS532での「対応する」とは、該当オブジェクトの位置とサイズで表される領域が要素の三つ組み内の位置とサイズで表される領域に含まれている様に構成する。後者で複数のオブジェクトをまとめて三つ組みにしてしまっていても、ハッシュ関数適用対象となるオブジェクトのサイズの合計は変わらない。
 次に、動的リンクライブラリの保護装置とライブラリの作成装置の構成と、これらの装置間を流れるデータについて図18を参照しながら説明する。図18では、特に図3で示したライブラリ20の保護を例に説明している。
 各ソースコードファイルには広域関数21,22,23の実現が記述され、更に関数22から呼び出される静的関数24が記述されている。これらのソースコードファイルをコンパイラ110で機械語に翻訳すると、オブジェクトを格納しているオブジェクトファイルが作成される。これらを更に動的リンクライブラリ用にリンカー111でリンクし、ライブラリ20aを作成する。
 作成直後のライブラリ20aには、オブジェクトをその性質毎にまとめ上げたセクションと、全オブジェクトの位置・サイズ・名前を記したシンボルテーブルと、ライブラリの外部から参照されるオブジェクトのみ位置・サイズ・名前を記した動的シンボルテーブルが、通例含まれている。また他にも、デバッグ情報などが含まれることもあるが、本発明では使用しない。両シンボルテーブルの位置欄には、セクションの識別子とセクション内での位置が記されている。リンカー111で作成したばかりのライブラリ20aに含まれるシンボルテーブルは、ライブラリの配布時や製品への搭載時にはシンボル情報・デバッグ情報削除装置112で削除され、例えば静的関数24のオブジェクト24は、外部から直接には参照できなくなる。
 この実施の形態1の位置サイズ付ハッシュアレイ作成装置121は、保護対象オブジェクト名前のリストを受取り、ライブラリ20a内のシンボルテーブル内を名前で検索して、位置サイズ付ハッシュアレイ101に格納すべき位置・サイズを取得する。なおライブラリ認証処理が起動時動的リンクに限られる場合には、位置サイズ付ハッシュアレイ101に格納すべき位置の標記を最終的なライブラリ20のファイル内における各オブジェクトのオフセットにすることで、セクションの位置を特定する処理を省き単純化できる。位置サイズ付ハッシュアレイ作成装置121は上記位置・サイズに該当するオブジェクトのハッシュ値を計算して三つ組みを作り、これを集めて位置サイズ付ハッシュアレイ101を作成する。
 実施の形態1の電子署名作成装置710は、秘密鍵700を用いて、位置サイズ付ハッシュアレイ101の電子署名601を作成する。実施の形態1の位置サイズ付ハッシュアレイ格納装置125aは、位置サイズ付ハッシュアレイ101を、ライブラリ識別子20とプログラム識別子2の組に関連付けて格納する。また、実施の形態1の電子署名格納装置123aは、電子署名601を、ライブラリ識別子20とプログラム識別子2の組に関連付けて格納する。
 次に、位置サイズ付ハッシュアレイ作成装置121の内部構成の一例を、図19を用いて説明する。オブジェクト特定部121aは対象オブジェクト名のリストに挙げられた名前21,22,24の各々に対して、ライブラリ20a内のシンボルテーブル内を名前で検索して位置321とサイズ421の組、位置322とサイズ422の組、位置324とサイズ424の組を取得する。位置情報はオブジェクトの属するセクションの識別子とセクション内オフセットになっているので、シンボル情報やデバッグ情報などを除かれてしまったライブラリ20内の同じセクションに対しても適用することができ、これらを基にハッシュ算出部121bはライブラリ20からオブジェクト21,22,24を取得し、それぞれのハッシュ値221,222,224を算出する。三つ組み作成部121cはオブジェクト特定部121aが出力した位置情報とサイズ情報、およびハッシュ算出部が算出したハッシュ値を、対応関係に従って三つ組みにする。位置サイズ付ハッシュアレイ作成部121dはこれらの三つ組みを集めて位置サイズ付ハッシュアレイ101を作成する。
 次に、動的リンクライブラリと呼び出しプログラムを含むプログラム管理に関する装置の構成と装置間を流れるデータについて、特にプログラム起動時に暗黙に動的リンクされる場合の構成について、図20を参照しながら説明する。
 キーボードやボタンなどの入力装置150を経由して入力されたプログラム起動指示650は、起動指示解析装置151によってプログラム識別子2を抽出される。プログラム2が保護不要と印づけられている場合には細線矢印のみに従ってデータを流し、プログラム2が保護必要と記しづけられている場合には細線矢印と太線矢印の両方に従ってデータを流す。プログラム認証装置157はプログラム識別子2を契機に該当プログラムの認証を実施し、その結果であるプログラム認証結果653を出力する。プログラム読出装置153はプログラム識別子2を契機に読み出すが、その一方でプログラム認証結果653が認証合格でないならば読出しを中止する。読出しに成功したプログラム2は、ライブラリ動的リンク検出装置154に入力され、該当のライブラリ識別子を抽出する。プログラム2の場合は、ライブラリ識別子20が抽出されることになる。
 位置サイズ付ハッシュアレイ読出装置125bと電子署名読出装置123bは、プログラム識別子2とライブラリ識別子20を組にして受け取り、該当する位置サイズ付ハッシュアレイ101と電子署名601を出力する。電子署名検証装置711は位置サイズ付ハッシュアレイ101と電子署名601と、公開鍵読出装置702から信頼できる公開鍵701を受け取り、電子署名検証結果654を出力する。
 信頼できる公開鍵を供給可能な装置として、公開鍵読出装置702には製造時のみ公開鍵を書き込むことが可能で以後書換え不能な記憶装置を用いる場合を図20では示しているが、電子署名検証装置711中の検証関数(不図示)と公開鍵701を封入した耐タンパーな装置を用いて、該装置に入力として電子署名601と位置サイズ付ハッシュアレイから計算したハッシュ値(不図示)を与え、電子署名検証結果654を出力させる構成であると、更に好適である。
 ライブラリ読出装置155は、ライブラリ識別子20を受け取ってライブラリ20を出力する。ハッシュ値検証装置128は、ライブラリ20と位置サイズ付ハッシュアレイ101を受け取って、位置サイズ付ハッシュアレイ101に含まれる全要素の位置とサイズを基にライブラリ20内のオブジェクトを抽出し、そのハッシュ値を計算し、位置サイズ付ハッシュアレイ101に含まれるハッシュ値と比較検証し、そのハッシュ値検証結果656を出力する。判定装置129は電子署名検証結果654とハッシュ値検証結果656を受け取って、判断し、ライブラリ認証結果658を出力する。
 動的リンク装置156はプログラム2とライブラリ20を受け取って、通常は実行可能イメージ652を主記憶上に展開しオブジェクトアドレスのフィックスアップを実施するが、ライブラリ認証結果656が合格でないならば中止する。起動時の暗黙の動的リンクが失敗した場合、プログラム2は起動に失敗し、実行されない。
 なお位置サイズ付ハッシュアレイ101が不正に除去されて位置サイズ付ハッシュアレイ読出装置125bが読み出しに失敗する場合、後段のハッシュ値検証装置128および電子署名検証装置711を経由して判定装置129に失敗の旨通知する。あるいは特に図示しないが、読み出し失敗を直接に判定装置129に通知するように構成してもよい。判定装置129は前記失敗を通知された場合、ライブラリ認証結果として不合格を出力する。
 電子署名601が不正に除去されて電子署名読出し装置123bが読み出しに失敗する場合、後段の電子署名検証装置711を経由して判定装置129に失敗の旨通知する。あるいは特に図示しないが、読み出し失敗を直接に判定装置129に通知するように構成してもよい。判定装置129は前記失敗を通知された場合、ライブラリ認証結果658として不合格を出力する。
 あるいは別の構成として、位置サイズ付ハッシュアレイ読出装置125bまたは電子署名読出装置123bが読み出しに失敗する場合、失敗の旨を直接動的リンク装置156に通知し、実行可能イメージの主記憶上への展開とオブジェクトアドレスのフィックスアップを中止させてもよい。
 次に、ハッシュ値検証装置128と判定装置129の内部構成の一例を、図21を用いて説明する。
 ハッシュ値検証装置128のオブジェクト特定部128aは、位置サイズ付ハッシュアレイの各要素である三つ組みから位置情報とサイズ情報をハッシュ算出部128bに与え、またハッシュ値を比較検証部128cに与える。ハッシュ値検証装置128のハッシュ算出部128bは与えられた位置情報とサイズ情報を基にライブラリ20からオブジェクト21,22,24を取得し、それぞれのハッシュ値521,522,524を算出する。ハッシュ値検証装置128の比較検証部128cはハッシュ値算出部128bに算出されたハッシュ値521,522,524とオブジェクト特定部128aから与えられたハッシュ値221,222,224をそれぞれ比較し、比較結果を出力する。各オブジェクトに関する比較結果を纏めたものがハッシュ値検証結果656である。
 判定装置129の比較結果集積部129aは、ハッシュ値検証結果656内の各比較結果を集め、全て一致ならば情報「一致」を出力し、1つでも不一致があれば情報「不一致」を出力する。判定装置129の認証結果出力部129bは、電子署名検証結果654が合格でかつ比較結果集積装置の出力が「一致」である場合にのみライブラリ認証結果658として「合格」を出力し、それ以外の場合はライブラリ認証結果658として「不合格」を出力する。また前記読み出し失敗の通知を受けた場合にもライブラリ認証結果658として「不合格」を出力する(図示せず)。
 なお説明の都合上ハッシュ値検証装置の各部位が逐次動作し、かつ各々の部位の動作は位置サイズ付ハッシュアレイ内の全要素に対する処理を終えてから次の部位の動作を開始させる場合を説明したが、各要素毎に各部位が逐次動作する構成であってもよい。この場合、比較検証部128cは比較結果を逐次出力するので、比較結果集積部129aは逐次受け取った比較結果に1つでも不一致があれば即座に情報「不一致」を出力し、全ての比較結果を受け取っても不一致がなければ情報「一致」を出力する。また認証結果出力部129bは、比較結果集積部129aからの出力情報「不一致」か電子署名検証結果「不合格」のいずれかを受け取った時点でライブラリ認証結果「不合格」を出力し、出力情報「一致」と電子署名検証結果「合格」が揃った時点でライブラリ認証結果「合格」を出力する。
 次に、動的リンクライブラリと呼び出しプログラムを含むプログラム管理に関する装置と装置間を流れるデータの構成について、特にプログラム実行中に明示的にロードされる場合の構成について、図22を参照しながら説明する。
 実行中のプログラムが保護不要であった場合、細線矢印のみに沿ってデータを流し、保護必要であった場合、細線矢印と太線矢印の両方に沿ってデータを流す。
 実行中のプログラム2はライブラリロード指示651を発する。ライブラリロード指示解析装置152は、ライブラリロード指示651を入力して、ライブラリ識別子20を抽出する。抽出されたライブラリ識別子20を用いて、図17で示したライブラリ識別子20以降の構成と同様に構成する。但し動的リンク装置156aはオブジェクトアドレスのフィックスアップを行わずに、通常は実行可能イメージの主記憶への展開のみを行い、ライブラリ認証結果658が合格でないならば展開を中止する。また、動的リンク装置156aに与えられるべきプログラム2と、電子署名読出装置123b及び位置サイズ付ハッシュアレイ読出装置125bに与えられるべきプログラム識別子2は、実行中のプログラム2から提供される。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理に関する装置と装置間を流れるデータの構成について、特にオブジェクトのアドレス取得を行う場合の構成について、図23を参照しながら説明する。
 実行中のプログラムが保護不要であった場合、細線矢印のみに沿ってデータを流し、保護必要であった場合、細線矢印と太線矢印の両方に沿ってデータを流す。
 実行中のプログラム2は、アドレス取得指示660を発する。アドレス取得指示解析装置160はアドレス取得指示660を入力して、オブジェクト名21とライブラリ識別子20を抽出する。読出済位置サイズ付ハッシュアレイ特定装置130はライブラリ識別子20を入力し、ライブラリのロード時に読出されていた位置サイズ付ハッシュアレイ101を出力する。他方動的シンボルテーブル内検索部161aはオブジェクト名21に該当する位置321とサイズ421を出力する。ここで位置321は、セクション識別子とセクション内位置の組で標記されている。オブジェクト検索装置131は位置321とサイズ421で位置サイズ付ハッシュアレイ101内の要素検索を行い、該当要素の有無をオブジェクト認証結果661として出力する。更にアドレスマッピング部161bは位置321をオブジェクトのアドレス321aに変換する。アドレス出力装置162は、オブジェクト認証結果661の合否に応じてアドレス321aの出力を行う。
 なお該当オブジェクトが他オブジェクトを参照している場合、ライブラリロードとアドレス取得が再帰的に実施されるが、それらに関する装置構成は図22、図23と同様であるため、説明を省略する。
 図18の電子署名格納装置123aと図20および図22の電子署名読出装置123bは、同一の記憶装置に備えられた書込み手段と読み出し手段であってもよく、あるいは同一の記憶媒体に対する別個の装置である書込み装置と読み出し装置であってもよい。図18の位置サイズ付ハッシュアレイ格納装置125aと図20および図22の位置サイズ付ハッシュアレイ読出装置125bは、同一の記憶装置に備えられた書込み手段と読み出し手段であってもよく、あるいは同一の記憶媒体に対する別個の装置である書込み装置と読み出し装置であってもよい。
 図20のプログラム読出装置153は書き込み手段と読み出し手段を供えた記憶装置の読み出し手段であってもよく、あるいは記憶媒体に対する読み出し装置であってもよい。図20および図22のライブラリ読出装置155は書込み手段と読み出し手段を備えた記憶装置の読み出し手段であってもよく、あるいは記憶媒体に対する読み出し装置であってもよい。前記記憶装置の書込み手段あるいは前記記憶媒体に対する書込み装置は図18で説明しなかったが、少なくとも製造時に必要とすることは言うまでもない。
 同一の記憶装置を採用した場合には、製造者は一旦製造を終えた後でもプログラムおよび/またはライブラリおよび/または位置サイズ付ハッシュアレイおよび/または電子署名を更新することができる。同一の記憶媒体に対する別個の装置を採用した場合には、製造者は媒体を交換することによりプログラムおよび/またはライブラリおよび/または位置サイズ付ハッシュアレイおよび/または電子署名を更新することができる。
 以上のような実施の形態1の構成を備えることにより、以下に示す効果を有する。
 ハッシュ関数適用対象を位置とサイズで特定するように構成したので、ライブラリを細かく保護および認証することができる。また、保護対象オブジェクトを指定することができるので、ライブラリの一部のみを保護および認証することができる。
 さらに、保護対象をプログラムから利用するオブジェクトのみに限定することができる。
 さらに、保護対象オブジェクトを名称で指定するように構成したので、ソースコード形式での手続き・データの作成者にとっては、位置・サイズを数値で指定する場合に比べて容易に指定できる。
 ライブラリ内オブジェクトのハッシュ値を事前に計算し格納するように構成したので、ライブラリが改竄を受けた場合には認証過程で計算したハッシュ値が異なり、改竄を検出することができる。
 さらに、公開鍵暗号の秘密鍵を用いて位置サイズ付ハッシュアレイの電子署名を作成するようにしたので、位置サイズ付ハッシュアレイが改竄されると、電子署名による検証で不適合を検出することができる。また、秘密鍵保有者以外による署名偽造が困難となるように、位置サイズ付ハッシュアレイを保護するように構成したので、位置サイズ付ハッシュアレイと電子署名を共に改竄された場合にも、認証時に改竄を検出することができる。
 また、位置サイズ付きアッシュアレイおよび電子署名を、ライブラリと呼び出しプログラムの組毎に作成し、格納するように構成したので、個々のプログラムで使用するオブジェクトのみが保護対象になっている様に、それぞれ別の位置サイズ付ハッシュアレイおよび電子署名を作成し認証することができる。
 さらに、ライブラリ呼び出しプログラムを保護対象と非保護対象に分類するように構成したので、非保護対象プログラムから呼び出される場合には、動的リンクライブラリの位置サイズ付ハッシュアレイと電子署名を不要にすることができる。またプログラム起動時およびライブラリロード時に位置サイズ付ハッシュアレイと電子署名の検証処理が不要になる。
 保護必要であると分類したプログラムに対して電子署名を作成・格納し、起動時に電子署名を検証するように構成したので、ライブラリ内のオブジェクトに加えてプログラムファイル内のオブジェクトを保護できるようになった。またプログラムの起動に際して、プログラムファイル内のオブジェクトの改竄有無を検査して認証できるようになった。さらに認証不合格になったプログラムの実行を抑止することができるようになった。さらに、ライブラリ内の保護必要オブジェクトを直接もしくは間接的に利用するプログラムは、保護必要であると分類するようにしたので、保護必要オブジェクトを参照するプログラムは、改竄検出可能な様に保護することができるようになった。
 また、プログラムが保護対象であると分類した上で位置サイズ付ハッシュアレイまたは電子署名の欠落を認証不合格と判定するように構成したので、位置サイズハッシュアレイおよび電子署名が不正除去された場合にも認証不合格と検出することができる。
 さらに、保護されたライブラリを、プログラム起動時の暗黙の動的リンクに際して認証するように構成したので、認証不合格を検出した場合には動的リンクの中止を通じてプログラムの実行を抑止することができる。
 さらに、保護されたライブラリを、プログラムからのライブラリロードに際して認証するように構成したので、認証不合格を検出した場合には動的リンクの中止を通じてライブラリロードを抑止することができる。
 さらに、保護されたオブジェクトを、プログラムからのアドレス取得に際して認証するように構成したので、保護対象外オブジェクトを利用するためにアドレスを取得しようとしても認証不合格になりアドレスをプログラムに渡さない。
 さらに、保護対象オブジェクトはプログラムからの起動時動的リンクおよびロード時動的リンクに際してハッシュ値比較検証が済んでいるため、アドレス取得のために指定したオブジェクトがハッシュ検証済みであるかどうかは、位置サイズ付ハッシュアレイ内の三つ組みに該当するか否かを以って代用することができる。
 さらに、電子署名作成過程の前段にハッシュ関数適用を設けるように構成したので、保護対象オブジェクトの数に比例して大きくなる位置サイズ付ハッシュアレイに対しても、署名関数の入力データサイズを一定以内に保つことができる。また電子署名検証過程内の前段にハッシュ関数適用を設けるように構成したので、検証関数の入力データサイズを一定以内に保つことができる。
 さらに、製造者のみが保有する秘密鍵に対応した公開鍵のみを、製造時のみに書き込み可能な記憶装置に格納することで保護し、プログラムおよびライブラリおよび位置サイズ付ハッシュアレイおよび電子署名を書き換え可能な記憶装置または配布可能な記憶媒体に格納し、プログラムおよびライブラリおよび位置サイズ付ハッシュアレイは電子署名によって保護している場合には、製造者によって、プログラムおよびライブラリを位置サイズ付ハッシュアレイと電子署名と共に更新することができる一方で、更新された後のプログラムおよびライブラリおよび位置サイズ付ハッシュアレイもしくは統合ハッシュアレイと電子署名を、該当公開鍵で検証することができる。
 または公開鍵と電子署名の検証関数を封入した耐タンパーな装置を用いて公開鍵を保護している場合には、公開鍵を記憶装置から読み出した後の検証関数適用直前に主記憶上にある公開鍵の改竄を防止し、当該公開鍵および検証関数の演算処理を信頼することができる。
実施の形態2.
 この実施の形態2では、複数の動的リンクライブラリ(以下、ライブラリと称する)を利用する場合について示す。図24は、この発明の実施の形態2によるライブラリの保護についてのデータの処理関係を示す説明図である。
 プログラム6はライブラリ40内のオブジェクト41,42を直接参照し、更にライブラリ50内のオブジェクト51,53を直接参照する様に作られていた。この場合にライブラリ40,50を保護するためには、オブジェクト41,42,51,53を保護対象とすることが必要である。そこで実施の形態1の図11の説明と同様にしてオブジェクト41,42に該当する三つ組みから形成される位置サイズ付ハッシュアレイ104相当とオブジェクト51,53に該当する三つ組みから形成される位置サイズ付ハッシュアレイ105相当を形成する。ライブラリ識別子40と位置サイズ付ハッシュアレイ104相当をペアにし、またライブラリ識別子50と位置サイズ付ハッシュアレイ105相当をペアにし、これらのペアを集めてアレイ(以下、統合ハッシュアレイ108と称する)とする。
 次いで統合ハッシュアレイ108に対して、製造者のみが保有する秘密鍵700を用いて電子署名608を作成する。なお署名作成手続きとしては、例えば非特許文献1に記載されているRSASSA-PSS-SIGNおよびRSASSA-PKCS1-v1_5-SIGNの様に、ハッシュ関数を前段階として持つ署名作成手続きを用いることで、保護対象オブジェクト数および動的リンクライブラリ数によって統合ハッシュアレイのサイズが異なることにも対応可能とする。
 図25は、この発明の実施の形態2によるライブラリの認証についてのデータの処理関係を示す説明図である。
 プログラム6、ライブラリ40、ライブラリ50は上記図24で参照されたものと同一であり、統合ハッシュアレイ108、電子署名608は、上記図24で作成されたものである。この場合にライブラリ40,50を認証するためには、オブジェクト41,42,51,53の改竄有無を検査することが必要である。
 まず、製造者のみが保有する秘密鍵700に対応する公開鍵701を用いて、統合ハッシュアレイ108が改竄されていないかどうかを電子署名608に照らし合わせて検証する。なお署名検証手続きとしては、例えば非特許文献1に記載されているRSASSA-PSS-VERIFYおよびRSASSA-PKCS1-v1_5-VERIFYの様に、ハッシュ関数を前段階として持つ署名作成手続きを用いることで、保護対象オブジェクト数および動的リンクライブラリ数によって統合ハッシュアレイのサイズが異なることにも対応可能とする。
 次に、改竄されていないと確認の取れた位置341,342,351,353とサイズ441,442,451,453とライブラリ識別子40,50を用いて、保護対象オブジェクト41,42,51,53を特定する。次に、各オブジェクト41,42,51,53のハッシュ値541,542,551,553を計算する。
 統合ハッシュアレイ108に格納されていたハッシュ値241,242,251,253は改竄されていないと確認されているため、保護時に計算したハッシュ値と認証時に計算したハッシュ値をそれぞれ比較検証することにより、オブジェクト41,42,51,53への改竄がなかったかどうかを確認することができる。
 オブジェクト41に改竄があった場合を想定すると、認証時にオブジェクト41から計算したハッシュ値541は異なる値になってしまうので、ハッシュ値241との比較で検出される。オブジェクト41の改竄を隠すために、改竄後のオブジェクトから計算したハッシュ値で統合ハッシュアレイ108内のハッシュ値241を置き換えたと想定すると、認証時に統合ハッシュアレイ108は電子署名608に適合しなくなるので、検出される。オブジェクト41の改竄を隠すために、統合ハッシュアレイ108内の位置サイズ付ハッシュアレイ104相当を含むペアを削除したと想定すると、認証時にライブラリ識別子40に対応するペアを検索で見つけることができなくなるので、検出される。オブジェクト41の改竄を隠すために、ハッシュ値241と位置341とサイズ441の三つ組みを削除したと想定すると、認証時に統合ハッシュアレイ108は電子署名608に適合しなくなるので、検出される。オブジェクト41の改竄と統合ハッシュアレイ108の改竄を隠すために、改竄後の統合ハッシュアレイから作成した電子署名で電子署名608を置き換えたと想定すると、電子署名608を作成するために使われた秘密鍵700は製造者しか保有していないため、改竄者は異なる秘密鍵を用いて電子署名を作成せざるをえず、製造者の秘密鍵700に対応した公開鍵701を用いた検証で不適合が検出される。これらの認証処理は、オブジェクト42,51,53についても同様である。
 動的リンクライブラリを保護するための、統合ハッシュアレイおよび電子署名作成方法の手順を、図26に従って説明する。なお、以下では実施の形態1による動的リンクライブラリの保護と同一のステップには図5で使用した符号と同一の符号を付し、説明を省略または簡略化する。
 まず呼び出される1つのライブラリ分についての保護対象オブジェクトを特定し(ステップS601)、保護対象オブジェクトの位置・サイズを特定し(ステップS101)、該当のオブジェクトについてハッシュ値を計算し(ステップS102)、該当オブジェクトのハッシュ値・位置・サイズを三つ組みにする(ステップS103)。ライブラリ内の全ての保護対象オブジェクトに対して実施したかを判断し、未実施があればステップS101に戻って繰り返す(ステップS104)。ライブラリ内の全てに対して実施した後、全保護対象オブジェクトの三つ組みを集めて位置サイズ付ハッシュアレイを作成し(ステップS105)、位置サイズ付ハッシュアレイと該当ライブラリの識別子をペアにする(ステップS602)。呼び出される全てのライブラリに対して実施したかを判断し、未実施があればステップS601に戻って繰り返す(ステップS603)。全ライブラリに対して実施した後、上記全ライブラリ分のライブラリ識別子と位置サイズ付ハッシュアレイのペアを集めて統合ハッシュアレイを作成し(ステップS604)、統合ハッシュアレイの電子署名を作成し(ステップS605)、プログラムに対応付けて統合ハッシュアレイと電子署名を格納する(ステップS606)。以上で統合ハッシュアレイおよび電子署名作成の手順は終了である。
 まず統合ハッシュアレイを認証する方法の手順を、図27に従って説明する。まずプログラムに対応した統合ハッシュアレイと電子署名を読出す(ステップS701)。もし何れか一方または両方について読出し成功しなかったならば分岐して(ステップS702)、認証不合格と判定し(ステップS706)、認証処理を終了する。読出し成功していれば、統合ハッシュアレイと、統合ハッシュアレイの電子署名とを、信頼できる公開鍵を用いて検証する(ステップS703)。もし電子署名に適合していなければ分岐して(ステップS704)、認証不合格と判定し(ステップS706)、認証処理を終了する。署名に適合していた場合は、統合ハッシュアレイ認証結果を合格とし(ステップS705)、認証方法の手順を終了する。
 続いて動的リンクライブラリを認証する方法の手順を、図28に従って説明する。なお、以下では実施の形態1による動的リンクライブラリを認証する方法の手順と同一のステップには図6で使用した符号と同一の符号を付す。
 図27で認証された統合ハッシュアレイの中から、該当ライブラリの識別子に対応した位置サイズ付ハッシュアレイ相当を検索する(ステップS711)。もし位置サイズ付ハッシュアレイ相当が存在しなかったら分岐して(ステップS712)、ライブラリ認証結果を不合格とし(ステップS211)、認証方法の手順を終了する。もし検索で存在したら、位置サイズ付ハッシュアレイの要素によって、対象オブジェクトの位置・サイズを特定し(ステップS205)、対象オブジェクトのハッシュ値を計算し(ステップS206)、計算されたハッシュ値と位置サイズ付ハッシュアレイ内に格納されていたハッシュ値を比較する(ステップS207)。
 ハッシュ値同士が一致しないならば分岐し(ステップS208)、ライブラリ認証結果を不合格とし(ステップS211)、認証方法の手順を終了する。ハッシュ値同士が一致していれば、位置サイズ付ハッシュアレイの全ての要素について実施したかを判断し、未実施があればステップS205の処理に戻り上述した処理を繰り返す(ステップS209)。ハッシュ値同士に不適合が見つからないまま全ての要素に対して実施し終えたならばライブラリ認証結果を合格とし(ステップS210)、認証方法の手順を終了する。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム起動時に暗黙に動的リンクされる場合の手順について、図29を用いて説明する。なお、以下では実施の形態1によるプログラム起動時に暗黙に動的リンクされる場合の手順と同一のステップには図13で使用した符号と同一の符号を付し、説明を省略または簡略化する。
 プログラム起動処理の内動的リンクを除く処理、例えば資源割当などを実施(ステップS301)した後、該当プログラムが保護必要であるか否か印を参照して判断する(ステップS302)。保護必要であれば、プログラム認証を行い(ステップS303)、認証合格しなければ分岐して(ステップS304)、認証エラーとしてプログラム実行を拒絶する(ステップS311)。プログラム認証合格であれば、ハッシュアレイ認証を行い(ステップS801)、認証合格しなければ分岐して(ステップS802)、認証エラーとしてプログラム実行を拒絶する(ステップS311)。認証合格していれば、プログラムが暗黙に動的リンクするライブラリを、直接利用するものと間接利用するものを共に含めて列挙する(ステップS305)。
 列挙されたライブラリが1個未満であれば分岐し(ステップS306),以後の処理をスキップしてプログラム起動を完了とする。1個以上であれば図28で説明したライブラリ認証の手順を実施し(ステップS805)、認証合格しなければ分岐して(ステップS806)、認証エラーとしてプログラム実行を拒絶する(ステップS311)。もしライブラリ認証合格であれば認証無しの動的リンク手順(ステップS309)を実施する。列挙された全てのライブラリについて実施したかどうかを判断し、未実施があればステップS805に戻って繰り返す(ステップS310)。全てのライブラリについて実施し終えたならばプログラム起動処理を終了する。
 他方、ステップS302において該当プログラムが保護必要でなければ、実施の形態1で説明したステップS312からステップS315と同一の処理を行い、処理を終了する。
 プログラム認証については、実施の形態1の図13における説明と同様である。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム実行中に明示的にロードされる場合の手順については、実施の形態1の図14における説明と同様である。但し、図14のフローチャートのステップS402で示したライブラリ認証には、上述した図28のフローチャートで示した手順を用いる。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理手順について、特にプログラム実行中に明示的にオブジェクトアドレス取得される場合の手順については、実施の形態1の図15および図16における説明と同様である。但し、図15のフローチャートのステップS504で示したフィックスアップ時オブジェクト認証については、図30で下記に説明する手順を用い、図15のフローチャートのステップS509で示したライブラリ認証には、上述した図28のフローチャートで示した手順を用いる。
 実施の形態2によるフィックスアップ時オブジェクト認証の手順について、図30を用いて説明する。なお、以下では実施の形態1によるプログラム起動時に暗黙に動的リンクされる場合の手順と同一のステップには図17で使用した符号と同一の符号を付し、説明を省略または簡略化する。
 まずオブジェクトの属するライブラリは認証済みかどうか判断し、認証済みでなければ分岐して(ステップS531)、オブジェクト認証結果を不合格として(ステップS535)、オブジェクト認証処理を終了する。ライブラリが認証済みならば、統合ハッシュアレイの中からライブラリの識別子に対応した位置サイズ付ハッシュアレイ相当を検索し(ステップS821)、フィックスアップ過程で位置を特定した該当オブジェクトについて、位置サイズ付ハッシュアレイ内の対応する要素を検索する(ステップS532)。以降、実施の形態1で説明したステップS533からステップS535と同一の処理を行い、処理を終了する。
 動的リンクライブラリの保護装置とライブラリの作成装置とこれらの間を流れるデータについての構成を、特にライブラリ40と50の場合を例にとって図31を用いて説明する。
 ソースコードファイルをコンパイルしてオブジェクトファイルを取得し、オブジェクトファイルをリンクして動的リンクライブラリを得る過程までは、実施の形態1の図18で説明したものと同一であるため、説明を省略する。リンカー111から出力されたばかりの動的リンクライブラリ40aと50aに含まれるシンボルテーブルは、ライブラリの配布時や製品への搭載時にはシンボル情報・デバッグ情報削除装置112で削除されてしまうので、例えば静的関数のオブジェクトがあったとしても、外部から直接には参照できなくなる。
 実施の形態2の位置サイズ付ハッシュアレイ作成装置121は、保護対象オブジェクト名前のリストを受取り、ライブラリ40a内のシンボルテーブル内を名前で検索して、位置サイズ付ハッシュアレイ104に格納すべき位置・サイズを取得する。また保護対象オブジェクト名前のリストを受取り、ライブラリ50a内のシンボルテーブル内を名前で検索して、位置サイズ付ハッシュアレイ105に格納すべき位置・サイズを取得する。なお位置サイズ付ハッシュアレイ104,105を起動時動的リンクのライブラリ認証処理にしか使用しないならば、これらのハッシュアレイに格納すべき位置の標記は、最終的なライブラリファイル40,50内における各オブジェクトのオフセットであることが、認証処理を単純化するためには好適である。位置サイズ付ハッシュアレイ作成装置121は上記位置・サイズに該当するオブジェクトのハッシュ値を計算して三つ組みを作り、これを集めて位置サイズ付ハッシュアレイ104,105を作成する。
 実施の形態2の統合ハッシュアレイ作成装置8は、ライブラリ識別子40と位置サイズ付ハッシュアレイ104のペアと、ライブラリ識別子50と位置サイズ付ハッシュアレイ105のペアを受け取り、それぞれのペアを要素にした統合ハッシュアレイ108を作成する。
 実施の形態2の電子署名作成装置710は、秘密鍵700を用いて、統合ハッシュアレイ108の電子署名608を作成する。実施の形態2の統合ハッシュアレイ格納装置126aは、統合ハッシュアレイ108を、プログラム識別子2に関連付けて格納する。また実施の形態2の電子署名格納装置124aは、電子署名608を、プログラム識別子2に関連付けて格納する。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理に関する装置と装置間を流れるデータの構成について、特にプログラム6の起動時に動的リンクライブラリ40,50が暗黙に動的リンクされる場合の構成について、図32を用いて説明する。
 キーボードやボタンなどの入力装置150を経由して入力されたプログラム起動指示670は、起動指示解析装置151によってプログラム識別子6を抽出される。プログラム6が保護不要と印づけられている場合には細線矢印のみに従ってデータを流し、プログラム6が保護必要と記しづけられている場合には細線矢印と太線矢印の両方に従ってデータを流す。プログラム認証装置157はプログラム識別子6を契機に該当プログラムの認証を実施し、その結果であるプログラム認証結果673を出力する。プログラム読出装置153はプログラム識別子6を契機に読み出すが、その一方でプログラム認証結果673が認証合格でないならば読出しを中止する。読出しに成功したプログラム6は、ライブラリ動的リンク検出装置154に入力され、ライブラリ識別子を抽出される。図32の場合には、ライブラリ識別子40,50が抽出されることになる。
 統合ハッシュアレイ読出装置126bと電子署名読出装置124bは、プログラム識別子6を受け取り、該当する統合ハッシュアレイ108と電子署名608を出力する。電子署名検証装置711は統合ハッシュアレイ108と電子署名608と、公開鍵読出装置702から信頼できる公開鍵701を受け取り、電子署名検証結果674を出力する。
 信頼できる公開鍵を供給可能な装置として、公開鍵読出装置702には製造時のみ公開鍵を書き込むことが可能で以後書換え不能な記憶装置を用いる場合を図32では示しているが、電子署名検証装置711中の検証関数(不図示)と公開鍵701を封入した耐タンパーな装置を用いて、該装置に入力として電子署名608と統合ハッシュアレイから計算したハッシュ値(不図示)を与え、電子署名検証結果674を出力させる構成であると、更に好適である。
 位置サイズ付ハッシュアレイ検索装置127は、統合ハッシュアレイ108の中から、ライブラリ識別子40に対応した位置サイズ付ハッシュアレイ104と、ライブラリ識別子50に対応した位置サイズ付ハッシュアレイ105を出力する。ライブラリ読出装置155は、ライブラリ識別子40,50を受け取ってライブラリ40,50を出力する。
 ハッシュ値検証装置128は、ライブラリ40と位置サイズ付ハッシュアレイ104を受け取って、位置サイズ付ハッシュアレイ104に含まれる全要素の位置とサイズを基にライブラリ40内のオブジェクトを抽出し、そのハッシュ値を計算し、位置サイズ付ハッシュアレイ104に含まれるハッシュ値と比較検証する。ハッシュ値検証装置128は、更にライブラリ50と位置サイズ付ハッシュアレイ105を受け取って、位置サイズ付ハッシュアレイ105に含まれる全要素の位置とサイズを基にライブラリ50内のオブジェクトを抽出し、そのハッシュ値を計算し、位置サイズ付ハッシュアレイ105に含まれるハッシュ値と比較検証する。ハッシュ値検証装置128は、これらのハッシュ値検証結果を保護対象オブジェクト毎の比較結果として出力するが、ここでは説明のために、ライブラリ40のオブジェクト分の比較結果の集まりをハッシュ値検証結果676、ライブラリ50のオブジェクト分の比較結果の集まりをハッシュ値検証結果677と符号付けることにする。
 判定装置129は電子署名検証結果674をハッシュアレイ認証結果675として受け取り、ハッシュ値検証結果676,677をライブラリ認証結果678,679として受け取って判断し、認証結果を出力する。
 より詳細には、判定装置129は図21で説明した比較結果集積部129aと認証結果出力部129bで構成される。比較結果集積部129aは比較結果の集まりであるハッシュ値検証結果676を単一のライブラリ認証結果678に集約し、同様にハッシュ値検証結果677をライブラリ認証結果679に集約する。判定装置129bは電子署名検証結果674をハッシュアレイ認証結果675として受け取り、上記ライブラリ認証結果678を受け取って判断し、ライブラリ40の動的リンク可否判断基準となる認証結果を出力する。また判定装置129bは前記電子署名検証結果674を再度ハッシュアレイ認証結果675として受け取り、上記ライブラリ認証結果679を受け取って判断し、ライブラリ50の動的リンク可否判断基準となる認証結果を出力する。
 動的リンク装置156はプログラム6とライブラリ40,50を受け取って実行可能イメージを主記憶上に通常は展開しオブジェクトアドレスのフィックスアップを行うが、認証結果が合格でないならば中止する。起動時の暗黙の動的リンクが失敗した場合、プログラム6は起動に失敗し、実行されない。
 なお統合ハッシュアレイ108が不正に除去されて統合ハッシュアレイ読出装置126bが読み出しに失敗する場合、後段の位置サイズ付ハッシュアレイ検索装置127およびハッシュ値検証装置128を経由して判定装置129に失敗の旨通知する。あるいは特に図示しないが、読み出し失敗を直接に判定装置129に通知するように構成してもよい。判定装置129は前記失敗を通知された場合、動的リンク可否判断基準となる認証結果として不合格を出力する。
 電子署名608が不正に除去されて電子署名読出し装置124bが読み出しに失敗する場合、後段の電子署名検証装置711を経由して判定装置129に失敗の旨通知する。あるいは特に図示しないが、読み出し失敗を直接に判定装置129に通知してもよい。判定装置129は前記失敗を通知された場合、ライブラリ認証結果として不合格を出力する。
 あるいは別の構成として、位置サイズ付ハッシュアレイ読出装置126bまたは電子署名読出装置124bが読み出しに失敗する場合、失敗の旨を直接動的リンク装置156に通知し、実行可能イメージの主記憶上への展開とオブジェクトアドレスのフィックスアップを中止させてもよい。
 動的リンクライブラリと呼び出しプログラムを含むプログラム管理に関する装置と装置間を流れるデータの構成について、特にプログラム6の起動時に動的リンクライブラリ50が暗黙に動的リンクされ、動的リンクライブラリ40は明示的にロードされる場合の構成について、図33~35を用いて説明する。
 図33では上記の場合の内の、特にプログラム6の起動時に動的リンクライブラリ50が暗黙に動的リンクされる時点の構成を説明する。図32との相違点は、ライブラリ動的リンク検出装置154から抽出されるのがライブラリ識別子50のみであること、以降の構成で登場するライブラリ・位置サイズ付ハッシュアレイ・ハッシュ値検証結果・ライブラリ認証結果がそれぞれ50,105,677,679のみであること、判定装置の認証結果出力部129bがハッシュアレイ認証結果675として受け取るのは出力されたばかりの電子署名検証結果674であること、実行可能イメージ672aはプログラム6とライブラリ50を主記憶上に展開したものであって、まだライブラリ40の分は展開されていないこと、である。
 図34では上記の場合の内の、特にプログラム実行中に動的リンクライブラリ40が明示的にロードされる時点の構成を説明する。
 実行中のプログラムが保護不要であった場合、細線矢印のみに沿ってデータを流し、保護必要であった場合、細線矢印と太線矢印の両方に沿ってデータを流す。
 実行中のプログラム6はライブラリロード指示671を発する。ライブラリロード指示解析装置152は、ライブラリロード指示671を入力して、ライブラリ識別子40を抽出する。ライブラリ読出装置155は、ライブラリ識別子40を契機として、ライブラリ40を読み出す。
 統合ハッシュアレイ108は、プログラム6起動時に統合ハッシュアレイ読出装置126bによって出力されていたので、ロード時点でも引き続き使用する。位置サイズ付ハッシュアレイ検索装置127は、統合ハッシュアレイ108の中から、ライブラリ識別子40に該当する位置サイズ付ハッシュアレイ104を出力する。ハッシュ値検証装置128は位置サイズ付ハッシュアレイ104とライブラリ40を入力し、ハッシュ値検証結果676を出力する。判定装置128の比較結果集積部128aは比較結果の集まりであるハッシュ値検証結果676を単一のライブラリ認証結果678に集約する。動的リンク装置156aは、通常ライブラリ40とプログラム6を受け取って実行可能イメージを主記憶上に展開するが、認証結果が不合格ならば展開を中止する。
 なお図33のハッシュアレイ認証結果675がロード時点でも引き続き使用できるならば、ライブラリ認証結果678と動的リンク装置156aの間の構成には、図33と同様に認証結果出力装置129bを介在させ、更にハッシュアレイ認証結果675を入力させていてもよい。
 図35では上記の場合の内の、特に明示的にロードされた動的リンクライブラリ40のオブジェクトのアドレス取得を行う時点の構成を説明する。
 実行中のプログラムが保護不要であった場合、細線矢印のみに沿ってデータを流し、保護必要であった場合、細線矢印と太線矢印の両方に沿ってデータを流す。
 実行中のプログラム6は、アドレス取得指示680を発する。アドレス取得指示解析装置160はアドレス取得指示680を入力して、オブジェクト名41とライブラリ識別子40を抽出する。統合ハッシュアレイ108は、プログラム6起動時に統合ハッシュアレイ読出装置126bによって出力されていたので、アドレス取得時点でも引き続き使用する。位置サイズ付ハッシュアレイ検索装置127は統合ハッシュアレイ108の中から、ライブラリ識別子40に対応する位置サイズ付ハッシュアレイ104を出力する。他方、動的シンボルテーブル内検索部161aはオブジェクト名41に該当する位置341およびサイズ441を出力する。ここで位置341は、セクション識別子とセクション内位置の組で表記されている。
 オブジェクト検証装置131は位置341とサイズ441で位置サイズ付ハッシュアレイ104内の要素検索を行い、該当要素の有無をオブジェクト認証結果681として出力する。更にアドレスマッピング部161bは位置341をオブジェクトのアドレス341aに変換する。アドレス出力装置162は、オブジェクト認証結果681の合否に応じて、アドレス341aとフィックスアップ済みである旨記録しアドレスの出力を行う。
 なお該当オブジェクトが他オブジェクトを参照している場合、ライブラリロードとアドレス取得が再帰的に実施されるが、それらに関する装置構成は上述した図34および図35と同一であるため説明を省略する。
 図31の電子署名格納装置124aと図32および図33の電子署名読出装置124bは、同一の記憶装置に備えられた書込み手段と読み出し手段であってもよく、あるいは同一の記憶媒体に対する別個の装置である書込み装置と読み出し装置であってもよい。図31の統合ハッシュアレイ格納装置126aと図32および図33の統合ハッシュアレイ読出装置126bは、同一の記憶装置に備えられた書込み手段と読み出し手段であってもよく、あるいは同一の記憶媒体に対する別個の装置である書込み装置と読み出し装置であってもよい。
 図32および図33のプログラム読出装置153は書き込み手段と読み出し手段を供えた記憶装置の読み出し手段であってもよく、あるいは記憶媒体に対する読み出し装置であってもよい。図32および図33のライブラリ読出装置155は書込み手段と読み出し手段を備えた記憶装置の読み出し手段であってもよく、あるいは記憶媒体に対する読み出し装置であってもよい。前記記憶装置の書込み手段あるいは前記記憶媒体に対する書込み装置は図31で説明しなかったが、少なくとも製造時に必要とすることは言うまでもない。
 同一の記憶装置を採用した場合には、製造者は一旦製造を終えた後でもプログラムおよび/またはライブラリおよび/または位置サイズ付ハッシュアレイおよび/または電子署名を更新することができる。同一の記憶媒体に対する別個の装置を採用した場合には、製造者は媒体を交換することによりプログラムおよび/またはライブラリおよび/または位置サイズ付ハッシュアレイおよび/または電子署名を更新することができる。
 以上のような実施の形態2の構成を備えることにより、以下に示す効果を有する。
 ハッシュ関数適用対象を位置とサイズで特定するように構成したので、ライブラリを細かく保護および認証することができる。また、保護対象オブジェクトを指定することができるので、ライブラリの一部のみを保護および認証することができる。
 さらに、保護対象をプログラムから利用するオブジェクトのみに限定することができる。
 さらに、保護対象オブジェクトを名称で指定するように構成したので、ソースコード形式での手続き・データの作成者にとっては、位置・サイズを数値で指定する場合に比べて容易に指定できる。
 複数の動的リンクライブラリを利用するプログラムの保護および認証に、位置サイズ付ハッシュアレイを統合した統合ハッシュアレイを用いるように構成したので、統合ハッシュアレイはプログラムから呼び出される動的リンクライブラリに関わる位置サイズ付ハッシュアレイを全て集めることができ、統合ハッシュアレイ作成時に想定しなかったライブラリを起動時および実行中のプログラムから動的リンクされることを防ぐことができる。さらに、1つの電子署名を作成することで複数の位置サイズ付ハッシュアレイに対応させることができる。また認証時においても、1つの電子署名の検証処理を行うことで複数の位置サイズ付ハッシュアレイ分の認証を行うことができる。
 ライブラリ内オブジェクトのハッシュ値を事前に計算し格納するように構成したので、ライブラリが改竄を受けた場合には認証過程で計算したハッシュ値が異なり、改竄を検出することができる。
 さらに、公開鍵暗号の秘密鍵を用いて統合ハッシュアレイの電子署名を作成するようにしたので、統合ハッシュアレイが改竄されると、電子署名による検証で不適合を検出することができる。また、秘密鍵保有者以外による署名偽造が困難となるように、統合ハッシュアレイを保護するように構成したので、統合と電子署名を共に改竄された場合にも、認証時に改竄を検出することができる。
 また、統合ハッシュアレイおよび電子署名を、呼び出しプログラム毎に作成し、格納するように構成したので、個々のプログラムで使用するオブジェクトのみが保護対象になっている様に、それぞれ別の統合ハッシュアレイおよび電子署名を作成し認証することができる。
 さらに、ライブラリ呼び出しプログラムを保護対象と非保護対象に分類するように構成したので、非保護対象プログラムから呼び出される場合には、統合ハッシュアレイと電子署名を不要にすることができる。またプログラム起動時に統合ハッシュアレイと電子署名の検証処理が不要になる。
 保護必要であると分類したプログラムに対して電子署名を作成・格納し、起動時に電子署名を検証するように構成したので、ライブラリ内のオブジェクトに加えてプログラムファイル内のオブジェクトを保護できるようになった。またプログラムの起動に際して、プログラムファイル内のオブジェクトの改竄有無を検査して認証できるようになった。さらに認証不合格になったプログラムの実行を抑止することができるようになった。さらに、ライブラリ内の保護必要オブジェクトを直接もしくは間接的に利用するプログラムは、保護必要であると分類するようにしたので、保護必要オブジェクトを参照するプログラムは、改竄検出可能な様に保護することができるようになった。
 また、プログラムが保護対象であると分類した上で統合ハッシュアレイまたは電子署名の欠落を認証不合格と判定するように構成したので、統合ハッシュアレイおよび電子署名が不正除去された場合にも認証不合格と検出することができる。
 さらに、保護されたライブラリを、プログラム起動時の暗黙の動的リンクに際して認証するように構成したので、認証不合格を検出した場合には動的リンクの中止を通じてプログラムの実行を抑止することができる。
 さらに、保護されたライブラリを、プログラムからのライブラリロードに際して認証するように構成したので、認証不合格を検出した場合には動的リンクの中止を通じてライブラリロードを抑止することができる。
 さらに、保護されたオブジェクトを、プログラムからのアドレス取得に際して認証するように構成したので、保護対象外オブジェクトを利用するためにアドレスを取得しようとしても認証不合格になりアドレスをプログラムに渡さない。
 さらに、保護対象オブジェクトはプログラムからの起動時動的リンクおよびロード時動的リンクに際してハッシュ値比較検証が済んでいるため、アドレス取得のために指定したオブジェクトがハッシュ検証済みであるかどうかは、統合ハッシュアレイ内の位置サイズ付ハッシュアレイ内の三つ組みに該当するか否かを以って代用することができる。
 さらに、電子署名作成過程の前段にハッシュ関数適用を設けるように構成したので、保護対象オブジェクトの数に比例して大きくなる統合ハッシュアレイに対しても、署名関数の入力データサイズを一定以内に保つことができる。また電子署名検証過程内の前段にハッシュ関数適用を設けるように構成したので、検証関数の入力データサイズを一定以内に保つことができる。
 さらに、製造者のみが保有する秘密鍵に対応した公開鍵のみを、製造時のみに書き込み可能な記憶装置に格納することで保護し、プログラムおよびライブラリおよび統合ハッシュアレイおよび電子署名を書き換え可能な記憶装置に格納し、プログラムおよびライブラリおよび統合ハッシュアレイは電子署名によって保護している場合には、製造者によって、プログラムおよびライブラリを統合ハッシュアレイと電子署名と共に置換することができる一方で、置換された後のプログラムおよびライブラリおよび統合ハッシュアレイと電子署名を、該当公開鍵で検証することができる。
 または公開鍵と電子署名の検証関数を封入した耐タンパーな装置を用いて公開鍵を保護している場合には、公開鍵を記憶装置から読み出した後の検証関数適用直前に主記憶上にある公開鍵の改竄を防止し、当該公開鍵および検証関数の演算処理を信頼することができる。
 なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
 この発明に係る動的リンクライブラリ保護方法は、ハッシュ関数適用対象を位置とサイズで特定するように構成し、保護対象となるオブジェクトを限定することができ、プログラムの動作遅延を抑制することができるので、ソフトウェア・プログラムで実現されたデジタルコンテンツ観賞用装置の機能制限実現箇所等を改竄から保護する方法として用いるのに適している。
 1,2,3,4,5,6,7 プログラム、10,20,20a,30,40,40a,50,50a,60,70 動的リンクライブラリ、100,101,102,103,104,105,106,107 位置サイズ付ハッシュアレイ、108 統合ハッシュアレイ、
 110 コンパイラ、111 リンカー、112 シンボル情報・デバッグ情報削除装置、 121 位置サイズ付ハッシュアレイ作成装置、121a 位置サイズ付ハッシュアレイ作成装置(オブジェクト特定部)、121b 位置サイズ付ハッシュアレイ作成装置(ハッシュ算出部)、121c 位置サイズ付ハッシュアレイ作成装置(三つ組み生成部)、121d 位置サイズ付ハッシュアレイ作成装置(位置サイズ付ハッシュアレイ生成部)、122 統合ハッシュアレイ作成装置、123a,124a 電子署名格納装置、123b,124b 電子署名読出装置、125a 位置サイズ付ハッシュアレイ格納装置、125b 位置サイズ付ハッシュアレイ読出装置、126a 統合ハッシュアレイ格納装置、126b 統合ハッシュアレイ読出装置、127 位置サイズ付ハッシュアレイ検索装置、128 ハッシュ値検証装置、128a ハッシュ値検証装置(オブジェクト特定部)、128b ハッシュ値検証装置(ハッシュ算出部)、128c ハッシュ値検証装置(比較検証部)、129 判定装置、129a 判定装置(比較結果集積部)、129b 判定装置(認証結果出力部)、130 読出済位置サイズ付ハッシュアレイ特定装置、131 オブジェクト検証装置、
 150 入力装置、151 起動指示解析装置、152 ライブラリロード指示解析装置、153 プログラム読出装置、154 ライブラリ動的リンク検出装置、155 ライブラリ読出装置、156,156a 動的リンク装置、157 プログラム認証装置、160 アドレス取得指示解析装置、161 アドレスフィックスアップ装置、161a アドレスフィックスアップ装置(動的シンボルテーブル内検索部)、161b アドレスフィックスアップ装置(アドレスマッピング部)、162 アドレス出力装置、
 600,601,602,603,604,605,606,607,608 電子署名、 650,670 プログラム起動指示、651,671 ライブラリロード指示、652,672,672a 実行可能イメージ、653,673 プログラム認証結果、654,674 電子署名検証結果、675 ハッシュアレイ認証結果、656,676,677 ハッシュ値検証結果、658,678,679 ライブラリ認証結果、
 660,680 アドレス取得指示、661,681 オブジェクト認証結果、
 700 秘密鍵、701 公開鍵、702 公開鍵読出装置、710 電子署名作成装置、711 電子署名検証装置。

Claims (56)

  1.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する工程と、
     前記保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する工程と、
     前記算出したハッシュ値と、前記保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する工程と、
     前記動的リンクライブラリ内の保護対象オブジェクト毎のタプルの集合である位置サイズ付ハッシュアレイを作成する工程とを備えたことを特徴とする動的リンクライブラリ保護方法。
  2.  前記動的リンクライブラリ内のオブジェクトから保護対象オブジェクトを指定する工程は、
     前記動的リンクライブラリを呼び出すプログラムから直接参照されるオブジェクト、および直接的又は間接的に参照されるオブジェクトからの参照により前記プログラムから間接的に参照されるオブジェクトのみを、前記保護対象オブジェクトに指定することを特徴とする請求項1記載の動的リンクライブラリ保護方法。
  3.  公開鍵暗号方式の秘密鍵を用いて、前記位置サイズ付ハッシュアレイの電子署名を作成する工程を備えたことを特徴とする請求項1記載の動的リンクライブラリ保護方法。
  4.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記動的リンクライブラリと前記呼び出しプログラムとの組毎に請求項3記載の動的リンクライブラリ保護方法で作成した位置サイズ付ハッシュアレイと位置サイズ付ハッシュアレイの電子署名を、前記動的リンクライブラリと前記呼び出しプログラムとの組に関連付けて格納する工程を備えたことを特徴とする動的リンクライブラリ保護方法。
  5.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記プログラムを格納する工程と、
     前記プログラムから呼び出される動的リンクライブラリを格納する工程と、
     保護対象として指定されたプログラムに保護対象であることを印づける工程とを備え、
     前記保護対象として指定されたプログラムおよび当該該プログラムから呼び出される動的リンクライブラリの組に対しては、請求項4記載の動的リンクライブラリの保護方法で位置サイズ付ハッシュアレイおよび電子署名を作成および格納し、
     前記保護対象として指定されていないプログラム、および当該プログラムから呼び出される動的リンクライブラリの組に対しては、位置サイズ付ハッシュアレイと電子署名を作成せず、格納も行わないことを特徴とする動的リンクライブラリ保護方法。
  6.  前記プログラムを保護対象として指定する工程は、
     前記プログラム中に保護必要なオブジェクトを含んでいる場合、または前記プログラムから直接的に参照されるオブジェクトが保護必要である場合、または参照されているオブジェクトから更に参照されるオブジェクトが保護必要である場合に、前記プログラムを保護対象として指定することを特徴とする請求項5記載の動的リンクライブラリ保護方法。
  7.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証方法において、
     前記動的リンクライブラリ内の保護対象オブジェクト毎のハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイ内の、全ての前記タプルから前記動的リンクライブラリ内の保護対象オブジェクトを特定する工程と、
     前記保護対象オブジェクトそれぞれのハッシュ値を算出する工程と、
     前記算出されたハッシュ値と、前記位置サイズ付ハッシュアレイを構成するハッシュ値とを比較検証する工程と、
     前記位置サイズ付ハッシュアレイ内の全てのタプルにおいて、前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記比較検証の結果が不一致になるタプルが存在する場合には認証結果を不合格と判定する工程とを備えたことを特徴とする動的リンクライブラリ認証方法。
  8.  公開鍵を用いて前記位置サイズ付ハッシュアレイを電子署名により検証する工程を備え、
     前記認証結果を判定する工程は、前記電子署名が前記位置サイズ付ハッシュアレイの電子署名として適合し、且つ前記全てのタプルにおいて、前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記電子署名が前記位置サイズ付ハッシュアレイの電子署名として不適合であるか、または前記比較検証の結果に不一致がある場合には認証結果を不合格と判定することを特徴とする請求項7記載の動的リンクライブラリ認証方法。
  9.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証方法において、
     前記動的リンクライブラリと前記呼び出しプログラムとの組に関連付けられた前記位置サイズ付ハッシュアレイおよび前記位置サイズ付ハッシュアレイの電子署名を読出す工程と、
     前記位置サイズ付ハッシュアレイと前記位置サイズ付ハッシュアレイの電子署名のいずれか一方、または両方の読出しに失敗した場合に、認証結果を不合格と判定する工程とを備え、
     前記位置サイズ付ハッシュアレイおよび前記位置サイズ付ハッシュアレイの電子署名の両方の読出しに成功した場合に、請求項8記載の動的リンクライブラリ認証方法を実施することを特徴とする動的リンクライブラリ認証方法。
  10.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証方法において、
     前記プログラムを読出す工程と、
     前記プログラムが保護対象として印ついているか否か判別する工程とを備え、
     前記プログラムが保護対象として印ついている場合に、請求項9記載の動的リンクライブラリ認証方法を実施し、前記プログラムが保護対象と印つけられていない場合に、請求項9記載の動的リンクライブラリ認証方法の実施をスキップすることを特徴とする動的リンクライブラリ認証方法。
  11.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護装置において、
     前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する手段と、
     前記保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する手段と、
     前記保護対象オブジェクトのハッシュ値と、前記保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する手段と、
     前記動的リンクライブラリ内の前記保護対象オブジェクトの前記タプルを集めた位置サイズ付ハッシュアレイを作成する手段とを備えたことを特徴とする動的リンクライブラリ保護装置。
  12.  公開鍵暗号方式の秘密鍵を用いて、前記位置サイズ付ハッシュアレイの電子署名を作成する手段を備えたことを特徴とする請求項11記載の動的リンクライブラリ保護装置。
  13.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証装置において、
     前記動的リンクライブラリ内の前記保護対象オブジェクトのハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイ内の全てのタプルから、前記動的リンクライブラリ内の保護対象オブジェクトを特定する手段と、
     前記特定した保護対象オブジェクトのハッシュ値を算出する手段と、
     前記算出したハッシュ値と、前記位置サイズ付ハッシュアレイを構成するハッシュ値とを比較検証する手段と、
     前記位置サイズつきハッシュアレイ内の全てのタプルにおいて、前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記比較検証の結果が不一致になるタプルが存在する場合には認証結果を不合格と判定する判定手段を備えたことを特徴とする動的リンクライブラリ認証装置。
  14.  公開鍵と電子署名を用いて、前記位置サイズ付ハッシュアレイを検証する手段を備え、
     判定手段は、前記電子署名が前記位置サイズ付ハッシュアレイの電子署名として適合し、且つ前記全てのタプルにおいて前記比較検証の結果が一致する場合には、認証結果を合格と判定し、前記電子署名が前記位置サイズ付ハッシュアレイの電子署名として不適合であるか、または前記比較検証の結果に不一致がある場合には、認証結果を不合格と判定する判定手段であることを特徴とする請求項13記載の動的リンクライブラリ認証装置。
  15.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記動的リンクライブラリ内の前記保護対象オブジェクトのハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイと当該位置サイズ付ハッシュアレイの電子署名を前記プログラムと前記動的リンクライブラリの組に関連付けて格納する手段と、前記プログラムと前記動的リンクライブラリの組に関連付いた位置サイズ付ハッシュアレイおよび当該位置サイズ付ハッシュアレイの電子署名を読出す手段とを備えたアレイ記憶装置と、
     前記動的リンクライブラリを格納する手段と、前記動的リンクライブラリを読出す手段とを備えたライブラリ記憶装置と、
     前記プログラムを格納する手段と、前記プログラムを読出す手段とを備えたプログラム記憶装置と、
     前記位置サイズ付ハッシュアレイ内の全てのタプルから、前記動的リンクライブラリ内の保護対象オブジェクトを特定する手段と、前記特定した保護対象オブジェクトのハッシュ値を算出する手段と、前記算出したハッシュ値と、前記位置サイズ付ハッシュアレイ内のタプルを構成するハッシュ値とを比較検証する手段と、公開鍵と電子署名を用いて、前記位置サイズ付ハッシュアレイを検証する手段と、認証結果を判定する判定手段とを備えた動的リンクライブラリ認証装置と、
     前記プログラムの起動指示を受け取る入力手段と、当該起動指示からプログラム識別子を抽出する解析手段と、読出したプログラムについてどのライブラリの動的リンクが必要かを検出する手段と、前記動的リンクライブラリ認証装置の判定した認証結果が合格である場合に起動時動的リンクを実施し、前記動的リンクライブラリ認証装置の判定した認証結果が不合格である場合に起動時動的リンクを中止する動的リンク手段とを備えるプログラム処理装置とを備えることを特徴とするプログラム管理システム。
  16.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記動的リンクライブラリ内の前記保護対象オブジェクトのハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイと当該位置サイズ付ハッシュアレイの電子署名を前記プログラムと前記動的リンクライブラリの組に関連付けて格納する手段と、前記プログラムと前記動的リンクライブラリの組に関連付いた位置サイズ付ハッシュアレイおよび当該位置サイズ付ハッシュアレイの電子署名を読出す手段とを備えたアレイ記憶装置と、
     前記動的リンクライブラリを格納する手段と、前記動的リンクライブラリを読出す手段とを備えたライブラリ記憶装置と、
     前記プログラムを格納する手段と、前記プログラムを読出す手段とを備えたプログラム記憶装置と、
     前記位置サイズ付ハッシュアレイ内の全てのタプルから、前記動的リンクライブラリ内の保護対象オブジェクトを特定する手段と、前記特定した保護対象オブジェクトのハッシュ値を算出する手段と、前記算出したハッシュ値と、前記位置サイズ付ハッシュアレイ内のタプルを構成するハッシュ値とを比較検証する手段と、公開鍵と電子署名を用いて、前記位置サイズ付ハッシュアレイを検証する手段と、認証結果を判定する判定手段とを備えた動的リンクライブラリ認証装置と、
     前記プログラムからライブラリロード指示を受け取る入力手段と、当該ロード指示からライブラリ識別子を抽出する解析手段と、前記動的リンクライブラリ認証装置の判定した認証結果が合格である場合に実行中動的リンクを実施し、前記動的リンクライブラリ認証装置の判定した認証結果が不合格である場合に実行中動的リンクを中止する動的リンク手段とを備えるプログラム処理装置とを備えることを特徴とするプログラム管理システム。
  17.  前記プログラム処理装置は、
     前記プログラムからのアドレス取得指示を受け取る入力手段と、
     前記アドレス取得指示から、オブジェクト名とライブラリ識別子を抽出する解析手段と、
     前記ライブラリ識別子の指すロード済みライブラリの動的シンボルテーブルから、前記オブジェクト名に該当するオブジェクトのエントリを検索し、オブジェクトの位置情報とサイズ情報を取得する検索手段と、
     前記ライブラリとプログラムの組に対応した位置サイズ付ハッシュアレイに、前記オブジェクトの位置情報とサイズ情報で指定されるオブジェクトが登録されているかどうかを判定するオブジェクト検証手段と、
     前記オブジェクトが登録されており、且つ前記ライブラリが認証済みである場合にはアドレスを出力し、前記オブジェクトが登録されていない、または前記ライブラリが認証されていない場合にはアドレスの出力を中止するアドレス出力手段とを備えたことを特徴とする請求項16記載のプログラム管理システム。
  18.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する手段と、前記保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する手段と、前記保護対象オブジェクトのハッシュ値と、前記保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する手段と、前記位置サイズ付ハッシュアレイを作成する手段と、公開鍵暗号方式の秘密鍵を用いて、前記位置サイズ付ハッシュアレイの電子署名を作成する手段とを備えた動的リンクライブラリ保護装置
    を備えることを特徴とする請求項15記載のプログラム管理システム。
  19.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する手段と、前記保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する手段と、前記保護対象オブジェクトのハッシュ値と、前記保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する手段と、前記位置サイズ付ハッシュアレイを作成する手段と、公開鍵暗号方式の秘密鍵を用いて、前記位置サイズ付ハッシュアレイの電子署名を作成する手段とを備えた動的リンクライブラリ保護装置
    を備えることを特徴とする請求項16記載のプログラム管理システム。
  20.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記プログラムから直接的にあるいは間接的に呼び出されるライブラリのそれぞれについて、請求項2記載の動的リンクライブラリの保護方法で作成する位置サイズ付ハッシュアレイとライブラリ識別子をペアにする工程と、
     前記プログラムについて作成されたそれぞれの前記位置サイズ付ハッシュアレイと前記ライブラリ識別子のペアの集合である統合ハッシュアレイを作成する工程とを備えることを特徴とする動的リンクライブラリ保護方法。
  21.  公開鍵暗号方式の秘密鍵を用いて、前記統合ハッシュアレイの電子署名を作成する工程を備えたことを特徴とする請求項20記載の動的リンクライブラリ保護方法。
  22.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記呼び出しプログラム毎に請求項21記載の動的リンクライブラリ保護方法で作成した統合ハッシュアレイと統合ハッシュアレイの電子署名を、前記呼び出しプログラムに関連付けてアレイ記憶装置に格納する工程を備えたことを特徴とする動的リンクライブラリ保護方法。
  23.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護方法において、
     前記プログラムを格納する工程と、
     保護対象として指定されたプログラムに保護対象であることを印づける工程とを備え、
     保護対象として指定されたプログラム対して、請求項22記載の動的リンクライブラリの保護方法で前記統合ハッシュアレイと前記電子署名を作成し格納する、
     保護対象として指定されていないプログラムに対しては、前記統合ハッシュアレイと前記電子署名を作成せず、格納も行わないことを特徴とする動的リンクライブラリ保護方法。
  24.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証方法において、
     前記プログラムについて作成されたそれぞれの、前記動的リンクライブラリ内の保護対象オブジェクト毎のハッシュ値と位置情報とサイズ情報を組み合わせたタプルの集合である位置サイズ付ハッシュアレイと前記ライブラリ識別子のペアの集合である統合ハッシュアレイ内から、前記動的リンクライブラリの識別子とペアにされた前記位置サイズ付ハッシュアレイを検索する工程と、
     前記位置サイズ付ハッシュアレイ内の全てのタプルから前記動的リンクライブラリ内の保護対象オブジェクトを特定する工程と、
     前記保護オブジェクトそれぞれのハッシュ値を算出する工程と、
     前記算出されたハッシュ値と、前記位置サイズ付ハッシュアレイを構成するハッシュ値とを比較検証する工程と、
     前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在しない場合に認証不合格と判定し、
     前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在する場合であり、且つ前記ペアを構成する位置サイズ付ハッシュアレイ内の全てのタプルについて前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記比較検証の結果が不一致になるタプルが存在する場合には認証結果を不合格と判定する工程とを備えたことを特徴とする動的リンクライブラリ認証方法。
  25.  公開鍵を用いて、前記統合ハッシュアレイを電子署名により検証する工程を備え、
     前記認証結果を判定する工程は、前記電子署名が前記統合ハッシュアレイの電子署名として適合し、且つ前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在し、且つ前記ペアを構成する位置サイズ付ハッシュアレイ内の全てのタプルにおいて、前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記電子署名が前記統合ハッシュアレイの電子署名として不適合であるか、または前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在しないか、または前記ペアを構成する位置サイズ付ハッシュアレイ内のいずれかのタプルにおいて、前記比較検証の結果に不一致がある場合には認証結果を不合格と判定することを特徴とする請求項24記載の動的リンクライブラリ認証方法。
  26.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証方法において、
     前記呼び出しプログラムに関連付けられた前記統合ハッシュアレイと前記統合ハッシュアレイの電子署名を読出す工程と、
     前記統合ハッシュアレイと前記統合ハッシュアレイの電子署名のいずれか一方、または両方の読出しに失敗した場合に、認証結果を不合格と判定する工程とを備え、
     前記統合ハッシュアレイと前記統合ハッシュアレイの電子署名の両方の読出しに成功した場合に、請求項25記載の動的リンクライブラリ認証方法を実施することを特徴とする動的リンクライブラリ認証方法。
  27.  前記プログラムを読出す工程と、
     前記プログラムが保護対象として印ついているか否か判別する工程とを備え、
     前記プログラムが保護対象として印ついている場合に、請求項26記載の動的リンクライブラリ認証方法を実施することを特徴とする動的リンクライブラリ認証方法。
  28.  プログラムから呼び出される動的リンクライブラリを保護する動的リンクライブラリ保護装置であって、
     前記動的リンクライブラリ内の保護対象オブジェクト毎のタプルの集合である位置サイズ付ハッシュアレイを前記動的リンクライブラリの識別子と共にペアにする手段と、
     前記プログラムから使用する動的リンクライブラリについて、前記ペアを集めた統合ハッシュアレイを作成する手段とを備えた動的リンクライブラリ保護装置。
  29.  公開鍵暗号方式の秘密鍵を用いて前記統合ハッシュアレイの電子署名を作成する手段を備えたことを特徴とする請求項28記載の動的リンクライブラリ保護装置。
  30.  プログラムから呼び出される動的リンクライブラリを認証する動的リンクライブラリ認証装置において、
     前記プログラムについて作成されたそれぞれの、前記動的リンクライブラリ内の保護対象オブジェクト毎のタプルの集合である位置サイズ付ハッシュアレイと前記ライブラリ識別子のペアの集合である統合ハッシュアレイ内から、前記動的リンクライブラリの識別子とペアにされた前記位置サイズ付ハッシュアレイを検索する手段と、
     前記位置サイズ付ハッシュアレイ内の全てのタプル内から前記動的リンクライブラリ内の保護対象オブジェクトを特定する手段と、
     前記保護オブジェクトのハッシュ値を算出する手段と、
     前記算出されたハッシュ値を、前記位置サイズ付きハッシュアレイを構成するハッシュ値とを比較検証する手段と、
     前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在しない場合に認証不合格と判定し、前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在する場合であり、且つ前記ペアを構成する位置サイズ付ハッシュアレイ内の全てのタプルについて前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記比較検証の結果が不一致になるタプルが存在する場合には認証結果を不合格と判定する判定手段を備えたことを特徴とする動的リンクライブラリ認証装置。
  31.  公開鍵および電子署名を用いて前記統合ハッシュアレイを検証する手段を備え、
     判定手段は、前記電子署名が前記統合ハッシュアレイの電子署名として適合し、且つ前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在し、かつ前記ペアを構成する位置サイズ付ハッシュアレイ内の全てのタプルにおいて、前記比較検証の結果が一致する場合には認証結果を合格と判定し、前記電子署名が前記統合ハッシュアレイの電子署名として不適合であるか、または前記動的リンクライブラリの識別子を含むペアが前記統合ハッシュアレイの中に存在しないか、または前記ペアを構成する位置サイズ付ハッシュアレイ内のいずれかのタプルにおいて、前記比較検証の結果に不一致がある場合には認証結果を不合格と判定することを特徴とする請求項30記載の動的リンクライブラリ認証装置。
  32.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記プログラムについて作成されたそれぞれの、前記動的リンクライブラリ内の保護対象オブジェクト毎のタプルの集合である位置サイズ付ハッシュアレイと前記ライブラリ識別子のペアの集合である統合ハッシュアレイと当該統合ハッシュアレイの電子署名を、前記プログラムに関連付けて格納する手段と、前記プログラムに関連付いた、統合ハッシュアレイと当該統合ハッシュアレイの電子署名を読出す手段とを備えたアレイ記憶装置と、
     前記動的リンクライブラリを格納する手段と、前記動的リンクライブラリを読出す手段とを備えたライブラリ記憶装置と、
     前記プログラムを格納する手段と、前記プログラムを読出す手段とを備えるプログラム記憶装置と、
     前記動的リンクライブラリの識別子とペアにされた位置サイズ付ハッシュアレイを統合ハッシュアレイ内の中から検索する手段と、前記位置サイズ付ハッシュアレイ内の全てのタプルから前記ライブラリ内の保護対象オブジェクトを特定する手段と、前記保護対象オブジェクトのハッシュ値を算出する手段と、前記算出されたハッシュ値を、前記位置サイズ付きハッシュアレイ内のタプルを構成するハッシュ値とを比較検証する手段と、公開鍵および電子署名を用いて前記統合ハッシュアレイを検証する手段と、認証結果を判定する判定手段を備え、前記統合ハッシュアレイを検証した結果をハッシュアレイ認証結果として出力し、前記比較検証の結果をライブラリ認証結果として出力する動的リンクライブラリ認証装置と、
     前記プログラムの起動指示を受け取る入力手段と、当該起動指示からプログラム識別子を抽出する解析手段と、読出したプログラムについてどのライブラリの動的リンクが必要かを検出する手段と、前記動的リンクライブラリ認証装置の出力するハッシュアレイ認証結果とライブラリ認証結果が共に合格である場合に起動時動的リンクを実施し、前記動的リンクライブラリ認証装置の出力するハッシュアレイ認証結果とライブラリ認証結果のいずれかまたは両方が不合格である場合に起動時動的リンクを中止する動的リンク手段とを備えるプログラム処理装置とを備えることを特徴とするプログラム管理システム。
  33.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記プログラム処理装置は、
     前記プログラムからのライブラリロード指示を受け取る入力手段と、
     当該ライブラリロード指示からライブラリ識別子を抽出する解析手段と、
     前記動的リンクライブラリ認証装置の出力するライブラリ認証結果が合格である場合に実行中動的リンクを実施し、前記動的リンクライブラリ認証装置の出力するライブラリ認証結果が不合格である場合に実行中動的リンクを中止する動的リンク手段とを備えたことを特徴とする請求項32記載のプログラム管理システム。
  34.  前記プログラム処理装置は、
     前記プログラムからのアドレス取得指示を受け取る入力手段と、
     当該アドレス取得指示からオブジェクト名とライブラリ識別子を抽出する解析手段と、
     当該該ライブラリ識別子の指すロード済み動的リンクライブラリの動的シンボルテーブルから、前記オブジェクト名に該当するオブジェクトのエントリを検索し、前記オブジェクトの位置情報およびサイズ情報を取得する検索手段と、
     前記プログラムに対応した統合ハッシュアレイに、前記ライブラリ識別子とペアになった位置サイズ付ハッシュアレイが登録されているか否かを判別し、位置サイズ付ハッシュアレイが登録されていなければ前記オブジェクトが登録されていないと判定し、位置サイズ付ハッシュアレイが登録されていれば更に、該当の位置サイズ付ハッシュアレイに、前記オブジェクトの位置情報とサイズ情報に基づいて指定されるオブジェクトが登録されているか否かを判定するオブジェクト検証手段と、
    前記オブジェクトが登録されており、且つ前記動的リンクライブラリが認証済みである場合にはアドレスを出力し、登録されていない、または前記動的リンクライブラリが認証されていない場合にはアドレスの出力を中止するアドレス出力手段とを備えたことを特徴とする請求項33記載のプログラム管理システム。
  35.  動的リンクライブラリを使用するプログラムを実行するプログラム管理システムにおいて、
     前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する手段と、前記保護対象オブジェクトにハッシュ関数を適用してハッシュ値を算出する手段と、前記保護対象オブジェクトのハッシュ値と、前記保護対象オブジェクトの位置情報およびサイズ情報とを組み合わせたタプルを作成する手段と、前記動的リンクライブラリ内の前記保護対象オブジェクトの前記タプルを集めた位置サイズ付ハッシュアレイを作成する手段とを備えたことを特徴とする動的リンクライブラリ保護装置と、
     前記位置サイズ付ハッシュアレイを前記動的リンクライブラリの識別子と共にペアにする手段と、前記プログラムから使用する動的リンクライブラリについて、前記ペアを集めた統合ハッシュアレイを作成する手段と、公開鍵暗号方式の秘密鍵を用いて前記統合ハッシュアレイの電子署名を作成する手段とを備えた動的リンクライブラリ保護装置と、
    を備えることを特徴とする請求項32記載のプログラム管理システム。
  36.  前記プログラム記憶装置は、前記格納されているプログラムに保護必要か否かを印つける手段と、前記プログラムに保護必要と印つけられているかどうかを得る手段とをさらに備えたプログラム記憶装置であり、
     前記プログラム処理装置は、読出されたプログラムが保護必要と印つけられているか否かを判定する手段をさらに備え、プログラムが保護必要と印つけられている場合に請求項9記載の動的リンクライブラリ認証方法を実施して動的リンクを実施し、プログラムが保護必要と印つけられていない場合に請求項9記載の動的リンクライブラリ認証方法の実施をスキップして動的リンクを実施するプログラム処理装置であることを特徴とする請求項15記載のプログラム管理システム。
  37.  前記プログラム記憶装置は、前記格納されているプログラムに保護必要か否かを印つける手段と、前記プログラムに保護必要と印つけられているかどうかを得る手段とをさらに備えたプログラム記憶装置であり、
     前記プログラム処理装置は、読出されたプログラムが保護必要と印つけられているか否かを判定する手段をさらに備え、プログラムが保護必要と印つけられている場合に請求項9記載の動的リンクライブラリ認証方法を実施して動的リンクを実施し、プログラムが保護必要と印つけられていない場合に請求項9記載の動的リンクライブラリ認証方法の実施をスキップして動的リンクを実施するプログラム処理装置であることを特徴とする請求項16記載のプログラム管理システム。
  38.  前記プログラム記憶装置は、格納されているプログラムに保護必要か否か印つける手段と、保護必要と印付けられているかどうかを得る手段とを備えたプログラム記憶装置であり、
     前記プログラム処理装置は、読出されたプログラムが保護必要と印つけられていたものかどうかを判定する手段を備え、プログラムが保護必要と印付けられている場合に請求項26記載の動的リンクライブラリ認証方法の認証を実施し、プログラムが保護必要と印つけられていない場合に請求項26記載の動的リンクライブラリ認証方法の認証をスキップして動的リンクを実施するプログラム処理装置であることを特徴とする請求項32記載のプログラム管理システム。
  39.  プログラムおよび前記プログラムから呼び出される動的リンクライブラリを保護するプログラムおよび動的リンクライブラリ保護方法において、
     保護対象と印づけたプログラムに公開鍵暗号の秘密鍵を用いて電子署名を作成する工程と、
     前記プログラムの電子署名を前記プログラムに関連付けて格納する工程と、
     請求項5記載の動的リンクライブラリ保護方法を実施する工程とを備えることを特徴とするプログラムおよび動的リンクライブラリ保護方法。
  40.  プログラムおよび前記プログラムから呼び出される動的リンクライブラリを保護するプログラムおよび動的リンクライブラリ保護方法において、
     保護対象と印づけたプログラムに公開鍵暗号の秘密鍵を用いて電子署名を作成する工程と、
     前記プログラムの電子署名を前記プログラムに関連付けて格納する工程と、
     請求項23記載の動的リンクライブラリ保護方法を実施する工程とを備えることを特徴とするプログラムおよび動的リンクライブラリ保護方法。
  41.  プログラムおよび前記プログラムから呼び出される動的リンクライブラリを認証するプログラムおよび動的リンクライブラリ認証方法において、
     請求項10記載の動的リンクライブラリ認証方法を実施する工程と、
     前記プログラムが保護対象として印ついている場合には、前記プログラムに関連づいた電子署名を読出す工程と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する工程とを備え、
     前記電子署名の読出しに失敗した場合には認証結果を不合格とし、前記電子署名が読出しに成功し、且つ前記プログラムの署名として適合している場合には認証結果を合格とし、前記電子署名が読出しに成功しても、前記プログラムの署名として不適合の場合には認証結果を不合格とすることを特徴とするプログラムおよび動的リンクライブラリ認証方法。
  42.  プログラムおよび前記プログラムから呼び出される動的リンクライブラリを認証するプログラムおよび動的リンクライブラリ認証方法において、
     請求項27記載の動的リンクライブラリ認証方法を実施する工程と、
     前記プログラムが保護対象として印ついている場合には、前記プログラムに関連づいた電子署名を読出す工程と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する工程とを備え、
     前記電子署名の読出しに失敗した場合には認証結果を不合格とし、前記電子署名が読出しに成功し、且つ前記プログラムの署名として適合している場合には認証結果を合格とし、前記電子署名が読出しに成功しても、前記プログラムの署名として不適合の場合には認証結果を不合格とすることを特徴とするプログラムおよび動的リンクライブラリ認証方法。
  43.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項15記載のプログラム管理システム。
  44.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項15記載のプログラム管理システム。
  45.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項15記載のプログラム管理システム。
  46.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項15記載のプログラム管理システム。
  47.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項16記載のプログラム管理システム。
  48.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項16記載のプログラム管理システム。
  49.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項16記載のプログラム管理システム。
  50.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項16記載のプログラム管理システム。
  51.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項32記載のプログラム管理システム。
  52.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項39記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項32記載のプログラム管理システム。
  53.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項41記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項32記載のプログラム管理システム。
  54.  前記プログラムの電子署名を格納する手段と、前記プログラムの電子署名を読出す手段とを備えるプログラム電子署名記憶装置と、
     公開鍵暗号方式の秘密鍵を用いて前記プログラムの電子署名を作成する手段を備えるプログラム保護装置と、
     公開鍵を用いて前記プログラムを前記電子署名により検証する手段を備えるプログラム検証装置とを備え、
     請求項40記載のプログラムおよび動的リンクライブラリ保護方法により前記プログラムおよび前記動的リンクライブラリを保護し、請求項42記載のプログラムおよび動的リンクライブラリ認証方法で前記プログラム及び動的リンクライブラリを認証することを特徴とする請求項32記載のプログラム管理システム。
  55.  前記ライブラリ内のオブジェクトを保護対象として指定する工程は、
     オブジェクト名を明に指定し、さらに前記ライブラリのシンボルテーブルを参照して、前記オブジェクト名から前記オブジェクトの位置情報およびサイズ情報を得る工程を備えたことを特徴とする請求項1記載の動的リンクライブラリ保護方法。
  56.  前記動的リンクライブラリを構成するオブジェクトから、保護すべき保護対象オブジェクトを指定する手段は、
     オブジェクト名を明に指定し、さらに前記ライブラリのシンボルテーブルを参照して、前記オブジェクト名から前記オブジェクトの位置情報およびサイズ情報を得る手段を備えたことを特徴とする請求項11記載の動的リンクライブラリ保護装置。
PCT/JP2013/052746 2012-02-13 2013-02-06 プログラム管理システム WO2013121951A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012028350A JP2015084006A (ja) 2012-02-13 2012-02-13 動的リンクライブラリ保護方法、動的リンクライブラリ認証方法、動的リンクライブラリ保護装置、動的リンクライブラリ認証装置、プログラム管理システム、プログラムおよび動的リンクライブラリ保護方法、プログラムおよび動的リンクライブラリ認証方法
JP2012-028350 2012-02-13

Publications (1)

Publication Number Publication Date
WO2013121951A1 true WO2013121951A1 (ja) 2013-08-22

Family

ID=48984063

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/052746 WO2013121951A1 (ja) 2012-02-13 2013-02-06 プログラム管理システム

Country Status (2)

Country Link
JP (1) JP2015084006A (ja)
WO (1) WO2013121951A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018504829A (ja) * 2014-12-24 2018-02-15 バンコ デ メヒコ セキュリティ文書の認証および確認を、セキュリティ文書の作成に関与する異なるプロセスにおける相対的位置の変動の測定に基づいて行うための方法
WO2018134925A1 (ja) * 2017-01-18 2018-07-26 富士通株式会社 データ送受信方法、データ送信装置、データ受信装置、データ送信プログラム、データ受信プログラム及びデータ送受信システム
WO2021059475A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
CN116204429A (zh) * 2023-02-21 2023-06-02 深圳市道旅旅游科技股份有限公司 一种代码组织及其调试方法、系统及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449617B2 (en) 2018-02-02 2022-09-20 Nec Corporation Information processing device, information processing method, and storage medium
JP7262269B2 (ja) * 2019-03-27 2023-04-21 キヤノン株式会社 情報処理装置、及び情報処理装置の制御方法、プログラム
WO2021044578A1 (ja) * 2019-09-05 2021-03-11 三菱電機株式会社 情報処理装置、情報処理方法、及び情報処理プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01163871A (ja) * 1987-12-21 1989-06-28 Hitachi Ltd 伝票圧縮文の作成方法
WO2001082267A1 (fr) * 2000-04-20 2001-11-01 Yutaka Yasukura Procédé de demande d'informations électroniques
JP2003508995A (ja) * 1999-09-07 2003-03-04 イーエムシー・コーポレーション 内容が参照可能な情報を、安全に記憶し転送し検索するためのシステムおよび方法
JP2007506187A (ja) * 2003-09-18 2007-03-15 アップル コンピュータ、インコーポレイテッド インクリメンタルなコード署名の方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01163871A (ja) * 1987-12-21 1989-06-28 Hitachi Ltd 伝票圧縮文の作成方法
JP2003508995A (ja) * 1999-09-07 2003-03-04 イーエムシー・コーポレーション 内容が参照可能な情報を、安全に記憶し転送し検索するためのシステムおよび方法
WO2001082267A1 (fr) * 2000-04-20 2001-11-01 Yutaka Yasukura Procédé de demande d'informations électroniques
JP2007506187A (ja) * 2003-09-18 2007-03-15 アップル コンピュータ、インコーポレイテッド インクリメンタルなコード署名の方法及び装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018504829A (ja) * 2014-12-24 2018-02-15 バンコ デ メヒコ セキュリティ文書の認証および確認を、セキュリティ文書の作成に関与する異なるプロセスにおける相対的位置の変動の測定に基づいて行うための方法
WO2018134925A1 (ja) * 2017-01-18 2018-07-26 富士通株式会社 データ送受信方法、データ送信装置、データ受信装置、データ送信プログラム、データ受信プログラム及びデータ送受信システム
WO2021059475A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
JPWO2021059475A1 (ja) * 2019-09-27 2021-04-01
JP7283551B2 (ja) 2019-09-27 2023-05-30 日本電気株式会社 ホワイトリスト生成装置、ホワイトリスト生成方法、及び、ホワイトリスト生成プログラム
CN116204429A (zh) * 2023-02-21 2023-06-02 深圳市道旅旅游科技股份有限公司 一种代码组织及其调试方法、系统及存储介质
CN116204429B (zh) * 2023-02-21 2023-12-08 深圳市道旅旅游科技股份有限公司 一种代码组织及其调试方法、系统及存储介质

Also Published As

Publication number Publication date
JP2015084006A (ja) 2015-04-30

Similar Documents

Publication Publication Date Title
WO2013121951A1 (ja) プログラム管理システム
JP7092868B2 (ja) 分散型台帳を用いるデジタルアセット・トレーサビリティおよび保証
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
US7962952B2 (en) Information processing apparatus that executes program and program control method for executing program
US7739516B2 (en) Import address table verification
CN105631337B (zh) 控制机器代码的本机图像访问操作系统资源的系统及方法
KR102044046B1 (ko) 텔레메트리 파일 해시 및 충돌 검출 기법
US20160098555A1 (en) Program code attestation circuitry, a data processing apparatus including such program code attestation circuitry and a program attestation method
US20200110905A1 (en) Security hardened software footprint in a computing environment
US8060747B1 (en) Digital signatures for embedded code
CN109271789B (zh) 恶意进程检测方法、装置、电子设备及存储介质
JP2011511331A (ja) セキュアブート方法及びセキュアブート装置
US20220138325A1 (en) Secure enclave pathing configuration for data confidence fabrics
CN110826091B (zh) 一种文件签名方法、装置、电子设备及可读存储介质
JP2005293109A (ja) ソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラム
US20160239662A1 (en) Control system and authentication device
US8140861B2 (en) Method and system for content-based encrypted access to a database
US11722324B2 (en) Secure and accountable execution of robotic process automation
CN103136474A (zh) 检测文件的方法和装置
Detken et al. Software-design for internal security checks with dynamic integrity measurement (DIM)
He et al. Automatically identifying cve affected versions with patches and developer logs
CN115221051B (zh) 一种用于数据api执行过程验证的程序插桩方法及装置
Cam et al. Detect repackaged android applications by using representative graphs
CN113139197B (zh) 一种项目验签方法、装置和电子设备
Chi LibDetector: Version Identification of Libraries in Android Applications

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13748501

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13748501

Country of ref document: EP

Kind code of ref document: A1