(57)【特許請求の範囲】
【請求項１】
乱数列を用いて元データを暗号化する暗号化装置において、
予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成手段と、
前記予め定められたデータ長単位で元データの一部を順次取得し、前記元データの一部の各々を、前記乱数列作成手段で生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて暗号化し、該予め定められたデータ長単位の暗号データを順次作成する暗号化手段と、
前記暗号化手段で作成された前記データ長単位の暗号データを分割して、分割された暗号データをパケットのペイロードに含め、該分割された暗号データの送信先と、該分割された暗号データが前記元データのどの位置のデータを暗号化したかを示すオフセット位置と、該元データを再生開始してから該分割された暗号データの部分を再生するまでの時間を示すタイムスタンプと、前記分割された暗号データの暗号化の際に用いられた乱数列の前記鍵と、を前記パケットのヘッダに含めたパケットを生成し、該パケットを通信網に送出する送信手段と、
を有していることを特徴とする暗号化装置。
【請求項２】
請求項１に記載の暗号化装置において、
前記乱数列作成手段は、前記暗号化手段が前記データ長単位の元データの一部を取得する前に、前記予め定められたデータ長の倍数単位の乱数列を作成する、
ことを特徴とする暗号化装置。
【請求項３】
請求項１及び２のいずれか一項に記載の暗号化装置において、
前記元データが記憶される記憶装置を有し、
前記暗号化手段は、前記記憶装置のデータ入出力単位の倍数を前記データ長単位として、該記憶装置から前記元データの一部の各々を取得し、該データ長単位の元データの一部を暗号化する、
ことを特徴とする暗号化装置。
【請求項４】
乱数列を用いて元データが暗号化された暗号データを、該乱数列を用いて復号化する復号化装置において、
予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成手段と、
前記予め定められたデータ長単位の暗号データの一部と、該暗号データの一部を再生するまでの時間を示すタイムスタンプを含むヘッダと、を備えるパケットを順次取得し、前記タイムスタンプが一定以上先の時間を示す場合には、前記予め定められたデータ長の倍数のデータ長となるまで前記暗号データの一部を蓄積させた後、各暗号データの一部を、前記乱数列作成手段で生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて順次復号化する復号化手段と、
を有していることを特徴とする復号化装置。
【請求項５】
請求項４に記載の復号化装置において、
前記乱数列作成手段は、前記復号化手段が前記データ長単位の暗号データの一部を取得する前に、前記予め定められたデータ長の倍数単位の乱数列を作成する、
ことを特徴とする復号化装置。
【請求項６】
請求項４及び５のいずれか一項に記載の復号化装置において、
前記暗号データ又は該暗号データが復号化されたデータが記憶される記憶装置を有し、
前記復号化手段は、前記記憶装置のデータ入出力単位の倍数を前記データ長単位として、前記暗号データの一部を取得し、該データ長単位の暗号データの一部を復号化する、
ことを特徴とする復号化装置。
【請求項７】
請求項１に記載の暗号化装置と、
前記暗号化装置で暗号化された暗号データを復号化する復号化装置と、
を備え、
前記復号化装置は、
前記暗号化装置からの１以上の前記パケットを受信し、各パケットを分解して前記分割された暗号データを取り出す受信手段と、
前記受信手段が取り出した前記各パケットを分解して得られた前記分割された暗号データを、該各パケットのヘッダに含まれている前記オフセット位置に従って、前記分割された暗号データを順に並べて、前記データ長単位の暗号データの一部を得る暗号データ取得手段と、
前記分割された暗号データの暗号化の際に用いられた乱数列の前記鍵を用いて、前記データ長単位の倍数単位で、乱数列を作成する乱数列作成手段と、
前記暗号データ取得手段で得られた前記データ長単位の暗号データの一部を、前記乱数列作成手段で生成された前記データ長単位の倍数のデータ長の乱数列のうち、該データ長単位のデータ長の乱数列を用いて順次復号化する復号化手段と、を有している、
ことを特徴とする暗号システム。
【請求項８】
請求項７に記載の暗号システムにおいて、
前記復号化装置は、
前記復号化手段が復号化したデータを再生する再生手段、又は該復号化したデータを記憶する記憶手段を有している、
ことを特徴とする暗号システム。
【請求項９】
コンピュータに、乱数列を用いて元データを暗号化する手順を行わせる暗号プログラムであって、
前記コンピュータを、制御手段と、記憶手段と、入力手段として機能させ、
前記制御手段に対して、
予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成ステップと、
前記コンピュータの入力手段又は記憶手段から、前記予め定められたデータ長単位で元データの一部を順次取得し、前記元データの一部の各々を、前記乱数列作成ステップで生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて暗号化し、該予め定められたデータ長単位の暗号データを順次作成する暗号化ステップと、
前記暗号化ステップで作成された前記データ長単位の暗号データを分割して、分割された暗号データをパケットのペイロードに含め、該分割された暗号データの送信先と、該分割された暗号データが前記元データのどの位置のデータを暗号化したかを示すオフセット位置と、該元データを再生開始してから該分割された暗号データの部分を再生するまでの時間を示すタイムスタンプと、前記分割された暗号データの暗号化の際に用いられた乱数列の前記鍵と、を前記パケットのヘッダに含めたパケットを生成し、該パケットを通信網に送出する送信ステップと、
を実行させることを特徴とする暗号プログラム。
【請求項１０】
請求項９に記載の暗号プログラムにおいて、
前記乱数列作成ステップでは、前記暗号化ステップで前記データ長単位の元データの一部を取得する前に、前記予め定められたデータ長の倍数単位の乱数列を作成する、
ことを特徴とする暗号プログラム。
【請求項１１】
請求項９及び１０のいずれか一項に記載の暗号プログラムにおいて、
前記コンピュータの前記記憶手段には、前記元データが記憶され、
前記暗号化ステップでは、前記記憶手段のデータ入出力単位の倍数を前記データ長単位として、該記憶手段から前記元データの一部を取得し、該データ長単位の元データの一部を暗号化する、
ことを特徴とする暗号プログラム。
【請求項１２】
コンピュータに、乱数列を用いて元データが暗号化された暗号データを、該乱数列を用いて復号化する手順を行わせる復号プログラムであって、
前記コンピュータを、制御手段と、記憶手段と、入力手段として機能させ、
前記制御手段に対して、
予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成ステップと、
前記コンピュータの前記入力手段又は前記記憶手段から、前記予め定められたデータ長単位の暗号データの一部と、該暗号データの一部を再生するまでの時間を示すタイムスタンプを含むヘッダと、を備えるパケットを順次取得し、前記タイムスタンプが一定以上先の時間を示す場合には、前記予め定められたデータ長の倍数のデータ長となるまで乱数列前記暗号データを蓄積させた後、各暗号データの一部を、前記乱数列作成ステップで生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて順次復号化する復号化ステップと、
を実行させることを特徴とする復号プログラム。
【請求項１３】
請求項１２に記載の復号プログラムにおいて、
前記乱数列作成ステップでは、前記復号化ステップで前記データ長単位の暗号データの一部を取得する前に、前記予め定められたデータ長の倍数単位の乱数列を作成する、
ことを特徴とする復号プログラム。
【請求項１４】
請求項１２及び１３のいずれか一項に記載の復号プログラムにおいて、
前記コンピュータの前記記憶手段には、前記暗号データ又は該暗号データが復号化されたデータが記憶され、
前記復号化ステップでは、前記記憶手段のデータ入出力単位の倍数を前記データ長単位として、前記暗号データの一部を取得し、該データ長単位の暗号データの一部を復号化する、
ことを特徴とする復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数列を用いて元データを暗号化する技術、及び乱数列を用いて暗号データを復号化する技術に関する。
【背景技術】
【０００２】
元データの暗号化する方法の一つとして、この元データと乱数列との排他的論理和で暗号データを得る方法がある。
【０００３】
一般的に、様々なデータ長の元データを暗号化するため、元データを取得した後、この元データのデータ長に合ったデータ長の乱数列を生成し、この乱数列を用いて、元データを暗号化している。また、元データのデータ長が比較的長い場合には、元データを幾つかに分割し、分割後の各元データを順次取得し、取得したデータのデータ長に合わせて、乱数列を生成し、この乱数列を用いて取得したデータを暗号化している。
【０００４】
ところで、近年、ＩＰ電話やテレビ会議では、第三者の盗聴を防ぐために、暗号処理技術が用いられている。このようなＩＰ電話やテレビ会議では、リアルタイムにデータを送信する必要があるため、暗号化処理の効率化が求められている。
【０００５】
そこで、以下の特許文献１では、元データの一部のみを部分的に乱数列を用いて暗号化することで、暗号化処理時間の短縮を図っている。例えば、映画等の画像データを部分的に暗号化し、この画像データに関する配信契約を行っている者のみがきれいな画像データを見ることができ、他の者は、一部が乱れた画像しか見ることができないようにしている。
【０００６】
【特許文献１】特開2006−270343号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の技術では、この技術をテレビ会議に利用した場合、第三者であっても、会議の内容を部分的に把握することができ、秘密漏洩の可能性が極めて高くなってしまうという問題点がある。
【０００８】
本発明は、このような従来の問題点に着目し、暗号化処理の効率化を図りつつ、高い秘密保持性を確保することを目的とする。
【課題を解決するための手段】
【０００９】
前記問題点を解決するため、元データの暗号化に係る発明は、
予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成手段と、前記予め定められたデータ長単位で元データの一部を順次取得し、前記元データの一部の各々を、前記乱数列作成手段で生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて暗号化し、該予め定められたデータ長単位の暗号データを順次作成する暗号化手段と、前記暗号化手段で作成された前記データ長単位の暗号データを分割して、分割された暗号データをパケットのペイロードに含め、該分割された暗号データの送信先と、該分割された暗号データが前記元データのどの位置のデータを暗号化したかを示すオフセット位置と、該元データを再生開始してから該分割された暗号データの部分を再生するまでの時間を示すタイムスタンプと、前記分割された暗号データの暗号化の際に用いられた乱数列の前記鍵と、を前記パケットのヘッダに含めたパケットを生成し、該パケットを通信網に送出する送信手段と、を有していることを特徴とする。
【００１０】
また、前記問題点を解決するため、暗号データの復号化に係る発明は、乱数列を用いて元データが暗号化された暗号データを、該乱数列を用いて復号化する復号化装置において、予め定められたデータ長の倍数単位で、鍵を用いて乱数列を作成する乱数列作成手段と、前記予め定められたデータ長単位の暗号データの一部と、該暗号データの一部を再生するまでの時間を示すタイムスタンプを含むヘッダと、を備えるパケットを順次取得し、前記タイムスタンプが一定以上先の時間を示す場合には、前記予め定められたデータ長の倍数のデータ長となるまで前記暗号データを蓄積させた後、各暗号データの一部を、前記乱数列作成手段で生成された前記予め定められたデータ長の倍数のデータ長の乱数列のうち、該予め定められたデータ長の乱数列を用いて順次復号化する復号化手段と、を有していることを特徴とする。
【００１２】
係る発明によれば、復号化装置側で暗号データを復号化し、これを漏洩したとしても、漏洩したデータ中に、暗号化され且つ電子透かしとなった公開鍵が含まれているので、この公開鍵により、漏洩元を特定することができる。
【発明の効果】
【００１３】
本発明によれば、暗号化手段が元データを暗号化する元データの取得単位、又は復号化手段が暗号データを復号化する暗号データの取得単位の倍数で、暗号化又は復号化の際に用いる乱数列を生成するので、乱数列生成工程の回数を減らすことができ、暗号化、復号化の効率化を図ることができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明に係る暗号システムの各種実施形態について、図面を用いて説明する。
【００１５】
「第一の実施形態」
まず、本発明に係る暗号システムの第一の実施形態について、図１〜図６を用いて説明する。
【００１６】
本実施形態の暗号システムは、図１に示すように、コンテンツである画像データを暗号化して送信する暗号化装置１００と、暗号化された画像データを受信して復号化する復号化装置２００と、を備えている。暗号化装置１００と復号化装置２００とは、相互に通信可能にネットワークＮで接続されている。
【００１７】
暗号化装置１００は、コンピュータで、各種演算処理を実行するＣＰＵ１１０と、このＣＰＵ１１０のワークエリア等になるメモリ１２０と、各種プログラムやデータ等が格納されているディスク装置１３０と、入力装置１４０と、通信インタフェース１５０と、を備えている。
【００１８】
ディスク装置１３０には、暗号プログラム、通信プログラム、コンテンツの暗号化の際に用いる鍵が格納されている。さらに、このディスク装置１３０には、入力装置１４０から入力されたコンテンツが元データとして格納されている。なお、ここでは、各プログラム等と元データとを同一の記憶装置に格納しているが、各プログラム等を格納する記憶装置の他に、元データ専用の記憶装置を設けてもよい。
【００１９】
ＣＰＵ１１０は、機能的に、元データを暗号化する暗号処理部１１１と、暗号化された元データ、つまり暗号データをパケット化して、通信インタフェース１５０を介して復号化装置２００へ送信する通信処理部１１９とを有している。この暗号化処理部１１１は、ディスク装置１３０に格納されている暗号プログラムをＣＰＵ１１０が実行することで機能する。また、この通信処理部１１９は、ディスク装置１３０に格納されている通信プログラムをＣＰＵ１１０が実行することで機能する。
【００２０】
暗号処理部１１１は、ディスク装置１３０に格納されている元データをディスクＩＯサイズ単位又はその倍数単位で取得する元データ取得部１１２と、乱数列を生成する乱数列生成部１１３と、乱数列を用いて元データを暗号化する暗号化部１１４と、暗号化部１１４からの暗号データを通信パケットに挿入できるサイズに分割して、送信処理部１１９へ送る暗号データ出力部１１５と、を有している。
【００２１】
復号化装置２００は、コンピュータで、各種演算処理を実行するＣＰＵ２１０と、このＣＰＵ２１０のワークエリア等になるメモリ２２０と、各種プログラムやデータ等が格納されているディスク装置２３０と、再生装置２４０と、通信インタフェース２５０と、を備えている。
【００２２】
ディスク装置２３０には、復号プログラム、通信プログラム、暗号データの復号化の際に用いる鍵が格納されている。さらに、このディスク装置２３０には、暗号データが復号化された復号データ（元データ）が格納される。なお、ここでは、各プログラム等と復号データとを同一の記憶装置に格納するようにしているが、各プログラム等を格納する記憶装置の他に、復号データ専用の記憶装置を設けてもよい。
【００２３】
ＣＰＵ２１０は、機能的に、暗号データを復号化する復号処理部２１１と、通信インタフェース２５０を介して通信パケットを受信して分解し、この通信パケットから暗号データを得る通信処理部２１９とを有している。この復号化処理部２１１は、ディスク装置２３０に格納されている復号プログラムをＣＰＵ２１０が実行することで機能する。また、この通信処理部２１９は、ディスク装置２３０に格納されている通信プログラムをＣＰＵ２１０が実行することで機能する。
【００２４】
復号処理部２１１は、通信処理部２１９で得られた暗号データを取得してディスクＩＯサイズ単位又はその倍数単位で出力する暗号データ取得部２１２と、乱数列を生成する乱数列生成部２１３と、乱数列を用いて暗号データを復号化する復号化部２１４と、復号化部２１４からの復号データ（元データ）をディスク装置２３０又は再生装置２４０へ出力する復号データ出力部２１５と、を有している。
【００２５】
次に、図２に示すフローチャートに従って、暗号化装置１００の暗号化処理部１１１の動作について説明する。この暗号化処理部１１１は、例えば、入力装置１４０からの暗号化開始の指示を受け付けると起動する。
【００２６】
暗号化処理部１１１の元データ取得部１１２は、ディスク装置１３０に読み込むべき元データがあるか否かを判断する（Ｓ１０）。元データがあれば、このディスク装置１３０から、このディスク装置１３０のディスクＩＯサイズ単位又はその倍数単位で元データを順次読み込む（Ｓ１１）。なお、ディスクＩＯサイズ単位は、予め設定されている値であるが、ここでは、１２６ＫＢ、２５６ＫＢ、５１２ＫＢ、１０２４ＫＢ等のいずれかである。次に、乱数生成部１１３は、暗号化部１１４に乱数列が存在するか否かを判断し（Ｓ１２）、乱数列が存在しなければ、元データの読み込み単位の倍数のデータサイズの乱数列を生成する（Ｓ１３）。ステップ１２で乱数列が存在すると判断された場合、ステップ１３で乱数列が生成された場合、暗号化部１１４は、ディスクＩＯサイズ又はその倍数サイズの元データと、同じくディスクＩＯサイズ又はその倍数サイズの乱数列とを排他的論理和をとって、元データを暗号化する、すなわち、ディスクＩＯサイズ又はその倍数サイズの暗号データを生成する（Ｓ１４）。
【００２７】
暗号化部１１５で生成されたディスクＩＯサイズ又はその倍数サイズの暗号データは、暗号出力部１１５で、復号化装置２００へ送る送信パケットのペイロードに収まるサイズに分割され、元データ取得部１１２で得られた各種データと共に、通信処理部１１９に出力される（Ｓ１５）。暗号データ出力部１１５から暗号データ等が通信処理部１１９へ出力されると、ステップ１０へ戻る。
【００２８】
通信処理部１１９では、図６に示すように、暗号データ１９をペイロード１８に収めた送信パケット１０が生成され、通信インタフェース１５０を介して、復号化装置２００へ送信される。この送信パケット１０のヘッダ１１には、パケット名１２、送信先アドレス１３、ペイロード１８に収められる暗号データ１９のシーケンス番号、この暗号データ１９のオフセット位置、この暗号データ１９のタイムスタンプ１６、この暗号データ１９を復号化する際に用いる乱数列の生成のための鍵１７が収められている。
【００２９】
オフセット位置とは、ペイロード１８に収められる暗号データが元データのどの位置の部分に該当するかを示すもので、具体的には、元データの先頭位置を基準にして、この暗号データが示す元データ部分の先頭位置を示すものである。また、タイムスタンプとは、元データの先頭位置の再生時刻から、ペイロードに含まれている暗号データが示す元データ部分の先頭再生時刻までの時間を示すものである。
【００３０】
オフセット位置及びタイムスタンプは、いずれも、元データ中に含まれているデータであるため、元データ取得部１１２は、ディスク装置１３０から元データを取得する際に、これらのデータを把握し、これを暗号データ出力部１１５に渡す。暗号データ出力部１１５は、自らが作成したシーケンス番号１４、元データ取得部１１２から送られてきたオフセット位置１５及びタイムスタンプ１６、さらに、ディスク装置１３０に格納されている鍵１７を、送信パケット１０のペイロード１８に収まるサイズの暗号データ１９と共に、通信処理部１１９に渡す。そして、通信処理部１１９は、前述したように、送信パケット１０のヘッダ１１に、シーケンス番号１４、オフセット位置１５、タイムスタンプ１６、鍵１７等を収め、ペイロード１８に暗号データ１９を収めて、通信インタフェース１５０を介して、この送信パケット１０を復号化装置２００へ送信する。
【００３１】
次に、図４及び図５を用いて、本実施形態における暗号化装置１００による効果について説明する。
【００３２】
図４に示すように、ディスク装置１３０には、比較的データ長が長い画像データが格納されているとする。元データ取得部１１２は、このディスク装置１３０から、ディスクＩＯサイズ（例えば、２５０ＫＢ）の元データを取得する（Ｓ１１）。一方、乱数列生成部１１３は、ディスクＩＯサイズの倍数分、例えば、２倍の乱数列を生成する（Ｓ１３）。暗号化部１１４は、元データ取得部１１２が取得したディスクＩＯサイズの元データに対して、乱数列生成部１１３が生成した乱数列のうちの１／２の乱数列、つまり、ディスクＩＯサイズの乱数列を用いて、この元データを暗号化する（Ｓ１４）。暗号データ出力部１１５は、ディスクＩＯサイズの暗号データをパケットに収まるサイズに分割して、通信制御部１１９へ出力する（Ｓ１５）。
【００３３】
再び、元データ取得部１１２は、ディスク装置１３０から、ディスクＩＯサイズの元データを取得する（Ｓ１１）。この時点で、先に生成された乱数列のうちの１／２の乱数列、つまり、ディスクＩＯサイズの乱数列は残っているので、暗号化部１１４は、元データ取得部１１２が新たに取得した元データに対して、残っている乱数列を用いて、この元データを暗号化する（Ｓ１４）。すなわち、図５のシーケンス図に示すように、２回目に元データが読み込まれると（Ｓ１１）、乱数列の生成工程（Ｓ１３）を経ずに、直ちに、この元データが暗号化される（Ｓ１４）。
【００３４】
以上のように、ディスクＩＯサイズで元データを取得する場合、ディスクＩＯサイズの２倍のサイズで乱数列を生成すると、２回の元データの読み込みに対して、１回の乱数列生成で済む。当然、元データの３倍のサイズの乱数列と生成すると、３回の元データの読み込みに対して、一回の乱数列生成で済む。従って、本実施形態では、元データの全てを暗号化しつつも、暗号化処理の効率を高めることができる。
【００３５】
また、本実施形態では、ディスクＩＯサイズ単位で処理を行っているため、コンピュータによる暗号化処理が効率よく行える。さらに、暗号化は、データサイズが大きいほど処理速度が速くなる傾向にあるため、ディスクＩＯサイズとして２５６ＫＢ等の比較的大きなサイズを設定することでも、暗号化処理の効率をさらに高めることができる。
【００３６】
次に、図３に示すフローチャートに従って、復号化装置２００の復号化処理部２１１の動作について説明する。この復号化処理部２１１は、例えば、通信インタフェース２５０が暗号化装置１００からのパケットを受信すると、または、外部からからの復号化開始の指示を受け付けると起動する。
【００３７】
復号化処理部２１１の暗号データ取得部２１２は、通信処理部２１９に、暗号化装置１００からの通信パケットの分解で得られた暗号データがあるか否かを判断し（Ｓ２０）、暗号データがあれば、この通信処理部２１９から暗号データを順次読み込み、メモリ２２０上に配置する（Ｓ２１）。さらに、暗号データ取得部２１２は、暗号化装置１００からの通信パケットのヘッダに収められた各種データも併せて順次読み込む。そして、読み込んだ各種データのうち、シーケンス番号１４（図６）が「１」、つまり、最初の暗号データを取得すると、この暗号データの復号データを復号データ出力部２１５から出力する出力タイミングを定める。その後は、この出力タイミングを基準にして、各暗号データに対する復号データの出力タイミングを該当暗号データのタイムスタンプ１６（図６）に基づいて定める。暗号データ取得部２１２は、この出力タイミングに余裕があるか否かを判断し（Ｓ２２）、余裕が有れば、メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズ又はその倍数サイズになったか否かを判断する（Ｓ２３）。
【００３８】
以下、出力タイミングに余裕がある限り、メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズ又はその倍数サイズになるまで、通信処理部２１９から暗号データを順次読み込み、各暗号データのシーケンス番号順に又はオフセット位置に従って、各暗号データをメモリ２２０上に配置する。
【００３９】
メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズ又はその倍数サイズにならなくとも、つまり暗号データが一部欠けていても、出力タイミングに余裕がなくなると、又は、メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズ又はその倍数サイズになると、乱数生成部２１３は、復号化部２１４に乱数列が存在するか否かを判断する（Ｓ２５）。そして、乱数列が存在しなければ、ディスクＩＯサイズ又はその倍数サイズの、倍数乱数列を生成する（Ｓ２６）。この際、乱数列生成部２１３は、暗号化装置２００からの通信パケットのヘッダに収められた鍵１７（図６）を用いて乱数列を生成する。ステップ２５で乱数列が存在すると判断された場合、ステップ２６で乱数列が生成された場合、復号化部２１４は、ディスクＩＯサイズ又はその倍数サイズの暗号データに対して、同じくディスクＩＯサイズ又はその倍数サイズの乱数列を用いて、暗号データを復号化し、ディスクＩＯサイズの復号データを生成する（Ｓ２９）。
【００４０】
この復号データは、復号データ出力部２１５からディスク装置２３０又は再生装置２４０へ出力される（Ｓ２８）。なお、復号データ出力部２１５からの出力先が、ディスク装置２３０であるか、再生装置２４０であるかにより、ステップ２２で用いられる出力タイミングは変わる。すなわち、出力先が再生装置２４０である場合よりも、出力先がディスク装置２３０である場合の方が、出力タイミングは厳格である必要はなく且つ遅めに設定してもよい。
【００４１】
復号データ出力部２１５から復号データが出力されると（Ｓ２８）、ステップ２０へ戻る。
【００４２】
ところで、シーケンス番号が最後の暗号データをメモリ２２０上に配置した際、このメモリ２２０上の暗号データのサイズは、ディスクＩＯサイズ又はその倍数サイズになっていないことの方が多い。このため、ステップ２３で、メモリ２２０上の暗号データのサイズがディスクＩＯサイズ又はその倍数サイズになっていないと判断した場合（ステップ２３でＮＯの場合）、暗号データ取得部２１２は、最後の暗号データであるか否かを判断し、最後の暗号データで無ければステップ２０に戻り、最後の暗号データであればステップ２５に進む。
【００４３】
次に、図４及び図５を用いて、本実施形態における復号化装置２００による効果について説明する。
【００４４】
暗号化装置１００からは、前述したように、ペイロードに暗号データを収めた複数のパケットが送られてくる。復号化装置２００の通信処理部２１９は、これらのパケットを順次分解し、各パケットから暗号データ等を得る。復号化装置２００の暗号データ取得部２１２は、図４に示すように、通信処理部２１９から順次暗号データを読み出し、各暗号データのシーケンス番号順に又はオフセット位置に従って、各暗号データをメモリ２２０上に配置する（Ｓ２１）。
【００４５】
乱数生成部２１３は、メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズになると、又は、メモリ２２０上の暗号データのデータサイズがディスクＩＯサイズにならなくとも、つまり暗号データが一部欠けていても、出力タイミングに余裕がなくなると、ディスクＩＯサイズの倍数分、例えば、２倍の乱数列を生成する（Ｓ２６）。復号化部２１４は、暗号データ取得部２１２が取得したディスクＩＯサイズ（このサイズでない場合もある）の暗号データに対して、乱数列生成部２１３が生成した乱数列のうちの１／２の乱数列、つまり、ディスクＩＯサイズの乱数列を用いて、この暗号データを復号化する（Ｓ２７）。そして、復号データ出力部２１５は、ディスクＩＯサイズの復号データをディスク装置２３０又は再生装置２４０へ出力する（Ｓ２８）。
【００４６】
再び、暗号データ取得部２１２は、メモリ２２０上の暗号データサイズがディスクＩＯサイズになるまで、通信処理部２１９から順次暗号データを読み出し、各暗号データのシーケンス番号順に又はオフセット位置に従って、各暗号データをメモリ２２０上に配置する（Ｓ２１）。この時点で、先に生成された乱数列のうちの１／２の乱数列、つまり、ディスクＩＯサイズの乱数列は残っているので、復号化部２１４は、暗号データ取得部２１２が新たに取得したディスクＩＯサイズの暗号データに対して、残っている乱数列を用いて、この暗号データを復号化する（Ｓ２７）。すなわち、図５のシーケンス図に示すように、２回目に暗号データがディスクＩＯサイズになるまで読み込まれると（Ｓ２１）、乱数列の生成工程（Ｓ２６）を経ずに、直ちに、この暗号データが復号化される（Ｓ２７）。
【００４７】
以上のように、ディスクＩＯサイズで暗号データを取得する場合、ディスクＩＯサイズの２倍のサイズで乱数列を生成すると、２回のディスクＩＯサイズの暗号データの読み込みに対して、１回の乱数列生成で済む。当然、暗号データの３倍のサイズの乱数列と生成すると、３回の暗号データの読み込みに対して、一回の乱数列生成で済む。従って、本実施形態では、復号化処理の効率を高めることができる。
【００４８】
また、この復号化装置２００においても、前述の暗号化装置１００と同様に、ディスクＩＯサイズ単位又はその倍数サイズで処理を行っているため、コンピュータによる復号化処理が効率よく行える。さらに、復号化は、データサイズが大きいほど処理速度が速くなる傾向にあるため、ディスクＩＯサイズとして２５６ＫＢ等の比較的大きなサイズを設定することでも、復号化処理の効率をさらに高めることができる。
【００４９】
なお、本実施形態において、暗号化装置１００におけるディスクＩＯサイズ単位と復号化装置２００におけるディスクＩＯサイズ単位とを同じサイズにしている。これは、暗号化装置１００での暗号化処理と、復号化装置２００での復号化処理との同期を取り、元データをできる限りリアルタイムに再生できるようにするためである。このため、リアルタイム性があまり要求されない場合、例えば、復号化装置２００で復号化データを一旦ディスク装置２３０に格納するような場合には、暗号化装置１００におけるディスクＩＯサイズ単位と復号化装置２００におけるディスクＩＯサイズ単位とが異なっていてもよいし、同じディスクＩＯサイズ単位であっても、一方がこのディスクＩＯサイズ単位でデータを処理し、他方がこのディスクＩＯサイズ単位の２，３，…倍でデータを処理するようにしてもよい。
【００５０】
また、本実施形態の暗号化装置１００では、元データを一旦ディスク装置１３０に格納した後、このディスク装置１３０に格納されている元データを読み出して、これを暗号化しているが、入力装置１４０から入力された元データを直接取得して、これを暗号化してもよい。さらに、本実施形態の復号化装置２００では、通信インタフェース２５０で受信したパケット中の暗号データを暗号データ取得部２１２が取得しているが、通信インタフェース２５０で受信したパケット中の暗号データを一旦ディスク装置２３０に格納し、暗号データ取得部２１２がこのディスク装置２３０から暗号データを取得するようにしてもよい。
【００５１】
「第二の実施形態」
次に、本発明に係る暗号システムの第二の実施形態について、図７〜図９を用いて説明する。
【００５２】
本実施形態の暗号システムは、図１を用いて説明した第一の実施形態の暗号システムと基本的に同じ構成である。但し、暗号化装置１００における暗号処理と復号化装置２００の復号処理のそれぞれにおける処理手順が若干異なっている。
【００５３】
すなわち、第一の実施形態の暗号化処理（図２）及び復号化処理（図３）では、データ読込後に（Ｓ１１，Ｓ２１）、乱数列の有無の判断（Ｓ１２，Ｓ２５）及び乱数列の生成（Ｓ１３，Ｓ２６）を行っているが、本実施形態の暗号化処理（図７）及び復号化処理（図８）では、データ読込前に（Ｓ１１，Ｓ２１）、乱数列の有無の判断（Ｓ１２ａ，Ｓ２５ａ）及び乱数列の生成（Ｓ１３ａ,Ｓ２６ａ）を行う。
【００５４】
このように、乱数例の生成を前倒しに行うことで、第一の実施形態のシーケンス図（図５）と本実施形態のシーケンス図（図９）とを比較すれば理解できるように、Ｘ回目のデータ読込（Ｓ１１，Ｓ２１）と（Ｘ＋１）回目のデータ読込（Ｓ１１，Ｓ２１）の間の間隔を短くすることができ、より暗号化処理及び復号化処理の効率を高めることができる。
【００５５】
「第三の実施形態」
次に、本発明に係る暗号システムの第三の実施形態について、図１０を用いて説明する。
【００５６】
本実施形態の暗号システムは、第一及び第二の実施形態とハードウェア構成は同じであるものの、暗号化装置及び復号化装置のＣＰＵの機能構成が異なっている。
【００５７】
本実施形態の暗号化装置１００ａの暗号処理部１１１ａは、第一及び第二の実施形態と同様に、元データ取得部１１２と乱数列生成部１１３と暗号化部１１４と暗号データ出力部１１５とを備えている他に、復号化装置２００ａから乱数列を生成する際に使用する公開鍵１７ａを復号化装置２００ａから受信するためのＩＤ受信処理制御部１１６と、ＩＤである公開鍵１７ａを暗号化するＩＤ暗号化部１１７と、元データ取得部１１２が取得した元データに暗号化された公開鍵を電子透かしとして挿入する電子透かし挿入部１１８と、を備えている。
【００５８】
また、本実施形態の復号化装置２００ａの復号化処理部２１１ａは、第一及び第二の実施形態と同様に、暗号データ取得部２１２と乱数列生成部２１３と復号化部２１４と復号データ出力部２１５とを備えている他に、暗号化装置２００ａで乱数列を生成する際に使用する公開鍵１７ａを通信処理部２１９にパケット化させて暗号化装置２００ａへ送信させるＩＤ送信処理制御部２１６を備えている。
【００５９】
次に、本実施形態の暗号システムの動作について説明する。
【００６０】
まず、元データの暗号化及び復号化の前処理について説明する。
【００６１】
まず、復号化装置２００の図示されていない入出力装置は、前述の公開鍵１７ａと、この公開鍵１７ａとペアとなる秘密鍵１７ｂとを取り込んで、ディスク装置２３０に格納する。この公開鍵１７ａと秘密鍵１７ｂは、例えば、復号化装置２００の所有者が、暗号化装置１００の運営者と暗号化されたコンテンツの配信の契約を結んだときに定められる。
【００６２】
次に、ＩＤ送信処理制御部２１６は、ディスク装置２３０に格納されている公開鍵１７ａを取得し、これを通信処理部２１９に渡してパケット化させ、暗号化装置１００ａへ送信させる。
【００６３】
暗号化装置１００ａの通信処理部１１９は、このパケットを受信すると、パケットを分解して、このパケットのペイロードに収められている公開鍵１７ａと、このパケットのヘッダに収められている送信元ＡとをＩＤ受信処理制御部１１６に渡す。このＩＤ受信処理制御部１１６は、公開鍵１７ａと送信元Ａとを関連付けて、ディスク装置１３０に格納する。
【００６４】
以上で前処理が終了する。
【００６５】
次に、暗号化装置１００ａでの暗号化処理について説明する。
【００６６】
まず、ＩＤ暗号化部１１７は、ディスク装置１３０に格納されている公開鍵１７ａと、これを暗号化する際に使用する鍵とを取得し、この鍵を用いて公開鍵１７ａを暗号化すると共に、この暗号データを電子透かしとする。
【００６７】
元データ取得部１１２がディスク装置１３０から元データをディスクＩＯ単位で順次読み込むと、電子透かし挿入部１１８は、元データ取得部１１２が読み込んだ元データに電子透かしを挿入する。電子透かし挿入部１１８は、一回の元データ読込毎に、この電子透かしを一つこの元データに挿入してもよいし、複数回の元データ読込毎に、この電子透かしを一つ元データに挿入してもよいし、さらに、一回の元データ読込毎に、この電子透かしを複数この元データに挿入してもよい。
【００６８】
一方、乱数列生成部１１３も、ディスク装置１３０に格納されている公開鍵１７ａを取得する。そして、この公開鍵１７ａを用いて、ディスクＩＯ単位の倍数の乱数列を生成する。そして、暗号化部１１４は、電子透かしが挿入された元データに対して、乱数列を用いて暗号化処理を施す。この暗号データは、暗号データ出力部１１５、通信処理部１１９等を経て、復号化装置２００へ送られる。
【００６９】
復号化装置２００の暗号データ取得部２１２は、暗号化装置１００からの暗号データを取得する。一方、復号化装置２００の乱数列生成部２１３は、ディスク装置２３０に格納されている秘密鍵１７ｂを取得し、この秘密鍵１７ｂを用いて、ディスクＩＯ単位の倍数の乱数列を生成する。そして、復号化部２１４は、暗号データに対して、乱数列を用いて復号化処理を施す。この復号データは、復号データ出力部２１５を経て、ディスク装置２３０又は再生装置２４０へ出力される。
【００７０】
復号化装置２００の所有者Ａは、暗号化装置１００から送られてきた暗号化されたコンテンツを再生装置２４０で再生しても、基本的に、コンテンツ中に含まれている公開鍵１７ａを認識することはできない。これは、この公開鍵１７ａがコンテンツ中に電子透かしとして挿入されているからである。
【００７１】
仮に、復号化装置２００の所有者Ａが、このコンテンツを第三者に配信等した場合、暗号化装置１００の運営者は、このコンテンツ中に公開鍵１７ａの存在を把握することができれば、この公開鍵１７ａと復号化装置２００の所有者Ａとが関連付けられているため、このコンテンツの漏洩元をこの所有者Ａに特定することができる。
【００７２】
しかしながら、公開鍵１７ａは、第三者が入手可能であるため、悪意の第三者がこの公開鍵１７ａを入手し、電子透かし技術を用いて、コンテンツ中に公開鍵１７ａを埋め込んで、例えば、これを不特定多数の者に配信すると、コンテンツの漏洩元が分からなくなる。
【００７３】
このため、本実施形態では、公開鍵１７ａを電子透かしとして埋め込むにあたり、この公開鍵１７ａを暗号化してから、電子透かしとして埋め込むようにしている。
【００７４】
したがって、本実施形態では、コンテンツの漏洩元を特定でき、確実なコンテンツ管理を行うことができる。
【００７５】
なお、本実施形態では、第一又は第二の実施形態の暗号化処理及び復号化処理を採用しているが、鍵を用いて元データを暗号化し、この鍵とペアとなる鍵で暗号データを復号化するものであれば、いかなる方法で暗号化処理、復号化処理するものでも適用できることは言うまでもない。
【図面の簡単な説明】
【００７６】
【図１】本発明に係る第一の実施形態における暗号システムの構成図である。
【図２】本発明に係る第一の実施形態における暗号化処理のフローチャートである。
【図３】本発明に係る第一の実施形態における復号化処理のフローチャートである。
【図４】本発明に係る第一の実施形態における元データの読取サイズと乱数列の生成サイズとの関係、暗号データの取得サイズと乱数列の生成サイズとの関係を示す説明図である。
【図５】本発明に係る第一の実施形態における暗号システムのシーケンス図である。
【図６】本発明に係る第一の実施形態における暗号化装置からの送信パケットのデータ構成を示す説明図である。
【図７】本発明に係る第二の実施形態における暗号化処理のフローチャートである。
【図８】本発明に係る第二の実施形態における復号化処理のフローチャートである。
【図９】本発明に係る第二の実施形態における暗号システムのシーケンス図である。
【図１０】本発明に係る第三の実施形態における暗号システムの構成図である。
【符号の説明】
【００７７】
１７ａ：公開鍵、１７ｂ：秘密鍵、１００，１００ａ：暗号化装置、１１０，１１０ａ：ＣＰＵ、１１１，１１1ａ：暗号処理部、１１２：元データ取得部、１１３：乱数列生成部、１１４：暗号化部、１１５：暗号データ出力部、１１６：ＩＤ受信処理制御部、１１７：ＩＤ暗号化部、１１８：電子透かし挿入部、１１９：通信処理部、１２０，２２０：メモリ、１３０，２３０：ディスク装置、１４０：入力装置、１５０，２５０：通信インタフェース、２００，２００ａ：復号化装置、２１０，２１０ａ：ＣＰＵ、２１１，２１1ａ：復号化処理部、２１２：暗号データ取得部、２１３：乱数列生成部、２１４：復号化部、２１５：復号データ出力部、２１６：ＩＤ送信処理制御部
【図１】
0005523675.tif 000002
【図２】
0005523675.tif 000003
【図３】
0005523675.tif 000004
【図４】
0005523675.tif 000005
【図５】
0005523675.tif 000006
【図６】
0005523675.tif 000007
【図７】
0005523675.tif 000008
【図８】
0005523675.tif 000009
【図９】
0005523675.tif 000010
【図１０】
0005523675.tif 000011