(57)【要約】【課題】サイドチャネル攻撃に対する耐性を高められる暗号化装置を提供すること。【解決手段】暗号化装置１００は、ビット列を変換するラウンド処理を所定の回数だけ行うことによりビット列を暗号化する。暗号化装置は、暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリ１０１と、第２のビット列を記憶する第２のメモリ１０２と、第１のメモリに記憶されている第１のビット列に対してラウンド処理を行うことにより第１のビット列を変換し、第１のビット列を第１のメモリに記憶させる第１のビット列処理部１０３と、第１のビット列のビットの数から、第１のビット列を構成するビットのうちの、変換の前後間で反転したビットの数を減じた数だけ、ビットを反転させるように第２のメモリに記憶されている第２のビット列を変換し、第２のビット列を第２のメモリに記憶させる第２のビット列処理部１０４と、を備える。【選択図】図４
2013167729.tif 000002
【特許請求の範囲】
【請求項１】
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置であって、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える暗号化装置。
【請求項２】
請求項１に記載の暗号化装置であって、
前記第２のビット列処理手段は、前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化装置。
【請求項３】
請求項２に記載の暗号化装置であって、
前記第２のビット列処理手段は、前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化装置。
【請求項４】
請求項３に記載の暗号化装置であって、
前記第２のビット列処理手段は、
前記第１のビット列に対して前記ラウンド処理が行われるために要する時間だけ、前記変換の前の第１のビット列を遅延させる遅延手段を含み、且つ、
前記遅延された、前記変換の前の第１のビット列と、当該変換の後の第１のビット列と、の排他的論理和の否定を算出するように構成された暗号化装置。
【請求項５】
請求項１乃至請求項４のいずれかに記載の暗号化装置であって、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理が行われる時点と略同じ時点にて、前記第２のメモリに記憶されている第２のビット列に対して当該ラウンド処理を行うダミー処理手段を備える暗号化装置。
【請求項６】
請求項１乃至請求項５のいずれかに記載の暗号化装置であって、
前記第２のビット列は、前記第１のビット列を構成するビットの数と同数のビットにより構成される暗号化装置。
【請求項７】
請求項１乃至請求項６のいずれかに記載の暗号化装置であって、
前記第１のビット列処理手段は、前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、且つ、当該変換の後の第１のビット列を当該第１のメモリに記憶させる単位処理を繰り返し行うように構成された暗号化装置。
【請求項８】
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路であって、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える暗号化回路。
【請求項９】
請求項８に記載の暗号化回路であって、
前記第２のビット列処理手段は、前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化回路。
【請求項１０】
請求項９に記載の暗号化回路であって、
前記第２のビット列処理手段は、前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化回路。
【請求項１１】
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される暗号化方法であって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備え、
前記暗号化方法は、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、暗号化方法。
【請求項１２】
請求項１１に記載の暗号化方法であって、
前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化方法。
【請求項１３】
請求項１２に記載の暗号化方法であって、
前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化方法。
【請求項１４】
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行される暗号化プログラムであって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備え、
前記暗号化プログラムは、前記暗号化装置に、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、処理を実現させるための暗号化プログラム。
【請求項１５】
請求項１４に記載の暗号化プログラムであって、
前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化プログラム。
【請求項１６】
請求項１５に記載の暗号化プログラムであって、
前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のビットにより構成されるビット列を暗号化する暗号化装置に関する。
【背景技術】
【０００２】
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化方式が知られている。例えば、このような暗号化方式として、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式、及び、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式等が知られている。
【０００３】
この暗号化方式を用いる暗号化装置は、暗号化する対象となるビット列を記憶するメモリを備える。暗号化装置は、メモリに記憶されているビット列に対してラウンド処理を行うことにより当該ビット列を変換し、且つ、当該変換の後のビット列を当該メモリに記憶させる単位処理を繰り返し行うことにより、ビット列を暗号化する。
【０００４】
ところで、メモリにおいてビットが変化（反転）する際、暗号化装置が消費する電力の量（消費電力量）が増加する。この消費電力量の変動に基づいて、暗号化装置が用いている鍵を特定する電力差分解析（ＤＰＡ；Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｙｓ）が知られている（例えば、非特許文献１）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】P. Kocher、J. Jaffe、B. Jun、「Differential Power Analysis」、Proceedings of CRYPTO '99、Springer-Verlag、1999年、pp.388-397
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このため、上記暗号化装置においては、電力差分解析等のサイドチャネル攻撃によって、鍵が特定される虞があった。即ち、上記暗号化装置においては、サイドチャネル攻撃に対する耐性が比較的低いという問題があった。
【０００７】
このため、本発明の目的は、上述した課題である「サイドチャネル攻撃に対する耐性が比較的低いこと」を解決することが可能な暗号化装置を提供することにある。
【課題を解決するための手段】
【０００８】
かかる目的を達成するため本発明の一形態である暗号化装置は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する装置である。
【０００９】
更に、この暗号化装置は、
上記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
上記第１のメモリに記憶されている第１のビット列に対して上記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
上記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える。
【００１０】
また、本発明の他の形態である暗号化回路は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路である。
【００１１】
更に、この暗号化回路は、
上記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
上記第１のメモリに記憶されている第１のビット列に対して上記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
上記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える。
【００１２】
また、本発明の他の形態である暗号化方法は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される方法である。
【００１３】
更に、上記暗号化装置は、
上記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備える。
加えて、上記暗号化方法は、
上記第１のメモリに記憶されている第１のビット列に対して上記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
上記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、方法である。
【００１４】
また、本発明の他の形態である暗号化プログラムは、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行されるプログラムである。
【００１５】
更に、上記暗号化装置は、
上記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備える。
加えて、上記暗号化プログラムは、上記暗号化装置に、
上記第１のメモリに記憶されている第１のビット列に対して上記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
上記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、処理を実現させるためのプログラムである。
【発明の効果】
【００１６】
本発明は、以上のように構成されることにより、サイドチャネル攻撃に対する耐性を高めることができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１実施形態に係る暗号化装置の構成を表すブロック図である。
【図２】本発明の第１実施形態に係る変換処理部の機能を表すブロック図である。
【図３】本発明の第１実施形態に係る暗号化装置の作動に伴うビット列の変化を概念的に示した説明図である。
【図４】本発明の第２実施形態に係る暗号化装置の構成を表すブロック図である。
【発明を実施するための形態】
【００１８】
以下、本発明に係る、暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム、の各実施形態について図１〜図４を参照しながら説明する。
【００１９】
＜第１実施形態＞
（構成）
図１に示したように、第１実施形態に係る暗号化装置１は、平文としての第１のビット列が入力される。第１のビット列は、複数（例えば、６４個）のビットにより構成される。各ビットは、「０」又は「１」を表す。
【００２０】
暗号化装置１は、入力された第１のビット列に対して、当該第１のビット列を変換するラウンド処理を予め設定された回数Ｒ（ラウンド数（例えば、１３回等））だけ行うことにより当該第１のビット列を暗号化する。暗号化装置１は、暗号化された第１のビット列を暗号文として出力する。即ち、第１のビット列は、暗号化する対象となるビット列である。
【００２１】
本例では、暗号化装置１は、ブロック暗号方式に従って第１のビット列を暗号化する。ここで、ブロック暗号方式は、所定のサイズを有するデータであるブロック（第１のビット列）毎に暗号化を行う方式である。例えば、ブロック暗号方式は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式、又は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）方式等である。
【００２２】
より具体的に述べると、暗号化装置１は、第１のメモリ１０と、第２のメモリ２０と、第１のビット列処理部（第１のビット列処理手段）３０と、第２のビット列処理部（第２のビット列処理手段）４０と、鍵生成部５０と、を備える。
【００２３】
第１のメモリ１０は、第１のビット列を構成するビットの数（単位ビット数）のビットを記憶可能に構成される。例えば、第１のメモリ１０は、レジスタ、フリップフロップ、又は、ダイナミックＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路等のダイナミック回路等である。
【００２４】
第２のメモリ２０は、第２のビット列を構成するビットの数のビットを記憶可能に構成される。例えば、第２のメモリ２０は、レジスタ、フリップフロップ、又は、ダイナミックＣＭＯＳ回路等のダイナミック回路等である。
【００２５】
本例では、第１のビット列を構成するビットの数と、第２のビット列を構成するビットの数と、は等しい。即ち、第２のビット列は、第１のビット列を構成するビットの数と同数のビットにより構成される。
【００２６】
第１のビット列処理部３０は、暗号化装置１に入力された平文としての第１のビット列を第１のメモリ１０に記憶させる。
【００２７】
第１のビット列処理部３０は、第１のラウンド処理部３１を備える。
第１のラウンド処理部３１は、第１の単位処理を行う。第１の単位処理は、第１の変換処理と、第１の更新処理と、を含む。
【００２８】
第１の変換処理は、第１のメモリ１０に記憶されている第１のビット列に対して、後述するように鍵生成部５０により出力された鍵に基づいてラウンド処理を行うことにより当該第１のビット列を変換する処理である。ラウンド処理は、予め定められた方式に従って、鍵に基づいてビット列を変換する処理である。
【００２９】
第１の更新処理は、当該第１の変換処理による変換の後の第１のビット列を第１のメモリ１０に記憶させる処理である。これにより、第１のメモリ１０が記憶している第１のビット列は、更新される。
【００３０】
第１のビット列処理部３０は、第１のラウンド処理部３１に、第１の単位処理をラウンド数Ｒだけ繰り返し実行させる。第１のビット列処理部３０は、第１のラウンド処理部３１が、第１の単位処理をラウンド数Ｒだけ繰り返し実行した後、第１の変換処理による変換の後の第１のビット列を暗号文として出力する。
【００３１】
第２のビット列処理部４０は、第１のビット列処理部３０と同期して作動するように構成される。第２のビット列処理部４０は、第１のビット列処理部３０が第１のメモリ１０に平文としての第１のビット列を記憶させる時点と同時に、第２のメモリ２０に第２のビット列を記憶させる。
【００３２】
なお、第２のビット列処理部４０は、第１のビット列処理部３０が第１のメモリ１０に平文としての第１のビット列を記憶させる時点と異なる時点であって、第１のラウンド処理部３１が最初の第１の単位処理を実行する時点までの時点にて、第２のメモリ２０に第２のビット列を記憶させるように構成されていてもよい。
【００３３】
本例では、第２のビット列処理部４０は、平文としての第１のビット列を反転させたビット列を第２のビット列として用いる。なお、第２のビット列処理部４０は、任意のビット列を第２のビット列として用いてもよい。
【００３４】
第２のビット列処理部４０は、第２のラウンド処理部（ダミー処理手段）４１と、遅延処理部（遅延手段）４２と、変換処理部４３と、を備える。
【００３５】
第２のラウンド処理部４１は、第２の変換処理を行う。第２の変換処理は、第２のメモリ２０に記憶されている第２のビット列に対して、後述するように鍵生成部５０により出力された鍵に基づいてラウンド処理を行うことにより当該第２のビット列を変換する処理である。本例では、第２のラウンド処理部４１が実行するラウンド処理は、第１のラウンド処理部３１が実行するラウンド処理と同じ処理である。
【００３６】
第２のビット列処理部４０は、第１のラウンド処理部３１が第１の変換処理を実行する毎に、第１のラウンド処理部３１が第１の変換処理の実行を開始する時点と同時に、第２のラウンド処理部４１に第２の変換処理の実行を開始させる。
【００３７】
即ち、第２のラウンド処理部４１は、第１のメモリ１０に記憶されている第１のビット列に対してラウンド処理が行われる時点と略同じ時点にて、第２のメモリ２０に記憶されている第２のビット列に対して当該ラウンド処理を行う、と言うことができる。
【００３８】
遅延処理部４２は、遅延処理を行う。遅延処理は、第１のメモリ１０に記憶されている第１のビット列を取得し、取得された第１のビット列を、予め設定された遅延時間だけ遅延させた後に出力する処理である。遅延時間は、第１のラウンド処理部３１が第１のビット列に対して第１の変換処理を行うために要する時間に設定される。
【００３９】
第２のビット列処理部４０は、第１のラウンド処理部３１が第１の変換処理を実行する毎に、第１のラウンド処理部３１が第１の変換処理の実行を開始する時点と同時に、遅延処理部４２に遅延処理の実行を開始させる。
【００４０】
変換処理部４３は、第２の単位処理を行う。第２の単位処理は、第３の変換処理と、第２の更新処理と、を含む。
【００４１】
第３の変換処理は、単位ビット数から、第１のビット列を構成するビットのうちの、第１の変換処理による変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように第２のメモリ２０に記憶されている第２のビット列を変換する処理である。第３の変換処理については後述する。
【００４２】
第２の更新処理は、当該第３の変換処理による変換の後の第２のビット列を第２のメモリ２０に記憶させる処理である。これにより、第２のメモリ２０が記憶している第２のビット列は、更新される。
【００４３】
第２のビット列処理部４０は、第１のラウンド処理部３１が第１の変換処理を実行する毎に、第１のラウンド処理部３１が第１の変換処理の実行を完了した時点と同時に、変換処理部４３に第２の単位処理の実行を開始させる。
【００４４】
本例では、第３の変換処理は、極めて短い時間内に実行が完了する処理である。従って、第２のビット列処理部４０は、第１の変換処理による変換の後の第１のビット列が第１のメモリ１０に記憶される時点と同時に、第３の変換処理による変換の後の第２のビット列を第２のメモリ２０に記憶させる、と言うことができる。
【００４５】
鍵生成部５０は、第１のラウンド処理部３１及び第２のラウンド処理部４１がラウンド処理を実行する毎に異なる鍵を生成し、生成された鍵を第１のラウンド処理部３１及び第２のラウンド処理部４１のそれぞれへ出力する。
【００４６】
ここで、第３の変換処理について、より詳細に説明する。
第３の変換処理は、図２に示したように、第２のメモリ２０に記憶されている第２のビット列を、ビット毎に、第１の変換処理による変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換する処理である。
【００４７】
本例では、第３の変換処理は、第１の変換処理による変換の前の第１のビット列として、遅延処理部４２により出力された第１のビット列を用いる。即ち、第３の変換処理は、遅延された、変換の前の第１のビット列と、当該変換の後の第１のビット列と、の排他的論理和の否定を算出する処理を含む、と言うことができる。
【００４８】
また、第３の変換処理は、第１の変換処理による変換の後の第１のビット列として、第１のラウンド処理部３１から当該第１のビット列を取得する。
【００４９】
また、第３の変換処理の各ビットに対する処理は、数式１に示したようにも表される。
【数１】
2013167729.tif 000003
【００５０】
ここで、Ａｉは、ｉ回目に実行された第１の変換処理による変換の後（即ち、ｉ＋１回目に実行された第１の変換処理による変換の前）の第１のビット列を構成するビットである。なお、ｉは、０以上であり且つラウンド数Ｒよりも小さい整数である。また、Ａｉ＋１は、ｉ＋１回目に実行された第１の変換処理による変換の後の第１のビット列を構成するビットである。なお、ＡｉとＡｉ＋１とは、第１のビット列において同じ位置のビットである。
【００５１】
同様に、Ｂｉは、ｉ回目に実行された第３の変換処理による変換の後（即ち、ｉ＋１回目に実行された第３の変換処理による変換の前）の第２のビット列を構成するビットである。また、Ｂｉ＋１は、ｉ＋１回目に実行された第３の変換処理による変換の後の第２のビット列を構成するビットである。なお、ＢｉとＢｉ＋１とは、第２のビット列において同じ位置のビットである。
【００５２】
更に、ＡｉとＢｉとは、第１のビット列と第２のビット列との間で１対１に対応付けられた位置のビットである。本例では、ビット列における先頭からのビット数が同じ位置同士が対応付けられている。
【００５３】
（作動）
次に、上述した暗号化装置１の作動について説明する。
先ず、暗号化装置１は、入力された、平文としての第１のビット列を受け付ける。次いで、第１のビット列処理部３０は、受け付けられた第１のビット列を第１のメモリ１０に記憶させる。同時に、第２のビット列処理部４０は、第１のビット列を反転させた第２のビット列を第２のメモリ２０に記憶させる。
【００５４】
次に、１回目の単位処理が実行される。
具体的には、鍵生成部５０は、１回目のラウンド処理に対する鍵を生成し、生成された鍵を第１のラウンド処理部３１及び第２のラウンド処理部４１のそれぞれへ出力する。同時に、第１のラウンド処理部３１は、１回目の第１の変換処理の実行を開始する。更に、同時に、第２のラウンド処理部４１は、１回目の第２の変換処理の実行を開始する。更に、同時に、遅延処理部４２は、１回目の遅延処理の実行を開始する。
【００５５】
そして、第１のラウンド処理部３１が１回目の第１の変換処理の実行を完了した時点にて、第２のラウンド処理部４１も１回目の第２の変換処理の実行を完了する。更に、同時に、遅延処理部４２も、１回目の遅延処理の実行を完了する。
【００５６】
更に、この時点にて、変換処理部４３は、１回目の第３の変換処理を実行し、続いて、１回目の第２の更新処理の実行を開始する。同時に、第１のラウンド処理部３１は、１回目の第１の更新処理の実行を開始する。これにより、第１のメモリ１０が記憶している第１のビット列が更新される。同時に、第２のメモリ２０が記憶している第２のビット列が更新される。
このようにして、１回目の単位処理の実行が完了する。
【００５７】
同様に、２回目以降の単位処理も実行される。
その後、Ｒ（ラウンド数）回目の単位処理の実行が完了すると、第１のラウンド処理部３１は、Ｒ回目の第１の変換処理による変換の後の第１のビット列を暗号文として出力する。
【００５８】
次に、上述した暗号化装置１の作動における、第１のメモリ１０及び第２のメモリ２０に記憶されているビット列の時間に対する変化を具体的に説明する。ここでは、説明を簡単にするために、単位ビット数が４である場合を想定する。また、１回目の単位処理、及び、２回目の単位処理を例として説明する。
【００５９】
いま、第１のビット列として、図３に示したように、「００００」が入力された場合を想定する。この場合、１回目の単位処理の実行前において、第１のメモリ１０は、「００００」を記憶し、且つ、第２のメモリ２０は、「１１１１」を記憶する。
【００６０】
ここで、１回目の単位処理の実行後において、第１のビット列が「１０１０」に変換された場合を想定する。この場合、１回目の単位処理の実行後において、第１のメモリ１０は、「１０１０」を記憶し、且つ、第２のメモリ２０は、「１０１０」を記憶する。
【００６１】
即ち、第１のビット列のうちの、１回目の単位処理の実行前と実行後との間で反転したビットの数は、２である。同様に、第２のビット列のうちの、１回目の単位処理の実行前と実行後との間で反転したビットの数も、２である。
【００６２】
即ち、第１のメモリ１０及び第２のメモリ２０に記憶されているビット列（即ち、第１のビット列及び第２のビット列）を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数は、４（即ち、単位ビット数）である。
【００６３】
更に、２回目の単位処理の実行後において、第１のビット列が「１１０１」に変換された場合を想定する。この場合、２回目の単位処理の実行後において、第１のメモリ１０は、「１１０１」を記憶し、且つ、第２のメモリ２０は、「００１０」を記憶する。
【００６４】
即ち、第１のビット列のうちの、２回目の単位処理の実行前と実行後との間で反転したビットの数は、３である。一方、第２のビット列のうちの、２回目の単位処理の実行前と実行後との間で反転したビットの数は、１である。
【００６５】
即ち、第１のメモリ１０及び第２のメモリ２０に記憶されているビット列（即ち、第１のビット列及び第２のビット列）を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数は、４（即ち、単位ビット数）である。
【００６６】
以上、説明したように、本発明の第１実施形態に係る暗号化装置１によれば、第１のメモリ１０及び第２のメモリ２０に記憶されているビット列（即ち、第１のビット列及び第２のビット列）を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値（即ち、単位ビット数）に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置１が消費する電力の量（消費電力量）の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
【００６７】
更に、第１実施形態に係る暗号化装置１は、変換の後の第１のビット列が第１のメモリ１０に記憶される時点と略同じ時点にて、変換の後の第２のビット列を第２のメモリ２０に記憶させるように構成される。
【００６８】
これによれば、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
【００６９】
加えて、第１実施形態に係る暗号化装置１は、第１のビット列に対してラウンド処理が行われるために要する時間だけ、変換の前の第１のビット列を遅延させ、遅延された、変換の前の第１のビット列と、当該変換の後の第１のビット列と、の排他的論理和の否定を算出するように構成される。
【００７０】
これによれば、変換の前の第１のビット列と変換の後の第１のビット列との排他的論理和の否定を適切に算出できる。
【００７１】
更に、第１実施形態に係る暗号化装置１において、第２のビット列は、第１のビット列を構成するビットの数と同数のビットにより構成される。
【００７２】
これによれば、第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を減じた数よりも、第２のビット列を構成するビットの数が少なくなることを回避することができる。従って、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
【００７３】
なお、第１実施形態の変形例に係る暗号化装置１は、第２のラウンド処理部４１を備えないように構成されていてもよい。
また、第１実施形態の変形例に係る暗号化装置１は、遅延処理部４２を備えないように構成されていてもよい。この場合、暗号化装置１は、第１の変換処理の実行が完了した時点にて、変換処理部４３が第１のメモリ１０に記憶されている第１のビット列を取得するように構成されることが好適である。
【００７４】
また、第１実施形態の変形例に係る暗号化装置１において、第２のビット列を構成するビットの数は、第１のビット列を構成するビットの数よりも少なくてもよい。
【００７５】
＜第２実施形態＞
次に、本発明の第２実施形態に係る暗号化装置について図４を参照しながら説明する。
第２実施形態に係る暗号化装置１００は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する装置である。
【００７６】
更に、この暗号化装置１００は、
上記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリ１０１と、
複数のビットにより構成される第２のビット列を記憶する第２のメモリ１０２と、
上記第１のメモリ１０１に記憶されている第１のビット列に対して上記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリ１０１に記憶させる第１のビット列処理部（第１のビット列処理手段）１０３と、
上記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第２のメモリ１０２に記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリ１０２に記憶させる第２のビット列処理部（第２のビット列処理手段）１０４と、
を備える。
【００７７】
これによれば、第１のメモリ１０１及び第２のメモリ１０２に記憶されているビット列（即ち、第１のビット列及び第２のビット列）を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値（即ち、第１のビット列を構成するビットの数）に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置１００が消費する電力の量（消費電力量）の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
【００７８】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【００７９】
なお、上記各実施形態において暗号化装置の各機能は、回路等のハードウェアにより実現されていた。ところで、暗号化装置は、処理装置と、プログラム（ソフトウェア）を記憶する記憶装置と、を備えるとともに、処理装置がそのプログラムを実行することにより、各機能を実現するように構成されていてもよい。この場合、プログラムは、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００８０】
なお、本発明は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）チップ等の電子回路にも適用され得る。本発明が適用された電子回路（暗号化回路）は、上述した暗号化装置と同様の構成を有する。暗号化回路は、例えば、情報処理装置、電子機器、通信装置、又は、カード（キャッシュ・カード、又は、クレジット・カード等）等に搭載されていてもよい。
【００８１】
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
【００８２】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
【００８３】
（付記１）
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置であって、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える暗号化装置。
【００８４】
これによれば、第１のメモリ及び第２のメモリに記憶されているビット列（即ち、第１のビット列及び第２のビット列）を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値（即ち、第１のビット列を構成するビットの数）に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置が消費する電力の量（消費電力量）の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
【００８５】
（付記２）
付記１に記載の暗号化装置であって、
前記第２のビット列処理手段は、前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化装置。
【００８６】
これによれば、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
【００８７】
（付記３）
付記２に記載の暗号化装置であって、
前記第２のビット列処理手段は、前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化装置。
【００８８】
（付記４）
付記３に記載の暗号化装置であって、
前記第２のビット列処理手段は、
前記第１のビット列に対して前記ラウンド処理が行われるために要する時間だけ、前記変換の前の第１のビット列を遅延させる遅延手段を含み、且つ、
前記遅延された、前記変換の前の第１のビット列と、当該変換の後の第１のビット列と、の排他的論理和の否定を算出するように構成された暗号化装置。
【００８９】
ところで、ラウンド処理を行うためには、所定の遅延時間を要する。従って、上記のように暗号化装置を構成することにより、変換の前の第１のビット列と変換の後の第１のビット列との排他的論理和の否定を適切に算出できる。
【００９０】
（付記５）
付記１乃至付記４のいずれかに記載の暗号化装置であって、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理が行われる時点と略同じ時点にて、前記第２のメモリに記憶されている第２のビット列に対して当該ラウンド処理を行うダミー処理手段を備える暗号化装置。
【００９１】
（付記６）
付記１乃至付記５のいずれかに記載の暗号化装置であって、
前記第２のビット列は、前記第１のビット列を構成するビットの数と同数のビットにより構成される暗号化装置。
【００９２】
これによれば、第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を減じた数よりも、第２のビット列を構成するビットの数が少なくなることを回避することができる。従って、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
【００９３】
（付記７）
付記１乃至付記６のいずれかに記載の暗号化装置であって、
前記第１のビット列処理手段は、前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、且つ、当該変換の後の第１のビット列を当該第１のメモリに記憶させる単位処理を繰り返し行うように構成された暗号化装置。
【００９４】
（付記８）
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路であって、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させる第１のビット列処理手段と、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる第２のビット列処理手段と、
を備える暗号化回路。
【００９５】
（付記９）
付記８に記載の暗号化回路であって、
前記第２のビット列処理手段は、前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化回路。
【００９６】
（付記１０）
付記９に記載の暗号化回路であって、
前記第２のビット列処理手段は、前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化回路。
【００９７】
（付記１１）
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される暗号化方法であって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備え、
前記暗号化方法は、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、暗号化方法。
【００９８】
（付記１２）
付記１１に記載の暗号化方法であって、
前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化方法。
【００９９】
（付記１３）
付記１２に記載の暗号化方法であって、
前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化方法。
【０１００】
（付記１４）
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行される暗号化プログラムであって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第１のビット列を記憶する第１のメモリと、
複数のビットにより構成される第２のビット列を記憶する第２のメモリと、
を備え、
前記暗号化プログラムは、前記暗号化装置に、
前記第１のメモリに記憶されている第１のビット列に対して前記ラウンド処理を行うことにより当該第１のビット列を変換し、当該変換の後の第１のビット列を当該第１のメモリに記憶させ、
前記第１のビット列を構成するビットの数から、当該第１のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第２のメモリに記憶されている第２のビット列を変換し、当該変換の後の第２のビット列を当該第２のメモリに記憶させる、処理を実現させるための暗号化プログラム。
【０１０１】
（付記１５）
付記１４に記載の暗号化プログラムであって、
前記変換の後の第１のビット列が前記第１のメモリに記憶される時点と略同じ時点にて、前記変換の後の第２のビット列を前記第２のメモリに記憶させるように構成された暗号化プログラム。
【０１０２】
（付記１６）
付記１５に記載の暗号化プログラムであって、
前記第２のメモリに記憶されている第２のビット列を、前記変換の前の第１のビット列と当該変換の後の第１のビット列との排他的論理和の否定と、当該第２のビット列と、の排他的論理和に変換するように構成された暗号化プログラム。
【産業上の利用可能性】
【０１０３】
本発明は、複数のビットにより構成されるビット列を暗号化する暗号化装置等に適用可能である。
【符号の説明】
【０１０４】
１      暗号化装置
１０    第１のメモリ
２０    第２のメモリ
３０    第１のビット列処理部
３１    第１のラウンド処理部
４０    第２のビット列処理部
４１    第２のラウンド処理部
４２    遅延処理部
４３    変換処理部
５０    鍵生成部
１００  暗号化装置
１０１  第１のメモリ
１０２  第２のメモリ
１０３  第１のビット列処理部
１０４  第２のビット列処理部
【図１】
2013167729.tif 000004
【図２】
2013167729.tif 000005
【図３】
2013167729.tif 000006
【図４】
2013167729.tif 000007