JP4990843B2 - 暗号演算装置、その方法、及びプログラム - Google Patents

暗号演算装置、その方法、及びプログラム Download PDF

Info

Publication number
JP4990843B2
JP4990843B2 JP2008156803A JP2008156803A JP4990843B2 JP 4990843 B2 JP4990843 B2 JP 4990843B2 JP 2008156803 A JP2008156803 A JP 2008156803A JP 2008156803 A JP2008156803 A JP 2008156803A JP 4990843 B2 JP4990843 B2 JP 4990843B2
Authority
JP
Japan
Prior art keywords
bis
bit string
unit
bit
integer
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.)
Expired - Fee Related
Application number
JP2008156803A
Other languages
English (en)
Other versions
JP2009303032A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2008156803A priority Critical patent/JP4990843B2/ja
Publication of JP2009303032A publication Critical patent/JP2009303032A/ja
Application granted granted Critical
Publication of JP4990843B2 publication Critical patent/JP4990843B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ラウンド鍵を用いて暗号演算を行うための演算技術に関し、特に、DFA攻撃対策が施された演算技術に関する。
ICカード等の暗号演算装置の暗号演算中に故障を発生させ、正しい演算結果と故障が発生したときの演算結果との差を利用して、秘密鍵を不正に取得する差分故障利用解析攻撃(DFA攻撃:Differential Fault Analysis)が知られている(例えば、非特許文献1参照)。特に、近年、共通鍵暗号方式AES(Advanced Encryption Standard)の拡大鍵生成部へのDFA攻撃が提案されている(例えば、非特許文献2参照)。
AESの暗号化処理では、128ビット(16バイト)の平文データを128ビットの秘密鍵を用いて暗号化する。その暗号化処理は複数のラウンドから構成され、ラウンドごとに、拡大鍵生成部での秘密鍵に基づいた拡大鍵(ラウンド鍵)の更新と、暗号演算部での暗号対象データのSubBytes(バイトごとの置換)処理、ShiftRows(行のシフト)処理、MixColumns(列の混合)処理及びAddRoundKey(ラウンド鍵との排他的論理和)処理とが行われる。また、復号処理は暗号化処理を逆向きに実行する処理となる。
図1は、従来の拡大鍵生成部の処理を説明するための図である。また、図2は、9ラウンド目で故障が発生した場合の従来の拡大鍵生成部の処理を説明するための図である。なお、図1及び図2のBISn−1,r,c(nは1以上11以下の整数、c及びrは0以上3以下の整数)は、n−1ラウンド目のラウンド鍵Kn−1∈{0,1}128(ラウンド鍵Kは秘密鍵)の8(4・c+r)+1ビット目から8(4・c+r+1)ビット目までからなる8ビット(1バイト)のビット列を意味する。また、Rconn−1は32ビットの定数である。
図1に示すように、従来の拡大鍵生成部では、鍵長128ビットの鍵を連続する32ビットずつ4列のブロックに区切って計10ラウンドの演算を行い、11個の128ビットのラウンド鍵K,…,K10が生成される。例えば、nラウンド目の処理では、ラウンド鍵Kn−1の4列目のブロックであるビット列BISn−1,0,3,…,BISn−1,3,3をバイト単位でローテーション(RotWord)し、それをバイト単位で置換した(SubWord)ビット列と定数Rconとの排他的論理和を行い、その演算結果とラウンド鍵Kn−1の1列目のブロックであるビット列BISn−1,0,0,…,BISn−1,3,0との排他的論理和をラウンド鍵Kの1列目のブロックであるビット列BISn,0,0,…,BISn,3,0とする。そして、ラウンド鍵Kn−1のc+1列目のブロックであるビット列BISn−1,0,c+1,…,BISn―1,3,c+1と、ラウンド鍵Kのc列目のブロックであるビット列BISn,0,c,…,BISn,3,cとの排他的論理和を、ラウンド鍵Kのc+1列目のブロックであるビット列BISn,0,c+1,…,BISn,3,c+1とする。
ここで、図2に示すように、攻撃者がある時点で故意に発生させた故障により、9ラウンド目の0列目32ビットのブロックを構成するビット列BIS9,0,0,…,BIS9,3,0に誤りが生じたとする。この故障には、演算途中に発生するものや、演算結果が格納された記憶部に発生するものが含まれる。従来のアルゴリズムの場合、この誤りは9ラウンド目のラウンド鍵の1列目から3列目のすべてのビット列に伝播し、さらに、10ラウンド目の0列目から3列目のすべてのビット列にも伝播する。その結果、9,10ラウンド目のラウンド鍵K,K10のすべてのビット列に攻撃者の故意に発生させた故障の影響が及ぶ。その結果、9,10ラウンド目にラウンド鍵K,K10を用いて行われるAddRoundKey(ラウンド鍵との排他的論理和)処理の結果得られるすべてのビット列にも攻撃者の故意に発生させた故障の影響が及ぶ。10ラウンド目のAddRoundKeyの処理結果は暗号文として攻撃者が取得可能である。DFA攻撃では、攻撃者が故障を発生させた場合の暗号文と故障を発生させない場合の暗号文とを取得し、それらの差分を用い、差分が生じたバイト位置に対応する共通鍵の情報を取得する。従来の構成では、攻撃者がある時点で故意に発生させた故障の影響がその後に演算されるすべてのビット列の演算結果に及ぶため、DFA攻撃によって攻撃者に多くの情報を与えてしまう。
このような攻撃に対抗する従来の手段として、暗号演算部の他にエラー検知コードを生成する処理部を設け、暗号演算結果とエラー検知コードとを用いて暗号演算中のエラーの有無を判定したり、エラー訂正を行ったりする方法がある(例えば、非特許文献3,4参照)。
E. Biham and A. Shamir, "Differential Fault Analysis of Secret Key Cryptosystems," Advances in Cryptology, CRYPTO'97, LNCS 1294, Springer-Verlag, pp. 513-525, 1997. J. Takahashi, T. Fukunaga and K. Yamakoshi, "DFA Mechanism on the AES Key Schedule", Fourth International Workshop on Fault Diagnosis and Tolerance in Cryptography -- FDTC 2007. G. Bertoni, L. Breveglieri, I. Koren, P. Maistri and V. Piuri, "Error analysis and detection procedures for a hardware implementation of the advanced encryption standard", IEEE Transactions on Computers, Vol. 52, No.4, 2003. M. Karpovsky, K.J. Kulikowski and A. Taubin, "Robust protection against fault-injection attacks on smart cards implementing the advanced encryption standard", International Conference on Dependable Systems and Networks -- DSN'04.
しかし、従来のDFA攻撃への対抗方法では、暗号演算とは別にエラー検知やエラー訂正を行う必要があるため、暗号演算をハードウェア実装した場合には暗号回路の規模が増大してしまい、ソフトウェア実装した場合には暗号演算処理時間が増大してしまうという問題がある。このような問題は、鍵長128ビットのAESに限らず、ラウンド鍵を連続するビット列からなる複数のブロックに分断し、ブロック単位で排他的論理和演算を行ってラウンド鍵を更新し、暗号処理を行う方式に共通する問題である。
本発明はこのような点に鑑みてなされたものであり、エラー検知やエラー訂正に伴う回路規模や演算時間の増大を抑制しつつ、DFA攻撃に対する安全性を向上させることが可能な技術を提供することを目的とする。
本発明では上記課題を解決するために、ラウンド鍵を用いて暗号演算を行う暗号演算装置であって、R,C及びWを1以上の整数の定数とし、nを1以上の整数の変数とした場合における、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}を格納する記憶部と、0以上R以下の整数rを選択する選択部と、cを0以上C以下の整数の変数とし、ラウンド鍵Kn−1の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までからなるWビットのビット列をBISn−1,r,cとし、BISn−1,r(0)=BISn−1,r,0|BISn−1,r,1|…|BISn−1,r,Cとし、iを0以上C−1以下の各整数とした場合における、ビット列BISn−1,r(i)を下位にWビットシフトさせたビット列BISn−1,r(i+1)を生成する右シフト部と、0以上C以下の各jにそれぞれ対応する各ビット列BISn−1,r(j)の排他的論理和であるビット列XORBISn−1,r(C)を求める第1排他的論理和演算部と、kを−R以上R以下の整数の定数とし、記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cに対して一義的に定まるWビットのビット列をCBISn−1,r,Cとし、XORBISn−1,r(C)=XORBISn−1,r,0|XORBISn−1,r,1|...|XORBISn−1,r,Cを満たすWビットの各ビット列をXORBISn−1,r,cとした場合における、CBISn−1,r,CとXORBISn−1,r,cとの排他的論理和を各cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,cとして出力する第2排他的論理和演算部と、0以上R以下のすべての整数rについてラウンド鍵Kの各ビット列BISn,r,cが得られるまで、選択部、右シフト部、第1排他的論理和演算部、及び第2排他的論理和演算部の各処理を繰返し実行させる制御部と、を有する暗号演算装置が提供される。
ここで、右シフト部、第1排他的論理和演算部及び第2排他的論理和演算部の各処理は、連続するビット列からなる列方向(縦方向)のブロック単位で実行されるのではなく、ラウンド鍵の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列(c=0,…,C)からなる行方向(横方向)のブロック単位で実行される。そのため、攻撃者がある時点で故意に故障を発生させた場合であっても、その影響は故障を発生させたビット列と同じ行にしか及ばない。そのため、DFA攻撃によって攻撃者が得ることができる情報は、故障を発生させたビット列と同じ行に対応する部分に限られる。その結果、DFA攻撃に対する安全性が向上する。
また、本発明において好ましくは、選択部は0以上R以下のランダムな整数rを選択する。ここで、整数rをランダムな値とすることにより、右シフト部、第1排他的論理和演算部及び第2排他的論理和演算部の各処理が実行される行方向のブロック単位の選択がランダムとなる。その結果、攻撃者はラウンド鍵の生成手順を予測することが困難となり、ラウンド鍵生成手順中の所望の演算結果に故意に故障を発生させることが困難となる。その結果、DFA攻撃に対する安全性がより向上する。
また、整数rをランダムな値とする場合において、選択部で選択された整数rに対するビット列BISn,r,cが既に得られている場合には、当該整数rに対応する右シフト部、第1排他的論理和演算部、及び第2排他的論理和演算部の各処理を繰返し実行させることなく、選択部に新たなランダムな整数rを選択させる構成としてもよい。これにより、ラウンド鍵の生成過程において同じ行に対応する演算が重複して行われることを防止できるため、演算効率が向上する。
また、整数rをランダムな値とする場合において、選択部で選択された整数rに対するビット列BISn,r,cが既に得られているか否かにかかわらず、当該整数rに対応する右シフト部、第1排他的論理和演算部、及び第2排他的論理和演算部の各処理を実行させる構成としてもよい。この場合には、整数rの値に応じて繰り返し処理の有無が変化しないため、演算内容の変化に伴う消費電力の変化等によって攻撃者に演算順序等の情報が漏洩することを防止できる。その結果、安全性が向上する。
また、本形態において、記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってビット列CBISn−1,r,Cを生成する置換部をさらに有し、制御部が、選択部の処理、置換部の処理、右シフト部の処理、第1排他的論理和演算部の処理、第2排他的論理和演算部の処理の順序で各処理を繰り返し実行させ、第2排他的論理和演算部から出力されたビット列BISn,r,cが、記憶部のビット列BISn−1,r,cが格納されていた領域に上書きされる構成でもよい。この場合、kを1又は−1とし、選択部、置換部、右シフト部、第1排他的論理和演算部、及び第2排他的論理和演算部の各処理が繰り返されるたびに、選択部が(r+k)mod(R+1)を新たな整数rとして選択する構成とすることが望ましい。このようにした場合、置換部がビット列BISn−1,(r+k)mod(R+1),Cからビット列CBISn−1,r,Cを生成するときまでに、ビット列BISn−1,(r+k)mod(R+1),Cがビット列BISn,(r+k)mod(R+1),Cによって上書きされる状況を1回のみとすることができる。そのため、置換部での処理を行うために別の領域に複製しておくビット列BISn−1,(r+k)mod(R+1),Cの数を1個のみとすることができ、演算に必要な記憶領域を削減できる。
本発明では、エラー検知やエラー訂正に伴う回路規模や演算時間の増大を抑制しつつ、DFA攻撃に対する安全性を向上させることが可能となる。
以下、図面を参照して本発明の実施形態を説明する。
〔記号の定義〕
まず、本発明の実施形態で用いる記号を定義する。
α|β:αとβとのビット結合。
α(+)β:αとβとの排他的論理和。
R:予め設定された1以上の整数の定数。ラウンド鍵の行番号の最大値。AESの例ではR=3。
C:予め設定された1以上の整数の定数。ラウンド鍵の列番号の最大値。AESの例ではC=3。
W:予め設定された1以上の整数の定数。演算処理単位となるビット長。AESの例ではW=8。
N:予め設定されたラウンド数。AESの例ではN=10。
r:0以上R以下の整数。
c:0以上C以下の整数の変数。
n:1以上N以下の整数の変数。
k:予め設定された−R以上R以下の整数の定数。RotWordのローテーション方向とローテーション量に対応。AESの例ではk=1。
p:r+k mod (R+1)を除く0以上R以下の各整数。
n−1∈{0,1}:n−1ラウンド目のラウンド鍵。
L:ラウンド鍵のビット長L=W・(C+1)・(R+1)。AESの例ではL=128。
BISn−1,r,c:ラウンド鍵Kn−1の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までからなるWビットのビット列。
BISn−1,r(0):BISn−1,r,0|BISn−1,r,1|…|BISn−1,r,Cからなるビット列。
BISn−1,r(i+1):ビット列BISn−1,r(i)を下位にWビットシフトさせたビット列。
i:0以上C−1以下の各整数。
XORBISn−1,r(i+1):XORBISn−1,r(i)とビット列BISn−1,r(i+1)との排他的論理和値。XORBISn−1,r(0)=BISn−1,r(0)。
CBISn−1,r,C:ビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従って生成されたWビットのビット列。CBISn−1,r,CとBISn−1,(r+k)mod(R+1),Cとは一対一で対応する。
XORBISn−1,r,c:XORBISn−1,r(C)=XORBISn−1,r,0|XORBISn−1,r,1|...|XORBISn−1,r,Cを満たすWビットの各ビット列。
〔第1実施形態〕
次に、本発明の第1実施形態について説明する。本形態は、暗号演算が記述されたソフトウェアをCPUに実行させることにより、本形態の暗号演算を実装する形態である。
<構成>
図3(a)は、第1実施形態の暗号演算装置10のハードウェア構成を説明するためのブロック図である。
図3(a)に示すように、本形態の暗号演算装置10は、CPU(central processing unit)11と、RAM(random-access memory)12と、ROM(read-only memory)13と、EEPROM14と、乱数生成器15と、入力インタフェース(IF)16と、出力インタフェース(IF)17と、データバス18を有する。ここで、乱数生成器15は、真性乱数を生成する集積回路であってもよいし、擬似乱数生成アルゴリズムが記述されたソフトウェアをハードウェアで実行して構築されるものであってもよい。また、EEPROM14には、所定のプログラムと0ラウンド目のラウンド鍵K∈{0,1}とが格納されている。これらのプログラム及びラウンド鍵KはそれぞれRAM12に書き込まれ、さらにCPU11がRAM12に書き込まれたプログラムを実行し、ラウンド鍵Kを用いた暗号演算処理を行うことにより、本形態の暗号演算装置10が構築される。
図3(b)は、図3(a)のCPU11がRAM12に書き込まれたプログラムを実行し、ラウンド鍵Kを用いた暗号演算処理を行うことによって構築される暗号演算装置10の機能構成を説明するためのブロック図である。
図3(b)に示すように、本形態の暗号演算装置10の機能構成は、記憶部10aと、一時記憶部10bと、制御部10cと、入力部10dと、出力部10eと、選択部10fと、右シフト部10gと、排他的論理和演算部10h(第1排他的論理和演算部)と、置換部10iと、排他的論理和演算部10j(第2排他的論理和演算部)と、暗号演算部10kとを有する。なお、記憶部10aは、例えば、RAM12やEEPROM14やレジスタなどによって構成される記憶領域であり、一時記憶部10bは、例えば、レジスタやキャッシュメモリなどによって構成される記憶領域である。また、制御部10c、右シフト部10g、排他的論理和演算部10h、置換部10i、排他的論理和演算部10j、及び暗号演算部10kは、例えば、CPU11に所定のプログラムが読み込まれて構成される処理手段である。また、選択部10fは、例えば、乱数生成器15や所定のプログラムが読み込まれたCPU11によって構成される処理手段である。また、入力部10dや出力部10eは、入力IF16や出力IF17によって構成される。また、本形態の暗号演算装置10は、制御部10cの制御のもと各処理を実行する。また、各演算に必要な各データは、記憶部10aから読み出された後、一時記憶部10bに格納され、その演算結果は一時記憶部10bに格納された後、記憶部10aに格納される。しかし、以下ではその説明を省略する。
<処理>
次に、本形態の処理について説明する。以下では、本形態の処理を一般化して説明した後、本形態をAESに適用した場合の処理を具体的に例示する。また、以下では、暗号演算装置10が暗号化装置であり、暗号演算部10kがラウンド鍵を用いて暗号化を行う場合を説明する。しかし、ラウンド鍵の生成処理は暗号化を行う場合と復号を行う場合とで同じであり、以下の説明を暗号演算装置10が復号装置であり、暗号演算部10kがラウンド鍵を用いて復号を行う場合に拡張するのは容易である。
[一般化した処理内容]
図4及び図5は、第1実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。以下、これらの図を用いて本形態の一般化した処理を説明する。
まず、入力部10dに入力されたL=W・(C+1)・(R+1)ビットの平文Mが記憶部10aの領域10aaに格納される。また、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}が記憶部10aの領域10aaに格納される(ステップS1)。すなわち、ラウンド鍵Kn−1の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までからなるWビットのビット列BISn−1,r,cが、0以上R以下のすべての整数r及び0以上C以下のすべての整数cについて、領域10aaに格納される。さらに、制御部10cが、このラウンド鍵Kn−1を複製して記憶部10aの領域10abに格納する(ステップS2)。次に、選択部10fが、0以上R以下のランダムな整数rを選択する(ステップS3)。この選択は、そのつど発生させた乱数や擬似乱数に基づき選択されてもよいし、予め生成或いは設定された乱数表から選択されてもよい。選択された整数rは一時記憶部10bに格納され、以後必要に応じて各処理部に読み出される。次に、制御部10cが、r+k mod (R+1)を除く0以上R以下の各整数pに対応する各ビット列BISn−1,p,Cを領域10aaから読み込み、それらを複製してR・Wビットの領域10acに格納する(ステップS4)。
次に、置換部10iが、領域10aa又は領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってWビットのビット列CBISn−1,r,Cを生成し、生成したビット列CBISn−1,r,Cによって、その領域10aa又は領域10acを更新する(ステップS5)。なお、所定の規則とは、ビット列BISn−1,(r+k)mod(R+1),Cを、それと一対一に対応するビット列CBISn−1,r,Cに置換する規則をいう。すなわち、ビット列CBISn−1,r,Cはビット列BISn−1,(r+k)mod(R+1),Cに対して一義的に定まる。また、置換部10iの具体的な処理の例は、予め設定された置換テーブルに従ってビット列BISn−1,(r+k)mod(R+1),Cをビット列CBISn−1,r,Cに置換する処理や、予め設定された演算式に従ってビット列BISn−1,(r+k)mod(R+1),Cをビット列CBISn−1,r,Cに置換する処理である。また、nラウンド目で初めてステップS5の処理を行う場合には、ビット列BISn−1,(r+k)mod(R+1),Cは必ず領域10aaに格納されているため、置換部10iは領域10aaに格納されたビット列BISn−1,(r+k)mod(R+1),Cを用いて本ステップの処理を行う。一方、nラウンド目でステップS5の処理を2回目以降に行う場合には、ビット列BISn−1,(r+k)mod(R+1),Cが領域10aaに格納されているとは限らないため、置換部10iは領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cを用いて本ステップの処理を行う。ただし、nラウンド目でステップS5の処理を2回目以降に行う場合にビット列BISn−1,(r+k)mod(R+1),Cが領域10aaに格納されていることが判定できる場合には、置換部10iが領域10aaに格納されたビット列BISn−1,(r+k)mod(R+1),Cを用いて本ステップの処理を行う処理も可能である。また、攻撃者がステップS5の処理に故障を発生させることも想定されるため、ステップS5で正しい処理が行われたことを確認する検算処理を追加すると好適である。検算処理の例は、置換部10iがビット列CBISn−1,r,Cの逆演算(逆変換)を実行し、その結果がビット列BISn−1,(r+k)mod(R+1),Cになることを確認する処理や、置換部10iがビット列BISn−1,(r+k)mod(R+1),Cをビット列CBISn−1,r,Cに変換する処理を複数回繰り返し、それらが同一の結果となることを確認する処理などである。
次に、制御部10cが、変数iを0に設定し、それを一時記憶部10bに格納する(ステップS6)。その後、右シフト部10gが、領域10aaに格納されたビット列BISn−1,r(i)を下位に(右に)Wビットシフトさせたビット列BISn−1,r(i+1)を生成する。なお、BISn−1,r(0)=BISn−1,r,0|BISn−1,r,1|…|BISn−1,r,Cである。また、ビット列BISn−1,r(i)を下位にWビットシフトさせるとは、ビット列BISn−1,r(i)の下位Wビットが削除され、残りのビットが下位へWビットシフトされ、上位にWビットの0が付加されたビット列を生成する処理を意味する(具体例は後述する)。CPU11がこのような演算機能を備えている場合には、その演算命令によってこの処理を行ってもよいし、また、ビット列BISn−1,r(i)の下位Wビット以外のビットを複製し、複製されたビット列の上位にWビットの0を付加することによってこの処理を行ってもよい。このように生成されたビット列BISn−1,r(i+1)は、領域10aaのビット列BISn−1,r(i)が格納されていた位置に上書きされ、領域10aaが更新される(ステップS7)。
次に、排他的論理和演算部10hが、領域10abに格納されたビット列XORBISn−1,r(i)と、領域10aaに格納されたビット列BISn−1,r(i+1)との排他的論理和値XORBISn−1,r(i+1)=XORBISn−1,r(i)(+)BISn−1,r(i+1)を計算する。なお、XORBISn−1,r(0)=BISn−1,r(0)である。算出されたビット列XORBISn−1,r(i+1)は、領域10abのビット列XORBISn−1,r(i)が格納されていた位置に上書きされ、領域10abが更新される(ステップS8)。
次に、制御部10cが、一時記憶部10bに格納しておいた変数iの値を参照し、i=C−1であるか否かを判定する(ステップS9)。ここで、i=C−1でないと判定された場合、制御部10cは、i+1を新たな変数iの値として変数iを更新し、この変数iを一時記憶部10bに格納して、処理をステップS7に戻す(ステップS10)。
一方、ステップS9でi=C−1であると判定された場合には、排他的論理和演算部10jが、領域10aa又は領域10acに格納されたビット列CBISn−1,r,Cと、領域10abに格納されたWビットのビット列XORBISn−1,r,cとを読み込み、それらの排他的論理和を各c=0,1,…,Cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,c=CBISn−1,r,C(+)XORBISn−1,r,cとし、ビット列BISn,r,cで領域10abを更新する(ステップS11)。なお、ビット列XORBISn−1,r,cは、それぞれ、XORBISn−1,r(C)=XORBISn−1,r,0|XORBISn−1,r,1|...|XORBISn−1,r,Cを満たすWビットのビット列である。
次に、制御部10cが、0以上R以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みであるか否かを判定する(ステップS12)。ここで、0以上R以下のすべての整数rに対応するビット列BISn,r,cがそれぞれ生成済みであると判定された場合には、nラウンド目のラウンド鍵生成処理が終了する。
一方、0以上R以下の何れかの整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、選択部10fがステップS3と同様に0以上R以下の新たな整数rを選択する。選択された整数rは一時記憶部10bに格納され、これによって一時記憶部10bに格納された整数rが更新され、以後必要に応じて各処理部に読み出される。次に、制御部10cが、ステップS13で選択された整数rに対応するビット列BISn,r,cが生成済みであるか否かを判定する(ステップS14)。ここで、ステップS13で選択された整数rに対応するビット列BISn,r,cが生成済みであると判定された場合には、ステップS13の処理に戻る。一方、ステップS13で選択された整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、制御部10cが、領域10abのビット列を複製して領域10aaに格納し(ステップS15)、処理をステップS5に戻す。
以上のように生成された各ラウンドのラウンド鍵K0,,…,Kと平文Mとは暗号演算部10kに読み込まれ、暗号演算部10kは、AES等の所定の暗号化手順に従い、ラウンド鍵K0,,…,Kを用いて平文Mを暗号化し、その暗号文enc(M)を領域10adに格納する。当該暗号演算部10kの暗号演算処理は、すべてのラウンド鍵K0,,…,Kが生成された後にまとめて実行されてもよいし、ラウンド鍵Kを生成したら1ラウンド目の暗号演算を行い、ラウンド鍵Kを生成したら2ラウンド目の暗号演算を行いというように、各ラウンド鍵が生成されるたびにそのラウンドの暗号演算処理が実行されてもよい。領域10adに格納された暗号文enc(M)は出力部10eに送られ、そこから出力される。
[本形態をAESに適用した場合の処理内容]
次に、第1実施形態をAESに適用した場合の処理を説明する。この場合、R及びCは3であり、Wは8であり、Lは128であり、kは1であり、CBISn−1,r,Cは、ビット列BISn−1,(r+1)mod4,3を所定の置換規則に従って置換した8ビットのビット列である。
図6は、第1実施形態をAESに適用した場合のr=2における処理の全体を示す図である。また、図7から図11は、第1実施形態をAESに適用した場合に、記憶部10aの各領域10aa〜10acに格納されるビット列を例示した図である。また、図12(a)は、第1実施形態をAESに適用した場合に選択部10fで選択される整数rの一例を説明するための図であり、図12(b)から図12(e)は、選択された各整数rに対応する処理対象を示す図である。以下、これらの図を用いて本形態をAESに適用した場合における、nラウンド目のラウンド鍵の生成処理を説明する。
このラウンド鍵の生成処理の例では、まず、n−1ラウンド目の128ビット長のラウンド鍵Kn−1∈{0,1}128が記憶部10aの領域10aaに格納される(ステップS1)。すなわち、ラウンド鍵Kn−1の上位8(4・c+r)+1ビット目から8(4・c+r+1)ビット目までからなる8ビットのビット列BISn−1,r,cが、0以上3以下のすべての整数r及び0以上3以下のすべての整数cについて、領域10aaに格納される(図6、図7(a))。さらに、制御部10cが、このラウンド鍵Kn−1を複製して記憶部10aの領域10abに格納する(ステップS2、図7(a))。次に、選択部10fが、0以上3以下のランダムな整数rを選択する(ステップS3)。この例ではr=2が選択されたとする(図12(a))。次に、制御部10cが、2+1 mod (3+1)=3を除く0以上3以下の各整数p=0,1,2に対応する各ビット列BISn−1,p,3を領域10aaから読み込み、それらを複製して24ビットの領域10acに格納する(ステップS4、図7(a))。
次に、置換部10iが、領域10aaに格納されたビット列BISn−1,(2+1)mod(3+1),3=BISn−1,3,3から所定の置換規則に従って8ビットのビット列CBISn−1,2,3を生成し(SubWord処理)、生成したビット列CBISn−1,2,3によって、その領域10aaを更新する(ステップS5、図6、図7(b))。
次に、制御部10cが、変数iを0に設定し、それを一時記憶部10bに格納する(ステップS6)。その後、右シフト部10gが、領域10aaに格納されたビット列BISn−1,2(0)=BISn−1,2,0|BISn−1,2,1|…|BISn−1,2,3(図12(b))を下位に8ビットシフトさせたビット列BISn−1,2(1)を生成する(図6)。このように生成されたビット列BISn−1,r(1)は、領域10aaのビット列BISn−1,r(0)が格納されていた位置に上書きされ、領域10aaが更新される(ステップS7、図7(b))。
次に、排他的論理和演算部10hが、領域10abに格納されたビット列XORBISn−1,2(0)=BISn−1,2(0)と、領域10aaに格納されたビット列BISn−1,2(1)との排他的論理和値XORBISn−1,2(1)=BISn−1,2(0)(+)BISn−1,2(1)を計算する(図6)。算出されたビット列XORBISn−1,2(1)は、領域10abのビット列XORBISn−1,2(0)=BISn−1,2(0)が格納されていた位置に上書きされ、領域10abが更新される(ステップS8、図7(b))。
次に、制御部10cが、一時記憶部10bに格納しておいた変数iの値を参照し、i=2であるか否かを判定する(ステップS9)。ここで、i=2でないため、1を新たな変数iの値として変数iを更新し、この変数iを一時記憶部10bに格納して、処理をステップS7に戻す(ステップS10)。その後、i=1,2についてステップS7、S8の処理が繰り返された後(図6、図8、図9)、ステップS9でi=2であると判定される。これにより、排他的論理和演算部10jが、領域10aaに格納されたビット列CBISn−1,2,3と、領域10abに格納された8ビットのビット列XORBISn−1,2,cとを読み込み、それらの排他的論理和を各c=0,1,2,3について計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}128の上位8(4・c+2)+1ビット目から8(4・c+2+1)ビット目までのビット列BISn,2,c=CBISn−1,2,3(+)XORBISn−1,2,cとし、ビット列BISn,2,cで領域10abを更新する(ステップS11、図6、図10)。
次に、0以上3以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みではないため(ステップS12)、選択部10fがステップS3と同様に0以上3以下の新たな整数rを選択する。ここでは、r=0が選択されたとする(図12(a))。ここで、ステップS13で選択された整数r=0に対応するビット列BISn,0,cは生成済みではないため(ステップS14)、制御部10cが、領域10abのビット列を複製して領域10aaに格納し(ステップS15、図11)、処理をステップS5に戻す。
その後、r=0(図12(c))についてステップS5からS15の処理が行われ、さらに、r=1(図12(d))についてステップS5からS13の処理が行われる。ここで、r=1についてのステップS13でr=0が選択されたため、ステップS13の処理がやり直され、次に選択されたr=3(図12(e))についてステップS5からS12の処理が実行され、0以上3以下のすべての整数rに対応するビット列BISn,r,cが生成済みとなり、nラウンド目のラウンド鍵生成処理が終了する。
<本形態の特徴>
図13及び図14は、第1実施形態をAESに適用した場合のラウンド鍵生成過程に誤りが混入された様子を例示する図である。
[32ビットの誤りの混入]
9ラウンド目のラウンド鍵の生成中に、攻撃者が外部から暗号演算装置10の電源電圧を故意に変動させ、図13に示すように9ラウンド目のr=1の行の32ビットに故障が起きたとする。しかし、本形態での処理は列単位で行われ、処理時に記憶部10aに格納されるデータも列単位であるため(図7から図11)、これによって9ラウンド目では列方向に同じ誤り値が伝播することはないため、この誤り値の情報を得ることができるバイト数が減少する。このことにより攻撃時の解析が困難となるため、DFA攻撃に対する安全性が向上する。
[16ビットの誤りの混入]
9ラウンド目のラウンド鍵の生成中に、攻撃者が外部から暗号演算装置10の電源電圧を故意に変動させ、図13に示すように9ラウンド目のr=1の行のビット列BIS9,1,0及びBIS9,1,1の16ビットに故障が起きたとする。しかし、本形態での処理は列単位で行われ、処理時に記憶部10aに格納されるデータも列単位であるため(図7から図11)、これによって挿入された16ビットの誤りは10ラウンド目のr=1の行のみに伝播し、列方向に伝播することはない。よって、10ラウンド目のラウンド鍵に伝播する誤りはr=1の行のみであり、その他の行には誤りが生じない。そのため、このDFA攻撃によって攻撃者が得ることができる情報は、故障を発生させたr=1の行に対応する部分に限られる。その結果、1度の故障の挿入によって攻撃者が得ることができる情報量が小さくなり、攻撃時の解析が困難となるため、DFA攻撃に対する安全性が向上する。
[ランダムな整数rを選択することによる特徴]
本形態では、処理対象の行を特定する整数rをランダムな整数とした。これにより、ラウンド鍵の生成時におけるラウンド鍵の各行の処理順序がランダムになり、攻撃者が狙う特定の位置のビットに故障を起こさせることが困難となる。その結果、攻撃者はDFA攻撃によって秘密鍵を取得することが困難となる。
以上のように、本形態の方法では、エラー検知やエラー訂正を行うことなくDFA攻撃を抑制することができるため、本形態のようなソフトウェア実装では、エラー検知やエラー訂正に伴う演算処理の増加をまねくことなく、DFA攻撃に対する安全性を向上させることができる。
〔第2実施形態〕
次に、本発明の第2実施形態について説明する。
第1実施形態と同様、本形態でもnラウンド目に生成されたビット列BISn,r,cは、記憶部10aのビット列BISn−1,r,cが格納されていた領域10aaに上書きされる。また、ビット列BISn,r,cを求めるためには、ビット列BISn−1,r,cとビット列BISn−1,(r+k)mod(R+1),Cとが必要である。ここで、例えば、k=1であり、ビット列BISn,1,cを求め、それらをビット列BISn−1,r,cが格納されていた領域10aaに上書きした後、r=0が選択され、ビット列BISn,0,cを求める処理を実行する場合を想定する。この場合、ビット列BISn,0,cを求めるためにビット列BISn−1,0,cとビット列BISn−1,1,Cとが必要であるが、領域10aaのビット列BISn−1,1,Cはビット列BISn,1,Cによって上書きされている。そのため、第1実施形態では、別の領域10acを確保し、そこにビット列BISn−1,1,C等を格納していた。
本形態では、k=1又は−1とし、選択部10f、置換部10i、右シフト部10g、排他的論理和演算部10h,10jの各処理が繰り返されるたびに、選択部10fは(r+k)mod(R+1)を新たな整数rとして選択する。これにより、各ラウンドの最後の行を除き、ビット列BISn−1,(r+k)mod(R+1),CがBISn,(r+k)mod(R+1),Cによって上書きされる前にビット列BISn,r,cの生成に利用される。その結果、領域10acに格納するデータ量を削減できる。以下では、第1実施形態との相違点のみを説明する。
図15は、第2実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。また、図16は、第2実施形態のnラウンド目における各処理対象を説明するための図である。以下、これらの図を用い、第2実施形態の第1実施形態との相違点を説明する。
図15に示すように、本形態では第1実施形態のステップS1からS3の処理を実行し、制御部10cが、ビット列BISn−1,r,Cを複製し、それを記憶部10aのWビットの領域10acに格納する(ステップS104)。次に、第1実施形態のステップS5と同様の処理を実行する。ただし、本形態の置換部10iは、原則、領域10aaに格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってWビットのビット列CBISn−1,r,Cを生成し、生成したビット列CBISn−1,r,Cによって、その領域10aaを更新する(ステップS5)。そして、領域10aaにビット列BISn−1,(r+k)mod(R+1),Cが存在しない最後の列の処理時にのみ、置換部10iは、領域10aaに格納されたビット列BISn−1,(r+k)mod(R+1),Cからビット列CBISn−1,r,Cを生成する。
その後、第1実施形態のステップS6からS12の処理が実行され、ステップS12で0以上R以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みであると判定された場合には、nラウンド目のラウンド鍵生成処理が終了し、生成済みでないと判定された場合には、選択部10fが(r+k)mod(R+1)を新たな整数rとして選択する(ステップS113)。選択された整数rは一時記憶部10bに格納され、これによって一時記憶部10bに格納された整数rが更新され、以後必要に応じて各処理部に読み出される。次に、制御部10cが、領域10abのビット列を複製して領域10aaに格納し(ステップS15)、処理をステップS5に戻す。
以上の処理により、領域10acに格納すべきデータ量を削減することができる。例えば、図16に例示するように、k=1、C=R=3であり、ステップS3でr=1が選択された場合には、処理対象の列はr=1、2、3、0の順序で変化する。この場合、各r=1、2、3に対応するビット列BISn,r,cを求める時点(図16(a)から(c))では、それらを求めるために必要な領域10aaのビット列BISn−1,(r+1)mod 4,3は、BISn,(r+1)mod 4,cによって上書きされておらず、利用可能な状態にある。一方、各r=0に対応するビット列BISn,0,cを求める時点(図16(d))では、それらを求めるために必要な領域10aaのビット列BISn−1,1,3は、図16(a)の処理結果であるBISn,1,cによって上書きされており、利用できない。よって、最後の行に対応するビット列BISn,0,cを求める際には、ステップS104で領域10acに格納しておいたビット列BISn−1,1,3を用いる。すなわち、この場合に領域10acに格納しておく必要があるのはビット列BISn−1,1,3のみである。
〔第3実施形態〕
次に、本発明の第3実施形態について説明する。本形態は、第1実施形態の変形例であり、選択された整数rに対するビット列BISn,r,cが既に得られているか否かにかかわらず、当該整数rに対応する各処理を実行する点が第1実施形態との相違点である。すなわち、ステップS14の判定を行わない。以下では、第1実施形態との相違点のみを説明する。
図17は、第3実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。また、図18から図22は、第3実施形態をAESに適用した場合に、記憶部10aの各領域10aa〜10acに格納されるビット列を例示した図である。第3実施形態をAESに適用した場合、R及びCは3であり、Wは8であり、Lは128であり、kは1であり、CBISn−1,r,Cは、ビット列BISn−1,(r+1)mod4,3を所定の置換規則に従って置換した8ビットのビット列である。
本形態におけるnラウンド目のラウンド鍵の生成処理では、まず、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}が記憶部10aの領域10acに格納される(ステップS201)。また、制御部10cが、このラウンド鍵Kn−1を複製して記憶部10aの領域10aa,10abに格納する(ステップS302,S2、図18(a))。
次に、選択部10fが、0以上R以下のランダムな整数rを選択する(ステップS3)。なお、図18から図22の例ではr=2が選択されている。
次に、置換部10iが、領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってWビットのビット列CBISn−1,r,Cを生成し、生成したビット列CBISn−1,r,Cによって、その領域10aaを更新する(ステップS205、図18(b))。
その後、第1実施形態のステップS6からS11が実行された後(図18(b)〜図21)、制御部10cが、0以上R以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みであるか否かを判定する(ステップS12)。ここで、0以上R以下のすべての整数rに対応するビット列BISn,r,cがそれぞれ生成済みであると判定された場合には、nラウンド目のラウンド鍵生成処理が終了する。
一方、0以上R以下の何れかの整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、制御部10cが、領域10abのビット列を複製して領域10aaに格納し(ステップS15、図22)、処理をステップS3に戻す。
<本形態の特徴>
以上のように、本形態は、選択された整数rに対するビット列BISn,r,cが既に得られているか否かにかかわらず、0以上R以下のすべての整数rに対応するビット列BISn,r,cが生成されていない限り、当該整数rに対応する各処理を実行することとした。この場合、整数rの値に応じて繰り返し処理の有無が変化しないため、演算内容の変化に伴う消費電力の変化等によって攻撃者に演算順序等の情報が漏洩することを防止できる。その結果、安全性が向上する。
〔第4実施形態〕
次に、本発明の第4実施形態について説明する。本形態は、第1実施形態の変形例であり、記憶部へのデータの格納方法を工夫することにより、ランダムな整数rを用いつつ、使用する記憶領域を第1実施形態よりも削減可能な形態である。以下では、第1実施形態との相違点を中心に説明する。
図23及び図24は、第4実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。また、図25から図28は、第4実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。
本形態では、まず、第1実施形態のステップS1からS3の処理を実行した後、制御部10cが、領域10aaに格納されたビット列BISn−1,r,Cを複製し、それをWビットの領域10acに格納する(図25(a))。その後、第1実施形態のステップS6からS10の処理を実行する(図25(b)から図27)。ここで、ステップS9でi=C−1と判定された場合には、置換部10iが、領域10aa又は領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってWビットのビット列CBISn−1,r,Cを生成し、最初に何れかのビット列BISn−1,r,cが格納されていた領域10aaの領域に上書きする(ステップS255、図28)。そして、排他的論理和演算部10jが、領域10aaに格納されたビット列CBISn−1,r,Cと、領域10abに格納されたWビットのビット列XORBISn−1,r,cとを読み込み、それらの排他的論理和を各c=0,1,…,Cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,c=CBISn−1,r,C(+)XORBISn−1,r,cとし、ビット列BISn,r,cで領域10abを更新する(ステップS261、図28)。その後、第1実施形態のステップS12からS14までの処理を実行し、ステップS14でステップS13で選択された整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、制御部10cが、ビット列BISn−1,r,Cを複製し、それを領域10aaの使用済みの領域に上書きし、処理をステップS6に戻す。なお、領域10aaの使用済みの領域とは、ステップS7からS10の処理で既に使用された領域10aaの領域を意味する。このように、シフト演算の終了後にビット列CBISn−1,r,Cを生成し、領域10aaの使用済みの領域を利用することにより、必要な領域10acのビット数をWビットに削減することができる。
〔第5実施形態〕
次に、本発明の第5実施形態について説明する。本形態は、第1,2実施形態の変形例であり、暗号演算を実行する暗号プロセッサによって本形態の暗号演算を実装し、さらに、第2実施形態と同様に、k=1又は−1とし、選択部10f、置換部10i、右シフト部10g、排他的論理和演算部10h,10jの各処理が繰り返されるたびに、選択部10fは(r+k)mod(R+1)を新たな整数rとして選択する形態である。以下では、第1,2実施形態との相違点を中心に説明する。
<構成>
図29は、第5実施形態の暗号演算装置110のハードウェア構成を説明するためのブロック図である。
図29に示すように、本形態の暗号演算装置110は、CPU(central processing unit)11と、RAM(random-access memory)12と、ROM(read-only memory)13と、EEPROM14と、乱数生成器15と、入力インタフェース(IF)16と、出力インタフェース(IF)17と、データバス18と暗号プロセッサ111とを有する。また、EEPROM14には、所定のプログラムと0ラウンド目のラウンド鍵K∈{0,1}とが格納されている。これらのプログラム及びラウンド鍵KはそれぞれRAM12に書き込まれ、さらにCPU11がRAM12に書き込まれたプログラムを実行し、ラウンド鍵Kを用いた暗号演算処理を行うことにより、本形態の暗号演算装置110が構築される。なお、本形態の暗号演算装置110によって構築される機能構成は図3(b)に示したのと同様である。
<処理>
次に、本形態の処理について説明する。以下では、本形態の処理を一般化して説明した後、本形態をAESに適用した場合の処理を具体的に例示する。
[一般化した処理内容]
図30は、第5実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。以下、この図を用いて本形態の一般化した処理を説明する。
本形態のnラウンド目のラウンド鍵の生成処理では、まず、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}が記憶部10aの領域10aaに格納される(ステップS1)。次に、選択部10fが、0以上R以下のランダムな整数rを選択する(ステップS3)。次に、制御部10cが、ビット列BISn−1,r,Cを複製し、それを記憶部10aのWビットの領域10acに格納し(ステップS104)、さらに、ビット列BISn−1,r,0, BISn−1,r,1,…,BISn−1,r,Cを複製し、それらを領域10abに格納する(ステップS304)。
次に、置換部10iが、領域10aa又は領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってWビットのビット列CBISn−1,r,Cを生成し、生成したビット列CBISn−1,r,Cを領域10acに格納する(ステップS305)。なお、nラウンド目で最後にステップS305の処理を行う場合以外には、ビット列BISn−1,(r+k)mod(R+1),Cは必ず領域10aaに格納されているため、置換部10iは領域10aaに格納されたビット列BISn−1,(r+k)mod(R+1),Cを用いて本ステップの処理を行う。一方、nラウンド目で最後にステップS305の処理を行う場合には、ビット列BISn−1,(r+k)mod(R+1),Cが領域10aaに格納されていないため、置換部10iは領域10acに格納されたビット列BISn−1,(r+k)mod(R+1),Cを用いて本ステップの処理を行う。また、攻撃者がステップS305の処理に故障を発生ることも想定されるため、ステップS305で正しい処理が行われたことを確認する検算処理を追加すると好適である。
次に、制御部10cが、変数iを0に設定し、それを一時記憶部10bに格納する(ステップS6)。その後、右シフト部10gが、領域10abに格納されたビット列BISn−1,r(i)を下位にWビットシフトさせたビット列BISn−1,r(i+1)を生成する。このように生成されたビット列BISn−1,r(i+1)は、領域10abのビット列BISn−1,r(i)が格納されていた位置に上書きされ、領域10abが更新される(ステップS307)。
次に、排他的論理和演算部10hが、領域10aaに格納されたビット列XORBISn−1,r(i)と、領域10abに格納されたビット列BISn−1,r(i+1)との排他的論理和値XORBISn−1,r(i+1)=XORBISn−1,r(i)(+)BISn−1,r(i+1)を計算する。算出されたビット列XORBISn−1,r(i+1)は、領域10aaのビット列XORBISn−1,r(i)が格納されていた位置に上書きされ、領域10aaが更新される(ステップS308)。
次に、制御部10cが、一時記憶部10bに格納しておいた変数iの値を参照し、i=C−1であるか否かを判定する(ステップS9)。ここで、i=C−1でないと判定された場合、制御部10cは、i+1を新たな変数iの値として変数iを更新し、この変数iを一時記憶部10bに格納して、処理をステップS307に戻す(ステップS10)。
一方、ステップS9でi=C−1であると判定された場合には、排他的論理和演算部10jが、領域10acに格納されたビット列CBISn−1,r,Cと、領域10aaに格納されたWビットのビット列XORBISn−1,r,cとを読み込み、それらの排他的論理和を各c=0,1,…,Cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,c=CBISn−1,r,C(+)XORBISn−1,r,cとし、ビット列BISn,r,cで領域10aaを更新する(ステップS311)。
次に、制御部10cが、0以上R以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みであるか否かを判定する(ステップS12)。ここで、0以上R以下のすべての整数rに対応するビット列BISn,r,cがそれぞれ生成済みであると判定された場合には、nラウンド目のラウンド鍵生成処理が終了する。一方、0以上R以下の何れかの整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、選択部10fが(r+k)mod(R+1)を新たな整数rとして選択し(ステップS113)、処理がステップS304に戻される。
[本形態をAESに適用した場合の処理内容]
次に、第5実施形態をAESに適用した場合の処理を説明する。この場合、R及びCは3であり、Wは8であり、Lは128であり、kは1であり、CBISn−1,r,Cは、ビット列BISn−1,(r+1)mod4,3を所定の置換規則に従って置換した8ビットのビット列である。
図31から図34は、第5実施形態をAESに適用した場合に、記憶部10aの各領域10aa〜10acに格納されるビット列を例示した図である。以下、これらの図を用いて本形態をAESに適用した場合における、nラウンド目のラウンド鍵の生成処理を説明する。
このラウンド鍵の生成処理の例では、まず、n−1ラウンド目の128ビット長のラウンド鍵Kn−1∈{0,1}128が記憶部10aの領域10aaに格納される(ステップS1)。すなわち、ビット列BISn−1,r,c(0≦r,c≦3を満たすすべてのr,c)が領域10aaに格納される(図31(a))。次に、選択部10fが、0以上3以下のランダムな整数rを選択する(ステップS3)。この例ではr=1が選択されたとする。
次に、制御部10cが、ビット列BISn−1,1,3を複製し、それを記憶部10aの8ビットの領域10acに格納し(ステップS104)、さらに、ビット列BISn−1,1,0, BISn−1,1,1,BISn−1,1,2,BISn−1,1,3を複製し、それらを領域10abに格納する(ステップS304、図31(a))。
次に、置換部10iが、領域10aaに格納されたビット列BISn−1,2,3から所定の規則に従って8ビットのビット列CBISn−1,1,3を生成し、生成したビット列CBISn−1,1,3を領域10acに格納する(ステップS305、図31(a))。
次に、制御部10cが、変数iを0に設定し、それを一時記憶部10bに格納する(ステップS6)。その後、右シフト部10gが、領域10abに格納されたビット列BISn−1,1(0)=BISn−1,1,0|BISn−1,1,1|BISn−1,1,2|BISn−1,1,3を下位に8ビットシフトさせたビット列BISn−1,1(1)=0|BISn−1,1,0|BISn−1,1,1|BISn−1,1,2を生成する。このように生成されたビット列BISn−1,1(1)は、領域10abのビット列BISn−1,1(0)が格納されていた位置に上書きされ、領域10abが更新される(ステップS307、図31(b))。
次に、排他的論理和演算部10hが、領域10aaに格納されたビット列XORBISn−1,1(0)=BISn−1,1,0|BISn−1,1,1|BISn−1,1,2|BISn−1,1,3と、領域10abに格納されたビット列BISn−1,r(1)=0|BISn−1,1,0|BISn−1,1,1|BISn−1,1,2との排他的論理和値XORBISn−1,1(1)=XORBISn−1,1(0)(+)BISn−1,1(1)を計算する。算出されたビット列XORBISn−1,1(1)は、領域10aaのビット列XORBISn−1,1(0)が格納されていた位置に上書きされ、領域10aaが更新される(ステップS308、図31(b))。
次に、制御部10cが、一時記憶部10bに格納しておいた変数iの値を参照し、i=2であるか否かを判定する(ステップS9)。ここで、i=2でないため、制御部10cは、1を新たな変数iの値として変数iを更新し、この変数iを一時記憶部10bに格納して、処理をステップS307に戻す(ステップS10)。その後、i=1,2についてステップS307、S308の処理が繰り返された後(図32、図33)、ステップS9でi=2であると判定される。これにより、排他的論理和演算部10jが、領域10acに格納されたビット列CBISn−1,1,3と、領域10aaに格納されたWビットのビット列XORBISn−1,1,3とを読み込み、それらの排他的論理和を各c=0,1,2,3について計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}のビット列BISn,1,cとし、領域10aaを更新する(ステップS311、図34)。
次に、制御部10cが、0以上R以下のすべての整数rにそれぞれ対応するビット列BISn,r,cが生成済みであるか否かを判定する(ステップS12)。ここで、0以上3以下のすべての整数rに対応するビット列BISn,r,cがそれぞれ生成済みであると判定された場合には、nラウンド目のラウンド鍵生成処理が終了する。一方、0以上3以下の何れかの整数rに対応するビット列BISn,r,cが生成済みでないと判定された場合には、選択部10fが2を新たな整数rとして選択し(ステップS113)、処理がステップS304に戻される。
その後、r=2,3,0についてステップS304からS311の処理が行われ、0以上3以下のすべての整数rに対応するビット列BISn,r,cが生成済みとなり、nラウンド目のラウンド鍵生成処理が終了する。
<本形態の特徴>
本形態の方法では、エラー検知やエラー訂正を行うことなくDFA攻撃を抑制することができるため、本形態のようなハードウェア実装では、エラー検知やエラー訂正を行うための回路を増設することに伴う回路規模の増大をまねくことなく、DFA攻撃に対する安全性を向上させることができる。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、ラウンド鍵が生成されるまで各データを上書きすることなく記憶部に格納するなど、上述した以外の方法によって各データを記憶部に格納することとしてもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
本発明は、例えば、AESのDFA防止対策に利用できる。
図1は、従来の拡大鍵生成部の処理を説明するための図である。 図2は、9ラウンド目で故障が発生した場合の従来の拡大鍵生成部の処理を説明するための図である。 図3(a)は、第1実施形態の暗号演算装置のハードウェア構成を説明するためのブロック図である。図3(b)は、図3(a)のCPU11がRAMに書き込まれたプログラムを実行し、ラウンド鍵Kを用いた暗号演算処理を行うことによって構築される暗号演算装置の機能構成を説明するためのブロック図である。 図4は、第1実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図5は、第1実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図6は、第1実施形態をAESに適用した場合のr=2における処理の全体を示す図である。 図7は、第1実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図8は、第1実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図9は、第1実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図10は、第1実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図11は、第1実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図12(a)は、第1実施形態をAESに適用した場合に選択部で選択される整数rの一例を説明するための図であり、図12(b)から図12(e)は、選択された各整数rに対応する処理対象を示す図である。 図13は、第1実施形態をAESに適用した場合のラウンド鍵生成過程に誤りが混入された様子を例示する図である。 図14は、第1実施形態をAESに適用した場合のラウンド鍵生成過程に誤りが混入された様子を例示する図である。 図15は、第2実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図16は、第2実施形態のnラウンド目における各処理対象を説明するための図である。 図17は、第3実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図18は、第3実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図19は、第3実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図20は、第3実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図21は、第3実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図22は、第3実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図23は、第4実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図24は、第4実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図25は、第4実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図26は、第4実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図27は、第4実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図28は、第4実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図29は、第5実施形態の暗号演算装置のハードウェア構成を説明するためのブロック図である。 図30は、第5実施形態のnラウンド目におけるラウンド鍵の生成処理を説明するためのフローチャートである。 図31は、第5実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図32は、第5実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図33は、第5実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。 図34は、第5実施形態をAESに適用した場合に、記憶部の各領域に格納されるビット列を例示した図である。
符号の説明
10,110 暗号演算装置

Claims (12)

  1. ラウンド鍵を用いて暗号演算を行う暗号演算装置であって、
    R,C及びWを1以上の整数の定数とし、nを1以上の整数の変数とした場合における、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}を格納する記憶部と、
    0以上R以下の整数rを選択する選択部と、
    cを0以上C以下の整数の変数とし、ラウンド鍵Kn−1の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までからなるWビットのビット列をBISn−1,r,cとし、BISn−1,r(0)=BISn−1,r,0|BISn−1,r,1|…|BISn−1,r,Cとし、iを0以上C−1以下の各整数とした場合における、ビット列BISn−1,r(i)を下位にWビットシフトさせたビット列BISn−1,r(i+1)を生成する右シフト部と、
    0以上C以下の各jにそれぞれ対応する各ビット列BISn−1,r(j)の排他的論理和であるビット列XORBISn−1,r(C)を求める第1排他的論理和演算部と、
    kを−R以上R以下の整数の定数とし、前記記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cに対して一義的に定まるWビットのビット列をCBISn−1,r,Cとし、XORBISn−1,r(C)=XORBISn−1,r,0|XORBISn−1,r,1|...|XORBISn−1,r,Cを満たすWビットの各ビット列をXORBISn−1,r,cとした場合における、CBISn−1,r,CとXORBISn−1,r,cとの排他的論理和を各cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,cとして出力する第2排他的論理和演算部と、
    0以上R以下のすべての整数rについてラウンド鍵Kの各ビット列BISn,r,cが得られるまで、前記選択部、前記右シフト部、前記第1排他的論理和演算部、及び前記第2排他的論理和演算部の各処理を繰返し実行させる制御部と、
    を有する暗号演算装置。
  2. 請求項1の暗号演算装置であって、
    前記選択部は、0以上R以下のランダムな整数rを選択する、
    ことを特徴とする暗号演算装置。
  3. 請求項2の暗号演算装置であって、
    前記制御部は、前記選択部で選択された整数rに対するビット列BISn,r,cが既に得られている場合には、当該整数rに対応する前記右シフト部、前記第1排他的論理和演算部、及び前記第2排他的論理和演算部の各処理を繰返し実行させることなく、前記選択部に新たなランダムな整数rを選択させる、
    ことを特徴とする暗号演算装置。
  4. 請求項2の暗号演算装置であって、
    前記制御部は、前記選択部で選択された整数rに対するビット列BISn,r,cが既に得られているか否かにかかわらず、当該整数rに対応する前記右シフト部、前記第1排他的論理和演算部、及び前記第2排他的論理和演算部の各処理を実行させる、
    ことを特徴とする暗号演算装置。
  5. 請求項1の暗号演算装置であって、
    前記記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってビット列CBISn−1,r,Cを生成する置換部をさらに有し、
    前記制御部は、前記選択部の処理、前記置換部の処理、前記右シフト部の処理、前記第1排他的論理和演算部の処理、前記第2排他的論理和演算部の処理の順序で各処理を繰り返し実行させ、
    前記第2排他的論理和演算部から出力されたビット列BISn,r,cは、前記記憶部のビット列BISn−1,r,cが格納されていた領域に上書きされ、
    kは1又は−1であり、
    前記選択部、前記置換部、前記右シフト部、前記第1排他的論理和演算部、及び前記第2排他的論理和演算部の各処理が繰り返されるたびに、前記選択部は(r+k)mod(R+1)を新たな整数rとして選択する、
    ことを特徴とする暗号演算装置。
  6. 請求項1から5の何れかの暗号演算装置であって、
    R及びCは3であり、Wは8であり、Lは128であり、kは1であり、CBISn−1,r,3は、前記記憶部に格納されたビット列BISn−1,(r+1)mod4,3を所定の置換規則に従って置換した8ビットのビット列であり、ビット列CBISn−1,r,3とビット列BISn−1,(r+1)mod4,3とは一対一で対応する、
    ことを特徴とする暗号演算装置。
  7. ラウンド鍵を用いて暗号演算を行う暗号演算方法であって、
    (a)R,C及びWを1以上の整数の定数とし、nを1以上の整数の変数とした場合における、n−1ラウンド目のL=W・(C+1)・(R+1)ビット長のラウンド鍵Kn−1∈{0,1}を記憶部に格納するステップと、
    (b)選択部が、0以上R以下の整数rを選択するステップと、
    (c)右シフト部が、cを0以上C以下の整数の変数とし、ラウンド鍵Kn−1の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までからなるWビットのビット列をBISn−1,r,cとし、BISn−1,r(0)=BISn−1,r,0|BISn−1,r,1|…|BISn−1,r,Cとし、iを0以上C−1以下の整数とした場合における、ビット列BISn−1,r(i)を下位にWビットシフトさせたビット列BISn−1,r(i+1)を生成するステップと、
    (d)第1排他的論理和演算部が、XORBISn−1,r(0)=BISn−1,r(0)とした場合における、XORBISn−1,r(i)とビット列BISn−1,r(i+1)との排他的論理和値XORBISn−1,r(i+1)を計算するステップと、
    (e)第2排他的論理和演算部が、kを−R以上R以下の整数の定数とし、前記記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cに対して一義的に定まるWビットのビット列をCBISn−1,r,Cとし、前記ステップ(c)(d)を0以上C−1以下の各整数iについて実行して得られた排他的論理和値XORBISn−1,r(C)に対してXORBISn−1,r(C)=XORBISn−1,r,0|XORBISn−1,r,1|...|XORBISn−1,r,Cを満たすWビットの各ビット列をXORBISn−1,r,cとした場合における、CBISn−1,r,CとXORBISn−1,r,cとの排他的論理和を各cについて計算し、各cに対応する各演算結果をnラウンド目のラウンド鍵K∈{0,1}の上位W{(R+1)・c+r}+1ビット目からW{(R+1)・c+r+1}ビット目までのビット列BISn,r,cとして出力するステップと、を有し、
    前記ステップ(b)から(e)は、0以上R以下のすべての整数rについてラウンド鍵Kの各ビット列BISn,r,cが得られるまで繰返し実行されるステップである、
    ことを特徴とする暗号演算方法。
  8. 請求項7の暗号演算方法であって、
    前記ステップ(b)は、0以上R以下のランダムな整数rを選択するステップである、
    ことを特徴とする暗号演算方法。
  9. 請求項7の暗号演算方法であって、
    (f)置換部が、前記記憶部に格納されたビット列BISn−1,(r+k)mod(R+1),Cから所定の規則に従ってビット列CBISn−1,r,Cを生成するステップをさらに有し、
    前記ステップ(b)から(f)は、ステップ(b)、ステップ(f)、ステップ(c)、ステップ(d)、ステップ(e)の順序で繰返し実行されるステップであり、
    ステップ(e)で生成されたビット列BISn,r,cは、前記記憶部のビット列BISn−1,r,cが格納されていた領域に上書きされ、
    kは1又は−1であり、
    前記ステップ(b)から(f)の処理が繰り返されるたびに、前記ステップ(b)において(r+k)mod(R+1)が新たな整数rとして選択される、
    ことを特徴とする暗号演算方法。
  10. 請求項8の暗号演算方法であって、
    前記ステップ(b)で選択された整数rに対するビット列BISn,r,cが既に得られているか否かにかかわらず、当該整数rに対応する前記ステップ(c),(d),(e)の各処理を実行する、
    ことを特徴とする暗号演算方法。
  11. 請求項7から10の何れかの暗号演算方法であって、
    R及びCは3であり、Wは8であり、Lは128であり、kは1であり、CBISn−1,r,3は、前記記憶部に格納されたビット列BISn−1,(r+1)mod4,3を所定の置換規則に従って置換した8ビットのビット列であり、ビット列CBISn−1,r,3とビット列BISn−1,(r+1)mod4,3とは一対一で対応する、
    ことを特徴とする暗号演算方法。
  12. 請求項1から6の何れかの暗号演算装置としてコンピュータを機能させるためのプログラム。
JP2008156803A 2008-06-16 2008-06-16 暗号演算装置、その方法、及びプログラム Expired - Fee Related JP4990843B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008156803A JP4990843B2 (ja) 2008-06-16 2008-06-16 暗号演算装置、その方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008156803A JP4990843B2 (ja) 2008-06-16 2008-06-16 暗号演算装置、その方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2009303032A JP2009303032A (ja) 2009-12-24
JP4990843B2 true JP4990843B2 (ja) 2012-08-01

Family

ID=41549443

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008156803A Expired - Fee Related JP4990843B2 (ja) 2008-06-16 2008-06-16 暗号演算装置、その方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4990843B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5319209B2 (ja) * 2008-08-29 2013-10-16 株式会社東芝 暗号化で用いる鍵をスケジュールする装置、方法およびプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2829331B1 (fr) * 2001-09-04 2004-09-10 St Microelectronics Sa Procede de securisation d'une quantite secrete
GB0214620D0 (en) * 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
JP2005278535A (ja) * 2004-03-30 2005-10-13 Haiponekkusu Japan:Kk 点滴施肥潅水栽培用の作物生育設計装置、プログラム、及び作物生育設計方法
JP2005340892A (ja) * 2004-05-24 2005-12-08 Matsushita Electric Ind Co Ltd 暗号回路
JP2007174024A (ja) * 2005-12-20 2007-07-05 Sony Corp 暗号処理装置
JP2007325219A (ja) * 2006-06-05 2007-12-13 Sony Corp 暗号処理システムおよび暗号処理装置

Also Published As

Publication number Publication date
JP2009303032A (ja) 2009-12-24

Similar Documents

Publication Publication Date Title
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4774509B2 (ja) 擬似乱数発生システム
JP5551065B2 (ja) 擬似ランダム生成、データ暗号化、およびメッセージ暗号化ハッシングのための暗号化方法およびデバイス
Li et al. Differential fault analysis on the ARIA algorithm
CN102611549B (zh) 数据加密设备和存储卡
TWI552121B (zh) A cryptographic processing device, a cryptographic processing method and a program
CN103166751A (zh) 用于保护分组密码免受模板攻击的方法和装置
RU2603550C2 (ru) Устройство обработки данных, способ обработки данных и программа
TW201044334A (en) Encryption device, encryption method, and computer program
CN111008407A (zh) 用于执行虚拟加密操作的加密电路
JP2002229445A (ja) べき乗剰余演算器
Luo et al. Differential fault analysis of SHA-3 under relaxed fault models
KR100922728B1 (ko) Aes 암복호화 장치 및 암복호화 방법
JP2005134478A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
CN110071927B (zh) 一种信息加密方法、系统及相关组件
JP2011119985A (ja) 暗号復号方法
JP5207153B2 (ja) 擬似乱数発生システム
JP2006054568A (ja) 暗号化装置、復号化装置、および方法、並びにコンピュータ・プログラム
RU2188513C2 (ru) Способ криптографического преобразования l-битовых входных блоков цифровых данных в l-битовые выходные блоки
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
CN112287333A (zh) 一种轻量级可调分组密码实现方法、系统、电子设备以及可读存储介质
JP5268011B2 (ja) 暗号化システム及び復号化システム
JP3906574B2 (ja) 暗号変換方法、暗号変換装置、復号方法、復号装置及びデータ通信システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100726

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120412

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: 20120424

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120502

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees