JP2008046151A - 暗号処理方法 - Google Patents

暗号処理方法 Download PDF

Info

Publication number
JP2008046151A
JP2008046151A JP2006218667A JP2006218667A JP2008046151A JP 2008046151 A JP2008046151 A JP 2008046151A JP 2006218667 A JP2006218667 A JP 2006218667A JP 2006218667 A JP2006218667 A JP 2006218667A JP 2008046151 A JP2008046151 A JP 2008046151A
Authority
JP
Japan
Prior art keywords
data
conversion
processing
bits
composite
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.)
Withdrawn
Application number
JP2006218667A
Other languages
English (en)
Inventor
Hidenori Miyata
英紀 宮田
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2006218667A priority Critical patent/JP2008046151A/ja
Publication of JP2008046151A publication Critical patent/JP2008046151A/ja
Withdrawn legal-status Critical Current

Links

Abstract

【課題】 ソフトウェア構成の暗号処理モジュールにおいて、非線形変換手段であるS−BOXの記憶容量を削減してプログラムサイズを低減し、且つ、処理効率の低下を防止することができる暗号処理方法及び暗号処理プログラムを提供する。
【解決手段】 入力データまたは入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、1バイト単位のデータ領域の上位4ビット及び下位4ビットの夫々に置換表の異なる要素の値を記憶した複合置換表を備え、複合置換表を用いて入力データまたは中間データを非線形変換する非線形変換処理を行なう。
【選択図】 図5

Description

本発明は、暗号処理技術に関し、特に、DES(Data Encription Standard)暗号方式等、非線形変換手段S−BOX(substitution box)を用いた共通鍵暗号方式による暗号処理技術に関する。
近年のインターネットの普及等に伴い、機密データの転送要求や蓄積量が増加しており、該機密データに対する安全性確保のために、情報セキュリティ技術が大きく注目されるようになっている。情報セキュリティ技術の一つとして、データの暗号化技術がある。暗号化技術は、情報セキュリティに欠かせない要素技術であることから、多くの暗号方式が提案されており、現在、様々な暗号化技術を用いたデータ通信が実際に行われている。具体的には、例えば、ICカードと、該ICカードに対するデータの読み取り及び書き込みを行なうリーダライタの間で行なわれるデータ通信において、ICカード及びリーダライタにソフトウェアまたはハードウェアで構成された暗号処理モジュールを実装し、送受信データの暗号処理及び復号化処理を行っている。
現在使用されている主な暗号方式には、公開鍵暗号方式と共通鍵暗号方式がある。公開鍵暗号方式は、暗号化を行なう公開鍵と復号化を行なう秘密鍵の2つの鍵を用いる暗号方式であり、暗号化及び復号化に複雑な計算を要するため、その安全性は高いが、処理時間が長い。このため、公開鍵暗号方式では、ハードウェアによる高速化が望ましく、ICカード等のソフトウェアでの実装が必要とされる装置には向いていない。一方、共通鍵暗号方式は、暗号化及び復号化を同じ共通鍵を用いて行なう暗号方式であり、入力データや暗号処理の過程で生成される中間データと鍵との排他的論理和を行う論理演算や非線形変換のためのテーブル参照等、比較的簡素な処理で暗号化できるため、処理時間が短い。具体的には、ソフトウェアにより共通鍵暗号方式を用いて暗号化及び復号化を行なう場合の方が、ハードウェアにより高速化して公開鍵暗号方式を用いて暗号化及び複合化を行なう場合よりも処理時間が短い。このため、処理時間の長い公開鍵暗号方式は、比較的データ量の少ない認証や電子署名に利用され、処理時間の短い共通鍵暗号方式は、大容量データの守秘に利用されることが多い。尚、DES暗号方式等の一部の共通鍵暗号方式は、ハードウェア化が容易になるように設計されているため、ソフトウェアで構成された暗号処理モジュールを実装する場合には、プログラム資源を効率よく利用するための設計を行う必要がある。
ところで、共通鍵暗号方式では、ユーザ間で共有する共通鍵を、入力データや中間データに対し、排他的論理和をとるために用いている。そこで、入出力データ間の相関関係をより複雑にし、暗号解読をより困難にするために、暗号処理中に非線形演算を組み込んでいる。この非線形演算では、例えば、入力されたデータのビット列をランダムに置換するためのS−BOX(substitution box)と称される変換テーブル(置換表に相当)を用いて非線形変換処理を行なう。通常、S−BOXは複数の変換テーブルを備え、夫々の変換テーブルは行列の形をとる。
ここで、従来のソフトウェア構成の暗号処理モジュールを搭載する場合におけるS−BOXを用いた共通鍵暗号方式による暗号処理について説明する。
先ず、従来の暗号処理モジュールのソフトウェア構成について、図1、図3、図4、図10〜図12を基に簡単に説明する。
図1は、暗号処理モジュールの概略構成を示しており、入力データの変換を実行するラウンド関数部100と、ラウンド関数部100の各暗号処理部103で用いる鍵データKを生成する鍵スケジュール部110を備えて構成されている。ラウンド関数部100は、前段の出力データ(中間データ)に対し変換テーブルを用いて暗号処理を行なう暗号処理部103を16段備えて構成されている。ここで、図10は、変換テーブルS、S、・・・、S(mは変換テーブルの総数)を示している。暗号処理部103は、図3に示すように、F関数部201を備えて構成されており、前段からの2つの中間データLn−1、Rn−1と鍵データkを用いて中間データL、Rを生成する。F関数部201は、図4に示すように、S−BOX処理部302を備えて構成されている。S−BOX処理部302では、32ビットの中間データRn−1を48ビットに拡大処理した値R'と鍵データKとの排他的論理輪である48ビットのデータXを非線形変換処理して、32ビットのデータYを生成する。
ここで、図11は、従来のS−BOX処理部302の非線形変換処理の概念を示している。ここでのS−BOX処理部302は、48ビットのデータXを6ビット毎に分割したX1〜X8の夫々に対して非線形変換処理を実行する変換部SB〜SBを備えている。変換部SBは、固有の変換テーブルSを備えており、該変換テーブルSを用いてデータXnに対する非線形変換処理を実行して、4ビットのデータYnを出力する。S−BOX処理部302は、変換部SB〜SBから出力された8つの4ビットのデータY1〜Y8を連接処理して、32ビットのデータYを出力する。変換部SBn,n+1は夫々、図12に示すように、入力された6ビットのデータXnに対し、変換テーブルSを用いて非線形変換処理を実行して4ビットのデータYnを求める。
次に、従来の暗号処理モジュールの非線形変換処理について図13〜図15を基に説明する。ここでは、S−BOX処理部302の処理手順について説明する。
S−BOX処理部302は、図13に示すように、先ず、入力された48ビットのデータXを6ビット毎に分割し、8組のデータX1〜X8を生成する(ステップ#1301)。続いて、S−BOX処理部302の変換部SBが、入力されたデータX1に対し変換テーブルSを用いてS−BOX処理(非線形変換処理)を実行し、データY1を求める(ステップ#1302)。変換部SB〜変換部SBにおいても同様に非線形変換処理を逐次的に実行しデータY2〜Y8を求める。最後に、データY1〜Y8を連接処理して、32ビットのデータYを生成する。ここで、図14は、従来のS−BOX処理部302で使用する変換テーブルの一例として、変換テーブルS及びSを示している。ここで、図中の“0x”は次の文字が16進数を示す表記文字である。各変換テーブルS、Sには夫々4種類の換字表が用意されている。具体的には、データX1のbit0(最下位ビット)及びbit5(最上位ビット)の値に基づいて4種類の換字表の内の1つを選択し、選択した換字表に従ってデータX1の中央の4ビットの値(bit1〜bit4の値)を変換し、変換した値をデータY1として出力する。図15は、変換部SBによるS−BOX処理の処理手順、即ち、変換テーブルSを用いた非線形変換処理の処理手順を示している。
上述した従来のS−BOXを用いた共通鍵暗号方式による暗号処理の例では、ソフトウェア構成の暗号処理モジュールを実装する場合、8つの変換テーブルS〜Sを固定データとして備える必要がある。ここで、S−BOXをソフトウェアで実装する場合、S−BOX内の各変換テーブルの値を記憶する記憶領域は1バイト(8ビット)単位でアドレス分割されているため、1バイトのデータ領域の夫々に対しテーブル内の1つの要素を記憶していた。上記従来例では、S−BOX内には8つの4行16列の変換テーブルがあり、変換テーブル1つのデータ要素数が64(16×4)個であるため、変換テーブル1つのデータ容量は64バイトとなる。そして、変換テーブルは8つあるため、暗号処理モジュール全体で変換テーブルが必要とする記憶容量は512バイトになる。従って、S−BOXをソフトウェアで実装する場合、暗号化プログラム全体のプログラムサイズに対して変換テーブルのコードサイズが占める割合は小さくない。
特に、ICカード等の小型の組み込み型装置では、ソフトウェアはROMや不揮発性メモリ等に格納されるため、コスト等の観点から、プログラムサイズを小さくすることが望ましい。ここで、例えば、ICカードにおいて、32KBの記憶容量を持つ不揮発性メモリが各ソフトウェアのプログラムとそのデータを格納する記憶領域として用意されており、この記憶領域にDES暗号方式による暗号化プログラムを格納する場合は、上述したように暗号化プログラムのS−BOXの変換テーブルだけで0.5KBの記憶領域を占有してしまう。このため、ICカードの他の機能を実現するためのプログラムに割り当てることができる記憶領域が非常に少なくなってしまうという問題があった。
上述したように、ICカード等の小型の組み込み装置において、共通鍵暗号方式の暗号処理モジュールをソフトウェアで実装する場合は、記憶領域の圧迫が問題となる。このため、昨今では、暗号処理モジュールをソフトウェアでなくハードウェアで実装するための様々な暗号化技術が提案されている。例えば、ハードウェア構成の暗号処理モジュールにおいて、データ通信の安全性を高めるために、共通鍵を用いてS−BOXを動的に変更制御する暗号化技術がある(例えば、特許文献1参照)。更に、暗号処理における消費電流(消費電力)を解析する暗号解読に対抗するために、中間データを格納する第1データレジスタと中間データの反転データを格納する第2データレジスタを設け、第1データレジスタに中間データの書き込み処理を行なうと共に第2データレジスタに反転データの書き込み処理を行なう暗号化技術がある(例えば、特許文献2参照)。また、中間データ(非反転データ)を処理する非反転データ用暗号化回路と、反転データを処理する反転データ用暗号化回路を設け、非反転データ及び反転データの何れか一方をランダムに選択し、選択したデータを暗号処理する暗号化技術がある(例えば、特許文献3参照)。
特開2003−323117号公報 特開2005−31471号公報 特開2002−311826号公報
しかしながら、特許文献1〜3に記載の暗号化技術のように、ハードウェア構成の暗号処理モジュールを実装する場合は、ソフトウェア構成の暗号処理モジュールを実装する場合に比べ、設計、開発及び生産にかかるコストが高いという問題がある。更に、暗号処理モジュールに不具合があった場合には、修正を行うことができず、ハードウェアそのものを交換等する必要がある等の問題がある。
本発明は上記の問題に鑑みてなされたものであり、その目的は、ソフトウェア構成の暗号処理モジュールにおいて、非線形変換手段であるS−BOXの記憶容量を削減してプログラムサイズを低減し、且つ、処理効率の低下を防止することができる暗号処理方法を提供する点にある。また、該暗号処理方法を自動的に実行する暗号処理プログラムを提供する点にある。
上記目的を達成するための本発明に係る暗号処理方法は、入力データまたは前記入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、1バイト単位のデータ領域の上位4ビット及び下位4ビットの夫々に前記置換表の異なる要素の値を記憶した複合置換表を備え、前記複合置換表を用いて前記入力データまたは前記中間データを非線形変換する非線形変換処理を行なうことを第1の特徴とする。
上記特徴の本発明に係る暗号処理方法は、前記複合置換表が、前記複数の置換表の内の第1置換表及び第2置換表を多重化して含み、前記第1置換表の各要素の値が個別に前記データ領域夫々の上位4ビットに、前記第2置換表の各要素の値が個別に前記データ領域夫々の下位4ビットに記憶されていることを第2の特徴とする。
上記特徴の本発明に係る暗号処理方法は、前記複合置換表は、前記データ領域の同一のバイト単位内に記憶されている前記第1置換表の要素の位相と前記第2置換表の要素の位相とが同一であることを第3の特徴とする。
上記特徴の本発明に係る暗号処理方法は、前記非線形変換処理は、前記複合置換表から1バイト単位で前記データ領域夫々に記憶された非線形変換用データを読み出し、前記入力データまたは前記中間データを所定数に分割した分割データの内の第1分割データを、下位4ビットをマスク処理した前記非線形変換用データを用いて非線形変換し、前記分割データの内の前記第1分割データに連接される第2分割データを、上位4ビットをマスク処理した前記非線形変換用データを用いて非線形変換することを第4の特徴とする。
上記何れかの特徴の本発明に係る暗号処理方法は、前記第1置換表と前記第2置換表を多重化して前記複合置換表を作成する複合置換表作成工程を実行することを第5の特徴とする。
上記目的を達成するための本発明に係る暗号処理プログラムは、上記第1〜第5の何れかの特徴の暗号処理方法における前記非線形変換処理を、コンピュータ上で実行するプログラムステップを含むことを特徴とする。
上記特徴の本発明によれば、共通鍵暗号方式で用いるS−BOXの各置換表(変換テーブル)の2つの要素の値を夫々、データ領域の上位4ビット及び下位4ビットに記憶した複合置換表(複合変換テーブル)を用いるので、ソフトウェア構成による暗号処理モジュールを実装する場合に、S−BOXの置換表のプログラムサイズを半分にし、S−BOXのプログラムサイズを低減することができる。具体的には、S−BOXでは、通常、変換テーブル内の各要素の値は4ビットで表示可能な値であるが、変換テーブルの各要素を記憶するデータ領域は1バイト単位で定義されることから、該データ領域を上位4ビット及び下位4ビットで分割すれば、変換テーブルの2つの要素を記憶することが可能になる。従って、本発明の如く、データ領域の上位4ビット及び下位4ビットに2つの変換テーブルの要素を記憶することで、S−BOXの置換表のプログラムサイズを半分にし、S−BOXのプログラムサイズを低減することができる。
更に、上記特徴の本発明において、複合置換表を、異なる置換表の2つの要素の値を各データ領域に記憶するように構成し、同一のデータ領域に記憶されている第1置換表の要素の位相と第2置換表の要素の位相とが同一となるように構成すれば、各置換表の要素の位相とデータ領域との相関関係を複雑化することなくS−BOXのプログラムサイズを低減することが可能になる。
また、上記特徴の本発明において、第1分割データを、下位4ビットをマスク処理した複合置換表の各要素のデータを用いて非線形変換し、第2分割データを、上位4ビットをマスク処理した複合置換表の各要素のデータを用いて非線形変換するように構成すれば、非線形変換処理対象の2つのデータに対し、従来技術ではS−BOXによる処理後に必要であった非線形変換後のデータの連接処理を実行する必要がなくなるため、処理効率の低下防止を図ることが可能になる。
以下、本発明に係る暗号処理方法及び暗号処理プログラム(以下、適宜「本発明方法」及び「本発明プログラム」と称する)の実施形態を図面に基づいて説明する。
本発明に係る暗号処理方法及び暗号処理プログラムの実施形態について、図1〜図15を基に説明する。尚、本発明方法及び本発明プログラムは、共通鍵暗号方式により暗号処理を行なうものであり、特に、本実施形態では、1つの共通鍵を基に複数の鍵を生成し、生成した複数の鍵を用いて暗号処理を繰り返し実行する共通鍵ブロック暗号方式の1つであるDES(Data Encryption Standard)暗号方式による暗号処理を実行する。DES暗号方式の暗号処理では、入力データ(平文)から生成された中間データに対する変換関数の適用による暗号処理を繰り返し実行することにより、平文を暗号文に変換する。本実施形態では、暗号化する平文データのサイズが64ビットであり、鍵データのサイズが48ビットである場合を想定して説明する。
先ず、本発明プログラムの基本構成について図1〜図6を基に説明する。本発明プログラムは、図1に示すように、入力データの変換を実行するラウンド関数部100と、ラウンド関数部100の各暗号処理部103(ラウンド)で用いる鍵データKを生成する鍵スケジュール部110を備えて構成されており、これは、従来技術に係る暗号処理モジュールの構成と同じである。
ラウンド関数部100は、平文データの入力を受け付ける入力処理部101、平文データに対する転置処理(文字列の入れ替え処理)を実行すると共に64ビットの平文データを32ビットの中間データL、Rに分割する初期転置処理部102、前段から出力される中間データに対する暗号処理を行なう暗号処理部103、暗号処理部103から出力される中間データに対する転置処理を行なう最終転置処理部104、及び、暗号文データを出力する出力処理部105を備えて構成されている。尚、本実施形態のラウンド関数部100は、16段の暗号処理部103を備え、各段の暗号処理部103は、前段から出力される中間データを、1バイト単位のデータ領域の上位4ビット及び下位4ビットの夫々に変換テーブルの異なる要素の値を記憶した複合変換テーブル(複合置換表に相当)を用いて暗号処理するように構成されている。
本発明で用いる複合変換テーブルは、図10に示す従来の変換テーブルの内、非線形変換後に連接処理される2つの中間データを変換するための2つの変換テーブルを多重化して構成されている。ここで、図2は、本発明で用いる複合変換テーブルS1,2、S3,4、・・・、Sm−1,m(mは多重化前の変換テーブルの総数)を示している。詳細には、多重化の対象となる2つの変換テーブルをS、Sd+1(dはm以下の奇数)とし、テーブルSの各要素の値をa pq(p、qは任意の整数)、テーブルSd+1の各要素の値をad+1 pqとした場合、本発明で用いる複合変換テーブルSd,d+1の各要素の値は、a pqを4つ左シフトさせた値とad+1 pqの論理和(a pq<<4|ad+1 pq)となる。
暗号処理部103は、図3に示すように、F関数部201を備えて構成されており、初期転置処理部102または前段(n−1段)(nは1以上16以下の整数)の暗号処理部103から2つの中間データLn−1、Rn−1を、鍵スケジュール部110から鍵データkを受け取り、中間データRn−1を中間データLとし、中間データRn−1と鍵データkをF関数部201で変換した値と中間データLn−1との排他的論理輪を中間データRとして、中間データL、Rを出力する。尚、暗号処理部103の基本構成は、従来技術に係る暗号処理部103の基本構成と同じである。
F関数部201は、図4に示すように、前段から入力された32ビットの中間データRを48ビットに拡大処理して値R'を生成する拡大転置処理部301、値R’と鍵スケジュール部110から入力される鍵データkとの排他的論理和Xを非線形変換処理して32ビットのデータYを生成するS−BOX処理部302、S−BOX処理部302の出力データYを転置してF関数部201の出力としての32ビットのデータF(R、K)を生成する転置処理部303を備えて構成されており、これは、従来技術に係るF関数部201の基本構成と同じである。
ここで、図5は、S−BOX処理部302の非線形変換処理のデータの流れを示している。S−BOX処理部302は、複合変換テーブルSd,d+1を用いて6ビットのデータを4ビットのデータに変換する非線形変換処理を行なう変換部SBd,d+1を複数備えて構成されている。より詳細には、本実施形態では、入力されるデータXが48ビットであることから、S−BOX処理部302は、4つの変換部SB1,2、SB3,4、SB5,6、SB7,8を備えている。データXを6ビット毎に分割したデータX1〜X8の内、データX1及びX2が変換部SB1,2に、データX3及びX4が変換部SB3,4に、データX5及びX6が変換部SB5,6に、データX7及びX8が変換部SB7,8に夫々入力される。
変換部SBn,n+1は夫々、図6に示すように、複合変換テーブルSn,n+1に基づいて6ビットの2つのデータXn及びXn+1を非線形変換処理して8ビットの2つのデータZn及びZn+1を求める非線形変換処理部801、及び、8ビットの2つのデータZnとデータZn+1を多重化処理して8ビットの変換部SBn,n+1の出力データY(n+1)/2を作成する多重化処理部802を備えて構成されている。非線形変換処理部801は、従来技術と同様に、データXnのbit0及びbit5に基づいて4種類の換字表の内の1つを選択し、選択した換字表に従ってデータXnの中央の4ビットの値(bit1〜bit4の値)を変換し、変換した値をデータZnとして出力する。続いて、非線形変換処理部801は、データXnと同様にして、データXn+1をデータZn+1に変換する。また、本実施形態での多重化処理は論理和演算であり、多重化処理部802は、データZnの上位4ビットが有効であり、データZn+1の下位4ビットが有効であることから、データZnの下位4ビットをマスク処理した値Zn&0xf0と、データZn+1の上位4ビットをマスク処理した値Zn+1&0x0fの論理和をとる。最後に、S−BOX処理部302は、4つの変換部SB1,2、SB3,4、SB5,6、SB7,8が生成した4つの8ビットのデータY1〜Y4を連接処理して、32ビットのデータYを出力する。
鍵スケジュール部110は、鍵データの入力を受け付ける入力処理部111、鍵データを鍵生成部113で処理可能なデータに変換する縮約型転置処理部112、及び、前段から出力される鍵データKを基に新たな鍵データKを作成する鍵生成部113を備えて構成されている。本実施形態の鍵スケジュール部110は、ラウンド関数部100の暗号処理部103夫々に個別の鍵データKを提供するように16段の鍵生成部113を備えて構成されており、鍵生成部113は、前段から出力される鍵データを受けて新たに鍵データを作成するように構成されている。
次に、本発明プログラムにおける本発明方法の処理手順について図7〜図9を基に説明する。
本発明プログラムのラウンド関数部100は、入力処理部101が64ビットの平文データを受け付けると、先ず、初期転置処理部102が、64ビットの平文データを32ビットのデータL、Rに分割し、分割したデータL、Rを第1段暗号処理部103aに入力する。第1段暗号処理部103aは、初期転置処理部102からのデータL、Rに対し、後述する鍵スケジュール部110の第1段鍵生成部113aから入力される48ビットの鍵データKを用いて暗号処理を実行し、暗号処理結果である中間データL、Rを次段の第2段暗号処理部103bに出力する。同様に、第2段〜第15段暗号処理部103は、夫々、前段の中間データLn−1、Rn−1に対し、鍵生成部113から入力される鍵データkを用いて暗号処理を実行し、中間データL、Rを次段の暗号処理部103に出力する。最終段の第16段暗号処理部103cは、第15段暗号処理部103からの中間データL15、R15に対し、第16段鍵生成部113cから入力される鍵データk16を用いて暗号処理を実行し、中間データL16、R16を最終転置処理部104に対して出力する。最終転置処理部104は、中間データL16、R16から暗号文データを生成し、出力処理部105に対して出力する。
より詳細には、暗号処理部103は、図3に示すように、前段(n−1段)の暗号処理部103からの2つの中間データLn−1、Rn−1を受け付けると、中間データRn−1を中間データLとし、中間データRn−1と鍵データkをF関数部201で変換した値と中間データLn−1との排他的論理輪を中間データRとして、中間データL、Rを出力する。F関数部201は、図4に示すように、拡大転置処理部301が、32ビットの中間データRを48ビットに拡大処理して値R'を生成し、S−BOX処理部302が、値R’と鍵データkとの排他的論理和Xを非線形変換処理して32ビットのデータYを生成し、転置処理部303が、データYを転置してデータF(R、K)を生成する。
ここで、図7は、S−BOX処理部302の処理手順を示している。S−BOX処理部302は、先ず、入力された48ビットのデータXを6ビット毎に分割し、8組のデータX1=(x0,x1,x2,x3,x4,x5)、X2=(x6,x7,x8,x9,x10,x11)、・・・、X8=(x42,x43,x44,x45,x46,x47)を生成する(ステップ#601)。
続いて、S−BOX処理部302の変換部SB1,2が、入力されたデータX1及びX2夫々に対し、複合変換テーブルS1,2を用いてS−BOX処理(非線形変換処理)を実行する(ステップ#602)。ここで、図8は、変換部SB1,2で使用する複合変換テーブルS1,2の一例を示している。従来技術の場合と同様に、図中の“0x”は次の文字が16進数を示す表記文字であり、複合変換テーブルS1,2には4種類の換字表が用意されている。より具体的には、複合変換テーブルS1,2は、図14に示す従来技術で用いる変換テーブルS及びSを多重化したものであり、複合変換テーブルS1,2の要素の値は、夫々、上位4ビットの値が変換テーブルSの対応する位相の要素の値であり、下位4ビットの値が変換テーブルSの対応する位相の要素の値となっている。
図9は、変換部SB1,2によるステップ#602におけるS−BOX処理の処理手順、即ち、複合変換テーブルS1,2を用いた非線形変換処理の処理手順を示している。本実施形態の変換部SBn,n+1の非線形変換処理部801は、2つのデータXn及びデータXn+1に対し、1つの複合変換テーブルSn,n+1を用いて非線形変換処理を実行する。変換部SBn,n+1は、図9に示すように、先ず、データXnに対して参照indexを計算し、複合変換テーブルSn,n+1に基づいてデータXnを換字してデータZnを求める。データXnの変換は、従来技術と同様に、データXnのbit0及びbit5に基づいて4種類の換字表の内の1つを選択し、選択した換字表に従ってデータXnの中央の4ビットの値(bit1〜bit4の値)を変換し、変換した値をデータZnとして出力する。続いて、データXnの場合と同様に、データXn+1に対して参照indexを計算し、複合変換テーブルSn,n+1に基づいてデータXn+1を換字してデータZn+1を求める。最後に、変換部SBn,n+1の多重化処理部802は、非線形変換処理部801が生成したデータZnとデータZn+1を多重化処理して変換部SBn,n+1の出力データY(n+1)/2を作成する。多重化処理は、データXnの非線形変換処理結果がデータZnの上位4ビットに対応し、データXn+1の非線形変換処理結果がデータZn+1の下位4ビットに対応することから、データZnの下位4ビットをマスク処理した値Zn&0xf0と、データZn+1の上位4ビットをマスク処理した値Zn+1&0x0fの論理和をとる。更に具体的には、データXnを複合変換テーブルSn,n+1で換字した結果が(a pq|an+1 pq)、データXn+1を複合変換テーブルSn,n+1で換字した結果が(a rs|an+1 rs)(r、sは任意の整数)であるとすると、データY(n+1)/2は、{(a pq|an+1 pq)&0xf0}|{(a rs|an+1 rs)&0x0f}で求めることができる。
尚、本発明プログラム及び本発明方法を適用してソフトウェア構成の暗号処理モジュールを実装する場合、4つの複合変換テーブルS1,2〜S7,8を固定データとして用意すれば良い。従って、本発明プログラム及び本発明方法では、従来技術と同様に、複合変換テーブル1つのデータ要素数が64個であるため、複合変換テーブル1つのデータ容量は64バイトとなるが、複合変換テーブルの数は4つであるため、本発明プログラム全体で複合変換テーブルが必要とする記憶容量は256バイトになる。これは従来技術に係る暗号処理方法の512バイトの半分である。
従来技術に係る暗号処理方法の処理速度と本発明方法の処理速度とを比較する。従来技術に係る暗号処理方法の処理速度及び本発明方法の処理速度は、夫々、連接処理及び多重化処理の処理速度に依存する。従来技術に係る暗号処理方法では、図12及び図13に示すように、プログラム全体で4回のシフト演算と4回の論理和の計算が行なわれる。これに対し、本発明方法では、図6及び図7に示すように、各多重化処理において1回の論理和と2回の論理積が行なわれ、本発明方法全体では、4回の論理和と8回の論理積の計算が行なわれる。つまり、従来技術に係る暗号処理方法の処理時間と本発明方法の処理時間の差は、4回のシフト演算にかかる時間と8回の論理積の計算に係る時間の差となる。シフト演算及び論理積の計算は、共に、電子計算機における基本演算であり、その処理速度は十分に速いため、プログラム全体での処理時間の差は僅かであり、本発明方法を適用することによって処理パフォーマンスが下がることはない。
本発明に係る暗号処理プログラムの概略構成を示す概略ブロック図 本発明に係る暗号処理プログラム及び暗号処理方法で用いる複合変換テーブル(複合置換表)の概略構成を示す表 本発明に係る暗号処理プログラムの暗号処理部の構成例を示す概略構成図 本発明に係る暗号処理プログラムで用いるF関数部の構成例を示す概略構成図 本発明に係る暗号処理プログラムで用いるS−BOX処理部における非線形変換処理の概念を示す概念図 本発明に係る暗号処理プログラムで用いる変換部の構成例を示す概略構成図 本発明に係る暗号処理方法におけるS−BOX処理部の処理手順を示すフローチャート 本発明に係る暗号処理方法で用いる複合変換テーブル(複合置換表)の概略構成を示す表 本発明に係る暗号処理方法における変換部の処理手順を示すフローチャート 従来技術に係る暗号処理プログラム及び暗号処理方法で用いる変換テーブル(置換表)の概略構成を示す表 従来技術に係る暗号処理プログラムで用いるS−BOX処理部における非線形変換処理の概念を示す概念図 従来技術に係る暗号処理プログラムで用いる変換部の構成例を示す概略構成図 従来技術に係る暗号処理方法におけるS−BOX処理部の処理手順を示すフローチャート 従来技術に係る暗号処理方法で用いる変換テーブル(置換表)の概略構成を示す表 従来技術に係る暗号処理方法における変換部の処理手順を示すフローチャート
符号の説明
1: 本発明に係る暗号化プログラム
100: ラウンド関数部
101: 入力処理部
102: 初期転置処理部
103: 暗号処理部
104: 最終転置処理部
105: 出力処理部
110: 鍵スケジュール部
111: 入力処理部
112: 縮約型転置処理部
113: 鍵生成部
201: F関数部
301: 拡大転置処理部
302: S−BOX処理部
303: 転置処理部
801: 非線形変換処理部
802: 多重化処理部
SB: 変換部
S: 変換テーブル

Claims (6)

  1. 入力データまたは前記入力データを基に生成された中間データを非線形に置換するための置換表を複数用いる共通鍵暗号方式による暗号処理方法であって、
    1バイト単位のデータ領域の上位4ビット及び下位4ビットの夫々に前記置換表の異なる要素の値を記憶した複合置換表を備え、前記複合置換表を用いて前記入力データまたは前記中間データを非線形変換する非線形変換処理を行なうことを特徴とする暗号処理方法。
  2. 前記複合置換表は、前記複数の置換表の内の第1置換表及び第2置換表を多重化してなり、前記第1置換表の各要素の値が個別に前記データ領域夫々の上位4ビットに、前記第2置換表の各要素の値が個別に前記データ領域夫々の下位4ビットに記憶されていることを特徴とする請求項1に記載の暗号処理方法。
  3. 前記複合置換表は、前記データ領域の同一のバイト単位内に記憶されている前記第1置換表の要素の位相と前記第2置換表の要素の位相とが同一であることを特徴とする請求項2に記載の暗号処理方法。
  4. 前記非線形変換処理は、前記複合置換表から1バイト単位で前記データ領域夫々に記憶された非線形変換用データを読み出し、
    前記入力データまたは前記中間データを所定数に分割した分割データの内の第1分割データを、下位4ビットをマスク処理した前記非線形変換用データを用いて非線形変換し、
    前記分割データの内の前記第1分割データに連接される第2分割データを、上位4ビットをマスク処理した前記非線形変換用データを用いて非線形変換することを特徴とする請求項3に記載の暗号処理方法。
  5. 前記第1置換表と前記第2置換表を多重化して前記複合置換表を作成する複合置換表作成工程を実行することを特徴とする請求項1〜4の何れか1項に記載の暗号処理方法。
  6. 請求項1〜請求項5の何れか1項に記載の暗号処理方法における前記非線形変換処理を、コンピュータ上で実行するプログラムステップを含むことを特徴とする暗号処理プログラム。
JP2006218667A 2006-08-10 2006-08-10 暗号処理方法 Withdrawn JP2008046151A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006218667A JP2008046151A (ja) 2006-08-10 2006-08-10 暗号処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006218667A JP2008046151A (ja) 2006-08-10 2006-08-10 暗号処理方法

Publications (1)

Publication Number Publication Date
JP2008046151A true JP2008046151A (ja) 2008-02-28

Family

ID=39179988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006218667A Withdrawn JP2008046151A (ja) 2006-08-10 2006-08-10 暗号処理方法

Country Status (1)

Country Link
JP (1) JP2008046151A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2020170316A1 (ja) * 2019-02-18 2021-12-02 学校法人玉川学園 情報処理装置
WO2022269914A1 (ja) * 2021-06-25 2022-12-29 日本電気株式会社 端末装置、暗号化情報変換装置、照合システム、入力情報暗号化方法、暗号化情報変換方法、照合方法、入力情報暗号化プログラム、及び暗号化情報変換プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2020170316A1 (ja) * 2019-02-18 2021-12-02 学校法人玉川学園 情報処理装置
JP7072958B2 (ja) 2019-02-18 2022-05-23 学校法人玉川学園 情報処理装置
WO2022269914A1 (ja) * 2021-06-25 2022-12-29 日本電気株式会社 端末装置、暗号化情報変換装置、照合システム、入力情報暗号化方法、暗号化情報変換方法、照合方法、入力情報暗号化プログラム、及び暗号化情報変換プログラム

Similar Documents

Publication Publication Date Title
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5532560B2 (ja) データ変換装置、およびデータ変換方法、並びにプログラム
DK1686722T3 (en) Block encryption device and block encryption method comprising rotation key programming
US7801307B2 (en) Method of symmetric key data encryption
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
JP2006317802A (ja) 擬似乱数発生システム、暗号化システム及び復号化システム
JP5504592B2 (ja) データ変換装置、およびデータ変換方法、並びにプログラム
JP5652363B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
Paragas et al. Hill cipher modification: A simplified approach
KR100456599B1 (ko) 병렬 디이에스 구조를 갖는 암호 장치
JP2008046151A (ja) 暗号処理方法
JP5113833B2 (ja) 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置
KR100667189B1 (ko) 휴대 기기를 위한 aes 암호화 장치 및 방법
JP6091394B2 (ja) 情報処理装置、暗号化方法
US8843457B2 (en) Data conversion device, data conversion method, and program
JP2007500376A (ja) 鍵拡大機能の低メモリハードウェア実施のための方法および装置
JP5268011B2 (ja) 暗号化システム及び復号化システム
JP4990843B2 (ja) 暗号演算装置、その方法、及びプログラム
JP2011128655A (ja) 擬似乱数発生システム
JP2993487B2 (ja) 情報処理装置、icカード及びコード生成方法
Kumar et al. Cryptompress: A Symmetric Cryptography algorithm to deny Bruteforce Attack
KR20020003579A (ko) 비-병렬 다중 사이클 데이터 암호화 장치 및 방법

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20091110