JP6136325B2 - 暗号処理装置、暗号処理方法およびプログラム - Google Patents

暗号処理装置、暗号処理方法およびプログラム Download PDF

Info

Publication number
JP6136325B2
JP6136325B2 JP2013023498A JP2013023498A JP6136325B2 JP 6136325 B2 JP6136325 B2 JP 6136325B2 JP 2013023498 A JP2013023498 A JP 2013023498A JP 2013023498 A JP2013023498 A JP 2013023498A JP 6136325 B2 JP6136325 B2 JP 6136325B2
Authority
JP
Japan
Prior art keywords
data
extension
bit
extension data
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.)
Active
Application number
JP2013023498A
Other languages
English (en)
Other versions
JP2014153552A (ja
Inventor
智保 洲崎
智保 洲崎
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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2013023498A priority Critical patent/JP6136325B2/ja
Publication of JP2014153552A publication Critical patent/JP2014153552A/ja
Application granted granted Critical
Publication of JP6136325B2 publication Critical patent/JP6136325B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号処理装置、暗号処理方法およびプログラムに関し、例えば、サイドチャネル攻撃に対する耐性を有する暗号処理装置、暗号処理方法およびプログラムに関する。
記録媒体に蓄積されたデータや通信路上を流れるデータを盗聴等の脅威から保護するための技術として暗号化がある。暗号化されたデータは、暗号化に用いた鍵を知る者のみが正しく復号することができる。
暗号アルゴリズムとして、AES(Advanced Encryption Standard)が知られている(非特許文献1)。AESは、SPN(Substitution Permutation Network)構造のブロック暗号(block cipher)方式に基づく。AESは、差分解読法(differential cryptanalysis)、線形解読法(linear cryptanalysis)等の暗号解読法に対して安全である。AESに対して、秘密鍵の全数探索(brute force attack)よりも効率的に鍵を求める方法は知られていない。また、秘密鍵の全数探索には膨大な時間を要するからである。
近年、暗号化機能が実装された機器(暗号モジュール)において、暗号化機能が動作する際に暗号モジュールが消費する電力や、これに伴う電磁波を利用して暗号化鍵を搾取する攻撃法の脅威が指摘されている。これらの副次的に得られる消費電力、電磁波などに関する情報を「サイドチャネル情報」といい、サイドチャネル情報を利用した攻撃を「サイドチャネル攻撃」という。
次に、サイドチャネル攻撃の原理について説明する。
データを2進数表現したときにデータに含まれる1の個数を「ハミングウェイト」という。nビットデータdのハミングウェイトh(d)は、
h(d)∈{0,1,2,…,n}
となる。例えば、以下の8ビットデータ(n=8)の場合、ハミングウェイトは、それぞれ、
h(00000000)=0,
h(00001000)=1,
h(00100011)=3,
h(11111111)=8
となる。
ここで、解析対象の暗号モジュールがハミングウェイトモデルに基づく場合、データのハミングウェイトと消費電力、漏洩電磁波は正比例するものと仮定する。次に、ハミングウェイトモデルに基づく暗号アルゴリズムの解析手順について以下に説明する。図7は、ブロック長が2nビットのrラウンドのフェイステル(Feistel)型暗号について説明するための図である。
2nビットの平文Pはnビットのデータx およびx に分割される。各ラウンドの処理は、F関数72および排他的論理和74を含む。第iラウンド(i=1,2,…,r−1)の処理は、式(1)および式(2)によって表される。
=xi―1 …(1)
=F(xi―1 ,Ki−1)^xi−1 …(2)
式(2)において、記号"^"はビット毎の排他的論理和(bitwise XOR(exclusive OR))の演算子を表す。なお、記号"^"は、例えば、C言語などにおいても用いられる。
最終ラウンド(第rラウンド)では、データの左右のクロス(交差)を行わない。したがって、データx 、x は、式(3)および式(4)によって表される。
=xr−1 …(3)
=F(xr−1 ,Kr−1)^xr−1 …(4)
データx とx を連結した2nビットデータx ||x が暗号文Cとなる。なお、"||"は連結(concatenation)演算子を表す。
図8は、図7のF関数72の構成を一例として示す図である。図8を参照すると、排他的論理和82は、データx と鍵Kの排他的論理和演算を行い、演算結果としてデータyを得る。次に、S関数84は、データyに対して非線形変換を施してデータzを得る。
次に、サイドチャネル情報を用いて最終ラウンドの鍵Kr−1を求める解析手順を示す。解析手順は、データ収集フェーズと解析フェーズから成る。
データ収集フェーズでは、m個の平文P(j=0,1,…,m−1)を暗号化して、m個の暗号文Cを得る。このとき、オシロスコープ、スペクトラムアナライザなどの測定器(波形解析装置)を用いて暗号化処理中の消費電力を測定する。ここで、平文Pを暗号化するときに測定した電力波形をwとする。
解析フェーズとして、ここでは、差分電力解析(DPA:Differential Power Analysis)を例として説明する。
鍵Kr−1の候補は、2通りある。そこで、鍵Kr−1に含まれるn個のビットがすべてゼロである場合から順次鍵Kr−1を仮定する。
データxr−1 (=x )は暗号文Cより既知であるから、鍵Kr−1を仮定することによりF関数72の出力データzを計算することができる。
ここで、データzの特定の1ビットに注目し、当該ビットが0になった暗号文に対応する波形データと、当該ビットが1になった暗号文に対応する波形データとに分類する。当該ビットの値が0として分類された波形の集合を集合Wとし、当該ビットの値が1として分類された波形の集合を集合Wとする。
次に、集合Wおよび集合Wのそれぞれについて、消費電力の平均値W0avg,W1avgを計算する。
ハミングウェイトモデルに基づく場合、データzの計算が実行された時刻の集合Wよりも集合Wの消費電力が大きくなる(残りのn−1ビットはノイズ成分となるが、多数の波形の平均をとることで平準化されると考える)。したがって、データzの特定の1ビットが0、1となった暗号文の波形集合への分類が正しく行われていれば、平均値W1avgから平均値W0avgを引くと顕著に差が現れる(図9(b)参照)。
一方、鍵Kr−1の仮定が誤っている場合、正しく分類されない。すなわち、集合W(W)にはビット値が1(0)となる波形が混在する。したがって、平均値W0avgと平均値W1avgの間に差が見られなくなる(図9(a)参照)。
したがって、平均波形のピーク値を調べることにより、仮定した鍵が正しい鍵であるかどうかを判別することができる。
一方、サイドチャネル攻撃に対する耐タンパ(tamper resistant)技術の研究も盛んに行われている。ハミングウェイトモデルが適用できる環境における耐タンパ技術は、2つに大別することができる。一方は、暗号化データとは無関係なデータを付加することにより、データのハミングウェイトと消費電力の相関を崩す方法である。他方は、暗号化データを完全にビット反転させたデータを同時に生成することにより、暗号化処理中のハミングウェイトを一定にする方法である。前者の方法としてマスキング法が知られている。また、後者の方法として、Dual Rail Logic(DDL)法が知られている。
DDL法では、ハードウェアで暗号化回路を構成する際に、正規の暗号化処理とは別に相補的な回路を構成し、これらを同時に動作させ、正規の暗号化データとビット反転したデータを同時に生成することにより、消費電力を一定にする。
また、DLL法のアイディアをソフトウェアに応用した手法が存在する(非特許文献2)。ソフトウェアプログラムは実行されるプロセッサ上で逐次処理されるため、暗号化を行うプログラムに相補的な処理を追加しても同時に相補的な処理を実行させることはできない。そこで、処理するデータにその相補データを付加することにより、擬似的なDDLを構成する(以下、「擬似DLL法」という。)。
疑似DLL法では、暗号化データをビットデータに分解し、値が0であるビットデータを2ビットの01(2)に置き換え、値が1であるビットデータを2ビットの10(2)に置き換える。ここで、下付の添え字(2)は2進数を表す。これらの2値のハミングウェイトは、いずれも1であるため、消費電力は等しくなる。したがって、暗号化処理中のデータがすべて01(2)、10(2)のいずれかになっていれば、暗号化するデータや鍵の違いに依らず消費電力は常に一定となる。
ところで、疑似DLL法を用いた場合、プロセッサが持つ演算命令では置き換え後の状態を保つことができない。このことを、XOR命令を例として説明する。置き換え前のデータで"0^1"という演算を行う場合、置き換え後のデータでは"01(2)^10(2)"という演算を行うことになる。置き換え前においてXOR命令の結果として期待する結果は1であるから、置き換え後の結果が10(2)となることが期待される。しかし、置き換え後のデータをプロセッサのXOR命令で処理すると、結果は11(2)となるため、期待する結果が得られないことになる。
この問題を解決するために、テーブルを利用することができる。期待する結果をテーブルエントリとして保持し、演算されるデータをテーブルインデックスとしてテーブル参照を行うことにより、演算結果を得る。XOR演算x^yを行う場合、xとyを連結したデータx||yをテーブルのインデックスとする。1ビットデータ同士のXOR演算の場合、インデックスとして0101(2)(5)、0110(2)(6)、1001(2)(9)、1010(2)(10)の4つをとり得る。そこで、テーブルの5、6、9、10番目にそれぞれの演算結果01(2),10(2),10(2),01(2)を設定する。したがって、XORの演算結果を得るためのテーブルは式(5)によって与えられる。
XOR[16]=
{−,−,−,−,−,01(2),10(2),−,−,10(2),01(2),−,−,−,−,−} …(5)
ここで、"-"は未参照領域であるため、任意の値としてもよい。また、暗号アルゴリズムが論理和、論理積等他の演算を利用する場合、同様のテーブルを生成する必要がある。
理解を助けるために、図8に対して上記の耐タンパ方法の適用した例を示す。図10は、図8の処理を、上記の耐タンパ方式で実装したものを示す。ここで、X=Xn−1||Xn−2||...||X||X、Y=Yn−1||Yn−2||...||Y||Yであり、X(Y)が0ならばx(y)は01(2)であり、1ならば10(2)である。上述のとおり、XOR102は、テーブル参照により実現される。一方、S’関数104は、n個の2ビットデータを連結した2nビットのデータを入力データとし、2nビットの変換後データzを出力する。S関数84をテーブル参照で実現した場合、テーブルは2個のエントリを有する。このとき、S’関数104は22n個のエントリを持つテーブルとなる。
なお、特許文献1には、暗号処理を実行する際の電力消費量を計測することで、暗号モジュールに埋め込まれている暗号鍵を解析する攻撃方法に対して安全な暗号化装置として鍵によって予め定められた処理がされた入力データに対して、乱数に依存して決まる予め定められた入力マスク値が加算されたランダム化入力データと入力マスク値とを受け付けて、入力マスク値の逆元である出力マスク値が、入力データの逆元に対して加算されたランダム化出力データを生成するランダム化8ビット逆元計算部を備え、生成されたランダム化出力データから暗号文を生成する技術が開示されている。
また、特許文献2には、差分電力解析(DPA)に対して安全な暗号化装置として、乱数を発生する乱数発生器手段と、乱数に従ってq個の固定値の中の1つを選択する第1の選択器と、乱数に従ってq組の固定テーブルの中の1組を選択する選択器と、を備えた暗号化装置が記載されている。排他的論理和手段は、固定値と鍵の排他的論理和と入力の排他的論理和をとり、非線形変換手段は、1組の固定テーブルに従って非線形変換を行う構成が開示されている。
さらに、特許文献3には、DPAまたはEMA(Electro-Magnetic Analysis)タイプの攻撃に対抗するための暗号回路であって、暗号アルゴリズムを実行するための関数鍵kcを含み、関数鍵kcとは別の、サイドチャネルを利用した攻撃から該暗号回路を保護する第2の鍵kiを含む暗号回路が開示されている。
国際公開第2008/146482号 特開2002−366029号公報 特表2012−516094号公報
"Announcing the ADVANCED ENCRYPTION STANDARDS (AES)," Federal Information Processing Standards Publication 197, November 26, 2001. P. Hoogvorst, G. Duc and J.-L Danger, "Software Implementation of Dual-Rail Representation," COSADE 2011, Second International Workshop on Constructive Side-Channel Analysis and Secure Design, 2011.
上記の特許文献および非特許文献の全開示内容は、本書に引用をもって繰り込み記載されているものとする。以下の分析は、本発明者によってなされたものである。
DDL法をソフトウェア実装で実現した疑似DLL法では、データをビットレベルに分割するため、サイドチャネル攻撃への対策を施さない実装では1回で行うことができた演算を、複数回に分けて行うことになる。したがって、疑似DLL法によると、演算回数が増加し、暗号化処理速度が低下するおそれがある。図8に示した例では、n=8の場合、1回のXOR命令と1回のSテーブル参照により実行できる。一方、図10に示すように、サイドチャネル攻撃への対策を施した場合、8回のXORテーブル参照、データの連結処理、さらに、1回のS’テーブル参照が必要となる。
なお、XORはビット単位の演算であるから、分割の単位を任意に決定することができる。例えば、データx(y)とデータxi+1(yi+1)(i=0,2,4,6)を連結した4ビットデータとすることで、XORテーブルの参照回数を半分の4回に削減することができる。ただし、この場合、XORテーブルを参照する際のインデックスは8ビットになるため、テーブルサイズが大幅に増大する。また、式(5)のXORテーブルのように、未使用領域を多く含むテーブルを利用することになるため、メモリの使用量が増加する。
このように、ソフトウェア実装された暗号モジュールをサイドチャネル攻撃の脅威から保護するためには、DDL法は有効な手法の一つであるものの、擬似DDL法によると、処理速度の低下が著しく、メモリ使用量も大幅に増大するという問題がある。
そこで、暗号化の演算時間、演算コストの増大を抑制しつつ、サイドチャネル攻撃等に対する耐性を向上させることが要望される。本発明の目的は、かかる要望に寄与する暗号処理装置、暗号処理方法およびプログラムを提供することにある。
本発明の第1の視点に係る暗号処理装置は、
mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成するデータ拡張手段と、
前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う拡張データ演算手段と、を備える。
前記拡張データ演算手段は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算手段を備え、
前記XOR演算手段は、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する。
本発明の第2の視点に係る暗号処理方法は、
メモリとCPUを備えたコンピュータによる暗号処理方法であって、
前記CPUが前記メモリに蓄積されたプログラムを読み出して実行することにより、mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成する生成工程と、
前記CPUが前記メモリから読み出された前記プログラムを実行することにより、前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う暗号化工程と、を含む。
前暗号化工程は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算工程を含み、
前記XOR演算工程において、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する。
本発明の第3の視点に係るプログラムは、
メモリとCPUを備えたコンピュータに実行させるプログラムであって、
前記メモリから前記CPUに読み出されることにより、前記CPUに対して、mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成する生成処理と、
前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う暗号化処理と、をコンピュータに実行させる。
前暗号化処理は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算処理を含み、
前記XOR演算処理において、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する。
なお、プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。
本発明に係る暗号処理装置、暗号処理方法およびプログラムによれば、暗号化の演算時間、演算コストの増大を抑制しつつ、サイドチャネル攻撃等に対する耐性を向上させることが可能となる。
第1の実施形態に係る暗号処理装置の構成を一例として示すブロック図である。 第1の実施形態に係る暗号処理装置における拡張データ演算手段の構成を一例として示すブロック図である。 AESの処理手順を示すフロー図である。 AESの処理を詳細に記載した図である。 第1の実施形態に係る暗号処理装置における拡張データ演算手段を、AESに適用した構成例を示す図である。 第1の実施形態に係る暗号処理装置をコンピュータとして実現したときの構成を一例として示すブロック図である。 フェイステル(Feistel)型暗号の一例を示す図である。 図7のF関数の構造を説明するための図である。 (a)差分電力解析を行った際の鍵の推定が誤っている場合、(b)鍵の推定が正しい場合の平均波形の例を説明するための図である。 図8の処理を耐タンパ化したときの構成例を示す図である。
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
図1は、一実施形態に係る暗号処理装置(10)の構成を一例として示すブロック図である。図1を参照すると、暗号処理装置(10)は、mビット(mは自然数)の第1のデータ(x)に基づいて第1のデータ(x)をビット反転した第2のデータ(xbar)を求め、2個の第1のデータ(x)と2個の第2のデータ(xbar)を連結して4mビットの拡張データを生成するデータ拡張手段(12)と、ハミングウェイトを一定に保ちつつ拡張データの暗号化処理を行う拡張データ演算手段(16)と、を備える。
第1のデータxのハミングウェイトh(x)がs(0≦s≦m)である場合、第2のデータxbarのハミングウェイトh(xbar)は(m−s)である。したがって、データ拡張手段(12)によって生成される拡張データ(例えば、4mビットデータxbar||x||xbar||x)のハミングウェイトh(xbar||x||xbar||x)は2mとなり、第1のデータ(x)のハミングウェイトsに依存しない値となる。また、拡張データ演算手段(16)によると、ハミングウェイトを一定値の2mに保ちつつ拡張データの暗号化処理が行われるため、暗号化処理に含まれる演算(例えば、排他的論理和、左シフト、右シフトなど)において、サイドチャネル情報が漏洩することはない。
したがって、暗号処理装置(10)によると、暗号化の演算時間、演算コストの増大を抑制しつつ、サイドチャネル攻撃等に対する耐性を向上させることが可能となる。
(実施形態1)
第1の実施形態に係る暗号処理装置について、図面を参照して詳細に説明する。本実施形態に係る暗号処理装置は、以下に説明するように、データの通信や蓄積の際にデータを秘匿する共通鍵ブロック暗号へのサイドチャネル攻撃に対する耐タンパ性を有する。
図1は、本実施形態に係る暗号処理装置の構成を一例として示すブロック図である。図1を参照すると、暗号処理装置10は、データ拡張手段12およびデータ攪拌手段14を備えている。
データ拡張手段12は、mビットデータxとそのビット反転データxbarをそれぞれ2つずつ用い、これらを連結した4mビットの拡張データを生成する。データ攪拌手段14は、拡張データ演算手段16を有し、データを攪拌する。拡張データ演算手段16は、拡張データの値に依存することなく、攪拌処理中のデータのハミングウェイトを一定に保ったまま処理を行う。
データ拡張手段12は、mビットのデータxに基づいて、データxを含むハミングウェイトが2mの4mビットの拡張データを生成する。データ拡張手段12による拡張データの生成方法について説明する。まず、データ拡張手段12は、データxを4つ連結した4mビットデータx||x||x||xを生成する。次に、データ拡張手段12は、4つのデータxのうちの2つのデータxをビット反転させる。例えば、一番左と左から3番目のデータxをビット反転させる場合、データ拡張手段12は、次の右辺の演算を行う。
xbar||x||xbar||x=x||x||x||x^1(m)||0(m)||1(m)||0(m)
上式において、データxbarはデータxに含まれるビットを反転したデータを表す。また、1(m)はすべてのビットが1のmビット長のデータを表し、0(m)はすべてのビットが0のmビット長のデータを表す。
データxのハミングウェイトh(x)がs(0≦s≦m)である場合、データxbarのハミングウェイトh(xbar)は(m−s)となる。したがって、4mビットデータxbar||x||xbar||xのハミングウェイトh(xbar||x||xbar||x)は2mである。なお、データ拡張手段12がn個の4mビットデータを生成するとき、ビット反転させる位置は統一してもよく、変数ごとに変えてもよい。以下では、反転前のデータを「正データ」といい、正データをビット反転したデータを「反転データ」という。
データ攪拌手段14は、拡張データと拡張ラウンド鍵を入力として、暗号文を生成する。ラウンド鍵は、秘密鍵に基づいて暗号アルゴリズムで規定された鍵スケジュールに従って生成される(なお、鍵スケジュールは図示していない)。暗号化の処理手順は、暗号アルゴリズムの仕様に従うものとする。拡張データ演算手段16は、処理過程で行われるXOR処理、右シフト処理、左シフト処理を行う。以下、それぞれの具体的な処理手順を示す。
図2は、拡張データ演算手段16の構成を一例として示すブロック図である。図2を参照すると、拡張データ演算手段16は、XOR演算手段22、左シフト演算手段24および右シフト演算手段26を備えている。
まず、XOR処理を行うXOR演算手段22について説明する。2つの拡張データ(4mビットデータ)X=xbar||x||xbar||xとY=ybar||y||ybar||yをXORする手順は、以下の擬似コードで表される。
S1:X^=1(2m)||0(2m)
S2:Z=X^Y
S3:Z^=0(m)||1(m)||1(m)||0(m)
ステップS1では、XOR演算手段22は、拡張データXの左2mビットをビット反転し、拡張データX=x||xbar||xbar||xを得る。ステップS1後の拡張データXのハミングウェイトh(X)は2mである。ステップS1における"X^="は、拡張データXと等号の右辺のデータとの排他的論理和を拡張データXに代入する操作を表す。
ステップS2では、XOR演算手段22は、x||xbar||xbar||x^ybar||y||ybar||yを計算して、拡張データZ=zbar||zbar||z||zを得る。拡張データZには、正データと反転データが2つずつ含まれる。したがって、ステップS2後の拡張データZのハミングウェイトh(Z)は2mに保たれる。すなわち、ステップS1、S2の演算によって、サイドチャネル情報が漏洩するおそれはない。
ステップS2までで、X^Yの結果は得られるが、XOR演算手段22は、正データと反転データの並びを元のX、Yと揃えるために、ステップS3の処理を行う。ステップS3の演算により、XOR演算手段22は拡張データZ=zbar||z||zbar||zを得る。ここで、"Z^="は、拡張データZと等号の右辺のデータとの排他的論理和を拡張データZに代入する操作を表す。
次に、左シフト処理を行う左シフト演算手段24について説明する。4mビットデータX=xbar||x||xbar||xを1ビット左シフトするときの演算手順は、以下の擬似コードで表される。
T1:Y=X&0||1(m−1)||0||1(m−1)||0||1(m−1)||0||1(m−1)
T2:Y=Y|0(m)||1||0(m−1)||0(m)||1||0(m−1)
T3:Y=Y<<1
ステップT1では、左シフト演算手段24は、各データx,xbarの最上位ビットを0にする。ステップT1における記号"&"は、ビット毎の論理積(bitwise AND)の演算子である。ステップT1の処理では、データxの値に依らず、4ビットのうちの2ビットが必ず0にされる。したがって、ステップT1後の拡張データYのハミングウェイトh(Y)は2m−2となる。
ステップT2では、左シフト演算手段24は、データxbarの最下位ビットの1ビット右のビットを論理和(|)により1にする。ステップT2では、2ビットを1にするので、ステップT2後の拡張データYのハミングウェイトh(Y)は2mとなる。
次に、ステップT3で、拡張データYを左1ビットシフト(<<)する。
次に、右シフト処理を行う右シフト演算手段26について説明する。拡張データ(4mビットデータ)X=xbar||x||xbar||xを1ビット右シフトするときの演算手順は、以下の擬似コードで表される。
U1:Y=X&1(m−1)||0||1(m−1)||0||1(m−1)||0||1(m−1)||0
U2:Y=Y>>1
U3:Y=Y|1||0(m−1)||0(m)||1||0(m−1)||0(m)
ステップU1では、右シフト演算手段26は、各データx、xbarの最下位ビットを0にする。このとき、必ず2ビットが1から0にされるので、ステップU1後の拡張データYのハミングウェイトh(Y)は2m−2となる。
ステップU2では、右シフト演算手段26は、拡張データYを1ビット右シフト(>>)する。
ステップU3では、右シフト演算手段26は、論理和により、シフト前の各データxbarの最上位ビットの位置を1にする。したがって、ステップU3後の拡張データYのハミングウェイトh(Y)は2mとなる。
次に、暗号処理装置10のAESへの適用例について説明する。図3は、AESの暗号化手順を示す。128ビットの平文Pは、まず、AddRoundKey32でラウンド鍵Kと排他的論理和される。以降、SubBytes34、ShiftRows36、MixColumns38、AddRoundKey32を1組としたラウンド処理が(Nr−1)回繰り返される。このとき、AddRoundKey32には、ラウンドK(i=1,2,…,Nr−1)が入力される。最終ラウンドでは、SubBytes34、ShiftRows36、AddRoundKey32のみを行い、128ビットの暗号文Cが生成される。
ラウンド数Nrは、秘密鍵長に応じて異なる数となる。秘密鍵長が128ビットの場合、ラウンド数Nrは10であり、秘密鍵長が192ビットの場合、ラウンド数Nrは12であり、秘密鍵長が256ビットの場合、ラウンド数Nrは14である。なお、ラウンド鍵Kの生成方法については、説明を省略する。
図4は、各関数の内部処理を示す。AddRoundKey32は、128ビットのデータと128ビットのラウンド鍵を排他的論理和する。SubBytes34は、データを16個の8ビットデータに分割し、それぞれに対してS−boxと呼ばれる非線形変換を施す。ShiftRows36は、16個の8ビットデータの転置を行う。
MixColumns38は演算手段39を有し、8ビットデータ4つを一組として、以下の演算を行う(j=0,4,8,12)。
=2・x^3・xj+1^ xj+2^ xj+3
j+1= x^2・xj+1^3・xj+2^ xj+3
j+2= x^ xj+1^2・xj+2^3・xj+3
j+3=3・x^ xj+1^ xj+2^2・xj+3
ここで、"2・x"はガロア体上の2倍算であり、既約多項式は
m(x)=x+x+x+x+1
で与えられる。
ソフトウェア実装による2倍算は、一例として、以下の手順で実現することができる。
(1)8ビットデータの最上位ビットを符号ビットと見立てて、7ビット算術右シフトを行う。最上位ビットが0ならばシフト結果はオール0となり、最上位ビットが1ならばシフト結果はオール1となる。
(2)(1)の結果と0x1bとの論理積を求める。ここで、"0x"は16進数表記であることを表す。(1)の結果がオール0ならば論理積の結果は0となり、(1)の結果がオール1ならば論理積の結果は0x1bとなる。
(3)8ビットデータを左1ビットシフトし(最上位ビットは落ちるものとする)、(2)の結果との間で排他的論理和を求める。
一方、3倍算は、(2・x+x)によって実現することができる。
なお、AESの詳しい仕様は、FIPS−197(非特許文献1)に開示されている。
図5は、AESを本実施形態の耐タンパ手法で実現した場合の処理方法を示す。平文Pは16個の8ビットデータP(i=0,1,2,…,15)に分割する。データ拡張手段12は、8ビットデータPを32ビットの拡張データX=P||Pbar||Pbar||Pに変換する。また、ラウンド鍵Kも、同様に、16個の8ビットデータK (j=0,1,2,…,15)に分割する。データ拡張手段12は、8ビットデータK を32ビットの拡張ラウンド鍵EK =K ||K bar||Ki bar||K に変換する。
AddRoundKey52では、データとラウンド鍵との排他的論理和を行う。AddRoundKey52は、XOR演算手段22を用いて、拡張データXと拡張ラウンド鍵EK を排他的論理和する。
SubBytes54のS−box55は、テーブル参照で実現することができる。テーブルを参照するときのインデックスは、拡張データの下位16ビットとする。すなわち、拡張データがY||Ybar||Ybar||Yである場合、Ybar||Yがインデックスとなる。また、テーブルの各エントリも拡張データ形式としておく。例えば、S−box55の入力が0x00の場合、出力は0x63となるので、テーブルインデックスが0xff00のエントリは0x639c9c63となる。同様に、S−box55の入力が0x01の場合、出力は0x7cとなるので、テーブルインデックスが0xfe01のエントリは0x7c83837cとなる。
ShiftRows56はデータの転置であるため、サイドチャネル攻撃に対する対策を施す必要はない。
MixColumns58は、算術右シフト、左シフト、および、排他的論理和によって実現することができる。まず、2倍算の手順を示す。32ビットの拡張データの最上位ビットを符号ビットとみなし、31ビット算術右シフトを行う。これに対して、0x1b1b1b1bを論理積する(この結果を「データL」とする)。次に、拡張データを左シフト演算手段24により1ビット左シフトしたものと、データLとを、XOR演算手段22により排他的論理和することで、2倍の演算を実現することができる。一方、3倍算は、2倍算した結果と元のデータとを、XOR演算手段22により排他的論理和することにより実現することができる。最後に、4つのデータの排他的論理和は、XOR演算手段22で実現することができる。
最後に、最終ラウンドのAddRoundKey52の16個の拡張データの下位8ビットを切り出し、連結した128ビットデータが暗号文Cとなる。
次に、本実施形態に係る暗号処理装置10をコンピュータおよびコンピュータ上で稼動するプログラムによって実現する場合について説明する。
図6は、図1に示した暗号処理装置10をコンピュータ上で実現したときの構成を一例として示すブロック図である。図6を参照すると、暗号処理装置60は、入出力装置62、CPU(Central Processing Unit)64、RAM(Random Access Memory)66、ROM(Read Only Memory)67がバス69で接続された構成を有している。
ROM67は、暗号処理を行うプログラム68を記憶している。プログラム68が実行される際、ROM67からプログラム68が読み出されてRAM66にロードされる。CPU64は、RAM66からプログラムを読み込み(フェッチし)、解釈、実行することで、暗号処理を実行する。ただし、プログラム68は、入出力装置62を介して外部からロードされ、RAM66に展開されるようにしてもよい。暗号化鍵は、ROM67に格納しておいてもよいし、入出力装置62を介して外部から入力するようにしてもよい。ROM67は、電気的に書き換え消去可能な不揮発性メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)であってもよい。また、プログラム68は、HDD(Hard Disk Drive)等の不揮発性の補助記憶装置等に記憶してもよい。
なお、上記の特許文献等の先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
なお、本発明において、以下に付記として記載する形態が可能である。
[付記1]
上記第1の視点に係る暗号処理装置のとおりである。
[付記2]
前記拡張データ演算手段は、第1の拡張データと第2の拡張データとの排他的論理和を、該第1の拡張データおよび該第2の拡張データのハミングウェイトと該排他的論理和の演算結果のハミングウェイトとが同一となるように、算出するXOR演算手段を備える、付記1に記載の暗号処理装置。
[付記3]
前記XOR演算手段は、第1の拡張データがmビットの第1のデータと該第1のデータをビット反転した第2のデータをそれぞれ2個ずつ含み、第2の拡張データがmビットの第3のデータと該第3のデータをビット反転した第4のデータをそれぞれ2個ずつ含む場合、該第1のデータと該第3のデータ、該第1のデータと該第4のデータ、該第2のデータと該第3のデータ、該第2のデータと該第4のデータとの間でそれぞれ排他的論理和を求め、求めた排他的論理和を連結することで、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、付記2に記載の暗号処理装置。
[付記4]
前記拡張データ演算手段は、前記拡張データのハミングウェイトを一定に保ちつつ前記拡張データを1ビット左シフトする左シフト演算手段を備える、付記1ないし3のいずれか一に記載の暗号処理装置。
[付記5]
前記左シフト演算手段は、拡張データがmビットの第1のデータと該第1のデータをビット反転した第2のデータをそれぞれ2個ずつ含む場合、該拡張データに含まれる該2個の第1のデータおよび該2個の第2のデータの最上位ビットをそれぞれゼロとするとともに、該2個の第2のデータの最下位ビットの右側に位置するビットをそれぞれ1とした後、該拡張データを1ビット左シフトする、付記4に記載の暗号処理装置。
[付記6]
前記拡張データ演算手段は、前記拡張データのハミングウェイトを一定に保ちつつ前記拡張データを1ビット右シフトする右シフト演算手段を備える、付記1ないし5のいずれか一に記載の暗号処理装置。
[付記7]
前記右シフト演算手段は、拡張データがmビットの第1のデータと該第1のデータをビット反転した第2のデータをそれぞれ2個ずつ含む場合、該拡張データに含まれる該2個の第1のデータおよび該2個の第2のデータの最上位ビットをそれぞれゼロとした後、該拡張データを1ビット右シフトし、該右シフト前の該拡張データにおいて該2個の第2のデータの最上位ビットに位置するビットをそれぞれ1とする、付記6に記載の暗号処理装置。
[付記8]
前記暗号化処理は、AES(Advanced Encryption Standard)暗号化処理であり、
前記データ拡張手段は、平文の少なくとも一部を構成するmビットのデータに基づいて第1の拡張データを生成するとともに、ラウンド鍵の少なくとも一部を構成するmビットのデータに基づいて第2の拡張データを生成し、
前記拡張データ演算手段は、AddRoundKeyにおいて、前記XOR演算手段を用いて、前記第1の拡張データと前記第2の拡張データの排他的論理和を算出する、付記7に記載の暗号処理装置。
[付記9]
前記拡張データ演算手段は、MixColumnsにおいて、前記XOR演算手段および前記左シフト演算手段を用いる、付記8に記載の暗号処理装置。
[付記10]
上記第2の視点に係る暗号処理方法のとおりである。
[付記11]
前暗号化工程は、第1の拡張データと第2の拡張データとの排他的論理和を、該第1の拡張データおよび該第2の拡張データのハミングウェイトと該排他的論理和の演算結果のハミングウェイトとが同一となるように算出するXOR演算工程を含む、付記10に記載の暗号処理方法。
[付記12]
前記XOR演算工程において、第1の拡張データがmビットの第1のデータと該第1のデータをビット反転した第2のデータをそれぞれ2個ずつ含み、第2の拡張データがmビットの第3のデータと該第3のデータをビット反転した第4のデータをそれぞれ2個ずつ含む場合、該第1のデータと該第3のデータ、該第1のデータと該第4のデータ、該第2のデータと該第3のデータ、該第2のデータと該第4のデータとの間でそれぞれ排他的論理和を求め、求めた排他的論理和を連結することで、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、付記11に記載の暗号処理方法。
[付記13]
上記第3の視点に係るプログラムのとおりである。
[付記14]
前暗号化処理は、第1の拡張データと第2の拡張データとの排他的論理和を、該第1の拡張データおよび該第2の拡張データのハミングウェイトと該排他的論理和の演算結果のハミングウェイトとが同一となるように算出するXOR演算処理を含む、付記13に記載のプログラム。
[付記15]
前記XOR演算処理において、第1の拡張データがmビットの第1のデータと該第1のデータをビット反転した第2のデータをそれぞれ2個ずつ含み、第2の拡張データがmビットの第3のデータと該第3のデータをビット反転した第4のデータをそれぞれ2個ずつ含む場合、該第1のデータと該第3のデータ、該第1のデータと該第4のデータ、該第2のデータと該第3のデータ、該第2のデータと該第4のデータとの間でそれぞれ排他的論理和を求め、求めた排他的論理和を連結することで、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、付記14に記載のプログラム。
10 暗号処理装置
12 データ拡張手段
14 データ攪拌手段
16 拡張データ演算手段
22 XOR演算手段
24 左シフト演算手段
26 右シフト演算手段
32、52 AddRoundKey
33、74、82、102 排他的論理和(XOR)
34、54 SubBytes
35、55 S−box
36、56 ShiftRows
38、58 MixColumns
39 演算手段
60 暗号処理装置
62 入出力装置
64 CPU(Central Processing Unit)
66 RAM(Random Access Memory)
67 ROM(Read Only Memory)
68 プログラム
69 バス
72 F関数
84 S関数
104 S’関数

Claims (10)

  1. mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成するデータ拡張手段と、
    前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う拡張データ演算手段と、を備え、
    前記拡張データ演算手段は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算手段を備え、
    前記XOR演算手段は、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、暗号処理装置。
  2. 前記拡張データ演算手段は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最上位ビットをそれぞれゼロとするとともに、該2個の第2のデータの最下位ビットの右側に位置するビットをそれぞれ1とした後、前記拡張データを1ビット左シフトする左シフト演算手段を備える請求項1に記載の暗号処理装置。
  3. 前記拡張データ演算手段は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最下位ビットをそれぞれゼロとした後、前記拡張データを1ビット右シフトし、該右シフト前の前記拡張データにおいて該2個の第2のデータの最上位ビットに位置するビットをそれぞれ1とする右シフト演算手段を備える請求項1または2に記載の暗号処理装置。
  4. 前記暗号化処理は、AES(Advanced Encryption Standard)暗号化処理であり、
    前記データ拡張手段は、平文の少なくとも一部を構成するmビットのデータに基づいて第1の拡張データを生成するとともに、ラウンド鍵の少なくとも一部を構成するmビットのデータに基づいて第2の拡張データを生成し、
    前記拡張データ演算手段は、AddRoundKeyにおいて、前記XOR演算手段を用いて、前記第1の拡張データと前記第2の拡張データの排他的論理和を算出する、請求項3に記載の暗号処理装置。
  5. メモリとCPUを備えたコンピュータによる暗号処理方法であって、
    前記CPUが前記メモリに蓄積されたプログラムを読み出して実行することにより、mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成する生成工程と、
    前記CPUが前記メモリから読み出された前記プログラムを実行することにより、前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う暗号化工程と、を含み、
    前記暗号化工程は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算工程を含み、
    前記XOR演算工程において、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、暗号処理方法。
  6. 前記暗号化工程は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最上位ビットをそれぞれゼロとするとともに、該2個の第2のデータの最下位ビットの右側に位置するビットをそれぞれ1とした後、前記拡張データを1ビット左シフトする工程を含む、請求項5に記載の暗号処理方法。
  7. 前記暗号化工程は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最下位ビットをそれぞれゼロとした後、前記拡張データを1ビット右シフトし、該右シフト前の前記拡張データにおいて該2個の第2のデータの最上位ビットに位置するビットをそれぞれ1とする工程を含む、請求項5または6に記載の暗号処理方法。
  8. メモリとCPUを備えたコンピュータに実行させるプログラムであって、
    前記メモリから前記CPUに読み出されることにより、前記CPUに対して、mビット(mは自然数)の第1のデータに基づいて該第1のデータをビット反転した第2のデータを求め、2個の該第1のデータと2個の該第2のデータを連結してハミングウェイトが2mビットとなる4mビットの拡張データを生成する生成処理と、
    前記第1のデータのハミングウェイトによらず前記拡張データのハミングウェイトを一定に保ちつつ暗号化処理を行う暗号化処理と、を実行させ、
    前記暗号化処理は、第1の拡張データと第2の拡張データとの排他的論理和を、演算過程で生成される中間データのハミングウェイトが常に2mビットとなるように算出するXOR演算処理を含み、
    前記XOR演算処理において、第1の拡張データの第1のデータと第2の拡張データの第1のデータ、第1の拡張データの第1のデータと第2の拡張データの第2のデータ、第1の拡張データの第2のデータと第2の拡張データの第1のデータ、第1の拡張データの第2のデータと第2の拡張データの第2のデータが対応するように第1の拡張データまたは第2の拡張データを並び替え、該第1の拡張データと該第2の拡張データとの排他的論理和を算出する、プログラム。
  9. 前記暗号化処理は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最上位ビットをそれぞれゼロとするとともに、該2個の第2のデータの最下位ビットの右側に位置するビットをそれぞれ1とした後、前記拡張データを1ビット左シフトする処理を含む、請求項8に記載のプログラム。
  10. 前記暗号化処理は、前記拡張データに含まれる2個の第1のデータおよび2個の第2のデータの最下位ビットをそれぞれゼロとした後、前記拡張データを1ビット右シフトし、該右シフト前の前記拡張データにおいて該2個の第2のデータの最上位ビットに位置するビットをそれぞれ1とする処理を含む、請求項8または9に記載のプログラム。
JP2013023498A 2013-02-08 2013-02-08 暗号処理装置、暗号処理方法およびプログラム Active JP6136325B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013023498A JP6136325B2 (ja) 2013-02-08 2013-02-08 暗号処理装置、暗号処理方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013023498A JP6136325B2 (ja) 2013-02-08 2013-02-08 暗号処理装置、暗号処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014153552A JP2014153552A (ja) 2014-08-25
JP6136325B2 true JP6136325B2 (ja) 2017-05-31

Family

ID=51575468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013023498A Active JP6136325B2 (ja) 2013-02-08 2013-02-08 暗号処理装置、暗号処理方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6136325B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593527B2 (en) 2020-02-26 2023-02-28 Samsung Electronics Co., Ltd. Security circuit including dual encoder and endecryptor including the security circuit

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10673616B2 (en) * 2017-01-11 2020-06-02 Qualcomm Incorporated Lightweight mitigation against first-order probing side-channel attacks on block ciphers
EP3745403A4 (en) 2018-01-23 2021-01-13 Panasonic Semiconductor Solutions Co., Ltd. NON-VOLATILE MEMORY AND METHOD OF WRITING IT TO IT

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4565314B2 (ja) * 2004-03-12 2010-10-20 ソニー株式会社 信号処理回路および方法
JP4687775B2 (ja) * 2008-11-20 2011-05-25 ソニー株式会社 暗号処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593527B2 (en) 2020-02-26 2023-02-28 Samsung Electronics Co., Ltd. Security circuit including dual encoder and endecryptor including the security circuit

Also Published As

Publication number Publication date
JP2014153552A (ja) 2014-08-25

Similar Documents

Publication Publication Date Title
CN106788974B (zh) 掩码s盒、分组密钥计算单元、装置及对应的构造方法
JP5711681B2 (ja) 暗号処理装置
US8369516B2 (en) Encryption apparatus having common key encryption function and embedded apparatus
US8577023B2 (en) Encryption processing method, apparatus, and computer program utilizing different types of S-boxes
EP2293487A1 (en) A method of diversification of a round function of an encryption algorithm
KR101770874B1 (ko) 암호 처리 장치, 암호 처리 방법, 컴퓨터로 판독가능한 기록 매체, 및 정보 처리 장치
US10903978B2 (en) Method of encryption with dynamic diffusion and confusion layers
JP5364840B2 (ja) 暗号化装置
TW201545524A (zh) 用於以第二密文編密演算法之運算修改第一密文編密演算法的技術
De Mulder et al. Revisiting the BGE attack on a white-box AES implementation
Pimpale et al. Modifications to aes algorithm for complex encryption
Dewangan et al. Study of avalanche effect in AES using binary codes
Waqas et al. Generation of AES-like S-boxes by replacing affine matrix
JP6136325B2 (ja) 暗号処理装置、暗号処理方法およびプログラム
Kaur et al. FPGA implementation of efficient hardware for the advanced encryption standard
Rawal Advanced encryption standard (AES) and it’s working
JP2017167390A (ja) 情報処理装置、情報処理方法及びプログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
US10678709B2 (en) Apparatus and method for memory address encryption
Bajaj et al. AES algorithm for encryption
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
Nadaf et al. Hardware implementation of modified AES with key dependent dynamic S-box
Wang et al. A more practical CPA attack against present hardware implementation
Azzawi Enhancing the encryption process of advanced encryption standard (AES) by using proposed algorithm to generate S-Box
JP2013205437A (ja) 非線形関数S−boxの計算方法及び装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161101

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170404

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170417

R150 Certificate of patent or registration of utility model

Ref document number: 6136325

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150