WO2004001701A1 - 符号演算装置 - Google Patents

符号演算装置 Download PDF

Info

Publication number
WO2004001701A1
WO2004001701A1 PCT/JP2002/006166 JP0206166W WO2004001701A1 WO 2004001701 A1 WO2004001701 A1 WO 2004001701A1 JP 0206166 W JP0206166 W JP 0206166W WO 2004001701 A1 WO2004001701 A1 WO 2004001701A1
Authority
WO
WIPO (PCT)
Prior art keywords
matrix
data
value
matrix value
register
Prior art date
Application number
PCT/JP2002/006166
Other languages
English (en)
French (fr)
Inventor
Motonobu Tonomura
Yuki Kondoh
Original Assignee
Hitachi, Ltd.
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 Hitachi, Ltd. filed Critical Hitachi, Ltd.
Priority to US10/518,481 priority Critical patent/US20060034452A1/en
Priority to PCT/JP2002/006166 priority patent/WO2004001701A1/ja
Priority to JP2004515442A priority patent/JPWO2004001701A1/ja
Publication of WO2004001701A1 publication Critical patent/WO2004001701A1/ja

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/304Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy based on error correction codes, e.g. McEliece
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Definitions

  • the present invention relates to a code operation device for communication data, and more particularly, to generation of an error detection (correction) code required in transmission and reception of digital bucket data.
  • CRC Cyclic Redundancy Check Codes
  • the C R C. arithmetic expression is described in, for example, Ramabadran, T. V. and Gaitonde S. S. "A tutorial on CRC Computations", IEEE Micro, vol. 8, No. 4, pp. 62-75, Aug. 1988.
  • RSA encryption is famous as an encryption method used to maintain data confidentiality.
  • RSA requires a long code of 124 bits as a cryptographic Z decryption key, so recently, the code length can be as short as about 160 bits, so that Elliptic Curve Cryptography (ECC) can be used.
  • ECC Elliptic Curve Cryptography
  • Literature on elliptic curve cryptography includes, for example, Moon,., Park, J. and Lee, Y., Fast VLSI Arithmetic Algorithms for High-Security Elliptic Curve Cryptographic Applications "IEEE Trans. Consumer Electronics ⁇ vol.47, No.3, pp.700-708, Aug.2001.
  • the above documents include the operations required for elliptic curve cryptography (ECC) Equations and an example of a large-scale integrated circuit that implements ECC processing are described.
  • ECC Since SA employs a modular operation that causes carry propagation, the amount of hardware increases.
  • ECC is based on a Galois field (finite field) that does not cause carry propagation, as described below, so data can be encrypted / decrypted with compact hardware.
  • the Galois field of this polynomial is generally denoted as GF (2 n ).
  • the value of the coefficient is "0" or "1” and is expressed as gi e GF (2).
  • Exclusive OR (EOR) operation (4) is performed in the coefficient term of GF (2), but in this specification, the (+) operator is used unless otherwise confused.
  • n X n matrix ⁇ in equation (4) is called the Mastrovito matrix, and the value of the matrix M can be calculated in advance from the polynomials a (X) and g (x) .
  • the CRC value is obtained by converting x n 'b (x) into a polynomial g ( Calculated as the remainder c (x) obtained by dividing by x).
  • the object of the present invention is to provide a code operation device that can be used for both error detection processing and encryption / decryption processing.
  • Still another object of the present invention is to calculate a matrix value for error detection processing and a matrix value for encryption / decryption processing in the same matrix value calculation unit, and selectively use these matrix values to perform error detection processing and Another object of the present invention is to provide a code arithmetic unit that performs a cryptographic decryption process.
  • Still another object of the present invention is to provide a packet communication device capable of executing an error detection process and an encryption / "decryption process with a compact hardware configuration. It focuses on the similarity between the Galois field-based CRC and ECC arithmetic expressions, and features a common hardware for CRC and ECC arithmetic. When trying to use the same processing for CRC and elliptic curve cryptography ECC, one of the easily conceivable solutions is a polynomial a () that multiplies the data b (x) by the ECC calculation shown in equation (2).
  • Galois field modulo arithmetic the following properties of Galois field modulo arithmetic are used to commonize the arithmetic processing of CRC and ECC.
  • irreducible polynomial g applied to the Galois field modulo operation (x) is the coefficient of x n g n is "1". Therefore, the modulo operation the higher order terms x n of the applied n or next to CR C operation indicated by equation (6) by g (x), is the reduction in the section of the remainder of the n-1 order or less, the following polynomial ( 7) is obtained.
  • C R C can be calculated according to equation (9) by setting the value of g ′ (x) instead of a (x).
  • One of the features of the present invention is that, by transforming the CRC operation expression as shown in Expression (9) and adapting the order to the ECC operation expression (3), the same matrix value operation unit is used. This is to enable calculation of ECC matrix values and CRC matrix values.
  • Another feature of the present invention is that, by selectively using a matrix value for ECC and a matrix value for CRC that have been calculated in advance, the same product-sum operation unit can perform ECC encoding and Z decoding. That is, CRC calculation can be executed.
  • FIG. 1 is a block diagram showing a configuration of a bucket communication device having an error detection function and an encryption processing function to which the present invention is applied.
  • FIG. 2 is a diagram for explaining encoding and decoding processing for CRC error detection.
  • Fig. 3 is a diagram for explaining ECC encryption and decryption processing.
  • FIG. 4 is a block diagram showing an embodiment of an arithmetic unit according to the present invention including a matrix arithmetic circuit 30.
  • FIG. 5 is a diagram for explaining a calculated value array of a matrix M generated by the matrix calculation circuit 30.
  • Figure 6 shows how the calculated value of the matrix ⁇ of ⁇ X ⁇ is divided into FIG.
  • FIG. 7 is a diagram for explaining the relationship between input / output data and sub-matrices constituting a matrix M for ECC.
  • FIG. 8 is a diagram showing an embodiment of a matrix value calculation unit 30 shared by CRC and ECC.
  • FIG. 9 is a flowchart showing one embodiment of a CRC matrix value generation routine 100 executed by the controller 70 shown in FIG.
  • FIG. 10 is a flowchart showing an embodiment of an ECC matrix value generation routine 120 executed by the controller 70.
  • Fig. 11 shows the transmission data processing routine executed by the controller 70.
  • FIG. 12 is a flowchart showing details of the transmission data encryption 210 in the transmission data processing routine 200.
  • Fig. 13 shows the CRC generation in the transmission data processing routine 200.
  • FIG. 1 is a block diagram of a packet communication device having a data error detection function and an encryption processing function to which the present invention is applied.
  • the bucket communication device includes a core processor (P-CORE) 10, a transmission / reception data processing unit 20, and a transmission unit 11 and a reception unit 12 connected to the transmission path 13.
  • P-CORE core processor
  • the transmission section 11 and the reception section 12 each include an A / D DZA converter and an RF (Radio Frequency) processing section, and the transmission path 13 is an analog wired circuit.
  • the modem processing unit is included.
  • the transmission / reception data processing section 20 is composed of a control processor (P-C0NT) 21, an encryption coding section (ECC-ENC) 22, an error detection coding section (CRC-ENC) 23, and error detection decoding.
  • P-C0NT control processor
  • ECC-ENC encryption coding section
  • CRC-ENC error detection coding section
  • DEC-DEC error detection decoding section
  • Department CC-DEC
  • ECC-DEC ⁇ decoding part
  • BMF-MEM buffer memory
  • MEM memory
  • the transmission message (plaintext data) output from the core processor 10 is temporarily stored in the transmission buffer area of the buffer memory 26, and when the transmission data needs to be kept confidential, the transmission message is encrypted. Encrypted in part 22.
  • the transmission message (plaintext data or encrypted data) is transmitted from the transmission unit 11 to the transmission path 13 with the error detection code generated by the error detection encoding unit 23 added.
  • the received message (plaintext data or encrypted data) with the error detection code received from the transmission path 13 is stored in the reception buffer area of the buffer memory 26 from the reception unit 12 and is subjected to error detection decoding.
  • the remainder of the error detection code of the received message is calculated. If the remainder is zero, it is determined that there is no error in the received data, and the error detection code is removed from the received message. If the data of the received message from which the error detection code has been removed is a ciphertext, the data is returned to plaintext by the encryption / decryption unit 25 and then transferred to the core processor 10 via the buffer memory 26.
  • the information required for error detection and data decoding / decoding is stored in memory
  • FIG. 2 shows the operation of the error detection coding unit 23 and the error detection decoding unit 24 when CRC is applied to error detection.
  • Data block b (x) is divided and encoded for each data block.
  • dividing the data b (x) is then shifted to the n bits left (operation x n 'b (x)), which in the pre-specified number g (x) (Modulo operation) to find the remainder r (x).
  • r (x) ⁇ x n * b (x) mod g (x) (1 1)
  • add r (x) to data x n b (x), that is, w (x) x n -b Perform the operation of (x) ⁇ r (x).
  • the original n-bit data block is transmitted to the transmission line in a form converted to a data block w (x) having a length of 2 n bits.
  • the error detection decoding section 24 on the receiving side receives the same data as the transmitting side on the data packet w (X) 2 x n 'V ( ⁇ ) ⁇ ⁇ ( ⁇ ) received from the transmission path. Perform modulo operation on number g (x) to find remainder. If no error occurs on the transmission line, the following equation (1 2) holds, and the remainder c (x) becomes zero.
  • FIG. 3 shows operations of the encryption encoder 22 and the encryption decryptor 25 when ECC is applied to encryption.
  • the sign encoding unit 22 divides the transmission data into n-bit data blocks, sets the transmission data block as a polynomial b (x), the common key as a polynomial a (x), and uses an irreducible polynomial g (X). By executing the modulo operation, the encrypted data c (x) represented by Expression (2) is generated.
  • the block length n of ECC encrypted data is about 160 bits longer than CRC, so to apply the same hardware as CRC, transmit data block b (x), common key a (x), The polynomial g (x) is divided into a plurality of sub-blocks each corresponding to the CRC bit length, and the encryption process is repeated.
  • the encrypted data added with the error detection code is detected by the receiving side as an error. If there is no error, the data is returned to the encrypted data c (x) from which the error detection code has been removed.
  • the encryption / decryption unit 25 on the receiving side replaces a (x) and b (x) in equation (2) with the secret key d (x) and the received data c (x ) And perform modulo operation with the irreducible polynomial g (x) to obtain the decoded data b (x).
  • FIG. 4 shows an embodiment of the transmission / reception data processing unit 20 according to the present invention.
  • the transmission / reception data processing unit (code operation unit) 20 includes a matrix value operation unit (MAT-UNIT) 30, a product-sum operation unit (CAL-ring IT) 40, a control unit (CONTROLLER) 70, and a buffer memory (BUF- NEM) 26, parameter storage memory 27, matrix value storage memory (MAT-MEM) 50, matrix value register (M-REG) 51, operation result holding memory (C-MEM) 52, parameter register (A -REG, G-REG) 201, 202, data register (B-REG) 203, code register (C-REG) 204, E0R addition circuit 53, and match detection circuit 54.
  • MAT-UNIT matrix value operation unit
  • CAL-ring IT product-sum operation unit
  • CONTROLLER CONTROLLER
  • BBF- NEM buffer memory
  • parameter storage memory MAT-MEM
  • M-REG matrix value register
  • C-MEM operation result holding memory
  • parameter register A -REG, G-REG
  • B-REG data
  • the memory 27 stores the reduced polynomial g '(X) storage area (g'-CRC) 27 1 required for the CRC operation and the irreducible polynomial g (x) required for the ECC operation. It includes an area (g-ECC) 272, a storage area (E-KEY) 273 for an encryption key (public ⁇ ), and a storage area (D-KEY) 274 for a decryption key (private key).
  • the buffer memory 26 has a storage area (Tx-BUF) 26 1 ⁇ for the transmission message supplied from the core processor 10, a storage area (Tx-ENC) 26 2 ⁇ for the encrypted transmission message, and a receiving unit.
  • the storage area for received messages (Rx-ENC) 26 2 B and the storage area for decoded received messages (Rx-BUF) 26 1 B are defined, and the core processor 10 and the transmission / reception data processing unit 20 are defined.
  • the message is transmitted and received between the Tx-BUF region 26 1 ⁇ and the Rx-BUF region 26 1 B.
  • the operation modes of the transmission / reception data processing unit (code operation device) 20 shown in the present embodiment include a matrix value operation mode, a transmission data encryption mode, a transmission data error encoding mode, and a reception data error detection. Mode and encrypted data decryption mode.
  • the control unit 70 switches these operation modes.
  • the matrix value calculation mode for example, when generating a matrix value for ECC encryption, the value of the irreducible polynomial g (x) read from the control unit 70 , And the matrix value calculation unit 30 is started with the encryption key read from the memory area 273 set to A-REG 201. The generated matrix value is held in the encryption matrix area of the memory 50.
  • the value of the irreducible polynomial g (x) is set in the memory region 272-G-REG202, and the memory region 274-A-REG202
  • the matrix value generated in a state where a decryption key is set in the matrix 50 and generated by the matrix value calculation unit 30 is held in the decryption matrix area of the memory 50.
  • the matrix values for CRC are generated in a state where the values of g ′ (x) and the memory area 27 1 are set in A-REG 201 and G-REG 202, and the matrix value calculation unit 30 The matrix value generated in is stored in the CRC matrix area of the memory 50.
  • A-REG 201 and G-REG 202 are 32 bits long according to, for example, the parameter length for CRC calculation
  • the matrix value for CRC is stored in these registers. Can be calculated with a single parameter load.
  • the matrix values for the ECC encryption decoding are stored in the memory 27 as described below from the irreducible polynomial g. (x) and the encryption key are each read out in 32 bit units, and It is generated by repeating the matrix value operation multiple times while switching the setting parameters of the parameters 201 and 202.
  • transmit data read from the Tx-BUF area of the buffer memory in 32-bit sub-block units is supplied to ⁇ -REG 203, and the sub-matrix values required for transmit data encryption are stored in the memory 5.
  • the operation result of the product-sum operation unit 40 is output to the C-REG register 204.
  • the operation result output to the C-REG register 204 is held in the C-MEM 52 as an intermediate operation value.
  • the C-MEM 52 has a storage capacity of the number of bits according to the ECC code length.Each product-sum operation cycle uses the E0R adder circuit 53 to add a new operation result to an intermediate operation value corresponding to the sub-matrix. Is added to
  • the Tx-ENC area 26 2 A of the buffer memory 26 The encrypted data block is read in 2-bit units and transferred to the B-REG register 203 and the transmission unit 11. However, if the transmitted data does not require encryption, the data block read from the Tx-BUF area 26 1 A of the buffer memory 26 is stored in the B-REG register 203 and the transmission section 11. Supplied.
  • the product-sum operation unit 40 performs a product-sum operation on the data block of the B-REG register 203 and the matrix value for CRC indicated by the M-REG 51, and stores the operation result in the C-REG register 204. Output. In this case, the calculation result output to the C-REG register 204 is transferred to the transmission unit 10 via the path 29 as a CRC code to be added to the already supplied data block.
  • the product-sum operation unit 40 targets the reception data read from the Rx-CRC area 26 3 B of the buffer memory 26 and the data block of the B-REG register 203 and M- Performs a product-sum operation with the REG51 CRC matrix value.
  • the received data is stored in the Rx-CRC area 26 3 B in a form in which a 32-bit CRC code block is added to each 32-bit data block. Therefore, the presence or absence of an error in the received data can be determined, for example, by reading out a 32-bit data block in the first cycle to generate CRC: r (x), and in the second cycle. This can be determined by reading the CRC code block of bits, generating CRC: r '(X), and checking for a match between r' (x) and r (x).
  • the coincidence detection with r (and r Oc) is performed by the coincidence detection circuit 54, and the detection result is notified to the control unit 70.
  • the control unit 70 transfers the data block for which error detection has been completed to the R X -ENC area 26 2 B (Rx-BUF area 26 1 B in the case of an unencrypted data block) of the buffer memory, and Discard any data that has a tab.
  • the same operation as in the transmission data encryption mode is performed on the data block read from the Rx-ENC area 262 B by the product-sum operation unit 40.
  • the decrypted data is transferred from the C-MEM 52 to the Rx-BUF area 26 1 B.
  • FIG. 5 shows an example of the matrix M generated by the matrix value operation unit 30.
  • the matrix value calculation unit 30 generates a 32 ⁇ 32 size matrix.
  • an 8 ⁇ 8 matrix is shown for simplification.
  • b. ⁇ B 7 may, B- REG 20 data bits that are set to 3
  • ⁇ C 7 shows a CRC or ECC bits are output to the OREG 204 as the operation result.
  • the first column of the values of the matrix M (m.. ⁇ m 7.) Is determined by each bit of the polynomial a (X) the value (a 0 ⁇ a 7).
  • m (max, jl means the matrix value of the last row of the j-1st column.
  • the value of the polynomial g (x) ′ is a fixed value defined by the standard.
  • the polynomial a (x) is an encryption key, and has a fixed value (semi-fixed value) within a certain period.
  • the polynomial g '(X) used in place of a (x) in error detection is a completely fixed value. Therefore, the matrix M generated from these parameters is a fixed or semi-fixed value, and once calculated by the matrix value calculation unit 30, the calculation result can be used repeatedly.
  • the matrix operation capability of the matrix operation unit 30 and the product-sum operation unit 40 is limited to a limited size such as 16 ⁇ 16 or 32 ⁇ 32 (hereinafter referred to as a basic size) due to hardware limitations.
  • a basic size such as 16 ⁇ 16 or 32 ⁇ 32
  • FIG. 6 shows a matrix M of n Xn divided into sub-matrices M (0,0) to M (I, J)
  • I, J M
  • the matrix value m (0, l) of the first row (row of the operation result c) of the second column (data bit column) in the first submatrix M (0, 0) is represented by the matrix M It depends on the matrix value ⁇ ( ⁇ -1, 0) of the last row of the first column (column of data bit b.) In the submatrix M (I, 0) located at the lower left of.
  • the matrix value m (k, 1) of the second column and the first row in the next submatrix ⁇ (1, 0), which is omitted in the drawing, is the last column of the first submatrix M (0, 0).
  • Fig. 7 shows the sub-matrices M (0, 0) to M (4, 4) when a matrix of 160 x 160 bits is divided into multiple blocks with a basic size of 32 x 32.
  • the relationship between the array, input data (B01 to B159), and output code (C01 to (159)) is shown.
  • the product-sum operation unit 40 When dealing with such a submatrix, the product-sum operation unit 40 requires the input data (B01 to B159) to be a 32-bit data block D-0! ) _4 The input code is input in the form of division, and the output code (C01 to C159) is output in the form of division into 32 bit code blocks ECC-0 to ECC-4.
  • FIG. 8 shows an embodiment of a matrix value calculation unit 30 that generates an ECC matrix value for each 32 ⁇ 32-bit submatrix.
  • the first input of the EOR circuit 32-i is connected to the value ai of the i-th bit of the A-REG 201 via a selector 33-i controlled by a control signal S 0 from the control unit 70.
  • AND circuit 3 1 One of the output values of i is selectively supplied.
  • the fixed value "0" or the last bit of the register 35 is stored in the second input of the first E0R circuit 32-0 through the selector 37 controlled by the control signal S2 from the control unit 70.
  • the matrix value m (31, j-1) of the last row of the front column held in the area 35—k is supplied.
  • the matrix value of the first row of the submatrix output from the selector 33-0 is held in the latch circuit 34 at a predetermined timing specified by the control signal S3 from the control unit 70.
  • the value of the i-th bit g i of G-REG 202 is supplied as a first input to the AND circuit 31-i.
  • the second input of the first AND circuit 31-0 is connected via the selector 36-0 to the matrix value m (31, j-1) of the last row of the front row and the portion held in the latch circuit 34 above.
  • One of the matrix values in the first row of the matrix is supplied.
  • One of the matrix values in the first row of the submatrix is supplied.
  • C The selectors 36-0 to 36-k constitute a second selector group, and the control signal S 1 from the control unit 70 is provided. Is controlled by
  • a shift register for holding the output bits of the matrix value calculation unit 30 S and the E0R circuit 32 2-i is used for both the matrix calculation for CRC and the matrix calculation for ECC.
  • 3 8 — i the output value of the shift register 38-i and one of the output values of the register area 3 5-i and the third row to be supplied to the next-row EOR circuit 32-(i + 1)
  • Selector group 3 9— i (i 0 to k).
  • the third selector group selects either the A port or the B port according to the control signal S4 except for the last selector 39-k controlled by the control signal S1.
  • the first row of the selector 33-0 is selected, and the storage area 35-5-k selected by the selector 36-0 is the last row of the matrix of the previous cycle indicated by the selector 36-0.
  • value a 3 i and G - REG 20 2 first bit indicating the value g.
  • Value indicating the logical product between (m 0, is output and input into E0R circuit 3 2 0.
  • the selector 3 3- i of the first and subsequent rows are output value indicating "gm 0, J, E0R circuit 32- i
  • the matrix value represented by the equation (14) is output from ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ . 0) to equations (1 4), (1 5)
  • the matrix value according to can be generated.
  • the first shift register 38-8-0 has a.
  • a 32, a 64, a 96, held bit values a 28 is the next shift register 38- 1, a had a 33, a 65, a 97 , bit values a 129, the last the shift registers 3 8- k, the bit value force S held state of a 3 had a 63, a 92, a 127 , a 159.
  • the first selector group 33-i and the selector 37 are switched by the control signal S 0 and the control signal S 2 so as to select the respective B port inputs.
  • the storage area 3 5-k of the register 35, the matrix value m 3 ⁇ - parameter value "a 159" is set as ⁇ .
  • the matrix value calculation cycle of the first column of the sub-matrices M (0,0), M (1,0), (4,0) is repeated while changing the set values of the G-REG 202.
  • Parameter value g of the first block in G-REG 202 In the operation cycle set to ⁇ g 3, controlled by a signal S 1 switch, and a second group of selectors 3 6- i, to select the A port input at the end of the selector 3 9-k of the second group of selectors, the selectors 3 Input the output value "g. A 159 " of 0 to the AND circuit 311-i of the other row. Further, the latch command given by the control signal S 3, and stores the output value of the selector 3 3 0 "g. ⁇ A 159" to latch circuit 3.
  • the E0R circuit 3 2—j has a shift register Since the bit value m (0, j-1) of the previous row and the previous row output from data 38- (j1) is input, the matrix in the second row according to Equations (14) and (15) is input.
  • the values ⁇ 0 , ⁇ m 3 i are generated, and these values are stored in the second column of the ECC sub-matrix M (0, 0) of the shift register 38 — 0 to 38 — k and the MAT-MEM 50.
  • the c G-REG 202 to be stored first block (g 32 ⁇ g 63) ⁇ fourth proc (g 12
  • Figure 9 is, c showing an embodiment of a CRC matrix value generation routine 1 00 the control unit 70 executes the matrix value calculation unit 3 0 shown in FIG. 8 as a control object
  • the parameter i for specifying the column is set to the initial value 0, the value of the parameter jmax indicating the last column is set to "3 1" (step 101), and then the memory area The values of g and -CRC read from 271 are loaded into A-REG 201 and G-REG 202 (steps 102, 103).
  • the generation pattern of the control signals S1 to S4 is Set to mode.
  • the single matrix mode means that the operation of the matrix value is completed in a single sub-matrix of the basic size 32 ⁇ 32 bits.
  • the operation result of the j-th column output from the E0R circuit is stored in the register 35 and then stored in the matrix area for CRC defined in the MAT-thigh M50 (107).
  • the first selector group 33 selects the output (B port input) of the G-REG 202 (108).
  • the value of the parameter j is incremented (109), and the value of j is compared with jmax (110). If j> jmax, this routine is terminated. Otherwise, the matrix value of the next column indicated by the parameter is calculated by the E0R circuit 32-i (1 1 1), and the j-th column is calculated. The operation result is stored in the matrix area for CRC (1 1 2). Thereafter, the flow returns to step 109, and the same operation is repeated until j> jmax.
  • the product-sum calculation unit 40 Can generate all the required matrix values.
  • FIG. 10 shows an embodiment of the ECC matrix value generation routine 120 executed by the control unit 70 with the matrix value calculation unit 30 shown in FIG.
  • the ECC matrix value generation routine 120 specifies the values of the parameters I and J for specifying the sub-matrix M (I, J) shown in Fig. 7 and the column number in the sub-matrix M (I, J)
  • the parameter j is set to the initial value 0, the maximum values Imax and Jmax of parameters I and J are set to 4, and the maximum value jmax of j is set to 31 (1 2 1).
  • the generation patterns of the control signals Sl, S2, S3, and S4 are set to the sub-matrix mode.
  • the control signal S3 generates a latch signal in the operation cycle of each column of the sub-matrix M (0, J), and causes the latch circuit 34 to hold the output value of the selector 33_0.
  • the output value of the latch circuit 34 does not change in the operation cycle of the sub-matrices M (l, J) to M (4, J).
  • the operation result is stored in the register 35, it is stored in the j-th column of the ECC sub-matrix area M (I, J) defined in the MAT-MEM 50 (137).
  • the value of the parameter I is incremented (138), and the value of I is compared with Imax (1339). If I> Imax is not satisfied, the flow returns to step 1 35 to load the next block g_ECC (I) of g0 from the E-KEY area 273 into the A-REG 201 and repeat the same operation. If I> Imax in step 13 9, return to step 13, reset parameter I to the initial value 0, increment the value of parameter j, and apply the same Repeat the procedure.
  • step 134 the process proceeds to step 140, where the values of the parameters j and I are returned to the initial values 0, and the value of the parameter J is incremented.
  • the sub-matrix M (I, J) of the next column becomes the operation target.
  • Jmax 141
  • J> Jmax this routine ends.
  • J> If not Jmax proceed to steps 1 35.
  • the above-described operation of calculating the matrix values is repeated for the first to 32nd columns in the sub-matrices M (0, J) to M (4, J).
  • the matrix value generation routine for ECC encryption has been described above. However, if the decryption key read from the D-KEY area of the memory 27 is applied as the block KEY (I), it is the same as the routine 120. With this control procedure, matrix values for ECC decoding can be generated.
  • FIG. 11 show the transmission data processing routine 200 executed by the control unit 70 with the product-sum operation unit 40 as a control object and the reception data processing routine 300 0.
  • 3 shows a flowchart.
  • the transmission data processing routine 200 performs encryption processing (2 10) of transmission data (transmission message) read from the Tx-BUF area 26 1 ⁇ of the buffer memory 26 and the Tx-ENC area 26 2 is a CRC generation transmission process (2330) for the encrypted data read from 2A.
  • 1-generation transmission processing (2300) is performed on the transmission data read from the Tx-BUF area 261A.
  • the reception data processing routine 300 has no error as a result of the CRC generation processing (3 1 0 ') for the received data stored in the Rx-CRC area 263 B of the buffer memory 26 and the CRC check (3 20).
  • the decryption process (330) it is determined whether or not the received data is encrypted data. If not, the received data is directly transferred to the Rx-BUF area 16 1 B, and the encrypted data is transmitted. In the case of, it is decoded and then transferred to the Rx-BUF area 16 1 B. As a result of the CRC check, the received data for which an error has been detected is subjected to error processing (350) such as, for example, notifying an error to the core processor 10, which is a higher-level device.
  • error processing such as, for example, notifying an error to the core processor 10, which is a higher-level device.
  • the transmission data processing routine 200 and the reception data processing routine 300 are executed alternately for each message.
  • FIG. 12 is a flowchart showing one embodiment of the transmission data encryption process 210.
  • the control unit 70 reads the header of the transmission message from the Tx-BUF area 26 1 A (211), and, based on the data length indicated by the header, converts the transmission data into the block length of the encrypted data.
  • the number of blocks Nmax in the case of division in units of 60 bits is calculated, and the value of the parameter n indicating the number of repetitions of the encryption process is set to the initial value 1 (2 1 2).
  • the header is excluded from encryption and transferred to the Tx-ENC area 26 2 A (2 1 3) 0
  • the values of the parameters I and J for designating the sub-matrix M (I, J) are set to initial values 0 (2 14), and from the Tx-BUF area 26
  • the data block is read in 32-bit units and transferred to the B-REG 203 (2 15).
  • the 32-bit data block read to the B-REG 203 is represented by D (n) -J.
  • First read data pro Block D (n) -0 corresponds to data D-0 in FIG. 7, and the next read data block D (n) -1 corresponds to data D-1.
  • the submatrix M (1, J) for encryption is coded (2 16) from the memory 50 to the M-REG 51, and when the product-sum operation unit 40 is started (2 17), C -The product sum operation result of the submatrix M (I, J) and data D (n) -J is output to REG 204.
  • the values of C0 to C31 shown in FIG. 7 are obtained. Since this value is only a calculated value of the ECC code, EOR is added to the already calculated value in the ECC-1 area of the C-MEM 52 (2 18).
  • the C-MEM 52 has 32 bit-length code value storage areas ECC-0 to ECC-4 corresponding to the parameter J of the submatrix M (I, J). The initial value is 0.
  • the value of the parameter I is incremented (2 19), and it is determined whether I> 4 (220). If the value of I is 4 or less, the process returns to step 211 and repeats the above operation. As a result, a multiply-accumulate operation of the data D-0 and the sub-matrices M (l, 0) to M (4,0) is executed one after another, and the operation results C32-C63 to C128-C159 become C-MEM52. EOR is added to the already calculated values of ECC-1 to ECC-4.
  • the contents of the C-MEM 52 (ECC-0 to ECC-4) indicate the encryption result for the 160-bit long transmission data. Therefore, the contents of C-MEM 52 were transferred to the Tx-ENC area 26 2 A of the buffer memory (223), and ECC-0 to ECC-4 of C-MEM 52 were cleared (224). Thereafter, the value of the parameter n is incremented (225). The value of n is compared with the maximum value Nmax (226), and if n> Nmax, the process returns to step 214 to encrypt the next transmission data D (n) having a length of 160 bits. Repeat the process. When n> Nmax, encryption of one transmission message is completed.
  • FIG. 13 is a flow chart showing one embodiment of the same generation / transmission processing (230).
  • CRC is generated by reading the encrypted data in 32-bit units from the Tx-ENC area 26,2A.
  • the explanation will be given for the encrypted transmission data.However, when transmitting the transmission message without encryption, if the data in the -81 ⁇ area 261 A is the target of CRC generation, Good.
  • the header of the transmission message is read from the Tx-ENC area 262 # and transferred to the transmission unit 11 (231).
  • the matrix value M for CRC is read (233) from the memory 50 to the M-REG 51
  • the first data block D (n) of the encrypted transmission data is read from the Tx-ENC area 26 2A, Transmitter 11 and transfer to B-REG 203 (2 3 Four) .
  • the product-sum operation unit 40 is started in this state (235)
  • the product-sum operation results C0 to C31 of the CRC matrix M and the data D (n) are output to the C-REG 204.
  • the CRC generation processing 310 in the reception data processing routine 300 shown in FIG. 11 is performed by using the Tx-ENC area in the transmission data CRC generation routine described in FIG. 2 6 2 A to Rx-CRC area 2 63 B Change the header, data block and CRC transfer destination from the transmitter 11 to the Rx-ENC area 26 2 B of the buffer memory (Tx- BUF region 26 1)).
  • the product block read out from the Rx-ENC area 26 2 B may be multiply-accumulated by the decoding sub-matrix loaded into the M-REG 51 from the memory 50. Therefore, the procedure is basically the same as that of the transmission data encryption routine described with reference to FIG.
  • the matrix for CRC and ECC generated by the matrix value calculation unit 30 is stored in the memory (MAT-MEM) 50.
  • the values of the matrix required by the product-sum operation unit 40 are loaded from the MAT-MEM 50 to the M-REG 51 as appropriate.
  • REG 51 is provided as a dedicated register for CRC, ECC encryption, and decryption, and the matrix value generated by the matrix value calculation unit 30 is stored in these dedicated registers. You may make it load directly to a star. In this case, by switching the M-REG 51 to be connected to the product-sum operation unit 40, it is possible to perform CRC generation and ECC encryption / decryption processing at high speed.
  • the basic size of the matrix generated by the matrix value calculation unit is set to 32 ⁇ 32, but if this is reduced to 8 ⁇ 8 or 16 ⁇ 16,
  • the matrix is also generated in the submatrix mode.
  • the CRC matrix value generation routine 100 may employ a control method similar to the ECC matrix value generation routine 120 described in FIG. 10 c.
  • the matrix values prepared in advance By using, it is possible to generate the CRC code required for error detection of transmission and reception data at high speed. Further, the matrix values for ECC encryption and decryption can be quickly generated by using a matrix value calculation unit that generates a matrix for CRC.
  • hardware a matrix value operation unit and a product-sum operation unit
  • a matrix value operation unit and a product-sum operation unit can be shared for error detection code generation and encryption processing, so that a compact packet communication device can be provided.
  • the matrix values required for the encryption Z decryption process can be generated in the packet communication device, the encryption key can be easily changed, and the security of the transmitted and received data can be improved.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

技術分野
本発明は、 通信データ用の符号演算装置に関し、 更に詳しくは、 ディジタ ル ·バケツトデータの送受信において必要となる誤り検出(訂正)符号の生成 明
とデータ暗号化 Z復号化処理のための符号演算装置に関する。
糸 mm.
背景技術
ディジタル通信装置では、 データの機密性保持おょぴネットワーク上での 信号誤りの発生に備えて、 バケツトデータの暗号化ノ復号化機能と誤り検出 (訂正)符号の生成機能が必要となる。 音声データやテキストデータの他に、 情報量の多い静止画像や動画像等の通信ニーズが増えるに従って、 ディジタ ル通信装置には、 データ転送速度の高速化に適した喑号化ノ復号化技術と誤 り検出(訂正)符号の生成技術が要求されてきている。
データパケットの誤り検出符号としては、 例えぱ、 誤り訂正は行わずに誤 り.検出のみを目的とした C R C (Cyclic Redundancy Check Codes : 巡回冗長 検查符号) がよく使われる。 C R C.演算式については、例えば、 Ramabadran, T. V. and Gaitonde S. S. "A Tutorial on CRC Computations" , IEEE Micro, vol. 8、 No. 4、 pp. 62-75, Aug. 1988に記載されている。
一方、 データの機密性を保持するために使用される暗号方式としては、 R S A暗号が有名である。 しかしながら、 R S Aでは、 暗号 Z復号鍵として 1 0 2 4ビットの長い符号を必要としているため、 最近では、—符号長が 1 6 0 ビット程度と短くて済む楕円曲線暗号 (ECC:Elliptic Curve Cryptography) が注目されている。 楕円曲線暗号処理に関する文献としては、 例えば、 Moon, .、 Park, J. and Lee, Y.、 Fast VLSI Arithmetic Algorithms for High-Security Elliptic Curve Cryptographic Applications" IEEE Trans. Consumer Electronics^ vol.47、 No.3、 pp.700 - 708、 Aug.2001がある。 上記文献には、 楕円曲線暗号 (E C C) に必要な演算 式と、 E C C処理を実現した大規模集積回路の 1例について説明され ている。
: SAは、 桁上げ伝播が発生するモジュラー演算を採用しているため、 ハ 一ドウエア量が多くなる。これに対して、 E C Cは、以下に説明するように、 桁上げ伝播が発生しないガロア体 (有限体) をベースにしているため、 デー タの暗号/復号化をコンパクトなハードウェアで実現できる。
式 (1 ) が示すガロア体上の n次多項式 g(x)によるモジュラー演算 od) を考 ^る。
g(x) = xn + gn-!x"-1 + ··· + gjX + 1 (1)
この多項式のガロア体は、 般に G F (2 n)と表記される。 係数 の値は " 0 " または " 1 " であり、 gi e G F ( 2 )と表記される。 また、 G F (2)の係数項内では、 排他的論理和 (E O R) 演算(④)が行われる が、 本明細書では、 特に混乱しない限り (+) 演算子で代用する。 今、 長さ nのデータを表現する次の 3つの多項式について考える。
n— 1 n— 1 π— 1 a ) = J a.x1 , b ) 二 J b 1, c (x) = ^ c-x1 3 i=0 i=0 i-0
但し、 ai5 bt, Ci € G F (2 )
E C Cの場合、 共通鍵または秘密鐽と呼ばれる暗号鍵を示すデータ を多項式 a(x)とし、 この暗号鍵が適用される送受信データを多項式 b(X)とすると、 送信側における暗号化データ、 または受信側における 複号化データ (元の平文データ) は、 次式 (2 ) の演算結果 c(x)とし て得られる。
c x) ≡ a ) -b (x) mod g ) ( 2 )
式 (2 ) を詳しく書く と、 次式 (3 ) にょうになる。
Figure imgf000005_0001
文献: Mastrovito, E. D. , "VLSI Designs for Multiplication over Finite Fields GF(2m) " 、 Proc. Sixth Int, 1 Conf. ("Applied Algebra, Algebraic Algorithms, and Error- Correcting Codes (AAECC- 6)」 pp.297- 309, Jul. 1988 と、 公開公報 TO 91/20028号 (発明の名称 「Universal Galois Field Multiplie ) において、 Mastrovitoは、 式 (3) を次の行列形式に変換 することを試みている。
Figure imgf000005_0002
c = M-b (5) 式(4) における n X nの行列 Μは、 Mastrovito行列と呼ばれており、 行列 Mの値は、多項式 a (X)と g(x)から前もって計算することができる。 一方、 CR Cの値は、 送信メッセージ (または受信メッセージ) の データを多項式 b(x)で示した場合に、次式(6)で示すように、 xn'b(x) を多項式 g(x)で割った時に得られる余り c(x)として算出される。
c (X) ≡ xD-b ) mod g (x) (6) ここで、 xn'b(x)は、 データ b(x)を nビット左シフトすることを意味 しており、 データの送信側では、 式 (6) で算出された CRCの値: 多項式 c(x)を送信データ b(x)に加算した形で、 伝送路に送出する。 データの受信側では、 CR C付きの受信データ b(x)に対して同様の 演算を行い、 演算結果 cO が 0となった場合、 極めて高い確率で受信 データ b(x)には誤りがないものと判定する。
式 (2.) と式 (6) とを比較すると、 CR Cと E C Cの演算式が極 めて類似していることがわかる。 両者の違いは、 CRCの場合、 デー タ b(x)に乗算される値が n次の χπであるのに対して、 E C Cの場合は、 η - 1次の多項式 a(x)となっている点にある。
Mas rovito行列について述べた上記文献では、 BCHや Reed-Solomonと 呼ばれる誤り訂正方式を式 (2) で一般的に取り扱おうとしているように思 われる。 しかしながら、 上記文献には、 これらの符号化方式を具体的にどの ようにして式 (2) に結びつけるかについて具体的な記載がない。 また、 後 述する本発明が着目した CRC符号の行列表現に関して、上記文献には何 ら示唆されていない。 発明の開示 ■ 本発明の目的は、 誤り検出処理と暗号/復号化処理に共用できる符号演算 装置を提供することにある。
本発明の他の目的は、 誤り検出処理と暗号/復号ィヒ処理に共用できるガロ ァ体 (有限体)符号演算装置を提供することにある。
本発明の更に他の目的は、 誤り検出処理用と暗号/復号化処理用の行列値 を同一の行列値演算部で算出し、 これらの行列値を選択的に利用して、 誤り 検出処理と暗号ノ複号化処理を行うようにした符号演算装置を提供すること にめ 。
本発明の更に他の目的は、 コンパクトなハードウェア構成で誤り検出処理 と暗号/"復号化処理を実行できるパケット通信装置を提供することにある。 これらの目的を達成するために、 本発明では、 ガロア体ベースの CRCと ECCの演算式の類似性に着目し、 C RC演算と EC C演算のためのハード ウェアを共通化することを特徴とする。 C R Cと楕円曲線暗号 E C Cの演算処理を共通化しようとした場合、 容易に考えられる解決方法の 1つは、 式 (2 ) で示した E C C演算で データ b(x)に乗算される多項式 a(x)の次数を n— 1次から n次に上げ ることによって、 式 (6 ) で示した CR C演算における xnの次数と一 致させておき、 CR C演算を行う場合は、 多項式 a(x)の n次の係数部 を使用する方法である。 しかしながら、 このように多項式 a(x)の次数 を増やす方法では、 本質的な解決策とはならない。
本発明では、 ガロア体モジュロ演算がもつ次の性質を利用して、 C R Cと E C Cの演算処理を共通化する。
すなわち、 式 (1 ) が示すように、 ガロア体モジュロ演算に適用さ れる既約多項式 g(x)は、 xnの係数 gnが " 1 " となっている。 そこで、 式 (6 ) が示す CR C演算に適用される n次以上の高次項 xng(x)で モジュロ演算し、 n— 1次以下の余りの項にリダクションすると、 次の 多項式 (7 ) が得られる。
xn mod g(x) ≡
Figure imgf000007_0001
+ ··· + gj + 1 ( 7
ここで、 式 (7) の右辺を
g, (x) = 一1 + -" + gjX + 1 (8 )
と置き換えると、 式 (6 ) に示した C R Cの演算式は、 次式 (9 ) の ように変形され、 E C Cの演算式 (2) と同様に、 データ b(x)に乗算 される多項式の次数を n-1次にすることができる。
c (x) ≡ g (x) -b(x) mod g(x) ' (9ノ
C R Cの値は、 a(x)に代えて g' (x)の値をセットすることにより、式 (9)に従って算出できる。
また、 xnよりも更に高次の項 xn+1を g(x)でモジュロ演算すると、 式 (7)を利用して、 次式 (1 0 ) が示すように、 n - 1次以下の項にリダク シヨンできることが判る。 ,η+1
mod g (x) ≡ gn— iXn + gn_2xn_1 + ·" + gjx2 + x
= gB-i (gn-iXn_1 + -" + gix + 1) + gn-2xn1 + … + gjX2 + x
= (gn-lgn- l+gn- 2)Xn_1+(gn- lgn- 2+gn- 3)Xn2 + ·'·
+ (gn-l 2+gl) X2+ (gn-lSl + D ^+Sn-l (1 0) 従って、 n次以上の高次項は、 n- 1次以下の項にリダクションした後、 の係数項間を比較することによって、 式 (4) または (5) の行列 値を得ることができる。
本発明の特徴の 1つは、 CRCの演算式を式(9) のように変形し、 次数を EC C演算式 (3) に適合させることによって、 同一の行列値 演算部を利用して、 E C C用行列値と C R C用行列値を計算できるよ うにしたことにある。 また、 本発明の他の特徴は、 予め計算された E C C用行列値と CR C用行列値を選択的に利用することによって、 同 一の積和演算部で、 E C C符号化 Z復号化演算と C R C演算を実行で きるようにしたことにある。 図面の簡単な説明
第 1図は、 本発明が適用される誤り検出機能と暗号処理機能を備え たバケツト通信装置の構成を示すブロック図。
第 2図は、 CRC誤り検出の符号化、 復号化処理を説明するための 図。
第 3図は、 ECC暗号化、 復号化処理を説明するための図。
第 4図は、 行列演算回路 30を備えた本発明による演算装置の 1実施 例を示すブロック図。
第 5図は、 行列演算回路 30で生成される行列 Mの計算値配列を説 明するための図。
第 6図は、 η X ηの行列 Μの計算値を複数の部分行列に分割して生 成する場合の説明図。
第 7図は、 E C C用の行列 Mを構成する部分行列と入出力データと の関係を説明するための図。
第 8図は、 C R Cと E C Cに共用される行列値演算部 3 0の 1実施 例を示す図。
第 9図は、 第 4図に示したコントローラ 7 0が実行する C R C行列 値生成ルーチン 1 0 0の 1実施例を示すフロ一チヤ一ト。
第 1 0図は、 コン トローラ 7 0が実行する E C C用行列値生成ルー チン 1 2 0の 1実施例を示すフロ一チヤ一ト。
第 1 1図は、 コン トローラ 7 0が実行する送信データ処理ルーチン
2 0 0と受信データ処理ルーチン 3 0 0を示すフロ一チヤ一ト。
第 1 2図は、 送信データ処理ルーチン 2 0 0における送信データ暗 号化 2 1 0の詳細を示すフローチヤ一ト。
第 1 3図は、 送信データ処理ルーチン 2 0 0における C R C生成 2
3 0の詳細を示すフローチヤ一ト。 発明を実施するための最良の形態
第 1図は、 本発明が適用されるデータ誤り検出機能と暗号処理機能を備え たパケット通信装置のプロック図を示す。
バケツト通信装置は、 コアプロセッサ (P- CORE) 1 0と、 送受信データ処理 部 2 0と、伝送路 1 3に接続された送信部 1 1および受信部 1 2とカゝらなる。 送信部 1 1と受信部 1 2は、 伝送路 1 3が無線の場合、 A/D DZA変換 器と、 R F (Radio Frequency)処理部とを含み、伝送路 1 3がアナ口グ有線回 線の場合は、 モデム処理部を含む。
送受信データ処理部 2 0は、 制御プロセッサ (P - C0NT) 2 1と、 暗号符号化 部 (ECC - ENC) 2 2、 誤り検出符号ィ匕部(CRC- ENC) 2 3、 誤り検出複号化部 (C C-DEC) 2 4、 喑号復号化部 (ECC-DEC) 2 5と、 パッファメモリ(BUF- MEM) 2 6、 メモリ(MEM) 2 7からなり、 これらの要素は、 內部バス 2 9 ( 2 9 A、 2 9 B ) によって相互接続されている。
コアプロセッサ 1 0から出力された送信メッセージ (平文データ) は、 パ ッファメモリ 2 6の送信パッファ領域に一時的に格納され、 送信データに機 密保持が必要な場合は、送信メッセージが暗号符号ィヒ部 2 2で暗号化される。 送信メッセージ (平文データまたは暗号化データ) は、 誤り検出符号化部 2 3で生成した誤り検出符号を付加した形で、 送信部 1 1から伝送路 1 3に送 出される。
逆に、 伝送路 1 3から受信した誤り検出符号付きの受信メッセージ (平文 データまたは暗号化データ) は、 受信部 1 2からバッファメモリ 2 6の受信 バッファ領域にー且格納され、 誤り検出復号化部 2 4で受信メッセージの誤 り検出符号の余り演算が行われる。 余りがゼロの場合、 受信データに誤りが ないものと判断し、 受信メッセージから誤り検出符号が除去される。 誤り検 出符号を取り除いた受信メッセージのデータが暗号文の場合、 暗号復号化部 2 5で平文に戻した後、 バッファメモリ 2 6を介してコアプロセッサ 1 0に 転送される。 誤り検出およびデータの喑号/複号化に必要な情報は、 メモリ
2 7から読み出.され、 暗号符号化部 2 2、 誤り検出符号化部 2 3、 誤り検出 復号化部 2 4、 暗号復号化部 2 5は、 制御プロセッサ 2 1に制御される。 第 2図は、誤り検出に C R Cを適用した場合の誤り検出符号化部 2 3と 誤り検出復号化部 2 4の動作を示す。
この場合、 誤り検出符号ィ匕部 2 3では、 送信データを nビット長 (n =
3 2ビット) のデータブロック b (x)に分割し、 データブロック毎に符 号化する。 先ず、 式 (6 ) が示すように、 データ b (x)を nビッ ト左へ シフト (xn ' b (x)の演算) した後、 これを予め指定された数値 g (x)で割 つて (モジュロ演算) 、 余り r (x)を求める。 r (x) ≡ xn*b (x) mod g (x) (1 1 ) 次に、 r(x)をデータ xn b(x)に加算、 すなわち、 w(x)=xn-b(x) Θ r (x) の演算を行う。 その結果、 元の nビットデータブロックは、 2 nビッ ト長のデータプロック w(x)に変換した形で伝送路に送出される。
一方、 受信側の誤り検出複号化部 24では、 伝送路から受信したデー タブ口ック w (X)二 xn'V (χ) θ τ (χ)に対して、 送信側と同一の数値 g(x)でモジュロ演算を実行して、 余りを求める。 伝送路上で誤りが発 生していなければ、 次式 (1 2) が成立し、 余り c(x)がゼロになる。
c (x) ≡ Lxn* ) Θ r ) mod g ) ]
二 x (x) Θ r' (x) (1 2 )
この場合、 受信データ ( から r' )を除去し、 nビット右シフト することによって、 元のデータプロック b(x) = b' (x)を復元できる。 尚、 伝送路からの受信メッセージ長が 2 nビットよりも長い場合は、 2 nビット長のデータブロック毎に、 上述した誤り検出複号化処理が繰 り返される。
第 3図は、暗号化に EC Cを適用した場合の暗号符号化部 2 2と暗号復 号化部 2 5の動作を示す。
喑号符号化部 2 2では、 送信データを nビッ トのデータプロックに 分割し、送信データプロックを多項式 b(x)、共通鍵を多項式 a(x)とし、 既約多項式 g(X)でモジュロ演算を実行することにより、 式(2)が示す 暗号化データ c(x)を生成する。
E C C暗号符号化データのプロック長 nは、 C R Cよりも長い 160 ビット程度になるため、 C R Cと同一ハードウエアを適用するために、 送信データプロック b(x)、共通鍵 a(x)、既約多項式 g(x)をそれぞれ C R Cビット長に合わせた複数のサブブロック分割して、 暗号化処理を 繰り返す。 誤り検出符号が付加された暗号化データは、受信側で誤り検出され、 もし、 誤りがなければ、 誤り検出符号を除去した暗号化データ c(x)に 戻される。 受信側の暗号複号化部 25では、 次式 (13) が示すように、 式(2)の a(x)、b(x)の代わりに秘密鍵 d(x)と受信データ c(x)を適用し、 既約多項式 g(x)によってモジュロ演算を実行することによって、 復号 化されたデータ b(x)を得る。
b(x) ≡ d(x) -c(x) mod g(x) (1 3) 本発明の特徴は、 上述した誤り検出符号化部 23、 誤り検出復号化部 2 4、 暗号符号^ ^部 22、 暗号複号化部 25に必要なハードウェアを共用する ことによって、 送受信データ処理部 20の構成を簡単化したことにある。 第 4図は、 本発明による送受信データ処理部 20の 1実施例を示す。 送受信データ処理部 (符号演算装置) 20は、 行列値演算部 (MAT- UNIT) 3 0、 積和演算部(CAL -環 IT) 40、 制御部(CONTROLLER) 70と、 バッファメモ リ(BUF - NEM) 26、 パラメータ格納用のメモリ 27、 行列値格納用のメモリ (MAT-MEM) 50、 行列値レジスタ(M- REG) 51、 演算結果保持メモリ(C - MEM) 52と、 パラメータレジスタ(A- REG、 G-REG) 201、 202、 デ一タレジス タ(B - REG) 203、 符号レジスタ(C- REG) 204と、 E0R加算回路 53と、一 致検出回路 54からなる。
メモリ 2 7は、 CRC演算で必要となるリダクションされた多項式 g' (X)の記憶領域(g'- CRC) 27 1 と、 E CC演算で必要となる既約多項 式 g(x)の記憶領域(g- ECC) 2 7 2、暗号鍵(公開键)の記憶領域(E- KEY) 2 7 3と、 復号鍵 (秘密鍵) の記憶領域(D- KEY) 2 74とを含む。
また、 ノ ッファメモリ 26には、 コアプロセッサ 1 0から供給され た送信メッセージの格納領域(Tx - BUF) 26 1 Α, 暗号化送信メッセー ジの格納領域(Tx - ENC) 26 2 Αと、 受信部から供給された C R C付の 受信メッセージの格納領域(Rx- CRC) 26 3 B、 CRC除去後の暗号化 受信メツヤージの格納領域(Rx - ENC) 2 6 2 B、 復号化された受信メッ セージの格納領域(Rx - BUF) 2 6 1 Bとが定義され、 コアプロセッサ 1 0と送受信データ処理部 2 0との間では、 Tx- BUF領域 2 6 1 Αと Rx - BUF 領域 2 6 1 Bを介してメッセージが送受信される。
本実施例で示した送受信データ処理部 (符号演算装置) 2 0の動作モー ドには、 行列値演算モードと、 送信データ暗号化モードと、 送信データ誤り 符号化モ ドと、 受信データ誤り検出モードと、 暗号データ複号化モードと がある。 これらの動作モードの切替えは、 制御部 7 0が行う。
行列値演算モードにおいて、例えば、 E C C暗号化用の行列値を生成する 場合は、 制御部 7 0力 メモリ領域 2 7 2から読み出した既約多項式 g(x)の 値を G- REG 2 0 2に設定し、メモリ領域 2 7 3から読み出した暗号鍵を A - REG 2 0 1に設定した状態で、 行列値演算部 3 0を起動する。 生成された行列値 は、 メモリ 5 0の暗号化用行列領域に保持される。 +
同様に、 E C C復号化用の行列値は、 メモリ領域 2 7 2から G- REG 2 0 2 に既約多項式 g (x)の値を設定し、メモリ領域 2 7 4から A - REG 2 0 1に復号 鍵を設定した状態で生成され、 行列値演算部 3 0で生成された行列値は、 メ モリ 5 0の復号用行列領域に保持される。
C R C用の行列値は、 A - REG 2 0 1と G - REG 2 0 2にメモリ領域 2 7 1力、 ら g' (x)の値を設定した状態で生成され、行列値演算部 3 0で生成された行 列値は、 メモリ 5 0の C R C用行列領域に保持される。
ここで、 A- REG 2 0 1と G - REG 2 0 2を、 例えば、 C R C演算用のパラメ ータ長に合わせて 3 2ビット長とした場合、 C R C用の行列値は、 これらの レジスタへの 1回のパラメータロードで計算できる。 しかしながら、 E C C 演算のパラメータは、 C R C演算用のパラメータよりも長いため、 E C C暗 号化用おょぴ復号ィヒ用の行列値は、 後述するように、 メモリ 2 7から既約多 項式 g(x)と暗号ィヒ鍵をそれぞれ 3 2ビット単位で分割して読み出し、 レジス タ 2 0 1、 2 0 2の設定パラメータを切替えながら、 行列値演算を複数回繰 り返すことによって生成される。
送信データ暗号化モードでは、 バッファメモリの Tx- BUF領域から 3 2 ビットのサブプロック単位で読み出した送信データを Β- REG 2 0 3に 供給し、送信データ暗号化に必要な部分行列値をメモリ 5 0から M - REG 5 1にロードして、積和演算部 4 0を起動する。 この場合、 B-REG 2 0 3に設定された 1つのデータプロックに対して、 M - REG 5 0の内容を切 替えながら、 複数回の積和演算が繰り返される。
積和演算部 4 0の演算結果は、 C - REGレジスタ 2 0 4に出力される。 C-REGレジスタ 2 0 4に出力された演算結果は、 C- MEM 5 2に中間演算 値として保持される。 C- MEM 5 2は、 E C C符号長に応じたビッ ト数の 記憶容量を有し、 積和演算サイクル毎に、 E0R加算回路 5 3によって、 新たな演算結果が部分行列と対応した中間演算値に加算される。
E C C符号長に相当する複数サブプロック分の送信データについて 暗号化演算処理が完了すると、 C- MEM 5 2の内容が暗号化データとして 読み出され、パッファメモリ 2 6の Tx - ENC領域 2 6 2 Aに転送される。 上述した積和演算の繰り返しによって、 Tx- BUF領域に格納された 1 メッセージ分の暗号化処理が完了すると、 動作モードが送信データ誤り 符号化モード (C R C演算モード) に切り替えられる。
送信データ誤り符号化モードでは、 MAT- MW0 5 0から M- REG 5 1に C R C用の行列値を口一ドした状態で、バッファメモリ 2 6の Tx- ENC領 域 2 6 2 Aから、 3 2ビット単位で暗号化データプロックを読み出し、 B - REGレジスタ 2 0 3と送信部 1 1に転送する。伹し、送信データが暗 号化を必要としない場合は、バッファメモリ 2 6の Tx - BUF領域 2 6 1 Aから読み出されたデータプロックが B- REGレジスタ 2 0 3と送信部 1 1に供給される。 積和演算部 4 0は、 B - REGレジスタ 2 0 3のデータブロックと M- REG 5 1が示す C R C用行列値との積和演算を実行し、 演算結果を C - REG レジスタ 2 0 4に出力する。 この場合、 C- REGレジスタ 2 0 4に出力さ れた演算結果は、 既に供給済みのデータプロックに付加すべき C R C 符号として、 パス 2 9を介して送信部 1 0に転送される。
受信データ誤り検出モードでは、 バッファメモリ 2 6の Rx- CRC領域 2 6 3 Bから読み出した受信データを対象として、 積和演算部 4 0により、 B-REGレジスタ 2 0 3のデータブロックと M - REG 5 1の C R C用行列 値との積和演算を実行する。
この場合、 Rx- CRC領域 2 6 3 Bには、 3 2ビットのデータブロック毎に 3 2ビットの C R C符号プロックを付加した形で、 受信データが格納されて いる。 従って、 受信データの誤りの有無は、 例えば、 第 1サイクルで 3 2ビ ットのデータプロックを読み出して C R C :r (x〉を生成し、第 2サイクルで、. 上記データプロックに続く 3 2ビットの C R C符号プロックを読み出して C R C : r' (X)を生成し、 r' (x)と r (x)の一致を確認することによって判定 できる。
上記 r ( と r Oc)との一致検出は、一致検出回路 5 4で行われ、検出 結果が制御部 7 0に通知される。 制御部 7 0は、 誤り検出を終えたデ ータプロックをバッファメモリの RX - ENC領域 2 6 2 B (非暗号化デー タブロックの場合は Rx-BUF領域 2 6 1 B ) に転送し、 誤りのあるデ一 タブ口ックは廃棄する。
暗号データ復号化モードでは、 Rx-ENC領域 2 6 2 Bから読み出したデ 一タブロックを対象として、 積和演算部 4 0で送信データ暗号化モー ドと同様の演算を行う。復号化されたデータは、 C-MEM 5 2から Rx- BUF 領域 2 6 1 Bに転送される。
第 5図は、 行列値演算部 3 0で生成される行列 Mの 1例を示す。 第 4図の実施例では、 行列値演算部 30が 32X32サイズの行列を生 成するものとして説明したが、 ここでは、簡単化のために、 8 X 8の行列を 示す。 b。〜 b 7は、 B- REG 20 3に設定されるデータビット、 c。〜 c 7は、演算結果として OREG 204に出力される CRCまたは ECCの ビットを示している。
行列 Mの第 1列の値 (m。。〜m7。) は、 多項式 a (X)の各ビットの値 (a 0〜a 7) で決まる。
第 2列以降の値 (mQ 1〜m77) は、 基本的には
m (i, j)=m (i-1, j-1) + g (i)m(O, j) (1 4) の関係にあり、各列の第 1行目の値(m。い m。2、 m。3—m。7) は、 m(0, j) = g (0)m (max, j-1) (1 5) の関係にある。 ここで、 m(max,j-l 、 第 j-1列の最終行の行列値を 意味している。 .
ここで、多項式 g(x)'の値は、規格で定められた固定値となる。また、 E C C暗号化ノ複号化の場合、 多項式 a(x)は暗号鍵であり、 或る期間 内では固定の値 (半固定値) となる。 また、 誤り検出の場合に、 a(x) に代えて使用される多項式 g' (X)は、 完全な固定値である。 従って、 こ れらのパラメータから生成される行列 Mは、 固定または半固定値とな るため、 行列値演算部 30で一度算出しておけば、 演算結果を繰り返し て利用できる。
行列演算部 30と積和演算部 40の行列演算能力は、 ハードウェア の制約から、 例えば、 1 6 X 1 6または 3 2 X 3 2のように限られた サイズ (以下、 基本サイズと言う) となる。 基本サイズより大きい n X nサイズの行列 Mを扱うためには、 行列 Mを基本サイズをもつ複数 の部分行列に分割し、 部分行列毎の演算動作を繰り返す必要がある。 第 6図は、 n Xnの行列Mを部分行列M(0,0)〜M(I,J)に分割した 例を示す。
ここで、 例えば、 最初の部分行列 M (0,0)における第 2列 (データビ ット 列) の第 1行 (演算結果 c。の行) の行列値 m (0,l)は、 行列 M の左下に位置した部分行列 M (I,0)における第 1列 (データビッ ト b。 の列) の最終行の行列値 πι (η - 1,0)に依存している。 図面では省略され ている次の部分行列 Μ (1, 0)における第 2列第 1行の行列値 m (k, 1)は、 上記最初の部分行列 M (0, 0)における第 1列最終行の行列値 m (k- 1, 0) に依存している。 また、 行列 M全体における第 1列 (データビット b。 の列) を除いて、 各列では、 行列 Mの第 1行目 (演算結果 c。の行) の 値が後続する全ての行(演算結果 c 〜 c n の行)に反映されている。 従って、 行列演算部 3 0で部分行列毎に行列値を生成する場合は、 これらの境界条件を考慮したパラメータ設定が必要となる。
第 7図は、 1 6 0 X 1 6 0ビッ トの行列を 3 2 X 3 2の基本サイズ をもつ複数プロックに分割した場合の部分行列 M (0, 0)〜M (4, 4)の配 列と、 入力データ (B01〜B159) 、 出力符号(C01〜( 159)の関係を示す。
このような部分行列を扱う場合、 積和演算部 4 0には、 入力データ (B01〜B159) が 3 2ビット単位のデータブロック D- 0〜! )_4分割した 形で入力され、 出力符号(C01〜C159)が 3 2ビット単位の符号ブロック ECC- 0〜ECC- 4に分割した形で出力されることになる。
第 8図は、 E C C行列値を 3 2 X 3 2ビッ トの部分行列毎に生成す るようにした行列値演算部 3 0の 1実施例を示す。
行列値演算部 3 0は、 A - REG 2 0 1および G REG 2 0 2の各ビットと 対応して用意された複数の A N D回路 3 1— i、 第 1のセレクタ群 3 3— iおよぴ排他論理和(E0R)回路 3 2— i ( i = 0〜k、 k = 3 1 ) と、 これらの E0R回路の出力値を保持するための複数ビットの記憶領 域 3 5— i ( i = 0〜k ) をもつレジスタ 3 5とからなる。 EOR回路 3 2— iの第 1入力には、制御部 7 0からの制御信号 S 0で 制御されるセレクタ 3 3— iを介して、 A- REG 2 0 1の第 i ビットの値 a i と A N D回路 3 1 一 iの出力値の何れかが選択的に供給される。 最初の E0R回路 3 2— 0を除いて、 E0R回路 3 2— i ( i = l〜k ) に は、 レジスタ 3 5に保持された前列前行の行列値 m (i- 1, j- 1)が第 2入 力として供給される。 最初の E0R回路 3 2— 0の第 2入力には、 制御 部 7 0からの制御信号 S 2で制御されるセレクタ 3 7を介して、 固定 値 " 0 " またはレジスタ 3 5の最終ビッ ト記憶領域 3 5— kに保持さ れた前列最終行の行列値 m (31, j- 1)が供給される。
セレクタ 3 3— 0から出力される部分行列第 1行目の行列値は、 制 御部 7 0からの制御信号 S 3で指定される所定のタイミングで、 ラッ チ回路 3 4に保持される。
A N D回路 3 1— iには、 G - REG 2 0 2の第 i ビットの値 g iが第 1 入力として供給される。 最初の A N D回路 3 1— 0の第 2入力には、 セレクタ 3 6— 0を介して、 前列最終行の行列値 m (31, j-1)と上記ラ ツチ回路 3 4に保持された部分行列第 1行目の行列値の何れかが供給 される。 他の A N D回路 3 1— i ( i = l〜k ) の第 2入力には、 セ レクタ 3 6— iを介して、 セレクタ 3 3— 0の出力値またはラッチ回 路 3 4に保持された部分行列第 1行目の行列値の何れかが供給される c セレクタ 3 6— 0〜 3 6— kは第 2のセレクタ群を構成しており、 制 御部 7 0からの制御信号 S 1で制御される。
本実施例では、 C R C用行列演算と E C C用行列演算に共用するた めに、行列値演算部 3 0力 S、 E0R回路 3 2— iの出力ビッ トを保持する ためのシフ トレジスタ(SHIFT) 3 8— i と、 シフトレジスタ 3 8〜 iの 出力値とレジスタ領域 3 5 - iの出力値の何れかを選択して次行 EOR 回路 3 2—( i + 1 )に供給する第 3のセレクタ群 3 9— i ( i = 0〜 k) を備えている。 第 3のセレクタ群は、 制御信号 S1で制御される最 後のセレクタ 3 9— kを除いて、 制御信号 S4に応じて Aポート、 Bポ 一トの何れかの入力を選択する。
CR C用の行列値を生成する場合、 制御部 70は、 セレクタ 3 7と 第 2セレクタ群 36— 0〜 36— kと第 3のセレクタ群 38— 0〜 3 8— kが常時 Aポート入力を選択するように、 制御信号 Sl、 S2、 S4を 出力する。 また、 第 1セレクタ群 3 3— 0〜 3 3— kが、 行列 Mの第 1列目の行列値演算サイクルでは Aポート入力 (A- REG出力) 、 第 2列 〜第 k列 (k= 3 1) の行列値演算サイクルでは Bポート入力 (AN D回路 3 1— iの出力) を選択するように、 制御信号 SOが切替えられ る。
従って、 第 1列目の行列値演算サイクルでは、 E0R回路 32— i ( i = 0〜 k ) から、 A - REG 20 1が示す各ビットの値 a。〜 a 3 が生成さ れる。 これらのビッ ト値は、 レジスタ 3 5の各記憶領域 35— 0〜 3 5— kに設定された後、 MAT- MEM 50の CRC用行列領域、図示した例 では M (0, 0) の第 1列目に記憶される。
次の、 第 2列目の行列値演算サイクルでは、 第 1行目のセレクタ 3 3— 0力ゝら、 セレクタ 36— 0で選択された記憶領域 3 5— kが示す 前サイクル最終行の行列値 a 3 iと G - REG 20 2が示す第 1ビッ トの値 g。との間の論理積を示す値 (m0、 が出力され、 E0R回路 3 2— 0 に入力される。 上記値 m0、 は、 第 2のセレクタ群 3 6— i ( i = 1 〜k) を介して他の AND回路 3 1— iにも入力される。 従って、 第 1行目以降のセレクタ 3 3— iからは 「g m0、 J を示す値が出力 され、 E0R回路 32— iから式 (14) が示す行列値が出力される。 第 2列目〜第 k列目の各演算サイクルで、 上記と同様の演算動作を 繰り返すことによって、 。 じ用行列領域^^ (0,0) に式 (1 4) 、 ( 1 5) に従った行列値を生成することができる。
—方、 E C C用の行列値を生成する場合は、 第 3のレジスタ群 3 9 — i ( i = 0〜 k) に Bポート入力を選択させた状態で、 A- REG 201 の設定パラメータを入れ替えながら、 行列 Mの第 1列目の行列値演算 サイクルが繰り返される。 これらの演算サイクルで、 レジスタ 3 5に a0〜a31、 a32〜a63、 ·ι128〜&159の値が次々と生成され、 部分行列 Μ (0,0) 、 Μ (1,0) 、 (4, 0) の第 1列目に記憶される。
この時、 最初のシフトレジスタ 3 8— 0には、 a。、 a 32、 a 64、 a 96、 a 28のビッ ト値が保持され、 次のシフトレジスタ 38— 1に は、 aい a 33、 a 65、 a 97、 a 129のビッ ト値、 最後のシフトレジ スタ 3 8— kには、 a 3い a 63、 a 92、 a 127、 a 159のビッ ト値力 S 保持された状態となる。
第 1列目の行列値演算が終了すると、 制御信号 S 0と制御信号 S 2 によって、 第 1セレクタ群 3 3— i とセレクタ 3 7がそれぞれの Bポ —ト入力を選択するように切替える。 この時点では、 レジスタ 3 5の 記憶領域 3 5— kには、行列値 m3 〗 —丄としてパラメータ値" a 159" が設定されている。
以下、 G-REG 20 2の設定値を入れ替えながら、部分行列 M (0,0) 、 M (1, 0) 、 (4, 0) の第 1列目の行列値演算サイクルを繰り返す。
G-REG 202に第 1プロックのパラメータ値 g。〜 g 3 を設定した 演算サイクルでは、 制御信号 S 1の切替えによって、 第 2セレクタ群 3 6— i と、 第 2セレクタ群の最後のセレクタ 3 9— kに Aポート入 力を選択させ、 セレクタ 3 3— 0の出力値 "g。 · a 159" を他の行の AND回路 3 1一 iに入力する。 また、 制御信号 S 3で与えるラッチ 指令によって、 上記セレクタ 3 3— 0の出力値 "g。 · a 159" をラッ チ回路 3 に記憶する。 この時、 E0R回路 3 2— j には、 シフトレジス タ 3 8—(j 1)から出力された前列前行のビット値 m(0, j- 1)が入力さ れるため、 式 (14) 、 (1 5) に従った第 2行目の行列値 ιη0, 〜 m3 iが生成され、 これらの値が、 シフトレジスタ 38— 0〜 3 8— kと MAT - MEM 5 0の E C C用部分行列 M (0, 0)の第 2列目に記憶される c G-REG 202に第 1ブロック (g 32〜 g 63) 〜第 4プロック (g 12
7〜g 159) のパラメータ値を設定した状態で行われる各演算サイクル では、制御信号 S 1 との切替えによって、第 2セレクタ群 36— i と、 第 3セレクタ群の最後のセレクタ 3 8— kに Bポート入力を選択させ る。 すなわち、 部分行列 M (1,0) 〜M (4,0) の行列値に、 上記ラッ チ回路 34に記憶された" g。 · a 159"を反映させる。 これによつて、 式 (14) 、 ( 15) に従った第 1行目の'行列値 (m32, 〜!!^^ ,) 〜 (n^ 27, 丄 〜 !!^ 5 9、 が次々と生成され、 MAT- MEM 50の部分行 列 M (1,0) 〜M (4, 0) の第 2列目に記憶される。 - 部分行列 M (0,0) 、 M (1, 0) 、 〜M (4,0) の第 3列目〜第 3 2列 目の行列値は、 上述した第 2列目と同様の手順を繰り返すことによつ て生成でされる。 残りの部分行列 M (0,1) 、 M (1,1) 、 (4, 4) では、 第 1列力ゝら第 3 2列までの全ての行列値演算に. G-REG 202の 設定値を利用し、 部分行列 M (0,0) 、 M (1,0) 、 (4,0) の第 2 列目以降の演算サイクルと同様の手順を繰り返す。
第 9図は、 第 8図に示した行列値演算部 3 0を制御対象として制御 部 70が実行する CRC行列値生成ルーチン 1 00の 1実施例を示す c
CRC行列値生成ルーチン 1 00では、 列を指定するためのパラメ —タ iを初期値 0、 最後の列を示すパラメータ jmaxの値を 「3 1」 に 設定(ステップ 10 1)した後、 メモリ領域 2 71から読み出した g, -CRCの値を A-REG 20 1と G-REG 202にロードする (ステップ 1 0 2、 1 0 3) 。 次に、 制御信号 S1〜S4の発生パターンを単一行列モ ードに設定する。 ここで、 単一行列モードは、 行列値の演算が基本サ ィズ 3 2 X 3 2ビッ トの単一の部分行列で完了することを意味してお り、 このモードでは、 制御信号 Sl、 S2、 S4は、 第 2、 第 3のセレクタ 群 36— i、 3 9— i ( i = 0~k) とセレクタ 3 7に常時 Aポート 入力を選択させた状態となり、 制御信号 S3は、 ラッチ信号を全く発生 しない状態となる。
先ず、制御信号 SOによって、第 1セレクタ群 3 3— i ( i =0〜k) に A- REG 20 1の出力 (Aポート入力) を選択させ (1 0 5) 、 E0R 回路 3 2— i ( i = 0〜k) により第 j列の行列値を演算する (1 0 6)。 E0R回路から出力された第 j列の演算結果は、 レジスタ 3 5に保 持した後、 MAT -腿 M 50に定義された CRC用の行列領域に記憶する (1 0 7) 。 制御信号 SOの状態を切替えて、 第 1セレクタ群 3 3に G-REG 202の出力 (Bポート入力) を選択させる (1 08) 。
次に、 パラメータ j の値をィンクリメントし (1 0 9) 、 j の値を jmaxと比較する (1 1 0) 。 j > jmaxとなっていた場合は、 このノレ一 チンを終了し、 そうでなければ、 パラメータ が示す次列の行列値を E0R回路 32— iにより演算し (1 1 1) 、 第 j列の演算結果を CRC 用の行列領域に記憶する (1 1 2) 。 この後、 ステップ 10 9に戻り、 j 〉jmaxとなる迄、 同様の動作を繰り返す。
CR C用の行列 Mのサイズは、 行列値演算部 30が扱う基本サイズ となっているため、 上述したように、 j = 0〜jmaxの行列値の演算を 繰り返すことによって、 積和演算部 40が必要とする全ての行列値を 生成できる。
第 1 0図は、 第 8図に示した行列値演算部 3 0を制御対象として制 御部 70が実行する E C C行列値生成ルーチン 1 20の 1実施例を示 す。 E C C行列値生成ルーチン 1 20では、 図 7に示した部分行列 M (I, J)を特定するためのパラメータ I、 Jの値と、 部分行列 M(I,J)内 での列番号を指定するためのパラメータ j の値を初期値 0に設定し、 パラメータ I と Jの最大値 Imaxと Jmaxを 4、 j の最大値 jmaxを 3 1 に設定する (1 2 1) 。
次に、 制御信号 Sl、 S2、 S3、 S4の発生パターンを部分行列モードに 設定する。 ここで、 部分行列モードは、 行列値の演算が複数の部分行 列に分割して実行されることを意味しており、 このモードでは、 制御 信号 S1は、 第 2セレクタ群 36— i ( i =0〜k) とセレクタ 39— kが、 部分行列 M(0,J)の演算サイクルでは Aポート入力、 その他の部 分行列 M(I,J) (但し、 1 =:!〜 4) の演算サイクルでは Bポート入力 を選択するように切替えられ、 制御信号 S2は、 セレクタ 37が、 部分 行列 M(I,0) (但し、 1 =0〜4) の第 1列の演算サイクルでは Aポー ト入力、 その後は Bポート入力を選択するように切替えられる。
また、 制御信号 S3は、 部分行列 M(0,J)の各列の演算サイクルでラ ツチ信号を発生し、 ラツチ回路 34にセレクタ 3 3 _ 0の出力値を保 持させる。 ラッチ回路 34の出力値は、 部分行列 M(l, J)〜M(4, J)の 演算サイクルでは不変となる。 制御信号 S4は、 第 3セレクタ群 39— i ( i = 0〜k— l) に常時、 Aポート入力を選択させる。
先ず、制御信号 SOによって、第 1セレクタ群 33— i ( i = 0〜k) に A - REG 20 1の出力 (Aポート入力) を選択させ (1 23) 、 メモ リ 27の E- KEY領域 273力 ら A- REG 20 1に暗号鍵の第 Iプロック KEY (I)をロードする (1 24) 。 この時、 E0R回路 32 - i ( i = 0〜 k) は、 KEY (I)が示す 3 2ビッ トのパラメータに従って、 部分行列 M (I,J)の第 1列の行列値を演算する (1 25) 。 この演算結果は、 シフ トレジスタ 38とレジスタ 3 5に保持した後、 MAT - MEM 50に定義され た EC C用部分行列領域 M(I, J)の第〗列に記憶される (1 26) 。 次に、 パラメータ Iの値をインクリメントし (1 2 7) 、 Iの値を Imaxと比較する (1 28) 。 I〉 Imaxでなければ、 ステップ 1 24に 戻って、 E - KEY領域 2 7 3から暗号鍵の次のブロック KEY (I)を A - REG 201にロードし、 同様の動作を繰り返す。
I >Imaxとなった場合は、制御信号 SOの状態を切替えて、第 1セレ クタ群 3 3に G-REG 20 2の出力 (Bポート入力) を選択させ ( 1 3 0) 、 パラメータ Iを初期値 0に戻し、 パラメータ j の値をィンク リ メントする (1 3 3) 。
次に、 パラメータ j の値を: imaxと比較し (1 34) 、 j >jmaxでな ければ、 メモリ 2 7の g -ECC領域 2 72力、ら A - REG 20 1に多項式 g (X)の第 Iプロック g- ECC(I)をロードする ( 1 3 5)。 これによつて、 E0R回路 3 2— i ( i = 0〜k) で、 · g- ECC(I)が示す 3 2ビッ トのパ ラメータに従った部分行列 M(I, J)の第 j列の行列値が演算される (1 3 6) 。 演算結果は、 レジスタ 35に保持した後、 MAT- MEM 50に定義 された E C C用部分行列領域 M(I, J)の第 j列に記憶される(1 3 7)。 次に、 パラメータ Iの値をインクリメントし (1 38) 、 Iの値を Imaxと比較する (1 3 9) 。 I〉 Imaxでなければ、 ステップ 1 3 5に 戻って、 E- KEY領域 2 73力 ら g 0 の次のプロック g_ECC(I)を A-REG 201にロードし、同様の動作を繰り返す。ステップ 1 3 9で I >Imax となった場合は、 ステップ 1 3 3に戻り、 パラメータ Iを初期値 0に 戻し、 パラメータ j の値をインクリメントして、 次列の行列値につい て上記と同様の手順を繰り返す。
ステップ 1 34で j > jmaxとなった場合、 ステップ 1 40に進み、 パラメータ j と Iの値を初期値 0に戻し、 パラメータ Jの値をィンク リメントする。 これによつて、 次列の部分行列 M(I,J)が演算対象とな る。 パラメータ Jの値を Jmaxと比較し ( 1 4 1 ) 、 J > Jmaxとなって いた場合は、 このルーチンを終了する。 J〉 Jmaxでなければ、 ステツ プ 1 3 5に進む。 これによつて、 部分行列 M (0, J)〜M (4, J)内の第 1 列から第 3 2列について、上述した行列値の演算動作が繰り返される。
尚、 上記ステップ 1 3 3〜 1 4 1の実行過程で、 部分行列 M (0, J)の 各列の演算サイクルで、 制御信号 S3で与えるラッチ指令によって、 行 列 Mの第 1行目の行列値がラッチ回路 3 4に保持され、 この値が後続 する部分行列 M (l, J)〜M (4, J)の各演算サイクルで A N D回路 3 1 一 0〜 3 1— kに供給される。 また、 第 8図に示した第 1行の E0R回路 3 2— 0には、 レジスタ 3 5の最後の記憶領域 3 5— kから出力され る前列最終行の行列値が供給されているため、 第 6図で説明した部分 行列間の境界条件を満たすことができる。
. 以上、 E C C暗号化用の行列値生成ルーチンについて説明したが、 プロック KEY (I)として、 メモリ 2 7の D - KEY領域から読み出した復号 鍵を適用すれば、 ル一チン 1 2 0と同様の制御手順で E C C複号化用 の行列値を生成できる。
第 1 1図の (A ) と (B ) は、 積和演算部 4 0を制御対象として制 御部 7 0が実行する送信データ処理ルーチン 2 0 0と受信データ処理 ノレ一チン 3 0 0のフローチャートを示す。
送信データ処理ルーチン 2 0 0は、 バッファメモリ 2 6の Tx- BUF領 域 2 6 1 Αから読み出した送信データ (送信メッセージ) の暗号化処 理 (2 1 0 ) と、 Tx-ENC領域 2 6 2 Aから読み出した暗号化データに ついての C R C生成ノ送信処理 (2 3 0 ) とからなる。 伹し、 送信デ ータの暗号化が不要の場合は、 Tx-BUF領域 2 6 1 Aから読み出した送 信データを処理対象として、 1 生成 送信処理 (2 3 0 ) が実行 される。 一方、 受信データ処理ルーチ 300は、 バッファメモリ 26の Rx - CRC領域 263 Bに蓄積された受信データについての C R C生成処 理 (3 1 0') と、 CRCチェック (3 20) の結果、 誤りなしと判定 された受信データを対象とした復号化処理 ( 330) とからなる。 復 号化処理(3 3 0) では、受信データが暗号化データか否かを判定し、 暗号化データでなければ、受信データをそのまま Rx - BUF領域 1 6 1 B に転送し、 暗号化データの場合には、 これを複号化した後、 Rx- BUF領 域 1 6 1 Bに転送する。 CRCチェックの結果、 誤りが検出された受 信データについては、 例えば、 上位装置であるコアプロセッサ 1 0へ のエラー通知などのエラー処理 (3 50) が実行される。
上記送信データ処理ルーチン 200と受信データ処理ルーチン 30 0は、 メッセーシ単位で交互に実行される。
第 1 2図は、 送信データの暗号化処理 2 1 0の 1実施例を示すフロ 一チャートである。
制御部 70は、 Tx-BUF領域 2 6 1 Aから送信メッセージのへッダ部 を読み出し (21 1) 、 ヘッダ部が示すデータ長 から、 送信データ を暗号化データのプロック長、 この例では 1 60ビッ ト単位で分割し た場合のプロック数 Nmaxを計算し、暗号化処理の繰り返し回数を示す パラメータ nの値を初期値 1に設定する (2 1 2) 。 本実施例では、 ヘッダ部は暗号化の対象外とし、 Tx - ENC領域 26 2 Aに転送する (2 1 3) 0
先ず、 部分行列 M(I,J)を指定するためのパラメータ I、 Jの値を初 期値 0に設定し (2 14) 、 Tx - BUF領域 2 6 1 Αから、 送信データの n番目のデータプロックを 32ビット単位で読み出し、 B- REG 203に 転送する (2 1 5) 。 ここでは、 B - REG 20 3に読み出された 3 2ビッ トのデータプロックを D(n)-Jで表す。 最初に読み出されたデータプロ ック D(n) - 0は、 第 7図におけるデータ D-0に相当し、 その次に読み出 されるデータプロック D(n)-1は、 データ D- 1に相当する。
次に、 メモリ 5 0から M - REG 5 1に暗号化用の部分行列 M (1, J)を口 ード (2 16) し、 積和演算部 40を起動すると (2 1 7) 、 C - REG 204に部分行列 M(I, J)とデータ D(n)- Jとの積和演算結果が出力さ れる。 部分行列 M(0,0)を使用した最初の積和演算では、 第 7図に示し た C0〜C31の値が求まる。 この値は、 E C C符号の部分計算値に過ぎ ないため、 C- MEM 5 2の ECC- 1領域の既演算値に EOR加算する (2 1 8) 。 C - MEM 5 2には、 部分行列 M(I,J)のパラメータ J と対応して、 3 2ビッ ト長の符号値記憶領域 ECC- 0〜ECC- 4が用意してあり、各領域 の初期値は 0となっている。
パラメータ Iの値をィンクリメントし (2 1 9) 、 I〉 4か否かを 判定する ( 220) 。 Iの値が 4以下であれば、 ステップ 2 1 6に戻 り、 上述した動作を繰り返す。 これによつて、 データ D - 0と部分行列 M(l,0)〜M(4,0)の積和演算が次々と実行され、 演算結果 C32 - C63 〜C128 - C159が C - MEM 5 2の ECC - 1〜ECC - 4の既演算値に E O R加算さ れる。
パラメータ Iをインクリメントした結果、 I > 4となった場合は、 Iの値を初期値 0に戻し、 Jの値をインクリメントして (22 1) 、 J > 4か否かを判定する (222) 。 Jの値が 4以下の場合は、 ステ ップ 2 1 5に戻って、 Tx- BUF領域 26 1 Αから B- REG 203に、 送信 データの次のブロック D(n)- Jを転送し、 ステップ 2 1 5〜 2 22の動 作を繰り返す。 Jの値が 4を超えるまで、 上述した動作を繰り返すこ とによって、 第 7図に示したデータ D-1と部分行列 M(0, 1)〜M(4, 1)、 データ D- 2と部分行列 M(0,2)〜?/ 1(4, 2)、データ D - 3と部分行列 M (0,3) 〜M(4,3)、 データ D - 4と部分行列 M(0, 4)〜M(4,4)の積和演算が次々と 実行され、各積和演算の結果が C- MEM 5 2の ECC - 0〜ECC- 4に次々と E OR加算される。
パラメータ Jの値が J > 4となった時、 C - MEM 5 2の内容 (ECC - 0〜 ECC-4) は、 1 6 0ビッ ト長送信データについての暗号化結果を示して いる。 従って、 C- MEM 5 2の内容をバッファメモリの Tx-ENC領域 2 6 2 Aに転送し ( 22 3) 、 C-MEM 5 2の ECC- 0〜ECC- 4をクリア ( 2 2 4) した後、 パラメータ nの値をィンクリメントする ( 2 25 ) 。 n の値を最大値 Nmaxと比較し (2 26) 、 n〉Nmaxでなければ、 ステツ プ 21 4に戻って、 次の 1 60ビット長の送信データ D(n)を対象とし て、 暗号化処理を繰り返す。 n >Nmaxとなった時点で、 1つの送信メ ッセージの暗号化が完了する。
第 1 3図は、 じ じ生成ノ送信処理 ( 230) の 1実施例を示すフ ローチャートである。 . CRC生成ノ送信処理 ( 23 0) では、 Tx - ENC領域 26,2 Aから 3 2ビット単位で暗号化データを読み出して、 CRCを生成する。 ここ では、 暗号化された送信データを対象として説明するが、 送信メッセ ージを暗号化することなく送出する場合は、 -81^領域26 1 Aのデ ータを C R Cの生成対象とすればよい。
先ず、 Tx - ENC領域 26 2 Αから送信メッセージのヘッダ部を読み出 し、 送信部 1 1に転送する (2 3 1) 。 次に、 喑号化データの長さ K を 3 2ビット単位で読み出した場合のデータプロック数 Nmaxを計算し. 処理の繰り返し回数を示すパラメータ nの値を初期値 " 1" に設定す る (2 3 2) 。
メモリ 50から M- REG 5 1に C R C用の行列値 Mを口一ド ( 23 3 ) した後、 Tx-ENC領域 26 2 Aから暗号化送信データの最初のデータブ ロック D(n)を読み出し、 送信部 1 1と B - REG 20 3に転送する (2 3 4) 。 この状態で積和演算部 40を起動すると (23 5) 、 C-REG 20 4に CRC用行列 Mとデータ D(n)との積和演算結果 C0〜C31が出力さ れる。
C R C生成の場合、 積和演算部 40の一回の起動でデータブロック D(n)に付加すべき CR C符号が生成できるため、 C-REG 204の内容を 送信部 1 1に送信し (2 3 6) 、 パラメータ nの値をィンクリメント して ( 23 7) 、 nの値を Nmaxと比較する ( 23 8) 。 nが Nmax以 下の場合はステップ 234に戻って、 Tx- ENC領域 26 2 Αから次のデ 一タブ口ック D(n)を読み出し、 上述した動作を繰り返し、 n >Nmaxと なった時、 1メッセージ分の CRC生成処理を終了する。
第 1 1図に示した受信データ処理ルーチン 300における CRC生 成処理 3 1 0は、 第 1 3図で説明した送信データの CRC生成ルーチ ンにおいて、読み出すべきデータブロックの記憶領域を Tx-ENC領域 2 6 2 Aから Rx - CRC領域 2 63 Bに変更し、ヘッダとデータブロックと C R Cの転送先を送信部 1 1からバッファメモリの Rx- ENC領域 26 2 B (平文受信データの場合は Tx- BUF領域 26 1 Β)に変更すればよい。 また、 受信データの復号化処理 3 30は、 Rx- ENC領域 26 2 Bから 読み出したデータプロックをメモリ 50から M- REG 5 1にロードした 復号化用の部分行列で積和演算処理すればよいため、 基本的には、 第 1 2図で説明した送信データ暗号化ルーチンと同様の手順となる。 以上の実施例では行列値演算部 3 0で生成した CRC用、 E CC用 の行列をメモリ (MAT-MEM) 50に格納しておき、 。 。生成と £0〇 暗号化/複号化処理を行う時、 積和演算部 40が必要とする行列の値 を MAT- MEM 50から M - REG 5 1に適宜ロードするようにしたが、 M- REG 5 1を CRC用、 E CC暗号化用、 復号化用の専用レジスタとして用 意しておき、 行列値演算部 30で生成した行列値をこれらの専用レジ スタに直接ロードするようにしてもよい。 この場合、 積和演算部 4 0 に接続すべき M - REG 5 1を切替えることによって、 C R C生成と E C C暗号化ノ復号化処理を高速に行うことが可能になる。
また、 実施例では、 行列値演算部で生成する行列の基本サイズを 3 2 X 3 2としたが、 これを 8 X 8、 または 1 6 X 1 6のように小型化 した場合、 C R C用の行列も部分行列モードで生成することになる。 この場合、 C R C行列値生成ルーチン 1 0 0に、 第 1 0図で説明した E C C行列値生成ルーチン 1 2 0と同様の制御手法を採用すればよい c 本発明によれば、 予め用意した行列値を利用することによって、 送 受信データの誤り検出に必要な C R C符号を高速に生成できる。 また、 C R C用の行列を生成する行列値演算部を利用して、 E C C暗号化用 およぴ復号化用の行列値を迅速に生成できる。 従って、 安全性を高め るために暗号鍵を適宜変更したい場合に、 外部から暗号鍵データを与 えて、制御部 7 0に E C C行列生成ルーチンを実行させることにより、 暗号鍵に応じた新たな行列値を容易に生成することが可能となる。 産業上の利用可能性
本発明によれば、誤り検出符号生成と暗号化処理にハードウエア(行 列値演算部と積和演算部) を共用できるため、 コンパク トなパケッ ト 通信装置を提供できる。 また、 暗号化 Z復号化処理に必要な行列値を パケット通信装置内で生成できるため、 暗号鍵変更が容易であり、 送 受信データの安全性を向上できる。

Claims

請 求 の 範 囲
1. それぞれ所定ビッ ト長のパラメータが設定される第 1、 第 2レジ スタ (20 1、 202 ) と、 符号化すべきデータが設定される第 3レ ジスタ ( 20 3 ) と、 上記第 1、 第 2レジスタの設定値から行列値を 生成する行列値演算部 (3 0) と、 上記行列値演算部で生成された行 列値を保持する行列値レジスタ ( 5 1) と、 上記行列値レジスタが保 持する行列値と上記第 3レジスタに設定されたデータとの積和演算を 実行する積和演算部 (40) とを有し、
上記第 1、 第 2レジスタの設定パラメータを変えることによって、 上記行列値演算部で誤り検出用の行列値と暗号化用の行列値を選択的 に生成し、 上記行列値レジスタに保持する行列値を切替えることによ つて、 上記積和演算部で誤り符号化演算と暗号化演算を選択的に行う ことを特徴とする符号演算装置。
2. 少なく とも一方に n次多項式の係数値データが設定される第 1、 第 2レジスタ (201 と 20 2) と、 符号化すべきデータが設定され る第 3レジスタ (20 3) と、 上記第 1、 第 2レジスタの設定値から η Χηの行列値を生成する行列値演算部 (3 0) と、 上記行列値演算 部で生成された行列値を保持する行列値レジスタ (5 1) と、 上記行 列値レジスタが保持する行列値と上記第 3レジスタに設定されたデー タとの積和演算を実行する積和演算部 (40) とを有し、
上記第 3レジスタに送信データまたは受信データを供給することに よって、 上記積和演算部から符号化データを得るようにしたことを特 徴とする符号演算装置。
3. 前記行列値演算部で誤り検出用の行列値を生成し、 前記積和演算 部から前記第 3レジスタの設定データと対応する誤り検出符号を得る ことを特徴とする請求項 2に記載の符号演算装置。
4. 前記第 1、 第 2レジスタに、 ガロア体の n次の多項式 g (X)の最高 次 nの係数を除いた係数データ (g ' ) を設定し、 前記積和演算部から、 前記第 3 レジスタの設定データに対する多項式 g (X)を法 (mo d) と する CRC符号を得ることを特徴とする請求項 3に記載の符号演算装
5. 前記行列値演算部で暗号化用の行列値を生成し、 前記積和演算部 から前記第 3 レジスタの設定データの暗号化符号を得ることを特徴と する請求項 2に記載の符号演算装置。
6. ガロア体の n次既約多項式 g (X)の係数データと暗号鍵データを記 憶するための第 1メモリ と、 上記メモリから係数データと暗号鍵デー タをそれぞれ複数のデータプロックに分割して読み出し、 前記第 1、 第 2レジスタに設定する制御部 (7 0) と、 複数の部分行列値を記憶 するための第 2メモリ とを備え、
前記行列値演算部 (3 0) で n X nの複数の部分行列値を生成し、 上記制御部の制御の下で、 上記行列値演算部で生成された部分行列値 を上記第 2のメモリに記憶しておき、 上記第 2のメモリから前記行列 値レジスタ (5 1) に部分行列値を選択的にロードし、 前記積和演算 部で前記第 3 レジスタの設定データと複数の部分行列値との積和演算 を繰り返すことによって、 前記暗号化符号を得ることを特徴とする請 求項 5に記載の符号演算装置。
7. 前記積和演算部で生成された積和演算結果を中間演算値として保 持されている既演算値に排他的論理和加算し、 新たな中間演算値とし て保持するための手段を (5 2、 5 3) 有することを特徴とする請求 項 6に記載の符号演算装置。
PCT/JP2002/006166 2002-06-20 2002-06-20 符号演算装置 WO2004001701A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/518,481 US20060034452A1 (en) 2002-06-20 2002-06-20 Code calculating device
PCT/JP2002/006166 WO2004001701A1 (ja) 2002-06-20 2002-06-20 符号演算装置
JP2004515442A JPWO2004001701A1 (ja) 2002-06-20 2002-06-20 符号演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/006166 WO2004001701A1 (ja) 2002-06-20 2002-06-20 符号演算装置

Publications (1)

Publication Number Publication Date
WO2004001701A1 true WO2004001701A1 (ja) 2003-12-31

Family

ID=29808121

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/006166 WO2004001701A1 (ja) 2002-06-20 2002-06-20 符号演算装置

Country Status (3)

Country Link
US (1) US20060034452A1 (ja)
JP (1) JPWO2004001701A1 (ja)
WO (1) WO2004001701A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012242693A (ja) * 2011-05-20 2012-12-10 Kddi Corp 特徴パラメータ生成装置、特徴パラメータ生成方法および特徴パラメータ生成プログラム

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7356030B2 (en) * 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US20120155466A1 (en) * 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7187687B1 (en) * 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US7266117B1 (en) * 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US20090279558A1 (en) * 2002-05-06 2009-11-12 Ian Edward Davis Network routing apparatus for enhanced efficiency and monitoring capability
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
JP3940714B2 (ja) * 2003-09-25 2007-07-04 株式会社東芝 演算装置、および、暗号・復号演算装置
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US7903654B2 (en) * 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US8395996B2 (en) 2007-01-11 2013-03-12 Foundry Networks, Llc Techniques for processing incoming failure detection protocol packets
US8037399B2 (en) * 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8271859B2 (en) * 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8839083B2 (en) * 2011-10-25 2014-09-16 Taejin Info Tech Co., Ltd. Secure error detection and synchronous data tagging for high-speed data transfer
JP5814880B2 (ja) * 2012-07-31 2015-11-17 三菱電機株式会社 暗号システム、暗号方法、暗号プログラム及び復号装置
CN108540258B (zh) * 2017-03-01 2022-07-01 中兴通讯股份有限公司 一种循环冗余码校验方法及装置
KR20200060155A (ko) * 2018-11-22 2020-05-29 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991020028A1 (en) * 1990-06-15 1991-12-26 Edoardo Mastrovito Universal galois field multiplier
JPH0750595A (ja) * 1993-08-06 1995-02-21 Toshiba Corp 復号化装置
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE7714587L (sv) * 1977-12-21 1979-06-22 Brendstrom Hugo System for meddelanden
US7343389B2 (en) * 2002-05-02 2008-03-11 Intel Corporation Apparatus and method for SIMD modular multiplication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991020028A1 (en) * 1990-06-15 1991-12-26 Edoardo Mastrovito Universal galois field multiplier
JPH0750595A (ja) * 1993-08-06 1995-02-21 Toshiba Corp 復号化装置
JP2001056640A (ja) * 1999-08-19 2001-02-27 Toyo Commun Equip Co Ltd 積和演算装置及びこれを用いた暗号・復号装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAZUE SHIBA, SHIN'ICHI KAWAMURA, JUN SHINBO: "GF(2m) ensan oyobi seisu ensan o shori kano na hybrid coprocessor no teian", 1999NEN ANGO TO JOHO SECURITY SYMPOSIUM YOKUSHU, vol. II OF II, 26 January 1999 (1999-01-26), pages 819 - 824, XP002972230 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012242693A (ja) * 2011-05-20 2012-12-10 Kddi Corp 特徴パラメータ生成装置、特徴パラメータ生成方法および特徴パラメータ生成プログラム

Also Published As

Publication number Publication date
JPWO2004001701A1 (ja) 2005-10-20
US20060034452A1 (en) 2006-02-16

Similar Documents

Publication Publication Date Title
WO2004001701A1 (ja) 符号演算装置
KR101246490B1 (ko) 갈루아 폐체 암호 시스템
EP2003546B1 (en) Closed galois field combination
Lu et al. Faster correlation attack on Bluetooth keystream generator E0
Chou McBits revisited
GB2549981A (en) A public key cryptosystem based on the partitioning of elements of vectors
JPH04250490A (ja) ケーオス論に基づく暗号化システム
CN102096609A (zh) 可编程循环冗余校验(crc)计算的指令集架构
KR101930583B1 (ko) 비이진 선형 블록 코드에 대한 병렬 인코딩
WO1999012265A1 (fr) Codeur/decodeur turbo et procede de codage/decodage turbo
US20140055290A1 (en) Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US20110064214A1 (en) Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
US20160112069A1 (en) Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
JP2002229445A (ja) べき乗剰余演算器
US20020114451A1 (en) Variable width block cipher
CN101296053A (zh) 计算循环冗余校验码之方法及系统
JPH10240500A (ja) 乱数生成装置及び方法、暗号化装置及び方法、復号装置及び方法、並びにストリーム暗号システム
KR100322739B1 (ko) 유한체연산방법및그장치
JP2005527993A (ja) 相関アタックの精度と速度とを向上させるための方法および装置
JP2001255814A (ja) 復号方法、復号装置、及び復号プログラムの記録媒体
Trinca Sequential and parallel cascaded convolutional encryption with local propagation: Toward future directions in symmetric cryptography
JP2006023647A (ja) 乗算剰余演算器及び情報処理装置
JP2001051832A (ja) 乗算剰余演算方法および乗算剰余回路
WO2003107177A2 (en) Processor

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2004515442

Country of ref document: JP

ENP Entry into the national phase

Ref document number: 2006034452

Country of ref document: US

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 10518481

Country of ref document: US

122 Ep: pct application non-entry in european phase
WWP Wipo information: published in national office

Ref document number: 10518481

Country of ref document: US