This application claims priority under 35 U.S.C. §119 to Japanese Patent Application No. 2003-091294 filed Mar. 28, 2003, the entire content of which is hereby incorporated by reference.
The present invention relates to technology for ensuring security of data stored in a terminal device, and to protecting user privacy.
Terminal devices, such as mobile phones or personal computers (referred to as PCs hereafter) having a program executing function, are widespread. A user can use various applications such as games and schedulers, by causing an application program to be run on this type of terminal device. These types of program are supplied either by writing to non-volatile storage of the terminal device before purchase of the terminal device, or by simply providing the application program and having the user install the program in the terminal device after purchase. In the following, the former is called a “native application program”, while the latter is called a “non-native application program”. An example of a non-native application program is an application program provided via the Internet, or an application program provided stored in a computer readable storage medium such as a CD-ROM (Compact Disk-Read Only Memory). Users can freely add or change functions of a terminal device by installing non-native application programs according to their needs.
Generally, application programs cause functions required by a user to be run on the terminal device, and so are beneficial to the user. However, in cases where there is bad faith with the provider of an application program (content provider, hereafter called “CP”), there is a possibility that a user will expect disadvantages as a result of executing the application program. Specifically, situations arise where important data stored in the terminal device (for example, a user's private information) is arbitrarily read out during the course of application program execution, and transmitted to the CP. With native application programs, for example, it is confirmed by the manufacturer of a terminal device that this type of situation does not occur due to product inspection at the time of product delivery. Conversely, with non-native application programs, this type of confirmation is not necessarily carried out. That is, with non-native application programs, a user may expect to be inconvenienced by executing the application program.
To avoid such inconvenience for a user, it has been considered to prevent the use of non-native application programs, and to allow the use of only native application programs. However, if use of non-native application programs is prevented, the user will not be able to freely add or change the functions of the terminal device according to their needs, which is extremely inconvenient. A technique for avoiding inconvenience for a user during the course of execution of a non-native application program, while allowing use of a non-native application program, is disclosed in Japanese patent laid-open publication No. 2002-245012.
With the technique disclosed in Japanese patent laid-open publication No. 2002-245012, provision of a program is carried out by providing objects that logically integrate data and programs for processing the data. A user who registers to use this type of program is bound by a contract allowing only the use of a program together with resources (hardware resources such as memory, and software resources such as data stored in memory) required when executing the program. In this way, by pre-limiting resources that can be used when executing a program, use of other resources is prevented during the execution of the program, and security of other resources is assured. In the following description, programs integrated with such data will be called “methods”.
As described above, according to the method disclosed in Japanese patent laid-open publication No. 2002-245012, by preventing user access to important data stored in the terminal device 10 during execution of a non-native application program, it is possible to run the non-native application program while ensuring security of the important data.
However, if resources that can be used during execution of a non-native application program are limited unnecessarily, design freedom at the time of designing the non-native application program is restricted. If design freedom is restricted in this way, then consequently, functions of the non-native application program will also be restricted. With non-native application programs being thus restricted, there is a problem that users may not be able to effectively use such programs.
The present invention has been conceived in view of the above-described situation, and an object of the present invention is to provide a technique for ensuring security of important data stored in a terminal device, while enabling a non-native application program to use important data necessary for its execution.
To solve the above-described problems, the present invention provides a terminal device comprising: first storage means for storing data; execution means for executing instruction code in accordance with an application program; second storage means for storing data for specifying, from among instruction codes that can be executed by the execution means, instruction codes whose execution is restricted in the terminal device; determination means for determining whether an instruction code executed by the execution means in accordance with an application program is a restricted instruction code, based on a stored content of the second storage means; and prevention means for preventing execution of the instruction code by the execution means when it is determined by the determination means that execution of an instruction code is restricted, and at least some of the data would be accessed due to execution of the instruction code.
According to the terminal device, among instruction codes to be executed in accordance with an application program, if execution of an instruction code is restricted, and it is detected that data stored in the terminal device would be accessed due to execution of the instruction code, the instruction will not be executed.
Therefore, the present invention ensures security of important data stored in a terminal device, while enabling the use of resources to be used in a non-native application program.
Also, to solve the above-described problems, the present invention provides a program product for causing a computer device to store and restrict data for identifying instruction code whose execution is restricted, and to execute the steps of: executing instruction code in accordance with an application program; determining whether or not an instruction code executed by the execution means in accordance with an application program is a restricted instruction code, based on stored content of the computer; and preventing execution of the instruction code by the execution means when it is determined by the determination means that execution of an instruction code is restricted, and at least some of the data would be accessed due to execution of the instruction code.
The program product allows the computer device to restrict the execution of the instruction code whose execution is restricted in the computer device, in the case that at least some of the data would be accessed due to execution of the restricted instruction code.
Embodiments of the present invention will be described below, with reference to the drawings.
A. Configuration
A-1. Configuration of Communication System
A mobile packet communication network 20 provides packet communication services for a terminal device 10 contained in the mobile packet communication network 20. The mobile communication network 20 has a base station 21 and a gateway (hereafter called “GW”) device 22. A number of base stations 21 are provided within the service area of the mobile packet communication network 20. A base station 21 forms a wireless cell having a fixed range (for example, a range of a 500 meter radius from the base station 21), and carries out wireless communication with a terminal device 10 within range of the wireless cell. The GW device 22 converts signals from both a communication protocol of the mobile packet communication network 20 and the communication protocol of the Internet 30. The GW device 22 functions as an interface between the mobile packet communication network 20 and the Internet 30.
The terminal device 10 is a mobile telephone provided with a Java Runtime Environment. A user's private information, such as the telephone directory table shown in
It is also possible for the terminal device 10 to download a Java APP from the content server 40 via the mobile packet communication network 20 and the Internet 30, and to run this Java APP using the above-described Java Runtime Environment. In the present embodiment, the Java APP causes the received call notification process shown in the flowchart of
A-2. Configuration of the Terminal Device
Next, the hardware configuration of the terminal device 10 will be described with reference to
The control unit 610 is a CPU (central processing unit) for example, and controls each unit of the terminal device 10 by executing software stored in the storage unit 650. The display unit 620 is, for example, a liquid crystal display and a drive circuit for the liquid crystal display, and displays images according to image data outputted from the control unit 610. The operating unit 630 is provided with a plurality of operating elements to allow a user to input numbers, characters, operating instructions etc., and delivers data corresponding to the operation content of these operating elements to the control unit 610.
The wireless communication unit 640 is provided with an antenna (not shown in the figures), and performs wireless communication with base station 21 which constitutes a wireless cell within range of the terminal device 10. The wireless communication unit 640 receives data transmitted from a base station 21 and outputs the received data to the control unit 610, and also transmits data delivered from the control unit 610 to the base station.
The storage unit 650 has a volatile storage unit 651 and a non-volatile storage unit 652. The volatile storage unit 651 is RAM (Random Access Memory), for example, and is used as a work area by the control unit 610 during execution of a software program. The data management table 651a shown in
The non-volatile storage unit 652 is an EEPROM (Electrically Erasable Programmable Read Only Memory), for example, and stores the protect flags previously associated with each item of data possessed by a user using the terminal device 10. For example, protect flags indicating that security protection is required are associated with private information such as a telephone directory table (
In addition, the command management table 652a shown in
Also, although detailed illustration has been omitted, a storage region for storage of Java APP that has been downloaded from the content server 40 is provided in the non-volatile storage unit 652 for each Java APP. A JAR (Java ARchive) for the Java APP is stored in this storage region. A JAR file is a single file combining the program body of the Java APP (a program written in Java bytecode), with image files containing image data and audio files containing audio data that will be used when this program is run.
A-3. Java Runtime Environment
Next, software built into the terminal device 10 to create a Java Runtime Environment will be described with reference to
First, a description will be given of the CLDC class library and the original Java extension profiles. The CLDC class library is a class library for providing general purpose functions directed to small electronic devices such as mobile phones and PDAs (Personal Digital Assistants). The original Java extension profiles are class libraries for providing specialized functions in the terminal device 10 relating to this embodiment, based on the CLDC class library. These original Java extension profiles in code include, for example, a screen display API (Application Program Interface), an event acquisition API, a networking API, a scratchpad API and an X-String formation API, etc. The control unit 610 during execution of a Java APP can use functions provided by these APIs by calling the APIs in accordance with Java bytecode constituting the Java APP. In the specifications and drawings, “API” is equivalent to a class (program)
The screen display API is an API for supporting display of images on the display unit 620. The event acquisition API is an API for supporting notification of the occurrence of events, such as call receipt and operation command input to the operation unit 630, to the control unit 610 during execution of a Java APP. The networking API is an API for access to a network resource (for example, the content server 40) specified by a URL (Uniform Resource Locator). The scratchpad API is an API for supporting reading and writing to and from a scratchpad. Detailed illustration of the scratchpad has been omitted, but this is a storage region provided for each Java APP within the non-volatile storage region 652, and stores data generated as a result of execution of the Java APP.
The X-string creation API is an API for allowing data stored in the non-volatile storage unit 652 to be used in the control unit 610 during execution of a Java APP. The X-string creation API of this embodiment is an API for allowing telephone directory data stored in the telephone directory table to be used in the control unit 610 during execution of a Java APP. More specifically, as a result of the X-String API being called, an X-string object is created including telephone directory data corresponding to the latest received call telephone number, and the object is stored in the volatile storage unit 651. In addition, a protect flag (namely, “1”) associated with reference data of the X-string object and associated with telephone directory data included in the X-string object is stored in the data management table 651a (refer to
By calling the X-String creation API, reference data for an X-String object including the latest received call telephone number data is delivered to the control unit 610. Then, by calling the screen display API described above with this reference data as an argument, the control unit 610 can cause display of telephone directory data included in the X-string object represented by this reference data on the display unit 620. In this embodiment, description is provided for a case where telephone directory data corresponding to the latest received call telephone number is included in an X-String object, but obviously it is also possible to include only a part of the telephone directory data (for example, only telephone numbers included in this telephone directory data, or only called party identifier). The data also includes private information of the user.
Here, referring to
KVM is one type of JVM, and is designed for use with small electronic devices such as mobile phones and PDAs. JVM converts Java bytecode constituting a Java APP to instruction code capable of being interpreted by the control unit 610 (for example, machine code for the control unit 610), and causes the instruction code to be executed in the control unit 610. KVM performs interpretation and execution of Java bytecode in one embodiment of the present invention when interpreting and executing Java bytecode constituting the Java APP.
Specifically, KVM determines whether or not Java bytecode to be executed is Java bytecode for the purpose of calling an API whose execution is restricted in this terminal device 10, based on stored content of the above-described command management table 652a (
Referring to
The function for carrying out execution management of Java APPs is a function for carrying out launch and termination of Java APP execution. More specifically, if Java APP execution is directed by the user, the control unit 610 first reserves a work area for execution of the Java APP in the volatile storage unit 651 in accordance with JAM. Data developed by the Java bytecode, constituting the Java APP the user has instructed to run and data input by the user during execution of this Java APP, are stored in this work area. Next, the storage unit 610 expands the Java bytecode constituting the Java APP into the work area reserved inside the volatile storage unit 651, and then interprets and executes the Java bytecode in accordance with KVM. If the user then instructs termination of the Java APP, the control unit 610 terminates interpretation and execution of the Java bytecode using KVM, releases the work area secured in the volatile storage unit 651 for execution of the Java APP, and terminates the Java APP.
B. Operation
Next, an operation in accordance with this embodiment will be described. In the following, description will be given of the operation, highlighting the features of the terminal device of this embodiment.
B-1. First Operation Example: Java APP Execution Operation
If Java APP execution is instructed by the user, the control unit 610 expands the Java byte code constituting this Java APP into the volatile storage unit 651 in accordance with JAM. The control unit 610 then runs the Java APP by interpreting and executing this Java bytecode in accordance with KVM. For example, when the Java APP for implementing the incoming call notification process shown in
If the determination result in step SB1 is “NO”, the control unit 610 interprets the Java bytecode to be executed and converts it into instruction code (step SB3). Conversely, if the determination result in step SB1 is “YES”, the control unit 610 further determines whether data that would be accessed using an API called by the Java bytecode to be executed is data requiring security protection, based on stored content of the data management table 651a (
If the determination result in step SB2 is “NO”, the control unit 610 performs the above-described step SB3 and executes the instruction code obtained in step SB3 (step SB4). Conversely, if the determination result in step SB2 is “YES”, the control unit carries out an exception process (step SB5). An example of this exception process is informing the user of a notification indicating that there is a possibility that the Java APP is instructed to carry out an illegal operation. In this embodiment, description has been given for a case where, with respect to Java bytecode for calling an API whose execution is restricted, interpretation and execution of the Java bytecode are not carried out in a case that data operated on by the API is data requiring security protection. However, the exception process may be carried out when the data that requires security protection is accessed after the Java bytecode is interpreted and executed.
In this embodiment, as shown in
Referring to
Here, description will be given for the telephone directory data acquisition process executed by the control unit 610 during execution of the X-String creation API called in step SA3, with reference to
Next, the control unit 610 creates an X-string object including the telephone directory data acquired in step SC2 (step SC3). Then, the control unit 610 associates reference data for this X-string object with a protect flag for telephone directory data included in this X-String object and stores the reference data and the protect flag in the data management table 651a (step SC4).
The control unit 610 then calls the reference data of the X-string object created in step SC3, and delivers the reference data to the corresponding Java APP. Then the control unit 610 terminates the X-string creation API (step SC5).
Referring to
B-2. Second Operation Example: Operation for Executing a Java APP Calling an API Whose Execution is Restricted
Next, description will be given for a case where a Java APP implementing the incoming call notification process shown in
Java bytecode for implementing step SA6 (refer to
Since data transmitted to the content server 40 using the networking API is telephone directory data, the result of determination in step SB2 described above will be “YES”, and the control unit 610 will perform the above-described exception process (step SB5). As a result, the Java bytecode for implementing step SA6 (refer to
As has been described above, it is possible to use important data stored in a terminal device 10 during execution of a non-native APP, and it is also possible to ensure security of this important data.
C. Modifications
The present invention is not limited to the above embodiment, and various modifications are possible within the technical scope of the invention. As modified examples the following can be considered, for example.
C-1 First Modification
In the above-described embodiment, an APP constituted by Java bytecode is described as an example of a non-native APP, but the programming language for describing the non-native APP is not limited to Java. Other programming languages (for example, C++, or C) may also be used. Generally, an APP written in these programming languages is converted to instruction code at the time of its provision. In such a case, instead of KVM described above, it is necessary to store a program for carrying out an operation in accordance with the flowchart shown in
C-2 Second Modification
In the above described embodiment, description is provided for a case where the present invention is provided in a mobile phone having a Java Runtime Environment. Most mobile phones are used to store private data such as a telephone directory table and a received call history table, which means that highly beneficial effects are obtained when applying the present invention. However, application of the present invention is not limited to mobile phones. For example, it can also be applied to a PDA or PHS (Personal Handyphone System) terminal provided with a Java Runtime Environment. Furthermore, it can also be applied to a PC having a Java Runtime Environment, for example, PC70A-70C making up a LAN 60 connected to the Internet via a GW device, as shown in
C-3. Third Modification
In the above-described embodiment, a Java APP downloaded via the Internet was described as an example of a non-native APP. However, non-native APPs installed in the terminal device 10 are not limited to downloaded Java APPs. Non-native APPs may be, for example, Java APPs stored on a storage medium capable of being read by a computer device, such as a CD-ROM, and distributed.
With APPs provided via the Internet and APPs distributed stored in storage media, if the content of an APP is examined by an unbiased third party organization such as a communication proprietor managing a mobile packet communications network or a CA (Certificate Authority), and it is an APP recognized to satisfy specified operational standards (hereafter referred to as a trusted APP), there is no need to restrict resources that can be accessed, as with a native APP.
For example, with a trusted APP, the APP itself contains identification information indicating that it is a trusted APP, and it is also possible to execute the Java bytecode interpret and execute operations shown in
C-4 Fourth Modification
In the above-described embodiment, description is provided of a case where software for implementation of functions specific to the terminal device of the present invention, such as the X-String creation API and KVM, are pre-stored in the terminal device. However, it is also possible to store this software in a storage medium that can be read by a computer device, and to impart the same functions as those of the terminal device to a standard computer by installing the software in the computer device using this storage medium.
Number | Date | Country | Kind |
---|---|---|---|
2003-091294 | Mar 2003 | JP | national |