Software self-checking mechanisms are described for improving software tamper resistance and/or reliability. Redundant tests are performed to detect modifications to a program while it is running. Modifications are recorded or reported. Embodiments of the software self-checking mechanisms can be im
Software self-checking mechanisms are described for improving software tamper resistance and/or reliability. Redundant tests are performed to detect modifications to a program while it is running. Modifications are recorded or reported. Embodiments of the software self-checking mechanisms can be implemented such that they are relatively stealthy and robust, and so that it they are compatible with copy-specific static watermarking and other tamper-resistance techniques.
대표청구항▼
What is claimed is: 1. A method of creating a self-checking software program, the program being embodied on a computer-readable medium, the method comprising: (a) inserting multiple self-checking code sequences into the program's source code; (a)(1) compiling the program's source code to form objec
What is claimed is: 1. A method of creating a self-checking software program, the program being embodied on a computer-readable medium, the method comprising: (a) inserting multiple self-checking code sequences into the program's source code; (a)(1) compiling the program's source code to form object code; (a)(2) rearranging basic blocks of the program's object code such that the distribution of the multiple self-checking code sequences is changed; (b) inserting a plurality of correctors into the rearranged object code; (c) assigning the self-checking code sequences to overlapping portions of the program, each of said portions containing at least one corrector, and at least some of said portions containing at least part of one or more of said self-checking code sequences, wherein each self-checking code sequence is operable to calculate a function of at least one of said portions; and (d) assigning values to the correctors, the value of each corrector being chosen such that the function calculated by a self-checking code sequence assigned to a given portion of the program containing a given corrector results in a predefined value when the given portion has not been improperly modified. 2. The method of claim 1, in which the self-checking code sequences are distributed in a relatively uniform fashion throughout the program's object code. 3. The method of claim 2, in which the plurality of correctors are inserted between basic blocks of the program's object code. 4. The method of claim 1, further comprising: (c)(1) inserting watermark values into the program. 5. The method of claim 1, in which the self-checking code sequences are assigned to overlapping portions of the program in a relatively random fashion. 6. The method of claim 5, further comprising: (c)(1) determining whether a graph representing the assignment of self-checking code sequences to overlapping portions of the program is strongly connected; and (c)(2) repeating step (c) if the graph is not strongly connected. 7. The method of claim 1, in which the function that each self-checking code sequence is operable to calculate comprises a hash function. 8. The method of claim 7, in which the hash function is invertible. 9. The method of claim 8, in which the hash function is relatively lightweight. 10. The method of claim 7, in which a first class of said multiple self-checking code sequences calculates a first hash function and a second class of said multiple self-checking code sequences calculates a second hash function that differs at least in part from the first hash function. 11. The method of claim 10, in which a plurality of the first class of self-checking code sequences are customized, such that each of said plurality of customized self-checking code sequences differs, at least in part, from other self-checking code sequences in the first class. 12. The method of claim 4, in which steps (a) through (c) are performed before the program is distributed to an end user, and steps (c)(1) and (d) are performed after the program is distributed to the end user. 13. The method of claim 1, in which the self-checking code sequences are further operable to trigger a tamper response mechanism when an improper modification of the program is detected. 14. A method of creating a dynamic self-checking program, the program being embodied on a computer-readable medium, the method comprising: inserting self-checking code into the program's source code, the self-checking code being operable to perform dynamic integrity checks on overlapping intervals of the program, at least some of the overlapping intervals including portions of the self-checking code; compiling the program's source code to form object code; rearranging basic blocks of the program's object code such that the distribution of the multiple self-checking code sequences is changed inserting a plurality of corrector values into the rearranged object code, the inserted corrector values being chosen such that the dynamic integrity checks performed by the self-checking code result in a predefined value or values when the program has not been improperly modified. 15. A self-checking program stored in a non-volatile memory, the program comprising: a first code sequence configured to perform a first integrity check on a first portion of the program while the program is running; a first corrector contained within the first portion of the program, the first corrector being assigned a value such that computation of a first hash function results in a first predefined value when the first portion of the program has not been improperly modified; a second code sequence configured to perform a second integrity check on a second portion of the program while the program is running; wherein the first portion of the program and the second portion of the program overlap at least in part, and wherein the integrity of the first code sequence is checked by at least one code sequence and the integrity of the second code sequence is checked by at least one code sequence. 16. The self-checking program of claim 15, in which the first code sequence is further configured to trigger a first tamper response mechanism when the first integrity check indicates that the program has been improperly modified, and in which the second code sequence is further configured to trigger a second tamper response mechanism when the second integrity check indicates that the program has been improperly modified. 17. The self-checking program of claim 16, in which the first tamper response mechanism and the second tamper response mechanism are the same. 18. The self-checking program of claim 15, in which the first integrity check comprises computation of the first hash function of the first portion of the program, and in which the second integrity check comprises computation of a second hash function of the second portion of the program. 19. The self-checking program of claim 18, further comprising: a second corrector contained within the second portion of the program, the second corrector being assigned a value such that computation of the second hash function results in a second predefined value when the second portion of the program has not been improperly modified. 20. The self-checking program of claim 19, wherein the first and second predefined values are the same. 21. The self-checking program of claim 20, wherein the first and second predefined values are different. 22. The self-checking program of claim 18, in which the first hash function is different from the second hash function. 23. The self-checking program of claim 18, in which the first hash function and the second hash function are relatively lightweight. 24. The self-checking program of claim 18, in which the first hash function and the second hash function are relatively easily invertible. 25. The self-checking program of claim 18, in which the first hash function and the second hash function are summarizable. 26. The self-checking program of claim 18, in which the first hash function and the second hash function comprise chained linear hash functions.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (49)
Spyker, Andrew W.; Williams, Byron Allen, Apparatus and method for ensuring data integrity of unauthenticated code.
Henzinger Monika Hildegard ; Leung Shun-Tak Albert ; Sites Richard L. ; Vandevoorde Mark T. ; Weihl William Edward, Computer method and apparatus for analyzing program instructions executing in a computer system.
Stefik Mark J. (Woodside CA) Russell Daniel M. (Palo Alto CA) Bobrow Daniel G. (Palo Alto CA) Henderson ; Jr. D. Austin (La Honda CA), Document processing system utilizing document service cards to provide document processing services.
Alcorn Allan E. ; Barnett Michael ; Giacalone ; Jr. Louis D. ; Levinthal Adam E., Electronic casino gaming system with improved play capacity, authentication and security.
Stefik Mark J. (Woodside CA) Bobrow Daniel G. (Palo Alto CA) Card Stuart K. (Los Altos CA) Casey Michalene M. (Morgan Hill CA) Goldstein Richard J. (San Francisco CA) Lamming Michael G. (Cambridge CA, Interactive contents revealing storage device.
Van Wie David M. ; Weber Robert P., Steganographic techniques for securely delivering electronic digital rights management control information over insecure.
David M. Van Wie ; Robert P. Weber, Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels.
Van Wie David M. ; Weber Robert P., Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels.
Van Wie, David M.; Weber, Robert P., Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels.
Manferdelli,John L.; Marr,Michael David; Krishnaswamy,Vinay; Jakubowski,Mariusz H., System and method for interfacing a software process to secure repositories.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., System and methods for secure transaction management and electronic rights protection.
Stefik Mark J. (Woodside CA) Bobrow Daniel G. (Palo Alto CA) Pirolli Peter L. T. (El Cerrito CA), System for controlling the distribution and use of composite digital works.
Stefik Mark J. (Woodside CA) Merkle Ralph C. (Sunnyvale CA) Pirolli Peter L. T. (El Cerrito CA), System for controlling the distribution and use of digital works having a fee reporting mechanism.
Shear Victor H. ; Van Wie David M. ; Weber Robert P., Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information.
Ginter Karl L. ; Shear Victor H. ; Sibert W. Olin ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for secure transaction management and electronic rights protection.
Ginter, Karl L.; Shear, Victor H.; Spahn, Francis J.; Van Wie, David M., Systems and methods for secure transaction management and electronic rights protection.
Karl L. Ginter ; Victor H. Shear ; Francis J. Spahn ; David M. Van Wie, Systems and methods for secure transaction management and electronic rights protection.
Karl L. Ginter ; Victor H. Shear ; Francis J. Spahn ; David M. Van Wie, Systems and methods for secure transaction management and electronic rights protection.
Karl L. Ginter ; Victor H. Shear ; Francis J. Spahn ; David M. Van Wie, Systems and methods for secure transaction management and electronic rights protection.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M., Systems and methods for the secure transaction management and electronic rights protection.
Venkatesan, Ramarathnam; Vazirani, Vijay, Technique for producing, through watermarking, highly tamper-resistant executable code and resulting “watermarked” code so formed.
Hall Edwin J. ; Shear Victor H. ; Tomasello Luke S. ; Van Wie David M. ; Weber Robert P. ; Worsencroft Kim ; Xu Xuejun, Techniques for defining using and manipulating rights management data structures.
Hall Edwin J. ; Shear Victor H. ; Tomasello Luke S. ; Van Wie David M. ; Weber Robert P. ; Worsencroft Kim ; Xu Xuejun, Techniques for defining, using and manipulating rights management data structures.
Ginter Karl L. ; Shear Victor H. ; Spahn Francis J. ; Van Wie David M. ; Weber Robert P., Trusted and secure techniques, systems and methods for item delivery and execution.
Ginter, Karl L.; Shear, Victor H.; Spahn, Francis J.; Van Wie, David M.; Weber, Robert P., Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management.
Forrester, Ronald James; Starnes, William Wyatt; Tycksen, Jr., Frank A., Method and apparatus for lifecycle integrity verification of virtual machines.
Hardjono, Thomas Parasu; Bleckmann, David Maurits; Starnes, William Wyatt; Andersen, Bradley Douglas, Method and system to issue trust score certificates for networked devices using a trust scoring service.
Bleckmann, David Maurits; Starnes, William Wyatt; Andersen, Bradley Douglas, Method to control access between network endpoints based on trust scores calculated from information system component analysis.
Petrovic, Rade; Tehranchi, Babak; Winograd, Joseph M.; Jemili, Kanaan, Methods and apparatus for enhancing the robustness of watermark extraction from digital host content.
Aaron, Jeffrey A., Methods, systems and computer program products for detecting tampering of electronic equipment based on constrained time to obtain computational result.
Kim, Ji-Soo; Kim, Seon-Taek; Kim, Byung-Gook; Lee, Byoung-Kook; Park, Chan-Ik, Portable storage device and method of managing resource of the portable storage device.
Mir, Talhah Munawar; Revuru, Anil Kumar Venkata; Manohar, Deepak J.; Batta, Vineet, Threat analysis and modeling during a software development lifecycle of a software application.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.