WO2010067846A1 - アプリケーションソフトウェアの保護方法及びストリーム送受信システム - Google Patents

アプリケーションソフトウェアの保護方法及びストリーム送受信システム Download PDF

Info

Publication number
WO2010067846A1
WO2010067846A1 PCT/JP2009/070701 JP2009070701W WO2010067846A1 WO 2010067846 A1 WO2010067846 A1 WO 2010067846A1 JP 2009070701 W JP2009070701 W JP 2009070701W WO 2010067846 A1 WO2010067846 A1 WO 2010067846A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
client
information
server
application software
Prior art date
Application number
PCT/JP2009/070701
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 JP2010542126A priority Critical patent/JP5333458B2/ja
Publication of WO2010067846A1 publication Critical patent/WO2010067846A1/ja
Priority to US13/118,882 priority patent/US8402549B2/en

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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Definitions

  • the present invention relates to a method and server for protecting application software, for example, a method for protecting application software executed on the client side by sending a program including an encoding application for creating a video stream from a server to a client via a network, and the like.
  • the present invention relates to a technical field of a stream transmission / reception system provided with such a protection method.
  • the application software is arranged on the client side. There is a possibility of being executed illegally.
  • the server and the client are handshaked by network communication so that the execution status of the program on the client side can be recognized by the server one by one.
  • a method is known in which the application software can be used only for a predetermined period after the client receives a use permission signal of the application software from the server. Also known is a method of obfuscating data to be transmitted and received to protect application software from unauthorized use.
  • the present invention is robust against unauthorized use of application software by impersonation by installing a pseudo server for application software executed by a client that does not have a function of protecting the application software from unauthorized use. It is an object to provide a method for protecting application software that enables protection.
  • the disclosed application software protection method is a method for protecting application software executed by starting a first program sent from a server via a network on a client, A distribution in which an execution result of the application software executed on the client is divided into a plurality of intermediate data according to distributed arrangement information notified from the server, and the plurality of intermediate data is distributed and arranged between the server and the client An arrangement step, a first transmission step of transmitting notification information including the data length and arrangement position information of each of the plurality of intermediate data arranged in a distributed manner to the server, and the plurality of pieces arranged in a distributed manner based on the notification information
  • the intermediate data of the application software execution result Rearranged in the original order comprising a program generating step of generating a second program to produce an execution result by the server, and a second transmission step of transmitting the second program to the client.
  • a disclosed stream transmission / reception system includes a client and a server capable of transmitting a first program including application software executed on the client to the client via a network.
  • the client divides the execution result of the application software into a plurality of intermediate data according to the distributed arrangement information notified from the server, and distributes the plurality of intermediate data to the server and the client.
  • first transmission means for transmitting notification information including the data length and arrangement position information of each of the plurality of intermediate data arranged in a distributed manner to the server, wherein the server distributes the information based on the notification information.
  • the plurality of intermediate data that have been processed are used as the application software.
  • Rearranged in the original order of the share of the execution result includes a program generating means for generating a second program to produce an execution result, and a second transmitting means for transmitting the second program to the client.
  • the length of the intermediate data is information unique to the input data to which the application software is applied, and will not be the same unless the input data is the same. Therefore, the second program is effective only for the execution result obtained by executing the application software on specific input data.
  • the execution result is divided, and the distributed intermediate data is arranged in the original order. And restore the original execution result. Therefore, even if a user installs a pseudo server and tries to repeatedly use the previously acquired application software, if the input data is different from the previous one, the second program by impersonation uses the distributed intermediate data in the original order. Cannot be restored.
  • FIG. 1 is a diagram illustrating a processing flow of a first operation example in the embodiment of the protection operation of the disclosed application software.
  • the first operation example of the embodiment of the protection operation of the application software is applied to a data transmission / reception system including a server A and a client B connected to each other via a network.
  • the client B to which the input data is input requests the server A to send the program X including application software such as an encoder desired to be used (step S101).
  • Server A sends the requested program X to client B (step S102).
  • the client B activates the sent program X (step S103).
  • the program X When the program X is activated, the program X performs an authentication process between the client B and the server A (steps S104 and S105), and the server A stores the time when the authentication of the client B is performed in a memory.
  • Client B transmits the desired degree of confidentiality b to server A by program X (step S106).
  • the server A generates distributed arrangement information C from the reliability a of the client B and the desired confidentiality b from the client B, and transmits the distributed arrangement information C to the client B (step S107).
  • the client B receives the distributed arrangement information C by the program X (step S108), and then executes application software such as an encoder on the input data (step S109).
  • the client B uses the program X to divide the execution result S after execution of the application software into a plurality of intermediate data s1,... Sn according to the distributed arrangement information C (step S110), and storage units in the client B and the server A (Step S111).
  • the client B transmits to the server A notification information V including the data length L and arrangement position information of each of the intermediate data s1, ... sn (step S112).
  • the server A When the time when the notification information V is transmitted from the client B is within a certain time from the time when the client B is authenticated, the server A includes the data length L of each of the intermediate data s1,. An execution result restoration program Y is generated from the notification information V, and the restoration program Y is sent to the client B (step S113).
  • the client B ends the process execution of the program X (step S114), deletes the program X (step S115), and starts the program Y for restoration (step S116).
  • the restoration program Y rearranges the randomly distributed intermediate data s1,... Sn in the original order and outputs the execution result S (step S117).
  • the execution is completed (step S119).
  • the server A determines the client reliability a of the client B.
  • Server A determines client reliability a based on the history of usage such as the organization to which client B belongs (U), the frequency of use of the same type of program (V), and the presence or absence of unauthorized use (W). To do.
  • FIG. 2 (a) is an example of a client reliability calculation table showing various conditions for calculating the client reliability a.
  • the server A refers to the client reliability calculation table in FIG. 2 (a), and determines the organization (U) to which the client B belongs, the usage frequency (V) of the same type of program, and the presence or absence of previous unauthorized use (W). Based on the value set for each, for example, the client reliability a is calculated and determined by averaging. At this time, the server A may calculate the client reliability a after appropriately weighting each variable according to the data to be processed and the client.
  • the client reliability a is a smaller value as the reliability is lower, and is a larger value as the reliability is higher. More specifically, in the example shown in FIG. 2A, the value set in the organization (U) to which the client B belongs is set to “0” in the case of a competing organization, and is irrelevant. “20” is set for the organization / no affiliation, “40” is set for the customer, “60” is set for the affiliated company, and “100” is set for the in-house company. ing. In the example shown in FIG. 2A, the lower limit is set to 0 and the upper limit is set to 100 as the usage frequency (V) of the same type of program. A large value is set. In the example shown in FIG. 2A, the value set in the presence or absence of previous unauthorized use (W) is set to “0” when there is unauthorized use, and there is no unauthorized use. Is set to “100”.
  • the division unit of the execution result S needs to be determined first.
  • the division unit of the execution result S is determined based on the client reliability a of the client B.
  • FIG. 2B is a table showing the criteria for determining the division unit of the execution result S based on the client reliability a.
  • the program X divides the execution result S into finer units according to the client reliability a as the client reliability a is lower, and the execution result S as the client reliability a is higher. Is divided into larger units. Restoration of video data in finer units makes it more difficult to restore, and division in larger units makes restoration easier, so a higher protection effect can be expected for clients with low reliability.
  • the division replacement unit 110 divides the execution result S by the minimum processing unit (for example, macroblock unit).
  • the division replacement unit 110 divides the execution result S by the second smallest unit (for example, macroblock line or slice unit).
  • the division replacement unit 110 divides the execution result S by the third smallest unit (for example, a picture unit).
  • the division replacement unit 110 divides the execution result S by the fourth smallest unit (for example, a group of picture (GOP) unit).
  • the division replacement unit 110 divides the execution result S by the fifth smallest unit (for example, a plurality of group of pictures (GOP) units).
  • the division replacement unit 110 divides the execution result S by a data unit of several seconds (in other words, a data unit having a reproduction period of several seconds).
  • the program X determines a mode for distributing and arranging each of the plurality of intermediate data s1,... Sn divided by the division unit determined as described above on the server A and the client B.
  • the program X determines a distributed arrangement mode of the intermediate data based on the desired confidentiality b for the execution result S notified from the client B.
  • the desired confidentiality b is a value that determines the degree of data protection in transmission / reception of intermediate data, and is determined according to the method of distributed arrangement desired by the user, as shown in FIG. 2 (c), for example. Is done.
  • FIG. 3 is an example of a table for determining the distributed arrangement information C to be generated. According to the distributed arrangement information C shown in FIG. 3, based on the values of the client reliability a and the desired confidentiality b, the mode of dividing the intermediate data and transmitting it to the server is determined as shown below.
  • the block is divided into blocks, and half the blocks are transmitted to the server A.
  • the value of the client reliability a is 21 to 40, it is divided in units of headers, and half the headers and half the frames are transmitted to the server A.
  • the value of the client reliability a is 41 to 60, the frame is divided in units of frames, and half of the frames are transmitted to the server A in units of frames.
  • the value of the client reliability a is 61 to 80, half of the frames are transmitted to the server A in units of key frames.
  • the value of the client reliability a is 81 to 100, the frame is randomly divided in units of frames, and half of the frames are transmitted to the server A.
  • the desired confidentiality b is 40
  • the value of the client reliability a is 0 to 20, it is divided in units of blocks, and a key frame block and several frame blocks are transmitted to the server A.
  • the value of the client reliability a is 21 to 40, it is divided in units of frames, and half the header and half the frame are transmitted to the server A.
  • the value of client reliability a is 41 to 60, it is divided in units of frames, A key frame and several frames are transmitted to server A.
  • the value of the client reliability a is 61 to 80, it is divided in units of frames, and a key frame and several frames are transmitted to the server A.
  • the value of the client reliability a is 81 to 100, it is divided in units of frames, and a key frame and several frames are transmitted to the server A.
  • the desired confidentiality b is 60
  • the value of the client reliability a is 0 to 20, it is divided in units of blocks, and a key frame block is transmitted to the server A.
  • the value of the client reliability a is 21 to 40, it is divided in units of frames, and half the header of the key frame is transmitted to the server A.
  • the value of the client reliability a is 41 to 60, it is divided in units of frames and the key frame is transmitted to the server A.
  • the value of the client reliability a is 61 to 80, it is divided in units of frames and the key frame is transmitted to the server A.
  • the value of the client reliability a is 81 to 100, it is divided in units of frames and the key frame is transmitted to the server A.
  • the header and other than the header are divided as a unit, and the frame header is transmitted to the server A.
  • the header is divided into units other than the header, and the frame header is transmitted to the server A.
  • the value of the client reliability a is 41 to 60
  • the header is divided into units other than the header, and the frame header is transmitted to the server A.
  • the value of the client reliability a is 61 to 80
  • the header is divided into units other than the header, and the frame header is transmitted to the server A.
  • the value of the client reliability a is 81 to 100
  • the header and other than the header are divided as a unit, and the frame header is transmitted to the server A.
  • the header and other than the header are divided in units, and the key frame header is transmitted to the server A.
  • the value of the client reliability a is 21 to 40, the header and other than the header are divided in units, and the key frame header is transmitted to the server A.
  • the value of the client reliability a is 41 to 60, the header and other than the header are divided in units, and the key frame header is transmitted to the server A.
  • the value of the client reliability a is 61 to 80, the header and other than the header are divided in units, and the key frame header is transmitted to the server A.
  • the value of the client reliability a is 81 to 100, the header and other than the header are divided in units, and the key frame header is transmitted to the server A.
  • FIG. 4 shows a distributed arrangement mode in the distributed arrangement operation, particularly when the value of the client reliability a is 0 to 20 and the value of the desired confidentiality b is 80.
  • a video stream generated by encoding application software in the program X is used as input data.
  • Such a video stream is composed of key frames and frames, and each frame is composed of a header and data other than the header such as a macro block (MB).
  • MB macro block
  • the header and MB data length of each frame is also different.
  • the example shown in FIG. 4 shows a case where the value of the desired confidentiality b is 80 and the value of the client reliability a is 0 to 20, and the header is divided into units other than the header according to the distributed arrangement information C. An example of arrangement in A is shown.
  • the program X randomly changes the order of the header 11 of the intermediate data key frame F11, the header 12 of the frame F12, and the header 13 of the frame F13, for example, the header 11, the header 13, and the header 12 Arranged in the server A in this order.
  • the macroblocks MB111, MB112,... Of the key frame F11 and the macroblocks MB121, MB122,... Of the frame F12 are arranged at the client B in the order of, for example, MB121, MB112, MB122, MB111.
  • the program X further generates notification information V including information in which the data length L of each intermediate data is associated with the arrangement position when the intermediate data is distributed and arranged.
  • FIG. 5 is a table showing an example of the notification information V generated in this way.
  • the notification information V including the information indicating the correspondence between the data length and the arrangement position is used as the frame type, the data length, and the arrangement position.
  • the program X may generate the notification information V including time information (for example, information indicating a time stamp or a frame order) of each intermediate data as shown in FIG.
  • the program X of the present operation example divides the execution result S into headers and MBs based on the determined division replacement unit and arrangement position, and after changing the order at random, the server A and the client Dispersed in B.
  • the program Y refers to the table indicating the correspondence between the data length and the arrangement position in the notification information V described above, and based on the data length L and the arrangement position information of each intermediate data, the intermediate data is converted into the original video stream. Arrange in order in client B and output as complete video stream.
  • the server A In the first operation example of application software protection described above, the server A generates the program X and sends it to the client B, and also generates the distributed arrangement information C and sends it to the client B.
  • the execution result S of the application software is divided into a plurality of intermediate data s1, s2,... According to the distributed arrangement information C, and distributed to the server A and the client B in a random order.
  • the data length L1, L2,... Of each of the intermediate data s1, s2,... Depends on the input data processed by the application software of the program X, and the data length L1 of the intermediate data s1, s2,. , L2, ... to server A, server A Is generated from the data lengths L1, L2,... Of the intermediate data s1, s2,... And the arrangement position information, and a restoration program Y for converting the intermediate data s1, s2,.
  • Program Y is sent to client B.
  • the input data is video data
  • the application software of the program X is an encoder
  • the execution result S is a bit stream, etc.
  • the same intermediate data length L1, intermediate data length L2,... Cannot be obtained from different input data. is there.
  • a user who has illegally acquired the transmission / reception contents via the network between the server A and the client B can install the pseudo server impersonating the server A to prevent unauthorized use of the program X. Even if an attempt is made, a valid execution result S cannot be obtained unless the program X is used for the same input data.
  • the execution result S based on the same input data is a result that the client B has already acquired by executing the program X, and acquiring the same execution result S many times has no merit for the user. . Therefore, application software can be protected from unauthorized use.
  • the distributed arrangement information C based on the reliability information a of the client B and the information of the desired confidentiality b notified from the client B, the distributed arrangement according to the requests on the server side and the client side can be achieved. It becomes possible.
  • the program X is illegally generated by generating the restoration program Y. Protection against use can be made stronger.
  • the restoration program Y is configured to perform restoration processing after confirming that the program X started on the client B is deleted and terminated, so that the program X is retained in the client B for many hours.
  • the protection against unauthorized use of the program X can be made stronger.
  • the second operation example of the embodiment of the protection operation of the application software preferably includes a server A connected to each other via a network, a first client B on which a program X is executed, The present invention is applied to a data transmission / reception system including a second client C on which the program Y is executed.
  • the input data is a video stream
  • the application software is an encoder
  • the execution result S is a bit stream.
  • the server A in response to the request transmitted from the first client B, transmits the program X including the application software for encoding to the first client B and the program Y for restoration.
  • the data is transmitted to the second client C (step S120).
  • the first client B distributes the execution result S after executing the application software by the program X after the program X is started, the server is authenticated, the desired confidentiality b is transmitted, and the application is executed (from step S103 to step S109).
  • the data is divided into a plurality of intermediate data s1,... Sn according to the arrangement information C (step S110).
  • the program X stores time information corresponding to the reproduction time of each intermediate data with reference to the internal clock of the first client B in each packet header of the plurality of divided intermediate data s1,. Embed (step S121).
  • the program X further generates characteristic information V ′ including characteristic information indicating at least one characteristic of the input data and the execution result S and the time information described above (step S122).
  • the first client B generates the divided replacement data U ′ by rearranging the generated plurality of intermediate data s1,..., Sn by changing the time-series order in the original execution result S. . Further, the generated divided replacement data U 'is transmitted to the second client C (step S123).
  • the first client B then notifies the execution completion of the program X, the notification information V including the data length L of each of the intermediate data s1,... Sn, the arrangement position information, and the time information, and the generated characteristic information V ′. Is transmitted to the server A (step S124).
  • Step S125 transmits the transmitted notification information V and characteristic information V 'to the second client C (step S125). At this time, for example, whether the time when the notification information V and the characteristic information V ′ are notified from the first client B is within a certain time from the time when the client B is authenticated, or is included in the notification information V. It is determined whether or not the time information is within a certain time from an update time T of the program X described later, and whether or not the notification information V and the characteristic information V ′ are transmitted is determined based on the determination result. Also good. Such determination will be described in detail later.
  • the server A generates the update time T based on the characteristic information V ′ transmitted from the first client B (step S126).
  • An update version of the encoding program X and the execution result restoration program Y is generated from the notification information V including the data length L and the arrangement position information of each intermediate data s1,... Sn (step S127).
  • the server A generates the program X by embedding the generated update time T.
  • the server A transmits an updated version of the program X to the first client B, and transmits an updated version of the program Y to the second client C (step S128).
  • the first client B ends the process execution of the program X, executes the updated version of the program X (step S129), and deletes the program X whose operation has ended (step S130).
  • the update operation of the program X will be described in detail later.
  • the second client C starts the restoration program Y transmitted from the server A (see step S120) (step S116).
  • the restoration program Y is typically divided replacement that is intermediate data s1,.
  • the execution result S is output by rearranging the data U ′ in the original order (step S131).
  • the second client C generates an update time T based on the characteristic information V ′ transmitted from the server A by the program Y (step S132).
  • the update time T is preferably time information indicating the same time as that generated by the server A in step S126, although it is described differently for convenience. Then, the second client C ends the process execution of the program Y and executes the updated version of the program Y (step S133).
  • FIG. 7 is a schematic diagram showing an example of the overall configuration of the data transmission / reception system 1 to which the application software protection method according to the second operation example is applied.
  • the data transmission / reception system 1 includes a server A, a first client B that executes the program X, and a second client C that executes the program Y, which are connected via a network. Consists of including.
  • the first client B is a terminal for processing and transmitting data.
  • the first client B is a personal computer for transmitting a stream used in a video conference system, and includes a program X transmitted from the server A.
  • the program X includes a distributed arrangement unit 110 and a program update unit 120 as logical processing blocks realized by executing the program X on a CPU (not shown).
  • the second client C is a terminal for processing and receiving data, for example, a personal computer for receiving a stream or the like used for a video conference system transmitted from the first client B.
  • the program Y transmitted from the server A is executed.
  • the program Y is divided into a logical replacement block 310, an update time generation unit 320, and a logical processing block realized by executing the program Y on a CPU (not shown).
  • a program update unit 330 is a program update unit 330.
  • the server A is a management server connected to the first client B and the second client C via a network.
  • the server A receives the intermediate data, the notification information V, the characteristic information V ′, and the like transmitted from the first client B, generates an authentication unit 210 that performs authentication, a program X, and a program Y, and generates the first A program generation unit 220 that transmits to each of the client B and the second client C is provided.
  • the distributed arrangement unit 110 divides the execution result S obtained by performing processing such as encoding by application software on the input data into a plurality of intermediate data s1,... Sn based on the distributed arrangement information C generated in the server A.
  • divided replacement data U ′ is generated by changing the time-series order in the original execution result S of the plurality of intermediate data s1,. Then, the generated divided replacement data U ′ is transmitted to the second client C.
  • the distributed arrangement unit 110 generates the notification information V including the data length of each of the intermediate data s1,... Sn described above and the arrangement position information after replacement (that is, in the divided replacement data U ′).
  • the distributed arrangement unit 110 uses each of the intermediate data s1,... Sn as a reference, the packet header of the notification information V, and the like based on the time when the process on the execution result S is performed.
  • the time information indicates a time obtained by adding the reproduction time of each of the intermediate data s1,..., Sn to the time based on the internal time of the first client B when the process on the execution result S is performed. Things.
  • the divided replacement data U ′ rearranged by rearranging the order of the intermediate data s1,. Have.
  • time information Tu ′ time information embedded in the notification information
  • the distributed arrangement unit 110 generates characteristic information V ′ including characteristic information indicating at least one characteristic of the execution result S and the divided replacement data U ′.
  • the characteristic information is, for example, the size information, the motion amount information, and the time information embedded in each packet header of each of the intermediate data s1,.
  • the characteristic information V ′ has a data structure based on the order of the intermediate data s1,... Sn in the execution result S or the divided replacement data U ′.
  • the characteristic information V ′ includes characteristic information for each divided stream (that is, size information, motion amount information, and time information embedded in each packet header) as intermediate data s1 in the execution result S or the division replacement execution result S. ... arranged in the order of sn.
  • the program X transmits the divided replacement data U ′ to the second client C and the notification information V and the characteristic information V ′ to the server A via the network.
  • the program X in the present embodiment starts operation at a predetermined timing after being transmitted from the server A, and performs communication with the second client C and the server A. Thereafter, the program X is configured to terminate communication at a predetermined timing and then delete (in other words, delete itself).
  • the program X is configured to terminate communication at a predetermined timing and then delete (in other words, delete itself).
  • the first client B as will be described later, an updated version of the program X transmitted from the server A at a predetermined timing starts operation, and performs communication with the second client C and the server A. .
  • the nth version of the program X is referred to as the program Xn for convenience, and hereinafter, when simply referred to as the program X, generally indicates each version of the updated program X.
  • the program Y the n-th version of the program Y is referred to as a program Yn for convenience, and hereinafter, when simply referred to as the program Y, each version of the updated program Y is generally indicated.
  • the program update unit 120 controls each operation of starting each version of the program X, starting and ending communication, and deleting at a predetermined timing in order to perform an update operation of the program X.
  • the program update unit 120 receives the next version of the program X (for example, the program Xn + 1), starts the program Xn + 1, and ends the currently operating program X (for example, the program Xn).
  • the predetermined timing refers to time information embedded for each intermediate data s1,... Sn included in the divided replacement data U ′, and an update time T generated by the server A described later and embedded in the program X. The timing determined based on and is shown.
  • a plurality of update times T (for example, update times T1, T2,..., Tn, etc.) are generated, embedded in the corresponding program X, and the timing for controlling the operation of each version of the program X is designated.
  • time information Tn which is the nth version of the program X
  • time information T the time information T generated in a plurality of ways is generally indicated.
  • the program update unit 120 sequentially extracts time information Tu ′ embedded in the packet header of each intermediate data s1,... Sn from the characteristic information V ′ generated in the distributed arrangement unit 110. Then, the extracted time information Tu ′ is compared with the update time Tn embedded in the program Xn.
  • the program Xn deletes the previous version of the program Xn-1 at the timing when the time information Tu ′ coincides with the time (that is, (Tn) ⁇ Rc1) that is earlier than the update time Tn by the predetermined time Rc1.
  • the program Xn starts communication with the server A and the second client C of the next version of the program Xn + 1 at the timing when the time information Tu ′ coincides with the update time Tn, and ends communication of the program Xn itself.
  • the notification information V and the characteristic information V ′ transmitted from the first client B are first determined by the authentication unit 210 as to whether or not each data is legitimately generated by the program X. For example, the authentication unit 210 compares the time information Tv extracted from the notification information V with the update time Tn of the program Xn that generated the notification information V. Then, the authentication unit 210 determines whether or not each data is legitimately generated by the program X based on whether or not the time information Tv is within a predetermined period M from the update time Tn.
  • the server A notifies the second client C of the notification information V and the characteristic information V ′. Send.
  • the authentication unit 210 inputs the notification information V and the characteristic information V ′ to the program generation unit 220.
  • the program generation unit 220 generates a program X and a program Y, and transmits the program X to the first client B and the program Y to the second client C. In addition, the program generation unit 220 appropriately generates an updated version of the program X and the program Y, and transmits the updated version of the program X and the program Y at a predetermined update time T.
  • the program generation unit 220 sequentially generates the update times T based on the characteristic information V ′ and accumulates them as an update schedule. A specific operation for generating the update time T will be described later.
  • the program generation unit 220 sequentially generates each version of the program X and the program Y, and preferably stores a plurality of generated programs.
  • the program generation unit 220 embeds the update time T generated as described above when generating each version of the program X. For example, in the program Xn that is the nth version of the program X, an update time Tn that is an nth update time is embedded.
  • the program generation unit 220 appropriately extracts the time information Tv from the notification information V. Then, the extracted time information Tv is compared with the update time Tn stored as the update schedule. The program generation unit 220 generates the next version of the program Xn + 2 that is generated and stored in advance at a timing when the time information Tv coincides with a time (ie, (Tn) ⁇ Rc2) that is a predetermined time Rc2 after the update time Tn. The program Yn + 2 is transmitted.
  • the program generation unit 220 After the transmission of the successive programs Xn + 2 and Yn + 2, the program generation unit 220 updates the update time Tn to the next update time Tn + 1 stored in the update schedule. Then, a time (that is, (Tn + 1) ⁇ Rs2) that is back by a predetermined time Rc2 from the newly set update time is compared with the time information Tv that is sequentially extracted.
  • the divided replacement restoring unit 310 rearranges and rearranges the divided replacement data U ′ transmitted from the first client B based on the notification information V and the characteristic information V ′ transmitted from the server A, thereby performing the original execution. Restore the result S.
  • the update time generation unit 320 receives the input of the characteristic information V ′ and generates an update time T used in the program update unit 330 described later. Typically, the update time generation unit 320 sequentially generates the update time T based on the characteristic information V ′ and stores it as an update schedule, similarly to the generation operation of the update time T in the program generation unit 220 in the server A. .
  • the program update unit 330 Similar to the program update unit 120 in the program X, the program update unit 330 performs each operation of starting each version of the program Y, starting and ending communication, and deleting at a predetermined timing in order to perform the update operation of the program Y. To control.
  • the program update unit 330 sequentially extracts the time information Tu ′ embedded in the packet header of each intermediate data s1,... Sn from the characteristic information V ′ transmitted from the split replacement unit 310. Then, the extracted time information Tu ′ is compared with the update time Tn generated by the update time generation unit 320.
  • the program Yn deletes the previous version of the program Yn-1 at the timing when the time information Tu ′ coincides with the time (that is, Tn ⁇ Rc2) that is earlier than the update time Tn by the predetermined time Rc2, and the next version of the program Yn + 1 Start up.
  • the program Y starts communication with the server A and the first client B of the next version of the program Yn + 1 at the timing when the time information Tu ′ coincides with the update time Tn, and ends communication of the program Yn itself.
  • all of the divided replacement data U ′ generated from the execution result S is transmitted from the first client B to the second client C.
  • a part or all of the divided replacement data U ′ may be extracted (that is, a part of the intermediate data s1,... Sn) and included in the notification information V to be transmitted to the server A.
  • each of a plurality of update times T is embedded in each version of the program X generated and transmitted by the server A, and time determination is performed with reference to the update times T. .
  • the program update unit 120 of the program X extracts time information Tu ′ from the divided replacement data U ′ generated by the divided replacement unit 110. Then, the program X determines whether or not the time information Tu ′ coincides with the update time T, and when both coincide, the program X is updated.
  • the update time T is generated from the characteristic information V ′ by the operation of the update time generation unit 320.
  • the program update unit 330 of the program Y takes out the time information Tu ′ from the divided replacement data U ′ transmitted from the first client B. Then, the program Y determines whether or not the time information Tu ′ coincides with the update time T, and when both coincide, the program Y is updated.
  • the program generation unit 220 of the server A transmits the updated program X and program Y according to the comparison result between the time information Tv extracted from the notification information V and the update time Tn generated from the characteristic information V ′. .
  • time information taken out by each of the server A, the first client B, and the second client C is described differently for convenience, it is generated based on the same execution result S or divided replacement data U ′. Since it is time information, it shows the same time. That is, the time information Tu ′ and the time information Tv are time information having the same value, and in particular when performing communication in real time, the same time can be indicated at the same timing.
  • FIG. 11 is a timing chart showing time-series processing related to the update of the program X in the second operation example of application software protection.
  • the update operation when updating to the program Xn + 1 during the operation of the program Xn will be described.
  • the program X is generated and transmitted by the server A, and exists in the first client B (white portion in the figure), is executed and operated (shaded portion in the figure), and There are three periods (periods in the figure) during which communication with the server A is performed. The same applies to the program Y (not shown).
  • the program Xn executed by the first client B has a predetermined preparation from the time of the update time Tn ⁇ 1 when the time information Tu ′ extracted from the divided replacement data U ′ is embedded in the previous version of the program Xn-1. It is activated at a timing that coincides with a time that is traced back by the time Rc1 (that is, (Tn-1) -Rc1).
  • the preparation time Rc1 is a preparation time required for internal processing from the start of the program X to the start of communication in the first client B.
  • the program Xn starts communication with the server A at the timing when the time information Tu ′ coincides with the update time Tn ⁇ 1, and divides and replaces the execution result S and transmits the generated data.
  • the program Yn executed by the second client C similarly starts communication, receives the divided replacement data U ′, the notification information V, and the characteristic information V ′, and performs a restoration process of the execution result S.
  • the program Yn executed by the second client C has a predetermined time information Tu ′ extracted from the divided replacement data U ′ from the time of the update time Tn ⁇ 1 generated by the update time generation unit 320. It is activated at a timing that coincides with a time that is traced back by the preparation time Rc2 (that is, (Tn-1) -Rc2).
  • the preparation time Rc2 is a preparation time required for internal processing from the start of the program Y to the start of communication in the second client C.
  • the program Yn starts communication with the server A at the timing when the time information Tu ′ coincides with the update time Tn ⁇ 1.
  • the program Yn receives the divided replacement data U ′, the notification information V, and the characteristic information V ′, and restores the execution result S.
  • the program generation unit 220 of the server A reads the notification information V from the notification information V.
  • the extracted time information Tv coincides with a time (that is, (Tn) ⁇ Rs) that is back by a predetermined preparation time Rs from the update time Tn generated within the program generation unit 220
  • the programs Xn + 2 and Yn + 2 that is, , One after another version program
  • the preparation period Rs refers to communication from generation of the program X in the server A to communication start in the first client B, communication from generation of the program Y to communication start in the second client C, internal processing, and the like. It takes preparation time.
  • the first client B matches the time information Tu ′ with a time (ie, Tn ⁇ Rc1) that is a predetermined preparation time Rc1 after the update time Tn embedded in the program Xn being executed.
  • the next version of the program Xn + 1 starts to be started.
  • the activated program Xn + 1 starts an internal process for starting communication.
  • the program Xn ends the communication and ends the operation.
  • the program Xn + 1 that has completed the preparation operation starts communication, divides and replaces the execution result S, and transmits the generated data.
  • the second client C starts the next version of the program Yn + 1 at a timing when the time information Tu ′ matches the update time Tn generated by the update time generation unit 320.
  • the activated program Yn + 1 starts an internal process for starting communication.
  • the program Yn ends the communication and ends the operation.
  • the program Yn + 1 that has completed the preparatory operation starts communication, and performs the restoration process of the execution result S.
  • FIG. 12 is a diagram conceptually illustrating a data processing process in the generation operation of the update time T.
  • the divided replacement data U ' has a configuration in which intermediate data s1, ... sn having a predetermined size are arranged in a different order.
  • the intermediate data arranged in the order of s1, s2, s3, s4, s5, and s6 are arranged in the order of s4, s3, s6, s2, s1, and s5.
  • the divided replacement data U ′ is illustrated.
  • the division replacement unit 110 of the program X extracts the intermediate data s1,... Sn size information of the generated divided replacement data U ′ and the time information t embedded in each packet header.
  • the characteristic information V ′ is generated.
  • the program generation unit 220 of the server A or the update time generation unit 320 of the program Y executed by the second client C first sets the time information t embedded in the first packet of the first division replacement unit of the characteristic information V ′. Generated as update time T1. Next, the program generation unit 220 or the update time generation unit 320 sequentially extracts the size information from the top of the characteristic information V ′ and sequentially adds the extracted size information. Thereafter, when the sum of the size information exceeds a predetermined threshold (for example, 100), the program generation unit 220 or the update time generation unit 320 sets the time information t embedded in the first packet of the next division replacement unit to the next update time. Generated as T2.
  • a predetermined threshold for example, 100
  • the update time T is generated one after another for the divided replacement data U ′ (or the original execution result S) that requires real-time processing. I can do it.
  • FIG. 13 is a diagram conceptually showing a data processing step in the generation operation of the update time T as in FIG.
  • a frame constituting the execution result S is adopted as a division replacement unit of the division replacement data U ′.
  • the divided replacement data U ′ has a configuration in which the execution result S is divided for each frame and the order is changed.
  • the division replacement unit 110 of the program X extracts the sum and time information t obtained by adding the magnitudes of the motion vectors of the respective macroblocks for each frame of the generated divided replacement data U ′, and generates characteristic information V ′. .
  • the program generation unit 220 of the server A or the update time generation unit 320 of the program Y executed by the second client C first updates the time information t embedded in the first packet of the first frame of the characteristic information V ′ with the update time. Generated as T1.
  • the program generation unit 220 or the update time generation unit 320 sequentially extracts and adds the sum of motion vectors for each frame from the top of the characteristic information V ′. Thereafter, when the sum of motion vectors exceeds a predetermined threshold (for example, 1000), the program generation unit 220 or the update time generation unit 320 sets the time information t embedded in the first packet of the next frame as the next update time T2. Generate.
  • a predetermined threshold for example, 1000
  • the update time T is generated one after another for the divided replacement data U ′ (or the original execution result S) that requires real-time processing. I can do it.
  • the program X including the application for encoding and the program Y for restoration are simultaneously sent to each client.
  • the time information is embedded in each header of the plurality of intermediate data s1, ... sn divided from the execution result S, for example, the server A, the first client B, and the second client C
  • real-time distribution using a video stream as the execution result S can be suitably handled, and the same protection effect as that in the first operation example described above can be obtained.
  • the program X and the program Y in this operation example are configured to be updated while maintaining real-time communication. For this reason, even if the user illegally obtains the application software, the program X and the program Y become invalid at every predetermined update time T. Therefore, the execution result S cannot be restored from the intermediate data s1,... Sn, and the execution result S of the application software can be protected from unauthorized execution.
  • the update time T of the program X and the program Y is determined depending on the data in the execution result S. Specifically, the update time T is generated according to the characteristic information V ′ such as size information and motion vector amount specific to the divided replacement data U ′, that is, specific to the original execution result S. It becomes. Therefore, the respective update times T of the program X and the program Y are matched only when the respective programs are processing the same input data.
  • the update time T of the program X is determined by the server A and embedded in the program when the program X is generated, while the update time T of the program Y is determined by the second client C. It is determined. At this time, since any determination operation is determined based on the execution result S or the divided replacement data U ′, appropriate update is not performed except when the program X and the program Y handle the same data. Is guaranteed.
  • the update program Xn + 2 (or program Yn + 2) is transmitted prior to the update time Tn. Therefore, there is also an advantage that division replacement and restoration of the execution result S that requires real-time processing can be suitably performed without delay.
  • the program X generates the divided replacement data U ′ by rearranging the intermediate data s1,..., Sn divided from the execution result S, and transmits it to the second client C.
  • the program X may be configured such that a part of the divided replacement data U ′′ (that is, a part of the plurality of intermediate data s1,... Sn) is arranged in the server A.
  • the distributed arrangement unit 110 of the program X arranges a part of the intermediate data s1,... Sn on the server A in the same manner as the distributed arrangement of the intermediate data s1,.
  • the divided replacement data U ′ may be generated by rearranging the other part.
  • the distributed arrangement of the intermediate data s1,... Sn may be realized by some other method. Even in this case, it is possible to obtain the same effect as that of the second operation example described above.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

 アプリケーションソフトウェアの保護方法は、ネットワークを介してサーバから送付される第1のプログラム(X)をクライアント(B)上で起動することで実行されるアプリケーションソフトウェアの保護方法であって、クライアント上で実行されたアプリケーションソフトウェアの実行結果(S)を、サーバから通知される分散配置情報(C)に従って複数の中間データ(s1、…sn)に分割し、該複数の中間データをサーバとクライアントとに分散配置し、分散配置された複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報(V)をサーバへ送信し、サーバにおいて、通知情報に基づき、分散配置された複数の中間データをアプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを生成し、クライアントに送信する。

Description

アプリケーションソフトウェアの保護方法及びストリーム送受信システム
 本発明は、アプリケーションソフトウェアの保護方法及びサーバに関し、例えば、映像ストリームを作成するエンコード・アプリケーション等を含むプログラムをネットワーク経由でサーバからクライアントに送付し、クライアント側で実行されるアプリケーションソフトウェアの保護方法及びこのような保護方法を備えるストリーム送受信システムの技術分野に関する。
 ネットワークを介して送付されるアプリケーションソフトウェアを用いて、データの送受信などを行う送受信システムにおいては、クライアント側にアプリケーションソフトウェアが配置されるため、疑似サーバを設けるなどの手法により、アプリケーションソフトウェアがクライアント側で不正に実行される可能性が考えられる。
 このようなアプリケーションソフトウェアを不正な実行から保護する代表的な手法として、従来、サーバとクライアントとをネットワーク通信によりハンドシェイクさせ、クライアント側での当該プログラムの実行状況を逐一サーバで認識し得るようにし、クライアントがサーバから該アプリケーションソフトウェアの使用許可信号を受信してから所定期間のみ、当該アプリケーションソフトウェアを使用可能とする手法などが知られている。また、送受信されるデータを分割することで難読化させ、アプリケーションソフトウェアを不正な使用から保護する方法も知られている。
特開2003-345662号公報 特開2002-55726号公報
 上述したように、クライアント側での操作内容がサーバ側に把握される構成では、クライアントとサーバとの間で詳細なデータの送受信が行われる。このような詳細なデータの送受信の中では、ユーザが所有するデータや詳細な操作内容などの情報が外部のサーバに公開されることがあり、例えば所有するデータの公開を避けたいとのユーザの要望には対応し切れないという問題がある。また、データを分割して送受信する方法では、データの分割及び結合のために処理内容が複雑となり、データの送受信におけるパフォーマンスが低下するという更なる技術的な問題に繋がる虞があった。一方で、単にデータを分割するのみでは比較的容易に元のデータの複合が可能であるため、得られる保護効果は十分とは言い切れない。
 また、特に送受信するデータとして映像データなどのストリームを扱う場合、比較的長い期間クライアント間の接続を維持する必要が生じることから、不正なアクセスなどの攻撃を受ける危険性が上昇する可能性もある。
 本発明は、アプリケーションソフトウェアを不正使用から保護する機能を有していないクライアントで実行されるアプリケーションソフトウェアに対して、擬似サーバを設置することによる成りすましなどによるアプリケーションソフトウェアの不正使用に対して、堅固な保護を可能にするアプリケーションソフトウェアの保護方法を提供することを課題とする。
 上記課題を解決するために、開示のアプリケーションソフトウェアの保護方法は、ネットワークを介してサーバから送付される第1のプログラムをクライアント上で起動することで実行されるアプリケーションソフトウェアの保護方法であって、前記クライアント上で実行された前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置工程と、分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信工程と、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを前記サーバで生成するプログラム生成工程と、前記第2のプログラムを前記クライアントに送信する第2送信工程とを備える。
 上記課題を解決するために、開示のストリームの送受信システムは、クライアントと、前記クライアント上で実行されるアプリケーションソフトウェアを含む第1のプログラムを、ネットワークを介して前記クライアントへ送信可能なサーバとを備え、前記クライアントは、前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置手段と、分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信手段とを備え、前記サーバは、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを生成するプログラム生成手段と、前記第2のプログラムを前記クライアントに送信する第2送信手段とを備える。
 中間データの長さは、アプリケーションソフトウェアが適用される入力データに固有の情報であり、該入力データが同一でない限り、同一とはならない。従って、第2のプログラムは、特定の入力データに対してアプリケーションソフトウェアが実行された実行結果に対してのみ有効であり、該実行結果が分割され、分散配置された中間データを元の順番に並べ替え、元の実行結果を復元する。そのため、仮にユーザが疑似サーバを設置して、前回取得したアプリケーションソフトウェアを繰り返し使用しようとしても、入力データが前回と異なると、成りすましによる第2のプログラムでは、分散配置された中間データを元の順序に復元することが出来ない。
 即ち、入力データを複数の中間データに分割して分散配置する際に、入力データ毎に異なる分散配置を行い、入力データ毎に異なる第2のプログラムで元の順序に復元するため、1つの入力データに対してしかアプリケーションソフトウェアを有効に使用することが出来ず、該アプリケーションソフトウェアを不正使用から好適に保護することが出来る。
アプリケーションソフトウェアの保護の第1の動作例の処理フローを示す図である。 クライアント信頼度及び希望秘匿度に基づく処理の態様を示す表である。 分散配置情報のテーブルの例を示す表である。 中間データを並べ替えて分散配置する実施例を示す図である。 通知情報Vに含まれるヘッダ及びマクロブロック毎のデータ長及び配置位置情報の例を示す表である。 アプリケーションソフトウェアの保護の第2の動作例の処理フローを示す図である。 アプリケーションソフトウェアの保護の第2の動作例が実行されるデータ送受信システムの構成及び送受信データを概略的に示すブロック図である。 第2の動作例に係る第1のクライアントにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係るサーバにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係る第2のクライアントにおける各部の構成及び動作の例を示す概略図である。 第2の動作例に係るプログラムの更新の態様の例を示すタイミングチャートである。 第2の動作例に係る中間データのサイズに基づく時刻情報の決定の態様の例を示す模式図である。 第2の動作例に係る中間データの動き量に基づく時刻情報の決定の態様の例を示す模式図である。
 以下、本発明を実施するための形態について図面を参照しながら説明する。
 (1)アプリケーションソフトウェアの保護の第1動作例
 図1から図5を参照して、本実施形態に係るアプリケーションソフトウェアの保護の第1動作例の処理の流れについて説明する。
 (1-1)処理フロー例
 先ず、図1を参照して、実施形態に係るアプリケーションソフトウェアの保護動作の第1動作例について説明する。図1は、開示のアプリケーションソフトウェアの保護動作の実施形態における第1動作例の処理フローを示す図である。図1に示すように、該アプリケーションソフトウェアの保護動作の実施形態の第1動作例は、互いにネットワークで接続されるサーバAとクライアントBとを含むデータ送受信システムにおいて適用される。
 入力データが入力されるクライアントBは、使用を希望するエンコーダ等のアプリケーションソフトウェアを含むプログラムXの送付を、サーバAに要求する(ステップS101)。サーバAは要求されたプログラムXをクライアントBに送付する(ステップS102)。クライアントBは送付されたプログラムXを起動する(ステップS103)。
 プログラムXが起動されると、プログラムXによりクライアントBとサーバAとの間で認証処理を行い(ステップS104及びS105)、また、サーバAはクライアントBの認証を行った時刻をメモリに保存する。
 クライアントBは、プログラムXにより希望秘匿度bをサーバAに送信する(ステップS106)。サーバAは、クライアントBの信頼度aと、クライアントBから希望秘匿度bとから、分散配置情報Cを生成し、該分散配置情報CをクライアントBに送信する(ステップS107)。クライアントBではプログラムXにより、分散配置情報Cを受信(ステップS108)した後、エンコーダ等のアプリケーションソフトウェアを入力データに対して実行する(ステップS109)。
 クライアントBは、プログラムXにより、アプリケーションソフトウェア実行後の実行結果Sを、分散配置情報Cに従い、複数の中間データs1、…snに分割し(ステップS110)、クライアントB内及びサーバA内の記憶部に分散させて配置する(ステップS111)。また、クライアントBは、プログラムXの実行完了の通知と共に、各中間データs1、…snのデータ長L及び配置位置情報を含む通知情報VをサーバAに送信する(ステップS112)。
 サーバAは、通知情報VがクライアントBから送信された時刻が、クライアントBを認証した時刻から一定時間内であるとき、各中間データs1、…snのデータ長Lと配置位置情報とが含まれる通知情報Vから、実行結果の復元用のプログラムYを生成し、該復元用のプログラムYをクライアントBに送付する(ステップS113)。
 この間に、クライアントBでは、プログラムXのプロセス実行を終了し(ステップS114)、プログラムXを削除し(ステップS115)、復元用のプログラムYを起動する(ステップS116)。復元用のプログラムYは、プログラムXのプロセス終了を確認した後(ステップS117)、ランダムに分散配置された中間データs1、…snを元の順序に並べ替えて、実行結果Sを出力し(ステップS118)、実行を完了する(ステップS119)。
 (1-2)分散配置情報Cの生成の実施例
 図1に示す処理フローにおいて説明した、サーバA側で保有するクライアントBの信頼度(クライアント信頼度a)と、クライアントBから通知される、中間データに対する希望の秘匿度(希望秘匿度)bとから、中間データs1、…snをどのように分散配置するかを決定する分散配置情報Cを生成する実施例について、図2を参照して説明する。
 先ず、処理に先立って、サーバAは、クライアントBのクライアント信頼度aを決定する。サーバAは、クライアントBに対し、クライアントBが所属する組織(U)、同種のプログラムの使用頻度(V)及び不正使用の有無(W)等の使用の履歴に基づき、クライアント信頼度aを決定する。ここに、図2(a)は、クライアント信頼度aを算出するための諸条件を示すクライアント信頼度算出表の一例である。
 サーバAは、図2(a)のクライアント信頼度算出表を参照し、クライアントBが所属する組織(U)、同種のプログラムの使用頻度(V)及び以前の不正使用経験の有無(W)の夫々に設定される値に基づき、例えば平均することでクライアント信頼度aを算出し、決定する。尚、このときサーバAは、処理対象となるデータやクライアントに応じて、各変数に適宜重み付けを行った上でクライアント信頼度aの算出を行っても良い。
 図2(a)の表に示される例では、クライアント信頼度aは、信頼度が低いほど小さい値となり、信頼度が高いほど大きい値となる。より具体的には、図2(a)に示される例では、クライアントBが所属する組織(U)に設定される値としては、競合する組織の場合には「0」を設定し、無関係の組織・無所属の場合には「20」を設定し、顧客の場合には「40」を設定し、関係会社の場合には「60」を設定し、社内の場合には「100」を設定している。また、図2(a)に示される例では、同種のプログラムの使用頻度(V)に設定される値としては、下限を0に設定し且つ上限を100に設定すると共に、使用頻度が多いほど大きい値を設定している。また、図2(a)に示される例では、以前の不正使用経験の有無(W)に設定される値としては、不正使用があった場合に「0」を設定し、不正使用がない場合に「100」を設定している。
 ところで、プログラムXが実行結果Sを中間データs1、…snに分割するためには、先ず、実行結果Sの分割単位が決定されている必要がある。本動作例においては、クライアントBのクライアント信頼度aに基づき、実行結果Sの分割単位が決定される。ここで、分散配置情報Cに含まれる、中間データs1、…snの分割単位の決定の態様について、図2(b)を参照して説明する。ここに、図2(b)は、クライアント信頼度aに基づいて実行結果Sの分割単位を決定する際の基準を示す表である。
 図2(b)に示すように、プログラムXは、クライアント信頼度aに応じて、クライアント信頼度aが低いほど実行結果Sをより細かい単位で分割し、クライアント信頼度aが高いほど実行結果Sをより大きい単位で分割する。映像データをより細かい単位で分割することで復元がより困難となり、より大きい単位で分割すると復元がより容易となるため、信頼度の低いクライアントに対しては、より高い保護効果が期待出来る。
 例えば、図2(b)に示すように、クライアント信頼度aが10未満である場合、分割入替部110は、実行結果Sを最小処理単位(例えば、マクロブロック単位)で分割する。クライアント信頼度aが10以上30未満である場合、分割入替部110は、実行結果Sを2番目に小さい単位(例えば、マクロブロックライン、スライス単位)で分割する。クライアント信頼度aが30以上50未満である場合、分割入替部110は、実行結果Sを3番目に小さい単位(例えば、ピクチャ単位)で分割する。クライアント信頼度aが50以上70未満である場合、分割入替部110は、実行結果Sを4番目に小さい単位(例えば、グループオブピクチャ(GOP:group of picture)単位)で分割する。クライアント信頼度aが70以上90未満である場合、分割入替部110は、実行結果Sを5番目に小さい単位(例えば、複数のグループオブピクチャ(GOP)単位)で分割する。クライアント信頼度aが90以上である場合、分割入替部110は、実行結果Sを数秒のデータ単位(言い換えれば、数秒の再生期間を有するデータ単位)で分割する。
 また、プログラムXは、上述したように決定される分割単位で分割される複数の中間データs1、…snの夫々をサーバAとクライアントBとに分散配置する為の態様を決定する。特に、本動作例においては、プログラムXは、クライアントBから通知される実行結果Sに対する希望秘匿度bに基づき、中間データの分散配置の態様を決定する。ここに、希望秘匿度bとは、中間データの送受信におけるデータ保護の度合いを決定する値であり、例えば図2(c)に示されるように、ユーザの希望する分散配置の方法に応じて決定される。
 上述のように決定されたクライアント信頼度a及び希望秘匿度bに基づいて、サーバAは、分散配置情報Cを生成する。ここに、図3は、生成される分散配置情報Cを決定するためのテーブルの一例である。図3に示される分散配置情報Cによれば、クライアント信頼度a及び希望秘匿度bの値に基づいて、以下に示すように中間データの分割及びサーバへの送信の態様が決定される。
 [希望秘匿度bの値が0の場合]
 クライアント信頼度aの値が0~20のとき、ブロック単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が21~40のとき、ヘッダ単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が41~60のとき、フレーム単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が61~80のとき、キーフレーム単位で分割してから全てサーバAに送信する。クライアント信頼度aの値が81~100のとき、数秒単位で分割してから全てサーバAに送信する。
 [希望秘匿度bの値が20の場合]
 クライアント信頼度aの値が0~20のとき、ブロック単位で分割し、半数のブロックをサーバAに送信する。クライアント信頼度aの値が21~40のとき、ヘッダ単位で分割し、半数のヘッダと半数のフレームをサーバAに送信する。クライアント信頼度aの値が41~60のとき、フレーム単位で分割し、半数のフレームを、フレーム単位でサーバAに送信する。クライアント信頼度aの値が61~80のとき、半数のフレームをキーフレーム単位でサーバAに送信する。クライアント信頼度aの値が81~100のとき、フレーム単位でランダムに分割し、半数のフレームをサーバAに送信する。
 [希望秘匿度bの値が40の場合]
 クライアント信頼度aの値が0~20のとき、ブロック単位で分割し、キーフレームのブロックと幾つかのフレームのブロックをサーバAに送信する。クライアント信頼度aの値が21~40のとき、フレーム単位で分割し、半数のヘッダと半数のフレームをサーバAに送信する。クライアント信頼度aの値が41~60のとき、フレーム単位で分割し、
 キーフレームと幾つかのフレームをサーバAに送信する。クライアント信頼度aの値が61~80のとき、フレーム単位で分割し、キーフレームと幾つかのフレームをサーバAに送信する。クライアント信頼度aの値が81~100のとき、フレーム単位で分割し、キーフレームと幾つかのフレームをサーバAに送信する。
 [希望秘匿度bの値が60の場合]
 クライアント信頼度aの値が0~20のとき、ブロック単位で分割し、キーフレームのブロックをサーバAに送信する。クライアント信頼度aの値が21~40のとき、フレーム単位で分割し、キーフレームの半数のヘッダをサーバAに送信する。クライアント信頼度aの値が41~60のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。クライアント信頼度aの値が61~80のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。クライアント信頼度aの値が81~100のとき、フレーム単位で分割し、キーフレームをサーバAに送信する。
 [希望秘匿度bの値が80の場合]
 クライアント信頼度aの値が0~20のとき、ヘッダとヘッダ以外を単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が21~40のとき、ヘッダとヘッダ以外を単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が41~60のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が61~80のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。クライアント信頼度aの値が81~100のとき、ヘッダとヘッダ以外とを単位として分割し、フレームヘッダをサーバAに送信する。
 [希望秘匿度bの値が100の場合]
 クライアント信頼度aの値が0~20のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が21~40のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が41~60のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が61~80のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。クライアント信頼度aの値が81~100のとき、ヘッダとヘッダ以外を単位で分割し、キーフレームヘッダをサーバAに送信する。
 (1-3)分散配置動作の実施例
 続いて、図4及び図5を参照して、上述のように決定された分散配置情報Cに従い、プログラムXが生成される中間データをサーバAとクライアントBとに分散配置する分散配置動作(図1のステップS111)の実施例について説明する。
 図4は、分散配置動作において、特に、クライアント信頼度aの値が0乃至20であり、希望秘匿度bの値が80である場合の分散配置の態様について示している。また、図4に示す実施例は、プログラムXにおけるエンコード用のアプリケーションソフトウェアにより生成された映像ストリームを入力データとしている。このような映像ストリームは、キーフレームとフレームとから構成され、各フレームは、ヘッダと例えばマクロブロック(MB:Macro Block)などのヘッダ以外のデータとから構成される。
 一般的に、各フレームのデータ長は異なるため、フレーム毎のヘッダ及びMBのデータ長も異なる。図4に示す例は、希望秘匿度bの値が80でクライアント信頼度aの値が0~20の場合を示し、分散配置情報Cに従って、ヘッダとヘッダ以外を単位として分割し、ヘッダをサーバAに配置する例を示している。
 図4に示すように、プログラムXは、中間データのキーフレームF11のヘッダ11とフレームF12のヘッダ12とフレームF13のヘッダ13とを、ランダムに順序を入れ替えて例えばヘッダ11、ヘッダ13、ヘッダ12の順序でサーバAに配置する。また、キーフレームF11のマクロブロックMB111、MB112…、フレームF12のマクロブロックMB121、MB122…を、ランダムに順序を入れ替えて、例えばMB121、MB112、MB122、MB111の順序でクライアントBに配置する。
 プログラムXは、更に、中間データを分散配置する際に、各中間データのデータ長Lと配置位置とを対応付けた情報を含む通知情報Vを生成する。図5は、このように生成される通知情報Vの一例を示すテーブルである。プログラムXは、中間データの分散配置を行う際に、図5に示されるような、データ長と配置位置との対応関係を示す情報を含む通知情報Vとして、フレーム種別、データ長及び配置位置の情報を生成し、テーブルに格納する。尚、プログラムXは、図5に示されるように、各中間データの時刻情報(例えば、タイムスタンプまたはフレーム順序を示す情報)を含んで通知情報Vを生成しても良い。
 以上のように、本動作例のプログラムXは、決定された分割入れ替え単位及び配置位置に基づき、実行結果Sをヘッダ及びMB毎に分割し、夫々ランダムに順番を入れ替えた上でサーバAとクライアントBとに分散して配置する。
 プログラムYは、上述の通知情報Vにおけるデータ長と配置位置との対応関係を示すテーブルを参照し、各中間データのデータ長Lと配置位置の情報を基に、中間データを元の映像ストリームの順序にクライアントB内に配列し、完全な映像ストリームとして出力する。
 以上、説明したアプリケーションソフトウェアの保護の第1動作例では、サーバAがプログラムXを生成し、クライアントBに送付するとともに、分散配置情報Cを生成し、クライアントBに送付する。クライアントBではアプリケーションソフトウェアの実行結果Sを、分散配置情報Cに従って複数の中間データs1、s2、…に分割し、ランダムの順番でサーバA及びクライアントBに分散配置する。
 各中間データs1、s2、…のデータ長L1、L2、…は、プログラムXのアプリケーションソフトウェアで処理する入力データに依存して固有のデータ長となり、該中間データs1、s2、…のデータ長L1、L2、…をサーバAに送信し、サーバAは、
 該中間データs1、s2、…のデータ長L1、L2、…と配置位置情報とから、中間データs1、s2、…を実行結果Sに変換する復元用のプログラムYを生成し、該復元用のプログラムYをクライアントBに送付する。
 ここで入力データは映像データ、プログラムXのアプリケーションソフトウェアはエンコーダ、実行結果Sはビットストリームなどであり、異なる入力データからは同一の中間データ長L1、中間データ長L2、…が得られないデータである。
 以上説明した構成によれば、サーバAとクライアントBとの間で行われるネットワーク経由の送受信内容を不正に取得したユーザが、サーバAに成りすました擬似サーバを設置することでプログラムXの不正使用を試みたとしても、同一の入力データに対してプログラムXを使用しない限り、有効な実行結果Sを得ることは出来ない。また、同一の入力データによる実行結果Sは、クライアントBが既にプログラムXを実行して取得済みの結果であり、何度も同一の実行結果Sを取得することは、ユーザにとって何のメリットもない。従って、アプリケーションソフトウェアを不正使用から保護することが出来る。
 なお、分散配置情報Cを、クライアントBの信頼度情報a、及びクライアントBから通知される希望秘匿度bの情報に基づいて生成することにより、サーバ側及びクライアント側の要望に応じた分散配置が可能となる。
 また、クライアントBから各中間データのデータ長及び配置位置情報が通知される時刻が、クライアントBの認証時刻から一定時間内であるとき、復元用のプログラムYを生成することにより、プログラムXの不正使用に対する保護をより強固なものとすることが出来る。
 また、復元用のプログラムYは、クライアントBで起動されたプログラムXが削除され終了したことを確認した後、復元処理を行う構成とすることにより、プログラムXがクライアントBに何時までも保有されたままの状態となることを防ぎ、プログラムXの不正使用に対する保護をより強固なものとすることが出来る。
 (2)アプリケーションソフトウェアの保護の第2動作例
 図6から図13を参照して、本実施形態に係るアプリケーションソフトウェアの保護の第2動作例の処理の流れについて説明する。
 (2-1)処理フロー例
 先ず、図6に示される処理フローを参照して、実施形態に係るアプリケーションソフトウェアの保護動作の第2動作例の処理の流れについて説明する。尚、図6の処理フローにおいて、図1に示す第1実施例に係る処理フローと同様の動作については、同じ番号を付して説明を省略している。また、特に説明しない点については、第1動作例と同様の構成であって良い。
 図6に示すように、該アプリケーションソフトウェアの保護動作の実施形態の第2動作例は、好適には、互いにネットワークで接続されるサーバAと、プログラムXが実行される第1のクライアントBと、プログラムYが実行される第2のクライアントCとを含むデータ送受信システムにおいて適用される。また、第2動作例においては、入力データは映像ストリームであり、アプリケーションソフトウェアはエンコーダであり、実行結果Sはビットストリームなどである。
 第2動作例において、サーバAは、第1のクライアントBから送信されるリクエストに応じて、エンコード用のアプリケーションソフトウェアを含むプログラムXを第1のクライアントBに送信すると共に、復元用のプログラムYを第2のクライアントCに送信する(ステップS120)。
 第1のクライアントBは、プログラムXの起動、サーバ認証、希望秘匿度bの送信及びアプリケーションの実行(ステップS103からステップS109)の後に、プログラムXにより、アプリケーションソフトウェア実行後の実行結果Sを、分散配置情報Cに従い複数の中間データs1、…snに分割する(ステップS110)。続いて、プログラムXは、分割された複数の中間データs1、…snの夫々のパケットヘッダに、第1のクライアントBの内部時計を基準とする、各中間データの再生時刻に応じた時刻情報を埋め込む(ステップS121)。そして、プログラムXは更に、入力データ及び実行結果Sの少なくとも一方の特性を示す特性情報と上述の時刻情報とを含む特性情報V’を生成する(ステップS122)。
 次に、第1のクライアントBは、生成された複数の中間データs1、…snを、元の実行結果Sにおける時系列的な順序を入れ替えて再配置することで分割入替データU’を生成する。また、生成された分割入替データU’を第2のクライアントCに送信する(ステップS123)。
 そして、第1のクライアントBは、プログラムXの実行完了の通知と共に、各中間データs1、…snのデータ長L、配置位置情報及び時刻情報を含む通知情報Vと、生成される特性情報V’をサーバAに送信する(ステップS124)。
 サーバAは、送信された通知情報V及び特性情報V’を第2のクライアントCに送信する(ステップS125)。このとき、例えば、通知情報V及び特性情報V’が第1のクライアントBから通知された時刻が、クライアントBを認証した時刻から一定時間内であるか否か、または、通知情報Vに含まれる時刻情報が後述するプログラムXの更新時刻Tから一定時間内であるか否かなどの判定を行い、該判定結果に基づいて通知情報V及び特性情報V’の送信の実施の有無を決定しても良い。かかる判定については後に詳述する。
 また、サーバAは、第1のクライアントBから送信される特性情報V’に基づき、更新時刻Tを生成する(ステップS126)。各中間データs1、…snのデータ長Lと配置位置情報とが含まれる通知情報Vから、エンコード用のプログラムX及び実行結果の復元用のプログラムYの更新版を生成する(ステップS127)。このとき、サーバAは、プログラムXに対し、生成される更新時刻Tを埋め込んで生成する。そして、サーバAは、プログラムXの更新版を第1のクライアントBに送信すると共に、プログラムYの更新版を第2のクライアントCに送信する(ステップS128)。
 この時、第1のクライアントBは、プログラムXのプロセス実行を終了するとともに、プログラムXの更新版の実行を行い(ステップS129)、動作を終了したプログラムXを削除する(ステップS130)。プログラムXの更新動作については、後に詳述する。
 一方、第2のクライアントCは、サーバAより送信される(ステップS120参照)復元用のプログラムYを起動する(ステップS116)。復元用のプログラムYは、サーバAから送信される通知情報V及び特性情報V’に基づいて、典型的にはランダムに時系列的な順序を入れ替えられた中間データs1、…snである分割入替データU’を元の順序に並べ替えることで、実行結果Sを出力する(ステップS131)。
 更に、第2のクライアントCは、プログラムYにより、サーバAから送信される特性情報V’に基づき、更新時刻Tを生成する(ステップS132)。この更新時刻Tは、便宜上異なる記載をしているものの、好適には、サーバAによりステップS126において生成されるものと同様の時刻を示す時刻情報である。そして、第2のクライアントCは、プログラムYのプロセス実行を終了するとともに、プログラムYの更新版の実行を行う(ステップS133)。
 (2-2)第2動作例に係るデータ送受信システムの構成例
 続いて、図7から図10を参照して、第2動作例に係るアプリケーションソフトウェアの保護方法が適用されるデータ送受信システムの基本的な構成を説明しながら、第2動作例における各処理の流れについてより詳細に説明する。
 先ず、図7は、第2動作例に係るアプリケーションソフトウェアの保護方法が適用されるデータ送受信システム1の全体的な構成の一例を示す模式図である。図7に示されるように、データ送受信システム1は、夫々ネットワークを介して接続される、サーバA、プログラムXが実行される第1のクライアントB、プログラムYが実行される第2のクライアントCを含んで構成される。
 第1のクライアントBは、データの処理及び送信を行うための端末であり、例えば、テレビ会議システムに用いられるストリームを送信するためのパーソナルコンピュータなどであって、サーバAから送信されるプログラムXを実行する。図7に示されるようにプログラムXは、当該プログラムXが不図示のCPU上で実行されることで実現される論理的な処理ブロックとして、分散配置部110とプログラム更新部120とを備える。
 第2のクライアントCは、データの処理及び受信を行うための端末であり、例えば、第1のクライアントBから送信されるテレビ会議システムに用いられるストリーム等を受信するためのパーソナルコンピュータなどであって、サーバAから送信されるプログラムYを実行する。図7に示されるようにプログラムYは、当該プログラムYが不図示のCPU上で実行されることで実現される論理的な処理ブロックとして、分割入替復元部310と、更新時刻生成部320と、プログラム更新部330とを備える。
 サーバAは、第1のクライアントB及び第2のクライアントCに対し、ネットワークを介して接続される管理用のサーバである。サーバAは、第1のクライアントBから送信される中間データ、通知情報V及び特性情報V’などを受信し、認証を行う認証部210と、プログラムX及びプログラムYを生成して、第1のクライアントB及び第2のクライアントCの夫々に送信するプログラム生成部220を備える。
 続いて、各部のより詳細な構成と動作について、図8から図10を参照して説明する。
 (2-2-1)第1のクライアントBの構成及び動作例
 先ず、第1のクライアントBにおいて実行されるプログラムXの具体的な構成及び動作の例について、図8を参照して説明する。
 分散配置部110は、入力データに対してアプリケーションソフトウェアによるエンコードなどの処理が実行された実行結果Sを、サーバAにおいて生成される分散配置情報Cに基づき複数の中間データs1、…snに分割すると共に、該複数の中間データs1、…snの元の実行結果Sにおける時系列的な順序を入れ替えた分割入替データU’を生成する。そして、生成された分割入替データU’を第2のクライアントCへと送信する。
 また、分散配置部110は、上述した中間データs1、…snの夫々のデータ長及び入れ替え後の(つまり、分割入替データU’における)配置位置情報を含む通知情報Vを生成する。
 また、分散配置部110は、生成される中間データs1、…snの夫々のパケットヘッダや、通知情報Vのパケットヘッダなどに、実行結果Sへの処理が実施される時刻を基準とする各中間データs1、…snの再生時刻に応じた時刻情報を埋め込む。尚、該時刻情報は、実行結果Sへの処理が実施される際の第1のクライアントBの内部時刻を基準とし、該時刻に各中間データs1、…snの再生時刻を加算した時刻を示すものなどである。このとき、中間データs1、…snの夫々のパケットヘッダに時刻情報が埋め込まれることから、該中間データs1、…snの順序を入れ替えて再配置した分割入替データU’は、複数の時刻情報を有する。以降、分割入替データU’に埋め込まれる複数の時刻情報を総じて時刻情報Tu’と、通知情報に埋め込まれる時刻情報を時刻情報Tvと記載する。
 続いて、分散配置部110は、実行結果S及び分割入替データU’の少なくとも一方の特性を示す特性情報を含む特性情報V’を生成する。ここに、特性情報とは、例えば、上述した中間データs1、…snの夫々のサイズ情報、動き量情報及び各パケットヘッダに埋め込まれる時刻情報である。
 尚、特性情報V’は、実行結果Sまたは分割入替データU’における中間データs1、…snの順序に基づくデータ構成となっている。典型的には特性情報V’は、分割ストリーム毎の特性情報(つまり、サイズ情報や動き量情報や各パケットヘッダに埋め込まれる時刻情報)が実行結果Sまたは分割入れ替え実行結果Sにおける中間データs1、…snの順序で配置されて成る。
 そして、プログラムXは、分割入替データU’を第2のクライアントCに対して、通知情報V及び特性情報V’をサーバAに対して夫々ネットワークを介して送信する。
 本実施形態におけるプログラムXは、サーバAより送信された後、所定のタイミングにおいて動作を開始し、第2のクライアントC及びサーバAとの通信を実施する。その後、プログラムXは、所定のタイミングにおいて通信を終了し、その後削除される(言い換えれば、自身を削除する)構成となっている。一方で、第1のクライアントBにおいては、後述するようにサーバAから所定のタイミングで送信されるプログラムXの更新版が動作を開始し、第2のクライアントC及びサーバAとの通信を実施する。
 上述したように適宜更新されるプログラムXのうち、第n版のプログラムXを便宜上プログラムXnと記載し、以降、単にプログラムXと記載する場合は、更新されるプログラムXの各版を総じて示すものとする。同様に、プログラムYのうち、第n版のプログラムYを便宜上プログラムYnと記載し、以降、単にプログラムYと記載する場合は、更新されるプログラムYの各版を総じて示すものとする。
 プログラム更新部120は、プログラムXの更新動作を実施するために、所定のタイミングにおいてプログラムXの各版の起動、通信の開始及び終了、並びに削除の各動作を制御する。例えば、プログラム更新部120は、プログラムXの次の版(例えば、プログラムXn+1)を受信し、該プログラムXn+1の起動を行うと共に、現在動作しているプログラムX(例えば、プログラムXn)の終了を行う。ここに、所定のタイミングとは、分割入替データU’に含まれる各中間データs1、…sn毎に埋め込まれる時刻情報と、後述されるサーバAにより生成されるとともにプログラムXに埋め込まれる更新時刻Tとに基づき決定されるタイミングを示す。
 更新時刻Tは、複数通り(例えば、更新時刻T1、T2、…、Tnなど)生成され、夫々対応するプログラムXに埋め込まれるとともに、プログラムXの各版の動作を制御する際のタイミングを指定する。以降、プログラムXの第n版であるプログラムXnに埋め込まれる時刻情報Tを時刻情報Tnと記載し、単に時刻情報Tと記載する場合は、複数通り生成される時刻情報Tの夫々を総じて示すものとする。
 具体的には、プログラム更新部120は、分散配置部110において生成された特性情報V’から、各中間データs1、…snのパケットヘッダに埋め込まれる時刻情報Tu’を順次取り出す。そして、取り出された時刻情報Tu’と、プログラムXnに埋め込まれる更新時刻Tnとの比較を行う。プログラムXnは、時刻情報Tu’が更新時刻Tnから所定の時刻Rc1だけ遡った時間(つまり、(Tn)-Rc1)と一致するタイミングにおいて、前版のプログラムXn-1を削除し、次版のプログラムXn+1を起動させる。また、プログラムXnは、時刻情報Tu’が更新時刻Tnと一致するタイミングにおいて、次版のプログラムXn+1のサーバA及び第2のクライアントCとの通信を開始し、プログラムXn自身の通信を終了する。
 以上、説明したプログラムの更新動作及び該プログラムの更新タイミングの決定動作については、後に詳述する。
 (2-2-2)サーバAの構成及び動作例
 続いて、サーバAの各部の具体的な構成及び動作の例について図9を参照して説明する。
 第1のクライアントBから送信された通知情報V及び特性情報V’は、先ず認証部210において、各データがプログラムXによって正当に生成されたものであるか否かが判定される。例えば、認証部210は、通知情報Vから取り出される時刻情報Tvと該通知情報Vを生成したプログラムXnの更新時間Tnとを比較する。そして、認証部210は、時刻情報Tvが更新時刻Tnから所定の期間M内であるか否かに基づいて、各データがプログラムXによって正当に生成されたものであるか否かを判定する。
 判定の結果、通知情報V及び特性情報V’がプログラムXによって正当に生成されたものであると判定される場合、サーバAは、第2のクライアントCに対して通知情報V及び特性情報V’を送信する。また、このとき認証部210は、プログラム生成部220に対して、通知情報V及び特性情報V’を入力する。
 プログラム生成部220は、プログラムX及びプログラムYを生成し、プログラムXを第1のクライアントBへと、プログラムYを第2のクライアントCへと夫々送信する。また、プログラム生成部220は、適宜プログラムX及びプログラムYの更新版を生成し、所定の更新時刻Tにおいて更新版のプログラムX及びプログラムYを送信する。
 具体的には、プログラム生成部220は、特性情報V’に基づき、順次更新時刻Tを生成し、更新スケジュールとして蓄積する。尚、具体的な更新時刻Tの生成動作については、後述する。
 更に、プログラム生成部220は、プログラムX及びプログラムYの各版を順次生成し、好適には生成された複数のプログラムを蓄積する。特にプログラム生成部220は、プログラムXの各版を生成する際に、上述のように生成された更新時刻Tを埋め込む。例えば、プログラムXの第n版であるプログラムXnには、n番目に生成される更新時刻である更新時刻Tnが埋め込まれる。
 また、プログラム生成部220は、通知情報Vから時刻情報Tvを適宜取り出す。そして、取り出された時刻情報Tvと、更新スケジュールとして蓄積される更新時刻Tnとの比較を行う。プログラム生成部220は、時刻情報Tvが更新時刻Tnから所定の時刻Rc2だけ遡った時間(つまり、(Tn)-Rc2)と一致するタイミングにおいて、予め生成され、蓄積される次々版のプログラムXn+2及びプログラムYn+2の送信を行う。
 次々版のプログラムXn+2及びプログラムYn+2の送信を終えた後、プログラム生成部220は、更新時刻Tnを更新スケジュールに蓄積される次の更新時刻Tn+1に更新する。そして、新たに設定された更新時刻から所定の時刻Rc2だけ遡った時間(つまり、(Tn+1)-Rs2)と、順次取り出される時刻情報Tvとの比較を行う。
 (2-2-3)第2のクライアントCの構成及び動作例
 次に、第2のクライアントCにおいて実行されるプログラムYの各部の具体的な構成及び動作の例について図10を参照して説明する。
 分割入替復元部310は、サーバAから送信される通知情報V及び特性情報V’に基づき、第1のクライアントBから送信される分割入替データU’を並べ替えて再配置することで元の実行結果Sを復元する。
 更新時刻生成部320は、特性情報V’の入力を受け、後述するプログラム更新部330において用いられる更新時刻Tを生成する。典型的には、更新時刻生成部320は、サーバAにおけるプログラム生成部220における更新時刻Tの生成動作と同様に、特性情報V’に基づき、順次更新時刻Tを生成し、更新スケジュールとして蓄積する。
 プログラム更新部330は、プログラムXにおけるプログラム更新部120と同様に、プログラムYの更新動作を実施するために、所定のタイミングにおいてプログラムYの各版の起動、通信の開始及び終了並びに削除の各動作を制御する。
 具体的には、プログラム更新部330は、分割入替復元部310から送信される特性情報V’から、各中間データs1、…snのパケットヘッダに埋め込まれる時刻情報Tu’を順次取り出して行く。そして、取り出された時刻情報Tu’と、更新時刻生成部320により生成される更新時刻Tnとの比較を行う。プログラムYnは、時刻情報Tu’が更新時刻Tnから所定の時刻Rc2だけ遡った時間(つまり、Tn-Rc2)と一致するタイミングにおいて、前版のプログラムYn-1を削除し、次版のプログラムYn+1を起動させる。また、プログラムYは、時刻情報Tu’が更新時刻Tnと一致するタイミングにおいて、次版のプログラムYn+1のサーバA及び第1のクライアントBとの通信を開始し、プログラムYn自身の通信を終了する。
 尚、以上説明した各部の構成及び動作の例においては、実行結果Sより生成される分割入替データU’の全てを第1のクライアントBから第2のクライアントCへと送信する構成となっている。しかしながら、該分割入替データU’の一部または全部を抜き出して(つまり、中間データs1、…snの一部)、例えば通知情報Vに含めることで、サーバAに送信する構成としても良い。
 (2-3)プログラムの更新動作例
 アプリケーションソフトウェアの保護の第2動作例においては、上述したように、サーバAのプログラム生成部220またはプログラムYの更新時刻生成部320において、特性情報V’に基づいて生成される更新時刻Tに基づき、プログラムX及びプログラムYの更新のための時刻の判定が実施される。
 第1のクライアントBにおいては、サーバAにより生成され且つ送信されるプログラムXの各版に複数の更新時刻Tの夫々が埋め込まれており、該更新時刻Tを参照して時刻の判定が行われる。具体的には、プログラムXのプログラム更新部120は、分割入替部110において生成される分割入替データU’から時刻情報Tu’を取り出す。そして、プログラムXは、時刻情報Tu’が更新時刻Tと一致しているか否かの判定を行い、両者が一致する場合に、プログラムXの更新動作を行う。
 また、第2のクライアントCにおいては、サーバAから送信されるプログラムYに更新時刻Tが埋め込まれていないため、更新時刻生成部320の動作により、特性情報V’より更新時刻Tが生成される。また、プログラムYのプログラム更新部330は、第1のクライアントBから送信される分割入替データU’から時刻情報Tu’を取り出す。そして、プログラムYは、時刻情報Tu’が更新時刻Tと一致しているか否かの判定を行い、両者が一致する場合に、プログラムYの更新動作を行う。
 サーバAのプログラム生成部220は、通知情報Vから取り出される時刻情報Tvと、特性情報V’から生成される更新時刻Tnとの比較結果に応じて、更新されるプログラムX及びプログラムYを送信する。
 尚、サーバA、第1のクライアントB及び第2のクライアントCの夫々において取り出される時刻情報は便宜上異なる記載をしているが、同一の実行結果Sまたは分割入替データU’に基づいて生成される時刻情報であるため、夫々同様の時刻を示すものである。つまり、時刻情報Tu’と時刻情報Tvとは同一の値を取る時刻情報であり、特にリアルタイムで通信を行う場合には、同一のタイミングで同一の時刻を示し得る。
 図11は、アプリケーションソフトウェアの保護の第2動作例における、プログラムXの更新に係る時系列的な処理を示すタイミングチャートである。ここに、図11を参照して、プログラムXnの動作中にプログラムXn+1へと更新する際の更新動作について説明する。
 図11に示されるように、プログラムXは、サーバAにより生成及び送信され、第1のクライアントBにおいて存在する期間(図中白部)、実行され動作している期間(図中斜線部)及びサーバAとの通信を行っている期間(図中点部)の3つの期間を有する。尚、図示していないプログラムYについても同様である。
 第1のクライアントBにより実行されるプログラムXnは、分割入替データU’より取り出した時刻情報Tu’が、前版のプログラムXn-1に埋め込まれている更新時刻Tn-1の時点から所定の準備時間Rc1だけ遡った時間(つまり、(Tn-1)-Rc1)と一致するタイミングで起動される。ここに、準備時間Rc1とは、第1のクライアントBにおけるプログラムXの起動から通信の開始までの内部処理などに要する準備時間である。その後、プログラムXnは、時刻情報Tu’が更新時刻Tn-1と一致するタイミングでサーバAとの通信を開始し、実行結果Sの分割及び入れ替え並びに生成されるデータの送信を行う。
 同様に、第2のクライアントCにより実行されるプログラムYnも同様に通信を開始し、分割入替データU’、通知情報V及び特性情報V’の受信を受け、実行結果Sの復元処理を行う。具体的に、第2のクライアントCにより実行されるプログラムYnは、分割入替データU’より取り出した時刻情報Tu’が、更新時刻生成部320において生成された更新時刻Tn-1の時点から所定の準備時間Rc2だけ遡った時間(つまり、(Tn-1)-Rc2)と一致するタイミングで起動される。ここに、準備時間Rc2とは、第2のクライアントCにおけるプログラムYの起動から通信の開始までの内部処理などに要する準備時間である。その後、プログラムYnは、時刻情報Tu’が更新時刻Tn-1と一致するタイミングでサーバAとの通信を開始する。その結果、プログラムYnは、分割入替データU’、通知情報V及び特性情報V’の受信を受け、実行結果Sの復元処理を行う
 続いて、サーバAのプログラム生成部220は、通知情報Vから取り出した時刻情報Tvが、プログラム生成部220内部で生成された更新時刻Tnから所定の準備時間Rsだけ遡った時間(つまり、(Tn)-Rs)と一致するタイミングで、プログラムXn+2及びYn+2(つまり、次々版プログラム)を第1のクライアントB及び第2のクライアントCに送信する。ここに、準備期間Rsとは、サーバAにおけるプログラムXの生成から第1のクライアントBにおける通信開始までの通信及びプログラムYの生成から第2のクライアントCにおける通信開始までの通信並びに内部処理などに要する準備時間である。
 次に、第1のクライアントBは、時刻情報Tu’が、実行中のプログラムXnに埋め込まれている更新時刻Tnの時点から所定の準備時間Rc1だけ遡った時間(つまり、Tn-Rc1)と一致するタイミングで、次版のプログラムXn+1の起動を開始する。起動されたプログラムXn+1は、通信を開始するための内部処理を開始する。そして、時刻情報Tu’が更新時刻Tnと一致するタイミングで、プログラムXnは通信を終了し、動作を終了する。同時に、準備動作を終了したプログラムXn+1が通信を開始し、実行結果Sの分割及び入れ替え並びに生成されるデータの送信を行う。
 同様に、第2のクライアントCは、時刻情報Tu’が、更新時刻生成部320において生成された更新時刻Tnと一致するタイミングで、次版のプログラムYn+1の起動を開始する。起動されたプログラムYn+1は、通信を開始するための内部処理を開始する。そして、時刻情報Tu’が更新時刻Tnと一致するタイミングで、プログラムYnは通信を終了し、動作を終了する。同時に、準備動作を終了したプログラムYn+1が通信を開始し、実行結果Sの復元処理を行う。
 (2-4)更新時刻の生成動作例
 サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320における更新時刻Tの生成動作について図12及び図13を参照して説明する。以下では、特性情報V’に含まれる複数の時刻情報Tvの中から、分割入替データU’の特性に基づいて更新時刻Tを生成する方法について説明する。尚、以下の説明では、分割入替データU’の特性の一例として、分割入替データU’の分割入れ替え単位毎の(言い換えれば、中間データs1、…snの夫々の)サイズ情報、または動き量を用いて説明進める。
 先ず、図12を参照して、分割入れ替え単位毎のサイズ情報を用いて更新時刻Tを生成する動作について説明する。図12は、更新時刻Tの生成動作におけるデータの処理工程を概念的に示す図である。
 図12上部に示されるように、分割入替データU’は、所定のサイズを有する中間データs1、…snが夫々順序を入れ替えられて配置される構成となっている。図12では、実行結果Sにおいて、s1、s2、s3、s4、s5、s6の順序で配置されていた中間データを、s4、s3、s6、s2、s1、s5のように順序を入れ替えて配置した分割入替データU’について例示している。
 また、図12の例では、プログラムXの分割入替部110は、生成された分割入替データU’の夫々の中間データs1、…snサイズ情報と、夫々のパケットヘッダに埋め込まれる時刻情報tを取り出して、特性情報V’を生成する。
 サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320は、先ず、特性情報V’の先頭の分割入れ替え単位の先頭パケットに埋め込まれる時刻情報tを更新時刻T1として生成する。次に、プログラム生成部220又は更新時刻生成部320は、特性情報V’の先頭からサイズ情報を順番に取り出すと共に、取り出したサイズ情報を順次加算する。その後、プログラム生成部220又は更新時刻生成部320は、サイズ情報の和が所定の閾値を越える場合(例えば、100)、次の分割入れ替え単位の先頭パケットに埋め込まれる時刻情報tを次の更新時刻T2として生成する。
 このようにサイズ情報の和に基づく更新時刻Tの生成を繰り返すことで、リアルタイムな処理が必要な分割入替データU’(或いは、元の実行結果S)に対して、更新時刻Tを次々生成することが出来る。
 続いて、図13を参照して、分割入れ替え単位毎の動き量を用いて更新時刻Tを生成する動作について説明する。図13は、図12と同様に更新時刻Tの生成動作におけるデータの処理工程を概念的に示す図である。尚、図13に示される例では、分割入替データU’の分割入れ替え単位として、実行結果Sを構成するフレームを採用している。
 図13上部に示されるように、分割入替データU’は、実行結果Sがフレーム毎に分割され、夫々順序を入れ替えられて配置される構成となっている。プログラムXの分割入替部110は、生成された分割入替データU’の夫々のフレーム毎の各マクロブロックの動きベクトルの大きさを加算した和及び時刻情報tを取り出し、特性情報V’を生成する。
 サーバAのプログラム生成部220、または第2のクライアントCにより実行されるプログラムYの更新時刻生成部320は、先ず、特性情報V’の先頭のフレームの先頭パケットに埋め込まれる時刻情報tを更新時刻T1として生成する。次に、プログラム生成部220又は更新時刻生成部320は、特性情報V’の先頭からフレーム毎の動きべクトルの和を順番に取り出して加算する。その後、プログラム生成部220又は更新時刻生成部320は、動きベクトルの和が所定の閾値を越える場合(例えば、1000)、次のフレームの先頭パケットに埋め込まれる時刻情報tを次の更新時刻T2として生成する。
 このように動きベクトルの和に基づく更新時刻Tの生成を繰り返すことで、リアルタイムな処理が必要な分割入替データU’(或いは、元の実行結果S)に対して、更新時刻Tを次々生成することが出来る。
 以上、説明したアプリケーションソフトウェアの保護の第2動作例によれば、エンコード用のアプリケーションを含むプログラムXと、復元用のプログラムYとが同時に各クライアントに送付される。このとき、実行結果Sから分割された複数の中間データs1、…snの夫々のヘッダには、時刻情報が埋め込まれているため、例えば、サーバA、第1のクライアントB及び第2のクライアントCの夫々において同期を取りながらリアルタイムでの実行結果Sの送受信も可能となる。例えば、実行結果Sとして映像ストリームを用いたリアルタイム配信などにも好適に対応出来、上述した第1動作例と同様の保護効果を得ることが可能となる。
 また、本動作例のプログラムXとプログラムYとは、リアルタイムな通信を維持しつつ、更新されていく構成となっている。このため、ユーザが不正にアプリケーションソフトウェアを入手したとしても、所定の更新時刻T毎にプログラムX及びプログラムYは無効となる。このため、中間データs1、…snから実行結果Sを復元することが出来ず、アプリケーションソフトウェアの実行結果Sを不正な実行から保護することが可能となる。
 更に、本動作例においては、プログラムX及びプログラムYの更新時刻Tは、実行結果S内のデータに依存して決定される。具体的には、更新時刻Tは、分割入替データU’に固有のサイズ情報や動きベクトル量などの特性情報V’に応じて生成されるものであり、つまり元の実行結果Sに固有のものとなる。従って、プログラムX及びプログラムYの夫々の更新時刻Tは、夫々のプログラムが同一の入力データに対して処理を実施している場合にのみ整合する。このため、仮にユーザが疑似サーバを設置して、前回取得したアプリケーションソフトウェアを繰り返し使用しようとしても、入力データが前回と異なると、成りすましによるプログラムYの更新時刻Tと、プログラムXの更新時刻Tとは異なり、分散配置された中間データを元の順序に復元することが出来ない。
 特に、本動作例においては、プログラムXの更新時刻Tは、サーバAによって決定され、プログラムXの生成時にプログラム内部に埋め込まれ、他方で、プログラムYの更新時刻Tは、第2のクライアントCによって決定される。このとき、いずれの決定動作も実行結果Sまたは分割入替データU’に基づいて決定されるため、プログラムXとプログラムYとが同一のデータを扱っている場合以外では適切な更新が行われないことが保証される。
 以上、説明した構成によれば、実行結果Sの送受信を行うクライアント間の接続が比較的長時間の維持される必要があるテレビ会議などのデータ送受信システムにおいても、実行結果Sの送受信中にプログラムX及びプログラムYが更新され続ける必要があるため、好適な保護を実現することが出来る。
 加えて、サーバAにおいては、更新時刻Tnに先立って、更新用のプログラムXn+2(或いは、プログラムYn+2)が送信される。従って、リアルタイム処理が必要な実行結果Sの分割入れ替え及び復元を、遅延なく好適に行うことが出来るとの利点もある。
 上述した例では、プログラムXは、実行結果Sより分割された中間データs1、…snを再配置することで分割入替データU’を生成し、第2のクライアントCへと送信しているが、プログラムXは、該分割入替データU’’の一部(つまり、複数の中間データs1、…snの一部)をサーバAに配置する構成としても良い。このとき、プログラムXの分散配置部110は、上述した第1動作例における中間データs1、…snの分散配置の態様と同様に、中間データs1、…snの一部をサーバAに配置すると共に、他の一部を再配置することで分割入替データU’を生成しても良い。また、その他何らかの方法により中間データs1、…snの分散配置を実現しても良い。このように構成した場合であっても、上述した第2動作例と同様の効果を得ることが可能となる。
 上述した例では、プログラムXが実行されるクライアントBと、プログラムYが実行されるクライアントCとを含むデータの送受信システムにおける動作例について説明しているが、同一のクライアント(例えば、クライアントB)においてプログラムX及びプログラムYが実行される構成であっても良い。この場合、サーバAはプログラムX及びプログラムYの両方をクライアントBに送信し、クライアントBにおいて各プログラムを実行すれば、上述した第2動作例と同様の効果を得ることが可能となる。
 本発明は、上述した実施例に限られるものではなく、請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴なうアプリケーションソフトウェアの保護方法及びストリーム送受信システムなどもまた本発明の技術的範囲に含まれるものである。
A サーバ、
B 第1のクライアント、
C 第2のクライアント、
S アプリケーションソフトウェアの実行結果、
U’ 分割入替データ、
X 第1のプログラム、
Y 第2のプログラム、
110 分割入替部、
120、330 プログラム更新部、
210 認証部、
220 プログラム生成部、
310 分割入替復元部、
320 更新時刻生成部。

Claims (15)

  1.  ネットワークを介してサーバから送付される第1のプログラムをクライアント上で起動することで実行されるアプリケーションソフトウェアの保護方法であって、
     前記クライアント上で実行された前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置工程と、
     分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信工程と、
     前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを前記サーバで生成するプログラム生成工程と、
     前記第2のプログラムを前記クライアントに送信する第2送信工程と
     を備えることを特徴とするアプリケーションソフトウェアの保護方法。
  2.  前記分散配置情報を、前記クライアントの信頼度情報、及び前記クライアントから通知される希望秘匿度の情報に基づいて前記サーバで生成し、該生成した分散配置情報を前記クライアントに送付する分散配置情報通知工程を含むことを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  3.  前記プログラム生成工程は、前記通知情報が前記クライアントから送信された時刻が、前記クライアントを認証した時刻から一定時間内であるとき、前記第2のプログラムを生成することを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  4.  前記第2のプログラムは、前記クライアントで起動された前記第1のプログラムの終了を確認した後、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成することを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  5.  前記第1送信工程は、前記通知情報と共に、前記アプリケーションソフトウェアの実行結果の特性を示す特性情報を前記サーバへ送信し、
     前記特性情報に基づいて決定される更新時刻に基づいて、前記第1のプログラム及び前記第2のプログラムを更新する第1更新工程を更に備えることを特徴とする請求項1に記載のアプリケーションソフトウェアの保護方法。
  6.  前記アプリケーションソフトウェアの実行結果は、時系列のデータを有し、
     前記分散配置工程は、前記複数の中間データの夫々に、前記アプリケーションソフトウェアの実行結果内での時系列に基づく時刻情報を埋め込み、
     前記第1送信工程は、前記時刻情報を更に含む前記通知情報と、前記時刻情報を更に含む前記特性情報とを前記サーバへ送信し、
     前記第1更新工程は、前記特性情報に含まれる前記時刻情報に基づいて前記更新時刻を決定することを特徴とする請求項5に記載のアプリケーションソフトウェアの保護方法。
  7.  前記サーバは、前記特性情報に基づいて決定される更新時刻を示す情報が埋め込まれて生成される前記第1のプログラムを前記クライアントに送信し、
     前記第1更新工程は、前記複数の中間データの夫々に埋め込まれた前記時刻情報と、前記第1のプログラムに埋め込まれている前記更新時刻を示す情報とを比較することで、前記第1のプログラムを更新する第2更新工程を含むことを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  8.  前記第1更新工程は、前記複数の中間データの夫々に埋め込まれた前記時刻情報と前記特性情報に基づいて決定される前記更新時刻とを比較することで、前記第2のプログラムを更新する第3更新工程を含むことを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  9.  前記サーバは、前記更新時刻に先立って、更新予定の前記第1のプログラム及び前記第2のプログラムを送信することを特徴とする請求項5に記載のアプリケーションソフトウェアの保護方法。
  10.  前記第1送信工程は、前記特性情報として、前記アプリケーションソフトウェアの実行結果における単位時間あたりの情報量を示す情報を含む特性情報を生成し、
     前記第1更新工程は、前記特性情報に含まれる前記時刻情報及び前記情報量を示す情報に基づいて前記更新時刻を決定することを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  11.  前記第1送信工程は、前記特性情報として、前記アプリケーションソフトウェアの実行結果における単位時間あたりの動作量を示す情報を含む特性情報をサーバへ送信し、
     前記第1更新工程は、前記特性情報に含まれる前記時刻情報及び前記動作量を示す情報に基づいて前記更新時刻を決定することを特徴とする請求項6に記載のアプリケーションソフトウェアの保護方法。
  12.  前記クライアントは、前記第1のプログラムが実行される第1のクライアントと、前記第2のプログラムが実行される第2のクライアントを含み、
     前記分散配置工程は、前記複数の中間データを前記サーバと前記第2のクライアントとに分散配置し、
     前記第2送信工程は、前記第2のプログラムを前記第2のクライアントへ送信することを特徴とする請求項1から11のいずれか一項に記載のアプリケーションソフトウェアの保護方法。
  13.  クライアントと、前記クライアント上で実行されるアプリケーションソフトウェアを含む第1のプログラムを、ネットワークを介して前記クライアントへ送信可能なサーバとを備え、
     前記クライアントは、前記アプリケーションソフトウェアの実行結果を、前記サーバから通知される分散配置情報に従って複数の中間データに分割し、該複数の中間データを前記サーバと前記クライアントとに分散配置する分散配置手段と、
     分散配置された前記複数の中間データの夫々のデータ長及び配置位置情報を含む通知情報を前記サーバへ送信する第1送信手段とを備え、
     前記サーバは、前記通知情報に基づき、分散配置された前記複数の中間データを前記アプリケーションソフトウェアの実行結果の元の順番に並べ替え、実行結果を生成する第2のプログラムを生成するプログラム生成手段と、
     前記第2のプログラムを前記クライアントに送信する第2送信手段とを備えることを特徴とするストリーム送受信システム。
  14.  前記クライアントは、前記第1のプログラム及び前記第2のプログラムを更新する更新手段を更に備え、
     前記第1送信手段は、前記通知情報と共に、前記アプリケーションソフトウェアの実行結果の特性を示す特性情報を前記サーバへ送信し、
     前記更新手段は、前記特性情報に基づいて決定される更新時刻に基づいて、前記第1のプログラム及び前記第2のプログラムを更新することを特徴とする請求項13に記載のストリーム送受信システム。
  15.  前記クライアントは、前記第1のプログラムを実行する第1のクライアントと、前記第2のプログラムを実行する第2のクライアントとを備え、
     前記第1のクライアントは、前記分散配置手段と前記第1送信手段と前記更新手段とを備え、
     前記第2のクライアントは、前記更新手段を備え、
     前記第2送信手段は、前記第2のプログラムを前記第2のクライアントに送信することを特徴とする請求項14に記載のストリーム送受信システム。
PCT/JP2009/070701 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム WO2010067846A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010542126A JP5333458B2 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム
US13/118,882 US8402549B2 (en) 2008-12-12 2011-05-31 Application software protecting method and stream transmitting/receiving system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008316808 2008-12-12
JP2008-316808 2008-12-12

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/118,882 Continuation US8402549B2 (en) 2008-12-12 2011-05-31 Application software protecting method and stream transmitting/receiving system

Publications (1)

Publication Number Publication Date
WO2010067846A1 true WO2010067846A1 (ja) 2010-06-17

Family

ID=42242832

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/070701 WO2010067846A1 (ja) 2008-12-12 2009-12-10 アプリケーションソフトウェアの保護方法及びストリーム送受信システム

Country Status (3)

Country Link
US (1) US8402549B2 (ja)
JP (1) JP5333458B2 (ja)
WO (1) WO2010067846A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100990998B1 (ko) * 2008-09-23 2010-11-01 한국전자통신연구원 디지털 위성 통신 시스템에서 전송 데이터의 캡슐화 방법 및 데이터 전송 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311136A (ja) * 1999-04-28 2000-11-07 Nec Corp 遠隔操作制御方法および遠隔操作用コンピュータシステム並びに遠隔操作制御用プログラムを記憶した記憶媒体
JP2002055727A (ja) * 2000-08-09 2002-02-20 Fuji Xerox Co Ltd ソフトウェア使用料課金システム及びソフトウェア使用料課金方法
JP2002062946A (ja) * 2000-08-16 2002-02-28 Fuji Xerox Co Ltd ソフトウェア使用料課金システム、ソフトウェア使用料課金方法、ソフトウェア評価システム、ソフトウェア評価方法
JP2003333039A (ja) * 2002-05-17 2003-11-21 Yamatake Corp クライアント装置、サーバ装置、コマンド処理結果取得方法、コマンド処理結果提供方法、コマンド処理結果取得プログラム及びコマンド処理結果提供プログラム
JP2004289684A (ja) * 2003-03-24 2004-10-14 Fuji Xerox Co Ltd ジョブ処理装置、ジョブ処理方法およびプログラム
JP2007086957A (ja) * 2005-09-21 2007-04-05 Felica Networks Inc 情報処理システム,クライアント装置,サーバ装置,情報処理方法,およびコンピュータプログラム
JP2008198016A (ja) * 2007-02-14 2008-08-28 Toshiba Corp シンクライアントシステム、装置及びプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
JP3853140B2 (ja) 2000-08-08 2006-12-06 株式会社シーイーシー ソフトウェア管理システム及び課金方法
JP2003345662A (ja) 2002-05-28 2003-12-05 Stark Co Ltd コンテンツデータ再生装置、コンテンツデータ配信サーバ、コンテンツデータ管理システム及びコンテンツデータ再生プログラム
US8078944B2 (en) * 2007-04-19 2011-12-13 Cousins Robert E Systems, methods and computer program products including features for coding and/or recovering data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311136A (ja) * 1999-04-28 2000-11-07 Nec Corp 遠隔操作制御方法および遠隔操作用コンピュータシステム並びに遠隔操作制御用プログラムを記憶した記憶媒体
JP2002055727A (ja) * 2000-08-09 2002-02-20 Fuji Xerox Co Ltd ソフトウェア使用料課金システム及びソフトウェア使用料課金方法
JP2002062946A (ja) * 2000-08-16 2002-02-28 Fuji Xerox Co Ltd ソフトウェア使用料課金システム、ソフトウェア使用料課金方法、ソフトウェア評価システム、ソフトウェア評価方法
JP2003333039A (ja) * 2002-05-17 2003-11-21 Yamatake Corp クライアント装置、サーバ装置、コマンド処理結果取得方法、コマンド処理結果提供方法、コマンド処理結果取得プログラム及びコマンド処理結果提供プログラム
JP2004289684A (ja) * 2003-03-24 2004-10-14 Fuji Xerox Co Ltd ジョブ処理装置、ジョブ処理方法およびプログラム
JP2007086957A (ja) * 2005-09-21 2007-04-05 Felica Networks Inc 情報処理システム,クライアント装置,サーバ装置,情報処理方法,およびコンピュータプログラム
JP2008198016A (ja) * 2007-02-14 2008-08-28 Toshiba Corp シンクライアントシステム、装置及びプログラム

Also Published As

Publication number Publication date
JP5333458B2 (ja) 2013-11-06
US20110231938A1 (en) 2011-09-22
JPWO2010067846A1 (ja) 2012-05-24
US8402549B2 (en) 2013-03-19

Similar Documents

Publication Publication Date Title
CN105247529B (zh) 在目录服务之间同步凭证散列
EP3350957B1 (en) Entropy sharing in a large distributed system
CN102667771B (zh) 通过数据比较自动检验冗余内容到通信设备的存储的系统和方法
JP3899918B2 (ja) ログイン認証方法およびその実施システム並びにその処理プログラム
US20020095582A1 (en) Secure distribution of digital content
JP2017519269A5 (ja)
US20070185958A1 (en) Control unit operations in a real-time collaboration server
CN1878170A (zh) 用于管理会话标识符的方法和设备
JP2012019534A (ja) 安全なコラボレーティブ・トランザクションを管理する方法及び装置
JP5574402B2 (ja) 分散型秘匿化データ統合装置、分散型秘匿化データ統合方法および分散型秘匿化データ統合用プログラム
US20020133705A1 (en) Information processing system, medium, information processing apparatus, information processing method, storage medium storing computer readable program for realizing such method
KR101407373B1 (ko) 서버와 클라이언트 시스템 간의 통신 세션에서 상태 추적메커니즘을 수행하는 방법
CN104168320B (zh) 一种用户数据分享的方法和系统
Ghasemi et al. Asynchronous coded caching
CN110176988B (zh) 保证冗余执行体加密行为一致的装置及方法
JP5333458B2 (ja) アプリケーションソフトウェアの保護方法及びストリーム送受信システム
US8817988B1 (en) Variable epoch scheduler for proactive cryptography systems
CN109951735B (zh) 一种视频播放地址解析获取方法、系统及介质
CN115865461B (zh) 一种高性能计算集群中分发数据的方法和系统
CN103209161A (zh) 一种访问请求处理方法及装置
CN116248746A (zh) 基于mqtt的数据处理方法、装置和计算机可读的存储介质
CN114531455A (zh) 基于边缘协助的多云安全存储方法
CN114463129A (zh) 一种基于用户标识的全局标识生成方法及设备
JP2011193161A (ja) 暗号管理システム及び暗号管理方法
CN107465743B (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: 09831950

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2010542126

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09831950

Country of ref document: EP

Kind code of ref document: A1