JP2013167729A - 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム - Google Patents

暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム Download PDF

Info

Publication number
JP2013167729A
JP2013167729A JP2012030470A JP2012030470A JP2013167729A JP 2013167729 A JP2013167729 A JP 2013167729A JP 2012030470 A JP2012030470 A JP 2012030470A JP 2012030470 A JP2012030470 A JP 2012030470A JP 2013167729 A JP2013167729 A JP 2013167729A
Authority
JP
Japan
Prior art keywords
bit string
memory
conversion
stored
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012030470A
Other languages
English (en)
Inventor
Manabu Kurohashi
学 黒橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Solution Innovators Ltd
Original Assignee
NEC Software Hokuriku Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Software Hokuriku Ltd filed Critical NEC Software Hokuriku Ltd
Priority to JP2012030470A priority Critical patent/JP2013167729A/ja
Publication of JP2013167729A publication Critical patent/JP2013167729A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】サイドチャネル攻撃に対する耐性を高められる暗号化装置を提供すること。
【解決手段】暗号化装置100は、ビット列を変換するラウンド処理を所定の回数だけ行うことによりビット列を暗号化する。暗号化装置は、暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリ101と、第2のビット列を記憶する第2のメモリ102と、第1のメモリに記憶されている第1のビット列に対してラウンド処理を行うことにより第1のビット列を変換し、第1のビット列を第1のメモリに記憶させる第1のビット列処理部103と、第1のビット列のビットの数から、第1のビット列を構成するビットのうちの、変換の前後間で反転したビットの数を減じた数だけ、ビットを反転させるように第2のメモリに記憶されている第2のビット列を変換し、第2のビット列を第2のメモリに記憶させる第2のビット列処理部104と、を備える。
【選択図】図4

Description

本発明は、複数のビットにより構成されるビット列を暗号化する暗号化装置に関する。
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化方式が知られている。例えば、このような暗号化方式として、DES(Data Encryption Standard)方式、及び、AES(Advanced Encryption Standard)方式等が知られている。
この暗号化方式を用いる暗号化装置は、暗号化する対象となるビット列を記憶するメモリを備える。暗号化装置は、メモリに記憶されているビット列に対してラウンド処理を行うことにより当該ビット列を変換し、且つ、当該変換の後のビット列を当該メモリに記憶させる単位処理を繰り返し行うことにより、ビット列を暗号化する。
ところで、メモリにおいてビットが変化(反転)する際、暗号化装置が消費する電力の量(消費電力量)が増加する。この消費電力量の変動に基づいて、暗号化装置が用いている鍵を特定する電力差分解析(DPA;Differential Power Analysys)が知られている(例えば、非特許文献1)。
P. Kocher、J. Jaffe、B. Jun、「Differential Power Analysis」、Proceedings of CRYPTO '99、Springer-Verlag、1999年、pp.388-397
このため、上記暗号化装置においては、電力差分解析等のサイドチャネル攻撃によって、鍵が特定される虞があった。即ち、上記暗号化装置においては、サイドチャネル攻撃に対する耐性が比較的低いという問題があった。
このため、本発明の目的は、上述した課題である「サイドチャネル攻撃に対する耐性が比較的低いこと」を解決することが可能な暗号化装置を提供することにある。
かかる目的を達成するため本発明の一形態である暗号化装置は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する装置である。
更に、この暗号化装置は、
上記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
上記第1のメモリに記憶されている第1のビット列に対して上記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
上記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
を備える。
また、本発明の他の形態である暗号化回路は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路である。
更に、この暗号化回路は、
上記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
上記第1のメモリに記憶されている第1のビット列に対して上記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
上記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
を備える。
また、本発明の他の形態である暗号化方法は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される方法である。
更に、上記暗号化装置は、
上記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
を備える。
加えて、上記暗号化方法は、
上記第1のメモリに記憶されている第1のビット列に対して上記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
上記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、方法である。
また、本発明の他の形態である暗号化プログラムは、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行されるプログラムである。
更に、上記暗号化装置は、
上記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
を備える。
加えて、上記暗号化プログラムは、上記暗号化装置に、
上記第1のメモリに記憶されている第1のビット列に対して上記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
上記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、処理を実現させるためのプログラムである。
本発明は、以上のように構成されることにより、サイドチャネル攻撃に対する耐性を高めることができる。
本発明の第1実施形態に係る暗号化装置の構成を表すブロック図である。 本発明の第1実施形態に係る変換処理部の機能を表すブロック図である。 本発明の第1実施形態に係る暗号化装置の作動に伴うビット列の変化を概念的に示した説明図である。 本発明の第2実施形態に係る暗号化装置の構成を表すブロック図である。
以下、本発明に係る、暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム、の各実施形態について図1〜図4を参照しながら説明する。
<第1実施形態>
(構成)
図1に示したように、第1実施形態に係る暗号化装置1は、平文としての第1のビット列が入力される。第1のビット列は、複数(例えば、64個)のビットにより構成される。各ビットは、「0」又は「1」を表す。
暗号化装置1は、入力された第1のビット列に対して、当該第1のビット列を変換するラウンド処理を予め設定された回数R(ラウンド数(例えば、13回等))だけ行うことにより当該第1のビット列を暗号化する。暗号化装置1は、暗号化された第1のビット列を暗号文として出力する。即ち、第1のビット列は、暗号化する対象となるビット列である。
本例では、暗号化装置1は、ブロック暗号方式に従って第1のビット列を暗号化する。ここで、ブロック暗号方式は、所定のサイズを有するデータであるブロック(第1のビット列)毎に暗号化を行う方式である。例えば、ブロック暗号方式は、DES(Data Encryption Standard)方式、又は、AES(Advanced Encryption Standard)方式等である。
より具体的に述べると、暗号化装置1は、第1のメモリ10と、第2のメモリ20と、第1のビット列処理部(第1のビット列処理手段)30と、第2のビット列処理部(第2のビット列処理手段)40と、鍵生成部50と、を備える。
第1のメモリ10は、第1のビット列を構成するビットの数(単位ビット数)のビットを記憶可能に構成される。例えば、第1のメモリ10は、レジスタ、フリップフロップ、又は、ダイナミックCMOS(Complementary Metal Oxide Semiconductor)回路等のダイナミック回路等である。
第2のメモリ20は、第2のビット列を構成するビットの数のビットを記憶可能に構成される。例えば、第2のメモリ20は、レジスタ、フリップフロップ、又は、ダイナミックCMOS回路等のダイナミック回路等である。
本例では、第1のビット列を構成するビットの数と、第2のビット列を構成するビットの数と、は等しい。即ち、第2のビット列は、第1のビット列を構成するビットの数と同数のビットにより構成される。
第1のビット列処理部30は、暗号化装置1に入力された平文としての第1のビット列を第1のメモリ10に記憶させる。
第1のビット列処理部30は、第1のラウンド処理部31を備える。
第1のラウンド処理部31は、第1の単位処理を行う。第1の単位処理は、第1の変換処理と、第1の更新処理と、を含む。
第1の変換処理は、第1のメモリ10に記憶されている第1のビット列に対して、後述するように鍵生成部50により出力された鍵に基づいてラウンド処理を行うことにより当該第1のビット列を変換する処理である。ラウンド処理は、予め定められた方式に従って、鍵に基づいてビット列を変換する処理である。
第1の更新処理は、当該第1の変換処理による変換の後の第1のビット列を第1のメモリ10に記憶させる処理である。これにより、第1のメモリ10が記憶している第1のビット列は、更新される。
第1のビット列処理部30は、第1のラウンド処理部31に、第1の単位処理をラウンド数Rだけ繰り返し実行させる。第1のビット列処理部30は、第1のラウンド処理部31が、第1の単位処理をラウンド数Rだけ繰り返し実行した後、第1の変換処理による変換の後の第1のビット列を暗号文として出力する。
第2のビット列処理部40は、第1のビット列処理部30と同期して作動するように構成される。第2のビット列処理部40は、第1のビット列処理部30が第1のメモリ10に平文としての第1のビット列を記憶させる時点と同時に、第2のメモリ20に第2のビット列を記憶させる。
なお、第2のビット列処理部40は、第1のビット列処理部30が第1のメモリ10に平文としての第1のビット列を記憶させる時点と異なる時点であって、第1のラウンド処理部31が最初の第1の単位処理を実行する時点までの時点にて、第2のメモリ20に第2のビット列を記憶させるように構成されていてもよい。
本例では、第2のビット列処理部40は、平文としての第1のビット列を反転させたビット列を第2のビット列として用いる。なお、第2のビット列処理部40は、任意のビット列を第2のビット列として用いてもよい。
第2のビット列処理部40は、第2のラウンド処理部(ダミー処理手段)41と、遅延処理部(遅延手段)42と、変換処理部43と、を備える。
第2のラウンド処理部41は、第2の変換処理を行う。第2の変換処理は、第2のメモリ20に記憶されている第2のビット列に対して、後述するように鍵生成部50により出力された鍵に基づいてラウンド処理を行うことにより当該第2のビット列を変換する処理である。本例では、第2のラウンド処理部41が実行するラウンド処理は、第1のラウンド処理部31が実行するラウンド処理と同じ処理である。
第2のビット列処理部40は、第1のラウンド処理部31が第1の変換処理を実行する毎に、第1のラウンド処理部31が第1の変換処理の実行を開始する時点と同時に、第2のラウンド処理部41に第2の変換処理の実行を開始させる。
即ち、第2のラウンド処理部41は、第1のメモリ10に記憶されている第1のビット列に対してラウンド処理が行われる時点と略同じ時点にて、第2のメモリ20に記憶されている第2のビット列に対して当該ラウンド処理を行う、と言うことができる。
遅延処理部42は、遅延処理を行う。遅延処理は、第1のメモリ10に記憶されている第1のビット列を取得し、取得された第1のビット列を、予め設定された遅延時間だけ遅延させた後に出力する処理である。遅延時間は、第1のラウンド処理部31が第1のビット列に対して第1の変換処理を行うために要する時間に設定される。
第2のビット列処理部40は、第1のラウンド処理部31が第1の変換処理を実行する毎に、第1のラウンド処理部31が第1の変換処理の実行を開始する時点と同時に、遅延処理部42に遅延処理の実行を開始させる。
変換処理部43は、第2の単位処理を行う。第2の単位処理は、第3の変換処理と、第2の更新処理と、を含む。
第3の変換処理は、単位ビット数から、第1のビット列を構成するビットのうちの、第1の変換処理による変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように第2のメモリ20に記憶されている第2のビット列を変換する処理である。第3の変換処理については後述する。
第2の更新処理は、当該第3の変換処理による変換の後の第2のビット列を第2のメモリ20に記憶させる処理である。これにより、第2のメモリ20が記憶している第2のビット列は、更新される。
第2のビット列処理部40は、第1のラウンド処理部31が第1の変換処理を実行する毎に、第1のラウンド処理部31が第1の変換処理の実行を完了した時点と同時に、変換処理部43に第2の単位処理の実行を開始させる。
本例では、第3の変換処理は、極めて短い時間内に実行が完了する処理である。従って、第2のビット列処理部40は、第1の変換処理による変換の後の第1のビット列が第1のメモリ10に記憶される時点と同時に、第3の変換処理による変換の後の第2のビット列を第2のメモリ20に記憶させる、と言うことができる。
鍵生成部50は、第1のラウンド処理部31及び第2のラウンド処理部41がラウンド処理を実行する毎に異なる鍵を生成し、生成された鍵を第1のラウンド処理部31及び第2のラウンド処理部41のそれぞれへ出力する。
ここで、第3の変換処理について、より詳細に説明する。
第3の変換処理は、図2に示したように、第2のメモリ20に記憶されている第2のビット列を、ビット毎に、第1の変換処理による変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換する処理である。
本例では、第3の変換処理は、第1の変換処理による変換の前の第1のビット列として、遅延処理部42により出力された第1のビット列を用いる。即ち、第3の変換処理は、遅延された、変換の前の第1のビット列と、当該変換の後の第1のビット列と、の排他的論理和の否定を算出する処理を含む、と言うことができる。
また、第3の変換処理は、第1の変換処理による変換の後の第1のビット列として、第1のラウンド処理部31から当該第1のビット列を取得する。
また、第3の変換処理の各ビットに対する処理は、数式1に示したようにも表される。
Figure 2013167729
ここで、Aは、i回目に実行された第1の変換処理による変換の後(即ち、i+1回目に実行された第1の変換処理による変換の前)の第1のビット列を構成するビットである。なお、iは、0以上であり且つラウンド数Rよりも小さい整数である。また、Ai+1は、i+1回目に実行された第1の変換処理による変換の後の第1のビット列を構成するビットである。なお、AとAi+1とは、第1のビット列において同じ位置のビットである。
同様に、Bは、i回目に実行された第3の変換処理による変換の後(即ち、i+1回目に実行された第3の変換処理による変換の前)の第2のビット列を構成するビットである。また、Bi+1は、i+1回目に実行された第3の変換処理による変換の後の第2のビット列を構成するビットである。なお、BとBi+1とは、第2のビット列において同じ位置のビットである。
更に、AとBとは、第1のビット列と第2のビット列との間で1対1に対応付けられた位置のビットである。本例では、ビット列における先頭からのビット数が同じ位置同士が対応付けられている。
(作動)
次に、上述した暗号化装置1の作動について説明する。
先ず、暗号化装置1は、入力された、平文としての第1のビット列を受け付ける。次いで、第1のビット列処理部30は、受け付けられた第1のビット列を第1のメモリ10に記憶させる。同時に、第2のビット列処理部40は、第1のビット列を反転させた第2のビット列を第2のメモリ20に記憶させる。
次に、1回目の単位処理が実行される。
具体的には、鍵生成部50は、1回目のラウンド処理に対する鍵を生成し、生成された鍵を第1のラウンド処理部31及び第2のラウンド処理部41のそれぞれへ出力する。同時に、第1のラウンド処理部31は、1回目の第1の変換処理の実行を開始する。更に、同時に、第2のラウンド処理部41は、1回目の第2の変換処理の実行を開始する。更に、同時に、遅延処理部42は、1回目の遅延処理の実行を開始する。
そして、第1のラウンド処理部31が1回目の第1の変換処理の実行を完了した時点にて、第2のラウンド処理部41も1回目の第2の変換処理の実行を完了する。更に、同時に、遅延処理部42も、1回目の遅延処理の実行を完了する。
更に、この時点にて、変換処理部43は、1回目の第3の変換処理を実行し、続いて、1回目の第2の更新処理の実行を開始する。同時に、第1のラウンド処理部31は、1回目の第1の更新処理の実行を開始する。これにより、第1のメモリ10が記憶している第1のビット列が更新される。同時に、第2のメモリ20が記憶している第2のビット列が更新される。
このようにして、1回目の単位処理の実行が完了する。
同様に、2回目以降の単位処理も実行される。
その後、R(ラウンド数)回目の単位処理の実行が完了すると、第1のラウンド処理部31は、R回目の第1の変換処理による変換の後の第1のビット列を暗号文として出力する。
次に、上述した暗号化装置1の作動における、第1のメモリ10及び第2のメモリ20に記憶されているビット列の時間に対する変化を具体的に説明する。ここでは、説明を簡単にするために、単位ビット数が4である場合を想定する。また、1回目の単位処理、及び、2回目の単位処理を例として説明する。
いま、第1のビット列として、図3に示したように、「0000」が入力された場合を想定する。この場合、1回目の単位処理の実行前において、第1のメモリ10は、「0000」を記憶し、且つ、第2のメモリ20は、「1111」を記憶する。
ここで、1回目の単位処理の実行後において、第1のビット列が「1010」に変換された場合を想定する。この場合、1回目の単位処理の実行後において、第1のメモリ10は、「1010」を記憶し、且つ、第2のメモリ20は、「1010」を記憶する。
即ち、第1のビット列のうちの、1回目の単位処理の実行前と実行後との間で反転したビットの数は、2である。同様に、第2のビット列のうちの、1回目の単位処理の実行前と実行後との間で反転したビットの数も、2である。
即ち、第1のメモリ10及び第2のメモリ20に記憶されているビット列(即ち、第1のビット列及び第2のビット列)を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数は、4(即ち、単位ビット数)である。
更に、2回目の単位処理の実行後において、第1のビット列が「1101」に変換された場合を想定する。この場合、2回目の単位処理の実行後において、第1のメモリ10は、「1101」を記憶し、且つ、第2のメモリ20は、「0010」を記憶する。
即ち、第1のビット列のうちの、2回目の単位処理の実行前と実行後との間で反転したビットの数は、3である。一方、第2のビット列のうちの、2回目の単位処理の実行前と実行後との間で反転したビットの数は、1である。
即ち、第1のメモリ10及び第2のメモリ20に記憶されているビット列(即ち、第1のビット列及び第2のビット列)を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数は、4(即ち、単位ビット数)である。
以上、説明したように、本発明の第1実施形態に係る暗号化装置1によれば、第1のメモリ10及び第2のメモリ20に記憶されているビット列(即ち、第1のビット列及び第2のビット列)を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値(即ち、単位ビット数)に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置1が消費する電力の量(消費電力量)の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
更に、第1実施形態に係る暗号化装置1は、変換の後の第1のビット列が第1のメモリ10に記憶される時点と略同じ時点にて、変換の後の第2のビット列を第2のメモリ20に記憶させるように構成される。
これによれば、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
加えて、第1実施形態に係る暗号化装置1は、第1のビット列に対してラウンド処理が行われるために要する時間だけ、変換の前の第1のビット列を遅延させ、遅延された、変換の前の第1のビット列と、当該変換の後の第1のビット列と、の排他的論理和の否定を算出するように構成される。
これによれば、変換の前の第1のビット列と変換の後の第1のビット列との排他的論理和の否定を適切に算出できる。
更に、第1実施形態に係る暗号化装置1において、第2のビット列は、第1のビット列を構成するビットの数と同数のビットにより構成される。
これによれば、第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を減じた数よりも、第2のビット列を構成するビットの数が少なくなることを回避することができる。従って、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
なお、第1実施形態の変形例に係る暗号化装置1は、第2のラウンド処理部41を備えないように構成されていてもよい。
また、第1実施形態の変形例に係る暗号化装置1は、遅延処理部42を備えないように構成されていてもよい。この場合、暗号化装置1は、第1の変換処理の実行が完了した時点にて、変換処理部43が第1のメモリ10に記憶されている第1のビット列を取得するように構成されることが好適である。
また、第1実施形態の変形例に係る暗号化装置1において、第2のビット列を構成するビットの数は、第1のビット列を構成するビットの数よりも少なくてもよい。
<第2実施形態>
次に、本発明の第2実施形態に係る暗号化装置について図4を参照しながら説明する。
第2実施形態に係る暗号化装置100は、複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する装置である。
更に、この暗号化装置100は、
上記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリ101と、
複数のビットにより構成される第2のビット列を記憶する第2のメモリ102と、
上記第1のメモリ101に記憶されている第1のビット列に対して上記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリ101に記憶させる第1のビット列処理部(第1のビット列処理手段)103と、
上記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、上記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように上記第2のメモリ102に記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリ102に記憶させる第2のビット列処理部(第2のビット列処理手段)104と、
を備える。
これによれば、第1のメモリ101及び第2のメモリ102に記憶されているビット列(即ち、第1のビット列及び第2のビット列)を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値(即ち、第1のビット列を構成するビットの数)に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置100が消費する電力の量(消費電力量)の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
なお、上記各実施形態において暗号化装置の各機能は、回路等のハードウェアにより実現されていた。ところで、暗号化装置は、処理装置と、プログラム(ソフトウェア)を記憶する記憶装置と、を備えるとともに、処理装置がそのプログラムを実行することにより、各機能を実現するように構成されていてもよい。この場合、プログラムは、コンピュータが読み取り可能な記録媒体に記憶されていてもよい。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
なお、本発明は、IC(Integrated Circuit)チップ等の電子回路にも適用され得る。本発明が適用された電子回路(暗号化回路)は、上述した暗号化装置と同様の構成を有する。暗号化回路は、例えば、情報処理装置、電子機器、通信装置、又は、カード(キャッシュ・カード、又は、クレジット・カード等)等に搭載されていてもよい。
また、上記実施形態の他の変形例として、上述した実施形態及び変形例の任意の組み合わせが採用されてもよい。
<付記>
上記実施形態の一部又は全部は、以下の付記のように記載され得るが、以下には限られない。
(付記1)
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置であって、
前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
を備える暗号化装置。
これによれば、第1のメモリ及び第2のメモリに記憶されているビット列(即ち、第1のビット列及び第2のビット列)を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を、一定の値(即ち、第1のビット列を構成するビットの数)に維持することができる。従って、メモリにビット列が記憶される際の、暗号化装置が消費する電力の量(消費電力量)の変動を抑制することができる。この結果、サイドチャネル攻撃に対する耐性を高めることができる。
(付記2)
付記1に記載の暗号化装置であって、
前記第2のビット列処理手段は、前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化装置。
これによれば、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
(付記3)
付記2に記載の暗号化装置であって、
前記第2のビット列処理手段は、前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化装置。
(付記4)
付記3に記載の暗号化装置であって、
前記第2のビット列処理手段は、
前記第1のビット列に対して前記ラウンド処理が行われるために要する時間だけ、前記変換の前の第1のビット列を遅延させる遅延手段を含み、且つ、
前記遅延された、前記変換の前の第1のビット列と、当該変換の後の第1のビット列と、の排他的論理和の否定を算出するように構成された暗号化装置。
ところで、ラウンド処理を行うためには、所定の遅延時間を要する。従って、上記のように暗号化装置を構成することにより、変換の前の第1のビット列と変換の後の第1のビット列との排他的論理和の否定を適切に算出できる。
(付記5)
付記1乃至付記4のいずれかに記載の暗号化装置であって、
前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理が行われる時点と略同じ時点にて、前記第2のメモリに記憶されている第2のビット列に対して当該ラウンド処理を行うダミー処理手段を備える暗号化装置。
(付記6)
付記1乃至付記5のいずれかに記載の暗号化装置であって、
前記第2のビット列は、前記第1のビット列を構成するビットの数と同数のビットにより構成される暗号化装置。
これによれば、第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、変換の前と変換の後との間で反転したビットの数を減じた数よりも、第2のビット列を構成するビットの数が少なくなることを回避することができる。従って、メモリにビット列が記憶される際の消費電力量の変動を、より一層確実に抑制することができる。
(付記7)
付記1乃至付記6のいずれかに記載の暗号化装置であって、
前記第1のビット列処理手段は、前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、且つ、当該変換の後の第1のビット列を当該第1のメモリに記憶させる単位処理を繰り返し行うように構成された暗号化装置。
(付記8)
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路であって、
前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
を備える暗号化回路。
(付記9)
付記8に記載の暗号化回路であって、
前記第2のビット列処理手段は、前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化回路。
(付記10)
付記9に記載の暗号化回路であって、
前記第2のビット列処理手段は、前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化回路。
(付記11)
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される暗号化方法であって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
を備え、
前記暗号化方法は、
前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、暗号化方法。
(付記12)
付記11に記載の暗号化方法であって、
前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化方法。
(付記13)
付記12に記載の暗号化方法であって、
前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化方法。
(付記14)
複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行される暗号化プログラムであって、
前記暗号化装置は、
前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
を備え、
前記暗号化プログラムは、前記暗号化装置に、
前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、処理を実現させるための暗号化プログラム。
(付記15)
付記14に記載の暗号化プログラムであって、
前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化プログラム。
(付記16)
付記15に記載の暗号化プログラムであって、
前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化プログラム。
本発明は、複数のビットにより構成されるビット列を暗号化する暗号化装置等に適用可能である。
1 暗号化装置
10 第1のメモリ
20 第2のメモリ
30 第1のビット列処理部
31 第1のラウンド処理部
40 第2のビット列処理部
41 第2のラウンド処理部
42 遅延処理部
43 変換処理部
50 鍵生成部
100 暗号化装置
101 第1のメモリ
102 第2のメモリ
103 第1のビット列処理部
104 第2のビット列処理部

Claims (16)

  1. 複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置であって、
    前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
    複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
    前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
    前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
    を備える暗号化装置。
  2. 請求項1に記載の暗号化装置であって、
    前記第2のビット列処理手段は、前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化装置。
  3. 請求項2に記載の暗号化装置であって、
    前記第2のビット列処理手段は、前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化装置。
  4. 請求項3に記載の暗号化装置であって、
    前記第2のビット列処理手段は、
    前記第1のビット列に対して前記ラウンド処理が行われるために要する時間だけ、前記変換の前の第1のビット列を遅延させる遅延手段を含み、且つ、
    前記遅延された、前記変換の前の第1のビット列と、当該変換の後の第1のビット列と、の排他的論理和の否定を算出するように構成された暗号化装置。
  5. 請求項1乃至請求項4のいずれかに記載の暗号化装置であって、
    前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理が行われる時点と略同じ時点にて、前記第2のメモリに記憶されている第2のビット列に対して当該ラウンド処理を行うダミー処理手段を備える暗号化装置。
  6. 請求項1乃至請求項5のいずれかに記載の暗号化装置であって、
    前記第2のビット列は、前記第1のビット列を構成するビットの数と同数のビットにより構成される暗号化装置。
  7. 請求項1乃至請求項6のいずれかに記載の暗号化装置であって、
    前記第1のビット列処理手段は、前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、且つ、当該変換の後の第1のビット列を当該第1のメモリに記憶させる単位処理を繰り返し行うように構成された暗号化装置。
  8. 複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化回路であって、
    前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
    複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
    前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させる第1のビット列処理手段と、
    前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる第2のビット列処理手段と、
    を備える暗号化回路。
  9. 請求項8に記載の暗号化回路であって、
    前記第2のビット列処理手段は、前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化回路。
  10. 請求項9に記載の暗号化回路であって、
    前記第2のビット列処理手段は、前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化回路。
  11. 複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に適用される暗号化方法であって、
    前記暗号化装置は、
    前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
    複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
    を備え、
    前記暗号化方法は、
    前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
    前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、暗号化方法。
  12. 請求項11に記載の暗号化方法であって、
    前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化方法。
  13. 請求項12に記載の暗号化方法であって、
    前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化方法。
  14. 複数のビットにより構成されるビット列に対して、当該ビット列を変換するラウンド処理を所定の回数だけ行うことにより当該ビット列を暗号化する暗号化装置に実行される暗号化プログラムであって、
    前記暗号化装置は、
    前記暗号化する対象となるビット列である第1のビット列を記憶する第1のメモリと、
    複数のビットにより構成される第2のビット列を記憶する第2のメモリと、
    を備え、
    前記暗号化プログラムは、前記暗号化装置に、
    前記第1のメモリに記憶されている第1のビット列に対して前記ラウンド処理を行うことにより当該第1のビット列を変換し、当該変換の後の第1のビット列を当該第1のメモリに記憶させ、
    前記第1のビット列を構成するビットの数から、当該第1のビット列を構成するビットのうちの、前記変換の前と当該変換の後との間で反転したビットの数を減じた数だけ、ビットを反転させるように前記第2のメモリに記憶されている第2のビット列を変換し、当該変換の後の第2のビット列を当該第2のメモリに記憶させる、処理を実現させるための暗号化プログラム。
  15. 請求項14に記載の暗号化プログラムであって、
    前記変換の後の第1のビット列が前記第1のメモリに記憶される時点と略同じ時点にて、前記変換の後の第2のビット列を前記第2のメモリに記憶させるように構成された暗号化プログラム。
  16. 請求項15に記載の暗号化プログラムであって、
    前記第2のメモリに記憶されている第2のビット列を、前記変換の前の第1のビット列と当該変換の後の第1のビット列との排他的論理和の否定と、当該第2のビット列と、の排他的論理和に変換するように構成された暗号化プログラム。
JP2012030470A 2012-02-15 2012-02-15 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム Pending JP2013167729A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012030470A JP2013167729A (ja) 2012-02-15 2012-02-15 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012030470A JP2013167729A (ja) 2012-02-15 2012-02-15 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム

Publications (1)

Publication Number Publication Date
JP2013167729A true JP2013167729A (ja) 2013-08-29

Family

ID=49178174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012030470A Pending JP2013167729A (ja) 2012-02-15 2012-02-15 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム

Country Status (1)

Country Link
JP (1) JP2013167729A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022084538A (ja) * 2020-11-19 2022-06-07 新唐科技股▲ふん▼有限公司 電子回路、電子回路の設計方法、電子回路内のデータ処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022084538A (ja) * 2020-11-19 2022-06-07 新唐科技股▲ふん▼有限公司 電子回路、電子回路の設計方法、電子回路内のデータ処理方法
JP7349482B2 (ja) 2020-11-19 2023-09-22 新唐科技股▲ふん▼有限公司 電子回路、電子回路の設計方法、電子回路内のデータ処理方法

Similar Documents

Publication Publication Date Title
JP6244429B2 (ja) ストリーム暗号の暗号化装置、ストリーム暗号の復号化装置、ストリーム暗号の暗号化方法、ストリーム暗号の復号化方法およびプログラム
JP5242560B2 (ja) 暗号化装置、復号化装置、暗号化方法及び集積回路
JP5229315B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
US8010587B2 (en) Random number generator
US10326589B2 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
JP5542896B2 (ja) 低電力暗号化装置および方法
EP3661115B1 (en) Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
JP2011169977A (ja) 暗号処理装置
JP2017195595A (ja) 暗号化/復号装置及びその電力解析保護方法
WO2015145487A1 (ja) クロック位相制御回路
JP6194136B2 (ja) 疑似乱数生成装置及び疑似乱数生成プログラム
JP2014240921A (ja) 暗号装置、暗号処理方法及び暗号処理プログラム
JPWO2013080976A1 (ja) 暗号化処理回路及び復号処理回路、その方法並びにそのプログラム
JP2013167729A (ja) 暗号化装置、暗号化回路、暗号化方法、及び、暗号化プログラム
JP6167721B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法及びプログラム
EP3531401B1 (en) Method and circuit for performing a substitution operation
JP2006025366A (ja) 暗号化装置及び半導体集積回路
Yli-Mäyry et al. Chosen-input side-channel analysis on unrolled light-weight cryptographic hardware
JP2010256749A (ja) ハッシュ値生成装置、ハッシュ値生成方法およびプログラム
WO2012077419A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US9264229B1 (en) System and method for generating random key stream cipher texts
JP5882797B2 (ja) ストリーム暗号処理システム、耐タンパデバイス及びストリーム暗号処理方法
JP2008040244A (ja) Aes暗号回路
JP5500277B2 (ja) 共通鍵暗号機能を搭載した暗号化装置及び組込装置
WO2013190782A1 (ja) 暗号化処理回路および復号処理回路

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20140613