(57)【要約】【課題】共通鍵暗号アルゴリズムの設計開発の効率化の方式は従来より提案されているが、共通鍵暗号アルゴリズムを実システムで利用する暗号モジュールが完成するまでにはさらに開発が必要であり、その開発効率が問題である。【解決手段】  新たな共通鍵暗号アルゴリズムの設計開発からシステムで動作可能な暗号モジュールまでの開発フローを同一装置内で動作させる事で、効率的な暗号アルゴリズムの設計から暗号モジュールを生成する装置を提供する。また、共通鍵暗号アルゴリズムの安全性評価機能を併せて実現可能とする事で、安全性検証も含んだ効率的な暗号アルゴリズム設計装置から暗号モジュールを生成する装置を提供する。【選択図】図１
2014238631.tif 000002
【特許請求の範囲】
【請求項１】
暗号化機能を用いて設計されるシステムにおける暗号化処理の要求性能情報に基づいて、前記システムで利用する暗号アルゴリズムの設計情報を入力する暗号設計データ入力部と、前記システムの動作環境情報に基づいて、ソースコードを選定するシステム動作環境選定部と、
前記暗号設計データ入力部によって入力された前記設計情報に基づいて、前記システム動作環境選定部により選定されたソースコードを暗号モジュールに変換するシステム搭載用暗号ロジック変換部と、
前記システム搭載用暗号ロジック変換部により変換された暗号モジュールを搭載するシステムの暗号処理性能のシステム要求条件を前記暗号モジュールが満足するか否かを判定する暗号処理性能判定部と、
前記暗号処理性能判定部によりシステム要求条件を満足すると判定された場合、前記暗号モジュールを出力する暗号モジュール出力部とを有することを特徴とする暗号モジュール生成装置。
【請求項２】
前記設計情報の暗号の安全性を評価する暗号安全性解析部を有すると共に、
前記システム搭載用暗号ロジック変換部は、前記暗号安全性解析部による安全性評価結果と、前記設計情報とに基づいて、前記システム動作環境選定部で選定されたソースコードを、前記暗号モジュールに変換することを特徴とする請求項１記載の暗号モジュール生成装置。
【請求項３】
前記暗号モジュールに入力される秘密鍵データを内部の前記暗号アルゴリズムで使用される秘密鍵データに変換する秘密鍵データ情報変換部と、
前記暗号モジュールに入力される入力データおよび初期値データを内部の前記暗号アルゴリズムで入力されるデータに変換し、かつ、内部の前記暗号アルゴリズムから出力される出力データを、前記暗号化モジュールから出力する出力データに変換する入力データ情報変換部とを有すると共に、
前記システム搭載用暗号ロジック変換部は、前記設計情報と、前記秘密鍵データ情報変換部及び前記入力データ情報変換部で変換されたデータとに基づいて、前記システム動作環境選定部で選定されたソースコードを前記暗号モジュールに変換することを特徴とする請求項１記載の暗号モジュール生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密鍵暗号方式のモジュール実装に対応する開発技術に関する。
【背景技術】
【０００２】
近年、コンピュータや通信装置を利用した様々なサービスが提供され、それらのサービスでは、通信の秘匿や認証を実現するために、暗号技術を用いていることが多い。暗号に方式は大別して、暗号化と復号で同じ鍵を使う共通鍵暗号と、秘密鍵と公開鍵の異なる２種類の鍵を使用する公開鍵暗号がある。共通鍵暗号は送受信者間で鍵を共有する方法が課題となるが、公開鍵暗号に比べて暗号化及び復号に要する処理量が少ない利点があり、多くの分野や用途で使用されている。
共通鍵暗号アルゴリズムに対する解読技術も年々進歩しており、現在一般に利用している暗号アルゴリズムの安全性が今後も保証されるものでは無く、システムによっては独自に暗号アルゴリズムを設計し利用する事を目指して、効率的にアルゴリズムの設計を支援し、安全性評価を行うような技術がこれまでにも幾つか提案されている。
上記した共通鍵暗号アルゴリズムの設計装置や設計支援装置の一例が以下の特許文献１、２に開示されている。
特許文献１における従来技術では、共通鍵暗号アルゴリズムの設計を支援する一例として、ビット列データを値とする変数のダイアグラム表現、ビット列データ上の演算のダイアグラム表現、変数と演算を組み合わせるためのダイアグラム表現といった所定のダイアグラム表現を使って、ブロック暗号アルゴリズム全体のダイアグラム表現をユーザが記述および編集できる暗号ダイアグラム編集装置が提案されている。また、暗号ダイアグラム編集装置を使って設計されたブロック暗号アルゴリズムからブロック暗号プログラムを生成する技術や、この生成されたプログラムが元のアルゴリズムを正確に実現しているか否かをテストする技術も提案されている。
また、特許文献２における従来技術では、共通鍵暗号アルゴリズムの設計開発時の評価時間を大幅に短縮し得る暗号評価支援システム、また、暗号設計の専門家でなくても暗号アルゴリズムの評価を行うことができる暗号評価支援システムが提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２４０５１１
【特許文献２】特開２００１−２０９３０４
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来、共通鍵暗号アルゴリズムの設計開発は、アルゴリズム設計を行い、安全性評価と一般的な実装プラットフォーム上における実装性評価を行い、アルゴリズムのサンプルプログラムとテストデータを生成して開発完了するのが一般的であり、実際のシステムに開発したアルゴリズムを利用する為に、動作条件や処理性能等の要求条件を考慮した暗号モジュールの開発は別途実施されている。
【０００５】
しかし、従来技術では、共通鍵暗号アルゴリズムの設計開発の効率化を行う為の技術は表現されているが、実際のシステムに利用する為の暗号モジュールの開発までを効率良く実施する為の方式は提案されていない。
このため、生成されたブロック暗号アルゴリズムまたはブロック暗号プログラムを基に、実際のシステム上で動作する暗号モジュールを開発しても、実際のシステムが動作する環境に起因する動作条件や、処理性能等の要求条件などにより、不適合となる場合がある。
このような場合、ブロック暗号アルゴリズムの設計を再度行うことになる。
また、設計された暗号モジュールの暗号安全性についても、従来では、生成されたブロック暗号アルゴリズムに対するサンプルプログラムとテストデータを生成し、実際のシステム上で、暗号安全性の評価試験を行っている。
このような場合、再度、共通鍵暗号アルゴリズムの設計まで遡ってやり直す必要があり、効率的ではない。
また、設計された暗号モジュールの暗号安全性についても、従来では、アルゴリズムのサンプルプログラムとテストデータを用いた暗号の安全性を評価する試験を必ず行っている。従来技術では、設計中の暗号モジュールに対する安全性の評価は行われているが、それはモジュール間での相対的な比較を行うための指標的な数値であるため、実際のシステムに対し、安全性が満たされているかの判定は行われていない。このため、実際のシステムで、暗号の安全性を評価する試験を行い、その結果、安全性が満たされていないと評価されると、暗号モジュールの設計を複数回、繰返し行うのが通常であり、効果的ではないと言う課題があった。
【０００６】
本発明は上記課題を解決するためになされたものであり、新たな共通鍵暗号アルゴリズムの設計開発からシステムで動作可能な暗号モジュールまでの開発を効率的に実現可能とする暗号モジュール生成装置を提供すること、また、共通鍵暗号アルゴリズムの安全性を評価可能な構成要素を提供する事により、安全性評価機能を併せて実現可能とする安全性検証付き暗号モジュール生成装置を提供することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る暗号モジュール生成装置は、
暗号化機能を用いて設計されるシステムにおける暗号アルゴリズムの設計情報を入力する暗号設計データ入力部と、
システムの動作環境に応じたソースコードを選定するシステム動作環境選定部と、
ソースコードをシステム搭載可能なモジュールに変換する機能を持つシステム搭載用暗号ロジック変換部と、
その暗号モジュールを搭載するシステムのシステム要求条件を満足するか判定する暗号処理性能判定部と、
システム要求条件を満足すると判定された場合、暗号モジュールを出力する暗号モジュール出力部とを有するものである。
【発明の効果】
【０００８】
本発明によれば、新たな共通鍵暗号アルゴリズムの設計開発からシステムで動作可能な暗号モジュールまでの開発を効率的に実現可能とする暗号モジュール生成装置を提供することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る暗号モジュール生成装置の構成例を示す図。
【図２】実施の形態１に係る暗号設計パーツの例を示す図。
【図３】実施の形態１に係る設計された暗号アルゴリズムの一例を示す図。
【図４】実施の形態２に係る安全性検証付き暗号モジュール生成装置の構成例を示す図。
【図５】実施の形態２に係る設計された暗号アルゴリズムの一例を示す図。
【図６】実施の形態３に係る秘密鍵サイズ及び入力データサイズ変換可能な暗号モジュール生成装置の構成例を示す図。
【図７】実施の形態４に係る秘密鍵サイズ及び入力データサイズ変換可能な安全性検証付き暗号モジュール生成装置の構成例を示す図。
【図８】実施の形態１に係る処理の流れを示すフローチャート。
【図９】実施の形態２に係る処理の流れを示すフローチャート。
【図１０】実施の形態３に係る処理の流れを示すフローチャート。
【図１１】実施の形態４に係る処理の流れを示すフローチャート。
【図１２】実施の形態３及び実施の形態４に係る秘密鍵サイズ及び入力データサイズを簡易的に変換させる方法の一例を示す図。
【図１３】実施の形態３及び実施の形態４に係る秘密鍵サイズ及び入力データサイズに対し、情報テーブルを用いて変換させる方法の一例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態に係る暗号モジュール生成装置は、共通鍵暗号アルゴリズムの開発設計を実施し、かつ、システム要求性能を満足する暗号モジュールを生成するものであり、入力された暗号設計データをシステムの動作環境（ＣＰＵ処理性能に関連する制約、メモリ量に関連する制約、多重化処理の対応性など）の条件に適した暗号ロジックに変換し、その暗号ロジックがシステムで利用可能な品質の暗号モジュール試験を実施し、システムの要求性能を満足する暗号モジュールを出力するものである。
以下、本実施の形態に係る暗号モジュール生成装置の詳細を図１〜図１３を参照して説明する。
【００１１】
図１は、本実施の形態に係る暗号モジュール生成装置の構成例を示す。
図１において、暗号設計データ入力部（１０１）は、設計したい暗号方式の情報を図２に示すような暗号設計パーツを利用して入力する情報入力インターフェース機能を有しており、設計情報をシステム搭載用暗号ロジック変換部（１０２）で一意に暗号アルゴリズムの構成が判別可能な情報に変換し、出力する。なお、本実施の形態では、暗号設計データ入力部（１０１）を暗号モジュール生成装置の一部として構成したが、暗号アルゴリズムの設計に関連する処理を別にした、暗号アルゴリズム設計装置の一部として構成してもよい。
暗号設計データ入力部（１０１）は、より具体的には、各暗号設計パーツの入出力データサイズの設定や繰り返し利用する回数（段数）を設定し、それぞれの設定した暗号設計パーツの関係性を組み合わせる結線情報を設定可能な情報入力インターフェースによって、システム搭載用暗号ロジック変換部（１０２）の入力となる暗号アルゴリズム構成情報を出力する。なお、図２に示す暗号設計パーツは、一般的に共通鍵暗号アルゴリズムのブロック暗号で利用されるＦｅｉｓｔｅｌ型（２０１）、変形Ｆｅｉｓｔｅｌ型（２０２）、ＳＰＮ（Ｓｕｂｓｔｉｔｕｔｉｏｎ  Ｐｅｒｍｕｔａｔｉｏｎ  Ｎｅｔｗｏｒｋ）型のアルゴリズムの基本構成（２０３）、ストリーム暗号で利用される線形フィードバックシフトレジスタ（２０４）、拡大体線形フィードバックシフトレジスタ（２０５）、また両方の暗号方式に利用されるＳＢＯＸ（２０６）（Ｓｕｂｓｔｉｔｕｔｉｏｎ  ＢＯＸ）や排他的論理和（２０７）、論理積（２０８）、論理和（２０９）、加算（２１０）、乗算（２１１）、ローテートシフト（２１２）、ビット置換（２１３）、ｍビット置換（２１４）等の内部プリミティブ関数を用意し、想定されるブロック暗号、および、ストリーム暗号の構成に柔軟に対応可能である。
上記、暗号設計パーツを利用すれば、新たな暗号アルゴリズムの設計も可能である上に、従来の公開された暗号アルゴリズムであるＭＩＳＴＹやＣａｍｅｌｌｉａ、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）と言った暗号アルゴリズムの構成も再現可能である。
【００１２】
図１において、システム搭載用暗号ロジック変換部（１０２）は、暗号設計データ入力部（１０１）から出力される暗号アルゴリズム構成情報と、システム動作環境選定部（１０３）で選定されたソースコードの情報とを入力とし、その二つの情報より、実際のシステム環境に適した暗号モジュールの生成を行う。
ソースコードの生成方法については、従来技術と同じ手法で行う。従来手法では、暗号モジュールを構成している各暗号設計パーツに対し、それぞれ対応したソースコードを予め保有しておき、暗号モジュールの設計が行われた後に、使用されている暗号設計パーツの構成、順序を基にして、ソースコードを生成しており、本発明でも同様の手法を用いてソースコードの生成を行う。
従来技術と本発明の違いは、実際のシステム環境に適したソースコードがシステム動作環境選定部（１０３）から提供されることである。
【００１３】
図１において、システム動作環境選定部（１０３）は、設計した暗号アルゴリズムを動作させるシステムの環境情報（動作環境情報）に応じた、適切なソースコードをシステム搭載用暗号ロジック変換部（１０２）に提供するための選定を行う。
図１において、システム動作環境選定部（１０３）は、設計した暗号アルゴリズムを動作させるシステムの環境情報（動作環境情報）に対応した適切なソースコードの選択を行い、システム搭載用暗号ロジック変換部（１０２）に出力する。
例えば、全ての暗号設計パーツに対し、（Ａ）多重化対応されたソース、（Ｂ）メモリ使用量を抑えたソース、（Ｃ）ＣＰＵ使用量を抑えたソース、が用意されており、実際のシステムでは、使用することが可能なメモリの容量が少なく、動作環境情報として、メモリ使用量の節約が指定されていた場合、用意されている３種類のソースコードのうち、メモリの使用量を抑えた（Ｂ）が選択される。
どのソースコードを使用するかの選定は、暗号モジュールの設計で用いられている暗号設計パーツ全てに対し、システム動作環境選定部（１０３）の指示を反映させても良いし、一部を設計者が暗号設計データ入力部（１０１）のＧＵＩ機能を用いたりして、変更してもよい。
ただし、多重化については、システム動作環境選定部（１０３）で指示した通りに対応する必要があるため、例えば、暗号設計パーツ毎に処理に必要な時間を予め定義しておき、システム動作環境選定部（１０３）では、処理時間が特定の時間以上かかる暗号設計パーツのみ、多重化されたソースを選択させることで効率的に、かつ動作環境情報に正しく対応されたソースコード生成が行える。
【００１４】
図１において、暗号処理性能判定部（１０５）は、システム搭載用暗号ロジック変換部（１０２）から出力される暗号モジュールが実際のシステム環境上で、要求されている性能（要求性能情報）を満たしているかのシミュレーションを実行することで判定を行う。
要求性能情報の例としては、データブロックに対する暗号化処理の処理速度性能、並行して実行できる同時処理数などがあげられる。
要求性能情報を入力する手段としては、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、要求性能情報をファイルに記載し、暗号処理性能判定部（１０５）が処理を行う際に読み込ませても良い。
暗号処理性能判定部（１０５）では、シミュレーションを行うための環境として、例えば、実際のＨ／Ｗ構成モデルをＳ／Ｗ上で模擬するためのエミュレータ環境を用いる。
また、暗号処理性能判定部（１０５）では、要求性能情報を評価するための、試験用プログラムの生成を行う。例えば、処理速度性能を評価する場合には、暗号モジュールを呼び出す前後で時刻の記録を行い、その差分を繰り返し測定するプログラムを生成し、前述のエミュレータ環境上で実行し、測定を行う。
要求性能を満足していた場合は、測定した処理性能結果と暗号モジュールを、システム搭載用暗号ロジック変換部（１０２）から暗号モジュール出力部（１０６）に出力する。要求性能を満足していない場合は、測定した処理性能結果を要求性能条件と共に出力し、再度、暗号設計データ入力部（１０１）で設計したい暗号方式の情報入力から設計を繰り返す。
【００１５】
図８は、実施の形態１の処理の流れを説明するフローチャートである。
設計者により、これから設計を行う暗号アルゴリズムが動作する実際のシステムに関する、動作環境情報が暗号モジュール生成装置に入力される（Ｓ８０１）。動作環境情報の例としては、ＣＰＵ処理性能に関連する制約、メモリ量に関連する制約、多重化処理の対応性などが挙げられる。動作環境情報の入力には、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、動作環境情報をファイルに記載し、システム搭載用暗号ロジック変換部（１０２）が処理を行う際に読み込ませても良い。
次に、システムに対する要求性能情報が暗号モジュール生成装置に入力される（Ｓ８０２）。要求性能情報の例としては、一つのデータブロックに対する暗号化処理を完了するまでの制限時間、並行して同時実行できる処理数などがあげられる。要求性能情報の入力には、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、要求性能情報をファイルに記載し、暗号処理性能判定部（１０５）が処理を行う際に読み込ませても良い。
次に、暗号設計データ入力部（１０１）において、暗号モジュールの設計を行い（Ｓ８０３）、暗号安全性に対する相対的な評価を行う（Ｓ８０４、Ｓ８０５）。暗号安全性に対する相対的な評価に関しては、従来技術で行われているもの（暗号設計パーツ毎に指数が割り振られており、選択されたパーツの総計を取る手法）であるため、詳細な説明は省略する。暗号安全性に対する相対的な評価が不足していた場合には、再度暗号モジュールの設計（８０３）を行う。
次に、システム搭載用暗号ロジック変換部（１０２）にて、上記手順で出力された暗号モジュールの構成情報をもとに、ソースコードの生成を行う（Ｓ８０６）。尚、ソースコードは、暗号設計パーツ毎に複数用意されており、システム動作環境選定部（１０３）がどのソースコードを使用するかの選定を行う。
次にシステム搭載用暗号ロジック変換部（１０２）がコンパイルを行う（Ｓ８０７）。使用するコンパイラは、実際のシステムに対応したクロスコンパイラを用い、また、その際のコンパイルオプションには、動作環境情報に応じたもの、例えば、メモリ使用量を抑える指定があった場合、メモリ使用量を最小化するようなオプションを設定する。尚、ソースコードの生成（Ｓ８０６）を行った後に、必要に応じで出力されたソースコードに対し、修正を行っても良い。
次に、暗号処理性能判定部（１０５）で、生成された暗号モジュールが実際のシステム上で動作する際、性能条件を満たしているのかの検証を行う（Ｓ８０８）。
検証の結果、要求性能を満たしているか確認を行い（Ｓ８０９），満たされていない場合は、暗号モジュールの設計（Ｓ８０３）を繰り返し、満たされたら暗号モジュール出力部（１０６）が暗号モジュールの構成情報を出力する（Ｓ８１０）。
【００１６】
次に、図１に示した暗号モジュール生成装置を用いて暗号設計を行う場合の暗号アルゴリズムの概要を説明する。
図３は、本実施の形態に係る設計された暗号アルゴリズムの一例を示す。
【００１７】
図３では、ブロック単位を６４ビットとしたブロック暗号アルゴリズムを設計し、暗号化モジュールを生成する例を説明する。
アルゴリズムの全体基本構成として、暗号設計データ入力部（１０１）で用意された暗号設計パーツを利用して、例えば、５回繰り返しの５段Ｆｅｉｓｔｅｌ型（２０１）を処理し、６回繰り返しの６段ＳＰＮ型（２０３）を処理し、５回繰り返しの５段変形Ｆｅｉｓｔｅｌ型（２０２）を処理する構成を選択する。暗号設計データ入力部（１０１）への入力として、入出力情報６４ビットと５段、６段、５段の段数情報を入力する。また、ＳＰＮ型（２０３）では入力データの分割情報として８ビットを入力する。
【００１８】
まず、最初に処理される５段Ｆｅｉｓｔｅｌ型（３０１）の情報の設定方法について説明する。５段Ｆｅｉｓｔｅｌ型（３０１）のＦｕｎｃｔｉｏｎ（３０４）は入出力情報３２ビットが決定される。また、Ｆｕｎｃｔｉｏｎの内部構成としては１段ＳＰＮ型と入力される鍵との３２ビット排他的論理和を選択する。また、１段ＳＰＮ型では入力データの分割情報として４ビットを入力する。従って、１段ＳＰＮ型のＦｕｎｃｔｉｏｎは入出力情報４ビットが決定される。４ビット入出力のＦｕｎｃｔｉｏｎ（３０５）の内部構成としては、４ビット入出力のＳＢＯＸを選択する。ＳＢＯＸが選択されると、情報量４ビット毎のＳＢＯＸテーブル情報（１６エントリ）の定義を実施する。また、１段ＳＰＮ型の内部構成である４ビット置換に関しても、４ビット単位のデータの置換情報の定義を実施する。なお、４ビット入出力のＳＢＯＸが８個とも同じ情報を設定している場合としているが、設定によっては８個とも異なるＳＢＯＸテーブル情報を定義する事も可能である。
【００１９】
次に、アルゴリズムの全体基本構成の２番目に処理される６段ＳＰＮ型（３０２）の情報の設定方法について説明する。６段ＳＰＮ型（３０２）のＦｕｎｃｔｉｏｎ（３０６）は分割情報として８ビットが設定されている為、入出力情報８ビットが決定される。８ビット入出力のＦｕｎｃｔｉｏｎの内部構成としては、８ビット入出力のＳＢＯＸを選択する。ＳＢＯＸが選択されると、情報量８ビット毎のＳＢＯＸテーブル情報（２５６エントリ）の定義を実施する。この場合も、８ビット入出力のＳＢＯＸが８個とも同じ情報を設定している場合としているが、設定によっては８個とも異なるＳＢＯＸテーブル情報を定義する事も可能である。また、６段ＳＰＮ型（３０２）の内部構成である８ビット置換に関しても、８ビット単位のデータの置換情報の定義を実施する。
【００２０】
最後に、アルゴリズムの全体基本構成の３番目に処理される５段変形Ｆｅｉｓｔｅｌ型（３０３）の情報の設定方法について説明する。５段変形Ｆｅｉｓｔｅｌ型（３０３）のＦｕｎｃｔｉｏｎ（３０７）は入出力情報３２ビットが決定される。また、Ｆｕｎｃｔｉｏｎの内部構成としては４段変形Ｆｅｉｓｔｅｌ型と入力される鍵との３２ビット排他的論理和を選択する。４段変形Ｆｅｉｓｔｅｌ型のＦｕｎｃｔｉｏｎ（３０８）は入出力情報１６ビットが決定される。１６ビット入出力のＦｕｎｃｔｉｏｎの内部構成としては、１６ビット入出力の１ビット左ローテートシフトを選択する。
【００２１】
以上のように設定する事により、６４ビット入出力のブロック暗号アルゴリズムにおけるデータランダマイズ部の構成を決定する事が出来る。本説明では一般的なブロック暗号アルゴリズムで定義される鍵スケジュール部までは説明しないが、上記のデータランダマイズ部の設定方法と同様の方法で設定可能である。
なお、本実施の形態では、暗号設計データ入力部（１０１）にて設定可能な暗号設計情報の組合せ数は膨大な数となり、暗号設計者が暗号アルゴリズム設計装置、及び、暗号モジュール自動生成装置を利用して設計した暗号アルゴリズムを一意に特定する事は困難である。また、暗号設計者が暗号アルゴリズム設計装置、及び、暗号モジュール自動生成装置を利用して暗号モジュールまで生成可能な事から、一般のシステム利用者は暗号アルゴリズムの詳細を知る必要なく、暗号モジュールをブラックボックスで利用する事が出来る。これは、容易な暗号アルゴリズムの解析を防ぐ予防策となる事から、システムの安全性向上に繋がるといった効果も得られる。
【００２２】
実施の形態２．
本実施の形態では、暗号の安全性を検証可能な機能を付加した場合の別の構成を以下に示す。
図４は、本実施の形態に係る安全性検証付き暗号モジュール生成装置の構成例を示す。
図４において、暗号設計データ入力部（１０１）は、設計したい暗号方式の情報を図２に示すような暗号設計パーツを利用して入力する情報入力インターフェース機能を有しており、設計情報をシステム搭載用暗号ロジック変換部（１０２）で一意に暗号アルゴリズムの構成が判別可能な情報に変換し、出力する。なお、本実施の形態では、暗号設計データ入力部（１０１）を暗号モジュール生成装置の一部として構成したが、暗号アルゴリズムの設計に関連する処理を別にした、暗号アルゴリズム設計装置の一部として構成してもよい。
暗号設計データ入力部（１０１）は、より具体的には、各暗号設計パーツの入出力データサイズの設定や繰り返し利用する回数（段数）を設定し、それぞれの設定した暗号設計パーツの関係性を組み合わせる結線情報を設定可能な情報入力インターフェースによって、システム搭載用暗号ロジック変換部（１０２）の入力となる暗号アルゴリズム構成情報を出力する。本実施の形態では、実施の形態１の場合と異なり、暗号設計パーツの構成の組合せを自由に選択させるのではなく、予め安全性が評価可能な暗号設計パーツの組合せ例をパターンとして用意しておき、暗号設計者はそのパターンの中から設計したい暗号方式の情報を設定する。組合せ例のパターンは有限な構成となるが、暗号設計パーツを何回繰り返し使用するのか、入出力サイズの選択、安全性の確かめられたＳＢＯＸや論理演算の組合せ方法などをパラメータ設定させる事で、アルゴリズムの構成を一意に特定できない構成とする事が可能である。
ここで定義する安全性の尺度は、例えばブロック暗号の場合は全数探索法や差分解読法、線形解読法など、ストリーム暗号の場合は長周期性や線形複雑度、相関攻撃などの代表的な解読法の評価指標の事を指す。
【００２３】
図４において、暗号安全性検証部（４０１）は、暗号設計データ入力部（１０１）から暗号アルゴリズム構成情報を入力とし、想定される組合せのパターンであるか判定し、かつ、組合せのパターンが満足されているならば、定義した安全性の評価指標を計算し、その安全性の尺度を満足しているかを判定する。安全性の尺度を満足していた場合は、検証した安全性判定結果と暗号アルゴリズム構成情報をシステム搭載用暗号ロジック変換部（１０２）に出力する。安全性の尺度を満足していない場合は、検証した安全性判定結果を出力し、再度、暗号設計データ入力部（１０１）で設計したい暗号方式の情報入力から設計を繰り返す。なお、本実施の形態では、暗号安全性検証部（４０１）を暗号モジュール生成装置の一部として構成したが、暗号アルゴリズムの設計に関連する処理を別にした、暗号アルゴリズム設計装置の一部として構成してもよい。
【００２４】
図４において、システム搭載用暗号ロジック変換部（１０２）は、暗号設計データ入力部（１０１）から出力される暗号アルゴリズム構成情報と、システム動作環境選定部（１０３）で選定されたソースコードの情報とを入力とし、その二つの情報より、実際のシステム環境に適した暗号モジュールの生成を行う。
ソースコードの生成方法については、従来技術と同じ手法で行う。従来手法では、暗号モジュールを構成している各暗号設計パーツに対し、それぞれ対応したソースコードを予め保有しておき、暗号モジュールの設計が行われた後に、使用されている暗号設計パーツの構成、順序を基にして、ソースコードを生成しており、本発明でも同様の手法を用いてソースコードの生成を行う。
従来技術と本発明の違いは、実際のシステム環境に適したソースコードがシステム動作環境選定部（１０３）から提供されることである。
【００２５】
図４において、システム動作環境選定部（１０３）は、設計した暗号アルゴリズムを動作させるシステムの環境情報（動作環境情報）に対応した適切なソースコードの選択を行い、システム搭載用暗号ロジック変換部（１０２）に出力する。
例えば、全ての暗号設計パーツに対し、（Ａ）多重化対応されたソース、（Ｂ）メモリ使用量を抑えたソース、（Ｃ）ＣＰＵ使用量を抑えたソース、が用意されており、実際のシステムでは、使用することが可能なメモリの容量が少なく、動作環境情報として、メモリ使用量の節約が指定されていた場合、用意されている３種類のソースコードのうち、メモリの使用量を抑えた（Ｂ）が選択される。
どのソースコードを使用するかの選定は、暗号モジュールの設計で用いられている暗号設計パーツ全てに対し、システム動作環境選定部（１０３）の指示を反映させても良いし、一部を設計者が暗号設計データ入力部（１０１）のＧＵＩ機能を用いたりして、変更してもよい。
ただし、多重化については、システム動作環境選定部（１０３）で指示した通りに対応する必要があるため、例えば、暗号設計パーツ毎に処理に必要な時間を予め定義しておき、システム動作環境選定部（１０３）では、処理時間が特定の時間以上かかる暗号設計パーツのみ、多重化されたソースを選択させることで効率的に、かつ動作環境情報に正しく対応されたソースコード生成が行える。
【００２６】
図４において、暗号処理性能判定部（１０５）は、システム搭載用暗号ロジック変換部（１０２）から出力される暗号モジュールが実際のシステム環境上で、要求されている西方（要求性能情報）を満たしているかのシミュレーションを実行することで判定を行う。
要求性能情報の例としては、データブロックに対する暗号化処理の処理速度性能、並行して実行できる同時実行数などがあげられる。
要求性能情報を入力する手段としては、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、要求性能情報をファイルに記載し、暗号処理性能判定部（１０５）が処理を行う際に読み込ませても良い。
暗号処理性能判定部（１０５）では、シミュレーションを行うための環境として、例えば、実際のＨ／Ｗ構成モデルをＳ／Ｗ上で模擬するためのエミュレータ環境を用いる。
また、暗号処理性能判定部（１０５）では、要求性能情報を評価するための、試験用プログラムの生成を行う。例えば、処理速度性能を評価する場合には、暗号モジュールを呼び出す前後で時刻の記録を行い、その差分を繰り返し測定するプログラムを生成し、前述のエミュレータ環境上で実行し、測定を行う。
要求性能を満足していた場合は、測定した処理性能結果と暗号モジュールを、システム搭載用暗号ロジック変換部（１０２）から暗号モジュール出力部（１０６）に出力する。要求性能を満足していない場合は、測定した処理性能結果を要求性能条件と共に出力し、再度、暗号設計データ入力部（１０１）で設計したい暗号方式の情報入力から設計を繰り返す。
【００２７】
図９は、実施の形態２の処理の流れを説明するフローチャートである。
設計者により、これから設計を行う暗号アルゴリズムが動作する実際のシステムに関する、動作環境情報が暗号モジュール生成装置に入力される（Ｓ８０１）。動作環境情報の例としては、ＣＰＵ処理性能に関連する制約、メモリ量に関連する制約、多重化処理の対応性などが挙げられる。動作環境情報を入力する手段としては、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、動作環境情報をファイルに記載し、システム搭載用暗号ロジック変換部（１０２）が処理を行う際に読み込ませても良い。
次に、システムに対する要求性能情報が暗号モジュール生成装置に入力される（Ｓ８０２）。要求性能情報の例としては、一つのデータブロックに対する暗号化処理を完了するまでの制限時間、並行して同時実行できる処理数などがあげられる。要求性能情報の入力には、暗号設計データ入力部（１０１）で提供されるＧＵＩ機能を用いても良いし、要求性能情報をファイルに記載し、暗号処理性能判定部（１０５）が処理を行う際に読み込ませても良い。
次に、暗号設計データ入力部（１０１）において、暗号モジュールの設計を行い（Ｓ８０３）、暗号安全性の検証を行う（Ｓ９０１、Ｓ８０５）。暗号安全性の検証を行うには、設計された暗号アルゴリズムが、予め安全性の尺度を満たしている組合せのパターンであるかを判定する。暗号アルゴリズムが、安全性を満たしていなかった場合には、再度暗号モジュールの設計（Ｓ８０３）を行う。
次に、システム搭載用暗号ロジック変換部（１０２）にて、上記手順で出力された暗号モジュールの構成情報をもとに、ソースコードの生成を行う（Ｓ８０６）。尚、ソースコードは、暗号設計パーツ毎に複数用意されており、システム動作環境選定部（１０３）がどのソースコードを使用するかの選定を行う。
次にシステム搭載用暗号ロジック変換部（１０２）がコンパイルを行う（Ｓ８０７）。使用するコンパイラは、実際のシステムに対応したクロスコンパイラを用い、また、その際のコンパイルオプションには、動作環境情報に応じたもの、例えば、メモリ使用量を抑える指定があった場合、メモリ使用量を最小化するようなオプションを設定する。尚、ソースコードの生成（Ｓ８０６）を行った後に、必要に応じで出力されたソースコードに対し、修正を行っても良い。
次に、暗号処理性能判定部（１０５）で、生成された暗号モジュールが実際のシステム上で動作する際、性能条件を満たしているのかの検証を行う（Ｓ８０８）。
検証の結果、要求性能を満たしているか確認を行い（Ｓ８０９），満たされていない場合は、暗号モジュールの設計（Ｓ８０３）を繰り返し、満たされたら暗号モジュール出力部（１０６）が暗号モジュールの構成情報を出力する（Ｓ８１０）。
【００２８】
次に、図４に示した安全性検証付き暗号モジュール生成装置を用いて暗号設計を行う場合の暗号アルゴリズムの概要を説明する。
図５は、本実施の形態に係る設計された暗号アルゴリズムの一例を示す。
【００２９】
図５では、ブロック単位を６４ビットとしたブロック暗号アルゴリズムを設計し、暗号化モジュールを生成する例を説明する。
アルゴリズムの全体基本構成として、暗号設計データ入力部（１０１）で用意された暗号設計パーツの組合せパターンから安全性の検証可能な構成としてｎ段Ｆｅｉｓｔｅｌ型（２０１）を選択し、その内部Ｆｕｎｃｔｉｏｎにｍ段変形Ｆｅｉｓｔｅｌ型（２０２）、またその内部Ｆｕｎｃｔｉｏｎにｌ段変形Ｆｅｉｓｔｅｌ型（２０２）を選択する。最終的なｌ段変形Ｆｅｉｓｔｅｌ型（２０２）のその内部Ｆｕｎｃｔｉｏｎにはｋビット入出力のＳＢＯＸ（２０６）を選択する。
【００３０】
まず、全体基本構成のｎ段Ｆｅｉｓｔｅｌ型（２０１）の情報の設定方法について説明する。例えば、ｎ段Ｆｅｉｓｔｅｌ型は８回繰り返しの８段Ｆｅｉｓｔｅｌ型（５０１）とし、入出力は６４ビットを設定する。８段Ｆｅｉｓｔｅｌ型（５０１）のＦｕｎｃｔｉｏｎ（５０２）は入出力情報３２ビットが決定される。また、Ｆｕｎｃｔｉｏｎ（５０２）の内部構成としてはｍ段変形Ｆｅｉｓｔｅｌ型が選択されているが、その設定情報として、３段変形Ｆｅｉｓｔｅｌ型を選択する。但し、３段変形Ｆｅｉｓｔｅｌ型のそれぞれの段の処理前には、入力される鍵と変形Ｆｅｉｓｔｅｌ型へ入力される上位１６ビット情報との１６ビット排他的論理和を挿入し、３段変形Ｆｅｉｓｔｅｌ型の処理後にも入力される鍵と変形Ｆｅｉｓｔｅｌ型から出力される上位１６ビット情報との１６ビット排他的論理和を挿入する。
【００３１】
また、３段変形Ｆｅｉｓｔｅｌ型のＦｕｎｃｔｉｏｎ（５０３）は入出力情報１６ビットが決定される。また、Ｆｕｎｃｔｉｏｎ（５０３）の内部構成としては、再度３段変形Ｆｅｉｓｔｅｌ型を選択する。但し、３段変形Ｆｅｉｓｔｅｌ型の２段目処理後に入力される鍵と２段目処理後に変形Ｆｅｉｓｔｅｌ型から出力される情報との１６ビット排他的論理和を挿入する。
【００３２】
最後に３段変形Ｆｅｉｓｔｅｌ型のＦｕｎｃｔｉｏｎ（５０４）は何も設定しなければ入出力情報８ビットが決定されるが、今回の場合は非均等変形Ｆｅｉｓｔｅｌ型を選択し、９ビットと７ビットに分割するように設定する。従って、１段目と３段目の変形Ｆｅｉｓｔｅｌ型のＦｕｎｃｔｉｏｎは入出力情報９ビットとし、２段目の変形Ｆｅｉｓｔｅｌ型のＦｕｎｃｔｉｏｎは入出力情報７ビットとする。９ビット入出力のＦｕｎｃｔｉｏｎの内部構成としては、９ビット入出力のＳＢＯＸ（５０４ａ）を選択する。ＳＢＯＸが選択されると、情報量９ビット毎のＳＢＯＸテーブル情報（５１２エントリ）の定義を実施する。７ビット入出力のＦｕｎｃｔｉｏｎの内部構成としては、７ビット入出力のＳＢＯＸ（５０４ｂ）を選択する。ＳＢＯＸが選択されると、情報量７ビット毎のＳＢＯＸテーブル情報（１２８エントリ）の定義を実施する。なお、９ビット入出力のＳＢＯＸが２個（５０４ａ、５０５）とも同じ情報を設定している場合としているが、設定によっては２個異なるＳＢＯＸテーブル情報を定義する事も可能である。
なお、ＳＢＯＸテーブル情報の定義方法に関しては、差分解読法や線形解読法への安全性評価が可能な構成を選択する。安全性評価が可能な構成としては、一般に数学的に安全性が証明可能な構成として暗号アルゴリズムＭＩＳＴＹやＨｉｅｒｏｃｒｙｐｔが知られており、本実施の形態の構成としてもＭＩＳＴＹのようなガロア体上の演算によって構成されるＳＢＯＸの構成を採用する。
【００３３】
以上のように設定する事により、６４ビット入出力のブロック暗号アルゴリズムにおけるデータランダマイズ部の構成を決定する事が出来る。本説明では一般的なブロック暗号アルゴリズムで定義される鍵スケジュール部までは説明しないが、上記のデータランダマイズ部の設定方法と同様の方法で設定可能である。
【００３４】
上記のように暗号設計データ入力部（１０１）にて設定した暗号設計情報から、暗号安全性検証部（１０７）にて、設計された暗号アルゴリズムの安全性検証を行う。安全性検証部では、予め用意されている暗号設計パーツの組合せパターン毎に設定されている安全性評価指標の計算方法によって、安全性検証を行う。本実施の形態では、６４ビット入出力のブロック暗号アルゴリズムの安全性評価である事から、全数探索法や差分解読法、線形解読法に関する安全性検証を実施する事が可能である。図５で示した構成は、数学的に安全性が証明可能な構成として暗号アルゴリズムＭＩＳＴＹを簡易な構成に変換したものであり、差分解読法、線形解読法に対しての評価は同様に可能である。差分解読法の安全性評価指標である最大平均差分確率は２-５６、線形解読法の安全性評価指標である最大平均線形確率は２-５６となる。
【００３５】
上記のように暗号安全性検証部（１０７）にて安全性検証が行われた暗号設計情報を、システム搭載用暗号ロジック変換部（１０２）にて、実行可能な暗号化プログラムに変換する。暗号設計情報によって、予め用意されている暗号設計パーツに対応した関数コールを呼び出し、暗号設計情報の設定ビット情報やＳＢＯＸテーブル情報やビット置換の置換情報を設定する事で、暗号化プログラムへの変換を行う。その際に、選択された暗号設計パーツにＦｕｎｃｔｉｏｎ機能が定義されている場合は、そのＦｕｎｃｔｉｏｎに対応する関数コールを再帰的に呼び出す機能も予め設定されている。
【００３６】
次に、変換された暗号化プログラムを用いて、システム動作環境入力部（１０３）から設定された、システムで使用するＣＰＵの型名やクロック周波数、利用可能なメモリ（ＲＯＭ、ＲＡＭ）サイズ、利用条件を考慮したモジュール構成をコンパイルの条件として、暗号モジュールの生成を行う。
なお、本実施の形態では、暗号設計データ入力部（１０１）にて設定可能な暗号設計情報の組合せ数は、実施の形態１と比較した場合は限定されるが、全体基本構成のＦｅｉｓｔｅｌ型の段数や入出力サイズ、その内部Ｆｕｎｃｔｉｏｎの変形Ｆｅｉｓｔｅｌ型の段数や入出力サイズ、そのまた内部Ｆｕｎｃｔｉｏｎの変形Ｆｅｉｓｔｅｌ型の段数や入出力サイズ、その内部のＳＢＯＸテーブル情報の選択候補数等、非常に多くの変動可能なパラメータが存在する。暗号設計データ入力部（１０１）で用意された暗号設計パーツの組合せパターンも、本実施の形態のＭＩＳＴＹの構成以外にも、Ｆｅｉｓｔｅｌ型、変形Ｆｅｉｓｔｅｌ型、ＳＰＮ型をそれぞれ組み合わせて構成する事が可能であり、非常に膨大な数となり、暗号設計者が暗号アルゴリズム設計装置、及び、暗号モジュール自動生成装置を利用して設計した暗号アルゴリズムを一意に特定する事は困難である。
また、暗号設計者が暗号アルゴリズム設計装置、及び、暗号モジュール自動生成装置を利用して暗号モジュールまで生成可能な事から、一般のシステム利用者は暗号アルゴリズムの詳細を知る必要なく、暗号モジュールをブラックボックスで利用する事が出来る。これは、容易な暗号アルゴリズムの解析を防ぐ予防策となる事から、システムの安全性向上に繋がるといった効果も得られる。
【００３７】
実施の形態３．
本実施の形態では、使用する秘密鍵データサイズや入力データサイズを変換する事を可能な機能を付加した場合の別の構成を以下に示す。
図６は、本実施の形態に係る秘密鍵サイズ及び入力データサイズ変換可能な暗号モジュール生成装置の構成例を示し、図１０は、本実施の形態の処理の流れを示すフローチャートである。
図６において、図１で示す実施の形態１に、暗号設計データ入力部（１０１）にて設定した暗号設計情報に、秘密鍵データ情報変換部（６０１）と入力データ情報変換部（６０２）にて、暗号モジュールのインターフェースとして、異なる入力情報から内部の暗号アルゴリズムで使用する秘密鍵データ、入力データに変換する機能を付加する。
図６の暗号設計データ入力部（１０１）、システム搭載用暗号ロジック変換部（１０２）、システム動作環境選定部（１０３）、暗号処理性能判定部（１０５）、及び暗号モジュール出力部（１０６）は図１と同じである。なお、本実施の形態では、暗号設計データ入力部（１０１）、秘密鍵データ情報変換部（６０１）と入力データ情報変換部（６０２）を暗号モジュール生成装置の一部として構成したが、暗号アルゴリズムの設計に関連する処理を別にした、暗号アルゴリズム設計装置の一部として構成してもよい。
【００３８】
図６において、秘密鍵データ情報変換部（６０１）は、暗号設計データ入力部（１０１）にて設定した暗号設計情報を入力とし、内部の暗号アルゴリズムで使用される秘密鍵データサイズ（ｎビット）を判別し、暗号モジュールのインターフェース部分に開示される秘密鍵データサイズ（ｍビット）を設定する。また、暗号モジュールのインターフェースから入力されるｍビットの秘密鍵データから内部の暗号アルゴリズムで使用されるｎビットの秘密鍵データに変換する方式を設定し、システム搭載用暗号ロジック変換部（１０２）に出力する。
ｎおよびｍの値は、暗号設計データ入力部（１０１）を用いて、例えば、設計者が入力を行う。また、変換する方式も、暗号設計データ入力部（１０１）を用いて、設計者が入力を行ってもよいし、予め幾つか用意されている方式の中から設計者が選択してもよい。
ｍビットデータからｎビットデータへの変換方法としては、例えば、図１２に示すように、ｍビットデータ（１２１０）の上位ｎビットデータ（１２２０）を有効にする等の非常に簡易な方法として左端からｎビット分のみ有効にする方法から、図１３に示すように、ｍビットデータ（１３１０）からｎビットの情報を１ビット毎に選択する選択情報テーブル（１３００）を定義（ｎビットデータ上で何番目のビット（１３０１ａ）とそれがｍビットデータ上で何番目のビット（１３０１ｂ）を示す）して、その情報テーブル（１３００）を基にｎビットデータ（１３２０）へ変換を行う等の方法がある。
【００３９】
図６において、入力データ情報変換部（６０２）は、暗号設計データ入力部（１０１）にて設定した暗号設計情報を入力とし、内部の暗号アルゴリズムで使用される初期値データサイズ（ｎビット）を判別し、暗号モジュールのインターフェース部分に開示される初期値データサイズ（ｍビット）を設定する。また、暗号モジュールのインターフェースから入力されるｍビットの初期値データから内部の暗号アルゴリズムで使用されるｎビットの初期値データに変換する方式および、内部の暗号アルゴリズムで使用されるｎビットの出力データから暗号モジュールのインターフェースから出力されるｍビットの出力データを設定し、システム搭載用暗号ロジック変換部（１０２）に出力する。
ｎおよびｍの値は、秘密鍵データ情報変換部（６０１）と同じく、暗号設計データ入力部（１０１）を用いて、例えば、設計者が入力を行う。また、変換する方式も、暗号設計データ入力部（１０１）を用いて、設計者が入力を行ってもよいし、予め幾つか用意されている方式の中から設計者が選択してもよい。
ｍビットデータからｎビットデータへの変換方法としては、秘密鍵データ情報変換部（６０１）と同様に、例えば、ｍビットデータの上位ｎビットデータを有効にする等の非常に簡易な方法から、ｍビットからｎビットの情報を１ビット毎に選択する選択情報テーブルを定義して、その情報テーブルを基に変換を行う等の方法がある。
ｎビットデータからｍビットデータへの変換方法としては、前記ｍビットデータからｎビットデータへの変換方法の逆を行い、入力時に削除されたビットに対応する部分には、乱数を埋めていく方法がある。
図１０を用いて、本実施の形態の処理の流れを説明する。基本的には、実施の形態１での説明に処理フローの説明に用いた、図８と同じであり、例えば、設計者により、暗号モジュールのインターフェースとして公開する秘密鍵のデータサイズ（ｍビット）と内部の暗号アルゴリズムで使用される秘密鍵のデータサイズ（ｎビット）が暗号設計データ入力部（１０１）に設定される（Ｓ１００１）と、次に、同じく暗号モジュールのインターフェースとして公開する入力データおよび初期値データ、出力データサイズ（ｍビット）と内部の暗号アルゴリズムで使用される入力データおよび初期値データ、出力データのデータサイズ（ｎビット）が暗号設計データ入力部（１０１）に設定される（Ｓ１００２）が新たに加えられている。なお、本実施の形態では、秘密鍵データ情報変換部（６０１）が扱うデータと、入力データ情報変換部（６０２）が扱うデータのサイズを、同じｍビット、ｎビットとしたが、違う数値でもよい。
従来では、暗号モジュールのインターフェース部分に開示される初期値データサイズおよび暗号鍵データサイズが、内部の暗号アルゴリズムに用いられているものと同じであったため、攻撃者はこれを暗号解析のための手掛かりにすることができていたが、本実施の形態で説明したように、秘密鍵データ情報変換部、入力データ情報変換部を有することで、暗号モジュールのインターフェースとして公開されるデータ長を内部の暗号アルゴリズムに用いられているデータ長と違う値にすることで、暗号モジュールの暗号安全性を向上させることが可能である。
【００４０】
実施の形態４．
本実施の形態では、実施の形態３と同様に、使用する秘密鍵データサイズや入力データサイズを変換する事を可能な機能を付加した場合の別の構成を以下に示す。
図７は、本実施の形態に係る秘密鍵サイズ及び入力データサイズ変換可能な安全性検証付き暗号モジュール生成装置の構成例を示し、図１１は、本実施の形態の流れを示すフローチャートである。
図７において、図４で示す実施の形態２に、暗号設計データ入力部（１０１）にて設定した暗号設計情報に、実施の形態３での説明に用いた、図６の秘密鍵データ情報変換部（６０１）と入力データ情報変換部（６０２）にて、暗号モジュールのインターフェースとして、異なる入力情報から内部の暗号アルゴリズムで使用する秘密鍵データ、入力データに変換する機能を付加する。
図７の暗号設計データ入力部（１０１）、暗号安全性検証部（４０１）、システム搭載用暗号ロジック変換部（１０２）、システム動作環境選定部（１０３）、暗号処理性能判定部（１０５）及び暗号モジュール出力部（１０６）は図４と同じである。なお、本実施の形態では、暗号設計データ入力部（１０１）、暗号安全性検証部（４０１）、秘密鍵データ情報変換部（６０１）と入力データ情報変換部（６０２）を暗号モジュール生成装置の一部として構成したが、暗号アルゴリズムの設計に関連する処理を別にした、暗号アルゴリズム設計装置の一部として構成してもよい。
【００４１】
図７において、秘密鍵データ情報変換部（６０１）は、暗号設計データ入力部（１０１）にて設定した暗号設計情報を入力とし、内部の暗号アルゴリズムで使用される秘密鍵データサイズ（ｎビット）を判別し、暗号モジュールのインターフェース部分に開示される秘密鍵データサイズ（ｍビット）を設定する。また、暗号モジュールのインターフェースから入力されるｍビットの秘密鍵データから内部の暗号アルゴリズムで使用されるｎビットの秘密鍵データに変換する方式を設定し、暗号安全性検証部（１０７）に出力する。
ｎおよびｍの値は、暗号設計データ入力部（１０１）を用いて、例えば、設計者が入力を行う。また、変換する方式も、暗号設計データ入力部（１０１）を用いて、設計者が入力を行ってもよいし、予め幾つか用意されている方式の中から設計者が選択してもよい。
ｍビットデータからｎビットデータへの変換方法としては、実施の形態３と同様、例えば、図１２に示すように、ｍビットデータ（１２１０）の上位ｎビットデータ（１２２０）を有効にする等の非常に簡易な方法として左端からｎビット分のみ有効にする方法から、図１３に示すように、ｍビットデータ（１３１０）からｎビットの情報を１ビット毎に選択する選択情報テーブル（１３００）を定義（ｎビットデータ上で何番目のビット（１３０１ａ）とそれがｍビットデータ上で何番目のビット（１３０１ｂ）を示す）して、その情報テーブル（１３００）を基にｎビットデータ（１３２０）へ変換を行う等の方法がある。
【００４２】
図７において、入力データ情報変換部（６０２）は、暗号設計データ入力部（１０１）にて設定した暗号設計情報を入力とし、内部の暗号アルゴリズムで使用される初期値データサイズ（ｎビット）を判別し、暗号モジュールのインターフェース部分に開示される初期値データサイズ（ｍビット）を設定する。また、暗号モジュールのインターフェースから入力されるｍビットの初期値データから内部の暗号アルゴリズムで使用されるｎビットの初期値データに変換する方式および、内部の暗号アルゴリズムで使用されるｎビットの出力データから暗号モジュールのインターフェースから出力されるｍビットの出力データを設定し、暗号安全性検証部（４０１）に出力する。
ｎおよびｍの値は、秘密鍵データ情報変換部（６０１）と同じく、暗号設計データ入力部（１０１）を用いて、例えば、設計者が入力を行う。また、変換する方式も、暗号設計データ入力部（１０１）を用いて、設計者が入力を行ってもよいし、予め幾つか用意されている方式の中から設計者が選択してもよい。
ｍビットデータからｎビットデータへの変換方法としては、秘密鍵データ情報変換部（６０１）と同様に、例えば、ｍビットデータの上位ｎビットデータを有効にする等の非常に簡易な方法から、ｍビットからｎビットの情報を１ビット毎に選択する選択情報テーブルを定義して、その情報テーブルを基に変換を行う等の方法がある。
ｎビットデータからｍビットデータへの変換方法としては、前記ｍビットデータからｎビットデータへの変換方法の逆を行い、入力時に削除されたビットに対応する部分には、乱数を埋めていく方法がある。
図１１を用いて、本実施の形態の処理の流れを説明する。基本的には、実施の形態２での説明に処理フローの説明に用いた、図９と同じであり、例えば、設計者により、暗号モジュールのインターフェースとして公開する秘密鍵のデータサイズ（ｍビット）と内部の暗号アルゴリズムで使用される秘密鍵のデータサイズ（ｎビット）が暗号設計データ入力部（１０１）に設定される（Ｓ１００１）と、次に、同じく暗号モジュールのインターフェースとして公開する入力データおよび初期値データ、出力データサイズ（ｍビット）と内部の暗号アルゴリズムで使用される入力データおよび初期値データ、出力データのデータサイズ（ｎビット）が暗号設計データ入力部（１０１）に設定される（Ｓ１００２）が新たに加えられている。なお、本実施の形態では、秘密鍵データ情報変換部（６０１）が扱うデータと、入力データ情報変換部（６０２）が扱うデータのサイズを、同じｍビット、ｎビットとしたが、違う数値でもよい。
従来では、暗号モジュールのインターフェース部分に開示される初期値データサイズおよび暗号鍵データサイズが、内部の暗号アルゴリズムに用いられているものと同じであったため、攻撃者はこれを暗号解析のための手掛かりにすることができていたが、本実施の形態で説明したように、秘密鍵データ情報変換部、入力データ情報変換部を有することで、暗号モジュールのインターフェースとして公開されるデータ長を内部の暗号アルゴリズムに用いられているデータ長と違う値にすることで、暗号モジュールの暗号安全性を向上させることが可能である。
また、暗号の安全性を検証可能な機能を付加する事で、暗号の設計技術に精通していないユーザも利用可能な安全性検証付き暗号モジュール生成装置を構築する事が可能である。
【図１】
2014238631.tif 000003
【図２】
2014238631.tif 000004
【図３】
2014238631.tif 000005
【図４】
2014238631.tif 000006
【図５】
2014238631.tif 000007
【図６】
2014238631.tif 000008
【図７】
2014238631.tif 000009
【図８】
2014238631.tif 000010
【図９】
2014238631.tif 000011
【図１０】
2014238631.tif 000012
【図１１】
2014238631.tif 000013
【図１２】
2014238631.tif 000014
【図１３】
2014238631.tif 000015