JP2011075721A - 暗号装置及び方法 - Google Patents

暗号装置及び方法 Download PDF

Info

Publication number
JP2011075721A
JP2011075721A JP2009225535A JP2009225535A JP2011075721A JP 2011075721 A JP2011075721 A JP 2011075721A JP 2009225535 A JP2009225535 A JP 2009225535A JP 2009225535 A JP2009225535 A JP 2009225535A JP 2011075721 A JP2011075721 A JP 2011075721A
Authority
JP
Japan
Prior art keywords
data
bits
input
exclusive
output
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
JP2009225535A
Other languages
English (en)
Other versions
JP5387295B2 (ja
Inventor
Jun Yajima
純 矢嶋
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
Priority to JP2009225535A priority Critical patent/JP5387295B2/ja
Priority to US12/892,334 priority patent/US8634551B2/en
Publication of JP2011075721A publication Critical patent/JP2011075721A/ja
Application granted granted Critical
Publication of JP5387295B2 publication Critical patent/JP5387295B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】第1の非線形変換処理S9と第2の非線形変換処理S7とを含むFI関数に従った演算を行う暗号装置で、RAMを用いずROM容量を削減する。
【解決手段】第1の非線形変換処理S9に関連する演算結果を予め格納している第1の変換テーブルと、第2の非線形変換処理S7に関連する演算結果を予め格納している第2の変換テーブルとをROMに格納しておき、第1の変換テーブルを2度参照して、第2のテーブルを1度参照する処理にFI関数を等価変換する。第1の変換テーブルを2度参照するような処理にFI関数を等価変換しているので、ROM容量を少なくすることができる。
【選択図】図1

Description

本技術は、FI関数を利用する暗号技術に関する。
共通鍵暗号方式の1つであるMISTY1(詳細は、松井充:ブロック暗号アルゴリズムMISTY, 信学技報, ISEC96-11(1996-07)等を参照のこと)については、様々な実装方式が検討されている。
図1にMISTY1を含む共通鍵暗号方式の構成の一例を示す。MISTY1に係る共通鍵暗号処理はラウンド処理と拡大鍵生成処理の2つの処理を含む。図1に示すように、拡大鍵生成処理は、入力された秘密鍵から複数の拡大鍵(図1では、拡大鍵0、拡大鍵1、...、拡大鍵N)を生成する。生成された拡大鍵は、暗号化処理(ラウンド処理とも呼ぶ)で使用される。暗号化処理は、平文(すなわち暗号化対象データ)を一定のビット長(すなわちブロック長)ごとに区切り、区切った各ブロックに対してラウンド処理を実施し、暗号文を生成する。復号の際には、暗号化処理と逆の演算を行う。
共通鍵暗号方式MISTY1は、秘密鍵長が128ビット、ブロック長64ビットを暗号化単位とするアルゴリズムである。
図2に、MISTY1のラウンド処理部の構成を示す。図2に示すように、平文P(64ビット)を暗号文C(64ビット)に変換するラウンド処理部では、FL関数が10回実行され、FO関数が8回実行される。
i番目のFO関数は、図3に示すような構成を有する。FO関数には、KOi1、KOi2、KOi3及びKOi4(各16ビット)が入力されるようになっている。これらは、秘密鍵128ビットを16ビット毎に分割することによって得られるK1乃至K8のうち4つである。K1乃至K8のいずれが用いられるかは、ラウンド値i(FOiのiの値)に基づきアルゴリズム仕様書に従って決定される。
また、i番目のFO関数では、FI関数が3回実行される。そして、FIi1関数には、KIi1が入力され、FIi2関数には、KIi2が入力され、FIi3関数には、KIi3が入力される。KIi1乃至KIi3は、16ビットの値であり、拡大鍵生成アルゴリズムにて生成したK'1乃至K'8のうち3つである。K'1乃至K'8のいずれを用いるかは、ラウンド値i(FOiのiの値)に基づきアルゴリズム仕様書に従って決定される。
i番目のFO関数におけるj番目のFI関数の構成を図4に示す。FI関数は、入力16ビットの上位9ビットを非線形関数S9(入力データを決められたアルゴリズム(論理演算の繰り返し)に従って攪拌して出力する関数)に入力して、関数S9の出力と、入力16ビットの下位7ビットの上位2ビットに0を追加した(0-extensionと記す)値との排他的論理和を算出して、データaを生成する。また、入力16ビットの下位7ビットを非線形関数S7(入力データを決められたアルゴリズム(論理演算の繰り返し)に従って攪拌して出力する関数)に入力して、関数S7の出力と、データaの上位2ビットを除去した(truncateと記す)値との排他的論理和を算出して、データbを生成する。さらに、データbとKIijL(KIijの上位7ビット)との排他的論理和を算出し、データcを生成する。また、データaとKIijR(KIijの下位9ビット)との排他的論理和を算出し、データdを生成する。データdは、再度非線形関数S9に入力され、さらに関数S9の出力とデータdの上位2ビットに0を追加した値との排他的論理和を算出して、データeを生成する。そして、最終的にデータcを上位7ビットとし、データeを下位9ビットとして連結すれば、16ビットの出力となる。
次に図5に、MISTY1の拡大鍵生成部の構成を示す。拡大鍵生成部では、128ビットの秘密鍵を16ビット毎に分割して、先頭からK1乃至K8を生成する。図5で示すように、K8を入力としてK1をKIijとしてFI関数で拡大鍵K'8を生成する。K7を入力としてK8をKIijとしてFI関数で拡大鍵K'7を生成する。K6を入力としてK7をKIijとしてFI関数で拡大鍵K'6を生成する。K5を入力としてK6をKIijとしてFI関数で拡大鍵K'5を生成する。K4を入力としてK5をKIijとしてFI関数で拡大鍵K'4を生成する。K3を入力としてK4をKIijとしてFI関数で拡大鍵K'3を生成する。K2を入力としてK3をKIijとしてFI関数で拡大鍵K'2を生成する。K1を入力としてK2をKIijとしてFI関数で拡大鍵K'1を生成する。
このように、MISTY1をソフトウエア又はハードウエアで実装する際には、FI関数の実装方法が重要となる。なぜなら、FI関数はラウンド処理部及び拡大鍵生成部の双方で使用される処理であり、FI関数を効率的に処理することが可能となれば、MISTY1の処理性能が大きく向上する。
FI関数の従来実装法については日本特許第3917357号公報に幾つか示されている。
図6及び図7に上記特許公報に開示されている第1の実装例を示す。本実装例では、図4のアルゴリズムを図6に示すようなアルゴリズムに等価変換した上で、非線形関数S9の処理1001と、非線形関数S7を含む処理1003と、非線形関数S9を含む処理1005とをテーブル化する。但し、処理1001と処理1005とは異なる。その結果として、図7に示すように、処理1001がテーブルT1に置換され、処理1003がテーブルT4に置換され、処理1005がテーブルT5に置換される。これらのテーブルは、ROMに格納され、必要なときに参照される。
なお、一例として、K'1を使用するFI関数については、KIijRとKIijL'とは以下のように生成される。
KIijR=K'1 & 0x1FF
tmpk1=K'1 & 0xFE00
tmpk2=KIijR & 0x7F
tmpk3=tmpk2 << 9
tmpk4=tmpk3 + tmpk1
tmpk5=tmpk4 >> 9
KIijL'=tmpk5 + tmpk4
テーブルT1、テーブルT4及びテーブルT5は以下のように定義される。なお、Xは入力である。また、全ての取り得るX値についてテーブルエントリを生成する。
T1(X)=S9(X)
T5(X)=((X&0x7F)<<9)+(X&0x7F)+S9(X)
T4(X)=(S7(X)<<9)+S7(X)
「<<9」は左シフトで、「>>9」は右シフトで、X&0x7FはXの下位7ビットを抽出するものである。
このような実装方法では、テーブルT1のサイズが1KBで、テーブルT4のサイズが1KBで、テーブルT5のサイズが256Bで、合計2304BのROMテーブルサイズが必要となる。但し、RAMは必要ない。
また、本実装例では、FI関数1つあたり9サイクルかかり、FI関数が24個あるので、ラウンド処理全体では216サイクルかかる。
一方、拡大鍵生成処理では、KIijR及びKIijL'に相当するデータの事前計算のための7サイクルと、FI関数の9サイクルと、K'iについてラウンド処理のためのKIijR及びKIijL'を生成する処理のための7サイクルとが、8つのFI関数で必要となる。従って、拡大鍵生成処理全体では、(7+9+7)*8=184サイクル必要となる。
なお、ラウンド処理の処理時間を「FI関数1回に必要なサイクル数×8」として計算する。なお、ラウンド処理には、FI関数以外にもFL関数や、FO関数における拡大鍵との排他的論理和(XOR)のためのサイクル数が必要となる。しかしながら、これらの処理は負荷が軽く必要サイクル数が少ないため、処理時間見積りの対象には含めないこととする。
さらに、図8及び図9に上記特許公報に開示されている第2の実装例を示す。図8に示すように、図7に示した第1の実装例において、KIijRとの排他的論理和及びテーブルT5の部分1101を、テーブル化する。すなわち、図9に示すように、テーブルT5jを導入する。
但し、KIijRは拡大鍵K'iを基に生成されるデータであり、ユーザが秘密鍵を暗号装置に入力して初めて値が特定できるものである。従って、テーブルT5jを、ユーザによる秘密鍵入力前に計算しておくことはできず、必ず入力後に計算することとなる。すなわち、テーブルT5jをROMには保持できず、RAMに保持する必要がある。
テーブルT1及びT4は、上で述べたとおりであり、事前にXの取り得る全ての値について事前に計算して、ROMに記録しておく。一方、テーブルT5jについては、以下のような式で算出される。但し、ユーザによる秘密鍵の入力後に、取り得る入力パターンについて全て計算した後に、RAMに保持しておく。
T5j(X)=(((X+KIijR)& 0x7F)<<9)+((X+KIjiR)&0x7F)+S9(X)
このような実装方法では、テーブルT1のサイズが1KBで、テーブルT4のサイズが256Bで、合計1280BのROMテーブルサイズが必要となる。また、テーブルT5をRAMに保持するので、そのサイズは1KBとなる。
この実装例では、FI関数1つあたり8サイクルかかり、FI関数が24個あるので、ラウンド処理全体では192サイクルかかる。
一方、拡大鍵生成処理では、テーブルT5jの生成も同時に行う必要がある。このテーブルの生成には1536サイクル以上必要になり、その他の拡大鍵生成処理を含めると、全体では1600サイクル以上必要となる。
さらに、図10及び図11に上記特許公報に開示されている第3の実装例を示す。図10に示すように、図9に示した第2の実装例において、KIijL'との排他的論理和及びテーブルT4の部分1201を、テーブル化する。すなわち、図11に示すように、テーブルT4jを導入する。
但し、KIijL'は拡大鍵K'iを基に生成されるデータであり、ユーザが秘密鍵を暗号装置に入力して初めて値が特定できるものである。従って、テーブルT4jを、ユーザによる秘密鍵入力前に計算しておくことはできず、必ず入力後に計算することとなる。すなわち、テーブルT4jをROMには保持できず、RAMに保持する必要がある。
テーブルT1は、上で述べたとおりであり、事前にXの取り得る全ての値について事前に計算して、ROMに記録しておく。テーブルT5jについても、上で述べたとおりであり、RAMに保持しておく。さらに、テーブルT4jに格納されるデータは、以下のような式で計算される。但し、ユーザによる秘密鍵の入力後に、取り得る入力パターンについて全て計算した後に、RAMに保持しておく。
T4j(X)=(S7(X)<<9)+S7(X)+KIijL'
このような実装方法では、テーブルT1のサイズが1KBで、テーブルT4jのサイズは事前計算用に少なくとも128Bで、合計1152B以上のROMテーブルサイズが必要となる。一方、テーブルT4j及びT5jについてはRAMに保持することになるが、サイズは1280Bとなる。
さらに、この実装例では、FI関数1つあたり7サイクルかかり、FI関数が24個あるので、ラウンド処理全体では168サイクルかかる。
一方、拡大鍵生成処理では、テーブルT4j及びT5jの生成も同時に行う必要がある。このテーブルの生成には1920サイクル以上必要になり、その他の拡大鍵生成処理を含めると、全体では2000サイクル以上必要となる。
さらに、論文(中嶋純子、松井充: MISTYのソフトウエアによる高速実装法について (II) SCIS98-9.1B)には、他の実装例が示されている。これについて図12を用いて説明する。この実装例では、図4に示したFI関数を図12に示すような形に等価変換している。図12の例では、非線形関数S9及びS7を含む上段部分をテーブルT7に変換し、KIijとの排他的論理和以外で非線形関数S9を含む下段部分をテーブルT8に変換している。
このような実装例では、テーブルT7のサイズは131072Bであり、テーブルT8のサイズは131072Bであり、合計262144B必要となる。なお、RAMは必要ない。
このような実装例では、FI関数1つあたり3サイクルかかり、FI関数が24個あるので、ラウンド処理については72サイクルかかる。KIijについてはそのまま用いるので、FI関数が8個分で拡大鍵生成処理には24サイクル必要となる。
日本特許第3917357号公報
中嶋純子、松井充: MISTYのソフトウエアによる高速実装法について (II) SCIS98-9.1B 松井充:ブロック暗号アルゴリズムMISTY, 信学技報, ISEC96-11(1996-07)
MISTY1などは組み込み機器に実装する場合もあるので、RAM使用量が少ないこと、ROMサイズが小さいこと、処理速度が高速であることが必要となる。特にRAMについては極力使用量が少ないことが求められ、事前計算テーブルをRAMに保持する手法は組み込み機器環境には向いていない。また、ROMについても極力サイズが小さいことが求められる。しかし、単純にROMに格納するテーブルを削減してしまうと、処理速度が著しく低下し、処理速度が不十分となる。
従って、本技術の目的は、暗号装置で用いられるFI関数を実装する上で、ROMに格納するテーブルのサイズを小さくするための技術を提供することである。
本暗号装置は、第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を行う暗号装置である。そして、本暗号装置は、(A−1)9*nビット(nは1以上の整数)の第1の入力Xに対する第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と第1の出力との排他的論理和の値を、全ての第1の入力Xについて格納した第1の変換テーブルと、(A−2)7*nビットの第2の入力Yに対する第2の非線形関数S7の第2の出力と第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と第2の入力Yとの排他的論理和の値を、全ての第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリと、(B)読み出し専用メモリに記録されている第1の変換テーブルを2度用い、読み出し専用メモリに記録されている第2の変換テーブルを1度用いて、FI関数の1回の演算を行うFI関数演算部とを有する。
暗号装置で用いられるFI関数を実装する上で、ROMに格納するテーブルのサイズを小さくすることができる。
図1は、共通鍵暗号方式MISTY1の構成例を示す図である。 図2は、ラウンド処理のアルゴリズムを示す図である。 図3は、FO関数のアルゴリズムを示す図である。 図4は、FI関数のアルゴリズムを示す図である。 図5は、拡大鍵生成処理のアルゴリズムを示す図である。 図6は、第1の従来実装例で行われる等価変換を示す図である。 図7は、第1の従来実装例のアルゴリズムを示す図である。 図8は、第2の従来実装例で行われる等価変換を示す図である。 図9は、第2の従来実装例のアルゴリズムを示す図である。 図10は、第3の従来実装例で行われる等価変換を示す図である。 図11は、第3の従来実装例のアルゴリズムを示す図である。 図12は、第4の従来実装例で行われる等価変換を示す図である。 図13は、本技術の実施の形態におけるFIアルゴリズムの等価変換を説明するための図である。 図14は、等価変換後の処理内容を説明するための図である。 図15は、プロセッサで処理を実施するような場合の構成を示す図である。 図16は、暗号装置の機能ブロック図である。 図17は、効果の比較表を示す図である。 図18は、FI関数をハードウエアで実施した場合の一例を示す図である。 図19は、FI3関連処理の他の例を示す図である。 図20は、FI3関連処理の他の例を示す図である。 図21は、暗号装置の機能ブロック図である。 図22は、暗号装置の処理フローを示す図である。
本技術の実施の形態では、図4に示したFI関数のアルゴリズムを、図13に示すように等価変換する。なお、以下では16ビット入力の例を示すが、16ビットの整数倍したビット長にも容易に変換できる。その際には、9ビット及び7ビットについても整数倍される。
図13のアルゴリズムでは、16ビット入力Zの上位9ビットを非線形関数S9に入力して、非線形関数S9の出力9ビットのうち下位7ビットを上位に非線形関数S9の出力9ビットをそのまま下位に配置して連結して第1のデータを生成する。ここまでの処理内容を、第1のテーブルS9Fに変換する。
また、16ビット入力Zの下位7ビットを非線形関数S7に入力して、非線形関数S7の出力と入力Zの下位7ビットとの排他的論理和を算出して第2のデータを生成する。そして、第2のデータを上位に、入力Zの下位7ビットの上位に0を2ビット加えた値を下位に配置して連結して第3のデータを生成する。ここまでの処理内容を第2のテーブルS7Fに変換する。
さらに、第1のデータと第3のデータとの排他的論理和の結果と、KIijとの排他的論理和を算出して第4のデータを生成する。
この第4のデータの下位9ビットを、非線形関数S9に入力して、非線形関数S9の出力9ビットのうち下位7ビットを上位に非線形関数S9の出力9ビットをそのまま下位に配置して連結して第5のデータを生成する。この部分は、第1のテーブルS9Fの元の処理と同じであり、第1のテーブルS9Fへの参照に置換できる。
そして、第4のデータの上位7ビットの上位に0を2ビット加えた値と第5のデータの下位9ビットとの排他的論理和の結果を下位に配置し、第4のデータの上位7ビットを上位に配置して、出力Rが生成される。
このような等価変換後のアルゴリズムにおいて、テーブルS9Fは、取り得る全ての入力Xについて、以下のような値S9F(X)が格納されているテーブルである。同様に、テーブルS7Fは、取り得る全ての入力Yについて、以下のような値S7F(Y)が格納されているテーブルである。
S9F(X)=((S9(X)&0x7F)<<9)+S9(X)
S7F(Y)=(S7(Y)+Y)<<9)+Y
上で述べたが、「&0x7F」は、下位7ビットを抽出する処理を表し、「<<9」は9ビット左シフトを表す。なお「+」は排他的論理和を表している。そして、Aが7ビット、Bが9ビットであれば、(A<<9)+Bにて、Aを上位ビット7ビットに配置してBを下位ビット9ビットに配置するような処理となる。
従って、再度表せば、テーブルS9F(X)は、9ビットの入力Xに対する非線形変換処理S9の出力の下位7ビットを抽出し、当該出力の下位7ビットを9ビット左シフトした値と非線形関数の出力との排他的論理和の値を、各Xに対応付けて登録したテーブルである。
同様に、テーブルS7F(Y)は、7ビットの入力Yに対する非線形関数S7の出力と入力Yとの排他的論理和の結果を9ビット左シフトし、当該排他的論理和の結果の9ビット左シフトした値と入力Yとの排他的論理和の値を、各Yに対応付けて登録したテーブルである。
このようなテーブルを採用すればRAMに格納しなければならないテーブルは存在しない。
次に、このようなテーブルを用いたFI関数の処理について、図14を用いて説明する。
暗号装置のプロセッサ(すなわちCPU(Central Processing Unit))は、入力データを格納しているレジスタR0から上位9ビットを取り出し、レジスタR1に格納する(ステップS1)。そして、プロセッサは、テーブルS9Fから、レジスタR1に格納されている値に対応するアドレスのデータ(例えばR1値の順番のデータ)を読み出して、レジスタR1に格納する(ステップS3)。なお、ステップS1及びS3は、1回目のS9F処理と呼ぶ。
一方、プロセッサは、レジスタR0から下位7ビットを取り出し、レジスタR2に格納する(ステップS5)。さらに、プロセッサは、テーブルS7Fから、レジスタR2に格納されている値に対応するアドレスのデータ(例えばR2値の順番のデータ)を読み出して、レジスタR2に格納する(ステップS7)。なお、ステップS5及びS7は、S7F処理と呼ぶ。
1回目のS9F処理とS7F処理とは順番の入れ替えが可能であり、また複数コアを有するプロセッサであれば並列に実行しても良い。
そして、プロセッサは、レジスタR1のデータとレジスタR2のデータとの排他的論理和を算出し、結果をレジスタR1に格納する(ステップS9)。
また、プロセッサは、拡大鍵KIijを読み出してレジスタR3に格納する(ステップS11)。そして、プロセッサは、レジスタR1のデータとレジスタR3のデータとの排他的論理和を算出し、結果をレジスタR1に格納する(ステップS13)。ステップS11及びS13は、拡大鍵加算処理である。
排他的論理和については順番は問われないので、ステップS9と拡大鍵加算処理については順番を入れ替えることが可能である。
さらに、プロセッサは、レジスタR1から下位9ビットを取り出し、レジスタR4に格納する(ステップS15)。また、プロセッサは、テーブルS9FからレジスタR4に格納されている値に対応するアドレスのデータ(例えばR4値の順番のデータ)を読み出して、レジスタR4に格納する(ステップS17)。さらに、プロセッサは、レジスタR4から下位9ビットを取り出して、レジスタR5に格納する(ステップS19)。ステップS15乃至S19は、第2回目のS9F処理と呼ぶ。
また、プロセッサは、レジスタR1から上位7ビットを取り出し、レジスタR6に格納する(ステップS21)。そして、プロセッサは、レジスタR6の値と当該レジスタR6を左に9ビットシフトした値との排他的論理和を算出し、結果をレジスタR6に格納する(ステップS23)。ステップS21及びS23を、FI3関連処理と呼ぶ。
第2回目のS9F処理とFI3関連処理とは順番の入れ替えが可能であり、また複数コアを有するプロセッサであれば並列に実行してもよい。
そして、最後にプロセッサは、レジスタR6の値とレジスタR5の値との排他的論理和を算出し、レジスタR6に格納する(ステップS25)。
このようにしてFI関数の出力データがレジスタR6に格納される。
実際に、テーブルS9F及びS7Fと、図14で示したような処理をプロセッサに実行させるためのプログラムとを用いて実装する際には、例えば図15に示すような構成となる。
図15の暗号装置1は、プロセッサ10と、RAM11と、ROM12とを有する。プロセッサ10とRAM11及びROM12とはバスで接続されている。RAM11には、平文データ、暗号文データ、秘密鍵データ、拡大鍵データなどが格納される。但し、FI関数のためのテーブルは格納されない。また、ROM12は、図14で示したような処理を含むMISTY1等の暗号処理をプロセッサ10に実行させるための暗号コードが格納される暗号コード領域と、上で述べたテーブルS9F及びS7Fを含む暗号テーブルを格納する暗号テーブル格納領域を含む。
なお、プロセッサ10とROM12とが一体の半導体チップの場合もある。同様に、プロセッサ10とROM12とRAM11とが一体の半導体チップの場合もある。
MISTY1を図15のような暗号装置1で実装すると、図16に示すような機能が実現される。すなわち、秘密鍵から拡大鍵を生成する拡大鍵生成関数101と、拡大鍵を用いて平文を暗号文に暗号化するラウンド処理を実施する暗号化関数103と、暗号化関数103から呼び出されて演算結果を返すFO関数105及びFL関数107と、拡大鍵生成関数101及びFO関数105から呼び出されて演算結果を返すFI関数109とが実現される。FI関数109は、上で述べたようなテーブルS9F及びS7Fを用いて演算を実施する。
図14に示したような処理をプロセッサに実行させるためのプログラムを作成すると、FI関数1個につき、12サイクルかかる。MISTY1ではFI関数が24個あるので、ラウンド処理全体では288サイクル必要となる。
一方、拡大鍵生成処理でもFI関数が用いられるが、KIijをそのまま用いるので事前処理は不要で、拡大鍵生成処理全体では12サイクル×8=96サイクル必要となる。
また、ROMサイズについては、テーブルS9Fとして1KB必要で、テーブルS7Fとして256B必要であるから、全体として1280B必要となる。当然、FI関数のためにRAMに事前計算テーブルを保持する必要はない。
従来技術との効果比較表を図17に示す。本実施例は、RAMに格納すべきテーブルのサイズが0という条件であれば、ROMに格納すべきテーブルのサイズは最小となっている。なお、処理サイクル(暗号化処理(ラウンド処理)+拡大鍵生成処理)も、従来技術に比して高速処理となっている。
なお、上で述べたようなプログラムで実装するだけではなく、例えばFI関数109並びにテーブルS9F及びS7Fをハードウエアで実装する場合もある。ハードウエアでの実装例を図18に示す。
ハードウエアによるFI関数演算部は、セレクタ1乃至4と、排他的論理和演算部201及び203と、レジスタ205とを有する。
セレクタ1には、入力Zの上位9ビットと、レジスタ205に格納されている値の下位9ビットとが入力されており、いずれかが選択されるようになっている。また、セレクタ1の出力でもって、テーブルS9Fから該当するデータを読み出すようになっており、テーブルS9Fの出力はセレクタ2に入力されている。
また、入力Zの下位7ビットでもって、テーブルS7Fから該当するデータを読み出すようになっており、テーブルS7Fの出力は、セレクタ3に入力されている。
さらに、セレクタ2には、テーブルS9Fの出力と、レジスタ205に格納されている値の上位7ビットに対して当該上位7ビットの上位に0を挿入して生成される9ビットのデータを下位に連結したデータとが入力されている。
また、セレクタ3には、テーブルS7Fの出力と、テーブルS9Fの出力の下位9ビットに対して7ビットの0を上位に連結した値とが入力されている。
さらに、セレクタ4には、入力拡大鍵と、16ビットの0とが入力されている。
排他的論理和演算部201には、セレクタ2の出力とセレクタ3の出力とが入力されており、排他的論理和演算部201の出力は排他的論理和演算部203に入力されている。
また、排他的論理和演算部203には、排他的論理和演算部201の出力とセレクタ4の出力とが入力されており、排他的論理和演算部203の出力はレジスタ205に格納される。
そして、第1のサイクルにおいて、セレクタ1では入力Zの上位9ビットが選択され、セレクタ2ではテーブルS9Fの出力が選択され、セレクタ3ではテーブルS7Fの出力が選択され、セレクタ4では、入力拡大鍵が選択される。
すなわち、入力Zの上位9ビットがセレクタ1で選択されて、当該入力Zの上位9ビットでもってテーブルS9Fから該当するデータを読み出す。そして、テーブルS9Fの出力は、セレクタ2で選択される。また、入力Zの下位7ビットでもってテーブルS7Fから該当するデータを読み出して、当該セレクタ3でテーブルS7Fの出力が選択される。さらに、セレクタ2とセレクタ3の出力は、排他的論理和演算部201でそれらの排他的論理和が算出される。セレクタ4では拡大鍵KIijで選択され、当該拡大鍵KIijと排他的論理和演算部201の出力とが、排他的論理和演算部203でそれらの排他的論理和が算出され、レジスタ205に格納される。
第1のサイクル後の第2のサイクルにおいては、セレクタ1ではレジスタ205に格納されている値の下位9ビットが選択され、セレクタ2では、レジスタ205に格納されている値の上位7ビットに対して当該上位7ビットの上位に0を挿入して生成される9ビットのデータを下位に連結したデータが選択され、セレクタ3では、テーブルS9Fの出力の下位9ビットに対して7ビットの0を上位に連結した値が選択され、セレクタ4では、16ビットの0が選択される。
そうすると、レジスタ205に格納されている値の下位9ビットでもってテーブルS9Fから該当するデータを読み出す。このテーブルS9Fの出力の下位9ビットに対して7ビットの0を上位に連結した値は、セレクタ3で選択される。セレクタ2では、レジスタ205に格納されている値の上位7ビットに対して当該上位7ビットの上位に0を挿入して生成される9ビットのデータを下位に連結したデータが選択される。そして、このデータと、テーブルS9Fの出力の下位9ビットに対して7ビットの0を上位に連結した値とは、排他的論理和演算部201に入力されて、それらの排他的論理和が算出される。さらに、セレクタ4では、16ビットの0が選択されるので、排他的論理和演算部203では排他的論理和演算部201の出力がそのままレジスタ205に格納され、当該レジスタ205に格納されている値が、最終的なFI関数の出力Rとなる。
このようなハードウエアで実装する場合にも、テーブルS9F及びS7Fを有効に活用することができる。
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。
例えば、MISTY1を前提に説明してきたが、FI関数を利用する他の暗号方式、例えばMISTY2にも適用可能である。さらに、類似のFI関数を利用するKASUMI暗号方式にも応用可能である。
また、図18に示したハードウエア構成は一例であって、テーブルS9F及びS7Fを用いる他の実装方式でも良い。
さらに、図14のFI3関連処理については、図19に示すように変形することができる。すなわち、プロセッサは、レジスタR1の上位7ビットをビット位置をシフトさせずに取り出し(R1&0xFE00と表す)、レジスタR6に格納する(ステップS31)。そして、プロセッサは、レジスタR6の値と当該レジスタR6を右に9ビットシフトした値との排他的論理和を算出し、結果をレジスタR6に格納する(ステップS33)。これでも図14のFI3関連処理と等価な処理である。また、高速処理が可能である。
同様に、図20に示すような処理に変形することも可能である。すなわち、プロセッサは、レジスタR1の上位7ビットをビット位置をシフトさせずに取り出し、レジスタR6に格納する(ステップS41)。そして、プロセッサは、レジスタR5の値とレジスタR6の値との排他的論理和を算出し、結果をレジスタR5に格納する(ステップS43)。さらに、プロセッサは、レジスタR6の値を右に9ビットシフトした値を、レジスタR6に戻す(ステップS45)。これでも図14のFI3関連処理と等価な処理である。
本実施の形態をまとめると以下のようになる。
本暗号装置は、第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を行う暗号装置である。そして、本暗号装置は、(A−1)9*nビット(nは1以上の整数)の第1の入力Xに対する第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と第1の出力との排他的論理和の値を、全ての第1の入力Xについて格納した第1の変換テーブル(図21:511)と、(A−2)7*nビットの第2の入力Yに対する第2の非線形関数S7の第2の出力と第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と第2の入力Yとの排他的論理和の値を、全ての第2の入力Yについて格納した第2の変換テーブル(図21:512)とを記録している読み出し専用メモリ(図21:510)と、(B)読み出し専用メモリに記録されている第1の変換テーブルを2度用い、読み出し専用メモリに記録されている第2の変換テーブルを1度用いて、FI関数の1回の演算を行うFI関数演算部(図21:500)とを有する。
MISTY1やMISTY2のようにFI関数に従った演算を行う暗号において、上で述べたような第1の変換テーブル及び第2の変換テーブルを用意することによって、RAMを用いずにROMサイズを少なくすることができる。
また、上で述べたFI関数演算部が、(b1)第3の入力の上位9*nビットを第1の入力Xとして第1の変換テーブルから該当する第1のデータを読み出し、(b2)第3の入力の下位7*nビットを第2の入力Yとして第2の変換テーブルから該当する第2のデータを読み出し、(b3)第1のデータと第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は第1のデータと入力拡大鍵との排他的論理和にさらに第2のデータの排他的論理和を算出して第3データを生成し、(b4)第3データの下位9*nビットを第1の入力Xとして第1の変換テーブルから該当する第4のデータを読み出し、第4のデータの下位9*nビットを取り出して第5のデータを生成し、(b5)第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成し、(b6)第5のデータと前記第6のデータとの排他的論理和を算出するようにしてもよい。
このように第1及び第2の変換テーブルを導入しても必要な演算サイクルはあまり増加せずに済む。ステップ(b5)は様々な等価な実現方法が可能である。
さらに、本暗号装置は、拡大鍵生成部と、暗号化処理部とを有するようにしてもよい。そして、拡大鍵生成部及び暗号化処理部とが、FI関数演算部に対してFI関数の演算を要求し、FI関数演算部から演算結果を受け取るようにしてもよい。例えばMISTY1やMISTY2では、拡大鍵生成処理においてもFI関数が必要となるので、第1及び第2の変換テーブルが有効に利用される。
また、上で述べたFI関数演算部が、第1乃至第4のセレクタと、第1及び第2の排他的論理和演算部と、レジスタとを有するようにしてもよい。このような場合には、(d1)第1のセレクタには、第3の入力の上位9*nビットと、レジスタに格納されている値の下位9*nビットとが入力されており、(d2)第1のセレクタの出力を、第1の入力Xとして第1の変換テーブルから該当する第1のデータを読み出すようになっており、(d3)第3の入力の下位7*nビットを、第2の入力Yとして第2の変換テーブルから該当する第2のデータを読み出すようになっており、(d4)第2のセレクタには、第1のデータと、レジスタに格納されている値の上位7*nビットに対して当該上位7*nビットの上位に0を挿入して生成される9*nビットのデータを下位に連結した第3データとが入力されており、(d5)第3のセレクタには、第2のデータと、第1のデータの下位9*nビットに対して7*nビットの0を上位に連結した第4のデータとが入力されており、(d6)第4のセレクタには、入力拡大鍵と、16*nビットの0とが入力されており、(d7)第1の排他的論理和演算部は、第2のセレクタの出力と第3のセレクタの出力とについて排他的論理和を演算して第5のデータを生成し、(d8)第2の排他的論理和演算部は、第5のデータと第4のセレクタの出力とについて排他的論理和を演算して第6のデータを生成し、レジスタに格納するようにしてもよい。そして、第1のサイクルでは、第1のセレクタでは第3の入力の上位9*nビットが選択され、第2のセレクタでは第1のデータが選択され、第3のセレクタでは第2のデータが選択され、第4のセレクタでは、入力拡大鍵が選択されるようにしてもよい。また、第2のサイクルでは、第1のセレクタではレジスタに格納されている値の下位9*nビットが選択され、第2のセレクタでは第3のデータが選択され、第3のセレクタでは第4のデータが選択され、第4のセレクタでは上記16*nビットの0が選択されるようにしてもよい。
このようにハードウエアで実装する場合においても第1及び第2の変換テーブルを利用するような構成を採用することができる。
なお、第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を実行する暗号方法(図22)は、(A)入力Zを受け取るステップと、(B)(b1)9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、(b2)7*nビットの第2の入力Yに対する第2の非線形関数S7の第2の出力と第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリに記録されている第1の変換テーブルにアクセスして、入力Zの上位9*nビットである第1の入力Xに該当する第1のデータを読み出すステップと、(C)読み出し専用メモリに記録されている第2の変換テーブルにアクセスして、入力Zの下位7*nビットである第2の入力Yに該当する第2のデータを読み出すステップと、(D)第1のデータと第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は第1のデータと入力拡大鍵との排他的論理和にさらに第2のデータの排他的論理和を算出して第3データを生成するステップと、(E)読み出し専用メモリに記録されている第1の変換テーブルにアクセスして、第3データの下位9*nビットである第1の入力Xに該当する第4のデータを読み出し、第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、(F)第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、(G)第5のデータと第6のデータとの排他的論理和を算出するステップとを含む。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を行う暗号装置であって、
9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、
7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルと、
を記録している読み出し専用メモリと、
前記読み出し専用メモリに記録されている前記第1の変換テーブルを2度用い、前記読み出し専用メモリに記録されている前記第2の変換テーブルを1度用いて、前記FI関数の1回の演算を行うFI関数演算部と、
を有する暗号装置。
(付記2)
前記FI関数演算部が、
第3の入力の上位9*nビットを前記第1の入力Xとして前記第1の変換テーブルから該当する第1のデータを読み出し、
前記第3の入力の下位7*nビットを前記第2の入力Yとして前記第2の変換テーブルから該当する第2のデータを読み出し、
前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成し、
前記第3データの下位9*nビットを前記第1の入力Xとして前記第1の変換テーブルから該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成し、
前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成し、
前記第5のデータと前記第6のデータとの排他的論理和を算出する
付記1記載の暗号装置。
(付記3)
拡大鍵生成部と、
暗号化処理部と
を有し、
前記拡大鍵生成部及び前記暗号化処理部とが、前記FI関数演算部に対して前記FI関数の演算を要求し、前記FI関数演算部から演算結果を受け取る
付記1又は2記載の暗号装置。
(付記4)
前記FI関数演算部が、
第1乃至第4のセレクタと、
第1及び第2の排他的論理和演算部と、
レジスタと、
を有しており、
前記第1のセレクタには、第3の入力の上位9*nビットと、前記レジスタに格納されている値の下位9*nビットとが入力されており、
前記第1のセレクタの出力を、前記第1の入力Xとして前記第1の変換テーブルから該当する第1のデータを読み出すようになっており、
前記第3の入力の下位7*nビットを、前記第2の入力Yとして前記第2の変換テーブルから該当する第2のデータを読み出すようになっており、
前記第2のセレクタには、前記第1のデータと、前記レジスタに格納されている値の上位7*nビットに対して当該上位7*nビットの上位に0を挿入して生成される9*nビットのデータを下位に連結した第3データとが入力されており、
前記第3のセレクタには、前記第2のデータと、前記第1のデータの下位9*nビットに対して7*nビットの0を上位に連結した第4のデータとが入力されており、
前記第4のセレクタには、入力拡大鍵と、16*nビットの0とが入力されており、
前記第1の排他的論理和演算部は、前記第2のセレクタの出力と前記第3のセレクタの出力とについて排他的論理和を演算して第5のデータを生成し、
前記第2の排他的論理和演算部は、前記第5のデータと前記第4のセレクタの出力とについて排他的論理和を演算して第6のデータを生成し、前記レジスタに格納し、
第1のサイクルでは、前記第1のセレクタでは前記第3の入力の上位9*nビットが選択され、前記第2のセレクタでは前記第1のデータが選択され、前記第3のセレクタでは前記第2のデータが選択され、前記第4のセレクタでは、前記入力拡大鍵が選択され、
第2のサイクルでは、前記第1のセレクタでは前記レジスタに格納されている値の下位9*nビットが選択され、前記第2のセレクタでは前記第3のデータが選択され、前記第3のセレクタでは前記第4のデータが選択され、前記第4のセレクタでは前記16*nビットの0が選択される
付記1乃至3のいずれか1つ記載の暗号装置。
(付記5)
第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算をプロセッサに実行させる暗号プログラムであって、
入力Zを受け取るステップと、
9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
前記読み出し専用メモリに記録されている前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
前記読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
を実行させるための暗号プログラム。
(付記6)
第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を実行する暗号方法であって、
入力Zを受け取るステップと、
9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
前記読み出し専用メモリに記録されている前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
前記読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
を含み、プロセッサに実行される暗号方法。
(付記7)
第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算をプロセッサに実行させる暗号プログラムと、
9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、
7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルと、
を格納しており
前記暗号プログラムが、
入力Zを受け取るステップと、
前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
をプロセッサに実行させるための暗号プログラム
であるメモリ。
(付記8)
前記メモリを有する付記7記載のプロセッサ。
101 拡大鍵生成関数 103 暗号化関数
105 FO関数 107 FL関数
109 FI関数
10 プロセッサ 11 RAM
12 ROM

Claims (8)

  1. 第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を行う暗号装置であって、
    9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、
    7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルと、
    を記録している読み出し専用メモリと、
    前記読み出し専用メモリに記録されている前記第1の変換テーブルを2度用い、前記読み出し専用メモリに記録されている前記第2の変換テーブルを1度用いて、前記FI関数の1回の演算を行うFI関数演算部と、
    を有する暗号装置。
  2. 前記FI関数演算部が、
    第3の入力の上位9*nビットを前記第1の入力Xとして前記第1の変換テーブルから該当する第1のデータを読み出し、
    前記第3の入力の下位7*nビットを前記第2の入力Yとして前記第2の変換テーブルから該当する第2のデータを読み出し、
    前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成し、
    前記第3データの下位9*nビットを前記第1の入力Xとして前記第1の変換テーブルから該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成し、
    前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成し、
    前記第5のデータと前記第6のデータとの排他的論理和を算出する
    請求項1記載の暗号装置。
  3. 拡大鍵生成部と、
    暗号化処理部と
    を有し、
    前記拡大鍵生成部及び前記暗号化処理部とが、前記FI関数演算部に対して前記FI関数の演算を要求し、前記FI関数演算部から演算結果を受け取る
    請求項1又は2記載の暗号装置。
  4. 前記FI関数演算部が、
    第1乃至第4のセレクタと、
    第1及び第2の排他的論理和演算部と、
    レジスタと、
    を有しており、
    前記第1のセレクタには、第3の入力の上位9*nビットと、前記レジスタに格納されている値の下位9*nビットとが入力されており、
    前記第1のセレクタの出力を、前記第1の入力Xとして前記第1の変換テーブルから該当する第1のデータを読み出すようになっており、
    前記第3の入力の下位7*nビットを、前記第2の入力Yとして前記第2の変換テーブルから該当する第2のデータを読み出すようになっており、
    前記第2のセレクタには、前記第1のデータと、前記レジスタに格納されている値の上位7*nビットに対して当該上位7*nビットの上位に0を挿入して生成される9*nビットのデータを下位に連結した第3データとが入力されており、
    前記第3のセレクタには、前記第2のデータと、前記第1のデータの下位9*nビットに対して7*nビットの0を上位に連結した第4のデータとが入力されており、
    前記第4のセレクタには、入力拡大鍵と、16*nビットの0とが入力されており、
    前記第1の排他的論理和演算部は、前記第2のセレクタの出力と前記第3のセレクタの出力とについて排他的論理和を演算して第5のデータを生成し、
    前記第2の排他的論理和演算部は、前記第5のデータと前記第4のセレクタの出力とについて排他的論理和を演算して第6のデータを生成し、前記レジスタに格納し、
    第1のサイクルでは、前記第1のセレクタでは前記第3の入力の上位9*nビットが選択され、前記第2のセレクタでは前記第1のデータが選択され、前記第3のセレクタでは前記第2のデータが選択され、前記第4のセレクタでは、前記入力拡大鍵が選択され、
    第2のサイクルでは、前記第1のセレクタでは前記レジスタに格納されている値の下位9*nビットが選択され、前記第2のセレクタでは前記第3のデータが選択され、前記第3のセレクタでは前記第4のデータが選択され、前記第4のセレクタでは前記16*nビットの0が選択される
    請求項1乃至3のいずれか1つ記載の暗号装置。
  5. 第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算をプロセッサに実行させる暗号プログラムであって、
    入力Zを受け取るステップと、
    9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
    前記読み出し専用メモリに記録されている前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
    前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
    前記読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
    前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
    前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
    を実行させるための暗号プログラム。
  6. 第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算を実行する暗号方法であって、
    入力Zを受け取るステップと、
    9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルとを記録している読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
    前記読み出し専用メモリに記録されている前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
    前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
    前記読み出し専用メモリに記録されている前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
    前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
    前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
    を含み、プロセッサに実行される暗号方法。
  7. 第1の非線形関数S9と第2の非線形関数S7とを含むFI関数に従った演算をプロセッサに実行させる暗号プログラムと、
    9*nビット(nは1以上の整数)の第1の入力Xに対する前記第1の非線形関数S9の第1の出力の下位7*nビットを抽出し、当該第1の出力の下位7*nビットを9*nビット左シフトした値と前記第1の出力との排他的論理和の値を、全ての前記第1の入力Xについて格納した第1の変換テーブルと、
    7*nビットの第2の入力Yに対する前記第2の非線形関数S7の第2の出力と前記第2の入力Yとの排他的論理和の結果を9*nビット左シフトし、当該排他的論理和の結果の9*nビット左シフトした値と前記第2の入力Yとの排他的論理和の値を、全ての前記第2の入力Yについて格納した第2の変換テーブルと、
    を格納しており
    前記暗号プログラムが、
    入力Zを受け取るステップと、
    前記第1の変換テーブルにアクセスして、前記入力Zの上位9*nビットである前記第1の入力Xに該当する第1のデータを読み出すステップと、
    前記第2の変換テーブルにアクセスして、前記入力Zの下位7*nビットである前記第2の入力Yに該当する第2のデータを読み出すステップと、
    前記第1のデータと前記第2のデータの排他的論理和にさらに入力拡大鍵との排他的論理和を算出して第3データを生成又は前記第1のデータと前記入力拡大鍵との排他的論理和にさらに前記第2のデータの排他的論理和を算出して前記第3データを生成するステップと、
    前記第1の変換テーブルにアクセスして、前記第3データの下位9*nビットである前記第1の入力Xに該当する第4のデータを読み出し、前記第4のデータの下位9*nビットを取り出して第5のデータを生成するステップと、
    前記第3のデータの上位7*nビットと、当該第3のデータの上位7*nビットを9*nビット左シフトした値との排他的論理和と等価な第6のデータを生成するステップと、
    前記第5のデータと前記第6のデータとの排他的論理和を算出するステップと、
    をプロセッサに実行させるための暗号プログラム
    であるメモリ。
  8. 前記メモリを有する請求項7記載のプロセッサ。
JP2009225535A 2009-09-29 2009-09-29 暗号装置及び方法 Active JP5387295B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009225535A JP5387295B2 (ja) 2009-09-29 2009-09-29 暗号装置及び方法
US12/892,334 US8634551B2 (en) 2009-09-29 2010-09-28 Cryptographic apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009225535A JP5387295B2 (ja) 2009-09-29 2009-09-29 暗号装置及び方法

Publications (2)

Publication Number Publication Date
JP2011075721A true JP2011075721A (ja) 2011-04-14
JP5387295B2 JP5387295B2 (ja) 2014-01-15

Family

ID=44019794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009225535A Active JP5387295B2 (ja) 2009-09-29 2009-09-29 暗号装置及び方法

Country Status (2)

Country Link
US (1) US8634551B2 (ja)
JP (1) JP5387295B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009090689A1 (ja) * 2008-01-18 2009-07-23 Fujitsu Limited 暗号化装置、暗号化方法及びプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3917357B2 (ja) 2000-10-10 2007-05-23 三菱電機株式会社 非線形変換方法及びプログラムを記録したコンピュータ読み取り可能な記録媒体及び非線形変換装置
US7212631B2 (en) 2001-05-31 2007-05-01 Qualcomm Incorporated Apparatus and method for performing KASUMI ciphering
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 삼성전자주식회사 이동통신시스템에서 최소의 소자를 사용하는 단일라운드의 암호화 장치 및 방법
US20050163313A1 (en) * 2004-01-23 2005-07-28 Roger Maitland Methods and apparatus for parallel implementations of table look-ups and ciphering
US7433469B2 (en) * 2004-04-27 2008-10-07 Intel Corporation Apparatus and method for implementing the KASUMI ciphering process
US7688972B2 (en) * 2004-07-14 2010-03-30 Broadcom Corporation Method and system for implementing FO function in KASUMI algorithm for accelerating cryptography in GSM (global system for mobile communication)GPRS (general packet radio service)edge(enhanced data rate for GSM evolution) compliant handsets
US20060013387A1 (en) * 2004-07-14 2006-01-19 Ruei-Shiang Suen Method and system for implementing KASUMI algorithm for accelerating cryptography in GSM/GPRS/EDGE compliant handsets
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
EP2237245B1 (en) * 2008-01-18 2017-07-19 Fujitsu Limited Processor of data conversion function
US8693681B2 (en) * 2008-12-10 2014-04-08 Texas Instruments Incorporated Kasumi cipher executable instructions and circuitry
JP5200949B2 (ja) * 2009-01-16 2013-06-05 富士通株式会社 暗号処理装置
JP5338327B2 (ja) * 2009-01-16 2013-11-13 富士通株式会社 暗号処理装置
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009090689A1 (ja) * 2008-01-18 2009-07-23 Fujitsu Limited 暗号化装置、暗号化方法及びプログラム

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
CSNG200200079003; 松井 充,中嶋 純子: '"MISTYのソフトウエアによる高速実装法について(III)"' 電子情報通信学会技術研究報告 Vol.100,No.421, 20001106, p.13-21, 社団法人電子情報通信学会 *
JPN6013045181; 和田 智行: '"Misty1暗号回路の設計とハード/ソフト最適分割の検討"' 立命館大学理工学部情報学科 卒業論文 , 200703, p.1-32, [オンライン] *
JPN6013045185; 松井 充,中嶋 純子: '"MISTYのソフトウエアによる高速実装法について(III)"' 電子情報通信学会技術研究報告 Vol.100,No.421, 20001106, p.13-21, 社団法人電子情報通信学会 *
JPN7013003361; 山本 大,矢嶋 純,伊藤 孝一: '"共通鍵ブロック暗号MISTY1の小型ハードウェア実装評価"' 2008年 暗号と情報セキュリティシンポジウム 2C2-1, 20080122, p.1-6, 社団法人電子情報通信学会 *
JPN7013003362; 市川 哲也,加藤 潤二,松井 充: '"秘密鍵暗号MISTY1のH/W実装における一方法"' 1998年暗号と情報セキュリティシンポジウム 9.1.A, 19980128, p.1-6, 電子情報通信学会情報セキュリティ研究専門委員会 *

Also Published As

Publication number Publication date
US20110075837A1 (en) 2011-03-31
US8634551B2 (en) 2014-01-21
JP5387295B2 (ja) 2014-01-15

Similar Documents

Publication Publication Date Title
CN107534549B (zh) 可读存储介质、用于数据流字块加密的方法及系统
US20040120518A1 (en) Matrix multiplication for cryptographic processing
JP2002229445A (ja) べき乗剰余演算器
TWI695292B (zh) 使用訊息盲化的密碼裝置及其密碼處理方法
JP5202350B2 (ja) 暗号処理装置及び暗号処理方法及び暗号処理プログラム
JP2006145852A (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
JP4177526B2 (ja) 乗算剰余演算方法および乗算剰余回路
JP5188414B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP2950485B2 (ja) ストリーム暗号処理装置
CN114826560B (zh) 一种轻量级分组密码cref实现方法及系统
JP5182295B2 (ja) 暗号化装置及び暗号処理方法
JP5387295B2 (ja) 暗号装置及び方法
JP4515716B2 (ja) 拡大鍵生成装置、暗号化装置および暗号化システム
JP5354914B2 (ja) 暗号処理装置及び復号処理装置及びプログラム
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
CN116820397B (zh) 基于CRYSTALS-Kyber的快速数论变换电路
JP2011081594A (ja) データ処理装置及びデータ処理プログラム
JP6973677B1 (ja) 逆数算出方法、装置、およびプログラム
JP3875495B2 (ja) 暗号設計装置、暗号設計プログラム、および記録媒体
JP5179933B2 (ja) データ処理装置
JP2006502437A (ja) 暗号化回路装置及び方法
JPH1078864A (ja) 乱数生成器
US7480380B2 (en) Method for efficient generation of modulo inverse for public key cryptosystems
JP6876423B2 (ja) ストリーム暗号における内部状態の初期化装置、方法及びプログラム
JP2007034212A (ja) ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130923

R150 Certificate of patent or registration of utility model

Ref document number: 5387295

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150