(57)【要約】【課題】比較的低処理にも関わらず、暗号強度が高い暗号化エンコード方式の秘密鍵暗号方法等を提供し、低性能ＣＰＵの組み込み機器や、一度に大量のデータを暗号化するサーバ機器などに対して、実装することができる。【解決手段】秘密鍵を用いて暗号化処理を行う秘密鍵暗号方法であって、ハッシュ関数（ＭＤ５アルゴリズム）を用いて秘密鍵を生成する秘密鍵生成ステップと、前記秘密鍵生成ステップによって生成された秘密鍵を用いて排他的論理和演算（ＸＯＲ演算）することで暗号化処理を行う暗号化ステップとを有することを特徴とする。【選択図】図１
2008185616.tif 000002
【特許請求の範囲】
【請求項１】
秘密鍵を用いて暗号化処理を行う秘密鍵暗号方法であって、
ハッシュ関数を用いて秘密鍵を生成する秘密鍵生成ステップと、
前記秘密鍵生成ステップによって生成された秘密鍵を用いて排他的論理和演算することで暗号化処理を行う暗号化ステップとを有することを特徴とする秘密鍵暗号方法。
【請求項２】
前記暗号化処理の単位に応じて、前記秘密鍵を更新する秘密鍵更新ステップを有することを特徴とする請求項１に記載の秘密鍵暗号方法。
【請求項３】
前記秘密鍵更新ステップは、前記暗号化ステップで暗号化処理された暗号化データを用いて前記秘密鍵を更新することを特徴とする請求項２に記載の秘密鍵暗号方法。
【請求項４】
前記秘密鍵の長さを任意に変化させることができることを特徴とする請求項１乃至３のいずれか１項に記載の秘密鍵暗号方法。
【請求項５】
前記ハッシュ関数は、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ５）であることを特徴とする請求項１乃至４のいずれか１項に記載の秘密鍵暗号方法。
【請求項６】
秘密鍵を用いて暗号化処理を行う秘密鍵暗号装置であって、
ハッシュ関数を用いて秘密鍵を生成する秘密鍵生成手段と、
前記秘密鍵生成手段によって生成された秘密鍵を用いて排他的論理和演算することで暗号化処理を行う暗号化手段とを有することを特徴とする秘密鍵暗号装置。
【請求項７】
秘密鍵を用いて暗号化処理を行う秘密鍵暗号装置を制御するコンピュータプログラムであって、
ハッシュ関数を用いて秘密鍵を生成する秘密鍵生成ステップと、
前記秘密鍵生成ステップによって生成された秘密鍵を用いて排他的論理和演算することで暗号化処理を行う暗号化ステップとをコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデジタルデータの暗号化に関するものである。
【背景技術】
【０００２】
従来からデジタルの暗号化技術として、秘密鍵暗号方式や公開鍵暗号方式などの様々な暗号方式が提案されている。これらの暗号方式として、例えば、Ｔｒｉｐｌｅ  ＤＥＳ、ＤＥＡＬ、ＩＤＥＡ、楕円曲線暗号、ＥｌＧａｍａｌ暗号等が存在している。また、これらの暗号方式は、ネットワークを介した通信や、デジタルデータの暗号化に広く使われており、デジタルデータ社会の中でのセキュア性の向上に広く使われている技術となっている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
これらの暗号方式の特徴は、非常に暗号強度が高いことが上げられる。セキュアになる点を考慮すれば非常に優秀であるが、アルゴリズムの複雑さや演算の複雑さが甚大であり、プラットフォームによっては、実装が難しい場合が存在する。例えば、組み込み機器のようなＣＰＵの計算能力がそれほど望めない場合がそれに当たる。このような場合は、暗号強度を少し低減させる代わりに、処理の高速性を優先させたほうが良い。
【０００４】
更に、他の例としては、高速なＣＰＵを搭載するサーバ機で暗号化をする場合であっても、大量のデータを瞬時に暗号化する必要がある場合なども同様に暗号化処理に時間をかけることができない。そのため、組み込み機器の例と同様に、暗号強度を少し低減させる代わりに、処理の高速性を優先させる必要がある。
【０００５】
このように従来の暗号方式に従って、暗号化処理を行った場合、暗号強度は高いものの、処理時間の増加による弊害が大きな問題となっている。一方、暗号強度が低いとセキュア性が保たれないという新たな問題が発生する可能性がある。
【０００６】
本発明は上述したような問題点に鑑みてなされたものであり、比較的低処理にも関わらず、暗号強度が高い暗号化エンコード方式の秘密鍵暗号方法等を提供することを目的とする。また、暗号強度を確保した暗号方式を提供し、上述した問題点を解決することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、秘密鍵を用いて暗号化処理を行う秘密鍵暗号方法であって、ハッシュ関数を用いて秘密鍵を生成する秘密鍵生成ステップと、前記秘密鍵生成ステップによって生成された秘密鍵を用いて排他的論理和演算することで暗号化処理を行う暗号化ステップとを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、簡単で低負荷な秘密鍵暗号方法によって、秘密鍵の特定が行いにくい秘密鍵暗号を行うことが可能となる。すなわち、従来の暗号方式であるＴｒｉｐｌｅ  ＤＥＳ、ＤＥＡＬ、ＩＤＥＡ、楕円曲線暗号、ＥｌＧａｍａｌ暗号よりも低負荷でかつ高速な秘密鍵暗号処理が可能となる。したがって、低性能ＣＰＵの組み込み機器や、一度に大量のデータを暗号化するサーバ機器などに対して、実装が可能となる。
【発明を実施するための最良の形態】
【０００９】
本実施形態では、ハッシュ関数を用いて秘密鍵を生成する秘密鍵生成手段により、秘密鍵を生成し、その後データを暗号化することで、低処理量での暗号強度の高い暗号方式を提供することができる。ここで、ハッシュ関数とは、与えられた原文から固定長の疑似乱数を生成する演算手法であり、生成した値を「ハッシュ値」と呼ぶ。本実施形態では、ハッシュ関数を、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ５の略称）として説明する。
【００１０】
以下、本発明に係る実施形態について、図面を参照して説明する。
図１は本実施形態に係る秘密鍵暗号装置の機能構成を示す図である。
１０１は、ＭＤ５による秘密鍵生成手段であり、秘密鍵１（１０４）から秘密鍵２（１０５)を生成する。秘密鍵１は、任意長の文字列コードであり、どのような長さであっても構わない。秘密鍵１は、ＭＤ５による秘密鍵生成手段１０１によってハッシュ値が計算される。このハッシュ値は、ＭＤ５の仕様に基づき１２８ｂｉｔのメッセージダイジェスト値が得られる。このハッシュ値であるメッセージダイジェスト値を秘密鍵２(１０５)とする。秘密鍵２の生成完了によってＭＤ５による秘密鍵生成手段１０１の処理が終了する。
【００１１】
１０２は、ＸＯＲ処理による暗号化手段であって、実際の暗号化処理を行う。ここで、ＸＯＲ処理とは排他的論理和演算であり、ＸＯＲ演算とも表現する。ＸＯＲ処理による暗号化手段１０２は、ＭＤ５による秘密鍵生成手段１０１によって生成された秘密鍵２(１０５)を用いて暗号化処理を行う。まず、ＸＯＲ処理による暗号化手段１０２は、暗号化処理に必要な元データである暗号元データ１０７を読み取り、秘密鍵暗号方式を用いて暗号化処理を行い、生成されたデータを暗号化データ１０８として出力をする。１０３は、秘密鍵更新手段であり、暗号化処理の単位に応じて、秘密鍵を更新する。具体的には、秘密鍵暗号処理を１ｂｙｔｅづつ行うたびに、秘密鍵２を更新し、秘密鍵２更新情報１０６として保持する。
【００１２】
図２は、本実施形態で使用される秘密鍵の一例を示す図である。
２０１は、秘密鍵１を示している。この秘密鍵１は、暗号化処理を行う人が決定をする秘密鍵である。この秘密鍵１は、任意長の文字列が許される。図２では、”Ｆｌｏｗｅｒ  ｏｆ  ＳｕｎＦｌａｗｅｒ”という文字列を、秘密鍵１としている。本実施形態に係る暗号方式は、秘密鍵暗号方式によるものであるため、この秘密鍵は、暗号エンコード処理を行う人と、暗号デコード処理を行う人とが、知っている必要がある。なお、秘密鍵１は、任意長の文字列で良いと同時に、任意長のバイナリデータでも構わない。
【００１３】
２０２は、秘密鍵２を示している。秘密鍵２は、ＭＤ５アルゴリズムによって算出されるハッシュ値である。そのため、図２で示されるように、秘密鍵２は、１６ｂｙｔｅｓのバイナリデータとなっている。つまり、本実施形態の暗号方式は、１２８ｂｉｔ長の暗号方式となる。ただし、ＭＤ５アルゴリズムによって算出されるハッシュ値の６４ｂｉｔのみを秘密鍵として使うことも可能である。そのため、任意長の暗号強度を選択することが可能である。
【００１４】
図３は、本実施形態に係る秘密鍵暗号処理のフローチャートを示す図である。
このフローチャートは、上述のＭＤ５による秘密鍵生成手段１０１、ＸＯＲ処理による暗号化手段１０２及び秘密鍵更新手段１０３の処理の流れの詳細を示した図である。なお、このフローチャートを実行する前に、秘密鍵暗号処理を行うデータと、秘密鍵１をそれぞれ用意する必要がある。これらの値は、上述した秘密鍵１情報保持１０４と、暗号元データ保持１０７によって記録されているデータである。
【００１５】
まず、暗号化処理は、ステップＳ３０１から始まる。以下は、例えば、コンピュータのＣＰＵが行う。ステップＳ３０２において、秘密鍵１が入力されると、秘密鍵１を読み込む。この値は、上述の秘密鍵１情報保持１０４にあり、この値を読み込むことによって行われる。
【００１６】
次に、ステップＳ３０３において、ＭＤ５アルゴリズムを用いて、秘密鍵１から秘密鍵２を算出する。この値を秘密鍵２情報保持１０５に保持する。秘密鍵２は、ＭＤ５アルゴリズムによるハッシュ値であり、ハッシュ値から秘密鍵２を算出することは、ほぼ不可能である。そのため、秘密鍵１自体を暗号化処理に使用しないことで、暗号解読による第三者による秘密鍵１の奪取の可能性を低めている。
【００１７】
次に、ステップＳ３０４において、暗号元データを指すポインタを初期化する。暗号元データは、暗号元データ保持１０７に保持されており、非常に大きなデータである。そのため、一度に暗号化処理を全てのデータに行うことが難しいので、ポインタを用いて、暗号元データ保持のデータをシーケンシャルに暗号化処理を行うことを目的に、ポインタの初期化を行う。
【００１８】
次に、ステップＳ３０５において、暗号化されたデータを指すポインタを初期化する。暗号化されたデータは、暗号化データ保持１０８に保持されており、非常に大きなデータである。そのため、暗号元データと同様にデータをポインタによって管理を行う。暗号化データ保持のデータも、暗号元データと同様にシーケンシャルに暗号化処理を行うために、ポインタの初期化を行う。このステップＳ３０１〜Ｓ３０５までの処理によって秘密鍵暗号処理の初期化に当たる部分が終了する。
【００１９】
次に、ステップＳ３０６〜Ｓ３１４までが、実際に秘密鍵暗号を行う処理である。
ステップＳ３０６において暗号元データを示すポインタから暗号元データ１ｂｙｔｅをバッファにコピーをする。この処理によって、暗号元データを１ｂｙｔｅだけ呼び出して、秘密鍵暗号の対象とする。ここでいうバッファとは、ある特定のメモリもしくは、レジスタを示しており、１ｂｙｔｅのデータを保持が可能な媒体であれば何でも良い。
【００２０】
次に、ステップＳ３０７において秘密鍵２のｂｙｔｅ数分（１６ｂｙｔｅｓ）それぞれＸＯＲ処理を行う。ステップＳ３０８において、全ての秘密鍵２の１６ｂｙｔｅｓに対してＸＯＲ処理を行ったかどうかの判定を行う。もし、１６ｂｙｔｅｓ全てをＸＯＲ処理をしていなかったら、ステップＳ３０７〜Ｓ３０８までの処理を繰り返す。このＸＯＲ処理によって暗号化処理を行う。暗号強度は、１６ｂｙｔｅｓ（１２８ｂｉｔｓ）であるが、これは任意長の長さに変化させて行っても良い。特に本実施形態では、１６ｂｙｔｅｓとする。
【００２１】
次に、秘密鍵暗号を行って得られた値を、ステップＳ３０９において、暗号化データを示すポインタへ出力を行う。こうして１ｂｙｔｅ分の暗号化処理が終了する。
【００２２】
以下の処理によって秘密鍵２の更新を行う。
ステップＳ３１０において、暗号化されたデータを秘密鍵２の１６ｂｙｔｅｓ全てに対してそれぞれ加算処理を行う。こうして得られた秘密鍵を秘密鍵２更新情報１０６として保持する。また、ステップＳ３１０で得られた値を、上述のステップＳ３０７の処理の際の秘密鍵２として使用をする。すなわち、暗号化処理された暗号化データを用いて秘密鍵２を更新する。このように、常に秘密鍵２を更新することにより暗号強度を高めている。
【００２３】
秘密鍵暗号処理１ｂｙｔｅ分行われた後、ステップＳ３１１及びステップＳ３１２において、暗号元データを示すポインタと暗号化データを示すポインタどちらもインクリメントを行い、次の暗号元データの１ｂｙｔｅを秘密鍵暗号を行う準備をする。
【００２４】
次に、ステップＳ３１３において、全ての暗号元データに対して暗号化処理を行ったかどうかを判定し、まだ途中であれば、ステップＳ３０６に戻って、再び秘密鍵暗号処理を行う。全ての暗号化処理が終わっていれば、ステップＳ３１４において、暗号化処理が終了する。最終的な結果としては、暗号化データ保持１０８に秘密鍵暗号処理を行われたデータが残り、これが出力データとなる。
【００２５】
この秘密鍵暗号方式は、ＭＤ５によって秘密鍵２を新たに生成することで、秘密鍵暗号処理で実際に使用される秘密鍵をより、複雑な値にすることを可能としている。しかし、実際の演算は、ＭＤ５アルゴリズムを用いるため比較的処理は軽い。
【００２６】
また、秘密鍵暗号自体の処理も、ＸＯＲ処理である排他的論理和演算と、秘密鍵更新の加算演算と、ポインタのインクリメントしか行っていない。そのため、浮動小数点演算などが含まれておらず、整数演算もしくは論理演算のみで構成され、非常に処理が軽く、あらゆるＣＰＵにも容易に実装が可能である。
【００２７】
なお、図３において暗号化処理、すなわち、エンコード処理について述べたが、復号化処理に関しても全く同様のフローチャートを用いることが可能である。そのため、復号化処理で必要となる秘密鍵１は、暗号化処理で用いた秘密鍵１と全く同一のものを用い、暗号化データを、暗号元データとして、図３のフローチャートの秘密鍵暗号処理を行えば、暗号化データは、復号化される。最終的に、暗号化データ保持１０８に復号化データが出力され、復号化データを得ることが可能となる。
【００２８】
以上、述べたように、本実施形態に拠れば、低負荷にも関わらず、暗号強度の高い秘密鍵暗号処理を行うことが可能である。
【００２９】
上述した本発明の実施形態における秘密鍵暗号方法の各ステップ、並びに秘密鍵暗号装置を構成する各手段は、コンピュータのＲＡＭやＲＯＭなどに記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００３０】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、複数の機器からなるシステムに適用してもよい。
【００３１】
なお、本発明は、上述した実施形態の機能を実現するソフトウェアのプログラムを、システムまたは装置に直接、または遠隔から供給する。そして、そのシステムまたは装置のコンピュータが前記供給されたプログラムコードを読み出して実行、制御することによっても達成される場合を含む。
【００３２】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００３３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００３４】
さらに、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００３５】
【図１】本実施形態に係る秘密鍵暗号装置の構成を示す図である。
【図２】本実施形態に係る秘密鍵について説明するための図である。
【図３】本実施形態に係る暗号化処理のフローチャートを示す図である。
【符号の説明】
【００３６】
１０１  ＭＤ５による秘密鍵生成手段
１０２  ＸＯＲ処理による暗号化手段
１０３  秘密鍵更新手段
１０４  秘密鍵１情報
１０５  秘密鍵２情報
１０６  秘密鍵２更新情報
１０７  暗号元データ
１０８  暗号化データ
２０１  秘密鍵１
２０２  秘密鍵２
【図１】
2008185616.tif 000003
【図２】
2008185616.tif 000004
【図３】
2008185616.tif 000005