(57)【要約】【課題】ストリーム暗号を用いて鍵系列を生成し、得られた鍵系列に基づいてデータをスクランブルする。【解決手段】初期ベクトルと鍵とを入力して鍵系列を生成し、生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する。したがって、スクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、スクランブル鍵の耐タンパ性を確保できる。また、スクランブル処理を行うことで、処理の高速化を実現することができる。【選択図】図１
2009037095.tif 000002
【特許請求の範囲】
【請求項１】
初期ベクトルと鍵とを入力して鍵系列を生成するストリーム暗号化手段と、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力するスクランブル関数と、
を備えたことを特徴とするデータスクランブル装置。
【請求項２】
前記鍵が耐タンパ化され、格納されていることを特徴とする請求項１に記載のデータスクランブル装置。
【請求項３】
初期ベクトルと鍵とを入力して鍵系列を生成するストリーム暗号化手段と、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力するデスクランブル関数と、
を備えたことを特徴とするデータデスクランブル装置。
【請求項４】
前記鍵が耐タンパ化され、格納されていることを特徴とする請求項３に記載のデータデスクランブル装置。
【請求項５】
初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップと、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する第２のステップと、
を備えたことを特徴とするデータスクランブル方法。
【請求項６】
初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップと、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する第２のステップと、
を備えたことを特徴とするデータデスクランブル方法。
【請求項７】
コンピュータに、
初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップと、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する第２のステップと、
を実行させるためのプログラム。
【請求項８】
コンピュータに、
初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップと、
該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する第２のステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データスクランブル装置、データデスクランブル装置、データスクランブル方法、データデスクランブル方法およびプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータを利用した様々なサービスが提供されている。多くのサービスにおいては、通信の秘匿を実現するために、暗号が利用される。暗号化方式として、最も一般的なものは、一つの鍵で暗号化・復号化を行う共通鍵暗号化方式であるが、この共通暗号化方式は、ブロック暗号方式とストリーム暗号方式の２つに大別される。前者は、最も一般的に用いられている方式であるが、後者の方が処理速度に優れるため、近年注目を集めつつある。
【０００３】
ここで、ストリーム暗号は、任意の長さのデータを暗号化する技術であり、初期ベクトルと鍵とを暗号化アルゴリズムに入力することにより、鍵系列を生成し、この鍵系列と入力データとの排他的論理和を実行することにより、暗号化データを得るものである。一方、復号の場合には、暗号化の場合と同様に、初期ベクトルと鍵とを暗号化アルゴリズムに入力して、鍵系列を生成し、この鍵系列と暗号化データとの排他的論理和を実行することにより、平文データを得る。
【０００４】
上記のようなストリーム暗号は、ブロック暗号等と比較して高速な動作が可能であるとともに、安全性においても優れたものであり、こうしたストリーム暗号を生成するための方法および装置の一例が特許文献１に開示されている。
【０００５】
一方、暗号化と同様に、データを難読化する技術として、データスクランブル技術が知られている。このデータスクランブル技術は、データ列に対して、置換や演算処理を施して、その解析を困難にする技術である。例えば、プログラムの耐タンパ化のために、モジュール間でやり取りされるデータをスクランブル化して、メモリ上に格納する場合等に上記のスクランブル技術が用いられる。
【０００６】
このスクランブル技術は、一般に、その安全性において、暗号技術には劣るものの、処理速度が暗号技術に比較して高速であるという特徴を有している。こうしたスクランブル技術に関する一例が特許文献２および３に開示されている。
【特許文献１】特開２００７−０６０１９１号公報
【特許文献２】特開２０００−２８６８３５号公報
【特許文献３】特開２０００−２８６８３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のように、ストリーム暗号は、ブロック暗号等と比較して高速な動作が可能であり、また、一般的なスクランブル技術と比較して、高い安全性を有する。しかしながら、このストリーム暗号技術をそのままスクランブル技術として利用するには、いくつかの問題がある。
【０００８】
例えば、耐タンパ化による処理負荷の増大に伴う許容範囲は、一般に、数％以下とされているが、一方で、２つのモジュール間において授受されるデータに対して、暗号化処理を施す場合、暗号化プロセスと復号化プロセスの２つのプロセスを同時に実行する必要がある。さらに、保護の対象となるモジュールの数が多い場合には、より多くの暗号化プロセスと復号化プロセスとを同時に実行する必要が生じる。このため、ストリーム暗号自体が高速かつ軽量であっても、全体としての負荷が大きくなる可能性があり、このような場合には、むしろ、より軽量なデータスクランブル技術を用いた方がよい場合がある。
【０００９】
一方で、データスクランブル技術の多くは、固定長のビット列に対して、テーブルデータを用いたデータの置換や論理演算を施すことによって、ストリーム暗号と比較して、さらに軽量な処理を実現している。しかしながら、データスクランブル技術では、同一のデータに対して、常に同一のスクランブルデータが出力され、ビット数が十分でない場合には、必ずしも十分な安全性を実現することができないという問題がある。また、こうした問題を回避するために、スクランブルモジュールとデスクランブルモジュールとの間で、毎回、異なる鍵を共有して、データのスクランブル化を行う方法もあるが、この場合には、鍵をスクランブルモジュールとデスクランブルモジュールとの間で安全に授受するための別の耐タンパ技術が必要となるといった問題があった。
【００１０】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ストリーム暗号を用いて鍵系列を生成し、得られた鍵系列に基づいてデータをスクランブルするデータスクランブル装置、データデスクランブル装置、データスクランブル方法、データデスクランブル方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、初期ベクトルと鍵とを入力して鍵系列を生成するストリーム暗号化手段（例えば、図１のストリーム暗号化部１２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力するスクランブル関数（例えば、図１のスクランブル関数１３に相当）と、を備えたことを特徴とするデータスクランブル装置を提案している。
【００１２】
この発明によれば、ストリーム暗号化手段が、初期ベクトルと鍵とを入力して鍵系列を生成し、スクランブル関数が生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する。したがって、スクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、スクランブル鍵の耐タンパ性を確保できる。また、スクランブル処理を行うことで、処理の高速化を実現することができる。
【００１３】
（２）本発明は、（１）のデータスクランブル装置について、前記鍵が耐タンパ化され、格納されていることを特徴とするデータスクランブル装置を提案している。
【００１４】
この発明によれば、ストリーム暗号に入力する鍵が耐タンパ化され、格納されている。したがって、ストリーム暗号に入力する鍵についても十分な耐タンパ性を確保できる。
【００１５】
（３）本発明は、初期ベクトルと鍵とを入力して鍵系列を生成するストリーム暗号化手段（例えば、図３のストリーム暗号化部２２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力するデスクランブル関数（例えば、図３のデスクランブル関数２３に相当）と、を備えたことを特徴とするデータデスクランブル装置を提案している。
【００１６】
この発明によれば、ストリーム暗号化手段が初期ベクトルと鍵とを入力して鍵系列を生成し、デスクランブル関数が生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する。したがって、デスクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、デスクランブル鍵の耐タンパ性を確保できる。また、デスクランブル処理を行うことで、処理の高速化を実現することができる。
【００１７】
（４）本発明は、（３）のデータデスクランブル装置について、前記鍵が耐タンパ化され、格納されていることを特徴とするデータデスクランブル装置を提案している。
【００１８】
この発明によれば、ストリーム暗号に入力する鍵が耐タンパ化され、格納されている。したがって、ストリーム暗号に入力する鍵についても十分な耐タンパ性を確保できる。
【００１９】
（５）本発明は、初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップ（例えば、図２のステップＳ１０１およびステップＳ１０２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する第２のステップ（例えば、図２のステップＳ１０３およびステップＳ１０４に相当）と、を備えたことを特徴とするデータスクランブル方法を提案している。
【００２０】
この発明によれば、初期ベクトルと鍵とを入力して鍵系列を生成し、生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する。したがって、スクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、スクランブル鍵の耐タンパ性を確保できる。また、スクランブル処理を行うことで、処理の高速化を実現することができる。
【００２１】
（６）本発明は、初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップ（例えば、図４のステップＳ２０１およびステップＳ２０２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する第２のステップ（例えば、図４のステップＳ２０３およびステップＳ２０４に相当）と、を備えたことを特徴とするデータデスクランブル方法を提案している。
【００２２】
この発明によれば、初期ベクトルと鍵とを入力して鍵系列を生成し、生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する。したがって、デスクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、デスクランブル鍵の耐タンパ性を確保できる。また、デスクランブル処理を行うことで、処理の高速化を実現することができる。
【００２３】
（７）本発明は、コンピュータに、初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップ（例えば、図２のステップＳ１０１およびステップＳ１０２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する第２のステップ（例えば、図２のステップＳ１０３およびステップＳ１０４に相当）と、を実行させるためのプログラムを提案している。
【００２４】
この発明によれば、初期ベクトルと鍵とを入力して鍵系列を生成し、生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した平文にスクランブル処理を実行して暗号化文を出力する。したがって、スクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、スクランブル鍵の耐タンパ性を確保できる。また、スクランブル処理を行うことで、処理の高速化を実現することができる。
【００２５】
（８）本発明は、コンピュータに、初期ベクトルと鍵とを入力して鍵系列を生成する第１のステップ（例えば、図４のステップＳ２０１およびステップＳ２０２に相当）と、該生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する第２のステップ（例えば、図４のステップＳ２０３およびステップＳ２０４に相当）と、を実行させるためのプログラムを提案している。
【００２６】
この発明によれば、初期ベクトルと鍵とを入力して鍵系列を生成し、生成した鍵系列の先頭ｎビット（ｎは正の整数）をスクランブル鍵として、入力した暗号文にデスクランブル処理を実行して平文を出力する。したがって、デスクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、デスクランブル鍵の耐タンパ性を確保できる。また、デスクランブル処理を行うことで、処理の高速化を実現することができる。
【発明の効果】
【００２７】
本発明によれば、論理演算のみを用いてデータをスクランブルすることにより、処理の高速化を実現し、さらに、スクランブルに利用する鍵の生成にストリーム暗号を用いることにより、高い安全性を実現することができるという効果がある。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２９】
＜データスクランブル装置の構成＞
図１を用いて、本実施形態に係るデータスクランブル装置の構成について説明する。本実施形態に係るデータスクランブル装置１０は、図１に示すように、鍵格納部１１と、ストリーム暗号化部１２と、スクランブル関数１３とから構成されている。
【００３０】
鍵格納部１１は、ストリーム暗号化部１２に入力する鍵を格納している。なお、鍵は、耐タンパ化されて格納されている。ストリーム暗号化部１２は、鍵格納部１１から入力する鍵と初期ベクトルに基づいて、鍵系列を生成し、生成した鍵系列の先頭のｎビットをスクランブル関数１３において用いるスクランブル鍵として、スクランブル関数１３に出力する。
【００３１】
ここで、初期ベクトルを特に秘匿化する必要はないが、データスクランブル装置１０と後述するデータデスクランブル装置２０との間で共有する必要がある。具体的な共有の方法としては、１）時間情報を用いて共有する。２）一方の装置が乱数を生成し、もう一方の装置に通知することにより共有する等の方法がある。
【００３２】
スクランブル関数１３は、入力した平文データに対して、ストリーム暗号化部１２から入力したスクランブル鍵に基づいて、スクランブル処理を施して、暗号文データを出力する。
【００３３】
＜データスクランブル装置の処理＞
次に、図２を用いて、本実施形態に係るデータスクランブル装置の処理について説明する。
【００３４】
まず、ストリーム暗号化部１２は、鍵格納部１１から鍵を入力するとともに、初期ベクトルを入力する（ステップＳ１０１）。ストリーム暗号化部１２は、入力した鍵と初期ベクトルに基づいて、鍵系列を生成するとともに、生成した鍵系列の先頭のｎビットをスクランブル関数１３において用いるスクランブル鍵として、スクランブル関数１３に出力する（ステップＳ１０２）。
【００３５】
スクランブル関数１３は、入力した平文データに対して、ストリーム暗号化部１２から入力したスクランブル鍵に基づいて、スクランブル処理を実行する（ステップＳ１０３）。そして、スクランブル処理によって、暗号文データを生成して出力する（ステップＳ１０４）。
【００３６】
したがって、本実施形態に係るデータスクランブル装置によれば、スクランブル関数が用いるスクランブル鍵をストリーム暗号により生成するため、スクランブル鍵の耐タンパ性を確保できる。また、スクランブル処理を行うことで、処理の高速化を実現することができる。
【００３７】
＜データデスクランブル装置の構成＞
図３を用いて、本実施形態に係るデータデスクランブル装置の構成について説明する。本実施形態に係るデータデスクランブル装置２０は、図３に示すように、鍵格納部２１と、ストリーム暗号化部２２と、デスクランブル関数２３とから構成されている。
【００３８】
鍵格納部２１は、ストリーム暗号化部２２に入力する鍵を格納している。なお、鍵は、耐タンパ化されて格納されている。ストリーム暗号化部２２は、鍵格納部２１から入力する鍵と初期ベクトルに基づいて、鍵系列を生成し、生成した鍵系列の先頭のｎビットをデスクランブル関数２３において用いるデスクランブル鍵として、デスクランブル関数２３に出力する。
【００３９】
ここで、初期ベクトルを特に秘匿化する必要はないが、データスクランブル装置１０と後述するデータデスクランブル装置２０との間で共有する必要がある。具体的な共有の方法としては、１）時間情報を用いて共有する。２）一方の装置が乱数を生成し、もう一方の装置に通知することにより共有する等の方法がある。
【００４０】
デスクランブル関数２３は、入力した暗号文データに対して、ストリーム暗号化部２２から入力したデスクランブル鍵に基づいて、デスクランブル処理を施して、平文データを出力する。
【００４１】
＜データデスクランブル装置の処理＞
次に、図４を用いて、本実施形態に係るデータデスクランブル装置の処理について説明する。
【００４２】
まず、ストリーム暗号化部２２は、鍵格納部２１から鍵を入力するとともに、初期ベクトルを入力する（ステップＳ２０１）。ストリーム暗号化部２２は、入力した鍵と初期ベクトルに基づいて、鍵系列を生成するとともに、生成した鍵系列の先頭のｎビットをデスクランブル関数１３において用いるデスクランブル鍵として、デスクランブル関数１３に出力する（ステップＳ２０２）。
【００４３】
デスクランブル関数２３は、入力した暗号文データに対して、ストリーム暗号化部２２から入力したデスクランブル鍵に基づいて、デスクランブル処理を実行する（ステップＳ２０３）。そして、デスクランブル処理によって、平文データを生成して出力する（ステップＳ２０４）。
【００４４】
したがって、本実施形態に係るデータデスクランブル装置によれば、デスクランブル関数が用いるデスクランブル鍵をストリーム暗号により生成するため、デスクランブル鍵の耐タンパ性を確保できる。また、デスクランブル処理を行うことで、処理の高速化を実現することができる。
【００４５】
なお、データスクランブル装置およびデータデスクランブル装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをデータスクランブル装置およびデータデスクランブル装置に読み込ませ、実行することによって本発明のデータスクランブル装置およびデータデスクランブル装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００４６】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００４７】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。更に、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００４８】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００４９】
【図１】本実施形態に係るデータスクランブル装置の構成図である。
【図２】本実施形態に係るデータスクランブル装置の処理フローである。
【図３】本実施形態に係るデータデスクランブル装置の構成図である。
【図４】本実施形態に係るデータデスクランブル装置の処理フローである。
【符号の説明】
【００５０】
１０・・・データスクランブル装置、１１、２１・・・鍵格納部、１２、２２・・・ストリーム暗号化部、１３・・・スクランブル関数、２３・・・デスクランブル関数
【図１】
2009037095.tif 000003
【図２】
2009037095.tif 000004
【図３】
2009037095.tif 000005
【図４】
2009037095.tif 000006