(57)【要約】【課題】処理負担を抑えつつ、暗号強度の強い暗号化・復号化方式を提供することを目的とする。【解決手段】ユーザ等が認識しているパスワードの後ろにファイルサイズから生成される付加文字を１文字追加したものを処理上のパスワードとする（ステップＳ１１〜Ｓ１３）。十分大きな周期の数値列Ｙを生成する。直前の暗号化出力値と数値列Ｙを用いて数値列Ｘを生成する（ステップＳ１５）。数値列Ｘを用いて、パスワードを構成する文字Ｐｊをより多種類の文字から選ばれた文字Ｑｊに変換し、これを暗号化対象データ１バイト分の暗号化キーとする（ステップＳ１６）。この暗号化キーと暗号化対象データの１バイトのデータとのＸＯＲ（排他的論理和）を取って暗号化する（ステップＳ１７）。復号時も同様の処理を行う。暗号化時にデータのサイズが変化しないため、付加文字は暗号化時と同一になる。【選択図】  図８
2004320475.tif 000002
【特許請求の範囲】
【請求項１】
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成する暗号化キー生成手段と、
前記暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する暗号化手段と、
を備えることを特徴とする暗号化装置。
【請求項２】
前記暗号化キー生成手段は、暗号化対象データのサイズに基づいて、前記パスワードに付加する付加情報を生成する付加情報生成手段と、前記パスワードと前記付加情報との連結情報に基づいて暗号化キーを生成する手段と、を備えることを特徴とする請求項１に記載の暗号化装置。
【請求項３】
前記暗号化キー生成手段は、所定種類の文字から選択された文字から構成されるパスワードを、前記所定種類の文字よりも多種類の文字から選択された文字から構成されるパスワードに変換するパスワード変換手段と、前記変換手段により変換されたパスワードに基づいて前記暗号化キーを生成する手段と、を備えることを特徴とする請求項１又は２に記載の暗号化装置。
【請求項４】
前記パスワード変換手段は、異なる文字列から構成されるパスワードの変換後のパスワードが互いに異なるように、パスワードを変換する、
ことを特徴とする請求項３に記載の暗号化装置。
【請求項５】
前記暗号化キー生成手段は、所定の規則で生成された数値列を生成する手段と、前記所定のパスワードと前記数値列とから暗号化キーを生成する手段と、を備えることを特徴とする請求項１乃至４のいずれか１項に記載の暗号化装置。
【請求項６】
前記暗号化キー生成手段は、前記パスワードから順次切り出したデータと、前記パスワードからデータを切り出す周期よりも長い周期を有する数値列とに基づいて暗号化キーを生成する、ことを特徴とする請求項５に記載の暗号化装置。
【請求項７】
前記暗号化キー生成手段は、前記暗号化手段の従前の暗号化の結果と前記所定のパスワードとに基づいて暗号化キーを生成する手段を備える、
ことを特徴とする請求項１乃至６のいずれか１項に記載の暗号化装置。
【請求項８】
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成する復号化キー生成手段と、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと前記復号化キーとの排他的論理和をとることにより、暗号化されたデータを復号化する復号化手段と、
を備えることを特徴とする復号化装置。
【請求項９】
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成し、
生成した暗号化キーと前記暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する、
ことを特徴とする暗号化方法。
【請求項１０】
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成し、
前記所定のパスワードと前記所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと、前記復号化キーと、の排他的論理和をとることにより、暗号化されたデータを復号化する、
ことを特徴とする復号化方法。
【請求項１１】
コンピュータに、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成し、
生成した暗号化キーと前記暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する、
処理を実行させるコンピュータプログラム。
【請求項１２】
コンピュータに、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成し、
前記所定のパスワードと前記所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと、前記復号化キーと、の排他的論理和をとることにより、暗号化されたデータを復号化する、
処理を実行させるコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＸＯＲ方式の暗号化・復号化装置及び方法に関する。
【０００２】
【従来の技術】
通信ネットワーク技術の発展に伴い、暗号化・復号化技術の重要性が増加している。
暗号化・復号化方式には、暗号化強度の強いものと暗号化強度の弱いものとがある。暗号化強度の強い暗号化方式は、暗号の解読が比較的困難であるという特徴を有するものの、暗号化及び復号化のアルゴリズムが複雑となって、暗号化／復号化の処理に時間がかかり、ハードウエアの負担も大きいという問題がある。
一方、暗号化強度の弱い暗号化方式では、処理負担が小さいものの暗号化情報を比較的簡単に解読される虞がある。
【０００３】
簡易な暗号化方式として、ＸＯＲ（排他的論理和）方式がある。
この方式は、パスワードを設定し、パスワードを構成する各文字（のデータ）と、暗号化対象データとのＸＯＲを順次とることにより、暗号化対象データを暗号化する技術である。
具体例で説明すると、例えば、パスワードを「ＡＢＣ」とすると、暗号化対象データの先頭１バイトと「Ａ」を表すデータとのＸＯＲを取って出力し、暗号化対象データの第２バイトと「Ｂ」を表すデータとのＸＯＲを取って出力し、暗号化対象データの第３バイトと「Ｃ」を表すデータとのＸＯＲを取って出力し、暗号化対象データの第４バイトと「Ａ」を表すデータとのＸＯＲを取って出力し、暗号化対象データの第５バイトと「Ｂ」を表すデータとのＸＯＲを取って出力し、．．．．．という処理を行うことにより、暗号化対象データを暗号化する手法である。
【０００４】
ＸＯＲ暗号化方式では、暗号強度を上げるためには、パスワードを長くする必要がある。しかし、長いパスワードを強要することは、ユーザの負担が増加してしまう。
【０００５】
また、同一の文字列が繰り返されるタイプのパスワード、例えば、「ＡＢＣＡＢＣ」で暗号化されたデータは、その文字列からなるパスワード、例えば、「ＡＢＣ」でも復号化できてしまう。
さらに、暗号化データが何十文字も同一文字が連続する場合に、暗号化でデータに「繰り返しパターン」が発生し、パスワードや暗号化ロジックを類推できる場合が発生する。
【０００６】
また、公開鍵とパスワードとの排他的論理和をとってこれを暗号化に使用する方法なども存在するが（例えば、特許文献１）、暗号強度が強い反面、処理負担が大きいという問題がある。
【０００７】
【特許文献１】
特開平０８−２０４７００号公報
【０００８】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、処理負担を抑えつつ、暗号強度の強い暗号化・復号化方式を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点に係る、暗号化装置は、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成する暗号化キー生成手段と、
前記暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する暗号化手段と、
を備えることを特徴とする。
【００１０】
前記暗号化キー生成手段は、例えば、暗号化対象データのサイズに基づいて、前記パスワードに付加する付加情報を生成する付加情報生成手段と、前記パスワードと前記付加情報との連結情報に基づいて暗号化キーを生成する手段と、を備える。
【００１１】
前記暗号化キー生成手段は、例えば、所定種類の文字から選択された文字から構成されるパスワードを、前記所定種類の文字よりも多種類の文字から選択された文字から構成されるパスワードに変換するパスワード変換手段と、前記変換手段により変換されたパスワードに基づいて前記暗号化キーを生成する手段と、を備える。
【００１２】
前記パスワード変換手段は、例えば、異なる文字列から構成されるパスワードの変換後のパスワードが互いに異なるように、パスワードを変換する。
【００１３】
前記暗号化キー生成手段は、例えば、所定の規則で生成された数値列を生成する手段と、前記所定のパスワードと前記数値列とから暗号化キーを生成する手段と、を備える。
【００１４】
前記暗号化キー生成手段は、例えば、前記パスワードから順次切り出したデータと、前記パスワードからデータを切り出す周期よりも長い周期を有する数値列とに基づいて暗号化キーを生成する。
【００１５】
前記暗号化キー生成手段は、例えば、前記暗号化手段の従前の暗号化の結果と前記所定のパスワードとに基づいて暗号化キーを生成する。
【００１６】
上記目的を達成するため、本発明の第２の観点に係る、復号化装置は、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成する復号化キー生成手段と、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと前記復号化キーとの排他的論理和をとることにより、暗号化されたデータを復号化する復号化手段と、
を備えることを特徴とする。
【００１７】
上記目的を達成するため、本発明の第３の観点に係る、暗号化方法は、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成し、
生成した暗号化キーと前記暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する、
ことを特徴とする。
【００１８】
上記目的を達成するため、本発明の第４の観点に係る、復号化方法は、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成し、
前記所定のパスワードと前記所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと、前記復号化キーと、の排他的論理和をとることにより、暗号化されたデータを復号化する、
ことを特徴とする。
【００１９】
上記目的を達成するため、本発明の第５の観点に係る、コンピュータプログラムは、コンピュータに、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて暗号化キーを生成し、
生成した暗号化キーと前記暗号化対象データとの排他的論理和をとることにより暗号化対象情報を暗号化する、
処理を実行させる。
【００２０】
上記目的を達成するため、本発明の第６の観点に係る、コンピュータプログラムは、コンピュータに、
所定のパスワードと所定の規則に基づいて生成された情報とに基づいて復号化キーを生成し、
前記所定のパスワードと前記所定の規則に基づいて生成された情報とに基づいて生成された暗号化キーと暗号化対象データとの排他的論理和をとることにより暗号化されたデータと、前記復号化キーと、の排他的論理和をとることにより、暗号化されたデータを復号化する、
処理を実行させる。
【００２１】
【発明の実施の形態】
以下、本発明の実施の形態に係る暗号化復号化システムを電子ファイル配信システムに適用した実施の形態を例に説明する。
【００２２】
この実施形態に係る電子コンテンツ配信システム１は、図１に示すように、コンテンツ配信サーバ１１と、コンテンツ配信サーバ１１にネットワークＮＷを介して接続された複数のユーザ端末群２１（２１１〜２１ｎ）とから構成される。
【００２３】
コンテンツ配信サーバ１１は、複数のデータを記憶し、ユーザ端末２１からの要求に従って、各データをＸＯＲ暗号化方式を用いて暗号化して送信する。コンテンツ配信サーバ１１は、例えば、図２に示すように、サーバ装置本体１２と、認証ＤＢ（データベース）１３と、コンテンツＤＢ１４とを備える。
【００２４】
サーバ装置本体１２は、通信制御機能、認証機能、暗号化・復号化機能を備え、ハードウエア的には、図３に示すように、通信制御部１１１と、記憶部１１２と、入力処理部１１３と、表示処理部１１４と、処理制御部１１５と、を備える。
【００２５】
通信制御部１１１は、ユーザ端末２１との間でネットワークＮＷを介して通信を行う。
記憶部１１２は、ＲＡＭ（Ｒｕｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ハードディスクなどから構成され、処理制御部１１５の動作プログラム、暗号化プログラム等を記憶し、さらに、処理制御部１１５のワークエリアとして機能する。
入力処理部１１３は、キーボード、マウスなどから構成され、様々な情報を入力する。
【００２６】
表示処理部１１４は、ディスプレイ装置を備え、様々な情報を表示する。
処理制御部１１５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などから構成され、記憶部１１２に記憶されたプログラムに従って動作し、ユーザ端末２１との間で認証処理、通信処理、送信対象コンテンツの暗号化処理などを制御する。
【００２７】
認証ＤＢ１３は、ユーザ端末２１の利用者を認証するための情報を格納したデータベースであり、例えば、図４に示すように、ユーザＩＤ、パスワード、ユーザ氏名等の情報を対応付けて記憶する。
【００２８】
コンテンツＤＢ１４は、ユーザ端末２１に配信するコンテンツを格納するデータベースであり、例えば、図５に示すように、コンテンツ番号、コンテンツタイプ、サイズ、コンテンツ（データ本体）等を対応付けて記憶する。ここで、コンテンツタイプは、コンテンツがファイルであるかテキスト（文字）であるかの別を示す。サイズは、ファイルについてはバイト数、テキストについては文字数を表す。
【００２９】
図１のユーザ端末２１は、コンテンツ配信サーバ１１にログインし、暗号化されたコンテンツの配信を受けて、該コンテンツを復号化して処理する端末であり、図６に示すように、通信制御部２１１と、記憶部２１２と、入力処理部２１３と、表示処理部２１４と、処理制御部２１５と、を備える。
【００３０】
通信制御部２１１は、コンテンツ配信サーバ１１との間でネットワークＮＷを介して通信を行う。
記憶部２１２は、ＲＡＭ、ＲＯＭ、ハードディスクなどから構成され、処理制御部２１５の動作プログラム、復号化プログラム等を記憶し、さらに、処理制御部２１５のワークエリアとして機能する。
入力処理部２１３は、キーボード、マウスなどから構成され、様々な情報を入力する。
表示処理部２１４は、ディスプレイ装置を備え、様々な情報を表示する。
処理制御部２１５は、ＣＰＵなどから構成され、記憶部２１２に記憶されたプログラムに従って動作し、このユーザ端末２１の動作、例えば、コンテンツ配信サーバ１１との間の認証処理、通信処理、受信したコンテンツの復号化処理などを制御する。
【００３１】
（暗号化方法）
次に、コンテンツ配信サーバ１１が実行する暗号化処理とユーザ端末２１が実行する復号化処理につて説明する。
【００３２】
１．パスワードの補正
理解を容易にするため、この説明では、パスワードを構成する文字を０−９，Ａ−Ｚの３６文字に限定し、これらの文字に３０ｈ〜５４ｈの文字コードを割り当てる。
さらに、パスワードを「ＡＢＣＤ（３Ａｈ，３Ｂｈ，３Ｃｈ，３Ｄｈ）」とする。
【００３３】
従来は、パスワード「ＡＢＣＤ」を直接用いて暗号対象データを暗号化している。即ち、暗号化対象データの先頭１バイトと「Ａ」を表すデータ３ＡｈとのＸＯＲ（排他的論理和）を取って出力し、暗号化対象データの第２バイトと「Ｂ」を表すデータ３ＢｈとのＸＯＲを取って出力し、．．．暗号化対象データの第４バイトと「Ｄ」を表すデータ３ＤｈとのＸＯＲを取って出力し、暗号化対象データの第５バイトと「Ａ」を表すデータ３ＡｈとのＸＯＲを取って出力し、．．．．．という処理を行うことにより、暗号化対象データを暗号化している。
【００３４】
これに対し、この実施の形態では、パスワードＡＢＣＤの後ろに「ファイルサイズから生成された付加文字」を１文字追加したものを処理上のパスワードとする。この付加文字＊は数式１により生成される。
【００３５】
【数１】
暗号化対象がファイルの場合
＊＝（ファイルサイズ÷３６）の余り＋３０ｈ
暗号化対象が文字の場合
＊＝（暗号化前の文字列長÷３６）の余り＋３０ｈ
【００３６】
例えば処理対象がファイルで、そのサイズが３６Ｍバイトであるとすれば、（ファイルサイズ÷３６）の余りは０となり、＊＝３０ｈ＝文字「０」、となる。
【００３７】
従って、処理上のパスワードは「ＡＢＣＤ０（３Ａｈ，３Ｂｈ，３Ｃｈ，３Ｄｈ，３０ｈ）」となる。
従って、暗号化処理は、基本的には、暗号化対象データの先頭１バイトと「Ａ」を表すデータ３ＡｈとのＸＯＲを取って出力し、．．．暗号化対象データの第４バイトと「Ｄ」を表すデータ３ＢＤとのＸＯＲを取って出力し、暗号化対象データの第５バイトと「０」を表すデータ３０ｈとのＸＯＲを取って出力し、暗号化対象データの第６バイトと「Ａ」を表すデータ３ＡｈとのＸＯＲを取って出力し、．．．．．という処理を行うことになる。
【００３８】
即ち、元のパスワードとデータサイズから生成した付加文字との連結データから暗号化キーを生成し、この暗号化キーと暗号化対象データから切り出したデータとのＸＯＲをとって、データを暗号化する。
【００３９】
２．パターン消し
上述の処理上のパスワード「ＡＢＣＤ＊」をそのまま使用してデータをＸＯＲして暗号化すると、例えば、暗号化対象データ中に同一文字が連続した場合などに、「繰り返しパターン」が現れ、パスワードや暗号化ロジックが類推される可能性がある。そこで、「繰り返しパターン」の発生を防止する（パターン消し）処理を施す。この際、「繰り返しパターン」を防止する処理を行ったときに、異なるパスワードで「加工の結果が偶然一致」しないことが保証される必要がある。例えば、パスワード「ＡＢＣＤ」に繰り返しパターン防止処理を施した場合に、パスワードが「ＤＥＦＧ」に変換され、一方、パスワード「ＫＬＭＮ」に繰り返しパターン防止処理を施しても、パスワードが「ＤＥＦＧ」に変換される（ｎ：１変換）、という事態が発生することを防止する必要がある。
【００４０】
そこで、この実施の形態では、１）パスワードを、ユーザ等が認識している３６文字より多い文字からなるパスワードに変換し、２）パスワードとは非同期の周期（パスワードの繰り返し周期以上、望ましくは、１００演算周期以上）の数値列を生成し、暗号化キーの一部とし、さらに、３）直前の暗号化出力値を暗号化キーの一部とすることにより、「繰り返しパターン」の発生を防止する。
【００４１】
具体的には、パスワードは前述のように３６文字であるが、１バイトでは、２５６文字を表現可能である。２５６÷３６＝７（余り４）であるから、例えば、以下のように７つの文字グループを定義し、０〜６の値を繰り返して（数値列を生成して）、グループを選択し、それを暗号化キーに使用する。即ち、処理上のパスワードを構成する各文字を以下のグループ分けで定まる文字に変換して暗号化に使用する。
【００４２】
グループ０：”０”（０２ｈ）〜”Ｚ”（２５ｈ）
グループ１：”０”（２６ｈ）〜”Ｚ”（４９ｈ）
グループ２：”０”（４Ａｈ）〜”Ｚ”（６Ｄｈ）
グループ３：”０”（６Ｅｈ）〜”Ｚ”（９１ｈ）
グループ４：”０”（９２ｈ）〜”Ｚ”（Ｂ５ｈ）
グループ５：”０”（Ｂ６ｈ）〜”Ｚ”（Ｄ９ｈ）
グループ６：”０”（ＤＡｈ）〜”Ｚ”（ＦＤｈ）
【００４３】
このようなグループ分けにより、パスワードを構成する文字のうち、例えば”０”は、０２ｈ，２６ｈ，４Ａｈ，６Ｅｈ，９２ｈ，Ｂ６ｈ，ＤＡｈのいずれかに変換され、”１”は、０３ｈ，２７ｈ，４Ｂｈ，６Ｆｈ，９３ｈ，Ｂ７ｈ，ＤＢｈに変換され、．．．”Ａ”は、０Ｃｈ，３０ｈ，５４ｈ，７８ｈ，９Ｃｈ，Ｃ０ｈ，Ｅ４ｈのいずれかに変換され、．．．”Ｚ”は、２５ｈ，４９ｈ，６Ｄｈ，９１ｈ，Ｂ５ｈ，Ｄ９ｈ，ＦＤｈに変換され、絶対に重複しない。従って、処理上のパスワード（元のパスワードと付加文字の連結）内の文字が同一の文字に変換されて、それが暗号化に使用される事態を防止できる。
【００４４】
データ配信サーバ１１は、処理上のパスワード（元のパスワードと付加文字の連結）内の各文字を上述の７つのグループのいずれの文字に変換するかを数式２で表されるＸに従って決定する。
【数２】
Ｙｎ＝Ｙｎ−１＋Ｘｎ−１
Ｘｎ＝（（直前の暗号化出力値  ＸＯＲ  （Ｚ÷Ｙｎ）の余り）÷７）の余り
ここで、Ｚは任意に選択された大きな素数（暗号化／復号化処理の外部パラメータである）
Ｙは、１＜Ｙ＜Ｚの範囲にあり、Ｚを超えた場合はＹ＝Ｙ−Ｚである。
Ｘは０〜６の値であり、グループを特定する。
【００４５】
なお、ＹとＸの初期値Ｙ１とＸ１は次式により求められる。
【数３】
Ｙ１＝１＋（データサイズ  ＸＯＲ  （Ｐ１×１＋Ｐ２×２＋Ｐｎ×ｎ）の下位１バイト）
Ｘ１＝（（ダミー出力値  ＸＯＲ  （Ｚ÷Ｙ１）の余り）÷７）の余り
ダミー出力値＝（（Ｐ１からＰｎの（Ｐ×Ｐ＋ｎ×ｎ＋Ｐ×ｎ）  ＸＯＲ  データサイズ）の累積値）の下位１バイト
【００４６】
このようにして求めたＸで特定されるグループに属す文字（コード）に、処理上の各パスワードを変換する。例えば、処理上のパスワードが「Ａ」で、Ｘが０であれば、このパスワードは”０ｃｈ”に変換される。
【００４７】
このようにして、１）当初のパスワードの最後に暗号対象のデータのサイズから定まる付加情報を１文字追加して処理上のパスワードを生成し、２）十分大きな周期の数値列Ｙを生成して、３）直前の暗号化出力値と数値列Ｙを用いて数値列Ｘを生成し、４）この数値例Ｘを用いてパスワードを構成する文字種を拡張して１バイトの暗号化キーを生成し、これとデータの各バイトデータとのＸＯＲを取って暗号化する。
【００４８】
一方、復号化処理は、上述の処理と同様の処理を行うことになる。但し、数式２における「直前の出力値」は「直前の入力値（復号化のために取り出した１バイト）」、数式３における「ダミー出力値」は「ダミー入力値（演算式は同一）」となる。
【００４９】
次に、以上説明した暗号化・復号化処理を、図１のデータ配信システムにおいて、データ配信サーバ１１がデータを暗号化してユーザ端末２１に配信し、ユーザ端末２１において復号化する場合を例に説明する。
【００５０】
まず、ユーザ端末２１は、データの配信を受けるため、データ配信サーバ１１にアクセスする。サーバ装置本体１２の処理制御部１１５は、図７に示すログイン画面を記憶部１１２から読み出して通信制御部１１１を介してユーザ端末２１に送信する。ユーザ端末２１の処理制御部２１５は、ログイン画面を通信制御部２１１を介して受信し、表示処理部２１４に表示する。ユーザは、入力処理部２１３から、このログイン画面にＩＤとパスワードを入力する。処理制御部２１５は、入力されたＩＤとパスワードとの対をコンテンツ配信サーバ１１に送信する。処理制御部１１５は、このＩＤとパスワードの対が、認証ＤＢ１３に登録されているか否かを判別し、登録されていれば、認証ＯＫとして、アクセスを許可する。ユーザは、ユーザ端末２１を操作して、ダウンロードしたいデータを特定する。
【００５１】
サーバ装置本体１２の処理制御部１１５は、特定されたデータを暗号化して、配信するため、以下の処理を開始する。
【００５２】
まず、コンテンツＤＢ１４を参照して、配信対象のデータがファイルであるかテキストであるかを判別する。
ファイルであれば、図８に示す処理を開始し、テキストであれば、図９に示す処理を開始する。
【００５３】
まず、配信対象のデータがファイルの場合の動作を、アクセス者のＩＤが０００１で、コンテンツＤＢ１４のコンテンツＮｏ．０００１のコンテンツが配信対象として指定された場合を例に説明する。
【００５４】
まず、パターン消しに使用する素数Ｚを乱数などを用いて特定する（ステップＳ１１）。
続いて、暗号化対象のファイルのサイズをコンテンツＤＢ１４の情報から特定する（ステップＳ１２）。
【００５５】
ステップＳ１２で取得したファイルサイズに数式１を適用して付加情報を求める（ステップＳ１３）。図５の例では、暗号化対象のＮｏ．０００１のファイルのサイズは３６０Ｍバイトであり、（ファイルサイズ÷３６）の余り＋３０ｈは「３０ｈ」となり、文字コード３０ｈに対応する文字”０”が選択され、処理上のパスワードは、「ＡＢＣＤ０」となる。
【００５６】
次に、ポインタｉとｊを１におく（ステップＳ１４）。ポインタｉは処理の繰り返し数を示すポインタである。また、ｊは処理上のパスワードの文字を指定するためのポインタである。
【００５７】
次に、数式２で表されるＸｉを求める（ステップＳ１５）。当初は、Ｘ１を求める必要がある。そこで、まず、数式３から、「Ｙ１＝１＋（３６０Ｍ（データサイズ）  ＸＯＲ  （３Ａｈ×１＋３Ｂｈ×２＋３Ｃｈ×３＋３Ｄｈ×４２＋３０ｈ×５））の下位１バイト」を求める。さらに、「ダミーの出力値＝（Ｐ１〜Ｐ５の（（Ｐ×Ｐ＋ｎ×ｎ＋Ｐ×ｎ）  ＸＯＲ  ３６０Ｍ（データサイズ））の累積値）の下位１バイト」を求める。
【００５８】
次に、このようにして求めた、Ｙ１とダミー出力値を用いて、数式２から「Ｘ１＝（（（ダミー出力値）  ＸＯＲ  （ステップＳ１１で特定したＺ÷Ｙ１）の余り）÷７）の余り」を求める。
【００５９】
このようして得たＸｉの値から処理上のパスワードのうちのｊ番目の文字Ｐｊを、対応する第Ｘｉグループに属す文字Ｑｊに変換する（ステップＳ１６）。この例では、例えば、Ｘ１が０であれば、処理上のパスワードの第１の文字「Ａ］を対応する第０グループに属すコード”０Ｃｈ”に変換する。この値が、暗号化キーとなる。
【００６０】
次に、暗号化対象データの第ｉバイトのデータを読み出して、文字ＱｊのコードとＸＯＲを取る（ステップＳ１７）。得られたデータは記憶部１１２に蓄積される。なお、ＸＯＲを取る際に、データサイズの変化はない。
【００６１】
続いて、暗号化対象データの全てのバイトについて処理が終了したか否かを判別する（ステップＳ１８）。
処理が終了していなければ（ステップＳ１８；Ｎｏ）、ｉとｊを更新して（ステップＳ１９）、ステップＳ１５にリターンする。なお、ステップＳ１９では、ポインタｉについては＋１し、ｊについては、通常は＋１し、処理上のパスワードの文字数より大きくなったときには、１に戻す。
【００６２】
ステップＳ１５では、ＹｉをＹｉ−１とＸｉ−１から求め、さらに、このＹｉを用いてＸｉを求めて、パスワードの文字Ｐｊを対応するグループＸｉに属す文字Ｑｊの文字コードに変換する。これが暗号化キーとなる。以後、同様の暗号化処理を繰り返す。
【００６３】
最後に、ステップＳ１８で、暗号化対象データの全てのバイトについて、処理が終了したと判別されると（ステップＳ１８；Ｙｅｓ）、送信対象データの暗号化が完了したことになり、サーバ装置本体１２は、要求元のユーザ端末２１に暗号化されたデータを送信する。このとき、通信ヘッダなどに含めて、Ｚの値と暗号化対象がファイルであることを示す情報をユーザ端末２１に送信する（ステップＳ２０）。
【００６４】
次に、配信を指定されたデータがテキストの場合の動作を、アクセス者のＩＤが０００１で、コンテンツＤＢのコンテンツＮｏ．０００２のコンテンツが指定された場合を例に説明する。
まず、パターン消しに使用する素数Ｚを乱数などを用いて特定する（ステップＳ３１）。
【００６５】
暗号化対象データの文字数をコンテンツＤＢ１４の情報から特定する（ステップＳ３２）。
【００６６】
ステップＳ３２で取得した文字列長（文字数）に数式１を適用して付加情報を求める（ステップＳ３３）。この例では、暗号化対象データの文字数は３６００１であり、「（文字数÷３６）の余り＋３０ｈ」は「３１ｈ」となり、文字コード３１ｈに対応する文字「１」が選択され、処理上のパスワードは、「ＡＢＣＤ１」となる。
【００６７】
次に、ポインタｉとｊを１におく（ステップＳ３４）。ポインタｉは処理の繰り返し数を示すポインタである。また、ｊは処理上のパスワードの文字を指定するためのポインタである。
【００６８】
数式２で表されるＸｉを求める（ステップＳ３５）。当初は、Ｘ１を求める必要がある。そこで、まず、数式３により、「Ｙ１＝１＋（３６００１（文字数）  ＸＯＲ  （３Ａｈ×１＋３Ｂｈ×２＋３Ｃｈ×３＋３Ｄｈ×４２＋３１ｈ×５））の下位１バイト」を求める。さらに、「ダミーの出力値＝（Ｐ１〜Ｐ５の（（Ｐ×Ｐ＋ｎ×ｎ＋Ｐ×ｎ）  ＸＯＲ  データサイズ）の累積値）の下位１バイト」を求める。
【００６９】
次に、このようにして求めた、Ｙ１とダミー出力値を用いて、数式２から「Ｘ１＝（（ダミー出力値）  ＸＯＲ  （ステップＳ３１で特定したＺ÷Ｙ１）の余り）÷７の余り」を求める。
【００７０】
次に、このようにして得たＸｉの値から処理上のパスワードのうちのｊ番目の文字Ｐｊを、対応する第Ｘｉグループに属す文字Ｑｊに変換する（ステップＳ３６）。この例では、例えば、Ｘ１が１であれば、処理上のパスワードの第１の文字「Ａ］を対応するコード”３０ｈ”（”０”の文字コード）に変換する。これが暗号化キーとなる。
【００７１】
次に、暗号化対象テキストの第ｉバイトのデータを読み出して、文字ＱｉのコードとＸＯＲを取る（ステップＳ３７）。暗号化対象データが日本語の場合、一般に２バイトで１文字を構成する。従って、各文字が２つのパートに分離されて暗号化されることになる。得られたデータは記憶部１１２に蓄積される。なお、ＸＯＲを取る際に、データサイズの変化はない。
【００７２】
続いて、暗号化対象データの全てのバイトについて処理が終了したか否かを判別する（ステップＳ３８）。
処理が終了していなければ（ステップＳ３８；Ｎｏ）、ｉとｊを更新して（ステップＳ３９）、ステップＳ３５にリターンする。なお、ステップＳ３９では、ポインタｉについては＋１し、ｊについては、通常は＋１し、処理上のパスワードの文字数より大きくなったときには、１に戻す。
【００７３】
ステップＳ３５では、ＹｉをＹｉ−１とＸｉ−１から求め、さらに、このＹｉを用いてＸｉを求めて、以後、同様の暗号化処理を繰り返す。
【００７４】
最後に、ステップＳ３８で、暗号化対象データの全てのバイトについて、処理が終了したと判別されると（ステップＳ３８；Ｙｅｓ）、送信対象データの暗号化が完了したことになり、サーバ装置本体１２は、要求元のユーザ端末２１に記憶部１１２に記憶されている暗号化されたデータを送信する。このとき、通信ヘッダなどに含めて、Ｚの値と暗号化対象がテキストであることを示す情報をユーザ端末２１に送信する（ステップＳ４０）。
【００７５】
次に、このようにして暗号化されたデータを受信したユーザ端末２１の復号化動作を説明する。
【００７６】
ユーザ端末２１は、データ配信サーバ１１からの暗号化されたデータを受信し、ヘッダ情報から、受信したデータがファイルであるかテキストであるかを判別する。ユーザ端末１１は、ファイルであれば、図１０に示す処理を開始し、テキストであれば、図１１に示す処理を開始する。
【００７７】
まず、受信したデータがファイルであったときの動作を図１０を参照して説明する。
処理制御部２１５は、パターン消しに使用する素数Ｚをヘッダ情報から取得する（ステップＳ５１）。
続いて、受信したファイルのサイズを特定する（ステップＳ５２）。ＸＯＲ暗号はファイルサイズが変化しないという特徴を有しており、特定したファイルサイズは暗号化前のファイルサイズと同一である。
【００７８】
ステップＳ５２で取得したファイルサイズに数式１を適用して付加情報を求める（ステップＳ５３）。この例では、暗号化対象ファイルのサイズは３６０Ｍバイトであり、（ファイルサイズ÷３６）の余り＋３０ｈは「３０ｈ」となり、文字コード３０ｈに対応する文字”０”が選択される。ユーザ端末２１は、自己が記憶しているパスワード「ＡＢＣＤ」と「０」を連結し、処理上のパスワードを「ＡＢＣＤ０」とする。
【００７９】
次に、ポインタｉとｊを１におく（ステップＳ５４）。ポインタｉは処理の繰り返し数を示すポインタである。また、ｊは処理上のパスワードの文字を指定するためのポインタである。
【００８０】
数式２で表されるＸｉを求める（ステップＳ５５）。当初は、Ｘ１を求める必要がある。そこで、まず、「Ｙ１＝１＋（３６０Ｍ（データサイズ）  ＸＯＲ  （３Ａｈ×１＋３Ｂｈ×２＋３Ｃｈ×３＋３Ｄｈ×４２＋３０ｈ×５））の下位１バイト」を求める。さらに、「ダミーの入力値＝（Ｐ１〜Ｐ５の（（Ｐ×Ｐ＋ｎ×ｎ＋Ｐ×ｎ）  ＸＯＲ  データサイズ）の累積値）の下位１バイト」を求める。
【００８１】
次に、このようにして求めたＹ１とダミー入力値を用いて、数式２から「Ｘ１＝（（ダミー入力値）  ＸＯＲ  （ステップＳ５１で特定したＺ÷Ｙ１）の余り）÷７の余り」を求める。
【００８２】
このようして得たＸｉの値から処理上のパスワードのうちのｊ番目の文字Ｐｊを、対応する第Ｘｉグループに属す文字Ｑｊに変換する（ステップＳ５６）。例えば、Ｘ１が０であれば、処理上のパスワードの第１の文字「Ａ］を対応するコード”０Ｃｈ”に変換する。これが復号化キーとなる。
【００８３】
次に、暗号化対象データの第ｉバイトのデータを読み出して、文字ＱｊのコードとＸＯＲを取って、１バイト分のデータを復号化する（ステップＳ５７）。復号化データは記憶部２１２に蓄積される。
【００８４】
続いて、暗号化対象データの全てのバイトについて処理が終了したか否かを判別する（ステップＳ５８）。
処理が終了していなければ（ステップＳ５８；Ｎｏ）、ｉとｊを更新して（ステップＳ５９）、ステップＳ５５にリターンする。なお、ステップＳ５９では、ポインタｉについては＋１し、ｊについては、通常は＋１し、処理上のパスワードの文字数より大きくなったときには、１に戻す。
【００８５】
ステップＳ５５では、新たなパターン消し用錯乱値Ｙｉを従前のパターン消し用錯乱値Ｙｉ−１と直前に使用した入力値Ｘｉ−１から求める。さらに、このＹｉと直前の入力値（受信した暗号化データの第ｉ−１バイトのデータ）とを用いてＸｉを求めて、以後、同様の暗号化処理を繰り返す。
【００８６】
最後に、ステップＳ５８で、暗号化対象データの全てのバイトについて、処理が終了したと判別されると（ステップＳ５８；Ｙｅｓ）、送信対象データの暗号化が完了したことになり、記憶部２１２上に復号化データが記憶されている。
【００８７】
次に、配信されたデータがテキストの場合のユーザ端末１１の動作を、図１１を参照して説明する。
まず、パターン消しに使用する素数Ｚをヘッダ情報から特定する（ステップＳ７１）。
続いて、復号化対象のデータの文字数（２バイト文字の数）を特定する（ステップＳ７２）。
【００８８】
ステップＳ７２で取得した文字数に数式１を適用して付加情報を求める（ステップＳ７３）。この例では、暗号化対象データの文字数（２バイト文字）は３６００１であり、「（文字数÷３６）の余り＋３０ｈ」は「３１ｈ」となり、文字コード３１ｈに対応する文字”１が選択され、処理上のパスワードは、「ＡＢＣＤ１」となる。
【００８９】
次に、ポインタｉとｊを１におく（ステップＳ７４）。ポインタｉは処理の繰り返し数を示すポインタである。また、ｊは処理上のパスワードの文字を指定するためのポインタである。
【００９０】
数式２で表されるＸｉを求める（ステップＳ７５）。当初は、Ｘ１を求める必要がある。そこで、まず、「パターン消し錯乱値Ｙ１＝１＋（３６００１（２バイト文字の文字数）  ＸＯＲ  （３Ａｈ×１＋３Ｂｈ×２＋３Ｃｈ×３＋３Ｄｈ×４２＋３１ｈ×５））の下位１バイト」を求める。さらに、「ダミーの入力値＝Ｐ１〜Ｐ５の（（Ｐ×Ｐ＋ｎ×ｎ＋Ｐ×ｎ）  ＸＯＲ  文字数）の累積値の下位１バイト」を求める。
【００９１】
次に、このようにして求めた、Ｙ１とダミー入力値を用いて、数式２から「Ｘ１＝（（入力値）  ＸＯＲ  （（ステップＳ３１で特定したＺ÷Ｙ１）の余り）÷７）の余り」を求める。
【００９２】
このようして得たＸｉの値から処理上のパスワードのうちのｊ番目の文字Ｐｊを、対応する第Ｘｉグループに属す文字Ｑｊに変換する（ステップＳ７６）。例えば、Ｘ１が１であれば、処理上のパスワードの第１の文字「Ａ］を対応するコード”３０ｈ”に変換する。これが復号キーとなる。
【００９３】
次に、暗号化対象テキストの第ｉバイトのデータを読み出して、文字ＱｊのコードとＸＯＲを取って、１バイトのデータを復号する（ステップＳ７７）。復号データは記憶部２１２に蓄積される。
続いて、暗号化対象データの全てのバイトについて処理が終了したか否かを判別する（ステップＳ７８）。
処理が終了していなければ（ステップＳ７８；Ｎｏ）、ｉとｊを更新して（ステップＳ７９）、ステップＳ７５にリターンする。なお、ステップＳ７９では、ポインタｉについては＋１し、ｊについては、通常は＋１し、処理上のパスワードの文字数より大きくなったときには、１に戻す。
【００９４】
ステップＳ７５では、新しい錯乱値Ｙｉを従前の錯乱値Ｙｉ−１とＸｉ−１から求め、さらに、このＹｉと直前の入力データとを用いてＸｉを求めて、以後、同様の復号化処理を繰り返す。
【００９５】
最後に、ステップＳ７８で、暗号化対象データの全てのバイトについて、処理が終了したと判別されると（ステップＳ７８；Ｙｅｓ）、送信対象データの復号化が完了したことになる。
【００９６】
以上説明したように、本実施の形態によれば、ユーザ等が認識しているパスワードの後ろにファイルサイズから生成される付加文字を１文字追加したものを処理上のパスワードとする。これにより、パスワード”ＡＢＣＤＡＢＣＤ”で暗号化されたものがパスワード”ＡＢＣＤ”で復号化されるような事態を防止できる。
【００９７】
また、十分大きな周期のパターン消し用の数値列（錯乱値）Ｙを生成して、直前の暗号化出力値と数値列Ｙを用いて数値列Ｘを生成し、この数値例Ｘを用いてパスワードを構成する文字種を拡張して１バイトの暗号化キーを生成する。これにより、繰り返しパターンの発生を防止することができる。
【００９８】
なお、この発明は、上記実施の形態に限定されず、種々の変形及び応用が可能である。
【００９９】
例えば、上記実施の形態においては、ユーザ認証用のパスワードと暗号化・復号化用のパスワードとを共通にしたが、これらは別個でもよい。
【０１００】
また、上記実施の形態においては、テキストデータに付いては、サイズとして文字数を使用したが、バイト数でもよい。また、ファイルサイズは、バイト数に限定されず、ワード数やセクタ数などでもよい。
【０１０１】
上記実施の形態においては、理解を容易にするために、コンテンツ配信サーバ１１がコンテンツを暗号化し、ユーザ端末２１がコンテンツを復号化する例を示したが、暗号化・復号化を行う装置は任意である。
【０１０２】
また、ユーザ等が認識しているパスワードの後ろにファイルサイズから生成される付加文字を１文字追加したが、付加文字の数や付加文字の位置は任意である。例えば、２文字の付加文字をパスワードの先頭に付加してもよい。
【０１０３】
また、パスワードで使用する文字を一般の文字に限られず他の文字に拡張する手法は任意であり、上述の例に限定されるものではない。
【０１０４】
パスワードとは非同期の周期の数値列を生成する手法（式）も上述の例に限られるものではない。
さらに、直前の暗号化出力値（又は入力値）を暗号化キー（又は復号化キー）を生成（選択）するために使用したが、その使用方法も任意である。例えば、数式２，３の一部として使用する以外の手法で使用してもよい。
【０１０５】
さらに、上記実施の形態では、１）ユーザ等が認識しているパスワードの後ろにファイルサイズから生成される付加文字を１文字追加したものを処理上のパスワードとし、２）また、パスワードで使用する文字を一般の文字に限られず他の文字にまで拡張し、３）パスワードとは非同期の周期の数値列を暗号化キーの一部とし、４）直前の暗号化出力値（又は入力値）を暗号化キーの一部としたが、これらの一部の処理のみを行ってもよい。
【０１０６】
例えば、１）ユーザ等が認識しているパスワードの先頭、後ろ、又は途中にデータサイズから生成される１又は複数の付加文字を追加したものを処理上のパスワードとし、他の処理は行わない。
１）、３）、４）の処理は行わず、２）パスワードで使用する文字を一定のルールに則って、一般の文字に限られず他の文字にまで拡張する。
１）、２）、４）の処理は行わず、３）パスワードとは非同期の周期の数値列を暗号化キーの一部とする。
１）〜３）の処理は行わず、４）直前の暗号化出力値（又は入力値）を暗号化キーの一部とする。
というように、上記１）〜４）の手法の任意の２又は３つを組み合わせて使用してもよい。
【０１０７】
コンピュータ又はコンピュータ群に、上述の動作を実行するためのプログラムを格納した媒体（フレキシブルディスク、ＣＤ−ＲＯＭ等）から該プログラムをインストールすることにより、上述の処理を実行するサーバ３等を構成することができる。なお、上述の機能を、ＯＳが分担又はＯＳとアプリケーションの共同により実現する場合等には、ＯＳ以外の部分のみを媒体に格納してもよい。
【０１０８】
なお、搬送波をプログラム信号で変調して、通信を介して配信することも可能である。
【０１０９】
【発明の効果】
以上説明したように、本発明によれば、処理負担があまり大きくなく、信頼性の高い暗号化・復号化手法を提供可能である。
【図面の簡単な説明】
【図１】本発明の実施形態に係るコンテンツ配信システムの構成を示す図である。
【図２】図１に示すコンテンツ配信サーバの構成例を示す図である。
【図３】図２に示すサーバ装置本体の構成例を示す図である。
【図４】図２に示す認証データベースに格納されるテーブルの構成例を示す図である。
【図５】図２に示すコンテンツデータベースに格納されるテーブルの構成例を示す図である。
【図６】図１に示すユーザ端末の構成例を示す図である。
【図７】ログイン画面の一例を示す図である。
【図８】コンテンツサーバがファイルに対して施す暗号化処理のフローチャートである。
【図９】コンテンツサーバがテキストに対して施す暗号化処理のフローチャートである。
【図１０】ユーザ端末がファイルに対して施す復号化処理のフローチャートである。
【図１１】コンテンツサーバがテキストに対して施す復号化処理のフローチャートである。
【符号の説明】
１１      コンテンツ配信サーバ
２１      ユーザ端末
【図１】
2004320475.tif 000003
【図２】
2004320475.tif 000004
【図３】
2004320475.tif 000005
【図４】
2004320475.tif 000006
【図５】
2004320475.tif 000007
【図６】
2004320475.tif 000008
【図７】
2004320475.tif 000009
【図８】
2004320475.tif 000010
【図９】
2004320475.tif 000011
【図１０】
2004320475.tif 000012
【図１１】
2004320475.tif 000013