(57)【要約】      （修正有）【課題】スクランブルで用いる拡大鍵の一部が漏えいされた場合でも、ホスト装置と暗号アクセラレータとの間で送受信されるデータが容易に盗難されないデータスクランブル装置を提供する。【解決手段】ホスト装置１０のスクランブルデータ生成部１２は、乱数から中間鍵を生成する中間鍵生成部１２１と、中間鍵生成部１２１が生成した中間鍵から拡大鍵を生成する拡大鍵生成部１２２とを有する。また、スクランブルデータ生成部１２は、対象データと、拡大鍵生成部１２２が生成した拡大鍵とをスクランブル演算してスクランブルデータを生成するスクランブル演算部１２３を更に有する。【選択図】図２
2015130580.tif 000002
【特許請求の範囲】
【請求項１】
乱数から中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部が生成した中間鍵から拡大鍵を生成する拡大鍵生成部と、
対象データと、前記拡大鍵生成部が生成した拡大鍵とをスクランブル演算してスクランブルデータを生成するスクランブル演算部と、
を有することを特徴とするデータスクランブル装置。
【請求項２】
前記中間鍵生成部は、
前記乱数と第１定数とを演算して第１演算データを生成し、
前記乱数と第２定数とを演算して第２演算データを生成し、
前記第１演算データと前記第２演算データとをスクランブル演算して中間鍵を生成する処理を、前記第１定数及び第２定数を変更して複数回繰り返すことにより、複数の中間鍵を生成する、請求項１に記載のデータスクランブル装置。
【請求項３】
前記拡大鍵生成部は、
中間鍵選択テーブルを使用して前記複数の中間鍵の何れかを選択し、
前記選択した中間鍵から複数の単位拡大鍵を生成し、
前記生成した複数の単位拡大鍵を合成して前記拡大鍵を生成する、請求項２に記載のデータスクランブル装置。
【請求項４】
複数の行を有する第１中間鍵選択テーブルと、前記第１中間鍵選択テーブルの行数と行数が相違する行を有する第２中間鍵選択テーブルと、を有し、
前記第１中間鍵選択テーブル及び前記第２中間鍵選択テーブルの行を選択することにより選択可能な前記中間鍵の組合せの数は、前記拡大鍵を生成するときに使用される単位拡大鍵の数よりも多い、請求項３に記載のデータスクランブル装置。
【請求項５】
前記第１中間鍵選択テーブルの行数と、前記第２中間鍵選択テーブルの行数との最小公倍数は、前記拡大鍵を生成するときに使用される単位拡大鍵の数よりも多い、請求項４に記載のデータスクランブル装置。
【請求項６】
前記第１中間鍵選択テーブルの行数と、前記第２中間鍵選択テーブルの行数との最小公倍数は、前記拡大鍵を生成するときに使用される単位拡大鍵の数よりも少ない、請求項４に記載のデータスクランブル装置。
【請求項７】
乱数から中間鍵を生成する中間鍵生成部と、
前記中間鍵生成部が生成した中間鍵から拡大鍵を生成する拡大鍵生成部と、
スクランブルデータと、前記拡大鍵生成部が生成した拡大鍵とをスクランブル演算して暗号化対象データを復元するスクランブル演算部と、
前記スクランブル演算部が復元した暗号化対象データを暗号化する暗号化部と、
を有することを特徴とするセキュリティ装置。
【請求項８】
ホスト装置と暗号化装置とを有するセキュリティシステムであって、
前記ホスト装置は、
乱数を生成する乱数生成部と、
前記乱数生成部が生成した乱数から中間鍵を生成する第１中間鍵生成部と、
前記第１中間鍵生成部が生成した中間鍵から拡大鍵を生成する第１拡大鍵生成部と、
暗号化対象データと、前記第１拡大鍵生成部が生成した拡大鍵とをスクランブル演算してスクランブルデータを生成する第１スクランブル演算部と、
前記乱数生成部が生成した乱数と、前記第１スクランブル演算部が生成したスクランブルデータとを送信する第１送信部と、を有し、
前記暗号化装置は、
前記第１送信部が送信した乱数とスクランブルデータとを受信する第２受信部と、
前記第２受信部が受信した乱数から中間鍵を生成する第２中間鍵生成部と、
前記第２中間鍵生成部が生成した中間鍵から拡大鍵を生成する第２拡大鍵生成部と、
前記第２受信部が受信したスクランブルデータと、前記第２拡大鍵生成部が生成した拡大鍵とをスクランブル演算して暗号化対象データを復元する第２スクランブル演算部と、
前記第２スクランブル演算部が復元した暗号化対象データを暗号化する暗号化部と、
前記暗号化部が暗号化した暗号化対象データを送信する第２送信部と、を有する、
ことを特徴とするセキュリティシステム。
【請求項９】
乱数から中間鍵を生成し、
前記生成した中間鍵から拡大鍵を生成し、
対象データと、前記生成した拡大鍵とをスクランブル演算してスクランブルデータを生成する、
ことを有することを特徴とするデータスクランブル方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法に関する。
【背景技術】
【０００２】
組込み機器のストレージ（外部記憶装置）等に格納されたデータ等の盗難による情報漏洩に対する対策のため、組み込み機器にデータ暗号化機能を追加することが知られている。また、データを暗号化することにより組込み機器のＣＰＵ（Central Processing Unit、以下ホスト装置とも称する）の負荷が増大することを防止するために、暗号化機能を有する暗号アクセラレータを配置することが知られている。組み込み機器に暗号アクセラレータを追加することにより、ホスト装置の負荷が増大することなく、データを暗号化することができる。
【０００３】
また、ホスト装置と暗号アクセラレータとの間の配線を介して送受信されるデータの盗難による情報漏洩を防止するために、ホスト装置と暗号アクセラレータとの間を介して送受信されるデータを暗号化することが知られている。しかしながら、ホスト装置と暗号アクセラレータとの間を介して送受信されるデータを暗号化すると、ホスト装置の負荷が増大するおそれがある。ここでいう負荷とはホスト側で行う暗号化処理の負荷のことである。つまり、暗号化を高速で行うために暗号アクセラレータにデータを転送する際に、ホスト側にて暗号化を実施する必要があるのでは、アクセラレータとしての意味がなく、上記配線上のデータを暗号化するというのは実用的ではない。ホスト装置の負荷を最小限とし且つホスト装置と暗号アクセラレータとの間を介して送受信されるデータの盗難に対応するために、ホスト装置と暗号アクセラレータとの間のデータを認証コードを使用してスクランブル演算することが知られている。ここでいうスクランブル演算とは排他的論理和演算のことである。ホスト装置と暗号アクセラレータとの間を介して送受信されるデータをスクランブル演算することにより、ホスト装置の負荷を最小限とし且つホスト装置と暗号アクセラレータとの間のデータの盗難に対応することが可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２５３７４号公報
【特許文献２】特開２００２−９１２９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、先行技術におけるスクランブルでは、ホストと暗号アクセラレータとで固定長の認証コードを共有する。認証コードよりも長いサイズのデータをスクランブルする場合には、同一の認証コードを繰り返し使用してスクランブル演算を行う方法が考えられる。このようなデータをホスト装置と暗号アクセラレータとの間の配線を介して送受信する場合、固定長の認証コードが知られると、スクランブルされた長いデータ全てが盗難されるおそれがある。認証コードは通常、16バイト程度のため、16バイトが漏えいすると全データが盗難されるおそれがある。
【０００６】
1つの側面では、本発明は、ホスト装置と暗号アクセラレータとの間を介して送受信されるデータが容易に盗難されないデータスクランブル装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、データスクランブル装置は、乱数から中間鍵を生成する中間鍵生成部と、中間鍵生成部が生成した中間鍵から拡大鍵を生成する拡大鍵生成部とを有する。また、データスクランブル装置は、対象データと、拡大鍵生成部が生成した拡大鍵とをスクランブル演算してスクランブルデータを生成するスクランブル演算部を更に有する。
【発明の効果】
【０００８】
認証コードが盗難された場合でも、ホスト装置と暗号アクセラレータとの間を介して送受信されるデータが容易に盗難されないデータスクランブル装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態例に係る組み込み機器のブロック図である。
【図２】（ａ）はホスト装置の機能ブロック図であり、（ｂ）は暗号アクセラレータの機能ブロック図である。
【図３】ホスト装置の中間鍵演算部の内部回路ブロック図である。
【図４】ホスト装置の拡大鍵演算部の回路ブロック図である。
【図５】（ａ）は中間鍵セレクタの選択アルゴリズムを示す図であり、（ｂ）は第１中間鍵選択テーブルを示す図であり、（ｃ）は第２中間鍵選択テーブルを示す図である。
【図６】暗号アクセラレータの中間鍵演算部の内部回路ブロック図である。
【図７】暗号アクセラレータの拡大鍵演算部の回路ブロック図である。
【図８】暗号化処理を示すフローチャートである。
【図９】（ａ）は他の選択アルゴリズムを示す図であり、（ｂ）は（ａ）の選択アルゴリズムで使用される第１中間鍵選択テーブルを示す図であり、（ｃ）は（ａ）の選択アルゴリズムで使用される第２中間鍵選択テーブルを示す図である。
【発明を実施するための形態】
【００１０】
以下図面を参照して、本発明に係るデータスクランブル装置、セキュリティ装置、セキュリティシステム及びデータスクランブル方法について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
【００１１】
図１は、実施形態例に係る組み込み機器のブロック図である。
【００１２】
組み込み機器１は、ホスト装置１０と、暗号アクセラレータ２０と、ＲＯＭ３０（Read Only Memory）と、ＲＡＭ３１（Random Access Memory）と、インタフェース３２とを有する。ホスト装置１０、ＲＯＭ３０、ＲＡＭ３１及びインタフェース３２との間は、バス線３３を介して接続される。ホスト装置１０と暗号アクセラレータ２０との間は、シリアル線３４を介して接続される。
【００１３】
図２（ａ）はホスト装置１０の機能ブロック図であり、図２（ｂ）は暗号アクセラレータ２０の機能ブロック図である。
【００１４】
ホスト装置１０は、乱数生成部１１と、第１スクランブルデータ生成部１２と、第１記憶部１３と、ホスト側インタフェース部１４と、制御部１５を有する。第１記憶部１３は、１６バイトの認証コード１３０と、第１中間鍵選択テーブル１３１と、第２中間鍵選択テーブル１３２とを格納する。
【００１５】
暗号アクセラレータ２０は、暗号化部２１と、第２スクランブルデータ生成部２２と、第２記憶部２３と、暗号化側インタフェース部２４とを有する。第２記憶部２３は、第１記憶部１３に格納される認証コードと同一の認証コード１３０を格納する。また、第２記憶部２３は、第１記憶部１３に格納される第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２と同一の第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２を格納する。
【００１６】
乱数生成部１１は、制御部１５の指示に基づいて、１６バイトの擬似乱数を生成し、生成した乱数を第１スクランブルデータ生成部１２及び第１記憶部１３に出力する。
【００１７】
第１スクランブルデータ生成部１２は、第１中間鍵生成部１２１と、第１拡大鍵生成部１２２と、第１スクランブル演算部１２３とを有する。
【００１８】
図３は、第１中間鍵生成部１２１の内部回路ブロック図である。
【００１９】
第１中間鍵生成部１２１は、乱数格納バッファ１２１０と、第１乱数セレクタ１２１１と、第２乱数セレクタ１２１２と、第１定数セレクタ１２１３と、第２定数セレクタ１２１４とを有する。第１中間鍵生成部１２１は、加算器１２１５と、乗算器１２１６と、排他的論理和器１２１７と、中間鍵格納バッファ１２１８とを更に有する。
【００２０】
乱数格納バッファ１２１０は、乱数生成部１１が生成した１６バイトの乱数を格納する。第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、乱数格納バッファ１２１０に格納された１６バイトの乱数を４バイトずつ順次選択する。まず、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、最初の４バイトの乱数である第１乱数Ｒ１を選択する。次いで、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、次の４バイトの乱数である第２乱数を選択する。次いで、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、次の４バイトの乱数である第３乱数Ｒ３を選択する。そして、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、最後の４バイトの乱数である第４乱数Ｒ４を選択する。第４乱数Ｒ４を選択した後は、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、第１乱数Ｒ１を選択する。以降、第１乱数セレクタ１２１１及び第２乱数セレクタ１２１２は、第１乱数Ｒ１〜第４乱数Ｒ４を順次選択する。
【００２１】
第１定数セレクタ１２１３は、第１−１定数から第１−２４定数までの互いに相違する２４個の定数を順次選択する。第１定数セレクタ１２１３は、第１−２４定数まで選択すると選択処理を終了する。第１定数セレクタ１２１３は、第２定数セレクタ１２１４は、第２−１定数から第２−２４定数までの互いに相違する２４個の定数を順次選択する。第２定数セレクタ１２１４は、第２−２４定数まで選択すると選択処理を終了する。
【００２２】
加算器１２１５は、第１乱数セレクタ１２１１が選択した４バイトの乱数と、第１定数セレクタ１２１３が選択した定数とを加算して、４バイトの第１演算データを生成する。まず、加算器１２１５は、第１乱数セレクタ１２１１が選択した第１乱数Ｒ１と第１定数セレクタ１２１３が選択した第１−１定数とを加算して、第１−１演算データを生成する。次いで、加算器１２１５は、第１乱数セレクタ１２１１が選択した第２乱数と第１定数セレクタ１２１３が選択した第１−２定数とを加算して、第１−２演算データを生成する。以降、加算器１２１５は、第１乱数セレクタ１２１１が選択した乱数と、第１定数セレクタ１２１３が選択した定数とを加算する処理を繰り返す。第１乱数セレクタ１２１１が選択した第４乱数Ｒ４と第１定数セレクタ１２１３が選択した第１−２４定数とを加算して、第１−２４演算データを生成すると、加算器１２１５は、加算処理を終了する。
【００２３】
乗算器１２１６は、第２乱数セレクタ１２１２が選択した４バイトの乱数と、第２定数セレクタ１２１４が選択した定数とを乗算して、４バイトの第２演算データを生成する。まず、乗算器１２１６は、第２乱数セレクタ１２１２が選択した第１乱数Ｒ１と第２定数セレクタ１２１４が選択した第２−１定数とを乗算して、第２−１演算データを生成する。次いで、乗算器１２１６は、第２乱数セレクタ１２１２が選択した第２乱数Ｒ２と第２定数セレクタ１２１４が選択した第２−２定数とを乗算して、第２−２演算データを生成する。以降、乗算器１２１６は、第２乱数セレクタ１２１２が選択した乱数と、第２定数セレクタ１２１４が選択した定数とを乗算する処理を繰り返す。第２乱数セレクタ１２１２が選択した第４乱数Ｒ４と第２定数セレクタ１２１４が選択した第２−２４定数とを乗算して、第２−２４演算データを生成すると、乗算器１２１６は、乗算処理を終了する。
【００２４】
排他的論理和器１２１７は、加算器１２１５が演算した第１演算データと、乗算器１２１６が演算した第１演算データとを排他的論理和（以下、ＸＯＲとも称する）演算して、４バイトの中間鍵を生成する。排他的論理和器１２１７は、生成した中間鍵を中間鍵格納バッファ１２１８に格納する。まず、排他的論理和器１２１７は、加算器１２１５が演算した第１−１演算データと、乗算器１２１６が演算した第２−１演算データとをＸＯＲ演算して第１中間鍵Ａ０を生成して、中間鍵格納バッファ１２１８に格納する。次いで、排他的論理和器１２１７は、加算器１２１５が演算した第１−２演算データと、乗算器１２１６が演算した第２−２演算データとをＸＯＲ演算して第２中間鍵Ａ１を生成して、中間鍵格納バッファ１２１８に格納する。以降、排他的論理和器１２１７は、加算器１２１５が演算した第１演算データと、乗算器１２１６が演算した第１演算データとをＸＯＲ演算する処理を繰り返す。生成された中間鍵は、第１〜第４中間鍵Ａ０〜Ａ３、第５〜第８中間鍵Ｂ０〜Ｂ３、第９〜第１２中間鍵Ｃ０〜Ｃ３、第１３〜第１６中間鍵Ｄ０〜Ｄ３、第１７〜第２０中間鍵Ｅ０〜Ｅ３及び第２０〜第２４中間鍵Ｆ０〜Ｆ３として格納される。加算器１２１５が演算した第１−２４演算データと、乗算器１２１６が演算した第２−２４演算データとをＸＯＲ演算して第２４中間鍵Ｆ３を生成すると、排他的論理和器１２１７は、乗算処理を終了する。
【００２５】
中間鍵格納バッファ１２１８は、第１〜第４中間鍵Ａ０〜Ａ３、第５〜第８中間鍵Ｂ０〜Ｂ３、第９〜第１２中間鍵Ｃ０〜Ｃ３、第１３〜第１６中間鍵Ｄ０〜Ｄ３、第１７〜第２０中間鍵Ｅ０〜Ｅ３及び第２０〜第２４中間鍵Ｆ０〜Ｆ３を順次格納する。
【００２６】
図４は、第１拡大鍵生成部１２２の回路ブロック図である。
【００２７】
第１拡大鍵生成部１２２は、中間鍵セレクタ１２２０と、第１ビットローテーション部１２２１と、第２ビットローテーション部１２２２と、第１加算部１２２３と、減算部１２２４と、第３ビットローテーション部１２２５と、第２加算部１２２６とを有する。第１拡大鍵生成部１２２は、単位拡大鍵格納部１２２７と、拡大鍵合成部１２２８とを更に有する。
【００２８】
中間鍵セレクタ１２２０は、所定のアルゴリズムに基づいて、中間鍵格納バッファ１２１８に格納される２４個の中間鍵から第１選択鍵Ｘｘ、第２選択鍵Ｙｙ、第３選択鍵Ｚｚ及び第４選択鍵Ｗｗの４つの中間鍵を選択する。中間鍵セレクタ１２２０は、第１記憶部１３に格納される第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２を使用して、中間鍵格納バッファ１２１８に格納される２４個の中間鍵から４つの中間鍵を選択する処理を５１２回繰り返す。
【００２９】
図５（ａ）は中間鍵セレクタ１２２０の選択アルゴリズムを示す図であり、図５（ｂ）は第１中間鍵選択テーブル１３１を示す図であり、図５（ｃ）は第２中間鍵選択テーブル１３２を示す図である。
【００３０】
第１中間鍵選択テーブル１３１は、第０行から第２１行までの２２行と、第０列から第３列までの４列とにＡ〜Ｆのアルファベットが配置されるテーブルである。例えば、第１中間鍵選択テーブル１３１の第０行第０列には「Ａ」が配置され、第４行第３列には「Ｆ」が配置され、第２１行第３列には「Ｅ」が配置される。
【００３１】
第２中間鍵選択テーブル１３２は、第０行から第２３行までの２４行と、第０列から第３列までの４列とに０〜３の数値が配置されるテーブルである。例えば、第２中間鍵選択テーブル１３２の第０行第０列には「０」が配置され、第４行第３列には「１」が配置され、第２３行第３列には「０」が配置される。
【００３２】
中間鍵セレクタ１２２０は、図５（ａ）に示すアルゴリズムに基づいて、第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２を使用して、中間鍵格納バッファ１２１８に格納される２４個の中間鍵から４つの中間鍵を順次選択する。図５（ａ）において、Ｘは第１選択鍵のアルファベット部であり、ｘは第１選択鍵の数字部であり、Ｙは第２選択鍵のアルファベット部であり、ｙは第２選択鍵の数字部であり、Ｚは第３選択鍵のアルファベット部であり、ｚは第３選択鍵の数字部である。また、Ｗは第４選択鍵のアルファベット部であり、ｗは第４選択鍵の数字部である。
【００３３】
また、図５（ａ）において、「t」は第１中間鍵選択テーブル１３１の行を示し、「s」は第２中間鍵選択テーブル１３２の行を示す。「Order[t][0]」は第１中間鍵選択テーブル１３１の第ｔ行０列のアルファベットを示し、「Index[s][0]」は第２中間鍵選択テーブル１３２の第ｓ行０列のアルファベットを示す。「Order[t][1]」は第１中間鍵選択テーブル１３１の第ｔ行１列のアルファベットを示し、「Index[s][1]」は第２中間鍵選択テーブル１３２の第ｓ行１列のアルファベットを示す。「Order[t][2]」は第１中間鍵選択テーブル１３１の第ｔ行２列のアルファベットを示し、「Index[s][2]」は第２中間鍵選択テーブル１３２の第ｓ行２列のアルファベットを示す。「Order[t][3]」は第１中間鍵選択テーブル１３１の第ｔ行３列のアルファベットを示し、「Index[s][3]」は第２中間鍵選択テーブル１３２の第ｓ行３列のアルファベットを示す。
【００３４】
第１回目の選択処理では、中間鍵セレクタ１２２０は、第１選択鍵Ｘｘとして第１中間鍵Ａ０を選択し、第２選択鍵Ｙｙとして第５中間鍵Ｂ０を選択し、第３選択鍵Ｚｚとして第９中間鍵Ｃ０を選択し、第４選択鍵Ｗｗとして第１３中間鍵Ｄ０を選択する。
【００３５】
第２回目の選択処理では、中間鍵セレクタ１２２０は、第１選択鍵Ｘｘとして第６中間鍵Ｂ１を選択し、第２選択鍵Ｙｙとして第２中間鍵Ａ１を選択し、第３選択鍵Ｚｚとして第１４中間鍵Ｄ１を選択し、第４選択鍵Ｗｗとして第１０中間鍵Ｃ１を選択する。以下、第２６４回目の選択処理まで、第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２の選択する行を１つずつ増やすことにより、４つの選択鍵を順次選択する。
【００３６】
第２６５回目の選択処理では、第２６４回目の選択処理で選択していた第１中間鍵選択テーブル１３１の行、すなわち第２３行から２つ増やした行である第１行を選択する。以降、第５１２回目の選択処理まで、第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２の選択する行を１つずつ増やすことにより、４つの選択鍵を順次選択する。
【００３７】
第１中間鍵選択テーブル１３１の第０行から第２１行のそれぞれの行に配置されるＡ〜Ｆまでのアルファベットの順列は互いに異なる。また、第２中間鍵選択テーブル１３２の第０行から第２３行のそれぞれの行に配置される０〜３までの数値の順列は互いに異なる。図５（ａ）に示すアルゴリズムは、第１中間鍵選択テーブル１３１の行数である２２と、第２中間鍵選択テーブル１３２の行数である２４との最小公倍数である２６４よりも多い５１２回の処理において処理ごとに異なる４つの中間鍵を選択する。
【００３８】
第１ビットローテーション部１２２１は、第１選択鍵Ｘｘを１ビット左ローテーションさせて第１ビットローテーションデータを生成する。第２ビットローテーション部１２２２は、第３選択鍵Ｚｚを１ビット左ローテーションさせて第２ビットローテーションデータを生成する。第１加算部１２２３は、第１ビットローテーション部１２２１が生成した第１ビットローテーションデータと、第２選択鍵Ｙｙとを加算して第１加算データを生成する。減算部１２２４は、第２ビットローテーション部１２２２が生成した第２ビットローテーションデータと、第４選択鍵Ｗｗとを加算して減算データを生成する。第３ビットローテーション部１２２５は、減算部１２２４が生成した減算データを１ビット左ローテーションさせて第３ビットローテーションデータを生成する。第２加算部１２２６は、第１加算部１２２３が生成した第１加算データと、第３ビットローテーション部１２２５が生成した第３ビットローテーションデータとを加算して４バイトの単位拡大鍵を生成する。
【００３９】
第１ビットローテーション部１２２１、第２ビットローテーション部１２２２、第１加算部１２２３、減算部１２２４、第３ビットローテーション部１２２５及び第２加算部１２２６は、中間鍵セレクタ１２２０が４つの中間鍵を選択するごとに、単位拡大鍵を生成する。中間鍵セレクタ１２２０は、４つの中間鍵を５１２回選択するので、第１単位拡大鍵から第５１２単位拡大鍵までの５１２個の単位拡大鍵が生成される。第１単位拡大鍵〜第５１２単位拡大鍵は、処理ごとに異なる４つの中間鍵を使用して演算されるため、互いに異なる。
【００４０】
単位拡大鍵格納部１２２７は、第２加算部１２２６が生成した第１単位拡大鍵から第５１２単位拡大鍵までの５１２個の単位拡大鍵を順次格納する。拡大鍵合成部１２２８は、単位拡大鍵格納部１２２７が格納したそれぞれが４バイトの第１単位拡大鍵〜第５１２単位拡大鍵を合成することにより、２０４８バイトのデータ長を有する拡大鍵を合成する。
【００４１】
第１スクランブル演算部１２３は、キーデータと、対象データとをＸＯＲ演算して、対象データをスクランブル化する。例えば、第１スクランブル演算部１２３は、キーデータＸと、対象データＡとをＸＯＲ演算してスクランブル化することにより、スクランブルデータＢを生成する。反対に、第１スクランブル演算部１２３は、スクランブルデータＢと、キーデータＸとをＸＯＲ演算して、対象データＡを復元する。
【００４２】
第１スクランブル演算部１２３は、乱数生成部１１が生成した１６バイトの乱数と、第１記憶部１３に格納される１６バイトの認証コード１３０とをＸＯＲ演算して、１６バイトの第１スクランブルデータを生成する。また、第１スクランブル演算部１２３は、２０４８バイトの対象データと、２０４８バイトの拡大鍵とをＸＯＲ演算して２０４８バイトの第２スクランブルデータを生成する。
【００４３】
ホスト側インタフェース部１４は、第１スクランブルデータ生成部１２が生成したデータを示す信号をシリアル線３４を介して暗号化側インタフェース部２４に送信する。また、ホスト側インタフェース部１４は、暗号化側インタフェース部２４からシリアル線３４を介して送信された信号を受信する。
【００４４】
ホスト側インタフェース部１４は、第１スクランブル演算部１２３が生成した第１スクランブルデータ及び第２スクランブルデータを示す信号を暗号化側インタフェース部２４に送信する。また、ホスト側インタフェース部１４は、暗号化部２１が暗号化した暗号化対象データを示す信号を暗号化側インタフェース部２４から受信する。
【００４５】
制御部１５は、ＲＯＭに格納されたコンピュータプログラムに従い、ホスト装置１０及び暗号アクセレータ２０等組み込み機器１に搭載される装置の動作を制御する。
【００４６】
暗号化部２１は、ＤＥＳ及びＡＥＳ等の共通鍵暗号方式やＲＳＡなどの公開鍵暗号方式使用して暗号化処理及び復号化処理を実行する。
【００４７】
第２スクランブルデータ生成部２２は、第２中間鍵生成部２２１と、第２拡大鍵生成部２２２と、第２スクランブル演算部２２３とを有する。第２中間鍵生成部２２１、第２拡大鍵生成部２２２及び第２スクランブル演算部２２３はそれぞれ、第１中間鍵生成部１２１、第１拡大鍵生成部１２２及び第１スクランブル演算部１２３と同一の構成及び機能を有する。また、第２スクランブルデータ生成部２２は、ホスト装置１０から第２スクランブルデータを示す信号を受信したか否かを判定する。ホスト装置１０から第２スクランブルデータを示す信号を受信したと判定したとき、第２スクランブルデータ生成部２２は、中間鍵生成処理を開始する。
【００４８】
図６は、第２中間鍵生成部２２１の内部回路ブロック図である。
【００４９】
第２中間鍵生成部２２１は、乱数格納バッファ２２１０と、第１乱数セレクタ２２１１と、第２乱数セレクタ２２１２と、第１定数セレクタ２２１３と、第２定数セレクタ２２１４とを有する。第２中間鍵生成部２２１は、加算器２２１５と、乗算器２２１６と、排他的論理和器２２１７と、中間鍵格納バッファ２２１８とを更に有する。
【００５０】
乱数格納バッファ２２１０は、１６バイトの乱数を格納する。第１乱数セレクタ２２１１及び第２乱数セレクタ２２１２は、乱数格納バッファ２２１０に格納された１６バイトの乱数を４バイトずつ順次選択する。
【００５１】
第１定数セレクタ２２１３は、第１−１定数から第１−２４定数までの互いに相違する２４個の定数を順次選択し、第２定数セレクタ２２１４は、第２−１定数から第２−２４定数までの互いに相違する２４個の定数を順次選択する。加算器２２１５、乗算器２２１６及び排他的論理和器２２１７のそれぞれは選択された４バイトの乱数と定数とを演算する。
【００５２】
中間鍵格納バッファ２２１８は、第１〜第４中間鍵Ａ０〜Ａ３、第５〜第８中間鍵Ｂ０〜Ｂ３、第９〜第１２中間鍵Ｃ０〜Ｃ３、第１３〜第１６中間鍵Ｄ０〜Ｄ３、第１７〜第２０中間鍵Ｅ０〜Ｅ３及び第２０〜第２４中間鍵Ｆ０〜Ｆ３を順次格納する。
【００５３】
図７は、第２拡大鍵生成部２２２の回路ブロック図である。
【００５４】
第２拡大鍵生成部２２２は、中間鍵セレクタ２２２０と、第１ビットシフト部２２２１と、第２ビットシフト部２２２２と、第１加算部２２２３と、減算部２２２４と、第３ビットシフト部２２２５と、第２加算部２２２６とを有する。第２拡大鍵生成部２２２は、単位拡大鍵格納部２２２７と、拡大鍵合成部２２２８とを更に有する。
【００５５】
中間鍵セレクタ２２２０は、第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２を使用して、図５（ａ）のアルゴリズムに基づいて、４つの選択鍵を５１２回選択する。
【００５６】
第１ビットローテーション部２２２１、第２ビットローテーション部２２２２、第１加算部２２２３、減算部２２２４、第３ビットローテーション部２２２５及び第２加算部２２２６は、中間鍵セレクタ２２２０が４つの中間鍵を選択するごとに、単位拡大鍵を生成する。中間鍵セレクタ２２２０は、４つの中間鍵を５１２回選択するので、第１単位拡大鍵から第５１２単位拡大鍵までの５１２個の単位拡大鍵が生成される。
【００５７】
単位拡大鍵格納部２２２７は、第２加算部２２２６が生成した第１単位拡大鍵から第５１２単位拡大鍵までの５１２個の単位拡大鍵を順次格納する。拡大鍵合成部２２２８は、単位拡大鍵格納部２２２７が格納したそれぞれが４バイトの第１単位拡大鍵〜第５１２単位拡大鍵を合成することにより、２０４８バイトのデータ長を有する拡大鍵を合成する。
【００５８】
第２スクランブル演算部２２３は、キーデータと、暗号化対象データとをＸＯＲ演算して、暗号化対象データをスクランブル化する。第１スクランブル演算部１２３は、ホスト側インタフェース部１４から送信された１６バイトの第１スクランブルデータと、第２記憶部２３に格納される１６バイト認証コードとをＸＯＲ演算して乱数を復元する。また、第２スクランブル演算部２２３は、ホスト側インタフェース部１４から送信された２０４８バイトの第２スクランブルデータと、２０４８バイトの拡大鍵とをＸＯＲ演算して暗号化対象データを復元する。
【００５９】
暗号化側インタフェース部２４は、暗号化部２１が暗号化した暗号化対象データを示す信号をシリアル線３４を介してホスト側インタフェース部１４に送信する。また、暗号化側インタフェース部２４は、ホスト側インタフェース部１４からシリアル線３４を介して送信された第１スクランブルデータ及び第２スクランブルデータを示す信号を受信する。
【００６０】
〔００４０〕及び、〔００５７〕においては、単位拡大鍵から２０４８バイトの拡大鍵を合成して格納する方法を示したが、拡大鍵格納部は必ずしも２０４８バイト必要ない。例えば、拡大鍵格納部を単位鍵と同サイズとし、単位拡大鍵が一つ生成されるごとに格納し、単位鍵と同サイズ分だけデータとスクランブル演算したのち、次の単位鍵を同一の領域に格納する方法を採用してもよい。
図８は、ホスト装置１０が暗号アクセラレータ２０を使用して、暗号化対象データを暗号化する処理を示すフローチャートである。
【００６１】
まず、ステップＳ１０１において、乱数生成部１１は、乱数を生成する。
【００６２】
次いで、ステップＳ１０２において、第１スクランブル演算部１２３は、乱数生成部１１が生成した乱数と第１記憶部１３に格納される認証コードとをＸＯＲ演算して第１スクランブルデータを生成する。
【００６３】
次いで、ステップＳ１０３において、ホスト側インタフェース部１４は、第１スクランブル演算部１２３が生成した第１スクランブルデータを暗号化側インタフェース部２４に送信する。次いで、処理は、ステップＳ１０４及びＳ２０１に進む。
【００６４】
処理がステップＳ１０４に進むと、第１中間鍵生成部１２１は、乱数生成部１１が生成した乱数から、２４個の中間鍵を生成する。
【００６５】
次いで、ステップＳ１０５において、第１拡大鍵生成部１２２は、第１中間鍵生成部１２１が生成した２４個の中間鍵から拡大鍵を生成する。
【００６６】
次いで、ステップＳ１０６において、第１スクランブル演算部１２３は、第１拡大鍵生成部１２２が生成した拡大鍵と暗号化対象データとをＸＯＲ演算して第２スクランブルデータを生成する。
【００６７】
次いで、ステップＳ１０７において、ホスト側インタフェース部１４は、第１スクランブル演算部１２３が生成した第２スクランブルデータを暗号化側インタフェース部２４に送信する。次いで、処理は、ステップＳ２０５に進む。
【００６８】
処理がステップＳ２０１に進むと、暗号化側インタフェース部２４は、ホスト側インタフェース部１４が送信した第１スクランブルデータを受信する。
【００６９】
次いで、ステップＳ２０２において、第２スクランブル演算部２２３は、暗号化側インタフェース部２４が受信した第１スクランブルデータから、乱数を復元する。
【００７０】
次いで、ステップＳ２０３において、第２中間鍵生成部２２１は、第２スクランブル演算部２２３が復元した乱数から、２４個の中間鍵を生成する。
【００７１】
次いで、ステップＳ２０４において、第２拡大鍵生成部２２２は、第２中間鍵生成部２２１が生成した２４個の中間鍵から拡大鍵を生成する。
【００７２】
次いで、ステップＳ２０５において、第２スクランブルデータ生成部２２は、ホスト装置１０から第２スクランブルデータを示す信号を受信したか否かを判定する。ホスト装置１０から第２スクランブルデータを受信していないと判定した場合、所定の待機時間が経過した後に、第２スクランブルデータ生成部２２は、ホスト装置１０から第２スクランブルデータを受信したか否かを再度判定する。ステップＳ１０７においてホスト側インタフェース部１４が送信した第２スクランブルデータを示す信号を、暗号化側インタフェース部２４が受信したことを第２スクランブルデータ生成部２２が判定すると、処理はステップＳ２０６に進む。
【００７３】
処理がステップＳ２０６に進むと、第２スクランブル演算部２２３は、暗号化側インタフェース部２４が受信した第２スクランブルデータと、第２拡大鍵生成部２２２が生成した拡大鍵とをＸＯＲ演算して暗号化対象データを復元する。
【００７４】
次いで、ステップＳ２０７において、暗号化部２１は、スクランブル演算２１２３が復元した暗号化対象データを暗号化する。
【００７５】
次いで、ステップＳ２０８において、暗号化側インタフェース部２４は、暗号化部２１１４によって暗号化された暗号化対象データをホスト側インタフェース部１４に送信する。
【００７６】
次いで、ステップＳ１０８において、ホスト側インタフェース部１４は、暗号化された暗号化対象データを暗号化側インタフェース部２４から受信する。
【００７７】
組み込み機器１では、暗号化対象データは、乱数から生成される複数の中間鍵から生成される拡大鍵を使用してスクランブル化されているので、ホスト装置１０から暗号アクセラレータ２０に暗号化対象データの盗難は容易ではない。拡大鍵は２０４８バイト以内の周期のないデータであるため、この拡大鍵が１６バイト程度漏えいしても全データが盗難されることはない。
【００７８】
また、組み込み機器１では、ホスト装置１０から暗号アクセラレータ２０に送信される暗号化対象データは、暗号化されずに、スクランブル化されているので、ホスト装置１０での暗号化処理がなくホスト装置１０の負荷を軽くできる。また、乱数生成部１１が生成する擬似乱数は４０バイト以下であれば、例えば１６バイトであれば、擬似乱数の高速生成が可能である。
【００７９】
また、組み込み機器１では、中間鍵を生成する中間鍵生成部は、複数のセレクタ、並びに単一の加算器、乗算器及び排他的論理和器を有する簡単な構成であるので、中間鍵生成部の回路規模を小さくすることができる。
【００８０】
また、組み込み機器１では、拡大鍵を生成する拡大鍵生成部の演算処理は、ビットローテーション処理、加算処理及び減算処理であるので高速な演算処理が可能である。
【００８１】
組み込み機器１では、乱数生成部１１は、１６バイトの擬似乱数を生成するが、認証コード１３０とデータ長が同一であれば、データ長が１６バイトよりも長い疑似乱数、又はデータ長が１６バイトよりも短い疑似乱数を生成する乱数生成器を使用してもよい。また、物理乱数等の真の乱数を生成する乱数生成器を使用してもよい。
【００８２】
また、組み込み機器１では、４バイトの中間鍵が使用されるが、データ長が４バイトよりも長い中間鍵、又はデータ長が４バイトよりも短い中間鍵を使用してもよい。また、組み込み機器１では、単一の第１中間鍵生成部１２１を２４回動作させて２４個の中間鍵を生成しているが、複数の第１中間鍵生成部１２１を使用して２４個の中間鍵を生成してもよい。例えば、４つの第１中間鍵生成部１２１を６回動作させて２４個の中間鍵を生成してもよく、６つの第１中間鍵生成部１２１を４回動作させて２４個の中間鍵を生成してもよい。また、組み込み機器１では、２４個の中間鍵を使用して拡大鍵を生成しているが、２４個より多い中間鍵を使用し、又は２４個より少ない中間鍵を使用して拡大鍵を生成してもよい。
【００８３】
また、組み込み機器１では、第１スクランブル演算部１２３及び第２スクランブル演算部２２３のそれぞれは、ＸＯＲ演算により対象データをスクランブル化しているが、四則演算等の他の演算によってスクランブル化する構成としてもよい。また、対象データをスクランブル化は、ＸＯＲ演算や四則演算等の組合せによって実行されてもよい。
【００８４】
また、組み込み機器１では、第１中間鍵選択テーブル１３１及び第２中間鍵選択テーブル１３２を使用して、図５（ａ）に示すアルゴリズムに基づいて２４個の中間鍵を選択しているが、他のアルゴリズムを使用してもよい。
【００８５】
図９（ａ）は選択アルゴリズムの他を示す図である。また、図９（ｂ）は図９（ａ）に示す選択アルゴリズムで使用される第１中間鍵選択テーブルを示す図であり、図９（ｃ）は図９（ａ）に示す選択アルゴリズムで使用される第２中間鍵選択テーブルを示す図である。
【００８６】
図９（ｂ）に示す第１中間鍵選択テーブルの行数は１２行であり、図９（ｃ）に示す第２中間鍵選択テーブルの行数は９行であり、２つの行数の最小公倍数は１０８である。図９（ａ）に示す選択アルゴリズムでは、２つの行数の最小公倍数よりも多い５１２回の処理が可能である。
【符号の説明】
【００８７】
１    組み込み機器
１０    ホスト装置（データスクランブル装置）
１１    乱数生成部
１２    第１スクランブルデータ生成部
１３    第１記憶部
１４    ホスト側インタフェース部
１５    制御部
２０    暗号アクセラレータ（セキュリティ装置）
２１    暗号化部
２２    第２スクランブルデータ生成部
２３    第２記憶部
２４    暗号化側インタフェース部
１２１    第１中間鍵生成部
１２２    第１拡大鍵生成部
１２３    第１スクランブル演算部
２２１    第２中間鍵生成部
２２２    第２拡大鍵生成部
２２３    第２スクランブル演算部
【図１】
2015130580.tif 000003
【図２】
2015130580.tif 000004
【図３】
2015130580.tif 000005
【図４】
2015130580.tif 000006
【図５】
2015130580.tif 000007
【図６】
2015130580.tif 000008
【図７】
2015130580.tif 000009
【図８】
2015130580.tif 000010
【図９】
2015130580.tif 000011