JP2008203306A - Encryption processor - Google Patents

Encryption processor Download PDF

Info

Publication number
JP2008203306A
JP2008203306A JP2007035953A JP2007035953A JP2008203306A JP 2008203306 A JP2008203306 A JP 2008203306A JP 2007035953 A JP2007035953 A JP 2007035953A JP 2007035953 A JP2007035953 A JP 2007035953A JP 2008203306 A JP2008203306 A JP 2008203306A
Authority
JP
Japan
Prior art keywords
data
unit
encryption
pipeline
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2007035953A
Other languages
Japanese (ja)
Inventor
Atsushi Herai
篤志 戸來
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.)
Konica Minolta Business Technologies Inc
Original Assignee
Konica Minolta Business Technologies Inc
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 Konica Minolta Business Technologies Inc filed Critical Konica Minolta Business Technologies Inc
Priority to JP2007035953A priority Critical patent/JP2008203306A/en
Publication of JP2008203306A publication Critical patent/JP2008203306A/en
Withdrawn legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide an encryption processor which can improve the encrypting/decoding speed while suppressing the degrading of the encryption reliability. <P>SOLUTION: This encryption processor divides the plain sentence to be encrypted into as many sections as the steps in the pipeline encryption calculator 20 to set up the data groups; divides those data groups into plain sentence blocks of 128 bits based on the AES specifications; and continuously inputs the plain sentence block N and the plain sentence block N+1 to the XOR calculator 21 following the timing rule to separate into steps more than the steps in the pipeline encryption calculator 20. The XOR calculator 21 calculates the sequentially input plain sentence block N+1 and the ciphertext block N' output from the pipeline encryption calculator 20. The pipeline encryption calculator 20 applies pipeline processing to the calculation results by performing parallel encrypting calculation through the encryption calculator of two or more steps connected through a pipeline structure. <P>COPYRIGHT: (C)2008,JPO&INPIT

Description

本発明は、平文の暗号化もしくは暗号文の復号化を行う暗号処理装置に関する。   The present invention relates to a cryptographic processing apparatus that performs plaintext encryption or decryption of ciphertext.

一般に、データの暗号化はセキュリティが強固で、かつ高速処理が可能なものが求められる。暗号化方式の主流は、DES(データ標準暗号化方式、Data Encryption Standard)からAES(次世代標準暗号化方式、Advanced Encryption Standard)に移行しており、暗号強度が強くなってきている。AES暗号方式は、データを128ビットのブロック長単位で暗号化/復号化するブロック暗号であり、複数種類のモードがあって目的や使用方法により選択される。   In general, data encryption is required to be strong in security and capable of high-speed processing. The mainstream of the encryption method is shifting from DES (Data Standard Encryption Method, Data Encryption Standard) to AES (Next Generation Standard Encryption Method, Advanced Encryption Standard), and the encryption strength is getting stronger. The AES encryption method is a block cipher that encrypts / decrypts data in block length units of 128 bits, and has a plurality of types of modes, and is selected according to the purpose and usage method.

たとえば、図8はCBC(Cipher Block Chaining)モードの暗号化回路200の構成例を示しており、図9はCBCモードの復号化回路210の構成例を示しており、図10はCBCモードにおける暗号化/復号化プロセスを示している。   For example, FIG. 8 shows a configuration example of an encryption circuit 200 in CBC (Cipher Block Chaining) mode, FIG. 9 shows a configuration example of a decryption circuit 210 in CBC mode, and FIG. 10 shows encryption in the CBC mode. Fig. 4 illustrates the encryption / decryption process.

図8に示すように、暗号化回路200は、入力値にAES規格に基づいた暗号演算を施して演算結果(暗号ベクタ)を出力するAES暗号演算部201と、AES暗号演算部201に入力する暗号鍵を保持するためのKEYレジスタ202と、暗号化の対象となるデータブロックを保持する入力レジスタ203と、初回の暗号演算に使用する初期の暗号ベクタ(イニシャルベクタ)を保持するためのIVレジスタ204と、AES暗号演算部201の演算結果として出力される暗号ベクタとIVレジスタ204に保持されているイニシャルベクタとのいずれかを選択するセレクタ205と、入力レジスタ203の出力とセレクタ205の出力との排他的論理和を演算してAES暗号演算部201の入力に与えるXOR演算部206と、AES暗号演算部201の出力(暗号化の結果として生成されたデータブロック)を保持する出力レジスタ207とを備えている。   As shown in FIG. 8, the encryption circuit 200 performs an encryption operation based on the AES standard on the input value and outputs an operation result (encryption vector), and inputs the result to the AES encryption operation unit 201. A KEY register 202 for holding an encryption key, an input register 203 for holding a data block to be encrypted, and an IV register for holding an initial encryption vector (initial vector) used for the first cryptographic operation 204, a selector 205 that selects one of the cipher vector output as the operation result of the AES cipher operation unit 201 and the initial vector held in the IV register 204, the output of the input register 203, and the output of the selector 205 An XOR operation unit 206 that calculates the exclusive OR of the two values and gives them to the input of the AES encryption operation unit 201, and AES And an output register 207 which holds the output of the No. calculation unit 201 (the result of the encryption as generated data blocks).

図9に示すように、復号化回路210は、入力値にAES規格に基づいた復号演算を施して演算結果(復号ベクタ)を出力するAES復号演算部211と、AES復号演算部211に入力する暗号鍵を保持するためのKEYレジスタ212と、復号化の対象となるデータブロックを保持する入力レジスタ213と、初回の復号演算に使用する初期の暗号ベクタ(イニシャルベクタ)を保持するためのIVレジスタ214と、入力レジスタ213に保持されているデータブロックとIVレジスタ214に保持されているイニシャルベクタとのいずれかを選択するセレクタ215と、AES復号演算部211の出力とセレクタ215の出力との排他的論理和を演算するXOR演算部216と、XOR演算部216の出力(復号化の結果として生成されたデータブロック)を保持する出力レジスタ217とを備えている。   As shown in FIG. 9, the decoding circuit 210 performs decoding operations based on the AES standard on the input values and outputs an operation result (decoding vector), and inputs them to the AES decoding operation unit 211. A KEY register 212 for holding an encryption key, an input register 213 for holding a data block to be decrypted, and an IV register for holding an initial encryption vector (initial vector) used for the first decryption operation 214, a selector 215 that selects one of the data block held in the input register 213 and the initial vector held in the IV register 214, and the output of the AES decoding arithmetic unit 211 and the output of the selector 215 are exclusive. XOR operation unit 216 that calculates a logical OR, and the output of XOR operation unit 216 (generated as a result of decoding And an output register 217 for holding the data blocks).

図10(A)に示すように、暗号化プロセスの初回T1には、暗号化回路200における入力レジスタ203の保持している暗号化の対象となるデータブロック(平文1)とIVレジスタ204の保持しているイニシャルベクタIVとがXOR演算部206に入力され、XOR演算部206はその暗号化対象のデータブロックとイニシャルベクタIVとの排他的論理和演算を行い、演算結果をAES暗号演算部201に出力する。AES暗号演算部201は、XOR演算部206から入力された演算結果とKEYレジスタ202に保持されている暗号鍵(KEY)とのAES規格に基づいた暗号演算を行い、その演算結果が暗号化の結果のデータブロック(暗号文1)として出力レジスタ207に保持される。AES暗号演算部201から出力された演算結果は、暗号ベクタとして2回目T2にXOR演算部206にも入力される。   As shown in FIG. 10A, at the first T1 of the encryption process, the data block (plaintext 1) to be encrypted and held in the input register 203 in the encryption circuit 200 and the IV register 204 are held. The initial vector IV is input to the XOR operation unit 206, and the XOR operation unit 206 performs an exclusive OR operation between the data block to be encrypted and the initial vector IV, and the operation result is obtained from the AES encryption operation unit 201. Output to. The AES encryption operation unit 201 performs encryption operation based on the AES standard between the operation result input from the XOR operation unit 206 and the encryption key (KEY) held in the KEY register 202, and the operation result is encrypted. The resultant data block (ciphertext 1) is held in the output register 207. The operation result output from the AES encryption operation unit 201 is also input to the XOR operation unit 206 at the second time T2 as an encryption vector.

2回目以降(T2、T3、・・・Tn)には、XOR演算部206は、入力レジスタ203に保持されている暗号化対象のデータブロック(平文2、平文3、・・・平文n)とAES暗号演算部201から入力された前回の暗号ベクタとの排他的論理和演算を行い、演算結果をAES暗号演算部201に出力する。AES暗号演算部201は、XOR演算部206から入力された演算結果とKEYレジスタ202に保持されている暗号鍵とのAES規格に基づいた演算を行い、その演算結果が暗号化の結果のデータブロック(暗号文2、暗号文3、・・・暗号文n)として出力レジスタ207に保持される。この2回目以降も、AES暗号演算部201から出力された演算結果は、次回の暗号ベクタとしてXOR演算部206に入力される。   After the second time (T2, T3,... Tn), the XOR operation unit 206 and the encryption target data block (plaintext 2, plaintext 3,... Plaintext n) held in the input register 203 An exclusive OR operation with the previous encryption vector input from the AES encryption operation unit 201 is performed, and the operation result is output to the AES encryption operation unit 201. The AES cipher operation unit 201 performs an operation based on the AES standard between the operation result input from the XOR operation unit 206 and the encryption key held in the KEY register 202, and the operation result is a data block of an encryption result It is held in the output register 207 as (ciphertext 2, ciphertext 3,... Ciphertext n). In the second and subsequent times, the calculation result output from the AES encryption calculation unit 201 is input to the XOR calculation unit 206 as the next encryption vector.

図10(B)に示すように、復号化プロセスの初回T1には、復号化回路210における入力レジスタ213の保持している復号化の対象となるデータブロック(暗号文1)とKEYレジスタ212の保持している暗号鍵(KEY)とがAES復号演算部211に入力され、AES復号演算部211はその復号化対象のデータブロックと暗号鍵とのAES規格に基づいた復号演算を行い、演算結果をXOR演算部216に出力する。初回T1にXOR演算部216は、AES復号演算部211から入力された演算結果とIVレジスタ214に保持されているイニシャルベクタIVとの排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック(平文1)として出力レジスタ217に保持される。   As shown in FIG. 10B, at the first T1 of the decryption process, the data block (ciphertext 1) to be decrypted held in the input register 213 in the decryption circuit 210 and the KEY register 212 are stored. The held encryption key (KEY) is input to the AES decryption operation unit 211. The AES decryption operation unit 211 performs a decryption operation based on the AES standard between the data block to be decrypted and the encryption key, and the operation result Is output to the XOR operation unit 216. At the first time T1, the XOR operation unit 216 performs exclusive OR operation between the operation result input from the AES decoding operation unit 211 and the initial vector IV held in the IV register 214, and the operation result is the result of decoding. Is stored in the output register 217 as a data block (plaintext 1).

2回目以降(T2、T3、・・・Tn)には、入力レジスタ213の保持している復号化の対象となるデータブロック(暗号文2、暗号文3、・・・暗号文n)とKEYレジスタ212の保持している暗号鍵とがAES復号演算部211に入力され、AES復号演算部211はその復号化対象のデータブロックと暗号鍵とのAES規格に基づいた復号演算を行い、演算結果をXOR演算部216に出力する。XOR演算部216は、AES復号演算部211から入力された演算結果と、前回、入力レジスタ213に保持されているデータブロック(暗号文1、暗号文2、・・・暗号文n−1)との排他的論理和演算を行い、その演算結果が復号化の結果のデータブロック(平文2、平文3、・・・平文n)として出力レジスタ217に保持される。   From the second time (T2, T3,... Tn), the data block (ciphertext 2, ciphertext 3,... Ciphertext n) held in the input register 213 and the KEY The encryption key held in the register 212 is input to the AES decryption operation unit 211. The AES decryption operation unit 211 performs a decryption operation based on the AES standard between the data block to be decrypted and the encryption key, and the operation result Is output to the XOR operation unit 216. The XOR operation unit 216 includes the operation result input from the AES decryption operation unit 211 and the previous data block (ciphertext 1, ciphertext 2,... Ciphertext n-1) held in the input register 213. And the result of the operation is held in the output register 217 as a data block (plain text 2, plain text 3,... Plain text n) as a result of decryption.

図11は、CBCモードの暗号化プロセスにおける暗号化の対象となるデータブロック(平文)の入力タイミングと暗号化の結果のデータブロック(暗号文)の出力タイミングに関するタイミングチャートを示している。図10(A)でも説明したように、初回は平文1とイニシャルベクタIVとで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文1'が生成される。2回目は平文2と暗号文1'とで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文2'が生成される。3回目以降も同様に、平文3と暗号文2'とで排他的論理和演算(XOR)を行い、その演算結果をAES暗号演算部201に入力し暗号文3'が生成され、最終回には平文nと暗号文(n−1)'とで排他的論理和演算(XOR)を行い、その結果をAES暗号演算部201に入力し暗号文n'が生成される。   FIG. 11 is a timing chart relating to the input timing of the data block (plain text) to be encrypted in the CBC mode encryption process and the output timing of the data block (cipher text) as a result of encryption. As described with reference to FIG. 10A, the exclusive OR operation (XOR) is performed on the plaintext 1 and the initial vector IV for the first time, and the operation result is input to the AES cipher operation unit 201 to generate the ciphertext 1 ′. Is done. The second time, an exclusive OR operation (XOR) is performed on the plaintext 2 and the ciphertext 1 ′, and the operation result is input to the AES cipher operation unit 201 to generate a ciphertext 2 ′. Similarly, after the third time, an exclusive OR operation (XOR) is performed on the plaintext 3 and the ciphertext 2 ′, and the operation result is input to the AES cipher operation unit 201 to generate the ciphertext 3 ′. Performs an exclusive OR operation (XOR) on plaintext n and ciphertext (n−1) ′, and inputs the result to the AES cipher operation unit 201 to generate ciphertext n ′.

図12は、CBCモードの復号化プロセスにおける復号化の対象となるデータブロック(暗号文)の入力タイミングと復号化の結果のデータブロック(平文)の出力タイミングに関するタイミングチャートを示している。図10(B)でも説明したように、初回は暗号文1'をAES復号演算部211に入力して復号演算を行い、その演算結果とイニシャルベクタIVとで排他的論理和演算(XOR)を行い平文1が生成される。2回目は暗号文2'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文1'とで排他的論理和演算(XOR)を行い平文2が生成される。3回目以降も同様に、暗号文3'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文2'とで排他的論理和演算(XOR)を行い平文3が生成され、最終回には暗号文n'をAES復号演算部211に入力して復号演算を行い、その演算結果と暗号文(n−1)'とで排他的論理和演算(XOR)を行い平文nが生成される。   FIG. 12 is a timing chart regarding the input timing of the data block (ciphertext) to be decrypted in the decryption process in the CBC mode and the output timing of the data block (plaintext) as a result of the decryption. As described with reference to FIG. 10B, the ciphertext 1 ′ is first input to the AES decryption operation unit 211 to perform a decryption operation, and an exclusive OR operation (XOR) is performed between the operation result and the initial vector IV. A plaintext 1 is generated. The second time, the ciphertext 2 ′ is input to the AES decryption operation unit 211 to perform a decryption operation, and an exclusive OR operation (XOR) is performed on the operation result and the ciphertext 1 ′ to generate plaintext 2. Similarly, after the third time, the ciphertext 3 ′ is input to the AES decryption operation unit 211 to perform a decryption operation, and an exclusive OR operation (XOR) is performed between the operation result and the ciphertext 2 ′ to generate a plaintext 3 In the final round, the ciphertext n ′ is input to the AES decryption operation unit 211 to perform a decryption operation, and an exclusive OR operation (XOR) is performed between the operation result and the ciphertext (n−1) ′ to obtain a plaintext. n is generated.

図13は、暗号化回路200のAES暗号演算部201および復号化回路210のAES復号演算部211を構成するノンパイプライン回路220のブロック図を示しており、図14は、ノンパイプライン回路220から出力される処理データの出力タイミングチャートを示している。   FIG. 13 shows a block diagram of a non-pipeline circuit 220 constituting the AES encryption operation unit 201 of the encryption circuit 200 and the AES decryption operation unit 211 of the decryption circuit 210. FIG. 14 shows the non-pipeline circuit 220. 2 shows an output timing chart of the processing data output from.

図13に示すように、AES暗号方式のノンパイプライン回路220は、入力されたデータブロック(indata)に対し、置換(ステップS301)、並べ替え(ステップS302)、行列演算(ステップS303)、XOR演算(ステップS304)の4つの処理を1ラウンドで行い、この1ラウンドを1クロック(CLK)で処理して11回繰り返す。最後に1クロックを入れて計12クロックでブロック長128ビットを処理し、処理済みのデータブロック(outdata)を出力する。   As shown in FIG. 13, the non-pipeline circuit 220 of the AES encryption system replaces (step S301), rearranges (step S302), matrix operation (step S303), XOR for the input data block (indata). Four processes of calculation (step S304) are performed in one round, and this one round is processed with one clock (CLK) and repeated 11 times. Finally, 1 clock is input, a block length of 128 bits is processed in a total of 12 clocks, and a processed data block (outdata) is output.

したがって、ノンパイプライン回路220による処理済みのデータブロックの出力タイミングは、図14に示すように、最初のデータブロック(data1)が出力されるまでに12クロックかかり、その後は11クロック毎にデータブロック(data2、data3・・・)が出力される(図11および図12参照)。   Accordingly, as shown in FIG. 14, the output timing of the data block processed by the non-pipeline circuit 220 takes 12 clocks until the first data block (data1) is output, and thereafter, the data block is output every 11 clocks. (Data2, data3...) Are output (see FIGS. 11 and 12).

このようなノンパイプライン回路220による暗号化/復号化の処理では、各回で固定長(128ビット)のデータブロックの暗号化/復号化を行い、長いビット長の平文や暗号文を処理するためには多数の回数を時系列に処理するので、処理時間が長くなってしまう。   In such encryption / decryption processing by the non-pipeline circuit 220, a fixed-length (128 bits) data block is encrypted / decrypted each time to process a long-bit plaintext or ciphertext. Since a large number of times are processed in time series, the processing time becomes long.

これに対し、たとえば、平文ブロックの位置情報(ブロック番号)とイニシャルベクタ(IV)とを演算してスクランブルデータを求め、このスクランブルデータと平文ブロックとの排他的論理和を演算した演算結果を複数段の暗号化回路でパイプライン処理により暗号化して暗号文ブロックを生成することにより、またその暗号文ブロックをパイプライン処理により復号化することにより、大量のデータを暗号化/復号化する場合の処理速度を高めるようにした技術がある(たとえば、特許文献1参照。)。   On the other hand, for example, the position information (block number) of the plaintext block and the initial vector (IV) are calculated to obtain scrambled data, and a plurality of calculation results obtained by calculating exclusive OR of the scrambled data and the plaintext block are obtained. When encrypting / decrypting a large amount of data by generating a ciphertext block by encrypting it by pipeline processing with a stage encryption circuit, and decrypting the ciphertext block by pipeline processing There is a technique for increasing the processing speed (see, for example, Patent Document 1).

特開平5−249891号公報JP-A-5-249891

上記のパイプライン処理を用いた暗号化/復号化の技術は、暗号化回路のパイプライン化を容易にするために、暗号文を入力側にフィードバックせずに平文をスクランブルするようにしており、CBCモードには対応していない。そのため、暗号文を入力に戻して次の平文の暗号化に使用することにより暗号化強度を高めているCBCモードなどに比べると、暗号化強度が低下してしまう。   In the encryption / decryption technology using the above pipeline processing, the plaintext is scrambled without feeding back the ciphertext to the input side in order to facilitate the pipeline of the encryption circuit. The CBC mode is not supported. Therefore, the encryption strength is reduced as compared with the CBC mode in which the encryption strength is increased by returning the ciphertext to the input and using it for encryption of the next plaintext.

本発明は、上記の問題を解決しようとするものであり、暗号化強度の低下を抑制しつつ、暗号化/復号化の処理速度を向上することができる暗号処理装置を提供することを目的としている。   The present invention is intended to solve the above-described problem, and an object of the present invention is to provide an encryption processing apparatus capable of improving the processing speed of encryption / decryption while suppressing a decrease in encryption strength. Yes.

かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。   The gist of the present invention for achieving the object lies in the inventions of the following items.

[1]複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
[1] A pipeline encryption processing unit in which a plurality of encryption processing units are connected in a pipeline structure;
An arithmetic unit that calculates the unit data to be input and the encrypted data output from the pipeline encryption processing unit, and inputs the operation result to the pipeline encryption processing unit;
The data group to be encrypted is divided into unit data, and one unit data and subsequent unit data are separated by at least the number of stages of the pipeline structure of the pipeline encryption processing unit according to the timing rule. A control unit that inputs to the computation unit;
A cryptographic processing apparatus comprising:

上記発明では、制御部は暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力する。演算部は、パイプライン暗号化処理部から出力された暗号データと制御部によって入力される単位データとを演算し、その演算結果をパイプライン暗号化処理部に入力する。パイプライン暗号化処理部は、演算部から入力される演算結果に対し、パイプライン構造で接続された複数の暗号化処理部によりその段数分の暗号演算を行って暗号データを生成する。   In the above invention, the control unit divides the data group to be encrypted into unit data, and separates one unit data and subsequent unit data by the number of stages of the pipeline structure of the pipeline encryption processing unit. Input to the arithmetic unit according to the timing rule. The calculation unit calculates the encrypted data output from the pipeline encryption processing unit and the unit data input by the control unit, and inputs the calculation result to the pipeline encryption processing unit. The pipeline encryption processing unit performs cryptographic operations for the number of stages by a plurality of encryption processing units connected in a pipeline structure with respect to the operation result input from the operation unit to generate encrypted data.

パイプライン暗号化処理部は、パイプライン構造を備えていることで、演算部から次々と演算結果のデータを入力してその段数分だけ暗号演算を並列に実行できる。ただし、パイプライン暗号化処理部では段数分の暗号演算が行われるため、一の単位データの暗号データは一の単位データをパイプライン暗号化処理部に入力した時点からパイプライン段数分だけ遅れてパイプライン暗号化処理部から出力される。このため、一の単位データに後続する単位データを一の単位データに連続させて演算部に入力すると、たとえば、単位データNの暗号データN'と単位データN+1とを演算部で演算してパイプライン暗号化処理部に入力することはできない。   Since the pipeline encryption processing unit has a pipeline structure, it is possible to input data of operation results one after another from the operation unit and execute cryptographic operations in parallel for the number of stages. However, since the encryption processing for the number of stages is performed in the pipeline encryption processing unit, the encryption data of one unit data is delayed by the number of pipeline stages from the time when one unit data is input to the pipeline encryption processing unit. Output from the pipeline encryption processing unit. For this reason, when unit data subsequent to one unit data is continuously input to one unit data and input to the calculation unit, for example, the encrypted data N ′ and unit data N + 1 of the unit data N are calculated by the calculation unit and piped. It cannot be input to the line encryption processing unit.

そこで、一の単位データ(N)とこれに後続する単位データ(N+1)とをパイプライン暗号化処理部の段数分以上離れるタイミング規則で演算部に入力すれば、単位データN+1は、単位データNの暗号データN'がパイプライン暗号化処理部から出力された時点以降に演算部に入力されるようになり、暗号データN'と演算部への入力タイミングを合わせられるようになる。この入力タイミングを合わせることで、一の単位データの暗号データ(暗号ベクタ)を入力側にフィードバックさせて後続する単位データの暗号化が可能となる。   Therefore, if one unit data (N) and the following unit data (N + 1) are input to the arithmetic unit with a timing rule that is more than the number of stages of the pipeline encryption processing unit, the unit data N + 1 is converted into the unit data N The encrypted data N ′ is input to the arithmetic unit after the time when the encrypted data N ′ is output from the pipeline encryption processing unit, and the input timing to the arithmetic unit can be matched with the encrypted data N ′. By matching this input timing, encrypted data (encryption vector) of one unit data is fed back to the input side, and subsequent unit data can be encrypted.

このように、パイプライン暗号化処理部から出力される暗号データを入力に戻して次の単位データの暗号化に使用することにより、強度の高い暗号化プロセス(暗号化アルゴリズム)となり、暗号データを入力に戻して次の単位データの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。   In this way, by returning the encrypted data output from the pipeline encryption processing unit to the input and using it for the encryption of the next unit data, it becomes a strong encryption process (encryption algorithm), Compared with an encryption process in which the next unit data is not encrypted by returning to the input, it is possible to suppress a decrease in encryption strength.

またパイプライン暗号化処理部は、演算部から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、複数のデータ群について上記のタイミング規則で演算部に単位データを入力する動作を並行に行えば、複数のデータ群に対する暗号化を同時並行に行うことができるため、単一のノンパイプラインの暗号化処理部を使用して1つの単位データの暗号演算を所定回数繰り返すような暗号化処理を行う場合に比べ、暗号化の処理速度を向上することができる。   In addition, even if the operation result is continuously input from the operation unit, the pipeline encryption processing unit executes the encryption operation for the number of stages on the operation result that is continuously input in parallel, and performs pipeline processing. Can be generated and output continuously. For example, if the operation of inputting unit data to the arithmetic unit according to the above timing rule for a plurality of data groups is performed in parallel, the encryption for the plurality of data groups can be performed simultaneously, so that a single non-pipeline The encryption processing speed can be improved as compared with the case where the encryption processing unit is used to perform encryption processing such that the encryption operation of one unit data is repeated a predetermined number of times.

[2]初期ベクタを保持する保持レジスタと、
前記データ群に対する1回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする[1]に記載の暗号処理装置。
[2] A holding register for holding an initial vector;
When the first encryption for the data group is performed, a switching unit that inputs an initial vector held in the holding register instead of the encrypted data to the arithmetic unit;
The cryptographic processing apparatus according to [1], further comprising:

上記発明では、切替部は、1回目の暗号化が行われるときは暗号データに代えて保持レジスタに保持されている初期ベクタを演算部に入力し、2回目以降の暗号化が行われるときはパイプライン暗号化処理部から出力された暗号データを演算部に入力する。これにより、データ群の1番目の単位データに対する暗号化は初期ベクタを使用して実行され、そのデータ群の2番目以降の単位データの暗号化は暗号データを使用して実行される。   In the above invention, when the first encryption is performed, the switching unit inputs the initial vector held in the holding register instead of the encrypted data to the arithmetic unit, and when the second and subsequent encryptions are performed. The encrypted data output from the pipeline encryption processing unit is input to the arithmetic unit. Thereby, encryption of the first unit data of the data group is executed using the initial vector, and encryption of the second and subsequent unit data of the data group is executed using the encrypted data.

[3]前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする[1]または[2]に記載の暗号処理装置。
[3] The control unit inputs the subsequent unit data to the arithmetic unit at a timing when the encrypted data of the one unit data is returned to the arithmetic unit via the pipeline encryption processing unit. The cryptographic processing device according to [1] or [2].

上記発明では、演算部において、パイプライン暗号化処理部を経て演算部に戻される単位データNの暗号データN'と、暗号データN'が演算部に戻されるタイミングで入力される単位データN+1とが演算される。これにより、一の単位データの暗号データを使用した、一の単位データに後続する単位データの暗号化が可能となる。   In the above invention, in the arithmetic unit, the encrypted data N ′ of the unit data N that is returned to the arithmetic unit via the pipeline encryption processing unit, and the unit data N + 1 that is input at the timing when the encrypted data N ′ is returned to the arithmetic unit, Is calculated. As a result, it is possible to encrypt the unit data subsequent to the one unit data using the encrypted data of the one unit data.

[4]前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする[1]乃至[3]のいずれか1項に記載の暗号処理装置。
[4] The control unit continuously arranges the encrypted data of the one unit data and the encrypted data of the subsequent unit data that are output from the pipeline encryption processing unit separated by the timing rule. The cryptographic processing device according to any one of [1] to [3], which is characterized.

上記発明では、パイプライン暗号化処理部を経て演算部に戻される単位データNの暗号データN'と、単位データN+1との演算部への入力タイミングを合わせるために、単位データNと単位データN+1とをパイプライン段数分以上離れるタイミング規則(非連続)で演算部に入力することで、パイプライン暗号化処理部からは暗号データN'と暗号データ(N+1)'とがパイプライン段数分以上離れるタイミング規則(非連続)で出力される。この離間して出力される暗号データを連続配列させることにより、データ群単位では暗号データが汎用のCBCモードの並びになる。   In the above invention, the unit data N and the unit data N + 1 are matched with the input timing of the unit data N + 1 and the encrypted data N ′ of the unit data N returned to the operation unit via the pipeline encryption processing unit. Is input to the arithmetic unit with a timing rule (discontinuous) that is more than the number of pipeline stages, and the encrypted data N ′ and the encrypted data (N + 1) ′ are separated from the pipeline encryption process part by more than the number of pipeline stages. Output according to the timing rule (non-continuous). By continuously arranging the encrypted data output at a distance, the encrypted data is arranged in a general-purpose CBC mode in units of data groups.

たとえば、データの暗号化送信を行う場合に、受信側の暗号処理装置がCBCモードの汎用(ノンパイプライン)の復号化処理部しか備えていない場合でも、パイプライン暗号化処理部で生成した暗号データに加えて暗号化プロセスでの初期ベクタの使用タイミングを示すタイミング情報(各データ群の最初の位置を示す情報)などを送信することにより、受信側の暗号処理装置はノンパイプラインの復号化処理部によって暗号データを元のデータに復号化することができる。したがって、汎用のCBCモードにおける復号化プロセスと互換性を保つことができる。   For example, when performing encrypted transmission of data, even if the encryption processing device on the receiving side has only a general-purpose (non-pipeline) decryption processing unit in the CBC mode, the encryption generated by the pipeline encryption processing unit By sending timing information (information indicating the first position of each data group) indicating the use timing of the initial vector in the encryption process in addition to the data, the receiving side cryptographic processor can perform non-pipeline decryption. The processing unit can decrypt the encrypted data into the original data. Therefore, compatibility with the decoding process in the general-purpose CBC mode can be maintained.

[5]前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする[1]乃至[4]のいずれか1項に記載の暗号処理装置。
[5] The controller inputs the unit data divided from one data group to the arithmetic unit sequentially according to the timing rule, and inputs the unit data to the arithmetic unit for a plurality of data groups. The encryption processing apparatus according to any one of [1] to [4], wherein the timing of performing the processing is different for each data group and is performed in parallel.

上記発明では、制御部は、たとえば、データ群Nの単位データNを演算部に入力してから単位データN+1を上記のタイミング規則で演算部に入力するまでの間に、データ群Mの単位データMを演算部に入力する。この入力後に、データ群Nの単位データN+1を単位データNに対して上記のタイミング規則で演算部に入力し、さらに、データ群Mの単位データM+1を単位データMに対して上記のタイミング規則で演算部に入力する。   In the above invention, the control unit, for example, inputs the unit data N of the data group N to the calculation unit and before the unit data N + 1 is input to the calculation unit according to the above timing rule. M is input to the calculation unit. After this input, the unit data N + 1 of the data group N is input to the arithmetic unit with the above timing rule with respect to the unit data N, and further, the unit data M + 1 of the data group M is input with respect to the unit data M according to the above timing rule. Input to the calculation unit.

演算部からは、単位データNの演算結果が出力されてから単位データN+1の演算結果が上記のタイミング規則で出力されるまでの間に、単位データMの演算結果が出力される。この出力後に、単位データN+1の演算結果が単位データNの演算結果に対して上記のタイミング規則で出力され、さらに、単位データM+1の演算結果が単位データMの演算結果に対して上記のタイミング規則で出力される。   From the calculation unit, the calculation result of the unit data N is output after the calculation result of the unit data N is output until the calculation result of the unit data N + 1 is output according to the above timing rule. After this output, the operation result of the unit data N + 1 is output with respect to the operation result of the unit data N according to the above timing rule, and the operation result of the unit data M + 1 is output with respect to the operation result of the unit data M with the above timing rule. Is output.

これにより、パイプライン暗号化処理部は、単位データNの演算結果が入力されてから単位データN+1の演算結果が入力されるまでの間に、すなわち、単位データNの演算結果に対する暗号演算を行っている間に、単位データMの演算結果が入力され、それらの暗号演算を並列実行する。また、単位データNの演算結果に対する暗号演算を終えてその暗号データN'を出力し、単位データMの演算結果に対する暗号演算を行っている間に、単位データN+1の演算結果が入力され、それらの暗号演算を並列実行する。さらに、単位データMの演算結果に対する暗号演算を終えてその暗号データM'を出力し、単位データN+1の演算結果に対する暗号演算を行っている間に、単位データM+1の演算結果が入力され、それらの暗号演算を並列実行する。   As a result, the pipeline encryption processing unit performs a cryptographic operation on the operation result of the unit data N from when the operation result of the unit data N is input to when the operation result of the unit data N + 1 is input. In the meantime, the operation result of the unit data M is input, and the cryptographic operations are executed in parallel. Further, the cryptographic operation on the operation result of the unit data N is finished, the encrypted data N ′ is output, and the operation result of the unit data N + 1 is input while performing the cryptographic operation on the operation result of the unit data M. Execute cryptographic operations in parallel. Further, the cryptographic operation on the operation result of the unit data M is finished and the encrypted data M ′ is output. While the cryptographic operation on the operation result of the unit data N + 1 is being performed, the operation result of the unit data M + 1 is input. Execute cryptographic operations in parallel.

このように、一のデータ群から分割された単位データを上記のタイミング規則で演算部に順次入力する動作を、複数のデータ群に対して、単位データを演算部に入力するタイミングを、データ群毎に異ならせて並行に行うことで、パイプライン暗号化処理部では各単位データが同時並行に暗号化処理され、暗号化対象の複数のデータ群に対する暗号化の処理速度が向上する。   In this way, the operation of sequentially inputting the unit data divided from one data group to the arithmetic unit according to the above timing rule, the timing of inputting the unit data to the arithmetic unit for a plurality of data groups, the data group By performing different operations in parallel, each unit data is encrypted in parallel in the pipeline encryption processing unit, and the encryption processing speed for a plurality of data groups to be encrypted is improved.

[6]前記データ群は、1ページ分の画像のデータである
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
[6] The cryptographic processing apparatus according to any one of [1] to [5], wherein the data group is image data for one page.

上記発明では、暗号化対象のデータ群を1ページ分の画像のデータとし、その1ページ分の画像のデータを単位データずつに分割して各ページの各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する(パイプライン処理)。これにより、暗号化ではページ毎(データ群毎)に、1番目の単位データの暗号演算には初期ベクタを使用し、2番目以降の単位データの暗号演算には前の暗号データを使用できる。また、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの1番目の暗号データの復号化には初期ベクタを使用し、2番目以降の暗号データの復号化には前の暗号データを使用することで復号化が可能となり、ノンパイプラインの復号化処理部でも復号化することができる。   In the above invention, the data group to be encrypted is set as image data for one page, the image data for one page is divided into unit data, and the encryption operation of each unit data of each page is pipeline encrypted. It is executed in parallel by the processing unit and encrypted (pipeline processing). Thus, in encryption, for each page (each data group), the initial vector can be used for the cryptographic operation of the first unit data, and the previous cryptographic data can be used for the cryptographic operation of the second and subsequent unit data. When this encrypted data is decrypted, if it is treated as being encrypted in units of pages, the initial vector is used to decrypt the first encrypted data of each page, and the second and subsequent encrypted data Decryption can be performed by using the previous encrypted data, and can be decrypted by a non-pipeline decryption processing unit.

[7]前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
[7] The cryptographic processing device according to any one of [1] to [5], wherein the data group is configured by dividing a series of data into a plurality of pieces.

上記発明では、一連のデータを複数に分割して暗号化対象のデータ群を構成し、複数のデータ群の暗号化をパイプライン処理によって並列処理すれば、一連のデータの暗号化に要する時間が短縮される。   In the above invention, if a series of data is divided into a plurality of data groups to be encrypted, and the encryption of the plurality of data groups is processed in parallel by pipeline processing, the time required to encrypt the series of data is reduced. Shortened.

たとえば、1ページ分の画像のデータを複数のデータ群に分割してパイプライン暗号化処理部で並列処理することで、暗号化の処理速度が向上する。   For example, by dividing image data for one page into a plurality of data groups and performing parallel processing in the pipeline encryption processing unit, the encryption processing speed is improved.

[8]前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする[1]乃至[5]のいずれか1項に記載の暗号処理装置。
[8] The data group is configured by equally dividing a series of data into the same number of stages of the pipeline structure of the pipeline encryption processing unit. The cryptographic processing device according to claim 1.

上記発明では、一連のデータをパイプライン暗号化処理部の段数と同数に等分してデータ群を構成し、各データ群を単位データずつに分割して各データ群の各単位データの暗号演算をパイプライン暗号化処理部により並列に実行して暗号化する(パイプライン処理)。   In the above invention, a series of data is equally divided into the number of stages of the pipeline encryption processing unit to form a data group, each data group is divided into unit data, and the cryptographic operation of each unit data of each data group Are executed in parallel by the pipeline encryption processing unit and encrypted (pipeline processing).

たとえば、一連のデータをパイプライン暗号化処理部の段数未満に分割してデータ群を構成しパイプライン処理を行うような場合には、パイプライン暗号化処理部では暗号演算を行わない段が発生して処理効率が低下する。また、一連のデータをパイプライン暗号化処理部の段数より多く分割してデータ群を構成しパイプライン処理を行うような場合には、初期ベクタの使用回数が増加して暗号化強度が低下する。   For example, when a series of data is divided into less than the number of stages in the pipeline encryption processing unit to form a data group and perform pipeline processing, the pipeline encryption processing unit has stages that do not perform cryptographic operations As a result, processing efficiency decreases. In addition, when a series of data is divided more than the number of stages of the pipeline encryption processing unit to form a data group and pipeline processing is performed, the number of uses of the initial vector increases and the encryption strength decreases. .

これに対し、一連のデータをパイプライン暗号化処理部の段数分に分割してデータ群を構成すれば、パイプライン暗号化処理部から同一データ群の単位データNの暗号データN'が出力されて演算部に戻されるタイミングと、単位データN+1を演算部に入力するタイミングが一致するため、隙間を空けることなく単位データを連続的に入力できるようになり、効率的な処理が可能となる。   On the other hand, if a series of data is divided into the number of stages of the pipeline encryption processing unit to form a data group, encrypted data N ′ of unit data N of the same data group is output from the pipeline encryption processing unit. Since the timing at which the data is returned to the calculation unit coincides with the timing at which the unit data N + 1 is input to the calculation unit, the unit data can be continuously input without leaving a gap, thereby enabling efficient processing.

このように、一連のデータをパイプライン暗号化処理部の段数と同数に等分して複数のデータ群を構成し、暗号化を行うことにより、初期ベクタの使用回数を最小にして暗号化強度の低下を抑制しつつ、パイプライン化した暗号化処理部の段数に応じた効率的な処理(最適化処理)が可能となる。   In this way, a series of data is equally divided into the number of stages of the pipeline encryption processing unit to form a plurality of data groups, and encryption is performed to minimize the number of times the initial vector is used. It is possible to perform efficient processing (optimization processing) in accordance with the number of stages of the pipelined encryption processing unit while suppressing a decrease in the number of times.

[9]複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第1保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第2保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて、前記第1保持部に保持されている初期ベクタまたは前記第2保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
[9] A pipeline decoding processing unit in which a plurality of decoding processing units are connected in a pipeline structure;
A first holding unit for holding an initial vector;
The same encrypted data as the encrypted data input to the pipeline decryption processing unit is retained, and the retention is performed at a timing when an operation result for the encrypted data next to the encrypted data is output from the pipeline decryption processing unit. A second holding unit for outputting the encrypted data
A switching unit that receives timing information indicating the use timing of the initial vector, and switches the output to the initial vector held in the first holding unit or the encrypted data output from the second holding unit based on the timing information When,
A calculation unit that calculates a calculation result output from the pipeline decryption processing unit and an initial vector or encrypted data output from the switching unit;
A cryptographic processing apparatus comprising:

上記発明では、パイプライン復号化処理部は、復号化対象の暗号データに対し、パイプライン構造で接続された複数の復号化処理部によりパイプライン構造の段数分の復号演算を行う。第1保持部は初期ベクタを保持する。第2保持部はパイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、パイプライン復号化処理部からその暗号データの次の暗号データに対する演算結果が出力されるタイミングで保持しているその暗号データを出力する。演算部は、入力された、初期ベクタの使用タイミングを示すタイミング情報に基づいて、第1保持部に保持されている初期ベクタまたは第2保持部から出力される暗号データに出力を切り替える。演算部は、パイプライン復号化処理部から出力される演算結果と、切替部から出力される初期ベクタまたは暗号データとを演算して、復号データを生成する。   In the above invention, the pipeline decryption processing unit performs decryption operation for the number of stages of the pipeline structure on the decrypted encryption data by the plurality of decryption processing units connected in the pipeline structure. The first holding unit holds an initial vector. The second holding unit holds the same encrypted data as the encrypted data input to the pipeline decryption processing unit, and the timing at which the operation result for the next encrypted data of the encrypted data is output from the pipeline decryption processing unit Output the encrypted data stored in. The arithmetic unit switches the output to the initial vector held in the first holding unit or the encrypted data output from the second holding unit based on the input timing information indicating the use timing of the initial vector. The computing unit computes the computation result output from the pipeline decryption processing unit and the initial vector or encrypted data output from the switching unit to generate decrypted data.

このように、暗号データを復号化する復号化処理部をパイプライン化することで、そのパイプライン復号化処理部に暗号データを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することが可能となる。これにより、単一のノンパイプラインの復号化処理部を使用して1つの単位データの復号演算を所定回数繰り返すような復号化処理を行う場合に比べ、復号化の処理速度を向上することができる。   In this way, by pipelining a decryption processing unit that decrypts encrypted data, the encrypted data is continuously input to the pipeline decryption processing unit, and decryption operations for the number of stages are executed in parallel. Line processing is possible. As a result, the decoding processing speed can be improved as compared with a case where a single non-pipeline decoding processing unit is used to perform a decoding process in which a decoding operation of one unit data is repeated a predetermined number of times. it can.

また、従来の復号化回路は、1回目の復号化処理のみに初期ベクタを使用するように構成されるが、初期ベクタの使用タイミングを示すタイミング情報を入力し、このタイミング情報に基づいて初期ベクタの使用タイミングを切り替えることで、暗号データの途中で初期ベクタによる復号化を必要とする場合にも対応することができる。たとえば、暗号データが複数のデータ群に分けて暗号化(各データ群では1回目にのみ初期ベクタが使用される)されている場合でも、各データ群の最初の位置(境界位置)を示す情報などが入力されれば、各データ群の初回の復号化に初期ベクタを使用してこの暗号データを連続的に復号化処理することができる。   In addition, the conventional decoding circuit is configured to use the initial vector only for the first decoding process. However, the timing information indicating the use timing of the initial vector is input, and the initial vector is based on the timing information. By switching the use timing, it is possible to cope with the case where decryption with the initial vector is required in the middle of the encrypted data. For example, even when encrypted data is divided into a plurality of data groups and encrypted (the initial vector is used only for the first time in each data group), information indicating the first position (boundary position) of each data group Etc., the encrypted data can be continuously decrypted using the initial vector for the initial decryption of each data group.

また、たとえば、データの暗号化送信を行う場合に、送信側の暗号処理装置がCBCモードの汎用(ノンパイプライン)の暗号化処理部しか備えていない場合でも、受信側の暗号処理装置はパイプライン復号化処理部により、1回目のみ初期ベクタで2回目以降は暗号データを使用する一般的な動作によって暗号データを元のデータに復号化することができる。したがって、汎用のCBCモードにおける暗号化プロセスと互換性を保つことができる。   Further, for example, when performing encrypted transmission of data, even if the transmitting-side encryption processing apparatus has only a general-purpose (non-pipeline) encryption processing unit in the CBC mode, the receiving-side encryption processing apparatus is connected to the pipe. The line decryption processing unit can decrypt the encrypted data to the original data by a general operation using the initial vector only for the first time and the encrypted data after the second time. Therefore, compatibility with the encryption process in the general-purpose CBC mode can be maintained.

[10]前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第1保持部に保持されている初期ベクタを1回目に出力した後、前記第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする[9]に記載の暗号処理装置。
[10] The timing information includes period information indicating a use period of the initial vector,
The switching unit outputs an initial vector held in the first holding unit for the first time based on the cycle information, and then performs an operation of switching output to encrypted data output from the second holding unit. The encryption processing device according to [9], wherein the encryption processing device is repeatedly performed in a cycle.

上記発明では、たとえば、暗号化プロセスで初期ベクタが所定の周期で使用されて暗号化された暗号データを復号化するような場合は、切替部が初期ベクタの使用周期を示す周期情報に基づいて、第1保持部に保持されている初期ベクタを1回目に出力した後、第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行うことにより正しく復号化される。   In the above invention, for example, when the encrypted data decrypted by using the initial vector at a predetermined cycle in the encryption process is decrypted, the switching unit is based on the cycle information indicating the use cycle of the initial vector. Then, after the initial vector held in the first holding unit is output for the first time, the operation of switching the output to the encrypted data output from the second holding unit is repeatedly performed at a predetermined cycle, so that the initial vector is correctly decrypted.

[11]1回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、[1]乃至[8]のいずれか1項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする[10]に記載の暗号処理装置。
[11] The number of times that an operation result is output from the pipeline decryption processing unit in one cycle is encrypted in the cryptographic processing device according to any one of [1] to [8]. It is the number of unit data which comprises a data group. The encryption processing apparatus as described in [10] characterized by the above-mentioned.

上記発明では、[1]乃至[8]のいずれか1項に記載の暗号処理装置のように、暗号化処理部をパイプライン化すると共に、暗号化対象のデータ群を単位データずつに分割し、かつ一の単位データとこれに後続する単位データとをパイプライン暗号化処理部のパイプライン構造の段数分以上離れるタイミング規則で演算部に入力することで暗号化する場合は、たとえば、データ群の1番目の単位データに初期ベクタを使用し、残りの単位データに前の暗号データを使用して暗号化することをデータ群毎に行って暗号化することができる。   In the above invention, as in the encryption processing device according to any one of [1] to [8], the encryption processing unit is pipelined and the data group to be encrypted is divided into unit data. In the case of encryption by inputting one unit data and subsequent unit data to the operation unit with a timing rule that is separated by the number of stages of the pipeline structure of the pipeline encryption processing unit, for example, a data group It is possible to perform encryption for each data group by using the initial vector for the first unit data and encrypting the remaining unit data using the previous encrypted data.

このような暗号化プロセスで生成された暗号データに対しては、データ群を構成する単位データの数を、1回の周期でパイプライン復号化処理部から演算結果が出力される回数にすることで、すなわち、初期ベクタの使用周期を、パイプライン復号化処理部が1つのデータ群の全単位データを処理する周期に合わせることで、各データ群の1番目の暗号データの復号化には初期ベクタが使用され、残りの暗号データの復号化には前の暗号データが使用されるようになり、暗号化プロセスに合わせたデータ群毎の初期ベクタと暗号データの切り替えが行われるようになる。したがって、[1]乃至[8]のいずれか1項に記載の暗号処理装置で暗号化された暗号データを正しく復号化することができる。   For the encrypted data generated by such an encryption process, the number of unit data constituting the data group is set to the number of times the operation result is output from the pipeline decryption processing unit in one cycle. That is, by matching the use cycle of the initial vector with the cycle in which the pipeline decryption processing unit processes all unit data of one data group, the initial decryption of the first encrypted data of each data group The vector is used, and the previous encrypted data is used to decrypt the remaining encrypted data, and the initial vector and the encrypted data are switched for each data group in accordance with the encryption process. Therefore, it is possible to correctly decrypt the encrypted data encrypted by the cryptographic processing device according to any one of [1] to [8].

本発明に係る暗号処理装置によれば、暗号化強度の低下を抑制しつつ、暗号化/復号化の処理速度を向上することができる。   The encryption processing apparatus according to the present invention can improve the processing speed of encryption / decryption while suppressing a decrease in encryption strength.

以下、図面に基づき本発明の実施の形態を説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本発明の実施の形態に係る暗号処理装置10の構成をブロック図で示している。暗号処理装置10は、原稿を読み取って対応する画像を記録紙上に形成して出力するコピー機能や、スキャナ機能、プリンタ機能、ファクシミリ機能などを備えたデジタル複合機などの画像形成装置に搭載されており、画像形成装置が各種動作を実行するときに画像データなどの暗号化/復号化を行う機能を備えている。   FIG. 1 is a block diagram showing the configuration of a cryptographic processing apparatus 10 according to an embodiment of the present invention. The cryptographic processing apparatus 10 is mounted on an image forming apparatus such as a digital multifunction machine having a copy function for reading a document and forming and outputting a corresponding image on a recording sheet, and a scanner function, a printer function, a facsimile function, and the like. The image forming apparatus has a function of encrypting / decrypting image data and the like when performing various operations.

図1に示すように、暗号処理装置10は、CPU(Central Processing Unit)11と、ROM(Read Only Memory)12と、RAM(Random Access Memory)13と、暗号化回路14と、復号化回路15と、並べ替え回路16とを備えている。   As shown in FIG. 1, the cryptographic processing apparatus 10 includes a central processing unit (CPU) 11, a read only memory (ROM) 12, a random access memory (RAM) 13, an encryption circuit 14, and a decryption circuit 15. And a rearrangement circuit 16.

CPU11は演算処理機能を備えると共に、暗号処理装置10全体の動作を統括制御する制御部(中央処理装置)として機能する。ROM12は、CPU11が実行するプログラムや各種固定データを記憶している。RAM13は、CPU11がプログラムを実行する際に各種データを一時的に格納するワークメモリや、暗号化処理を施す一連の暗号化対象データ(平文)および復号化処理を施す一連の復号化対象データ(暗号文)を格納するデータメモリとして機能する。   The CPU 11 has an arithmetic processing function and also functions as a control unit (central processing unit) that controls the overall operation of the cryptographic processing device 10. The ROM 12 stores programs executed by the CPU 11 and various fixed data. The RAM 13 is a work memory that temporarily stores various data when the CPU 11 executes a program, a series of encryption target data (plain text) to be encrypted, and a series of decryption target data (to be decrypted) It functions as a data memory for storing (ciphertext).

暗号化回路14は、RAM13に格納された暗号化対象データに対してAES規格に基づき128ビットのブロック長単位で暗号化処理を施す機能を備えている。復号化回路15は、RAM13に格納された復号化対象データに対してAES規格に基づき128ビットのブロック長単位で復号化処理を施す機能を備えている。また暗号化回路14および復号化回路15は、上記のブロック長単位で演算を行うデータブロック(単位データ)に加えて、後述するイニシャルベクタと暗号鍵もAES規格に基づいて128ビット単位で演算を行うように構成されている。   The encryption circuit 14 has a function of performing encryption processing on data to be encrypted stored in the RAM 13 in units of 128-bit block length based on the AES standard. The decryption circuit 15 has a function of performing decryption processing on the data to be decrypted stored in the RAM 13 in units of a 128-bit block length based on the AES standard. In addition to the data block (unit data) that performs the operation in units of the block length, the encryption circuit 14 and the decryption circuit 15 also perform an initial vector and an encryption key, which will be described later, in units of 128 bits based on the AES standard. Configured to do.

並べ替え回路16は、暗号化回路14が暗号化処理を行うときに、RAM13に格納されている暗号化対象データを複数のデータブロック(平文ブロック)からなるデータ群に分割すると共に、各データ群のデータブロックを飛び飛びの順番に並べ替えて暗号化回路14に入力する機能、および、暗号化回路14から暗号化されて出力されたデータブロック(暗号文ブロック)を元の順番に並べ戻し一連の暗号文としてRAM13に格納する機能を備えている。さらに、RAM13に格納する暗号文のヘッダーに、暗号化モード情報(パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報)や暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報(各データ群の最初の位置を示す位置情報)などを付加する機能も備えている。   The rearrangement circuit 16 divides the data to be encrypted stored in the RAM 13 into data groups composed of a plurality of data blocks (plaintext blocks) when the encryption circuit 14 performs encryption processing, and each data group A function of rearranging the data blocks in the order of jumping and inputting the data blocks to the encryption circuit 14, and a sequence of data blocks (ciphertext blocks) encrypted and output from the encryption circuit 14 in the original order A function of storing the ciphertext in the RAM 13 is provided. Furthermore, in the header of the ciphertext stored in the RAM 13, the encryption mode information (pipeline encryption mode information indicating that encryption has been performed by the pipeline method) and IV indicating the use timing of the initial vector IV in the encryption process are included. It also has a function of adding usage timing information (position information indicating the first position of each data group) and the like.

また並べ替え回路16は、復号化回路15が復号化処理を行うときに、RAM13に格納されている復号化対象データのデータブロック(暗号文ブロック)を先頭から並び順通りに復号化回路15に入力する機能、および、復号化回路15から復号化されて出力されたデータブロック(平文ブロック)を出力順に並べてRAM13に格納する機能を備えている。   Further, the rearrangement circuit 16 arranges the data blocks (ciphertext blocks) of the data to be decrypted stored in the RAM 13 into the decryption circuit 15 in order from the top when the decryption circuit 15 performs the decryption process. A function of inputting and a function of arranging data blocks (plaintext blocks) decrypted and output from the decryption circuit 15 in the order of output and storing them in the RAM 13 are provided.

図2は、暗号化回路14の回路構成を示しており、図3は、復号化回路15の回路構成を示しており、図4は、暗号化回路14および復号化回路15が備えるパイプライン回路40のブロック図を示している。   2 shows a circuit configuration of the encryption circuit 14, FIG. 3 shows a circuit configuration of the decryption circuit 15, and FIG. 4 shows a pipeline circuit included in the encryption circuit 14 and the decryption circuit 15. 40 shows a block diagram.

図2に示すように、暗号化回路14は、パイプライン暗号化処理部としてのパイプライン暗号化演算部20と、XOR演算部21と、セレクタ22と、セレクタ制御回路23と、入力レジスタ24と、出力レジスタ25と、KEYレジスタ26と、IVレジスタ27とを備えている。   As shown in FIG. 2, the encryption circuit 14 includes a pipeline encryption operation unit 20 as a pipeline encryption processing unit, an XOR operation unit 21, a selector 22, a selector control circuit 23, an input register 24, , An output register 25, a KEY register 26, and an IV register 27 are provided.

パイプライン暗号化演算部20は、AES規格に基づいたパイプライン方式のブロック暗号演算を行う回路であり、連続して入力されるデータブロックの暗号演算を並列に実行して演算結果を連続出力する機能を備えている。   The pipeline encryption operation unit 20 is a circuit that performs a pipeline block cipher operation based on the AES standard, and executes a cipher operation of data blocks that are continuously input in parallel and continuously outputs operation results. It has a function.

詳細には、暗号化回路14は図4に示すパイプライン回路40のように、直列に接続された11段のノンパイプライン回路41(暗号化演算部)を備えている。各ノンパイプライン回路41は、従来のノンパイプライン回路220と同様に(図13参照)、入力されたデータブロック(indata)に対して、置換(ステップS101)、並べ替え(ステップS102)、行列演算(ステップS103)、XOR演算(ステップS104)の4つの処理を1ラウンドで行い、この1ラウンドを1クロック(CLK)で処理するように構成されている。したがって、ノンパイプライン回路41を11段備えたパイプライン回路40は、入力されたデータブロックを1クロック目に初段P1のノンパイプライン回路41で演算処理し、2クロック目に2段目P2のノンパイプライン回路41で演算処理し、・・・、11クロック目に最終段である11段目P11のノンパイプライン回路41で演算処理し、12クロック目に演算結果である処理済みのデータブロック(outdata)を出力するようになっている。   More specifically, the encryption circuit 14 includes 11 stages of non-pipeline circuits 41 (encryption operation units) connected in series as in the pipeline circuit 40 shown in FIG. Each non-pipeline circuit 41, like the conventional non-pipeline circuit 220 (see FIG. 13), replaces the input data block (indata) (step S101), rearranges (step S102), and a matrix. Four processes of calculation (step S103) and XOR calculation (step S104) are performed in one round, and this one round is processed in one clock (CLK). Therefore, the pipeline circuit 40 having 11 stages of the non-pipeline circuit 41 performs an arithmetic process on the input data block by the non-pipeline circuit 41 of the first stage P1 at the first clock, and the second stage P2 at the second clock. Processing is performed by the non-pipeline circuit 41,... Processing is performed by the non-pipeline circuit 41 of the 11th stage P11 which is the final stage at the 11th clock, and the processed data block which is the calculation result at the 12th clock (Outdata) is output.

また、パイプライン回路40は、データブロックがクロック毎に連続的に入力されると、その連続入力されるデータブロックに対して、11段のノンパイプライン回路41で段数分の演算を並列に実行し、処理済みのデータブロックをクロック毎に連続出力する動作(パイプライン処理)を行うようになる。   In addition, when data blocks are continuously input for each clock, the pipeline circuit 40 performs the calculation for the number of stages in parallel by the 11 non-pipeline circuits 41 on the continuously input data blocks. Then, an operation (pipeline processing) for continuously outputting processed data blocks for each clock is performed.

KEYレジスタ26(図2参照)は、暗号演算で用いる暗号鍵を保持するためのレジスタであり、KEYレジスタ26に保持された暗号鍵はパイプライン暗号化演算部20に入力される。IVレジスタ27は、パイプライン暗号化演算部20に入力するイニシャルベクタIVとなる任意のデータを保持するためのレジスタである。   The KEY register 26 (see FIG. 2) is a register for holding an encryption key used in the encryption operation, and the encryption key held in the KEY register 26 is input to the pipeline encryption operation unit 20. The IV register 27 is a register for holding arbitrary data serving as the initial vector IV input to the pipeline encryption operation unit 20.

セレクタ制御回路23は、セレクタ22の動作を制御し、セレクタ22は、IVレジスタ27に保持されているイニシャルベクタIVとパイプライン暗号化演算部20の演算結果(暗号ベクタ)のいずれかをXOR演算部21に対して選択出力する機能を備えている。   The selector control circuit 23 controls the operation of the selector 22, and the selector 22 performs an XOR operation on either the initial vector IV held in the IV register 27 and the operation result (encryption vector) of the pipeline encryption operation unit 20. A function of selectively outputting to the unit 21 is provided.

入力レジスタ24は、並べ替え回路16によって入力される暗号化対象のデータブロック(平文ブロック)を保持するレジスタである。XOR演算部21は、入力レジスタ24の出力する暗号化対象のデータブロックとセレクタ22の出力するイニシャルベクタIVまたは暗号ベクタとの排他的論理和を演算する機能を備えている。出力レジスタ25は、パイプライン暗号化演算部20の演算結果として出力される暗号化されたデータブロック(暗号文ブロック)を保持するレジスタである。   The input register 24 is a register that holds an encryption target data block (plaintext block) input by the rearrangement circuit 16. The XOR operation unit 21 has a function of calculating an exclusive OR between the data block to be encrypted output from the input register 24 and the initial vector IV or encryption vector output from the selector 22. The output register 25 is a register that holds an encrypted data block (ciphertext block) that is output as an operation result of the pipeline encryption operation unit 20.

図3に示すように、復号化回路15は、パイプライン復号化処理部としてのパイプライン復号化演算部30と、XOR演算部31と、セレクタ32と、セレクタ制御回路33と、入力レジスタ34と、出力レジスタ35と、KEYレジスタ36と、IVレジスタ37と、保持レジスタ38とを備えている。   As shown in FIG. 3, the decoding circuit 15 includes a pipeline decoding operation unit 30 as a pipeline decoding processing unit, an XOR operation unit 31, a selector 32, a selector control circuit 33, an input register 34, , An output register 35, a KEY register 36, an IV register 37, and a holding register 38.

パイプライン復号化演算部30は、AES規格に基づいたパイプライン方式のブロック復号演算を行う回路であり、連続して入力されるデータブロックの復号演算を並列に実行して演算結果を連続出力する機能を備えている。このパイプライン復号化演算部30は、パイプライン暗号化演算部20で説明したパイプライン回路40と同じ構成であり、同様に動作する。   The pipeline decoding arithmetic unit 30 is a circuit that performs a pipeline block decoding operation based on the AES standard. The pipeline decoding arithmetic unit 30 executes a decoding operation on continuously input data blocks in parallel and continuously outputs the operation results. It has a function. The pipeline decryption operation unit 30 has the same configuration as the pipeline circuit 40 described in the pipeline encryption operation unit 20 and operates in the same manner.

入力レジスタ34は、並べ替え回路16によって入力される復号化対象のデータブロック(暗号文ブロック)を保持するレジスタであり、入力レジスタ34に保持されたデータブロックはパイプライン復号化演算部30と保持レジスタ38に入力される。   The input register 34 is a register that holds a decryption target data block (ciphertext block) input by the rearrangement circuit 16, and the data block held in the input register 34 is held by the pipeline decryption operation unit 30. Input to the register 38.

保持レジスタ38は、たとえばFIFO(First-In First-Out)などで構成されており、入力レジスタ34から入力されたデータブロックを内部に保持して入力順に出力する機能を備えている。また保持レジスタ38は、パイプライン復号化演算部30の段数よりも1段多くされており(12段FIFO)、パイプライン復号化演算部30からデータブロックの演算結果が出力されるタイミングで、そのデータブロックよりも1つ前のデータブロック(先に入力されたデータブロック)を出力するように構成されている。   The holding register 38 is composed of, for example, a FIFO (First-In First-Out) or the like, and has a function of internally holding the data blocks input from the input register 34 and outputting them in the order of input. The holding register 38 is one stage higher than the number of stages of the pipeline decoding arithmetic unit 30 (12-stage FIFO), and at the timing when the operation result of the data block is output from the pipeline decoding arithmetic unit 30 A data block immediately preceding the data block (a previously input data block) is output.

KEYレジスタ36は、復号演算で用いる暗号鍵を保持するためのレジスタであり、KEYレジスタ36に保持された暗号鍵はパイプライン復号化演算部30に入力される。IVレジスタ37は、パイプライン復号化演算部30に入力するイニシャルベクタIVとなる任意のデータを保持するためのレジスタである。   The KEY register 36 is a register for holding an encryption key used in the decryption operation, and the encryption key held in the KEY register 36 is input to the pipeline decryption operation unit 30. The IV register 37 is a register for holding arbitrary data to be the initial vector IV input to the pipeline decoding arithmetic unit 30.

セレクタ制御回路33は、セレクタ32の動作を制御し、セレクタ32は、IVレジスタ37に保持されているイニシャルベクタIVと保持レジスタ38から出力されたデータブロックのいずれかをXOR演算部31に対して選択出力する機能を備えている。   The selector control circuit 33 controls the operation of the selector 32, and the selector 32 sends either the initial vector IV held in the IV register 37 or the data block output from the holding register 38 to the XOR operation unit 31. It has a function to select and output.

XOR演算部31は、パイプライン復号化演算部30の出力する演算結果とセレクタ32の出力するイニシャルベクタIVまたはデータブロックとの排他的論理和を演算する。出力レジスタ35はXOR演算部31の演算結果である復号化されたデータブロック(平文ブロック)を保持するレジスタである。   The XOR operation unit 31 calculates an exclusive OR of the operation result output from the pipeline decoding operation unit 30 and the initial vector IV or data block output from the selector 32. The output register 35 is a register that holds a decrypted data block (a plaintext block) that is an operation result of the XOR operation unit 31.

またCPU11は、暗号化回路14、復号化回路15、および並べ替え回路16の動作シーケンスを制御する機能を果たし、KEYレジスタ26、36およびIVレジスタ27、37へのデータのセットも行う。暗号化/復号化処理で使用するイニシャルベクタや暗号鍵などの各種データは、たとえば、図示しない補助記憶装置に格納しておき、暗号処理装置10の起動時にCPU11が補助記憶装置から読み出して各レジスタにセットするようになっている。   The CPU 11 also functions to control the operation sequence of the encryption circuit 14, the decryption circuit 15, and the rearrangement circuit 16, and also sets data in the KEY registers 26 and 36 and the IV registers 27 and 37. Various data such as an initial vector and an encryption key used in the encryption / decryption processing are stored in an auxiliary storage device (not shown), for example, and the CPU 11 reads the data from the auxiliary storage device when the encryption processing device 10 is activated. Is set to.

さらにCPU11は、暗号化処理を行うときは並べ替え回路16に、暗号化対象データの存在するメモリ領域の先頭アドレスを示す先頭アドレス情報、暗号化対象データのサイズを示すデータサイズ情報、暗号化対象データの分割数を示すデータ分割数情報を出力し、暗号化回路14のセレクタ制御回路23に、パイプライン暗号化演算部20の段数を示す段数情報を出力する。復号化処理を行うときは復号化回路15のセレクタ制御回路33に、復号化対象データの暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報を出力する。   Furthermore, when performing the encryption process, the CPU 11 causes the rearrangement circuit 16 to start address information indicating the start address of the memory area where the encryption target data exists, data size information indicating the size of the encryption target data, and encryption target. Data division number information indicating the number of data divisions is output, and stage number information indicating the number of stages of the pipeline encryption operation unit 20 is output to the selector control circuit 23 of the encryption circuit 14. When performing the decryption process, IV use timing information indicating the use timing of the initial vector IV in the encryption process of the data to be decrypted is output to the selector control circuit 33 of the decryption circuit 15.

IV使用タイミング情報については、暗号化対象データを分割して構成された各データ群の最初の位置(境界位置)が認識できる情報であればよく、たとえば、イニシャルベクタIVの使用周期を示す周期情報、各データ群を構成するデータブロックの数を示すデータブロック数情報や各データ群のデータサイズを示すデータサイズ情報、データ群を1ページ分の画像データとした場合にはその1ページ分のデータサイズ情報、復号化対象データのデータサイズとその分割数、各データ群の最初の位置を復号化対象データの先頭位置からのオフセット量で示すオフセット情報などを使用できる。   The IV use timing information may be any information that can recognize the initial position (boundary position) of each data group configured by dividing the data to be encrypted. For example, the cycle information indicating the use cycle of the initial vector IV. , Data block number information indicating the number of data blocks constituting each data group, data size information indicating the data size of each data group, and when the data group is image data for one page, data for one page The size information, the data size of the data to be decoded and the number of divisions thereof, offset information indicating the initial position of each data group by the offset amount from the head position of the data to be decoded, and the like can be used.

次に、暗号処理装置10による暗号化/復号化処理の動作を説明する。   Next, the operation of encryption / decryption processing by the cryptographic processing apparatus 10 will be described.

図5は、暗号処理装置10による暗号化処理の動作を示す動作説明図であり、図6は、暗号化処理における暗号化対象の平文ブロックの入力タイミングと暗号化された結果の暗号文ブロックの出力タイミングを示すタイミングチャートである。   FIG. 5 is an operation explanatory diagram showing the operation of the encryption processing by the encryption processing apparatus 10, and FIG. 6 is a diagram of the input timing of the plaintext block to be encrypted in the encryption processing and the ciphertext block as a result of the encryption. It is a timing chart which shows an output timing.

暗号処理装置10による暗号化処理では、並べ替え回路16は、CPU11から送られた先頭アドレス情報、データサイズ情報、データ分割数情報に基づいて演算を行い、RAM13に格納されている暗号化対象データをパイプライン暗号化演算部20の段数と同数に等分して(11等分)、各々サイズが等しい11個のデータ群を構成する。さらに、各データ群をAES規格に基づき128ビットのデータブロックに分割する。   In the encryption processing by the encryption processing device 10, the rearrangement circuit 16 performs an operation based on the top address information, data size information, and data division number information sent from the CPU 11, and the encryption target data stored in the RAM 13. Are equally divided into the same number as the number of stages of the pipeline encryption operation unit 20 (11 equal parts) to form 11 data groups each having the same size. Further, each data group is divided into 128-bit data blocks based on the AES standard.

図5の例では、説明を分かりやすくするために、RAM13の所定の領域(平文メモリ領域)に格納されている暗号化対象データである平文が11個のデータ群(データ群1〜11)に分割され、各データ群は100個の平文ブロック(データ群1:平文ブロック1〜100、データ群2:平文ブロック101〜200、データ群3:平文ブロック201〜300、・・・、データ群11:平文ブロック1001〜1100)で構成されているものとして説明する。   In the example of FIG. 5, in order to make the explanation easy to understand, plaintext, which is data to be encrypted, stored in a predetermined area (plaintext memory area) of the RAM 13 is divided into 11 data groups (data groups 1 to 11). Each data group is divided into 100 plaintext blocks (data group 1: plaintext blocks 1 to 100, data group 2: plaintext blocks 101 to 200, data group 3: plaintext blocks 201 to 300,..., Data group 11 : Plaintext blocks 1001 to 1100).

このRAM13に格納されている暗号化対象データに対し、並べ替え回路16は、1〜1100まで連続配列されている平文ブロックを飛び飛びの順番に並べ替えて暗号化回路14に入力する。   With respect to the data to be encrypted stored in the RAM 13, the rearrangement circuit 16 rearranges the plaintext blocks continuously arranged from 1 to 1100 in the order of skipping and inputs them to the encryption circuit 14.

たとえば、図5および図6に示すように、データ群1の1番目の平文ブロック1、データ群2の1番目の平文ブロック101、データ群3の1番目の平文ブロック201、・・・、データ群11の1番目の平文ブロック1001、データ群1の2番目の平文ブロック2、データ群2の2番目の平文ブロック102、データ群3の2番目の平文ブロック202、・・・、データ群9の100番目の平文ブロック990、データ群10の100番目の平文ブロック1000、データ群11の100番目の平文ブロック1100というように、平文ブロック1から100番飛ばしの順番に並べ替えて、暗号化回路14に入力する。また、並べ替えた平文ブロックは11個で1つの組とし、その1組を1サイクルで処理する。   For example, as shown in FIG. 5 and FIG. 6, the first plaintext block 1 of the data group 1, the first plaintext block 101 of the data group 2, the first plaintext block 201 of the data group 3,. A first plaintext block 1001 of group 11, a second plaintext block 2 of data group 1, a second plaintext block 102 of data group 2, a second plaintext block 202 of data group 3,. The 100th plaintext block 990, the 100th plaintext block 1000 of the data group 10, the 100th plaintext block 1100 of the data group 11, and so on are rearranged in the order of skipping the 100th plaintext block 1 to the encryption circuit. 14 In addition, the rearranged plaintext blocks are set to 11 as one set, and the set is processed in one cycle.

暗号化回路14の入力レジスタ24は、上記の順番に並べ替えられて入力される平文ブロックを保持し、保持した平文ブロックをその順番でXOR演算部21に順次出力する。   The input register 24 of the encryption circuit 14 holds plaintext blocks that are rearranged in the above-described order and sequentially outputs the held plaintext blocks to the XOR operation unit 21 in that order.

一方、セレクタ制御回路23は、CPU11から送られたパイプライン暗号化演算部20の段数情報に基づいて演算を行い、イニシャルベクタIVの使用タイミングを決定する。   On the other hand, the selector control circuit 23 performs an operation based on the stage number information of the pipeline encryption operation unit 20 sent from the CPU 11 and determines the use timing of the initial vector IV.

たとえば、図5の暗号化対象データ(平文)に対しては、1サイクル目のみイニシャルベクタIVをXOR演算部21に入力し、2サイクル目以降はパイプライン暗号化演算部20から出力される暗号文ブロックを暗号ベクタとしてXOR演算部21に入力するようセレクタ22の切り替え制御を行う。これにより、セレクタ22は、1サイクル目にはIVレジスタ27の保持しているイニシャルベクタIVをXOR演算部21に入力する(図6参照)。   For example, for the data to be encrypted (plaintext) in FIG. 5, the initial vector IV is input to the XOR operation unit 21 only in the first cycle, and the encryption output from the pipeline encryption operation unit 20 in the second cycle and thereafter. The selector 22 is switched so that the sentence block is input to the XOR operation unit 21 as an encryption vector. As a result, the selector 22 inputs the initial vector IV held in the IV register 27 to the XOR operation unit 21 in the first cycle (see FIG. 6).

XOR演算部21は、1サイクル目では入力レジスタ24から順次入力される1組目の平文ブロック1、平文ブロック101、平文ブロック201、・・・、平文ブロック1001と、IVレジスタ27からセレクタ22を介して入力されるイニシャルベクタIVとの排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部20に順次出力する。   In the first cycle, the XOR operation unit 21 selects the first set of plaintext block 1, plaintext block 101, plaintext block 201,..., Plaintext block 1001, and selector 22 from the IV register 27. An exclusive OR operation is performed on the initial vector IV input via the network, and the operation result of each plaintext block is sequentially output to the pipeline encryption operation unit 20.

パイプライン暗号化演算部20は、XOR演算部21から順次入力される1組目の各平文ブロックの演算結果に対し、KEYレジスタ26に保持されている暗号鍵と、11段の暗号化演算部で段数分のAES規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ25とセレクタ22へ順次出力する。   The pipeline encryption operation unit 20 applies an encryption key held in the KEY register 26 and an 11-stage encryption operation unit to the operation result of each plaintext block in the first set sequentially input from the XOR operation unit 21. The cipher operations based on the AES standard for the number of stages are executed in parallel, and ciphertext blocks as the operation results are sequentially output to the output register 25 and the selector 22.

出力レジスタ25には、図5および図6に示すように、1組目の暗号文ブロック1'、暗号文ブロック101'、暗号文ブロック201'、・・・、暗号文ブロック1001'が順次保持され、並べ替え回路16は、出力レジスタ25に保持された暗号文ブロックを元の順番に並べ戻してRAM13の他の領域(暗号文メモリ領域)に格納する。詳細には、暗号文ブロック1'をデータ群1'の1番目に格納し、暗号文ブロック101'をデータ群2'の1番目に格納し、暗号文ブロック201'をデータ群3'の1番目に格納し、・・・、暗号文ブロック1001'をデータ群11'の1番目に格納する。   As shown in FIGS. 5 and 6, the output register 25 sequentially holds the first set of ciphertext block 1 ′, ciphertext block 101 ′, ciphertext block 201 ′,..., Ciphertext block 1001 ′. The rearrangement circuit 16 rearranges the ciphertext blocks held in the output register 25 in the original order and stores them in another area (ciphertext memory area) of the RAM 13. Specifically, the ciphertext block 1 ′ is stored first in the data group 1 ′, the ciphertext block 101 ′ is stored first in the data group 2 ′, and the ciphertext block 201 ′ is stored in 1 of the data group 3 ′. The ciphertext block 1001 ′ is stored in the first of the data group 11 ′.

また、パイプライン暗号化演算部20の段数が11段であることから、1サイクル目の最初(1クロック目)に入力された平文ブロック1を暗号化した暗号文ブロック1'は、1サイクル目の最後(11クロック目)に平文ブロック11がパイプライン暗号化演算部20に入力された後、2サイクル目の最初となる平文ブロック2がXOR演算部21に入力されるタイミング(12クロック目)でパイプライン暗号化演算部20から出力される。1サイクル目の2番目以降に入力された平文ブロック101、201、・・・、1001を暗号化した暗号文ブロック101'、201'、・・・、1001'も同様に、2サイクル目の2番目以降の平文ブロック102、202、・・・、1002がXOR演算部21に入力されるタイミング(13、14、・・・、22クロック目)でパイプライン暗号化演算部20から出力される。   Since the number of stages of the pipeline encryption operation unit 20 is 11, the ciphertext block 1 ′ obtained by encrypting the plaintext block 1 input at the beginning of the first cycle (first clock) is the first cycle. After the plaintext block 11 is input to the pipeline encryption operation unit 20 at the end of the first cycle (11th clock), the first plaintext block 2 in the second cycle is input to the XOR operation unit 21 (12th clock) Is output from the pipeline encryption operation unit 20. Similarly, the ciphertext blocks 101 ′, 201 ′,..., 1001 ′ obtained by encrypting the plaintext blocks 101, 201,. The 100th and subsequent plaintext blocks 102, 202,..., 1002 are output from the pipeline encryption operation unit 20 at the timing (13th, 14th,..., 22nd clock) input to the XOR operation unit 21.

セレクタ22は、2サイクル目にはパイプライン暗号化演算部20から出力される暗号文ブロック101'、201'、・・・、1001'を暗号ベクタとしてXOR演算部21に入力する(図6参照)。   In the second cycle, the selector 22 inputs the ciphertext blocks 101 ′, 201 ′,..., 1001 ′ output from the pipeline encryption operation unit 20 to the XOR operation unit 21 as cipher vectors (see FIG. 6). ).

XOR演算部21は、2サイクル目では入力レジスタ24から順次入力される2組目の平文ブロック2、102、202、・・・、1002と、パイプライン暗号化演算部20からセレクタ22を介して入力される暗号ベクタとしての暗号文ブロック101'、201'、・・・、1001'との排他的論理和演算を行い、各平文ブロックの演算結果をパイプライン暗号化演算部20に順次出力する。   In the second cycle, the XOR operation unit 21 receives a second set of plaintext blocks 2, 102, 202,..., 1002 that are sequentially input from the input register 24, and the pipeline encryption operation unit 20 via the selector 22. Performs an exclusive OR operation with the ciphertext blocks 101 ′, 201 ′,..., 1001 ′ as input cipher vectors, and sequentially outputs the operation result of each plaintext block to the pipeline encryption operation unit 20. .

このように、平文ブロックNと平文ブロックN+1とはパイプライン暗号化演算部20の段数だけ離れるタイミング規則でXOR演算部21に入力され、平文ブロックN+1は、平文ブロックNを暗号化した暗号文ブロックN'がパイプライン暗号化演算部20から出力されたタイミングでXOR演算部21に入力されて、暗号文ブロックN'とXOR演算部21への入力タイミングを合わせられるようになる。これにより、暗号文ブロックN'を暗号ベクタとして入力側にフィードバックさせて行う平文ブロックN+1の暗号化が実現される。   In this way, the plaintext block N and the plaintext block N + 1 are input to the XOR operation unit 21 with a timing rule that is separated by the number of stages of the pipeline encryption operation unit 20, and the plaintext block N + 1 is a ciphertext block obtained by encrypting the plaintext block N. N ′ is input to the XOR operation unit 21 at the timing output from the pipeline encryption operation unit 20, and the input timing to the ciphertext block N ′ and the XOR operation unit 21 can be matched. Thereby, encryption of the plaintext block N + 1 performed by feeding back the ciphertext block N ′ as an encryption vector to the input side is realized.

パイプライン暗号化演算部20は、1サイクル目と同様に、XOR演算部21から順次入力される2組目の各平文ブロックの演算結果に対し、KEYレジスタ26に保持されている暗号鍵と、11段の暗号化演算部で段数分のAES規格に基づいた暗号演算を並列に実行し、その演算結果である暗号文ブロックを出力レジスタ25とセレクタ22へ順次出力する。   Similar to the first cycle, the pipeline encryption operation unit 20 applies the encryption key held in the KEY register 26 to the operation results of the second set of plaintext blocks sequentially input from the XOR operation unit 21. The 11-stage encryption operation unit executes the encryption operation based on the AES standard for the number of stages in parallel, and sequentially outputs the ciphertext block as the operation result to the output register 25 and the selector 22.

出力レジスタ25には、図5および図6に示すように、2組目の暗号文ブロック2'、102'、202'、・・・、1002'が順次保持され、並べ替え回路16は、出力レジスタ25に保持された暗号文ブロックを元の順番に並べ戻してRAM13の他の領域に格納する。詳細には、暗号文ブロック2'をデータ群1'の2番目に格納し、暗号文ブロック102'をデータ群2'の2番目に格納し、暗号文ブロック202'をデータ群3'の2番目に格納し、・・・、暗号文ブロック1002'をデータ群11'の2番目に格納する。   As shown in FIGS. 5 and 6, the second set of ciphertext blocks 2 ′, 102 ′, 202 ′,..., 1002 ′ are sequentially held in the output register 25, and the rearrangement circuit 16 outputs The ciphertext blocks held in the register 25 are rearranged in the original order and stored in another area of the RAM 13. Specifically, the ciphertext block 2 ′ is stored in the second data group 1 ′, the ciphertext block 102 ′ is stored in the second data group 2 ′, and the ciphertext block 202 ′ is stored in the second data group 3 ′. The ciphertext block 1002 ′ is stored in the second of the data group 11 ′.

この2サイクル目と同様に3サイクル目以降も前の組の各暗号文ブロックを暗号ベクタとしてXOR演算部21に入力して次の組の各平文データの暗号化を行い、パイプライン暗号化演算部20から順次出力されて出力レジスタ25に保持された各暗号文ブロックを元の順番に並べ戻してRAM13に格納し、100サイクルで計1100個の平文ブロックの暗号化が完了する。これにより、RAM13には暗号文ブロック1'〜1100'が順番通りに連続配列され一連の暗号文として格納される。また、暗号文のヘッダーには、並べ替え回路16によって、パイプライン方式で暗号化されたことを示すパイプライン暗号化モード情報、および、暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報(各データ群の最初の位置を示す位置情報)などが付加される。この暗号文の復号化では、ヘッダーに付加された情報に基づいて復号化モード(パイプライン/ノンパイプライン)の判別やイニシャルベクタIVの使用タイミングが決定される。   Similarly to the second cycle, the ciphertext blocks in the previous set are input to the XOR operation unit 21 as the cipher vector in the third and subsequent cycles, and each plaintext data in the next set is encrypted, and a pipeline encryption operation is performed. The ciphertext blocks sequentially output from the unit 20 and held in the output register 25 are rearranged in the original order and stored in the RAM 13, and the encryption of a total of 1100 plaintext blocks is completed in 100 cycles. As a result, the ciphertext blocks 1 ′ to 1100 ′ are sequentially arranged in the RAM 13 and stored as a series of ciphertexts. The ciphertext header includes pipeline encryption mode information indicating that the reordering circuit 16 has encrypted the data in the pipeline method, and IV usage indicating the use timing of the initial vector IV in the encryption process. Timing information (position information indicating the first position of each data group) is added. In the decryption of the ciphertext, the determination of the decryption mode (pipeline / non-pipeline) and the use timing of the initial vector IV are determined based on the information added to the header.

図7は、復号化処理における復号化対象の暗号文ブロックの入力タイミングと復号化された結果の平文ブロックの出力タイミングを示すタイミングチャートである。   FIG. 7 is a timing chart showing the input timing of the decrypted ciphertext block and the output timing of the decrypted plaintext block in the decryption process.

暗号処理装置10による復号化処理では、並べ替え回路16は、RAM13に格納されている復号化対象データの暗号文ブロックを先頭から並び順通りに復号化回路15に入力する。たとえば、図7に示すように、1番目の暗号文ブロック1'、2番目の暗号文ブロック2'、3番目の暗号文ブロック3'・・・というように、先頭から並び順通りに復号化回路15に入力する。   In the decryption processing by the cryptographic processing device 10, the rearrangement circuit 16 inputs the ciphertext blocks of the data to be decrypted stored in the RAM 13 to the decryption circuit 15 in order from the top. For example, as shown in FIG. 7, the first ciphertext block 1 ′, the second ciphertext block 2 ′, the third ciphertext block 3 ′, etc. are decrypted in order from the top. Input to the circuit 15.

復号化回路15の入力レジスタ34は、上記の順番で入力される暗号文ブロックを保持し、保持した暗号文ブロックをその順番でパイプライン復号化演算部30と保持レジスタ38へ順次出力する。   The input register 34 of the decryption circuit 15 holds the ciphertext blocks input in the above order, and sequentially outputs the held ciphertext blocks to the pipeline decryption operation unit 30 and the holding register 38 in that order.

パイプライン復号化演算部30は、入力レジスタ34から順次入力される各暗号文ブロックに対し、KEYレジスタ36に保持されている暗号鍵と、11段の復号化演算部で段数分のAES規格に基づいた復号演算を並列に実行し、その演算結果のデータブロックをXOR演算部31に順次出力する。   For each ciphertext block sequentially input from the input register 34, the pipeline decryption operation unit 30 uses the encryption key held in the KEY register 36 and the AES standard corresponding to the number of stages in the 11-stage decryption operation unit. The decoding operation based on the data is executed in parallel, and the data block of the operation result is sequentially output to the XOR operation unit 31.

また、パイプライン復号化演算部30の段数が11段であることから、最初に入力された暗号文ブロック1'(N')を復号演算した演算結果(平文ブロック1 XOR イニシャルベクタIV)は、暗号文ブロック11'がパイプライン復号化演算部30に入力された後、その次の暗号文ブロック12'(N'+11)がパイプライン復号化演算部30に入力されるタイミングでパイプライン復号化演算部30から出力される。この出力後は、2番目以降に入力された暗号文ブロック2'を復号演算した演算結果(平文ブロック2 XOR 暗文ブロック1')、暗号文ブロック3'を復号演算した演算結果(平文ブロック3 XOR 暗文ブロック2')・・・、が連続してパイプライン暗号化演算部20から出力される。   Since the number of stages of the pipeline decryption operation unit 30 is 11, the operation result (plaintext block 1 XOR initial vector IV) obtained by decrypting the ciphertext block 1 ′ (N ′) input first is After the ciphertext block 11 ′ is input to the pipeline decryption operation unit 30, the pipeline decryption is performed at the timing when the next ciphertext block 12 ′ (N ′ + 11) is input to the pipeline decryption operation unit 30. Output from the arithmetic unit 30. After this output, the operation result obtained by decrypting the ciphertext block 2 ′ input after the second (plaintext block 2 XOR ciphertext block 1 ′) and the operation result obtained by decrypting the ciphertext block 3 ′ (plaintext block 3) XOR ciphertext block 2 ′)... Are continuously output from the pipeline encryption operation unit 20.

保持レジスタ38は、入力レジスタ34から入力された暗号文ブロックを内部に保持して入力順に出力すると共に、パイプライン復号化演算部30から暗号文ブロック(N'+1)の演算結果が出力されるタイミングで、その暗号文ブロックよりも1つ前の暗号文ブロック(N')を出力する。   The holding register 38 holds the ciphertext block input from the input register 34 and outputs the ciphertext block in the input order, and outputs the operation result of the ciphertext block (N ′ + 1) from the pipeline decryption operation unit 30. At the timing, the ciphertext block (N ′) immediately before the ciphertext block is output.

一方、セレクタ制御回路33は、CPU11から送られた、復号化対象データの暗号化プロセスでのイニシャルベクタIVの使用タイミングを示すIV使用タイミング情報に基づいて、イニシャルベクタIVの使用タイミングを決定する。   On the other hand, the selector control circuit 33 determines the use timing of the initial vector IV based on the IV use timing information sent from the CPU 11 and indicating the use timing of the initial vector IV in the encryption process of the data to be decrypted.

たとえば、図5の例で暗号化された暗号データの場合は、1番目の暗号文ブロック1'、101番目の暗号文ブロック101'、201番目の暗号文ブロック201'、・・・、1001番目の暗号文ブロック1001'というように、暗号文ブロック1'から100番飛ばしでイニシャルベクタIVをXOR演算部31に入力し、その他の暗号文ブロックに対しては保持レジスタ38から出力される暗号文ブロックをXOR演算部31に入力するようセレクタ32の切り替え制御を行う。これにより、セレクタ32は、暗号文ブロック1'、101'、201'、・・・、1001'に対してのみ、IVレジスタ37の保持しているイニシャルベクタIVをXOR演算部31に入力し、その他の暗号文ブロックに対しては保持レジスタ38から出力される暗号文ブロックをXOR演算部31に入力する。   For example, in the case of the encrypted data encrypted in the example of FIG. 5, the first ciphertext block 1 ′, the 101st ciphertext block 101 ′, the 201st ciphertext block 201 ′,. In the ciphertext block 1001 ′, the initial vector IV is input to the XOR operation unit 31 by skipping the number 100 from the ciphertext block 1 ′, and the ciphertext output from the holding register 38 for the other ciphertext blocks. The selector 32 is controlled so as to input the block to the XOR operation unit 31. Thereby, the selector 32 inputs the initial vector IV held in the IV register 37 only to the ciphertext blocks 1 ′, 101 ′, 201 ′,..., 1001 ′ to the XOR operation unit 31, For other ciphertext blocks, the ciphertext block output from the holding register 38 is input to the XOR operation unit 31.

XOR演算部31は、パイプライン復号化演算部30から順次入力される暗号文ブロックの演算結果のうち、暗号文ブロック1'、101'、201'、・・・、1001'の演算結果に対しては、IVレジスタ37からセレクタ32を介して入力されるイニシャルベクタIVとの排他的論理和演算を行い、その他の暗号文ブロック(N'+1)の演算結果に対しては、保持レジスタ38から出力される暗号文ブロック(N')との排他的論理和演算を行い、各暗号文ブロックの演算結果である復号化した平文ブロックを出力レジスタ35に順次出力する。   The XOR operation unit 31 operates on the operation results of the ciphertext blocks 1 ′, 101 ′, 201 ′,..., 1001 ′ among the operation results of the ciphertext blocks sequentially input from the pipeline decryption operation unit 30. The exclusive OR operation with the initial vector IV input from the IV register 37 via the selector 32 is performed, and the operation result of the other ciphertext block (N ′ + 1) is obtained from the holding register 38. An exclusive OR operation with the ciphertext block (N ′) to be output is performed, and the decrypted plaintext block as the operation result of each ciphertext block is sequentially output to the output register 35.

出力レジスタ35には、復号化された平文ブロック1、2、3・・・が順次保持され、並べ替え回路16は、出力レジスタ35に保持された平文ブロックを出力順に並べてRAM13に格納する。これにより、RAM13には平文ブロック1〜1100が順番通りに連続配列されて格納される。   The decrypted plaintext blocks 1, 2, 3,... Are sequentially held in the output register 35, and the rearrangement circuit 16 arranges the plaintext blocks held in the output register 35 in the order of output and stores them in the RAM 13. Thereby, the plaintext blocks 1 to 1100 are sequentially arranged and stored in the RAM 13 in order.

このように、本実施形態の暗号処理装置10では、暗号化処理において、パイプライン暗号化演算部20から出力される暗号文ブロックを入力に戻して次の平文ブロックの暗号化に使用していることにより、強度の高い暗号化プロセスとなり、暗号文ブロックを入力に戻して次の平文ブロックの暗号化を行わない暗号化プロセスに比べて、暗号化強度の低下を抑制できる。   As described above, in the encryption processing apparatus 10 of the present embodiment, in the encryption process, the ciphertext block output from the pipeline encryption operation unit 20 is returned to the input and used for encryption of the next plaintext block. As a result, the encryption process has a high strength, and a decrease in the encryption strength can be suppressed as compared with an encryption process in which the ciphertext block is returned to the input and the next plaintext block is not encrypted.

また、平文ブロックの暗号演算を行う暗号化回路14の暗号化演算部をパイプライン化したことで、そのパイプライン暗号化演算部20は、XOR演算部21から演算結果を連続して入力されても、その連続入力される演算結果に対し段数分の暗号演算を並列に実行してパイプライン処理し、暗号データを連続生成して出力できる。たとえば、図5で説明したように複数セットのデータ群で暗号化を行えば、単一のノンパイプラインの暗号化演算部を使用して1つの平文ブロックの暗号演算を所定回数繰り返すような暗号化プロセスに比べ、暗号化の処理速度を向上することができる。   In addition, since the encryption operation unit of the encryption circuit 14 that performs the encryption operation of the plaintext block is pipelined, the pipeline encryption operation unit 20 receives the operation results continuously from the XOR operation unit 21. In addition, it is possible to execute cryptographic operations for the number of stages in parallel on the operation results that are continuously input, perform pipeline processing, and continuously generate and output encrypted data. For example, as described with reference to FIG. 5, if encryption is performed with a plurality of sets of data groups, a single non-pipeline encryption operation unit is used to repeat encryption operations for one plaintext block a predetermined number of times. Compared to the encryption process, the encryption processing speed can be improved.

また、特に本実施形態では、一連の暗号化対象データをパイプライン暗号化演算部20の段数と同数に等分して11個のデータ群を構成し、各データ群をAES規格に基づくブロックデータずつに分割して各データ群の各ブロックデータの暗号演算をパイプライン暗号化演算部20により並列に実行して暗号化していることで(パイプライン処理)、たとえば、一連の暗号化対象データを段数未満に分割した場合のように、パイプライン暗号化演算部20で暗号演算の行われない段が発生して処理効率が低下したり、一連のデータをパイプライン暗号化演算部20の段数より多く分割した場合のように、イニシャルベクタIVの使用回数が増えて暗号化強度が低下したりするようなことを抑制できる。   In particular, in the present embodiment, a series of data to be encrypted is equally divided into the same number as the number of stages of the pipeline encryption operation unit 20 to form 11 data groups, and each data group is a block data based on the AES standard. By dividing each block data and performing encryption operations on each block data of each data group in parallel by the pipeline encryption operation unit 20 (pipeline processing), for example, a series of data to be encrypted As in the case where the number of stages is less than the number of stages, the pipeline encryption operation unit 20 generates a stage in which the cryptographic operation is not performed and the processing efficiency is reduced, or a series of data is compared with the number of stages of the pipeline encryption operation unit 20. As in the case where the number of divided initial vectors IV is increased, the number of times the initial vector IV is used and the encryption strength is reduced.

一連の暗号化対象データを分割して構成するデータ群の数をパイプライン暗号化演算部20の段数以上にすれば、隙間を空けることなく平文ブロックをパイプライン暗号化演算部20に連続的に入力してパイプライン処理を繰り返し行うことができるため、処理効率は良くなる。一方、データ群の数が少ないほど、イニシャルベクタIVの使用回数を少なくすることができて暗号化強度の低下は抑制できる。したがって、イニシャルベクタIVの使用回数を最小にして高い暗号化強度を保ちつつ、効率の良いパイプライン処理を行うためには、本実施形態のように、データ群の数をパイプライン暗号化演算部20の段数と等しくすることが最も好ましく、この条件によって最適化処理が実現される。   If the number of data groups formed by dividing a series of data to be encrypted is equal to or greater than the number of stages of the pipeline encryption operation unit 20, plaintext blocks are continuously transmitted to the pipeline encryption operation unit 20 without leaving a gap. Since the pipeline processing can be repeatedly performed by inputting, the processing efficiency is improved. On the other hand, the smaller the number of data groups, the smaller the number of uses of the initial vector IV, and the lowering of the encryption strength can be suppressed. Therefore, in order to perform efficient pipeline processing while minimizing the number of uses of the initial vector IV and maintaining high encryption strength, the number of data groups is changed to a pipeline encryption operation unit as in this embodiment. Most preferably, the number of stages is equal to 20, and the optimization process is realized by this condition.

さらに、各データ群の1番目のブロックデータを連続的に暗号化する1サイクル目だけにイニシャルベクタIVを使用し、各データ群の2番目以降のブロックデータを連続的に暗号化する2サイクル目以降には暗号データを使用して暗号化を行えばよいため、イニシャルベクタIVと暗号データの切り替えの管理も簡単になる。   Further, the initial vector IV is used only in the first cycle for continuously encrypting the first block data of each data group, and the second cycle for continuously encrypting the second and subsequent block data of each data group. Thereafter, since it is sufficient to perform encryption using encrypted data, the management of switching between the initial vector IV and the encrypted data is also simplified.

また復号化回路15では、暗号文ブロックの復号演算を行う復号化演算部をパイプライン化したことで、復号化処理ではそのパイプライン復号化演算部30に暗号文ブロックを連続的に入力して段数分の復号演算を並列に実行しパイプライン処理することができる。これにより、単一のノンパイプラインの復号化演算部を使用して1つの暗号文ブロックの復号演算を所定回数繰り返すような復号化処理に比べ、復号化の処理速度を向上することができる。   In the decryption circuit 15, the decryption operation unit that performs the decryption operation on the ciphertext block is pipelined. In the decryption process, the ciphertext block is continuously input to the pipeline decryption operation unit 30. Decoding operations for the number of stages can be executed in parallel to perform pipeline processing. As a result, the decryption processing speed can be improved as compared with a decryption process in which a decryption operation of one ciphertext block is repeated a predetermined number of times using a single non-pipeline decryption operation unit.

また復号化プロセスでは、イニシャルベクタIVの使用タイミングを暗号化プロセスに合わせることで、パイプラインおよびノンパイプラインのいずれの暗号化演算部により暗号化された暗号文ブロックであっても復号化が可能となり、汎用のCBCモードにおける暗号化プロセスと互換性を保つことができる。   Also, in the decryption process, by matching the use timing of the initial vector IV with the encryption process, it is possible to decrypt any ciphertext block encrypted by either the pipeline or non-pipeline encryption operation unit. Thus, compatibility with the encryption process in the general-purpose CBC mode can be maintained.

なお、複合機では、スキャンした画像データをプリントする際はパイプライン回路で暗号化し、パイプライン回路で復号化するのが適しており、スキャンした画像データをネットワーク送信などする場合は、パイプライン回路で暗号化し、ノンパイプライン回路で復号化するのが適している。また、FAX受信したデータをプリントなどする場合は、ノンパイプライン回路で暗号化し、パイプライン回路で復号化するのが適している。   Note that when printing scanned image data in a multi-function peripheral, it is suitable to encrypt with a pipeline circuit and decrypt with a pipeline circuit. When scanning scanned image data over a network, the pipeline circuit It is suitable to encrypt with the non-pipeline circuit. In addition, when printing data received by FAX, it is suitable to encrypt with a non-pipeline circuit and decrypt with a pipeline circuit.

以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。   The embodiment of the present invention has been described with reference to the drawings. However, the specific configuration is not limited to that shown in the embodiment, and there are changes and additions within the scope of the present invention. Are also included in the present invention.

たとえば、実施の形態における暗号化処理では、平文ブロックNとこれに後続する平文ブロックN+1とをパイプライン暗号化演算部20の段数分だけ離れるタイミング規則でXOR演算部21に入力するようにしているが、パイプライン暗号化演算部20の段数よりも離れるタイミング規則でXOR演算部21に入力するようにしてもよい。その場合は、平文ブロックNを暗号化した暗号文ブロックN'のXOR演算部21への入力タイミングを遅らせる回路などを設けることにより、暗号文ブロックN'と平文ブロックN+1とのXOR演算部21への入力タイミングが合わせられる。   For example, in the encryption process in the embodiment, the plaintext block N and the subsequent plaintext block N + 1 are input to the XOR operation unit 21 with a timing rule that is separated by the number of stages of the pipeline encryption operation unit 20. However, it may be inputted to the XOR operation unit 21 with a timing rule that is separated from the number of stages of the pipeline encryption operation unit 20. In that case, by providing a circuit for delaying the input timing of the ciphertext block N ′ obtained by encrypting the plaintext block N to the XOR operation unit 21, the XOR operation unit 21 between the ciphertext block N ′ and the plaintext block N + 1 is provided. The input timing is adjusted.

また、暗号化の対象となるデータ全体をパイプライン暗号化演算部20の段数と同数に等分して、暗号演算のパイプライン処理を行っているが、パイプライン暗号化演算部20の段数よりも大きい数に分割して暗号演算のパイプライン処理を行うことも可能である。パイプライン回路を使用した暗号化処理で最も処理効率が良いのは、暗号化対象データを分割して構成するデータ群の数=パイプライン暗号化演算部20の段数であるが、データ群の数がパイプライン暗号化演算部20の段数と異なっていても、たとえば2サイクル目以降はイニシャルベクタIVおよび暗号文ブロックの入力タイミングをずらすことでパイプライン処理が可能である。   In addition, the entire data to be encrypted is equally divided into the number of stages of the pipeline encryption operation unit 20 and the pipeline processing of the encryption operation is performed, but from the number of stages of the pipeline encryption operation unit 20 It is also possible to divide the number into large numbers and perform cryptographic computation pipeline processing. The most efficient processing in the encryption processing using the pipeline circuit is the number of data groups formed by dividing the data to be encrypted = the number of stages of the pipeline encryption operation unit 20, but the number of data groups However, even if the number of stages of the pipeline encryption operation unit 20 is different, for example, after the second cycle, pipeline processing can be performed by shifting the input timing of the initial vector IV and the ciphertext block.

また、実施の形態のようなデジタル複合機などの画像形成装置においては、暗号化対象のデータ群を1ページ分の画像のデータとし、その1ページ分の画像データを所定ブロック長の平文ブロックずつに分割して各ページの各平文ブロックの暗号演算をパイプライン暗号化演算部20により並列に実行して暗号化するようにしてもよい。これにより、暗号化ではページ毎(データ群毎)に、1番目の平文ブロックの暗号演算にはイニシャルベクタIVを使用し、2番目以降の平文ブロックの暗号演算には前の暗号文ブロックを使用できるようになり、この暗号データを復号化する場合は、ページ単位に暗号化されているとして扱えば、各ページの1番目の暗号文ブロックの復号化にはイニシャルベクタIVを使用し、2番目以降の暗号文ブロックの復号化には前の暗号文ブロックを使用することで復号化が可能となり、IV使用タイミング情報に基づく切り替え制御を行わない装置でも復号化できるようになる。   Further, in an image forming apparatus such as a digital multi-function peripheral as in the embodiment, a data group to be encrypted is used as image data for one page, and the image data for one page is each plaintext block having a predetermined block length. In other words, the encryption operation of each plaintext block of each page may be executed in parallel by the pipeline encryption operation unit 20 and encrypted. As a result, for encryption, for each page (each data group), the initial vector IV is used for the cipher operation of the first plaintext block, and the previous ciphertext block is used for the cipher operation of the second and subsequent plaintext blocks. When this encrypted data is decrypted, if it is treated as being encrypted in units of pages, the initial vector IV is used to decrypt the first ciphertext block of each page, and the second The subsequent ciphertext block can be decrypted by using the previous ciphertext block, and can be decrypted even by a device that does not perform switching control based on the IV use timing information.

本発明の実施の形態に係る暗号処理装置の構成を示すブロック図である。It is a block diagram which shows the structure of the encryption processing apparatus which concerns on embodiment of this invention. 本発明の実施の形態に係る暗号化回路を示す回路構成図である。It is a circuit block diagram which shows the encryption circuit which concerns on embodiment of this invention. 本発明の実施の形態に係る復号化回路を示す回路構成図である。It is a circuit block diagram which shows the decoding circuit which concerns on embodiment of this invention. 本発明の実施の形態に係るパイプライン回路を示すブロック図である。It is a block diagram which shows the pipeline circuit which concerns on embodiment of this invention. 本発明の実施の形態に係る暗号処理装置による暗号化処理の動作を示す説明図である。It is explanatory drawing which shows the operation | movement of the encryption process by the encryption processing apparatus which concerns on embodiment of this invention. 本発明の実施の形態に係る暗号処理装置による暗号化処理の動作タイミングを示すタイミングチャートである。It is a timing chart which shows the operation timing of the encryption process by the encryption processing apparatus which concerns on embodiment of this invention. 本発明の実施の形態に係る暗号処理装置による復号化処理の動作タイミングを示すタイミングチャートである。It is a timing chart which shows the operation timing of the decoding process by the encryption processing apparatus which concerns on embodiment of this invention. 従来の暗号化回路を示す回路構成図である。It is a circuit block diagram which shows the conventional encryption circuit. 従来の復号化回路を示す回路構成図である。It is a circuit block diagram which shows the conventional decoding circuit. (A)はCBCモードの暗号化プロセスを示すプロセス図、(B)はCBCモードの復号化プロセスを示すプロセス図である。(A) is a process diagram showing an encryption process in the CBC mode, and (B) is a process diagram showing a decryption process in the CBC mode. 従来の暗号化回路による暗号化処理の動作タイミングを示すタイミングチャートである。It is a timing chart which shows the operation timing of the encryption process by the conventional encryption circuit. 従来の復号化回路による復号化処理の動作タイミングを示すタイミングチャートである。It is a timing chart which shows the operation timing of the decoding process by the conventional decoding circuit. 従来のノンパイプライン回路を示す構成図である。It is a block diagram which shows the conventional nonpipeline circuit. 従来のノンパイプライン回路によるデータ出力タイミングを示すタイミングチャートである。It is a timing chart which shows the data output timing by the conventional nonpipeline circuit.

符号の説明Explanation of symbols

10…暗号処理装置
11…CPU
12…ROM
13…RAM
14…暗号化回路
15…復号化回路
16…並べ替え回路
20…パイプライン暗号化演算部
21…XOR演算部
22…セレクタ
23…セレクタ制御回路
24…入力レジスタ
25…出力レジスタ
26…KEYレジスタ
27…IVレジスタ
30…パイプライン復号化演算部
31…XOR演算部
32…セレクタ
33…セレクタ制御回路
34…入力レジスタ
35…出力レジスタ
36…KEYレジスタ
37…IVレジスタ
38…保持レジスタ
40…パイプライン回路
41…ノンパイプライン回路
10: Cryptographic processing device 11 ... CPU
12 ... ROM
13 ... RAM
DESCRIPTION OF SYMBOLS 14 ... Encryption circuit 15 ... Decryption circuit 16 ... Rearrangement circuit 20 ... Pipeline encryption operation part 21 ... XOR operation part 22 ... Selector 23 ... Selector control circuit 24 ... Input register 25 ... Output register 26 ... KEY register 27 ... IV register 30 ... Pipeline decoding arithmetic unit 31 ... XOR arithmetic unit 32 ... Selector 33 ... Selector control circuit 34 ... Input register 35 ... Output register 36 ... KEY register 37 ... IV register 38 ... Holding register 40 ... Pipeline circuit 41 ... Non-pipeline circuit

Claims (11)

複数の暗号化処理部がパイプライン構造で接続されたパイプライン暗号化処理部と、
入力される単位データと前記パイプライン暗号化処理部から出力された暗号データとを演算し、その演算結果を前記パイプライン暗号化処理部に入力する演算部と、
暗号化対象のデータ群を前記単位データずつに分割し、かつ一の単位データとこれに後続する単位データとを前記パイプライン暗号化処理部の前記パイプライン構造の段数分以上離れるタイミング規則で前記演算部に入力する制御部と、
を備える
ことを特徴とする暗号処理装置。
A pipeline encryption processing unit in which a plurality of encryption processing units are connected in a pipeline structure;
An arithmetic unit that calculates the unit data to be input and the encrypted data output from the pipeline encryption processing unit, and inputs the operation result to the pipeline encryption processing unit;
The data group to be encrypted is divided into unit data, and one unit data and subsequent unit data are separated by at least the number of stages of the pipeline structure of the pipeline encryption processing unit according to the timing rule. A control unit that inputs to the computation unit;
A cryptographic processing apparatus comprising:
初期ベクタを保持する保持レジスタと、
前記データ群に対する1回目の暗号化が行われるときは前記暗号データに代えて前記保持レジスタに保持されている初期ベクタを前記演算部に入力する切替部と、
をさらに備える
ことを特徴とする請求項1に記載の暗号処理装置。
A holding register to hold the initial vector;
When the first encryption for the data group is performed, a switching unit that inputs an initial vector held in the holding register instead of the encrypted data to the arithmetic unit;
The cryptographic processing apparatus according to claim 1, further comprising:
前記制御部は、前記一の単位データの暗号データが前記パイプライン暗号化処理部を経て前記演算部に戻されるタイミングで前記後続する単位データを前記演算部に入力する
ことを特徴とする請求項1または2に記載の暗号処理装置。
The control unit inputs the subsequent unit data to the arithmetic unit at a timing when the encrypted data of the one unit data is returned to the arithmetic unit via the pipeline encryption processing unit. 3. The cryptographic processing apparatus according to 1 or 2.
前記制御部は、前記パイプライン暗号化処理部から前記タイミング規則で離間して出力される前記一の単位データの暗号データと前記後続する単位データの暗号データとを連続配列させる
ことを特徴とする請求項1乃至請求項3のいずれか1項に記載の暗号処理装置。
The control unit sequentially arranges the encrypted data of the one unit data and the encrypted data of the subsequent unit data that are output separately from the pipeline encryption processing unit according to the timing rule. The cryptographic processing apparatus according to any one of claims 1 to 3.
前記制御部は、一のデータ群から分割された単位データを前記タイミング規則で前記演算部に順次入力する動作を、複数のデータ群に対して、前記単位データを前記演算部に入力するタイミングをデータ群毎に異ならせて並行に行う
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載の暗号処理装置。
The control unit performs an operation of sequentially inputting unit data divided from one data group to the arithmetic unit according to the timing rule, and a timing for inputting the unit data to the arithmetic unit for a plurality of data groups. The encryption processing apparatus according to claim 1, wherein the encryption processing apparatuses are performed in parallel with different data groups.
前記データ群は、1ページ分の画像のデータである
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
The encryption processing apparatus according to claim 1, wherein the data group is image data for one page.
前記データ群は、一連のデータを複数に分割して構成される
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
The cryptographic processing apparatus according to any one of claims 1 to 5, wherein the data group is configured by dividing a series of data into a plurality of pieces.
前記データ群は、一連のデータを前記パイプライン暗号化処理部の前記パイプライン構造の段数と同数に等分して構成される
ことを特徴とする請求項1乃至請求項5のいずれか1項に記載の暗号処理装置。
6. The data group according to claim 1, wherein the data group is configured by equally dividing a series of data into the same number of stages of the pipeline structure of the pipeline encryption processing unit. The cryptographic processing device according to 1.
複数の復号化処理部がパイプライン構造で接続されたパイプライン復号化処理部と、
初期ベクタを保持する第1保持部と、
前記パイプライン復号化処理部に入力される暗号データと同一の暗号データを保持すると共に、前記パイプライン復号化処理部から前記暗号データの次の暗号データに対する演算結果が出力されるタイミングで前記保持している暗号データを出力する第2保持部と、
初期ベクタの使用タイミングを示すタイミング情報が入力され、そのタイミング情報に基づいて前記第1保持部に保持されている初期ベクタまたは前記第2保持部から出力される暗号データに出力を切り替える切替部と、
前記パイプライン復号化処理部から出力される演算結果と、前記切替部から出力される初期ベクタまたは暗号データとを演算する演算部と、
を備える
ことを特徴とする暗号処理装置。
A pipeline decoding processing unit in which a plurality of decoding processing units are connected in a pipeline structure;
A first holding unit for holding an initial vector;
The same encrypted data as the encrypted data input to the pipeline decryption processing unit is retained, and the retention is performed at a timing when an operation result for the encrypted data next to the encrypted data is output from the pipeline decryption processing unit. A second holding unit for outputting the encrypted data
A switching unit that receives timing information indicating the use timing of the initial vector, and switches the output to the initial vector held in the first holding unit or the encrypted data output from the second holding unit based on the timing information; ,
A calculation unit that calculates a calculation result output from the pipeline decryption processing unit and an initial vector or encrypted data output from the switching unit;
A cryptographic processing apparatus comprising:
前記タイミング情報は初期ベクタの使用周期を示す周期情報を含み、
前記切替部は前記周期情報に基づいて、前記第1保持部に保持されている初期ベクタを1回目に出力した後、前記第2保持部から出力される暗号データに出力を切り替える動作を所定の周期で繰り返し行う
ことを特徴とする請求項9に記載の暗号処理装置。
The timing information includes period information indicating a use period of the initial vector,
The switching unit outputs an initial vector held in the first holding unit for the first time based on the cycle information, and then performs an operation of switching output to encrypted data output from the second holding unit. The encryption processing apparatus according to claim 9, wherein the encryption processing apparatus is repeatedly performed in a cycle.
1回の前記周期で前記パイプライン復号化処理部から演算結果が出力される回数が、請求項1乃至請求項8のいずれか1項に記載の暗号処理装置において暗号化される前記データ群を構成する単位データの数である
ことを特徴とする請求項10に記載の暗号処理装置。
The number of times that the operation result is output from the pipeline decryption processing unit in the one cycle is the number of data groups to be encrypted in the cryptographic processing device according to any one of claims 1 to 8. The encryption processing apparatus according to claim 10, wherein the number of unit data is configured.
JP2007035953A 2007-02-16 2007-02-16 Encryption processor Withdrawn JP2008203306A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007035953A JP2008203306A (en) 2007-02-16 2007-02-16 Encryption processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007035953A JP2008203306A (en) 2007-02-16 2007-02-16 Encryption processor

Publications (1)

Publication Number Publication Date
JP2008203306A true JP2008203306A (en) 2008-09-04

Family

ID=39780928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007035953A Withdrawn JP2008203306A (en) 2007-02-16 2007-02-16 Encryption processor

Country Status (1)

Country Link
JP (1) JP2008203306A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009109988A (en) * 2007-10-10 2009-05-21 Canon Inc Encryption processing circuit
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009109988A (en) * 2007-10-10 2009-05-21 Canon Inc Encryption processing circuit
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption

Similar Documents

Publication Publication Date Title
KR101068367B1 (en) Method and apparatus for optimizing advanced encryption standard aes encryption and decryption in parallel modes of operation
EP2356771B1 (en) Low latency block cipher
US7639797B2 (en) Apparatus and method of performing AES Rijndael algorithm
US11546135B2 (en) Key sequence generation for cryptographic operations
JP2010140026A (en) Method and device for encryption chained mode
US9288040B2 (en) Encryption device
US8594321B2 (en) Apparatus and method for operating a symmetric cipher engine in cipher-block chaining mode
JP2008058826A (en) Encryption processor, encryption processing method, and computer program
WO2015179184A1 (en) Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
JP2007114404A (en) Data processing device and method
JP3824121B2 (en) Method and apparatus for decrypting encrypted data
CN114390317B (en) Encryption method and system for streaming video
JP2009088641A (en) Transmission reception method, communication system and transmitter
US20030235298A1 (en) Shifting an encryption key in either a first or second direction via a uni-directional shifting unit
JP2008203306A (en) Encryption processor
JP2008252349A (en) Communication method and communication system
JP4466641B2 (en) Cryptographic processing device
JP6167721B2 (en) ENCRYPTION DEVICE, DECRYPTION DEVICE, ENCRYPTION METHOD, DECRYPTION METHOD, AND PROGRAM
Fronte et al. Celator: A multi-algorithm cryptographic co-processor
KR100710455B1 (en) Apparatus for rijndael block cipher and encryption/decryption method thereof
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
JP2001177518A (en) Enciphering method, and decoding method and device
JP4287397B2 (en) Ciphertext generation apparatus, ciphertext decryption apparatus, ciphertext generation program, and ciphertext decryption program
JP2009069686A (en) Encryption circuit and decryption circuit
Beuchat et al. A low-area unified hardware architecture for the AES and the cryptographic hash function ECHO

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