JP6381857B1 - ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール - Google Patents

ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール Download PDF

Info

Publication number
JP6381857B1
JP6381857B1 JP2018513385A JP2018513385A JP6381857B1 JP 6381857 B1 JP6381857 B1 JP 6381857B1 JP 2018513385 A JP2018513385 A JP 2018513385A JP 2018513385 A JP2018513385 A JP 2018513385A JP 6381857 B1 JP6381857 B1 JP 6381857B1
Authority
JP
Japan
Prior art keywords
ladder program
programmable controller
program
engineering tool
ladder
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2018513385A
Other languages
English (en)
Other versions
JPWO2018235268A1 (ja
Inventor
崇 湧口
崇 湧口
鈴木 大輔
大輔 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6381857B1 publication Critical patent/JP6381857B1/ja
Publication of JPWO2018235268A1 publication Critical patent/JPWO2018235268A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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 (12)

  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の変換を行うラダープログラム再変換部と、
    を備えることを特徴とするエンジニアリングツール。
JP2018513385A 2017-06-23 2017-06-23 ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール Active JP6381857B1 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP6381857B1 true JP6381857B1 (ja) 2018-08-29
JPWO2018235268A1 JPWO2018235268A1 (ja) 2019-06-27

Family

ID=63354853

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018513385A Active JP6381857B1 (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 홍익대학교세종캠퍼스산학협력단 악성 경유지를 탐지하는 시스템 및 방법
SG11201804616VA (en) * 2015-12-23 2018-07-30 Nagravision Sa 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
KR20190084117A (ko) 2019-07-15
JPWO2018235268A1 (ja) 2019-06-27
CN110114772A (zh) 2019-08-09
US20190362085A1 (en) 2019-11-28
DE112017005726T5 (de) 2019-08-14
CN110114772B (zh) 2020-08-28
WO2018235268A1 (ja) 2018-12-27
KR102052489B1 (ko) 2019-12-05

Similar Documents

Publication Publication Date Title
CN103221961B (zh) 包括用于保护多用户敏感代码和数据的架构的方法和装置
JP4764639B2 (ja) ファイルの暗号化・復号化プログラム、プログラム格納媒体
TWI364682B (en) Method and system for secure system-on-a-chip architecture for multimedia data processing
US9081726B2 (en) Controller to be incorporated in storage medium device, storage medium device, system for manufacturing storage medium device, and method for manufacturing storage medium device
JP5793709B2 (ja) 鍵実装システム
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
JP2008009631A (ja) 記憶装置及び記憶方法
JP2007257626A (ja) 臨時ライセンスを用いてコンテンツを臨時に使用する方法及び装置
CN107925574B (zh) 秘密数据的安全编程
JP6381857B1 (ja) ラダープログラム不正利用防止システム、ラダープログラム不正利用防止方法、およびエンジニアリングツール
JP2005174359A (ja) 保護情報の使用を権限付与する携帯用権限付与装置及び関連方法
JP2011150524A (ja) ソフトウェア実行システム
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
KR20020079748A (ko) 판독을 제어하는 마이크로프로세서를 포함한 컴퓨터 판독매체 및 이러한 매체와 통신하도록 설정된 컴퓨터
JP5759827B2 (ja) メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法
JP2010092202A (ja) Usbインタフェースを用いた記憶装置
JP2018180854A (ja) アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
JP2007282064A (ja) データ処理装置、データ処理方法、記憶媒体、プログラム
JP2005303370A (ja) 半導体チップ、起動プログラム、半導体チッププログラム、記憶媒体、端末装置、及び情報処理方法
JP4592337B2 (ja) データ記憶装置
JP5997604B2 (ja) ソフトウェア不正使用防止機能を備えた情報処理装置、ソフトウェア不正使用防止方法及びプログラム
US11748459B2 (en) Reducing software release date tampering by incorporating software release date information into a key exchange protocol
JP2008252290A (ja) 画像処理装置および画像処理装置のプログラム処理方法
JP2011164858A (ja) ライセンス設定システムおよびライセンス設定方法
JP2011053909A (ja) パスワードを安全管理する制御機能を組み込んだ情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180312

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180312

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180607

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180731

R150 Certificate of patent or registration of utility model

Ref document number: 6381857

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250