WO2018235268A1 - ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ - Google Patents

ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ Download PDF

Info

Publication number
WO2018235268A1
WO2018235268A1 PCT/JP2017/023222 JP2017023222W WO2018235268A1 WO 2018235268 A1 WO2018235268 A1 WO 2018235268A1 JP 2017023222 W JP2017023222 W JP 2017023222W WO 2018235268 A1 WO2018235268 A1 WO 2018235268A1
Authority
WO
WIPO (PCT)
Prior art keywords
ladder program
programmable controller
conversion
engineering tool
program
Prior art date
Application number
PCT/JP2017/023222
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 PCT/JP2017/023222 priority Critical patent/WO2018235268A1/ja
Priority to JP2018513385A priority patent/JP6381857B1/ja
Priority to CN201780079903.5A priority patent/CN110114772B/zh
Priority to DE112017005726.4T priority patent/DE112017005726T5/de
Priority to KR1020197017727A priority patent/KR102052489B1/ko
Priority to US16/463,386 priority patent/US20190362085A1/en
Publication of WO2018235268A1 publication Critical patent/WO2018235268A1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level

Definitions

  • the present invention relates to a ladder program unauthorized use preventing system for distributing a ladder program for operating a programmable controller, a ladder program unauthorized use preventing method, an engineering tool, a license distribution server, and a programmable controller.
  • a general protection method is a method of access control of reading or writing of a ladder program by a programmable controller using a password.
  • Patent Document 1 discloses a program protection method using a dedicated protection instruction on a ladder program. This program protection method freely sets the protection zone in the ladder program by the protection instruction and the protection end instruction.
  • Patent Document 1 which is the above-mentioned prior art can not properly protect a ladder program included in a package product combining a programmable controller and peripheral devices, that is, a ladder program installed in the programmable controller. This is because the technology described in Patent Document 1 can only protect the ladder program alone, and does not protect the ladder program included in the package product to operate by limiting to a specific programmable controller. For this reason, there is a problem that even a programmable controller which is not authorized to use the ladder program can use the ladder program illegally.
  • the present invention has been made in view of the above, and it is an object of the present invention to obtain, for example, a ladder program unauthorized use preventing system capable of preventing unauthorized use of a ladder program distributed in a packaged product to be sold. Do.
  • the present invention provides a ladder program in which a first conversion is performed using a first secret information in a ladder program unauthorized use prevention system. Perform the first inverse conversion using the first public information that makes a pair with the information, and operate with the specific programmable controller and not with the other programmable controllers for the ladder program on which the first inverse conversion has been performed , And an engineering tool that performs a second conversion using the second public information. Further, in the ladder program unauthorized use preventing system of the present invention, the second reverse conversion is performed on the ladder program subjected to the second conversion using the second secret information paired with the second publicized information. A programmable controller is provided that executes a ladder program on which the second inverse transformation has been performed.
  • the ladder program illegal use preventing system, the ladder program illegal use preventing method, the engineering tool, the license distribution server, and the programmable controller according to the present invention have an effect of being able to prevent the illegal use of the distributed ladder program.
  • a diagram showing a configuration of a ladder program unauthorized use preventing system according to a first embodiment Block diagram showing a configuration example of the license distribution server according to the first embodiment Block diagram showing an example of the functional configuration of the engineering tool according to the first embodiment Block diagram showing a configuration example of a programmable controller according to the first embodiment
  • Flowchart showing an operation processing procedure of the ladder program unauthorized use preventing system according to the first embodiment The figure which shows the hardware constitutions of the ladder program unauthorized use prevention system concerning Embodiment 1 Diagram for explaining the process executed by the license distribution server according to the second embodiment Diagram for explaining the process executed by the engineering tool according to the second embodiment Diagram for explaining simulation processing of FB (Function Block) executed by the engineering tool according to the second embodiment
  • FIG. 1 is a diagram showing the configuration of a ladder program unauthorized use preventing system according to a first embodiment.
  • the ladder program unauthorized use preventing system 1 according to the first embodiment is a system for distributing the ladder program 42 included in the package product to an external device such as the programmable controller 30A.
  • Packaged products are a group of products provided by a vendor who is a seller to a user who is a buyer. The packaged product is sold to the user as a set by combining the programmable controller 30A, peripheral devices, and a ladder program 42 for controlling them.
  • An example of a peripheral device is an IO (Input / Output) unit or a power supply unit.
  • the ladder program illegal use prevention system 1 is used when developing for the user to operate the programmable controller 30A and the license distribution server 10A managed by the vendor of the package product, the programmable controller 30A which is a part of the package product, and And a development PC (Personal Computer) 20.
  • the license distribution server 10A, the development PC 20, and the programmable controller 30A are connected to the Internet 2. Further, the development PC 20 and the programmable controller 30A are connected to a network possessed by the user.
  • the programmable controller 30A may not be connected to the Internet 2.
  • FIG. 1 illustrates the Internet 2 in the ladder program unauthorized use prevention system 1, the ladder program unauthorized use prevention system 1 does not include the Internet 2.
  • the development PC 20 also includes an engineering tool 21A for developing a ladder program 42 used by the programmable controller 30A.
  • the engineering tool 21A is an example of an engineering environment for developing the ladder program 42, and is also called engineering environment software.
  • the engineering tool 21A which is an application program, is installed on the development PC 20 and operates on the development PC 20.
  • the programmable controller 30A is connected to a not-shown controlled device such as a sensor or a robot, and controls the controlled device using the ladder program 42.
  • the programmable controller 30A is also called a programmable logic controller (PLC: Programmable Logic Controller).
  • the vendor of the package product writes the ladder program 42 for the programmable controller 30A to control the controlled device to a portable recording medium 43 such as a DVD (Digital Versatile Disc) and distributes it to the user. Also, the vendor distributes the license certificate 41 to the user via the Internet 2 or by means such as mail.
  • the license certificate 41 is information of a license corresponding to the programmable controller 30A which is a specific programmable controller.
  • the license certificate 41 includes an expiration date of the license, information of functions available in the package product, and a public key assigned to the programmable controller 30A to which the license is issued.
  • the ladder program unauthorized use preventing system 1 comprehensively protects the distribution process of the ladder program 42, the editing process in the engineering environment of the user, the simulation process in the engineering environment of the user, and the embedding process into the programmable controller 30A. .
  • the ladder program 42 included in the sold packaged product is operable with the specific programmable controller 30A, and does not operate with any other programmable controller other than the programmable controller 30A.
  • the ladder program illegal use prevention system 1 individually issues a license certificate 41 to the user.
  • Ladder Program Illegal Use Prevention System 1 distributes the ladder program 42 to the user via the recording medium 43 or on-line via the Internet 2.
  • a part of the ladder program 42 to be protected may be edited by the user by the engineering tool 21A.
  • the ladder program 42 to be protected has a portion called a function block which can not be edited by the user.
  • the user may execute simulation, which is processing for virtually operating the ladder program 42 on the engineering tool 21A.
  • the license distribution server 10A distributes the ladder program 42 unique to the user for each user under the restriction conditions of ⁇ 1> to ⁇ 6> described above. As shown in ⁇ 3>, the ladder program illegal use prevention system 1 may distribute the ladder program 42 online, but in the following description, the license distribution server 10A stores the ladder program 42, and the recording medium The case of delivery via the V.43 will be described.
  • the ladder program illegal use prevention system 1 includes the first secret information, the vendor secret key Vsec, the engineering environment public key Epub_1, the first public information, the vendor public key Vpub, the engineering environment secret key Esec, and the second public information.
  • the controller public key Cpub, the engineering environment public key Epub_2, and the controller secret key Csec which is the second secret information are used.
  • the vendor secret key Vsec is a secret key used by the license distribution server 10A that is the vendor.
  • the license distribution server 10A uses the vendor secret key Vsec when providing the ladder program 42 to the engineering tool 21A. Specifically, the license distribution server 10A uses the vendor secret key Vsec when encrypting the ladder program 42.
  • the engineering environment public key Epub_1 is a public key used by the license distribution server 10A.
  • the license distribution server 10A uses the engineering environment public key Epub_1 when providing the ladder program 42 to the engineering tool 21A. Specifically, the license distribution server 10A uses the engineering environment public key Epub_1 when encrypting the ladder program 42.
  • the vendor public key Vpub is a public key used by the engineering tool 21A.
  • the engineering tool 21A uses the vendor public key Vpub when acquiring the ladder program 42 from the license distribution server 10A.
  • the engineering tool 21A uses the vendor public key Vpub when decrypting the later-described distribution file data 101, which is the encrypted ladder program 42.
  • the vendor public key Vpub is paired with the vendor secret key Vsec. Therefore, it can be said that the relationship between the vendor public key Vpub and the vendor private key Vsec is shared between the license distribution server 10A and the engineering tool 21A.
  • the engineering environment secret key Esec is a secret key used by the engineering tool 21A.
  • the engineering tool 21A uses the engineering environment secret key Esec when acquiring the ladder program 42 from the license distribution server 10A.
  • the engineering tool 21A uses the engineering environment private key Esec when decrypting the distribution file data 101.
  • the engineering environment private key Esec is paired with the engineering environment public key Epub_1. Therefore, it can be said that the relationship between the engineering environment private key Esec and the engineering environment public key Epub_1 is shared between the license distribution server 10A and the engineering tool 21A.
  • the controller public key Cpub is a public key used by the engineering tool 21A.
  • the engineering tool 21A uses the controller public key Cpub when providing the ladder program 42 to the programmable controller 30A.
  • the engineering tool 21A uses the controller public key Cpub when converting the later-described executable file 201 decoded by the engineering tool 21A into a file which can be operated only by the programmable controller 30A.
  • the engineering environment public key Epub_2 is a public key used by the programmable controller 30A.
  • the programmable controller 30A uses the engineering environment public key Epub_2 when acquiring the executable file 201 of the ladder program 42 from the engineering tool 21A.
  • the programmable controller 30A uses the engineering environment public key Epub_2 when decrypting a protected executable file 202 described later, which is the encrypted executable file 201.
  • the controller secret key Csec is a secret key used by the programmable controller 30A.
  • the programmable controller 30A uses the controller secret key Csec when acquiring the execution format file 201 of the ladder program 42 from the engineering tool 21A.
  • the programmable controller 30A uses the controller secret key Csec when decrypting the protected executable file 202 which is a protected file.
  • the controller secret key Csec is paired with the controller public key Cpub. Therefore, it can be said that the relationship between the controller secret key Csec and the controller public key Cpub is shared between the engineering tool 21A and the programmable controller 30A.
  • the vendor who is the seller installs in the engineering tool 21A and the programmable controller 30A public information such as secret information such as a secret key and a public key.
  • the license distribution server 10A distributes the above-mentioned second secret information and the above-mentioned first public information to the specific engineering tool 21A, and distributes the above-mentioned second public information to the specific programmable controller 30A. .
  • FIG. 2 is a block diagram showing a configuration example of the license distribution server according to the first embodiment.
  • the license distribution server 10A includes a public key pair DB (Database) 11 that stores a public key pair that is a pair of a public key and a secret key, and a user DB 12 that stores user information that is user information.
  • DB Database
  • the license distribution server 10A also includes a license certificate generating unit 13 that generates a license certificate 41, and a ladder program conversion unit 14 that converts the ladder program 42 into distribution file data 101.
  • the distribution file data 101 is a file obtained by encrypting the ladder program 42 provided by the vendor to the user. Therefore, the distribution file data 101 is file data of the ladder program 42 protected by the license distribution server 10A.
  • the license distribution server 10A also includes a memory (not shown) that stores the vendor secret key Vsec, the engineering environment public key Epub_1, and the ladder program 42.
  • the public key pair DB 11 stores public key pairs assigned to a plurality of programmable controllers including the programmable controller 30A and other programmable controllers other than the programmable controller 30A. In other words, the public key pair DB 11 stores the pair of the public key and the secret key for each programmable controller 30A.
  • the public key stored in the public key pair DB 11 is a controller public key Cpub to be described later
  • the secret key stored in the public key pair DB 11 is a controller private key Csec to be described later.
  • the user DB 12 stores user information in which the user who has purchased the package product license and the machine information of the programmable controller 30A in the package product delivered to the user are associated with each other.
  • the license certificate generation unit 13 which is a license generation unit is connected to the public key pair DB 11 and the user DB 12.
  • the license certificate generating unit 13 generates a license certificate 41 for the user based on the public key pair in the public key pair DB 11 and the user information in the user DB 12.
  • the license certificate generating unit 13 reads out the machine information of the programmable controller 30A which is the issue destination of the license certificate 41 from within the user DB 12.
  • the license certificate generating unit 13 reads the public key pair assigned to the read machine information from the public key pair DB 11.
  • the license certificate generating unit 13 assigns, to the license certificate 41, the license expiration date, information of functions available in the package product, and the public key pair assigned to the programmable controller 30A of the issue destination.
  • the license certificate generation unit 13 distributes the license certificate 41 to the user by an electronic medium such as a mail or a paper medium.
  • the license certificate generating unit 13 When distributing the license certificate 41 by an electronic medium, the license certificate generating unit 13 generates a mail with the file of the license certificate 41 attached. Thereby, the license distribution server 10A transmits the mail generated by the license certificate generation unit 13 to the user. Further, when distributing the license certificate 41 by paper medium, the license distribution server 10A outputs data for printing out the license certificate 41 onto the paper medium to a printer (not shown). Thereafter, the printer prints out the license certificate 41 to complete the license certificate 41 of the paper medium. Then, the license certificate 41 of the paper medium is delivered to the user by delivery means such as mail.
  • the ladder program conversion unit 14 performs the first conversion on the ladder program 42 using the vendor secret key Vsec and the engineering environment public key Epub_1. Specifically, the ladder program conversion unit 14 distributes the ladder program 42 to the user using the key derivation function KDF (Key Derivation Function), the encryption function Enc, and the tampering detection code generation function MAC.
  • KDF Key Derivation Function
  • Enc Enc
  • MAC tampering detection code generation function
  • the ladder program conversion unit 14 generates a key for encryption and a key for tampering detection from the vendor secret key Vsec and the engineering environment public key Epub_1 by the KDF.
  • the encryption key generated by the ladder program conversion unit 14 is a temporary key for encryption, and the tamper detection key is a temporary key for tamper detection.
  • the vendor secret key Vsec is a secret key unique to the vendor who provides the package product.
  • the engineering environment public key Epub_1 is an encryption key for concealing the vendor secret key Vsec.
  • the ladder program conversion unit 14 converts the ladder program 42 into the distribution file data 101 by using the generated encryption key and tamper detection key.
  • the ladder program 42 is a set of a portion which the user may edit and a function block which is a functional unit which is not supposed to be edited by the user.
  • the license distribution server 10A writes the distribution file data 101 to the recording medium 43.
  • the license distribution server 10A stores the public key pair in the public key pair DB11, and stores the user information in the user DB12.
  • the license certificate generating unit 13 generates a license certificate 41 for the user based on the public key pair in the public key pair DB 11 and the user information in the user DB 12. At this time, the license certificate generation unit 13 reads the machine information unique to the user from the user DB 12, and the license certificate generation unit 13 extracts the public key pair assigned to the read machine information from the public key pair DB 11. read out. Then, the license certificate generating unit 13 assigns, to the license certificate 41, the license expiration date, information of functions that can be used in the package product, and the public key pair assigned to the programmable controller 30A of the issue destination.
  • the ladder program conversion unit 14 generates a key for encryption and a key for tampering detection from the vendor secret key Vsec and the engineering environment public key Epub_1 using the key derivation function KDF. That is, when the vendor secret key Vsec is u and the engineering environment public key Epub_1 is V, the ladder program conversion unit 14 executes the following process (1) using the encryption key Kenc and the tampering detection key Kmac.
  • bit concatenation is represented by
  • in each processing described in the first embodiment represents data derivation processing. Specifically, the ladder program illegal use prevention system 1 derives the data shown on the right side of the “ ⁇ ” by executing the process shown on the left side of the “ ⁇ ”.
  • the ladder program conversion unit 14 performs an encryption process and an addition process of a tampering detection code to the ladder program 42 including the function block. That is, assuming that the ladder program 42 is m, the ladder program conversion unit 14 executes the following process (2) and process (3) using the encryption function Enc and the tampering detection code generation function MAC.
  • c is the ladder program encrypted with the encryption key
  • tag is a tampering detection code generated using c as the tampering detection key.
  • the ladder program conversion unit 14 sets c
  • the license distribution server 10A writes the distribution file data 101 to the recording medium 43. Thereafter, the vendor distributes the recording medium 43 storing the distribution file data 101 to the user.
  • FIG. 3 is a block diagram showing an example of a functional configuration of the engineering tool according to the first embodiment.
  • the engineering tool 21A converts the distribution file data 101 distributed from the license distribution server 10A back to the ladder program 42 before encryption and converts the ladder program 42 to the executable file 201. And a format conversion unit 23.
  • the executable file 201 is a file that can be interpreted by the programmable controller 30A as a program.
  • the engineering tool 21A also includes a ladder program reconversion unit 24 that converts the executable file 201 into a file that can be operated only by the programmable controller 30A.
  • the engineering tool 21A also includes a memory (not shown) that stores the vendor public key Vpub and the engineering environment private key Esec.
  • the engineering tool 21A also reads the distribution file data 101 and the license certificate 41 distributed from the license distribution server 10A from the memory in the development PC 20 and executes various processes.
  • the vendor public key Vpub is a public key unique to the vendor who provides the packaged product, and is paired with the vendor private key Vsec. That is, data encrypted with the vendor secret key Vsec can be decrypted with the vendor public key Vpub.
  • the engineering environment secret key Esec is a secret key unique to the engineering tool 21A embedded in the engineering tool 21A, and is paired with the engineering environment public key Epub_2. That is, data encrypted with the engineering environment private key Esec can be decrypted with the engineering environment public key Epub_2.
  • the ladder program reverse conversion unit 22 executes the first reverse conversion on the distribution file data 101 using the vendor public key Vpub and the engineering environment secret key Esec. That is, the ladder program reverse conversion unit 22 executes decryption which is reverse conversion, using the vendor public key Vpub and the engineering environment secret key Esec embedded in advance in the engineering tool 21A. Specifically, the ladder program reverse conversion unit 22 reversely converts the distribution file data 101 into the ladder program 42 before encryption using the vendor public key Vpub and the engineering environment secret key Esec. That is, the ladder program reverse conversion unit 22 obtains the ladder program 42 by decrypting the encrypted ladder program 42. The ladder program reverse conversion unit 22 sends the ladder program 42 generated by the reverse conversion to the execution form conversion unit 23.
  • the execution format conversion unit 23 converts the ladder program 42 generated by the ladder program reverse conversion unit 22 by the reverse conversion into the execution format file 201.
  • the execution format conversion unit 23 sends the execution format file 201 generated by the conversion to the ladder program re-conversion unit 24.
  • the ladder program reconversion unit 24 executes the second conversion on the executable file 201 using the controller public key Cpub. Specifically, the ladder program reconversion unit 24 converts the execution format file 201 generated by the conversion of the execution format conversion unit 23 into a file that can be operated only by the programmable controller 30A associated with the license certificate 41. A file that can be operated only by the programmable controller 30A associated with the license certificate 41 is a protected execution format file 202. The protected executable file 202 is protected from being operated by any programmable controller other than the programmable controller 30A. Also, the protected executable file 202 is a file that can be interpreted by the programmable controller 30A as a program. The engineering tool 21A sends the protected executable file 202 generated by the ladder program reconversion unit 24 to the programmable controller 30A.
  • the development PC 20 stores the distribution file data 101 and the license certificate 41 distributed from the license distribution server 10A in a memory (not shown).
  • the ladder program reverse conversion unit 22 of the engineering tool 21A reads out the distribution file data 101 distributed from the license distribution server 10A from the memory, and reversely converts it into the ladder program 42 before encryption.
  • the ladder program reverse conversion unit 22 performs decryption which is reverse conversion using the vendor public key Vpub and the engineering environment secret key Esec embedded in advance in the engineering tool 21A. That is, when the correct vendor public key Vpub is represented as U and the engineering environment private key Esec is represented as v, the ladder program reverse conversion unit 22 executes the following process (4). KDF (vU) ⁇ Kmac
  • the ladder program reverse conversion unit 22 can regenerate the encryption key Kenc and the tampering detection key Kmac generated by the license distribution server 10A. Then, the ladder program reverse conversion unit 22 executes the following process (5).
  • the ladder program reverse conversion unit 22 determines that the ladder program 42 is an incorrect program.
  • the ladder program reverse conversion unit 22 determines that the ladder program 42 is a normal program. That is, when the tags match, the ladder program reverse conversion unit 22 determines that the distribution file data 101 is a file that can be operated by the programmable controller 30A. Then, the ladder program reverse conversion unit 22 considers that the distribution file data 101 is not falsified. Furthermore, the ladder program inverse conversion unit 22 executes the following process (6) using the decoding function Dec corresponding to Enc. Dec (Kenc, c) ⁇ m (6)
  • the ladder program reverse conversion unit 22 decodes the ladder program 42.
  • the engineering tool 21A restores the ladder program 42 by decoding, the user can execute editing on the ladder program 42 and simulation of the ladder program 42.
  • the security function described in Japanese Patent Application Laid-Open No. 10-124308, which is Patent Document 1 may be performed.
  • the ladder program reverse conversion unit 22 sends the decoded ladder program 42 to the execution format conversion unit 23. Then, the execution format conversion unit 23 converts the ladder program 42 into the execution format file 201 and sends it to the ladder program reconversion unit 24.
  • the ladder program reconversion unit 24 converts the executable file 201 into a file that can operate only for the programmable controller 30A associated with the license certificate 41. That is, when the controller public key Cpub described in the license certificate 41 is described as P1 and the engineering environment private key Esec is described as v, the ladder program reconversion unit 24 determines that the tampering detection key K'mac and the encryption key The following processing (7) to processing (9) are executed using K'enc.
  • the executable file 201 is described as m '.
  • c ' is the executable file 201 encrypted with the encryption key K'enc, and tag' is a tampering detection code generated using the tampering detection key K'mac for c '.
  • the ladder program reconversion unit 24 sets c ′
  • FIG. 4 is a block diagram showing a configuration example of the programmable controller according to the first embodiment.
  • the programmable controller 30A determines whether or not the protected executable file 202 can be operated, and when it can operate, the executable program capable of executing the protected executable file 202 by the control execution unit 32
  • a ladder program inverse conversion unit 31 which is a determination unit which performs inverse conversion to the file 201 is provided.
  • the ladder program reverse conversion unit 31 executes the second reverse conversion on the protected execution format file 202 using the engineering environment public key Epub_2 and the controller secret key Csec.
  • the programmable controller 30 ⁇ / b> A also includes a control execution unit 32 that controls the controlled device using the execution format file 201.
  • the programmable controller 30A also includes a memory (not shown) that stores the engineering environment public key Epub_2 and the controller secret key Csec.
  • Engineering environment public key Epub_2 is paired with engineering environment private key Esec.
  • the programmable controller 30A stores the protected executable file 202 sent from the engineering tool 21A in a memory (not shown).
  • the ladder program reverse conversion unit 31 of the programmable controller 30A reverse converts the protected execution format file 202 sent from the engineering tool 21A into the executable format file 201 executable by the control execution unit 32.
  • the ladder program reverse conversion unit 31 regenerates K'enc, which is an encryption key generated by the engineering tool 21A, and K'mac, which is a key for tampering detection. Then, the ladder program reverse conversion unit 31 executes the following process (11). MAC (K'mac, c ') ⁇ tag' ... (11)
  • the ladder program reverse conversion unit 31 determines that the ladder program 42 is an incorrect program.
  • the ladder program inverse conversion unit 31 determines that the ladder program 42 is a normal program. That is, when the tag 'matches, the ladder program reverse conversion unit 31 determines that the protected execution format file 202 is a file that can be operated by the programmable controller 30A. Then, the ladder program reverse conversion unit 31 considers that the protected executable file 202 is not falsified. Furthermore, the ladder program reverse conversion unit 31 executes the following process (12) using the decoding function Dec corresponding to Enc. Dec (K'enc, c ')->m' (12)
  • the ladder program reverse conversion unit 31 decodes the protected execution format file 202.
  • the ladder program reverse conversion unit 31 sends the execution format file 201 restored by the decryption to the control execution unit 32.
  • the control execution unit 32 controls the controlled device using the execution format file 201.
  • the programmable controller 30A restores the executable file 201, the programmable controller 30A can execute the executable file 201.
  • the programmable controller 30A When the engineering tool 21A issues a file read request to the programmable controller 30A, the programmable controller 30A outputs the protected execution format file 202, not the decrypted execution format file 201, to the engineering tool 21A.
  • FIG. 5 is a flowchart of an operation processing procedure of the ladder program unauthorized use preventing system according to the first embodiment.
  • step S10 the license distribution server 10A encrypts the ladder program 42 using u, which is the vendor secret key Vsec, and V, which is the engineering environment public key Epub_1, thereby generating the distribution file data 101.
  • step S20 the license distribution server 10A generates a license certificate 41 for the user based on the public key pair in the public key pair DB 11 and the user information in the user DB 12.
  • the engineering tool 21A acquires the distribution file data 101 generated by the license distribution server 10A from the license distribution server 10A. Then, in step S30, the engineering tool 21A checks the tag of the distribution file data 101 generated by the license distribution server 10A using U which is the vendor public key Vpub and v which is the engineering environment secret key Esec. .
  • step S35 the engineering tool 21A determines whether the tag added to the distribution file data 101 matches the tag calculated by the engineering tool 21A.
  • the engineering tool 21A determines that the distribution file data 101 has been falsified. It ends abnormally.
  • the engineering tool 21A performs the distribution file data 101 in step S40. Decrypt.
  • the engineering tool 21A restores the ladder program 42.
  • editing of the ladder program 42 and simulation of the ladder program 42 can be performed.
  • simulation means executing the ladder program 42 on software.
  • the engineering tool 21A converts the ladder program 42 into an execution form in order to incorporate the ladder program 42 into the programmable controller 30A in step S50. Specifically, the engineering tool 21A converts the ladder program 42 into an executable file 201.
  • the engineering tool 21A also acquires the license certificate 41 generated by the license distribution server 10A from the license distribution server 10A. Then, in step S60, the engineering tool 21A encrypts the executable file 201 using the controller public key Cpub registered in the license certificate 41, thereby generating the protected executable file 202.
  • ⁇ Programmable controller 30A> The programmable controller 30A acquires the protected executable file 202 from the engineering tool 21A. Then, in step S70, the programmable controller 30A checks the tag 'of the protected executable file 202 using V which is the engineering environment public key Epub_2 and p1 which is the controller secret key Csec.
  • step S75 the programmable controller 30A determines whether the tag 'added to the protected execution format file 202 matches the tag' calculated by the programmable controller 30A.
  • the programmable controller 30A tampers with the protected executable file 202.
  • the protected or protected execution format file 202 is abnormally terminated assuming that it is a file for a programmable controller other than the programmable controller 30A.
  • the programmable controller 30A performs protected execution in step S80.
  • the format file 202 is stored.
  • step S90 the programmable controller 30A decodes the protected execution format file 202.
  • the engineering tool 21A restores the executable file 201.
  • step S100 the programmable controller 30A executes control on the controlled device using the execution format file 201, and ends normally.
  • FIG. 6 is a diagram showing a hardware configuration of the ladder program unauthorized use preventing system according to the first embodiment.
  • the license distribution server 10A of the ladder program unauthorized use prevention system 1 includes a processor 61, a storage unit 62, a communication unit 63, and an output unit 64.
  • a processor 61, a storage unit 62, a communication unit 63, and an output unit 64 are connected to a bus.
  • the communication unit 63 communicates with the development PC 20 via the Internet 2.
  • the communication unit 63 may communicate with devices other than the development PC 20.
  • the communication unit 63 transmits the license certificate 41 to the development PC 20 via the Internet 2.
  • the communication unit 63 transmits the distribution file data 101 to the development PC 20 via the Internet 2.
  • the output unit 64 outputs the information in the license distribution server 10A to an external device.
  • the output unit 64 When the license distribution server 10A provides the license certificate 41 to the user by mail, the output unit 64 outputs the data of the license certificate 41 generated by the license certificate generation unit 13 to an external device such as a printer.
  • the output unit 64 may write the data of the license certificate 41 on a portable recording medium 43 such as a DVD.
  • the output unit 64 may write the distribution file data 101 to the recording medium 43.
  • the storage unit 62 includes a public key pair DB 11 and a user DB 12.
  • the storage unit 62 also stores the vendor secret key Vsec, the engineering environment public key Epub_1, and the ladder program 42. Further, the storage unit 62 stores a program for executing the process of the license certificate generating unit 13 and a program for executing the process of the ladder program conversion unit 14. In addition, the storage unit 62 stores a license certificate 41 which is a processing result of the license certificate generation unit 13 and distribution file data 101 which is a processing result of the ladder program conversion unit 14.
  • the license distribution server 10A is realized by the processor 61 reading and executing a program for operating as the license distribution server 10A stored in the storage unit 62. In addition, it can be said that this program causes a computer to execute the procedure or method of the license distribution server 10A.
  • the processor 61 according to the first embodiment executes the processing of the license certificate generating unit 13 and the ladder program converting unit 14 using various programs.
  • the storage unit 62 is also used as a temporary memory when the processor 61 executes various processes.
  • the program executed by the processor 61 is a computer-executable computer-program product having a computer-readable non-transitory recording medium including a plurality of instructions for performing data processing. is there.
  • the program executed by the processor 61 causes the computer to execute data processing of a plurality of instructions.
  • the function of the license certificate generation unit 13 or the ladder program conversion unit 14 in the license distribution server 10A may be realized by dedicated hardware. Further, a part of the functions of the license distribution server 10A may be realized by dedicated hardware and a part may be realized by software or firmware.
  • the development PC 20 of the ladder program unauthorized use prevention system 1 includes a processor 71, a storage unit 72, a communication unit 73, an output unit 74, and an input unit 75.
  • a processor 71, a storage unit 72, a communication unit 73, an output unit 74, and an input unit 75 are connected to a bus.
  • the input unit 75 receives the distribution file data 101 and the license certificate 41 sent from the outside, and inputs them to the storage unit 72.
  • the communication unit 73 has the same function as the communication unit 63, and the output unit 74 has the same function as the output unit 64.
  • the communication unit 73 communicates with the license distribution server 10A via the Internet 2.
  • the communication unit 73 may communicate with devices other than the license distribution server 10A.
  • the license distribution server 10A provides the license certificate 41 online to the user
  • the communication unit 73 receives the license certificate 41 via the Internet 2.
  • the license distribution server 10A provides the distribution file data 101 to the user online
  • the communication unit 73 receives the distribution file data 101 via the Internet 2.
  • the output unit 74 writes the protected executable file 202 in a portable recording medium 43 such as a USB (Universal Serial Bus) memory.
  • a portable recording medium 43 such as a USB (Universal Serial Bus) memory.
  • the recording medium 43 in which the protected executable file 202 is written is connected to the programmable controller 30A.
  • the programmable controller 30A reads the protected execution format file 202 written to the recording medium 43.
  • the communication unit 73 may transmit the protected execution format file 202 to the programmable controller 30A.
  • an example of communication performed by the communication unit 73 is Ethernet (registered trademark) communication.
  • the protected executable file 202 sent to the programmable controller 30A via the output unit 74 or the communication unit 73 is stored in a storage unit 82 described later in the programmable controller 30A.
  • the processor 71 has the same function as the processor 61, and the storage unit 72 has the same function as the storage unit 62.
  • the storage unit 72 stores the vendor public key Vpub and the engineering environment private key Esec.
  • the vendor public key Vpub and the engineering environment private key Esec here are information that can not be edited by the user.
  • the storage unit 72 also stores the distribution file data 101 and the license certificate 41.
  • the storage unit 72 also stores programs for executing the processing of the ladder program reverse conversion unit 22, the execution format conversion unit 23, and the ladder program reconversion unit 24.
  • the storage unit 72 is a processing result of the ladder program reverse conversion unit 22, a ladder program 42 which is a processing result of the ladder program reverse conversion unit 22, an execution format file 201 which is a processing result of the execution format conversion unit 23,
  • the protected executable file 202 is stored.
  • the development PC 20 is realized by the processor 71 reading and executing a program for operating as the development PC 20 stored in the storage unit 72. In addition, it can be said that this program causes a computer to execute the procedure or method of the development PC 20.
  • the development PC 20 executes the engineering tool 21A, which is an application program, by the processor 71.
  • the processor 71 according to the first embodiment executes the processing of the ladder program reverse conversion unit 22, the execution form conversion unit 23, and the ladder program reconversion unit 24 using the engineering tool 21A which is one of the programs possessed by the development PC 20.
  • the storage unit 72 is also used as a temporary memory when the processor 71 executes various processes.
  • the program executed by the processor 71 is a computer program product having a computer readable non-transitory recording medium including a plurality of computer executable instructions for data processing.
  • the program executed by the processor 71 causes the computer to execute data processing of a plurality of instructions.
  • the functions of the ladder program reverse conversion unit 22, the execution form conversion unit 23, or the ladder program reconversion unit 24 in the development PC 20 may be realized by dedicated hardware. Further, a part of the development PC 20 may be realized by dedicated hardware and a part may be realized by software or firmware.
  • the programmable controller 30A of the ladder program unauthorized use prevention system 1 includes a processor 81, a storage unit 82, a communication unit 83, and a control signal output unit 86.
  • a processor 81, a storage unit 82, a communication unit 83, and a control signal output unit 86 are connected to a bus.
  • the communication unit 83 communicates with the communication unit 73.
  • the communication unit 83 receives the protected execution format file 202 sent from the communication unit 73.
  • An example of communication performed by the communication unit 83 is Ethernet communication.
  • the communication unit 83 stores the protected execution format file 202 received from the communication unit 73 in the storage unit 82.
  • the communication unit 83 may communicate with devices other than the development PC 20.
  • Control signal output unit 86 outputs an instruction corresponding to execution format file 201 to the controlled device.
  • the signal value that the control signal output unit 86 outputs to the controlled device is the execution result of the control execution unit 32 described above.
  • the processor 81 has the same function as the processors 61 and 71, and the storage unit 82 has the same function as the storage units 62 and 72.
  • the storage unit 82 stores the engineering environment public key Epub_2, the controller secret key Csec, and the protected execution format file 202.
  • the storage unit 82 also stores programs for executing the processing of the ladder program inverse conversion unit 31 and the control execution unit 32.
  • the storage unit 82 stores an execution format file 201 which is a processing result of the ladder program reverse conversion unit 31.
  • the programmable controller 30A is realized by the processor 81 reading out and executing a program stored in the storage unit 82 for operating as the programmable controller 30A. In addition, it can be said that this program causes a computer to execute the procedure or method of the programmable controller 30A.
  • the processor 81 according to the first embodiment executes the processing of the ladder program reverse conversion unit 31 and the control execution unit 32 using a program.
  • the storage unit 82 is also used as a temporary memory when the processor 81 executes various processes.
  • the program executed by the processor 81 is a computer program product having a computer readable non-transitory recording medium that includes a plurality of computer executable instructions for data processing.
  • the program executed by the processor 81 causes the computer to execute data processing of a plurality of instructions.
  • the function of the ladder program reverse conversion unit 31 or the control execution unit 32 may be realized by dedicated hardware. Further, a part of the function of the programmable controller 30A may be realized by dedicated hardware and a part may be realized by software or firmware.
  • the processors 61, 71, and 81 are CPUs (also referred to as central processing units, processing units, arithmetic units, microprocessors, microcomputers, processors, DSPs (Digital Signal Processors)), system LSIs (Large Scale Integration), and the like.
  • CPUs also referred to as central processing units, processing units, arithmetic units, microprocessors, microcomputers, processors, DSPs (Digital Signal Processors)), system LSIs (Large Scale Integration), and the like.
  • the storage units 62, 72, 82 may be nonvolatile or volatile semiconductor memory such as random access memory (RAM), read only memory (ROM) or flash memory, or may be a magnetic disk or flexible disk. Good.
  • RAM random access memory
  • ROM read only memory
  • flash memory or may be a magnetic disk or flexible disk. Good.
  • the packaged product in which the programmable controller 30A, the ladder program 42, and the peripheral device are combined is provided to the user as a set, whereby the start-up period of the manufacturing line used by the user can be shortened.
  • an unauthorized user can use another person's ladder program 42 if the use of the ladder program 42 is not restricted. Therefore, in the first embodiment, the license distribution server 10A performs encryption for each user, and the engineering tool 21A performs encryption for each programmable controller 30A.
  • the security of the packaged product can be secured under the above-described constraint conditions. This makes it possible to prevent unauthorized viewing, editing, copying and execution of the ladder program 42 in the package product.
  • the ladder program illegal use prevention system 1 generates the distribution file data 101 in which the ladder program 42 protected by the license distribution server 10A is converted into a format that can be decoded only by the regular engineering tool 21A. There is. As a result, even when the distribution file data 101 distributed to the regular engineering tool 21A leaks, the ladder program 42 in the distribution file data 101 can be protected.
  • the engineering tool 21A performs encryption using the license certificate 41 distributed from the license distribution server 10A, the ladder program 42 can be converted into a form operable only for the specific programmable controller 30A. Thus, the engineering tool 21A can protect the ladder program 42 from misuse such that the ladder program 42 is illegally used by another programmable controller.
  • the engineering tool 21A executes various processes on the ladder program 42 encrypted using the engineering environment public key Epub_1
  • the engineering tool 21A operates in the programmable controller 30A and the other programmable controllers In order to prevent operation, is encrypted using the controller public key Cpub.
  • the programmable controller 30A determines whether or not the ladder program 42 encrypted using the controller public key Cpub can be operated.
  • the ladder program 42 created for the programmable controller 30A can operate on the programmable controller 30A and can not operate on other programmable controllers. Therefore, unauthorized use of the ladder program 42 distributed from the license distribution server 10A can be prevented.
  • the engineering tool 21A encrypts the ladder program 42 based on the license certificate 41 for the programmable controller 30A. Therefore, the programmable controller other than the programmable controller 30A can be prevented from decoding the ladder program 42.
  • the engineering tool 21A determines whether the ladder program 42 is an incorrect program, and the programmable controller 30A determines whether the ladder program 42 is an incorrect program. It is possible to easily find out the tampering.
  • Second Embodiment Second Embodiment A second embodiment will be described next with reference to FIGS. 7 to 9.
  • the license distribution server 10B described later separates the function block from the ladder program 42 and encrypts it, and the function block is not restored by the engineering tool 21B described later. Make it
  • FIG. 7 is a diagram for explaining a process performed by the license distribution server according to the second embodiment.
  • the license distribution server 10B has the same function as the license distribution server 10A described in the first embodiment.
  • the ladder program conversion unit 14 of the license distribution server 10B separates the ladder program 42 including the function block FB 46 into the ladder program 45 not including the FB 46 and the FB 46. In other words, the ladder program conversion unit 14 separates the ladder program 42 into first and second segments.
  • the ladder program conversion unit 14 converts the ladder program 45 which is the first segment into a protected ladder program 47 by the same method as in the first embodiment. Specifically, the ladder program conversion unit 14 converts the ladder program 45 into the protected ladder program 47 by the same process as the process of generating the distribution file data 101 from the ladder program 42.
  • the ladder program conversion unit 14 generates the FB execution format file 210 by converting the second segment FB 46 into an execution format.
  • the FB execution format file 210 is a file obtained by converting the FB 46 into an executable format that can be operated by the programmable controller 30A.
  • the FB execution format file 210 is an executable file that the programmable controller 30A interprets as a program and can execute the same as the execution format file 201 of the first embodiment.
  • the ladder program conversion unit 14 encrypts the FB execution format file 210 toward the programmable controller 30A. That is, in the second embodiment, the ladder program conversion unit 14 executes the encryption toward the programmable controller 30A performed by the engineering tool 21A in the first embodiment.
  • the protected FB execution format file 211 is generated by encrypting the FB execution format file 210.
  • the protected FB execution format file 211 is obtained by converting the FB execution format file 210 into a file that can be operated only by the programmable controller 30A.
  • the license distribution server 10B collectively distributes the generated protected ladder program 47 and the FB execution format file 210 to the user.
  • FIG. 8 is a diagram for explaining a process performed by the engineering tool according to the second embodiment.
  • the engineering tool 21B has the same function as the engineering tool 21A described in the first embodiment, and restores the protected ladder program 47 in the same procedure as the first embodiment. That is, the engineering tool 21 B restores the ladder program 45 from the protected ladder program 47 by the same process as the process when restoring the ladder program 42 from the distribution file data 101. Specifically, the ladder program inverse conversion unit 22 of the engineering tool 21B inversely converts the protected ladder program 47 into the ladder program 45 before encryption. Thereby, the engineering tool 21 B can obtain the same restored result as that of the first embodiment for the ladder program 45 not having the FB 46.
  • the engineering tool 21B can perform editing on the program part excluding the FB 46.
  • the simulation can not be performed as it is. The process when the engineering tool 21B executes a simulation will be described later.
  • the execution format conversion unit 23 converts the ladder program 45 generated by the ladder program reverse conversion unit 22 by the reverse conversion into the execution format file 220.
  • the execution format file 220 here is a file that can be interpreted by the programmable controller 30A as a program and executed like the execution format file 201 of the first embodiment.
  • the ladder program reconversion unit 24 converts the executable file 220 generated by the conversion of the executable format conversion unit 23 into a protected executable file 221 that can operate only for the programmable controller 30A associated with the license certificate 41. Convert. Similar to the protected executable file 202 of the first embodiment, the protected executable file 221 here is a file protected so that it can not operate with a programmable controller other than the programmable controller 30A.
  • the ladder program reconversion unit 24 combines the protected execution format file 221 and the protected FB execution format file 211. As a result, the ladder program reconversion unit 24 can obtain a protected execution format file 202 equivalent to the protected execution format file 202 described in the first embodiment. Thereafter, the development PC 20 sends the protected executable file 202 to the programmable controller 30A, and the programmable controller 30A controls the controlled device using the protected executable file 202.
  • FIG. 9 is a diagram for explaining a simulation process of FB executed by the engineering tool according to the second embodiment.
  • the simulation process of the FB 46 refers to executing the FB 46 on software.
  • the engineering tool 21B includes an FB commission processing unit 91.
  • the programmable controller 30B is used instead of the programmable controller 30A.
  • the programmable controller 30 ⁇ / b> B includes an FB commission calculation unit 92 in addition to the functions of the programmable controller 30 ⁇ / b> A.
  • the FB commission processing unit 91 has a function of outputting a simulation request to the programmable controller 30B when the simulation request of the FB 46 is input by the user. Therefore, when the simulation request of the FB 46 is instructed by the user, the FB commission processing unit 91 receives this instruction and sends the accepted simulation request to the FB commission calculation unit 92 of the programmable controller 30B.
  • the FB commission calculation unit 92 calculates the process in the FB 46 based on the simulation request from the FB commission processing unit 91. That is, the FB commission calculation unit 92 calculates the output of the FB 46 corresponding to the input from the FB commission processing unit 91.
  • the FB commission calculation unit 92 sends the calculation result, which is a simulation result of the process using the FB 46, to the FB commission processing unit 91.
  • the FB commissioning processing unit 91 requests a simulation using the FB 46 to the FB commissioning calculating unit 92
  • the FB commissioning calculating unit 92 executes the simulation using the FB 46 and outputs the execution result to the FB commissioning processing unit 91.
  • the engineering tool 21B can execute a simulation without restoring the FB 46 in the engineering environment.
  • the ladder program unauthorized use preventing system 1 performs the FB 46 It is possible to develop the ladder program 42 of the programmable controller 30B without restoring in the engineering environment. Thereby, the ladder program unauthorized use prevention system 1 can realize strong protection for the FB 46 of the package product.
  • the FB 46 is protected and thus the FB 46 is not restored. Thereby, even if the engineering tool 21B is reverse-engineered, it is possible to prevent the information on the key used for restoration and the FB 46 from being taken away.
  • the configuration shown in the above embodiment shows an example of the contents of the present invention, and can be combined with another known technique, and one of the configurations is possible within the scope of the present invention. Parts can be omitted or changed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Automation & Control Theory (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Programmable Controllers (AREA)
  • Storage Device Security (AREA)

Abstract

ラダープログラム不正利用防止システムにおいて、ベンダ秘密鍵を用いて暗号化が実行されたラダープログラムに、ベンダ秘密鍵と対をなすベンダ公開鍵を用いて復号を行い、復号が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、コントローラ公開鍵を用いて暗号化を実行するエンジニアリングツールと、コントローラ公開鍵を用いて暗号化が実行されたラダープログラムに、コントローラ公開鍵と対をなすコントローラ秘密鍵を用いて復号を行ない、コントローラ秘密鍵を用いて復号したラダープログラムを実行するプログラマブルコントローラと、を備える。

Description

ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ
 本発明は、プログラマブルコントローラを動作させるためのラダープログラムを配布するラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラに関する。
 プログラマブルコントローラに搭載されるラダープログラムは、重要な設計資産であるので、悪意ある第3者からセキュリティ機能によって保護する必要がある。一般的な保護方法の一例は、プログラマブルコントローラによるラダープログラムの読み出しあるいは書き込みを、パスワードによってアクセス制御する方法である。
 また、特許文献1は、ラダープログラム上で専用の保護命令を用いるプログラム保護方法を開示している。このプログラム保護方法は、保護命令と保護終了命令とによって、ラダープログラムにおける保護区間を自由に設定している。
特開平10-124308号公報
 しかしながら、上記従来の技術である特許文献1は、プログラマブルコントローラおよび周辺機器を組み合わせたパッケージ製品に含まれるラダープログラム、すなわちプログラマブルコントローラにインストールされるラダープログラムを適切に保護することができなかった。これは、特許文献1に記載の技術が、ラダープログラム単体の保護しかできず、パッケージ製品に含まれるラダープログラムを特定のプログラマブルコントローラに限定して動作するように保護していないからである。このため、ラダープログラムの利用権限が許諾されていないプログラマブルコントローラであってもラダープログラムを不正に利用できてしまうという問題があった。
 本発明は、上記に鑑みてなされたものであって、例えば、販売するパッケージ製品に含めて配布されたラダープログラムの不正な利用を防ぐことができるラダープログラム不正利用防止システムを得ることを目的とする。
 上述した課題を解決し、目的を達成するために、本発明は、ラダープログラム不正利用防止システムにおいて、第1の秘密情報を用いて第1の変換が行われたラダープログラムに、第1の秘密情報と対をなす第1の公開情報を用いて第1の逆変換を行い、第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行うエンジニアリングツールを備える。また、本発明のラダープログラム不正利用防止システムにおいて、第2の変換が行われたラダープログラムに、第2の公開情報と対をなす第2の秘密情報を用いて第2の逆変換を行ない、第2の逆変換が行われたラダープログラムを実行するプログラマブルコントローラを備える。
 本発明にかかるラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラは、配布されたラダープログラムの不正な利用を防ぐことができるという効果を奏する。
実施の形態1にかかるラダープログラム不正利用防止システムの構成を示す図 実施の形態1にかかるライセンス配信サーバの構成例を示すブロック図 実施の形態1にかかるエンジニアリングツールの機能構成例を示すブロック図 実施の形態1にかかるプログラマブルコントローラの構成例を示すブロック図 実施の形態1にかかるラダープログラム不正利用防止システムの動作処理手順を示すフローチャート 実施の形態1にかかるラダープログラム不正利用防止システムのハードウェア構成を示す図 実施の形態2に係るライセンス配信サーバが実行する処理を説明するための図 実施の形態2に係るエンジニアリングツールが実行する処理を説明するための図 実施の形態2にかかるエンジニアリングツールが実行するFB(Function Block)のシミュレーション処理を説明するための図
 以下に、本発明の実施の形態にかかるラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラを図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
実施の形態1.
 図1は、実施の形態1にかかるラダープログラム不正利用防止システムの構成を示す図である。実施の形態1に係るラダープログラム不正利用防止システム1は、パッケージ製品に含まれるラダープログラム42をプログラマブルコントローラ30Aなどの外部機器に配布するシステムである。パッケージ製品は、販売元であるベンダが、購入者であるユーザに提供する製品群である。パッケージ製品は、プログラマブルコントローラ30Aと、周辺機器と、これらを制御するためのラダープログラム42とが組み合わされてセットでユーザに販売される。周辺機器の例は、IO(Input/Output)ユニットまたは電源ユニットである。
 ラダープログラム不正利用防止システム1は、パッケージ製品のベンダが管理するライセンス配信サーバ10Aと、パッケージ製品の一部であるプログラマブルコントローラ30Aと、ユーザがプログラマブルコントローラ30Aを動作させるための開発を行う際に用いられる開発PC(Personal Computer)20とを備えている。そして、ライセンス配信サーバ10A、開発PC20およびプログラマブルコントローラ30Aは、インターネット2に接続されている。また、開発PC20およびプログラマブルコントローラ30Aは、ユーザが有しているネットワークに接続されている。なお、プログラマブルコントローラ30Aは、インターネット2に接続されていなくてもよい。また、図1では、ラダープログラム不正利用防止システム1内にインターネット2を図示しているが、ラダープログラム不正利用防止システム1は、インターネット2を含んでいない。
 ライセンス配信サーバ10Aの一例は、サーバ用PCである。また、開発PC20は、プログラマブルコントローラ30Aが用いるラダープログラム42を開発するためのエンジニアリングツール21Aを備えている。
 エンジニアリングツール21Aは、ラダープログラム42を開発するためのエンジニアリング環境の一例であり、エンジニアリング環境ソフトウェアとも呼ばれる。アプリケーションプログラムであるエンジニアリングツール21Aは、開発PC20にインストールされ、開発PC20上で動作する。
 プログラマブルコントローラ30Aは、センサまたはロボットといった図示しない被制御機器に接続されており、ラダープログラム42を用いて被制御機器を制御する。プログラマブルコントローラ30Aは、プログラマブルロジックコントローラ(PLC:Programmable Logic Controller)とも呼ばれる。
 パッケージ製品のベンダは、プログラマブルコントローラ30Aが被制御機器を制御するためのラダープログラム42を、DVD(Digital Versatile Disc)といった可搬性の記録媒体43に書き込んでユーザに配布する。また、ベンダは、インターネット2経由で、または郵便といった手段で、ユーザに対してライセンス証書41を配布する。ライセンス証書41は、特定のプログラマブルコントローラであるプログラマブルコントローラ30Aに対応するライセンスの情報である。ライセンス証書41は、ライセンスの有効期限と、パッケージ製品内で利用可能な機能の情報と、発行先のプログラマブルコントローラ30Aに割り当てられた公開鍵とを、含んでいる。
 実施の形態1のラダープログラム不正利用防止システム1は、ラダープログラム42の配布処理、ユーザのエンジニアリング環境における編集処理、ユーザのエンジニアリング環境におけるシミュレーション処理およびプログラマブルコントローラ30Aへの組み込み処理を総合的に保護する。
 ここで、パッケージ製品に含まれるラダープログラム42の保護を実現するうえでの制約条件について説明する。
 <1>販売したパッケージ製品に含まれるラダープログラム42は、特定のプログラマブルコントローラ30Aで動作可能であり、且つプログラマブルコントローラ30A以外の他のプログラマブルコントローラでは動作しない。
 <2>ラダープログラム不正利用防止システム1は、ユーザに対して個別にライセンス証書41を発行する。
 <3>ラダープログラム不正利用防止システム1は、ユーザに対して、ラダープログラム42を記録媒体43を介して配信、またはインターネット2を介したオンラインによって配信する。
 <4>保護対象のラダープログラム42内の一部は、エンジニアリングツール21Aによってユーザが編集する可能性がある。
 <5>保護対象のラダープログラム42は、ファンクションブロックと呼ばれるユーザが編集できない部分を有している。
 <6>ユーザは、ラダープログラム42をエンジニアリングツール21A上で仮想的に動作させる処理であるシミュレーションを実行する可能性がある。
 ラダープログラム不正利用防止システム1では、上述の<1>から<6>の制約条件のもとで、ライセンス配信サーバ10Aが、ユーザに固有のラダープログラム42をユーザ毎に配布する。なお、<3>で示したように、ラダープログラム不正利用防止システム1は、ラダープログラム42をオンラインで配信してもよいが、以下の説明では、ライセンス配信サーバ10Aがラダープログラム42を、記録媒体43を介して配信する場合について説明する。
 ここで、ラダープログラム不正利用防止システム1が用いる公開鍵および秘密鍵について説明しておく。ラダープログラム不正利用防止システム1は、第1の秘密情報であるベンダ秘密鍵Vsec、エンジニアリング環境公開鍵Epub_1、第1の公開情報であるベンダ公開鍵Vpub、エンジニアリング環境秘密鍵Esec、第2の公開情報であるコントローラ公開鍵Cpub、エンジニアリング環境公開鍵Epub_2、および第2の秘密情報であるコントローラ秘密鍵Csecを用いる。
<ベンダ秘密鍵Vsec>
 ベンダ秘密鍵Vsecは、ベンダであるライセンス配信サーバ10Aが用いる秘密鍵である。ライセンス配信サーバ10Aは、エンジニアリングツール21Aにラダープログラム42を提供する際にベンダ秘密鍵Vsecを用いる。具体的には、ライセンス配信サーバ10Aは、ラダープログラム42を暗号化する際にベンダ秘密鍵Vsecを用いる。
<エンジニアリング環境公開鍵Epub_1>
 エンジニアリング環境公開鍵Epub_1は、ライセンス配信サーバ10Aが用いる公開鍵である。ライセンス配信サーバ10Aは、エンジニアリングツール21Aにラダープログラム42を提供する際にエンジニアリング環境公開鍵Epub_1を用いる。具体的には、ライセンス配信サーバ10Aは、ラダープログラム42を暗号化する際にエンジニアリング環境公開鍵Epub_1を用いる。
<ベンダ公開鍵Vpub>
 ベンダ公開鍵Vpubは、エンジニアリングツール21Aが用いる公開鍵である。エンジニアリングツール21Aは、ライセンス配信サーバ10Aからラダープログラム42を取得する際にベンダ公開鍵Vpubを用いる。具体的には、エンジニアリングツール21Aは、暗号化されたラダープログラム42である後述の配布用ファイルデータ101を復号する際にベンダ公開鍵Vpubを用いる。ベンダ公開鍵Vpubは、ベンダ秘密鍵Vsecと対をなしている。このため、ベンダ公開鍵Vpubおよびベンダ秘密鍵Vsecの関係は、ライセンス配信サーバ10Aとエンジニアリングツール21Aとの間で共有されているともいえる。
<エンジニアリング環境秘密鍵Esec>
 エンジニアリング環境秘密鍵Esecは、エンジニアリングツール21Aが用いる秘密鍵である。エンジニアリングツール21Aは、ライセンス配信サーバ10Aからラダープログラム42を取得する際にエンジニアリング環境秘密鍵Esecを用いる。具体的には、エンジニアリングツール21Aは、配布用ファイルデータ101を復号する際にエンジニアリング環境秘密鍵Esecを用いる。エンジニアリング環境秘密鍵Esecは、エンジニアリング環境公開鍵Epub_1と対をなしている。このため、エンジニアリング環境秘密鍵Esecおよびエンジニアリング環境公開鍵Epub_1の関係は、ライセンス配信サーバ10Aとエンジニアリングツール21Aとの間で共有されているともいえる。
<コントローラ公開鍵Cpub>
 コントローラ公開鍵Cpubは、エンジニアリングツール21Aが用いる公開鍵である。エンジニアリングツール21Aは、プログラマブルコントローラ30Aにラダープログラム42を提供する際にコントローラ公開鍵Cpubを用いる。具体的には、エンジニアリングツール21Aは、エンジニアリングツール21Aが復号した後述の実行形式ファイル201をプログラマブルコントローラ30Aでしか動作ができないファイルに変換する際にコントローラ公開鍵Cpubを用いる。
<エンジニアリング環境公開鍵Epub_2>
 エンジニアリング環境公開鍵Epub_2は、プログラマブルコントローラ30Aが用いる公開鍵である。プログラマブルコントローラ30Aは、エンジニアリングツール21Aからラダープログラム42の実行形式ファイル201を取得する際にエンジニアリング環境公開鍵Epub_2を用いる。具体的には、プログラマブルコントローラ30Aは、暗号化された実行形式ファイル201である後述の保護済み実行形式ファイル202を復号する際にエンジニアリング環境公開鍵Epub_2を用いる。
<コントローラ秘密鍵Csec>
 コントローラ秘密鍵Csecは、プログラマブルコントローラ30Aが用いる秘密鍵である。プログラマブルコントローラ30Aは、エンジニアリングツール21Aからラダープログラム42の実行形式ファイル201を取得する際にコントローラ秘密鍵Csecを用いる。具体的には、プログラマブルコントローラ30Aは、保護されたファイルである保護済み実行形式ファイル202を復号する際にコントローラ秘密鍵Csecを用いる。コントローラ秘密鍵Csecは、コントローラ公開鍵Cpubと対をなしている。このため、コントローラ秘密鍵Csecおよびコントローラ公開鍵Cpubの関係は、エンジニアリングツール21Aとプログラマブルコントローラ30Aとの間で共有されているともいえる。
 販売元であるベンダは、購入者であるユーザに前述のパッケージ製品を販売する際に、エンジニアリングツール21Aおよびプログラマブルコントローラ30Aに秘密鍵といった秘密情報および公開鍵といった公開情報をインストールしておく。この場合、ライセンス配信サーバ10Aは、特定のエンジニアリングツール21Aに前述の第2の秘密情報および前述の第1の公開情報を配信し、特定のプログラマブルコントローラ30Aに前述の第2の公開情報を配信する。
 つぎに、ライセンス配信サーバ10Aの構成例について説明する。図2は、実施の形態1にかかるライセンス配信サーバの構成例を示すブロック図である。ライセンス配信サーバ10Aは、公開鍵と秘密鍵とのペアである公開鍵ペアを格納する公開鍵ペアDB(Database)11と、ユーザの情報であるユーザ情報を格納するユーザDB12とを備えている。
 また、ライセンス配信サーバ10Aは、ライセンス証書41を生成するライセンス証書生成部13と、ラダープログラム42を配布用ファイルデータ101に変換するラダープログラム変換部14とを備えている。配布用ファイルデータ101は、ベンダがユーザに提供するラダープログラム42が暗号化されたファイルである。したがって、配布用ファイルデータ101は、ライセンス配信サーバ10Aによって保護されたラダープログラム42のファイルデータである。また、ライセンス配信サーバ10Aは、ベンダ秘密鍵Vsec、エンジニアリング環境公開鍵Epub_1およびラダープログラム42を格納する図示しないメモリを備えている。
 公開鍵ペアDB11は、プログラマブルコントローラ30Aと、これ以外の他のプログラマブルコントローラとを含む複数のプログラマブルコントローラに割り当てられた公開鍵ペアを格納する。換言すると、公開鍵ペアDB11は、プログラマブルコントローラ30A毎に、公開鍵と秘密鍵とのペアを格納する。公開鍵ペアDB11に格納される公開鍵は、後述するコントローラ公開鍵Cpubであり、公開鍵ペアDB11に格納される秘密鍵は、後述するコントローラ秘密鍵Csecである。
 ユーザDB12は、パッケージ製品のライセンスを購入したユーザと、ユーザに納品したパッケージ製品内のプログラマブルコントローラ30Aの機台情報とが対応付けられたユーザ情報を格納する。
 ライセンス生成部であるライセンス証書生成部13は、公開鍵ペアDB11およびユーザDB12に接続されている。ライセンス証書生成部13は、公開鍵ペアDB11内の公開鍵ペアと、ユーザDB12内のユーザ情報に基づいて、ユーザへのライセンス証書41を生成する。具体的には、ライセンス証書生成部13は、ライセンス証書41の発行先となるプログラマブルコントローラ30Aの機台情報をユーザDB12内から読み出す。また、ライセンス証書生成部13は、読み出した機台情報に割り当てられた公開鍵ペアを公開鍵ペアDB11内から読み出す。また、ライセンス証書生成部13は、ライセンスの有効期限と、パッケージ製品内で利用可能な機能の情報と、発行先のプログラマブルコントローラ30Aに割り当てられた公開鍵ペアとを、ライセンス証書41に付与する。
 ライセンス証書生成部13は、ライセンス証書41を、メールといった電子媒体かあるいは紙媒体でユーザに配布する。ライセンス証書生成部13は、ライセンス証書41を電子媒体で配布する場合には、ライセンス証書41のファイルを添付したメールを生成する。これにより、ライセンス配信サーバ10Aは、ライセンス証書生成部13が生成したメールをユーザに送信する。また、ライセンス配信サーバ10Aは、ライセンス証書41を紙媒体で配布する場合には、ライセンス証書41を紙媒体にプリントアウトするためのデータを図示しないプリンターに出力する。この後、プリンターは、ライセンス証書41をプリントアウトすることによって、紙媒体のライセンス証書41が完成する。そして、紙媒体のライセンス証書41は、郵便といった配送手段によってユーザに届けられる。
 ラダープログラム変換部14は、ベンダ秘密鍵Vsecおよびエンジニアリング環境公開鍵Epub_1を用いて、ラダープログラム42に第1の変換を実行する。具体的には、ラダープログラム変換部14は、鍵導出関数であるKDF(Key Derivation Function)と、暗号化関数Encと、改ざん検出コード生成関数MACとを用いて、ラダープログラム42を、ユーザに配布するための配布用ファイルデータ101に変換する。KDFは、暗号鍵を導出する関数であり、暗号化関数Encは、暗号化を行う関数である。また、改ざん検出コード生成関数MACは、メッセージ認証用の改ざん検出コードを生成する関数である。
 ラダープログラム変換部14は、KDFによって、ベンダ秘密鍵Vsecおよびエンジニアリング環境公開鍵Epub_1から、暗号化用の鍵および改ざん検出用の鍵を生成する。ラダープログラム変換部14が生成する暗号化用の鍵は、暗号化用の一時鍵であり、改ざん検出用の鍵は、改ざん検出用の一時鍵である。ベンダ秘密鍵Vsecは、パッケージ製品を提供するベンダに固有の秘密鍵である。また、エンジニアリング環境公開鍵Epub_1は、ベンダ秘密鍵Vsecを秘匿するための暗号化鍵である。また、ラダープログラム変換部14は、生成した暗号化用の鍵および改ざん検出用の鍵を用いて、ラダープログラム42を配布用ファイルデータ101に変換する。ラダープログラム42は、ユーザが編集してもよい部分と、ユーザが編集することを想定していない機能単位であるファンクションブロックとの集合である。ライセンス配信サーバ10Aは、配布用ファイルデータ101を記録媒体43に書き込む。
 ここで、ライセンス配信サーバ10Aの動作について説明する。ライセンス配信サーバ10Aは、公開鍵ペアDB11に公開鍵ペアを格納し、ユーザDB12にユーザ情報を格納しておく。
 ライセンス証書生成部13は、公開鍵ペアDB11内の公開鍵ペアと、ユーザDB12内のユーザ情報に基づいて、ユーザへのライセンス証書41を生成する。このとき、ライセンス証書生成部13は、ユーザに固有の機台情報をユーザDB12内から読み出し、ライセンス証書生成部13は、読み出した機台情報に割り当てられた公開鍵ペアを公開鍵ペアDB11内から読み出す。そして、ライセンス証書生成部13は、ライセンスの有効期限と、パッケージ製品内で利用可能な機能の情報と、発行先のプログラマブルコントローラ30Aに割り当てられた公開鍵ペアとを、ライセンス証書41に付与する。
 また、ラダープログラム変換部14は、鍵導出関数であるKDFを用いて、ベンダ秘密鍵Vsecおよびエンジニアリング環境公開鍵Epub_1から、暗号化用の鍵および改ざん検出用の鍵を生成する。すなわち、ベンダ秘密鍵Vsecをu、エンジニアリング環境公開鍵Epub_1をVとすると、ラダープログラム変換部14は、暗号化鍵Kencおよび改ざん検出用鍵Kmacを用いて、以下の処理(1)を実行する。なお、以下の説明では、ビット連結を||で表す。
 KDF(uV)→Kmac||Kenc・・・(1)
 なお、実施の形態1で説明する各処理内の「→」は、データの導出処理を表している。具体的には、ラダープログラム不正利用防止システム1は、「→」の左側に示した処理を実行することによって、「→」の右側に示したデータを導出する。
 なお、ベンダ公開鍵VpubをU、エンジニアリング環境秘密鍵Esecをvとすると、uV=vUの関係が成立するものとする。また、KDFの例は、RFC2898, PKCS #5: Password-Based Cryptography Specification Version 2.0で用いられるKDFある。
 この後、ラダープログラム変換部14は、ファンクションブロックを含んだラダープログラム42に、暗号化処理と改ざん検出コードの付加処理とを行う。すなわち、ラダープログラム42をmとすると、ラダープログラム変換部14は、暗号化関数Encおよび改ざん検出コード生成関数MACを用いて、以下の処理(2)および処理(3)を実行する。
 Enc(Kenc,m)→c・・・(2)
 MAC(Kmac,c)→tag・・・(3)
 ここでのcは、ラダープログラム42を暗号化鍵で暗号化したものであり、tagは、cに改ざん検出用の鍵を用いて生成した改ざん検出コードである。そして、ラダープログラム変換部14は、c||tagを配布用ファイルデータ101とする。そして、ライセンス配信サーバ10Aは、配布用ファイルデータ101を記録媒体43に書き込む。この後、配布用ファイルデータ101が格納された記録媒体43が、ベンダによってユーザに配布される。
 つぎに、エンジニアリングツール21Aの機能構成例について説明する。図3は、実施の形態1にかかるエンジニアリングツールの機能構成例を示すブロック図である。エンジニアリングツール21Aは、ライセンス配信サーバ10Aから配布された配布用ファイルデータ101を暗号化前のラダープログラム42に逆変換するラダープログラム逆変換部22と、ラダープログラム42を実行形式ファイル201に変換する実行形式変換部23とを備えている。実行形式ファイル201は、プログラマブルコントローラ30Aがプログラムであると解釈して実行可能なファイルである。また、エンジニアリングツール21Aは、実行形式ファイル201を、プログラマブルコントローラ30Aでしか動作できないファイルに変換するラダープログラム再変換部24を備えている。
 また、エンジニアリングツール21Aは、ベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを記憶する図示しないメモリを備えている。また、エンジニアリングツール21Aは、ライセンス配信サーバ10Aから配布された配布用ファイルデータ101およびライセンス証書41を、開発PC20内のメモリから読み出して種々の処理を実行する。ベンダ公開鍵Vpubは、パッケージ製品を提供するベンダに固有の公開鍵であり、ベンダ秘密鍵Vsecと対をなす。すなわち、ベンダ秘密鍵Vsecで暗号化されたデータは、ベンダ公開鍵Vpubで復号が可能である。また、エンジニアリング環境秘密鍵Esecは、エンジニアリングツール21Aに埋め込まれたエンジニアリングツール21Aに固有の秘密鍵であり、エンジニアリング環境公開鍵Epub_2と対をなす。すなわち、エンジニアリング環境秘密鍵Esecで暗号化されたデータは、エンジニアリング環境公開鍵Epub_2で復号が可能である。
 ラダープログラム逆変換部22は、ベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを用いて、配布用ファイルデータ101に第1の逆変換を実行する。すなわち、ラダープログラム逆変換部22は、エンジニアリングツール21Aに予め埋め込まれているベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを用いて、逆変換である復号を実行する。具体的には、ラダープログラム逆変換部22は、ベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを用いて、配布用ファイルデータ101を暗号化前のラダープログラム42に逆変換する。すなわち、ラダープログラム逆変換部22は、暗号化されたラダープログラム42を復号することによって、ラダープログラム42を得る。ラダープログラム逆変換部22は、逆変換によって生成したラダープログラム42を実行形式変換部23に送る。
 実行形式変換部23は、ラダープログラム逆変換部22が逆変換によって生成したラダープログラム42を実行形式ファイル201に変換する。実行形式変換部23は、変換によって生成した実行形式ファイル201をラダープログラム再変換部24に送る。
 ラダープログラム再変換部24は、コントローラ公開鍵Cpubを用いて、実行形式ファイル201に第2の変換を実行する。具体的には、ラダープログラム再変換部24は、実行形式変換部23が変換によって生成した実行形式ファイル201を、ライセンス証書41によって対応付けされたプログラマブルコントローラ30Aでしか動作ができないファイルに変換する。ライセンス証書41によって対応付けされたプログラマブルコントローラ30Aでしか動作ができないファイルが、保護済み実行形式ファイル202である。保護済み実行形式ファイル202は、プログラマブルコントローラ30A以外のプログラマブルコントローラでは動作できないように保護されている。また、保護済み実行形式ファイル202は、プログラマブルコントローラ30Aがプログラムであると解釈して実行可能なファイルである。エンジニアリングツール21Aは、ラダープログラム再変換部24が生成した保護済み実行形式ファイル202をプログラマブルコントローラ30Aに送る。
 ここで、エンジニアリングツール21Aの動作について説明する。開発PC20は、ライセンス配信サーバ10Aから配布された配布用ファイルデータ101およびライセンス証書41を図示しないメモリ内に格納しておく。
 この後、エンジニアリングツール21Aのラダープログラム逆変換部22は、ライセンス配信サーバ10Aから配布された配布用ファイルデータ101をメモリ内から読み出して暗号化前のラダープログラム42に逆変換する。このとき、ラダープログラム逆変換部22は、エンジニアリングツール21Aに予め埋め込まれているベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを用いて、逆変換である復号を実行する。すなわち、正しいベンダ公開鍵VpubをU、エンジニアリング環境秘密鍵Esecをvと表記した場合、ラダープログラム逆変換部22は、以下の処理(4)を実行する。
 KDF(vU)→Kmac||Kenc・・・(4)
 これにより、ラダープログラム逆変換部22は、ライセンス配信サーバ10Aが生成した暗号化鍵Kencおよび改ざん検出用鍵Kmacを再生成することができる。そして、ラダープログラム逆変換部22は、以下の処理(5)を実行する。
 MAC(Kmac,c)→tag・・・(5)
 この場合において、cが改ざんされていなければ、配布用ファイルデータ101に付加されたtagは、処理(5)によって算出されたtagに一致する。したがって、これらのtagが不一致の場合、ラダープログラム逆変換部22は、ラダープログラム42を不正なプログラムであると判定する。一方、これらのtagが一致した場合、ラダープログラム逆変換部22は、ラダープログラム42を正常なプログラムであると判定する。すなわち、ラダープログラム逆変換部22は、tagが一致した場合には、配布用ファイルデータ101をプログラマブルコントローラ30Aで動作可能なファイルであると判定する。そして、ラダープログラム逆変換部22は、配布用ファイルデータ101は改ざんされていないものとみなす。さらに、ラダープログラム逆変換部22は、Encに対応した復号関数であるDecを用いて、以下の処理(6)を実行する。
 Dec(Kenc,c)→m・・・(6)
 これにより、ラダープログラム逆変換部22は、ラダープログラム42を復号する。このように、エンジニアリングツール21Aがラダープログラム42を復号によって復元するので、ユーザはラダープログラム42への編集およびラダープログラム42のシミュレーションを実行することが可能となる。なお、この段階で特許文献1である特開平10-124308号公報に記載されたセキュリティ機能を行ってもよい。
 ラダープログラム逆変換部22は、復号したラダープログラム42を実行形式変換部23に送る。そして、実行形式変換部23は、ラダープログラム42を実行形式ファイル201に変換し、ラダープログラム再変換部24に送る。
 この後、ラダープログラム再変換部24は、実行形式ファイル201を、ライセンス証書41によって対応付けされたプログラマブルコントローラ30Aに限り動作が可能なファイルに変換する。すなわち、ライセンス証書41に記載されたコントローラ公開鍵CpubをP1と表記し、エンジニアリング環境秘密鍵Esecをvと表記した場合、ラダープログラム再変換部24は、改ざん検出用鍵K’macおよび暗号化鍵K’encを用いて、以下の処理(7)から処理(9)を実行する。なお、ここでは、実行形式ファイル201をm’と表記している。また、c’は、実行形式ファイル201を暗号化鍵K’encで暗号化したものであり、tag’は、c’に改ざん検出用鍵K’macを用いて生成した改ざん検出コードである。
 KDF(vP1)→K’mac||K’enc・・・(7)
 Enc(K’enc,m’)→c’・・・(8)
 MAC(K’mac,c’)→tag’・・・(9)
 ラダープログラム再変換部24は、c’||tag’を保護済み実行形式ファイル202に設定する。そして、開発PC20は、保護済み実行形式ファイル202をプログラマブルコントローラ30Aに出力する。
 つぎに、プログラマブルコントローラ30Aの構成例について説明する。図4は、実施の形態1にかかるプログラマブルコントローラの構成例を示すブロック図である。プログラマブルコントローラ30Aは、保護済み実行形式ファイル202を動作させることができるか否かを判定するとともに、動作させることができる場合には保護済み実行形式ファイル202を制御実行部32で実行可能な実行形式ファイル201に逆変換する判定部であるラダープログラム逆変換部31を備えている。ラダープログラム逆変換部31は、エンジニアリング環境公開鍵Epub_2およびコントローラ秘密鍵Csecを用いて、保護済み実行形式ファイル202に第2の逆変換を実行する。また、プログラマブルコントローラ30Aは、実行形式ファイル201を用いて被制御機器を制御する制御実行部32を備えている。
 また、プログラマブルコントローラ30Aは、エンジニアリング環境公開鍵Epub_2およびコントローラ秘密鍵Csecを記憶する図示しないメモリを備えている。エンジニアリング環境公開鍵Epub_2は、エンジニアリング環境秘密鍵Esecと対をなす。
 ここで、プログラマブルコントローラ30Aの動作について説明する。プログラマブルコントローラ30Aは、エンジニアリングツール21Aから送られてくる保護済み実行形式ファイル202を図示しないメモリ内に格納しておく。
 この後、プログラマブルコントローラ30Aのラダープログラム逆変換部31は、エンジニアリングツール21Aから送られてきた保護済み実行形式ファイル202を、制御実行部32で実行可能な実行形式ファイル201に逆変換する。このとき、ラダープログラム逆変換部31は、プログラマブルコントローラ30A内のメモリに格納されているエンジニアリング環境公開鍵Epub_2およびコントローラ秘密鍵Csecを用いて、逆変換である復号を実行する。すなわち、正しいエンジニアリング環境公開鍵EpubをVと表記し、コントローラ秘密鍵Csecをp1と表記する場合、vP1=p1Vが成立するので、ラダープログラム逆変換部31は、以下の処理(10)を実行する。
 KDF(p1V)→K’mac||K’enc・・・(10)
 これにより、ラダープログラム逆変換部31は、エンジニアリングツール21Aで生成した暗号化鍵であるK’encおよび改ざん検出用の鍵であるK’macを再生成する。そして、ラダープログラム逆変換部31は、以下の処理(11)を実行する。
 MAC(K’mac,c’)→tag’・・・(11)
 この場合において、c’が改ざんされていなければ、保護済み実行形式ファイル202に付加されたtag’は処理(11)によって算出されたtag’に一致する。したがって、これらのtag’が不一致の場合、ラダープログラム逆変換部31は、ラダープログラム42を不正なプログラムであると判定する。一方、これらのtag’が一致した場合、ラダープログラム逆変換部31は、ラダープログラム42を正常なプログラムであると判定する。すなわち、ラダープログラム逆変換部31は、tag’が一致した場合には、保護済み実行形式ファイル202をプログラマブルコントローラ30Aで動作可能なファイルであると判定する。そして、ラダープログラム逆変換部31は、保護済み実行形式ファイル202は改ざんされていないものとみなす。さらに、ラダープログラム逆変換部31は、Encに対応した復号関数であるDecを用いて、以下の処理(12)を実行する。
 Dec(K’enc,c’)→m’・・・(12)
 これにより、ラダープログラム逆変換部31は、保護済み実行形式ファイル202を復号する。ラダープログラム逆変換部31は、復号によって復元した実行形式ファイル201を制御実行部32に送る。そして、制御実行部32は、実行形式ファイル201を用いて被制御機器を制御する。このように、プログラマブルコントローラ30Aが実行形式ファイル201を復元するので、プログラマブルコントローラ30Aは、実行形式ファイル201を実行することが可能となる。
 なお、エンジニアリングツール21Aが、プログラマブルコントローラ30Aにファイルの読み出し要求を行った場合、プログラマブルコントローラ30Aは、復号した実行形式ファイル201ではなく、保護済み実行形式ファイル202をエンジニアリングツール21Aに出力する。
 つぎに、ラダープログラム不正利用防止システム1の動作処理手順について説明する。図5は、実施の形態1にかかるラダープログラム不正利用防止システムの動作処理手順を示すフローチャートである。
<ライセンス配信サーバ10A>
 ステップS10において、ライセンス配信サーバ10Aは、ベンダ秘密鍵Vsecであるuと、エンジニアリング環境公開鍵Epub_1であるVとを用いてラダープログラム42を暗号化し、これにより、配布用ファイルデータ101を生成する。また、ステップS20において、ライセンス配信サーバ10Aは、公開鍵ペアDB11内の公開鍵ペアと、ユーザDB12内のユーザ情報に基づいて、ユーザへのライセンス証書41を生成する。
<エンジニアリングツール21A>
 エンジニアリングツール21Aは、ライセンス配信サーバ10Aが生成した配布用ファイルデータ101を、ライセンス配信サーバ10Aから取得する。そして、ステップS30において、エンジニアリングツール21Aは、ライセンス配信サーバ10Aが生成した配布用ファイルデータ101のtagを、ベンダ公開鍵VpubであるUと、エンジニアリング環境秘密鍵Esecであるvとを用いてチェックする。
 そして、ステップS35において、エンジニアリングツール21Aは、配布用ファイルデータ101に付加されたtagと、エンジニアリングツール21Aが算出したtagとが一致するか否かを判定する。
 配布用ファイルデータ101に付加されたtagと、エンジニアリングツール21Aが算出したtagとが不一致である場合、すなわちステップS35においてNoの場合、エンジニアリングツール21Aは、配布用ファイルデータ101が改ざんされたものとみなして異常終了する。
 一方、配布用ファイルデータ101に付加されたtagと、エンジニアリングツール21Aが算出したtagとが一致する場合、すなわちステップS35においてYesの場合、ステップS40において、エンジニアリングツール21Aは、配布用ファイルデータ101を復号する。これにより、エンジニアリングツール21Aは、ラダープログラム42を復元する。そして、エンジニアリングツール21Aがラダープログラム42を復元することにより、ラダープログラム42の編集およびラダープログラム42のシミュレーションが実行可能となる。ここでシミュレーションとは、ラダープログラム42をソフトウェア上で実行することをいう。
 エンジニアリングツール21Aは、ラダープログラム42を復元した後、ステップS50において、ラダープログラム42をプログラマブルコントローラ30Aに組み込むため、ラダープログラム42を実行形式に変換する。具体的には、エンジニアリングツール21Aは、ラダープログラム42を実行形式ファイル201に変換する。
 また、エンジニアリングツール21Aは、ライセンス配信サーバ10Aが生成したライセンス証書41を、ライセンス配信サーバ10Aから取得する。そして、ステップS60において、エンジニアリングツール21Aは、ライセンス証書41に登録されたコントローラ公開鍵CpubであるP1を用いて実行形式ファイル201を暗号化し、これにより保護済み実行形式ファイル202を生成する。
<プログラマブルコントローラ30A>
 プログラマブルコントローラ30Aは、エンジニアリングツール21Aから保護済み実行形式ファイル202を取得する。そして、ステップS70において、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202のtag’を、エンジニアリング環境公開鍵Epub_2であるVと、コントローラ秘密鍵Csecであるp1とを用いてチェックする。
 そして、ステップS75において、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202に付加されたtag’と、プログラマブルコントローラ30Aが算出したtag’とが一致するか否かを判定する。
 保護済み実行形式ファイル202に付加されたtag’と、プログラマブルコントローラ30Aが算出したtag’とが不一致である場合、すなわちステップS75においてNoの場合、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202が改ざんされた、または保護済み実行形式ファイル202はプログラマブルコントローラ30A以外のプログラマブルコントローラへのファイルであるとみなして異常終了する。
 一方、保護済み実行形式ファイル202に付加されたtag’と、プログラマブルコントローラ30Aが算出したtag’とが一致する場合、すなわちステップS75においてYesの場合、ステップS80において、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202を記憶する。
 そして、ステップS90において、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202を復号する。これにより、エンジニアリングツール21Aは、実行形式ファイル201を復元する。そして、ステップS100において、プログラマブルコントローラ30Aは、実行形式ファイル201を用いて被制御機器への制御を実行し、正常終了する。
 つぎに、ラダープログラム不正利用防止システム1のハードウェア構成について説明する。図6は、実施の形態1にかかるラダープログラム不正利用防止システムのハードウェア構成を示す図である。
 ラダープログラム不正利用防止システム1のライセンス配信サーバ10Aは、プロセッサ61と、記憶部62と、通信部63と、出力部64とを備えている。ライセンス配信サーバ10Aでは、プロセッサ61、記憶部62、通信部63および出力部64が、バスに接続されている。
 通信部63は、インターネット2を介して開発PC20と通信を行なう。なお、通信部63は、開発PC20以外の装置と通信を行なってもよい。ライセンス配信サーバ10Aがライセンス証書41をオンラインでユーザに提供する場合、通信部63は、ライセンス証書41を、インターネット2を介して開発PC20に送信する。また、ライセンス配信サーバ10Aが配布用ファイルデータ101をオンラインでユーザに提供する場合、通信部63は、配布用ファイルデータ101を、インターネット2を介して開発PC20に送信する。
 出力部64は、ライセンス配信サーバ10A内の情報を外部装置に出力する。ライセンス配信サーバ10Aがライセンス証書41を郵便でユーザに提供する場合、出力部64は、ライセンス証書生成部13が生成したライセンス証書41のデータをプリンターといった外部装置に出力する。また、出力部64は、DVDといった可搬性の記録媒体43にライセンス証書41のデータを書き込んでもよい。また、出力部64は、配布用ファイルデータ101を記録媒体43に書き込んでもよい。
 記憶部62は、公開鍵ペアDB11およびユーザDB12を含んでいる。また、記憶部62は、ベンダ秘密鍵Vsec、エンジニアリング環境公開鍵Epub_1およびラダープログラム42を記憶する。また、記憶部62は、ライセンス証書生成部13の処理を実行するプログラムおよびラダープログラム変換部14の処理を実行するプログラムを記憶する。また、記憶部62は、ライセンス証書生成部13の処理結果であるライセンス証書41と、ラダープログラム変換部14の処理結果である配布用ファイルデータ101とを記憶する。
 ライセンス配信サーバ10Aは、プロセッサ61が、記憶部62で記憶されている、ライセンス配信サーバ10Aとして動作するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、ライセンス配信サーバ10Aの手順または方法をコンピュータに実行させるものであるともいえる。実施の形態1のプロセッサ61は、種々のプログラムを用いて、ライセンス証書生成部13およびラダープログラム変換部14の処理を実行する。記憶部62は、プロセッサ61が各種処理を実行する際の一時メモリにも使用される。
 このように、プロセッサ61が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な(non-transitory)記録媒体を有するコンピュータプログラムプロダクトである。プロセッサ61が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
 なお、ライセンス配信サーバ10Aのうち、ライセンス証書生成部13またはラダープログラム変換部14の機能を、専用のハードウェアで実現してもよい。また、ライセンス配信サーバ10Aの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
 ラダープログラム不正利用防止システム1の開発PC20は、プロセッサ71と、記憶部72と、通信部73と、出力部74と、入力部75とを備えている。開発PC20では、プロセッサ71、記憶部72、通信部73、出力部74および入力部75が、バスに接続されている。入力部75は、外部から送られてくる配布用ファイルデータ101およびライセンス証書41を受け付けて記憶部72に入力する。
 通信部73は、通信部63と同様の機能を有しており、出力部74は、出力部64と同様の機能を有している。通信部73は、インターネット2を介してライセンス配信サーバ10Aと通信を行なう。なお、通信部73は、ライセンス配信サーバ10A以外の装置と通信を行なってもよい。ライセンス配信サーバ10Aがライセンス証書41をオンラインでユーザに提供する場合、通信部73は、ライセンス証書41を、インターネット2を介して受信する。また、ライセンス配信サーバ10Aが配布用ファイルデータ101をオンラインでユーザに提供する場合、通信部73は、配布用ファイルデータ101を、インターネット2を介して受信する。
 出力部74は、保護済み実行形式ファイル202をUSB(Universal Serial Bus)メモリといった可搬性の記録媒体43に書き込む。この場合、保護済み実行形式ファイル202の書き込まれた記録媒体43がプログラマブルコントローラ30Aに接続される。そして、プログラマブルコントローラ30Aは、記録媒体43に書き込まれた保護済み実行形式ファイル202を読み出す。なお、通信部73が、保護済み実行形式ファイル202をプログラマブルコントローラ30Aに送信してもよい。この場合、通信部73が行う通信の一例は、イーサーネット(登録商標)通信である。出力部74または通信部73を介してプログラマブルコントローラ30Aに送られてきた保護済み実行形式ファイル202は、プログラマブルコントローラ30A内の後述する記憶部82内に格納される。
 プロセッサ71は、プロセッサ61と同様の機能を有しており、記憶部72は、記憶部62と同様の機能を有している。記憶部72は、ベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecを記憶する。ここでのベンダ公開鍵Vpubおよびエンジニアリング環境秘密鍵Esecは、ユーザが編集できない情報である。また、記憶部72は、配布用ファイルデータ101およびライセンス証書41を記憶する。また、記憶部72は、ラダープログラム逆変換部22、実行形式変換部23およびラダープログラム再変換部24の処理を実行する各プログラムを記憶する。また、記憶部72は、ラダープログラム逆変換部22の処理結果であるラダープログラム42と、実行形式変換部23の処理結果である実行形式ファイル201と、ラダープログラム再変換部24の処理結果である保護済み実行形式ファイル202とを記憶する。
 開発PC20は、プロセッサ71が、記憶部72で記憶されている、開発PC20として動作するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、開発PC20の手順または方法をコンピュータに実行させるものであるともいえる。開発PC20は、プロセッサ71によって、アプリケーションプログラムであるエンジニアリングツール21Aを実行する。実施の形態1のプロセッサ71は、開発PC20が有するプログラムの1つであるエンジニアリングツール21Aを用いて、ラダープログラム逆変換部22、実行形式変換部23およびラダープログラム再変換部24の処理を実行する。記憶部72は、プロセッサ71が各種処理を実行する際の一時メモリにも使用される。
 このように、プロセッサ71が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な記録媒体を有するコンピュータプログラムプロダクトである。プロセッサ71が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
 なお、開発PC20のうち、ラダープログラム逆変換部22、実行形式変換部23またはラダープログラム再変換部24の機能を、専用のハードウェアで実現してもよい。また、開発PC20について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
 ラダープログラム不正利用防止システム1のプログラマブルコントローラ30Aは、プロセッサ81と、記憶部82と、通信部83と、制御信号出力部86とを備えている。プログラマブルコントローラ30Aでは、プロセッサ81、記憶部82、通信部83および制御信号出力部86が、バスに接続されている。
 通信部83は、通信部73との間で通信を行なう。通信部83は、通信部73から送られてくる保護済み実行形式ファイル202を受信する。通信部83が行う通信の一例は、イーサーネット通信である。通信部83は、通信部73から受信した保護済み実行形式ファイル202を記憶部82内に格納する。なお、通信部83は、開発PC20以外の装置と通信を行なってもよい。制御信号出力部86は、実行形式ファイル201に対応する指示を被制御機器に出力する。制御信号出力部86が被制御機器に出力する信号値が、前述の制御実行部32の実行結果である。
 プロセッサ81は、プロセッサ61,71と同様の機能を有しており、記憶部82は、記憶部62,72と同様の機能を有している。記憶部82は、エンジニアリング環境公開鍵Epub_2、コントローラ秘密鍵Csecおよび保護済み実行形式ファイル202を記憶する。また、記憶部82は、ラダープログラム逆変換部31および制御実行部32の処理を実行する各プログラムを記憶する。また、記憶部82は、ラダープログラム逆変換部31の処理結果である実行形式ファイル201を記憶する。
 プログラマブルコントローラ30Aは、プロセッサ81が、記憶部82で記憶されている、プログラマブルコントローラ30Aとして動作するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、プログラマブルコントローラ30Aの手順または方法をコンピュータに実行させるものであるともいえる。実施の形態1のプロセッサ81は、プログラムを用いて、ラダープログラム逆変換部31および制御実行部32の処理を実行する。記憶部82は、プロセッサ81が各種処理を実行する際の一時メモリにも使用される。
 このように、プロセッサ81が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な記録媒体を有するコンピュータプログラムプロダクトである。プロセッサ81が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
 なお、プログラマブルコントローラ30Aのうち、ラダープログラム逆変換部31または制御実行部32の機能を、専用のハードウェアで実現してもよい。また、プログラマブルコントローラ30Aの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
 プロセッサ61,71,81は、CPU(中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSP(Digital Signal Processor)ともいう)、システムLSI(Large Scale Integration)などである。
 記憶部62,72,82は、RAM(Random Access Memory)、ROM(Read Only Memory)またはフラッシュメモリといった不揮発性または揮発性の半導体メモリであってもよいし、磁気ディスクまたはフレキシブルディスクであってもよい。
 プログラマブルコントローラ30A、ラダープログラム42および周辺機器を組み合わせたパッケージ製品は、セットでユーザに提供されることで、ユーザが用いる製造ラインの立ち上げ期間を短縮することができるものである。このようなパッケージ製品は、ラダープログラム42の使用制限が行なわれないと、不正なユーザが他人のラダープログラム42を利用できることになる。このため、実施の形態1では、ライセンス配信サーバ10Aが、ユーザ毎の暗号化を行うとともに、エンジニアリングツール21Aがプログラマブルコントローラ30A毎の暗号化を行っている。これにより、実施の形態1では、上述した制約条件下でパッケージ製品のセキュリティを担保することができる。これにより、パッケージ製品におけるラダープログラム42の不正な、閲覧、編集、コピーおよび実行を防止することが可能となる。
 このように、ラダープログラム不正利用防止システム1は、ライセンス配信サーバ10Aが保護対象であるラダープログラム42を、正規のエンジニアリングツール21Aに限り復号ができる形式に変換した配布用ファイルデータ101を生成している。これにより、正規のエンジニアリングツール21Aに配布する配布用ファイルデータ101が漏えいした場合であっても、配布用ファイルデータ101内のラダープログラム42を守ることができる。
 また、エンジニアリングツール21Aは、ライセンス配信サーバ10Aから配信されたライセンス証書41を用いた暗号化を行うので、ラダープログラム42を特定のプログラマブルコントローラ30Aに限り動作可能な形式に変換することができる。これにより、エンジニアリングツール21Aは、ラダープログラム42が別のプログラマブルコントローラで不正に利用されるといった悪用からラダープログラム42を守ることができる。
 このように、実施の形態1では、エンジニアリングツール21Aが、エンジニアリング環境公開鍵Epub_1を用いて暗号化されたラダープログラム42に種々の処理を実行した後、プログラマブルコントローラ30Aでは動作し且つ他のプログラマブルコントローラでは動作しないようコントローラ公開鍵Cpubを用いて暗号化している。そして、プログラマブルコントローラ30Aが、コントローラ公開鍵Cpubを用いて暗号化されたラダープログラム42を動作させることができるか否かを判定している。これにより、プログラマブルコントローラ30A用に作成されたラダープログラム42は、プログラマブルコントローラ30Aで動作可能となり、他のプログラマブルコントローラでは動作できない。したがって、ライセンス配信サーバ10Aから配布されたラダープログラム42の不正な利用を防ぐことが可能になる。
 また、エンジニアリングツール21Aは、プログラマブルコントローラ30A用のライセンス証書41に基づいて、ラダープログラム42を暗号化している。このため、プログラマブルコントローラ30A以外の他のプログラマブルコントローラが、ラダープログラム42を復号することを防止できる。
 また、エンジニアリングツール21Aが、ラダープログラム42が不正なプログラムであるか否かを判断し、プログラマブルコントローラ30Aが、ラダープログラム42が不正なプログラムであるか否かを判断しているので、ラダープログラム42の改ざんを容易に見つけることが可能となる。
実施の形態2.
 つぎに、図7から図9を用いて、実施の形態2について説明する。実施の形態2では、ラダープログラム42の不正な利用を防ぐために、後述のライセンス配信サーバ10Bが、ファンクションブロックをラダープログラム42から分離して暗号化し、ファンクションブロックが後述のエンジニアリングツール21Bで復元されないようにする。
 図7は、実施の形態2に係るライセンス配信サーバが実行する処理を説明するための図である。ライセンス配信サーバ10Bは、実施の形態1で説明したライセンス配信サーバ10Aと同様の機能を有している。ライセンス配信サーバ10Bのラダープログラム変換部14は、ファンクションブロックであるFB46を含んだラダープログラム42を、FB46を含まないラダープログラム45と、FB46とに分離する。換言すると、ラダープログラム変換部14は、ラダープログラム42を、第1および第2のセグメントに分離する。
 ラダープログラム変換部14は、実施の形態1と同様の方法によって、第1のセグメントであるラダープログラム45を、保護済みラダープログラム47に変換する。具体的には、ラダープログラム変換部14は、ラダープログラム42から配布用ファイルデータ101を生成した際の処理と同様の処理によって、ラダープログラム45を保護済みラダープログラム47に変換する。
 また、ラダープログラム変換部14は、第2のセグメントであるFB46を実行形式に変換することによって、FB実行形式ファイル210を生成する。FB実行形式ファイル210は、FB46がプログラマブルコントローラ30Aで動作可能な実行形式に変換されたファイルである。換言すると、FB実行形式ファイル210は、実施の形態1の実行形式ファイル201と同様に、プログラマブルコントローラ30Aがプログラムであると解釈して実行可能なファイルである。
 さらに、ラダープログラム変換部14は、FB実行形式ファイル210に対して、プログラマブルコントローラ30Aに向けた暗号化を実行する。すなわち、実施の形態1ではエンジニアリングツール21Aが実施していたプログラマブルコントローラ30Aに向けた暗号化を、実施の形態2では、ラダープログラム変換部14が実行する。このように、実施の形態2では、ライセンス配信サーバ10Bが、ラダープログラム42をユーザに配信する際に、FB実行形式ファイル210を暗号化することによって、保護済みFB実行形式ファイル211を生成する。保護済みFB実行形式ファイル211は、FB実行形式ファイル210をプログラマブルコントローラ30Aに限り動作が可能なファイルに変換したものである。ライセンス配信サーバ10Bは、生成した保護済みラダープログラム47およびFB実行形式ファイル210をまとめてユーザに配布する。
 図8は、実施の形態2に係るエンジニアリングツールが実行する処理を説明するための図である。エンジニアリングツール21Bは、実施の形態1で説明したエンジニアリングツール21Aと同様の機能を有しており、保護済みラダープログラム47を実施の形態1と同様の手順で復元する。すなわち、エンジニアリングツール21Bは、配布用ファイルデータ101からラダープログラム42を復元した際の処理と同様の処理によって、保護済みラダープログラム47からラダープログラム45を復元する。具体的には、エンジニアリングツール21Bのラダープログラム逆変換部22が、保護済みラダープログラム47を暗号化前のラダープログラム45に逆変換する。これにより、エンジニアリングツール21Bは、FB46を有していないラダープログラム45については、実施の形態1と同様の復元結果を得ることができる。この結果、エンジニアリングツール21Bは、FB46を除いたプログラム部分については、編集を実施することが可能となる。なお、エンジニアリングツール21Bは、FB46が保護された形式のままであるので、このままではシミュレーションを実行できない。エンジニアリングツール21Bがシミュレーションを実行する際の処理については、後述する。
 また、実行形式変換部23は、ラダープログラム逆変換部22が逆変換によって生成したラダープログラム45を実行形式ファイル220に変換する。ここでの実行形式ファイル220は、実施の形態1の実行形式ファイル201と同様に、プログラマブルコントローラ30Aがプログラムであると解釈して実行可能なファイルである。さらに、ラダープログラム再変換部24は、実行形式変換部23が変換によって生成した実行形式ファイル220を、ライセンス証書41によって対応付けされたプログラマブルコントローラ30Aに限り動作が可能な保護済み実行形式ファイル221に変換する。ここでの保護済み実行形式ファイル221は、実施の形態1の保護済み実行形式ファイル202と同様に、プログラマブルコントローラ30A以外のプログラマブルコントローラでは動作できないように保護されたファイルである。
 ラダープログラム再変換部24は、保護済み実行形式ファイル221と、保護済みFB実行形式ファイル211とを結合する。これにより、ラダープログラム再変換部24は、実施の形態1で説明した保護済み実行形式ファイル202と等価の保護済み実行形式ファイル202を得ることができる。この後、開発PC20は、保護済み実行形式ファイル202をプログラマブルコントローラ30Aに送り、プログラマブルコントローラ30Aは、保護済み実行形式ファイル202を用いて被制御機器を制御する。
 ここで、実施の形態2のエンジニアリングツール21Bが実行するFB46のシミュレーション処理について説明する。図9は、実施の形態2にかかるエンジニアリングツールが実行するFBのシミュレーション処理を説明するための図である。ここでFB46のシミュレーション処理とは、ソフトウェア上でFB46を実行することをいう。
 実施の形態2にかかるエンジニアリングツール21Bは、FB委託処理部91を備えている。また、エンジニアリングツール21BがFB46のシミュレーション処理を実行する場合、プログラマブルコントローラ30Aの代わりにプログラマブルコントローラ30Bが用いられる。プログラマブルコントローラ30Bは、プログラマブルコントローラ30Aが備える機能に加えて、FB委託計算部92を備えている。
 FB委託処理部91は、FB46のシミュレーション要求がユーザによって入力されると、シミュレーション要求をプログラマブルコントローラ30Bに出力する機能を有している。したがって、FB委託処理部91は、FB46のシミュレーション要求がユーザによって指示されると、この指示を受付けるとともに、受付けたシミュレーション要求をプログラマブルコントローラ30BのFB委託計算部92に送る。
 FB委託計算部92は、FB委託処理部91からのシミュレーション要求に基づいてFB46での処理を計算する。すなわち、FB委託計算部92は、FB委託処理部91からの入力に対応するFB46の出力を計算する。FB委託計算部92は、FB46を用いた処理のシミュレーション結果である計算結果をFB委託処理部91に送る。このように、FB委託処理部91は、FB46を用いたシミュレーションをFB委託計算部92に要求し、FB委託計算部92は、FB46を用いたシミュレーションを実行して実行結果をFB委託処理部91に返す。
 これにより、エンジニアリングツール21Bは、エンジニアリング環境内でFB46を復元することなく、シミュレーションを実行することが可能となる。このような、FB委託処理部91およびFB委託計算部92の機能が実施の形態1で説明したラダープログラム不正利用防止システム1に追加されることにより、ラダープログラム不正利用防止システム1は、FB46をエンジニアリング環境で復元することなく、プログラマブルコントローラ30Bのラダープログラム42を開発することが可能となる。これにより、ラダープログラム不正利用防止システム1は、パッケージ製品のFB46について強固な保護を実現することができる。
 このように、実施の形態2によれば、エンジニアリングツール21Bがラダープログラム45を復元した場合であっても、FB46は保護されているのでFB46は復元されない。これにより、エンジニアリングツール21Bがリバースエンジニアリングされても、復元に用いた鍵の情報およびFB46が奪取されることを防止できる。
 以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
 1 ラダープログラム不正利用防止システム、10A,10B ライセンス配信サーバ、11 公開鍵ペアDB、12 ユーザDB、13 ライセンス証書生成部、14 ラダープログラム変換部、20 開発PC、21A,21B エンジニアリングツール、22 ラダープログラム逆変換部、23 実行形式変換部、24 ラダープログラム再変換部、30A,30B プログラマブルコントローラ、31 ラダープログラム逆変換部、32 制御実行部、41 ライセンス証書、42,45 ラダープログラム、91 FB委託処理部、92 FB委託計算部、101 配布用ファイルデータ、201,220 実行形式ファイル、202,221 保護済み実行形式ファイル、210 FB実行形式ファイル、211 保護済みFB実行形式ファイル。

Claims (14)

  1.  第1の秘密情報を用いて第1の変換が行われたラダープログラムに、前記第1の秘密情報と対をなす第1の公開情報を用いて第1の逆変換を行い、前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行うエンジニアリングツールと、
     前記第2の変換が行われたラダープログラムに、前記第2の公開情報と対をなす第2の秘密情報を用いて第2の逆変換を行ない、前記第2の逆変換が行われたラダープログラムを実行するプログラマブルコントローラと、
     を備えることを特徴とするラダープログラム不正利用防止システム。
  2.  前記エンジニアリングツールは、前記特定のプログラマブルコントローラに対応するライセンスの情報に基づいて、前記第2の変換を行う、
     ことを特徴とする請求項1に記載のラダープログラム不正利用防止システム。
  3.  前記エンジニアリングツールは、前記第1の変換が行われたラダープログラムが不正なプログラムであるか否かを判断し、
     前記プログラマブルコントローラは、前記第2の変換が行われたラダープログラムが不正なプログラムであるか否かを判断する、
     ことを特徴とする請求項1または2に記載のラダープログラム不正利用防止システム。
  4.  前記エンジニアリングツールは、前記第1の変換が行われたラダープログラムに第1の逆変換を行い、前記第1の逆変換によって復元された前記ラダープログラムに前記第2の変換を行う、
     ことを特徴とする請求項1から3のいずれか1つに記載のラダープログラム不正利用防止システム。
  5.  前記プログラマブルコントローラは、前記第2の変換が行われたラダープログラムに第2の逆変換を行うことによって前記ラダープログラムを復元し、復元した前記ラダープログラムに前記判断を実行し、前記ラダープログラムを動作させることができる場合には、復元した前記ラダープログラムを用いて被制御機器を制御する、
     ことを特徴とする請求項3に記載のラダープログラム不正利用防止システム。
  6.  前記ラダープログラムは、第1および第2のセグメントを含むとともに、前記第1のセグメントは前記エンジニアリングツールで復号が可能なよう暗号化され、前記第2のセグメントは、前記エンジニアリングツールでは復号できず前記プログラマブルコントローラで復号が可能なよう暗号化されている、
     ことを特徴とする請求項1から5のいずれか1つに記載のラダープログラム不正利用防止システム。
  7.  前記エンジニアリングツールは、前記第2のセグメントを用いたシミュレーションを前記プログラマブルコントローラに要求し、
     前記プログラマブルコントローラは、前記第2のセグメントを用いたシミュレーションを実行して実行結果を前記エンジニアリングツールに返す、
     ことを特徴とする請求項6に記載のラダープログラム不正利用防止システム。
  8.  前記第1の変換は、前記ライセンスの情報を生成して前記エンジニアリングツールに提供するライセンス配信サーバで行われる、
     ことを特徴とする請求項2に記載のラダープログラム不正利用防止システム。
  9.  前記ライセンスの情報は、前記第2の公開情報と前記第2の秘密情報とのペアである公開鍵ペアを用いて作成された情報である、
     ことを特徴とする請求項2に記載のラダープログラム不正利用防止システム。
  10.  ラダープログラムに、第1の秘密情報を用いて第1の変換を行うライセンス配信サーバと、
     前記第1の変換が行われたラダープログラムに、前記第1の秘密情報と対をなす第1の公開情報を用いて第1の逆変換を行い、前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行うエンジニアリングツールと、
     前記第2の変換が行われたラダープログラムに、前記第2の公開情報と対をなす第2の秘密情報を用いて第2の逆変換を行ない、前記第2の逆変換が行われたラダープログラムを実行するプログラマブルコントローラと、
     を備えることを特徴とするラダープログラム不正利用防止システム。
  11.  エンジニアリングツールが、第1の秘密情報を用いて第1の変換が行われたラダープログラムに、第1の公開情報を用いて第1の逆変換を行う第1の変換ステップと、
     前記エンジニアリングツールが、前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行う第2の変換ステップと、
     プログラマブルコントローラが、前記第2の変換が行われたラダープログラムに、第2の秘密情報を用いて第2の逆変換を行い、前記第2の逆変換が行われたラダープログラムを実行する実行ステップと、
     を含むことを特徴とするラダープログラム不正利用防止方法。
  12.  第1の秘密情報を用いて第1の変換が行われたラダープログラムに第1の公開情報を用いて第1の逆変換を行うラダープログラム逆変換部と、
     前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、前記特定のプログラマブルコントローラが保有する第2の秘密情報と対をなす第2の公開情報を用いて第2の変換を行うラダープログラム再変換部と、
     を備えることを特徴とするエンジニアリングツール。
  13.  ラダープログラムに、第1の秘密情報を用いて第1の変換を行うラダープログラム変換部と、
     特定のプログラマブルコントローラに対応するライセンスの情報を生成するライセンス生成部と、
     を備え、
     前記第1の変換が行われたラダープログラムおよび前記ライセンスの情報は、前記特定のプログラマブルコントローラに接続されたエンジニアリングツールに提供され、
     前記エンジニアリングツールは、前記第1の変換が行われたラダープログラムに、前記第1の秘密情報と対をなす第1の公開情報を用いて第1の逆変換を行い、前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行う、
     ことを特徴とするライセンス配信サーバ。
  14.  第1の秘密情報を用いて第1の変換が行われたラダープログラムに、前記第1の秘密情報と対をなす第1の公開情報を用いて第1の逆変換を行い、前記第1の逆変換が行われたラダープログラムに、特定のプログラマブルコントローラでは動作し且つ他のプログラマブルコントローラでは動作しないよう、第2の公開情報を用いて第2の変換を行うエンジニアリングツールから、前記第2の変換が行われたラダープログラムを取得すると、前記第2の変換が行われたラダープログラムに、前記第2の公開情報と対をなす第2の秘密情報を用いて第2の逆変換を行うラダープログラム逆変換部と、
     前記第2の逆変換が行われたラダープログラムを実行する制御実行部と、
     を備えることを特徴とするプログラマブルコントローラ。
PCT/JP2017/023222 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ WO2018235268A1 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
PCT/JP2017/023222 WO2018235268A1 (ja) 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ
JP2018513385A JP6381857B1 (ja) 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール
CN201780079903.5A CN110114772B (zh) 2017-06-23 2017-06-23 梯形图程序非法利用防止系统、方法及工程工具
DE112017005726.4T DE112017005726T5 (de) 2017-06-23 2017-06-23 System zur Verhinderung von nicht autorisierter Kontaktplanprogramm-Verwendung, Verfahren zur Verhinderung von nicht autorisierter Kontaktplanprogramm-Verwendung, Engineering-Werkzeug, Lizenzabgabe-Server und programmierbare Steuerung
KR1020197017727A KR102052489B1 (ko) 2017-06-23 2017-06-23 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴
US16/463,386 US20190362085A1 (en) 2017-06-23 2017-06-23 Ladder program unauthorized-use prevention system and ladder program unauthorized-use prevention method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/023222 WO2018235268A1 (ja) 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ

Publications (1)

Publication Number Publication Date
WO2018235268A1 true WO2018235268A1 (ja) 2018-12-27

Family

ID=63354853

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/023222 WO2018235268A1 (ja) 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、エンジニアリングツール、ライセンス配信サーバおよびプログラマブルコントローラ

Country Status (6)

Country Link
US (1) US20190362085A1 (ja)
JP (1) JP6381857B1 (ja)
KR (1) KR102052489B1 (ja)
CN (1) CN110114772B (ja)
DE (1) DE112017005726T5 (ja)
WO (1) WO2018235268A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190095593A1 (en) * 2017-09-25 2019-03-28 Hewlett Packard Enterprise Development Lp License information based on baseboard management controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004164491A (ja) * 2002-11-15 2004-06-10 Matsushita Electric Ind Co Ltd プログラム更新方法およびサーバ
JP2008067162A (ja) * 2006-09-08 2008-03-21 Pit:Kk 制御システムおよびシステムの制御方法
WO2009028137A1 (ja) * 2007-08-28 2009-03-05 Panasonic Corporation 鍵端末装置、暗号処理用lsi、固有鍵生成方法及びコンテンツシステム
JP2013239036A (ja) * 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325261A (en) * 1979-10-09 1982-04-20 Emerson Electric Co. Pulsed DC constant current magnetic flowmeter
US5321829A (en) * 1990-07-20 1994-06-14 Icom, Inc. Graphical interfaces for monitoring ladder logic programs
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
JP3688827B2 (ja) 1996-10-25 2005-08-31 三菱電機株式会社 プログラマブルコントローラの周辺装置
US20030061349A1 (en) * 2001-09-24 2003-03-27 George Lo Method and system for collaboratively developing programming code for programmable controllers
US7724907B2 (en) * 2002-11-05 2010-05-25 Sony Corporation Mechanism for protecting the transfer of digital content
US20050172132A1 (en) * 2004-01-30 2005-08-04 Chen Sherman (. Secure key authentication and ladder system
KR101053104B1 (ko) * 2009-10-28 2011-08-02 엘에스산전 주식회사 전산기기 소프트웨어 테스트 방법 및 시스템
JP5404463B2 (ja) * 2010-02-12 2014-01-29 三菱電機株式会社 制御装置及び管理装置
US8756041B2 (en) * 2011-03-07 2014-06-17 Rockwell Automation Technologies, Inc. Industrial simulation using redirected I/O module configurations
EP2506174B1 (en) * 2011-03-30 2019-01-09 Irdeto B.V. Enabling a software application to be executed on a hardware device
GB201305734D0 (en) * 2013-03-28 2013-05-15 Irdeto Bv Enabling a content receiver to access encrypted content
CN103529749B (zh) * 2013-10-29 2017-07-25 威海麦科电气技术有限公司 一种plc可编程控制器的梯形图程序开发系统及方法
CN104573423B (zh) * 2015-01-26 2017-10-31 无锡信捷电气股份有限公司 一种plc软硬件结合加密保护方法
US10372104B2 (en) * 2015-02-27 2019-08-06 Rockwell Automation Technologies, Inc. Industrial automation control system content protection
KR101625338B1 (ko) * 2015-10-20 2016-05-27 홍익대학교세종캠퍼스산학협력단 악성 경유지를 탐지하는 시스템 및 방법
WO2017108727A1 (en) * 2015-12-23 2017-06-29 Nagravision S.A. Secure provisioning, by a client device, cryptographic keys for exploiting services provided by an operator

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004164491A (ja) * 2002-11-15 2004-06-10 Matsushita Electric Ind Co Ltd プログラム更新方法およびサーバ
JP2008067162A (ja) * 2006-09-08 2008-03-21 Pit:Kk 制御システムおよびシステムの制御方法
WO2009028137A1 (ja) * 2007-08-28 2009-03-05 Panasonic Corporation 鍵端末装置、暗号処理用lsi、固有鍵生成方法及びコンテンツシステム
JP2013239036A (ja) * 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法

Also Published As

Publication number Publication date
US20190362085A1 (en) 2019-11-28
CN110114772A (zh) 2019-08-09
KR102052489B1 (ko) 2019-12-05
JPWO2018235268A1 (ja) 2019-06-27
CN110114772B (zh) 2020-08-28
JP6381857B1 (ja) 2018-08-29
DE112017005726T5 (de) 2019-08-14
KR20190084117A (ko) 2019-07-15

Similar Documents

Publication Publication Date Title
TWI364682B (en) Method and system for secure system-on-a-chip architecture for multimedia data processing
JP4764639B2 (ja) ファイルの暗号化・復号化プログラム、プログラム格納媒体
JP5793709B2 (ja) 鍵実装システム
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
KR20070085257A (ko) 하드웨어 식별에 기초한 디지털권 관리 방법을 이용한 전자소프트웨어 배포 방법 및 시스템
JP2008009631A (ja) 記憶装置及び記憶方法
WO2020075396A1 (ja) 推論装置、推論方法及び推論プログラム
CN107925574B (zh) 秘密数据的安全编程
US20130173923A1 (en) Method and system for digital content security cooperation
JP2007257626A (ja) 臨時ライセンスを用いてコンテンツを臨時に使用する方法及び装置
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
JP4541901B2 (ja) 保護情報の使用を権限付与する携帯用権限付与装置及び関連方法
JP6796861B2 (ja) アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
JP4714582B2 (ja) 工作機械の誤起動を防止するための方法
CA2473122A1 (en) Method and device for protecting information against unauthorised use
JP2011150524A (ja) ソフトウェア実行システム
JP6381857B1 (ja) ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール
CN103605919A (zh) 软件认证文件生成方法和装置、软件认证方法和装置
CN109150813B (zh) 一种设备的验证方法及装置
JP2008505385A (ja) セキュリティユニットおよびそのようなセキュリティユニットを備える保護システムならびにデータを保護するための方法
JP2005303370A (ja) 半導体チップ、起動プログラム、半導体チッププログラム、記憶媒体、端末装置、及び情報処理方法
JP2019121884A (ja) 集積回路、制御装置、情報配信方法及び情報配信システム
JP5997604B2 (ja) ソフトウェア不正使用防止機能を備えた情報処理装置、ソフトウェア不正使用防止方法及びプログラム
KR100367094B1 (ko) 컴퓨터 프로그램 온라인 유통 방법
JP2020202535A (ja) 安全製造に適用される制御システム及び制御方法

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2018513385

Country of ref document: JP

Kind code of ref document: A

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

Ref document number: 17914134

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20197017727

Country of ref document: KR

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 17914134

Country of ref document: EP

Kind code of ref document: A1