JP4612501B2 - ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム - Google Patents
ブロック暗号装置、ブロック復号装置、それらの方法及びプログラム Download PDFInfo
- 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
Links
Images
Description
岡本龍明、山本博資、「現代暗号」第3刷、産業図書株式会社、2000年1月25日、P6
本発明はこのような点に鑑みてなされたものであり、ブロック長の異なる暗号文を容易に生成することを可能にする技術を提供することを目的とする。
また、本発明のブロック暗号装置において好ましくは、第1部分データと第2部分データとを交換し、新たに第1変換部とブロック暗号化部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部を有する。そして、ブロック暗号化部が用いる鍵データは、少なくとも何れかのラウンド処理間で共通である。また、第2変換部は、ブロック暗号文データから切り出した1部のビット列を第2変換データとし、第2変換部がブロック暗号文データから取り出すビット列の位置は、少なくとも何れかのラウンド処理間で相違する。
またこれは、このラウンド処理間で使用される鍵データが同じであってもいえることである。すなわちこのラウンド処理間では、鍵データを相違させる処理を行うことなく、生成された第2部分データの相関をなくすことができる。これは、演算量を低く抑えつつ、暗号の安全性を向上させることができることを意味する。
これにより、ラウンド処理間で鍵データを相違させるための処理を全く行うことなく、各ラウンド処理によって生成された全ての第2部分データの相関をなくすことができる。これにより、さらに演算量を低く抑え、暗号の安全性を向上させることが可能となる。
また、本発明のブロック暗号装置において好ましくは、ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、ブロック暗号化部は、メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成し、第2変換部は、カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出す。
これにより、安全性が高いビット長が長いの鍵データを用い、それよりもビット長が短い平文データを暗号化することができる。
また、上記課題を解決するために、暗号文データを格納するメモリと、暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するブロック復号化部と、ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、を有するブロック復号装置が提供される。
また、第2変換部がブロック暗号文データから取り出すビット列の位置を、少なくとも何れかのラウンド処理間で相違させることにより、演算量の増加を抑えつつ、安全性を向上させることができる。
〔第1の実施の形態〕
まず、本発明における第1の実施の形態について説明する。
<ブロック暗号装置の構成>
[ブロック暗号装置のハードウェア構成]
図1は、本形態におけるブロック暗号装置1のハードウェア構成を例示したブロック図である。
この例の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部分データとを結合して暗号文データを生成するための結合プログラムと、ブロック暗号装置全体を制御するための制御プログラムとを有している。
[ハードウェアとソフトウェアとの協働]
この例のCPU2は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置4のプログラム領域4aに格納されている上述のプログラムを、RAM5のプログラム領域5aに書き込む。同様にCPU2は、補助記憶装置4のデータ領域4bに格納されている各種データをRAM5のデータ領域5bに書き込む。さらに、CPU2は、このプログラムや各種データが書き込まれたRAM5上のアドレスをレジスタ2cに格納する。そして、CPU2の制御部2aは、レジスタ2cに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM5上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部2b順次実行させ、その演算結果をレジスタ2cに格納していく。
図2に例示するように、この例のブロック暗号装置1は、データ分割部10、第1変換部20、カウンタ31、ブロック暗号化部32、33、第2変換部40、排他的論理和計算部50、データ操作部60、メモリ70及び制御部80を有している。なお、メモリ70は、領域71〜77を有している。
<ブロック復号装置の構成>
[ブロック復号装置のハードウェア構成]
図1に例示したブロック暗号装置のハードウェア構成と同様である。
ブロック復号装置のプログラムは、暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むためのデータ分割プログラムと、第1部分データを用い、これとビット長が異なる第1変換データを生成するための第1変換プログラムと、鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するためのブロック復号化プログラムと、ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成するための第2変換プログラムと、第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとするための排他的論理和計算プログラムと、第1部分データと第2部分データとの交換操作を実行するための交換操作プログラムと、第1部分データと第2部分データとを結合して平文データを生成するための結合プログラムと、ブロック復号装置全体を制御するための制御プログラムとを有している。
[ハードウェアとソフトウェアとの協働]
図3は、ブロック暗号装置1と同様に、CPUにプログラムが読み込まれることにより構成されるブロック復号装置200のブロック図の例示である。なおこの図では、制御部280に出入りするデータの流れの記載を省略している。
ここで、メモリ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が実行するブロック暗号処理について説明する。
図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に格納する。
[パディング(図6(a))]
入力:L bit文字列
出力:M bit文字列(但しL<M)
処理:ある固有の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の鍵データKnを生成する(ステップS4a)。
入力:平文データ(α bit文字列),鍵データ(β bit文字列)
出力:暗号文データ(γ bit文字列)
処理:鍵データと平文データとより、ブロック暗号を用いて暗号文データを求め出力する。
例えば、図7(a)は、α=β=γ=128の場合の例である。また、ブロック暗号の例としては、例えばAES仕様暗号等を例示できる([ブロック暗号化]の説明終わり)。
入力: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)。なお、排他的論理和とは、以下の処理のことである。
入力:入力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の例である([排他的論理和]の説明終わり)。
ここで、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の処理(ラウンド処理)を実行させる。
このように生成された暗号文データ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に格納する。
次に、ブロック暗号化部232が、メモリ270の領域271からM(この例では128)bitの鍵データ(K)300を読み込む。そして、ブロック暗号化部232が、カウンタ231から出力されたM(この例では128)bitのカウント値nを、この鍵データ(K)300でブロック暗号化して、M(この例では128)bitの鍵データKnを生成する(ステップS24a)。
入力:暗号文データ(α bit文字列),鍵データ(β bit文字列)
出力:復号文データ(γ bit文字列)
処理:鍵データと暗号文データとを用い、ブロック復号により復号文データを求めて出力する。
例えば、図10は、α=β=γ=128の場合の例である。また、ブロック復号の方式は、前述のブロック暗号装置1で行われるブロック暗号の方式に対応したものである([ブロック復号化]の説明終わり)。
次に、排他的論理和計算部250が、メモリ270の領域274から第2部分データ322を読み込み、領域277から第2変換データ350を読み込む。そして、排他的論理和計算部250は、読み込んだ第2部分データ(この例ではL=16bit)と第2変換データ(この例ではL=16bit)との排他的論理和を計算し、その計算結果を新たな第2部分データ322として、メモリ270の領域274に上書き保存する(ステップS26)。
ここで、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の処理(ラウンド処理)を実行させる。
<本形態の特徴>
以上のように、本形態のブロック暗号装置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」には、ラウンド関数及び副鍵生成に理想的な「ランダム関数」或いは「ランダム置換」を用いた際のフェイステル構造の安全性について記述されている。本形態は、「ランダム関数」や「ランダム置換」ではなく、ラウンド処理ごとに秘密の鍵データKnを変化させるブロック暗号である。しかし、ラウンド処理ごとに秘密の鍵データKnを変化させて各ラウンド処理で実行されるブロック暗号処理の相関を絶ったブロック暗号は、安全性の面で「ランダム関数」や「ランダム置換」と区別できないと仮定できる。よって、本形態のブロック暗号は安全であるといえる。
次に、本形態の第2の実施の形態について説明する。
本形態は第1の実施の形態の変形例である。第1の実施の形態では、ラウンド処理ごとに鍵データを変化させて安全性を確保していたのに対し、本形態では、ラウンド処理ごとに第2変換部が第2変換データの生成方法を変化させて安全性を確保する。すなわち、本形態では、第2変換データとして使用するビット列のアドレスをラウンド処理ごとに変化させ、これによってラウンド処理間で相関を持たない関数の列を生成する。また、本形態ではブロック暗号やブロック復号に使用する鍵データは各ラウンド処理を通じて一種類のみである。これにより、何度も行われるブロック暗号化の処理を効率化する。
<ブロック暗号装置の構成>
[ブロック暗号装置のハードウェア構成]
第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に格納する。
次に、ブロック暗号化部33が、メモリ70の領域75から第1変換データ130を読み込み、領域71からM(この例では128)bitの鍵データ(K)100を読み込む。そして、ブロック暗号化部33は、この鍵データ(K)100を用い、この第1変換データ130をブロック暗号化したブロック暗号文データ(Cn)140(この例ではM=128bit)を生成する(ステップS44)。
入力: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となる([アドレス付切り出し]の説明終わり)。
次に、カウンタ531が、カウント値nをカウントアップする。すなわち、カウンタ31が、n+1を新たなカウント値nとする(ステップS47)。次に、制御部80が、カウンタ31のカウント値nが段数wであるか否かを判断する(ステップS48)。なお、段数wは予め設定された値である。
このように生成された暗号文データ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に格納する。
次に、ブロック復号化部233が、メモリ270の領域275から第1変換データ330を読み込み、領域271からM(この例では128)bitの鍵データ(K)300を読み込む。そして、ブロック復号化部233は、この鍵データ(K)300を用い、第1変換データ330をブロック復号化したブロック復号文データ(Dn)340(この例ではM=128bit)を生成する(ステップS64)。
次に、カウンタ631が、カウント値nをカウントダウンする。すなわち、カウンタ631が、n−1を新たなカウント値nとする(ステップS67)。次に、制御部280が、カウンタ631のカウント値nが0であるか否かを判断する(ステップ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の実施の形態と第2の実施の形態とを混合し、あるラウンド処理では第1の実施の形態の構成をとり、他のラウンド処理では第2の実施の形態の構成をとることとしてもよい。
さらに、データ分割部が平文データや暗号文データから分割する第1部分データや第2部分データのビット位置は、上述のものに限定されない。例えば、連続的なビット列ではなく、平文データ等から離散した位置のビットを抽出し、これを第1部分データ等としてもよい。
また、第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)等を用いることができる。
また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
200,600 ブロック復号装置
Claims (18)
- 平文データをブロック暗号化するブロック暗号装置であって、
上記平文データを格納するメモリと、
上記平文データの一部のビット列を第1部分データの初期値として読み込み、当該平文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、
第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、
上記鍵データを用いて上記第1変換データをブロック暗号化したブロック暗号文データを生成するブロック暗号化部と、
上記ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、
第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、
第1部分データと第2部分データとを交換し、新たに第1変換部とブロック暗号化部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部とを有し、
上記ブロック暗号化部が用いる鍵データは、
少なくとも何れかのラウンド処理間で共通であり、
上記第2変換部は、
ブロック暗号文データから切り出した1部のビット列を第2変換データとし、
上記第2変換部がブロック暗号文データから取り出すビットの位置は、
少なくとも何れかのラウンド処理間で相違する、
ことを特徴とするブロック暗号装置。 - 請求項1に記載のブロック暗号装置であって、
上記ブロック暗号化部が用いる鍵データは、
全てのラウンド処理間で共通であり、
上記第2変換部がブロック暗号文データから切り出すビットの位置は、
全てのラウンド処理間で相違する、
ことを特徴とするブロック暗号装置。 - 請求項2に記載のブロック暗号装置であって、
ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
上記ブロック暗号化部は、
メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成し、
上記第2変換部は、
上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出す、
ことを特徴とするブロック暗号装置。 - 請求項1から3のいずれかに記載のブロック暗号装置であって、
平文データのビット長は、鍵データのビット長よりも短い、
ことを特徴とするブロック暗号装置。 - 暗号文データをブロック復号化するブロック復号装置であって、
暗号文データを格納するメモリと、
暗号文データの1部のビット列を第1部分データの初期値として読み込み、当該暗号文データの他のビット列を第2部分データの初期値として読み込むデータ分割部と、
第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換部と、
鍵データを用いて第1変換データをブロック復号化したブロック復号文データを生成するブロック復号化部と、
ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換部と、
第2部分データと第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算部と、
第1部分データと第2部分データとを交換し、新たに第1変換部とブロック復号部と第2変換部と排他的論理和計算部との処理を実行させるラウンド処理を、繰り返し実行させる制御部とを有し、
上記ブロック復号部が用いる鍵データは、
少なくとも何れかのラウンド処理間で共通であり、
上記第2変換部は、
ブロック復号文データから切り出した1部のビット列を第2変換データとし、
上記第2変換部がブロック復号文データから取り出すビットの位置は、
少なくとも何れかのラウンド処理間で相違する、
ことを特徴とするブロック復号装置。 - 請求項5に記載のブロック復号装置であって、
上記ブロック復号部が用いる鍵データは、
全てのラウンド処理間で共通であり、
上記第2変換部がブロック復号文データから切り出すビットの位置は、
全てのラウンド処理間で相違する、
ことを特徴とするブロック復号装置。 - 請求項6に記載のブロック復号装置であって、
ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
上記ブロック復号部は、
メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック復号文データを生成し、
上記第2変換部は、
上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック復号文データから切り出す、
ことを特徴とするブロック復号装置。 - 請求項5から7のいずれかに記載のブロック復号装置であって、
平文データのビット長は、鍵データのビット長よりも短い、
ことを特徴とするブロック復号装置。 - 平文データをブロック暗号化するブロック暗号方法であって、
第1変換部が、第1部分データを用い、これとビット長が異なる第1変換データを生成する第1変換ステップと、
ブロック暗号化部が、上記鍵データを用いて上記第1変換データをブロック暗号化したブロック暗号文データを生成するブロック暗号化ステップと、
第2変換部が、上記ブロック暗号文データを用い、第2部分データにビット長が等しい第2変換データを生成する第2変換ステップと、
排他的論理和計算部が、上記第2部分データと上記第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとする排他的論理和計算ステップと、を有し、
第1部分データと第2部分データとを交換し、新たに第1変換ステップとブロック暗号化ステップと第2変換ステップと排他的論理和計算ステップとの処理を実行させるラウンド処理が、繰り返し実行され、
上記ブロック暗号化ステップで用いる鍵データは、
少なくとも何れかのラウンド処理間で共通であり、
上記第2変換ステップは、
ブロック暗号文データから切り出した1部のビット列を第2変換データとするステップであり、
上記第2変換ステップがブロック暗号文データから取り出すビットの位置は、
少なくとも何れかのラウンド処理間で相違する、
ことを特徴とするブロック暗号方法。 - 請求項9に記載のブロック暗号方法であって、
上記ブロック暗号化ステップで用いられる鍵データは、
全てのラウンド処理間で共通であり、
上記第2変換ステップでブロック暗号文データから切り出されるビットの位置は、
全てのラウンド処理間で相違する、
ことを特徴とするブロック暗号方法。 - 請求項10に記載のブロック暗号方法であって、
ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
上記ブロック暗号化ステップは、
メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック暗号文データを生成するステップであり、
上記第2変換ステップは、
上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック暗号文データから切り出すステップである、
ことを特徴とするブロック暗号方法。 - 請求項9から11のいずれかに記載のブロック暗号方法であって、
平文データのビット長は、鍵データのビット長よりも短い、
ことを特徴とするブロック暗号方法。 - 暗号文データをブロック復号化するブロック復号方法であって、
第1変換部が、第1部分データを用い、これとビット長が異なる第1変換データを生成するステップと、
ブロック復号化部が、上記鍵データを用いて上記第1変換データをブロック復号化したブロック復号文データを生成するステップと、
第2変換部が、上記ブロック復号文データを用い、第2部分データにビット長が等しい第2変換データを生成するステップと、
排他的論理和計算部が、上記第2部分データと上記第2変換データとの排他的論理和を計算し、その計算結果を新たな第2部分データとするステップと、
第1部分データと第2部分データとを交換し、新たに第1変換ステップとブロック復号ステップと第2変換ステップと排他的論理和計算ステップとの処理を実行させるラウンド処理が、繰り返し実行され、
上記ブロック復号ステップで用いられる鍵データは、
少なくとも何れかのラウンド処理間で共通であり、
上記第2変換ステップは、
ブロック復号文データから切り出した1部のビット列を第2変換データとするステップであり、
上記第2変換ステップがブロック復号文データから取り出すビットの位置は、
少なくとも何れかのラウンド処理間で相違する、
ことを特徴とするブロック復号方法。 - 請求項13に記載のブロック復号方法であって、
上記ブロック復号ステップで用いられる鍵データは、
全てのラウンド処理間で共通であり、
上記第2変換ステップでブロック復号文データから切り出されるビットの位置は、
全てのラウンド処理間で相違する、
ことを特徴とするブロック復号方法。 - 請求項14に記載のブロック復号方法であって、
ラウンド処理ごとに異なるカウント値を出力するカウンタを有し、
上記ブロック復号ステップは、
メモリに格納された1つの鍵データを全てのラウンド処理での暗号鍵としてブロック復号文データを生成するステップであり、
上記第2変換ステップは、
上記カウンタから出力されたカウント値の整数倍を先頭アドレスとするビット列を、ブロック復号文データから切り出すステップである、
ことを特徴とするブロック復号方法。 - 請求項13から15のいずれかに記載のブロック復号方法であって、
平文データのビット長は、鍵データのビット長よりも短い、
ことを特徴とするブロック復号方法。 - 請求項1から4の何れかに記載のブロック暗号装置としてコンピュータを機能させるためのプログラム。
- 請求項5から8の何れかに記載のブロック復号装置としてコンピュータを機能させるためのプログラム。
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)
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)
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)
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 | 日本電信電話株式会社 | 暗号化・復号化方法及び装置 |
-
2005
- 2005-07-29 JP JP2005221317A patent/JP4612501B2/ja not_active Expired - Fee Related
Patent Citations (4)
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 |