WO2013161371A1 - プログラム提供装置、システム、プログラム提供方法およびプログラム - Google Patents

プログラム提供装置、システム、プログラム提供方法およびプログラム Download PDF

Info

Publication number
WO2013161371A1
WO2013161371A1 PCT/JP2013/054519 JP2013054519W WO2013161371A1 WO 2013161371 A1 WO2013161371 A1 WO 2013161371A1 JP 2013054519 W JP2013054519 W JP 2013054519W WO 2013161371 A1 WO2013161371 A1 WO 2013161371A1
Authority
WO
WIPO (PCT)
Prior art keywords
function
program
verification data
terminal
random number
Prior art date
Application number
PCT/JP2013/054519
Other languages
English (en)
French (fr)
Inventor
佑樹 芦野
中江 政行
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Publication of WO2013161371A1 publication Critical patent/WO2013161371A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/84Vehicles

Definitions

  • the present invention relates to a program providing apparatus, system, program providing method, and program.
  • Mobile terminals such as smartphones have been able to implement various functions by downloading applications. For example, it is possible to refer to vehicle data such as engine speed and vehicle speed managed by an on-vehicle device mounted on an automobile while performing short-range wireless communication with the on-vehicle device.
  • vehicle data such as engine speed and vehicle speed managed by an on-vehicle device mounted on an automobile
  • short-range wireless communication with the on-vehicle device.
  • it is necessary to take measures against fraudulent acts such as rewriting the application and illegally acquiring vehicle data.
  • As a technology for verifying a program running on a mobile terminal for example, a technology for checking whether a terminal program has been tampered with using a TMP (Trusted Platform Module) that is a security chip (Trusted Boot, TNC (Trusted Network) Connect)), but it is too expensive to install TMP in a mobile terminal. Therefore, it is required to verify the validity of the program without installing the TMP.
  • TMP Trustet Platform Module
  • TNC Trusted Network
  • Patent Document 1 in an information system composed of a mobile terminal and a POS (Point Of Sales) terminal that is a parent device of the mobile terminal, when the POS terminal is requested for short-range wireless communication from the mobile terminal Further, there is disclosed a technique for authenticating whether a program in which a POS terminal is incorporated in a portable terminal is a legitimate program.
  • POS Point Of Sales
  • the present invention has been made in order to solve the above-described problem, and provides a program providing apparatus and system capable of reliably determining the validity of a program of a mobile terminal on a device side that performs short-range wireless communication with the mobile terminal. Another object is to provide a program providing method and a program.
  • a program providing apparatus includes a receiving unit that receives a download request for a predetermined program from a portable terminal, and a function generator that generates a function for verifying the validity of the program corresponding to the download request. And a function-added program by embedding a part or all of the function generated by the function generation unit into the program so that the program corresponding to the download request is calculated when the program is executed
  • a function-added program generation unit, a random number generation unit that generates a random number for a function used for the function by generating a random number, the function-added program generated by the function-added program generation unit, and the random number generation unit A first transmitter for transmitting the generated random number for function to the mobile terminal;
  • the function generation unit using terminal identification information that can uniquely identify the mobile terminal included in the function, the function-added program generated by the function-added program generation unit, and the function random number generated by the random number generation unit.
  • a verification data generation unit that generates verification data on the providing device side, and the verification data on the providing device side generated by the verification data generation unit are close to the portable terminal.
  • a second transmission unit that transmits to a device that performs range wireless communication.
  • a system is a system including the program providing apparatus, the mobile terminal, and the device, and the mobile terminal receives the function-added program and the function random number.
  • the receiving unit uses the receiving unit, the terminal identification information of the terminal itself, the function-added program received by the terminal-side receiving unit, and the function random number, embedded in the function-added program received by the terminal-side receiving unit.
  • a terminal side verification data generation unit that generates terminal side verification data by calculating the function, and a terminal side that transmits the terminal side verification data generated by the terminal side verification data generation unit to the device A transmission unit, and the device receives the verification data on the providing device side and the verification data on the terminal side, respectively, and the device side
  • a program verification unit that verifies whether the program executed on the portable terminal is a legitimate program by using the verification data on the providing device side received by the communication unit and the verification data on the terminal side; Prepare.
  • the portable terminal which is one embodiment of the present invention is a function embedded in the program so that part or all of the function for verifying the validity of the predetermined program is calculated when the program is executed.
  • a verification data generation unit that generates verification data on the terminal side by calculating the function embedded in the function-added program received by the reception unit using a random number, and generated by the verification data generation unit
  • a transmission unit that transmits the verification data on the terminal side to a device that performs near field communication with the terminal.
  • the vehicle-mounted device is transmitted from a terminal-side verification data transmitted from a mobile terminal that performs short-range wireless communication with its own device, and a program providing apparatus that provides a predetermined program to the mobile terminal.
  • a receiving unit for receiving verification data on the providing device side, and the program executed on the portable terminal using the verification data on the providing device side and the verification data on the terminal side received by the receiving unit A program verification unit that verifies whether the program is
  • a program providing method includes a reception step of receiving a download request for a predetermined program from a portable terminal, and a function generation for generating a function for verifying the validity of the program corresponding to the download request Generating a function-added program by embedding a part or all of the function generated in the function generating step in the program corresponding to the download request, and generating a random number Then, a random number generation step for generating a function random number used for the function, the function-added program generated in the function-added program generation step, and the function random number generated in the random number generation step are stored in the portable terminal.
  • part or all of the function for verifying the validity of a predetermined program is embedded in the program so that the function is calculated when the program is executed.
  • a function-added program a reception step of receiving a function random number generated as a random number used for the function, terminal identification information that can uniquely identify a mobile terminal, the function-added program received in the reception step, and A verification data generation step for generating verification data on the terminal side by calculating the function embedded in the function-added program received in the reception step using a function random number; and generation in the verification data generation step
  • the terminal-side verification data is transmitted to a device that performs short-range wireless communication with the mobile terminal. Including trust and step, the.
  • a program verification method includes terminal-side verification data transmitted from a portable terminal that performs short-range wireless communication with an on-vehicle device, and a provision transmitted from a program providing apparatus that provides a program to the portable terminal A receiving step for receiving the verification data on the device side, and a predetermined program executed on the portable terminal using the verification data on the providing device side and the verification data on the terminal side received in the receiving step. And a program verification step for verifying whether the program is a program.
  • a program includes a reception step of receiving a download request for a predetermined program from a portable terminal, and a function for generating a function for verifying the validity of the program corresponding to the download request.
  • Generating a function a function-added program generating step for generating a function-added program by embedding part or all of the function generated in the function generating step in the program corresponding to the download request, and generating a random number
  • a random number generation step for generating a function random number for use in the function, the function-added program generated in the function-added program generation step, and the function random number generated in the random number generation step,
  • a verification data generation step for generating verification data on the providing device side by calculating the function generated in the generation step
  • a program according to one embodiment of the present invention is embedded in a portable terminal so that a part or all of a function for verifying the validity of a predetermined program is calculated when the program is executed.
  • a function-added program a reception step of receiving a function random number generated as a random number used for the function, terminal identification information capable of uniquely identifying the terminal itself, the function-added program received in the reception step, and
  • the verification data generation step generates the verification data on the terminal side by calculating the function embedded in the function-added program received in the reception step using the function random number;
  • the generated verification data on the terminal side is transmitted to a device that performs short-range wireless communication with the terminal itself Shin and step, thereby to execute.
  • the program which is one aspect of the present invention is transmitted to the vehicle-mounted device from the verification data on the terminal side transmitted from the mobile terminal that performs short-range wireless communication with the own device, and the program providing apparatus that provides the program to the mobile terminal.
  • a receiving step for receiving the verification data on the providing device side, and a predetermined program executed on the portable terminal using the verification data on the providing device side and the verification data on the terminal side received in the receiving step And a program verification step for verifying whether or not is a legitimate program.
  • the present invention it is possible to reliably determine the validity of the program of the mobile terminal on the device side that performs short-range wireless communication with the mobile terminal.
  • the program providing system illustrated in FIG. 1 includes a program providing apparatus 1, a mobile terminal 2 such as a smartphone, and an in-vehicle device 3.
  • the program providing apparatus 1 and the mobile terminal 2 communicate using a communication method such as 3G (3rd Generation), GSM (Global System for Mobile Communications), LTE (Long Term Evolution), for example.
  • the portable terminal 2 and the vehicle-mounted device 3 communicate with each other by short-range wireless communication such as Bluetooth or infrared.
  • the program providing apparatus 1 and the vehicle-mounted device 3 communicate with each other via the mobile terminal 2.
  • program provision apparatus 1 and the onboard equipment 3 demonstrate and demonstrates the form which communicates via the portable terminal 2, it is not limited to this.
  • the program providing apparatus 1 and the vehicle-mounted device 3 may communicate with each other by forming a unique network.
  • the in-vehicle device 3 is a device mounted on a vehicle such as an automobile, and manages vehicle data related to the vehicle such as the engine speed and the vehicle speed.
  • the portable terminal 2 downloads an application from the program providing apparatus 1 and executes it.
  • the mobile terminal 2 downloads and executes an application having a function of displaying vehicle data managed by the vehicle-mounted device 3 on the display of the mobile terminal 2 (hereinafter referred to as “vehicle data application”). The case where it does is demonstrated.
  • vehicle data application transmits vehicle data only to the mobile terminal 2 that is executing the regular vehicle data application.
  • a mechanism for determining whether or not the mobile terminal is executing a regular vehicle data application will be described.
  • the program providing apparatus 1 functionally includes, for example, a reception unit 11, a function generation unit 12, a function-added program generation unit 13, a random number generation unit 14, and a verification data generation unit 15. And a transmission unit 16.
  • the program providing apparatus 1 physically includes, for example, a CPU (Central Processing Unit), a storage device, and an input / output interface.
  • the storage device includes, for example, a ROM (Read Only Memory) and HDD (Hard Disk Drive) that store programs and data processed by the CPU, a RAM (Random Access Memory) mainly used as various work areas for control processing, and the like. including.
  • ROM Read Only Memory
  • HDD Hard Disk Drive
  • RAM Random Access Memory
  • Each of these elements is connected to each other via a bus.
  • the CPU executes the program stored in the ROM, and processes the message received via the input / output interface, the data developed in the RAM, and the like, thereby realizing the functions of the above units in the program providing apparatus 1. be able to.
  • the 1 receives the vehicle data application download request from the mobile terminal 2.
  • the download request includes, for example, terminal identification information that can uniquely identify the portable terminal 2 and device identification information that uniquely identifies the vehicle-mounted device 3 that performs short-range wireless communication with the portable terminal 2.
  • the function generation unit 12 generates a function for verifying the validity of the vehicle data application.
  • a case where a hash function is generated is illustrated.
  • the function generation unit 12 increases the confidentiality of the hash function by changing the type of the hash function each time the hash function is generated.
  • Examples of the hash function include MD (MessageMDDigest) 4, MD5, SHA (Secure Hash Algorithm) -1, SHA-2, and the like.
  • the function-added program generation unit 13 embeds the function generated by the function generation unit 12 in the vehicle data application so as to be calculated when the vehicle data application corresponding to the download request is executed, and generates a function-added program. .
  • the function-added program generation unit 13 obfuscates the function-added program so that the function is not read from the function-added program.
  • the vehicle data application is a known program.
  • the random number generation unit 14 generates a random number for the function used by the function generated by the function generation unit 12 by generating a random number.
  • the verification data generation unit 15 calculates the function (hash function) generated by the function generation unit 12 to generate verification data on the program providing device side (hereinafter referred to as “providing device side verification data”).
  • the verification data generation unit 15 uses the terminal identification information included in the download request, the function-added program generated by the function-added program generation unit 13 and the function random number generated by the random number generation unit 14. Use.
  • the transmission unit 16 transmits the function-added program generated by the function-added program generation unit 13 and the function random number generated by the random number generation unit 14 to the mobile terminal 2.
  • the transmission unit 16 transmits the providing device side verification data generated by the verification data generation unit 15 to the in-vehicle device 3.
  • the mobile terminal 2 functionally includes, for example, a reception unit 21, a verification data generation unit 22, and a transmission unit 23.
  • the receiving unit 21 receives a function-added program and a function random number transmitted from the program providing apparatus 1.
  • the verification data generation unit 22 executes the function-added program received by the reception unit 21 and calculates a hash function embedded in the function-added program, thereby enabling verification data on the portable terminal side (hereinafter, “terminal-side verification”). Data ").
  • the verification data generation unit 22 uses the terminal identification information stored in the memory of the terminal 2, the function-added program and the function random number received by the reception unit 21 when calculating the hash function.
  • the transmission unit 23 transmits the terminal-side verification data generated by the verification data generation unit 22 to the vehicle-mounted device 3.
  • the vehicle-mounted device 3 functionally includes, for example, a reception unit 31, a program verification unit 32, and a transmission unit 33.
  • the receiving unit 31 receives the providing device side verification data transmitted from the program providing device 1 and the terminal side verification data transmitted from the mobile terminal 2, respectively.
  • the program verification unit 32 verifies whether the vehicle data application held by the mobile terminal 2 is a legitimate program using the providing device side verification data and the terminal side verification data received by the reception unit 31.
  • the program verification part 32 in 1st Embodiment judges that the vehicle data application of the portable terminal 2 is a regular program, when provision apparatus side verification data and terminal side verification data correspond.
  • the transmission unit 33 transmits vehicle data to the mobile terminal 2 that is executing a regular vehicle data application.
  • FIG. 2 is a sequence chart showing a procedure for determining whether or not the mobile terminal is executing a legitimate vehicle data application.
  • mutual authentication is performed between the program providing apparatus 1 and the mobile terminal 2, and between the mobile terminal 2 and the vehicle-mounted device 3, and encrypted communication is performed.
  • the communication contents are not tampered with in the middle.
  • the public key and public key certificate on the program providing apparatus side are known.
  • the transmission unit 23 of the mobile terminal 2 transmits a download request for the vehicle data application (step S101), and the reception unit 11 of the program providing apparatus 1 receives the download request for the vehicle data application.
  • the function generation unit 12 of the program providing apparatus 1 generates a hash function K () as a function for verifying the validity of the vehicle data application (step S102).
  • the hash value generated by the hash function K () becomes the verification data V.
  • the function-added program generating unit 13 of the program providing apparatus 1 generates the function-added program P K () by embedding the hash function K () generated in step S102 in the vehicle data application P (step S103). .
  • the random number generation unit 14 of the program providing apparatus 1 generates a function random number r used for the hash function K () (step S104).
  • the transmission unit 16 of the program providing apparatus 1 transmits the function-added program P K () generated in step S103 and the function random number r generated in step S104 to the portable terminal 2 (step S105).
  • the verification data generation unit 22 of the mobile terminal 2 executes the function-added program P K () received by the receiving unit 21, and uses the hash function K () embedded in the function-addd program P K ().
  • the terminal-side verification data V T is generated by calculation (step S106).
  • the hash function K (T ID , P K () , r) is received by the receiving unit 21, the terminal identification information T ID of the own terminal 2, the function-added program P K () received by the receiving unit 21.
  • the function random number r is used as the original data, and the hash value of the original data is calculated to generate the terminal-side verification data V T.
  • the transmission unit 23 of the mobile terminal 2 transmits the terminal-side verification data V T generated in step S106 to the vehicle-mounted device 3 (step S107).
  • the verification data generating unit 15 of the program providing apparatus 1 generates the providing apparatus side verification data V S by calculating the hash function K () generated in step S102 (step S108).
  • the hash function K (T ID , P K () , r) is generated in the terminal identification information T ID included in the download request, the function-added program P K () generated in step S103, and the step S104.
  • the function random number r is used as the original data, and the hash value of the original data is calculated to generate the providing device side verification data V S.
  • the transmission unit 16 of the program providing apparatus 1 transmits the providing apparatus side verification data V S generated in step S108 to the vehicle-mounted device 3 (step S109).
  • the transmission unit 16 transmits the digital data using a publicly known digital signature.
  • the program verification section 32 of the vehicle-mounted device 3 compares the received terminal verification data V T and the providing apparatus-side verification data V S by the receiving unit 31, if both the verification data match, the mobile It is determined that the vehicle data application of terminal 2 is a legitimate program (step S110).
  • the portable terminal 2 or the program providing device 1 transmits the terminal-side verification data V T or the providing device-side verification data V S to the vehicle-mounted device 3 in Step S107 and Step S109 described above,
  • the terminal identification information and the application identification information of the vehicle data application may be transmitted together.
  • the vehicle-mounted device 3 is compatible with a plurality of portable terminals and a plurality of applications, it is possible to determine whether or not a regular application is executed for each combination of the portable terminal and the application. It becomes.
  • the program providing apparatus 1 generates a hash function for verifying the validity of the program requested by the mobile terminal 2 to download, and the hash function is the program.
  • a function-added program and a random number generated so as to be calculated at the time of execution can be transmitted to the portable terminal 2, and the hash function is calculated using the terminal identification information of the portable terminal 2, the function-added program, and the random number as original data.
  • the providing device side verification data obtained by doing so can be transmitted to the vehicle-mounted device 3 that performs short-range wireless communication with the mobile terminal 2.
  • the hash function incorporated in the program is calculated, and the calculation result can be transmitted to the in-vehicle device 3 as terminal-side verification data.
  • the in-vehicle device 3 may determine that the program of the mobile terminal 2 is a legitimate program if the providing device side verification data received from the program providing device 1 matches the terminal side verification data received from the mobile terminal 2. it can.
  • the program providing system in the first embodiment it is possible to reliably determine the validity of the program of the mobile terminal 2 on the vehicle-mounted device 3 side that performs short-range wireless communication with the mobile terminal 2.
  • a second embodiment of the present invention will be described.
  • the program providing system in the second embodiment is different from the program providing system in the first embodiment described above in that a second random number is generated using the random number used in the first embodiment, and the second random number is used as a function.
  • the function used as a random number for use is added to the second embodiment.
  • the configuration other than the random number generation unit 14 is the same as each configuration of the program providing system in the first embodiment. Therefore, the same reference numerals are given to the respective components, and the description thereof is omitted. In the following, differences from the first embodiment will be mainly described.
  • the random number generator 14 generates a first random number r, and generates a second random number R using the first random number r.
  • the second random number R is used as a function random number in the first embodiment.
  • the second random number R can be calculated by the following equation (1) using the first random number r, for example.
  • R is a second random number
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • r is a first random number
  • the above equation (1) uses the difficulty of the known discrete logarithm problem.
  • the discrete logarithm problem has a mathematical property that in the above equation (1), it is easy to obtain R from r, but it is difficult to obtain r from R.
  • the difficulty in obtaining r can be increased as the prime number p is increased.
  • the mobile terminal side specifies the first random number r. It becomes difficult. That is, the generation pattern of the second random number R can be made difficult to guess.
  • a third embodiment of the present invention will be described.
  • the program providing system in the third embodiment is different from the program providing system in the first embodiment and the second embodiment described above in the first embodiment and the second embodiment in the program providing apparatus 1 and the portable terminal 2.
  • different functions and random numbers are used in the program providing apparatus 1 and the portable terminal 2 in the third embodiment.
  • the function generation unit 12 of the program providing apparatus 1 is the same as the function generation unit 12 of the first embodiment in that a function for verifying the validity of the vehicle data application is generated.
  • the function used in the program providing apparatus 1 and the function used in the portable terminal 2 are a common hash function K (), whereas in the third embodiment, the function used in the program providing apparatus 1 (
  • the “function for providing device” is different from the function used in the portable terminal 2 (hereinafter referred to as “terminal function”).
  • the providing device function K S () and the terminal function K T () may be functions that can calculate specific values from the verification data V S and V T that are the calculation results of these two functions. . That is, it is only necessary to have two different functions K S () and K T () that can derive a specific value using the two verification data V S and V S.
  • the program providing apparatus 1 and the portable terminal 2 which, the vehicle-mounted device 3 that has received verification data V S, the V T respectively, two verification data V S, determined from V T Can be determined that the vehicle data app of the mobile terminal 2 is a legitimate program.
  • the providing device function K S () and the terminal function K T () that satisfy the following expression (2) are generated.
  • V T is terminal side verification data (the calculation result of the terminal function K T ())
  • V S is the providing device side verification data (the calculation result of the providing device function K S ())
  • p is a prime number.
  • the random number generation unit 14 of the program providing apparatus 1 is the same as the random number generation unit 14 of the first embodiment in that a random number for function is used to generate a random number for a function generated by the function generation unit 12 by generating a random number.
  • the random number used in the program providing apparatus 1 and the random number used in the portable terminal 2 are the common function random number r
  • the random number used in the program providing apparatus 1 hereinafter referred to as the random number used in the program providing apparatus 1).
  • “Providing device random number”) and a random number used in the portable terminal 2 hereinafter referred to as “terminal random number” are different.
  • the providing device random number and the terminal random number may be determined by generating a random number r as in the first embodiment, or the second random number R obtained by converting the first random number r as in the second embodiment. May be determined.
  • the provision device random number R S and the terminal random number R T are generated using the second random number R as in the second embodiment.
  • the verification data generating unit 15 of the program providing apparatus 1 calculates the function generated by the function generating unit 12 to generate the providing apparatus side verification data V S, and the verification data generating unit 15 of the first embodiment. It is the same. In the first embodiment, the hash function K () is calculated, whereas in the third embodiment, V S satisfying the following expression (3) is calculated. It should be noted that the providing device function K S () for calculating V S can be derived from the following equation (3).
  • R S is a random number for the providing device
  • K () is a hash function with the terminal identification information T ID , the function-added program P K () and the terminal random number R T as original data
  • V S is the providing device side verification data
  • p is a prime number.
  • the above equation (3) can be derived by the following procedures (a) to (c).
  • K T () V T ⁇ ( ⁇ RS ) K () mod p (4)
  • V T is terminal-side verification data
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • R S is a random number for the providing device
  • K ( ) Is a hash function using the terminal identification information T ID , the function-added program P K () and the terminal random number RT as original data.
  • the verification data generating unit 22 of the mobile terminal 2 executes the function-added program P K () received by the receiving unit 21 and calculates the hash function K () embedded in the function-added program P K (). Thus, it is the same as the verification data generation unit 22 of the first embodiment.
  • the terminal-side verification data V T is generated by calculating the hash function K (), whereas in the third embodiment, the calculation result of the hash function K () is the above (4 This is different in that the terminal side verification data V T is generated by substituting it into the formula.
  • the program verification unit 32 of the in-vehicle device 3 uses the providing device side verification data V S and the terminal side verification data V T received by the reception unit 31 to use the legitimate program for the vehicle data application executed on the mobile terminal 2. It is the same as the program verification unit 32 of the first embodiment in that it is verified whether or not there is.
  • the vehicle data application of the mobile terminal 2 is a legitimate program. It differs in the point to judge.
  • the left side of equation (2) is a specific function
  • the right side of equation (2) is a specific value. That is, if the providing apparatus-side verification data V S and the terminal-side validation data V T to (2) results are substituted into the left-hand side of the equation is "1", the vehicle data application of the portable terminal 2 is a regular program Judge.
  • FIG. 3 is a sequence chart showing a procedure for determining whether or not the mobile terminal is executing a regular vehicle data application. Since the preconditions in this operation are the same as those in the first embodiment, description thereof is omitted.
  • the transmission unit 23 of the mobile terminal 2 transmits a download request for the vehicle data application (step S201), and the reception unit 11 of the program providing device 1 receives the download request for the vehicle data application.
  • the function generation unit 12 of the program providing device 1 generates a providing device function K S () and a terminal function K T () (step S202).
  • a function derivable from the above equation (3) is generated as a providing device function K S ()
  • the above equation (4) is generated as a terminal function K T ().
  • the function-added program generating unit 13 of the program providing apparatus 1 embeds the hash function K () included in the terminal function K T () generated in step S202 in the vehicle data application P to thereby add the function-added program P K () is generated (step S203).
  • the random number generation unit 14 of the program providing device 1 generates the providing device random number R S and the terminal random number R T (step S204).
  • the transmission unit 16 of the program providing apparatus 1 includes the terminal function K T () generated in step S202, the function-added program P K () generated in step S203, and the terminal random number generated in step S204.
  • RT is transmitted to the portable terminal 2 (step S205).
  • the verification data generation unit 22 of the mobile terminal 2 generates the terminal-side verification data V T by calculating the terminal function K T () received by the reception unit 21 (step S206).
  • executes the program P K () with the received function by the receiving unit 21 calculates the function with program P K () embedded hash function K (), the calculation result, the By substituting into the equation (4), the terminal-side verification data VT is generated.
  • the hash function K () is the original data of the terminal identification information T ID of the own terminal 2, the function-added program P K () received by the receiving unit 21, and the terminal random number RT received by the receiving unit 21. And the hash value of this original data is calculated.
  • the transmission unit 23 of the mobile terminal 2 transmits the terminal-side verification data V T generated in step S206 to the vehicle-mounted device 3 (step S207).
  • the verification data generating unit 15 of the program providing apparatus 1 generates the providing apparatus side verification data V S by calculating the providing apparatus function K S () generated in step S202 (step S208).
  • the provision device side verification data V S is generated by calculating V S satisfying the above expression (3).
  • the transmission unit 16 of the program providing apparatus 1 transmits the providing apparatus side verification data V S and the prime number p generated in Step S208 to the vehicle-mounted device 3 (Step S209).
  • the transmission unit 16 transmits the digital data using a publicly known digital signature.
  • the program verification unit 32 of the in-vehicle device 3 calculates a specific function using the terminal-side verification data VT and the providing device-side verification data V S received by the reception unit 31 as arguments. If it is, it is determined that the vehicle data application of the mobile terminal 2 is a legitimate program (step S210). In this operation example, if the result of substituting the terminal-side verification data V T , the providing device-side verification data V S and the prime number p into the left side of the above equation (2) is “1”, the vehicle data application of the mobile terminal 2 Is a legitimate program.
  • the program providing system in the third embodiment in addition to the effects produced by the program providing system in the first embodiment and the second embodiment, different functions and random numbers between the program providing apparatus 1 and the mobile terminal 2 Since the verification data can be created using, the providing device side verification data and the terminal side verification data can be made different, and it is possible to make analogy of the verification data difficult.
  • the program provision apparatus 1 can receive the apparatus identification information of the onboard equipment 3 from the portable terminal 2, and can specify the onboard equipment 3.
  • the program providing apparatus 1 in the third embodiment may not be able to identify the vehicle-mounted device 3.
  • the portable terminal 2 should just relay the program provision apparatus 1 and the onboard equipment 3. This is because the mobile terminal 2 cannot generate the terminal-side verification data V T by using the providing device-side verification data V S even if the providing device-side verification data V S is acquired.
  • a fourth embodiment of the present invention will be described.
  • the program providing system in the fourth embodiment is different from the program providing system in the first to third embodiments described above in the first to third embodiments, regardless of the on-board device.
  • data is used, in the fourth embodiment, verification data that can be verified only by the same vehicle-mounted device is used.
  • the program providing apparatus 1 generates verification data using the key information on the vehicle-mounted device side, so that it can be verified only by the same vehicle-mounted device.
  • the transmission unit 33 of the vehicle-mounted device 3 transmits the key information on the vehicle-mounted device side to the program providing device 1.
  • key information represented by the following (7) is transmitted as public key information on the vehicle-mounted device side.
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • Y is a secret key on the program providing apparatus side.
  • the transmission timing of the public key information may be before or after the portable terminal 2 requests the program providing apparatus 1 to download, or may be transmitted from the in-vehicle device to the program providing apparatus 1 and registered in advance.
  • the function generation unit 12 of the program providing device 1 generates the providing device function K S () and the terminal function K T () using the public key information on the vehicle-mounted device side.
  • the relationship between the providing device function K S () and the terminal function K T () is the same as that in the third embodiment.
  • the providing device function K S () and the terminal function K T () that satisfy the following expression (8) are generated.
  • V T is terminal-side verification data (the calculation result of the terminal function K T ())
  • V S is the providing device-side verification data (the calculation result of the providing device function K S ())
  • Y is a secret key on the program providing apparatus side
  • p is a prime number.
  • the verification data generation unit 15 of the program providing apparatus 1 calculates the providing apparatus side verification data V S by calculating the following equation (9).
  • K S () V S ⁇ - RS ⁇ K () mod p (9)
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • R S is a random number for a providing device
  • K () is terminal identification information T ID
  • This is a hash function using the program P K () and the terminal random number RT as original data.
  • the above equation (9) can be derived by the following procedures (a) to (c).
  • K T () V T ⁇ ( ⁇ Y ⁇ RS ) K () mod p (10)
  • V T is terminal side verification data
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • Y is a secret key on the program providing apparatus side
  • R S is a random number for the providing device
  • K () is a hash function having the terminal identification information T ID , the function-added program P K (), and the terminal random number R T as original data.
  • the verification data generation unit 22 of the portable terminal 2 executes the function-added program P K () received by the reception unit 21, calculates the hash function K () embedded in the function-addd program P K () , The calculation result of the hash function K () is substituted into the above equation (10) to generate terminal side verification data V T.
  • FIG. 4 is a sequence chart illustrating a procedure for determining whether or not the mobile terminal is executing a legitimate vehicle data application. Since the preconditions in this operation are the same as those in the first embodiment, description thereof is omitted.
  • the transmission unit 33 of the vehicle-mounted device 3 transmits the public key information on the vehicle-mounted device side to the program providing device 1 (step S301).
  • the transmission unit 23 of the mobile terminal 2 transmits a download request for the vehicle data application (step S302), and the reception unit 11 of the program providing device 1 receives the download request for the vehicle data application.
  • the function generation unit 12 of the program providing device 1 generates a providing device function K S () and a terminal function K T () (step S303).
  • the above expression (9) is generated as a providing device function K S ()
  • the above expression (10) is generated as a terminal function K T ().
  • the function-added program generating unit 13 of the program providing apparatus 1 embeds the hash function K () included in the terminal function K T () generated in step S303 in the vehicle data application P, thereby adding the function-added program P K () is generated (step S304).
  • the random number generation unit 14 of the program providing device 1 generates the providing device random number R S and the terminal random number R T (step S305).
  • the transmission unit 16 of the program providing apparatus 1 includes the terminal function K T () generated in step S303, the function-added program P K () generated in step S304, and the terminal random number generated in step S305.
  • RT is transmitted to the portable terminal 2 (step S205).
  • the verification data generation unit 22 of the mobile terminal 2 generates the terminal-side verification data V T by calculating the terminal function K T () received by the reception unit 21 (step S307).
  • executes the program P K () with the received function by the receiving unit 21 calculates the function with program P K () embedded hash function K (), the calculation result, the By substituting into the equation (10), the terminal side verification data V T is generated.
  • the hash function K () is the original data of the terminal identification information T ID of the own terminal 2, the function-added program P K () received by the receiving unit 21, and the terminal random number RT received by the receiving unit 21. And the hash value of this original data is calculated.
  • the transmission unit 23 of the mobile terminal 2 transmits the terminal-side verification data V T generated in step S307 to the vehicle-mounted device 3 (step S308).
  • the verification data generation unit 15 of the program providing apparatus 1 generates the providing apparatus side verification data V S by calculating the providing apparatus function K S () generated in step S303 (step S309).
  • the providing device side verification data V S is generated by calculating the above equation (9).
  • the transmitting unit 16 of the program providing apparatus 1 transmits the providing apparatus side verification data V S and the prime number p generated in Step S309 to the on-vehicle device 3 (Step S310).
  • the transmission unit 16 transmits the digital data using a publicly known digital signature.
  • the program verification unit 32 of the in-vehicle device 3 calculates a specific function using the terminal-side verification data VT and the providing device-side verification data V S received by the reception unit 31 as arguments. If it is, it is determined that the vehicle data application of the mobile terminal 2 is a legitimate program (step S311). In this operation example, if the result of substituting the terminal-side verification data V T , the providing device-side verification data V S and the prime number p into the left side of the above equation (8) is “1”, the vehicle data application of the mobile terminal 2 Is a legitimate program.
  • verification data is generated using the public key information on the vehicle-mounted device, in addition to the effects exhibited by the program providing system in the first embodiment or the second embodiment. Therefore, verification is impossible unless the same vehicle-mounted device is used, and unauthorized acquisition of vehicle data can be made more difficult.
  • the function generation unit 12 generates the providing device function K S () and the terminal function K T () that satisfy the equation (8) is described as an example. However, it is not limited to satisfy
  • the providing device function K S () and the terminal function K T () that satisfy the following expression (13) may be generated.
  • V T is terminal-side verification data (the calculation result of the terminal function K T ())
  • V S is the providing device-side verification data (the calculation result of the providing device function K S ())
  • P is a prime number
  • is a primitive root and a constant modulo the prime number p
  • Y is a secret key on the program providing apparatus side.
  • the vehicle-mounted device 3 recognizes “V C ⁇ ⁇ Y (mod p)”, and the function generation unit 12 of the program providing apparatus 1 obtains a function that can be derived from the following equation (14).
  • the function is generated as the providing device function K S (), and the following equation (15) is generated as the terminal function K T (), and the verification data generating unit 15 of the program providing device 1 satisfies the following equation (14).
  • the providing apparatus side verification data V S may be generated by calculating V S.
  • R S is a random number for the providing device
  • K () is a hash function using the terminal identification information T ID , the function-added program P K () and the terminal random number R T as original data
  • V S is the providing device side verification data
  • Y is the secret key on the program providing device side
  • p is a prime number.
  • V T terminal-side verification data
  • p is a prime number
  • is a primitive root and a constant modulo the prime number p
  • R S is a random number for the providing device
  • K ( ) Is a hash function using the terminal identification information T ID , the function-added program P K () and the terminal random number RT as original data.
  • a receiving unit that receives a download request for a predetermined program from a mobile terminal, a function generation unit that generates a function for verifying the validity of the program corresponding to the download request, and the function generation unit
  • a function-added program generating unit that generates a function-added program by embedding a part or all of the generated function in the program so as to be calculated when the program corresponding to the download request is executed;
  • a random number generator for generating a function random number used for the function, the function-added program generated by the function-added program generator, and the function random number generated by the random number generator
  • a first transmission unit for transmitting to the mobile terminal, and the mobile terminal included in the download request Using the identifiable terminal identification information, the function-added program generated by the function-added program generator, and the function random number generated by the random number generator, the function generated by the function generator is calculated.
  • the verification data generation unit that generates verification data on the providing device side, and the verification data on the
  • the said random number generation part converts the said random number into the 2nd random number which makes it difficult to specify using the generated said random number,
  • the said 2nd random number is made into the said random number for functions, It is characterized by the above-mentioned
  • the program providing apparatus according to the description.
  • the function generation unit generates two different functions
  • the random number generation unit generates two different function random numbers
  • the two functions generate the two function random numbers.
  • the program providing apparatus according to appendix 1 or 2, wherein the program providing apparatus is a function capable of deriving a specific value from two results obtained by calculation using the program.
  • the key information receiving part which receives the key information of the said apparatus from the said apparatus is further provided, and the said two functions are functions including the said key information received by the said key information receiving part as an argument.
  • the program providing apparatus according to supplementary note 3, characterized by:
  • the portable terminal includes the terminal-side receiving unit that receives the function-added program and the function random number, the terminal identification information of the terminal itself, the function-added program received by the terminal-side receiving unit, and the function random number.
  • a terminal-side verification data generation unit that generates terminal-side verification data by calculating the function embedded in the function-added program received by the terminal-side reception unit; and the terminal-side verification data generation unit A terminal-side transmitter that transmits the terminal-side verification data generated by the device to the device,
  • the device includes a device-side receiving unit that receives the verification data on the providing device side and the verification data on the terminal side, and the verification data on the providing device side and the verification on the terminal side received by the device-side receiving unit.
  • a program verification unit that verifies whether the program executed on the portable terminal is a legitimate program using data.
  • a receiving unit that receives a function random number generated as a random number to be used, terminal identification information that can uniquely identify the terminal itself, the function-added program received by the receiving unit, and the function random number.
  • a verification data generation unit for generating terminal-side verification data by calculating the function embedded in the function-added program received by the unit, and the terminal-side verification data generated by the verification data generation unit
  • a mobile terminal comprising: a transmission unit that transmits to a device that performs near field communication with the terminal itself.
  • An on-vehicle device comprising: a program verification unit for verification.
  • a function generation step of generating a function for verifying the validity of the program corresponding to the download request and the function generation step
  • a first transmission step for transmitting to the portable terminal By generating a random number, a random number generating step for generating a function random number for use in the function, the function-added program generated in the function-added program generating step, and the function random number generated in the random number generating step, A first transmission step for transmitting to the portable terminal.
  • Terminal identification information that can uniquely identify the portable terminal included in the download request, the function-added program generated in the function-added program generation step, and the function random number generated in the random number generation step.
  • the verification data generation step for generating verification data on the providing device side by calculating the function generated in the function generation step, and the verification data on the providing device side generated in the verification data generation step.
  • a verification data generation step for generating verification data on the terminal side by calculating the function embedded in the function-added program received in the step, and the verification data on the terminal side generated in the verification data generation step Transmitting to a device that performs short-range wireless communication with the mobile terminal, and Verification data transmission method for the butterflies.
  • a program verification method comprising: a program verification step.
  • the reception step which receives the download request
  • the said function Function-added program generation for generating a function-added program by embedding a part or all of the function generated in the generation step in the program so that it is calculated when the program corresponding to the download request is executed
  • a random number generating step for generating a random number for the function used for the function by generating a random number, the function-added program generated in the function-added program generating step, and the function generated in the random number generating step Send random numbers to the mobile terminal First transmission step, terminal identification information that can uniquely identify the portable terminal included in the download request, the function-added program generated in the function-added program generation step, and the random number generation step
  • a verification data generating step for generating verification data on the providing device side by calculating the function generated in the function
  • Verification data on the terminal side transmitted from the mobile terminal that performs near field communication with the own device to the in-vehicle device, and verification on the providing apparatus side transmitted from the program providing apparatus that provides the program to the mobile terminal A receiving step for receiving data, and a predetermined program executed on the mobile terminal using the verification data on the providing device side and the verification data on the terminal side received in the receiving step is a legitimate program And a program verification step for verifying whether or not the program is executed.
  • the program providing apparatus, system, program providing method, and program according to the present invention are suitable for reliably determining the validity of the program of the mobile terminal on the device side that performs near field communication with the mobile terminal.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)

Abstract

携帯端末と近距離無線通信を行う機器側で携帯端末のプログラムの正当性を確実に判断させる。プログラムのダウンロード要求を携帯端末2から受信する受信部11と、上記プログラムの正当性を検証するための関数を生成する関数生成部12と、生成された関数の一部または全部を上記プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成部13と、乱数を生成することで関数に用いる関数用乱数を生成する乱数生成部14と、関数付プログラムおよび関数用乱数を携帯端末2に送信する送信部16と、端末識別情報、関数付プログラムおよび関数用乱数を用いて上記関数を計算することで提供装置側検証データを生成する検証データ生成部15と、を備え、送信部16は、提供装置側検証データを携帯端末2と近距離無線通信を行う車載器3宛てに送信する。

Description

プログラム提供装置、システム、プログラム提供方法およびプログラム
 本発明は、プログラム提供装置、システム、プログラム提供方法およびプログラムに関する。
 スマートフォンに代表される携帯端末は、アプリケーションをダウンロードすることで、様々な機能を実装できるようになってきた。例えば、自動車に搭載されている車載器で管理しているエンジン回転数や車速等の車両データを、車載器と近距離無線通信しながら参照することも可能である。一方、携帯端末にアプリケーションを提供する場合、例えばアプリケーションを書き換えて不正に車両データを取得する等の不正行為に対する対策を講ずる必要がある。携帯端末で動作しているプログラムを検証する技術として、例えば、セキュリティチップであるTMP(Trusted Platform Module)を用いて端末のプログラムが改ざんされていないかを確認する技術(Trusted Boot, TNC(Trusted Network Connect))があるが、携帯端末にTMPを搭載するには費用がかかり過ぎる。したがって、TMPを搭載することなく、プログラムの正当性を検証することが要求される。
 下記特許文献1には、携帯端末と、この携帯端末の親機器であるPOS(Point Of Sales)端末とで構成される情報システムにおいて、POS端末が携帯端末から近距離無線通信を要求されたときに、POS端末が携帯端末に組み込まれているプログラムが正規のプログラムであるかどうかを認証する技術が開示されている。
特開2005-100440号公報
 上記特許文献1の情報システムでは、親機器(POS端末)が管理する携帯端末の公開鍵と、携帯端末から送信される公開鍵とが一致する場合に、携帯端末のプログラムが正規のプログラムであると認証している。しかしながら、プログラムと公開鍵とが正規のものであることを携帯端末で確認するのは、携帯端末がプログラムを導入した時のみである。したがって、その後、プログラムのみが改ざんされた場合、携帯端末から正規の公開鍵を受け取った親機器は、プログラムの正当性を誤って判断するおそれがある。
 本発明は、上述した課題を解決するためになされたものであり、携帯端末と近距離無線通信を行う機器側で携帯端末のプログラムの正当性を確実に判断させることができるプログラム提供装置、システム、プログラム提供方法およびプログラムを提供することを目的の一つとする。
 本発明の一態様であるプログラム提供装置は、所定のプログラムのダウンロード要求を携帯端末から受信する受信部と、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成部と、前記関数生成部により生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成部と、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成部と、前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を、前記携帯端末に送信する第1送信部と、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を用い、前記関数生成部により生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成部と、前記検証データ生成部により生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信部と、を備える。
 本発明の一態様であるシステムは、上記プログラム提供装置と、上記携帯端末と、上記機器とを備えるシステムであって、前記携帯端末は、前記関数付プログラムおよび前記関数用乱数を受信する端末側受信部と、自端末の前記端末識別情報、前記端末側受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記端末側受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する端末側検証データ生成部と、前記端末側検証データ生成部により生成された前記端末側の検証データを、前記機器に送信する端末側送信部と、を備え、前記機器は、前記提供装置側の検証データおよび前記端末側の検証データをそれぞれ受信する機器側受信部と、前記機器側受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、を備える。
 本発明の一態様である携帯端末は、所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信部と、自端末を一意に特定可能な端末識別情報、前記受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成部と、前記検証データ生成部により生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信部と、を備える。
 本発明の一態様である車載器は、自機器と近距離無線通信を行う携帯端末から送信される端末側の検証データ、および前記携帯端末に所定のプログラムを提供するプログラム提供装置から送信される提供装置側の検証データをそれぞれ受信する受信部と、前記受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、を備える。
 本発明の一態様であるプログラム提供方法は、所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、を含む。
 本発明の一態様である検証データ送信方法は、所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、携帯端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記端末側の検証データを、携帯端末と近距離無線通信を行う機器に送信する送信ステップと、を含む。
 本発明の一態様であるプログラム検証方法は、車載器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、を含む。
 本発明の一態様であるプログラムは、コンピュータに、所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、を実行させる。
 本発明の一態様であるプログラムは、携帯端末に、所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、自端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信ステップと、を実行させる。
 本発明の一態様であるプログラムは、車載器に、自機器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、を実行させる。
 本発明によれば、携帯端末と近距離無線通信を行う機器側で携帯端末のプログラムの正当性を確実に判断させることができる。
実施形態におけるプログラム提供システムの構成を例示する図である。 第1実施形態におけるプログラム提供システムの動作を説明するためのフローチャートである。 第3実施形態におけるプログラム提供システムの動作を説明するためのフローチャートである。 第4実施形態におけるプログラム提供システムの動作を説明するためのフローチャートである。
 以下、添付図面を参照して、本発明に係るプログラム提供装置、システム、プログラム提供方法およびプログラムの好適な実施形態について説明する。
 [第1実施形態]
 まず、図1を参照して、第1実施形態における、プログラム提供装置を含むシステム(以下、「プログラム提供システム」という。)の構成について説明する。図1に示すプログラム提供システムは、プログラム提供装置1と、例えばスマートフォン等の携帯端末2と、車載器3とを備える。
 プログラム提供装置1と携帯端末2とは、例えば、3G(3rd Generation)や、GSM(Global System for Mobile Communications)、LTE(Long Term Evolution)等の通信方式を利用して通信する。携帯端末2と車載器3とは、例えば、Bluetoothや赤外線等の近距離無線通信により通信する。プログラム提供装置1と車載器3とは、携帯端末2を介して通信する。
 なお、本実施形態では、プログラム提供装置1と車載器3とが、携帯端末2を介して通信する形態を例示して説明するが、これに限定されない。例えば、プログラム提供装置1と車載器3とが、独自のネットワークを形成して通信することとしてもよい。
 車載器3は、例えば自動車等の車両に搭載される機器であり、エンジンの回転数や車速等の車両に関する車両データを管理する。携帯端末2は、プログラム提供装置1からアプリケーションをダウンロードし、実行する。
 本実施形態では、車載器3で管理している車両データを携帯端末2のディスプレイ上に表示する機能を有するアプリケーション(以下、「車両データアプリ」という。)を、携帯端末2がダウンロードして実行する場合について説明する。車載器3は、正規の車両データアプリを実行している携帯端末2に対してのみ車両データを送信する。以下において、携帯端末が正規の車両データアプリを実行しているかどうかを判断するためのしくみについて説明する。
 図1に示すように、プログラム提供装置1は、機能的には、例えば、受信部11と、関数生成部12と、関数付プログラム生成部13と、乱数生成部14と、検証データ生成部15と、送信部16と、を有する。
 ここで、プログラム提供装置1は、物理的には、例えば、CPU(Central Processing Unit)と、記憶装置と、入出力インターフェースとを含む。記憶装置は、例えば、CPUで処理されるプログラムおよびデータを記憶するROM(Read Only Memory)やHDD(Hard Disk Drive)、主として制御処理のための各種作業領域として使用するRAM(Random Access Memory)等を含む。これらの各要素は、互いにバスを介して接続する。CPUが、ROMに記憶されたプログラムを実行し、入出力インターフェースを介して受信されるメッセージや、RAMに展開されるデータ等を処理することで、プログラム提供装置1における上記各部の機能を実現することができる。
 図1に示す受信部11は、車両データアプリのダウンロード要求を携帯端末2から受信する。ダウンロード要求には、例えば、携帯端末2を一意に特定可能な端末識別情報や、携帯端末2と近距離無線通信を行う車載器3を一意に特定するための機器識別情報が含まれる。
 関数生成部12は、車両データアプリの正当性を検証するための関数を生成する。第1実施形態では、ハッシュ関数を生成する場合について例示する。関数生成部12は、ハッシュ関数を生成するたびに、ハッシュ関数の種類を変更することで、ハッシュ関数の秘密性を高める。ハッシュ関数の種類としては、例えば、MD(Message Digest)4、MD5、SHA(Secure Hash Algorithm)-1、SHA-2等がある。
 関数付プログラム生成部13は、関数生成部12により生成された関数を、ダウンロード要求に対応する車両データアプリが実行されたときに計算されるように車両データアプリに埋め込んで関数付プログラムを生成する。関数付プログラム生成部13は、関数付プログラムから関数が読み出されることがないように、関数付プログラムを難読化する。なお、車両データアプリは、既知のプログラムとする。
 乱数生成部14は、乱数を生成することで、関数生成部12が生成する関数に用いる関数用乱数を生成する。
 検証データ生成部15は、関数生成部12により生成された関数(ハッシュ関数)を計算することで、プログラム提供装置側の検証データ(以下、「提供装置側検証データ」という。)を生成する。検証データ生成部15は、ハッシュ関数を計算する際に、ダウンロード要求に含まれる端末識別情報、関数付プログラム生成部13により生成された関数付プログラムおよび乱数生成部14により生成された関数用乱数を用いる。
 送信部16は、関数付プログラム生成部13により生成された関数付プログラムおよび乱数生成部14により生成された関数用乱数を、携帯端末2に送信する。送信部16は、検証データ生成部15により生成された提供装置側検証データを、車載器3宛てに送信する。
 図1に示すように、携帯端末2は、機能的には、例えば、受信部21と、検証データ生成部22と、送信部23と、を有する。
 受信部21は、プログラム提供装置1から送信される関数付プログラムおよび関数用乱数を受信する。
 検証データ生成部22は、受信部21により受信された関数付プログラムを実行し、この関数付プログラムに埋め込まれたハッシュ関数を計算することで、携帯端末側の検証データ(以下、「端末側検証データ」という。)を生成する。検証データ生成部22は、ハッシュ関数を計算する際に、自端末2のメモリに記憶されている端末識別情報、受信部21により受信された関数付プログラムおよび関数用乱数を用いる。
 送信部23は、検証データ生成部22により生成された端末側検証データを車載器3に送信する。
 図1に示すように、車載器3は、機能的には、例えば、受信部31と、プログラム検証部32と、送信部33と、を有する。
 受信部31は、プログラム提供装置1から送信される提供装置側検証データ、および携帯端末2から送信される端末側検証データを、それぞれ受信する。
 プログラム検証部32は、受信部31により受信された提供装置側検証データおよび端末側検証データを用いて、携帯端末2が保有する車両データアプリが正規のプログラムであるかどうかを検証する。第1実施形態におけるプログラム検証部32は、提供装置側検証データと端末側検証データとが一致する場合に、携帯端末2の車両データアプリが正規のプログラムであると判断する。
 送信部33は、正規の車両データアプリを実行している携帯端末2に対して車両データを送信する。
 次に、図2を参照して、第1実施形態におけるプログラム提供システムの動作について説明する。図2は、携帯端末が正規の車両データアプリを実行しているかどうかを判断する際の手順を示すシーケンスチャートである。この動作では、前提条件として、プログラム提供装置1と携帯端末2との間、携帯端末2と車載器3との間は、それぞれで相互認証し、暗号化通信を行うこととする。また、通信内容は途中で改ざんされないこととする。さらに、プログラム提供装置側の公開鍵や公開鍵証明書は既知であることとする。
 最初に、携帯端末2の送信部23が、車両データアプリのダウンロード要求を送信し(ステップS101)、プログラム提供装置1の受信部11が、車両データアプリのダウンロード要求を受信する。
 続いて、プログラム提供装置1の関数生成部12は、車両データアプリの正当性を検証するための関数としてハッシュ関数K()を生成する(ステップS102)。このハッシュ関数K()により生成されるハッシュ値が検証データVとなる。
 続いて、プログラム提供装置1の関数付プログラム生成部13は、上記ステップS102で生成したハッシュ関数K()を車両データアプリPに埋め込むことで関数付プログラムPK()を生成する(ステップS103)。
 続いて、プログラム提供装置1の乱数生成部14は、ハッシュ関数K()に用いる関数用乱数rを生成する(ステップS104)。
 続いて、プログラム提供装置1の送信部16は、上記ステップS103で生成した関数付プログラムPK()および上記ステップS104で生成した関数用乱数rを、携帯端末2に送信する(ステップS105)。
 続いて、携帯端末2の検証データ生成部22は、受信部21により受信された関数付プログラムPK()を実行し、この関数付プログラムPK()に埋め込まれたハッシュ関数K()を計算することで端末側検証データVを生成する(ステップS106)。このハッシュ関数K(TID,PK(),r)は、自端末2の端末識別情報TIDと、受信部21により受信された関数付プログラムPK()と、受信部21により受信された関数用乱数rとを元データとし、この元データのハッシュ値を算出することで、端末側検証データVを生成する。
 続いて、携帯端末2の送信部23は、上記ステップS106で生成した端末側検証データVを車載器3に送信する(ステップS107)。
 一方、プログラム提供装置1の検証データ生成部15は、上記ステップS102で生成したハッシュ関数K()を計算することで提供装置側検証データVを生成する(ステップS108)。このハッシュ関数K(TID,PK(),r)は、ダウンロード要求に含まれる端末識別情報TIDと、上記ステップS103で生成した関数付プログラムPK()と、上記ステップS104で生成した関数用乱数rとを元データとし、この元データのハッシュ値を算出することで、提供装置側検証データVを生成する。
 続いて、プログラム提供装置1の送信部16は、上記ステップS108で生成した提供装置側検証データVを、車載器3宛てに送信する(ステップS109)。送信部16は、提供装置側検証データVを送信する際に、公知技術であるデジタル署名を利用して送信する。
 続いて、車載器3のプログラム検証部32は、受信部31により受信された端末側検証データVと提供装置側検証データVとを比較し、双方の検証データが一致する場合に、携帯端末2の車両データアプリが正規のプログラムであると判断する(ステップS110)。
 ここで、上述したステップS107およびステップS109において、携帯端末2またはプログラム提供装置1が、端末側検証データVまたは提供装置側検証データVを車載器3に送信する際に、携帯端末2の端末識別情報および車両データアプリのアプリ識別情報を併せて送信することとしてもよい。これにより、車載器3が、複数の携帯端末や複数のアプリに対応する場合であっても、携帯端末とアプリとの組み合わせごとに、正規のアプリを実行しているかどうかを判断することが可能となる。
 上述したように、第1実施形態におけるプログラム提供システムによれば、プログラム提供装置1は、携帯端末2がダウンロード要求したプログラムの正当性を検証するためのハッシュ関数を生成し、そのハッシュ関数がプログラム実行時に計算されるように生成した関数付プログラムと乱数とを携帯端末2に送信することができるとともに、携帯端末2の端末識別情報と関数付プログラムと乱数とを元データとして上記ハッシュ関数を計算することで得られる提供装置側検証データを、携帯端末2と近距離無線通信を行う車載器3宛てに送信することができる。
 また、携帯端末2は、プログラムを実行すると、そのプログラムに組み込まれたハッシュ関数が計算され、その計算結果を端末側検証データとして車載器3に送信することができる。車載器3は、プログラム提供装置1から受信した提供装置側検証データと携帯端末2から受信した端末側検証データとが一致すれば、携帯端末2のプログラムが正規のプログラムであると判断することができる。
 それゆえに、第1実施形態におけるプログラム提供システムによれば、携帯端末2と近距離無線通信を行う車載器3側で携帯端末2のプログラムの正当性を確実に判断させることが可能となる。
 [第2実施形態]
 本発明の第2実施形態について説明する。第2実施形態におけるプログラム提供システムが、上述した第1実施形態におけるプログラム提供システムと相違する点は、第1実施形態で使用する乱数を用いて第2乱数を生成し、この第2乱数を関数用乱数として使用する機能を第2実施形態に追加した点である。
 このような機能を追加したのは、第1実施形態では、関数用乱数として用いる乱数rの生成パターンに偏りが生ずることも考えられ、そのような場合、次に生成する乱数rが特定されてしまうおそれがあるためである。そこで、第2実施形態では、生成した第1乱数rを用いて、さらに別の第2乱数Rを生成することで、関数用乱数の推測を困難にしている。
 第2実施形態では、乱数生成部14に機能を追加しているが、乱数生成部14以外の構成については、第1実施形態におけるプログラム提供システムの各構成と同様である。したがって、各構成要素には同一の符号を付し、その説明は省略する。以下においては、主に第1実施形態との相違点について説明する。
 乱数生成部14は、第1乱数rを生成し、この第1乱数rを用いて第2乱数Rを生成する。第2実施形態では、この第2乱数Rを、第1実施形態における関数用乱数として用いる。第2乱数Rは、第1乱数rを用い、例えば、以下の(1)式により算出することができる。
 R ≡ αmod p … (1)
 上記(1)式において、Rは第2乱数であり、pは素数であり、αは素数pを法とする原始根かつ定数であり、rは第1乱数である。
 上記(1)式は、公知である離散対数問題の困難性を利用したものである。離散対数問題は、上記(1)式において、rからRを求めることは容易だが、Rからrを求めることは困難であるという数学的性質をいう。この離散対数問題では、素数pを大きくするほど、rを求める際の困難性を高めることができる。
 第2実施形態では、このような第2乱数を関数用乱数として用いることにより、例え第1乱数rの生成パターンに偏りがあったとしても、携帯端末側では、第1乱数rを特定することが困難となる。つまり、第2乱数Rの生成パターンを推測困難にすることができる。
 上述したように、第2実施形態におけるプログラム提供システムによれば、第1実施形態におけるプログラム提供システムが奏する効果に加え、検証データの生成に用いる乱数の生成パターンを推測困難にすることができる。
 [第3実施形態]
 本発明の第3実施形態について説明する。第3実施形態におけるプログラム提供システムが、上述した第1実施形態および第2実施形態におけるプログラム提供システムと相違する点は、第1実施形態および第2実施形態では、プログラム提供装置1と携帯端末2とで同一の関数および乱数を使用しているが、第3実施形態では、プログラム提供装置1と携帯端末2とで異なる関数および乱数を使用する点である。
 これは、関数および乱数を同一にすると、プログラム提供装置1と携帯端末2とで生成する検証データも同一になり、プログラム提供装置側の検証データが携帯端末側で類推されて使用されることも考えられ、そのような場合、車載器3から不正に車両データが取得されてしまうおそれがあるためである。そこで、第3実施形態では、プログラム提供装置1と携帯端末2とで異なる関数および乱数を使用することで、検証データの類推を困難にしている。
 この相違により、第3実施形態では、第1実施形態におけるプログラム提供システムの各構成要素が有する機能の一部を変更している。以下においては、主に第1実施形態との相違点について説明する。
 プログラム提供装置1の関数生成部12は、車両データアプリの正当性を検証するための関数を生成する点では第1実施形態の関数生成部12と同様である。第1実施形態では、プログラム提供装置1で用いる関数と携帯端末2で用いる関数とが共通のハッシュ関数K()であったのに対し、第3実施形態では、プログラム提供装置1で用いる関数(以下、「提供装置用関数」という。)と、携帯端末2で用いる関数(以下、「端末用関数」という。)と、が異なる関数になる点で相違する。
 提供装置用関数K()および端末用関数K()は、これら二つの関数の計算結果である検証用データV、Vから特定の値を算出することができる関数であればよい。つまり、二つの検証用データV、Vを用いて特定の値を導出可能な二つの異なる関数K()、K()であればよい。このような関数を生成することで、プログラム提供装置1と携帯端末2とから、それぞれ検証用データV、Vを受信した車載器3は、二つの検証用データV、Vから特定の値を求めることができたときに、携帯端末2の車両データアプリが正規のプログラムであると判断することが可能となる。
 例示的に、第3実施形態では、以下の(2)式を満たすような提供装置用関数K()および端末用関数K()を生成することとする。
 V VS mod p ≡ 1 … (2)
 上記(2)式において、Vは端末側検証データ(端末用関数K()の計算結果)であり、Vは提供装置側検証データ(提供装置用関数K()の計算結果)であり、pは素数である。
 プログラム提供装置1の乱数生成部14は、乱数を生成することで、関数生成部12が生成する関数に用いる関数用乱数を生成する点で第1実施形態の乱数生成部14と同様である。第1実施形態では、プログラム提供装置1で用いる乱数と携帯端末2で用いる乱数とが共通の関数用乱数rであったのに対し、第3実施形態では、プログラム提供装置1で用いる乱数(以下、「提供装置用乱数」という。)と、携帯端末2で用いる乱数(以下、「端末用乱数」という。)と、が異なる乱数になる点で相違する。
 提供装置用乱数および端末用乱数は、第1実施形態と同様にそれぞれ乱数rを生成して決定してもよいし、第2実施形態と同様にそれぞれ第1乱数rを変換した第2乱数Rを生成して決定してもよい。例示的に、第3実施形態では、第2実施形態と同様に第2乱数Rを用いて、提供装置用乱数Rおよび端末用乱数Rを生成することとする。
 プログラム提供装置1の検証データ生成部15は、関数生成部12により生成された関数を計算することで、提供装置側検証データVを生成する点で第1実施形態の検証データ生成部15と同様である。第1実施形態では、ハッシュ関数K()を計算していたのに対し、第3実施形態では、以下の(3)式を満たすVを計算する点で異なる。なお、以下の(3)式から、Vを算出するための提供装置用関数K()を導出することができる。
 R・K()・V ≡ 0(mod(p-1)) … (3)
 上記(3)式において、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数であり、Vは提供装置側検証データであり、pは素数である。上記(3)式は、以下の(a)~(c)の手順により導出可能である。
 (a)関数生成部12が生成する端末用関数K()を、以下の(4)式とする。
 K() = V ≡ (αRSK()mod p … (4)
 上記(4)式において、Vは端末側検証データであり、pは素数であり、αは素数pを法とする原始根かつ定数であり、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数である。
 (b)上記(2)式に、上記(4)式を代入して、以下の(5)式を導出する。
 (αRS・KT()VS ≡ 1(mod p) … (5)
 (c)上記(5)式と以下の(6)式とから上記(3)式を導出する。
 α ≡ 1(mod p) … (6)
 携帯端末2の検証データ生成部22は、受信部21により受信された関数付プログラムPK()を実行し、この関数付プログラムPK()に埋め込まれたハッシュ関数K()を計算する点で、第1実施形態の検証データ生成部22と同様である。
 第1実施形態では、ハッシュ関数K()を計算することで端末側検証データVを生成しているのに対し、第3実施形態では、ハッシュ関数K()の計算結果を、上記(4)式に代入して端末側検証データVを生成する点で異なる。
 車載器3のプログラム検証部32は、受信部31により受信された提供装置側検証データVおよび端末側検証データVを用いて、携帯端末2で実行される車両データアプリが正規のプログラムであるかどうかを検証する点で、第1実施形態のプログラム検証部32と同様である。
 第1実施形態では、提供装置側検証データVと端末側検証データVとが一致する場合に、携帯端末2の車両データアプリが正規のプログラムであると判断するのに対し、第3実施形態では、提供装置側検証データVと端末側検証データVとを特定の関数に代入し、特定の値が得られた場合に、携帯端末2の車両データアプリが正規のプログラムであると判断する点で異なる。
 例示的に、第3実施形態では、上記(2)式の左辺を特定の関数とし、同(2)式の右辺を特定の値とする。つまり、提供装置側検証データVと端末側検証データVとを上記(2)式の左辺に代入した結果が“1”になれば、携帯端末2の車両データアプリが正規のプログラムであると判断する。
 次に、図3を参照して、第3実施形態におけるプログラム提供システムの動作について説明する。図3は、携帯端末が正規の車両データアプリを実行しているかどうかを判断する際の手順を示すシーケンスチャートである。この動作での前提条件は、第1実施形態と同様であるため、その説明を省略する。
 最初に、携帯端末2の送信部23が、車両データアプリのダウンロード要求を送信し(ステップS201)、プログラム提供装置1の受信部11が、車両データアプリのダウンロード要求を受信する。
 続いて、プログラム提供装置1の関数生成部12は、提供装置用関数K()および端末用関数K()を生成する(ステップS202)。この動作例では、上記(3)式から導出可能な関数を提供装置用関数K()として生成し、上記(4)式を端末用関数K()として生成することとする。
 続いて、プログラム提供装置1の関数付プログラム生成部13は、上記ステップS202で生成した端末用関数K()に含まれるハッシュ関数K()を車両データアプリPに埋め込むことで関数付プログラムPK()を生成する(ステップS203)。
 続いて、プログラム提供装置1の乱数生成部14は、提供装置用乱数Rおよび端末用乱数Rを生成する(ステップS204)。
 続いて、プログラム提供装置1の送信部16は、上記ステップS202で生成した端末用関数K()、上記ステップS203で生成した関数付プログラムPK()および上記ステップS204で生成した端末用乱数Rを、携帯端末2に送信する(ステップS205)。
 続いて、携帯端末2の検証データ生成部22は、受信部21により受信された端末用関数K()を計算することで端末側検証データVを生成する(ステップS206)。この動作例では、受信部21により受信された関数付プログラムPK()を実行し、この関数付プログラムPK()に埋め込まれたハッシュ関数K()を計算し、その計算結果を、上記(4)式に代入することで、端末側検証データVを生成する。ハッシュ関数K()は、自端末2の端末識別情報TIDと、受信部21により受信された関数付プログラムPK()と、受信部21により受信された端末用乱数Rとを元データとし、この元データのハッシュ値を算出する。
 続いて、携帯端末2の送信部23は、上記ステップS206で生成した端末側検証データVを車載器3に送信する(ステップS207)。
 一方、プログラム提供装置1の検証データ生成部15は、上記ステップS202で生成した提供装置用関数K()を計算することで提供装置側検証データVを生成する(ステップS208)。この動作例では、上記(3)式を満たすVを計算することで提供装置側検証データVを生成する。
 続いて、プログラム提供装置1の送信部16は、上記ステップS208で生成した提供装置側検証データVおよび素数pを、車載器3宛てに送信する(ステップS209)。送信部16は、提供装置側検証データVを送信する際に、公知技術であるデジタル署名を利用して送信する。
 続いて、車載器3のプログラム検証部32は、受信部31により受信された端末側検証データVと提供装置側検証データVとを引数とする特定の関数の計算結果が、特定の値である場合に、携帯端末2の車両データアプリが正規のプログラムであると判断する(ステップS210)。この動作例では、端末側検証データVと提供装置側検証データVと素数pとを上記(2)式の左辺に代入した結果が“1”になれば、携帯端末2の車両データアプリが正規のプログラムであると判断する。
 上述したように、第3実施形態におけるプログラム提供システムによれば、第1実施形態および第2実施形態におけるプログラム提供システムが奏する効果に加え、プログラム提供装置1と携帯端末2とで異なる関数および乱数を使用して検証データを作成できるため、提供装置側検証データと端末側検証データとを異ならせることができ、検証データの類推を困難にすることが可能となる。
 なお、上述した第3実施形態では、第1実施形態において説明したように、プログラム提供装置1が、携帯端末2から車載器3の機器識別情報を受信して車載器3を特定可能なことを前提として説明しているが、第3実施形態におけるプログラム提供装置1は、車載器3を特定できなくてもよい。この場合には、携帯端末2が、プログラム提供装置1と車載器3とを中継することができればよい。これは、携帯端末2が、提供装置側検証データVを取得しても、提供装置側検証データVを利用して端末側検証データVを生成することができないことによる。
 [第4実施形態]
 本発明の第4実施形態について説明する。第4実施形態におけるプログラム提供システムが、上述した第1実施形態乃至第3実施形態におけるプログラム提供システムと相違する点は、第1実施形態乃至第3実施形態では、車載器の如何を問わない検証データを用いているが、第4実施形態では、同一の車載器でのみ検証可能な検証データを用いる点である。
 これは、車載器の如何を問わない検証データを用いると、提供装置側検証データVと端末側検証データVとが不正に取得され、それらの検証データV、Vが別の車載器に送信されることも考えられ、そのような場合、別の車載器から不正に車両データが取得されてしまうおそれがあるためである。そこで、第4実施形態では、プログラム提供装置1が、車載器側の鍵情報を用いて検証データを生成することで、同一の車載器でなければ検証できないようにした。
 この相違により、第4実施形態では、第3実施形態におけるプログラム提供システムの各構成要素が有する機能の一部を変更している。以下においては、主に第3実施形態との相違点について説明する。
 車載器3の送信部33は、車載器側の鍵情報をプログラム提供装置1に送信する。例示的に、第4実施形態では、以下の(7)で表される鍵情報を車載器側の公開鍵情報として送信する。
 α mod p … (7)
 上記(7)において、pは素数であり、αは素数pを法とする原始根かつ定数であり、Yはプログラム提供装置側の秘密鍵である。
 公開鍵情報の送信タイミングは、携帯端末2がプログラム提供装置1にダウンロードを要求する前後であってもよいし、車載器からプログラム提供装置1に予め送信して登録しておくこととしてもよい。
 プログラム提供装置1の関数生成部12は、車載器側の公開鍵情報を用いて、提供装置用関数K()および端末用関数K()を生成する。なお、提供装置用関数K()と端末用関数K()との関係は、第3実施形態と同様である。
 例示的に、第4実施形態では、以下の(8)式を満たすような提供装置用関数K()および端末用関数K()を生成することとする。
 V・V  mod p ≡ 1 … (8)
 上記(8)式において、Vは端末側検証データ(端末用関数K()の計算結果)であり、Vは提供装置側検証データ(提供装置用関数K()の計算結果)であり、Yはプログラム提供装置側の秘密鍵であり、pは素数である。
 プログラム提供装置1の検証データ生成部15は、以下の(9)式を計算することで提供装置側検証データVを算出する。
 K() = V ≡ α-RS・K() mod p … (9)
 上記(9)式において、pは素数であり、αは素数pを法とする原始根かつ定数であり、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数である。上記(9)式は、以下の(a)~(c)の手順により導出可能である。
 (a)関数生成部12が生成する端末用関数K()を、以下の(10)式とする。
 K() = V ≡ (αY・RSK()mod p … (10)
 上記(10)式において、Vは端末側検証データであり、pは素数であり、αは素数pを法とする原始根かつ定数であり、Yはプログラム提供装置側の秘密鍵であり、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数である。
 (b)上記(8)式に、上記(10)式を代入して、以下の(11)式を導出する。
 (αY・RSK()・V  mod p ≡ 1 … (11)
 (c)上記(11)式と以下の(12)式とから上記(9)式を導出する。
 α ≡ 1(mod p) … (12)
 携帯端末2の検証データ生成部22は、受信部21により受信された関数付プログラムPK()を実行し、この関数付プログラムPK()に埋め込まれたハッシュ関数K()を計算し、このハッシュ関数K()の計算結果を、上記(10)式に代入して端末側検証データVを生成する。
 次に、図4を参照して、第4実施形態におけるプログラム提供システムの動作について説明する。図4は、携帯端末が正規の車両データアプリを実行しているかどうかを判断する際の手順を示すシーケンスチャートである。この動作での前提条件は、第1実施形態と同様であるため、その説明を省略する。
 最初に、車載器3の送信部33は、車載器側の公開鍵情報をプログラム提供装置1に送信する(ステップS301)。
 続いて、携帯端末2の送信部23が、車両データアプリのダウンロード要求を送信し(ステップS302)、プログラム提供装置1の受信部11が、車両データアプリのダウンロード要求を受信する。
 続いて、プログラム提供装置1の関数生成部12は、提供装置用関数K()および端末用関数K()を生成する(ステップS303)。この動作例では、上記(9)式を提供装置用関数K()として生成し、上記(10)式を端末用関数K()として生成することとする。
 続いて、プログラム提供装置1の関数付プログラム生成部13は、上記ステップS303で生成した端末用関数K()に含まれるハッシュ関数K()を車両データアプリPに埋め込むことで関数付プログラムPK()を生成する(ステップS304)。
 続いて、プログラム提供装置1の乱数生成部14は、提供装置用乱数Rおよび端末用乱数Rを生成する(ステップS305)。
 続いて、プログラム提供装置1の送信部16は、上記ステップS303で生成した端末用関数K()、上記ステップS304で生成した関数付プログラムPK()および上記ステップS305で生成した端末用乱数Rを、携帯端末2に送信する(ステップS205)。
 続いて、携帯端末2の検証データ生成部22は、受信部21により受信された端末用関数K()を計算することで端末側検証データVを生成する(ステップS307)。この動作例では、受信部21により受信された関数付プログラムPK()を実行し、この関数付プログラムPK()に埋め込まれたハッシュ関数K()を計算し、その計算結果を、上記(10)式に代入することで、端末側検証データVを生成する。ハッシュ関数K()は、自端末2の端末識別情報TIDと、受信部21により受信された関数付プログラムPK()と、受信部21により受信された端末用乱数Rとを元データとし、この元データのハッシュ値を算出する。
 続いて、携帯端末2の送信部23は、上記ステップS307で生成した端末側検証データVを車載器3に送信する(ステップS308)。
 一方、プログラム提供装置1の検証データ生成部15は、上記ステップS303で生成した提供装置用関数K()を計算することで提供装置側検証データVを生成する(ステップS309)。この動作例では、上記(9)式を計算することで提供装置側検証データVを生成する。
 続いて、プログラム提供装置1の送信部16は、上記ステップS309で生成した提供装置側検証データVおよび素数pを、車載器3宛てに送信する(ステップS310)。送信部16は、提供装置側検証データVを送信する際に、公知技術であるデジタル署名を利用して送信する。
 続いて、車載器3のプログラム検証部32は、受信部31により受信された端末側検証データVと提供装置側検証データVとを引数とする特定の関数の計算結果が、特定の値である場合に、携帯端末2の車両データアプリが正規のプログラムであると判断する(ステップS311)。この動作例では、端末側検証データVと提供装置側検証データVと素数pとを上記(8)式の左辺に代入した結果が“1”になれば、携帯端末2の車両データアプリが正規のプログラムであると判断する。
 上述したように、第4実施形態におけるプログラム提供システムによれば、第1実施形態乃至第2実施形態におけるプログラム提供システムが奏する効果に加え、車載器側の公開鍵情報を用いて検証データを生成することができるため、同一の車載器でなければ検証不能となり、車両データの不正取得をより困難にすることが可能となる。
 なお、上述した第4実施形態では、関数生成部12が上記(8)式を満たすような提供装置用関数K()および端末用関数K()を生成する場合について例示的に説明しているが、上記(8)式を満たすことには限定されない。例えば、以下の(13)式を満たすような提供装置用関数K()および端末用関数K()を生成することとしてもよい。
 V VS mod p ≡ α … (13)
 上記(13)式において、Vは端末側検証データ(端末用関数K()の計算結果)であり、Vは提供装置側検証データ(提供装置用関数K()の計算結果)であり、pは素数であり、αは素数pを法とする原始根かつ定数であり、Yはプログラム提供装置側の秘密鍵である。
 この場合、車載器3は、“V ≡ α (mod p)”を認識しているものとし、プログラム提供装置1の関数生成部12は、以下の(14)式から導出可能な関数を提供装置用関数K()として生成し、以下の(15)式を端末用関数K()として生成し、プログラム提供装置1の検証データ生成部15は、以下の(14)式を満たすVを計算することで提供装置側検証データVを生成すればよい。
 R・K()・V ≡ Y(mod(p-1)) … (14)
 上記(14)式において、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数であり、Vは提供装置側検証データであり、Yはプログラム提供装置側の秘密鍵であり、pは素数である。
 K() = V ≡ (αRSK() mod p … (15)
 上記(15)式において、Vは端末側検証データであり、pは素数であり、αは素数pを法とする原始根かつ定数であり、Rは提供装置用乱数であり、K()は端末識別情報TID、関数付プログラムPK()および端末用乱数Rを元データとするハッシュ関数である。
 なお、上述した各実施形態は、単なる例示に過ぎず、各実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
 例えば、上述した各実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下のように限定するものではない。
 (付記1) 所定のプログラムのダウンロード要求を携帯端末から受信する受信部と、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成部と、前記関数生成部により生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成部と、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成部と、前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を、前記携帯端末に送信する第1送信部と、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を用い、前記関数生成部により生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成部と、前記検証データ生成部により生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信部と、を備えることを特徴とするプログラム提供装置。
 (付記2) 前記乱数生成部は、生成した前記乱数を用いて当該乱数を特定困難にする第2乱数に変換し、当該第2乱数を前記関数用乱数とする、ことを特徴とする付記1記載のプログラム提供装置。
 (付記3) 前記関数生成部は、異なる二つの前記関数を生成し、前記乱数生成部は、異なる二つの前記関数用乱数を生成し、前記二つの関数は、前記二つの前記関数用乱数を用いて計算することで得られる二つの結果から、特定の値を導出可能な関数である、ことを特徴とする付記1または2記載のプログラム提供装置。
 (付記4) 前記機器から当該機器の鍵情報を受信する鍵情報受信部を、さらに備え、前記二つの関数は、前記鍵情報受信部により受信された前記鍵情報を引数に含む関数である、ことを特徴とする付記3記載のプログラム提供装置。
 (付記5) 前記プログラムは、前記機器が管理しているデータを取得する機能を有するプログラムである、ことを特徴とする付記1~4のいずれかに記載のプログラム提供装置。
 (付記6) 前記第2送信部は、前記提供装置側の検証データを、デジタル署名を利用して前記機器宛てに送信する、ことを特徴とする付記1~5のいずれかに記載のプログラム提供装置。
 (付記7) 付記1~6のいずれかに記載のプログラム提供装置と、前記携帯端末と、前記機器とを備えるシステムであって、
 前記携帯端末は、前記関数付プログラムおよび前記関数用乱数を受信する端末側受信部と、自端末の前記端末識別情報、前記端末側受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記端末側受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する端末側検証データ生成部と、前記端末側検証データ生成部により生成された前記端末側の検証データを、前記機器に送信する端末側送信部と、を備え、
 前記機器は、前記提供装置側の検証データおよび前記端末側の検証データをそれぞれ受信する機器側受信部と、前記機器側受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、を備える、ことを特徴とするシステム。
 (付記8) 所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信部と、自端末を一意に特定可能な端末識別情報、前記受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成部と、前記検証データ生成部により生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信部と、を備えることを特徴とする携帯端末。
 (付記9) 自機器と近距離無線通信を行う携帯端末から送信される端末側の検証データ、および前記携帯端末に所定のプログラムを提供するプログラム提供装置から送信される提供装置側の検証データをそれぞれ受信する受信部と、前記受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、を備えることを特徴とする車載器。
 (付記10) 所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、を含むことを特徴とするプログラム提供方法。
 (付記11) 所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、携帯端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記端末側の検証データを、携帯端末と近距離無線通信を行う機器に送信する送信ステップと、を含むことを特徴とする検証データ送信方法。
 (付記12) 車載器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、を含むことを特徴とするプログラム検証方法。
 (付記13) コンピュータに、所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、を実行させることを特徴とするプログラム。
 (付記14) 携帯端末に、所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、自端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、前記検証データ生成ステップにおいて生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信ステップと、を実行させることを特徴とするプログラム。
 (付記15) 車載器に、自機器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、を実行させることを特徴とするプログラム。
 この出願は、2012年4月27日に出願された日本出願特願2012-102714を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 本発明に係るプログラム提供装置、システム、プログラム提供方法およびプログラムは、携帯端末と近距離無線通信を行う機器側で携帯端末のプログラムの正当性を確実に判断させることに適している。
1     プログラム提供装置
2     携帯端末
3     車載器
11   受信部
12   関数生成部
13   関数付プログラム生成部
14   乱数生成部
15   検証データ生成部
16   送信部
21   受信部
22   検証データ生成部
23   送信部
31   受信部
32   プログラム検証部
33   送信部

Claims (15)

  1.  所定のプログラムのダウンロード要求を携帯端末から受信する受信部と、
     前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成部と、
     前記関数生成部により生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成部と、
     乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成部と、
     前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を、前記携帯端末に送信する第1送信部と、
     前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成部により生成された前記関数付プログラムおよび前記乱数生成部により生成された前記関数用乱数を用い、前記関数生成部により生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成部と、
     前記検証データ生成部により生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信部と、
     を備えることを特徴とするプログラム提供装置。
  2.  前記乱数生成部は、生成した前記乱数を用いて当該乱数を特定困難にする第2乱数に変換し、当該第2乱数を前記関数用乱数とする、ことを特徴とする請求項1記載のプログラム提供装置。
  3.  前記関数生成部は、異なる二つの前記関数を生成し、
     前記乱数生成部は、異なる二つの前記関数用乱数を生成し、
     前記二つの関数は、前記二つの前記関数用乱数を用いて計算することで得られる二つの結果から、特定の値を導出可能な関数である、ことを特徴とする請求項1または2記載のプログラム提供装置。
  4.  前記機器から当該機器の鍵情報を受信する鍵情報受信部を、さらに備え、
     前記二つの関数は、前記鍵情報受信部により受信された前記鍵情報を引数に含む関数である、ことを特徴とする請求項3記載のプログラム提供装置。
  5.  前記プログラムは、前記機器が管理しているデータを取得する機能を有するプログラムである、ことを特徴とする請求項1~4のいずれか1項に記載のプログラム提供装置。
  6.  前記第2送信部は、前記提供装置側の検証データを、デジタル署名を利用して前記機器宛てに送信する、ことを特徴とする請求項1~5のいずれか1項に記載のプログラム提供装置。
  7.  請求項1~6のいずれか1項に記載のプログラム提供装置と、前記携帯端末と、前記機器とを備えるシステムであって、
     前記携帯端末は、
     前記関数付プログラムおよび前記関数用乱数を受信する端末側受信部と、
     自端末の前記端末識別情報、前記端末側受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記端末側受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する端末側検証データ生成部と、
     前記端末側検証データ生成部により生成された前記端末側の検証データを、前記機器に送信する端末側送信部と、
     を備え、
     前記機器は、
     前記提供装置側の検証データおよび前記端末側の検証データをそれぞれ受信する機器側受信部と、
     前記機器側受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、
     を備える、ことを特徴とするシステム。
  8.  所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信部と、
     自端末を一意に特定可能な端末識別情報、前記受信部により受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信部により受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成部と、
     前記検証データ生成部により生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信部と、
     を備えることを特徴とする携帯端末。
  9.  自機器と近距離無線通信を行う携帯端末から送信される端末側の検証データ、および前記携帯端末に所定のプログラムを提供するプログラム提供装置から送信される提供装置側の検証データをそれぞれ受信する受信部と、
     前記受信部により受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される前記プログラムが正規のプログラムであるかどうかを検証するプログラム検証部と、
     を備えることを特徴とする車載器。
  10.  所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、
     前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、
     前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、
     乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、
     前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、
     前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、
     前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、
     を含むことを特徴とするプログラム提供方法。
  11.  所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、
     携帯端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、
     前記検証データ生成ステップにおいて生成された前記端末側の検証データを、携帯端末と近距離無線通信を行う機器に送信する送信ステップと、
     を含むことを特徴とする検証データ送信方法。
  12.  車載器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、
     前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、
     を含むことを特徴とするプログラム検証方法。
  13.  コンピュータに、
     所定のプログラムのダウンロード要求を携帯端末から受信する受信ステップと、
     前記ダウンロード要求に対応する前記プログラムの正当性を検証するための関数を生成する関数生成ステップと、
     前記関数生成ステップにおいて生成された前記関数の一部または全部を、前記ダウンロード要求に対応する前記プログラムが実行されたときに計算されるように当該プログラムに埋め込むことで関数付プログラムを生成する関数付プログラム生成ステップと、
     乱数を生成することで、前記関数に用いる関数用乱数を生成する乱数生成ステップと、
     前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を、前記携帯端末に送信する第1送信ステップと、
     前記ダウンロード要求に含まれる前記携帯端末を一意に特定可能な端末識別情報、前記関数付プログラム生成ステップにおいて生成された前記関数付プログラムおよび前記乱数生成ステップにおいて生成された前記関数用乱数を用い、前記関数生成ステップにおいて生成された前記関数を計算することで、提供装置側の検証データを生成する検証データ生成ステップと、
     前記検証データ生成ステップにおいて生成された前記提供装置側の検証データを、前記携帯端末と近距離無線通信を行う機器宛てに送信する第2送信ステップと、
     を実行させることを特徴とするプログラム。
  14.  携帯端末に、
     所定のプログラムの正当性を検証するための関数の一部または全部が、当該プログラムを実行したときに計算されるように当該プログラムに埋め込まれている関数付プログラム、および前記関数に用いる乱数として生成された関数用乱数を受信する受信ステップと、
     自端末を一意に特定可能な端末識別情報、前記受信ステップにおいて受信された前記関数付プログラムおよび前記関数用乱数を用いて、前記受信ステップにおいて受信された前記関数付プログラムに埋め込まれた前記関数を計算することで端末側の検証データを生成する検証データ生成ステップと、
     前記検証データ生成ステップにおいて生成された前記端末側の検証データを、自端末と近距離無線通信を行う機器に送信する送信ステップと、
     を実行させることを特徴とするプログラム。
  15.  車載器に、
     自機器と近距離無線通信を行う携帯端末から送信された端末側の検証データ、および前記携帯端末にプログラムを提供するプログラム提供装置から送信された提供装置側の検証データをそれぞれ受信する受信ステップと、
     前記受信ステップにおいて受信された前記提供装置側の検証データおよび前記端末側の検証データを用いて、前記携帯端末で実行される所定のプログラムが正規のプログラムであるかどうかを検証するプログラム検証ステップと、
     を実行させることを特徴とするプログラム。
PCT/JP2013/054519 2012-04-27 2013-02-22 プログラム提供装置、システム、プログラム提供方法およびプログラム WO2013161371A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012102714 2012-04-27
JP2012-102714 2012-04-27

Publications (1)

Publication Number Publication Date
WO2013161371A1 true WO2013161371A1 (ja) 2013-10-31

Family

ID=49482712

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/054519 WO2013161371A1 (ja) 2012-04-27 2013-02-22 プログラム提供装置、システム、プログラム提供方法およびプログラム

Country Status (1)

Country Link
WO (1) WO2013161371A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104158819A (zh) * 2014-08-27 2014-11-19 重庆长安汽车股份有限公司 车载信息娱乐终端的安全认证方法
CN112448816A (zh) * 2019-08-31 2021-03-05 华为技术有限公司 一种身份验证方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003036318A (ja) * 2001-04-03 2003-02-07 Nippon Telegr & Teleph Corp <Ntt> コンテンツ付加サービス照会サーバと、それを実現するためのプログラム及びそのプログラムを記録した記録媒体、ならびにコンテンツ付加サービス提供システム
JP2007506187A (ja) * 2003-09-18 2007-03-15 アップル コンピュータ、インコーポレイテッド インクリメンタルなコード署名の方法及び装置
JP2008146600A (ja) * 2006-12-13 2008-06-26 Fuji Electric Retail Systems Co Ltd 販売システム
JP2012060396A (ja) * 2010-09-08 2012-03-22 Denso Corp 車載機器操作システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003036318A (ja) * 2001-04-03 2003-02-07 Nippon Telegr & Teleph Corp <Ntt> コンテンツ付加サービス照会サーバと、それを実現するためのプログラム及びそのプログラムを記録した記録媒体、ならびにコンテンツ付加サービス提供システム
JP2007506187A (ja) * 2003-09-18 2007-03-15 アップル コンピュータ、インコーポレイテッド インクリメンタルなコード署名の方法及び装置
JP2008146600A (ja) * 2006-12-13 2008-06-26 Fuji Electric Retail Systems Co Ltd 販売システム
JP2012060396A (ja) * 2010-09-08 2012-03-22 Denso Corp 車載機器操作システム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104158819A (zh) * 2014-08-27 2014-11-19 重庆长安汽车股份有限公司 车载信息娱乐终端的安全认证方法
CN112448816A (zh) * 2019-08-31 2021-03-05 华为技术有限公司 一种身份验证方法及装置
US11979413B2 (en) 2019-08-31 2024-05-07 Huawei Technologies Co., Ltd. Identity verification method and apparatus

Similar Documents

Publication Publication Date Title
CN110225063B (zh) 汽车车载系统的升级方法、升级系统、服务器及车载终端
CN111376865B (zh) 车辆数字钥匙激活方法、系统及存储介质
CN101194229B (zh) 更新数据指令的方法和设备
US8856536B2 (en) Method and apparatus for secure firmware download using diagnostic link connector (DLC) and OnStar system
CN104904156B (zh) 认证处理装置、认证处理系统以及认证处理方法
CN103679005A (zh) 启用安全电子控制单元的开发模式的方法
JP2010011400A (ja) 共通鍵方式の暗号通信システム
CN111935672B (zh) 信息读取方法、装置、系统及存储介质
CN103248495B (zh) 一种应用内付费的方法、服务器、客户端和系统
EP2747377A2 (en) Trusted certificate authority to create certificates based on capabilities of processes
CN111565182B (zh) 一种车辆诊断方法、装置及存储介质
CN109492371B (zh) 一种数字证书空发方法及装置
WO2014183704A1 (zh) 一种软件注册的控制方法、认证服务器及终端
CN115396121A (zh) 安全芯片ota数据包的安全认证方法及安全芯片装置
JP2017011491A (ja) 認証システム
CN111510448A (zh) 汽车ota升级中的通讯加密方法、装置及系统
KR100932274B1 (ko) 이동 단말기의 소프트웨어 무결성 검증 장치 및 그 방법
WO2013161371A1 (ja) プログラム提供装置、システム、プログラム提供方法およびプログラム
CN109743283B (zh) 一种信息传输方法及设备
JP6343928B2 (ja) 携帯端末、認証システム、認証方法、および、認証プログラム
Plappert et al. Secure and Lightweight ECU Attestations for Resilient Over-the-Air Updates in Connected Vehicles
CN107241341B (zh) 访问控制方法及装置
CN115065522A (zh) 安全认证方法、车载控制器、远程通信终端和存储介质
US20130311770A1 (en) Tracing device and method
CN114329522A (zh) 一种私钥保护方法、装置、系统及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13782151

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13782151

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP