特許第5828791号(P5828791)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社日立製作所の特許一覧
<>
  • 特許5828791-コントローラおよび計算機 図000002
  • 特許5828791-コントローラおよび計算機 図000003
  • 特許5828791-コントローラおよび計算機 図000004
  • 特許5828791-コントローラおよび計算機 図000005
  • 特許5828791-コントローラおよび計算機 図000006
  • 特許5828791-コントローラおよび計算機 図000007
  • 特許5828791-コントローラおよび計算機 図000008
  • 特許5828791-コントローラおよび計算機 図000009
  • 特許5828791-コントローラおよび計算機 図000010
  • 特許5828791-コントローラおよび計算機 図000011
  • 特許5828791-コントローラおよび計算機 図000012
  • 特許5828791-コントローラおよび計算機 図000013
  • 特許5828791-コントローラおよび計算機 図000014
  • 特許5828791-コントローラおよび計算機 図000015
  • 特許5828791-コントローラおよび計算機 図000016
  • 特許5828791-コントローラおよび計算機 図000017
  • 特許5828791-コントローラおよび計算機 図000018
  • 特許5828791-コントローラおよび計算機 図000019
  • 特許5828791-コントローラおよび計算機 図000020
  • 特許5828791-コントローラおよび計算機 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5828791
(24)【登録日】2015年10月30日
(45)【発行日】2015年12月9日
(54)【発明の名称】コントローラおよび計算機
(51)【国際特許分類】
   G06F 9/48 20060101AFI20151119BHJP
【FI】
   G06F9/46 455Z
【請求項の数】11
【全頁数】21
(21)【出願番号】特願2012-75627(P2012-75627)
(22)【出願日】2012年3月29日
(65)【公開番号】特開2013-206231(P2013-206231A)
(43)【公開日】2013年10月7日
【審査請求日】2014年7月3日
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】100064414
【弁理士】
【氏名又は名称】磯野 道造
(74)【代理人】
【識別番号】100111545
【弁理士】
【氏名又は名称】多田 悦夫
(72)【発明者】
【氏名】上脇 正
(72)【発明者】
【氏名】大久保 訓
(72)【発明者】
【氏名】中野 利彦
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2004−171566(JP,A)
【文献】 特開2011−248474(JP,A)
【文献】 特開2011−048661(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
複数のタスクと、1つ以上の前記タスクを実行するグループをタスクグループとして、1つ以上の前記タスクグループを管理するオペレーティングシステムとを記憶したメモリと、
タイマ割込みにより前記タスクグループを切り替えて処理を実行するプロセッサと、を備え、
前記プロセッサは、前記タスクグループごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記タスクグループと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記コントローラを立ち上げ時に使用する初期化処理用制限リストが記憶されており、
前記プロセッサは、前記コントローラを立ち上げる時に前記初期化処理用制限リストにアクセスし、前記コントローラが立ち上がった後は、前記制限リストにアクセスし、
前記プロセッサは、前記タスクグループを切り替える際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記タスクグループに関連付けられた制限リストに従い処理を実行する
ことを特徴とするコントローラ。
【請求項2】
複数のタスクと、1つ以上の前記タスクを実行する複数のオペレーティングシステムとを記憶したメモリと、
タイマ割込みにより前記オペレーティングシステムを切り替えて処理を実行するプロセッサと、を備え、
前記プロセッサは、前記オペレーティングシステムごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記オペレーティングシステムと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記コントローラを立ち上げ時に使用する初期化処理用制限リストが記憶されており、
前記プロセッサは、前記コントローラを立ち上げる時に前記初期化処理用制限リストにアクセスし、前記コントローラが立ち上がった後は、前記制限リストにアクセスし、
前記プロセッサは、前記オペレーティングシステムを切り替える際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記オペレーティングシステムに関連付けられた制限リストに従い処理を実行する
ことを特徴とするコントローラ。
【請求項3】
複数のタスクと、1つ以上の前記タスクを実行するグループをタスクグループとして、1つ以上の前記タスクグループを管理するオペレーティングシステムとを記憶したメモリと、
タイマ割込みにより前記タスクグループを切り替えて処理を実行するプロセッサと、を備え、
前記プロセッサは、前記タスクグループごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記タスクグループと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記タスクの間でデータを授受するためのメモリ領域と授受を行うためのプログラムが記憶されており、
前記データの授受を行うタスクは、該データを授受するためのメモリ領域へのアクセスを目的とした鍵の情報を有しており、
前記プロセッサは、前記タスクが該メモリ領域へアクセスする際に、該鍵を該授受のためのプログラムに渡し、該プログラムが該渡された鍵を確認して正統なものであった場合にのみ該メモリ領域へのアクセスを許可し、
前記プロセッサは、前記タスクグループを切り替える際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記タスクグループに関連付けられた制限リストに従い処理を実行する
ことを特徴とするコントローラ。
【請求項4】
複数のタスクと、1つ以上の前記タスクを実行する複数のオペレーティングシステムとを記憶したメモリと、
タイマ割込みにより前記オペレーティングシステムを切り替えて処理を実行するプロセッサと、を備え、
前記プロセッサは、前記オペレーティングシステムごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記オペレーティングシステムと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記タスクの間でデータを授受するためのメモリ領域と授受を行うためのプログラムが記憶されており、
前記データの授受を行うタスクは、該データを授受するためのメモリ領域へのアクセスを目的とした鍵の情報を有しており、
前記プロセッサは、前記タスクが該メモリ領域へアクセスする際に、該鍵を該授受のためのプログラムに渡し、該プログラムが該渡された鍵を確認して正統なものであった場合にのみ該メモリ領域へのアクセスを許可し、
前記プロセッサは、前記オペレーティングシステムを切り替える際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記オペレーティングシステムに関連付けられた制限リストに従い処理を実行する
ことを特徴とするコントローラ。
【請求項5】
前記実行を許可する処理を記録した制限リストは、実行を許可する処理が列挙されたリストであり、前記実行を禁止する処理を記録した制限リストは、実行を禁止する処理が列挙されたリストである
ことを特徴とする請求項1から請求項4のいずれか1項に記載のコントローラ。
【請求項6】
前記プロセッサが、セキュリティ性が要求されるIO入出力を含むタスクを実行する際、アクセスする前記制限リストは、前記実行を許可する処理が列挙されたリストである
ことを特徴とする請求項に記載のコントローラ。
【請求項7】
前記実行を許可する処理または前記実行を禁止する処理がシステムコールである
ことを特徴とする請求項1から請求項4のいずれか1項に記載のコントローラ。
【請求項8】
前記実行を許可する処理または前記実行を禁止する処理が前記タスクの起動である
ことを特徴とする請求項1から請求項4のいずれか1項に記載のコントローラ。
【請求項9】
複数のタスクと、1つ以上の前記タスクを実行する複数のオペレーティングシステムとを記憶したメモリと、前記複数のオペレーティングシステムのうちの1つを読み出して実行する複数のプロセッサと、を備え
前記複数のプロセッサは、前記オペレーティングシステムごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記オペレーティングシステムと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記コントローラを立ち上げ時に使用する初期化処理用制限リストが記憶されており、
前記プロセッサは、前記コントローラを立ち上げる時に前記初期化処理用制限リストにアクセスし、前記コントローラが立ち上がった後は、前記制限リストにアクセスし、
前記複数のプロセッサは、前記オペレーティングシステムを読み出して実行する際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記オペレーティングシステムに関連付けられた制限リストに従い処理を実行する ことを特徴とするコントローラ。
【請求項10】
複数のタスクと、1つ以上の前記タスクを実行する複数のオペレーティングシステムとを記憶したメモリと、前記複数のオペレーティングシステムのうちの1つを読み出して実行する複数のプロセッサと、を備え
前記複数のプロセッサは、前記オペレーティングシステムごとにメモリ領域を指定するメモリ保護手段を有し、
前記メモリには、前記メモリ保護手段で指定されたメモリ領域に、前記オペレーティングシステムと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リストが記憶されており、
さらに、前記メモリには、前記タスクの間でデータを授受するためのメモリ領域と授受を行うためのプログラムが記憶されており、
前記データの授受を行うタスクは、該データを授受するためのメモリ領域へのアクセスを目的とした鍵の情報を有しており、
前記プロセッサは、前記タスクが該メモリ領域へアクセスする際に、該鍵を該授受のためのプログラムに渡し、該プログラムが該渡された鍵を確認して正統なものであった場合にのみ該メモリ領域へのアクセスを許可し、
前記複数のプロセッサは、前記オペレーティングシステムを読み出して実行する際に、前記メモリ保護手段で指定されたメモリ領域にアクセスし、前記オペレーティングシステムに関連付けられた制限リストに従い処理を実行する
ことを特徴とするコントローラ。
【請求項11】
請求項1から請求項10のいずれか1項に記載のコントローラと、ネットワークを介して通信を行う計算機において、
前記計算機は、前記オペレーティングシステム毎に処理の一覧が記憶装置に記憶されており、
前記計算機は、前記制限リストを作成する要求があった際に、
前記作成する制限リストが前記実行を許可する処理または前記実行を禁止する処理を記録したリストであるか否かがユーザによって設定される設定欄と、前記記憶装置に記憶されている前記オペレーティングシステム毎に処理の一覧に基づいてユーザによって処理が選択される選択欄と、前記コントローラに送信するための設定ボタンと有する表示画面を表示部に表示し、
前記設定ボタンが押下された場合、前記設定欄および前記選択欄の設定された内容に基づいて前記制限リストを作成して前記記憶装置に記憶し、前記コントローラに対して前記作成された制限リストを送信する
ことを特徴とする計算機。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、発電所などの高い信頼性と高いセキュリティ性が要求されるところで使用されるコントローラおよび計算機に関する。
【背景技術】
【0002】
プログラマブルコントローラ(以下、コントローラと称する場合がある。)は、発電所、製鉄所、上下水道施設、工場など各種の機器の制御に使用されている。コントローラは、タイマなどを用いて周期的に機器に備え付けられたセンサから各種のデータを取り込み、そのデータに基づいて計算を実行し、その計算結果をアクチュエータなどに向けて出力することにより制御を行う。
【0003】
コントローラは、正確な制御を行うために高いリアルタイム性が求められる。また、コントローラが停止や誤動作すると、例えば、発電所の場合、発電設備の破壊、電力供給の停止など多大な被害や危険が発生する可能性があり、高い信頼性、可用性も要求される。
【0004】
一方、近年、コントローラがネットワークに接続されることが一層多くなってきている。コントローラをネットワークに接続する目的はいろいろある。複数のコントローラを連携して動作させるためであったり、コントローラのデータをパーソナルコンピュータなどに収集して、そのディスプレイに表示させるためであったり、遠隔地からコントローラを有するシステムの管理、保守を行うためだったりする。いずれにせよ、コントローラのネットワークへの接続が進むことにより、セキュリティという新たな問題が重大化してきている。ネットワークを通して、コントローラに対して不正なアクセスが行われ、コントローラの停止、誤動作、データの改ざん、データの漏洩などに発展する可能性が出てきている。
【0005】
一般的な計算機では古くからネットワーク接続が行われてきており、セキュリティへの対策技術も知られている。ウィルス対策ソフトウェアのように実行を禁止するべきプログラムの一覧を保持し、プログラムを実行する際にその一覧と照合し、一致するものがあればプログラムの実行を禁止することが行われている。
【0006】
本発明はタスクグループやOS(Operating System)を切り替えて実行する構成をとっているが、この構成自体に関しては特許文献1において、2つの仮想機械を切り替えて実行する通信端末として公開されている。また、特許文献2には複数のプロセッサを用い、それぞれでOSを実行する構成が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特許第4833079号公報
【特許文献2】特開2002−351854号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1は、複数の仮想機械を切り替えて実行する構成が開示されているが、携帯電話用である。コントローラの制御方法との関連性に関しては記述されていない。これに対し、各種制御機器に用いられるコントローラに対し、さらなるセキュリティ向上が望まれていた。
【0009】
本発明は、前記の課題を解決するための発明であって、不正アクセスなどの攻撃があった場合にも重要な制御に関しては高セキュリティ性を維持し、処理を続行することができるコントローラおよび計算機を提供することを目的とする。
【0010】
また、高セキュリティ性を確保するためにネットワークへの接続性などの使い勝手を犠牲にすることなく、重要な制御の保護を実現する手段を提供する。
【課題を解決するための手段】
【0011】
前記の目的を達成するため、本発明のコントローラでは、単一のコントローラの中にセキュリティを確保したい高セキュリティタスクのグループとセキュリティよりは利便性を優先したい通常タスクのグループを同居させる。両者のタスクグループはタイマによる切り替えで、時間的に分離して処理される。また、両者のタスクグループはお互いにメモリ保護手段(例えば、メモリ保護12)によりメモリ空間的にも分離して処理される。この両者のタスクグループの管理のためにそれぞれ独立のOSを用い、それらをタイマにより切り替えて実行することも可能である。
【0012】
セキュリティを確保するためには、不正アクセスの攻撃を許す可能性のある処理などを制限する必要があるため、実行を許可する処理、実行を禁止する処理を記録したリスト(例えば、制限リスト4521,4522)を複数設け、タイマ割込みにより該タスクのグループを切り替える時に、同時に切り替える手段を設ける。
【0013】
また、タスクグループ間で通信を行う領域を設ける。該領域は通常時はメモリ保護によりアクセスを禁止されているが、通信要求のときにタスクが提供する鍵情報を照合し、適合している場合のみメモリ保護のアクセスを許可する。
【発明の効果】
【0014】
本発明によれば、不正アクセスなどの攻撃があった場合にも重要な制御に関しては高セキュリティ性を維持し、処理を続行することができる。また、高セキュリティ性を確保するためにネットワークへの接続性などの使い勝手を犠牲にすることなく、重要な制御の保護をすることができる。
【図面の簡単な説明】
【0015】
図1】本発明の実施形態におけるプログラマブルコントローラの構成を示す図である。
図2】プログラマブルコントローラのハードウェアの構成を示す図である。
図3】メモリ保護のテーブルの一例を示す図である。
図4】タイマ割込により起動されるOS切り替えのアルゴリズムを示す図である。
図5】実行制限システムコールリストの一例を示す図である。
図6】実行制限タスクリストの一例を示す図である。
図7】システムコール実行のアルゴリズムを示す図である。
図8】タスク起動のアルゴリズムを示す図である。
図9】OS間通信のアルゴリズムを示す図である。
図10】プログラマブルコントローラの立ち上げ処理のアルゴリズムを示す図である。
図11】OS立ち上げ処理のアルゴリズムを示す図である。
図12】システムコール制限設定画面の一例を示す図である。
図13】タスク起動制限設定画面の一例を示す図である。
図14】OS間通信鍵設定画面の一例を示す図である。
図15】設定ツールのディスクの構成の一例を示す図である。
図16】実行制限リスト受信のアルゴリズムを示す図である。
図17】プログラマブルコントローラの別の構成を示す図である。
図18図17のプログラマブルコントローラのハードウェアの構成を示す図である。
図19】プログラマブルコントローラのハードウェアの別の構成を示す図である。
図20】タスクのアルゴリズムの一例を示す図である。
【発明を実施するための形態】
【0016】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
図1は、本発明の実施形態におけるプログラマブルコントローラの構成を示す図である。図1において、主としてプログラマブルコントローラの制御処理に関する全体構成について説明する。プログラマブルコントローラ100は、ハードウェア1を介して制御対象111,112,113を制御している。
【0017】
ハードウェア1の構成の詳細に関しては図2を用いて後記するが、ハードウェア1は、IO(Input/Output)11、メモリ保護12、タイマ13、通信部14などを持っている。図中のメモリ保護55は、図2で後記するメモリ保護12の保護領域を示している。IO11は、コントローラが制御する対象の機器やセンサである制御対象111,112,113につながっている。タイマ13は、設定した時間毎に割込(割込み)を発生させる。通信部14は、ネットワーク21につながっており、ネットワーク21にはコントローラの各種設定を行う設定ツール22(計算機)などが接続されている。
【0018】
コントローラは、OS切り替え層3のソフトウェアを有しており、複数のOSを切り替える処理を行う。OS切り替え層3の中には、OS切り替え(OS切替)プログラム31とOS間通信プログラム32がある。OS切り替えプログラム31のアルゴリズムは、図4を用いて後記するが、このプログラムはハードウェア1中のタイマ13からの割込により起動され、実行中OS情報311(実行中OS)を保持している。OS間通信プログラム32のアルゴリズムは、図9を用いて後記するが、鍵照合手段321とOS間通信領域322を有している。
【0019】
コントローラは、OSのソフトウェアとして、OS411(OS1)、OS412(OS2)を有する。これらのOS411およびOS412は、OS切り替え層3により周期的に切り替えられて実行される。OS411上で実行されるタスクとして、例えば、タスク511、512があり、OS412上で実行されるタスクとして、例えば、タスク513,514がある。また、OS411,412はタスク511〜514からの要求に基づきOS間通信プログラム32を用いてお互いに通信を行うことができる。
【0020】
OS411(OS1)は制限リスト4521を有している。OS412(OS2)は制限リスト4522を有している。これらの制限リスト4521,4522は、OSがタスクからの要求に基づき行うシステムコールの実行やタスクの起動を制限するための情報である。なお、システムコールとは、OSの持つ機能をプログラムで呼び出すことを意味し、OSが持つ機能には、ファイルへのアクセスやメモリの割り当てなどがある。これらの機能が関数として利用できることから、システムコール関数とも呼ぶ。
【0021】
制限リスト4521の中には、実行制限システムコールリスト45211と実行制限タスクリスト45221とがある。制限リスト4522の中には、実行制限システムコールリスト45212と実行制限タスクリスト45222とがある。実行制限システムコールリスト45211,45212の詳細は、図5を用いて後記するが、リストで指定されたものを許可する場合、実行許可システムコールリスト(実行許可SC)となり、リストで指定されたものを禁止する場合、実行禁止システムコールリスト(実行禁止SC)となる。同様に、実行制限タスクリスト45221,45222の詳細は、図6を用いて後記するが、リストで指定されたものを許可する場合、実行許可タスクリスト(実行許可タスク)となり、リストで指定されたものを禁止する場合、実行禁止タスクリスト(実行禁止タスク)となる。
【0022】
OS411(OS1)は制限リスト管理のプログラム441を有しており、OS412(OS2)は制限リスト管理のプログラム442を有している。さらに、制限リスト管理のプログラム441にはリスト受信プログラム431が含まれ、制限リスト管理のプログラム442にはリスト受信プログラム432が含まれる。制限リスト管理のプログラム441,442の実行により、使用中の制限リスト情報421,422(実行中制限リスト)を保持したり、制限リスト4521,4522を設定ツール22からネットワーク21経由で受信したりする。OS411のように一つのOSが、複数の制限リスト4511と制限リスト4521とを持つことも可能である。これらは初期化処理用と通常時用というように使い分けることができ、制限リスト管理のプログラム441により切り替える。なお、リスト受信プログラム431,432については、図16を用いて後記する。
【0023】
図2は、プログラマブルコントローラのハードウェアの構成を示す図である。ハードウェア1は、プログラムを実行するためのCPU15(プロセッサ)、前記したIO11、前記した通信部14、メモリ19を含んで構成されており、CPU15、IO11、通信部14、およびメモリ19は、バス18を介して接続されている。なお、CPUはCentral Processing Unit の略である。
【0024】
CPU15には、図1中のメモリ保護12、タイマ13の他に、実行レベル16を保持するレジスタ、実行OS情報17を保持するレジスタがある。メモリ19は、図1で説明した各種のソフトウェアとデータを保持しており、具体的には、前記したOS411,412、OS切り替え層3、タスク511〜514がある。
【0025】
図3は、メモリ保護のテーブルの一例を示す図である。図3を参照して、図1および図2中のメモリ保護12が保持するメモリ保護のためのメモリ保護テーブル12Tについて説明する。メモリ保護テーブル12Tの各行(例えば、行1226)が一つのメモリ領域のエントリを表している。メモリ保護テーブル12Tは、実行レベル1211、OSID(Operating System IDentification)1212、タスクID1213、アドレス1214、サイズ1215、許可1216の列を含んでいる。アドレス1214はメモリ領域の開始アドレスであり、サイズ1215はメモリ領域のサイズである。
【0026】
なお、メモリ保護テーブル12Tは、例えば、CPU15内にあるメモリ領域属性のレジスタに格納されている。メモリ保護とは、例えば、CPU15が実行するアドレスと、メモリ保護テーブル12Tで指定されているアドレス領域とを比較器によって比較し、アクセスが禁止されているメモリ領域にアクセスすることのないように領域を保護する機能のことである。
【0027】
図2において、CPU15が持つ実行レベル16は0〜2の値をとり、通常のタスクを実行するときには0、OSを実行するときには1、OS切り替え層3のプログラムを実行するときには2に設定される。図3において、実行レベル1211は、どの実行レベルに対してそのメモリ領域のアクセスが許可されているかを表している。CPU15の実行レベル16が1211の列の値以上のときにそのメモリへのアクセスが許可される。
【0028】
OSID1212は、アクセスが許可されるOSのIDの情報を保持する。値が0のときには実行中のOSの制限を受けない。タスクID1213は、アクセスが許可されるタスクのIDの情報を保持する。値が0のときには実行中のタスクの制限を受けない。
【0029】
許可1216は、そのメモリ領域のアクセスが現在許可されているかどうかを表している。1のときには許可されており、0のときにはアクセスが禁止されている。
【0030】
図3中の行1226〜1233で示す各メモリ領域を説明すると、行1226は図1中のOS切り替えプログラム31の領域を表しており、これは実行レベルが2のときのみアクセスが許される。行1227はOS間通信領域322を表しているが、許可1216の値が0のため現在はアクセスが禁止されている。この領域へのアクセスはOS間通信の要求があり、鍵照合に成功したときに許可される。
【0031】
行1228、行1229はそれぞれOS411とOS412の領域であり、実行レベルが1であり、それぞれ自身のOSが実行中である場合にアクセスが許可される。例えば、CPUの実行レベルが2であり実行レベル1211の値の実行レベルよりも大きい場合には、OSID1212やタスクID1213の値によらず、その領域にアクセス可能となる。行1230〜行1233は、それぞれタスク511〜514の領域であり、各タスクを実行中のときかまたは実行レベルが1以上のときにアクセス可能となる。メモリ保護12のテーブルにないメモリ領域に関してはアクセスが禁止される。
【0032】
図4は、タイマ割込により起動されるOS切り替えのアルゴリズムを示す図である。図4を参照して、図1図2中のOS切り替えプログラム31のアルゴリズムについて説明する。このプログラムは図1中のタイマ13からの割込により周期的に起動される。ステップS711でCPU15の実行レベルは最高の2に設定される。これによりOS切り替え層の情報へのアクセスが許可される。ステップS712では今まで実行中であったOSのコンテキストをOS切り替えプログラム31内にある退避領域に退避する。コンテキストにはCPU15のプログラムカウンタ、レジスタ、実行中レベルの値などが含まれる。ステップS713では、CPU15が持つ実行中OSのレジスタに今まで実行していたOSとは別のOSのIDを設定する。ステップS714では新しく選択したOSの退避されていたコンテキストを回復する。これにより新しいOSに実行が切り替わる。実行レベルも退避されていた値に設定される。
【0033】
図5は、実行制限システムコールリストの一例を示す図である。図5を参照して、図1中の実行制限システムコールリスト45211を説明する。実行制限システムコールリスト45211は、禁止/許可別欄471と、システムコールのリスト472とを含んで構成されている。禁止/許可別欄471は、このリストが実行を許可するシステムコールのリストを表しているのか、実行を禁止しているシステムコールのリストを表しているのかの情報を保持している。ここでは行4711が許可となっており、このリストが許可されているシステムコールのリストであることを表している。システムコールのリスト472は、システムコールのIDであるSCID4721、システムコール名であるSC名4722を含んで構成されている。なお、行4711が禁止となっている場合は、実行制限システムコールリスト45211は、実行禁止システムコールリストであることを意味する。例えば、図1の実行制限システムコールリスト45212は、実行禁止システムコールリスト(実行禁止SCリスト)である。
【0034】
具体的には、行4731は、SCIDが1であり、システムコール名がIO入出力である。行4732は、SCIDが2であり、システムコール名がOS間通信である。行4733は、SCIDが5であり、システムコール名がタイマである。行4734は、SCIDが6であり、システムコール名がタスク間通信である。図5に示す実行許可システムコールリスト(図1の実行制限システムコールリスト45211の実行許可SCに対応)により、システムコール名が、IO入出力、OS間通信、タイマ、タスク間通信であるときに実行が許可されることを意味する。
【0035】
図6は、実行制限タスクリストの一例を示す図である。図6を参照して、図1中の実行制限タスクリスト45221を説明する。実行制限タスクリスト45221には、禁止/許可別欄461と、タスクのリスト462とが含んで構成されている。禁止/許可別欄461は、このリストが起動を許可するタスクのリストを表しているのか、起動を禁止しているタスクのリストを表しているのかの情報を保持している。ここでは行4611が許可となっており、このリストが許可されているタスクのリストであることを表している。タスクのリスト462は、タスクID4621、タスク名4622を含んで構成されている。
【0036】
前記したように、図1中でOS411の実行制限システムコールリスト45211や実行制限タスクリスト45221のリストは、許可されているシステムコールやタスクのリストとなっており、OS412の実行制限システムコールリスト45212や実行制限タスクリスト45222のリストは、禁止されているシステムコールやタスクのリストとなっている。
【0037】
これは、OS411側のタスクが制御にとって重要なタスクであり、高いセキュリティ性が要求され、OS412側がネットワークとの通信などの処理を受け持ち汎用的な処理を行うことを想定しているからである。許可されている処理を列挙する方が汎用性はないが、厳密に必要な処理のみを列記することが可能であり、セキュリティ性は高くなる。一方、禁止する処理を記述する方は、汎用性は高いが、新しいセキュリティ上の脅威を防ぐことが難しく、セキュリティ性はやや劣ることとなる。
【0038】
図20は、タスクのアルゴリズムの一例を示す図である。図20を参照して、図1中のタスク511のタスク1の処理の一例を説明する。図20に示すアルゴリズムは、タイマ13で周期的に制御対象111からセンサ情報を入力し、制御のための計算を実行し、制御対象111に対して制御情報を出力する。
【0039】
CPU15は、タスク1を実行すると、ステップS581でタイマ設定のシステムコールを呼び出し、ステップS582でタイマ待機のシステムコールを呼び出し、ステップS583で制御対象111からのセンサ情報入力のシステムコールを呼び出し、ステップS584で制御のための計算を実行し、ステップS585でタスク2起動のシステムコールを呼び出し、ステップS586で制御対象111へ制御情報出力のシステムコールを呼び出し、そして、ステップS582に戻り、処理を繰り返す。なお、ステップS585において、タスク1の処理の途中で別のタスク2を起動しているが、タスク2は、図6に示した実行許可タスクリストを参照すると、許可されているので起動が可能である。
【0040】
図7は、システムコール実行のアルゴリズムを示す図である。システムコールは、図20に示したように、タスクがOSに対して処理を要求するための呼び出しであり、タスク511〜514から呼び出される。CPU15は、ステップS521で今までのCPU15の実行レベル16を退避し、ステップS522でCPU15の実行レベル16にOS実行中であることを表す1を設定する。
【0041】
CPU15は、ステップS523で実行制限システムコールリスト45211,45212の禁止/許可別欄471が許可になっているか否かを判断している。CPU15は、許可の場合には(ステップS523,Yes)、ステップS524で実行すべきシステムコールのID(SCID)が実行制限システムコールリストにあるか否かを検索する。CPU15は、ステップS525でSCIDがあったか否かを判断し、あった場合には(ステップS525,Yes)、ステップS529でそのシステムコールの処理を実行し、ステップS530に進み、ステップS525でSCIDがなかった場合には(ステップS525,No)、ステップS528でリターンコードに実行エラーに設定し、ステップS531に進む。
【0042】
CPU15は、ステップS523で禁止/許可別欄471が禁止となっていた場合には(ステップS523,No)、ステップS526で実行制限システムコールリストを検索し、ステップS527で実行するシステムコールのID(SCID)がリストにあったか否かを判断している。CPU15は、なかった場合には(ステップS527,No),ステップS529でシステムコールの処理を実行しステップS530に進み、あった場合には(ステップS527,Yes)、ステップS528で実行エラーを設定し、ステップS531に進む。CPU15は、ステップS530ではシステムコールの実行結果をリターンコードに設定し、ステップS531にて、ステップS521で退避した実行レベルを回復したあとに呼び出し元のタスクの処理に復帰する。
【0043】
図8は、タスク起動のアルゴリズムを示す図である。タスク起動は、システムコールの一つであり、図7のシステムコールのアルゴリズム中のステップS529から呼び出される。
【0044】
CPU15は、ステップS541で実行制限タスクリスト45221,45222の禁止/許可別欄461が許可になっているか否かを判断している。CPU15は、許可の場合には(ステップS541,Yes)、ステップS542で実行すべきタスクのID(タスクID)が実行制限タスクリストにあるか検索し、ステップS543でタスクIDがあったか否かを判断し、あった場合には(ステップS543,Yes)、ステップS547でそのタスクIDのタスクを実行し、ステップS548でリターンコードに成功を設定する。CPU15は、ステップS543でタスクIDがなかった場合には(ステップS543,No)、ステップS546でリターンコードに実行エラーを設定する。
【0045】
CPU15は、ステップS541で禁止/許可別欄461が禁止となっていた場合には(ステップS541,No)、ステップS544で実行制限タスクリストを検索し、ステップS545で実行するタスクのID(タスクID)がリストにあったか否かを判断している。CPU15は、なかった場合には(ステップS545,No)、ステップS547でタスクIDのタスクを実行し、あった場合には(ステップS545,Yes)、ステップS546で実行エラーを設定する。
【0046】
図9は、OS間通信のアルゴリズムを示す図である。図9を参照して、図1中のOS間通信プログラム32のアルゴリズムについて説明する。タスクからのOS間通信の要求もシステムコールによってなされるので、このプログラムも図7中のステップS529から呼び出される。
【0047】
CPU15は、ステップS551で今までのCPU15の実行レベル16を退避し、ステップS552で実行レベルを最高の2に設定している。CPU15は、ステップS553でシステムコールの引数としてタスクから提供された鍵の情報である鍵情報71(図1参照)を鍵照合手段321(図1参照)自身が保持している正しい鍵の情報と照合する。CPU15は、ステップS554で鍵の情報が一致したか否かを判断し、一致しなかった場合には(ステップS554,No)、ステップS561でリターンコードに鍵エラーを設定し、ステップS562に進み、一致した場合には(ステップS554,Yes)、ステップS555でOS間通信領域のメモリアクセスを許可する。これは、図3中のメモリ保護12のテーブル中において、行1227の許可1216の許可情報を1にすることによりなされる。
【0048】
CPU15は、ステップS556でOS間通信が送信の要求か受信の要求かを判断しており、送信要求の場合には(ステップS556,Yes)、ステップS557でOS間通信領域に送信データを書き込み、受信要求であった場合には(ステップS556,No)、ステップS558にてOS間通信領域から受信データを読み込み、ステップS559に進む。CPU15は、ステップS559ではOS間通信領域のメモリアクセスを再び禁止に設定し、ステップS560ではリターンコードに成功のコードを設定し、ステップS562ではステップS551で退避した実行レベルを回復し、そのあとリターンする。
【0049】
図10は、プログラマブルコントローラのコントローラの立ち上げ処理のアルゴリズムを示す図である。CPU15は、ステップS571で実行レベルを2に設定し、ステップS572でOS切り替えプログラムを初期化し、ステップS573でOS間通信プログラムを初期化する。CPU15は、ステップS574でOS411(OS1)をロードし、ステップS575でO412(OS2)をロードする。
【0050】
CPU15は、ステップS576で図1中のOS1の初期化時に使用するための制限リスト4511(初期化処理用実行制限リスト)を設定し、ステップS577でOS1の通常時用に使用する制限リスト4521(通常時用実行制限リスト)を設定し、ステップS578でOS2の通常時用に使用する制限リスト4522(通常時用実行制限リスト)を設定し、ステップS579でCPU15の実行レベルをOS実行の実行レベルである1に設定して、ステップS580でOS411(OS1)を起動し(図11参照)、立ち上げ処理を終了する。
【0051】
図11は、OS立ち上げ処理のアルゴリズムを示す図である。このアルゴリズムは図10のコントローラ立ち上げ処理のアルゴリズムの最後のステップS580から実行される。CPU15は、ステップS591でOSの情報の初期化を行い、ステップS592で図1中の使用中の制限リスト情報421を、初期化処理用の制限リスト4511に設定する。CPU15は、ステップS593で図1中のIO11を初期化し、ステップS594で通信部14を初期化し、ステップS595でタスクをロードする。
【0052】
ここまででOSの初期化の処理が終了するので、CPU15は、ステップS596で使用中の制限リスト情報421を通常時用の制限リスト4521に設定し、ステップS597ではタスクスケジューラを実行して次に実行すべきタスクを選択し、ステップS598で選択したタスクに処理をスイッチする。
【0053】
本実施形態によれば、コントローラ(例えば、プログラマブルコントローラ100)は、複数のタスク511〜514と、1つ以上のタスクを実行する複数のオペレーティングシステム(例えば、OS411,412)とを記憶したメモリ19と、タイマ割込みによりオペレーティングシステムを切り替えて処理を実行するプロセッサ(例えば、CPU15)とを備える。プロセッサは、オペレーティングシステムごとにメモリ領域を指定するメモリ保護手段(例えば、メモリ保護12)を有し、メモリには、メモリ保護手段で指定されたメモリ領域に、オペレーティングシステムと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リスト(例えば、制限リスト4521,4522)が記憶されている。プロセッサは、オペレーティングシステムを切り替える際に、メモリ保護手段で指定されたメモリ領域にアクセスし、オペレーティングシステムに関連付けられた制限リストに従い処理を実行することができる。
【0054】
次に、図5および図6に示したテーブルの設定方法について説明する。
図12は、システムコール制限設定画面の一例を示す図である。図12を参照して、図1中の設定ツール22の表示部に表示される画面のうち、システムコール制限設定画面について説明する。システムコール制限設定画面23は、設定の対象となるOSを選択するメニュー231、システムコールの一覧232、禁止/許可別欄234、入力した情報をコントローラに送信して設定するためのボタン235、設定をキャンセルするボタン236を含んでいる。
【0055】
OSを選択するメニュー231の行2311で、図1中のOS411であるところのOS1が選択されている。禁止/許可別欄234は、制限リストが、許可されるシステムコールのリストであるかそれとも禁止されるシステムコールのリストであるかを選択するメニューであり、行2341でリストが許可されるシステムコールのリストであることが選択されている。
【0056】
システムコールの一覧232は、システムコールのIDであるSCID2321、システムコール名であるSC名2322、選択2323の欄を含んでいる。システムコールの一覧232には、予め登録されているシステムコールの一覧が表示され、選択2323の
ボタンをクリックすることによりそのシステムコールを選択することが可能である。
【0057】
図13は、タスク起動制限設定画面の一例を示す図である。図13を参照して、図1中の設定ツール22の表示部に表示される画面のうち、タスク起動制限設定画面について説明する。タスク起動制限設定画面24は、設定の対象となるOSを選択するメニュー241、タスクの一覧242、禁止/許可別欄244、入力した情報をコントローラに送信して設定するためのボタン235、設定をキャンセルするボタン236を含んでいる。
【0058】
OSを選択するメニュー241の行2411で、図1中のOS411であるところのOS1が選択されている。禁止/許可別欄244は、制限リストが、許可されるタスクのリストであるかそれとも禁止されるタスクのリストであるかを選択するメニューであり、行2441でリストが許可されるタスクのリストであることが選択されている。
【0059】
タスクの一覧242は、タスクのIDであるタスクID2421、タスク名2422、選択2423の欄を含んでいる。タスクの一覧242には、予め登録されているタスクの一覧が表示され、選択2423のボタンをクリックすることによりそのタスクを選択することが可能である。
【0060】
図14は、OS間通信鍵設定画面の一例を示す図である。図14を参照して、図1中の設定ツール22の表示部に表示される画面のうち、OS間通信用鍵設定画面について説明する。OS間通信用鍵設定画面25は、設定の対象となるOSを選択するメニュー251、タスクの一覧252、OS間通信実施のための認証に用いる鍵の情報を設定する鍵情報設定欄254、入力した情報をコントローラに送信して設定するためのボタン235、設定をキャンセルするボタン236を含んでいる。
【0061】
OSを選択するメニュー251の行2511で、図1中のOS412であるところのOS2が選択されている。鍵情報設定欄254の行2541に入力されている値が鍵の値である。
【0062】
タスクの一覧252は、タスクのIDであるタスクID2521、タスク名2522、鍵許可2523の欄を含んでいる。タスクの一覧252には、予め登録されているタスクの一覧が表示され、鍵許可2523のボタンをクリックすることにより、OS間通信の鍵を与える対象のタスクを選択することが可能である。
【0063】
図15は、設定ツールのディスクの構成の一例を示す図である。図15を参照して、図1中の設定ツール22に内蔵されるディスクの構成について説明する。設定ツール22は、ネットワーク21に接続されるPC(Personal Computer)のような情報端末であればよく、ディスク221とはハードディスクやフロッピー(登録商標)ディスクなどの、円盤状の記憶媒体にデータの記録を行う記憶装置の総称であり、本実施形態では、ハードディスクの意味で使用する。ディスク221には、各種データが保持されている。
【0064】
ディスク221は、図1中の各OSの制限リスト4521,4522、図12のシステムコール制限設定画面や図13のタスク起動制限設定画面に入力した値を保持する。また、ディスク221は、OS間通信の鍵情報71、OS間通信の鍵を許可するタスクのリスト72を保持し、これらは図14のOS間通信用鍵設定画面に入力した値である。図12図13図14の画面中の設定するためのボタン235をクリックすると対応した情報がネットワーク21経由でコントローラに送信される。
【0065】
図16は、実行制限リスト受信のアルゴリズムを示す図である。図16を参照して、図1中のリスト受信431,432のアルゴリズムについて説明する。実行制限リスト受信のアルゴリズムは、図1中の設定ツール22に内蔵される図15のディスク221内の制限リスト4521,4522の情報をこのプログラムによりネットワーク21経由で受信するものである。
【0066】
CPU15は、ステップS611では設定ツールから通信が行われるのを待っており、通信が開始されるとステップS612に進み、設定ツール22から送信されてきた制限リストを受信する。CPU15は、ステップS613で受信した制限リストが実行制限タスクリストであるか否かを判断し、実行制限タスクリストであった場合(ステップS613,Yes)、ステップS614でOSの実行制限タスクリストに受信情報を設定し、そうでない場合(ステップS613,No)、ステップS615でOSに実行制限システムコールリストに受信情報を設定し、ステップS611に戻る。
【0067】
図17は、プログラマブルコントローラの別の構成を示す図である。図17に示すプログラマブルコントローラ100Aは、図1のコントローラの別の構成例である。図1の構成では複数のOS411,412をタイマ13で切り替えて実行する構成であったが、図17に示す構成ではOS413の一つのみである。その代わりに複数のタスクの集合を表すタスクグループの管理手段を用いている。OS413には、タスクグループの管理情報414(タスクGr1),415(タスクGr2)があり、管理情報414の中に制限リスト4511,4521、管理情報415の中に制限リスト4522がある。また、OS413には、タスクグループ切り替えプログラム33があり、このプログラムがタイマ13の割込により起動され実行するタスクグループを切り替えるとともに実行を制限するタスクやシステムコールも切り替わる。さらに、OS413は、タスクグループ間通信プログラム34も有しており、タスクグループ間通信プログラム34には、鍵照合手段341、タスクグループ間通信領域342も含まれる。
【0068】
図18は、図17のプログラマブルコントローラのハードウェアの構成を示す図である。ハードウェア1は、図2と同様に、CPU15、IO11、通信部14、メモリ19を含んで構成されており、CPU15、IO11、通信部14、およびメモリ19は、バス18を介して接続されている。図18のメモリ19の構成が、図2のメモリと相違している。
【0069】
メモリ19は、図17で説明した各種のソフトウェアとデータを保持しており、具体的には、前記したOS413、タスク511〜514がある。OS413には、管理情報414(タスクGr1)、管理情報415(タスクGr2)、タスクグループ切り替えプログラム33、タスクグループ間通信プログラム34がある。
【0070】
図17および図18の実施形態によれば、プログラマブルコントローラ100Aは、タスクをグループとして管理する手段を設け、該タスク間、あるいは、該タスクグループ間はCPU15(プロセッサ)のメモリ保護手段(例えば、メモリ保護12)によりメモリが保護されている。各タスクグループは、実行を許可する処理、実行を禁止する処理を記録した制限リスト4521,4522を保持している。プログラマブルコントローラ100AのCPU15がタイマ割込みによりタスクグループを切り替えて処理を実行する際に、実行を許可する処理、実行を禁止する処理を記録した制限リストも同時に切り替える。この切り替え処理により、重要な制御の処理を行うタスクグループを別のタスクグループとして分離し、実行可能な処理を制限することにより高いセキュリティ性を実現することができる。
【0071】
本実施形態のコントローラ(例えば、プログラマブルコントローラ100A)は、複数のタスク511〜514と、1つ以上のタスクを実行するグループをタスクグループ(例えば、管理情報414,415)として、1つ以上のタスクグループを管理するオペレーティングシステム(例えば、OS413)とを記憶したメモリ19と、タイマ割込みによりタスクグループを切り替えて処理を実行するプロセッサ(例えば、CPU15)とを備える。プロセッサは、タスクグループごとにメモリ領域を指定するメモリ保護手段(メモリ保護12)を有し、メモリ19には、メモリ保護手段で指定されたメモリ領域に、タスクグループと関連付けて、実行を許可する処理または実行を禁止する処理を記録した制限リスト(例えば、制限リスト4521,4522)が記憶されている。プロセッサは、タスクグループを切り替える際に、メモリ保護手段で指定されたメモリ領域にアクセスし、タスクグループに関連付けられた制限リストに従い処理を実行することができる。
【0072】
図19は、プログラマブルコントローラのハードウェアの別の構成を示す図である。図19を参照して、図2のコントローラのハードウェアの別の構成例を説明する。図2ではCPU15が一つであり、このCPU15が複数のOSを切り替えて実行していた。本構成ではマルチコアで複数のCPU151,152を有している。本構成ではCPU151とCPU152のCPUがそれぞれOS411(OS1)とOS412(OS2)のOSを同時に実行する。また、それぞれのCPUは、それぞれのOSが持っている制限リストに従いタスク起動とシステムコール実行の制御を行うことができる。
【0073】
本実施形態によれば、タイマにより周期的に処理が実行されるプログラマブルコントローラにおいて、高いセキュリティが必要な処理のための実行制限情報と、ネットワーク接続などの処理のための実行制限情報をタイマにより切り替えることにより、高いセキュリティと使い勝手を両立させることができる。また、高いセキュリティが必要な処理と使い勝手を優先する処理との間でセキュリティを確保した通信手段を有する。
【0074】
本実施形態において、高いセキュリティが要求されるタスクグループに対してはきびしい制限が定義されたリストを用い、ネットワーク接続などを行う汎用的な処理のタスクグループに対しては緩い制限が定義されたリストを用いることにより、重要な処理に対しては高いセキュリティを確保しつつ、使い勝手を犠牲にしないコントローラを提供することができる。
【0075】
また、本実施形態によれば、タスクグループがタイマで自動的に切り替えて実行される。また、タスクグループ間はメモリ保護が実施されている。そのため、万が一ネットワーク接続の処理を行うタスクグループが不正アクセスにより誤動作することがあっても、重要な処理を行うタスクグループの実行は保証される。
【符号の説明】
【0076】
1 ハードウェア
3 OS切り替え層
11 IO
12 メモリ保護
12T メモリ保護テーブル
13 タイマ
14 通信部
15 CPU(プロセッサ)
16 実行レベル
18 バス
19 メモリ
21 ネットワーク
22 設定ツール(計算機)
23 システムコール制限設定画面
24 タスク起動制限設定画面
25 OS間通信用鍵設定画面
31 OS切り替えプログラム
32 OS間通信プログラム
33 タスクグループ切り替えプログラム
34 タスクグループ間通信プログラム
71 鍵情報
100,100A プログラマブルコントローラ
111,112,113 制御対象
221 ディスク
311 実行中OS情報
321,341 鍵照合手段
322 OS間通信領域
331 実行中タスクグループ
342 タスクグループ間通信領域
411,412,413 OS
414,415 管理情報(タスクグループ)
421,422 使用中の制限リスト情報(使用中の制限リスト)
431,432 制限リスト受信
441,442 制限リスト管理のプログラム
4511,4521,4522 制限リスト
45211 実行制限システムコールリスト(実行許可システムコールリスト)
45212 実行制限システムコールリスト(実行禁止システムコールリスト)
45221 実行制限タスクリスト(実行許可タスクリスト)
45222 実行制限タスクリスト(実行禁止タスクリスト)
511〜514 タスク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20