JP4859536B2 - データ変換装置 - Google Patents

データ変換装置 Download PDF

Info

Publication number
JP4859536B2
JP4859536B2 JP2006150295A JP2006150295A JP4859536B2 JP 4859536 B2 JP4859536 B2 JP 4859536B2 JP 2006150295 A JP2006150295 A JP 2006150295A JP 2006150295 A JP2006150295 A JP 2006150295A JP 4859536 B2 JP4859536 B2 JP 4859536B2
Authority
JP
Japan
Prior art keywords
exclusive
circuit
outputs
key
input
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
JP2006150295A
Other languages
English (en)
Other versions
JP2007324733A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2006150295A priority Critical patent/JP4859536B2/ja
Publication of JP2007324733A publication Critical patent/JP2007324733A/ja
Application granted granted Critical
Publication of JP4859536B2 publication Critical patent/JP4859536B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号化あるいは復号をパイプライン構成により行なうデータ変換装置に関し、ハードウェアによるパイプライン構成を実装するにあたり、効率よく実装し実測面積を抑える装置に関する。
ASIC(Application Specified IC)やFPGA(Field Programmable Gate Array)に実装するディジタル論理回路において、回路の処理性能を上げる方法として、図18に示すように、1CLK(クロック)で動作する遅延の大きな組み合わせ回路部分にレジスタを挿入して、数CLKで実行させるパイプライン処理が有効である(例えば特許文献1)。
特表2002−508851号公報、ブロック符号化方法を実行するための装置
パイプライン処理を行なう場合、暗号化あるいは復号に使用する鍵を頻繁に変える必要が生じるとう課題がある。また、ASICやFPGAにディジタル論理回路を実装する場合に、実装面積が大きくなるという課題もある。
この発明は、パイプライン処理により暗号化及び復号処理を行なうディジタル論理回路が実装されたデータ変換装置において、鍵の変更の柔軟性を有するデータ変換装置の提供を目的とする。また、実装面積が抑制されたデータ変換装置の提供を目的とする。
この発明のデータ変換装置は、
データ変換の対象である変換対象データと変換対象データのデータ変換に使用する鍵である入力鍵とを入力し、入力鍵を使用して変換対象データのデータ変換を行うデータ変換装置において、
入力鍵から変換対象データのデータ変換に使用する鍵である生成鍵をパイプライン処理により生成する鍵生成部と、
前記鍵生成部が生成した生成鍵を入力し、前記鍵生成部が生成した次の生成鍵を入力するまで入力した生成鍵を保持するとともに入力し保持している生成鍵を所定のタイミングで出力する生成鍵保持部と、
前記生成鍵保持部が出力した生成鍵を入力し、入力した生成鍵に基づいてパイプライン処理により鍵スケジュールを実行する鍵スケジュール部と、
前記鍵スケジュール部が実行する鍵スケジュールに従って変換対象データをパイプライン処理により変換する演算部と
を備えたことを特徴とする。
この発明により、パイプライン処理により暗号化及び復号処理を行なうディジタル論理回路が実装されたデータ変換装置において、鍵の変更の柔軟性を有するデータ変換装置の提供をすることができる。
実施の形態1.
図1〜図11を用いて実施の形態1を説明する。以下では、パイプライン処理をデータ変換装置に適用した例を、暗号アルゴリズムCamellia(登録商標)の鍵長128bit版を使用して説明する。なお、Camellia(登録商標)の詳細は、「128ビットブロック暗号Camelliaアルゴリズム仕様書(http://info.isl.ntt.co.jp/crypt/camellia/dl/01jspec.pdf)」に詳しい。なお、以下の実施の形態では、「パイプライン」を「Pipeline」と表記する場合がある。
図1は、暗号アルゴリズムCamellia(登録商標)を実行するための全体構成を示す。Camellia(登録商標)は、データの暗号化及びデータの復号に必要な鍵の生成を行う鍵生成部、鍵生成部で生成した鍵を演算部で使用する形にする鍵スケジュール部、データの暗号化とデータの復号を実施する演算部の3つの部分で構成されている。
図2は、鍵生成部の構成を示す。鍵生成部は、図2に示すように、128bitの入力鍵KLを使用して、128bitの鍵KA(生成鍵)を生成する。鍵スケジュール部では、入力鍵KLと、鍵生成部で生成した生成鍵KAの計256bitの鍵に対して、演算部で使用する形にした副鍵を生成する。
図3は、演算部の構成を示す。演算部は128bitの変換対象データデータ(図3では平文としている)を入力し、鍵スケジュール部で生成した副鍵を使用して図3で示す演算を実施し、128bitの値(暗号文)を出力する。
図4は、演算部に入力される副鍵の様子を示す図である。また図5は、鍵スケジュール部の構成を示す。
以下に、Camellia(登録商標)に対して、パイプライン処理を行う場合の例を2つ示す。
(例1)
例1として、図6を示す。Camellia(登録商標)のような暗号アルゴリズムでは鍵の変更回数は少ないために、暗号化/復号を行う演算部の処理のみを速くする事が多い。図6は、演算部のみにパイプライン処理を行なう構成のデータ変換装置を示す。図6のように演算部のみにパイプライン処理を行い、鍵生成部及び鍵スケジュールは、演算部の遅延に合わせてレジスタを挿入するだけの回路を作成する構成とする場合、演算部の処理速度は速いが、演算部におけるパイプラインの最終ステージの処理が終わるまで鍵を変えることが出来ない。このため、演算部の最終ステージの処理が終わるまで新しい鍵の入力、及び新しい入力鍵で暗号化(あるいは復号)される変換対象データの入力を待つ必要があり、鍵を頻繁に変えることができない。
(例2)
例2として、図7を示す。図7は、鍵生成部、鍵スケジュール部、演算部のすべてにパイプライン処理を実装した構成である。鍵生成部等のすべてにパイプラインを実施することで、毎回鍵を変更した処理が可能であるが、レジスタからデータが出力されるとデータはレジスタからなくなるので、今度は、鍵が同じ場合にも毎回設定しなければならなくなる。すなわち、同じ入力鍵KLを用いる場合でも、毎回、同じ入力鍵KLを鍵生成部に入力しなければならなくなり、秘密を厳守しなければならない鍵を毎回送ることは安全面で好ましくない。
図8は、本実施の形態1におけるデータ変換装置100の構成図である。図8のデータ変換装置100が本実施の形態1の特徴である。図7に示した構成を図8に示すデータ変換装置100の構成とすることで、パイプラインを実装した回路において、鍵を自由に変えるとともに、同一の鍵を使用する場合には鍵を入力する必要のないデータ変換装置を提供することができる。図7に対して図8のデータ変換装置100における改変点は、以下の通りである。
データ変換装置100は、鍵生成部110、鍵スケジュール部120及び演算部130の3つすべてをパイプライン実装とし、図7の構成に対して、さらに、鍵生成部110と鍵スケジュール部120との間に、鍵生成を終えた値か、以前の鍵生成後の値を選択する2−1セレクタ141と、この2−1セレクタ141の出力を保持するセレクタ出力保持レジスタ142とを有する「生成鍵保持部140」を備える構成とした。この「生成鍵保持部140」を備えることが特徴である。構成2−1セレクタ141の選択信号には、鍵の入力信号を鍵生成のパイプラインステージ分遅らせたものを使用し、選択信号の値が有意な場合に鍵生成を終えた値を選択する構成とする。詳細な構成は図9に示している。
図9は、図8に示したデータ変換装置100の具体的なハードウェア実装例を示す。図9のデータ変換装置100は、ハードウェアによってアルゴリズムCamellia(登録商標)を実行する装置である。図9に示すように、
(1)鍵生成部110は、A−ステージ(A個のステージ)から構成されるパイプラインを持つ。
(2)鍵スケジュール部120は、「(B+2)−ステージ」(B+2個のステージ)から構成されるパイプラインを持つ。
(3)演算部130は、B−ステージ(B個のステージ)から構成されるパイプラインを持ち、データ(変換対象データ)の暗号化/復号をおこなう。ここで、鍵スケジュール部120は「B+2」個のステージ数であり、演算部130が「B個のステージ」というようにステージ数が異なるのは、鍵スケジュール部120に、暗号化処理か復号処理かを判断するステージが2つあることによる。
(4)生成鍵保持部140は、2−1セレクタ141と、2−1セレクタ141の出力を保持するセレクタ出力保持レジスタ142とを備える。生成鍵保持部140は、鍵生成部110が生成した生成鍵を入力し、鍵生成部110が生成した次の生成鍵を入力するまで入力した生成鍵を保持するとともに入力し保持している生成鍵を所定のタイミングで出力する。
(鍵生成部110)
鍵生成部110は、入力された128bitの入力鍵KLを使い、Aクロックかけて生成鍵KAを生成する。
(生成鍵保持部140)
入力鍵KL、生成鍵KAは、2−1セレクタ141に入力される選択信号であって、A個のレジスタからなる選択信号用レジスタ群150を通った鍵入力イネーブル(選択信号)により選択される。セレクタ出力保持レジスタ142は生成鍵KA、入力鍵KLを保持する。
(鍵スケジュール部120)
セレクタ出力保持レジスタ142に保持された入力鍵KL、生成鍵KAは、鍵スケジュール部120において、「(B+2)−ステージ」のパイプライン回路を通る。そのパイプライン処理された回路から出力された入力鍵KL、生成鍵KAは、演算部130のタイミングに合わせて、必要な分だけ循環シフトされ、鍵スケジュール部120の備える2−1セレクタで、暗号化/復号選択信号(MODE)により、暗号化もしくは復号で必要な鍵として選択される。その値が、副鍵として、演算部130に入力される。
(演算部130)
演算部130では、鍵スケジュール部120で生成された副鍵を使用し、「B−ステージ」のパイプラインにより暗号化/復号を行う。演算部130では、新しい入力鍵をもとに暗号化/復号が可能になるのは、鍵を入力してから、(A+2)クロック後である(2クロック分の相違は、前記の暗号化/復号の判定の2つのステージ文である。)その目安となる信号が鍵設定準備完了信号(KGEND)である。具体的な動作は後述するが、KGENDが”H”になった時に初めて、鍵入力イネーブルが“H”の時に入力した鍵を使用しての暗号化/復号が可能となり、それ以前の処理は、その前に設定した鍵での演算が行われる。
図9のデータ変換装置100の特徴は、前述のように鍵生成部110と鍵スケジュールとの間に生成鍵保持部140を設けた点にある。生成鍵保持部140の動作を説明する。
(1)まず、入力鍵KLと鍵入力イネーブル(KYEN)が同じタイミングで入力される。すなわち、同じタイミングで、入力鍵KLが鍵生成部110に入力され、鍵入力イネーブル(KYEN)が選択信号用レジスタ群150に入力される。
(2)鍵生成部110はA個のステージであり、また、選択信号用レジスタ群150は鍵入力イネーブル(KYEN)をA個のレジスタを通すので、鍵入力イネーブル(KYEN)と、生成鍵KA(入力鍵KLも同時である)とは同じタイミングで2−1セレクタ141に入力される。
(3)2−1セレクタ141は、鍵入力イネーブル(KYEN)と、生成鍵KA(入力鍵KLも同時である)とが同時に入力された場合、鍵入力イネーブル(KYEN)を入力したので、生成鍵KAと入力鍵KLとをセレクタ出力保持レジスタ142に出力する。
(4)セレクタ出力保持レジスタ142は、次のクロックで、保持している生成鍵KAと入力鍵KLとを出力する。このとき、セレクタ出力保持レジスタ142が出力した生成鍵KAと入力鍵KLとは鍵スケジュール部120に送られるとともに、2−1セレクタ141にも送られる。この場合、2−1セレクタ141は、鍵入力イネーブル(KYEN)が入力されない限り、この入力した生成鍵KAと入力鍵KLとを出力する。この構成により、次の鍵入力イネーブル(KYEN−1)が入力されるまで、生成鍵保持部140には、現在の生成鍵KAと入力鍵KLとが保持されることとなる。
(5)次の鍵入力イネーブル(KYEN−1)の選択信号用レジスタ群150への入力と、次の入力鍵KL−1の鍵生成部110への入力とは、同じタイミングで行なわれる。これにより、2−1セレクタ141への次の生成鍵KA−1(及び次の入力鍵KL−1)の入力と、次の鍵入力イネーブル(KYEN−1)との入力とは同じタイミングである。また、これらと同じタイミングで、セレクタ出力保持レジスタ142から生成鍵KAと入力鍵KLとが2−1セレクタ141へ入力される。この場合、2−1セレクタ141は、次の鍵入力イネーブル(KYEN−1)を入力するので、次の生成鍵KA−1(及び次の入力鍵KL−1)を選択して出力し、セレクタ出力保持レジスタ142から出力された生成鍵KAと入力鍵KLとは選択しない。
(6)以上の動作により、鍵を柔軟に変更するとともに、また、同じ鍵を用いる場合には、鍵を入力する必要がなくなる。
次に、入力鍵KLを連続して入力する場合を例として、その動作をタイムチャートを用いて説明する。
図10は、1ブロック(128bit)ごとに鍵を変える場合のタイムチャートを示す。
鍵入力イネーブル信号(KYEN)により1クロック目に入力された128bitの入力鍵「(KEY)(a)」は、図10に示すように、「A+2クロック」後に暗号化/復号で使用出来る状態となり、「A+3クロック」目に入力された処理前データ「(IDAT)(1)」の鍵として使用される。
また、続いて、2クロック目に入力された128bitの入力鍵「(KEY)(b)」は、入力鍵「(KEY)(a)」の場合と同様に、「A+2クロック」後に暗号化/復号できる状態となり、「A+4クロック」目で入力された処理前データ「(IDAT)(2)」の鍵として使用される。
同じようにして、3クロック目に入力された128bitの鍵「(KEY)(c)」は、「A+2クロック」後に暗号化/復号できる状態となり、「A+5クロック」目で入力された処理前データ「(IDAT)(2)」の鍵として使用される。図10のタイミングチャートでは、入力鍵「(KEY)(a)」と鍵入力イネーブル信号(KYEN)とは、図9の説明で述べたように、それぞれ鍵生成部110、選択信号用レジスタ群150に、同時に入力される。これにより生成鍵保持部140により、生成鍵KA及び入力鍵KLを更新することができる。
入力された処理前データは、図10に示すように、Bクロックかけて演算が行われ、入力した順番と同じ順序で、出力が行われる。
次に図11を用いてブロックごとに鍵を変える場合を説明する。図11は、nブロックごとに鍵を変える場合のタイムチャートである。即ち、図10では入力鍵KLを連続して投入したのに対して、図11では、間隔をあけて入力鍵を投入する場合を説明する。
鍵入力イネーブル信号(KYEN)により1クロック目に入力された128bitの入力鍵「(KEY)(a)」は、図11に示すように、「A+2クロック」後に暗号化/復号で使用出来る状態となり、「A+3クロック」目に入力された処理前データ「(IDAT)(a−1)」の鍵として使用される。
2クロック目、3クロック目は、新しい鍵は入力されない。よって、「A+4クロック」目と「A+5クロック」目に入力した処理前データ(変換対象データ)を使用した演算は、「A+3クロック」目の演算と同じ「鍵(a)」を使用して、処理が行われる。これは図9において、生成鍵保持部140が入力鍵「(KEY)(a)」と、入力鍵「(KEY)(a)」をもとに鍵生成部110により生成された生成鍵とを保持している状態である。
4クロック目では、鍵入力イネーブル信号により新しい128bitの入力鍵「(KEY)(b)」が入力され、その入力鍵は、「A+5クロック」後に暗号化/復号で使用できる状態になり、「A+6クロック」目に入力された処理前データ「(IDAT)(b−1)」の鍵として使用される。これは入力鍵「(KEY)(a)」の場合と同様である。
5クロック目、6クロック目は、新しい鍵の入力はない。よって、「A+7クロック」目と「A+8クロック目」に入力した処理前データを使用した演算は、「A+6クロック」目の演算と同じ「鍵(b)」を使用して処理が行われる。
入力された処理前データは、Bクロックかけて演算が行われ、入力した順番と同じ順序で、出力が行われる。
実施の形態1のデータ変換装置は、生成鍵保持部140を備えたので、鍵を柔軟に変更できるとともに、また、同じ鍵を用いる場合は、鍵を入力することなくデータ変換を行なうことができる。
実施の形態2.
次に図12〜図17を用いて実施の形態2を説明する。実施の形態2は、所定の排他的論理和の演算を行なう場合に実装面積を抑制するディジタル回路の実装に関するものである。
この実施の形態2では、例えばFPGA上でパイプライン処理を実装する場合において、この実装の回路規模を抑えた高速な処理を提供可能なCamellia(登録商標)の実装方式について述べる。
FPGA中には、図12に示す回路が多数存在する。以下、図12に示す回路を「単位回路S」と呼ぶこととする。図12に示すように、単位回路Sは、例えば排他的論理和などの演算回路を設定可能な回路であるLUT(Loop−up Table)とLUTの出力に接続されたレジスタとの組を2組備えた構成である。この単位回路Sに対して、ユーザーが設計した論理回路が実装される。単位回路Sは、出力にレジスタを含むため、この単位回路Sの出力を必ずレジスタに出力させるようなパイプライン回路を作成すれば、回路の配置配線を考えない場合の最速(一番遅延の小さい)回路の作成が可能である。
ユーザーが設計した論理回路は、単位回路S中のLUTに実装される。単位回路SのLUTでは、入力が4bit以下で1bit出力の演算であれば、排他的論理和の他あらゆる論理演算が行える回路になっている。よって、入力が4bit以下の演算を行うごとにレジスタを挿入するパイプライン回路を作成することで最速回路ができる。
図12の単位回路Sを用いてCamellia(登録商標)を実装したパイプライン処理を構成すると、構成方法によっては、単位回路Sのうち、レジスタの使用のみで使われる単位回路Sが出現する場合がある。それは、Camellia(登録商標)のようなFeistal構造の暗号アルゴリズムでは、演算を行っているパスに対して演算を行っていないパスが多く存在するためである。しかし、単位回路Sの内部遅延は、内部でどんな複雑な演算を行っていても同じであるので、レジスタの使用のみで単位回路Sを消費する実装は効率が悪い。
(Camellia(登録商標)のP関数のPipeline実装)
以下では、Camellia(登録商標)のP関数のPipeline実装を対象として説明する。図13は、図3におけるバイト単位線形変換P関数(以下、P関数という)の詳細である。例えば、「P関数」とは、図13で示される演算処理である。具体的な式は後述する。なお、P関数は、図3及び図9に示すように、演算部で実行される。また、鍵生成部でもP関数は、存在する。図2のF関数中に実装されている。
図13に示したCamellia(登録商標)のP関数を具体的に式で表すと、次のZ’〜Z’の式となる。なおZ’〜Z’は、1バイトのデータを示し、Z’1(1)〜Z’8(1)とサフィクス「(1)」を付した場合は、Z’〜Z’の同一位置における1ビットデータを示すものとする。
Figure 0004859536
以下では、Camellia(登録商標)のP関数のPipeline実装を対象として、「第1のケース」と「第2のケース」との2つの場合について説明する。この「第1のケース」と「第2のケース」とが本実施の形態2の特徴である。
「第1のケース」は、図13(あるいは上記式)に示したP関数に対して図12の単位回路Sを複数用いた実装であって、レジスタのみで使用される単位回路Sが存在しない実装の構成に関する。
また、「第2のケース」は、「第1のケース」の構成をもとに、P関数とその後に演算するFeistalの排他的論理和とを共有化した構成である。
(第1のケース)
まず「第1のケース」について説明する。図13に示すP関数に対してパイプライン処理を行い、図12の単位回路Sを複数用いたFPGAへの実装を行うと、レジスタのみしか使用していない単位回路Sが多く出現する場合が起こりうる。このようなレジスタのみしか使用していない単位回路Sが出現する状況を解消するために、図13のCamellia(登録商標)のP関数をPipelineで切る際に、排他的論理和で同じ値を2回演算すると打ち消しあうという性質(図14)を使うことにより、2ステージのパイプライン実装を行った際に、各排他的論理和の演算を並列にバランスよく処理させる。すなわち、第1ステージ目、第2ステージ目のいずれのステージにおいても単位回路Sが演算に使用されることなく直接レジスタにつながっているパスのない構成とする。これにより、回路規模を縮小する。これについては図16の説明で後述する。
上記のZ’〜Z’の式からわかるように、P関数は、1バイトのデータのうち4バイトが6入力1出力、残りの4バイトが5入力1出力で構成されている。4入力1出力のFPGAのLUTに対してこれらを実装し、なおかつ配線遅延を考えない時に最速となるパイプライン実装を実現するためには、最低でも、2ステージ必要になる。なお、LUTへの入力は当然ながら上記Z〜Zの同一ビットにおける1ビットごとの入力である。
図15は、レジスタのみとして使用する単位回路Sを含む場合の演算実行回路の一例を示す図である。図15に示すように、一つの排他的論理和とこの排他的論理回路の出力に接続されたレジスタとの組の2組が単位回路Sに相当する。図15では、2つ分の単位回路Sがレジスタのみで使用されており、実装面積が拡大している。Z1(1)〜Z4(1)は、演算ステージを合わせるためにレジスタに蓄える必要があり、結果としてLUTで演算をしないレジスタのみで単位回路Sを消費する部分が存在してしまい、回路規模が増大する。
図15に対して、図14に示した排他的論理和の性質を用いることで、レジスタのみで使用される単位回路Sをなくすことができる。
図16は、実施の形態2の演算実行回路200の構成を示す図である。この演算実行回路200は、図15に対してレジスタのみで使用される単位回路Sをなくした構成である。なお、図16では単位回路SのLUTを排他的論理和回路とした場合を示している。しかし、上記で示したP関数(Z’〜Z’の式)を実行するに際し、「レジスタのみで使用される単位回路Sをなくした構成」が成立するのであれば、単位回路SのLUTを排他的論理和回路以外の他の論理演算回路としても構わない。
(データ変換装置100の構成)
図9に示したデータ変換装置100の演算部130は、図16の演算実行回路200を備える。演算実行回路200は、所定の排他的論理和の演算を第1ステージと第2ステージとの2つのステージにより実行する回路であって、第1ステージを実行する第1ステージ実行部210と第2ステージを実行する第2ステージ実行部220とを有する。
第1ステージ実行部210は、4ビット入力可能である1ビット出力の排他的論理和回路であって3ビット入力1ビット出力として使用される8つの排他的論理和回路である第1排他的論理和回路〜第8排他的論理和回路と、前記8つの排他的論理和回路のそれぞれの出力に設けられた8つのレジスタであるレジスタA〜レジスタHとから構成される。
第2ステージ実行部220は、4ビット入力可能である1ビット出力の排他的論理和回路であって2ビット入力1ビット出力として使用される4つの排他的論理和回路である第9排他的論理和回路〜第12排他的論理和回路と、4ビット入力可能である1ビット出力の排他的論理和回路であって3ビット入力1ビット出力として使用される4つの排他的論理和回路である第13排他的論理和回路〜16排他的論理和回路と、これら8つの排他的論理和回路のそれぞれの出力に設けられた8つのレジスタであるレジスタA’〜レジスタH’とから構成される。第2ステージ実行部220における8つの排他的論理和回路のそれぞれは、第1ステージ実行部210の8つのレジスタのうち互いに異なるレジスタの出力を入力とする。なお、前記で「4ビット入力可能である1ビット出力の排他的論理和回路」とは、図12のLUTを排他的論理回路として設定したことを意味する。また、図15と同様に、一つの排他的論理和とこの排他的論理回路の出力に接続されたレジスタとの組の2組が「単位回路S」に相当する。
図16の演算実行回路200の実行する演算(P関数)について説明する。演算実行回路200では、図15に対して、図14の排他的論理和の性質を用いることにより第2ステージの排他的論理和の演算を工夫し、レジスタのみで使用される単位回路Sをなくした。第1ステージの演算は図15と同様である。
第1ステージについて、第1ステージ実行部210は次のA〜Hの演算を行なう。
Figure 0004859536
第2ステージについて、第2ステージ実行部220は次のZ’1〜Z’8の演算を行なう。
Figure 0004859536
第2ステージの演算では、Z’、Z’、Z’、Z’のそれぞれにおいて、同じもの同しが消えることにより実装が簡潔となり、レジスタのみで使用される単位回路Sがなくなっている。例えばZ’では、Z、Zが消えている。Z’、Z’、Z’についても同様である。
このように図16の演算実行回路200では、
第1排他的論理和回路がZ6(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
第2排他的論理和回路がZ5(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
第3排他的論理和回路がZ5(1)とZ6(1)とZ8(1)とを入力し演算して出力し、
第4排他的論理和回路がZ5(1)とZ6(1)とZ7(1)とを入力し演算して出力し、
第5排他的論理和回路がZ1(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
第6排他的論理和回路がZ1(1)とZ2(1)とZ4(1)とを入力し演算して出力し、
第7排他的論理和回路がZ1(1)とZ2(1)とZ3(1)とを入力し演算して出力し、
第8排他的論理和回路がZ2(1)とZ3(1)とZ4(1)とを入力し演算して出力する。
また、
第9排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路との出力を入力し演算して出力し、
第10排他的論理和回路が第2排他的論理和回路と第6排他的論理和回路との出力を入力し演算して出力し、
第11排他的論理和回路が第3排他的論理和回路と第7排他的論理和回路との出力を入力し演算して出力し、
第12排他的論理和回路が第4排他的論理和回路と第8排他的論理和回路との出力を入力し演算して出力し、
第13排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路と第8排他的論理和回路との出力を入力し演算して出力し、
第14排他的論理和回路が第2排他的論理和回路と第5排他的論理和回路と第6排他的論理和回路との出力を入力し演算して出力し、
第15排他的論理和回路が第3排他的論理和回路と第6排他的論理和回路と第7排他的論理和回路との出力を入力し演算して出力し、
第16排他的論理和回路が第4排他的論理和回路と第7排他的論理和回路と第8排他的論理和回路との出力を入力し演算して出力する。
この構成により、レジスタのみで使用される単位回路Sをなくすことができ、実装面積を抑制することができる。
(第2のケース)
次に「第2のケース」について説明する。図17は、「第2のケース」の場合の演算実行回路200の回路図である。
図16に示したパイプライン処理の第2ステージ目では、単位回路Sにおいて、4入力1出力のLUTに対して、1入力、あるいは2入力使用していない入力が存在する。そこで、P関数の後に続く、Camellia(登録商標)の他要素との共有化を考え、図17では、P関数とその後に演算するFeistalの排他的論理和とを共有化した構成とする。すなわち、図16の2ステージ目では、2入力1出力の排他的論理和及び3入力1出力の排他的論理和を使用している。4入力1出力のLUTに対して、1〜2入力余っている。Camellia(登録商標)の構造(図3)より、P関数の出力は、Feistalの排他的論理和を行うので、この排他的論理和演算を図16の2ステージに加える構成とした。具体的に説明すれば、図3においてF関数10を例にとると、F関数10の出力は、図3に示すように、図16のレジスタA〜レジスタHが格納していたデータであり、これらのデータと64ビットデータとが排他的論理和される。図16に対して、この演算を実行する回路構成が図17の第2ステージ実行部220である。
図17の第2ステージ実行部220は、以下の演算を実行する。
Figure 0004859536
すなわち、図17の演算実行回路200では、
1ビットのデータであるZ1(1)、Z2(1)、Z3(1)、Z4(1)、Z5(1)、Z6(1)、Z7(1)、Z8(1)のうち、
第1排他的論理和回路がZ6(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
第2排他的論理和回路がZ5(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
第3排他的論理和回路がZ5(1)とZ6(1)とZ8(1)とを入力し演算して出力し、
第4排他的論理和回路がZ5(1)とZ6(1)とZ7(1)とを入力し演算して出力し、
第5排他的論理和回路がZ1(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
第6排他的論理和回路がZ1(1)とZ2(1)とZ4(1)とを入力し演算して出力し、
第7排他的論理和回路がZ1(1)とZ2(1)とZ3(1)とを入力し演算して出力し、
第8排他的論理和回路がZ2(1)とZ3(1)とZ4(1)とを入力し演算して出力する。
また、
第9排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるI(1)とを入力し演算して出力し、
第10排他的論理和回路が第2排他的論理和回路と第6排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるJ(1)とを入力し演算して出力し、
第11排他的論理和回路が第3排他的論理和回路と第7排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるK(1)とを入力し演算して出力し、
第12排他的論理和回路が第4排他的論理和回路と第8排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるL(1)とを入力し演算して出力し、
第13排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路と第8排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるM(1)とを入力し演算して出力し、
第14排他的論理和回路が第2排他的論理和回路と第5排他的論理和回路と第6排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるN(1)とを入力し演算して出力し、
第15排他的論理和回路が第3排他的論理和回路と第6排他的論理和回路と第7排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるO(1)とを入力し演算して出力し、
第16排他的論理和回路が第4排他的論理和回路と第7排他的論理和回路と第8排他的論理和回路との出力と第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータであるP(1)とを入力し演算して出力する。
この「第2のケース」の構成により、実装面積をさらに減少することができる。
実施の形態2のデータ変換装置では、第2ステージ実行部220における8つの排他的論理和回路のそれぞれが、第1ステージ実行部210の8つのレジスタのうち互いに異なるレジスタの出力を入力とするので、回路規模を低減することができる。
実施の形態2のデータ変換装置では、第2ステージ実行部220における8つの排他的論理和回路のそれぞれが、第1ステージ実行部210の8つの排他的論理回路の出力とは異なる1ビットのデータをさらに入力し、入力した前記1ビットデータをも用いて演算を行うので、回路規模を低減することができる。
以上の実施の形態では、鍵とデータとを入力し、入力した鍵を使用して入力したデータの暗号化とデータの復号の少なくともいずれかを行うデータ変換装置であって、上記データ変換装置は、データの暗号化及びデータの復号に必要な鍵の生成を行う鍵生成部、鍵生成部で生成した鍵を演算部で使用する形にする鍵スケジュール部、データの暗号化とデータの復号を行う演算部を保有した回路であり、鍵生成部、鍵スケジュール部、演算部がパイプラインもしくはインナーパイプライン実装されている場合に、鍵生成部と鍵スケジュール部の間に、鍵生成を終えた値か、以前の鍵生成後の値を選択していずれかを保持する機能を持っていることを特徴とするデータ変換装置を説明した。
以上の実施の形態では、4bit入力1bit出力以内に抑えるパイプライン実装を8bitの入力、8bitの出力の排他的論理和演算に適用した時に、2つのステージで実現し、第1ステージ目は、3bit入力1bit出力の排他的論理和を8つ、第2ステージ目は、2bit入力1bit出力の排他的論理和4つと3bit入力1bit出力の排他的論理和4つで構成される各排他的論理和演算を実施し、第2ステージ目の演算は、第1ステージ目の出力のみを使用していて演算を行わず直接レジスタにつながっているパスがないことを特徴とするデータ変換装置を説明した。
以上の実施の形態では、第2ステージ目で第1ステージの演算結果と異なる値とを用いて排他的論理和を行う事を特徴とするデータ変換装置を説明した。
実施の形態1におけるアルゴリズムの全体構成を示す図。 実施の形態1における鍵生成部の構成を示す図。 実施の形態1における演算部の構成を示す図。 実施の形態1における演算部への副鍵の入力状況を示す図。 実施の形態1における鍵スケジュール部の構成を示す図。 実施の形態1における演算部のみパイプライン化した構成を示す図。 実施の形態1における鍵生成部、鍵スケジュール部、演算部をパイプライン化した図。 実施の形態1におけるデータ変換装置100のブロック図。 実施の形態1におけるデータ変換装置100の具体的な構成図。 実施の形態1におけるデータ変換装置100の動作を示すタイミングチャート。 実施の形態1におけるデータ変換装置100の動作を示す別のタイミングチャート。 実施の形態2における単位回路Sを示す図。 実施の形態2におけるP関数を示す図。 実施の形態2における排他的論理和の等価性を示す図。 実施の形態2における単位回路Sをレジスタのみに使用する場合を示す図。 実施の形態2における演算実行回路200の回路構成を示す図。 実施の形態2における演算実行回路200の別の回路構成を示す図。 従来技術を示す図。
符号の説明
KA 生成鍵、KL 入力鍵、S 単位回路、10 F関数、100 データ変換装置、110 鍵生成部、120 鍵スケジュール部、130 演算部、140 生成鍵保持部、141 2−1セレクタ、142 セレクタ出力保持レジスタ、150 選択信号用レジスタ群、200 演算実行回路、210 第1ステージ実行部、220 第2ステージ実行部。

Claims (7)

  1. データ変換の対象である変換対象データと変換対象データのデータ変換に使用する鍵である入力鍵とを入力し、入力鍵を使用して変換対象データのデータ変換を行うデータ変換装置において、
    入力鍵から変換対象データのデータ変換に使用する鍵である生成鍵をパイプライン処理により生成する鍵生成部と、
    前記鍵生成部が生成した生成鍵を入力し、前記鍵生成部が生成した次の生成鍵を入力するまで入力した生成鍵を保持するとともに入力し保持している生成鍵を所定のタイミングで出力する生成鍵保持部と、
    前記生成鍵保持部が出力した生成鍵を入力し、入力した生成鍵に基づいてパイプライン処理により鍵スケジュールを実行する鍵スケジュール部と、
    前記鍵スケジュール部が実行する鍵スケジュールに従って変換対象データをパイプライン処理により変換する演算部と
    を備えたことを特徴とするデータ変換装置。
  2. 前記演算部は、
    所定の排他的論理和の演算を第1ステージと第2ステージとの2つのステージにより実行する回路であって、前記第1ステージを実行する第1ステージ実行部と前記第2ステージを実行する第2ステージ実行部とを有する演算実行回路を備え、
    前記第1ステージ実行部は、
    4ビット入力可能である1ビット出力の論理演算回路であって3ビット入力1ビット出力として使用される8つの論理演算回路と、前記8つの論理演算回路のそれぞれの出力に設けられた8つのレジスタとから構成され、
    前記第2ステージ実行部は、
    4ビット入力可能である1ビット出力の論理演算回路であって2ビット入力1ビット出力として使用される4つの論理演算回路と、4ビット入力可能である1ビット出力の論理演算回路であって3ビット入力1ビット出力として使用される4つの論理演算回路と、これら8つの論理演算回路のそれぞれの出力に設けられた8つのレジスタとから構成され、
    前記第2ステージ実行部における前記8つの論理演算回路のそれぞれは、
    前記第1ステージ実行部の8つのレジスタのうち互いに異なるレジスタの出力を入力とすることを特徴とする請求項1記載のデータ変換装置。
  3. 前記演算部の前記演算実行回路は、
    前記所定の排他的論理和として、
    Figure 0004859536
    を演算し、Z’1(1)〜Z’8(1)のそれぞれを前記第2ステージ実行部の前記8つのレジスタのそれぞれに出力することを特徴とする請求項2記載のデータ変換装置。
  4. 前記第1ステージ実行部の前記8つの論理演算回路と前記第2ステージ実行部の前記8つの論理演算回路とは、
    いずれも排他的論理和回路であることを特徴とする請求項2記載のデータ変換装置。
  5. 前記第1ステージ実行部の3ビット入力1ビット出力として使用される前記8つの排他的論理和回路である第1排他的論理和回路から第8排他的論理和回路のそれぞれは、
    1ビットのデータであるZ1(1)、Z2(1)、Z3(1)、Z4(1)、Z5(1)、Z6(1)、Z7(1)、Z8(1)のうち、
    第1排他的論理和回路がZ6(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
    第2排他的論理和回路がZ5(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
    第3排他的論理和回路がZ5(1)とZ6(1)とZ8(1)とを入力し演算して出力し、
    第4排他的論理和回路がZ5(1)とZ6(1)とZ7(1)とを入力し演算して出力し、
    第5排他的論理和回路がZ1(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
    第6排他的論理和回路がZ1(1)とZ2(1)とZ4(1)とを入力し演算して出力し、
    第7排他的論理和回路がZ1(1)とZ2(1)とZ3(1)とを入力し演算して出力し、
    第8排他的論理和回路がZ2(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
    前記第2ステージ実行部の2ビット入力1ビット出力として使用される前記4つの排他的論理和回路である第9排他的論理和回路から第12排他的論理和回路と前記第2ステージ実行部の3ビット入力1ビット出力として使用される前記4つの排他的論理和回路である第13排他的論理和回路から第16排他的論理和回路とのそれぞれは、
    第9排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路との出力を入力し、
    第10排他的論理和回路が第2排他的論理和回路と第6排他的論理和回路との出力を入力し、
    第11排他的論理和回路が第3排他的論理和回路と第7排他的論理和回路との出力を入力し、
    第12排他的論理和回路が第4排他的論理和回路と第8排他的論理和回路との出力を入力し、
    第13排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路と第8排他的論理和回路との出力を入力し、
    第14排他的論理和回路が第2排他的論理和回路と第5排他的論理和回路と第6排他的論理和回路との出力を入力し、
    第15排他的論理和回路が第3排他的論理和回路と第6排他的論理和回路と第7排他的論理和回路との出力を入力し、
    第16排他的論理和回路が第4排他的論理和回路と第7排他的論理和回路と第8排他的論理和回路との出力を入力することを特徴とする請求項4記載のデータ変換装置。
  6. 前記第1ステージ実行部の前記8つの論理演算回路と前記第2ステージ実行部の前記8つの論理演算回路とは、いずれも排他的論理和回路であり、
    前記第2ステージ実行部の前記8つの排他的論理回路のそれぞれは、
    前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータをさらに入力し、入力した前記1ビットデータをも用いて演算を行うことを特徴とする請求項2記載のデータ変換装置。
  7. 前記第1ステージ実行部の3ビット入力1ビット出力として使用される前記8つの排他的論理和回路である第1排他的論理和回路から第8排他的論理和回路のそれぞれは、
    1ビットのデータであるZ1(1)、Z2(1)、Z3(1)、Z4(1)、Z5(1)、Z6(1)、Z7(1)、Z8(1)のうち、
    第1排他的論理和回路がZ6(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
    第2排他的論理和回路がZ5(1)とZ7(1)とZ8(1)とを入力し演算して出力し、
    第3排他的論理和回路がZ5(1)とZ6(1)とZ8(1)とを入力し演算して出力し、
    第4排他的論理和回路がZ5(1)とZ6(1)とZ7(1)とを入力し演算して出力し、
    第5排他的論理和回路がZ1(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
    第6排他的論理和回路がZ1(1)とZ2(1)とZ4(1)とを入力し演算して出力し、
    第7排他的論理和回路がZ1(1)とZ2(1)とZ3(1)とを入力し演算して出力し、
    第8排他的論理和回路がZ2(1)とZ3(1)とZ4(1)とを入力し演算して出力し、
    前記第2ステージ実行部の2ビット入力1ビット出力として使用される前記4つの排他的論理和回路である第9排他的論理和回路から第12排他的論理和回路と前記第2ステージ実行部の3ビット入力1ビット出力として使用される前記4つの排他的論理和回路である第13排他的論理和回路から第16排他的論理和回路とのそれぞれは、
    第9排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるI(1)とを入力し演算して出力し、
    第10排他的論理和回路が第2排他的論理和回路と第6排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるJ(1)とを入力し演算して出力し、
    第11排他的論理和回路が第3排他的論理和回路と第7排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるK(1)とを入力し演算して出力し、
    第12排他的論理和回路が第4排他的論理和回路と第8排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるL(1)とを入力し演算して出力し、
    第13排他的論理和回路が第1排他的論理和回路と第5排他的論理和回路と第8排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるM(1)とを入力し演算して出力し、
    第14排他的論理和回路が第2排他的論理和回路と第5排他的論理和回路と第6排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるN(1)とを入力し演算して出力し、
    第15排他的論理和回路が第3排他的論理和回路と第6排他的論理和回路と第7排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるO(1)とを入力し演算して出力し、
    第16排他的論理和回路が第4排他的論理和回路と第7排他的論理和回路と第8排他的論理和回路との出力と前記第1ステージ実行部の前記8つの排他的論理回路の出力とは異なる1ビットのデータであるP(1)とを入力し演算して出力することを特徴とする請求項6記載のデータ変換装置。
JP2006150295A 2006-05-30 2006-05-30 データ変換装置 Expired - Fee Related JP4859536B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006150295A JP4859536B2 (ja) 2006-05-30 2006-05-30 データ変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006150295A JP4859536B2 (ja) 2006-05-30 2006-05-30 データ変換装置

Publications (2)

Publication Number Publication Date
JP2007324733A JP2007324733A (ja) 2007-12-13
JP4859536B2 true JP4859536B2 (ja) 2012-01-25

Family

ID=38857173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006150295A Expired - Fee Related JP4859536B2 (ja) 2006-05-30 2006-05-30 データ変換装置

Country Status (1)

Country Link
JP (1) JP4859536B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5379558B2 (ja) * 2009-05-22 2013-12-25 日本電信電話株式会社 暗号演算回路、暗号演算方法、プログラム、記録媒体

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05249891A (ja) * 1992-03-06 1993-09-28 Hitachi Ltd 暗号処理装置およびこれを用いる暗号処理方法
CN1734526B (zh) * 2000-03-09 2013-09-18 三菱电机株式会社 数据变换装置和数据变换方法
JP3942073B2 (ja) * 2000-07-13 2007-07-11 富士通株式会社 拡大鍵生成装置、拡大鍵生成プログラムおよび記録媒体
JP2003288009A (ja) * 2002-03-28 2003-10-10 Seiko Epson Corp 暗号装置及びデータ転送制御装置

Also Published As

Publication number Publication date
JP2007324733A (ja) 2007-12-13

Similar Documents

Publication Publication Date Title
US7949807B2 (en) Data conversion apparatus and data conversion method
US20020122554A1 (en) Device for and method of one-way cryptographic hashing
Macé et al. FPGA implementation (s) of a scalable encryption algorithm
US8411853B2 (en) Alternate galois field advanced encryption standard round
Kitsos et al. FPGA-based performance analysis of stream ciphers ZUC, Snow3g, Grain V1, Mickey V2, Trivium and E0
JP2005527853A (ja) 高度暗号化規格(aes)のハードウェア暗号法エンジン
AU4105801A (en) Block encryption device using auxiliary conversion
RU2008125109A (ru) Многоканальное высокоскоростное шифрование и дешифрование
KR100960113B1 (ko) 고속처리 가능한 아리아 암복호화 장치
EP3123656A1 (en) Encryption processing device, encryption processing method, and program
Singh et al. An efficient hardware design and implementation of advanced encryption standard (AES) algorithm
Wong et al. Circuit and system design for optimal lightweight AES encryption on FPGA
US11569980B2 (en) Combined SBox and inverse SBox cryptography
JP3940714B2 (ja) 演算装置、および、暗号・復号演算装置
KR100949538B1 (ko) Aes 라인달 알고리즘을 이용하는 암호화 및 복호화 장치와 그 방법
Dansarie sboxgates: A program for finding low gate count implementations of S-boxes
JP4859536B2 (ja) データ変換装置
JP6292195B2 (ja) 情報処理装置及び情報処理方法
Pyrgas et al. A very compact architecture of CLEFIA block cipher for secure IoT systems
JP2014240921A (ja) 暗号装置、暗号処理方法及び暗号処理プログラム
US20080181395A1 (en) Cryptographic operation apparatus
JPWO2009090689A1 (ja) 暗号化装置及び暗号処理方法
KR101617694B1 (ko) 블록암호 hight 의 암호화/복호화 장치
Kamble et al. Hardware implementations of LBlock and XXTEA lightweight block ciphers for resource-constrained IoT application
Singh et al. Design of High Performance MIPS Cryptography Processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090520

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4859536

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees