JP5225414B2 - 暗号演算装置 - Google Patents
暗号演算装置 Download PDFInfo
- Publication number
- JP5225414B2 JP5225414B2 JP2011050698A JP2011050698A JP5225414B2 JP 5225414 B2 JP5225414 B2 JP 5225414B2 JP 2011050698 A JP2011050698 A JP 2011050698A JP 2011050698 A JP2011050698 A JP 2011050698A JP 5225414 B2 JP5225414 B2 JP 5225414B2
- Authority
- JP
- Japan
- Prior art keywords
- unit
- exclusive
- data
- input data
- block
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/04—Masking or blinding
- H04L2209/046—Masking or blinding of operations, operands or results of the operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Description
本発明の実施形態は、暗号演算装置に関する。
共通鍵方式の暗号アルゴリズムは、予め定められたブロック長のデータを秘匿化することを目的に設計されている。このため、共通鍵方式の暗号アルゴリズムを用いてブロック長より長いデータの秘匿化を行えるような演算方法や、元のデータの改ざん検出のための認証子を生成する演算方法などが開発されている。このような、共通鍵暗号方式を基本として様々な用途に向いた演算方法は、暗号利用モードと呼ばれる。
標準的な暗号利用モードとしては、FIPS PUB SP800シリーズで公開されている。例えば、ブロック長よりも長いデータを暗号化するため演算方法として、FIPS PUB SP800−38Aに開示されているCBCモードがある。
このCBCモードでは、ストレージデバイスに保存する際に、暗号化する前のデータと暗号化した後のデータのデータ長が異なることがある。具体的には、暗号化する前のデータの長さがブロック長の整数倍ではないとき、暗号化したデータのデータ長は、暗号化前のデータのデータ長よりも長くなる。そこで、暗号化する際に、データ長が変化しない暗号利用モードが求められ、ストレージデバイス用の暗号利用モードが開発された。
ストレージデバイスに保存するデータの暗号利用モードについては、IEEE P1619−Std−2007で規格化されている。また、IEEE P1619−Std−2007で規格化されている暗号利用モードは、暗号利用モードを定めたFIPS PUB SP800−38シリーズにSP800−38E(XTS mode)として採用されている。
FIPS PUB SP800−38E
しかしながら、従来は、CBCモードが主に利用されている。従って、従来のシステムとの互換性を維持するためには、ストレージデバイス内のデータの暗号化方式として、XTSモードだけではなく、従来のCBCモードにも対応する必要がある。すなわち、XTSモードとCBCモードの2つの利用モードに対応した暗号化回路が必要である。
実施形態の暗号演算装置は、共通鍵演算部と、排他的論理和演算部と、乗算部と、制御部とを備える。共通鍵演算部は、共通鍵暗号方式の第1暗号利用モードおよび第2暗号利用モードの演算を行う。排他的論理和演算部は、排他的論理和を演算する。乗算部は、ガロア体上の乗算を行う。制御部は、第1暗号利用モードの演算が指定された場合に、入力データを第1暗号利用モードで演算した出力データを算出する第1演算処理を制御し、第2暗号利用モードの演算が指定された場合に、入力データを第2暗号利用モードで演算した出力データを算出する第2演算処理を制御する。
以下に添付図面を参照して、この発明にかかる暗号演算装置の好適な実施形態を詳細に説明する。
(第1の実施形態)
第1の実施形態にかかる暗号演算装置は、XTSモードとCBCモードとで利用する演算部(回路)で共通化可能な演算部を共通化する。そして、各演算部を、指定された暗号利用モードに応じた演算を実行するように制御する。
第1の実施形態にかかる暗号演算装置は、XTSモードとCBCモードとで利用する演算部(回路)で共通化可能な演算部を共通化する。そして、各演算部を、指定された暗号利用モードに応じた演算を実行するように制御する。
図1は、第1の実施形態にかかる暗号演算装置1の回路構成の一例を示すブロック図である。図1に示すように、暗号演算装置1は、セレクタ2と、排他的論理和演算部3と、共通鍵演算部4と、排他的論理和演算部5と、セレクタ6と、乗算部7と、セレクタ8と、マスク値レジスタ9と、制御部16と、分割部20と、を備えている。暗号演算装置1は、鍵選択部15に接続されている。
鍵選択部15は、制御部16からの指示に応じた鍵データを選択して共通鍵演算部4に出力する。なお、鍵選択部15を暗号演算装置1内に備えるように構成してもよい。
分割部20は、暗号演算装置1に入力された暗号演算または復号演算の対象となる入力データ10’を所定の長さ(固定長)に分割する。例えば、分割部20は、入力データ10’を、128ビット長のブロックに分割する。なお、分割部20を暗号演算装置1の外部に備えるように構成してもよい。以下では、分割部20により入力データ10’を固定長に分割したデータを単位として処理が行われる。以下では入力データ10’を分割したデータを入力データ信号10という。
セレクタ2は、制御部16からの指示に応じて、入力データ信号10および初期値入力信号11のいずれかを選択する。排他的論理和演算部3は、セレクタ2の出力とセレクタ6の出力との排他的論理和を算出する。
共通鍵演算部4は、排他的論理和演算部3の演算結果と鍵選択部15により選択された鍵データとを用いて、制御部16により指示された暗号利用モードでの演算を実行する。本実施形態では、共通鍵演算部4は、共通鍵方式(ブロック暗号方式)の暗号アルゴリズムのXTSモードおよびCBCモードでの演算処理を実行する。なお、演算処理には、入力データの暗号化(以下、暗号演算)、および、暗号化したデータの復号(以下、復号演算)を含むものとする。
排他的論理和演算部5は、セレクタ6の出力と共通鍵演算部4の演算結果との排他的論理和を算出する。セレクタ6は、制御部16からの指示に応じて、所定値と、マスク値レジスタ9の値と、初期値入力信号11とのうちいずれかを選択する。図1では、所定値を0とした例が示されているが、所定値は0以外であってもよい。
乗算部7は、ガロア体上の乗算を行う。具体的には、乗算部7は、マスク値レジスタ9の値と、予め定められたガロア体の原始多項式αのj乗(jは入力データを固定長に分割したブロックの順序を表す番号)とを乗算した結果を出力する。
セレクタ8は、制御部16からの指示に応じて、乗算部7の演算結果と、排他的論理和演算部5の演算結果と、入力データ信号10と、初期値入力信号11とのうちいずれかを選択する。マスク値レジスタ9は、セレクタ8の出力を記憶する。
制御部16は、XTSモードが指定された場合に、入力データをXTSモードで演算した出力データを算出する処理、および、CBCモードが指定された場合に、入力データをCBCモードで演算した出力データを算出する処理を制御する。各処理の詳細は後述する。
次に、このように構成された第1の実施形態にかかる暗号演算装置1による演算処理について説明する。最初に、XTSモードの演算処理について説明する。図2は、第1の実施形態におけるXTSモードの演算処理の全体の流れを示すフローチャートである。
なお、図2の各ステップは、制御部16が、上述の各構成部(セレクタ2、排他的論理和演算部3、共通鍵演算部4、排他的論理和演算部5、セレクタ6、乗算部7、セレクタ8、および、マスク値レジスタ9)のうち必要な構成部を制御することにより実行される。制御部16による各構成部の制御方法の詳細は後述するため、図2の説明では省略する。
図2に示すように、XTSモードでは、暗号演算装置1の共通鍵演算部4は、鍵Key2と初期値(セクター番号)とブロック番号j=1とから、マスク値T1を生成する(ステップS101)。
次に、分割部20は、暗号化する入力データを分割する。排他的論理和演算部3は、分割後のデータ(以下、平文Pjという)とマスク値Tjとの排他的論理和演算を行いPP=Pj xor Tjを算出する(ステップS102)。なお、平文Pjは、暗号化する平文全体をm個(mは2以上の整数)のブロックに分割したときの、j番目のブロックの平文を表す。また、マスク値Tjは、j番目のブロックの処理で用いるマスク値を表す。以下では、128ビット長のブロックに分割する場合を例に説明するが、ブロック長は128ビットに限られるものではない。
共通鍵演算部4は、鍵Key1を用いて排他的論理和演算の結果PPを暗号化し、データCCを算出する(ステップS103)。排他的論理和演算部5は、データCCとマスク値Tjとの排他的論理和演算を行い、暗号文Cj=CC xor Tjを算出する(ステップS104)。
制御部16は、jに1を加算する(ステップS105)。乗算部7は、Tj=Tj−1×αjによりマスク値を更新する(ステップS106)。制御部16は、jが(m−1)(mは総ブロック数)より小さいか否かを判断する(ステップS107)。jが(m−1)より小さい場合(ステップS107:Yes)、ステップS102に戻り処理を繰り返す。
jが(m−1)に達した場合(ステップS107:No)、制御部16は、平文Pmの長さがブロック長である128ビットと一致するか否かを判断する(ステップS108)。
平文Pmの長さが128ビットと一致する場合は(ステップS108:Yes)、残りのブロックである(m−1)番目およびm番目のブロックについて、ステップS109〜ステップS113を繰り返す。なお、ステップS109〜ステップS113は、ステップS102〜ステップS106と同様の処理であるため説明を省略する。
jがmに達した場合(ステップS114:Yes)、すなわち、m番目のブロックまで処理した場合、演算処理を終了する。
ステップS108で、平文Pmの長さが128ビットと一致しない場合(ステップS108:No)、排他的論理和演算部3は、平文Pm−1とマスク値Tm−1との排他的論理和演算を行いPP=Pm−1 xor Tm−1を算出する(ステップS115)。
共通鍵演算部4は、鍵Key1を用いて排他的論理和演算の結果PPを暗号化し、データCCを算出する(ステップS116)。排他的論理和演算部5は、データCCとマスク値Tm−1との排他的論理和であるCC xor Tm−1を算出する。共通鍵演算部4は、CC xor Tm−1の上位kビット(kはPmの長さ)である暗号文Cmを算出する(ステップS117)。共通鍵演算部4は、Pmと、CC xor Tm−1の下位lビット(lはブロック長−Pmの長さ)とを連結したデータPP’を算出する(ステップS118)。共通鍵演算部4は、鍵Key1を用いてデータPP’を暗号化したデータCCを算出する(ステップS119)。排他的論理和演算部5は、データCCとマスク値Tmとの排他的論理和演算を行い、暗号文Cm−1=CC xor Tmを算出し(ステップS120)、演算処理を終了する。
次に、XTSモードの暗号演算の手順についてさらに説明する。最初は、モード指定信号12がアサートされ、XTSモードの演算を行うための設定が行われる。なお、モード指定信号12などの制御部16に入力される各信号は、例えば暗号演算装置1に接続される図示しない外部装置によりアサートまたはディアサートされる。
マスク値Tの生成を知らせるマスク値生成信号13がアサートされ、マスク値Tを生成するための初期値が初期値入力信号11に入力され、起動信号18がアサートされる。
起動信号18がアサートされることで、制御部16は、図示しない制御信号線を通じて、セレクタ6に対して所定値0を出力するように信号を送る。また、制御部16は、セレクタ2に対して図示しない制御信号線を通じてマスク値生成であることを通知する。
セレクタ2は、制御部16からの指示で初期値(初期値入力信号11)を選択する。セレクタ2による出力結果は排他的論理和演算部3に入力される。排他的論理和演算部3は、セレクタ2の出力結果とセレクタ6の出力結果とに対して排他的論和演算を行う。排他的論理和演算部3の演算結果は、共通鍵演算部4に入力される。
一方、マスク値Tを生成するためのマスク値生成信号13と起動信号18とがアサートされることで、制御部16は、図示しない制御信号線を通じて、鍵選択部15へマスク値生成であることを通知する。
鍵選択部15は、XTSモードのマスク値生成であることを判断すると、マスク値生成に必要な鍵Key2を選択し、共通鍵演算部4に入力する。
共通鍵演算部4は、初期値と鍵Key2とが入力されると、マスク値Tの演算を開始する(図2のステップS101)。マスク値Tの演算が終了すると、制御部16は、マスク値レジスタ9に対して、マスク値Tの書き込みを行うための信号を図示しない制御信号線を通じて送る。これにより、マスク値Tがマスク値レジスタ9に保存される。
次に、平文Pjの暗号化を行うために、マスク値生成信号13がディアサートされ、平文が入力データ信号10に入力され、起動信号18がアサートされる。このとき、マスク値生成信号13がディアサートされることで、制御部16は、鍵選択部15に対して、平文の暗号演算であることを通知する。鍵選択部15は、鍵Key1を選択して共通鍵演算部4に入力する。
また、図示していない暗号演算装置1の制御およびデータの入力を管理している装置により、モード指定信号12がアサートされ、マスク値生成信号13がディアサートされているとき、制御部16は、セレクタ2に対して入力データ信号10の値を選択するように通知する。セレクタ2は、入力データ信号10の入力データを選択して出力する。また、制御部16は、セレクタ6に対してマスク値レジスタ9の値を選択するように指示する。セレクタ6は、マスク値レジスタ9の値を選択して出力する。
次に、排他的論理和演算部3は、セレクタ6の出力値であるマスク値レジスタ9の値と、セレクタ2の出力値である入力データ信号10から入力された平文との排他的論理和演算を行う(図2のステップS102)。演算結果は、共通鍵演算部4に入力される。
共通鍵演算部4は、鍵選択部15から鍵データが入力され、排他的論理和演算部3から演算結果が入力されると演算を開始し、図示しない終了信号をアサートして演算終了を制御部16に通知するとともに演算結果を出力する(図2のステップS103)。排他的論理和演算部5は、共通鍵演算部4の出力結果と、セレクタ6の出力との排他的論理和を演算する(図2のステップS104)。排他的論理和演算部5の出力結果が暗号文として出力される。
暗号文が出力されると同時に、乗算部7は、マスク値レジスタ9の値に対する乗算を演算する(図2のステップS106)。その演算結果はセレクタ8へ入力される。そして、セレクタ8は、制御部16からの指示に応じて、乗算部7の結果を選択する。マスク値レジスタ9は、制御部16からの指示に応じて、セレクタ8の出力結果を書き込み、暗号演算が終了する。
次に、XTSモードの復号演算について説明する。XTSモードの復号演算でも、マスク値Tを生成する手順は暗号演算と同じであり、モード指定信号12とマスク値生成信号13とがアサートされ、初期値が入力される。
モード指定信号12とマスク値生成信号13とがアサートされることで、制御部16は、セレクタ6に対して所定値0を出力するように指示する。また、制御部16は、セレクタ2に対して初期値入力信号11の値を選択するように指示する。さらに、鍵選択部15は、制御部16からの指示に応じて鍵Key2を選択して共通鍵演算部4へ入力する。
共通鍵演算部4は、排他的論理和演算部3の出力を共通鍵演算部4の入力とし、鍵選択部15の出力を鍵データとし、これらが準備されると、マスク値Tの生成を開始する。共通鍵演算部4は、マスク値Tの演算が終了すると、図示しない終了信号をアサートして演算終了を制御部16に通知するとともにマスク値Tを出力する。このとき、セレクタ6は固定値0を選択しているので、排他的論理和演算5では、セレクタ6の出力と共通鍵演算部4の出力との演算が行われた結果、排他的論理和演算5からは共通鍵演算部4の出力結果が出力される。
マスク値Tが生成されると、制御部16は、セレクタ8およびマスク値レジスタ9に対する指示を通知して、マスク値Tをマスク値レジスタ9に書き込む。
次に、復号演算を行うためにマスク値生成信号13がディアサートされ、暗号文が入力データ信号10にセットされる。鍵選択部15は、鍵Key1を選択し、共通鍵演算部4へ入力する。ここで、復号演算時には、復号演算用の鍵を使うことで復号演算にかかる時間を短くすることができる場合がある。このような場合には、鍵選択部15は、鍵Key1の復号演算用鍵を選択して共通鍵演算部4に入力する。
制御部16は、マスク値生成信号13がディアサートされるので、セレクタ2に対して入力データ信号10の値を選択するように指示する。制御部16は、さらにセレクタ6に対してマスク値レジスタ9の値を選択するように指示する。これにより、排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力結果との排他的論理和を算出する。その演算結果は、共通鍵演算部4に入力される。
鍵選択部15の出力データである鍵データと、排他的論理和演算部3の出力データとを入力とし、制御部16から図示しない復号演算開始信号がアサートされると、共通鍵演算部4は、復号演算を開始する。共通鍵演算部4の演算が終了すると、図示しない終了信号が出力される。排他的論理和演算部5は、共通鍵演算部4の出力結果とセレクタ6の出力との排他的論理和を演算する。演算結果は、平文として出力信号線19から出力される。
一方、共通鍵演算部4が図示していない終了信号をアサートすると、乗算部7は、マスク値レジスタ9の値を更新するため、マスク値レジスタ9の値を入力値として乗算を行う。乗算部7の演算結果は、セレクタ8を通じてマスク値レジスタ9に保存される。
次に、CBCモードの演算処理について説明する。まず、CBCモードの暗号演算について説明する。図3は、第1の実施形態におけるCBCモードの暗号演算の全体の流れを示すフローチャートである。
暗号演算装置1は、鍵Keyと初期値iと平文P1とを入力する(ステップS201)。排他的論理和演算部3は、初期値iと平文P1との排他的論理和を演算し、共通鍵演算部4は、排他的論理和の演算結果を鍵Keyで暗号化した演算結果(C1)を出力する(ステップS202)。さらに、暗号化を行う場合には、共通鍵演算部4は、鍵Keyと暗号化の演算結果Cj−1と(ここではjは2以上の整数)平文Pjとを入力する(ステップS203)。排他的論理和演算部3は、演算結果Ci−1と平文Piとの排他的論理和を演算し、共通鍵演算部4は、排他的論理和の演算結果を鍵Keyで暗号化した演算結果(Cj)を出力する(ステップS204)。制御部16は、jに1を加算する(ステップS205)。制御部16は、jが総ブロック数mを超えたか否かを判断し(ステップS206)、超えていない場合(ステップS206:No)、ステップS203に戻り処理を繰り返す。jが総ブロック数mを超えた場合(ステップS206:Yes)、暗号演算装置1は、演算処理を終了する。
次に、CBCモードの復号演算について説明する。図4は、第1の実施形態におけるCBCモードの復号演算の全体の流れを示すフローチャートである。
暗号演算装置1は、鍵Keyと初期値iと暗号文C1とを入力する(ステップS301)。排他的論理和演算部3は、暗号文C1を復号した演算結果(Dec(Key、C1))と、初期値iとの排他的論理和である平文P1を算出する(ステップS302)。さらに、復号演算を行う場合には、共通鍵演算部4は、鍵Keyと初期値として用いる前のブロックの暗号文Cj−1(以下、初期値Cj−1という)と暗号文Cjとを入力する(ステップS303)。排他的論理和演算部5は、共通鍵演算部4により暗号文Cjを復号した演算結果と、初期値Cj−1との排他的論理和である平文Pjを算出する(ステップS304)。制御部16は、jに1を加算する(ステップS305)。制御部16は、jが総ブロック数mを超えたか否かを判断し(ステップS306)、超えていない場合(ステップS306:No)、ステップS303に戻り処理を繰り返す。jが総ブロック数mを超えた場合(ステップS306:Yes)、暗号演算装置1は、演算処理を終了する。
次に、CBCモードの暗号演算の手順についてさらに説明する。CBCモードの暗号演算では、最初の演算時に初期値信号14がアサートされ、暗号演算装置1への入力信号であるモード指定信号12がディアサートされる。さらに、復号演算信号17がディアサートされ、初期値入力信号11に初期値がセットされ、入力データ信号10に平文がセットされる。さらに起動信号18がアサートされると、暗号演算装置1は暗号演算を開始する。
制御部16は、初期値信号14がアサートされていること、モード指定信号12がディアサートされていること、および、復号演算信号17がディアサートされていることから、セレクタ2に対して初期値入力信号11の値を選択するように指示を出す。これにより、排他的論理和演算部3は、初期値と入力データ信号10の値との排他的論理和を演算する。その結果は共通鍵演算部4へ入力される。
また、鍵選択部15は、CBCモードの暗号演算であるという指示が制御部16から送られてくるので、その指示に従った鍵データを共通鍵演算部4に送る。これにより共通鍵演算部4による暗号演算が開始される。
暗号演算が終了すると、図示しない終了信号がアサートされるとともに共通鍵演算部4から暗号文が出力される。このとき、制御部16は、セレクタ6に対して0を選択することを指示する。セレクタ6は、その指示に従って0を出力する。
排他的論理和演算部5は、セレクタ6の出力値と共通鍵演算部4の出力との排他的論理和を演算する。その演算結果は暗号文として出力信号線19に出力される(図3のステップS202)。このとき、制御部16は、次の演算のために、排他的論理和演算部5の出力結果をマスク値レジスタ9に保存するように指示する。すなわち、制御部16は、セレクタ8に対して出力信号線19の入力を選択するように指示するとともに、マスク値レジスタ9に対してデータが書き込まれるように指示する。次の平文が入力された場合には、マスク値レジスタ9に保存されている値を初期値とするので、制御部16は、セレクタ6に対してマスク値レジスタ9の値を選択するように指示する。排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力との排他的論理和を演算する。共通鍵演算部4は、この演算結果を入力し暗号演算を行う(図3のステップS204)。
次に、CBCモードの復号演算の手順についてさらに説明する。復号演算では、制御部16は、セレクタ2に対して、入力された暗号文の選択を指示する。制御部16は、モード指定信号がディアサートされていること、復号演算信号17がアサートされていること、および、初期値信号14がアサートされていることから、セレクタ6に対して0を出力するように指示する。これと同時に、初期値入力信号11の値をマスク値レジスタ9に書き込むため、制御部16は、セレクタ8に対して初期値入力信号11の値を選択するように指示し、かつ、マスク値レジスタ9に書き込み指示を出す。上記の処理により、排他的論理和演算部3は、セレクタ6の出力とセレクタ2の出力との排他的論理和を演算する。その演算結果は共通鍵演算部4に入力される。
このとき、鍵選択部15は、モード指定信号がディアサートされていることから、CBCモードのデータ用鍵データを選択して共通鍵演算部4に入力する。
共通鍵演算部4は、入力データと鍵データとが入力されると、復号演算を開始する。共通鍵演算部4は、復号演算が終了すると終了信号をアサートするとともに演算結果を出力する。このとき、制御部16は、セレクタ6に対して初期値入力信号11の値を選択するように指示する。これにより、セレクタ6は、初期値入力信号11の値を選択して出力する。排他的論理和演算部5は、初期値入力信号11の値と共通鍵演算部4の出力との排他的論理和を演算し、演算結果を平文として出力する(図4のステップS302)。
続いて復号演算を行う際には、初期値信号線がディアサートされて、入力データ信号10に暗号文が入力され、起動信号18がアサートされる。このとき、制御部16は、CBC/XTSモードがディアサート、初期値信号もディアサートされ、復号演算信号17がアサートされていることから、CBCモードの復号演算であると判断する。制御部16は、セレクタ6に対して0を選択するように指示する。この後、共通鍵演算部4が復号演算を開始する。
復号演算が終了すると上記で説明したように、排他的論理和演算部5が、復号演算の演算結果と、マスク値レジスタ9の値との排他的論理和を演算する。この演算結果が平文として出力信号線19に出力される(図4のステップS304)。
このように、第1の実施形態にかかる暗号演算装置では、図1に示すような回路構成とすることで、XTSモードの暗号演算および復号演算と、CBCモードの暗号演算および復号演算とを行うことが可能となる。
(第2の実施形態)
CBCモードの復号演算では、共通鍵演算部4による復号演算が終了した後に、マスク値レジスタ9に記憶されている初期値と復号演算の演算結果との排他的論理和が演算される。このため、マスク値レジスタ9の値は、共通鍵演算部4の演算が終了するまで変更することができない。すなわち、共通鍵演算部4の演算が終了したのち、入力データ信号10の値をマスク値レジスタ9書き込むことになる。
CBCモードの復号演算では、共通鍵演算部4による復号演算が終了した後に、マスク値レジスタ9に記憶されている初期値と復号演算の演算結果との排他的論理和が演算される。このため、マスク値レジスタ9の値は、共通鍵演算部4の演算が終了するまで変更することができない。すなわち、共通鍵演算部4の演算が終了したのち、入力データ信号10の値をマスク値レジスタ9書き込むことになる。
第2の実施形態にかかる暗号演算装置は、共通鍵演算部4の演算が終了した直後に、次の復号演算のための暗号文を入力データ信号10に準備できるようにするため、入力データ信号10の値を保持する回路(レジスタ)をさらに備える構成とする。
図5は、第2の実施形態にかかる暗号演算装置1−2の回路構成の一例を示すブロック図である。図5に示すように、暗号演算装置1−2は、出力マスクレジスタ20をさらに備えたこと、および、制御部16−2の機能が、第1の実施形態と異なっている。その他の構成は、第1の実施形態のブロック図である図1と同様であるため、同一の符号を付し説明を省略する。
第2の実施形態では、CBCモードの復号演算が開始されると、制御部16−2は、セレクタ8に対して入力データ信号10の値(暗号文C1)を保持するように指示を出し、出力マスクレジスタ20にはセレクタ6を通じて入力データ信号10の値を保持するように指示を出す。
共通鍵演算部4の演算が終了した後、排他的論理和演算部5は、出力マスクレジスタ20の値と共通鍵演算部4の演算結果との排他的論理和を演算する。演算結果は平文として出力される。本実施形態では、次のブロックの演算で用いる暗号文C1の値(入力データ信号10の値)を出力マスクレジスタ20に保持しているため、共通鍵演算部4の演算終了と同時に入力データ信号10に次の暗号文C2を用意することができる。
すなわち、暗号文C2の演算を開始するために起動信号18がアサートされると同時に、制御部16−2は、マスク値レジスタ9の値を出力マスクレジスタ20へ移動し、同時に暗号文C2をマスク値レジスタ9に書き込むことを指示する。このような処理を行うことで、共通鍵演算部4の演算が終了するとともに、次の復号演算用のデータを準備して復号演算を開始することができるようになる。すなわち、CBCモードの復号演算を高速に処理することが可能となる。
なお、本実施形態は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
1 暗号演算装置
2 セレクタ
3 排他的論理和演算部
4 共通鍵演算部
5 排他的論理和演算部
6 セレクタ
7 乗算部
8 セレクタ
9 マスク値レジスタ
16 制御部
20 出力マスクレジスタ
2 セレクタ
3 排他的論理和演算部
4 共通鍵演算部
5 排他的論理和演算部
6 セレクタ
7 乗算部
8 セレクタ
9 マスク値レジスタ
16 制御部
20 出力マスクレジスタ
Claims (5)
- 共通鍵暗号方式の第1暗号利用モードおよび第2暗号利用モードの演算を行う共通鍵演算部と、
入力データを所定の長さに分割する分割部と、
排他的論理和を演算する排他的論理和演算部と、
ガロア体上の乗算を行う乗算部と、
前記共通鍵演算部と、前記排他的論理和演算部と、前記乗算部を制御する制御部とを、備え、
前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックの(j−1)番目(jは2以上の整数)を対象として、第1暗号利用モードが指定された場合、
前記制御部は、
前記入力データの(j−1)番目(jは2以上の整数)のブロックに基づいて、所定の値との乗算を行うように前記乗算部を制御し、
前記乗算部の乗算結果と前記入力データのうちj番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、
前記排他的論理和演算部の演算結果と(j−1)番目のブロックに対する前記乗算部の演算結果との排他的論理和を行うように前記排他的論理和演算部を制御し、
前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックの(j−1)番目(jは2以上の整数)を対象として、第2暗号利用モードが指定された場合、
前記制御部は、
前記入力データの(j−1)番目のブロックに対する前記共通鍵演算部の演算結果と前記入力データのうちj番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、
前記排他的論理和演算部の演算結果に対して前記第1暗号利用モードおよび前記第2暗号利用モードの演算を前記共通鍵演算部で行うように制御する
暗号演算装置。 - 前記共通鍵演算部は、前記共通鍵暗号方式の復号演算を行い、
前記入力データのうち、いずれかのブロックのデータを記憶する第1レジスタをさらに備え、
前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックの(j−1)番目を対象として、第2暗号利用モードでの復号演算が指定された場合、
前記制御部は、
前記入力データのうち(j−1)番目のブロックのデータを前記第1レジスタに記憶し、
前記入力データのうちj番目のデータの復号演算を前記共通鍵演算部で行うように制御し、
復号演算の演算結果と前記第1レジスタに記憶された(j−1)番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御する、
請求項1に記載の暗号演算装置。 - 前記入力データのうち、いずれかのブロックのデータを記憶する第2レジスタをさらに備え、
前記分割部で前記入力データを所定の長さのブロックに分割し、前記入力データを分割したブロックの(j−1)番目を対象として、第1暗号利用モードでの復号演算が指定された場合、
制御部は、前記入力データのうち(j−1)番目のブロックのデータを前記第2レジスタに記憶し、
前記入力データのうちj番目のデータの復号演算を前記共通鍵演算部で行うように制御し、
復号演算の演算結果と前記第2レジスタに記憶された(j−1)番目のブロックのデータとの排他的論理和を行うように前記排他的論理和演算部を制御し、
前記入力データのうちj番目のブロックのデータを前記第1レジスタに記憶する、
請求項2に記載の暗号演算装置。 - 前記第1暗号利用モードは、XTS(XEX encryption mode with tweak and ciphertext stealing)モードであり、
前記第2暗号利用モードは、CBC(Cipher Block Chaining)モードである、
請求項1に記載の暗号演算装置。 - 前記共通鍵演算部での演算で用いられる複数の鍵データのうち、前記制御部からの指示に応じた前記鍵データを選択して出力する鍵選択部をさらに備える、
請求項1に記載の暗号演算装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011050698A JP5225414B2 (ja) | 2011-03-08 | 2011-03-08 | 暗号演算装置 |
US13/218,799 US8942374B2 (en) | 2011-03-08 | 2011-08-26 | Encryption device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011050698A JP5225414B2 (ja) | 2011-03-08 | 2011-03-08 | 暗号演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012189635A JP2012189635A (ja) | 2012-10-04 |
JP5225414B2 true JP5225414B2 (ja) | 2013-07-03 |
Family
ID=46795606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011050698A Expired - Fee Related JP5225414B2 (ja) | 2011-03-08 | 2011-03-08 | 暗号演算装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8942374B2 (ja) |
JP (1) | JP5225414B2 (ja) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9298947B2 (en) | 2013-02-07 | 2016-03-29 | Qualcomm Incorporated | Method for protecting the integrity of a fixed-length data structure |
US20150058639A1 (en) * | 2013-08-23 | 2015-02-26 | Kabushiki Kaisha Toshiba | Encryption processing device and storage device |
JP6552184B2 (ja) * | 2014-01-14 | 2019-07-31 | キヤノン株式会社 | 情報処理装置およびその方法 |
US9705501B2 (en) * | 2014-10-01 | 2017-07-11 | Maxim Integrated Products, Inc. | Systems and methods for enhancing confidentiality via logic gate encryption |
KR102447476B1 (ko) | 2015-08-20 | 2022-09-27 | 삼성전자주식회사 | 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법 |
US9825931B2 (en) | 2016-01-26 | 2017-11-21 | Bank Of America Corporation | System for tracking and validation of an entity in a process data network |
US10116667B2 (en) | 2016-01-26 | 2018-10-30 | Bank Of America Corporation | System for conversion of an instrument from a non-secured instrument to a secured instrument in a process data network |
US10129238B2 (en) | 2016-02-10 | 2018-11-13 | Bank Of America Corporation | System for control of secure access and communication with different process data networks with separate security features |
US10438209B2 (en) | 2016-02-10 | 2019-10-08 | Bank Of America Corporation | System for secure routing of data to various networks from a process data network |
US10142347B2 (en) | 2016-02-10 | 2018-11-27 | Bank Of America Corporation | System for centralized control of secure access to process data network |
US11374935B2 (en) | 2016-02-11 | 2022-06-28 | Bank Of America Corporation | Block chain alias person-to-person resource allocation |
US11121867B2 (en) * | 2016-02-19 | 2021-09-14 | Micro Focus Llc | Encryption methods based on plaintext length |
US10142312B2 (en) | 2016-02-22 | 2018-11-27 | Bank Of America Corporation | System for establishing secure access for users in a process data network |
US10496989B2 (en) | 2016-02-22 | 2019-12-03 | Bank Of America Corporation | System to enable contactless access to a transaction terminal using a process data network |
US10140470B2 (en) | 2016-02-22 | 2018-11-27 | Bank Of America Corporation | System for external validation of distributed resource status |
US10636033B2 (en) | 2016-02-22 | 2020-04-28 | Bank Of America Corporation | System for routing of process authorizations and settlement to a user in a process data network |
US10135870B2 (en) | 2016-02-22 | 2018-11-20 | Bank Of America Corporation | System for external validation of secure process transactions |
US10178105B2 (en) | 2016-02-22 | 2019-01-08 | Bank Of America Corporation | System for providing levels of security access to a process data network |
US10440101B2 (en) | 2016-02-22 | 2019-10-08 | Bank Of America Corporation | System for external validation of private-to-public transition protocols |
US10607285B2 (en) | 2016-02-22 | 2020-03-31 | Bank Of America Corporation | System for managing serializability of resource transfers in a process data network |
US10026118B2 (en) | 2016-02-22 | 2018-07-17 | Bank Of America Corporation | System for allowing external validation of data in a process data network |
US10387878B2 (en) | 2016-02-22 | 2019-08-20 | Bank Of America Corporation | System for tracking transfer of resources in a process data network |
US10679215B2 (en) | 2016-02-22 | 2020-06-09 | Bank Of America Corporation | System for control of device identity and usage in a process data network |
US10475030B2 (en) | 2016-02-22 | 2019-11-12 | Bank Of America Corporation | System for implementing a distributed ledger across multiple network nodes |
US10762504B2 (en) | 2016-02-22 | 2020-09-01 | Bank Of America Corporation | System for external secure access to process data network |
US10318938B2 (en) | 2016-02-22 | 2019-06-11 | Bank Of America Corporation | System for routing of process authorization and settlement to a user in process data network based on specified parameters |
US10157078B2 (en) | 2016-04-10 | 2018-12-18 | Bank Of America Corporation | System for transforming large scale electronic processing using application block chain |
US9979718B2 (en) | 2016-05-11 | 2018-05-22 | Bank Of America Corporation | System for managing security and access to resource sub-components |
US10402796B2 (en) | 2016-08-29 | 2019-09-03 | Bank Of America Corporation | Application life-cycle transition record recreation system |
US10158737B2 (en) | 2016-10-07 | 2018-12-18 | Bank Of America Corporation | Real time event capture and analysis of transient data for an information network |
US10067994B2 (en) | 2016-10-07 | 2018-09-04 | Bank Of America Corporation | Real time event capture and transformation of transient data for an information network |
US10069672B2 (en) | 2016-10-07 | 2018-09-04 | Bank Of America Corporation | Real time event capture, analysis and reporting system |
US11463236B2 (en) * | 2016-12-09 | 2022-10-04 | Cryptography Research, Inc. | Programmable block cipher with masked inputs |
US11631077B2 (en) | 2017-01-17 | 2023-04-18 | HashLynx Inc. | System for facilitating secure electronic communications between entities and processing resource transfers |
US10929545B2 (en) | 2018-07-31 | 2021-02-23 | Bank Of America Corporation | System for providing access to data stored in a distributed trust computing network |
CN110309080B (zh) * | 2019-06-28 | 2021-04-09 | 兆讯恒达科技股份有限公司 | 一种提高缓存数据装载速度的方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1081888B1 (en) * | 1999-08-31 | 2005-12-21 | Matsushita Electric Industrial Co., Ltd. | Encryption method, encryption apparatus, decryption method, and decryption apparatus |
CN100521599C (zh) * | 2002-08-08 | 2009-07-29 | 松下电器产业株式会社 | 加密解密装置、加密装置以及解密装置 |
WO2004023715A1 (en) * | 2002-09-03 | 2004-03-18 | The Regents Of The University Of California | Block cipher mode of operation for constructing a wide-blocksize block cipher from a conventional block cipher |
US7336783B2 (en) * | 2003-01-24 | 2008-02-26 | Samsung Electronics, C., Ltd. | Cryptographic systems and methods supporting multiple modes |
US7602906B2 (en) * | 2005-08-25 | 2009-10-13 | Microsoft Corporation | Cipher for disk encryption |
US8036377B1 (en) * | 2006-12-12 | 2011-10-11 | Marvell International Ltd. | Method and apparatus of high speed encryption and decryption |
US8594322B2 (en) * | 2007-07-10 | 2013-11-26 | Stmicroelectronics S.R.L. | Encoding/decoding apparatus |
WO2009029842A1 (en) * | 2007-08-31 | 2009-03-05 | Exegy Incorporated | Method and apparatus for hardware-accelerated encryption/decryption |
JP4865694B2 (ja) * | 2007-12-28 | 2012-02-01 | ラピスセミコンダクタ株式会社 | プロセッサ装置 |
JP5228803B2 (ja) * | 2008-10-30 | 2013-07-03 | 富士通セミコンダクター株式会社 | 共通鍵ブロック暗号におけるスワップ回路及び、それを有する暗号化・復号化回路 |
US8526605B2 (en) * | 2009-10-09 | 2013-09-03 | Seagate Technology Llc | Data encryption to provide data security and memory cell bit wear leveling |
KR101612518B1 (ko) * | 2009-11-26 | 2016-04-15 | 삼성전자주식회사 | 병렬 처리 가능한 암복호화기 및 그것의 암복호 방법 |
US8826039B2 (en) * | 2010-02-02 | 2014-09-02 | Broadcom Corporation | Apparatus and method for providing hardware security |
US20110255689A1 (en) * | 2010-04-15 | 2011-10-20 | Lsi Corporation | Multiple-mode cryptographic module usable with memory controllers |
-
2011
- 2011-03-08 JP JP2011050698A patent/JP5225414B2/ja not_active Expired - Fee Related
- 2011-08-26 US US13/218,799 patent/US8942374B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012189635A (ja) | 2012-10-04 |
US20120230492A1 (en) | 2012-09-13 |
US8942374B2 (en) | 2015-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5225414B2 (ja) | 暗号演算装置 | |
US8666064B2 (en) | Endecryptor capable of performing parallel processing and encryption/decryption method thereof | |
TWI496024B (zh) | An encryption calculation means, a memory means, and an encryption calculation method | |
JP4820821B2 (ja) | セキュリティ強化のための転置データ変換 | |
TWI573039B (zh) | 計算系統及其加解密裝置與加解密方法 | |
US9843440B2 (en) | Encryptor/decryptor, electronic device including encryptor/decryptor, and method of operating encryptor/decryptor | |
US11546135B2 (en) | Key sequence generation for cryptographic operations | |
JP2005527853A (ja) | 高度暗号化規格(aes)のハードウェア暗号法エンジン | |
JP5017439B2 (ja) | 暗号演算装置及びメモリシステム | |
JP6552184B2 (ja) | 情報処理装置およびその方法 | |
US20150349951A1 (en) | Protecting Cryptographic Operations Using Conjugacy Class Functions | |
JP2016535310A (ja) | 素数の生成および記憶のための方法および装置 | |
US8077861B2 (en) | Permutation data transform to enhance security | |
US20150058639A1 (en) | Encryption processing device and storage device | |
JP4249166B2 (ja) | ストリーム暗号方法および装置 | |
CN110034918B (zh) | 一种sm4加速方法和装置 | |
KR101971001B1 (ko) | 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치 | |
JP5818768B2 (ja) | マスク生成装置、情報処理装置、及びその方法、プログラム | |
KR102404223B1 (ko) | 키 의존적 레이어를 이용한 암호 생성 장치 및 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 | |
KR100954224B1 (ko) | 오프셋 코드북 암호화 장치 | |
Dumane et al. | Design of advanced encryption standard on soft-core processor | |
KR20240014946A (ko) | 동형 암호문을 생성하는 전자 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20130219 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130312 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160322 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |