IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0454037
(2003-06-04)
|
등록번호 |
US-7269671
(2007-09-11)
|
발명자
/ 주소 |
- Pande,Santosh
- Zhang,Tao
- Dos Santos,Andre
- Bruecklmayr,Franz Josef
|
출원인 / 주소 |
- Georgia Tech Research Corporation
- Infineon Technologies AG
|
대리인 / 주소 |
Sutherland Asbill & Brennan LLP
|
인용정보 |
피인용 횟수 :
1 인용 특허 :
3 |
초록
▼
Systems, methods and computer program products partition a whole program when it does not fit in a device's memory. Minimal, safe program partitions are downloaded from the server on demand into the embedded device just before their execution. Code and data of the program are partitioned such that n
Systems, methods and computer program products partition a whole program when it does not fit in a device's memory. Minimal, safe program partitions are downloaded from the server on demand into the embedded device just before their execution. Code and data of the program are partitioned such that no information regarding the control flow behavior of the program is leaked out. Thus, by observing the program partitions that are downloaded from the server to the device, an attacker is unable to guess which branches are taken in the program and what is the control flow of the program. This property of tamper resistance is valuable for secure embedded devices, such as smart cards, which could hold sensitive information and/or carry out critical computation such as financial transactions.
대표청구항
▼
That which is claimed: 1. A method of transmitting a program to a device, comprising: analyzing a program to identify one or more executable functions in said program; determining whether each of the one or more executable functions is a recurring or non-recurring function, wherein a non-recurring
That which is claimed: 1. A method of transmitting a program to a device, comprising: analyzing a program to identify one or more executable functions in said program; determining whether each of the one or more executable functions is a recurring or non-recurring function, wherein a non-recurring function is executed only once during operation of the program, and wherein a recurring function is executed more than once during operation of the program; partitioning the program into a plurality of program partitions based at least in part on the determination of whether each of the one or more executable functions is a recurring or non-recurring function; and transmitting the plurality of program partitions to the device, wherein each of said plurality of program partitions are transmitted to the device only once to avoid revealing control flow information of said program during the transmission. 2. The method of claim 1, wherein analyzing said program is implemented by computer program code. 3. The method of claim 1, wherein partitioning the program into the plurality of program partitions is implemented by computer program code. 4. The method of claim 1, further comprising merging at least two of said plurality of program partitions to generate a merged program partition. 5. The method of claim 4, further comprising determining a memory capacity of the device prior to merging at least two of said plurality of program partitions to generate the merged program partition. 6. The method of claim 4, further comprising transmitting said merged program partition to the device. 7. The method of claim 1, wherein partitioning the program into a plurality of program partitions comprises partitioning the program into a plurality of program partitions based at least in part on the identification of one ore more minimal safe partitions, wherein at least one of the one or more minimal safe partitions comprises two or more executable functions that form a program loop. 8. The method of claim 7, wherein each of the minimal safe partitions are transmitted in a fixed sequence to the device during execution of a recurring or non-recurring function. 9. The method of claim 7, further comprising merging at least two of said minimal safe program partitions to create a safe merged program partition. 10. The method of claim 1, further comprising reserving, in said device, memory allocated for caching at least one of said plurality of program partitions. 11. A computer program product for partitioning a program for transmission to a device, said computer program product comprising: a computer usable medium having computer-readable code means embodied in said medium, said computer-readable code means comprising: computer readable program code means for analyzing a program to identify one or more executable functions in said program; computer readable program code means for determining whether each of the one or more executable functions is a recurring and or non-recurring function, wherein a non-recurring function is executed only once during operation of the program, and wherein a recurring function is executed more than once during operation of the program; computer readable program code means for partitioning the program into a plurality of program partitions based at least in part on the determination of whether each of the one or more executable functions is a recurring or non-recurring function; and computer readable program code means for transmitting the plurality of program partitions to the device, wherein each of said plurality of program partitions are transmitted to the device only once to avoid revealing control flow information of said program during the transmission. 12. The computer program product of claim 11, further comprising computer readable program code means for merging at least two of said plurality of program partitions to generate a merged program partition. 13. The computer program product of claim 12, further comprising computer readable program code means for identifying the memory capacity of the device prior to merging at least two of said plurality of program partitions. 14. The computer program product of claim 12, further comprising computer readable program code means for transmitting said merged program partition to the device. 15. The computer program product of claim 11, wherein the computer readable program code means for partitioning the program into a plurality of program partitions comprises computer readable program code means for partitioning the program into a plurality of program partitions based at least in part on the identification of one ore more minimal safe partitions, wherein at least one of the one or more minimal safe partitions comprises two or more executable functions that form a program loop. 16. The computer program product of claim 15, wherein each of the safe partitions are transmitted in a fixed sequence to the device during execution of a recurring or non-recurring function. 17. The computer program product of claim 15, further comprising computer readable program code means for merging at least two of said minimal safe program partitions to create a safe merged program partition. 18. The computer program product of claim 11, further comprising computer readable program code means for reserving, in said device, memory allocated for caching at least one of said plurality of program partitions. 19. A method for optimizing the performance of a device, comprising: analyzing a program to identify at least one recurring and at least one non-recurring function in said program; and using the identification of said recurring and non-recurring functions to partition the program into a plurality of program partitions; and transmitting to the device a request that the device memory be divided into ideal code and data segment components for receiving the plurality of program partitions.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.