(57)【特許請求の範囲】
【請求項１】
実行中の１又は複数のプログラムのうちのいずれかから発せられたデータの入出力要求を該プログラムの識別子とともに受理する入出力要求受理手段と、
前記入出力要求が入力要求である場合、該入力要求のあったデータを入力し、前記プログラムに該データを与えるデータ入力手段と、
前記データ入力手段により入力された前記データが保護データであるか否かを判別する保護データ判別手段と、
前記データが保護データである場合、少なくとも前記プログラムの識別子を記録する保護データ入力記録手段と、
前記入出力要求が出力要求である場合、該出力要求を発した前記プログラムの識別子が前記保護データ入力記録手段に記録されているか否か調べ、記録されていないときは該出力要求を許諾し、記録されていたときは少なくとも該出力要求のあった出力先を示す情報に基づいて出力要求を許諾するか拒否するかを決定する決定手段と、
この決定手段により前記出力要求が許諾された場合にのみ、該出力要求のあったデータを該出力要求のあった出力先へ出力するデータ出力手段とを具備したことを特徴とするデータ入出力管理装置。
【請求項２】
前記プログラムは全て他のプログラムへ保護データを出力することのないものであり、
前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記出力先が他のプログラムからデータを読まれる可能性のないものとして予め定められているものであるならば、前記出力要求を許諾し、それ以外ならば、前記出力要求を拒否すると決定すると決定することを特徴とする請求項１に記載のデータ入出力管理装置。
【請求項３】
前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記出力先が他のプログラムであるならば、前記出力要求を許諾すると決定するとともに、その際、当該他のプログラムが前記保護データ入力記録手段に未だ記録されていなければ、当該他のプログラムを前記保護データ入力記録手段に記録することを特徴とする請求項１に記載のデータ入出力管理装置。
【請求項４】
前記データ入出力管理装置は、出力先を示す情報と、当該出力先への出力を許諾すべきデータの識別子又はこれを特定可能な情報とを対応付けて保持するテーブルを記憶するテーブル記憶手段を更に備え、
前記保護データ入力記録手段は、前記プログラムの識別子に対応付けて、当該プログラムへ与えられた保護データの識別子をも記憶し、
前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記テーブルを参照し、該プログラムの識別子に対応付けて前記保護データ入力記録手段に識別子が記録されている保護データの全てについて、該要求のあった出力先への出力が許諾すべきものとされているならば、前記出力要求を許諾し、それ以外ならば、前記出力要求を拒否すると決定すると決定することを特徴とする請求項１に記載のデータ入出力管理装置。
【請求項５】
前記プログラムは、新たな保護データの入力要求を発する場合、該保護データの入力を要求させるために、他のプログラムを新たに起動することを特徴とする請求項１に記載のデータ入出力管理装置。
【請求項６】
前記プログラムからの出力要求によらず前記プログラムの保持するデータを出力する機能を有する場合に、前記出力許諾手段は、データを出力しようとする該プログラムの識別子が前記保護データ入力記録手段に記録されていないときは、該プログラムのデータ出力を許諾し、記録されていたときは該プログラムのデータ出力を許諾しないことを特徴とする請求項１に記載のデータ入出力管理装置。
【請求項７】
実行中の１又は複数のプログラムのうちのいずれかから発せられたデータの入出力要求を該プログラムの識別子とともに受理するステップと、
前記入出力要求が入力要求である場合、該入力要求のあったデータを前記プログラムに与え、該データが保護データであるか否かを判別し、該データが保護データである場合、少なくとも前記プログラムの識別子を記録するステップと、
前記入出力要求が出力要求である場合、該出力要求を発した前記プログラムの識別子が前記保護データ入力記録手段に記録されているか否か調べ、記録されていないときは該出力要求を許諾するし、記録されていたときは少なくとも該出力要求のあった出力先を示す情報に基づいて出力要求を許諾するか拒否するかを決定するステップと、
前記出力要求が許諾された場合にのみ、該出力要求のあったデータを該出力要求のあった出力先へ出力するステップとを有することを特徴とするデータ入出力管理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、プログラムからの入力要求に応じてデータを入力し、プログラムからの出力要求に応じてデータを出力するデータ入出力管理装置及びデータ入出力管理方法に関する。
【０００２】
【従来の技術】
著作権を有する著作物の無断複製は、著作権法により禁じられている。しかしながら、著作物の無断複製を技術的に防ぐ手段が提供されていないため、それが行なわれるおそれがある。例えば、本、雑誌、新聞、データベースなどの著作物の全部または一部を複製することを技術的に防ぐことはできないため、法の規定に関わらず著作物の無断複製が行なわれるおそれがある。
【０００３】
著作物が、ネットワーク、フロッピーディスク、ＣＤ−ＲＯＭなどの媒体を活用して電子的に提供される場合、さらに無断複製は深刻な問題となる。それは、紙で提供された著作物の複製は、コストや手間がかかる、品質が劣化する、任意の形式での表示ができないなどの欠点があるのに対して、電子的に提供された著作物の複製は、コストや手間は小さく、品質の劣化も小さく、さらにデジタル著作物の場合、任意の形式での表示や部分的な利用が可能であり、無断複製された著作物は元の著作物と比べ遜色がないからである。
【０００４】
ところが、電子的な提供された著作物の無断複製を技術的に防ぐ手段は、従来の技術では備わっていない。例えば、著作物を計算機にロードして閲覧する場合、著作物を読み込みこれをユーザに提示するプログラムは、出力要求を発生することにより著作物を外部のポートや他のプロセス、ファイルなどに書き出すことができる。これは、一旦プログラムに著作物を与えたら、その著作物をどのように使用するかはプログラムに委ねられており、プログラムの動作を規定する手段が提供されていないためである。このため、著作物を電子的に形式のままの転載することが可能である。
【０００５】
これを防ぐためには、例えばプログラムからのデータ出力要求をすべて拒絶すれば良いが、これではその計算機で動く全てのプログラムからのデータ出力が不可能になり、著作物アプリケーション以外のプログラムの動作に支障が生じる。また、ディスプレイのような媒体に著作物を表示する場合にもプログラムは出力要求を出すため、データ出力要求をすべて禁止すると著作物の表示ができないという問題が生じる。
【０００６】
著作物に限らず、一般に、あるデータを読むことは許諾するが、データの複製やそのデータを基にしたデータの生成は禁止したい場合に、これを実現する手段が提供されていない。以下、読むことは可能であるが複製を禁じるデータを、「保護データ」と呼ぶ。プログラムに対して保護データが与えられると、このプログラムは、読み込んだ保護データをファイルに書き込んだり、ポートから外部に出力したり、プロセス間通信により他のプログラムに与えることが可能であり、これにより保護データの複製を作られるおそれがある。
【０００７】
これを防ぐには、例えばすべての出力要求を拒絶すればよいが、これでは保護データを読んでいないプログラムからのデータ出力も不可能となり支障を生じる。また、出力要求を拒絶すると、複製を作成されるおそれのないディスプレイのような媒体への保護データの出力も禁止され、データ表示が全くできないという問題が生じる。
【０００８】
【発明が解決しようとする課題】
以上のように、従来のデータ入出力管理機構では、著作物データに対して画一的なアクセス制御しかできなかった。また、著作物データの出力を禁じたい場合、すべての出力装置に対するすべてのファイルの出力を禁じる形でしか実現できなかった。
【０００９】
したがって、従来のデータ入出力管理機構では、著作物データに対する読出し要求のみを許可する、あるいは複製されるおそれのないディスプレイのような媒体への出力のみ許可するといった、著作物データに対するきめ細い管理を行うことができなかった。
【００１０】
本発明は、上記事情を考慮してなされたものであり、指定されたデータに関して読むことやディスプレイ等の表示装置に表示することは可能であるが、複製することはできず、かつ指定されたデータ以外に関しては通常の出力を可能とするデータ入出力管理装置及びデータ入出力管理方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明に係るデータ入出力管理装置は、実行中の１又は複数のプログラムのうちのいずれかから発せられたデータの入出力要求を該プログラムの識別子とともに受理する入出力要求受理手段と、前記入出力要求が入力要求である場合、該入力要求のあったデータを入力し、前記プログラムに該データを与えるデータ入力手段と、前記データ入力手段により入力された前記データが保護データであるか否かを判別する保護データ判別手段と、前記データが保護データである場合、少なくとも前記プログラムの識別子を記録する保護データ入力記録手段と、前記入出力要求が出力要求である場合、該出力要求を発した前記プログラムの識別子が前記保護データ入力記録手段に記録されているか否か調べ、記録されていないときは該出力要求を許諾し、記録されていたときは少なくとも該出力要求のあった出力先を示す情報に基づいて出力要求を許諾するか拒否するかを決定する決定手段と、この決定手段により前記出力要求が許諾された場合にのみ、該出力要求のあったデータを該出力要求のあった出力先へ出力するデータ出力手段とを具備したことを特徴とする。
好ましくは、前記プログラムは全て他のプログラムへ保護データを出力することのないものであり、前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記出力先が他のプログラムからデータを読まれる可能性のないものとして予め定められているものであるならば、前記出力要求を許諾し、それ以外ならば、前記出力要求を拒否すると決定すると決定するようにしてもよい。
好ましくは、前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記出力先が他のプログラムであるならば、前記出力要求を許諾すると決定するとともに、その際、当該他のプログラムが前記保護データ入力記録手段に未だ記録されていなければ、当該他のプログラムを前記保護データ入力記録手段に記録するようにしてもよい。
好ましくは、前記データ入出力管理装置は、出力先を示す情報と、当該出力先への出力を許諾すべきデータの識別子又はこれを特定可能な情報とを対応付けて保持するテーブルを記憶するテーブル記憶手段を更に備え、前記保護データ入力記録手段は、前記プログラムの識別子に対応付けて、当該プログラムへ与えられた保護データの識別子をも記憶し、前記決定手段は、前記出力要求を発したプログラムの識別子が前記保護データ入力記録手段に記録されていたときにおいて、前記テーブルを参照し、該プログラムの識別子に対応付けて前記保護データ入力記録手段に識別子が記録されている保護データの全てについて、該要求のあった出力先への出力が許諾すべきものとされているならば、前記出力要求を許諾し、それ以外ならば、前記出力要求を拒否すると決定すると決定するようにしてもよい。
好ましくは、前記プログラムは、新たな保護データの入力要求を発する場合、該保護データの入力を要求させるために、他のプログラムを新たに起動するようにしてもよい。
好ましくは、前記プログラムからの出力要求によらず前記プログラムの保持するデータを出力する機能を有する場合に、前記出力許諾手段は、データを出力しようとする該プログラムの識別子が前記保護データ入力記録手段に記録されていないときは、該プログラムのデータ出力を許諾し、記録されていたときは該プログラムのデータ出力を許諾しないようにしてもよい。
【００１５】
また、本発明に係るデータ入出力管理方法は、実行中の１又は複数のプログラムのうちのいずれかから発せられたデータの入出力要求を該プログラムの識別子とともに受理するステップと、前記入出力要求が入力要求である場合、該入力要求のあったデータを前記プログラムに与え、該データが保護データであるか否かを判別し、該データが保護データである場合、少なくとも前記プログラムの識別子を記録するステップと、前記入出力要求が出力要求である場合、該出力要求を発した前記プログラムの識別子が前記保護データ入力記録手段に記録されているか否か調べ、記録されていないときは該出力要求を許諾するし、記録されていたときは少なくとも該出力要求のあった出力先を示す情報に基づいて出力要求を許諾するか拒否するかを決定するステップと、前記出力要求が許諾された場合にのみ、該出力要求のあったデータを該出力要求のあった出力先へ出力するステップとを有することを特徴とするデータ入出力管理方法。
【００１６】
【作用】
本発明では、プログラムからデータの入出力要求が発せられたとき、入出力要求受理手段にてこれを受理し、入力要求である場合にデータ入力手段にてデータを読み出し、保護データ判別手段によりこのデータが保護データであるか否かを判別し、保護データであれば、少なくとも、保護データ入力記録手段に該プログラムの識別子を記録する。これによって、保護データ入力記録手段に識別子を記録された各プログラムが保護データを読んだことを管理することができる。
プログラムから入出力要求が出力要求である場合、該出力要求を発したプログラムの識別子が保護データ入力記録手段に記録されているか否か調べ、記録されていないときは（すなわち、該プログラムが保護データを読んでいないときは）、出力要求を許諾してよい。他方、記録されていたときは（すなわち、保護データを読んでいるときは）、少なくとも出力要求のあった出力先を示す情報に基づいて許諾するか否かを決定する。
許諾されたデータは、データ出力手段により出力される。これによって、保護データを読んでいないプログラムについては、通常の出力要求が許諾され、読んだプログラムについては、複製の可能性がない場合のみ出力要求が許諾される。
従って、本発明によれば、保護データは読むことは可能であるが複製することはできず、ディスプレイ等の表示装置には表示することが可能であり、かつ保護データ以外は通常の出力を可能とすることができる。
【００２０】
【実施例】
以下、図面を参照しながら本発明の実施例を説明する。
図１は、本発明の実施例に係るデータ入出力管理装置の概略構成図である。図１のように、本実施例のデータ入出力管理装置は、入出力要求受理部１、データ入力部２、保護データ判別部３、保護データ入力記録部４、出力許諾判定部５、データ出力部６からなる。
【００２１】
図２は、本実施例の動作を示すフローチャートである。
入出力要求プログラム１１が要求を発生すると、入出力要求受理部１はこの要求を受理し、入出力要求プログラム１１の識別子および要求の種類を判別する（ステップＳ２１）。
【００２２】
通常、ＯＳ内部にはプロセスからのシステムコールを受け取りシステムコールの種類を判別するプログラムが提供されているが、上記の入出力要求受理部１はこれに相当するものである。入出力要求プログラム１１は、入出力要求受理部１と同じ計算機にて実行されていても、別の計算機にて実行されていても良い。例えば、同じ計算機にて実行されている場合は、プロセスＩＤを識別子とすればよく、別の計算機にて実行されている場合は、ホストＩＤとプロセスＩＤの対を識別子とすればよい。要求の種類の受渡しは、要求を発する際に特定のレジスタに要求の識別子を書き込む、あるいは要求の先頭で識別子を送るなど、あらかじめ定めた手続きによって入出力要求プログラム１１が指定し、これを入出力要求受理部１が読み出して判別すれば良い（ステップＳ２２）。
【００２３】
入出力要求受理部１により入力要求であることがわかると、データ入力部２が要求されているデータを入力する（ステップＳ２３）。
データ入力部２は、該データがディスク、ＣＤ−ＲＯＭ、テープなどの記憶媒体に記憶されているなら、ここから読み出す。また、ネットワークのような蓄積型でない媒体からデータを読んできても良い。ＯＳにおけるデバイスドライバと呼ばれるソフトが、これらに相当する。
【００２４】
保護データ判別部３は、入力を要求されたデータが保護データであるか否かを判別する（ステップＳ２４）。
本実施例では、読み込まれるデータは記憶媒体にファイルとして記憶されており、保護データを含むファイルはあらかじめ定められた形式のヘッダを有しているものとする。従って、保護データ判別部３は読み込んだファイルが本形式のヘッダを有していれば保護データであり、そうでなければ保護データではないと判別すれば良い。このヘッダの形式は、あらかじめ保護データ判別部３に記録されていても良いし、別のファイルに記録されていて保護データ判別部３がそのファイルを参照して知っても良い。また、別のプログラムが管理し、保護データ判別部３に通知しても良い。
【００２５】
また、別の判別方法をとってもよい。例えば、ファイル自体に保護データを格納しているか否かを判別するための情報が付加してあるのではなく、データが格納されるファイルの名前により保護データかそうでないかが決定される、あるいはファイルの記憶される媒体の種類、記憶媒体の中の記憶位置により決定されるなどの方式でも良い。
【００２６】
図３は、保護データを含むファイルが有しているヘッダの例を示す図である。本実施例では、保護データを格納するファイルには、定まった形式のヘッダが付加されているものとする。このヘッダを所有するファイルに格納されているデータは保護データであり、所有していないファイルに格納されているデータは保護データではない。ヘッダには、保護データを含むファイルであることを示す番号、データファイルを示すデータファイルＩＤ、製作者を示す製作者ＩＤ、暗号化された保護データを復号するための鍵を特定するための復号鍵番号、などが記述されている。
【００２７】
次に、判別の結果、保護データを含むものであった場合は、保護データ入力記録部４に記録を行う（ステップＳ２５）。
図４は、本実施例の保護データ入力記録部４の構造の一例を示す図である。該データが保護データであると判別されたら、保護データ入力記録部４に、入出力要求プログラム１１の識別子を記録する。すでに当該識別子が記録されていれば、記録しなくてもよい。本実施例では、本保護データ入出力管理方式から少なくとも一つの保護データを読んだプロセスのＩＤがリスト構造として記録されている。
【００２８】
例えば図４では、図中２１のポインタが示すリスト（図中の２２）に、プロセスＩＤ（図中の２３）である“５”と次のリンク先へのポインタ（図中の２４）が格納されている。リンク先がない場合は、そのことを示すデータを格納する（図中の２５）。
【００２９】
最後に、入出力要求プログラム１１にデータを与える（ステップＳ２６）。
データが暗号化されていた場合、これを復号して渡しても良い。このためには、ヘッダに記載されている復号鍵の番号と暗号化されたデータを復号化部に渡す。これは、ソフトウェアにより実現しても、セキュリティを高めるためにハードウェアにより実現しても良い。入出力要求プログラム１１が別の計算機にて動作している場合は、復号鍵と共に暗号化されたデータを与え、入出力要求プログラム１１が動作している計算機にて復号しても良い。
【００３０】
一方、入出力要求プログラム１１が出力要求を発生すると、入出力要求受理部１が出力要求であることを検出する（ステップＳ２２）。
出力許諾判定部５は、該出力要求を発生した入出力要求プログラム１１の識別子が保護データ入力記録部４に記録されているかどうかを調べる（ステップＳ２７）。
【００３１】
記録されていなければ、該入出力要求プログラム１１は保護データを読んでいないから、保護データを出力する可能性はない。このため出力要求を許諾して良い（ステップＳ２８）。
【００３２】
これに対し、入出力要求プログラム１１の識別子が保護データ入力記録部４に記録されていれば、該入出力要求プログラム１１は保護データを読んだプログラムであるから、出力要求先によって出力要求を認めるかそうでないかを判断する（ステップＳ２９）。
【００３３】
出力先が別のプログラムあるいはディスプレイのような他のプログラムから直接はデータを読めない出力機器であれば、出力要求を許諾して良い（ステップＳ３０）。
【００３４】
さもなければ、保護データが複製されるおそれがあるので、出力は拒否される（ステップＳ３１）。
出力要求が許可される（ステップＳ２８，Ｓ３０）と、データ出力部６により出力が行われる（ステップＳ３２）。
【００３５】
従って、保護データを読んだことのないプログラムからは自由にデータの出力ができ、保護データを読んだプログラムからの出力はディスプレイのような恒久的でない対象にのみ許し、他への出力は禁じることができる。これにより、保護データが複製されるおそれがなく、あるいは保護データを読んだことのないプログラムからは自由にデータの出力ができる入出データ力管理方式が実現できる。
【００３６】
（第２の実施例）
第１の実施例では、出力許諾判定部５は、入出力要求プログラム１１の識別子が保護データ入力記録部４に記録されている場合、出力先がディスプレイであるかどうかを判別して出力を諾否を判定している。しかし、出力先は固定されない方が良い場合もある。例えば、一つの計算機が複数のディスプレイを所持している場合、すべてのディスプレイに出力したいとは限らない。また、ディスプレイ以外の特定の機器に保護データの出力をしたい場合もある。このような保護データの出力が許諾される出力先の変更を可能とするためには、保護データの許諾出力先を許諾出力先指定部７にて指定できるようにすればよい。第２の実施例では、これを実現するための一例を示す。
【００３７】
図５は、第２の実施例のデータ入出力管理装置の概略構成図である。本実施例においては、第１の実施例の構成に許諾出力先指定部７が加わり、出力許諾判定部５は、保護データ入力記録部４および許諾出力先指定部７を参照するところが第１の実施例と異なる。
【００３８】
図６は、本実施例の許諾出力先指定部７の一例である。これによって、保護データの出力が許諾される出力先のテーブルが与えられる。出力許諾判定部５は、出力要求先がこのリストに含まれるなら出力を許諾し、含まれなければ拒絶する。本実施例では、“／ｄｅｖ／ｃｏｎｓｏｌｅ”のようにＯＳが管理するデバイスの仮想的な名前で指定したが、これに限定されず、ポート番号など一意に出力先が特定できる識別子として出力先を指定すれば良い。本出力先テーブルは、不当に変更されると保護データの複製のおそれがあるので、ＯＳが管理する等の方法で高いセキュリティを保つ必要がある。
【００３９】
以上のように、本実施例によれば、保護データの出力が許諾される出力先を変更することも可能となる。
（第３の実施例）
第２の実施例では、全ての保護データに関して出力可能な出力先は共通である。しかし、ある保護データはある出力先に出力したいが、別の保護データはその出力先には出力できないようにしたいような場合もある。この場合には、許諾出力先指定部７に保護データ毎の許諾出力先を指定しておくと共に、保護データ入力記録部４にて各プログラムに与えられた保護データの識別子を記録しておき、出力許諾判定部５はこれらを参照して出力許諾を判定すれば良い。第３の実施例では、これを実現するための一例を示す。
【００４０】
図７は、本実施例の保護データ入力記録部４の構造の一例を示す図である。該データが保護データであると判別されたら、保護データ入力記録部４に、入出力要求プログラム１１の識別子を記録する。すでに該入出力要求プログラム１１の識別子が記録されていれば、その入出力要求プログラム１１の読んだ保護データのリストに該データファイルＩＤを記録する。該入出力要求プログラム１１の識別子が記録されていなければ、新たに記録し、その入出力要求プログラム１１の読んだ保護データとして該データファイルＩＤを記録する。
【００４１】
例えば図７では、図中３１のポインタが示すリスト（図中の３２）に、プロセスＩＤ（図中の３３）である“５”、データファイルＩＤのリストのリンク先へのポインタ（図中の３４）、次のプロセスＩＤのリストのリンク先へのポインタ（図中の３５）が格納されている。図中３６のリストには、データファイルＩＤ（図中の３７）である“１２３”、次のリンク先へのポインタ（図中の３８）が格納されている。同様にして、図７では、データファイルＩＤが５、２０、２５、４０のプロセスが保護データを読んだプログラムとしてリスト構造として記録されており、さらにＩＤ５のプロセスは、データファイルＩＤが１２３と２５の２種類の保護データを読んでおり、ＩＤ２０のプロセスは、データファイルＩＤが８の保護データを、ＩＤ２５のプロセスは、データファイルＩＤが１２３の保護データを、ＩＤ４０のプロセスは、データファイルＩＤが８５の保護データを読んでいることがわかる。なお、リンク先がない場合は、そのことを示すデータを格納する（図中の３９，４０）。
【００４２】
図８は、本実施例の許諾出力先指定部７の一例である。これは、出力先とそれへの出力が許諾されるデータファイルＩＤの対応表である。第１行目は、すべてのデータファイルが、“／ｄｅｖ／ｃｏｎｓｏｌｅ”に出力可能であることを示す。第２行目は、データファイルＩＤが１２３か６５であれば、“／ｄｅｖ／ｔｔｙ０”に出力可能であることを示す。第３行目は、データファイルＩＤが０以上１２７以下であるものは、“／ｄｅｖ／ｆｂ”に出力可能であることを示す。第４行目は、データファイルＩＤが０以上１２７以下でないものは、“／ｄｅｖ／ｗｉｎ１”に出力可能であることを示す。
【００４３】
出力許諾判定部５は、入出力要求プログラム１１の識別子から保護データ入力記録部４を検索し、そのプログラムが読んだデータファイルＩＤを得る。一つのデータファイルしか記録されていない場合は、許諾出力先指定部７を検索し、そのデータファイルは要求された出力先に出力することが許諾されているか否かを調べる。例えば、“プロセス２０”から、“／ｄｅｖ／ｆｂ”に出力要求があった場合、出力許諾判定部５は次の処理を行なう。まず、保護データ入力記録部４を検索し、“プロセス２０”は“データファイル８”を読んでいることがわかる。次に、許諾出力先指定部７を検索すると、“データファイル８”は、“／ｄｅｖ／ｆｂ”への出力が許諾されている。従って“プロセス２０”から、“／ｄｅｖ／ｆｂ”への出力要求は許諾して良い。
【００４４】
出力許諾判定部５が、入出力要求プログラム１１の識別子から保護データ入力記録部４を検索し、そのプログラムが読んだデータファイルが２つ以上ある場合、許諾出力先指定部７を検索するが、これらすべてのデータファイルの要求出力先への出力が許諾されている場合のみ、出力を許諾する。例えば、“プロセス５”から、“／ｄｅｖ／ｔｔｙ０”に出力要求があった場合、出力許諾判定部５は次の処理を行なう。まず、保護データ入力記録部４を検索し、“プロセス５”は“データファイル１２３“と“データファイル２５“を読んでいることがわかる。次に、許諾出力先指定部７を検索すると、“データファイル１２３“は、“／ｄｅｖ／ｔｔｙ０“への出力が許諾されているが、“データファイル２５“は、“／ｄｅｖ／ｔｔｙ０“への出力が許諾されていない。従って、もし出力を許諾すると、“データファイル２５“が格納する保護データが禁じられている出力先に出力されるおそれがある。よって、出力許諾判定部５は、“プロセス５“からの“／ｄｅｖ／ｔｔｙ０”への出力要求は拒絶する。
【００４５】
以上のように、本実施例によれば、保護データごとに出力が許諾される出力先が指定でき、許諾された以外の出力先には出力できないようにすることが可能となる。
【００４６】
（第４の実施例）
第１の実施例では、保護データはプログラムからの入力要求によってしか起こらないものとしたが、第２の実施例では、プログラム間で通信を行ないデータの授受を行なう機能をＯＳが有している場合のデータ入出力管理方式を取り上げる。プログラム間でデータの授受を行なう機能を有するＯＳにおいてプログラムが実行されている場合、保護データを読んだプログラムが他のプログラムにデータを渡すことができる。このため、プログラム間での通信も管理しなければならない。
【００４７】
図９は、第４の実施例のデータ入出力管理装置の概略構成図である。本実施例においては、出力許諾判定部５は、保護データ入力記録部４の記録を参照するだけでなく、変更もする点が、第１の実施例と異なる。
【００４８】
図１０は、本実施例の動作を示すフローチャートである。このフローチャートは、図２のフローチャートと大部分が同様のものであり、図２のステップＳ３１の処理内容を変更したものである。ここでは、図２のフローチャートと異なる部分だけ説明する。
【００４９】
保護データを読んだプログラムが出力要求を行ない（ステップＳ２２，ステップＳ２７）、その出力先がディスプレイのような他のプログラムがデータを読み出すことができない対象でない場合（ステップＳ２９）、出力許諾判定部５は、出力先が他のプログラムであるかどうかを調べる（ステップＳ４１) 。
【００５０】
もしそうであれば、出力先のプログラムも保護データを受けとる可能性があるので、出力先プログラムの識別子が保護データ入力記録部４に記録されていなければこれを記録する（ステップＳ４２）。そして、データ出力部６によりプログラム間でのデータの授受を行なえば良い（ステップＳ３２）。
【００５１】
ステップＳ４１にて、もし出力先は他のプログラムでなければ、出力は拒否される（ステップＳ４３）。
従って、保護データを読んでいないプログラムからは、従来通りに自由にデータの転送ができる。保護データを読んだプログラムからは、ディスプレイのような他のプログラムからはデータを読み出すことのできない対象にはデータの出力ができ、他のプログラムに対してはデータの授受ができるが、受けとったプログラムも以降では保護データを読んだプログラムとして扱われる。それ以外の対象には、データは出力されない。これにより、保護データの複製が防止できる。
【００５２】
（第５の実施例）
第１の実施例や第４の実施例では、保護データを読んでいないプログラムからの出力要求は許諾し、保護データを読んだプログラムからの出力要求は保護データの複製が起こらないような状況でのみ許諾した。したがって、保護データを読んだプログラムからは、たとえ保護データではないデータであってもファイルや外部ポートのような対象に出力することは拒否される。
【００５３】
本実施例では、プログラムから出力要求が発せられた時、その出力データが保護データに起因するものであるかそうでないかによって、異なった出力制御ができるようにしたものである。これによって、例えばアプリケーションプログラムが保護データを読んでユーザに表示し、ユーザはそれに関連するメモを作成したいときにメモを保存することがでるようになるなど、実用上多大なる効果がある。
【００５４】
第５の実施例は、プログラムは保護データを読み込むこともでき、かつ保護データに起因しないデータをファイルや外部ポートのような対象に出力することができるようにしたものである。
【００５５】
図１１は、第５の実施例の概略構成図である。
まず、保護データを読んでいないプログラム１（図中の１１）が保護データの入力を要求する時、まずプログラム２（図中の１２）を生成する。
【００５６】
例えば、ＵＮＩＸでは、ｆｏｒｋというシステムコールによりプログラム１を実行しているプロセスの複製を作成してプログラム２と考えれば良い。他のＯＳにおいても、新たなるプロセスやタスクの生成をＯＳに対して要求すれば良い。
【００５７】
次に、プログラム２から保護データ入出力要求を発生する。
この要求は入出力要求受理部１にて受理され、第１の実施例や第４の実施例と同様に、保護データ入力記録部４に、プログラム２に保護データが与えられたことが記録され、プログラム２は保護データを読むことができる。
【００５８】
プログラム２からデータ出力要求が発生された場合には、第１の実施例や第２の実施例と同様に処理され、ファイルや外部ポートのような対象にデータを出力することはできない。
【００５９】
しかしながら、プログラム１からデータ出力要求が発生された場合は、プログラム１は保護データを読んでいないため、対象にかかわらずデータを出力することができる。従って、ファイルや外部ポートのような対象に出力したい保護する必要のないデータは、プログラム１が所持することにすれば、自由に出力することができる。
【００６０】
これは、例えば次のようにすれば実現できる。まず、プログラム１は、保護データを読んでいない状態で実行を開始する。保護データの入力を行なう際は、新たなプログラム２を生成し、このプログラム２に入力要求を発生させる。ユーザからの入力や保護データ以外のデータの入力は、保護データを入力していないプログラム１が行なう。これによって、保護データと保護されていないデータを別のプログラムに分離して管理することができる。従って、保護されていないデータは、ファイルや外部ポートのような対象に出力することができる。
【００６１】
ここで、保護データを２回以上読み込む時は、次の３通りの方式が考えられる。
・以前に保護データを読んだプログラム２が保護データを読む方式
・以前に保護データを読んだプログラム２やプログラム１とは別の第３のプログラムが保護データを読む方式
・以前に読んだ保護データとヘッダの内容が等価な保護データを読む時は、以前に保護データを読んだプログラム２が読み、さもなければ新たな第３のプログラムが保護データを読む方式
いずれの方式においても、保護されてなくファイルや外部ポートのような対象に出力する可能性のあるデータを所有するプログラムと、保護データを所有するプログラムが分離されていれば良い。
【００６２】
（第６の実施例）
第１〜第５の実施例では、該プログラムからの出力要求時にデータ出力の許諾判定を行う実施例を示した。ところが、該プログラムの所持するデータを該プログラムからの出力要求なしに出力する機能をデータ入出力管理装置が有している場合もある。
【００６３】
例えば、計算機システムにおいて、実際に存在する物理メモリの量を上回るプログラムを実行するために、現在実行が停止されているプログラムのテキストやデータはディスクなどの二次記憶に退避し、必要になったときにメモリにロードする手法がとられていることがある。これらは、ページングやスワッピングよ呼ばれる手法であるが、該プログラムからの出力要求がないにもかかわらず、該プログラムのデータが二次記憶に退避される。こういった機能を有する場合に、保護データが二次記憶に退避されたところで二次記憶媒体を取り外し、他の計算機につなぎ読み出すことにより、メモリ上に展開されていた保護データを複写されるという問題がある。これを防ぐためには、保護データがロードされているメモリ上の領域は二次記憶に退避しないようにすれば良い。
【００６４】
該プログラムの所持するデータが該プログラムからの出力要求なしに出力される別の例として、次のような場合がある。プログラムの開発を支援するために、異常事態が起こったときにプログラムのデータをファイルに複写する機能を提供する計算機システムがある。この機能は、例えばＵＮＩＸではコアダンプと呼ばれる。コアダンプは、プログラムのデータをファイルに記録するため、これを読み出すことにより元のデータを再生することが可能である。
【００６５】
図１２は、第６の実施例のデータ入出力管理装置の概略構成図である。本実施例においては、データ入出力管理装置が、データ出力要求部１７を有する。データ出力要求部１７は、上で述べた二次記憶への退避、コアダンプの作成などの目的に、プログラムの識別子とデータ出力範囲を指定してデータ出力を要求する。出力許諾判定部５は、データ出力要求部１７からの出力要求を受けると、図２のステップＳ２７に記した入力要求受理部１からの要求を受けた場合と同様に、保護データ入力記憶部４を参照し、該プログラムが記録されているかどうかを調べる。記録されていなければ、該プログラムは保護データを読んでいないから、出力を許諾しても保護データが出力される可能性はない。このため出力要求を許諾して良い。これに対し、該プログラムの識別子が保護データ入力記憶部４に記録されていれば、該プログラムは保護データを読んだプログラムであるから、図２のステップＳ２９と同様に出力要求先によって出力要求を認めるかそうでないかを判断する。出力先が別のプログラムあるいはディスプレイような他のプログラムから直接はデータを読めない出力機器であれば、出力要求を許諾して良い（図２のステップＳ３０）。さもなければ、保護データが複製されるおそれがあるので、出力は拒否される（図２のステップＳ３１）。出力要求が許可されると、データ出力部６により出力される（図２のステップＳ３２）。なお、入出力プログラム１１から入出力要求があったときの１から６の動作は、第１の実施例で述べたものと同等である。
【００６６】
以上のように、該プログラムの所持するデータを該プログラムからの出力要求なしに出力する機能をデータ入出力管理装置が有している場合でも、保護データを読んだことのないプログラムからは自由にデータの出力ができ、保護データを読んだことのないプログラムからの出力はディスプレイのような恒久的でない対象にのみ許し、他への出力は禁じることができる。これにより、保護データが複製するおそれがなく、かつ保護データを読んだことのないプログラムからは自由にデータの出力ができる入出力データ管理方式が実現できる。
【００６７】
また、出力要求は、明示的にデータを書き出す要求だけに限定されない。
例えば、ＵＮＩＸのシステムコール「ｆｏｒｋ」のように、プログラムの複製を作る要求が発生されると、元のプログラムデータ部に複製される。この場合も、データが別のプログラムに出力されるわけであるから、出力要求に含まれるものと解釈する。
【００６８】
また、ファイルの属性（名前、モード、時刻など）を変えるような要求も、ファイルシステムに対し、新たに設定する属性を出力する要求であるので、出力要求に含まれるものと解釈する。
【００６９】
なお、ここで取り上げた実施例ではプロセスからの要求は要求受理部１で一括して扱ったが、入力要求を受理する入力要求受理部１と出力要求を受理する出力要求受理部１とに独立させれば、それぞれは図２や図１０のステップＳ２２のような要求の種類を判別する機能は持たなくても良い。
なお、本発明は上述した各実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【００７０】
【発明の効果】
本発明によれば、各プログラムが保護データを読んだか否かを管理するとともに、プログラムから出力要求を受けた場合、該プログラムが保護データを読んだか否かを調べ、および読んだものであるときには出力先を調べた上で、出力要求の諾否を決定するようにするので、指定されたデータに関して、読むことは可能であるが複製することはできず、ディスプレイ等の表示装置に表示することが可能であり、かつ指定された以外のデータに関しては通常の出力を可能とすることができる。
【図面の簡単な説明】
【図１】第１の実施例の概略構成を示す図
【図２】第１の実施例の動作を示すフローチャート
【図３】保護データを含むファイルに付加されるヘッダの例を示す図
【図４】保護データ入力記録部４の例を示す図
【図５】第２の実施例の概略構成を示す図
【図６】許諾出力先指定部の一例を示す図
【図７】第３の実施例の保護データ入力記録部の一例を示す図
【図８】許諾出力先指定部の一例を示す図
【図９】第４の実施例の概略構成を示す図
【図１０】第４の実施例の動作を示すフローチャート
【図１１】第５の実施例の概略構成を示す図
【図１２】第６の実施例の概略構成を示す図
【符号の説明】
１…入出力要求受理部、２…データ入力部、３…保護データ判別部、４…保護デー入力記録部、５…出力許諾判定部、６…データ出力部、７…許諾出力先指定部、１７…データ出力要求部
【図１】
0003637080.tif 000002
【図２】
0003637080.tif 000003
【図３】
0003637080.tif 000004
【図４】
0003637080.tif 000005
【図５】
0003637080.tif 000006
【図６】
0003637080.tif 000007
【図７】
0003637080.tif 000008
【図８】
0003637080.tif 000009
【図９】
0003637080.tif 000010
【図１０】
0003637080.tif 000011
【図１１】
0003637080.tif 000012
【図１２】
0003637080.tif 000013