JP4612501B2 - ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム - Google Patents

ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム Download PDF

Info

Publication number
JP4612501B2
JP4612501B2 JP2005221317A JP2005221317A JP4612501B2 JP 4612501 B2 JP4612501 B2 JP 4612501B2 JP 2005221317 A JP2005221317 A JP 2005221317A JP 2005221317 A JP2005221317 A JP 2005221317A JP 4612501 B2 JP4612501 B2 JP 4612501B2
Authority
JP
Japan
Prior art keywords
data
block
conversion
unit
partial
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
JP2005221317A
Other languages
English (en)
Other versions
JP2007034212A (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2005221317A priority Critical patent/JP4612501B2/ja
Publication of JP2007034212A publication Critical patent/JP2007034212A/ja
Application granted granted Critical
Publication of JP4612501B2 publication Critical patent/JP4612501B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、暗号技術に関し、特にブロック暗号技術に関する。
近年、インターネット等のデジタルネットワークの発達により様々な暗号技術が利用されるようになった。例えば、ブロック暗号は共通鍵暗号方式として広く用いられている暗号方式であり、「ブロック」と呼ばれる固定長のデータを単位として暗号化復号を行うものである(非特許文献1参照)。このブロック暗号の分野では、AES等の固定ブロック長のブロック暗号が比較的簡便に利用可能である。なお、「ブロック長」とは、「ブロック」のビット長を意味する。
岡本龍明、山本博資、「現代暗号」第3刷、産業図書株式会社、2000年1月25日、P6
しかし、従来のAES等の固定ブロック長のブロック暗号では、その固定ブロック長以外の暗号が必要な場合、それとブロック長が異なるブロック暗号を別途用意しなくてはならなかった。
本発明はこのような点に鑑みてなされたものであり、ブロック長の異なる暗号文を容易に生成することを可能にする技術を提供することを目的とする。
上記課題を解決するために、平文データを格納するメモリと、平文データの一部のビット列を第1部分データの初期値として読み込み、当該平文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、鍵データを用いて第1変換データをブロック暗号化したブロック暗号文データを生成するブロック暗号化部と、ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、を有するブロック暗号装置が提供される。
ここで、第1変換部が、第1部分データを用い、これとビット長が異なる第1変換データを生成することとし、第2変換部が、ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成することとした。これにより、取り扱う平文データや暗号文データのブロック長を容易に変更することができる。
また、本発明のブロック暗号装置において好ましくは、第1部分データと第2部分データとを交換し、新たに第1変換部とブロック暗号化部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部を有する。そして、ブロック暗号化部が用いる鍵データは、少なくとも何れかのラウンド処理間で共通である。また、第2変換部は、ブロック暗号文データから切り出した1部のビット列を第2変換データとし、第2変換部がブロック暗号文データから取り出すビット列の位置は、少なくとも何れかのラウンド処理間で相違する。
ここで、第2変換部がブロック暗号文データから取り出すビットの位置を、少なくとも何れかのラウンド処理間で相違させることとした。これにより、ビットの取り出し位置が相違するラウンド処理間で生成された第2部分データの相関をなくすことができる。これにより、暗号の安全性が向上する。
またこれは、このラウンド処理間で使用される鍵データが同じであってもいえることである。すなわちこのラウンド処理間では、鍵データを相違させる処理を行うことなく、生成された第2部分データの相関をなくすことができる。これは、演算量を低く抑えつつ、暗号の安全性を向上させることができることを意味する。
また、本発明のブロック暗号装置において好ましくは、ブロック暗号化部が用いる鍵データは、全てのラウンド処理間で共通であり、第2変換部がブロック暗号文データから切り出すビットの位置は、全てのラウンド処理間で相違する。
これにより、ラウンド処理間で鍵データを相違させるための処理を全く行うことなく、各ラウンド処理によって生成された全ての第2部分データの相関をなくすことができる。これにより、さらに演算量を低く抑え、暗号の安全性を向上させることが可能となる。
また、本発明のブロック暗号装置において好ましくは、ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、ブロック暗号化部は、メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成し、第2変換部は、カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出す。
さらに、本発明のブロック暗号装置において好ましくは、平文データのビット長は、鍵データのビット長よりも短い。
これにより、安全性が高いビット長が長いの鍵データを用い、それよりもビット長が短い平文データを暗号化することができる。
また、上記課題を解決するために、暗号文データを格納するメモリと、暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するブロック復号化部と、ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、を有するブロック復号装置が提供される。
これにより、取り扱う平文データや暗号文データのブロック長を容易に変更することができる。
上述のように、本発明では、取り扱う平文データや暗号文データのブロック長を容易に変更することができる。
また、第2変換部がブロック暗号文データから取り出すビット列の位置を、少なくとも何れかのラウンド処理間で相違させることにより、演算量の増加を抑えつつ、安全性を向上させることができる。
以下、本発明の実施の形態を図面を参照して説明する。
〔第1の実施の形態〕
まず、本発明における第1の実施の形態について説明する。
<ブロック暗号装置の構成>
[ブロック暗号装置のハードウェア構成]
図1は、本形態におけるブロック暗号装置1のハードウェア構成を例示したブロック図である。
図1に例示するように、この例のブロック暗号装置1は、CPU(Central Processing Unit)2、入力部3、補助記憶装置4、RAM(Random Access Memory)5、ROM(Read Only Memory)6、通信部7及びバス8を有している。
この例のCPU12は、制御部2a、演算部2b及びレジスタ2cを有し、レジスタ2cに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、この例の入力部3は、データが入力される入力ポート、キーボード、マウス等であり、送信部7は、インターネット等のネットワークを通じた情報通信を行うNIC(Network Interface Card)、モデム等である。補助記憶装置4は、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、本形態のブロック暗号処理を実行するためのプログラムを格納したプログラム領域4a及び各種データが格納されるデータ領域4bを有している。また、RAM5は、例えば、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、プログラム領域5a及びデータ領域5bを有している。また、この例のバス8は、CPU2、入力部3、補助記憶装置4、RAM5、ROM6及び通信部7を通信可能に接続している。
[ブロック暗号装置のソフトウェア構成]
次に、プログラム領域4a,5aに格納されるブロック暗号装置のプログラムの構成について説明する。
このプログラムは、平文データの1部のビット列を第1部分データの初期値として読み込み、当該平文データの他のビット列を第2部分データの初期値として読み込むためのデータ分割プログラムと、第1部分データを用い、これとビット長が異なる第1変換データを生成するための第1変換プログラムと、鍵データを用いて第1変換データをブロック暗号化したブロック暗号文データを生成するためのブロック暗号化プログラムと、ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成するための第2変換プログラムと、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとするための排他的論理和計算プログラムと、第1部分データと第2部分データとの交換操作を実行するための交換操作プログラムと、第1部分データと第2部分データとを結合して暗号文データを生成するための結合プログラムと、ブロック暗号装置全体を制御するための制御プログラムとを有している。
なお、これらの各プログラムは、単一のプログラム列として構成されていてもよく、また、少なくとも1部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。また、上記のプログラム単体でその機能を実現できるものでもよいし、上記のプログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。
[ハードウェアとソフトウェアとの協働]
この例のCPU2は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置4のプログラム領域4aに格納されている上述のプログラムを、RAM5のプログラム領域5aに書き込む。同様にCPU2は、補助記憶装置4のデータ領域4bに格納されている各種データをRAM5のデータ領域5bに書き込む。さらに、CPU2は、このプログラムや各種データが書き込まれたRAM5上のアドレスをレジスタ2cに格納する。そして、CPU2の制御部2aは、レジスタ2cに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM5上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部2b順次実行させ、その演算結果をレジスタ2cに格納していく。
図2は、このようにCPU2にプログラムが読み込まれることにより構成されるブロック暗号装置1のブロック図の例示である。なおこの図では、制御部80に出入りするデータの流れの記載を省略している。
図2に例示するように、この例のブロック暗号装置1は、データ分割部10、第1変換部20、カウンタ31、ブロック暗号化部32、33、第2変換部40、排他的論理和計算部50、データ操作部60、メモリ70及び制御部80を有している。なお、メモリ70は、領域71〜77を有している。
ここで、メモリ70は、例えば、補助記憶装置4、RAM5、レジスタ2cの何れか或いはこれらを併用した記憶領域に相当する。またこの例のデータ分割部10、第1変換部20、カウンタ31、ブロック暗号化部32、33、第2変換部40、排他的論理和計算部50、データ操作部60及び制御部80は、上述のプログラムが読み込まれたCPU2に相当する。また、メモリ70に格納される各データについては後述する。
<ブロック復号装置の構成>
[ブロック復号装置のハードウェア構成]
図1に例示したブロック暗号装置のハードウェア構成と同様である。
[ブロック復号装置のプログラム構成]
ブロック復号装置のプログラムは、暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むためのデータ分割プログラムと、第1部分データを用い、これとビット長が異なる第1変換データを生成するための第1変換プログラムと、鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するためのブロック復号化プログラムと、ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成するための第2変換プログラムと、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとするための排他的論理和計算プログラムと、第1部分データと第2部分データとの交換操作を実行するための交換操作プログラムと、第1部分データと第2部分データとを結合して平文データを生成するための結合プログラムと、ブロック復号装置全体を制御するための制御プログラムとを有している。
なお、これらの各プログラムは、単一のプログラム列として構成されていてもよく、また、少なくとも1部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。また、上記のプログラム単体でその機能を実現できるものでもよいし、上記のプログラムがさらに他のライブラリ(記載していない)を読み出して各機能を実現するものでもよい。
[ハードウェアとソフトウェアとの協働]
図3は、ブロック暗号装置1と同様に、CPUにプログラムが読み込まれることにより構成されるブロック復号装置200のブロック図の例示である。なおこの図では、制御部280に出入りするデータの流れの記載を省略している。
図3に例示するように、この例のブロック復号装置200は、データ分割部210、第1変換部220、カウンタ231、ブロック暗号化部232、ブロック復号化部233、第2変換部240、排他的論理和計算部250、データ操作部260、メモリ270及び制御部280を有している。なお、メモリ270は、領域271〜277を有している。
ここで、メモリ270は、例えば、補助記憶装置、RAM、レジスタの何れか或いはこれらを併用した記憶領域に相当する。またこの例のデータ分割部210、第1変換部220、カウンタ231、ブロック暗号化部232、ブロック復号化部233、第2変換部240、排他的論理和計算部250、データ操作部260及び制御部280は、上述のプログラムが読み込まれたCPUに相当する。また、メモリ270に格納される各データについては後述する。
<前処理>
次に、ブロック暗号装置1及びブロック復号装置200で実行されるブロック暗号処理及びブロック復号処理の前処理について説明する。
まず、ブロック暗号装置1のメモリ70の領域71にM bitの鍵データ100を格納し、ブロック復号装置200のメモリ270の領域271にM bitの鍵データ300を格納する。鍵データ100,300は、本形態のブロック暗号に用いる共通鍵であり、鍵データ100,300は同じ値を示すデータである。なお、本形態の例では、鍵データ100,300は、ビット長M=128bitのデータである。
また、ブロック暗号装置1のメモリ70の領域72に、2L bitの平文データ110を格納する。なお、この例の平文データ110のビット長は、鍵データ100,300のビット長よりも短い2L=36bitである。
<ブロック暗号処理>
次に、本形態のブロック暗号装置1が実行するブロック暗号処理について説明する。
図4は、本形態のブロック暗号処理を説明するためのフローチャートである。また、図5〜7は、本形態のブロック暗号処理を説明するための図である。以下、これらの図及び図2を用いて、本形態のブロック暗号処理を説明していく。なお、以下の処理は、制御部80(図2)の制御のもと実行される。
本形態のブロック暗号処理は、フェイステル構造を用いた暗号処理である。
まず、カウンタ31がカウント値nを0にリセットする(ステップS1)。なお、カウント値nは、M bit(この例ではM=128bit)の文字列である。
次に、データ分割部10が、メモリ70の領域72に格納された平文データ110の1部のビット列111を第1部分データ121の初期値として読み込んで領域73に格納し、平文データ110の他のビット列112を第2部分データ122の初期値として読み込んで領域74に格納する(ステップS2)。この例では、平文データ110の下位L=16bitを第1部分データ121の初期値として領域73に格納し、平文データ110の上位L=16bitを第2部分データ122の初期値として領域74に格納する。
次に、第1変換部20が、メモリ70の領域73に格納された第1部分データ121を読み込み、これとビット長が異なる第1変換データ130を生成し、メモリ70の領域75に格納する(ステップS3)。この例では、パディングによって、ビット長L=16bitの第1部分データ121を、鍵データ100とビット長が等しいビット長M=128bitの第1変換データ130に変換する。なお、パディングとは、以下の処理のことである。
[パディング(図6(a))]
入力:L bit文字列
出力:M bit文字列(但しL<M)
処理:ある固有のM bit文字列の、入力の値に依存しないある特定のL bitを、入力のL bit文字列に置き換えて出力する。
例えば、図6(a)の例は、M=128、L=16とし、全てのビットが0であるM bit文字列の先頭L bitを、入力のL bit文字列に置き換えて出力する「パディング」である([パディング]の説明終わり)。
次に、ブロック暗号化部32が、メモリ70の領域71からM(この例では128)bitの鍵データ(K)100を読み込む。そして、ブロック暗号化部32が、カウンタ31から出力されたM(この例では128)bitのカウント値nを、この鍵データ(K)100でブロック暗号化して、M(この例では128)bitの鍵データKを生成する(ステップS4a)。
次に、ブロック暗号化部33が、メモリ70の領域75からM(この例では128)bitの第1変換データ130を読み込む。そして、ブロック暗号化部33は、ブロック暗号化部32が生成した鍵データK(この例ではM=128bit)を用い、この第1変換データ130をブロック暗号化したブロック暗号文データ(C)140(この例ではM=128bit)を生成する(ステップS4b)。ブロック暗号化部33は、生成したブロック暗号文データ(C)140をメモリ70の領域76に格納する。なお、ブロック暗号化とは、以下の処理のことである。
[ブロック暗号化(図7(a))]
入力:平文データ(α bit文字列),鍵データ(β bit文字列)
出力:暗号文データ(γ bit文字列)
処理:鍵データと平文データとより、ブロック暗号を用いて暗号文データを求め出力する。
例えば、図7(a)は、α=β=γ=128の場合の例である。また、ブロック暗号の例としては、例えばAES仕様暗号等を例示できる([ブロック暗号化]の説明終わり)。
次に、第2変換部40が、メモリ70の領域76からブロック暗号文データ(C)140を読み込み、このブロック暗号文データ(C)140を用い、第2部分データ122にビット長が等しい第2変換データ150を生成する(ステップS5)。第2変換部40は、生成した第2変換データ150をメモリ70の領域77に格納する。本形態の例では、M=128bitのブロック暗号文データ(C)140から切り出した1部(L=16bit)のビット列を第2変換データ150とする。なお、切り出しとは、以下の処理のことである。
[切り出し(図6(b))]
入力:M bit文字列
出力:L bit文字列(但しL<M)
処理:入力の値に依存せず、入力から特定のL bitを取り出して出力する。
例えば、図6(b)の例は、M=128,L=16とし、入力のM bit文字列の先頭L bitを出力する「切り出し」の例である([切り出し]の説明終わり)。
次に、排他的論理和計算部50が、メモリ70の領域74から第2部分データ122を読み込み、領域77から第2変換データ150を読み込む。そして、排他的論理和計算部50は、読み込んだ第2部分データ(この例ではL=16bit)と第2変換データ(この例ではL=16bit)との排他的論理和を計算し、その計算結果を新たな第2部分データ122として、メモリ70の領域74に上書き保存する(ステップS6)。なお、排他的論理和とは、以下の処理のことである。
[排他的論理和(図7(b))]
入力:入力1(L bit文字列),入力2(L bit文字列)
出力:出力(L bit文字列)
処理:入力1と入力2の対応する各ビットに対して次の審理値表に従って出力の各ビットを決定する。
排他的論理和の審理値表
入力1 入力2 出力
0 0 0
0 1 1
1 0 1
1 1 0
なお、図7(b)はL=16の例である([排他的論理和]の説明終わり)。
次に、カウンタ31が、カウント値nをカウントアップする。すなわち、カウンタ31が、n+1を新たなカウント値nとする(ステップS7)。次に、制御部80が、カウンタ31のカウント値nが段数wであるか否かを判断する(ステップS8)。なお、段数wは予め設定された値である。
ここで、n=wでなければ、制御部80は、データ操作部60に交換操作の指示を与え、これを受けたデータ操作部60は、メモリ70の領域73,74にそれぞれ格納された第1部分データ121と第2部分データ122とを交換する(ステップS9)。すなわち、データ操作部60は、ステップS3で使用された第1部分データ121(この例ではL=16bit)を新たな第2部分データ122として領域74に格納し、ステップS6で使用された第2部分データ122(この例ではL=16bit)を新たな第1部分データ121として領域73に格納する(図7(c))。そして、制御部80は、処理をステップS3に戻し、新たにステップS3〜S8の処理(ラウンド処理)を実行させる。
一方、ステップS8でn=wであると判断された場合、データ操作部60は、メモリ70の領域73,74から、それぞれ第1部分データ121及び第2部分データ122を読み込む。そして、データ操作部60は、読み込んだ第1部分データ121と第2部分データ122とを結合したものを暗号文データ170として出力する(ステップS10)。この例の場合、L=16bitの第1部分データ121を暗号文データ170の下位16bitとし、第2部分データ122を暗号文データ170の上位16bitとする。
このように生成された暗号文データ170は、例えば、通信部7からネットワークを通じてブロック復号装置200に送信される。ブロック復号装置200は、これを暗号文データ310として、メモリ270の領域272に格納する。
<ブロック復号処理>
次に、本形態のブロック復号装置200が実行するブロック復号処理について説明する。
図8は、本形態のブロック復号処理を説明するためのフローチャートである。また、図9及び10は、本形態のブロック復号処理を説明するための図である。以下、これらの図及び図3を用いて、本形態のブロック復号処理を説明していく。なお、以下の処理は、制御部280(図3)の制御のもと実行される。
本形態のブロック復号処理は、フェイステル構造を用いた復号処理である。
まず、カウンタ231がカウント値nを段数wにリセットする(ステップS21)。なお、段数wは予め設定された値であり、ブロック暗号装置1で用いたwと同じ値である。
次に、データ分割部210が、メモリ270の領域272に格納された暗号文データ310の1部のビット列311を第1部分データ321の初期値として読み込んで領域273に格納し、暗号文データ310の他のビット列312を第2部分データ322の初期値として読み込んで領域274に格納する(ステップS22)。この例では、暗号文データ310の下位L=16bitを第1部分データ321の初期値として領域273に格納し、暗号文データ310の上位L=16bitを第2部分データ322の初期値として領域274に格納する。
次に、第1変換部220が、メモリ270の領域273に格納された第1部分データ321を読み込み、これとビット長が異なる第1変換データ330を生成し、メモリ270の領域275に格納する(ステップS23)。この例では、パディングによって、ビット長L=16bitの第1部分データ321を、鍵データ300とビット長が等しいビット長M=128bitの第1変換データ330に変換する。
次に、ブロック暗号化部232が、メモリ270の領域271からM(この例では128)bitの鍵データ(K)300を読み込む。そして、ブロック暗号化部232が、カウンタ231から出力されたM(この例では128)bitのカウント値nを、この鍵データ(K)300でブロック暗号化して、M(この例では128)bitの鍵データKを生成する(ステップS24a)。
次に、ブロック復号化部233が、メモリ270の領域275からM(この例では128)bitの第1変換データ330を読み込む。そして、ブロック復号化部233は、ブロック暗号化部232が生成した鍵データK(この例ではM=128bit)を用い、この第1変換データ330をブロック復号化したブロック復号文データ(D)340(この例ではM=128bit)を生成する(ステップS24b)。ブロック復号化部233は、生成したブロック復号文データ(D)340をメモリ270の領域276に格納する。なお、ブロック復号化とは、以下の処理のことである。
[ブロック復号化(図10)]
入力:暗号文データ(α bit文字列),鍵データ(β bit文字列)
出力:復号文データ(γ bit文字列)
処理:鍵データと暗号文データとを用い、ブロック復号により復号文データを求めて出力する。
例えば、図10は、α=β=γ=128の場合の例である。また、ブロック復号の方式は、前述のブロック暗号装置1で行われるブロック暗号の方式に対応したものである([ブロック復号化]の説明終わり)。
次に、第2変換部240が、メモリ270の領域276からブロック復号文データ(D)340を読み込み、このブロック復号文データ(D)340を用い、第2部分データ322にビット長が等しい第2変換データ350を生成する(ステップS25)。第2変換部240は、生成した第2変換データ350をメモリ270の領域277に格納する。本形態の例では、M=128bitのブロック復号文データ(D)340から切り出した1部(L=16bit)のビット列を第2変換データ350とする。
次に、排他的論理和計算部250が、メモリ270の領域274から第2部分データ322を読み込み、領域277から第2変換データ350を読み込む。そして、排他的論理和計算部250は、読み込んだ第2部分データ(この例ではL=16bit)と第2変換データ(この例ではL=16bit)との排他的論理和を計算し、その計算結果を新たな第2部分データ322として、メモリ270の領域274に上書き保存する(ステップS26)。
次に、カウンタ231が、カウント値nをカウントダウンする。すなわち、カウンタ231が、n−1を新たなカウント値nとする(ステップS27)。次に、制御部280が、カウンタ231のカウント値nが0であるか否かを判断する(ステップS28)。
ここで、n=0でなければ、制御部280は、データ操作部260に交換操作の指示を与え、これを受けたデータ操作部260は、メモリ270の領域273,274にそれぞれ格納された第1部分データ321と第2部分データ322とを交換する(ステップS29)。すなわち、データ操作部260は、ステップS23で使用された第1部分データ321(この例ではL=16bit)を新たな第2部分データ322として領域274に格納し、ステップS26で使用された第2部分データ322(この例ではL=16bit)を新たな第1部分データ321として領域273に格納する(図7(c))。そして、制御部280は、処理をステップS23に戻し、新たにステップS23〜S28の処理(ラウンド処理)を実行させる。
一方、ステップS28でn=0であると判断された場合、データ操作部260は、メモリ270の領域273,274から、それぞれ第1部分データ321及び第2部分データ322を読み込む。そして、データ操作部260は、読み込んだ第1部分データ321と第2部分データ322とを結合したものを平文データ370として出力する(ステップS30)。この例の場合、第1部分データ321を平文データ370の下位16bitとし、第2部分データ322を平文データ370の上位16bitとする。
<本形態の特徴>
以上のように、本形態のブロック暗号装置1では、第1変換部20が、第1部分データ121をブロック暗号化部33でのブロック暗号処理に適したビット長に変換し、第2変換部40が、ブロック暗号化部33で生成されたブロック暗号文データ140を第2部分データ122と同じビット長の第2変換データ150に変換している。同様に、本形態のブロック復号装置200では、第1変換部220が、第1部分データ321をブロック復号化部233でのブロック復号処理に適したビット長に変換し、第2変換部240が、ブロック復号化部233で生成されたブロック復号文データ340を第2部分データ322と同じビット長の第2変換データ350に変換している。これにより、ブロック暗号化部33やブロック復号化部233の構造を変えるといった煩雑な手法をとることなく、取り扱う平文データや暗号文データのブロック長を容易に変更することができる。
また、取り扱う平文データや暗号文データのブロック長が変わってもブロック暗号処理に用いる鍵データのビット長は同じである。そのため、暗号の安全性を落とすことなく、平文データや暗号文データのブロック長を短くすることができる。
また、文献「Lars R. Knudsen The Security of Feistel Ciphers with Six Round or Less, "Journal of Cryptology: the journal of the International Association for Cryptologic Research," volumes 15 number 3 207-222」には、ラウンド関数及び副鍵生成に理想的な「ランダム関数」或いは「ランダム置換」を用いた際のフェイステル構造の安全性について記述されている。本形態は、「ランダム関数」や「ランダム置換」ではなく、ラウンド処理ごとに秘密の鍵データKを変化させるブロック暗号である。しかし、ラウンド処理ごとに秘密の鍵データKを変化させて各ラウンド処理で実行されるブロック暗号処理の相関を絶ったブロック暗号は、安全性の面で「ランダム関数」や「ランダム置換」と区別できないと仮定できる。よって、本形態のブロック暗号は安全であるといえる。
〔第2の実施の形態〕
次に、本形態の第2の実施の形態について説明する。
本形態は第1の実施の形態の変形例である。第1の実施の形態では、ラウンド処理ごとに鍵データを変化させて安全性を確保していたのに対し、本形態では、ラウンド処理ごとに第2変換部が第2変換データの生成方法を変化させて安全性を確保する。すなわち、本形態では、第2変換データとして使用するビット列のアドレスをラウンド処理ごとに変化させ、これによってラウンド処理間で相関を持たない関数の列を生成する。また、本形態ではブロック暗号やブロック復号に使用する鍵データは各ラウンド処理を通じて一種類のみである。これにより、何度も行われるブロック暗号化の処理を効率化する。
以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する事項については説明を省略する。
<ブロック暗号装置の構成>
[ブロック暗号装置のハードウェア構成]
第1の実施の形態と同様である。
[ブロック暗号装置のソフトウェア構成]
第1の実施の形態との相違点は、ブロック暗号化プログラムが、ラウンド処理ごとに鍵データを変更することなくブロック暗号化を行うためのものである点、及び、第2変換プログラムが、ラウンド処理ごとに異なる生成方法により第2変換データを生成するためのものである点である。
[ハードウェアとソフトウェアとの協働]
図11は、第1の実施の形態と同様にCPUにプログラムが読み込まれることにより構成される、本形態のブロック暗号装置500のブロック図の例示である。なおこの図において、第1の実施の形態と共通する部分には同じ符号を付している。
第1の実施の形態との相違点は、ラウンド処理ごとに鍵データを変換させるブロック暗号化部32が存在しない点、カウンタ31の代わりにカウンタ531が設けられている点、及び、第2変換部40の代わりに第2変換部540が設けられている点である。
<ブロック復号装置の構成>
[ブロック復号装置のハードウェア構成]
図1に例示したブロック暗号装置のハードウェア構成と同様である。
[ブロック復号装置のプログラム構成]
第1の実施の形態との相違点は、ブロック復号化プログラムが、ラウンド処理ごとに鍵データを変更することなくブロック復号化を行うためのものである点、及び、第2変換プログラムが、ラウンド処理ごとに異なる生成方法により第2変換データを生成するためのものである点である。
[ハードウェアとソフトウェアとの協働]
図12は、第1の実施の形態と同様にCPUにプログラムが読み込まれることにより構成される、ブロック復号装置600のブロック図の例示である。なおこの図において、第1の実施の形態と共通する部分には同じ符号を付している。
第1の実施の形態との相違点は、ラウンド処理ごとに鍵データを変換させるブロック暗号化部232が存在しない点、カウンタ231の代わりにカウンタ631が設けられている点、及び、第2変換部240の代わりに第2変換部640が設けられている点である。
<前処理>
第1の実施の形態と同じである。
<ブロック暗号処理>
次に、本形態のブロック暗号装置1が実行するブロック暗号処理について説明する。
図13は、本形態のブロック暗号処理を説明するためのフローチャートである。また、図14,15は、本形態のブロック暗号処理を説明するための図である。以下、これらの図及び図11を用いて、本形態のブロック暗号処理を説明していく。なお、以下の処理は、制御部80(図11)の制御のもと実行される。
本形態のブロック暗号処理も、フェイステル構造を用いた暗号処理である。
まず、カウンタ531がカウント値nを0にリセットする(ステップS41)。
次に、データ分割部10が、メモリ70の領域72に格納された平文データ110の1部のビット列111を第1部分データ121の初期値として読み込んで領域73に格納し、平文データ110の他のビット列112を第2部分データ122の初期値として読み込んで領域74に格納する(ステップS42)。この例では、平文データ110の下位L=16bitを第1部分データ121の初期値として領域73に格納し、平文データ110の上位L=16bitを第2部分データ122の初期値として領域74に格納する。
次に、第1変換部20が、メモリ70の領域73に格納された第1部分データ121を読み込み、これとビット長が異なる第1変換データ130を生成し、メモリ70の領域75に格納する(ステップS43)。この例では、パディングによって、ビット長L=16bitの第1部分データ121を、鍵データ100とビット長が等しいビット長M=128bitの第1変換データ130に変換する。
次に、ブロック暗号化部33が、メモリ70の領域75から第1変換データ130を読み込み、領域71からM(この例では128)bitの鍵データ(K)100を読み込む。そして、ブロック暗号化部33は、この鍵データ(K)100を用い、この第1変換データ130をブロック暗号化したブロック暗号文データ(C)140(この例ではM=128bit)を生成する(ステップS44)。
次に、第2変換部540が、メモリ70の領域76からブロック暗号文データ(C)140を読み込み、カウンタ531からカウント値nを読み込む。そして、第2変換部540は、このブロック暗号文データ(C)140とカウント値nとを用い、第2部分データ122にビット長が等しい第2変換データ150を生成する(ステップS45)。第2変換部540は、生成した第2変換データ150をメモリ70の領域77に格納する。本形態の例では、M=128bitのブロック暗号文データ(C)140から切り出した1部(L=16bit)のビット列を第2変換データ150とする。そして、この第2変換部540がブロック暗号文データ(C)140から取り出すビット列の位置(アドレス)は、カウント値nに依存する(アドレス付切り出し)。この「アドレス付切り出し」を以下に説明する。
[アドレス付切り出し(図15)]
入力:M bit文字列、カウント値(アドレス)n(但し0≦n≦w)
出力:L bit文字列(但しwL<M)
処理:入力のカウント値nの値のみに依存して、入力のM bit文字列から特定のL bitを出力する。なお、この例では、n≠n’のとき、カウント値nに関するどの特定のL bitもカウント値n’に関するどの特定のL bitと一致しない。
例えば、図15の例は、M=128,L=16とし、入力のM bit文字列の先頭nL bit目からL bitを出力する「アドレス付切り出し」である。また、図15の例では0<w≦8となる([アドレス付切り出し]の説明終わり)。
次に、排他的論理和計算部50が、メモリ70の領域74から第2部分データ122を読み込み、領域77から第2変換データ150を読み込む。そして、排他的論理和計算部50は、読み込んだ第2部分データ(この例ではL=16bit)と第2変換データ(この例ではL=16bit)との排他的論理和を計算し、その計算結果を新たな第2部分データ122として、メモリ70の領域74に上書き保存する(ステップS46)。
次に、カウンタ531が、カウント値nをカウントアップする。すなわち、カウンタ31が、n+1を新たなカウント値nとする(ステップS47)。次に、制御部80が、カウンタ31のカウント値nが段数wであるか否かを判断する(ステップS48)。なお、段数wは予め設定された値である。
ここで、n=wでなければ、制御部80は、データ操作部60に交換操作の指示を与え、これを受けたデータ操作部60は、メモリ70の領域73,74にそれぞれ格納された第1部分データ121と第2部分データ122とを交換する(ステップS49)。すなわち、データ操作部60は、ステップS43で使用された第1部分データ121(この例ではL=16bit)を新たな第2部分データ122として領域74に格納し、ステップ4S6で使用された第2部分データ122(この例ではL=16bit)を新たな第1部分データ121として領域73に格納する(図7(c))。そして、制御部80は、処理をステップS43に戻し、新たにステップS43〜S48の処理(ラウンド処理)を実行させる。
一方、ステップS48でn=wであると判断された場合、データ操作部60は、メモリ70の領域73,74から、それぞれ第1部分データ121及び第2部分データ122を読み込む。そして、データ操作部60は、読み込んだ第1部分データ121と第2部分データ122とを結合したものを暗号文データ170として出力する(ステップS50)。この例の場合、L=16bitの第1部分データ121を暗号文データ170の下位16bitとし、第2部分データ122を暗号文データ170の上位16bitとする。
このように生成された暗号文データ170は、例えば、通信部7からネットワークを通じてブロック復号装置600に送信される。ブロック復号装置600は、これを暗号文データ310として、メモリ270の領域272に格納する。
<ブロック復号処理>
次に、本形態のブロック復号装置600が実行するブロック復号処理について説明する。
図16は、本形態のブロック復号処理を説明するためのフローチャートである。また、図17は、本形態のブロック復号処理を説明するための図である。以下、これらの図及び図12を用いて、本形態のブロック復号処理を説明していく。なお、以下の処理は、制御部280(図12)の制御のもと実行される。
本形態のブロック復号処理は、フェイステル構造を用いた復号処理である。
まず、カウンタ631がカウント値nを段数wにリセットする(ステップS61)。なお、段数wは予め設定された値である。
次に、データ分割部210が、メモリ270の領域272に格納された暗号文データ310の1部のビット列311を第1部分データ321の初期値として読み込んで領域273に格納し、暗号文データ310の他のビット列312を第2部分データ322の初期値として読み込んで領域274に格納する(ステップS62)。この例では、暗号文データ310の下位L=16bitを第1部分データ321の初期値として領域273に格納し、暗号文データ310の上位L=16bitを第2部分データ322の初期値として領域274に格納する。
次に、第1変換部220が、メモリ270の領域273に格納された第1部分データ321を読み込み、これとビット長が異なる第1変換データ330を生成し、メモリ270の領域275に格納する(ステップS63)。この例では、パディングによって、ビット長L=16bitの第1部分データ321を、鍵データ300とビット長が等しいビット長M=128bitの第1変換データ330に変換する。
次に、ブロック復号化部233が、メモリ270の領域275から第1変換データ330を読み込み、領域271からM(この例では128)bitの鍵データ(K)300を読み込む。そして、ブロック復号化部233は、この鍵データ(K)300を用い、第1変換データ330をブロック復号化したブロック復号文データ(D)340(この例ではM=128bit)を生成する(ステップS64)。
次に、第2変換部640が、メモリ270の領域276からブロック復号文データ(D)340を読み込み、カウンタ631からカウント値nを読み込む。そして、第2変換部640は、このブロック復号文データ(D)340とカウント値nとを用い、第2部分データ322にビット長が等しい第2変換データ350を生成する(ステップS65)。第2変換部640は、生成した第2変換データ350をメモリ270の領域277に格納する。本形態の例では、M=128bitのブロック復号文データ(D)140から切り出した1部(L=16bit)のビット列を第2変換データ350とする。そして、この第2変換部640がブロック復号文データ(D)340から取り出すビット列の位置(アドレス)はカウント値nに依存する。また、このビット列の切り出し位置とカウント値nとの関係は、ブロック暗号装置500の第2変換部540のものと同じである。
次に、排他的論理和計算部250が、メモリ270の領域274から第2部分データ322を読み込み、領域277から第2変換データ350を読み込む。そして、排他的論理和計算部250は、読み込んだ第2部分データ(この例ではL=16bit)と第2変換データ(この例ではL=16bit)との排他的論理和を計算し、その計算結果を新たな第2部分データ322として、メモリ270の領域274に上書き保存する(ステップS66)。
次に、カウンタ631が、カウント値nをカウントダウンする。すなわち、カウンタ631が、n−1を新たなカウント値nとする(ステップS67)。次に、制御部280が、カウンタ631のカウント値nが0であるか否かを判断する(ステップS68)。
ここで、n=0でなければ、制御部280は、データ操作部260に交換操作の指示を与え、これを受けたデータ操作部260は、メモリ270の領域273,274にそれぞれ格納された第1部分データ321と第2部分データ322とを交換する(ステップS69)。そして、制御部280は、処理をステップS63に戻し、新たにステップS63〜S68の処理(ラウンド処理)を実行させる。
一方、ステップS68でn=0であると判断された場合、データ操作部260は、メモリ270の領域273,274から、それぞれ第1部分データ321及び第2部分データ322を読み込む。そして、データ操作部260は、読み込んだ第1部分データ321と第2部分データ322とを結合したものを平文データ370として出力する(ステップS70)。この例の場合、第1部分データ321を平文データ370の下位16bitとし、第2部分データ322を平文データ370の上位16bitとする。
<本形態の特徴>
以上のように、本形態のブロック暗号装置500は、ラウンド処理ごとに異なるカウント値を出力するカウンタ531を有する。そして、そのブロック暗号化部33は、メモリ70に格納された1つの鍵データ100を全てのラウンド処理での暗号鍵としてブロック暗号文データを生成し、第2変換部540は、カウンタ531から出力されたカウント値nのL倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出す。これにより、ブロック暗号化部33が用いる鍵データ100は、全てのラウンド処理間で共通となり、第2変換部540がブロック暗号文データ140から切り出すビットの位置は、全てのラウンド処理間で相違する。この場合も各ラウンド処理で実行されるブロック暗号処理が相関を持たないものとなり、第1の実施の形態で述べたような安全性を確保できる。そして、第1の実施の形態と異なり、本形態では全てのラウンド処理で同じ鍵データ100を用いるため、第1の実施の形態のように、ラウンド処理ごとに鍵データを生成するためのブロック暗号化処理を必要としない。これにより、ブロック暗号化の処理を効率化することができる。例えば、フェイステルの段数をwとしたとき、第1の実施の形態では2n回のブロック暗号呼び出しが必要であったが、本形態ではn回のブロック暗号呼び出しで済む。すなわち、第1の実施の形態に比べ、約2倍の高速化を達成できる。特に、第1の実施の形態において、ブロック暗号化部32がブロック暗号化部33に比べて十分重いブロック暗号処理を行っていた場合、本形態の構成により、第1の実施の形態に比べて約n倍の高速化が達成できる。これらの点はブロック復号装置600についても同様である。
その他、本形態の構成により、第1の実施の形態と同様、取り扱う平文データや暗号文データのブロック長を容易に変更することができる、暗号の安全性を落とすことなく、平文データや暗号文データのブロック長を短くすることができる、といった効果も有する。
〔変形例等〕
なお、本発明は上述の各実施の形態に限定されるものではない。例えば、第1の実施の形態と第2の実施の形態とを混合し、あるラウンド処理では第1の実施の形態の構成をとり、他のラウンド処理では第2の実施の形態の構成をとることとしてもよい。
また、上述の各実施の形態では、第1変換部がパディングによって第1変換データを生成する例を示したが、ハッシュ関数等その他の手段により第1変換データを生成してもよい。
さらに、データ分割部が平文データや暗号文データから分割する第1部分データや第2部分データのビット位置は、上述のものに限定されない。例えば、連続的なビット列ではなく、平文データ等から離散した位置のビットを抽出し、これを第1部分データ等としてもよい。
また、第2変換部がブロック暗号文データやブロック復号文データから切り出すビット位置は上述したものに限定されず、その他の位置を切り出すこととしてもよい。
また、第2の実施の形態の変形として、ブロック暗号化部が用いる鍵データを何れか1部のラウンド処理間で共通とし、第2変換部がブロック暗号文データから取り出すビット列の位置を何れかの1部のラウンド処理間で相違することとしてもよい。
その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力或いは必要に応じて並列的に或いは個別に実行されてもよい。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも1部をハードウェア的に実現することとしてもよい。
本発明の利用分野としては、例えば、インターネット上のデータ通信の秘匿化等を例示できる。
図1は、第1の実施の形態におけるブロック暗号装置のハードウェア構成を例示したブロック図である。 図2は、第1の実施の形態におけるブロック暗号装置のブロック図の例示である。 図3は、第1の実施の形態におけるブロック復号装置のブロック図の例示である。 図4は、第1の実施の形態のブロック暗号処理を説明するためのフローチャートである。 図5は、第1の実施の形態のブロック暗号処理を説明するための図である。 図6は、第1の実施の形態のブロック暗号処理を説明するための図である。 図7は、第1の実施の形態のブロック暗号処理を説明するための図である。 図8は、第1の実施の形態のブロック復号処理を説明するためのフローチャートである。 図9は、第1の実施の形態のブロック復号処理を説明するための図である。 図10は、第1の実施の形態のブロック復号処理を説明するための図である。 図11は、第2の実施の形態のブロック暗号装置のブロック図の例示である。 図12は、第2の実施の形態のブロック復号装置のブロック図の例示である。 図13は、第2の実施の形態のブロック暗号処理を説明するためのフローチャートである。 図14は、第2の実施の形態のブロック暗号処理を説明するための図である。 図15は、第2の実施の形態のブロック暗号処理を説明するための図である。 図16は、第2の実施の形態のブロック復号処理を説明するためのフローチャートである。 図17は、第2の実施の形態のブロック復号処理を説明するための図である。
符号の説明
1,500 ブロック暗号装置
200,600 ブロック復号装置

Claims (18)

  1. 平文データをブロック暗号化するブロック暗号装置であって、
    上記平文データを格納するメモリと、
    上記平文データの一部のビット列を第1部分データの初期値として読み込み、当該平文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、
    第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、
    上記鍵データを用いて上記第1変換データをブロック暗号化したブロック暗号文データを生成するブロック暗号化部と、
    上記ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、
    第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、
    第1部分データと第2部分データとを交換し、新たに第1変換部とブロック暗号化部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部とを有し、
    上記ブロック暗号化部が用いる鍵データは、
    少なくとも何れかのラウンド処理間で共通であり、
    上記第2変換部は、
    ブロック暗号文データから切り出した1部のビット列を第2変換データとし、
    上記第2変換部がブロック暗号文データから取り出すビットの位置は、
    少なくとも何れかのラウンド処理間で相違する、
    ことを特徴とするブロック暗号装置。
  2. 請求項に記載のブロック暗号装置であって、
    上記ブロック暗号化部が用いる鍵データは、
    全てのラウンド処理間で共通であり、
    上記第2変換部がブロック暗号文データから切り出すビットの位置は、
    全てのラウンド処理間で相違する、
    ことを特徴とするブロック暗号装置。
  3. 請求項に記載のブロック暗号装置であって、
    ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
    上記ブロック暗号化部は、
    メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成し、
    上記第2変換部は、
    上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出す、
    ことを特徴とするブロック暗号装置。
  4. 請求項1からのいずれかに記載のブロック暗号装置であって、
    平文データのビット長は、鍵データのビット長よりも短い、
    ことを特徴とするブロック暗号装置。
  5. 暗号文データをブロック復号化するブロック復号装置であって、
    暗号文データを格納するメモリと、
    暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、
    第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、
    鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するブロック復号化部と、
    ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、
    第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、
    第1部分データと第2部分データとを交換し、新たに第1変換部とブロック復号部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部とを有し、
    上記ブロック復号部が用いる鍵データは、
    少なくとも何れかのラウンド処理間で共通であり、
    上記第2変換部は、
    ブロック復号文データから切り出した1部のビット列を第2変換データとし、
    上記第2変換部がブロック復号文データから取り出すビットの位置は、
    少なくとも何れかのラウンド処理間で相違する、
    ことを特徴とするブロック復号装置。
  6. 請求項5に記載のブロック復号装置であって、
    上記ブロック復号部が用いる鍵データは、
    全てのラウンド処理間で共通であり、
    上記第2変換部がブロック復号文データから切り出すビットの位置は、
    全てのラウンド処理間で相違する、
    ことを特徴とするブロック復号装置。
  7. 請求項6に記載のブロック復号装置であって、
    ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
    上記ブロック復号部は、
    メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック復号文データを生成し、
    上記第2変換部は、
    上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック復号文データから切り出す、
    ことを特徴とするブロック復号装置。
  8. 請求項5から7のいずれかに記載のブロック復号装置であって、
    平文データのビット長は、鍵データのビット長よりも短い、
    ことを特徴とするブロック復号装置。
  9. 平文データをブロック暗号化するブロック暗号方法であって、
    第1変換部が、第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換ステップと、
    ブロック暗号化部が、上記鍵データを用いて上記第1変換データをブロック暗号化したブロック暗号文データを生成するブロック暗号化ステップと、
    第2変換部が、上記ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換ステップと、
    排他的論理和計算部が、上記第2部分データと上記第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算ステップと、を有し、
    第1部分データと第2部分データとを交換し、新たに第1変換ステップとブロック暗号化ステップと第2変換ステップと排他的論理和計算ステップとの処理を実行させるラウンド処理が、繰り返し実行され、
    上記ブロック暗号化ステップで用いる鍵データは、
    少なくとも何れかのラウンド処理間で共通であり、
    上記第2変換ステップは、
    ブロック暗号文データから切り出した1部のビット列を第2変換データとするステップであり、
    上記第2変換ステップがブロック暗号文データから取り出すビットの位置は、
    少なくとも何れかのラウンド処理間で相違する、
    ことを特徴とするブロック暗号方法。
  10. 請求項9に記載のブロック暗号方法であって、
    上記ブロック暗号化ステップで用いられる鍵データは、
    全てのラウンド処理間で共通であり、
    上記第2変換ステップでブロック暗号文データから切り出されるビットの位置は、
    全てのラウンド処理間で相違する、
    ことを特徴とするブロック暗号方法。
  11. 請求項10に記載のブロック暗号方法であって、
    ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
    上記ブロック暗号化ステップは、
    メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成するステップであり、
    上記第2変換ステップは、
    上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出すステップである、
    ことを特徴とするブロック暗号方法。
  12. 請求項9から11のいずれかに記載のブロック暗号方法であって、
    平文データのビット長は、鍵データのビット長よりも短い、
    ことを特徴とするブロック暗号方法。
  13. 暗号文データをブロック復号化するブロック復号方法であって、
    第1変換部が、第1部分データを用い、これとビット長が異なる第1変換データを生成するステップと、
    ブロック復号化部が、上記鍵データを用いて上記第1変換データをブロック復号化したブロック復号文データを生成するステップと、
    第2変換部が、上記ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成するステップと、
    排他的論理和計算部が、上記第2部分データと上記第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとするステップと、
    第1部分データと第2部分データとを交換し、新たに第1変換ステップとブロック復号ステップと第2変換ステップと排他的論理和計算ステップとの処理を実行させるラウンド処理が、繰り返し実行され、
    上記ブロック復号ステップで用いられる鍵データは、
    少なくとも何れかのラウンド処理間で共通であり、
    上記第2変換ステップは、
    ブロック復号文データから切り出した1部のビット列を第2変換データとするステップであり、
    上記第2変換ステップがブロック復号文データから取り出すビットの位置は、
    少なくとも何れかのラウンド処理間で相違する、
    ことを特徴とするブロック復号方法。
  14. 請求項13に記載のブロック復号方法であって、
    上記ブロック復号ステップで用いられる鍵データは、
    全てのラウンド処理間で共通であり、
    上記第2変換ステップでブロック復号文データから切り出されるビットの位置は、
    全てのラウンド処理間で相違する、
    ことを特徴とするブロック復号方法。
  15. 請求項14に記載のブロック復号方法であって、
    ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
    上記ブロック復号ステップは、
    メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック復号文データを生成するステップであり、
    上記第2変換ステップは、
    上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック復号文データから切り出すステップである、
    ことを特徴とするブロック復号方法。
  16. 請求項13から15のいずれかに記載のブロック復号方法であって、
    平文データのビット長は、鍵データのビット長よりも短い、
    ことを特徴とするブロック復号方法。
  17. 請求項1からの何れかに記載のブロック暗号装置としてコンピュータを機能させるためのプログラム。
  18. 請求項5から8の何れかに記載のブロック復号装置としてコンピュータを機能させるためのプログラム。
JP2005221317A 2005-07-29 2005-07-29 ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム Expired - Fee Related JP4612501B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005221317A JP4612501B2 (ja) 2005-07-29 2005-07-29 ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005221317A JP4612501B2 (ja) 2005-07-29 2005-07-29 ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2007034212A JP2007034212A (ja) 2007-02-08
JP4612501B2 true JP4612501B2 (ja) 2011-01-12

Family

ID=37793507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005221317A Expired - Fee Related JP4612501B2 (ja) 2005-07-29 2005-07-29 ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4612501B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5365750B2 (ja) * 2011-01-31 2013-12-11 日本電気株式会社 ブロック暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
US11438137B2 (en) * 2017-09-01 2022-09-06 Mitsubishi Electric Corporation Encryption device, decryption device, encryption method, decryption method, and computer readable medium

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000066587A (ja) * 1998-08-24 2000-03-03 Toshiba Corp データ処理装置及び通信システム並びに記録媒体
JP2002091295A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd Feistel構造とSPN構造とを組み合わせた演算装置および演算方法
JP2004135250A (ja) * 2002-10-08 2004-04-30 Nakagawa Yukari 情報処理システム及び情報処理方法
JP2004226969A (ja) * 2003-01-24 2004-08-12 Samsung Electronics Co Ltd 暗号システム及び多様なモードを支援する方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0435432A (ja) * 1990-05-30 1992-02-06 Hitachi Ltd データ暗号化方式
JP3435473B2 (ja) * 1996-02-06 2003-08-11 日本電信電話株式会社 暗号化・復号化方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000066587A (ja) * 1998-08-24 2000-03-03 Toshiba Corp データ処理装置及び通信システム並びに記録媒体
JP2002091295A (ja) * 2000-07-13 2002-03-27 Fujitsu Ltd Feistel構造とSPN構造とを組み合わせた演算装置および演算方法
JP2004135250A (ja) * 2002-10-08 2004-04-30 Nakagawa Yukari 情報処理システム及び情報処理方法
JP2004226969A (ja) * 2003-01-24 2004-08-12 Samsung Electronics Co Ltd 暗号システム及び多様なモードを支援する方法

Also Published As

Publication number Publication date
JP2007034212A (ja) 2007-02-08

Similar Documents

Publication Publication Date Title
JP5060119B2 (ja) 暗号処理プログラム、暗号処理方法および暗号処理装置
JP3229148B2 (ja) 暗号化方法およびシステム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
CN106685980B (zh) 一种大文件的加密方法
JP2007065253A (ja) 文字コード暗号処理プログラム、および文字コード暗号処理方法
CN102224704A (zh) 内容解密处理装置、内容解密处理方法及集成电路
JPWO2009087972A1 (ja) データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム
JP2007124032A (ja) 秘密分散装置、方法及びプログラム
JP5060079B2 (ja) 暗号処理プログラム
CN106936820B (zh) 数据变长修改方法及其在大数据加密中的应用
WO2006033347A1 (ja) 機密情報処理方法、機密情報処理装置、およびコンテンツデータ再生装置
JP4303408B2 (ja) 情報をブロック暗号化して記録する方法およびこれをサポートする記録媒体
JP4612501B2 (ja) ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム
JP2005122745A (ja) 対称型マルチプロセッサを持つ電子機器におけるデータの暗号化
JP6881111B2 (ja) 暗号化データ生成装置、復号データ生成装置、追加データ付き認証暗号システム、その方法、及びプログラム
KR101133988B1 (ko) 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템
JP5038866B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP5032955B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
WO2015173905A1 (ja) 暗号装置及び記憶システム及び復号装置及び暗号方法及び復号方法及び暗号プログラム及び復号プログラム
JP2011119985A (ja) 暗号復号方法
JP2008205753A (ja) 信号処理装置
JP7317261B2 (ja) 暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号方法及び復号プログラム
JP7310938B2 (ja) 暗号システム、暗号化方法、復号方法及びプログラム
JP4527960B2 (ja) 換字置換装置、換字置換方法、換字置換プログラム及び換字置換記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100715

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100909

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

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees