KR20220131002A - Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array - Google Patents
Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array Download PDFInfo
- Publication number
- KR20220131002A KR20220131002A KR1020210035970A KR20210035970A KR20220131002A KR 20220131002 A KR20220131002 A KR 20220131002A KR 1020210035970 A KR1020210035970 A KR 1020210035970A KR 20210035970 A KR20210035970 A KR 20210035970A KR 20220131002 A KR20220131002 A KR 20220131002A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- value
- data
- memory
- input data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Logic Circuits (AREA)
- Image Processing (AREA)
Abstract
Description
본 발명은, GCM(Galois/Counter mode)에 관한 것으로서, 유한체(Galois Field) 곱셈 연산으로 인해 발생되는 처리 지연을 감소시키기 위한 방안에 관한 것이다.The present invention relates to Galois/Counter mode (GCM), and to a method for reducing processing delay caused by a finite field (Galois Field) multiplication operation.
인증 암호화(Authenticated encryption) 운영 모드는 데이터에 대한 기밀성과 인증을 동시에 제공하기 위해 기밀성 운영 모드와 인증 운영 모드에 독립된 암호 키를 적용하여 사용하는 대신, 하나의 암호 키로 동일한 안전성을 보장할 수 있도록 하는 방식이다.Authenticated encryption operation mode is designed to ensure the same security with one encryption key instead of applying an independent encryption key to the confidentiality operation mode and authentication operation mode to provide confidentiality and authentication for data at the same time. method.
인증 암호화 운영 모드가 가지는 편의성과 안전성 측면의 장점으로 인해, SSL(Secure Sockets Layer)/TLS(Transport Layer Security), IPsec(Internet Protocol security), SRTP(Secure RTP) 등 주요 암호 프로토콜은 규격을 정비하여 인증 암호화 운영 모드의 적용을 지원하고 있다.Due to the convenience and safety advantages of the authentication encryption operation mode, major encryption protocols such as SSL (Secure Sockets Layer)/TLS (Transport Layer Security), IPsec (Internet Protocol security), and SRTP (Secure RTP) The application of authentication encryption operation mode is supported.
이러한 인증 암호화 운영 모드 중 GCM(Galois/Counter mode)은 기밀성 운영 모드인 CTR(CounTeR)과 인증 운영 모드를 조합하여 하나의 암호 키를 사용할 수 있도록 설계된 인증 암호화 운영 모드이다.Among these authentication encryption operation modes, GCM (Galois/Counter mode) is an authentication encryption operation mode designed to use one encryption key by combining CTR (CounTeR), which is a confidential operation mode, and authentication operation mode.
GCM은 입력 데이터의 정보가 사전에 정해질 필요가 없기 때문에 온라인 처리가 가능하며, 암호화 과정에서는 평문에 CTR 모드를 적용하여 CCTR을 계산한 후, 부가 인증 데이터와 함께 유한체 연산으로 정의된 함수에 입력하여 인증 값을 생성하고 두 값을 연접하는 방식으로 출력 값 CGCM을 생성할 수 있다.Since GCM does not need to determine the information of input data in advance, online processing is possible. In the encryption process, CTR mode is applied to plaintext to calculate C CTR , and then a function defined as a finite-body operation with additional authentication data. You can create an output value C GCM by inputting it in to generate an authentication value and concatenating the two values.
헌데, 이러한 GCM의 성능상의 장점을 극대화하기 위해서는 128 비트 유한체 곱셈 연산이 효율적으로 동작해야만 한다.However, in order to maximize the performance advantage of GCM, the 128-bit finite field multiplication operation must operate efficiently.
그러나, 128 비트 유한체 곱셈 연산을 하드웨어로 구현하기 위해서는, 128 cycle이 필요하며, 이는 SDH(Synchronous Digital Hierarchy)나 OTN(Optional Transport Network) 프레임 등의 데이터를 처리하기에는 지연을 많이 발생시켜 네트워크 상의 지연 문제를 야기할 수 있다.However, in order to implement the 128-bit finite field multiplication operation in hardware, 128 cycles are required, which causes a lot of delay to process data such as Synchronous Digital Hierarchy (SDH) or Optional Transport Network (OTN) frames, resulting in network delay. It can cause problems.
이에, 본 발명에서는 유한체 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시키기 위한 방안을 제안하고자 한다.Accordingly, the present invention intends to propose a method for effectively reducing the processing delay caused by the finite field multiplication operation.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명에서 도달하고자 하는 목적은, GCM(Galois/Counter mode)에 관한 것으로서, 유한체(Galois Field) 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시키기 위한 방안에 관한 것이다.The present invention was created in view of the above circumstances, and an object of the present invention relates to a Galois/Counter mode (GCM), and effectively reduces processing delay caused by a finite field (Galois Field) multiplication operation. It's about how to do it.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 FPGA 연산 시스템은, 해시 서브키(H)에 관한 유한체(Galois Field) 곱셈 연산 결과를 주소 별 데이터 값으로 메모리에 기록한 메모리 장치; 및 입력 데이터의 비트 값을 상기 메모리에 대한 주소 값으로 입력하며, 상기 입력 데이터의 비트 값 입력에 따라 상기 메모리로부터 출력되는 데이터 값을 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환하는 FPGA 연산 장치를 포함하는 것을 특징으로 한다.An FPGA operation system according to an embodiment of the present invention for achieving the above object includes a memory device in which a finite field (Galois Field) multiplication operation result related to a hash subkey (H) is recorded in a memory as a data value for each address; and inputting a bit value of the input data as an address value for the memory, and returning a data value output from the memory according to the input of the bit value of the input data as a result of a finite-body multiplication operation between the input data and the hash subkey It is characterized in that it includes an FPGA arithmetic unit.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 메모리 장치는, 입력 데이터의 각 비트 자리 별로, 상기 입력 데이터와 매칭된 제1 데이터와, 해시 서브키(H)와 매칭되는 제2 데이터 간의 유한체(Galois Field) 곱셈 연산 결과를 데이터 값으로 기록한 제1 메모리; 상기 입력 데이터의 각 비트 자리 별로 상기 해시 서브키의 비트 값이 1인 비트 자리를 주소 값으로 상기 제1 메모리로부터 출력되는 데이터 값을 상기 입력 데이터의 각 비트 자리 별 데이터 값으로 기록한 제2 메모리; 및 상기 입력 데이터가 가질 수 있는 모든 비트 값에 대해서 상기 입력 데이터에서 비트 값이 1이되는 각 비트 자리를 주소 값으로 상기 제2 메모리로부터 출력되는 데이터 값을 룩업 테이블(LUT, Look Up Table) 내 상기 입력 데이터의 비트 값과 동일한 주소의 데이터 값으로 기록한 제3 메모리를 포함하는 것을 특징으로 한다.In order to achieve the above object, a memory device according to an embodiment of the present invention provides, for each bit digit of input data, between first data matched with the input data and second data matched with a hash subkey (H). a first memory in which a Galois Field multiplication operation result is recorded as a data value; a second memory in which, for each bit digit of the input data, a bit digit of the hash subkey having a bit value of 1 is an address value, and a data value output from the first memory is recorded as a data value for each bit digit of the input data; and a data value output from the second memory as an address value for each bit digit where a bit value becomes 1 in the input data for all bit values that the input data may have in a lookup table (LUT) and a third memory in which a data value of the same address as the bit value of the input data is written.
구체적으로, 상기 제1 메모리는, 상기 입력 데이터의 각 비트 자리 별로, 상기 제1 데이터에서 동일한 비트 자리의 비트 값을 1로 나머지 비트 자리의 비트 값을 0으로 설정한 비트 열에 대해서 상기 제2 데이터에서 각 비트 자리의 비트 값이 1인 경우마다의 비트 열을 유한체 곱셈 연산한 결과가 각 주소의 데이터 값으로 기록될 수 있다.Specifically, the first memory may include, for each bit position of the input data, the second data for a bit string in which a bit value in the same bit position in the first data is set to 1 and a bit value in the remaining bit positions is set to 0. In , the result of finite-body multiplication operation on the bit string for each case where the bit value of each bit digit is 1 may be recorded as the data value of each address.
구체적으로, 상기 제2 메모리는, 상기 입력 데이터의 비트 열이 가지는 각 비트 자리 별로, 상기 제1 메모리로부터 출력되는 데이터 값이 2 이상인 경우, 상기 2 이상의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 데이터 값으로 기록될 수 있다.Specifically, in the second memory, for each bit position of the bit string of the input data, when the data value output from the first memory is 2 or more, an XOR operation is performed on all of the 2 or more data values. Results can be recorded as data values.
구체적으로, 상기 제3 메모리는, 상기 입력 데이터에서 비트 값이 1이되는 각 비트 자리가 2 이상인 경우, 상기 2 이상의 비트 자리 각각의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 데이터 값으로 기록될 수 있다.Specifically, in the third memory, when each bit digit at which the bit value becomes 1 in the input data is 2 or more, the result of XOR operation on all data values of each of the 2 or more bit positions is the data value. can be recorded.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 FPGA 연산 장치는, 해시 서브키(H)에 관한 유한체(Galois Field) 곱셈 연산 결과가 주소 별 데이터 값으로 사전 기록된 룩업 테이블(LUT, Look Up Table)에 대해서 입력 데이터의 비트 값을 주소 값으로 입력하는 입력부; 및 상기 입력 데이터의 비트 값 입력에 따라 상기 룩업 테이블로부터 출력되는 데이터 값을 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환하는 반환부를 포함하는 것을 특징으로 한다.An FPGA computing device according to an embodiment of the present invention for achieving the above object includes a lookup table (LUT) in which a result of a Galois Field multiplication operation related to a hash subkey (H) is pre-recorded as a data value for each address; an input unit for inputting a bit value of input data as an address value for the Look Up Table; and a return unit that returns a data value output from the lookup table as a result of a finite-body multiplication operation between the input data and the hash subkey according to the bit value input of the input data.
구체적으로, 상기 입력부는, 상기 입력 데이터의 전체 비트 열을 동일한 길이의 2 이상의 비트 열로 분할하며, 상기 2 이상의 비트 열 각각의 비트 값을 상기 룩업 테이블의 주소 값으로 입력할 수 있다.Specifically, the input unit may divide the entire bit string of the input data into two or more bit strings of the same length, and input a bit value of each of the two or more bit strings as an address value of the lookup table.
구체적으로, 상기 반환부는, 상기 2 이상의 비트 열 각각의 비트 값 입력에 따라 상기 룩업 테이블로부터 각각 출력되는 데이터 값 모두에 대한 배타적 논리합(XOR) 연산 결과를 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환할 수 있다.Specifically, the return unit is configured to return an exclusive-OR (XOR) operation result on all data values output from the lookup table according to the bit value input of each of the two or more bit columns, as a finite object between the input data and the hash subkey. It can be returned as a result of a multiplication operation.
이에, 본 발명의 FPGA 연산 시스템, 메모리 장치 및 FPGA 연산 장치에 의하면, 고정된 해시 서브키와 임의의 입력 데이터 간의 유한체 곱셈 연산을 위해 해시 서브키(H)에 관한 선 계산 방식을 적용하여 그 결과 값을 메모리에 기록하고, 입력 데이터의 비트 값을 해당 메모리의 주소 값으로 입력하여 입력 데이터와 해시 서브키 간의 유한체 곱셈 연산 결과를 출력함으로써, 유한체 곱셈 연산으로 인한 처리 지연을 효율적으로 개선할 수 있다.Accordingly, according to the FPGA operation system, the memory device, and the FPGA operation device of the present invention, the pre-calculation method regarding the hash sub-key (H) is applied for the finite-body multiplication operation between the fixed hash sub-key and arbitrary input data. By writing the result value to the memory and outputting the result of the finite-body multiplication operation between the input data and the hash subkey by inputting the bit value of the input data as the address value of the corresponding memory, the processing delay caused by the finite-body multiplication operation is efficiently improved can do.
도 1은 본 발명의 일 실시예에 따른 GCM의 블록도.
도 2는 본 발명의 일 실시예에 따른 유한체 곱셈 연산 시스템의 개략적인 구성도.
도 3은 본 발명의 일 실시예에 따른 메모리 장치를 설명하기 위한 개략적인 구성도.
도 4는 본 발명의 일 실시예에 따른 FPGA 연산 장치를 설명하기 위한 개략적인 구성도.
도 5는 본 발명의 일 실시예에 따른 FPGA 연산 장치의 동작 방법을 설명하기 위한 순서도.1 is a block diagram of a GCM according to an embodiment of the present invention.
2 is a schematic configuration diagram of a finite field multiplication operation system according to an embodiment of the present invention.
3 is a schematic configuration diagram for explaining a memory device according to an embodiment of the present invention;
Figure 4 is a schematic configuration diagram for explaining the FPGA arithmetic device according to an embodiment of the present invention.
5 is a flowchart for explaining a method of operating an FPGA arithmetic device according to an embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 대하여 설명한다.Hereinafter, preferred embodiments of the present invention will be described with reference to the accompanying drawings.
본 발명의 일 실시예에서는, LEA(Light weight Encryption Algorithm), ARIA(Academy, Research Institute, Agency), 및 AES(Advanced Encryption Standard) 등을 포함한 다양한 암호 알고리즘의 운영 모드 표준에서 제시하는 GCM(Galois/Counter mode)에 관한 기술을 다룬다.In one embodiment of the present invention, GCM (Galois / GCM) presented by the operating mode standards of various encryption algorithms, including LEA (Light weight Encryption Algorithm), ARIA (Academy, Research Institute, Agency), and AES (Advanced Encryption Standard), etc. Counter mode) is dealt with.
이와 관련하여, LEA 운영 모드 표준에서 제시하는 CCM(Counter with CBC-MAC) 모드와 GCM은 기밀성 운영 모드인 CTR(CounTeR)과 인증 운영 모드를 조합하여 하나의 암호 키를 사용할 수 있도록 설계된 인증 암호화 운영 모드이다.In this regard, the CCM (Counter with CBC-MAC) mode and GCM suggested by the LEA operation mode standard are designed to use a single encryption key by combining the confidential operation mode CTR (CounTeR) and the authentication operation mode. is the mode
기밀성 운영 모드와 동일하게, 인증 암호화 운영 모드는 암호 키와 함께 초기 값을 사용하며, 초기 값은 Nonce 특성을 가져야 한다.Like the confidentiality operation mode, the authentication encryption operation mode uses an initial value together with an encryption key, and the initial value must have a nonce characteristic.
이때 초기 값은 암호 키와 마찬가지로 암호화에 사용된 것과 동일한 값이 복호화에 사용되어야 하므로, 복호화 이전에 이를 공유할 수 있는 방법이 별도로 정의되어 있어야 한다.At this time, as the initial value, the same value used for encryption should be used for decryption as in the encryption key, so a method for sharing it must be separately defined before decryption.
또한 암호 키, 초기 값, 평문(암호문)과 함께, 암호화(복호화) 시 입력으로 부가 인증 데이터(Associated data)를 받을 수 있고, 부가 인증 데이터는 공개되어도 무방하지만 무결성은 보장되어야 하는 데이터로, 암호문에 포함되지 않으며 암호문으로부터 복구 가능할 필요도 없다.In addition, associated data can be received as input during encryption (decryption) along with the encryption key, initial value, and plain text (cipher text). It is not included in the ciphertext and does not have to be recoverable from the ciphertext.
CCM 모드는 암호화 전에 모든 데이터의 정보가 정해지는 환경에서 사용하는 것을 가정하며, 스트리밍 서비스와 같이 온라인 처리는 지원하지 않는다. 암호화 과정에서는 평문과 부가 인증 데이터, 그리고 초기 값에 CBC-MAC을 적용하여 인증 값을 생성한 후, 평문과 인증 값에 CTR 모드를 적용하여 출력 값 CCCM을 생성한다.CCM mode is assumed to be used in an environment where all data information is determined before encryption, and online processing like streaming services is not supported. In the encryption process, an authentication value is generated by applying CBC-MAC to the plaintext, additional authentication data, and initial value, and then CTR mode is applied to the plaintext and authentication value to generate an output value C CCM .
반면 GCM은 입력 데이터의 정보가 사전에 정해질 필요가 없기 때문에 온라인 처리가 가능하다.On the other hand, in GCM, online processing is possible because the information of the input data does not need to be determined in advance.
암호화 과정에서는 평문에 CTR 모드를 적용하여 CCTR을 계산한 후, 부가 인증 데이터와 함께 유한체 연산으로 정의된 함수에 입력하여 인증 값을 생성하고 두 값을 연접하여 출력 값 CGCM을 생성한다.In the encryption process, C CTR is calculated by applying the CTR mode to the plaintext, and then the authentication value is generated by inputting the additional authentication data to the function defined by the finite field operation, and the output value C GCM is generated by concatenating the two values.
보다 상세하게 GCM의 암호화 과정을 통해 출력된 암호문 CAE는 CTR 모드에 의해 생성되는 값 CCTR과 메시지 인증 코드에 의해 생성되는 인증 값 T를 연접시킨 구성으로 볼 수 있다.In more detail, the cipher text C AE output through the encryption process of GCM can be viewed as a configuration in which the value C CTR generated by the CTR mode and the authentication value T generated by the message authentication code are concatenated.
수신자는 주어진 암호 키 K, 초기 값 N, 부가 인증 데이터 A에 대해 수신된 암호문 CAE로부터 평문 후보 P′을 복구하고 인증 확인 값 T′을 계산할 수 있다.The receiver can recover the plaintext candidate P′ from the received ciphertext C AE for the given encryption key K, initial value N, and additional authentication data A, and calculate the authentication confirmation value T′.
이때, 평문 후보 P′의 복구 과정에서 오류가 발생하지 않았을 경우, 이는 수신된 암호문 CAE가 (K, N, A)로부터 생성되었다는 유력한 증거가 된다.At this time, if no error occurs during the recovery process of the plaintext candidate P′, this is a strong evidence that the received ciphertext C AE is generated from (K, N, A).
이처럼, GCM은 CTR 모드에 유한체 곱셈을 이용한 메시지 인증 코드를 결합한 구조로 이해될 수 있다.As such, the GCM can be understood as a structure in which the message authentication code using finite field multiplication is combined with the CTR mode.
이때, GHASH 함수는 GCM의 메시지 인증 과정을 구성하는 요소로, 다음 의사 코드와 같이 정의된다.At this time, the GHASH function is an element constituting the message authentication process of GCM, and is defined as the following pseudo code.
여기서, GHASH 함수에서 사용되는 유한체 GF(2128) 상에서의 곱셈 연산 'ㆍ'는 다음의 감산 다항식 을 이용하여 다음의 의사 코드로 정의할 수 있다.Here, the multiplication operation '·' on the finite field GF(2 128 ) used in the GHASH function is the following subtraction polynomial can be defined as the following pseudo code using
즉, 두 128 비트 값 U, V에 대하여, GCM의 메시지 인증 과정에서 사용되는 유한체 곱 W = UㆍV를 위와 같은 의사 코드로 정의하고 있는 것이다.That is, for two 128-bit values U and V, the finite field product W = U·V used in the message authentication process of GCM is defined as the above pseudo code.
그러나, 위 의사 코드에서와 같은 128비트 유한체 곱셈을 하드웨어로 구현하기 위해 128 cycles이 필요하며, 이는 SDH(Synchronous Digital Hierarchy)나 OTN(Optional Transport Network) 프레임 등의 데이터를 처리하기에는 지연이 많이 발생하여 네트워크 상에서의 지연 문제를 야기할 수 있다.However, 128 cycles are required to implement the 128-bit finite field multiplication in hardware as in the pseudo code above, which causes a lot of delay in processing data such as SDH (Synchronous Digital Hierarchy) or OTN (Optional Transport Network) frames. This may cause delay problems on the network.
설명의 이해를 돕기 위해 도 1에는 GCM의 블록도를 예시적으로 보여주고 있다.In order to help the understanding of the description, FIG. 1 shows a block diagram of the GCM by way of example.
이러한 도 1의 블록도에서 '⊙'이 유한체 곱셈 연산을 나타내며, 이러한, 유한체 곱셈 연산은 부가 인증 데이터(A)와 고정된 해시 서브키(H) 간에 이루어짐을 알 수 있다.In the block diagram of FIG. 1, '⊙' indicates a finite-body multiplication operation, and it can be seen that the finite-body multiplication operation is performed between the additional authentication data (A) and the fixed hash subkey (H).
그러나, 이러한 유한체 곱셈 연산은 부가 인증 데이터 A 입력 시마다 128 cycles이 필요한 관계로, SDH(Synchronous Digital Hierarchy)나 OTN(Optional Transport Network)과 같은 연속적인 프레임을 처리해야 하는 네트워크 장비에서는 지연을 발생시켜 서비스 품질에 많은 영향을 줄 수 있는 것이다.However, since this finite-body multiplication operation requires 128 cycles every time additional authentication data A is input, it causes delay in network equipment that has to process continuous frames such as SDH (Synchronous Digital Hierarchy) or OTN (Optional Transport Network). This can have a huge impact on service quality.
이에, 본 발명의 일 실시예에서는, 유한체 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시키기 위한 방안을 제안하고자 하는 것이다.Accordingly, an embodiment of the present invention intends to propose a method for effectively reducing the processing delay caused by the finite field multiplication operation.
이와 관련하여, 도 2에는 본 발명의 일 실시예에 따른 유한체 곱셈 연산 시스템을 예시적으로 보여주고 있다.In this regard, FIG. 2 exemplarily shows a finite field multiplication operation system according to an embodiment of the present invention.
도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 유한체 곱셈 연산 시스템은, 해시 서브키(H)에 관한 유한체(Galois Field) 곱셈 연산 결과를 기록한 메모리 장치(100), 및 부가 인증 데이터(A; 이하, '입력 데이터'라 칭함)와 고정된 해시 서브키(H) 간에 128 비트 유한체 곱셈 연산을 처리하는 FPGA 연산 장치(200)를 포함할 수 있다.As shown in FIG. 2 , the finite-body multiplication operation system according to an embodiment of the present invention includes a
메모리 장치(100)는 해시 서브키(H)에 관한 유한체(Galois Field) 곱셈 연산 결과를 주소 별 데이터 값으로 메모리에 사전 기록하기 위한 장치를 일컫는다.The
이와 관련하여, 도 3에는 본 발명의 일 실시예에 따른 메모리 장치(100)의 구조를 예시적으로 보여주고 있다.In this regard, FIG. 3 exemplarily shows the structure of the
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 메모리 장치(100)는 입력 데이터(A)와 매칭되는 제1 데이터와 해시 서브키(H)와 매칭되는 제2 데이터 간의 유한체 곱셈 연산 결과를 기록한 제1 메모리(110; ROM), 해시 서브키(H)에 따른 제1 메모리(110)의 결과 값을 기록한 제2 메모리(120), 및 해시 서브키(H)에 따른 유한체 곱셈 연산 결과를 룩업 테이블(LUT, Look Up Table) 내 입력 데이터(A)의 비트 값과 매칭되는 주소 별 데이터 값으로 사전 기록한 제3 메모리(130)를 포함할 수 있다.As shown in FIG. 3 , the
이러한 메모리 장치(100) 내 각 구성을 좀 더 구체적으로 살펴보면 다음과 같다.Each configuration in the
제1 메모리(110)에는 입력 데이터(A)의 비트 열이 가지는 각 비트 자리(BIT0~BIT127)가 각 비트(BIT0~BIT127) 별 주소 값(add= 0 to 127)으로 설정되며, 입력 데이터(A)와 매칭되는 제1 데이터와 해시 서브키(H)와 매칭되는 제2 데이터 간의 유한체 곱셈 연산 결과가 각 주소의 데이터 값으로 기록된다.In the
다시 말해, 제1 메모리(110)에는 입력 데이터(A)의 각 비트 자리(BIT0~BIT127) 별로, 제1 데이터에서 동일한 비트 자리의 비트 값을 1로 나머지 비트 자리의 비트 값을 0으로 설정한 비트 열에 대해서 제2 데이터의 각 비트 자리의 비트 값이 1인 경우마다의 비트 열을 유한체 곱셈 연산한 결과가 각 주소의 데이터 값으로 기록된다.In other words, in the
예를 들어, 제1 메모리(110)의 ROM BIT0에는 제1 데이터(A 값에 상응)=”00000000……001" 와 제2 데이터(H 값에 상응)=”00000000……001" 부터 “10000000……000”까지 비트 자리를 쉬프트하면서 수행한 유한체 곱셈 연산 결과를 0번지부터 127번지에 기록할 수 있으며, 이와 같은 방식으로 기록되는 ROM0~ROM127의 데이터 값은 해시 서브키(H) 값과 무관하게 항상 고정된 값을 가진다.For example, in ROM BIT0 of the
제2 메모리(120)에는, 해시 서브키(H)가 생성될 때마다 입력 데이터(A)의 비트 열이 가지는 각 비트 자리(BIT0~BIT127) 별로, 해당 해시 서브키(H)의 비트 열 중 비트 값이 1인 비트 자리가 제1 메모리(110)의 주소 값으로 입력되는 경우에 제1 메모리(110)로부터 출력되는 데이터 값이 기록된다.In the
이때, 제2 메모리(120)에는 입력 데이터(A)의 비트 열이 가지는 각 비트 자리(BIT0~BIT127) 별로, 제1 메모리(110)로부터 출력되는 데이터 값이 2 이상인 경우, 2 이상의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 데이터 값으로 기록될 수 있다.At this time, in the
이에 따라, 제2 메모리(120)의 데이터 값 기록을 위한 의사코드는 예컨대, 다음과 같이 정의될 수 있다.Accordingly, the pseudo code for writing the data value of the
제3 메모리(130)에는, 제2 메모리(120)에 기록된 데이터 값을 참조로 해시 서브키(H)에 관한 유한체 곱셈 연산 결과가 룩업 테이블 내 주소 별 데이터 값으로 사전 기록된다.In the
다시 말해, 제3 메모리(130)에는 입력 데이터(A)의 비트 값이 1씩 증가되는 모든 경우에 대해서, 입력 데이터(A)에서 비트 값이 1이되는 각 비트 자리(BIT0~BIT127)의 데이터 값이 제2 메모리(120)로부터 획득되어 룩업 테이블 내 입력 데이터(A)의 비트 값과 동일한 주소의 데이터 값으로 기록될 수 있다.In other words, in the
이때, 룩업 테이블에는, 입력 데이터(A)에서 비트 값이 1이되는 각 비트 자리가 2 이상인 경우, 2 이상의 비트 자리 각각의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 기록된다.At this time, in the lookup table, when each bit digit at which the bit value becomes 1 in the input data A is 2 or more, the result of XOR operation on all data values of each of the 2 or more bit positions is recorded.
한편, 본 발명의 일 실시예에서는, 유한체(Galois Field) 곱셈 연산의 편의를 입력 데이터(A)의 전체 비트 열을 8비트(BIT0~ BIT7, BIT 8~ BIT15,??, BIT 120~ BIT127)씩 분할하여 그에 따른 주소 값을 가지는 제2 메모리(120)와 제3 메모리(130) 내 룩업 테이블을 구성할 수 있다.On the other hand, in one embodiment of the present invention, the entire bit string of the input data (A) is converted to 8 bits (BIT0 to BIT7, BIT 8 to BIT15,??,
이에 따라 제2 메모리(120)와 제3 메모리(130) 내 룩업 테이블에는 입력 데이터(A)의 전체 비트 열 128비트를 8비트씩 16개 묶음(#0~#15)으로 나눈 형태로 데이터 값이 기록된다.Accordingly, in the lookup table in the
이와 관련하여, 제3 메모리(130) 내 룩업 테이블 상에 입력 데이터(A)의 전체 비트 열 중 하위 첫 번째 8비트(BIT0~ BIT7)의 데이터 값 기록을 위한 의사코드는 예컨대, 다음과 같이 정의될 수 있다.In this regard, the pseudo code for writing the data value of the lower first 8 bits (BIT0 to BIT7) among the entire bit string of the input data A on the lookup table in the
또한, 제3 메모리(130) 내 룩업 테이블 상에 입력 데이터(A)의 전체 비트 열 중 하위 두 번째 8비트(BIT8~ BIT15)의 데이터 값 기록을 위한 의사코드는 예컨대, 다음과 같이 정의될 수 있다.In addition, the pseudo code for writing the data value of the second lower 8 bits (BIT8 to BIT15) among the entire bit string of the input data A on the lookup table in the
그리고, 제3 메모리(130) 내 룩업 테이블 상에 입력 데이터(A)의 전체 비트 열 중 마지막 8비트(BIT120~ BIT127)의 데이터 값 기록을 위한 의사코드는 예컨대, 다음과 같이 정의될 수 있다.In addition, a pseudo code for writing data values of the last 8 bits (BIT120 to BIT127) of the entire bit string of the input data A on the lookup table in the
정리하자면, 본 발명의 일 실시예에 따라 제1 메모리(110)에는 입력 데이터(A)와 매칭되는 제1 데이터와 해시 서브키(H)와 매칭되는 제2 데이터 간의 비트 간 유한체 곱셈 연산 결과가 고정된 값으로 기록되며, 제2 메모리(120)와 제3 메모리(130)에는 해시 서브키(H)가 생성될 때마다 해당 해시 서브키(H)에 상응하는 데이터 값이 룩업 테이블에 차례로 기록되어, 이를 참조로 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과를 도출하기 위해 요구되는 배타적 논리합(XOR) 연산이 빠르게 수행될 수 있는 연산 환경을 마련되고 있는 것이다.In summary, in the
한편, 입력 데이터(A)와 유한체 곱셈 연산이 이루어지는 해시 서브키(H)는 암호 키 K가 생성될 때마다 암호화 블록 모두에 0 값을 입력했을 때 값으로서, 0128을 암호 키 K로 암호화한 결과로 이해될 수 있다.On the other hand, the hash subkey (H), where the input data (A) and the finite-body multiplication operation is performed, is a value when 0 values are input to all encryption blocks whenever the encryption key K is generated, and 0 128 is encrypted with the encryption key K can be understood as a result.
이때 암호 키 K는 2개 이상으로 미리 결정되기 때문에, 본 발명의 일 실시예에서 제안하고 있는 유한체 곱셈 연산의 선 계산 방식에 충분한 시간이 확보될 수 있다.At this time, since the encryption key K is predetermined to be two or more, sufficient time can be secured for the pre-calculation method of the finite field multiplication operation proposed in the embodiment of the present invention.
FPGA 연산 장치(200)는 본 발명의 일 실시예에 따른 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 방식을 FPGA(Field Programmable Gate Array)에 구현하여 적용한 장치를 일컫는다.The FPGA
이러한, FPGA 연산 장치(200)는 고정된 해시 서브키(H)와 임의의 입력 데이터(A) 간의 유한체 곱셈 연산을 위해 해시 서브키(H)에 관한 선 계산 방식을 적용하여 그 결과 값을 메모리에 기록하고, 입력 데이터(A)의 비트 값을 메모리 장치(100)의 주소 값으로 입력하여 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과를 출력할 수 있다.The FPGA
이상 본 발명의 일 실시예에 따른 유한체 곱셈 연산 환경에서는 전술한 구성을 통해 유한체 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시킬 수 있는데, 이하에서는 이를 실현하기 위한 FPGA 연산 장치(200)의 구성을 보다 구체적으로 설명하기로 한다.As described above, in the finite-body multiplication operation environment according to an embodiment of the present invention, the processing delay caused by the finite-body multiplication operation can be effectively reduced through the above-described configuration. The configuration will be described in more detail.
도 4에는 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 개략적인 구성을 보여주고 있다.4 shows a schematic configuration of an
도 4에 도시된 바와 같이, 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)는 입력 데이터(A)의 비트 값을 주소 값으로 입력하는 입력부(210) 및 입력 데이터(A)의 비트 값 입력에 따라 출력되는 데이터 값을 입력 데이터(A)와 해시 서브키(H)와의 유한체 곱셈 연산 결과로 반환하는 반환부(220)를 포함하는 구성을 가질 수 있다.As shown in FIG. 4 , the FPGA
이처럼, 입력부(210), 및 반환부(220)를 포함하는 FPGA 연산 장치(200)의 구성 전체 내지는 적어도 일부는, FPGA(Field Programmable Gate Array) 형태로 구현될 수 있다.As such, all or at least a part of the configuration of the FPGA
이상, 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)는 전술한 구성에 따라 전술한 구성을 통해 유한체 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시킬 수 있는데, 이하에서는 이를 실현하기 위한 FPGA 연산 장치(200) 내 각 구성에 대한 보다 구체적인 설명을 이어 가기로 한다.As described above, the FPGA
한편, 설명에 앞서, 제1 메모리(110)에는 입력 데이터(A)와 매칭되는 제1 데이터와 해시 서브키(H)와 매칭되는 제2 데이터 간의 비트 간 유한체 곱셈 연산 결과가 고정된 값으로 기록된 상태이며, 제2 메모리(120)와 그리고 제3 메모리(130) 내 룩업 테이블에는 해시 서브키(H) 생성에 따라 그에 따른 데이터 값이 사전 기록된 상태임을 전제하기로 한다.Meanwhile, prior to the description, in the
또한, 제3 메모리(130) 내 룩업 테이블에는, 입력 데이터(A)의 전체 비트 열 128비트를 8비트씩 16개 묶음(#0~#15)으로 나눈 형태로 데이터 값이 기록된 상태임을 전제한다.In addition, in the lookup table in the
입력부(210)는 입력 데이터(A)의 비트 값을 주소 값으로 입력하는 기능을 수행한다.The
보다 구체적으로, 입력부(210)는 입력 데이터(A)가 확인되면, 입력 데이터(A)의 비트 값을 해시 서브키(H)에 관한 유한체(Galois) 곱셈 연산 결과가 주소 별 데이터 값으로 사전 기록된 제3 메모리(130) 내 룩업 테이블에 대한 주소 값으로 입력하게 된다.More specifically, when the input data (A) is confirmed, the
이때, 입력부(210)는 입력 데이터의 전체 비트 열을 동일한 길이의 2 이상의 비트 열로 분할하여, 분할된 각 비트 열의 비트 값을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력할 수 있다.In this case, the
예를 들어, 입력 데이터(A)의 전체 비트 열 128비트를 8비트 씩의 비트 열 16 묶음(A[7:0], A[15:8],??, A[127:120])으로 분할하고, 분할된 각 비트 열의 비트 값(0~255)을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력할 수 있는 것이다.For example, 128 bits of the entire bit string of input data (A) is converted into 16 bit strings of 8 bits each (A[7:0], A[15:8],??, A[127:120]). It is possible to divide and input the bit values (0 to 255) of each divided bit string as an address value of a lookup table in the
이는, 본 발명의 일 실시예에 따라 룩업 테이블(30)에 기록된 데이터 값이 룩업 테이블(30)에 입력 데이터(A)의 전체 비트 열 128비트를 8비트씩 16개 묶음(#0~#15)으로 나뉘어진 기록된 형태를 고려하기 위함이다.In this case, according to an embodiment of the present invention, the data value recorded in the lookup table 30 is 16 bundles of 128 bits of the entire bit string of the input data A in the lookup table 30 (#0~# 15) to consider the recorded form.
반환부(220)는 유한체 곱셈 연산 결과를 반환하는 기능을 수행한다.The
보다 구체적으로, 반환부(220)는 입력 데이터(A)의 비트 값 입력에 따라 룩업 테이블(30)로부터 출력되는 데이터 값을 입력 데이터(A)와 해시 서브키(B) 간의 유한체 곱셈 연산 결과로 반환하게 된다.More specifically, the
이때, 반환부(220)는 입력 데이터(A)로부터 분할된 2 이상의 비트 열 각각의 비트 값이 입력된 경우라면, 2 이상의 비트 열 각각의 비트 값 입력에 따라 제3 메모리(130) 내 룩업 테이블로부터 각각 출력되는 데이터 값 모두에 대한 배타적 논리합(XOR) 연산 결과를 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과로 반환할 수 있다.At this time, if the bit values of each of the two or more bit columns divided from the input data A are input, the
예를 들어, 입력 데이터(A)의 전체 비트 열 128비트를 8비트 씩의 비트 열 16 묶음(A[7:0], A[15:8],??, A[127:120])으로 분할하여 분할된 각 비트 열의 비트 값(0~255)을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력한 경우라면, 각 비트 열(A[7:0], A[15:8], …, A[127:120])의 비트 값에 대해 룩업 테이블(30)로부터 출력되는 데이터 값(R0[127:0], R1[127:0], …, R15[127:0]) 모두를 논리합(XOR) 연산한 결과가 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과(W)로서 반환되는 것이다.For example, 128 bits of the entire bit string of input data (A) is converted into 16 bit strings of 8 bits each (A[7:0], A[15:8],??, A[127:120]). If the bit values (0 to 255) of each divided bit string are input as the address value of the lookup table in the
이상에서 살펴본 바와 같이 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 구성에 따르면, FPGA 연산 장치(200)는 고정된 해시 서브키(H)와 임의의 입력 데이터(A) 간의 유한체 곱셈 연산을 위해 해시 서브키(H)에 관한 선 계산 방식을 적용하여 그 결과 값을 메모리에 기록하고, 입력 데이터(A)의 비트 값을 해당 메모리의 주소 값으로 입력하여 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과를 출력할 수 있다. 이렇게 되면, 128비트 유한체 곱셈 연산을 하드웨어로 구현 시 필요한 기존 128 cycles 대비 입력 데이터(A)의 비트 값을 메모리의 주소 값을 메모리의 주소 값으로 입력하는 1 cycles과 메모리로부터 주소 값에 따른 데이터 값이 출력되는 1 cycles 그리고 출력된 데이터 값에 대해 배타적 논리합(XOR) 연산을 수행하여 유한체 곱셈 연산 결과로 반환하는 1 cycles을 포함 도합 3 cycles만으로 유한체 곱셈 연산을 수행하는 것이 가능해지므로 초 저지연의 GCM 연산을 수행할 수 있는 것이다. 나아가, 이처럼 128 비트 유한체 곱셈 연산 기반의 초 저지연의 GCM 연산이 가능해지므로, 양자 암호 QKD와 연동하며 LEA 암호 메시지 인증 기능을 구동할 수 있는 암호화 전송 장비에 탑재될 10Gbps데이터의 저지연 LEA GCM 256bit 인증암호화 운영모드를 효율적으로 구현할 수 있음을 알 수 있다.As described above, according to the configuration of the FPGA
이하에서는, 도 5를 참조하여 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 동작 방법을 설명하기로 한다.Hereinafter, an operation method of the
한편, 설명에 앞서, 제1 메모리(110)에는 입력 데이터(A)와 매칭되는 제1 데이터와 해시 서브키(H)와 매칭되는 제2 데이터 간의 비트 간 유한체 곱셈 연산 결과가 고정된 값으로 기록된 상태이며, 제2 메모리(120)와 그리고 제3 메모리(130) 내 룩업 테이블에는 해시 서브키(H) 생성에 따라 그에 따른 데이터 값이 사전 기록된 상태임을 전제하기로 한다.Meanwhile, prior to the description, in the
또한, 제3 메모리(130) 내 룩업 테이블에는, 입력 데이터(A)의 전체 비트 열 128비트를 8비트씩 16개 묶음(#0~#15)으로 나눈 형태로 데이터 값이 기록된 상태임을 전제한다.In addition, in the lookup table in the
먼저, 입력부(210)는 입력 데이터(A)가 확인되면, 입력 데이터(A)의 비트 값을 해시 서브키(H)에 관한 유한체(Galois) 곱셈 연산 결과가 주소 별 데이터 값으로 사전 기록된 제3 메모리(130) 내 룩업 테이블에 대한 주소 값으로 입력한다(S110-S120).First, when the input data (A) is confirmed, the
이때, 입력부(210)는 입력 데이터의 전체 비트 열을 동일한 길이의 2 이상의 비트 열로 분할하여, 분할된 각 비트 열의 비트 값을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력할 수 있다.In this case, the
예를 들어, 입력 데이터(A)의 전체 비트 열 128비트를 8비트 씩의 비트 열 16 묶음(A[7:0], A[15:8],??, A[127:120])으로 분할하고, 분할된 각 비트 열의 비트 값(0~255)을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력할 수 있는 것이다.For example, 128 bits of the entire bit string of input data (A) is converted into 16 bit strings of 8 bits each (A[7:0], A[15:8],??, A[127:120]). It is possible to divide and input the bit values (0 to 255) of each divided bit string as an address value of a lookup table in the
이는, 본 발명의 일 실시예에 따라 룩업 테이블(30)에 기록된 데이터 값이 룩업 테이블(30)에 입력 데이터(A)의 전체 비트 열 128비트를 8비트씩 16개 묶음(#0~#15)으로 나뉘어진 기록된 형태를 고려하기 위함이다.In this case, according to an embodiment of the present invention, the data value recorded in the lookup table 30 is 16 bundles of 128 bits of the entire bit string of the input data A in the lookup table 30 (#0~# 15) to consider the recorded form.
이후, 반환부(220)는 입력 데이터(A)의 비트 값 입력에 따라 룩업 테이블(30)로부터 출력되는 데이터 값을 입력 데이터(A)와 해시 서브키(B) 간의 유한체 곱셈 연산 결과로 반환한다(S140-S150)Thereafter, the
이때, 반환부(220)는 입력 데이터(A)로부터 분할된 2 이상의 비트 열 각각의 비트 값이 입력된 경우라면, 2 이상의 비트 열 각각의 비트 값 입력에 따라 제3 메모리(130) 내 룩업 테이블로부터 각각 출력되는 데이터 값 모두에 대한 배타적 논리합(XOR) 연산 결과를 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과로 반환할 수 있다.At this time, if the bit values of each of the two or more bit columns divided from the input data A are input, the
예를 들어, 입력 데이터(A)의 전체 비트 열 128비트를 8비트 씩의 비트 열 16 묶음(A[7:0], A[15:8],??, A[127:120])으로 분할하여 분할된 각 비트 열의 비트 값(0~255)을 제3 메모리(130) 내 룩업 테이블의 주소 값으로 입력한 경우라면, 각 비트 열(A[7:0], A[15:8], …, A[127:120])의 비트 값에 대해 룩업 테이블(30)로부터 출력되는 데이터 값(R0[127:0], R1[127:0], …, R15[127:0]) 모두를 논리합(XOR) 연산한 결과가 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과(W)로서 반환되는 것이다.For example, 128 bits of the entire bit string of input data (A) is converted into 16 bit strings of 8 bits each (A[7:0], A[15:8],??, A[127:120]). If the bit values (0 to 255) of each divided bit string are input as the address value of the lookup table in the
이처럼, 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 동작 방법에서는, 입력 데이터(A)의 비트 값을 메모리의 주소 값을 메모리의 주소 값으로 입력하는 1 cycles(S110-S130)과 메모리로부터 주소 값에 따른 데이터 값이 출력되는 1 cycles(S140), 그리고 출력된 데이터 값에 대해 배타적 논리합(XOR) 연산을 수행하여 유한체 곱셈 연산 결과로 반환하는 1 cycles(S140-S150)을 포함 도합 3 cycles만으로 유한체 곱셈 연산을 수행할 수 있는 것이다.As such, in the operating method of the FPGA
이상에서 살펴본 바와 같이 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 동작 방법에 따르면, FPGA 연산 장치(200)는 고정된 해시 서브키(H)와 임의의 입력 데이터(A) 간의 유한체 곱셈 연산을 위해 해시 서브키(H)에 관한 선 계산 방식을 적용하여 그 결과 값을 메모리에 기록하고, 입력 데이터(A)의 비트 값을 해당 메모리의 주소 값으로 입력하여 입력 데이터(A)와 해시 서브키(H) 간의 유한체 곱셈 연산 결과를 출력할 수 있다. 이렇게 되면, 128비트 유한체 곱셈 연산을 하드웨어로 구현 시 필요한 기존 128 cycles 대비 입력 데이터(A)의 비트 값을 메모리의 주소 값을 메모리의 주소 값으로 입력하는 1 cycles과 메모리로부터 주소 값에 따른 데이터 값이 출력되는 1 cycles 그리고 출력된 데이터 값에 대해 배타적 논리합(XOR) 연산을 수행하여 유한체 곱셈 연산 결과로 반환하는 1 cycles을 포함 도합 3 cycles만으로 유한체 곱셈 연산을 수행하는 것이 가능해지므로 초 저지연의 GCM 연산을 수행할 수 있는 것이다. 나아가, 이처럼 128 비트 유한체 곱셈 연산 기반의 초 저지연의 GCM 연산이 가능해지므로, 양자 암호 QKD와 연동하며 LEA 암호 메시지 인증 기능을 구동할 수 있는 암호화 전송 장비에 탑재될 10Gbps데이터의 저지연 LEA GCM 256bit 인증암호화 운영모드를 효율적으로 구현할 수 있음을 알 수 있다.As described above, according to the method of operation of the FPGA
한편, 본 발명의 일 실시예에 따른 FPGA 연산 장치(200)의 동작 방법은, 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Meanwhile, the operating method of the FPGA
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.Although the present invention has been described in detail with reference to preferred embodiments so far, the present invention is not limited to the above-described embodiments, and without departing from the gist of the present invention as claimed in the following claims, the technical field to which the present invention pertains It will be said that the technical idea of the present invention extends to a range where various modifications or modifications can be made by anyone having ordinary knowledge in the present invention.
본 발명에 따른 FPGA 연산 시스템, 메모리 장치 및 FPGA 연산 장치 에 따르면, 유한체(Galois Field) 곱셈 연산으로 인해 발생되는 처리 지연을 효과적으로 감소시킬 수 있다는 점에서, 기존 기술의 한계를 뛰어 넘음에 따라 관련 기술에 대한 이용만이 아닌 적용되는 장치의 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있는 발명이다.According to the FPGA arithmetic system, the memory device, and the FPGA arithmetic device according to the present invention, it is possible to effectively reduce the processing delay caused by the finite field (Galois Field) multiplication operation. It is an invention with industrial applicability because the possibility of marketing or business of the applied device, not just the use of the technology, is sufficient and it can be clearly implemented in reality.
100: 메모리 장치
110: 제1 메모리(ROM)
120: 제2 메모리
130: 제3 메모리(룩업 테이블)
200: FPGA 연산 장치
210: 입력부
220: 반환부100: memory device
110: first memory (ROM)
120: second memory
130: third memory (lookup table)
200: FPGA arithmetic unit
210: input unit 220: return unit
Claims (8)
입력 데이터의 비트 값을 상기 메모리에 대한 주소 값으로 입력하며, 상기 입력 데이터의 비트 값 입력에 따라 상기 메모리로부터 출력되는 데이터 값을 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환하는 FPGA 연산 장치를 포함하는 것을 특징으로 하는 FPGA 연산 시스템.a memory device in which a result of a Galois Field multiplication operation for a hash subkey (H) is recorded in a memory as a data value for each address; and
Inputting a bit value of input data as an address value to the memory, and returning a data value output from the memory according to the bit value input of the input data as a result of a finite-body multiplication operation between the input data and the hash subkey An FPGA computing system comprising an FPGA computing device.
상기 입력 데이터의 각 비트 자리 별로 상기 해시 서브키의 비트 값이 1인 비트 자리를 주소 값으로 상기 제1 메모리로부터 출력되는 데이터 값을 상기 입력 데이터의 각 비트 자리 별 데이터 값으로 기록한 제2 메모리; 및
상기 입력 데이터가 가질 수 있는 모든 비트 값에 대해서 상기 입력 데이터에서 비트 값이 1이되는 각 비트 자리를 주소 값으로 상기 제2 메모리로부터 출력되는 데이터 값을 룩업 테이블(LUT, Look Up Table) 내 상기 입력 데이터의 비트 값과 동일한 주소의 데이터 값으로 기록한 제3 메모리를 포함하는 것을 특징으로 하는 메모리 장치.a first memory for recording, as a data value, a result of a Galois Field multiplication operation between the first data matched with the input data and the second data matched with the hash subkey (H) for each bit digit of the input data;
a second memory in which, for each bit digit of the input data, a bit digit of the hash subkey having a bit value of 1 is an address value, and a data value output from the first memory is recorded as a data value for each bit digit of the input data; and
With respect to all bit values that the input data may have, each bit digit where the bit value becomes 1 in the input data is an address value, and the data value output from the second memory is stored in a lookup table (LUT). and a third memory in which a data value of an address identical to a bit value of the input data is written.
상기 제1 메모리는,
상기 입력 데이터의 각 비트 자리 별로, 상기 제1 데이터에서 동일한 비트 자리의 비트 값을 1로 나머지 비트 자리의 비트 값을 0으로 설정한 비트 열에 대해서 상기 제2 데이터에서 각 비트 자리의 비트 값이 1인 경우마다의 비트 열을 유한체 곱셈 연산한 결과가 각 주소의 데이터 값으로 기록되는 것을 특징으로 하는 메모리 장치.3. The method of claim 2,
The first memory is
For each bit position of the input data, the bit value of each bit position in the second data is 1 for a bit string in which the bit value of the same bit position in the first data is set to 1 and the bit value of the remaining bit positions is set to 0 A memory device, characterized in that a result of a finite-body multiplication operation on a bit string in each case is recorded as a data value of each address.
상기 제2 메모리는,
상기 입력 데이터의 비트 열이 가지는 각 비트 자리 별로, 상기 제1 메모리로부터 출력되는 데이터 값이 2 이상인 경우, 상기 2 이상의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 데이터 값으로 기록되는 것을 특징으로 하는 메모리 장치.3. The method of claim 2,
The second memory,
For each bit position of the bit string of the input data, when the data value output from the first memory is 2 or more, a result of XOR operation on all of the 2 or more data values is recorded as a data value memory device with
상기 제3 메모리는,
상기 입력 데이터에서 비트 값이 1이되는 각 비트 자리가 2 이상인 경우, 상기 2 이상의 비트 자리 각각의 데이터 값 모두를 배타적 논리합(XOR) 연산한 결과가 데이터 값으로 기록되는 것을 특징으로 하는 메모리 장치.3. The method of claim 2,
The third memory is
In the input data, when each bit digit at which a bit value becomes 1 is 2 or more, a result of XOR operation on all data values of each of the 2 or more bit digit is recorded as a data value.
상기 입력 데이터의 비트 값 입력에 따라 상기 룩업 테이블로부터 출력되는 데이터 값을 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환하는 반환부를 포함하는 것을 특징으로 하는 FPGA 연산 장치.an input unit for inputting a bit value of input data as an address value with respect to a look-up table (LUT) in which a Galois Field multiplication operation result for a hash sub-key (H) is pre-recorded as a data value for each address; and
and a return unit for returning a data value output from the lookup table as a result of a finite-body multiplication operation between the input data and the hash subkey according to the bit value input of the input data.
상기 입력부는,
상기 입력 데이터의 전체 비트 열을 동일한 길이의 2 이상의 비트 열로 분할하며, 상기 2 이상의 비트 열 각각의 비트 값을 상기 룩업 테이블의 주소 값으로 입력하는 것을 특징으로 하는 FPGA 연산 장치.7. The method of claim 6,
The input unit,
The entire bit string of the input data is divided into two or more bit strings of the same length, and a bit value of each of the two or more bit strings is input as an address value of the lookup table.
상기 반환부는,
상기 2 이상의 비트 열 각각의 비트 값 입력에 따라 상기 룩업 테이블로부터 각각 출력되는 데이터 값 모두에 대한 배타적 논리합(XOR) 연산 결과를 상기 입력 데이터와 상기 해시 서브키 간의 유한체 곱셈 연산 결과로 반환하는 것을 특징으로 하는 FPGA 연산 장치.8. The method of claim 7,
The return unit,
Returning an exclusive-OR (XOR) operation result on all data values output from the lookup table according to the bit value input of each of the two or more bit columns as a finite-body multiplication operation result between the input data and the hash subkey FPGA computing device characterized by.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210035970A KR20220131002A (en) | 2021-03-19 | 2021-03-19 | Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210035970A KR20220131002A (en) | 2021-03-19 | 2021-03-19 | Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220131002A true KR20220131002A (en) | 2022-09-27 |
Family
ID=83452010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210035970A KR20220131002A (en) | 2021-03-19 | 2021-03-19 | Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20220131002A (en) |
-
2021
- 2021-03-19 KR KR1020210035970A patent/KR20220131002A/en unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210273796A1 (en) | Method and system for many-to-many symmetric cryptography and a network employing the same | |
US8356177B2 (en) | Key transport in authentication or cryptography | |
US11546135B2 (en) | Key sequence generation for cryptographic operations | |
US7978851B2 (en) | Keystream encryption device, method, and program | |
US8358781B2 (en) | Nonlinear feedback mode for block ciphers | |
JP6740902B2 (en) | Authentication encryption method, authentication decryption method, and information processing apparatus | |
US11153068B2 (en) | Encryption device, encryption method, decryption device and decryption method | |
US20080232591A1 (en) | Simple and efficient one-pass authenticated encryption scheme | |
US9565018B2 (en) | Protecting cryptographic operations using conjugacy class functions | |
WO2016067524A1 (en) | Authenticated encryption apparatus, authenticated decryption apparatus, authenticated cryptography system, authenticated encryption method, and program | |
Elgeldawi et al. | A comparative analysis of symmetric algorithms in cloud computing: a survey | |
JP7367860B2 (en) | Authentication encryption device, authentication decryption device, authentication encryption system, method and program | |
US20230403134A1 (en) | Method for processing encrypted data | |
Sivakumar et al. | An Effective Data Security Mechanism for Secured Data Communications Using Hybrid Cryptographic Technique and Quantum Key Distribution | |
Singh et al. | Study & analysis of cryptography algorithms: RSA, AES, DES, T-DES, blowfish | |
KR20220131002A (en) | Arithmethic system based on field programmable gate array, memory apparatus, and arithmethic apparatus based on field programmable gate array | |
Mancillas-López et al. | An Ultra-Fast Authenticated Encryption Scheme with Associated Data Using AES-OTR | |
Silva-Garcia et al. | The triple-DES-96 cryptographic system | |
Partheeban et al. | Generation of dynamic S-BOX using irreduceable polynomial and the secret key used | |
KR102626974B1 (en) | Method and system for protecting secret key of white box cryptography | |
Kouchay | ENHANCING CLOUD DATA SECURITY USING HYBRID OF UPDATED RSA AND TWOFISH ALGORITHMS. | |
Haunts et al. | Symmetric Encryption | |
Singh et al. | Parallel Chunk Encryption in Public Cloud Storage: Validating Data Privacy | |
Ertaul et al. | Performance comparison of AES-CCM and AES-GCM authenticated encryption modes | |
Kumar et al. | Analysis of Hybrid Cryptography for Secure Exchange of Information |