JP2003143120A - データ攪拌回路とデータ攪拌方法 - Google Patents
データ攪拌回路とデータ攪拌方法Info
- Publication number
- JP2003143120A JP2003143120A JP2001341655A JP2001341655A JP2003143120A JP 2003143120 A JP2003143120 A JP 2003143120A JP 2001341655 A JP2001341655 A JP 2001341655A JP 2001341655 A JP2001341655 A JP 2001341655A JP 2003143120 A JP2003143120 A JP 2003143120A
- Authority
- JP
- Japan
- Prior art keywords
- data
- conversion
- transposition
- byte
- substituting
- 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
Links
Abstract
(57)【要約】
【課題】 転置と換字によりデータを攪拌する際に、転
置のみに要する処理サイクルが不要なデータ攪拌回路を
提供する。 【解決手段】 本発明は、転置変換と換字変換によりデ
ータを攪拌する回路であって、データを振り分けるデー
タ分割手段と、データを換字変換する部分データ換字手
段と、データを結合するデータ結合手段と、データの一
時的に保持しておくバッファメモリと、を備える。
置のみに要する処理サイクルが不要なデータ攪拌回路を
提供する。 【解決手段】 本発明は、転置変換と換字変換によりデ
ータを攪拌する回路であって、データを振り分けるデー
タ分割手段と、データを換字変換する部分データ換字手
段と、データを結合するデータ結合手段と、データの一
時的に保持しておくバッファメモリと、を備える。
Description
【0001】
【発明の属する技術分野】本発明は、転置変換と換字変
換によりデータを攪拌する回路と方法に関する。特に、
転置変換のみに要する処理サイクルが不要なデータ攪拌
回路と方法に関するものである。
換によりデータを攪拌する回路と方法に関する。特に、
転置変換のみに要する処理サイクルが不要なデータ攪拌
回路と方法に関するものである。
【0002】
【従来の技術】0と1の2値信号で表現されるデジタル
データを攪拌する目的の1つとしてデータの暗号化が挙
げられる。現在の米国標準暗号であるDES(Data
Encryption Standards and
Technology)に代わる次期米国標準暗号A
ES(Advanced Encryption St
andard)の最終候補であるRijndael暗号
はデータ長が16バイト単位のブロック暗号であり、そ
の循環変換には、4×4のバイトマトリクス表現された
16バイトデータを行単位でバイトローテーションを行
う転置変換と、列単位での換字変換が含まれる。
データを攪拌する目的の1つとしてデータの暗号化が挙
げられる。現在の米国標準暗号であるDES(Data
Encryption Standards and
Technology)に代わる次期米国標準暗号A
ES(Advanced Encryption St
andard)の最終候補であるRijndael暗号
はデータ長が16バイト単位のブロック暗号であり、そ
の循環変換には、4×4のバイトマトリクス表現された
16バイトデータを行単位でバイトローテーションを行
う転置変換と、列単位での換字変換が含まれる。
【0003】米国の国立標準技術研究所NIST(Na
tional Instituteof Standa
rd)は、AESの連邦情報処理規格FIPS(Fed
eral Information Processi
ng Standard)の草稿「AES Propo
sal:Rijndael」を公表し、そこにRijn
daelの処理内容を開示しており、以下処理内容の概
要を説明する。
tional Instituteof Standa
rd)は、AESの連邦情報処理規格FIPS(Fed
eral Information Processi
ng Standard)の草稿「AES Propo
sal:Rijndael」を公表し、そこにRijn
daelの処理内容を開示しており、以下処理内容の概
要を説明する。
【0004】図7にRijndael暗号の構成を示
す。図7に示すようにRijndael暗号は入力され
たデータの前処理を行う前処理手段と、循環変換となる
複数のデータ攪拌処理手段と、出力するデータの後処理
を行う後処理手段から構成される。
す。図7に示すようにRijndael暗号は入力され
たデータの前処理を行う前処理手段と、循環変換となる
複数のデータ攪拌処理手段と、出力するデータの後処理
を行う後処理手段から構成される。
【0005】図8に循環変換となるデータ攪拌処理手段
を単一にした構成を示す。図7と異なるのは、複数のデ
ータ攪拌処理手段を備える代わりにデータ攪拌処理手段
へ入力するデータを切り替えるセレクタを備えることで
単一のデータ攪拌処理手段を再帰的に用いる点である。
を単一にした構成を示す。図7と異なるのは、複数のデ
ータ攪拌処理手段を備える代わりにデータ攪拌処理手段
へ入力するデータを切り替えるセレクタを備えることで
単一のデータ攪拌処理手段を再帰的に用いる点である。
【0006】また、図7、図8に示すデータ攪拌処理手
段は、データの転置変換を行うデータ転置手段と、デー
タの換字変換を行うデータ換字手段とから構成される。
段は、データの転置変換を行うデータ転置手段と、デー
タの換字変換を行うデータ換字手段とから構成される。
【0007】これより、図8〜図10を用いて16バイ
トの平文{p0、p1、・・・、p15}を暗号文{c
0、c1、・・・、c15}に変換する処理を説明す
る。まず、16バイトの平文{p0、p1、・・・、p
15}は、前処理手段により暗号鍵との排他的論理和演
算された後、セレクタを介してデータ攪拌処理手段へ入
力される。
トの平文{p0、p1、・・・、p15}を暗号文{c
0、c1、・・・、c15}に変換する処理を説明す
る。まず、16バイトの平文{p0、p1、・・・、p
15}は、前処理手段により暗号鍵との排他的論理和演
算された後、セレクタを介してデータ攪拌処理手段へ入
力される。
【0008】これより、データ攪拌処理手段の説明を行
う。データ攪拌処理手段へ入力された16バイトデータ
は、まずデータ転置手段でデータの転置変換が行われ
る。データの転置変換が行われた後、続いてデータ換字
手段でデータの換字変換が行われる。データ転置手段と
データ換字手段について図9を用いて説明する。
う。データ攪拌処理手段へ入力された16バイトデータ
は、まずデータ転置手段でデータの転置変換が行われ
る。データの転置変換が行われた後、続いてデータ換字
手段でデータの換字変換が行われる。データ転置手段と
データ換字手段について図9を用いて説明する。
【0009】図9のx0、x1、・・・、x15はそれ
ぞれ1バイト、計16バイトのデータであり、4×4の
バイトマトリクスで表現される。16バイトデータ{x
0、x1、・・・、x15}がデータ転置手段に入力さ
れ転置変換された後、続けてデータ換字手段に入力され
換字変換される様子を図9に示す。
ぞれ1バイト、計16バイトのデータであり、4×4の
バイトマトリクスで表現される。16バイトデータ{x
0、x1、・・・、x15}がデータ転置手段に入力さ
れ転置変換された後、続けてデータ換字手段に入力され
換字変換される様子を図9に示す。
【0010】図9に示すように4×4バイトマトリクス
形状をとる16バイト入力データ{x0、x1、・・
・、x15}は、行0={x0、x4、x8、x1
2}、・・・、行3{x3、x7、x11、x15}の
ように各行ごとに分割後、データ転置手段で転置変換さ
れ、行0={x0、x4、x8、x12}、・・・、行
3{x15、x3、x7、x11}と転置される。デー
タ転置手段で転置変換されたデータは元の4×4バイト
マトリクス形状をとる16バイトデータ{x0、x5、
x10、x15、x4、x9、x14、x3、x8、x
13、x2、x7、x12、x1、x6、x11}とし
てデータ換字手段へ出力される。このようにデータ転置
手段は、行単位にデータのローテーションを行うので、
所望のシフト後のデータをラッチするレジスタで構成さ
れる。
形状をとる16バイト入力データ{x0、x1、・・
・、x15}は、行0={x0、x4、x8、x1
2}、・・・、行3{x3、x7、x11、x15}の
ように各行ごとに分割後、データ転置手段で転置変換さ
れ、行0={x0、x4、x8、x12}、・・・、行
3{x15、x3、x7、x11}と転置される。デー
タ転置手段で転置変換されたデータは元の4×4バイト
マトリクス形状をとる16バイトデータ{x0、x5、
x10、x15、x4、x9、x14、x3、x8、x
13、x2、x7、x12、x1、x6、x11}とし
てデータ換字手段へ出力される。このようにデータ転置
手段は、行単位にデータのローテーションを行うので、
所望のシフト後のデータをラッチするレジスタで構成さ
れる。
【0011】転置変換された4×4バイトマトリクス形
状の16バイトデータ{x0、x5、x10、x15、
x4、x9、x14、x3、x8、x13、x2、x
7、x12、x1、x6、x11}は、列0={x0、
x5、x10、x15}、列1{x4、x9、x14、
x3}、列2{x8、x13、x2、x7}、列3{x
12、x1、x6、x11}のように各列ごとに分割
後、データ換字手段で換字変換される。
状の16バイトデータ{x0、x5、x10、x15、
x4、x9、x14、x3、x8、x13、x2、x
7、x12、x1、x6、x11}は、列0={x0、
x5、x10、x15}、列1{x4、x9、x14、
x3}、列2{x8、x13、x2、x7}、列3{x
12、x1、x6、x11}のように各列ごとに分割
後、データ換字手段で換字変換される。
【0012】つまり4組の4バイトデータがデータ換字
手段で4組の4バイトデータ、列0={y0、y1、y
2、y3}、列1={y4、y5、y6、y7}、列2
={y8、y9、y10、y11}、列3={y12、
y13、y14、y15}へ換字変換される。データ換
字手段で換字変換されたデータは元の4×4バイトマト
リクス形状をとる16バイトデータ{y0、y1、・・
・、y15}として出力される。このようにデータ換字
手段は、4バイト単位の換字を4組行うため、部分デー
タ換字手段を4組用いて構成される。
手段で4組の4バイトデータ、列0={y0、y1、y
2、y3}、列1={y4、y5、y6、y7}、列2
={y8、y9、y10、y11}、列3={y12、
y13、y14、y15}へ換字変換される。データ換
字手段で換字変換されたデータは元の4×4バイトマト
リクス形状をとる16バイトデータ{y0、y1、・・
・、y15}として出力される。このようにデータ換字
手段は、4バイト単位の換字を4組行うため、部分デー
タ換字手段を4組用いて構成される。
【0013】図10に部分データ換字手段の構成を示
す。部分データ換字手段は、置換テーブルに基づきバイ
ト(8ビット)データの置換を行う置換手段4個と、4
バイトデータの多項式乗算を行う多項式乗算回路とから
構成される。
す。部分データ換字手段は、置換テーブルに基づきバイ
ト(8ビット)データの置換を行う置換手段4個と、4
バイトデータの多項式乗算を行う多項式乗算回路とから
構成される。
【0014】部分データ換字手段に入力された4バイト
データは、置換手段によりバイト単位で置換された後、
多項式乗算回路で演算され出力される。この場合、デー
タ攪拌処理手段を1回実行するのに必要な処理時間は、
データ転置手段で必要な1サイクルと、データ換字手段
で必要な1サイクルとの合計2サイクルである。
データは、置換手段によりバイト単位で置換された後、
多項式乗算回路で演算され出力される。この場合、デー
タ攪拌処理手段を1回実行するのに必要な処理時間は、
データ転置手段で必要な1サイクルと、データ換字手段
で必要な1サイクルとの合計2サイクルである。
【0015】以上に述べたデータ攪拌処理手段に再帰的
にデータを入力することで循環変数を実現している。規
定回数、データ攪拌処理手段を循環すると、最終的にデ
ータ攪拌処理手段の出力は、後処理手段により暗号鍵と
の排他的論理和演算された後、暗号文{c0、c1、・
・・、c15}として出力される。
にデータを入力することで循環変数を実現している。規
定回数、データ攪拌処理手段を循環すると、最終的にデ
ータ攪拌処理手段の出力は、後処理手段により暗号鍵と
の排他的論理和演算された後、暗号文{c0、c1、・
・・、c15}として出力される。
【0016】また、回路規模に制限がある場合について
これより説明する。図10に示すように列単位で換字す
る部分データ換字手段は、ハードウェア実装する上で回
路が大きくなる置換テーブルを4個用いて構成されてい
る。そのため、列単位での換字変換を行う部分データ換
字手段を列数分だけ並列に用意するのではなく、1つの
部分データ換字手段を各列に対して順番に使用し実装す
る部分データ換字手段を1つにすることで、回路規模を
削減する。このようにして回路規模を削減した構成を図
11に示す。
これより説明する。図10に示すように列単位で換字す
る部分データ換字手段は、ハードウェア実装する上で回
路が大きくなる置換テーブルを4個用いて構成されてい
る。そのため、列単位での換字変換を行う部分データ換
字手段を列数分だけ並列に用意するのではなく、1つの
部分データ換字手段を各列に対して順番に使用し実装す
る部分データ換字手段を1つにすることで、回路規模を
削減する。このようにして回路規模を削減した構成を図
11に示す。
【0017】この場合、転置変換と換字変換を行うデー
タ列の方向が異なる為、転置変換処理後のデータを一旦
格納しておく必要がある。また、図8で示した構成と異
なり、データ攪拌処理手段を1回実行するのに必要な処
理時間は、データ転置手段で必要な1サイクルと、4列
に対して部分データ換字手段を実行するのに必要な4サ
イクルとの合計5サイクル必要である。
タ列の方向が異なる為、転置変換処理後のデータを一旦
格納しておく必要がある。また、図8で示した構成と異
なり、データ攪拌処理手段を1回実行するのに必要な処
理時間は、データ転置手段で必要な1サイクルと、4列
に対して部分データ換字手段を実行するのに必要な4サ
イクルとの合計5サイクル必要である。
【0018】
【発明が解決しようとする課題】データ攪拌処理手段に
部分データ換字手段を4組持つ場合と、1組持つ場合の
いずれの場合においても転置変換と換字変換を実施する
データの行列の方向が異なるため、データの換字変換前
に転置変換を実施し、転置変換後のデータを確定してお
く必要がある。そのため転置変換後のデータを一旦格納
しなければならない。つまり、データ攪拌処理手段を1
回実行するのに必要な処理時間として、換字変換を実施
するのに必要な処理時間に加えて、データ転置変換を実
施するのに必要な処理時間として1サイクル余分に必要
となる。
部分データ換字手段を4組持つ場合と、1組持つ場合の
いずれの場合においても転置変換と換字変換を実施する
データの行列の方向が異なるため、データの換字変換前
に転置変換を実施し、転置変換後のデータを確定してお
く必要がある。そのため転置変換後のデータを一旦格納
しなければならない。つまり、データ攪拌処理手段を1
回実行するのに必要な処理時間として、換字変換を実施
するのに必要な処理時間に加えて、データ転置変換を実
施するのに必要な処理時間として1サイクル余分に必要
となる。
【0019】
【課題を解決するための手段】上記課題を解決するため
に、本発明のデータ攪拌回路は、転置変換と換字変換に
よりデータを攪拌する回路であって、データを振り分け
るデータ分割手段と、前記データ分割手段により抽出し
た部分データを換字変換する部分データ換字手段と、デ
ータを結合するデータ結合手段と、攪拌するデータの中
間状態を一時的に格納するバッファメモリと、を備える
ことを特徴とする。
に、本発明のデータ攪拌回路は、転置変換と換字変換に
よりデータを攪拌する回路であって、データを振り分け
るデータ分割手段と、前記データ分割手段により抽出し
た部分データを換字変換する部分データ換字手段と、デ
ータを結合するデータ結合手段と、攪拌するデータの中
間状態を一時的に格納するバッファメモリと、を備える
ことを特徴とする。
【0020】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図面を参照しながら説明する。
て、図面を参照しながら説明する。
【0021】(実施の形態)図1に本発明のデータ攪拌
回路の構成を示す。図1において、100は入力される
データの前処理を行う前処理手段で、101はデータの
攪拌処理を行うデータ攪拌処理手段、103はデータ攪
拌処理手段101への入力を切り替えるセレクタ、そし
て104は出力するデータの後処理を行う後処理手段で
ある。また120は4×4バイトマトリクス形状の入力
データであり、121は4×4バイトマトリクス形状の
出力データである。
回路の構成を示す。図1において、100は入力される
データの前処理を行う前処理手段で、101はデータの
攪拌処理を行うデータ攪拌処理手段、103はデータ攪
拌処理手段101への入力を切り替えるセレクタ、そし
て104は出力するデータの後処理を行う後処理手段で
ある。また120は4×4バイトマトリクス形状の入力
データであり、121は4×4バイトマトリクス形状の
出力データである。
【0022】ここでデータ攪拌処理手段101は、デー
タ分割手段110、部分データ換字手段111、データ
結合手段112、そしてバッファメモリ102から構成
される。データ分割手段110は、入力された16バイ
トデータを部分データ換字手段111へ出力する4バイ
トデータとデータ結合手段112へ出力する12バイト
データとに振り分け、部分データ換字手段111は、入
力された4バイトデータの換字変換を行い、データ結合
手段112は、部分データ換字手段111で換字変換さ
れた4バイトデータとデータ分割手段110により振り
分けられた12バイトデータとを結合し、4×4バイト
マトリクス形状をとる16バイトデータを出力する。デ
ータ結合手段112からの16バイト出力データはバッ
ファメモリ102で保持され、データ攪拌処理手段10
1の外部へ出力される。
タ分割手段110、部分データ換字手段111、データ
結合手段112、そしてバッファメモリ102から構成
される。データ分割手段110は、入力された16バイ
トデータを部分データ換字手段111へ出力する4バイ
トデータとデータ結合手段112へ出力する12バイト
データとに振り分け、部分データ換字手段111は、入
力された4バイトデータの換字変換を行い、データ結合
手段112は、部分データ換字手段111で換字変換さ
れた4バイトデータとデータ分割手段110により振り
分けられた12バイトデータとを結合し、4×4バイト
マトリクス形状をとる16バイトデータを出力する。デ
ータ結合手段112からの16バイト出力データはバッ
ファメモリ102で保持され、データ攪拌処理手段10
1の外部へ出力される。
【0023】これより、16バイトの平文{p0、p
1、・・・、p15}を暗号文{c0、c1、・・・、
c15}に変換する処理を説明する。まず、16バイト
の平文{p0、p1、・・・、p15}は、4×4バイ
トマトリクス形状の入力データ120として前処理手段
100へ入力される。入力データ120は、前処理手段
100により暗号鍵との排他的論理和演算などの前処理
を施された後、セレクタ103を介してデータ攪拌処理
手段101へ入力される。
1、・・・、p15}を暗号文{c0、c1、・・・、
c15}に変換する処理を説明する。まず、16バイト
の平文{p0、p1、・・・、p15}は、4×4バイ
トマトリクス形状の入力データ120として前処理手段
100へ入力される。入力データ120は、前処理手段
100により暗号鍵との排他的論理和演算などの前処理
を施された後、セレクタ103を介してデータ攪拌処理
手段101へ入力される。
【0024】図2から図5を用いて、データ攪拌処理手
段101で行うデータ攪拌処理を説明する。図2におい
て、200はデータ攪拌処理手段101へ入力される4
×4バイトマトリクスの入力データであり、110は入
力データ200を部分データ換字手段111で処理する
4バイト列データと、データ結合手段112へ出力する
12バイトデータとに振り分けるデータ分割手段であ
る。
段101で行うデータ攪拌処理を説明する。図2におい
て、200はデータ攪拌処理手段101へ入力される4
×4バイトマトリクスの入力データであり、110は入
力データ200を部分データ換字手段111で処理する
4バイト列データと、データ結合手段112へ出力する
12バイトデータとに振り分けるデータ分割手段であ
る。
【0025】部分データ換字手段111は、入力される
4バイトデータの換字変換を行い、換字変換した4バイ
トデータを出力する。112は、データ分割手段110
により振り分けられた12バイトデータと部分データ換
字手段111で換字変換された4バイトデータとを結合
し、16バイトの中間データA300を生成するデータ
結合手段である。
4バイトデータの換字変換を行い、換字変換した4バイ
トデータを出力する。112は、データ分割手段110
により振り分けられた12バイトデータと部分データ換
字手段111で換字変換された4バイトデータとを結合
し、16バイトの中間データA300を生成するデータ
結合手段である。
【0026】図2に、データ攪拌処理手段101で行う
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第0列に対する攪拌処理を示す。
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第0列に対する攪拌処理を示す。
【0027】16バイト入力データ{x0、x1、・・
・、x15}200がデータ分割手段110へ入力され
る。データ分割手段110により入力データ200は4
バイトデータ{x0、x5、x10、x15}201a
と12バイトデータ{x4、x9、x14、x3、x
8、x13、x2、x7、x12、x1、x6、x1
1}202とに振り分けられ、4バイトデータ{a0}
201bが部分データ換字手段111へ入力される。こ
こで4バイトデータ{x0、x5、x10、x15}2
01aと{a0}201bは説明のため区別しているが
同一データである。部分データ換字手段111は4バイ
トデータ{a0}201bを換字変換し、4バイトデー
タ{b0}203を出力する。12バイトデータ{x
4、x9、x14、x3、x8、x13、x2、x7、
x12、x1、x6、x11}202と4バイトデータ
{b0}203はデータ結合手段112により16バイ
ト中間データA{x4、x9、x14、x3、x8、x
13、x2、x7、x12、x1、x6、x11、{b
0}}300に結合され、一旦バッファメモリ102で
保持される。
・、x15}200がデータ分割手段110へ入力され
る。データ分割手段110により入力データ200は4
バイトデータ{x0、x5、x10、x15}201a
と12バイトデータ{x4、x9、x14、x3、x
8、x13、x2、x7、x12、x1、x6、x1
1}202とに振り分けられ、4バイトデータ{a0}
201bが部分データ換字手段111へ入力される。こ
こで4バイトデータ{x0、x5、x10、x15}2
01aと{a0}201bは説明のため区別しているが
同一データである。部分データ換字手段111は4バイ
トデータ{a0}201bを換字変換し、4バイトデー
タ{b0}203を出力する。12バイトデータ{x
4、x9、x14、x3、x8、x13、x2、x7、
x12、x1、x6、x11}202と4バイトデータ
{b0}203はデータ結合手段112により16バイ
ト中間データA{x4、x9、x14、x3、x8、x
13、x2、x7、x12、x1、x6、x11、{b
0}}300に結合され、一旦バッファメモリ102で
保持される。
【0028】続いて、データ攪拌処理手段101で行う
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第1列に対する攪拌処理を図3に示す。
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第1列に対する攪拌処理を図3に示す。
【0029】バッファメモリ102で保持されている1
6バイト中間データA{x4、x9、x14、x3、x
8、x13、x2、x7、x12、x1、x6、x1
1、{b0}}300がデータ分割手段110へ入力さ
れる。データ分割手段110により中間データA300
は4バイトデータ{x4、x9、x14、x3}301
aと12バイトデータ{x8、x13、x2、x7、x
12、x1、x6、x11、{b0}}302とに振り
分けられ、4バイトデータ{a1}301bが部分デー
タ換字手段111へ入力される。
6バイト中間データA{x4、x9、x14、x3、x
8、x13、x2、x7、x12、x1、x6、x1
1、{b0}}300がデータ分割手段110へ入力さ
れる。データ分割手段110により中間データA300
は4バイトデータ{x4、x9、x14、x3}301
aと12バイトデータ{x8、x13、x2、x7、x
12、x1、x6、x11、{b0}}302とに振り
分けられ、4バイトデータ{a1}301bが部分デー
タ換字手段111へ入力される。
【0030】この場合、データ分割手段110は、16
バイト中間データA300を中間データA300の第0
列に対応する4バイトデータ{x4、x9、x14、x
3}301aと、中間データA300の第1〜3列に対
応する12バイトデータ{x8、x13、x2、x7、
x12、x1、x6、x11、{b0}}302とに振
り分ける。
バイト中間データA300を中間データA300の第0
列に対応する4バイトデータ{x4、x9、x14、x
3}301aと、中間データA300の第1〜3列に対
応する12バイトデータ{x8、x13、x2、x7、
x12、x1、x6、x11、{b0}}302とに振
り分ける。
【0031】ここで4バイトデータ{x4、x9、x1
4、x3}301aと{a1}301bは説明のため区
別しているが同一データである。部分データ換字手段1
11は4バイトデータ{a1}301bを換字変換し、
4バイトデータ{b1}303を出力する。12バイト
データ{x8、x13、x2、x7、x12、x1、x
6、x11、{b0}}302と4バイトデータ{b
1}303はデータ結合手段112により16バイト中
間データB{x8、x13、x2、x7、x12、x
1、x6、x11、{b0}、{b1}}400に結合
され、一旦バッファメモリ102で保持される。
4、x3}301aと{a1}301bは説明のため区
別しているが同一データである。部分データ換字手段1
11は4バイトデータ{a1}301bを換字変換し、
4バイトデータ{b1}303を出力する。12バイト
データ{x8、x13、x2、x7、x12、x1、x
6、x11、{b0}}302と4バイトデータ{b
1}303はデータ結合手段112により16バイト中
間データB{x8、x13、x2、x7、x12、x
1、x6、x11、{b0}、{b1}}400に結合
され、一旦バッファメモリ102で保持される。
【0032】さらに、データ攪拌処理手段101で行う
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第2列に対する攪拌処理を図4に示す。
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第2列に対する攪拌処理を図4に示す。
【0033】バッファメモリ102で保持されている1
6バイト中間データB{x8、x13、x2、x7、x
12、x1、x6、x11、{b0}、{b1}}40
0がデータ分割手段110へ入力される。データ分割手
段110により中間データB400は4バイトデータ
{x8、x13、x2、x7}401aと12バイトデ
ータ{x12、x1、x6、x11、{b0}、{b
1}}402とに振り分けられ、4バイトデータ{a
2}401bが部分データ換字手段111へ入力され
る。
6バイト中間データB{x8、x13、x2、x7、x
12、x1、x6、x11、{b0}、{b1}}40
0がデータ分割手段110へ入力される。データ分割手
段110により中間データB400は4バイトデータ
{x8、x13、x2、x7}401aと12バイトデ
ータ{x12、x1、x6、x11、{b0}、{b
1}}402とに振り分けられ、4バイトデータ{a
2}401bが部分データ換字手段111へ入力され
る。
【0034】この場合、データ分割手段110は、16
バイト中間データB400を中間データB400の第0
列に対応する4バイトデータ{x8、x13、x2、x
7}401aと、中間データB400の第1〜3列に対
応する12バイトデータ{x12、x1、x6、x1
1、{b0}、{b1}}402とに振り分ける。
バイト中間データB400を中間データB400の第0
列に対応する4バイトデータ{x8、x13、x2、x
7}401aと、中間データB400の第1〜3列に対
応する12バイトデータ{x12、x1、x6、x1
1、{b0}、{b1}}402とに振り分ける。
【0035】ここで4バイトデータ{x8、x13、x
2、x7}401aと{a2}401bは説明のため区
別しているが同一データである。部分データ換字手段1
11は4バイトデータ{a2}401bを換字変換し、
4バイトデータ{b2}403を出力する。12バイト
データ{x12、x1、x6、x11、{b0}、{b
1}}402と4バイトデータ{b2}403はデータ
結合手段112により16バイト中間データC{x1
2、x1、x6、x11、{b0}、{b1}、{b
2}}500に結合され、一旦バッファメモリ102で
保持される。
2、x7}401aと{a2}401bは説明のため区
別しているが同一データである。部分データ換字手段1
11は4バイトデータ{a2}401bを換字変換し、
4バイトデータ{b2}403を出力する。12バイト
データ{x12、x1、x6、x11、{b0}、{b
1}}402と4バイトデータ{b2}403はデータ
結合手段112により16バイト中間データC{x1
2、x1、x6、x11、{b0}、{b1}、{b
2}}500に結合され、一旦バッファメモリ102で
保持される。
【0036】そして、データ攪拌処理手段101で行う
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第3列に対する攪拌処理を図5に示す。
4×4バイトマトリクス形状データの攪拌処理のうち、
出力データの第3列に対する攪拌処理を図5に示す。
【0037】バッファメモリ102で保持されている1
6バイト中間データC{x12、x1、x6、x11、
{b0}、{b1}、{b2}}500がデータ分割手
段110へ入力される。データ分割手段110により中
間データC500は4バイトデータ{x12、x1、x
6、x11}501aと12バイトデータ{{b0}、
{b1}、{b2}}502とに振り分けられ、4バイ
トデータ{a3}501bが部分データ換字手段111
へ入力される。
6バイト中間データC{x12、x1、x6、x11、
{b0}、{b1}、{b2}}500がデータ分割手
段110へ入力される。データ分割手段110により中
間データC500は4バイトデータ{x12、x1、x
6、x11}501aと12バイトデータ{{b0}、
{b1}、{b2}}502とに振り分けられ、4バイ
トデータ{a3}501bが部分データ換字手段111
へ入力される。
【0038】この場合、データ分割手段110は、16
バイト中間データC500を中間データC500の第0
列に対応する4バイトデータ{x12、x1、x6、x
11}501aと、中間データC500の第1〜3列に
対応する12バイトデータ{{b0}、{b1}、{b
2}}502とに振り分ける。
バイト中間データC500を中間データC500の第0
列に対応する4バイトデータ{x12、x1、x6、x
11}501aと、中間データC500の第1〜3列に
対応する12バイトデータ{{b0}、{b1}、{b
2}}502とに振り分ける。
【0039】ここで4バイトデータ{x12、x1、x
6、x11}501aと{a3}501bは説明のため
区別しているが同一データである。部分データ換字手段
111は4バイトデータ{a3}501bを換字変換
し、4バイトデータ{b3}503を出力する。12バ
イトデータ{{b0}、{b1}、{b2}}502と
4バイトデータ{b3}503はデータ結合手段112
により16バイト出力データ{{b0}、{b1}、
{b2}、{b3}}510aに結合され、一旦バッフ
ァメモリ102で保持される。
6、x11}501aと{a3}501bは説明のため
区別しているが同一データである。部分データ換字手段
111は4バイトデータ{a3}501bを換字変換
し、4バイトデータ{b3}503を出力する。12バ
イトデータ{{b0}、{b1}、{b2}}502と
4バイトデータ{b3}503はデータ結合手段112
により16バイト出力データ{{b0}、{b1}、
{b2}、{b3}}510aに結合され、一旦バッフ
ァメモリ102で保持される。
【0040】図2から図5を用いて説明したデータ攪拌
処理手段101で行うデータ攪拌処理により、16バイ
トデータの攪拌が1回完了する。
処理手段101で行うデータ攪拌処理により、16バイ
トデータの攪拌が1回完了する。
【0041】以上のようにして本実施の形態におけるデ
ータ攪拌回路では、部分データ換字手段111でデータ
換字変換を行う前にデータの転置変換を確定しておく必
要がなく、従来、転置変換で必要であった1サイクルが
不要となる。この場合、データ攪拌処理手段を1回実行
するのに必要な処理時間は、データの各列に対する処理
として1サイクル必要であることより、第0〜3列の4
列に必要な4サイクルとなる。
ータ攪拌回路では、部分データ換字手段111でデータ
換字変換を行う前にデータの転置変換を確定しておく必
要がなく、従来、転置変換で必要であった1サイクルが
不要となる。この場合、データ攪拌処理手段を1回実行
するのに必要な処理時間は、データの各列に対する処理
として1サイクル必要であることより、第0〜3列の4
列に必要な4サイクルとなる。
【0042】この後、16バイトデータの攪拌を規定の
回数行った後に、データ攪拌処理手段101から出力さ
れるデータ{{b0}、{b1}、{b2}、{b
3}}510aが16バイト出力データ{y0、y1、
・・・、y15}510bとして、後処理手段104へ
入力される。16バイト出力データ510bは後処理手
段104により暗号鍵との排他的論理和演算などの後処
理を施された後、4×4バイトマトリクス形状の16バ
イト出力データ{c0、c1、・・・、c15}121
として出力される。
回数行った後に、データ攪拌処理手段101から出力さ
れるデータ{{b0}、{b1}、{b2}、{b
3}}510aが16バイト出力データ{y0、y1、
・・・、y15}510bとして、後処理手段104へ
入力される。16バイト出力データ510bは後処理手
段104により暗号鍵との排他的論理和演算などの後処
理を施された後、4×4バイトマトリクス形状の16バ
イト出力データ{c0、c1、・・・、c15}121
として出力される。
【0043】なお、本実施の形態においては、図1に示
すデータ攪拌処理手段101をループする回路構成につ
いて説明したが、図6に示すようにデータ攪拌処理手段
101を規定の回数分備えた構成で実現してもよい。そ
の場合、図1の場合と比較して回路規模は大きくなる
が、処理速度はパイプライン処理が可能となり高速とな
る。
すデータ攪拌処理手段101をループする回路構成につ
いて説明したが、図6に示すようにデータ攪拌処理手段
101を規定の回数分備えた構成で実現してもよい。そ
の場合、図1の場合と比較して回路規模は大きくなる
が、処理速度はパイプライン処理が可能となり高速とな
る。
【0044】
【発明の効果】本発明は、データ分割手段を使ってマト
リクス形状のデータから換字変換対象となるデータを抽
出することにより、データ換字変換を行う前にデータ転
置変換のみを実施するのに必要な処理時間が不要にな
り、データ攪拌処理に要する時間の短縮が可能となる。
リクス形状のデータから換字変換対象となるデータを抽
出することにより、データ換字変換を行う前にデータ転
置変換のみを実施するのに必要な処理時間が不要にな
り、データ攪拌処理に要する時間の短縮が可能となる。
【図1】データ攪拌回路を示す図
【図2】第0列に対する攪拌処理を示す図
【図3】第1列に対する攪拌処理を示す図
【図4】第2列に対する攪拌処理を示す図
【図5】第3列に対する攪拌処理を示す図
【図6】データ攪拌回路(パイプライン構成)を示す図
【図7】複数個のデータ攪拌処理手段を持つ従来例を示
す図
す図
【図8】単一のデータ攪拌処理手段を持つ従来例を示す
図
図
【図9】データ転置手段とデータ換字手段を示す図
【図10】部分データ換字手段を示す図
【図11】回路規模に制限がある場合の従来例を示す図
100 前処理手段
101 データ攪拌処理手段
102 バッファメモリ
103 セレクタ
104 後処理手段
110 データ分割手段
111 部分データ換字手段
112 データ結合手段
120,200 入力データ
121,510a,510b 出力データ
300 中間データA
400 中間データB
500 中間データC
Claims (8)
- 【請求項1】転置変換と換字変換によりデータ攪拌処理
を行う回路であって、 データを振り分けるデータ分割手段と、 前記データ分割手段により抽出した部分データを換字変
換する部分データ換字手段と、 データを結合するデータ結合手段と、 攪拌するデータの中間状態を保持するバッファメモリ
と、を備えることを特徴とするデータ攪拌回路。 - 【請求項2】前記データは、マトリクス形状を持ち、 前記転置変換は、マトリクス形状のデータの行あるいは
列方向に対する変換であると共に、 前記換字変換は、前記転置変換とは異なる方向の列ある
いは行データに対する換字変換を行うことを特徴とする
請求項1記載のデータ攪拌回路。 - 【請求項3】前記データ攪拌処理は、マトリクス形状デ
ータの転置変換後に換字変換を行うものであり、 前記データ分割手段は、マトリクス形状データから転置
操作後と同様のデータを前記部分データ換字手段へ出力
することを特徴とする請求項2記載のデータ攪拌回路。 - 【請求項4】前記データ攪拌処理は、マトリクス形状デ
ータの換字変換後に転置変換を行うものであり、 前記データ分割手段は、マトリクス形状データから部分
データ換字手段に入力されるべきデータと、データ結合
手段に入力されるべきデータとに分割するものであり、 前記データ結合手段は、前記部分データ換字手段の出力
と、前記データ分割手段の出力とを入力して、転置変換
後と同等のデータになるようにデータを結合することを
特徴とする請求項2記載のデータ攪拌回路。 - 【請求項5】転置変換と換字変換によりデータ攪拌処理
を行う方法であって、 データを振り分けるデータ分割ステップと、 前記データ分割ステップにより抽出した部分データを換
字変換する部分データ換字ステップと、 データを結合するデータ結合ステップと、 攪拌するデータの中間状態を保持するバッファメモリ
と、を備えることを特徴とするデータ攪拌方法。 - 【請求項6】前記データは、マトリクス形状を持ち、 前記転置変換は、マトリクス形状のデータの行あるいは
列方向に対する変換であると共に、 前記換字変換は、前記転置変換とは異なる方向の列ある
いは行データに対する換字変換を行うことを特徴とする
請求項5記載のデータ攪拌方法。 - 【請求項7】前記データ攪拌処理は、マトリクス形状デ
ータの転置変換後に換字変換を行うものであり、 前記データ分割ステップは、マトリクス形状データから
転置操作後と同様のデータを前記部分データ換字ステッ
プへ出力することを特徴とする請求項6記載のデータ攪
拌方法。 - 【請求項8】前記データ攪拌処理は、マトリクス形状デ
ータの換字変換後に転置変換を行うものであり、 前記データ分割ステップは、マトリクス形状データから
部分データ換字ステップに入力されるべきデータと、デ
ータ結合ステップに入力されるべきデータとに分割する
ものであり、 前記データ結合ステップは、前記部分データ換字ステッ
プの出力と、前記データ分割ステップの出力とを入力し
て、転置変換後と同等のデータになるようにデータを結
合することを特徴とする請求項6記載のデータ攪拌方
法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341655A JP2003143120A (ja) | 2001-11-07 | 2001-11-07 | データ攪拌回路とデータ攪拌方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001341655A JP2003143120A (ja) | 2001-11-07 | 2001-11-07 | データ攪拌回路とデータ攪拌方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2003143120A true JP2003143120A (ja) | 2003-05-16 |
Family
ID=19155642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001341655A Withdrawn JP2003143120A (ja) | 2001-11-07 | 2001-11-07 | データ攪拌回路とデータ攪拌方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2003143120A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009069844A (ja) * | 2004-08-12 | 2009-04-02 | Cmla Llc | セキュリティ強化のための転置データ変換 |
US8077861B2 (en) | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
US8155310B2 (en) | 2004-08-12 | 2012-04-10 | Cmla, Llc | Key derivation functions to enhance security |
-
2001
- 2001-11-07 JP JP2001341655A patent/JP2003143120A/ja not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009069844A (ja) * | 2004-08-12 | 2009-04-02 | Cmla Llc | セキュリティ強化のための転置データ変換 |
JP4820821B2 (ja) * | 2004-08-12 | 2011-11-24 | シー エム エル エー, リミテッド ライアビリティ カンパニー | セキュリティ強化のための転置データ変換 |
US8077861B2 (en) | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
JP2012023764A (ja) * | 2004-08-12 | 2012-02-02 | Cmla Llc | セキュリティ強化のための転置データ変換 |
JP2012023763A (ja) * | 2004-08-12 | 2012-02-02 | Cmla Llc | セキュリティ強化のための転置データ変換 |
US8155310B2 (en) | 2004-08-12 | 2012-04-10 | Cmla, Llc | Key derivation functions to enhance security |
KR101366185B1 (ko) | 2004-08-12 | 2014-02-24 | 씨엠엘에이 엘엘씨 | 보안성을 향상시키는 순열 데이터 변환 |
US8737608B2 (en) | 2004-08-12 | 2014-05-27 | Cmla, Llc | Exponential data transform to enhance security |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5141910B2 (ja) | Sms4暗号アルゴリズムを実現する暗号化および復号化処理方法とそのシステム | |
US4525796A (en) | Pipelined operation unit for vector data | |
JP2003015522A (ja) | 暗号回路 | |
CN111563281B (zh) | 一种支持多种加解密算法的处理器及其实现方法 | |
CN112398639A (zh) | 一种Fountain轻量级加密算法的实现装置、方法及应用 | |
CN108052805B (zh) | 一种数据加解密方法和装置 | |
KR100510030B1 (ko) | 간단한회로로분기해저드의저감을실현한파이프라인프로세서 | |
US3524976A (en) | Binary coded decimal to binary conversion | |
JP2003143120A (ja) | データ攪拌回路とデータ攪拌方法 | |
JP4120193B2 (ja) | 暗号復号回路 | |
US6865272B2 (en) | Executing permutations | |
KR20030051111A (ko) | AES Rijndael(라인달) 암호 알고리듬의 하드웨어 구현을위한 라운드 처리부 회로 및 온라인 라운드 키 생성 회로 | |
JP2000075785A (ja) | 高速暗号処理回路および処理方法 | |
CN113222157A (zh) | 一种量子模拟方法、装置、电子装置及存储介质 | |
CN109039608A (zh) | 一种基于双S核的8-bitAES电路 | |
Fu et al. | A simplified FPGA implementation based on an Improved DES algorithm | |
JP3277894B2 (ja) | 情報処理装置及びコード生成方法 | |
JP3917357B2 (ja) | 非線形変換方法及びプログラムを記録したコンピュータ読み取り可能な記録媒体及び非線形変換装置 | |
JP4107043B2 (ja) | 演算処理装置 | |
JP2007333854A (ja) | 乱数発生回路 | |
JPH08101639A (ja) | データ拡散方法 | |
JPS6113233B2 (ja) | ||
JP4745598B2 (ja) | 暗号回路 | |
KR100384873B1 (ko) | 데이터 암호화 표준 알고리즘을 이용한 암호화 장치 | |
JPH05307361A (ja) | データ拡散装置及びデータ拡散方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041102 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20050701 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060508 |