1. Field of the Invention
The present invention relates generally to data access control for computer programs during run-time and more particularly to access control using a public key mechanism.
2. Description of the Related Art
Smart cards are small personal computing devices that are used to protect very sensitive information. Smart cards may be used to perform banking functions, provide access to health records, personalization of computer network access, secure building access, and many more functions. Smart cards are also used as subscriber identity modules (SIM) in certain mobile telephony networks.
A crucial selling point of smart cards is the security of the data stored thereon or accessed through the use of smart cards. In many circumstances smart cards provide heightened levels of security than other security mechanisms because smart cards include a combination of security features. For example, to gain access to some data you need to know a password stored on the smart card and you must be in possession of the smart card.
A recent trend in smart card technology is so called multi-application smart cards. These cards may be programmed with multiple disjointed application programs. For example, the same card may be used to access both banking records as well as provide health care information. Examples of such cards include the Cyberflex family of cards from Axalto Inc.
A common feature of multi-application smart cards is that the application programs may be loaded onto the smart card after the card has been issued by the manufacturer or even after an end-user has taken possession of the card. Each such application program in a multi-application smart card is stored in some form of programmable memory on the smart card.
Such post-manufacture programmability of smart cards provide increased flexibility and power of use of the smart cards. However, the price for that flexibility and power is vulnerability to attempts to unauthorized access of data. Because the application programs may be loaded onto a multi-application smart card after its manufacture, it is quite possible to load onto the smart card programs that attempt to perform functionality that attempt to breach the security of other applications already loaded onto the smart card.
One such risk is that one application program attempts to access private data of another application program on the same smart card.
The risks of such unauthorized are numerous. It is conceivable that a program that otherwise appears to behave as expected, issues unauthorized transactions or reveals private information to unauthorized persons.
Hitherto, un-authorized access of smart card application program data by unauthorized programs have been avoided by logically linking data used by an application program to that application program and preventing one such unit from accessing another by erecting firewalls between application programs. Protecting data of one application program from access from another application program using a firewall mechanism also preclude desirable sharing of data files between programs. Furthermore, close linking of application programs and data files frustrate independent updates of an application program and the data that the application program uses.
Often it is useful to update a program without updating the data that is associated with the program. For example, very often application programs have a preference file associated with the application program in which the user's personal preferences and other information is stored. When manufacturers issue new updates to their application programs, it is preferable to not override these preference files.
There has been a need to perform verification that an application program trying to access a piece of data of another program has sufficient rights to do so. It is desirable that such checking occurs during run-time. Accordingly, from the foregoing it is apparent that there is a still an unresolved need for a system and methodology for verifying authorization of smart card application programs attempting access to application data of other application programs during run-time. It is desirable that any such system and methodology allows the application programs and data files associated with the application programs to be updated independently of one another and still allow an updated application program access to data associated therewith, and vice versa.
In a preferred embodiment, a system and method according to the invention guard against unauthorized access to the data of one application program by another application program while not preventing authorized cross-application data access or independent updated of application programs and data associated therewith. On a programmable multi-application smart-card, or other programmable computer system, a file-system contains a first application program having associated therewith a first public key and a data file having associated therewith a second public key, wherein the first application program contains data access logic operable to cause the microprocessor of the smart card or computer system to attempt to access the data file. The smart card also contains an interpreter or other operating system for controlling the execution of application programs on the smart card or other computer system. The interpreter has an authorization logic with instructions operable to cause the microprocessor to compare the public key associated with the first application program and permitting access if the public key associated with the first application program corresponds to public key associated with the data file, and otherwise rejecting access.
Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
In the following detailed description and in the several figures of the drawings, like elements are identified with like reference numerals.
As shown in the drawings for purposes of illustration, the invention is embodied in a system and method for guarding data items stored on a multi-application smart card from unauthorized access by application programs executing on the smart card. The system and method according to the invention uses the computer programming concept of Public Key of a public key infrastructure to grant or deny computer programs access to particular data items during execution. Public keys are described in Richard E. Smith, Authentication: From Passwords to Public Keys, Addison-Wesley, 2001, ISBN: 0201615991.
The scenario of
In this example, a several application programs 301 are executed by the CPU 203 under the control of instructions of an interpreter 305. The interpreter 303 may, for example, be a Javacard Virtual Machine as found on the Cyberflex smart card family from Axalto Inc. or the interpreter of a smart card implementing a .NET CLI (Common Language Infrastructure) as found in the .NET smart card technology from Axalto Inc. (www.axalto.com/infosec/NET_faq.asp). In alternative embodiments, the application programs 301 are compiled into executable code and do not require further interpretation by the interpreter 305. However, in such embodiments, the job control would be managed by some operating system program that would take the place of the interpreter 303.
The interpreter 303 is usually a static component of a smart card 101 and would therefore be loaded into the ROM 205. The interpreter 303 may also be burned into some form of firmware. In another alternative the interpreter 303 may be stored in the non-volatile memory 209.
In most embodiments of the invention, the smart card software architecture 300 also includes some system functions 307. System functions 307 may include security functionality, cryptography functionality, and utility libraries which may be called by application programs 301.
The application programs 301 may access functions provided by the smart card system software 307 by issuing calls through an application program interface 309.
One possible breach of security provided by a smart card 101 is that one of the application programs 301 accesses data items of another application programs without having adequate access rights. While in most cases an application program does not access data of another application program, in some circumstances it is desirable to permit certain access of a first application program to the data associated with a second application program. Such access to the data of another program allows application programs to share data or for one application program to be a producer of data that is consumed by another. Thus, it is desirable to provide a mechanism that can provide access and prevent access depending on what level of access a program should be allowed.
In a preferred embodiment of the present invention, public keys are used to provide access control for application programs attempting access to data items of other application programs. Applications loaded onto a smart card are cryptographically signed using the private key of the owner of the application. The signed application to be loaded contains the public-key blob, public key token and the signature. At the time of loading, the signature is verified. The signature verification process asserts the authenticity and integrity of application load file and the public key token embedded in it. This public key token can act as the unique identity or attribute of the data file, which also identifies the owner.
Consider an application program 301 that seeks create to a particular data item.
Returning now to
In response to the request to create a data item di the operating system 305 adds the data item di to the directory 501 and assigns to the data item di a public key (PKdi) having the same value as the public key (PKi) of the application program i., step 403. The operating system 305 then transmits a status message back to the application program i 305, step 405.
The Trans.xml data item is illustrated in
In the example of
Next, the operating system 305 compares PKi to PKdi, step 417. If these have the same value, the application program i 301 is granted access to the data item, step 419. Otherwise, an error condition has occurred and an error message may be sent back to the application program i 301, step 421.
In the example of
The above examples have illustrated the invention using a single Public Key for each data item and application program 301. If there is a match between these Public Key s, then the application program is given access to the data item. Otherwise, an error condition is indicated. However, the limitation of a single Public Key per program and data item is merely used herein for the ease of illustration and description. In alternative embodiments data items may have multiple public keys associated therewith.
By having more than one public key associated with a data items allow multiple application programs to access data items having different public keys. Consider the example of
In another alternative embodiment, each data item rather than having just a single Public Key associated therewith, each data item could have lists of Public Keys s associated therewith. Each list would provide a different level of access, e.g., a first list would provide read-only access to application programs with Public Keys in that list, a second list would provide read-and-write access to application programs with Public Keys in that second list, and so on for all defined levels of access including modify and delete. Furthermore, each such list may contain multiple Public Key each of which would permit an application program with that Public Key the associated level of access.
In one embodiment of the invention, the application programs are originally written in a high-level programming language, for example the C# programming language or the JAVA programming language. Programming of application programs in Java and loading such programs onto smart cards is described in U.S. Pat. No. 6,308,317, issued to Timothy J. Wilkinson, et al. on Oct. 23, 2001 and entitled Using a high level programming language with a microcontroller, the entire disclosure of which is incorporated herein by reference. The application programs are first converted from a compiled for and subsequently loaded onto the smart card 101 as CAP files.
Although specific embodiments of the invention has been described and illustrated, the invention is not to be limited to the specific forms or arrangements of parts so described and illustrated. For example, while the invention has been described in the context of smart cards, the invention is applicable to use with other resource-constrained devices. The invention is limited only by the claims.