WO2013168797A1 - ソフトウェア配信システム、ソフトウェア配信方法 - Google Patents

ソフトウェア配信システム、ソフトウェア配信方法 Download PDF

Info

Publication number
WO2013168797A1
WO2013168797A1 PCT/JP2013/063162 JP2013063162W WO2013168797A1 WO 2013168797 A1 WO2013168797 A1 WO 2013168797A1 JP 2013063162 W JP2013063162 W JP 2013063162W WO 2013168797 A1 WO2013168797 A1 WO 2013168797A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
distribution
inspection
inspection program
computer
Prior art date
Application number
PCT/JP2013/063162
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 トヨタ自動車株式会社
Priority to CN201380024385.9A priority Critical patent/CN104272318B/zh
Priority to US14/399,750 priority patent/US9208320B2/en
Priority to EP13788603.2A priority patent/EP2849113B1/en
Publication of WO2013168797A1 publication Critical patent/WO2013168797A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Definitions

  • the present invention relates to a software distribution system.
  • Such devices include various devices such as portable terminals such as smartphones, personal computers, and in-vehicle terminals of automobiles (hereinafter, these terminals are referred to as client terminals).
  • client terminals Such terminals include various devices such as portable terminals such as smartphones, personal computers, and in-vehicle terminals of automobiles (hereinafter, these terminals are referred to as client terminals).
  • the software created by the developer is uploaded to a server for distribution and downloaded to the client terminal automatically by the system or by user operation.
  • the certification body conducts an operation test of the developed software and distributes only the software that passes the test.
  • the invention described in Patent Document 1 is an access control method related to the technique.
  • the certification authority generates certification information that proves that the software is safe, and transmits the certification information together with the software to the client terminal.
  • the client terminal determines access permission to the program based on the authorization information. By doing so, software that is not certified as safe cannot be operated on the client terminal.
  • client terminals such as smartphones and in-vehicle terminals have various execution environments
  • the client terminal is an information terminal mounted in a car
  • the present applicant has proposed a software creation method capable of monitoring the operation of the program while executing the program (Japanese Patent Application No. 2011-214992). Specifically, a monitoring program for verifying whether the input / output state, variables, and the like of the monitoring target program are in accordance with the specifications is executed at the same time to detect an unrecommended operation of the monitoring target program.
  • the monitoring target may be an application program or an operating system (OS) main body.
  • the software to be distributed and the corresponding monitoring program are not provided as a set, there is a possibility that the software operating on the client terminal is not protected.
  • the OS of the client terminal is upgraded, if the distribution of the monitoring program corresponding to the new version of the OS is delayed, the OS is not monitored until the monitoring program is received. If there is a problem code in the upgraded OS, there is a risk that it will be executed on the client terminal. In such a case, it is desirable to acquire and apply the monitoring program as soon as it is prepared.
  • the conventional software distribution service it is not assumed that another program to be executed simultaneously with the already distributed software is followed up. That is, there is a problem that the software cannot be protected unless the user manually downloads the monitoring program at an appropriate time and starts monitoring the target software.
  • the present invention has been made in consideration of the above-mentioned problems, and an object thereof is to provide a software distribution system that can shorten a state where software is not protected.
  • a software distribution system includes a computer having a function of verifying operation of software, a first distribution device that distributes software to the computer, and an inspection program that is a program for verifying the software on the computer
  • a software distribution system comprising: a second distribution device that distributes The first distribution device and the second distribution device are not necessarily separated from each other, and may be the same distribution device.
  • the computer includes a first software receiving unit configured to receive the software from the first distribution device, and the inspection program corresponding to the software from the second distribution device.
  • Second software receiving means for receiving the software, the software described in an execution format, and the inspection program are combined and executed, and the second software receiving means includes the first software receiving means.
  • the software receiving unit receives the software, it tries to acquire the inspection program corresponding to the software. If the inspection program cannot be acquired, the software execution unit repeats the retry at a predetermined interval.
  • the second software receiving means receives the inspection program. In timing, characterized by combining the software and the inspection program.
  • the software distributed from the distribution device is a program executed by a computer or a library called from the program.
  • the distributed software may be an operating system or an application program. Further, the distributed software need not operate alone, and may be, for example, only a library called from a program, or a binary code difference.
  • the computer that receives the software distribution requests the distribution apparatus to acquire the corresponding inspection program at the timing when the new software is received from the distribution apparatus. This acquisition request is repeatedly issued until a corresponding inspection program is obtained. By configuring in this way, even if the inspection program is prepared later than the distribution of the software body, the computer can automatically acquire this, so the distributed software is protected. The time that is not done can be shortened.
  • the program synthesis refers to performing pre-processing such that corresponding inspection programs are simultaneously executed when the inspection target software is executed. For example, an inspection program is added to software to be inspected to generate one program in an execution format. When adding the inspection programs, the processing contents of the software are changed so that the corresponding inspection programs are automatically executed. In this way, it is possible to execute the inspection program simultaneously with the software to be inspected. In addition, for example, a new program for simultaneously starting the software to be inspected and the corresponding inspection program may be generated. By synthesizing the distributed software and the inspection program on the client terminal side, the inspection program is always executed when the software is executed, so that the software can be protected more firmly.
  • the second distribution device may individually distribute a plurality of the inspection programs corresponding to different functions of software to be distributed.
  • an inspection program that monitors only the function related to the defect resolved by the upgrade is distributed. Since the inspection program for monitoring other functions has already been distributed, it is not distributed. By doing so, the data size of the inspection program can be reduced, and the delivery time of the inspection program can be shortened. Also, by separately creating the inspection program, the time until the inspection program is developed and distributed can be shortened.
  • the inspection program to be distributed may be an independent program that monitors only the target function, or may be a difference for updating an inspection program that has already been distributed.
  • the second software receiving unit may receive an inspection program corresponding to other software that requires the received software when the first software receiving unit receives the software. It is good also as acquiring from.
  • the first and second distribution devices are the same distribution device, and the distribution device generates software combining means for combining combined software to be distributed with an inspection program corresponding to the software; , Further comprising synthetic software distribution means for distributing the synthetic software to the computer, and when the inspection program corresponding to the distribution target software is stored in the distribution device, the software synthesis means Synthetic software is generated from the software and the inspection program, and the synthetic software distribution means distributes the synthetic software.
  • the present invention can be specified as a software distribution system including at least a part of the above means.
  • the present invention can also be specified as a software distribution method including at least a part of the processing performed by the above means.
  • the above processes and means can be freely combined and implemented as long as no technical contradiction occurs.
  • 1 is a system configuration diagram of a software distribution system according to a first embodiment. It is a processing flow figure of the software delivery system concerning a first embodiment. It is a system configuration figure of the software distribution system concerning a second embodiment. It is a table which determines the version of required application inspection code. It is a system configuration figure of the software distribution system concerning a third embodiment. It is a system configuration figure of the software distribution system concerning a 4th embodiment. It is a processing flowchart of the software delivery system which concerns on 4th embodiment.
  • the software distribution system according to the first embodiment includes a computer 100 having a function of updating an operating system via a network, a distribution device 200A for distributing the operating system to the computer, and a system inspection for the computer It consists of a distribution device 200B for distributing codes.
  • a system library refers to a part or all of an operating system for operating the computer 100
  • a system inspection code refers to an inspection program for monitoring the operation of the operating system.
  • FIG. 1 is a system configuration diagram of a software distribution system according to the present embodiment.
  • the computer 100 includes a CPU, a main storage device, and an auxiliary storage device (all not shown). Each unit shown in FIG. 1 functions by loading a program stored in the auxiliary storage device into the main storage device and executing it by the CPU.
  • the distribution apparatus 200A or 200B can also be realized by a computer, but all or part of the distribution apparatus 200A or 200B may be executed using a circuit designed for exclusive use.
  • the computer 100 includes a system library receiving unit 101, an inspection code distribution request unit 102, a system inspection code receiving unit 103, a code synthesis unit 104, and a code execution unit 105.
  • the computer 100 may be a personal computer, an in-vehicle terminal, a portable information terminal, or the like. Any computer that can execute arbitrary software including an operating system, middleware, user application, and the like may be used.
  • the system library receiving unit 101 is a means for receiving the system library to be updated via the network, and is the first software receiving means in the present invention.
  • the received system library contains all the software necessary to update the system.
  • the inspection code distribution request unit 102 is a means for requesting the distribution apparatus to distribute a system inspection code corresponding to the updated system.
  • the system inspection code receiving unit 103 is a unit that receives the system inspection code requested by the inspection code distribution request unit 102 from the distribution apparatus 200B.
  • the inspection code distribution request unit 102 and the system inspection code receiving unit 103 are the second software receiving means in the present invention.
  • the code synthesizing unit 104 is a unit that synthesizes the received system inspection code with the operating system.
  • the code synthesis may be performed on the received system library, or the operating system stored in the computer may be updated using the received system library and may be performed on the updated operating system.
  • code synthesis refers to performing a process in which both the software to be inspected and the inspection program are executed simultaneously.
  • a system inspection code is added to the updated operating system code, and a process for executing the system inspection code simultaneously with the execution of the operating system is added.
  • code synthesis does not necessarily have to be added together as long as it is a process for simultaneously starting the operating system and the inspection program. For example, a process for starting the inspection program at the same time as starting the system may be generated.
  • the code execution unit 105 is a means for executing the program synthesized by the code synthesis unit 104. By executing the program added by the code synthesis unit 104, the inspection of the inspection target software is started.
  • the code synthesis unit 104 and the code execution unit 105 are software execution means in the present invention.
  • the distribution device 200A is the first distribution device in the present invention
  • the distribution device 200B is the second distribution device in the present invention.
  • the system library distribution unit 201 is a unit that stores a system library that operates on the computer 100 and distributes the system library to the computer 100.
  • the system library stored and distributed may be the entire operating system as described above, or may be only a module necessary for updating the operating system.
  • the system inspection code distribution unit 202 is a means for storing a system inspection code, which is a program for monitoring a distribution target system library, and distributing the system inspection code to the computer 100.
  • the system inspection code distribution unit 202 stores a version of the system inspection code corresponding to the version of the system library distributed by the system library distribution unit 201.
  • the system inspection code of the corresponding version is not necessarily stored. No. For example, in order to prioritize system defect correction, the system library may be distributed first, and the system inspection code may be stored later.
  • FIG. 2 is a flowchart showing processing until the computer 100 receives the system library from the distribution apparatus 200A and the system inspection code from the distribution apparatus 200B and generates an execution module.
  • the system library receiving unit 101 requests the system library distribution unit 201 to distribute the system library, and receives the distributed system library (S11).
  • the received system library is transmitted to the code synthesis unit 104.
  • the inspection code distribution request unit 102 inquires of the system inspection code distribution unit 202 whether there is a system inspection code corresponding to the received system library (S12). Specifically, the system inspection code version already stored in the computer 100 and the distributed system library version are transmitted to the distribution apparatus, and the system inspection code distribution unit 202 requires the system inspection code to be updated. Determine if there is.
  • the result of the determination performed by the system inspection code distribution unit 202 in step S12 can be classified into the following three types.
  • the process proceeds to S14, and distribution of the version of the system inspection code to be distributed is started. (Case (1) above) If the system inspection code does not need to be updated, such as when the function of the system library has not been significantly added or changed, a response indicating that distribution is not required is returned as a response. In this case, the process ends. (Case (2) above)
  • the correction of the system library is given priority and the preparation of the inspection code may not be in time. If the inspection code is not ready, the corresponding inspection code version cannot be returned as a response even if an inquiry is received from the inspection code distribution request unit 102. In such a case, the system inspection code distribution unit 202 returns a response to the inspection code distribution request unit 102 that preparation for distribution is not completed. In this case, the process returns to step S12, and an inquiry is made again after an interval of several minutes to several hours. This interval can be any time. (Case (3) above)
  • step S14 the system inspection code receiving unit 103 receives a corresponding version of the system inspection code.
  • the received system check code is transmitted to the code synthesis unit 104. If unsuccessful (S15-No), it is retried after a predetermined time.
  • the code synthesis unit 104 updates the operating system using the received system library.
  • the code synthesis unit 104 synthesizes the operating system and the system inspection code (S16).
  • a technique for adding another program code to an execution format program code and controlling the execution is described in, for example, Japanese Patent Application Laid-Open No. 2002-229790.
  • the inspection program is added to the end of the program to be inspected, and the entry point (execution start address) held in the header of the execution file is changed to the address of the inspection program.
  • the inspection program copies only the portion of the synthesized code excluding itself, that is, the program to be inspected, to the main storage device and executes it. By doing in this way, when trying to execute the program to be inspected, the inspection program is started first, and the inspection program starts the program to be inspected, so both can be executed simultaneously.
  • the generated execution module is transmitted to the code execution unit 105, and the process ends.
  • a system inspection code is activated and monitoring of the system is started.
  • a corresponding inspection code is requested from the distribution apparatus. If the inspection code is not prepared, the distribution request is periodically repeated until it can be acquired, and the inspection code is synthesized at the timing when it is acquired. With this configuration, the time during which the system is not protected by the inspection code can be minimized.
  • the software distribution system is a form in which a distribution apparatus distributes application programs to client terminals via a network.
  • a distribution apparatus distributes application programs to client terminals via a network.
  • only the minimum necessary code is distributed when the inspection code is distributed.
  • the purpose of distributing the software and the inspection program is the same as that of the first embodiment except that the type of software to be received is different.
  • the same means as those of the first embodiment are denoted by the same reference numerals and description thereof is omitted.
  • the operations other than the steps described below are the same as in the first embodiment.
  • FIG. 3 is a system configuration diagram of the software distribution system according to the second embodiment.
  • the application receiving unit 111 is a unit that receives an application program distributed from the distribution apparatus 200A.
  • the processing contents are the same as those of the system library receiving unit 101 except for the types of received software.
  • the inspection code distribution request unit 112 is means for requesting the distribution apparatus 200B to distribute an application inspection code that is an inspection program corresponding to the updated application program.
  • the processing contents are the same as those of the inspection code distribution request unit 102 except for the types of inspection codes to be requested.
  • the application inspection code receiving unit 113 is means for receiving an application inspection code distributed from the distribution device 200B.
  • the processing contents are the same as those of the system inspection code receiving unit 103 except that the software targeted by the inspection code is different.
  • the code synthesis unit 114 is a unit that synthesizes the received application inspection code into an application program.
  • the content of the processing is the same as that of the code synthesis unit 104 except for the type of target software.
  • the application distribution unit 211 is a means for storing an application program that runs on the computer 100 and distributing it to the computer 100.
  • the application program to be distributed may be the entire application, or only a module or difference required for updating.
  • the processing contents are the same as those of the system library distribution unit 201 except for the types of software to be distributed.
  • the application inspection code distribution unit 212 is a means for storing an application inspection code, which is a program for monitoring an application program, and distributing it to the computer 100.
  • the function is the same as that of the system inspection code distribution unit 202 in the first embodiment, but the method for storing the application inspection code is different.
  • the system inspection code distribution unit 202 stores an inspection code corresponding to the entire system library to be distributed, but the application inspection code distribution unit 212 in this embodiment corresponds to a part of the functions of the application program to be distributed. It differs from the first embodiment in that the inspection code is stored individually.
  • step S11 the application reception unit 111 requests the application distribution unit 211 to distribute the application program, and receives the application program.
  • the application inspection code distribution unit 212 is inquired about the presence or absence of the application inspection code corresponding to the received version of the application program by the same method as in the first embodiment.
  • the information indicating what version of the application inspection code to be distributed may be held by the application inspection code distribution unit 212 in a table format as shown in FIG. 4, for example.
  • FIG. 4 since only the inspection code corresponding to the changed function of the application program is distributed, the newer the version of the application before the update, the less the application inspection code to be acquired.
  • FIG. 4 for example, when the version of the application program before update is 1.5, application inspection codes having versions 2.0 and 2.1 are to be distributed.
  • step S13 is the same as that of the first embodiment.
  • step S14 the application inspection code receiving unit 113 receives the target application inspection code.
  • steps S15 to S16 are the same as in the first embodiment.
  • the size of the inspection code can be suppressed and the consumption of the communication band can be suppressed.
  • the development scale of the inspection program is reduced, the time until preparation for distribution is completed can be shortened.
  • the third embodiment is a form in which a function for synthesizing a system library and a system inspection code is added to the distribution apparatus according to the first embodiment.
  • the distribution apparatus side synthesizes and distributes the system inspection code and the system library, and distributes them individually when they are not prepared.
  • the same means as those of the first embodiment are denoted by the same reference numerals and description thereof is omitted.
  • the operations other than the steps described below are the same as in the first embodiment.
  • FIG. 5 is a system configuration diagram of a software distribution system according to the third embodiment.
  • the operations of the system library distribution unit 201 and the system inspection code distribution unit 202 are similar to those of the first embodiment, but the system library and system inspection code to be distributed are transmitted via the code synthesis unit 203. This is different from the first embodiment.
  • the distribution device that distributes the system library and the distribution device that distributes the system inspection code are the same distribution device 200.
  • the code synthesis unit 203 is a unit that synthesizes the system library and the system inspection code, generates one execution module, and then distributes the synthesized program to the computer 100. However, the code synthesis is performed only when the corresponding system inspection code exists in the distribution device when the distribution of the system library is started. When the corresponding system inspection code is not prepared, code synthesis is not performed and distribution similar to that in the first embodiment is performed.
  • the code synthesis unit 203 is software synthesis means and synthesized software distribution means in the present invention.
  • step S11 the system library receiving unit 101 requests the code synthesis unit 203 to distribute the system library. If the system inspection code corresponding to the requested version of the system library is stored in the distribution device, the code synthesis unit 203 synthesizes and distributes the system library and the corresponding system inspection code. Otherwise, only the system library is distributed without performing synthesis.
  • step S12 the inspection code distribution request unit 102 inquires of the distribution apparatus whether there is a system inspection code corresponding to the received system library. However, if the received system library is synthesized by the distribution apparatus, the corresponding system check code has already been acquired, so steps S12 to S16 are skipped and the process is terminated. If the received system library is not synthesized by the distribution device and the corresponding system inspection code exists in the distribution device (that is, if the system inspection code is added later), the process proceeds to step S14. The system inspection code receiving unit 103 acquires the system inspection code. If the received system library is not synthesized by the distribution device and the corresponding system inspection code is not ready for distribution, the process proceeds to step S12 again. The processes in steps S15 to S16 are the same as in the first embodiment.
  • the distribution apparatus side can synthesize the code, and if it is not ready, it can be distributed individually. . As a result, it is possible to reduce the load on the client terminal, and it is possible to cope with a case where preparation of the system inspection code is postponed.
  • the fourth embodiment when the system library is received and the operating system is updated, a test code for the application program is also requested at the same time.
  • the application program may not operate normally due to a compatibility problem. For example, there is a case where the specification of the API used in the application is changed by upgrading the operating system. In such a case, if the application inspection code does not correspond to the latest operating system, it cannot be determined whether the application program does not operate normally due to a limitation on the system or whether it does not operate normally due to a mere defect. In order to cope with such a case, the fourth embodiment attempts to acquire the latest inspection code for the application simultaneously with the system update.
  • the same means as those of the first embodiment are denoted by the same reference numerals and description thereof is omitted.
  • FIG. 6 is a system configuration diagram of a software distribution system according to the fourth embodiment.
  • the inspection code distribution request unit 102 is a means for requesting the distribution apparatus 200 to distribute a system inspection code corresponding to the updated system, and simultaneously distributes the application inspection code corresponding to the updated system to the distribution apparatus 200. It differs from the first embodiment in that it requires.
  • the distribution device that distributes the system library and the distribution device that distributes the system inspection code are configured as the same distribution device 200.
  • FIG. 7 is a flowchart of processing performed by the computer 100 according to the fourth embodiment.
  • the processing from step S11 to S16 is processing for updating the system, and is the same as in the first embodiment.
  • the inspection code distribution request unit 102 inquires of the distribution apparatus whether there is a necessary application inspection code, as in the second embodiment (S22).
  • the summary of the inquiry is "Is there an application inspection code corresponding to the updated system version?" That is, the inspection code distribution request unit 102 transmits the received version of the system library at the same time, and checks whether updating is necessary for all stored application inspection codes.
  • the inspection code distribution request unit 102 returns the process to step S22 and tries again with the same method as in the first embodiment. If the corresponding application inspection code is prepared, all the application inspection codes of the corresponding version are acquired in step S24. The received application inspection code is transmitted to the code synthesis unit 104, and code synthesis is performed (S26). In addition, when only some of the plurality of application inspection codes are prepared, an acquirable one may be acquired first.
  • the latest application inspection code is acquired in conjunction with the system update.
  • each embodiment is an exemplification for explaining the present invention, and the present invention can be appropriately modified or combined in a range not departing from the gist of the invention.
  • the distribution device that distributes software and the distribution device that distributes the inspection program are separate devices, but the software and the inspection program may be distributed from the same distribution device.
  • inspects with respect to an operating system was described in 1st embodiment, it is good also considering an application program as a test object.
  • the form in which the application program is inspected has been described, but the operating system may be the inspection target. The contents of the processing described in each embodiment may be used together.
  • the inspection program described in each embodiment may be any program as long as it verifies the validity of the software to be executed. For example, it may be one that verifies and records whether the API (Application Programming Interface) calling method used is correct, or one that detects and blocks access to unauthorized resources. Good.
  • API Application Programming Interface

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

 第一の配信装置から、ソフトウェアを受信する第一のソフトウェア受信手段と、第二の配信装置から、前記ソフトウェアを検証するプログラムである検査プログラムを受信する第二のソフトウェア受信手段と、実行形式で記述された前記ソフトウェアと、前記検査プログラムとを合成し、実行するソフトウェア実行手段を有し、前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段が前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、前記ソフトウェア実行手段は、前記第二のソフトウェア受信手段が前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成する。

Description

ソフトウェア配信システム、ソフトウェア配信方法
 本発明は、ソフトウェア配信システムに関する。
 近年、インターネットに接続可能な機器がネットワークを通してソフトウェアを取得する形態が普及している。このような機器には、例えばスマートフォンのような携帯端末から、パーソナルコンピュータ、自動車の車載端末といった様々なものがある(これらの端末を以下、クライアント端末と称する)。開発者によって作成されたソフトウェアは、配布を行うためのサーバにアップロードされ、システムによって自動的に、または利用者の操作によってクライアント端末にダウンロードされる。
 一方で、悪意のあるソフトウェアや設計ミスを含むソフトウェアがサーバにアップロードされると、当該ソフトウェアをダウンロードしたクライアント端末に動作不良を引き起こしたり、端末内の情報が漏洩するなどといった被害が出る恐れがある。
 そこで、ソフトウェアの安全性を確保するため、開発されたソフトウェアの動作テストを認証機関が行い、テストに合格したソフトウェアのみを流通させるという手法がある。特許文献1に記載された発明は、当該手法に関連するアクセス制御方法である。当該発明では、認定機関が、ソフトウェアが安全であると証明する認定情報を生成し、ソフトウェアとともにクライアント端末に送信する。クライアント端末は、当該認定情報に基づいてプログラムへのアクセス許可を決定する。このようにすることで、安全であると認定されていないソフトウェアをクライアント端末上で動作させることができなくなる。
特開2003-283494号公報
 しかしながら、スマートフォンや車載端末といったクライアント端末にはさまざまな実行環境があるため、認証機関の固定された動作テスト環境では十分な動作検証を行うことができない場合がある。例えば、クライアント端末が自動車に車載された情報端末である場合、自動車の様々な走行状態を再現しなければテストが行えないため、完全な動作検証を行うことが難しいという問題がある。
 そこで本出願人は、プログラムを実行しながら当該プログラムの動作監視を行うことができるソフトウェア作成方法を提案している(特願2011-214992)。具体的には、監視対象プログラムの入出力状態や変数などが、仕様通りとなっているか検証するための監視プログラムを同時に実行させ、監視対象プログラムの推奨されない動作を検出している。監視対象は、アプリケーションプログラムであってもよいし、オペレーティングシステム(OS)本体であってもよい。
 ところで、クライアント端末で動作するソフトウェアは、頻繁に更新(アップデート)される場合が多い。ソフトウェアのアップデートは、セキュリティ対策や不具合の解消、機能追加等のために行われる。ネットワークを通じてソフトウェアやソフトウェアのアップデートを配信する形態に前述の手法を適用しようとした場合、配信対象のプログラムと、当該プログラムに対応する監視プログラムをその都度同時に配布しなければならないという制約がある。
 すなわち、配布対象のソフトウェアと、対応する監視プログラムをセットで提供しなければ、クライアント端末で動作するソフトウェアが保護されていない状態が生じる可能性がある。例えば、クライアント端末のOSをバージョンアップした際、新しいバージョンのOSに対応する監視プログラムの配布が遅れてしまうと、監視プログラムの配信を受けるまでの間はOSが監視されない状態となってしまうため、もしバージョンアップしたOSに問題のあるコードが含まれていた場合、クライアント端末上で実行されてしまう危険がある。このような場合は、監視プログラムが準備され次第、取得して適用することが望ましい。しかし、従来のソフトウェア配信サービスでは、既に配信したソフトウェアと同時に実行されるべき別のプログラムを後追いで補充することは想定されていない。つまり、利用者が時期を見計らって手動で監視プログラムをダウンロードし、対象ソフトウェアの監視を開始させない限り、ソフトウェアを保護された状態とすることができないという問題があった。
 本発明は上記の問題点を考慮してなされたものであり、ソフトウェアが保護されていない状態を短くすることができるソフトウェア配信システムを提供することを目的とする。
 本発明に係るソフトウェア配信システムは、ソフトウェアの動作を検証する機能を備えたコンピュータと、前記コンピュータにソフトウェアの配信を行う第一の配信装置と、前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置と、からなるソフトウェア配信システムである。なお第一の配信装置と、第二の配信装置は必ずしも分かれている必要はなく、同一の配信装置であってもよい。
 前述した課題を解決するために、前記コンピュータは、前記第一の配信装置から、前記ソフトウェアを受信する第一のソフトウェア受信手段と、前記第二の配信装置から、前記ソフトウェアに対応する前記検査プログラムを受信する第二のソフトウェア受信手段と、実行形式で記述された前記ソフトウェアと、前記検査プログラムとを合成し、実行するソフトウェア実行手段を有し、前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段が前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、前記ソフトウェア実行手段は、前記第二のソフトウェア受信手段が前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成することを特徴とする。
 配信装置から配信されるソフトウェアとは、コンピュータによって実行されるプログラム、もしくはプログラムから呼び出されるライブラリである。配信されるソフトウェアはオペレーティングシステムであってもよいし、アプリケーションプログラムであってもよい。また、配信されるソフトウェアは単独で動作するものである必要はなく、たとえばプログラムから呼び出されるライブラリのみであってもよいし、バイナリコードの差分などであってもよい。
 ソフトウェアの配信を受けるコンピュータは、配信装置から新しいソフトウェアを受信したタイミングで、対応する検査プログラムの取得を配信装置に対して要求する。この取得要求は、対応する検査プログラムが得られるまで繰り返し発行される。このように構成することにより、検査プログラムがソフトウェア本体の配信よりも遅れて準備されるようなケースであっても、コンピュータはこれを自動的に取得することができるため、配信されたソフトウェアが保護されていない時間を短くすることができる。
 プログラムの合成とは、検査対象のソフトウェアを実行した際に、対応する検査プログラムが同時に実行されるような事前処理を行うことを指す。例えば、検査対象のソフトウェアに検査プログラムを足し合わせ、実行形式の一つのプログラムを生成する。検査プログラムを足し合わせる際には、対応する検査プログラムを自動で実行するようにソフトウェアの処理内容を変更する。このようにすることで、検査対象のソフトウェアと同時に検査プログラムを実行させることが可能となる。この他にも、例えば検査対象のソフトウェアと、対応する検査プログラムとを同時に起動させるためのプログラムを新規に生成してもよい。
 クライアント端末側で、配布されたソフトウェアと検査プログラムとを合成することで、ソフトウェアを実行する際は必ず検査プログラムも実行されるようになるため、より強固にソフトウェアを保護できるようになる。
 また、前記第二の配信装置は、配信するソフトウェアのそれぞれ異なる一部の機能に対応する複数の前記検査プログラムを個別に配信することを特徴としてもよい。
 例えば、ソフトウェアの特定の機能に不具合が見つかり、当該不具合を解消するためのバージョンアップを行った場合、当該バージョンアップによって解消された不具合に関連する機能のみを監視する検査プログラムを配信する。その他の機能を監視する検査プログラムは既に配信済みであるため、配信を行わない。このようにすることで、検査プログラムのデータサイズを小さくすることができ、検査プログラムの配信時間を短縮することができる。また、検査プログラムを個別に作成することで、検査プログラムを開発して配信するまでの時間を短くすることができる。なお、配信される検査プログラムは、対象機能のみを監視する独立したプログラムであってもよいし、既に配信済みである検査プログラムをアップデートするための差分であってもよい。
 また、前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段がソフトウェアの受信を行った際、受信した前記ソフトウェアを必要とする他のソフトウェアに対応する検査プログラムを前記第二の配信装置から取得することを特徴としてもよい。
 例えば、任意のソフトウェアをアップデートした場合、実行のために当該ソフトウェアを必要とする他のソフトウェアが正常に動作しなくなる可能性がある。これに対応するため、当該他のソフトウェアに対応する検査プログラムを自動で取得するようにすることができる。
 また、前記第一および前記第二の配信装置は同一の配信装置であり、前記配信装置は、配信対象のソフトウェアと前記ソフトウェアに対応する検査プログラムとを合成した合成ソフトウェアを生成するソフトウェア合成手段と、前記合成ソフトウェアを前記コンピュータに配信する合成ソフトウェア配信手段をさらに有し、配信対象のソフトウェアに対応する検査プログラムが、前記配信装置に記憶されている場合に、前記ソフトウェア合成手段が、前記配信対象のソフトウェアと前記検査プログラムから合成ソフトウェアを生成し、前記合成ソフトウェア配信手段が、前記合成ソフトウェアを配信することを特徴としてもよい。
 このように構成することで、配信対象のソフトウェアに対応する検査プログラムが配信装置上に準備されている場合は、双方を事前に合成して配信することができる。また、ソフトウェアと検査プログラムとを別々に配信することも可能であるため、ソフトウェアの配信段階で、対応する検査プログラムが準備されていない場合は、ソフトウェアを単独で配信することもできる。
 なお、本発明は、上記手段の少なくとも一部を含むソフトウェア配信システムとして特定することができる。また、本発明は、上記手段が行う処理の少なくとも一部を含むソフトウェア配信方法として特定することもできる。上記処理や手段は、技術的な矛盾が生じない限りにおいて、自由に組み合わせて実施することができる。
 本発明によれば、ソフトウェアが保護されていない状態を短くすることができるソフトウェア配信システムを提供することができる。
第一の実施形態に係るソフトウェア配信システムのシステム構成図である。 第一の実施形態に係るソフトウェア配信システムの処理フロー図である。 第二の実施形態に係るソフトウェア配信システムのシステム構成図である。 必要なアプリ検査コードのバージョンを判定するテーブルである。 第三の実施形態に係るソフトウェア配信システムのシステム構成図である。 第四の実施形態に係るソフトウェア配信システムのシステム構成図である。 第四の実施形態に係るソフトウェア配信システムの処理フロー図である。
(第一の実施形態)
 <システム構成>
 第一の実施形態に係るソフトウェア配信システムについて説明する。第一の実施形態に係るソフトウェア配信システムは、ネットワーク経由でオペレーティングシステムをアップデートする機能を有したコンピュータ100と、当該コンピュータに対してオペレーティングシステムを配信する配信装置200Aと、当該コンピュータに対してシステム検査コードを配信する配信装置200Bからなる。なお、本実施形態の説明において、システムライブラリとはコンピュータ100を動作させるためのオペレーティングシステムの一部または全部を、システム検査コードとはオペレーティングシステムの動作を監視するための検査プログラムを指す。
 図1は、本実施形態に係るソフトウェア配信システムのシステム構成図である。コンピュータ100は、CPUと主記憶装置、補助記憶装置(いずれも不図示)を有している。補助記憶装置に記憶されたプログラムが主記憶装置にロードされ、CPUによって実行されることによって図1に図示した各手段が機能する。配信装置200Aまたは200Bもコンピュータによって実現することができるが、配信装置200Aまたは200Bの全部または一部は、専用に設計された回路を用いて実行されてもよい。
 まず、コンピュータ100について説明する。コンピュータ100は、システムライブラリ受信部101、検査コード配信要求部102、システム検査コード受信部103、コード合成部104、コード実行部105を有している。コンピュータ100は、パーソナルコンピュータであってもよいし、車載端末や、携帯情報端末などであってもよい。オペレーティングシステムやミドルウェア、ユーザアプリケーション等を含む任意のソフトウェアを実行することができるコンピュータであればよい。
 システムライブラリ受信部101は、ネットワーク経由で、更新対象となるシステムライブラリを受信する手段であり、本発明における第一のソフトウェア受信手段である。受信するシステムライブラリには、システムをアップデートする際に必要となる全てのソフトウェアが含まれている。
 検査コード配信要求部102は、更新されたシステムに対応するシステム検査コードの配信を配信装置に要求する手段である。また、システム検査コード受信部103は、検査コード配信要求部102が要求したシステム検査コードを配信装置200Bから受信する手段である。検査コード配信要求部102およびシステム検査コード受信部103が、本発明における第二のソフトウェア受信手段である。
 コード合成部104は、受信したシステム検査コードをオペレーティングシステムに合成する手段である。コードの合成は、受信したシステムライブラリに対して行ってもよいし、受信したシステムライブラリを用いてコンピュータが記憶しているオペレーティングシステムをアップデートし、アップデートしたオペレーティングシステムに対して行ってもよい。
 コードの合成とは、前述したように検査対象のソフトウェアと、検査プログラムの双方が同時に実行されるような処理を施すことを指す。本実施形態では、アップデートを行ったオペレーティングシステムのコードにシステム検査コードを足し合わせ、オペレーティングシステムの実行と同時にシステム検査コードを実行する処理を付加する。具体的な方法について後述する。
 なお、コード合成は、オペレーティングシステムと検査プログラムとを同時に起動させるための処理であれば、必ずしもプログラムを足し合わせる必要はない。例えば、システムの起動と同時に検査プログラムを起動する処理を生成してもよい。
 コード実行部105は、コード合成部104によって合成されたプログラムを実行する手段である。コード合成部104によって足し合わされたプログラムを実行することで、検査対象ソフトウェアの検査を開始する。コード合成部104およびコード実行部105が、本発明におけるソフトウェア実行手段である。
 次に、配信装置200Aおよび200Bについて説明する。配信装置200Aが本発明における第一の配信装置であり、配信装置200Bが本発明における第二の配信装置である。
 システムライブラリ配信部201は、コンピュータ100上で動作するシステムライブラリを記憶し、コンピュータ100に配信する手段である。記憶され、配信されるシステムライブラリは、前述したようにオペレーティングシステム全体であってもよいし、オペレーティングシステムのアップデートに必要なモジュールのみであってもよい。
 システム検査コード配信部202は、配信対象のシステムライブラリを監視するためのプログラムであるシステム検査コードを記憶し、コンピュータ100に配信する手段である。システム検査コード配信部202には、システムライブラリ配信部201が配信するシステムライブラリのバージョンと対応するバージョンのシステム検査コードが記憶されるが、必ずしも対応するバージョンのシステム検査コードが記憶されている必要は無い。たとえば、システムの不具合修正を優先するため、システムライブラリの配信を先に行い、システム検査コードは後から記憶させてもよい。
<処理フロー>
 本実施形態に係るソフトウェア配信システムが行う処理の詳細を説明する。図2は、コンピュータ100が、配信装置200Aからシステムライブラリを、配信装置200Bからシステム検査コードを受信し、実行モジュールを生成するまでの処理を表したフローチャートである。
 まず、システムライブラリ受信部101が、システムライブラリ配信部201に対してシステムライブラリの配信を要求し、配信されたシステムライブラリを受信する(S11)。受信したシステムライブラリは、コード合成部104へ送信される。
 次に、検査コード配信要求部102が、システム検査コード配信部202に対して、受信したシステムライブラリに対応するシステム検査コードの有無を問い合わせる(S12)。具体的には、コンピュータ100に既に記憶されているシステム検査コードのバージョンと、配信を受けたシステムライブラリのバージョンを配信装置に送信し、システム検査コード配信部202が、更新が必要なシステム検査コードがあるかを判断する。
 ステップS12でシステム検査コード配信部202が行う判断の結果は、以下の三種類に分類できる。
(1)システム検査コードを更新する必要があり、適合するバージョンのシステム検査コードが配信できる状態であるため、その旨を通知する
(2)システム検査コードを更新する必要は無いため、その旨を通知する
(3)システム検査コードを更新する必要があるが、配信準備ができていないため、その旨を通知する
 システム検査コードの更新が必要であり、配信が可能である場合は、処理はステップS14へ遷移し、配信すべきバージョンのシステム検査コードの配信を開始する。(前記(1)のケース)
 また、システムライブラリの機能が大幅に追加・変更されていない場合など、システム検査コードの更新が必要ない場合は、配信不要である旨を応答として返す。この場合、処理は終了する。(前記(2)のケース)
 一方、システムのアップデートを行う場合、不具合解消のために緊急に行うリリースがあり、そのような場合はシステムライブラリの修正が優先され、検査コードの準備が間に合わない場合がある。検査コードの準備ができていない場合は、検査コード配信要求部102から問い合わせがあっても、対応する検査コードのバージョンを応答として返すことができない。このような場合は、システム検査コード配信部202は検査コード配信要求部102に対して、配信準備ができていない旨の応答を返す。この場合、処理はステップS12に戻り、数分から数時間といった間隔をおいたうえで再度の問い合わせを行う。この間隔は任意の時間とすることができる。(前記(3)のケース)
 ステップS14では、システム検査コード受信部103が、対応するバージョンのシステム検査コードを受信する。受信が成功した場合(S15-Yes)、受信したシステム検査コードはコード合成部104へ送信される。失敗した場合(S15-No)、所定の時間の後に再試行される。
 次に、コード合成部104が、受信したシステムライブラリを用いてオペレーティングシステムの更新を行う。更新が完了すると、コード合成部104がオペレーティングシステムとシステム検査コードとの合成を行う(S16)。実行形式のプログラムコードに別のプログラムコードを足し合わせ、その実行を制御する技術は、たとえば特開2002-229790号公報に記載されている。
 より具体的には、検査対象のプログラムの末尾に検査プログラムを付加し、実行ファイルのヘッダに保持されているエントリポイント(実行開始アドレス)を検査プログラムのアドレスに変更する。検査プログラムは、合成されたコードのうち自己を除く部分、すなわち検査対象のプログラムのみを主記憶装置にコピーし、実行させる。このようにすることで、検査対象のプログラムを実行しようとすると、まず検査プログラムが起動し、検査プログラムが検査対象のプログラムを起動するため、双方を同時に実行することができる。
 生成した実行モジュールはコード実行部105へ送信され、処理が終了する。コード実行部105によってオペレーティングシステムが実行されると、システム検査コードが起動され、システムの監視が開始される。
 第一の実施形態によると、システムをアップデートしたタイミングで、対応する検査コードを配信装置に対して要求する。もし検査コードが準備できていない場合は、取得できるまで定期的に配信要求を繰り返し、取得できたタイミングで検査コードの合成を実施する。このように構成することで、システムが検査コードによって保護されていない時間を最短にすることができる。
(第二の実施形態)
 第二の実施形態に係るソフトウェア配信システムは、配信装置がネットワーク経由でアプリケーションプログラムをクライアント端末に配信する形態である。また、第二の実施形態は、検査コードを配信する際に、必要とされる最小限のコードのみを配信する形態である。受信するソフトウェアの種類が異なるのみで、ソフトウェアと検査プログラムを配信するという目的は第一の実施形態と同様である。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。また、以下で説明するステップ以外の動作は第一の実施形態と同様である。
 図3は、第二の実施形態に係るソフトウェア配信システムのシステム構成図である。
 アプリケーション受信部111は、配信装置200Aから配信されるアプリケーションプログラムを受信する手段である。受信するソフトウェアの種類が異なるのみで、処理の内容はシステムライブラリ受信部101と同様である。
 検査コード配信要求部112は、更新されたアプリケーションプログラムに対応する検査プログラムであるアプリ検査コードの配信を配信装置200Bに要求する手段である。要求する検査コードの種類が異なるのみで、処理の内容は検査コード配信要求部102と同様である。
 アプリ検査コード受信部113は、配信装置200Bから配信されるアプリケーション検査コードを受信する手段である。検査コードが対象とするソフトウェアが異なるのみで、処理の内容はシステム検査コード受信部103と同様である。
 コード合成部114は、受信したアプリ検査コードをアプリケーションプログラムに合成する手段である。対象のソフトウェアの種類が異なるのみで、処理の内容はコード合成部104と同様である。
 アプリケーション配信部211は、コンピュータ100上で動作するアプリケーションプログラムを記憶し、コンピュータ100に配信する手段である。配信するアプリケーションプログラムは、アプリケーション全体であってもよいし、アップデートに必要なモジュールまたは差分のみであってもよい。配信するソフトウェアの種類が異なるのみで、処理の内容はシステムライブラリ配信部201と同様である。
 アプリ検査コード配信部212は、アプリケーションプログラムを監視するためのプログラムであるアプリ検査コードを記憶し、コンピュータ100に配信する手段である。その機能は、第一の実施形態におけるシステム検査コード配信部202と同様であるが、アプリ検査コードを記憶する方法が異なる。システム検査コード配信部202は、配信するシステムライブラリ全体に対応する検査コードを記憶するが、本実施形態におけるアプリ検査コード配信部212は、配信するアプリケーションプログラムが有する機能のうち、一部に対応する検査コードを個別に記憶しているという点で第一の実施形態と異なる。
 この点について説明する。ソフトウェアのアップデートは、機能の追加や不具合の解消のために行われる場合が多く、更新されていない機能に対して同一の検査コードを再度送信すると通信帯域を無駄に消費することになる。そこで、検査コードを対応する機能やモジュールに分割して記憶し、アップデートによって変更された部分に対応する検査コードのみを送信する。検査コードの分割は、任意の単位で行うことができる。
 第二の実施形態においてコンピュータ100が行う処理内容の、第一の実施形態との差異点は以下の通りである。
 ステップS11では、アプリケーション受信部111がアプリケーション配信部211に対してアプリケーションプログラムの配信を要求し、アプリケーションプログラムを受信する。
 ステップS12では、受信したアプリケーションプログラムのバージョンに対応するアプリ検査コードの有無を、第一の実施形態と同様の方法でアプリ検査コード配信部212に問い合わせる。配信すべきアプリ検査コードのバージョンが何であるかという情報は、例えば、図4に示したようなテーブル形式でアプリ検査コード配信部212が保持していてもよい。本実施形態では、アプリケーションプログラムの変更された機能に対応する検査コードのみを配信するため、更新前のアプリケーションのバージョンが新しいほど、取得するアプリ検査コードも少なくなる。図4の例の場合、例えば更新前のアプリケーションプログラムのバージョンが1.5であった場合、2.0および2.1というバージョンを持つアプリ検査コードが配信対象となる。
 ステップS13の処理は、第一の実施形態と同様である。
 ステップS14では、アプリ検査コード受信部113が、対象のアプリ検査コードを受信する。ステップS15~16の処理は、第一の実施形態と同様である。
 第二の実施形態では、アップデートによって変更された機能やモジュールに対応する検査コードのみを配信するため、検査コードのサイズを抑えることができ、通信帯域の消費を抑えることができるという利点がある。また、検査プログラムの開発規模が小さくなるため、配信の準備が完了するまでの時間を短くすることができる。
(第三の実施形態)
 第三の実施形態は、第一の実施形態に係る配信装置に、システムライブラリとシステム検査コードを合成する機能を追加した形態である。システムライブラリの配信を開始する際、対応するシステム検査コードが準備されている場合は、配信装置側でシステム検査コードとシステムライブラリを合成して配信し、準備されていない場合は個別に配信する。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。また、以下で説明するステップ以外の動作は第一の実施形態と同様である。
 図5は、第三の実施形態に係るソフトウェア配信システムのシステム構成図である。
 システムライブラリ配信部201およびシステム検査コード配信部202の動作は、第一の実施形態と類似しているが、配信対象のシステムライブラリおよびシステム検査コードを、コード合成部203を経由して送信するという点で第一の実施形態と相違する。また、本実施形態においては、システムライブラリを配信する配信装置と、システム検査コードを配信する配信装置は同一の配信装置200である。
 コード合成部203は、コード合成部104と同様に、システムライブラリと、システム検査コードとを合成し、ひとつの実行モジュールを生成したのちに、合成されたプログラムをコンピュータ100へ配信する手段である。ただし、コード合成は、システムライブラリの配信を開始する際に、対応するシステム検査コードが配信装置に存在している場合にのみ行われる。対応するシステム検査コードが準備できていない場合は、コード合成は行われず、第一の実施形態と同様の配信を行う。コード合成部203が、本発明におけるソフトウェア合成手段および合成ソフトウェア配信手段である。
 第三の実施形態においてコンピュータ100が行う処理内容の、第一の実施形態との差異点は以下の通りである。
 ステップS11では、システムライブラリ受信部101がコード合成部203に対してシステムライブラリの配信を要求する。コード合成部203は、要求されたバージョンのシステムライブラリに対応するシステム検査コードが配信装置に記憶されている場合は、当該システムライブラリと、対応するシステム検査コードとを合成し配信する。そうでない場合は、合成を行わずにシステムライブラリのみを配信する。
 次に、ステップS12では、第一の実施形態と同様に、検査コード配信要求部102が、受信したシステムライブラリに対応するシステム検査コードの有無を配信装置に問い合わせる。ただし、受信したシステムライブラリが配信装置にて合成されたものであった場合、対応するシステム検査コードは既に取得済みであるため、ステップS12~S16をスキップし、処理を終了させる。
 受信したシステムライブラリが配信装置にて合成されていない場合であって、対応するシステム検査コードが配信装置に存在する場合(すなわち、後からシステム検査コードが追加された場合)はステップS14へ遷移し、システム検査コード受信部103がシステム検査コードを取得する。また、受信したシステムライブラリが配信装置にて合成されていない場合であって、対応するシステム検査コードの配信準備ができていない場合、再度ステップS12へ遷移する。ステップS15~16の処理は第一の実施形態と同様である。
 第三の実施形態によると、システムライブラリの配信開始時に、対応するシステム検査コードが準備されている場合は配信装置側でコードを合成し、準備ができていない場合は個別に配信することができる。これにより、クライアント端末の負荷を軽減することが可能になり、かつ、システム検査コードの準備が後回しになるケースにも対応することができる。
(第四の実施形態)
 第四の実施形態は、システムライブラリを受信してオペレーティングシステムをアップデートした際に、アプリケーションプログラムに対する検査コードも同時に要求する形態である。
 オペレーティングシステムをアップデートした場合、互換性の問題によりアプリケーションプログラムが正常に動作しなくなる場合がある。例えば、アプリケーションにて使用しているAPIの仕様が、オペレーティングシステムのバージョンアップによって変更された場合などである。このような場合、アプリ検査コードが最新のオペレーティングシステムに対応していないと、アプリケーションプログラムがシステム上の制限のために正常に動作しないのか、単なる不具合のため正常に動作しないのかが判別できなくなる。このようなケースに対応するため、アプリケーションに対する最新の検査コードの取得をシステムのアップデートと同時に試みるのが第四の実施形態である。第一の実施形態と同じ手段については、同じ符号を付して説明を省略する。
 図6は、第四の実施形態に係るソフトウェア配信システムのシステム構成図である。
 検査コード配信要求部102は、更新されたシステムに対応するシステム検査コードの配信を配信装置200に要求する手段であるが、更新されたシステムに対応するアプリ検査コードの配信を同時に配信装置200に要求するという点で、第一の実施形態と異なる。本実施形態においては、システムライブラリを配信する配信装置と、システム検査コードを配信する配信装置は同一の配信装置200として構成される。
 図7は、第四の実施形態に係るコンピュータ100が行う処理のフローチャートである。ステップS11からS16までの処理は、システムを更新するための処理であり、第一の実施形態と同様である。
 ステップS11の完了後、検査コード配信要求部102は、第二の実施形態と同様に、必要なアプリ検査コードの有無を配信装置に問い合わせる(S22)。問い合わせの概要は「更新したシステムのバージョンに対応するアプリ検査コードがあるか」である。すなわち検査コード配信要求部102は、受信したシステムライブラリのバージョンを同時に送信し、記憶している全てのアプリ検査コードについて、更新が必要であるかチェックを行う。
 ここで、対応するアプリ検査コードの配信準備ができていなかった場合は、検査コード配信要求部102は処理をステップS22に戻し、第一の実施形態と同様の方法で再度の要求を試みる。対応するアプリ検査コードが準備されていた場合、ステップS24で、対応するバージョンの全てのアプリ検査コードを取得する。受信したアプリ検査コードはコード合成部104へ送信され、コード合成が行われる(S26)。なお、複数のアプリ検査コードのうち、一部のみが準備できていた場合、取得可能なものを先に取得してもよい。
 このように第四の実施形態では、システムのアップデートと連動して最新のアプリ検査コードを取得する。このようにすることで、オペレーティングシステムのバージョンアップを行った際に、アプリケーションプログラムの監視が正常に行えなくなる事態を防止することができる。
 (変形例)
 各実施形態の説明は本発明を説明する上での例示であり、本発明は、発明の趣旨を逸脱しない範囲で適宜変更または組み合わせて実施することができる。例えば、第一および第二の実施形態では、ソフトウェアを配信する配信装置と、検査プログラムを配信する配信装置を別の装置としたが、ソフトウェアおよび検査プログラムは同一の配信装置から配信されてもよい。また、第一の実施形態ではオペレーティングシステムに対して検査を行う形態について述べたが、アプリケーションプログラムを検査対象としてもよい。同様に、第二の実施形態ではアプリケーションプログラムに対して検査を行う形態について述べたが、オペレーティングシステムを検査対象としてもよい。また、各実施形態で述べた処理の内容を併用してもよい。
 また、各実施形態で述べた検査プログラムは、実行されるソフトウェアの妥当性を検証するものであれば、どのようなものであってもよい。例えば、使用されるAPI(Application Programming Interface)の呼び出し方法が正しいかを検証して記録するものであってもよいし、認められていないリソースへのアクセスを検出してブロックするものであってもよい。
 100 コンピュータ
 200 配信装置
 101 システムライブラリ受信部
 102 検査コード配信要求部
 103 システム検査コード受信部
 104 コード合成部
 105 コード実行部
 111 アプリケーション受信部
 112 検査コード配信要求部
 113 アプリ検査コード受信部
 201 システムライブラリ配信部
 202 システム検査コード配信部
 203 コード合成部
 211 アプリケーション配信部
 212 アプリ検査コード配信部

Claims (5)

  1.  ソフトウェアの動作を検証する機能を備えたコンピュータと、
     前記コンピュータにソフトウェアの配信を行う第一の配信装置と、
     前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置と、
     からなるソフトウェア配信システムであって、
     前記コンピュータは、
     前記第一の配信装置から、前記ソフトウェアを受信する第一のソフトウェア受信手段と、
     前記第二の配信装置から、前記ソフトウェアに対応する前記検査プログラムを受信する第二のソフトウェア受信手段と、
     実行形式で記述された前記ソフトウェアと、前記検査プログラムとを合成し、実行するソフトウェア実行手段を有し、
     前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段が前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、
     前記ソフトウェア実行手段は、前記第二のソフトウェア受信手段が前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成する
     ことを特徴とするソフトウェア配信システム。
  2.  前記第二の配信装置は、配信するソフトウェアのそれぞれ異なる一部の機能に対応する複数の検査プログラムを配信する
     ことを特徴とする、請求項1に記載のソフトウェア配信システム。
  3.  前記第二のソフトウェア受信手段は、前記第一のソフトウェア受信手段がソフトウェアの受信を行った際、受信した前記ソフトウェアを必要とする他のソフトウェアに対応する検査プログラムを前記第二の配信装置から取得する
     ことを特徴とする、請求項1または2に記載のソフトウェア配信システム。
  4.  前記第一および前記第二の配信装置は同一の配信装置であり、
     前記配信装置は、配信対象のソフトウェアと前記ソフトウェアに対応する検査プログラムとを合成した合成ソフトウェアを生成するソフトウェア合成手段と、
     前記合成ソフトウェアを前記コンピュータに配信する合成ソフトウェア配信手段
     をさらに有し、
     配信対象のソフトウェアに対応する検査プログラムが、前記配信装置に記憶されている場合に、
     前記ソフトウェア合成手段が、前記配信対象のソフトウェアと前記検査プログラムから合成ソフトウェアを生成し、前記合成ソフトウェア配信手段が、前記合成ソフトウェアを配信する
     ことを特徴とする、請求項1から3のいずれかに記載のソフトウェア配信システム。
  5.  ソフトウェアの動作を検証する機能を備えたコンピュータと、前記コンピュータにソフトウェアの配信を行う第一の配信装置と、前記コンピュータに前記ソフトウェアを検証するプログラムである検査プログラムの配信を行う第二の配信装置が行うソフトウェア配信方法であって、
     前記第一の配信装置が、前記コンピュータに対して、ソフトウェアを配信し、
     前記第二の配信装置が、前記コンピュータに対して、前記ソフトウェアに対応する前記検査プログラムを配信し、
     前記コンピュータが、前記ソフトウェアを受信したタイミングで前記ソフトウェアに対応する検査プログラムの取得を試み、前記検査プログラムが取得できない場合は、所定の間隔をおいて再試行を繰り返し、前記検査プログラムを受信したタイミングで、前記ソフトウェアおよび前記検査プログラムを合成する
     ことを特徴とするソフトウェア配信方法。
PCT/JP2013/063162 2012-05-10 2013-05-10 ソフトウェア配信システム、ソフトウェア配信方法 WO2013168797A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201380024385.9A CN104272318B (zh) 2012-05-10 2013-05-10 软件分发系统、软件分发方法
US14/399,750 US9208320B2 (en) 2012-05-10 2013-05-10 Software distribution system and software distribution method
EP13788603.2A EP2849113B1 (en) 2012-05-10 2013-05-10 Software distribution system and software distribution method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012108671A JP5533935B2 (ja) 2012-05-10 2012-05-10 ソフトウェア配信システム、ソフトウェア配信方法
JP2012-108671 2012-05-10

Publications (1)

Publication Number Publication Date
WO2013168797A1 true WO2013168797A1 (ja) 2013-11-14

Family

ID=49550829

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/063162 WO2013168797A1 (ja) 2012-05-10 2013-05-10 ソフトウェア配信システム、ソフトウェア配信方法

Country Status (5)

Country Link
US (1) US9208320B2 (ja)
EP (1) EP2849113B1 (ja)
JP (1) JP5533935B2 (ja)
CN (1) CN104272318B (ja)
WO (1) WO2013168797A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793943A (zh) * 2015-04-27 2015-07-22 柳州市一呼百应科技有限公司 一种软件开发的通用方法
CN104793940A (zh) * 2015-04-27 2015-07-22 柳州市网中网络策划中心 一种自主升级软件开发的通用方法
TWI599905B (zh) * 2016-05-23 2017-09-21 緯創資通股份有限公司 惡意碼的防護方法、系統及監控裝置
US10581620B2 (en) 2016-11-14 2020-03-03 Integrity Security Services Llc Scalable certificate management system architectures
KR102253814B1 (ko) 2016-11-14 2021-05-18 인테그리티 시큐리티 서비시즈 엘엘씨 디바이스의 보안 프로비저닝 및 관리
US11703833B2 (en) 2020-02-14 2023-07-18 Mitsubishi Electric Corporation Program providing device, program providing method, and program providing system
CN113282311A (zh) * 2020-02-19 2021-08-20 北京小米移动软件有限公司 系统升级方法及装置、存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10254840A (ja) * 1997-03-13 1998-09-25 Fujitsu Ltd モーバイルコード実行システム
JP2002229790A (ja) 2001-01-30 2002-08-16 Ffc:Kk プログラム合成方法、プログラム合成プログラム、不正使用防止機能追加方法、及び不正使用防止機能追加プログラム
JP2003283494A (ja) 2002-03-27 2003-10-03 Ntt Docomo Inc 通信端末のアクセス制御方法、認定プログラム提供装置、管理装置および通信端末
WO2004075056A1 (ja) * 2003-02-21 2004-09-02 National Institute Of Advanced Industrial Science And Technology ウイルスチェック装置及びシステム
JP2011214992A (ja) 2010-03-31 2011-10-27 Hioki Ee Corp 検査装置および検査方法

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4168796A (en) * 1978-04-13 1979-09-25 Ncr Corporation Tester with driver/sensor circuit having programmable termination devices
US4194113A (en) * 1978-04-13 1980-03-18 Ncr Corporation Method and apparatus for isolating faults in a logic circuit
US5371851A (en) * 1989-04-26 1994-12-06 Credence Systems Corporation Graphical data base editor
US6038378A (en) * 1993-07-29 2000-03-14 Digital Esquipment Corporation Method and apparatus for testing implementations of software specifications
US5390194A (en) * 1993-11-17 1995-02-14 Grumman Aerospace Corporation ATG test station
AU1994695A (en) * 1994-03-14 1995-10-03 Green Hills Software, Inc. Optimizing time and testing of higher level language programs
DE69518996T2 (de) * 1994-04-26 2001-03-29 Sun Microsystems, Inc. Verfahren und Vorrichtung zur selbstbeschreibenden Datenkodierung
US5950004A (en) * 1996-09-13 1999-09-07 The United States Of America As Represented By The Secretary Of The Navy Model-based process for translating test programs
US6212532B1 (en) * 1998-10-22 2001-04-03 International Business Machines Corporation Text categorization toolkit
US6353904B1 (en) * 1998-12-17 2002-03-05 Vlsi Technology, Inc. Method of automatically generating new test programs for mixed-signal integrated circuit based on reusable test-block templates according to user-provided driver file
US8099758B2 (en) * 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US8121874B1 (en) * 1999-05-27 2012-02-21 Accenture Global Services Limited Phase delivery of components of a system required for implementation technology
US7315826B1 (en) * 1999-05-27 2008-01-01 Accenture, Llp Comparatively analyzing vendors of components required for a web-based architecture
US6721713B1 (en) * 1999-05-27 2004-04-13 Andersen Consulting Llp Business alliance identification in a web architecture framework
US7139999B2 (en) * 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7610233B1 (en) * 1999-12-22 2009-10-27 Accenture, Llp System, method and article of manufacture for initiation of bidding in a virtual trade financial environment
US7403901B1 (en) * 2000-04-13 2008-07-22 Accenture Llp Error and load summary reporting in a health care solution environment
DE10160607A1 (de) * 2001-12-10 2003-06-26 Oce Printing Systems Gmbh Verfahren, Gerätesystem und Computerprogrammprodukt zur Erzeugung eines gedruckten Dokuments aus mehreren Eingangsdateien
JP4524113B2 (ja) * 2002-04-11 2010-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア配布方法およびシステム
US7366951B2 (en) * 2002-05-24 2008-04-29 Fujitsu, Limited Method and apparatus for test program generation based on an instruction set description of a processor
US6970798B1 (en) * 2004-05-06 2005-11-29 International Business Machines Corporation Method, apparatus and computer program product for high speed memory testing
CN101258506A (zh) * 2005-03-03 2008-09-03 株式会社知识潮 网络连接控制程序、网络连接控制方法以及网络连接控制系统
US7730452B1 (en) * 2005-11-01 2010-06-01 Hewlett-Packard Development Company, L.P. Testing a component of a distributed system
US7598523B2 (en) * 2007-03-19 2009-10-06 Taiwan Semiconductor Manufacturing Company, Ltd. Test structures for stacking dies having through-silicon vias
KR100918626B1 (ko) * 2007-08-02 2009-09-25 주식회사 플랜티넷 어플리케이션 프로그램 검증 및 실행 제어 방법
US7996805B2 (en) * 2008-01-08 2011-08-09 National Semiconductor Corporation Method of stitching scan flipflops together to form a scan chain with a reduced wire length
US9164859B2 (en) * 2009-09-25 2015-10-20 Qualcomm Incorporated Computing device for enabling concurrent testing
US8234618B2 (en) * 2009-11-03 2012-07-31 Freescale Semiconductor, Inc. Trace reconstruction for silicon validation of asynchronous systems-on-chip
US8726394B2 (en) * 2009-12-15 2014-05-13 Seeker Security Ltd. Method and system of runtime analysis
US8893112B2 (en) * 2009-12-21 2014-11-18 Intel Corporation Providing software distribution and update services regardless of the state or physical location of an end point machine
US8578344B2 (en) * 2010-06-17 2013-11-05 Microsoft Corporation Incremental compositional dynamic test generation
CN102195978A (zh) * 2011-04-26 2011-09-21 深圳市共济科技有限公司 一种软件分布部署方法及系统
JP5680514B2 (ja) 2011-09-29 2015-03-04 トヨタ自動車株式会社 自己診断機能を備えたコンピュータ、ソフトウェア作成方法、およびソフトウェア作成装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10254840A (ja) * 1997-03-13 1998-09-25 Fujitsu Ltd モーバイルコード実行システム
JP2002229790A (ja) 2001-01-30 2002-08-16 Ffc:Kk プログラム合成方法、プログラム合成プログラム、不正使用防止機能追加方法、及び不正使用防止機能追加プログラム
JP2003283494A (ja) 2002-03-27 2003-10-03 Ntt Docomo Inc 通信端末のアクセス制御方法、認定プログラム提供装置、管理装置および通信端末
WO2004075056A1 (ja) * 2003-02-21 2004-09-02 National Institute Of Advanced Industrial Science And Technology ウイルスチェック装置及びシステム
JP2011214992A (ja) 2010-03-31 2011-10-27 Hioki Ee Corp 検査装置および検査方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2849113A4

Also Published As

Publication number Publication date
US20150128259A1 (en) 2015-05-07
JP2013235504A (ja) 2013-11-21
EP2849113B1 (en) 2019-06-26
CN104272318A (zh) 2015-01-07
EP2849113A1 (en) 2015-03-18
EP2849113A4 (en) 2015-06-10
JP5533935B2 (ja) 2014-06-25
CN104272318B (zh) 2016-11-02
US9208320B2 (en) 2015-12-08

Similar Documents

Publication Publication Date Title
JP5533935B2 (ja) ソフトウェア配信システム、ソフトウェア配信方法
CN108551487B (zh) PaaS平台的应用部署方法、装置、服务器及存储介质
CN106572372B (zh) 一种机顶盒升级方法及机顶盒
US7937697B2 (en) Method, system and computer program for distributing software patches
CN107391104B (zh) 一种客户端与react native代码的更新依赖管理方法、装置及系统
US9569197B2 (en) Method of disseminating updated drivers to mobile computing devices and a dissemination system therefor
US20160378458A1 (en) Method and device for system application installation package, and terminal
US20120260250A1 (en) Information processing device, virtual machine creation method, and application distribution system
US10437582B2 (en) Method and system for a client to server deployment via an online distribution platform
US20100251232A1 (en) Image processing apparatus, software delivery system, and install processing method
JP2010244141A (ja) ホームネットワークシステム、ゲートウェイ装置、及びファームウェア更新方法
US10789058B2 (en) Extensibility of unified platform
CN107256161B (zh) 基于electron技术的客户端升级方法
JP6581859B2 (ja) 情報処理装置、ソフトウェア配信システム、およびソフトウェア配信方法
CN105740027A (zh) 应用程序更新方法和装置
CN105786636B (zh) 一种系统修复方法及装置
CN106293790B (zh) 基于Firefox操作系统的应用程序升级方法和装置
CN115250464A (zh) Ota管理器、中心、系统、更新方法、以及车辆
KR101083229B1 (ko) 이동 단말의 필요 어플리케이션 다운로드 방법, 장치, 시스템, 및 기록 매체
CN109428936B (zh) App的升级方法、装置、系统、电子设备及存储介质
CN108234414B (zh) 一种app应用的升级方法及装置
US20140137093A1 (en) Information processing system, information processing apparatus, storage medium having stored therein information processing program, method of executing application, and storage medium stored therein data of application
JP2008269128A (ja) バージョンアップ管理装置及びバージョンアップ管理プログラム
CN113391852B (zh) 一种平台软件扩展方法及装置
CN107291498B (zh) 一种基于apk的底层驱动升级方法及系统

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: 13788603

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2013788603

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 14399750

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE