JPWO2009090689A1 - 暗号化装置及び暗号処理方法 - Google Patents

暗号化装置及び暗号処理方法 Download PDF

Info

Publication number
JPWO2009090689A1
JPWO2009090689A1 JP2009549897A JP2009549897A JPWO2009090689A1 JP WO2009090689 A1 JPWO2009090689 A1 JP WO2009090689A1 JP 2009549897 A JP2009549897 A JP 2009549897A JP 2009549897 A JP2009549897 A JP 2009549897A JP WO2009090689 A1 JPWO2009090689 A1 JP WO2009090689A1
Authority
JP
Japan
Prior art keywords
exclusive
data
bits
logical operation
operation result
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.)
Granted
Application number
JP2009549897A
Other languages
English (en)
Other versions
JP5182295B2 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2009090689A1 publication Critical patent/JPWO2009090689A1/ja
Application granted granted Critical
Publication of JP5182295B2 publication Critical patent/JP5182295B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/80Wireless
    • H04L2209/805Lightweight hardware, e.g. radio-frequency identification [RFID] or sensor

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

MISTY構造のデータ変換関数、例えば、MISTY1のFO関数の処理において、2段目のMISTY構造内のFI関数602の処理結果と1段目のMISTY構造内の排他的論理和612の論理演算結果t1との排他的論理和614の論理演算結果t3をレジスタに格納しない。その論理演算結果t3は、排他的論理和643、644により、排他的論理和642、643の論理演算結果と、直接に、排他的論理和する。

Description

本発明は、共通暗号鍵方式を適用した暗号化装置、暗号化方法及びプログラムに係り、特にMISTY構造のデータ変換関数を利用する暗号化装置、暗号化方法及びプログラムに関する。
暗号方式は、公開鍵方式と共通鍵方式に大別される。公開鍵方式は、暗号化と復号で異なる鍵を用いる方式であり、暗号化を行うために鍵(公開鍵)を一般に公開する代わりに、暗号文を復号するための鍵(秘密鍵)を受信者のみの秘密情報とすることで送信情報の安全性を保つ方式である。これに対し、共通鍵方式は、暗号化と復号で同一の鍵(秘密鍵)を用いる方式であり、秘密鍵を送信者と受信者以外の第三者に分からない情報とすることで、送信情報の安全性保つ方式である。
共通鍵方式の暗号(以下、共通鍵暗号と呼ぶ)は、公開鍵方式の暗号(以下、公開鍵暗号と呼ぶ)と比較した場合、処理速度が速くコンパクトに実装できるという利点がある。このため、携帯電話やICカードなどの小型機器に暗号化機能を付加する場合には、共通鍵暗号が利用される。また、処理速度が高速であり、情報をリアルタイムで暗号化/復号化できるので、放送や通信分野における情報通信にも利用されている。
共通鍵暗号には、ストリーム暗号とブロック暗号がある。ブロック暗号は、平文(暗号化の対象となる文)を一定のビット長のまとまり(これを、ブロックと呼ぶ)に分割し、ブロック単位で暗号化を行う。尚、暗号化の処理単位であるブロックのビット長は“ブロック長”と呼ばれる。
共通鍵暗号方式のブロック暗号は、ブロック長に応じて様々なアルゴリズムが知られている。代表的なものとしては、DES、AES、SC2000、MISTY1、MISTY12、KASUMIなどがある。これらの共通鍵暗号のアルゴリズムは、ソフトウェアもしくはハードウェアにより実装される。
ここで、共通鍵暗号の一つであるMISTY1について説明する。MISTY1は、ブロック長64ビット、鍵長128ビットの共通鍵暗号である。尚、MISTY1は、例えば、IPA(Information-technology Promotion Agency)のホームページ(http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/doc/5_02jspec.pdf)に公開されている(非特許文献1参照)。
図1は、MISTY1の暗号化処理の基本構造を示す図である。この図1は、非特許文献1の図1aを簡略化したものである。
図1に示すように、MISTY1はFeistel型暗号である。MISTY1は、FL関数10、FO関数20及び排他的論理和30を構成要素とし、これらの構成要素を組み合わせて構成されている。MISTY1は、2つのFL関数10、1つのFO関数20及び1つの排他的論理和30から構成される第1のFeistel構造100と、1つのFO関数20と1つの排他的論理和30から構成される第2のFeistel構造200を交互に縦方向に多段接続した構成となっている。MISTY1では、段数nは4の倍数と規定されており、n=8が推奨されている。
図1に示すように、MISTY1においては、奇数段が第1のFeistel構造100、偶数段が第2のFeistel構造200となっている。第1のFeistel構造100と第2のFeistel構造200は共にFO関数20を備えている。
ここで、Feistel構造について簡単に説明する。Feistel構造は、入力を左右2つのブロックに分割し、一方のL側のブロック(以後、ブロックLと呼ぶ)をF関数(MISTY1の場合はFO関数20)に入力し、そのF関数の出力と他方のR側のブロック(以後、ブロックRと呼ぶ)との排他的論理和をとり、その論理演算処理終了後に、ブロックLとブロックRの入れ替えを行う構成を持った構造である。
MISTY1の場合、第1のFeistel構造100は、ブロックL(32ビット)にFL関数10L(FL1)の処理を施し、その処理結果を排他的論理和30に入力し、ブロックR(32ビット)にFL関数10R(FL2)の処理を施し、その処理結果を前記排他的論理和30に入力する。そして、FL関数10Lの処理結果と排他的論理和30の論理演算結果を、次段のFeistel構造200に、それぞれブロックR、ブロックLとして出力する。
第2のFeistel構造200は、ブロックLをFO関数20に入力し、ブロックRを排他的論理和30に入力する。そして、上記FO関数20の処理結果と上記ブロックRを排他的論理和30により排他的論理和し、その論理演算結果と上記ブロックLを外部に出力する。このとき、上記ブロックLはブロックRとして、上記論理演算結果はブロックLとして、次段のFeistel構造100に入力する。
FL関数10は鍵依存型の線形関数であり、FO関数20は非線形関数である。FL関数10は、32ビットの入力データを32ビットの拡大鍵KL(不図示)を用いて32ビットのデータに変換して出力するFeistel構造の関数である。FO関数20は、32ビットの入力データを、64ビットの拡大鍵KO(不図示)と42ビットの拡大鍵KI(不図示)を用いて32ビットのデータに変換して出力するMISTY構造の関数である。後述するように、FO関数20は、内部にFI関数を含んでいる。このFI関数は非線形関数である。
小型機器に搭載する暗号処理装置(暗号化装置)は、回路規模が小さいことが重要である。特に、組み込み用途の暗号機能付きマイクロコントローラや暗号ハードアクセラレータなどでは回路規模が重視される。したがって、MISTY1やKASUMIなどのようにMISTY構造が多用される共通鍵暗号アルゴリズムをハードウェア実装する場合、そのハードウェアの回路規模を小さくするためには、FO関数の回路規模を小さくすることが非常に有効となる。
図2Aは、図1に示すMISTY1の構造から抽出した、「FO関数20とそれに接続された排他的論理和30から構成される構造300」を示す図である。図2Aに示す構造300は、第1のFeistel構造100と第2のFeistel構造200が共に備える構成要素である。
構造300の構成・動作を説明する。構造300は、32ビットのブロックLのデータと32ビットのブロックRのデータを入力する。ブロックLのデータは、そのまま外部に出力されると共に、FO関数20に入力する。FO関数20は、ブロックLのデータを、64ビットの拡大鍵KO(不図示)と48ビットの拡大鍵KI(不図示)を用いて32ビットのデータに変換し、その変換結果を排他的論理和30に出力する。排他的論理和30は、ブロックRのデータとFO関数20の出力の排他的論理和をとり、その論理演算結果(32ビットのデータ)を外部に出力する。また、構造300は、入力したブロックLのデータを、そのまま、外部に出力する。
図2Bは、図2Aに示す構造300を時計回りに180度回転することによって得られる構造である。図2Bに示す構造310は、その内部のFO関数20を展開すると、図2Cに示すような構造となる。
図2Cに示す構造320の概要は、非特許文献1の図2にFOiとして開示されている。構造320は、一方の入力データである32ビットのブロックLのデータを、上位16ビットのデータLLと下位16ビットのデータLRに分割する。また、他方の入力データである32ビットのブロックRのデータを、上位16ビットのデータRLと下位16ビットのデータRRに分割する。FO関数20は、秘密鍵K(128ビット)の一部のビットである鍵KOi1〜KOi4(各16ビット)をFI関数の前段に設けられた排他的論理和321の一方の入力に用いる。また、秘密鍵Kから一部のビットを取り出し、そのビットに対して拡大鍵生成処理を施すことで得られる拡大鍵KIi1〜KIi3(各16ビット)を、FI関数(FIi1〜FIi3)の鍵に用いる。拡大鍵KOi1〜KOi4及び拡大鍵Kli1〜KIi3の生成方法は、非特許文献1に説明されている。尚、FO関数はMISTY構造の関数である。以下の説明では、拡大鍵KOi1〜KOi4、KIi1〜KIi3のそれぞれを単に鍵と記載する場合もある。
図2Cに示す構造320を、処理アルゴリズムの観点から解析すると、図3に示すような構成となる。図3に示す構造330においては、入力データであるブロックL、Rのデータ(32ビット)は、それぞれ、レジスタReg−L、Reg−Rに保持されるものとする。
FO関数20の全体処理は、図3において横方向の太い破線で区切られた3サイクルの処理に分割できる。これら3つのサイクルを、ここでは、処理順に、サイクル1、サイクル2、サイクル3と呼ぶことにする。サイクル1〜3の処理手順はほぼ同一であるので、図3において破線の矩形枠で囲んで示す部分(サイクル1の処理部)をハードウェアとしてユニット化し、そのユニット500を各サイクルの処理で共用することが可能である。すなわち、上記ユニット500を3回逐次実行することで、サイクル1〜3の処理を実行できる。厳密に述べると、サイクル1とサイクル2の処理手順は同じである。サイクル3は、他のサイクル(サイクル1、2)の処理に加え、サイクル2の処理結果と鍵KOi4を排他的論理和321により排他的論理和をとる論理演算を行う。ところで、ユニット500の構造は、一般にMISTY構造と呼ばれる。MISTY構造の基本構成は、左系のデータパスにF関数(ユニット500の場合はFI関数)と排他的論理和を順に配置した構成となっており、上記排他的論理和はF関数の出力と右系のデータパスから分岐入力するデータとの排他的論理和を演算する。上記排他的論理和の出力は次段の右系のデータパスの入力となり、上記排他的論理和に入力する右系のデータパスのデータは次段の左系のデータパスの入力となる。FO関数におけるMISTY構造は、左系のデータパス上にラウンド鍵KOij(j=1〜3)が入力する第1の排他的論理和、その下部にラウンド鍵KIij(j=1〜3)が入力するFI関数、その下部に第2の排他的論理和を配置し、該第2の排他的論理和により、FI関数の出力と右系のデータパスから分岐入力するデータの排他的論理和を演算する。そして、その第2の排他的論理和の演算結果を次段の右系のデータパスの入力とする。また、前段の右系のデータパスを流れるデータを次段の左系のデータパスの入力とする。尚、以上の説明では、FO関数のMISTY構造を取り上げて、MISTY構造の構成を説明したが、FI関数などのFO関数以外のデータ変換関数においても、上記基本構成を変形した各種形態のMISTY構造がある。図4は、図3に示すユニット500の機能を備えた従来の回路を示す図である。
図4に示す回路510は、図2Cに示すアルゴリズムの処理を実行可能である。すなわち、FO関数の処理と、FO関数の処理結果とデータRとの排他的論理和をとる処理も可能である。
回路510は、4個のレジスタReg−L、Reg−FOL、Reg−FOR、Reg−R、2個のマルチプレクサ511L、511R、2個のデマルチプレクサ512L、512R、5個の他的論理和演算機器521〜525を備えている。
レジスタReg−Lは32ビットのレジスタであり、FO関数20が処理する32ビットの入力データLを保持する。レジスタReg−Lに保持されたデータLの上位16ビット(LL)と下位16ビット(LR)は、それぞれ、マルチプレクサ511Lとマルチプレクサ511Rに入力する。マルチプレクサ511Lには、レジスタReg−FOLに保持されている16ビットのデータも入力する。マルチプレクサ511Lは、レジスタReg−LまたはレジスタReg−FOLのいずれか一方から入力される16ビットデータを排他的論理和演算器521に選択出力する。排他的論理和演算器521は、マルチプレクサ511Lから入力される16ビットデータと外部入力される16ビットの鍵KOij(j=1〜3)の排他的論理和を演算し、その演算結果をFI関数処理部530に出力する。FI関数処理部530は処理結果(16ビットのデータ)を排他的論理和演算器522に出力する。マルチプレクサ511Rは、レジスタReg−FORが保持している16ビットのデータも入力し、レジスタReg−LまたはレジスタReg−FORのいずれか一方から入力される16ビットのデータを排他的論理和演算器522とデマルチプレクサ512Lに選択出力する。排他的論理和演算器522は、FI関数処理部530の出力データ(16ビット)とマルチプレクサ511Rから入力される16ビットのデータの排他的論理和を演算し、その演算結果をデマルチプレクサ512Rに出力する。
このように、マルチプレクサ511L、511Rとデマルチプレクサ512L、512Rの間に設けられた排他的論理和演算器521、522とFI関数処理部530で構成される回路(図4において破線の矩形枠で囲まれた回路600)はMISTY構造となっている。したがって、デマルチプレクサ512Lから出力されるL側(左側)の16ビットデータとマルチプレクサ511Rから選択出力されるR側(右側)の16ビットデータは、MISTY構造の回路600によって、R側とL側の16ビットデータに入れ替えられる。
デマルチプレクサ512Lは、マルチプレクサ511Rから入力する16ビットのデータを、レジスタReg−FOLまたは排他的論理和演算器523のいずれか一方に選択出力する。レジスタReg−FOLは、デマルチプレクサ512Lから入力する16ビットデータを保持し、そのデータをマルチプレクサ511Lに出力する。排他的論理和演算器523は、サイクル3の処理における拡大鍵KOi4とサイクル2における排他的論理和演算結果t3(図2C参照)との排他的論理和を演算するために設けられている。排他的論理和演算器523の論理演算結果は排他的論理和演算器524に出力される。排他的論理和演算器524には、レジスタReg−Rに保持されている32ビットデータRの上位16ビット(RL)も入力する。排他的論理和演算器524の演算結果(16ビット)はレジスタReg−Rに上位16ビットデータ(RR)として格納される。
デマルチプレクサ512Rは、排他的論理和演算器522の論理演算結果(16ビットデータ)をレジスタReg−FORまたは排他的論理和演算器525のいずれか一方に出力する。レジスタReg−FORは、デマルチプレクサ512Rから入力する16ビットデータを保持し、そのデータをマルチプレクサ511Rに出力する。排他的論理和演算器525は、レジスタReg−Rに保持されている32ビットデータの下位16ビット(RR)とデマルチプレクサ512Rからの入力データの排他的論理和を演算し、その演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、排他的論理和演算器525から入力される16ビットデータを32ビットデータの下位16ビットのデータ(RR)として保持し、そのデータRRを排他的論理和演算器525に出力する。
このように、従来のFO関数及びその周辺回路(FO関数の出力とデータRの排他的論理和をとる回路)用の回路は、FO関数の処理のために、2個の16ビットデータ保持用のレジスタReg−FOL、レジスタReg−FORが必要であった。すなわち、FO関数及びその周辺回路用の回路(以後、便宜上、この回路をFO関数関連処理回路と呼ぶ)は、FO関数用に合計32ビットのレジスタが必要であった。
{MISTY1のアルゴリズム}
MISTY1においては、平文1(64ビット)は32ビットに2分割される。ここで、MSB(Most Significant Bit)側の32ビットをL、LSB(Least Significant Bit)側の32ビットをRと呼ぶことにする。各分割データL、Rは、それぞれ、左側の初段のFL関数10と右側の初段のFL関数10に入力される。そして、前記左側のFL関数10の出力(32ビット)が初段のFO関数20に入力され、前記右側のFL関数10の出力が(32ビット)が初段の排他的論理和30の一方の入力となる。前記初段のFO関数20の出力(32ビット)は、該初段の排他的論理和30の他方の入力となる。初段の排他的論理和30の結果(32ビット)は、左側の2段目のFL関数10と2段目のFO関数20の入力となる。また、左側の初段のFL関数10の出力(32ビット)は、2段目の排他的論理和30の一方の入力となる。この2段目の排他的論理和30の他方の入力は、前記2段目のFO関数20の出力となる。
{FO関数関連処理回路の従来の処理アルゴリズムALp}
ここで、図4に示す回路510を用いたFO関数関連処理回路の処理アルゴリズムを、図2Cを参照しながら説明する。尚、各サイクルの右辺の式における
Figure 2009090689
は、排他的論理和の演算を示す記号である。これは、以降の論理演算式においても同様である。
FI(a,KIij)は、入力データaを拡大鍵KIij(j=1〜3)により変換するFI関数の処理を示す。
[サイクル1]
Figure 2009090689
[サイクル2]
Figure 2009090689
[サイクル3]
Figure 2009090689
Figure 2009090689

上記に示すように、従来の回路510は、サイクル1、2の処理結果t2i-1、t2i(i=1〜2)を、それぞれ、レジスタReg−FOR、レジスタReg−FOLに格納する必要があった。しかしながら、レジスタは他の素子に比べて1ビット当たりのゲート規模が大きいため、MISTY1を適用した暗号処理装置の回路全体の規模を小さくするためには、レジスタのサイズを極力削減することが望ましい。このことは、MISTY1のみならず、KASUMIなどのようなMISTY1と類似した回路構造を有する共通鍵暗号系のブロック暗号の処理装置の回路にも同様にあてはまる。
図5は、上記処理アルゴリズムALpのソフトウェア処理を示すフローチャートである。このソフトウェア処理は、組み込みシステムのマイコン(マイクロコンピュータ)が備えるCPUなどにより実行される。尚、以下のフローチャートの処理で使用されるデータLR,LL,RR,RL,鍵KOi1〜KOi4,鍵KIi1〜KIi3は、CPU内のレジスタまたはメモリなどに格納されている。
図5のフローチャートの処理を説明する。
まず、前記処理アルゴリズムALpのサイクル1の処理
Figure 2009090689
を実行し、その処理結果をレジスタAに格納する(S1)。尚、レジスタAはCPUが備える汎用レジスタの一つである。
次に、前記処理アルゴリズムALpのサイクル2の処理
Figure 2009090689
を実行し、その処理結果をレジスタBに格納する(S2)。
そして、最後に、前記処理アルゴリズムALpのサイクル3の最初の処理
Figure 2009090689

を実行し、その処理結果を「RRが格納されているレジスタ」に格納する。
続いて、前記処理アルゴリズムALpのサイクル3の2番目の処理
Figure 2009090689

を実行し、その処理結果を「RLが格納されているレジスタ」に格納する。
以上の処理により、64ビットの平文データが64ビットの暗号文に暗号化される。
図6は、図5のフローチャートの処理をアセンブリ言語で表現したプログラムの例である。図6に示すプログラムにおいては、FI関数の処理をプログラム(FI関数処理関数)で実現している。このFI関数処理関数は、図6に示すメインプログラム(メインルーチン)からサブルーチンとして呼び出さされる。このサブルーチン呼び出しは、図6において、
Call FI(a,KIij)
j=1〜3
という記述のステートメントで表現されている。
Call FI(a,KIij)は、「aを入力データ(変換対象データ)、KIijをデータ変換用の鍵として、FI関数(FI関数処理関数)を実行する処理であり、そのFI関数の処理結果はaに格納される」。
尚、図6に示すプログラム記述において、「MOV」はデータ転送命令、「XOR」は排他的論理和の演算命令を示す。また、それらの命令のオペランドaや、Call命令の引数aはレジスタAを示す。MOV命令は、第1オペランドのレジスタに、第2オペランドで指定されるデータを転送する命令である。例えば、、「MOV a,LL」は、レジスタLLに格納されているデータを、レジスタAに転送する命令である。また、「MOV a,[LL]」は、データLLが格納されているメモリアドレスをアクセスして、メモリからレジスタAにデータLLを転送する命令である。
図6に示すプログラム記述から分かるように、従来のFO関数関連処理のプログラム(ソフトウェア)は、CPUが備える汎用レジスタの内、データ変換処理過程における中間データの保持のために2個のレジスタ(レジスタA、B)を使用していた。
特開2004−240427号公報 特許3088337号 暗号技術仕様書 MISTY1(http://www.ipa.go.jp/security/enc/CRYPTREC/fy15/doc/5_02jspec.pdf) 松井 充 「ブロック暗号アルゴリズム MISTY」、信学技報、ISEC96−11、1996−07
本発明の目的は、ブロック暗号で使用されるMISTY構造を有するデータ変換関数の処理装置の回路規模を従来よりも小さくすることである。
本発明の暗号化装置は、2nビットのデータLをデータ変換するデータ処理手段と、該データ処理手段の処理結果と2nビットのデータRとを排他的論理和する排他的論理和演算器を備える暗号化装置を前提とする。
暗号化装置の第1の態様は、nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLR、nビットのデータ“0”または前記第1のレジスタに格納されているnビットのデータのいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、該第2の排他的論理和演算器の出力を前記第1のレジスタに出力するデマルチプレクサと、前記第2の排他的論理和演算器の出力またはラウンド鍵KOim(mは自然数)を選択出力する第3のマルチプレクサと、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記第3のマルチプレクサの出力とを排他的論理和する第3の排他的論理和演算器と、前記第2のマルチプレクサの出力と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備える。そして、
前記第1のマルチプレクサ、前記第2のマルチプレクサ、前記第3のマルチプレクサ及び前記デマルチプレクサは外部から制御され、前記第1のレジスタは前記デマルチプレクサの出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納する。
暗号化装置の第2の態様は、nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLRまたはnビットのデータ“0”のいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、前記第2の排他的論理和演算器の出力またはラウンド鍵KOimを選択出力する第3のマルチプレクサと、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記第3のマルチプレクサの出力とを排他的論理和する第3の排他的論理和演算器と、前記第2の排他的論理和演算器と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備える。そして、前記第1のマルチプレクサ、前記第2のマルチプレクサ及び前記第3のマルチプレクサは外部から制御され、前記第1のレジスタは前記第2の排他的論理和演算器の出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納する。
暗号化装置の第3の態様は、nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLRまたはnビットのラウンド鍵KOim(mは自然数)のいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、該第2の排他的論理和演算器の出力を入力し、その入力を適切なタイミングで出力する出力手段と、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記スイッチ手段の出力とを排他的論理和する第3の排他的論理和演算器と、前記第2の排他的論理和演算器と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備える。そして、前記第1のマルチプレクサ、前記第2のマルチプレクサ及び前記出力手段は外部から制御され、前記第1のレジスタは前記第2の排他的論理和演算器の出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納する。
上記暗号化装置の第3の態様において、例えば、前記出力手段は、nビットの“0”データまたは前記第2の排他的論理和演算器の出力を選択出力する第3のマルチプレクサである。
暗号化装置の第4の態様は、上記暗号化装置の第1乃至第3の態様のいずれか一つの暗号化装置において、さらに、前記データLを入力・保持し、出力する第3のレジスタを備えている。
本発明の暗号化装置によれば、マルチプレクサやデマルチプレクサを制御することで、従来はレジスタに格納する必要があったデータ処理手段のnビットの処理結果を、第1のレジスタに格納せずに、第2のレジスタに格納されている2nビットのデータRの上位16ビットRLと下位16ビットRRと、それぞれ、排他的論理和する。このため、第1のレジスタのサイズ(レジスタ長)をnビットにすることができる。したがって、従来の暗号化装置と比較して、レジスタサイズを半減でき、回路規模の削減が可能になる。
本発明の暗号処理方法は、2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理方法を前提にする。
暗号処理方法の第1の態様は、前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を出力するサイクル1のステップと、前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi2を用いてデータ変換し、そのデータ変換結果を前記サイクル1のステップで出力される論理演算結果t1と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記サイクル2のステップで出力される上位nビットRLをラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップとを備える。
暗号処理方法の第2の態様は、前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果t3をサイクル1のステップで出力されるRLと排他的論理和してRLとして出力し、さらにt3をサイクル1のステップで出力されるRRと排他的論理和してRRとして出力するサイクル2のステップと、前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記サイクル2のステップで出力される上位nビットRLを拡大鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップとを備える。
暗号処理方法の第3の態様は、前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果をラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi3を用いてデータ変換し、そのデータ変換結果を鍵KOi4と排他的論理和し、その論理演算結果をラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果をサイクル2で出力された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記サイクル2のステップで出力される上位nビットRLを出力するサイクル3のステップとを備える。
本発明の暗号処理方法によれば、前記論理演算結果t3をレジスタに格納する処理が不要になる。したがって、従来の暗号処理方法と比較して、回路規模を削減できる。
尚、MISTY構造はFeistel構造の一種である。
MISTY1の暗号化処理の基本構造を示す図である。 図1に示すMISTY1の構造から抽出したFO関数の周辺の構造を示す図である。 図2Aに示す上記FO関数の周辺の構造を時計回りに180度回転することによって得られる構造である。 図2Bに示す構造において、その内部のFO関数を展開することによって得られる図である。 図2Cに示す構造を、ハードウェア処理の観点から解析した図である。 図3に示すユニットの従来のハードウェア構成を示す図である。 従来のFO関数関連処理のアルゴリズムのソフトウェア処理を示すフローチャートである。 図5のフローチャートの処理をアセンブリ言語で表現したプログラムの例である。 従来のFO関数関連処理回路の処理アルゴリズムを示す図である。 本発明の第1の実施形態であるFO関数関連処理回路の処理アルゴリズムを示す図である。 図7Bを、本発明の第1の実施形態の処理アルゴリズムのサイクル1〜3に対応させて分割した図である。 本発明の第2実施形態であるFO関数関連処理回路の構成例を示す図である。 従来のFO関数関連処理回路の処理アルゴリズムを示す図である。 図9Aに示す処理アルゴリズムを等価変換することによって得られる、本発明の第2実施形態の処理アルゴリズムを示す図である。 図9Bを、本発明の第2実施形態の処理アルゴリズムのサイクル1〜3に対応させて分割した図である。 本発明の第2実施形態であるFO関数関連処理回路の構成例を示す図である。 本発明の第2実施形態であるFO関数関連処理回路の処理アルゴリズムを示す図である。 本発明の第3の実施形態であるFO関数関連処理の処理アルゴリズムを示す図である。 本発明の第3の実施形態であるFO関数関連処理回路の構成例を示す図である。 本発明の実施形態である組み込み機器の第1の構成を示す図である。 本発明の実施形態である組み込み機器の第2の構成を示す図である。 本発明の実施形態である組み込み機器の第3の構成を示す図である。 本発明の第1の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器に実装されるソフトウェア(プログラム)のアルゴリズムを示すフローチャートである。 図16に示すアルゴリズムで動作するプログラムの実施例を示す図である。 本発明の第2の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器に実装されるソフトウェア(プログラム)のアルゴリズムを示すフローチャートである。 図18に示すアルゴリズムのプログラムで動作するプログラムの実施例を示す図である。 本発明の第3の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器に実装されるソフトウェア(プログラム)のアルゴリズムを示すフローチャートである。 図20に示すアルゴリズムのプログラムで動作するプログラムの実施例を示す図である。
本実施形態は、排他的論理和演算が演算順序が入れ替え可能であるという法則を利用して、図2Cに示すようなMISTY構造を有する関数の回路(装置)で使用されるレジスタのサイズの削減を図るものである。
以下、図面を参照しながら本発明の実施形態について説明する。尚、以下に述べる実施形態は、いずれも本発明をFO関数関連処理回路に適用した例であるが、本発明はFO関数関連処理回路に限定されるものではなく、FO関数以外のF関数を含むMISTY構造の回路にも適用可能である。また、ブロック長も64ビットに限定されるものではない。また、秘密鍵や拡大鍵のビット長も本実施形態に限定されるものではない。
[第1の実施形態]
{手法}
図7A、7Bは、本発明の第1の実施形態の手法を説明する図である。図7Aは図2Cと同様な図であり、従来のFO関数関連処理回路の処理アルゴリズムを示す図である。
本実施形態においては、図7Aに示すFO関数関連処理回路の従来構造を、図7Bに示す構造に等価変換する。具体的には、図7Aにおいて2つの楕円枠で囲まれている構成を、図9Bにおいて2つの楕円枠で囲まれた構成に等価変換する。
図7Aに示すように、FO関数は3段のMISTY構造を有しており、1段目は排他的論理和611、FI関数601及び排他的論理和612から構成されている。また、2段目は、排他的論理和621、FI関数602及び排他的論理和622から構成されている。3段目は、排他的論理和631、FI関数603及び排他的論理和632aから構成されている。FO関数は、さらに、2段目内の排他的論理和622の出力t3と鍵KOi4の排他的論理和を演算する排他的論理和642aを備えている。
図7Bに示す等価変換においては、まず、3段目(サイクル3)のFI関数603の出力を、2段目(サイクル2)の出力t3(2番目の排他的論理和622の出力)と排他的論理和させずに、“0”と排他的論理和させる(排他的論理和632)。排他的論理和632の出力はRRと排他的論理和させる(排他的論理和641)。また、鍵KOi4をRLと排他的論理和させる(排他的論理和642)。さらに、t3を単純分岐させ、t3を排他的論理和642の出力と排他的論理和させる(排他的論理和643)と共に、排他的論理和641の出力とも排他的論理和させる(排他的論理和644)。
尚、排他的論理和632を行っても、FI関数処理部603の結果がそのまま出力されるだけなので、排他的論理和632は省略してもよい。
上記のようにして、FO関数関連処理回路の処理アルゴリズムを図7Bに示す構成にすることで、FO関数関連処理回路をハードウェア化した場合、その回路で使用するレジスタサイズを従来の半分とすることができる。このようなハードウェアの実施形態については後述する。
{第1の実施形態のFO関数関連処理回路の処理アルゴリズムAL1}
図7Bに示す処理アルゴリズムAL1は、下記のサイクル1〜3から構成される。
[サイクル1]
Figure 2009090689
(t1をレジスタに格納)
[サイクル2]
Figure 2009090689

(t3はレジスタに格納せず、直接RR,RLと排他的論理和する)
[サイクル3]
Figure 2009090689

{FO関数関連処理回路の第1の実施形態のハードウェア構成}
図8Aは、図7Bを、前記処理アルゴリズムAL1のサイクル1〜3に対応させて分割した図である。図8Bは、図8Aに示す処理アルゴリズムをハードウェア化したFO関数関連処理回路の構成例を示す図である。尚、図8Bにおいて、図4に示す回路の構成要素と同じ構成要素には同一の符号を付与している。
図8Aに示すように、図7Bに示す処理アルゴリズムはサイクル1(1サイクル目)〜サイクル3(3サイクル目)の3つのサイクルに分割できる。これら3つのサイクルにおいて、図8Aの上方に示す処理ブロック710の処理は、サイクル1〜3の全てで共通な処理である。したがって、この処理ブロック710を、図8Bに示すように回路要素810としてハードウェア化する。回路要素810は、排他的論理和演算器811、FI関数処理部812及び排他的論理和演算器813から構成される。
また、図8Aに示す処理ブロック730の処理は、サイクル2に特有な処理である。したがって、この処理ブロック730を、図8Bに示すように回路要素830としてハードウェア化する。回路要素830は、2つの排他的論理和演算器524、525と1つのレジスタReg−Rから構成される。レジスタReg−Rは32ビット構成のレジスタである。回路要素830は、図4に示す回路にも含まれており新規な構成ではない。図8Bに示す回路は、上記構成要素以外に、32ビット構成のレジスタReg−L、2つの3入力1出力のマルチプレクサ801R、801L、デマルチプレクサ821、マルチプレクサ823及び16ビット構成のレジスタReg−FOを備える。
図8Bに示す本実施形態のFO関数関連処理回路(暗号化装置)800が備えるレジスタは、2個の32ビット構成のレジスタReg−L、Reg−Rと1個の16ビット構成のレジスタReg−FOであり、回路全体のレジスタサイズは80ビットである。したがって、図4に示す従来のFO関数関連処理回路510よりも、レジスタサイズが16ビット小さい。これは、従来のFO関数関連処理回路510が備えていた2個のレジスタReg−FOL、Reg−FORを、1個のレジスタReg−FOに代替したためである。また、本実施形態のFO関数関連処理回路800においては、従来のFO関数関連処理回路510が備えていた鍵KOi4専用の排他的論理和演算器も削減されている。
レジスタReg−Lは、32ビットの入力データLを格納するレジスタである。ここで、レジスタReg−Lに格納される32ビットデータLの上位16ビットデータをLL、下位16ビットデータをLRと表現する。レジスタReg−Lに保持されている32ビットデータLは、上位16ビットデータLLと下位16ビットデータに分岐してマルチプレクサ801Lに入力する。レジスタReg−Lに保持されている32ビットデータLの下位16ビットデータLRは、マルチプレクサ801Rにも入力される。
マルチプレクサ801Lには、レジスタReg−FOに格納されている16ビットデータも入力する。マルチプレクサ801Lは、上記した3つの16ビットデータの中からいずれか1つを選択し、その選択した16ビットデータを排他的論理和演算器811に出力する。マルチプレクサ801Rには、上記16ビットデータLR以外に、“0”の16ビットデータとレジスタReg−FOに格納されている16ビットデータが入力する。マルチプレクサ801Rは、それら3つの16ビットデータの中からいずれか1つを選択し、その選択した16ビットデータを排他的論理和演算器813に出力する。
排他的論理和演算器811は、マルチプレクサ801Lから入力する16ビットデータと外部入力される鍵KOij(j=1〜3)の排他的論理和を演算し、その演算結果(16ビットデータ)をFI関数処理部812に出力する。FI関数処理部812は、排他的論理和演算器811から入力される16ビットデータを、外部入力される鍵KIij(j=1〜3)を用いて変換し、その変換結果(16ビットデータ)を排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812から入力される16ビットデータとマルチプレクサ801Rから入力される16ビットデータの排他的論理和を演算し、その演算結果をデマルチプレクサ821に出力する。
デマルチプレクサ821は、排他的論理和演算器813から入力する16ビットデータを、レジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に出力する。尚、デマルチプレクサ821は、排他的論理和演算器813からの入力を開閉するスイッチに代替することも可能である。マルチプレクサ823には、鍵KOi4も外部入力する。マルチプレクサ823は、デマルチプレクサ821の出力または鍵KOi4のいずれか一方を選択し、その選択した16ビットデータを排他的論理和演算器524に出力する。排他的論理和演算器524は、マルチプレクサ823の出力(16ビットデータ)とレジスタReg−Rに格納されている32ビットデータの上位16ビットデータを排他的論理和し、その論理演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、排他的論理和演算器524が出力する16ビットデータを32ビットデータの上位16ビットとして格納する。このように、レジスタReg−Rは、排他的論理和演算器524の最新の論理演算結果(16ビットデータ)を、32ビットデータの上位16ビットとして格納する機能を有する。換言すれば、レジスタReg−Rが保持する32ビットデータの上位16ビットは排他的論理和演算器524の論理演算結果によって更新される。
排他的論理和演算器525は、デマルチプレクサ821の出力(16ビットデータ)とレジスタReg−Rに格納されている下位16ビットデータを排他的論理和し、その論理演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、排他的論理和演算器525が出力する16ビットデータを32ビットデータの下位16ビットとして格納する。このように、レジスタReg−Rは、排他的論理和演算器525の最新の論理演算結果(16ビットデータ)を、32ビットデータの下位16ビットとして格納する機能を有する。換言すれば、レジスタReg−Rが保持する32ビットデータの下位16ビットは排他的論理和演算器525の論理演算結果によって更新される。尚、レジスタReg−Rの上位16ビットRLと下位16ビットRRの更新処理は並列処理することが可能である。
図8Bに示すFO関数関連処理回路800の各構成要素は不図示の制御部から出力される制御信号によって動作やそのタイミングが制御される。また、レジスタReg−LとレジスタReg−Rの役割(機能)は、各段のFO関数毎に交換させる。具体的には、図8Bに示す回路は、奇数段(1段目、3段目、5段目、・・・)のFO関数の回路構成である。偶数段(2段目、4段目、6段目、・・・)のFO関数においては、レジスタReg−LとレジスタReg−Rの配置が交換される。これは、上述したように、Feistel構造においては、段が切り替わる毎にL(64ビットデータの上位32ビット)とR(64ビットデータの下位32ビット)を交互に入れ替えるからである。これは、以下に述べる第2及び第3実施形態についても同様である。
ところで、上記処理アルゴリズムAL1におけるサイクル2とサイクル3の順序を交換して処理を実行することも可能である。すなわち、サイクル1、サイクル3、サイクル2の順で処理を実行するようにしてもよい。また、RLに拡大鍵KOi4を排他的論理和する処理は、サイクル1のタイミングであっても問題ない。このようにすれば、上記FO関数関連処理回路800から拡大鍵KOi4を選択するマルチプレクサ823を除去することが可能となる。この場合、RLと拡大鍵KOi4の排他的論理和は、回路800の外部で実行するようにしてもよい。
{FO関数関連処理回路の第1の実施形態の動作}
図8Bに示すFO関数関連処理回路800は、上記処理アルゴリズムAL1の処理を実行する。以下、FO関数関連処理回路800の動作を処理アルゴリズムAL1の各サイクル毎に説明する。
{サイクル1}
マルチプレクサ801Lは、レジスタReg−Lから入力する16ビットデータLLを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLLと外部入力する鍵KOi1の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、上記演算結果を外部入力する鍵KIi1を用いて変換し、その変換結果を排他的論理和演算器813に出力する。一方、マルチプレクサ801Rは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器813に選択出力する。排他的論理和演算器813は、FI関数処理部812からの入力データとマルチプレクサ801Rからの入力データ(LR)の排他的論理和を演算し、その演算結果t1をデマルチプレクサ821に出力する。デマルチプレクサ821は、その16ビットデータt1をレジスタReg−FOに出力する。レジスタReg−FOは、入力する16ビットデータt1を格納する。
{サイクル2}
マルチプレクサ801Lは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLRと外部入力される鍵KOi2の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、その演算結果を外部入力される鍵KIi2を用いて変換し、その変換結果を排他的論理和演算器813に出力する。マルチプレクサ801Rは、レジスタReg−FOに保持されている16ビットデータt1を排他的論理和演算器813に選択出力する。排他的論理和演算器813は、FI関数処理部812の変換結果と16ビットデータt1の排他的論理和を演算し、その演算結果(16ビットデータ)t3をデマルチプレクサ821に出力する。デマルチプレクサ821は、その16ビットデータt3をマルチプレクサ823と排他的論理和演算器525に出力する。排他的論理和演算器525は、レジスタReg−Rに保持されている32ビットデータの下位16ビットRRと16ビットデータt3の排他的論理和を演算し、その演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を32ビットデータの下位16ビットRRとして格納する。
マルチプレクサ823は、上記16ビットデータt3を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その16ビットデータt3とレジスタReg−Rに保持されている32ビットデータの上位16ビットRLの排他的論理和を演算し、その演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を32ビットデータの上位16ビットRLとして格納する。
このように、サイクル2においては、排他的論理和演算器813の出力t3は、レジスタReg−FOに格納されない。t3は、レジスタReg−Rに保持されている16ビットデータRR及び16ビットデータRLと直接に排他的論理和がとられる。
{サイクル3}
マルチプレクサ801Lは、レジスタReg−FOに格納されている16ビットデータt1を排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータt1と外部入力する鍵KOi3の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、その演算結果を外部入力する鍵KIi3を用いて変換し、その変換結果を排他的論理和演算器813に出力する。マルチプレクサ801Rは、16ビットデータ“0”(16ビットが全て“0”のデータ)を排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812からの入力と上記16ビットデータ“0”の排他的論理和を演算し、その演算結果をデマルチプレクサ821に出力する。したがって、この場合、FI関数処理部812の出力データ(16ビットデータ)がそのままデマルチプレクサ821に入力する。デマルチプレクサ821は、FI関数処理部812の出力データを排他的論理和演算器525に出力する。排他的論理和演算器525は、そのFI関数処理部812の出力データとレジスタReg−Rに保持されている32ビットデータの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、排他的論理和演算器525から入力される16ビットデータを、32ビットデータの下位16ビットRRとして格納する。マルチプレクサ823は、外部入力する鍵KOi4を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、鍵KOi4とレジスタReg−Rに保持されている32ビットデータの上位16ビットRLの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、上記演算結果を32ビットデータの上位16ビットRLとして格納する。
[第2の実施形態]
{手法}
本発明の第2実施形態のFO関数関連処理回路の処理アルゴリズムは、上述した図8Bに示すFO関数関連処理回路の処理アルゴリズムを、さらに等価変換したものである。
この等価変換を、図9A、9Bを参照して説明する。図9Aに示すFO関数関連処理回路の処理アルゴリズムは、図5Aに示す従来の処理アルゴリズムと同じものである。
上述した第1の実施形態のFO関数関連処理回路の処理アルゴリズムは、図9Aにおいて楕円形の枠660、670で囲んだ部分を等価変換したものであった。第2の実施形態のFO関数関連処理回路の処理アルゴリズムは、上記2つの部分に加え、図9Aにおいて楕円形の枠680で囲まれた部分についても等価変換を行い、図9Aに示す構成の処理アルゴリズムを図9Bに示す構成の処理アルゴリズムに変形する。
図9Bにおいて、楕円形の枠960、970で囲まれた部分は第1の実施形態のFO関数関連処理回路の処理アルゴリズムと同様な構成である。第2の実施形態においては、図9Bにおいて楕円形の枠980で囲んで示すように、32ビットデータRの上位16ビットRLを処理する経路(以後、上位16ビットRL下位処理経路と呼ぶ)に排他的論理和945を追加する。この排他的論理和945は、上位16ビットRL下位処理経路において排他的論理和643の後段に配置する。さらに、32ビットデータRの下位16ビットRRを処理する経路(以後、下位16ビットRR処理経路と呼ぶ)に排他的論理和946を追加する。この排他的論理和946は、下位16ビットRR処理経路において排他的論理和644の後段に配置する。排他的論理和946には、排他的論理和演算器644の出力と排他的論理和612の出力を入力させる。排他的論理和945には、排他的論理和643の出力と排他的論理和612の出力を入力させる。また、2段目のMISTY構造のFI関数602の出力が入力する排他的論理和914には“0”の16ビットデータを入力させる。この排他的論理和914の論理演算結果は、排他的論理和643、644の入力となる。
{FO関数関連処理回路の第2の実施形態の処理アルゴリズムAL2}
図9Bに示す処理アルゴリズムAL2は、下記のサイクル1〜3から構成される。
[サイクル1]
Figure 2009090689

(t1はレジスタに格納する)
[サイクル2]
Figure 2009090689

(t3はレジスタに格納せず、RR,RLに直接排他的論理和する)
[サイクル3]
Figure 2009090689

{FO関数関連処理回路の第2の実施形態のハードウェア構成}
図10Aは、図9Bを、前記処理アルゴリズムAL2のサイクル1〜3に対応させて分割した図である。図10Bは、図10Aに示す処理アルゴリズムをハードウェア化したFO関数関連処理回路の構成例を示す図である。尚、図10Bにおいて、図8Bに示すFO関数関連処理回路800の構成要素と同じ構成要素には同じ符号を付与している。
図10Aに示すように、図9Bに示す処理アルゴリズムはサイクル1(1サイクル目)〜サイクル3(3サイクル目)の3つのサイクルに分割できる。これら3つのサイクルにおいて、図10Aの上方に示す処理ブロック710の処理は、サイクル1〜3の全てで共通な処理である。したがって、この処理ブロック710を、上述した第1の実施形態と同様に、図10Bに示すように回路要素810としてハードウェア化する。この回路要素810は、排他的論理和演算器811、FI関数処理部812及び排他的論理和演算器813から構成される。
上述した処理アルゴリズムAL2は、サイクル2とサイクル3の順序を交換しても処理結果としては問題ない。以下に述べる図10に示すFO関数関連処理回路は、上記処理アルゴリズムAL2を、サイクル1、サイクル3、サイクル2の順に実行するものである。
図10Bに示すFO関数関連処理回路1000の構成について説明する。以下の説明では、FO関数関連処理回路800と相違する構成について述べ、FO関数関連処理回路800と同一な構成については、その説明を省略する。
図10Bに示すFO関数関連処理回路1000は、FO関数関連処理回路800が備えているマルチプレクサ801Rの代わりに、マルチプレクサ1001Rを備えている。また、FO関数関連処理回路1000は、FO関数関連処理回路800が備えていたデマルチプレクサ821を備えていない。
マルチプレクサ801Rは3入力1出力のマルチプレクサであるが、マルチプレクサ1001Rは2入力1出力のマルチプレクサである。したがって、FO関数関連処理回路1000は、FO関数関連処理回路800よりも回路サイズを小さくできる。マルチプレクサ1001Rは、レジスタReg−Lに格納された32ビットデータLの下位16ビットLRと“0”の16ビットデータを入力し、これらを排他的論理和演算器813に選択出力する。排他的論理和演算器813の出力は、レジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に入力する。
{FO関数関連処理回路の第2の実施形態の動作}
図10Bに示すFO関数関連処理回路1000は、上記処理アルゴリズムAL2の処理を、サイクル1、サイクル3、サイクル2の順に実行する。以下、FO関数関連処理回路1000の動作を、処理アルゴリズムAL2の各サイクル毎に説明する。
{サイクル1a(処理アルゴリズムAL2のサイクル1)}
マルチプレクサ801Lは、レジスタReg−Lから入力する16ビットデータLLを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLLと外部入力する鍵KOi1の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、上記演算結果を外部入力する鍵KIi1を用いて変換し、その変換結果を排他的論理和演算器813に出力する。一方、マルチプレクサ1001Rは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器813に選択出力する。排他的論理和演算器813は、FI関数処理部812からの入力データとマルチプレクサ1001Rからの入力データ(LR)の排他的論理和を演算し、その演算結果t1をレジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に出力する。レジスタReg−FOは、入力する16ビットデータt1を格納する。
排他的論理和演算器525は、上記16ビットデータt1とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータの下位16ビットRRとして格納する。
マルチプレクサ823は、上記16ビットデータt1を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その16ビットデータt1とレジスタReg−Rに格納されている32ビットデータRの上位16ビットRLの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの上位16ビットRLとして格納する。
{サイクル2a(処理アルゴリズムAL2のサイクル3)}
マルチプレクサ801Lは、レジスタReg−FOに格納されている16ビットデータt1を排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータt1と外部入力する鍵KOi3の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、その演算結果を外部入力する鍵KIi3を用いて変換し、その変換結果を排他的論理和演算器813に出力する。マルチプレクサ1001Rは、16ビットデータ“0”(16ビットが全て“0”のデータ)を排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812からの入力と上記16ビットデータ“0”の排他的論理和を演算し、その演算結果(16ビットデータ)を、レジスタReg−R、マルチプレクサ823及び排他的論理和演算器525に出力する。したがって、サイクル2の場合と同様に、レジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525には、FI関数処理部812の処理結果がそのまま入力する。排他的論理和演算器525は、そのFI関数処理部812の処理結果とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの下位16ビットRRとして格納する。
マルチプレクサ823は、鍵KOi4を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その鍵KOi4とレジスタReg−Rに格納されている32ビットデータRの上位16ビットRLの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を32ビットデータRの上位16ビットRLとして格納する。
{サイクル3a(処理アルゴリズムAL2のサイクル2)}
マルチプレクサ801Lは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLRと外部入力される鍵KOi2を排他的論理和し、その論理演算結果をFI関数処理部812に出力する。FI関数処理部812は、その論理演算結果を外部入力される鍵KIi2を用いて変換し、その変換結果(16ビットデータt3)を排他的論理和演算器813に出力する。
マルチプレクサ1001Rは、“0”の16ビットデータを排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812から入力する上記16ビットデータt3と上記“0”の16ビットデータの排他的論理和を演算し、その演算結果をレジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に出力する。したがって、この場合、FI関数処理部812の出力(16ビットデータt3)は、レジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に入力する。
排他的論理和演算器525は、上記16ビットデータt3とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの下位16ビットRRとして格納する。
マルチプレクサ1001Rは、レジスタReg−Lに格納されている32ビットデータLの下位16ビットLRを排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812から入力する上記16ビットデータt3とマルチプレクサ1001Rから入力する上記16ビットデータLRの排他的論理和を演算し、その演算結果を、レジスタReg−FO、マルチプレクサ823及び排他的論理和演算器525に出力する。マルチプレクサ823は、上記16ビットデータt3を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その16ビットデータt3とレジスタReg−Rに格納されている32ビットデータRの上位16ビットRLの排他的論理和を演算し、その演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの上位16ビットRLとして格納する。
このように、サイクル2においては、排他的論理和演算器813の出力t3はレジスタReg−FOに格納しない。t3は、レジスタReg−Rに保持されている16ビットデータRR及び16ビットデータRLと直接に排他的論理和される。
ところで、前記処理アルゴリズムAL2は、サイクル2相当の処理をサイクル1の前に実行することができる。この場合の処理アルゴリズムを以下に示す。
{処理アルゴリズムAL2の変形例(処理アルゴリズムAL2v)}
[サイクル1]
Figure 2009090689

(t3はレジスタに格納せず、RR,RLに直接排他的論理和する)
[サイクル2]
Figure 2009090689

(t1はレジスタに格納する)
[サイクル3]
Figure 2009090689

処理アルゴリズムAL2と処理アルゴリズムAL2vは、サイクル1とサイクル2の実行順序が異なるだけなので、上記処理アルゴリズムAL2vを実行する装置として、図10Bに示すFO関数関連処理回路1000を利用できる。但し、この場合、FO関数関連処理回路1000の実行制御は処理アルゴリズムAL2vに従う必要があるため、FO関数関連処理回路1000の実行を制御する制御部は変更が必要である。この制御部の変更は、ハードウェアまたはソフトウェアのいずれの変更によっても可能である。
尚、上記FO関数関連処理回路1000を、処理アルゴリズムAL2をサイクル1、サイクル2、サイクル3の順に実行するような構成に変更することも可能である。この場合、サイクル2においては、排他的論理和演算器813の演算結果がレジスタReg−FOに格納されないようにする必要がある。例えば、レジスタReg−FOの入力に対して、サイクル2の処理期間中だけオフにするスイッチを設ける。または、排他的論理和演算器813とレジスタReg−FOの間の単純分岐の箇所のマルチプレクサを配置する。このマルチプレクサは、サイクル1においては左右の両方向に出力し、サイクル2においては右方向だけに出力する。また、サイクル3においては、左右両方向または右方向だけに出力する。
[第3の実施形態]
{手法}
本発明の第3実施形態のFO関数関連処理回路の処理アルゴリズムは、上述した図10Aに示すFO関数関連処理回路の処理アルゴリズムを、さらに等価変換したものである。
この等価変換を、図11A、11Bを参照して説明する。図11Aは、図10Aに示す第2実施形態のFO関数関連処理回路の処理アルゴリズムと同様な図である。
図11Bに示す第3の実施形態のFO関数関連処理回路は、図11Aに示す処理アルゴリズムにおいて、“0”の16ビットデータが入力していた排他的論理和914、632を、鍵KOi4が入力する排他的論理和1114、1132に変更する。そして、この変更に伴い、鍵KOi4が入力していた排他的論理和642を削除する。これにより、排他的論理和の論理演算が1つ削減される。
{FO関数関連処理回路の第3の実施形態の処理アルゴリズムAL3}
図11Bに示す処理アルゴリズムAL3は、下記のサイクル1〜3から構成される。
[サイクル1]
Figure 2009090689

(t1はレジスタに格納する)
[サイクル2]
Figure 2009090689

(t3はレジスタに格納せず、RR,RLに直接排他的論理和する)
[サイクル3]
Figure 2009090689
{FO関数関連処理回路の第3の実施形態のハードウェア構成}
図12は、図11Bに示す処理アルゴリズムをハードウェア化したFO関数関連処理回路の構成例を示す図である。尚、図12において、図10Bに示す回路の構成要素と同じ構成要素には同じ符号を付与している。
図12に示すFO関数関連処理回路1200の構成について説明する。以下に述べる説明では、上述したFO関数関連処理回路1000が備える構成の説明は省略し、FO関数関連処理回路1000と異なる構成要素について説明する。上記処理アルゴリズムAL3は、サイクル2とサイクル3の順序を入れ替えて実行しても最終的な処理結果は変わらない。FO関数関連処理回路1200は、上記処理アルゴリズムAL3を、サイクル1、サイクル3、サイクル2の順に実行するものである。
FO関数関連処理回路1200は、FO関数関連処理回路1000が備えるマルチプレクサ1001Rの代わりに、マルチプレクサ1201Rを備える。マルチプレクサ1201Rは、レジスタReg−Rに格納されている32ビットデータLの下位16ビットLRと外部入力する16ビットの鍵KOi4を入力し、いずれか一方を排他的論理和演算器813に選択出力する。また、FO関数関連処理回路1200は、FO関数関連処理回路1000が備えるマルチプレクサ823の代わりに、マルチプレクサ1223を備える。マルチプレクサ1223は、排他的論理和演算器813の出力(16ビットの論理演算結果)と“0”の16ビットデータを入力し、いずれか一方を排他的論理和演算器524に出力する。
{FO関数関連処理回路の第3の実施形態の動作}
図12に示すFO関数関連処理回路1000は、上記処理アルゴリズムAL3の処理をサイクル1、サイクル3、サイクル2の順に実行する。以下、FO関数関連処理回路1000の動作を処理アルゴリズムAL3の各サイクル毎に説明する。
{サイクル1b(処理アルゴリズムAL3のサイクル1)}
マルチプレクサ801Lは、レジスタReg−Lから入力する16ビットデータLLを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLLと外部入力する鍵KOi1の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、上記演算結果を外部入力する鍵KIi1を用いて変換し、その変換結果を排他的論理和演算器813に出力する。一方、マルチプレクサ1201Rは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器813に選択出力する。排他的論理和演算器813は、FI関数処理部812からの入力データとマルチプレクサ801Rからの入力データ(LR)の排他的論理和を演算し、その演算結果t1をレジスタReg−FO、マルチプレクサ1223及び排他的論理和演算器525に出力する。レジスタReg−FOは、入力する16ビットデータt1を格納する。
排他的論理和演算器525は、上記16ビットデータt1とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータの下位16ビットRRとして格納する。
マルチプレクサ1223は、上記16ビットデータt1を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その16ビットデータt1とレジスタReg−Rに格納されている32ビットデータRの上位16ビットRLの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その論理演算結果を、32ビットデータRの上位16ビットRLとして格納する。
{サイクル2b(処理アルゴリズムAL3のサイクル3)}
マルチプレクサ801Lは、レジスタReg−FOに格納されている16ビットデータt1を排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータt1と外部入力する鍵KOi3の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、その論理演算結果を外部入力する鍵KIi3を用いて変換し、その変換結果を排他的論理和演算器813に出力する。マルチプレクサ1201Rは、16ビットの鍵KOi4を排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812からの入力と上記鍵KOi4の排他的論理和を演算し、その演算結果(16ビットデータ)を、レジスタReg−R、マルチプレクサ1223及び排他的論理和演算器525に出力する。排他的論理和演算器525は、排他的論理和演算器813からの入力(上記論理演算結果)とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの下位16ビットRRとして格納する。
マルチプレクサ1223は、“0”の16ビットデータを排他的論理和演算器524に選択出力する。排他的論理和演算器524は、レジスタReg−Rに格納されている上位16ビットRLと上記“0”の16ビットデータの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの上位16ビットRLとして格納する。
{サイクル3b(処理アルゴリズムAL13のサイクル2)}
マルチプレクサ801Lは、レジスタReg−Lに格納されている32ビットデータの下位16ビットLRを排他的論理和演算器811に選択出力する。排他的論理和演算器811は、その16ビットデータLRと外部入力される鍵KOi2の排他的論理和を演算し、その演算結果をFI関数処理部812に出力する。FI関数処理部812は、その演算結果を外部入力される鍵KIi2を用いて変換し、その変換結果(16ビットデータt3)を排他的論理和演算器813に出力する。
マルチプレクサ1201Rは、“16ビットの鍵KOi4を排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812から入力する上記16ビットデータt3と上記16ビットの鍵KOi4の排他的論理和を演算し、その演算結果をレジスタReg−FO、マルチプレクサ1223及び排他的論理和演算器525に出力する。したがって、この場合、FI関数処理部812の出力(16ビットデータt3)は、レジスタReg−FO、マルチプレクサ1223及び排他的論理和演算器525に入力する。
排他的論理和演算器525は、上記16ビットデータt3とレジスタReg−Rに格納されている32ビットデータRの下位16ビットRRの排他的論理和を演算し、その演算結果をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの下位16ビットRRとして格納する。
マルチプレクサ1201Rは、レジスタReg−Lに格納されている32ビットデータLの下位16ビットLRを排他的論理和演算器813に出力する。排他的論理和演算器813は、FI関数処理部812から入力する上記16ビットデータt3とマルチプレクサ1201Rから入力する上記16ビットデータLRの排他的論理和を演算し、その演算結果を、レジスタReg−FO、マルチプレクサ1223及び排他的論理和演算器525に出力する。マルチプレクサ1223は、上記16ビットデータt3を排他的論理和演算器524に選択出力する。排他的論理和演算器524は、その16ビットデータt3とレジスタReg−Rに格納されている32ビットデータRの上位16ビットRLの排他的論理和を演算し、その演算結果(16ビットデータ)をレジスタReg−Rに出力する。レジスタReg−Rは、その演算結果を、32ビットデータRの上位16ビットRLとして格納する。
t3は、レジスタReg−Rに保持されている16ビットデータRR及び16ビットデータRLと直接に排他的論理和される。
上述したように、サイクル3においては、レジスタReg−Rに格納される32ビットデータRの更新は、下位16ビットRRのみであり上位16ビットRLの更新は行われない。このため、サイクル3においては、レジスタReg−Rの更新は下位16ビットRRのみでよい。この場合、マルチプレクサ1223は、“0”の下位16ビットRRを排他的論理和演算器524に選択出力する必要はない。したがって、FO関数関連処理回路1200において、マルチプレクサ1223をスイッチに代替する構成も可能である。
処理アルゴリズムAL3のサイクル1は、処理アルゴリズムAL2のサイクル1と同様である。処理アルゴリズムAL3は、サイクル1とサイクル2の実行順序を交換することが可能である。この場合の処理アルゴリズムを以下に示す。
{処理アルゴリズムAL3の変形例(処理アルゴリズムAL3v)}
[サイクル1]
Figure 2009090689

[サイクル2]
Figure 2009090689

(t1はレジスタに格納する)
[サイクル3]
Figure 2009090689
処理アルゴリズムAL3vは、サイクル1とサイクル2の実行順序が異なるだけなので、上記処理アルゴリズムAL3vを実行する装置として、図12に示すFO関数関連処理回路1200を利用できる。但し、この場合、FO関数関連処理回路1200の実行制御は処理アルゴリズムAL3vに従う必要があるため、FO関数関連処理回路1200の実行を制御する制御部の変更は必要である。この制御部の変更は、ハードウェアまたはソフトウェアのいずれでも可能である。
尚、上記FO関数関連処理回路1200を、処理アルゴリズムAL3をサイクル1、サイクル2、サイクル3の順に実行するような構成に変更することも可能である。この場合、サイクル2においては、排他的論理和演算器813の演算結果がレジスタReg−FOに格納されないようにする必要がある。例えば、レジスタReg−FOの入力に対して、サイクル2の処理期間中だけオフにするスイッチを設ける。または、排他的論理和演算器813とレジスタReg−FOの間の単純分岐の箇所のマルチプレクサを配置する。このマルチプレクサは、サイクル1においては左右の両方向に出力し、サイクル2においては右方向だけに出力する。また、サイクル3においては、左右両方向または右方向だけに出力する。
上述した本発明の第1〜第3実施形態のFO関数関連処理回路(800、1000、1200)による回路規模の削減効果を下記の表1に示す。尚、表1では、便宜上、デマルチプレクサもマルチプレクサに含めている。この場合、デマルチプレクサは「2 in 1マルチプレクサ」に含める。 また、レジスタには、レジスタReg−L、Reg−Rは含まれていない。尚、「2 in 1 マルチプレクサ」は2入力1出力のマルチプレクサを、「3 in 1 マルチプレクサ」は3入力1出力のマルチプレクサを意味する。
Figure 2009090689
上記表1に示すように、本発明の各実施形態によれば、レジスタサイズを半減できる。さらに、マルチプレクサのサイズも削減できる。
[第4の実施形態]
上述した第1〜第3の実施形態の機能は、コンピュータによって実行されるプログラムによっても実現可能である。以下に、それらの実施形態について説明する。以下に述べる実施形態は、本発明を、携帯電話やネットワーク対応の家電機器などの組み込み機器に適用したものである。
{組み込み機器の第1の構成}
図13は、本発明の実施形態である組み込み機器の第1の構成を示す図である。図13に示す組み込み機器2000Aは、CPU2100A、不揮発性メモリ2200及び揮発性メモリ2300Aから構成される。CPU2100Aは、不揮発性メモリ2200及び揮発性メモリ2300Aとバス(不図示)によって接続されている。
CPU2100Aは、ALU(Arithmetic Logic Unit)2101、命令レジスタ(不図示)、デコーダ(命令デコーダ)2103、制御信号生成回路2104、プログラムカウンタ2105、複数のレジスタ(レジスタLL、レジスタLR、レジスタRL、レジスタRR、レジスタa、レジスタb、レジスタX、・・・、レジスタY)及びアドレス制御回路2106を備える。これら複数のレジスタのビット幅は16ビットである。
不揮発性メモリ2200は、例えばフラッシュメモリやROM(Read On Memory)であり、上述した第1〜第3の実施形態の処理アルゴリズムをCPU2100Aが実行するための命令が記述されたプログラム(ファームウェア)2201を格納している。
CPU2100Aは、不揮発性メモリ2200からファームウェア2201内の命令を先頭から順次読み出し、その命令を命令レジスタに格納する、デコーダ2103は、命令レジスタに格納されている命令を解読し、命令内容を制御信号生成回路2104に出力する。制御信号生成回路2104は、その命令内容を基に、前記命令で指定された演算に対応する命令指示信号をALU2101に出力する。ALU2101は、制御信号生成回路2104から入力する命令指示信号にしたがって算術演算や論理演算を実行する。これらの演算で使用されるデータはレジスタに格納されている。ALU2101は、演算で使用するデータを、そのデータが格納されているレジスタから読み出し、それらを用いて演算を実行する。そして、その演算結果を該当するレジスタに書き込む。プログラムカウンタ2105は、CPU2100Aが実行中のファームウェア2201の命令の格納アドレスを格納する。プログラムカウンタ2105は、CPU2100Aが現在実行中の命令のアドレスを格納し、その命令の実行が終了する毎にカウントアップされる。アドレス制御回路2106は、CPU2100Aが実行する命令の格納アドレスや読み出し/書き込みを行うデータの格納アドレスを不揮発性メモリ2200や揮発性メモリ2300Aに出力する。また、揮発性メモリ3300から読み出すべきデータの格納アドレスを揮発性メモリ3300に出力する。このアドレス出力により、ファームウェア2201の命令が不揮発性メモリ2200から読み出され、命令レジスタに格納される。また、平文データや鍵データが、揮発性メモリ3300から読み出され、CPU2100A内のレジスタに格納される。
揮発性メモリ2300Aは、RAM(Random Access Memory)等の半導体メモリであり、平文データ2301、暗号文データ2302、鍵データ2303を格納する記憶域を備えている。
平文データ2301は、暗号化の対象となるデータである。平文データ2301は、その先頭から64ビット単位でブロック分割され、ブロック単位で暗号化される。64ビットのブロックデータは、上位32ビットのデータLと下位32ビットのデータRに分割される。そして、さらに、上位32ビットデータLは、上位16ビットのデータLLと下位16ビットのデータLRに分割される。また、下位32ビットデータRは、上位16ビットのデータRLと下位16ビットのデータRRに分割される。FI関数処理においては、上位32ビットデータLLまたは下位16ビットデータLRと鍵KOik(k=1,2)との排他的論理和と、鍵KIik(k=1,2)を用いてデータ処理が行われる。平文データ2301の個々のブロックデータ(64ビットデータ)は、本実施形態のプログラム(ファームウェア)をCPU2100Aが実行することによって、64ビット単位の暗号データに暗号化される。この暗号データは、上記プログラムの実行終了直前に暗号文データ2302として揮発性メモリ2300Aに格納される。
平文データ2301の暗号化は128ビットの秘密鍵Kを用いて行われる。本実施形態が平文データ2301を暗号化するために使用する鍵(ラウンド鍵)KOi1〜KOi4、KIi1〜KIi3、KLi1、KLi2は、上記秘密鍵Kから生成される。より詳細に説明すると、まず、秘密鍵Kを、MSB側から、8個の16ビットの部分鍵K1,K2,・・・、K8に分割する。そして、これら8個の部分鍵K1〜K8を用いた鍵スケジューリング処理(鍵拡張処理)を行うことによって、拡大鍵KOi1〜KOi4、KIi1〜KIi3、KLi1、KLi2を生成する。FO関数1個につき拡大鍵KOij(j=1〜4)は64ビット、拡大鍵KIik(k=1〜3)は48ビットである。また、FL関数1個につき、拡大鍵KLim(m=1、2)は32ビットである。拡大鍵KOijと拡大鍵KIikはFO関数で使用され、拡大鍵KIikはFI関数で使用される。また、拡大鍵KLimはFL関数で使用される。尚、拡大鍵KOi1〜KOi4は、MISTY1の場合には、128ビットの秘密鍵Kを16ビット単位で分割して得られる鍵K1、K2、K3、K4、K5、K6、K7、K8の内の4個である。
鍵データ2303は、平文データ2301を暗号化するために使用する鍵に関するデータであり、秘密鍵K(K1〜K8)及び拡大鍵K´1〜K´8を含むデータである。尚、秘密鍵K1〜K8、拡大鍵K´1〜K´8と、拡大鍵KOi1〜KOi4、KIi1〜KIi3、KLi1、KLi2との対応関係は前記「暗号記述仕様書 MISTY1」に記述されている通りである。
CPU2100Aは、平文データ2301を鍵データ2303を用いて暗号文データ2302に変換するが、このデータ変換処理過程における中間結果はレジスタaのみ、またはレジスタa、bに保持される。平文データ2301をデータ変換して得られる暗号データ(64ビット)は、ALU2101によりレジスタLL、LR、RL、RRに格納される。CPU2100A内のレジスタと不揮発性メモリ2200間でのデータの入出力(平文データ2301の入力、暗号文データ2302の出力、鍵データ2303の入力等)は、ネットワークやバス等を介して行われる。
第1の構成の組み込み機器2000Aにおいては、平文データ2301と鍵データ2303をCPU2100A内のレジスタに格納した後、平文データ2301をFO関数処理と排他的論理和によりブロック単位で暗号化する。平文データ2301は、CPU2100Aにより、ブロック単位で揮発性メモリ3300から読み出され、レジスタLL、LR、RL、RRに格納される。レジスタLL、LR、RL、RRには、それぞれ、データLL、LR、RL、RRが格納される。鍵データ2303は、CPU2100Aにより、揮発性メモリ3300から読み出され、レジスタXなどのレジスタに格納される。
{組み込み機器の第2の構成}
図14は、本発明の実施形態である組み込み機器の第2の構成を示す図である。図14において、図13に示す組み込み機器が備える構成要素と同一な構成要素には同じ符号を付与している。
図14に示す組み込み機器2000Bが図13に示す組み込み機器2000Aと構成が異なる点は、まず、CPUのレジスタ構成である。組み込み機器2000BのCPU2100Bは、レジスタX、・・・、Yを備えているが、レジスタLL、LR、RL、RR、a、bは備えていない。また、揮発性メモリ2300Bは、中間結果2304を格納する領域を備えている。中間結果2304は、CPU2100Bが平文データ2301を暗号文データ2302に変換する処理過程において一時的に記憶する必要があるデータ(中間結果)であり、本実施形態においては、データLL、LR、RL、RRなどが該当する。
組み込み機器2000Bにおいては、揮発性メモリ2300B内の平文データ2301は、CPU2100B内のレジスタX、・・・、Yに格納される。また、鍵データ2303も、揮発性メモリ2300BからレジスタX、・・・、Yに格納される。CPU2100Bは、レジスタX、・・・、Yに格納されている平文データ2301と鍵データ2303を用いて、ALU2101により、平文データ2301を暗号文データに変換する。この暗号文データは、レジスタX、・・・、Yに格納された後、揮発性メモリ2300Bに暗号文データ2302として書き込まれる。平文データ2301を暗号文データ2302に変換する処理過程において、中間結果2304は、レジスタX、・・・、Yを介して、揮発性メモリ2300BとALU2101の間で授受される。
{組み込み機器の第3の構成}
図15は、本発明の実施形態である組み込み機器の第3の構成を示す図である。図15において、図13に示す組み込み機器2000Aが備える構成要素と同一な構成要素には同じ符号を付与している。
図15に示す組み込み機器2000Cと組み込み機器2000Aとの構成の相違は、揮発性メモリの構成である。組み込み機器2000Cの揮発性メモリ2300Cは、平文データ2301、暗号文データ2302、鍵データ2303を格納する領域に加え、拡大鍵2305を格納する領域も備えている。拡大鍵2305は、拡大鍵K1´〜K8´などである。これらの拡大鍵の内、FO関数以外で使用される拡大鍵は、CPU2100Cが処理を実行する際には、揮発性メモリ2300Cから読み出されてALU2101に入力する。また、上述したように、拡大鍵K1´〜K8´は、FI関数を用いて秘密鍵K(K1〜K8)から生成されるので、組み込み機器2000Cが秘密鍵Kから拡大鍵K1´〜K8´を生成するような構成にした場合、CPU2100により生成された拡大鍵K1´〜K8´は、ALU2101からレジスタX、・・・、Yに格納された後、揮発性メモリ2300Cに拡大鍵2305として書き込まれる。
[ソフトウェア実装形態]
次に、上記第1の構成の組み込み機器2000Aにおいて、上記第1〜第3の実施形態のFO関数関連処理回路の機能をソフトウェア処理により実現するプログラムの実装形態について説明する。
{第1の実施形態のFO関数関連処理回路のソフトウェア実装形態}
図16は、上記第1の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器2000Aに実装されるファームウェア2201のアルゴリズムを示すフローチャートである。図16のフローチャートに示すアルゴリズムは、上記処理アルゴリズムAL1のサイクル実行順序を変更したものとなっている。すなわち、図16のフローチャートに示すアルゴリズムは、上記処理アルゴリズムAL1の各サイクルを、サイクル1、サイクル3、サイクル2の順序で実行するようになっている。
図16のフローチャートに示すアルゴリズムを説明する。
ステップS11において、上記第1の実施形態の処理アルゴリズムAR1のサイクル1に相当する処理、
Figure 2009090689
を実行し、この処理の実行結果(=t1)をレジスタAに格納する。
次に、ステップS12において、上記処理アルゴリズムAR1のサイクル3に相当する処理を実行する。ステップS12においおては、まず、
Figure 2009090689

の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
続いて、
Figure 2009090689

の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
次に、ステップS13において、上記処理アルゴリズムAR1のサイクル2に相当する処理を実行する。
ステップS13においては、
Figure 2009090689

の処理を実行し、その実行結果(=t3)をレジスタAに格納する。
そして、最後に、ステップS14の処理を実行する。
ステップS14においては、まず、
Figure 2009090689
の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
続いて、
Figure 2009090689
の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
図17は、図16のアルゴリズムで動作するプログラムの実施例を示す図である。
図17に示すプログラム3000Aは、アセンブリ言語で記述されたソースプログラムである。尚、このプログラム3000Aの実行前に、データL、R、秘密鍵K及び拡大鍵K1´〜K8´は、CPU2100内のレジスタに格納される。より詳細に説明すると、データLの上位16ビットLLはレジスタLLに、下位16ビットLRはレジスタLRに格納される。また、データRの上位16ビットRLはレジスタRLに、下位16ビットRRはレジスタRRに格納される。また、拡大鍵KOi1、KOi2、KOi3、KOi4は揮発性メモリに格納された秘密鍵から、処理対象のFO関数に応じて適切なものが選択されてレジスタXに格納される。これは、後述するプログラム3000B、Cについても同様である。
プログラム3000Aにおいて、レジスタaは図16のフローチャートのレジスタAに相当する。プログラム3000Aにおいて、MOV命令、XOR命令は、全て、レジスタに格納されているデータを使用している。このため、CPU2100Aは、プログラム3000Aを高速で実行可能である。
{第2の実施形態のFO関数関連処理回路のソフトウェア実装形態}
図18は、上記第2の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器2000Aに実装されるファームウェア2201のアルゴリズムを示すフローチャートである。図18のフローチャートに示すアルゴリズムは、CPU2100が、なるべく使用レジスタ数を少なくしてプログラムを実行できるように、上記処理アルゴリズムAL2のサイクル実行順序を変更したものとなっている。すなわち、図18のフローチャートに示すアルゴリズムは、上記処理アルゴリズムAL2の各サイクルを、サイクル1、サイクル3、サイクル2の順序で実行するようになっている。このように、サイクル1に続けてサイクル3を実行することにより、サイクル3の処理終了後に、CPU2100はレジスタAを自由に使用できるようになる。
図18のフローチャートのアルゴリズムを説明する。
ステップS21、S22において、上記第2の実施形態の処理アルゴリズムAL2のサイクル1に相当する処理を実行する。ステップS21においては、
Figure 2009090689
の処理を実行し、この処理の実行結果(=t1)をレジスタAに格納する。
ステップS22においては、まず、
Figure 2009090689
の処理を実行し、この実行結果を「RRが格納されているレジスタ」に格納する。
次に、
Figure 2009090689
の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
次に、ステップS23において、上記処理アルゴリズムAL2のサイクル3に相当する処理を実行する。ステップS23においては、まず、
Figure 2009090689
の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
続いて、
Figure 2009090689

の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
そして、最後に、ステップS24、25において、上記処理アルゴリズムAL2のサイクル2に相当する処理を実行する。
ステップS24においては、
Figure 2009090689

の処理を実行し、その実行結果(=t3)をレジスタAに格納する。
続いて、ステップS25において、まず、
Figure 2009090689
の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
次に、
Figure 2009090689
の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
図19は、図18に示すアルゴリズムで動作するプログラムの実施例を示す図である。
図18に示すプログラム3000BのMOV命令、XOR命令、CALL命令は、図17に示すプログラム3000Aの同一表記の命令と同様な命令である。プログラム3000Bの命令はレジスタに格納されたデータを使用するため、プログラム3000Bも処理の高速化が可能である。
{第3の実施形態のFO関数関連処理回路のソフトウェア実装形態}
図20は、上記第3の実施形態のFO関数関連処理回路の機能を実現するために、上記第1の構成の組み込み機器に実装されるファームウェア2201のアルゴリズムを示すフローチャートである。図20のフローチャートに示すアルゴリズムは、CPU2100Aが、なるべく使用レジスタ数を少なくしてプログラムを実行できるように、上記処理アルゴリズムAL3のサイクル実行順序を変更したものとなっている。すなわち、図16のフローチャートに示すアルゴリズムは、上記処理アルゴリズムAL3の各サイクルを、サイクル1、サイクル3、サイクル2の順序で実行するアルゴリズムとなっている。このように、サイクル1に続けてサイクル3を実行することにより、サイクル3の処理終了後に、CPU2100AはレジスタAを自由に使用できるようになる。
図20のフローチャートのアルゴリズムを説明する。
ステップS31、S32において、上記第3の実施形態の処理アルゴリズムAL3のサイクル1に相当する処理を実行する。ステップS31においては、
Figure 2009090689

の処理を実行し、この処理の実行結果(=t1)をレジスタAに格納する。
ステップS32においては、まず、
Figure 2009090689

の処理を実行し、この実行結果を「RRが格納されているレジスタ」に格納する。
続いて、
Figure 2009090689
の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。
次に、ステップS33において、上記処理アルゴリズムAL3のサイクル3に相当する処理を実行する。ステップS33においては、まず、
Figure 2009090689
の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
続いて、ステップS34、S35において、上記処理アルゴリズムAL3のサイクル2に相当する処理を実行する。ステップS34においては、
Figure 2009090689

の処理を実行し、その実行結果をレジスタAに格納する。
そして、最後に、ステップS35において、まず、
Figure 2009090689

の処理を実行し、その実行結果を「RRが格納されているレジスタ」に格納する。
続いて、
Figure 2009090689
の処理を実行し、その実行結果を「RLが格納されているレジスタ」に格納する。

図21は、図20に示すアルゴリズムで動作するプログラムの実施例を示す図である。
図21に示すプログラム3000CのMOV命令、XOR命令、CALL命令は、図17に示すプログラム3000Aの同一表記の命令と同様な命令である。プログラム3000Cの命令はレジスタに格納されたデータを使用するため、プログラム3000Cも処理の高速化が可能である。
本発明は、上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内で種々に変形して実施することができる。例えば、上記実施形態は、本発明をMISTY1に適用したものであるが、本発明はMISTY1に限定されるものではない。本発明は、MISTY2、KASUMIなどFeistel構造の暗号アルゴリズムの全てに適用可能である。
産業所の利用可能性
本発明は、セキュリティ機能が必要とされる小型電子機器の組み込みシステムとして非常に有用である。

Claims (11)

  1. 2nビットのデータLをデータ変換するデータ処理手段と、該データ処理手段の処理結果と2nビットのデータRとを排他的論理和する排他的論理和演算器を備える暗号化装置において、
    nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLR、nビットのデータ“0”または前記第1のレジスタに格納されているnビットのデータのいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、該第2の排他的論理和演算器の出力を前記第1のレジスタに出力するデマルチプレクサと、前記第2の排他的論理和演算器の出力またはラウンド鍵KOim(mは自然数)を選択出力する第3のマルチプレクサと、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記第3のマルチプレクサの出力とを排他的論理和する第3の排他的論理和演算器と、前記第2のマルチプレクサの出力と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備え、
    前記第1のマルチプレクサ、前記第2のマルチプレクサ、前記第3のマルチプレクサ及び前記デマルチプレクサは外部から制御され、前記第1のレジスタは前記デマルチプレクサの出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納することを特徴とする暗号化装置。
  2. 2nビットのデータLをデータ変換するデータ処理手段と、該データ処理手段の処理結果と2nビットのデータRとを排他的論理和する排他的論理和演算器を備える暗号化装置において、
    nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLRまたはnビットのデータ“0”のいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、前記第2の排他的論理和演算器の出力またはラウンド鍵KOimを選択出力する第3のマルチプレクサと、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記第3のマルチプレクサの出力とを排他的論理和する第3の排他的論理和演算器と、前記第2の排他的論理和演算器と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備え、
    前記第1のマルチプレクサ、前記第2のマルチプレクサ及び前記第3のマルチプレクサは外部から制御され、前記第1のレジスタは前記第2の排他的論理和演算器の出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納することを特徴とする暗号化装置。
  3. 2nビットのデータLをデータ変換するデータ処理手段と、該データ処理手段の処理結果と2nビットのデータRとを排他的論理和する排他的論理和演算器を備える暗号化装置において、
    nビットのデータを保持する第1のレジスタと、該第1のレジスタに格納されているnビットのデータ、前記データLの上位nビットLL、前記データLの下位nビットLRのいずれか一つを選択出力する第1のマルチプレクサと、該第1のマルチプレクサの出力をラウンド鍵KOij(jは自然数)と排他的論理和する第1の排他的論理和演算器と、該第1の排他的論理和演算器の出力を拡大鍵KIik(kは自然数)を用いてnビットデータに変換する第1のデータ処理手段と、前記データLの下位nビットLRまたはnビットのラウンド鍵KOim(mは自然数)のいずれか一つを選択出力する第2のマルチプレクサと、該第2のマルチプレクサの出力と前記第1のデータ処理手段の出力を排他的論理和する第2の排他的論理和演算器と、該第2の排他的論理和演算器の出力を入力し、その入力を適切なタイミングで出力する出力手段と、前記データRを保持する第2のレジスタと、該第2のレジスタに格納されているデータRの上位nビットRLと前記スイッチ手段の出力とを排他的論理和する第3の排他的論理和演算器と、前記第2の排他的論理和演算器と前記第2のレジスタに格納されているデータRの下位nビットRRを排他的論理和する第4の排他的論理和演算器とを備え、
    前記第1のマルチプレクサ、前記第2のマルチプレクサ及び前記出力手段は外部から制御され、前記第1のレジスタは前記第2の排他的論理和演算器の出力を入力して保持し、前記第2のレジスタは、前記第3の排他的論理和演算器の出力をデータRの上位nビットRLとして格納すると共に、前記第4の排他的論理和演算器の出力をデータRの下位nビットRRとして格納することを特徴とする暗号化装置。
  4. 請求項3記載の暗号化装置であって、
    前記出力手段は、nビットの“0”データまたは前記第2の排他的論理和演算器の出力を選択出力する第3のマルチプレクサであることを特徴とする。
  5. 請求項1乃至3のいずれか1項に記載の暗号化装置であって、
    さらに、前記データLを入力・保持し、出力する第3のレジスタを備えていることを特徴とする。
  6. 2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの他的論理和を演算した後、その論理演算結果を出力する暗号処理方法において、
    前記データLの上位nビットLLを拡大鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を出力するサイクル1のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi2を用いてデータ変換し、そのデータ変換結果を前記サイクル1のステップで出力される論理演算結果t1と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果をラウンド鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記サイクル2のステップで出力される上位nビットRLをラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップと、
    を備えることを特徴とする暗号処理方法。
  7. 2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理方法において、
    前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を拡大鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果t3を前記サイクル1のステップで出力されるRLと排他的論理和してRLとして出力し、さらにt3をサイクル1のステップで出力されるRRと排他的論理和してRRとして出力するサイクル2のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記サイクル2のステップで出力される上位nビットRLをラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップと、
    を備えることを特徴とする暗号処理方法。
  8. 2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理方法において、
    前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果をラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果をラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記サイクル2のステップで出力される上位nビットRLを出力するサイクル3のステップと、
    を備えることを特徴とする暗号処理方法。
  9. コンピュータに、2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理を実行させるプログラムであって、
    前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を出力するサイクル1のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi3を用いてデータ変換し、そのデータ変換結果を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記データRの上位nビットRLをラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果を前記サイクル1のステップで出力される論理演算結果t1と排他的論理和し、その排他的論理和の論理演算結果t3を前記サイクル2で出力された下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記サイクル2で出力された上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップと、
    から構成される処理を、コンピュータに実行させるプログラム。
  10. コンピュータに、2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理を実行させるプログラムであって、
    前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果t1を出力すると共に、前記論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル1で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとすると共に、前記サイクル1のステップで出力される上位nビットRLをラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル2のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果をラウンド鍵KIi2を用いてデータ変換し、そのデータ変換結果を前記サイクル1のステップで出力される論理演算結果t1と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップと、
    から構成される処理をコンピュータに実行させるプログラム。
  11. コンピュータに、2nビットのデータLをデータ変換し、そのデータ変換結果と2nビットのデータRの排他的論理和を演算した後、その排他的論理和の論理演算結果を出力する暗号処理を実行させるプログラムであって、
    前記データLの上位nビットLLをラウンド鍵KOi1と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi1を用いてデータ変換し、そのデータ変換結果を前記データLの下位nビットLRと排他的論理和し、その排他的論理和の論理演算結果をt1として出力し、前記論理演算結果t1を前記データRの下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t1を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル1のステップと、
    前記論理演算結果t1をラウンド鍵KOi3と排他的論理和し、その排他的論理和の論理演算結果をラウンド鍵KIi3を用いてデータ変換し、そのデータ変換結果をサイクル2で生成された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果をサイクル2で出力された下位nビットRRと排他的論理和し、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記サイクル2のステップで出力される上位nビットRLを出力するサイクル3のステップと、
    前記データLの下位nビットLRをラウンド鍵KOi2と排他的論理和し、その排他的論理和の論理演算結果を鍵KIi2を用いてデータ変換し、そのデータ変換結果をラウンド鍵KOi4と排他的論理和し、その排他的論理和の論理演算結果t3を前記データRの下位nビットRRと排他的論理和して、その排他的論理和の論理演算結果を新たな下位nビットRRとして出力すると共に、前記論理演算結果t3を前記データRの上位nビットRLと排他的論理和し、その排他的論理和の論理演算結果を新たな上位nビットRLとして出力するサイクル3のステップと、
    から構成される処理をコンピュータに実行させるプログラム。
JP2009549897A 2008-01-18 2008-01-18 暗号化装置及び暗号処理方法 Active JP5182295B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/000052 WO2009090689A1 (ja) 2008-01-18 2008-01-18 暗号化装置、暗号化方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2009090689A1 true JPWO2009090689A1 (ja) 2011-05-26
JP5182295B2 JP5182295B2 (ja) 2013-04-17

Family

ID=40885102

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009549897A Active JP5182295B2 (ja) 2008-01-18 2008-01-18 暗号化装置及び暗号処理方法

Country Status (4)

Country Link
US (1) US8335313B2 (ja)
EP (1) EP2237246B1 (ja)
JP (1) JP5182295B2 (ja)
WO (1) WO2009090689A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5387295B2 (ja) * 2009-09-29 2014-01-15 富士通株式会社 暗号装置及び方法
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
US10203368B2 (en) * 2012-01-06 2019-02-12 New York University Systems, processes and computer-accessible medium for providing a bi-directional scan path for peak capture power reduction in launch-off-shift testing
RU2625049C1 (ru) * 2016-04-14 2017-07-11 ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ КАЗЕННОЕ ВОЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "Военная академия Ракетных войск стратегического назначения имени Петра Великого" МИНИСТЕРСТВА ОБОРОНЫ РОССИЙСКОЙ ФЕДЕРАЦИИ Устройство поддержки защищенных логических вычислений

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3088337B2 (ja) * 1997-05-30 2000-09-18 三菱電機株式会社 暗号処理装置、icカード及び暗号処理方法
US7212631B2 (en) * 2001-05-31 2007-05-01 Qualcomm Incorporated Apparatus and method for performing KASUMI ciphering
JP2003241657A (ja) 2002-02-20 2003-08-29 Sony Corp 暗号化装置および暗号化方法
JP3503638B1 (ja) * 2002-09-26 2004-03-08 日本電気株式会社 暗号装置及び暗号プログラム
US7796752B2 (en) * 2002-11-04 2010-09-14 Marvell International Ltd. Cipher implementation
KR100516548B1 (ko) 2003-02-05 2005-09-22 삼성전자주식회사 이동 통신 시스템에서 최적화된 암호화 함수를 설계하는방법과 최적화된 암호화 장치
KR100547744B1 (ko) * 2003-09-02 2006-01-31 삼성전자주식회사 이동통신시스템에서 최소의 소자를 사용하는 단일라운드의 암호화 장치 및 방법
US7760874B2 (en) * 2004-07-14 2010-07-20 Broadcom Corporation Method and system for implementing FI function in KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
JP2008181986A (ja) * 2007-01-24 2008-08-07 Nippon Seiki Co Ltd 有機elディスプレイ

Also Published As

Publication number Publication date
US8335313B2 (en) 2012-12-18
EP2237246A1 (en) 2010-10-06
WO2009090689A1 (ja) 2009-07-23
JP5182295B2 (ja) 2013-04-17
US20100278340A1 (en) 2010-11-04
EP2237246B1 (en) 2018-02-28
EP2237246A4 (en) 2014-12-31

Similar Documents

Publication Publication Date Title
JP3818263B2 (ja) Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法
KR100377176B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치
KR100377172B1 (ko) 데이터 암호화 표준 알고리즘을 이용한 암호화 장치의 키스케쥴러
JP4025722B2 (ja) データ暗号化のための方法および装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
JP5652363B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP3824121B2 (ja) 暗号データの復号化処理方法および装置
JP5182295B2 (ja) 暗号化装置及び暗号処理方法
JP2010164792A (ja) 暗号処理装置
Miroshnik et al. Uses of programmable logic integrated circuits for implementations of data encryption standard and its experimental linear cryptanalysis
Buell Modern symmetric ciphers—Des and Aes
JP5056860B2 (ja) データ変換関数の処理装置
JP2014240921A (ja) 暗号装置、暗号処理方法及び暗号処理プログラム
US8111825B2 (en) Encryption apparatus and method therefor
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
RU2738321C1 (ru) Способ криптографического преобразования и устройство для его осуществления
JP5338327B2 (ja) 暗号処理装置
JP2011085739A (ja) 暗号アルゴリズムの計算方法、及び装置
KR102282363B1 (ko) 비트 시리얼 hight 연산 장치 및 그 방법, 그 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램
KR102348802B1 (ko) Aes 암호화 및 복호화 회로
Ali et al. Optimal datapath design for a cryptographic processor: the Blowfish algorithm
Pirpilidis et al. A 4-bit Architecture of SEED Block Cipher for IoT Applications
Melnyk et al. Modelling DES Soft-Cores for information protection
KR20010005033A (ko) 데이터 암호 표준 알고리즘을 이용한 암호화 장치
Sampath FPGA based hardware implementation of Advanced Encryption Standard

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121002

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121127

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121231

R150 Certificate of patent or registration of utility model

Ref document number: 5182295

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160125

Year of fee payment: 3