WO2006061141A1 - Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode - Google Patents
Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode Download PDFInfo
- Publication number
- WO2006061141A1 WO2006061141A1 PCT/EP2005/012854 EP2005012854W WO2006061141A1 WO 2006061141 A1 WO2006061141 A1 WO 2006061141A1 EP 2005012854 W EP2005012854 W EP 2005012854W WO 2006061141 A1 WO2006061141 A1 WO 2006061141A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- program code
- library
- data carrier
- format
- binding
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 45
- 238000004590 computer program Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 33
- 238000005516 engineering process Methods 0.000 abstract description 2
- 230000018109 developmental process Effects 0.000 description 15
- 239000000969 carrier Substances 0.000 description 11
- 230000001419 dependent effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
Definitions
- the invention relates generally to the field of portable data carriers and the creation of software for such data carriers.
- the invention relates to the field of generating program code for a portable data carrier, loading the program code into the data carrier and providing the program code for execution by a processor of the data carrier.
- Portable data carriers in the sense of the present document can be designed as smart cards or as compact chip modules and in some embodiments of the invention as resource-limited systems in other designs.
- aspects of security and spy protection are important factors in portable data carriers, because portable data carriers are often used for safety-critical applications and could be damaged by unauthorized use or spying.
- the reloading of Program code allows to reveal the problem, if possible, no internals of the disk.
- the external developer of the program code to be reloaded may require or determine information about the internal structure and internal program structures of the data carrier. For example, platform-dependent functions of the data carrier should remain as concealed as possible, even if the program code to be reloaded finally uses these functions.
- the invention has the object to solve the problem just mentioned in whole or in part.
- the invention seeks to provide a secure and privacy-preserving technique that permits the generation of program code in a portable media loading format and the provision of executable program code in the portable data carrier.
- the invention is based on the basic idea of providing only a pseudo-library outside the data carrier, which differs from a library on the data carrier in such a way that at least some internals of the library located on the data carrier are missing or hidden or obfuscated in the pseudo-library.
- An external programmer needs only the pseudo-library - and possibly the associated documentation - to be made accessible. In this way, information from which third parties may may draw unwanted inferences on internals of the data carrier, kept secret.
- the invention enables a secure development of reloadable program code also by third parties, for example by independent software companies or industrial users of data carriers.
- Binding (linking) of the program code in the object code format to the dummy library is at least partially accomplished.
- the program code in the load format can still have symbolic information, as they are usually contained in the object code format.
- a program code completely linked to the pseudo-library is generated in the load format.
- Another binding process takes place on the data carrier, which in preferred embodiments is designed as a dynamic binding process.
- This binding process can take place in different embodiments at the time of loading or at runtime or partly for loading and partly at runtime.
- the binding process carried out on the data medium takes place opposite the confidential library located on the data carrier.
- the binding performed outside of the volume is a virtual binding to virtual functions of the dummy library. Accordingly, in some embodiments within the volume, virtual function calls in the program code may be replaced in the load format by actual function calls of the library located on the volume.
- the program code in the loading format contains jump tables or look-up tables. points that are filled only when binding on the disk with referring to the real library entries.
- virtual function calls are resolved in the library located on the disk. This can be done at loading time or at runtime or partly for loading and partly at runtime.
- the pseudo-library provides a call interface that is different than the call interface of the on-disk library.
- the invocation interface provided by the pseudo-library may be a virtual invocation interface.
- authentication data are created in preferred embodiments and checked when loading the program code.
- flexible and automatic recognition of the reloaded program code by the operating system and / or application programs of the data carrier is made possible in that the functions provided by the program code are entered in a management unit of the data carrier.
- the generated and loaded into the disk program code may be, for example, an application program or a kernel module.
- the program code is native program code.
- a native program code is to be considered here in particular binary code, by the processor of the disk without an intermediate interpretation and executable without a virtual machine.
- the computer program product according to the invention has program instructions in order to implement the method according to the invention or program instructions which have been generated by the method according to the invention.
- a computer program product may be a physical medium, e.g. a semiconductor memory or a floppy disk or a CD-ROM.
- the computer program product may also be a non-physical medium, e.g. a signal transmitted over a computer network.
- the computer program product may include software for a program development system or a portable data carrier or may be used in connection with the manufacture or initialization or personalization or operation of a portable data carrier.
- the device according to the invention can be a program development system or a portable data carrier.
- the computer program product and / or the device have features which correspond to the features mentioned in the present description and / or the features mentioned in the dependent method claims.
- FIG. 1 is a conceptual representation of the data structures and data processing stages in a program development system and a data carrier according to an embodiment of the invention
- FIG. 2 is a flowchart of a method for generating program code in a load format executed in the program development system of FIG. 1;
- FIG. 3 is a flow chart of a method for providing executable code executed in the data carrier of FIG. 1;
- Fig. 4 is an exemplary illustration of the relationship between a disk-based library and a dummy library.
- a program development system 10 and a portable data carrier 12 are shown schematically.
- the program development system 10 may be configured as a custom personal computer or workstation with appropriate software.
- the data carrier 12 is a chip card or a chip module with hardware known per se.
- the data carrier 12 contains a single-chip microcontroller with a processor, a plurality of memory fields configured in different technologies, and an interface circuit for wired or wireless communication.
- the generation of the program code is based on a source text 14, which is translated by a compiler 16 into a corresponding program code 18 in object code format.
- a dummy library 20 is available, which will be discussed in more detail later.
- a linker 22 generates at least partially bound (linked) program code 24 from the program code 18 present in the object code format and the dummy library 20 in a loading format.
- an authentication generator 26 is used, the authentication data 28 - for example, a suitable test sum of the program code 24 - generated.
- the program code 30 in the loading format saved by the authentication data 28 forms the result of the development process carried out with the aid of the program development system 10. This program code 30 is stored for later use.
- the program code 30 may be loaded during operation of the data carrier 12 therein.
- the charging process can take place, for example, at the end customer or in connection with the production or initialization or personalization of the data carrier 12.
- the program code 30 is present in the program development system 10 or an initialization or personalization device or an end customer terminal and is transmitted to the data carrier 12.
- the data carrier 12 is in operation. This is understood to mean that the program code 30 is actively processed and changed during the loading process by the processor of the data carrier 12.
- Fig. 1 is indicated by a dashed arrow that the secure program code 30 in the loading format - optionally via one of the above-mentioned intermediate stations - is taken over by a loader 32 in the disk 12.
- An authentication verifier 34 ensures that the program code 30 is unadulterated and has been provided with the authentication data 28 by an authorized authority. If the test is successful, the program code 24 in the loading format is bound by a linker 36 with respect to a library 38 stored in the data carrier 12. This process of dynamic linking will be discussed in more detail below.
- the linker 36 generates executable program code 40 that is now ready for execution by the processor of the volume 12.
- the executable program code 40 is an application program (application) for the data carrier 12.
- the executable program code 40 is a kernel module of the data carrier 12, ie, a part of the operating system, a driver, or a library .
- the kernel module can, for example, provide a driver for memory management or a crypto library or functionalities for communication with various interfaces, eg USB, wireless, TCP / IP.
- the functions of the executable program code 40 are provided to the operating system of the data carrier 12 and the application programs stored on the data carrier 12. In some embodiments, a flexible recognition of the loaded functionality takes place here.
- the executable program code 40 - in particular if it is a kernel module - provides a previously specified interface.
- This administrative unit can be, for example, a registration file (registry) or another data structure of the data carrier 12.
- FIG. 2 again illustrates the method sequence in the program development system 10.
- the program code 18 is generated in object code format.
- Step 52 involves binding the program code 18 to the dummy library 20 to obtain the unprotected program code 24 in the loading format.
- the authentication data 28 and the secure program code 30 are created in the loading format.
- the flowchart shown in FIG. 3 summarizes the method steps carried out in the data carrier 12.
- step 60 Upon reading in of the saved program code 30 in step 56 and the authentication check in step 58, in step 60 the binding of the program code 24 to the library 38 stored in the data carrier 12 is completed to obtain the executable program code 40.
- the executable program code 40 is provided for execution in step 62 and optionally entered in the management unit of the data carrier 12.
- the pseudo-library 20 differs from the library 38 stored in the data carrier 12 in particular in that the pseudo-library 20 does not contain the actual functions of the library 38 stored on the data carrier 12, but only functions which are referred to herein as "virtual functions".
- the binding process outside the data carrier 12 thus takes place virtually, ie against virtual functions of the dummy library 20 instead of the actual functions of the library 38 contained in the data carrier 12.
- a link against a virtual call interface of the dummy library 20 takes place against the real call interface of the library 38 in the disk 12 instead.
- the relationship just described between the pseudo library 20 and the library 38 contained in the data carrier 12 is illustrated in Fig. 4 as an example.
- the pseudo library 20 provides a virtual invocation interface with, for example, the functions VirtFuncl, VirtFunc2 and VirtFunc3 prepared. Only on the Disk 12 is the call interface of the library 38 with the actual functions of the disk 12 deposited.
- the actual call interface of the library 38 contained in the volume 12 triggers the virtual function calls and provides, for example, the internal functions Funcl, Func2, Func3 and Func4.
- the binding of the program code 18 in step 52 by the linker 22 is against the dummy library 20, which provides only the calling interface.
- the actual resolution of the references does not take place until the data carrier 12 is in step 60.
- the virtual functions VirtFuncl-VirtFunc3 are replaced by the actual functions Funcl-Func4. This is illustrated in Fig. 4 by the dashed arrows.
- the program code executed on the data carrier 12 can use platform-dependent and / or confidential functions.
- the implementation of the external functions known to the program developer in the data carrier 12 need not be disclosed in the platform-dependent functions. This measure brings about a significant increase in the security of the data carrier 12, even if it allows a loading of native program code - eg application programs and drivers.
- the details of the above description are intended to serve as examples of possible embodiments of the present invention. Further modifications, in particular with regard to the binding processes 52, 60 executed outside of the data carrier 12 and in the data carrier 12 and the respective contents of the dummy library 20 and the library 38 located in the data carrier 12, are possible and obvious to the person skilled in the art.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007544782A JP2008523480A (ja) | 2004-12-06 | 2005-12-01 | ロードフォーマットのプログラムコードの生成および実行可能プログラムコードの提供 |
CN2005800419175A CN101073054B (zh) | 2004-12-06 | 2005-12-01 | 加载格式的程序代码的产生以及可执行程序代码的提供 |
US11/792,517 US8332834B2 (en) | 2004-12-06 | 2005-12-01 | Generation of a program code in a load format and provision of an executable program code |
EP05818331A EP1839136A1 (de) | 2004-12-06 | 2005-12-01 | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausf]hrbarem programmcode |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102004058882.1 | 2004-12-06 | ||
DE102004058882A DE102004058882A1 (de) | 2004-12-06 | 2004-12-06 | Erzeugen von Programmcode in einem Ladeformat und Bereitstellen von ausführbarem Programmcode |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2006061141A1 true WO2006061141A1 (de) | 2006-06-15 |
Family
ID=35788755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/EP2005/012854 WO2006061141A1 (de) | 2004-12-06 | 2005-12-01 | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode |
Country Status (6)
Country | Link |
---|---|
US (1) | US8332834B2 (de) |
EP (1) | EP1839136A1 (de) |
JP (2) | JP2008523480A (de) |
CN (1) | CN101073054B (de) |
DE (1) | DE102004058882A1 (de) |
WO (1) | WO2006061141A1 (de) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452981B1 (en) * | 2006-03-01 | 2013-05-28 | Nvidia Corporation | Method for author verification and software authorization |
US20120023483A1 (en) * | 2010-07-20 | 2012-01-26 | Dan Welchman | System and method for use in indicating execution of application code |
DE102012024250B4 (de) * | 2012-08-02 | 2023-04-13 | Masktech International Gmbh | Verfahren zur Bereitstellung von Chips mit hoher Kopierschutzfunktion, insbesondere für digitale Authentifizierungssysteme, wie Chipkarten oder dergleichen, sowie danach hergestellte Chips |
WO2019148470A1 (zh) * | 2018-02-02 | 2019-08-08 | 深圳配天智能技术研究院有限公司 | 一种可编程逻辑芯片的保护电路及控制系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010034818A1 (en) | 1998-09-02 | 2001-10-25 | Christian May | Method for linking program modules reloaded into a main memory of a processor on a smart card |
US6405316B1 (en) * | 1997-01-29 | 2002-06-11 | Network Commerce, Inc. | Method and system for injecting new code into existing application code |
EP1335281A1 (de) | 2002-01-31 | 2003-08-13 | Chess Embedded Technology B.V. | System und Verfahren zum Laden von Programmkode in einem Gerät |
US20040148613A1 (en) * | 2001-05-30 | 2004-07-29 | Yach David P. | Mobile communication device application processing system |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2143488C (en) * | 1995-02-27 | 2000-01-11 | Robert Paul Duncan | Dynamic link libraries without linker or loader support |
CA2171898C (en) * | 1996-03-15 | 2000-02-01 | Brian Ward Thomson | Linker optimization for compiled object oriented programs |
JPH09258969A (ja) * | 1996-03-21 | 1997-10-03 | Toshiba Corp | プログラム開発装置及びプログラム開発方法 |
WO1999001815A1 (en) | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Obfuscation techniques for enhancing software security |
HUP0101368A3 (en) * | 1998-03-23 | 2004-04-28 | Ibm | Java runtime system with modified constant pool |
GB9920676D0 (en) * | 1999-09-01 | 1999-11-03 | Tao Group Ltd | Translating and executing object-oriented computer programs |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
US20010047512A1 (en) * | 2000-03-23 | 2001-11-29 | Leland Szewerenko | Method and system for linking multiple processors having shared memory |
JP2002132364A (ja) * | 2000-10-19 | 2002-05-10 | Yutaka Iizuka | プログラムを内部解析から保護する方法、コンピュータ読み取り可能な記録媒体及びプログラムの配布方法 |
CN1373418A (zh) * | 2001-02-28 | 2002-10-09 | 无敌科技(西安)有限公司 | 抽换可携式执行文件格式文件资料的方法 |
US7099663B2 (en) * | 2001-05-31 | 2006-08-29 | Qualcomm Inc. | Safe application distribution and execution in a wireless environment |
JP2003140758A (ja) * | 2001-11-07 | 2003-05-16 | Hitachi Ltd | プログラム暗号化方法、復号化方法および実行方法 |
JP2003337629A (ja) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | プログラム難読化方法及び装置 |
JP4115759B2 (ja) | 2002-07-01 | 2008-07-09 | 株式会社東芝 | 耐タンパプロセッサにおける共有ライブラリの使用方法およびそのプログラム |
-
2004
- 2004-12-06 DE DE102004058882A patent/DE102004058882A1/de not_active Withdrawn
-
2005
- 2005-12-01 CN CN2005800419175A patent/CN101073054B/zh not_active Expired - Fee Related
- 2005-12-01 JP JP2007544782A patent/JP2008523480A/ja active Pending
- 2005-12-01 WO PCT/EP2005/012854 patent/WO2006061141A1/de active Application Filing
- 2005-12-01 EP EP05818331A patent/EP1839136A1/de not_active Ceased
- 2005-12-01 US US11/792,517 patent/US8332834B2/en not_active Expired - Fee Related
-
2012
- 2012-10-05 JP JP2012222975A patent/JP2013041598A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405316B1 (en) * | 1997-01-29 | 2002-06-11 | Network Commerce, Inc. | Method and system for injecting new code into existing application code |
US20010034818A1 (en) | 1998-09-02 | 2001-10-25 | Christian May | Method for linking program modules reloaded into a main memory of a processor on a smart card |
US20040148613A1 (en) * | 2001-05-30 | 2004-07-29 | Yach David P. | Mobile communication device application processing system |
EP1335281A1 (de) | 2002-01-31 | 2003-08-13 | Chess Embedded Technology B.V. | System und Verfahren zum Laden von Programmkode in einem Gerät |
Non-Patent Citations (1)
Title |
---|
WILSON HO W ET AL: "AN APPROACH TO GENUINE DYNAMIC LINKING", 1 April 1991, SOFTWARE PRACTICE & EXPERIENCE, WILEY & SONS, BOGNOR REGIS, GB, PAGE(S) 375-390, ISSN: 0038-0644, XP000147180 * |
Also Published As
Publication number | Publication date |
---|---|
EP1839136A1 (de) | 2007-10-03 |
US20090044172A1 (en) | 2009-02-12 |
CN101073054B (zh) | 2011-01-26 |
CN101073054A (zh) | 2007-11-14 |
JP2013041598A (ja) | 2013-02-28 |
DE102004058882A1 (de) | 2006-06-08 |
US8332834B2 (en) | 2012-12-11 |
JP2008523480A (ja) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69802834T2 (de) | Verbesserung der sicherheit für nicht-vertrauten ausführbaren code | |
DE69706440T2 (de) | Schutzmittel in einem verteilten rechnersystem | |
DE102009013384B4 (de) | System und Verfahren zur Bereitstellung einer sicheren Anwendungsfragmentierungsumgebung | |
DE60127310T2 (de) | Vorrichtung zum schutz digitaler daten | |
DE202009019148U1 (de) | Dateisystemzugriff für Web-Anwendungen und native Kodemodule | |
EP1798653B1 (de) | Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms | |
DE102004057490B4 (de) | Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes | |
WO2023001773A1 (de) | Absicherung eines einrichtevorgangs eines unterverzeichnisses und einer netzwerkschnittstelle für eine containerinstanz | |
WO2006061141A1 (de) | Erzeugen von programmcode in einem ladeformat und bereitstellen von ausführbarem programmcode | |
DE102005046696B4 (de) | Verfahren zum Erzeugen von geschütztem Programmcode und Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie Computerprogrammprodukt | |
EP1801696B1 (de) | Multithreading - fähige virtuelle Maschine | |
EP3745287B1 (de) | Schützen einer softwareapplikation | |
DE102020206039A1 (de) | Erstellen einer Container-Instanz | |
CH712679B1 (de) | Verfahren zur Maskierung und eindeutigen Signierung von Datenbank-Quellcodes. | |
EP1879128B1 (de) | Abgesicherter Programmcode | |
EP1732001B1 (de) | Validierung eines zur nativen Ausführung durch einen Prozessor vorgesehenen Programms auf einem Datenträger | |
DE102017214584A1 (de) | Verfahren und Vorrichtung zum Schützen eines Gerätes | |
EP1318451B1 (de) | Verfahren zum Ausführen eines Programms auf einem Computer | |
DE102023102191A1 (de) | Installieren eines Betriebssystems in einer Prozessoreinrichtung, insbesondere einem Sicherheitsmodul | |
DE102017214591A1 (de) | Verfahren und Vorrichtung zum Schützen eines Gerätes | |
DE102022112550A1 (de) | Verfahren zum Anpassen einer Funktionalität einer Softwareapplikation an eine für die Ausführung der Funktionalität verfügbare Hardwareausstattung eines Kraftfahrzeugs sowie computerlesbares Speichermedium und Computersystem | |
EP2573677B1 (de) | Datenaustausch zwischen Applikationen | |
DE102018202936A1 (de) | Computerprogramm, insbesondere für ein Steuergerät eines Kraftfahrzeugs | |
EP1720096B1 (de) | Verfahren zum Hinzufügen einer Funktionalität zu einem ausführbaren ersten Modul eines Programmpakets | |
DE102014113441A1 (de) | Schutz vor Software-Komponenten mittels Verschlüsselung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KN KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
WWE | Wipo information: entry into national phase |
Ref document number: 4144/DELNP/2007 Country of ref document: IN |
|
WWE | Wipo information: entry into national phase |
Ref document number: 200580041917.5 Country of ref document: CN Ref document number: 2007544782 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2005818331 Country of ref document: EP |
|
WWP | Wipo information: published in national office |
Ref document number: 2005818331 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 11792517 Country of ref document: US |