KR102052489B1 - 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴 - Google Patents

래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴 Download PDF

Info

Publication number
KR102052489B1
KR102052489B1 KR1020197017727A KR20197017727A KR102052489B1 KR 102052489 B1 KR102052489 B1 KR 102052489B1 KR 1020197017727 A KR1020197017727 A KR 1020197017727A KR 20197017727 A KR20197017727 A KR 20197017727A KR 102052489 B1 KR102052489 B1 KR 102052489B1
Authority
KR
South Korea
Prior art keywords
ladder program
programmable controller
engineering tool
program
inverse transform
Prior art date
Application number
KR1020197017727A
Other languages
English (en)
Other versions
KR20190084117A (ko
Inventor
다카시 유구치
다이스케 스즈키
Original Assignee
미쓰비시덴키 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미쓰비시덴키 가부시키가이샤 filed Critical 미쓰비시덴키 가부시키가이샤
Publication of KR20190084117A publication Critical patent/KR20190084117A/ko
Application granted granted Critical
Publication of KR102052489B1 publication Critical patent/KR102052489B1/ko

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

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

래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴{LADDER PROGRAM UNAUTHORIZED-USE PREVENTION SYSTEM, LADDER PROGRAM UNAUTHORIZED-USE PREVENTION METHOD, AND ENGINEERING TOOL}
본 발명은 프로그래머블 컨트롤러를 동작시키기 위한 래더 프로그램을 배포하는 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴에 관한 것이다.
프로그래머블 컨트롤러에 탑재되는 래더 프로그램은, 중요한 설계 자산이므로, 악의적인 제3자로부터 시큐리티 기능에 의해서 보호할 필요가 있다. 일반적인 보호 방법의 일례는, 프로그래머블 컨트롤러에 의한 래더 프로그램의 판독 및 기입을, 패스워드에 의해서 액세스 제어하는 방법이다.
또, 특허 문헌 1은 래더 프로그램상에서 전용의 보호 명령을 이용하는 프로그램 보호 방법을 개시하고 있다. 이 프로그램 보호 방법은, 보호 명령과 보호 종료 명령에 의해서, 래더 프로그램에 있어서의 보호 구간을 자유롭게 설정하고 있다.
특허 문헌 1: 일본 특개평 10-124308호 공보
그렇지만, 상기 종래의 기술인 특허 문헌 1은, 프로그래머블 컨트롤러 및 주변 기기를 조합한 패키지 제품에 포함되는 래더 프로그램, 즉 프로그래머블 컨트롤러에 인스톨되는 래더 프로그램을 적절히 보호할 수 없었다. 이것은, 특허 문헌 1에 기재된 기술이, 래더 프로그램 단일 제품의 보호밖에 하지 못하고, 패키지 제품에 포함되는 래더 프로그램을 특정의 프로그래머블 컨트롤러에 한정하여 동작하도록 보호하고 있지 않기 때문이다. 이 때문에, 래더 프로그램의 이용 권한이 허락되어 있지 않은 프로그래머블 컨트롤러라도 래더 프로그램을 부정하게 이용 가능해져 버린다고 하는 문제가 있었다.
본 발명은 상기를 감안하여 이루어진 것으로서, 예를 들면, 판매하는 패키지 제품에 포함하여 배포된 래더 프로그램의 부정한 이용을 방지할 수 있는 래더 프로그램 부정 이용 방지 시스템을 얻는 것을 목적으로 한다.
상술한 과제를 해결하여 목적을 달성하기 위해서, 본 발명은 래더 프로그램 부정 이용 방지 시스템에 있어서, 제1 비밀 정보를 이용하여 제1 변환이 행해진 래더 프로그램에, 제1 비밀 정보와 쌍을 이루는 제1 공개 정보를 이용하여 제1 역변환을 행하고, 제1 역변환이 행해진 래더 프로그램에, 특정의 프로그래머블 컨트롤러에서는 동작하고 또한 다른 프로그래머블 컨트롤러에서는 동작하지 않도록, 제2 공개 정보를 이용하여 제2 변환을 행하는 엔지니어링 툴을 구비한다. 또, 본 발명의 래더 프로그램 부정 이용 방지 시스템에 있어서, 제2 변환이 행해진 래더 프로그램에, 제2 공개 정보와 쌍을 이루는 제2 비밀 정보를 이용하여 제2 역변환을 행하고, 제2 역변환이 행해진 래더 프로그램을 실행하는 프로그래머블 컨트롤러를 구비한다.
본 발명에 따른 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 엔지니어링 툴, 라이센스 전송 서버 및 프로그래머블 컨트롤러는, 배포된 래더 프로그램의 부정한 이용을 방지할 수 있다고 하는 효과를 달성한다.
도 1은 실시 형태 1에 따른 래더 프로그램 부정 이용 방지 시스템의 구성을 나타내는 도면이다.
도 2는 실시 형태 1에 따른 라이센스 전송 서버의 구성예를 나타내는 블록도이다.
도 3은 실시 형태 1에 따른 엔지니어링 툴의 기능 구성예를 나타내는 블록도
도 4는 실시 형태 1에 따른 프로그래머블 컨트롤러의 구성예를 나타내는 블록도이다.
도 5는 실시 형태 1에 따른 래더 프로그램 부정 이용 방지 시스템의 동작 처리 절차를 나타내는 순서도이다.
도 6은 실시 형태 1에 따른 래더 프로그램 부정 이용 방지 시스템의 하드웨어 구성을 나타내는 도면이다.
도 7은 실시 형태 2에 따른 라이센스 전송 서버가 실행하는 처리를 설명하기 위한 도면이다.
도 8은 실시 형태 2에 따른 엔지니어링 툴이 실행하는 처리를 설명하기 위한 도면이다.
도 9는 실시 형태 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), 개발 PC(20) 및 프로그래머블 컨트롤러(30A)는, 인터넷(2)에 접속되어 있다. 또, 개발 PC(20) 및 프로그래머블 컨트롤러(30A)는, 유저가 가지고 있는 네트워크에 접속되어 있다. 덧붙여, 프로그래머블 컨트롤러(30A)는 인터넷(2)에 접속되어 있지 않아도 된다. 또, 도 1에서는, 래더 프로그램 부정 이용 방지 시스템(1) 내에 인터넷(2)을 도시하고 있지만, 래더 프로그램 부정 이용 방지 시스템(1)은 인터넷(2)을 포함하고 있지 않다.
라이센스 전송 서버(10A)의 일례는, 서버용 PC이다. 또, 개발 PC(20)는 프로그래머블 컨트롤러(30A)가 이용하는 래더 프로그램(42)을 개발하기 위한 엔지니어링 툴(21A)을 구비하고 있다.
엔지니어링 툴(21A)은 래더 프로그램(42)을 개발하기 위한 엔지니어링 환경의 일례이며, 엔지니어링 환경 소프트웨어라고도 불린다. 응용 프로그램인 엔지니어링 툴(21A)은 개발 PC(20)에 인스톨되어, 개발 PC(20)상에서 동작한다.
프로그래머블 컨트롤러(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)와, 유저의 정보인 유저 정보를 격납하는 유저 DB(12)를 구비하고 있다.
또, 라이센스 전송 서버(10A)는 라이센스 증서(41)를 생성하는 라이센스 증서 생성부(13)와, 래더 프로그램(42)을 배포용 파일 데이터(101)로 변환하는 래더 프로그램 변환부(14)를 구비하고 있다. 배포용 파일 데이터(101)는 벤더가 유저에게 제공하는 래더 프로그램(42)이 암호화된 파일이다. 따라서, 배포용 파일 데이터(101)는 라이센스 전송 서버(10A)에 의해서 보호된 래더 프로그램(42)의 파일 데이터이다. 또, 라이센스 전송 서버(10A)는 벤더 비밀 키 Vsec, 엔지니어링 환경 공개 키 Epub_1 및 래더 프로그램(42)을 격납하는 도시하지 않은 메모리를 구비하고 있다.
공개 키 페어 DB(11)는 프로그래머블 컨트롤러(30A)와, 이외의 다른 프로그래머블 컨트롤러를 포함하는 복수의 프로그래머블 컨트롤러에 할당된 공개 키 페어를 격납한다. 환언하면, 공개 키 페어 DB(11)는 프로그래머블 컨트롤러(30A)마다, 공개 키와 비밀 키의 페어를 격납한다. 공개 키 페어 DB(11)에 격납되는 공개 키는, 후술하는 컨트롤러 공개 키 Cpub이고, 공개 키 페어 DB(11)에 격납되는 비밀 키는, 후술하는 컨트롤러 비밀 키 Csec이다.
유저 DB(12)는 패키지 제품의 라이센스를 구입한 유저와, 유저에게 납품한 패키지 제품 내의 프로그래머블 컨트롤러(30A)의 기기 정보(device information)가 대응지어진 유저 정보를 격납한다.
라이센스 생성부인 라이센스 증서 생성부(13)는 공개 키 페어 DB(11) 및 유저 DB(12)에 접속되어 있다. 라이센스 증서 생성부(13)는 공개 키 페어 DB(11) 내의 공개 키 페어와, 유저 DB(12) 내의 유저 정보에 기초하여, 유저에 대한 라이센스 증서(41)를 생성한다. 구체적으로는, 라이센스 증서 생성부(13)는 라이센스 증서(41)의 발행 대상(issuance target)이 되는 프로그래머블 컨트롤러(30A)의 기기 정보를 유저 DB(12) 내로부터 읽어낸다. 또, 라이센스 증서 생성부(13)는 읽어낸 기기 정보에 할당된 공개 키 페어를 공개 키 페어 DB(11) 내로부터 읽어낸다. 또, 라이센스 증서 생성부(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)는 공개 키 페어 DB(11)에 공개 키 페어를 격납하고, 유저 DB(12)에 유저 정보를 격납해 둔다.
라이센스 증서 생성부(13)는 공개 키 페어 DB(11) 내의 공개 키 페어와, 유저 DB(12) 내의 유저 정보에 기초하여, 유저에 대한 라이센스 증서(41)를 생성한다. 이 때, 라이센스 증서 생성부(13)는 유저에게 고유한 기기 정보를 유저 DB(12) 내로부터 읽어내고, 라이센스 증서 생성부(13)는 읽어낸 기기 정보에 할당된 공개 키 페어를 공개 키 페어 DB(11) 내로부터 읽어낸다. 그리고 라이센스 증서 생성부(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의 예는, RFC 2898, 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)를, 개발 PC(20) 내의 메모리로부터 읽어내어 다양한 처리를 실행한다. 벤더 공개 키 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)의 동작에 대해 설명한다. 개발 PC(20)는 라이센스 전송 서버(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)로 설정한다. 그리고 개발 PC(20)는 보호된 실행 형식 파일(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)는 공개 키 페어 DB(11) 내의 공개 키 페어와, 유저 DB(12) 내의 유저 정보에 기초하여, 유저에 대한 라이센스 증서(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)을 복호한다. 이것에 의해, 프로그래머블 컨트롤러(30A)는 실행 형식 파일(201)을 복원한다. 그리고 스텝 S100에 있어서, 프로그래머블 컨트롤러(30A)는 실행 형식 파일(201)을 이용하여 피 제어 기기에 대한 제어를 실행하고, 정상 종료한다.
다음에, 래더 프로그램 부정 이용 방지 시스템(1)의 하드웨어 구성에 대해 설명한다. 도 6은 실시 형태 1에 따른 래더 프로그램 부정 이용 방지 시스템의 하드웨어 구성을 나타내는 도면이다.
래더 프로그램 부정 이용 방지 시스템(1)의 라이센스 전송 서버(10A)는, 프로세서(61)와, 기억부(62)와, 통신부(63)와, 출력부(64)를 구비하고 있다. 라이센스 전송 서버(10A)에서는 프로세서(61), 기억부(62), 통신부(63) 및 출력부(64)가, 버스에 접속되어 있다.
통신부(63)는 인터넷(2)을 통해서 개발 PC(20)와 통신을 행한다. 덧붙여, 통신부(63)는 개발 PC(20) 이외의 장치와 통신을 행해도 된다. 라이센스 전송 서버(10A)가 라이센스 증서(41)를 온라인으로 유저에게 제공하는 경우, 통신부(63)는, 라이센스 증서(41)를, 인터넷(2)을 통해서 개발 PC(20)에 송신한다. 또, 라이센스 전송 서버(10A)가 배포용 파일 데이터(101)를 온라인으로 유저에게 제공하는 경우, 통신부(63)는, 배포용 파일 데이터(101)를, 인터넷(2)을 통해서 개발 PC(20)에 송신한다.
출력부(64)는 라이센스 전송 서버(10A) 내의 정보를 외부 장치에 출력한다. 라이센스 전송 서버(10A)가 라이센스 증서(41)를 우편으로 유저에게 제공하는 경우, 출력부(64)는, 라이센스 증서 생성부(13)가 생성한 라이센스 증서(41)의 데이터를 프린터와 같은 외부 장치에 출력한다. 또, 출력부(64)는 DVD와 같은 휴대용의 기록 매체(43)에 라이센스 증서(41)의 데이터를 기입해도 된다. 또, 출력부(64)는 배포용 파일 데이터(101)를 기록 매체(43)에 기입해도 된다.
기억부(62)는 공개 키 페어 DB(11) 및 유저 DB(12)를 포함하고 있다. 또, 기억부(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)의 개발 PC(20)는, 프로세서(71)와, 기억부(72)와, 통신부(73)와, 출력부(74)와, 입력부(75)를 구비하고 있다. 개발 PC(20)에서는, 프로세서(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)을 기억한다.
개발 PC(20)는 프로세서(71)가, 기억부(72)에서 기억되어 있는, 개발 PC(20)로서 동작하기 위한 프로그램을 읽어내어 실행함으로써 실현된다. 또, 이 프로그램은 개발 PC(20)의 절차 또는 방법을 컴퓨터에 실행시키는 것이라고도 말할 수 있다. 개발 PC(20)는 프로세서(71)에 의해서, 응용 프로그램인 엔지니어링 툴(21A)을 실행한다. 실시 형태 1의 프로세서(71)는, 개발 PC(20)가 가지는 프로그램의 하나인 엔지니어링 툴(21A)을 이용하여, 래더 프로그램 역변환부(22), 실행 형식 변환부(23) 및 래더 프로그램 재변환부(24)의 처리를 실행한다. 기억부(72)는 프로세서(71)가 각종 처리를 실행할 때의 일시 메모리에도 사용된다.
이와 같이, 프로세서(71)가 실행하는 프로그램은, 컴퓨터에서 실행 가능한, 데이터 처리를 행하기 위한 복수의 명령을 포함하는 컴퓨터 판독 가능 또한 비천이적인 기록 매체를 가지는 컴퓨터 프로그램 프로덕트이다. 프로세서(71)가 실행하는 프로그램은, 복수의 명령이 데이터 처리를 행하는 것을 컴퓨터에 실행시킨다.
덧붙여, 개발 PC(20) 중, 래더 프로그램 역변환부(22), 실행 형식 변환부(23) 또는 래더 프로그램 재변환부(24)의 기능을, 전용의 하드웨어에서 실현해도 된다. 또, 개발 PC(20)에 대해서, 일부를 전용의 하드웨어에서 실현하고, 일부를 소프트웨어 또는 펌웨어에서 실현하도록 해도 된다.
래더 프로그램 부정 이용 방지 시스템(1)의 프로그래머블 컨트롤러(30A)는, 프로세서(81)와, 기억부(82)와, 통신부(83)와, 제어 신호 출력부(86)를 구비하고 있다. 프로그래머블 컨트롤러(30A)에서는, 프로세서(81), 기억부(82), 통신부(83) 및 제어 신호 출력부(86)가, 버스에 접속되어 있다.
통신부(83)는 통신부(73)와의 사이에서 통신을 행한다. 통신부(83)는 통신부(73)로부터 보내져 오는 보호된 실행 형식 파일(202)을 수신한다. 통신부(83)가 행하는 통신의 일례는, 이더넷 통신이다. 통신부(83)는 통신부(73)로부터 수신한 보호된 실행 형식 파일(202)을 기억부(82) 내에 격납한다. 덧붙여, 통신부(83)는 개발 PC(20) 이외의 장치와 통신을 행해도 된다. 제어 신호 출력부(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) 및 주변 기기를 조합한 패키지 제품은, 세트로 유저에게 제공됨으로써, 유저가 이용하는 제조 라인의 설치(setting-up) 기간을 단축시킬 수 있는 것이다. 이러한 패키지 제품은, 래더 프로그램(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)는 펑션 블록인 FB(46)를 포함한 래더 프로그램(42)을, FB(46)를 포함하지 않는 래더 프로그램(45)과 FB(46)로 분리한다. 환언하면, 래더 프로그램 변환부(14)는 래더 프로그램(42)을, 제1 및 제2 세그먼트로 분리한다.
래더 프로그램 변환부(14)는 실시 형태 1과 같은 방법에 의해서, 제1 세그먼트인 래더 프로그램(45)을, 보호된 래더 프로그램(47)으로 변환한다. 구체적으로는, 래더 프로그램 변환부(14)는 래더 프로그램(42)으로부터 배포용 파일 데이터(101)를 생성했을 때의 처리와 같은 처리에 의해서, 래더 프로그램(45)을 보호된 래더 프로그램(47)으로 변환한다.
또, 래더 프로그램 변환부(14)는 제2 세그먼트인 FB(46)를 실행 형식으로 변환함으로써, FB 실행 형식 파일(210)을 생성한다. FB 실행 형식 파일(210)은 FB(46)가 프로그래머블 컨트롤러(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)은 FB(46)를 가지고 있지 않은 래더 프로그램(45)에 대해서는, 실시 형태 1과 같은 복원 결과를 얻을 수 있다. 이 결과, 엔지니어링 툴(21B)은 FB(46)를 제외한 프로그램 부분에 대해서는, 편집을 실시하는 것이 가능해진다. 덧붙여, 엔지니어링 툴(21B)은 FB(46)가 보호된 형식인 채이므로, 이대로는 시뮬레이션을 실행할 수 없다. 엔지니어링 툴(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)을 얻을 수 있다. 이 후, 개발 PC(20)는 보호된 실행 형식 파일(202)을 프로그래머블 컨트롤러(30A)에 보내고, 프로그래머블 컨트롤러(30A)는 보호된 실행 형식 파일(202)을 이용하여 피 제어 기기를 제어한다.
여기서, 실시 형태 2의 엔지니어링 툴(21B)이 실행하는 FB(46)의 시뮬레이션 처리에 대해 설명한다. 도 9는 실시 형태 2에 따른 엔지니어링 툴이 실행하는 FB의 시뮬레이션 처리를 설명하기 위한 도면이다. 여기서 FB(46)의 시뮬레이션 처리란, 소프트웨어상에서 FB(46)를 실행하는 것을 말한다.
실시 형태 2에 따른 엔지니어링 툴(21B)은 FB 위탁 처리부(91)를 구비하고 있다. 또, 엔지니어링 툴(21B)이 FB(46)의 시뮬레이션 처리를 실행하는 경우, 프로그래머블 컨트롤러(30A) 대신에 프로그래머블 컨트롤러(30B)가 이용된다. 프로그래머블 컨트롤러(30B)는 프로그래머블 컨트롤러(30A)가 구비하는 기능에 더하여, FB 위탁 계산부(92)를 구비하고 있다.
FB 위탁 처리부(91)는 FB(46)의 시뮬레이션 요구가 유저에 의해서 입력되면, 시뮬레이션 요구를 프로그래머블 컨트롤러(30B)에 출력하는 기능을 가지고 있다. 따라서, FB 위탁 처리부(91)는 FB(46)의 시뮬레이션 요구가 유저에 의해서 지시되면, 이 지시를 접수함과 아울러, 접수한 시뮬레이션 요구를 프로그래머블 컨트롤러(30B)의 FB 위탁 계산부(92)에 보낸다.
FB 위탁 계산부(92)는 FB 위탁 처리부(91)로부터의 시뮬레이션 요구에 기초하여 FB(46)에서의 처리를 계산한다. 즉, FB 위탁 계산부(92)는 FB 위탁 처리부(91)로부터의 입력에 대응하는 FB(46)의 출력을 계산한다. FB 위탁 계산부(92)는 FB(46)를 이용한 처리의 시뮬레이션 결과인 계산 결과를 FB 위탁 처리부(91)에 보낸다. 이와 같이, FB 위탁 처리부(91)는, FB(46)를 이용한 시뮬레이션을 FB 위탁 계산부(92)에 요구하고, FB 위탁 계산부(92)는, FB(46)를 이용한 시뮬레이션을 실행하여 실행 결과를 FB 위탁 처리부(91)에 반환한다.
이것에 의해, 엔지니어링 툴(21B)은 엔지니어링 환경 내에서 FB(46)를 복원하는 일 없이, 시뮬레이션을 실행하는 것이 가능해진다. 이러한, FB 위탁 처리부(91) 및 FB 위탁 계산부(92)의 기능이 실시 형태 1에서 설명한 래더 프로그램 부정 이용 방지 시스템(1)에 추가됨으로써, 래더 프로그램 부정 이용 방지 시스템(1)은 FB(46)를 엔지니어링 환경에서 복원하는 일 없이, 프로그래머블 컨트롤러(30B)의 래더 프로그램(42)을 개발하는 것이 가능해진다. 이것에 의해, 래더 프로그램 부정 이용 방지 시스템(1)은 패키지 제품의 FB(46)에 대해 강고한 보호를 실현할 수 있다.
이와 같이, 실시 형태 2에 의하면, 엔지니어링 툴(21B)이 래더 프로그램(45)을 복원했을 경우에도, FB(46)는 보호되어 있으므로 FB(46)는 복원되지 않는다. 이것에 의해, 엔지니어링 툴(21B)이 리버스 엔지니어링되어도, 복원에 이용한 키의 정보 및 FB(46)가 탈취되는 것을 방지할 수 있다.
실시 형태에 나타낸 구성은, 본 발명의 내용의 일례를 나타내는 것이며, 다른 공지의 기술과 조합하는 것도 가능하고, 본 발명의 요지를 일탈하지 않는 범위에서, 구성의 일부를 생략, 변경하는 것도 가능하다.
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. 청구항 1에 있어서,
    상기 엔지니어링 툴은 상기 특정의 프로그래머블 컨트롤러에 대응하는 라이센스의 정보에 기초하여, 상기 제2 변환을 행하는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  3. 청구항 1 또는 청구항 2에 있어서,
    상기 엔지니어링 툴은 상기 제1 변환이 행해진 래더 프로그램이 부정한 프로그램인지 여부를 판단하고,
    상기 프로그래머블 컨트롤러는 상기 제2 변환이 행해진 래더 프로그램이 부정한 프로그램인지 여부를 판단하는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  4. 청구항 1 또는 청구항 2에 있어서,
    상기 엔지니어링 툴은, 상기 제1 변환이 행해진 래더 프로그램에 제1 역변환을 행하고, 상기 제1 역변환에 의해서 복원된 상기 래더 프로그램에 상기 제2 변환을 행하는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  5. 청구항 3에 있어서,
    상기 프로그래머블 컨트롤러는, 상기 제2 변환이 행해진 래더 프로그램에 제2 역변환을 행함으로써 상기 래더 프로그램을 복원하고, 복원한 상기 래더 프로그램에 상기 판단을 실행하여, 상기 래더 프로그램을 동작시킬 수 있는 경우에는, 복원한 상기 래더 프로그램을 이용하여 피 제어 기기를 제어하는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  6. 청구항 1 또는 청구항 2에 있어서,
    상기 래더 프로그램은 제1 및 제2 세그먼트를 포함함과 아울러, 상기 제1 세그먼트는 상기 엔지니어링 툴에 의해 복호가 가능하도록 암호화되고, 상기 제2 세그먼트는 상기 엔지니어링 툴에서는 복호하지 못하고 상기 프로그래머블 컨트롤러에 의해 복호가 가능하도록 암호화되어 있는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  7. 청구항 6에 있어서,
    상기 엔지니어링 툴은 상기 제2 세그먼트를 이용한 시뮬레이션을 상기 프로그래머블 컨트롤러에 요구하고,
    상기 프로그래머블 컨트롤러는 상기 제2 세그먼트를 이용한 시뮬레이션을 실행하여 실행 결과를 상기 엔지니어링 툴에 반환하는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  8. 청구항 2에 있어서,
    상기 제1 변환은 상기 라이센스의 정보를 생성하여 상기 엔지니어링 툴에 제공하는 라이센스 전송 서버에서 행해지는 것을 특징으로 하는 래더 프로그램 부정 이용 방지 시스템.
  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. 삭제
  14. 삭제
KR1020197017727A 2017-06-23 2017-06-23 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴 KR102052489B1 (ko)

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
KR20190084117A KR20190084117A (ko) 2019-07-15
KR102052489B1 true KR102052489B1 (ko) 2019-12-05

Family

ID=63354853

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197017727A KR102052489B1 (ko) 2017-06-23 2017-06-23 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴

Country Status (6)

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

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

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008067162A (ja) 2006-09-08 2008-03-21 Pit:Kk 制御システムおよびシステムの制御方法
JP2013239036A (ja) 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
KR101625338B1 (ko) 2015-10-20 2016-05-27 홍익대학교세종캠퍼스산학협력단 악성 경유지를 탐지하는 시스템 및 방법

Family Cites Families (18)

* 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
JP4099039B2 (ja) * 2002-11-15 2008-06-11 松下電器産業株式会社 プログラム更新方法
US20050172132A1 (en) * 2004-01-30 2005-08-04 Chen Sherman (. Secure key authentication and ladder system
EP2058974A1 (en) * 2007-08-28 2009-05-13 Panasonic Corporation Key terminal apparatus, lsi for encryption process, unique key producing method, and content 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
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008067162A (ja) 2006-09-08 2008-03-21 Pit:Kk 制御システムおよびシステムの制御方法
JP2013239036A (ja) 2012-05-15 2013-11-28 Fuji Electric Co Ltd 制御システム、制御装置及びプログラム実行制御方法
KR101625338B1 (ko) 2015-10-20 2016-05-27 홍익대학교세종캠퍼스산학협력단 악성 경유지를 탐지하는 시스템 및 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4764639B2 (ja) ファイルの暗号化・復号化プログラム、プログラム格納媒体
EP1636664B1 (en) Proof of execution using random function
US8392723B2 (en) Information processing apparatus and computer readable medium for preventing unauthorized operation of a program
KR20050123105A (ko) 데이터 보호 관리 장치 및 데이터 보호 관리 방법
JP7089303B2 (ja) 推論装置、処理システム、推論方法及び推論プログラム
JP2007257626A (ja) 臨時ライセンスを用いてコンテンツを臨時に使用する方法及び装置
WO2023240866A1 (zh) 密码卡及其根密钥保护方法、计算机可读存储介质
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
US20100034391A1 (en) Cryptographic-key management system, external device, and cryptographic-key management program
US7975141B2 (en) Method of sharing bus key and apparatus therefor
JP2018180854A (ja) アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
JP2005174359A (ja) 保護情報の使用を権限付与する携帯用権限付与装置及び関連方法
JP5043421B2 (ja) 情報処理装置およびその方法
KR102052489B1 (ko) 래더 프로그램 부정 이용 방지 시스템, 래더 프로그램 부정 이용 방지 방법, 및 엔지니어링 툴
CA2473122A1 (en) Method and device for protecting information against unauthorised use
JP2011150524A (ja) ソフトウェア実行システム
JP2010010824A (ja) 電子装置、および著作権保護チップ
JP2007515723A (ja) アクティブなエンティティを使用するソフトウェア実行保護
US9542537B2 (en) Method and system for confidentially providing software components
JP3984951B2 (ja) コンテンツ利用回数制限方法、コンテンツ利用端末装置、コンテンツ利用システム、コンピュータプログラム、及びコンピュータ読み取り可能な記録媒体
JP2008505385A (ja) セキュリティユニットおよびそのようなセキュリティユニットを備える保護システムならびにデータを保護するための方法
JP2005303370A (ja) 半導体チップ、起動プログラム、半導体チッププログラム、記憶媒体、端末装置、及び情報処理方法
JP2019121884A (ja) 集積回路、制御装置、情報配信方法及び情報配信システム
JP5997604B2 (ja) ソフトウェア不正使用防止機能を備えた情報処理装置、ソフトウェア不正使用防止方法及びプログラム
JP7170588B2 (ja) データ処理方法及びデータ処理システム

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right