WO2020027386A1 - 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법 - Google Patents

전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법 Download PDF

Info

Publication number
WO2020027386A1
WO2020027386A1 PCT/KR2018/014683 KR2018014683W WO2020027386A1 WO 2020027386 A1 WO2020027386 A1 WO 2020027386A1 KR 2018014683 W KR2018014683 W KR 2018014683W WO 2020027386 A1 WO2020027386 A1 WO 2020027386A1
Authority
WO
WIPO (PCT)
Prior art keywords
matrix
transpose
multiplication
block
vector
Prior art date
Application number
PCT/KR2018/014683
Other languages
English (en)
French (fr)
Inventor
김호원
박태환
Original Assignee
부산대학교 산학협력단
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 부산대학교 산학협력단 filed Critical 부산대학교 산학협력단
Publication of WO2020027386A1 publication Critical patent/WO2020027386A1/ko

Links

Images

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/06Cryptographic 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
    • 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
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Definitions

  • the following description relates to a method for optimizing a large capacity encryption matrix operation in a power device environment, and more particularly, to a technique for performing matrix multiplication and vector addition using a transpose matrix.
  • the present invention provides a method for processing a large capacity encryption matrix operation optimization in a power device environment in which matrix multiplication and vector addition are performed in parallel using a transpose matrix.
  • the present invention provides a method for processing large-capacity cryptographic matrix operations optimization in a power device environment that efficiently performs matrix multiplication and vector addition for lattice-based cryptography based on the LWE problem.
  • identifying a first matrix and a second matrix multiplied with the first matrix Determining a transpose matrix of the second matrix based on vector interleave; Performing a multiplication operation between the first matrix and the transpose matrix of the second matrix, and performing an addition operation on the result of the multiplication operation and the third matrix.
  • Determining a transpose matrix of the second matrix based on the vector interleave comprises: row index of the second matrix set to BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE and row index of the second matrix set to BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE. Calculating a column index; After calculating the index of the second matrix, repeating matrix loading and vector interleaving between registers for each BLOCK_TRANSPOSE until the transpose of the second matrix is determined. It may be an optimization processing method.
  • the BLOCK_TRANSPOSE may be a matrix operation optimization processing method determined according to the size of the register and the size of the second matrix.
  • the vector interleave may be a matrix operation optimization processing method indicating an exchange between data of a plurality of registers in each instruction.
  • N may represent a row of the second matrix
  • L may be a matrix arithmetic optimization processing method representing a column of the second matrix
  • the method may further include storing an array of the transposed second matrix in the register.
  • the first matrix column and the second matrix without using the transpose matrix of the second matrix by the vector interleave. It may be a matrix operation optimization processing method further comprising the step of performing multiplication between rows of.
  • the matrix operation optimization processing apparatus includes a processor, the processor being multiplied with a first matrix and the first matrix when processing matrix multiplication and matrix addition. Identify a second matrix, determine a transpose matrix of the second matrix based on a vector interleave, perform a multiplication operation between the first matrix and the transpose matrix of the second matrix, and A matrix operation optimization processing device that performs an addition operation on the result and the third matrix.
  • the processor when determining the transpose matrix of the second matrix based on the vector interleaving, the row index of the second matrix set to BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE and the second set to BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE After calculating the column index of the matrix and calculating the index of the second matrix, for each BLOCK_TRANSPOSE, the data loading to the register and the register until the transpose matrix of the second matrix is determined. It may be a matrix operation optimization processing apparatus for repeating the vector interleave of the.
  • the BLOCK_TRANSPOSE may be a matrix operation optimization processing device that is determined according to the size of the register and the size of each element of the second matrix.
  • the vector interleave may be a matrix arithmetic optimization processing device that indicates an exchange between data of a plurality of registers in each instruction.
  • N may represent a row of the second matrix
  • L may be a matrix arithmetic optimization processing device that represents a column of the second matrix.
  • the processor may be a matrix arithmetic optimization processing apparatus that stores an array of the transposed second matrix in the register after the transpose of the second matrix is determined for each BLOCK_TRANSPOSE.
  • the processor is further configured to perform a multiplication operation between the first matrix and the transpose matrix of the second matrix, and when performing an addition operation on the result of the multiplication operation and the third matrix, the first matrix and the second matrix. And performing matrix multiplication between the first matrix and the transpose of the second matrix by loading data of the register, and adding a result of the multiplication operation and the third matrix according to each matrix index. It may be a processing device.
  • the processor is further configured to, when the column of the first matrix and the row of the second matrix are located outside the lane size of a register, use the first matrix column without using the transpose matrix of the second matrix by the vector interleave. It may be a matrix operation optimization apparatus for performing multiplication between the rows of the second matrix.
  • the large-capacity encryption matrix computation optimization method may perform matrix multiplication and vector addition in parallel using a transpose matrix.
  • a large capacity encryption matrix operation optimization processing method in a power device environment can efficiently perform matrix multiplication and vector addition for lattice-based encryption based on the LWE problem.
  • FIG. 1 is a diagram illustrating a matrix operation optimization apparatus for performing matrix multiplication and vector addition using a transpose matrix, according to an exemplary embodiment.
  • 2A is a diagram illustrating a process of performing matrix multiplication and vector addition according to an embodiment.
  • 2B is a diagram illustrating a process of performing matrix multiplication and vector addition by using a transpose matrix of a second matrix, according to an exemplary embodiment.
  • FIG. 3 is a diagram illustrating Algorithm 1 in which the matrix operation optimization processing apparatus determines a transpose matrix for matrix multiplication, according to an exemplary embodiment.
  • FIG. 4 is a diagram illustrating Algorithm 2 in which the matrix operation optimization apparatus performs efficient matrix multiplication and accumulation according to an embodiment.
  • FIG. 5 is a diagram illustrating Algorithm 3 in which the matrix operation optimization processing apparatus performs efficient transpose matrix, matrix multiplication, and accumulation for LWE, according to an embodiment.
  • FIG. 6 is a diagram illustrating a process of performing a data load according to an embodiment.
  • FIG. 7 is a diagram illustrating a process of performing a data store according to an embodiment.
  • FIG. 8 is a diagram illustrating a process of extracting lanes from a vector to a register according to an embodiment.
  • FIG. 9 is a diagram illustrating a process of performing a lane broadcast according to an embodiment.
  • FIG. 10 illustrates a process of performing a vector interleave according to an embodiment.
  • FIG. 11 is a diagram illustrating a calculation method performed by the matrix operation optimization processing apparatus according to an embodiment.
  • the matrix operation optimization processing apparatus 100 may include a processor 110 as shown in FIG. 1.
  • the processor 110 may perform operations such as matrix multiplication and vector addition using the transpose matrix.
  • the matrix operation optimization processing apparatus 100 is used for key generation, encryption, and decryption for Lattice-based cryptography based on the Learning with Errors problem. Matrix multiplication and vector addition can be performed at an optimized rate.
  • the equal random distribution means a distribution in which the probability of selecting each number is equal when the random number is selected in Zq.
  • ai denotes each component of the vector a
  • zi denotes each component of the vector z
  • ei denotes each component of the error value vector e. ai, zi and ei are all elements of Zq.
  • the key to troubleshooting LWE is to learn the secret value vector x by removing the included error value vector e.
  • the probability of error in the authentication result becomes very high, so a minimum upper limit value E that guarantees confidentiality of x can be selected.
  • the LWE problem can be used as an assumption for post-quantum cryptography based lattice.
  • errors can be used during encryption, decryption procedures, and generated by any sampler, such as a Gaussian sampler.
  • sampler such as a Gaussian sampler.
  • matrix multiplication between matrix A, which is the first matrix, and secret matrix S, which is the second matrix may be performed, followed by error and vector addition.
  • lattice-based cryptographic algorithms are based on the LWE problem for providing secrets to quantum computing environments and can provide efficient realization.
  • the processor 110 may perform matrix multiplication between the first matrix and the second matrix, and perform vector addition between the result of the matrix multiplication and the third matrix.
  • a transpose matrix of the second matrix may be determined using vector interleave, and an optimized operation may be performed using the transpose matrix.
  • FIG. 2A is a diagram illustrating a process of performing matrix multiplication and vector addition according to an embodiment.
  • matrix A may represent a first matrix
  • matrix S may represent a second matrix
  • matrix E may represent a third matrix.
  • matrix multiplication and vector addition may be performed using SIMD.
  • Matrix A as the first matrix And matrix S, which is the second matrix And matrix E, the third matrix Is as described in FIG. 2A.
  • the result of the matrix multiplication and the vector addition of the matrix E may take a long time to calculate.
  • 2B is a diagram illustrating a process of performing matrix multiplication and vector addition by using a transpose matrix of a second matrix, according to an exemplary embodiment.
  • Key generation, decryption, and encoding used in the lattice-based cryptographic algorithm may be performed at an optimal speed through a process as shown in FIG. 2B.
  • matrix multiplication and vector addition of the region 220 except for the last column 210 of the first matrix and the region 240 except for the last column 230 of the second matrix may be calculated using SIMD. Can be.
  • the transpose matrix of the second matrix used for the calculation may be determined using Algorithm 1 described with reference to FIG. 3 below.
  • the last column 210 of the first matrix and the last column 230 of the second matrix may be located outside of the lane size matrix.
  • the calculation of the last column 210 of the first matrix and the last column 230 of the second matrix may be performed by a conventional method.
  • the size of N is 513, which is 1 greater than 512, which is a multiple of 2.
  • the data for the high speed parallelization register used in the matrix operation optimization processing unit is unit 16 * 8_t (16-bit * 8)
  • the elements located in the 513th column of the first matrix and the second matrix are the high speed parallelization registers.
  • the column can be processed by the conventional C method (general matrix operation method).
  • the areas corresponding to 220 and 240 of the first matrix and the second matrix can be processed in parallel with high speed, but the areas corresponding to 210 and 230 of the first matrix and the second matrix are conventional C methods (the general matrix operation method). Can be processed based on.
  • FIG. 3 is a diagram illustrating Algorithm 1 in which a matrix operation optimization processing apparatus determines a transpose matrix for matrix multiplication according to an embodiment.
  • Algorithm 1 shown in FIG. 3 describes a process of determining a transpose matrix of a matrix for efficient matrix multiplication.
  • the row index of the matrix may be set to BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE
  • the column index of the matrix may be set to BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE .
  • vector interleave between registers and data load in registers may be repeatedly performed until a transpose matrix is performed for each BLOCK_TRANSPOSE from line 7 to line 56.
  • each element data of the matrix has 16-bit site data.
  • BLOCK_TRANSPOSE may be 8.
  • the register data can be stored in the transpose matrix array.
  • FIG. 4 is a diagram illustrating Algorithm 2 in which the matrix operation optimization apparatus performs efficient matrix multiply and accumulation, according to an embodiment.
  • the matrix operation optimization processing apparatus may perform the process presented in Algorithm 2 after the transpose matrix is determined.
  • LANE_SHORT_NUM presented in Algorithm 2 may represent the same value as BLOCK_TRANSPOSE shown in Algorithm 1 of FIG. 3.
  • Line 3 in Algorithm 2 describes setting the register sum_vect value to 16-bit data 0 using the unique value for lane broadcasting (vdupq) as the same value.
  • the matrix operation optimization processor may load the data of the matrix A and the matrix S from the line 4 to the line 7 into the register according to each matrix index. Then, the matrix operation optimization processing unit may multiply and accumulate registers for matrix multiplication and vector addition within N / LANES_SHORT_NUM .
  • the matrix operation optimization processing apparatus stores the register values in an array (16-bit data, array size: 8) in line 8 and line 9 and accumulates each value with matrix E according to the matrix index.
  • the matrix operation optimization processor then stores the vector in a register, accumulates element values in the register, and stores the result in matrix E according to the matrix E index.
  • the matrix operation optimization processing unit may calculate matrix multiplication and vector addition between matrix elements located outside the matrix size% NEON register lane size from line 10 to line 12.
  • matrix multiplication and vector addition can be calculated using NEON, and if there is a matrix element located outside the NEON register lane size, a general matrix multiplication and vector addition operation can be performed.
  • general matrix multiplication and vector addition mean multiplication between elements of each matrix, and mean a general matrix calculation method, and may be implemented by the C language.
  • FIG. 5 is a diagram illustrating Algorithm 3 in which the matrix operation optimization processing apparatus performs efficient transpose matrix, matrix multiplication, and accumulation for LWE, according to an embodiment.
  • the matrix arithmetic optimization processing apparatus may perform algorithm 1 for sequentially executing algorithm 1 for determining a transpose matrix and algorithm 2 for performing matrix multiplication and vector addition. Accordingly, the matrix arithmetic optimization processing unit can perform efficient transpose matrices, matrix multiplication and vector addition for LWE problems in lattice-based cryptography such as Algorithm 3.
  • FIG. 6 is a diagram illustrating a process of performing a data load according to an embodiment.
  • NEON represents an advanced SIMD (Single Instruction Multiple Data) extension for the ARM Cortex-A series and Cortex-R52 processors.
  • NEON supports 128-bit size Q registers (Q0 to Q15), and the Q register can be written with 4 32-bit size data, 8 16-bit size data, and 16 8-bit size data, Each Q register can be separated into two D registers (64-bit size), as shown in Table 2 below.
  • the SIMD is a type of parallel processor, and a plurality of SIMDs can be simultaneously calculated with one instruction.
  • NEON an ARM Advanced Single Instruction Multiple Data (ARM SIMD) extension, can represent a 64- / 128-bit complex SIMD architecture developed by ARM to improve the performance of multimedia and signal processing applications.
  • ARM SIMD ARM Advanced Single Instruction Multiple Data
  • Load can load data.
  • the Load function may load 128-bit data from a data array.
  • the Load function can load 128-bit data from a 16-bit data array of size 16
  • the Load function can load 128-bit data from a 16-bit data array of size 8
  • the Load function can load 128-bit data from a 32-bit data array of size 4.
  • Figure 6 shows an example of loading 128-bit data from a 16-bit * 8 size data array. Specifically, FIG. 6 shows loading 16-bit data from 8 lanes (0 lane, 1 lane, 2 lane, ⁇ 7 lane) of 8 sizes.
  • the matrix arithmetic optimization processing apparatus may load 16 lane bits of data by using a load function.
  • FIG. 7 is a diagram illustrating a process of performing a data store according to an embodiment.
  • a store can store data.
  • the Store function may store 128-bit data in a data array.
  • the Store function can store 128-bit data in a 16-bit data array of size 16 and the Store function can store 128-bit data in a 16-bit data array of size 8,
  • the Store function can store 128-bit data in a 32-bit data array of size 4.
  • FIG. 7 shows an example of storing 128-bit data in a 16-bit * 8 size data array. Specifically, FIG. 7 illustrates storing 16-bit data in 8 lanes (0 lanes, 1 lanes, 2 lanes, ⁇ 7 lanes) of 8 sizes.
  • the matrix operation optimization apparatus may store 16-bit data in three lanes using a store function.
  • FIG. 8 is a diagram illustrating a process of extracting lanes from a vector to a register according to an embodiment.
  • Extracting lane from a vector to a register can extract data according to lane number.
  • FIG. 7 shows an example of extracting lane number 2 from an unsigned short 16-bit size data register r from vector a having a 16-bit & 8 size. Extracting lanes from a vector to a register can extract 8 / 16-32-bit data as an example from a vector. Extracting lanes from a vector to a register can be used to accumulate and store data into registers during the matrix multiplication procedure.
  • FIG. 9 is a diagram illustrating a process of performing a lane broadcast according to an embodiment.
  • lane broadcast can set all lane data in a vector to the same value. For example, as shown in FIG. 9, lane broadcast may set all lane data of a vector to zero. Lane Broadcast can be used to initialize the cumulative vector to zero during the matrix multiplication procedure.
  • FIG. 10 illustrates a process of performing a vector interleave according to an embodiment.
  • Vector Interleave can support vector interleave between multiple registers. After vector interleaving, the result can be stored in a register array.
  • the transpose matrix of the matrix is obtained by the exchange between elements of the matrix, but when using Vector Interleave, the transpose matrix may be obtained by exchanging 128-bit size data in each instruction. .
  • FIG. 11 is a diagram illustrating a calculation method performed by the matrix operation optimization processing apparatus according to an embodiment.
  • the matrix operation optimization apparatus may identify the first matrix and the second matrix multiplied by the first matrix.
  • the matrix operation optimization processing apparatus may determine a transpose matrix of the second matrix based on the vector interleave.
  • the matrix operation optimization apparatus calculates a row index of the second matrix set to BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE and a column index of the second matrix set to BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE, and calculates the second index.
  • the transpose matrix of the second matrix may be determined by repeating the data loading and the vector interleaving between registers until the transpose matrix of the second matrix is determined for each BLOCK_TRANSPOSE.
  • BLOCK_TRANSPOSE is determined according to the size of the register and the size of the second matrix, and the vector interleave may represent an exchange between data of a plurality of registers in each instruction.
  • the matrix operation optimization apparatus may perform a multiplication operation between the first matrix and the transpose matrix of the second matrix, and perform an addition operation on the result of the multiplication operation and the third matrix.
  • the matrix operation optimization processing apparatus loads data of the first matrix, the second matrix, and the register to perform a multiplication operation between the first matrix and the transpose matrix of the second matrix, and according to each matrix index, By multiplying a matrix, multiplication and addition can be performed.
  • the matrix arithmetic optimization processing apparatus does not use the first matrix column and the first matrix without using the transpose matrix of the second matrix by vector interleaving. You can perform multiplication between rows of two matrices.
  • the matrix operation optimization processing apparatus may provide a speed optimized for a large encryption matrix operation in a power device environment.
  • the results of these experiments can be found below.
  • the Lizard.CCA key generation using the method proposed in the present invention is improved to 7.04%, 3.66%, 7.57%, 9.32%, respectively, as shown in Table 5 below. You can see that.
  • the method according to the present invention can be implemented as a program that can be executed in a computer and can be implemented in various recording media such as a magnetic storage medium, an optical reading medium, and a digital storage medium.
  • Implementations of the various techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Implementations may be implemented for processing by, or to control the operation of, a data processing device, eg, a programmable processor, a computer, or multiple computers, a computer program product, ie an information carrier, for example a machine readable storage. It may be implemented as a device (computer readable medium) or as a computer program tangibly embodied in a radio signal.
  • Computer programs, such as the computer program (s) described above may be written in any form of programming language, including compiled or interpreted languages, and may be written as standalone programs or in modules, components, subroutines, or computing environments. It can be deployed in any form, including as other units suitable for use.
  • the computer program can be deployed to be processed on one computer or multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
  • processors suitable for the processing of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
  • a processor will receive instructions and data from a read only memory or a random access memory or both.
  • Elements of a computer may include at least one processor that executes instructions and one or more memory devices that store instructions and data.
  • a computer may include one or more mass storage devices for storing data, such as magnetic, magneto-optical disks, or optical disks, or receive data from or send data to them or both. It may be combined to be.
  • Information carriers suitable for embodying computer program instructions and data include, for example, semiconductor memory devices, for example, magnetic media such as hard disks, floppy disks, and magnetic tape, compact disk read only memory. ), Optical media such as DVD (Digital Video Disk), magneto-optical media such as floppy disk, ROM (Read Only Memory), RAM , Random Access Memory, Flash Memory, Erasable Programmable ROM (EPROM), Electrically Erasable Programmable ROM (EEPROM), and the like.
  • the processor and memory may be supplemented by or included by special purpose logic circuitry.
  • the computer readable medium may be any available medium that can be accessed by a computer, and may include both computer storage media and transmission media.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 병렬적으로 수행함으로써 대용량 암호화 행렬 연산 최적화 처리하는 방법을 제공할 수 있다. 구체적으로, 행렬 연산 최적화 처리 방법은 제1 행렬 및 상기 제1 행렬과 곱셈 연산되는 제2 행렬을 식별하는 단계; 벡터 인터리브(vector interleave)에 기초하여 상기 제2 행렬의 전치 행렬을 결정하는 단계; 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 단계를 포함할 수 있다.

Description

전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법
아래의 설명은 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법에 관한 것으로, 보다 구체적으로는 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 수행하는 기술에 관한 것이다.
양자 계산 기술의 발달에 따라, 기존의 존재하는 암호화 방식은 안전성은 위협을 받고 있어, 기존과 다른 새로운 양자 암호 알고리즘이 적용된 다양한 방법이 제안되고 있다. 이와 같은, 새로운 양자 암호 알고리즘의 일례로 LWE 문제(Learning with Errors problems)에 기초하는 래티스-기반 암호화(Lattice-based cryptography)가 있다. 다만, LWE 문제에 기초하는 래티스-기반 암호화의 경우 키 생성(key generation), 부호화(encryption) 및 복호화(decryption)와 같은 대용량 행렬 연산될 때, 많은 시간이 소비되는 문제가 있었다. 따라서, 대용량 행렬 연산에서도 최적화된 속도를 제공하는 효율적인 행렬 연산 최적화 처리 방법이 필요하다.
본 발명은 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 병렬적으로 수행하는 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법을 제공한다.
본 발명은 LWE 문제에 기초하는 래티스-기반 암호를 위한 행렬 곱셈 및 벡터 덧셈을 효율적으로 수행하는 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법을 제공한다.
일 측면에 따르면, 제1 행렬 및 상기 제1 행렬과 곱셈 연산되는 제2 행렬을 식별하는 단계; 벡터 인터리브(vector interleave)에 기초하여 상기 제2 행렬의 전치 행렬을 결정하는 단계; 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 단계를 포함하는 행렬 연산 최적화 처리 방법일 수 있다.
상기 벡터 인터리브에 기초하여 상기 제2 행렬의 전치 행렬을 결정하는 단계는, BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 행 인덱스(row index)와 BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 열 인덱스(column index)를 계산하는 단계; 상기 제2 행렬의 인덱스를 계산한 이후, 각각의 BLOCK_TRANSPOSE마다 상기 제2 행렬의 전치 행렬이 결정될 때까지, 레지스터(register)에 대한 데이터 로딩과 상기 레지스터 간의 벡터 인터리브를 반복하는 단계를 포함하는 행렬 연산 최적화 처리 방법일 수 있다.
상기 BLOCK_TRANSPOSE는, 상기 레지스터의 사이즈 및 상기 제2 행렬의 사이즈에 따라 결정되는 행렬 연산 최적화 처리 방법일 수 있다.
상기 벡터 인터리브는, 각각의 명령어(instruction)에서 복수의 레지스터의 데이터 간 교환(exchange)을 나타내는 행렬 연산 최적화 처리 방법일 수 있다.
상기 N은, 상기 제2 행렬의 행을 나타내며, 상기 L은, 상기 제2 행렬의 열을 나타내는 행렬 연산 최적화 처리 방법일 수 있다.
상기 각각의 BLOCK_TRANSPOSE 마다 상기 제2 행렬의 전치 행렬이 결정된 이후, 전치된 상기 제2 행렬의 어레이(array)를 상기 레지스터에 저장하는 단계를 더 포함하는 행렬 연산 최적화 처리 방법일 수 있다.
상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 단계는, 상기 제1 행렬, 상기 제2 행렬 및 상기 레지스터의 데이터를 로딩하여 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 각각의 행렬 인덱스에 따라 상기 곱셈 연산의 결과와 상기 제3 행렬을 덧셈 연산하는 단계를 포함하는 행렬 연산 최적화 처리 방법일 수 있다.
상기 제1 행렬의 열과 상기 제2 행렬의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 상기 벡터 인터리브에 의한 상기 제2 행렬의 전치 행렬을 이용하지 않고 상기 제1 행렬 열과 상기 제2 행렬의 행 간의 곱셈이 수행되는 단계를 더 포함하는 행렬 연산 최적화 처리 방법일 수 있다.
일 측면에 따르면, 행렬 연산 최적화 처리 장치에 있어서, 상기 행렬 연산 최적화 처리 장치는 프로세서를 포함하고, 상기 프로세서는, 행렬 곱셈 및 행렬 덧셈을 처리할 때 제1 행렬 및 상기 제1 행렬과 곱셈 연산되는 제2 행렬을 식별하고, 벡터 인터리브(vector interleave)에 기초하여 상기 제2 행렬의 전치 행렬을 결정하고, 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 행렬 연산 최적화 처리 장치일 수 있다.
상기 프로세서는, 상기 벡터 인터리브에 기초하여 상기 제2 행렬의 전치 행렬을 결정할 때, BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 행 인덱스(row index)와 BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 열 인덱스(column index)를 계산하고, 상기 제2 행렬의 인덱스를 계산한 이후, 각각의 BLOCK_TRANSPOSE마다 상기 제2 행렬의 전치 행렬이 결정될 때까지, 레지스터(register)에 대한 데이터 로딩과 상기 레지스터 간의 벡터 인터리브를 반복하는 행렬 연산 최적화 처리 장치일 수 있다.
상기 BLOCK_TRANSPOSE는, 상기 레지스터의 사이즈 및 상기 제2 행렬의 각각의 엘리먼트(element)의 사이즈에 따라 결정되는 행렬 연산 최적화 처리 장치일 수 있다.
상기 벡터 인터리브는, 각각의 명령어(instruction)에서 복수의 레지스터의 데이터 간 교환(exchange)을 나타내는 행렬 연산 최적화 처리 장치일 수 있다.
상기 N은, 상기 제2 행렬의 행을 나타내며, 상기 L은, 상기 제2 행렬의 열을 나타내는 행렬 연산 최적화 처리 장치일 수 있다.
상기 프로세서는, 상기 각각의 BLOCK_TRANSPOSE 마다 상기 제2 행렬의 전치 행렬이 결정된 이후, 전치된 상기 제2 행렬의 어레이(array)를 상기 레지스터에 저장하는 행렬 연산 최적화 처리 장치일 수 있다.
상기 프로세서는, 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행할 때, 상기 제1 행렬, 상기 제2 행렬 및 상기 레지스터의 데이터를 로딩하여 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 각각의 행렬 인덱스에 따라 상기 곱셈 연산의 결과와 상기 제3 행렬을 덧셈 연산하는 행렬 연산 최적화 처리 장치일 수 있다.
상기 프로세서는, 상기 제1 행렬의 열과 상기 제2 행렬의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 상기 벡터 인터리브에 의한 상기 제2 행렬의 전치 행렬을 이용하지 않고 상기 제1 행렬 열과 상기 제2 행렬의 행 간의 곱셈을 수행하는 행렬 연산 최적화 처리 장치일 수 있다.
본 발명의 일 실시예에 의하면, 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법은 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 병렬적으로 수행할 수 있다.
본 발명의 일 실시예에 의하면, 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법은 LWE 문제에 기초하는 래티스-기반 암호를 위한 행렬 곱셈 및 벡터 덧셈을 효율적으로 수행할 수 있다.
도 1은 일 실시예에 따른, 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 수행하는 행렬 연산 최적화 처리 장치를 나타낸 도면이다.
도 2a는 일 실시예에 따른, 행렬 곱셈 및 벡터 덧셈이 수행되는 과정을 나타낸 도면이다.
도 2b는 일 실시예에 따른, 제2 행렬의 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈이 수행되는 과정을 나타낸 도면이다.
도 3은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 행렬 곱셈을 위한 전치 행렬을 결정하는 알고리즘 1을 나타낸 도면이다.
도 4은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 효율적인 행렬 곱셈 및 누적을 수행하는 알고리즘 2를 나타낸 도면이다.
도 5는 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 LWE를 위해 효율적인 전치 행렬, 행렬 곱셈 및 누적을 수행하는 알고리즘 3을 나타낸 도면이다.
도 6은 일 실시예에 따른, 데이터 로드(Data Load)가 수행되는 과정을 나타낸 도면이다.
도 7은 일 실시예에 따른, 데이터 저장(Data Store)이 수행되는 과정을 나타낸 도면이다.
도 8은 일 실시예에 따른, Extracting lane from a vector to a register이 수행되는 과정을 나타낸 도면이다.
도 9는 일 실시예에 따른, Lane Broadcast가 수행되는 과정을 나타낸 도면이다.
도 10는 일 실시예에 따른, Vector Interleave가 수행되는 과정을 나타낸 도면이다.
도 11은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 수행하는 연산 방법을 나타낸 도면이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 일 실시예에 따른, 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 수행하는 행렬 연산 최적화 처리 장치를 나타낸 도면이다. 행렬 연산 최적화 처리 장치(100)는 도 1에 도시된 바와 같이 프로세서(110)를 포함할 수 있다. 프로세서(110)는 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈과 같은 연산을 수행할 수 있다.
행렬 연산 최적화 처리 장치(100)은 LWE 문제(Learning with Errors problem)에 기반하여 래티스-기반 암호(Lattice-based cryptography)를 위한 키 생성(key generation), 부호화(encryption), 복호화(decryption)에 이용되는 행렬 곱셈 및 벡터 덧셈(matrix multiplication and vector addition)을 최적화된 속도로 수행할 수 있다.
여기서, LWE 문제에 대해 간략히 설명하면 다음과 같다. 집합 Zq(q는 소수(prime number)이고, Zq = {1, 2, …, q})의 확률 분포 D가 있다고 하자. 여기서 확률 분포 D는 Zq에서 임의의 수를 선택할 때 각 수가 선택될 확률의 분포를 의미한다. LWE 문제에 의하면, Zq에서 선택한 에러 값이 정수
Figure PCTKR2018014683-appb-img-000001
이상일 확률은 η이며 정당한 파라미터 값으로 설정하였다는 가정 하에 η은 매우 작은(negligible) 값이되어, LWE 문제를 풀기는 매우 어려운 바, 이러한 사실에 기반하여 LWE 문제의 내용은 다음과 같다.
LWE 문제를 해결한다 함은 Zq의 원소로 구성되어 있는 비밀 값의 n차 벡터
Figure PCTKR2018014683-appb-img-000002
, 임의의 n차 벡터
Figure PCTKR2018014683-appb-img-000003
에 대하여 (a, z)의 독립적인 샘플들 (a1, z1), (a2, z2), …, (an, zn)이 주어졌을 때[단, zi = <a,x> + ei (i는 1 ~ n인 자연수)이며, <a,x>는 벡터 a와 벡터 x의 내적(inner product)을 의미하며, (a, z)는
Figure PCTKR2018014683-appb-img-000004
에 속함], 각 샘플 (a1, z1), (a2, z2), …, (an, zn)이
Figure PCTKR2018014683-appb-img-000005
에 속하는 균등한 임의의 분포(uniform random distribution)를 갖는 a1, a2, …, an와 동일한지 알아내는 것이다. 여기서 균등한 임의의 분포는, 상기한 확률 분포 D의 경우와는 달리, Zq에서 임의의 수를 선택할 때 각 수가 선택될 확률의 분포가 균등한 분포를 의미한다. ai은 벡터 a의 각 성분(component)을, zi은 벡터 z의 각 성분을, ei은 에러 값 벡터 e의 각 성분을 의미한다. ai, zi, ei은 모두 Zq의 원소이다.
LWE 문제 해결의 키는 포함된 에러 값 벡터 e를 제거하여 비밀 값 벡터 x에 대한 정보를 알아내는(Learn) 것인데, 에러 값이 클수록 x를 알아내는 것이 매우 어렵다. 하지만 이를 인증 스킴에 적용할 경우 인증 결과의 오류가 발생할 확률이 매우 높아지므로 x에 대한 기밀성을 보장하는 최소 상계 값 E가 선택될 수 있다.
LWE 문제는 포스트-양자 암호 기반한 래티스를 위한 가정으로서 사용될 수 있다. 래티스-기반 암호에서, 에러는 부호화(encryption), 복호화(decryption) 절차 동안 사용될 수 있고, 가우시안 샘플러(Gaussian sampler)과 같은 임의의 샘플러에 의해 생성될 수 있다. 부호화 및 복호화 절차 동안, 제1 행렬인 행렬 A와 제2 행렬인 비밀 행렬 S 간의 행렬 곱셈이 수행될 수 있고, 이후 에러와 벡터 덧셈이 수행될 수 있다.
이와 같은, 래티스-기반 암호 알고리즘은 양자 계산 환경(quantum computing environment)에 대한 비밀을 제공하기 위한 LWE 문제에 기반하며, 효율적인 실현을 제공할 수 있다.
프로세서(110)는 제1 행렬과 제2 행렬 간의 행렬 곱셈을 수행할 수 있고, 행렬 곱셈의 결과와 제3 행렬 간의 벡터 덧셈을 수행할 수 있다. 이때, 행렬 곱셈과 벡터 덧셈을 위한 최적화된 속도를 제공하기 위해, 벡터 인터리브(vector interleave)를 이용하여 제2 행렬의 전치 행렬을 결정할 수 있고, 전치 행렬을 이용하여 최적화된 연산을 수행할 수 있다.
도 2a는 일 실시예에 따른, 행렬 곱셈 및 벡터 덧셈이 수행되는 과정을 나타낸 도면이다. 도 2a에 기재된 바와 같이, 행렬 A는 제1 행렬을 나타내며, 행렬 S는 제2 행렬을 나타내고, 행렬 E는 제3 행렬을 나타낼 수 있다. 여기서, 행렬 곱셈 및 벡터 덧셈은 SIMD를 이용하여 수행될 수 있다.
제1 행렬인 행렬 A
Figure PCTKR2018014683-appb-img-000006
및 제2 행렬인 행렬 S
Figure PCTKR2018014683-appb-img-000007
및 제3 행렬인 행렬 E
Figure PCTKR2018014683-appb-img-000008
는 도 2a에 기재된 바와 같다. 이때, 행렬 A와 행렬 S의 각각의 엘리먼트를 행렬 곱셈하고, 행렬 곱셈의 결과와 행렬 E를 벡터 덧셈할 경우 계산에 오랜 시간이 소모될 수 있다.
도 2b는 일 실시예에 따른, 제2 행렬의 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈이 수행되는 과정을 나타낸 도면이다. 래티스-기반 암호 알고리즘에 사용되는 키 생성, 복호화, 부호화는 도 2b에 나타난 바와 같은 과정을 통해 최적의 속도에 의한 연산이 수행될 수 있다.
일 실시예에 따르면, 제1 행렬의 마지막 열(210)을 제외한 영역(220)과 제2 행렬의 마지막 열(230)을 제외한 영역(240)의 행렬 곱셈과 벡터 덧셈은 SIMD를 이용하여 연산될 수 있다. 이때, 연산에 이용되는 제2 행렬의 전치 행렬은 아래의 도 3에서 설명된 알고리즘 1을 이용하여 결정될 수 있다.
또한, 제1 행렬의 마지막 열(210)과 제2 행렬의 마지막 열(230)은 레인 사이즈의 행렬의 밖에 위치할 수 있다. 이때, 제1 행렬의 마지막 열(210)과 제2 행렬의 마지막 열(230)의 연산은 통상적인 방법에 의해 수행될 수 있다.
예를 들면, 제1 행렬의 M: 1024, N:513이고, 제2 행렬의 N:513, L:128인 경우, N의 크기가 513으로 2의 배수인 512보다 1이 큰 값에 해당한다. 만약, 행렬 연산 최적화 처리 장치에서 이용하는 고속 병렬화 레지스터용 데이터가 unit 16*8_t(16-bit*8개)인 경우, 제1 행렬과 제2 행렬의 513번째 열에 위치한 엘리먼트(element)들은 고속 병렬화 레지스터로 처리할 수 없는 범위 밖에 위치하여, 해당 열은 기존의 C 방식(일반적인 행렬 연산 방식)에 의해 처리될 수 있다. 즉, 제1 행렬과 제2 행렬의 220과 240에 해당하는 영역은 고속 병렬화 처리가능하지만, 제1 행렬과 제2 행렬의 210과 230에 해당하는 영역은 기존의 C 방식(일반적인 행렬 연산 방식)에 기반하여 처리될 수 있다.
도 3은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 행렬 곱셈(matrix multiplication)을 위한 전치 행렬을 결정하는 알고리즘 1을 나타낸 도면이다. 도 3에 제시된 알고리즘 1은 효율적인 행렬 곱셈을 위해 행렬의 전치 행렬을 결정하는 과정을 설명한다.
알고리즘 1의 line 2에서 line 5까지, SIMD 행렬 전치를 위해 인바운드(inbound)에 위치한 인덱스로 행렬의 아웃라인(outline)에 있는 행렬 인덱스를 계산할 수 있다. 위 도 2b의 예를 따를 때, 행렬 전치된 제2 행렬의 열의 크기가 고속 병렬화 레지스터의 벡터 개수 위 예에서는 8과 계산을 하여, 513=8*64+1이기 때문에 해당 위치(outbount에 위치한 엘리먼트의 인덱스)를 계산하여 기존 C 방식으로 처리할 수 있다.
행렬의 행 인덱스(row index)는 BLOCK_TRANSPOSE - N % BLOCK_TRANSPOSE로 설정될 수 있으며, 행렬의 열 인덱스(column index)는 BLOCK_TRANSPOSE - L % BLOCK_TRANSPOSE로 설정될 수 있다.
행렬 인덱스 계산 이후, line 7에서 line 56까지 각각의 BLOCK_TRANSPOSE 마다 전치 행렬이 수행될 때까지 레지스터 간의 벡터 인터리브 및 레지스터에서 데이터 로드(load)를 반복하여 수행할 수 있다.
구체적으로, 도 3에 기재된 알고리즘 1에서, 행렬의 각각 엘리먼트 데이터는 16-bit 사이트 데이터를 가지는 것을 전제로 하고 있다. 이때, 각각 레지스터 사이즈는 128-bit(16-bit*8data)이므로 BLOCK_TRANSPOSE는 8일 수 있다. 각각의 BLOCK_TRANSPOSE에서 전치 행렬이 결정된 이후, 레지스터 데이터를 전치 행렬 어레이에 저장할 수 있다.
도 4은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 효율적인 행렬 곱셈 및 누적(matrix multiply and accumulation)을 수행하는 알고리즘 2를 나타낸 도면이다.
행렬 연산 최적화 처리 장치는 알고리즘 2에 제시된 과정을 전치 행렬이 결정된 이후 수행할 수 있다. 알고리즘 2에 제시된 LANE_SHORT_NUM는 도 3의 알고리즘 1에 제시된 BLOCK_TRANSPOSE와 동일한 값을 나타낼 수 있다.
알고리즘 2에 제시된 line 3은 lane broadcasting를 위한 고유의 함수(vdupq)를 동일한 값으로 사용하여 레지스터 sum_vect 값을 16-bit 데이터 0으로 설정하는 것을 설명한다.
행렬 연산 최적화 처리 장치는 Line 4에서 line 7까지, 행렬 A와 행렬 S의 데이터를 각 행렬 인덱스에 따라 레지스터에 로드할 수 있다. 그런 다음, 행렬 연산 최적화 처리 장치는 N/LANES_SHORT_NUM 내에서 행렬 곱셈 및 벡터 덧셈을 위한 레지스터를 곱하고 누적(accumulate)할 수 있다.
행렬 연산 최적화 처리 장치는 Line 8 및 line 9에서, 레지스터 값을 어레이(16-bit 데이터, 어레이 사이즈:8)에 저장하고 각각의 값을 행렬 인덱스에 따라 행렬 E와 누적(accumulate)한다. 그런 다음, 행렬 연산 최적화 처리 장치는 벡터를 레지스터에 저장하고 엘리먼트(element) 값을 레지스터에 누적한 다음 결과를 행렬 E 인덱스에 따라 행렬 E에 저장한다.
행렬 연산 최적화 처리 장치는 line 10에서 line 12까지, 행렬 사이즈 %NEON 레지스터 레인 사이즈의 밖에 위치한 행렬 엘리먼트 간의 행렬 곱셈 및 벡터 덧셈을 계산할 수 있다.
이 부분에서, 행렬의 행과 열의 사이즈가 even하면, 동작하지 않을 수 있다. 이는, 예를 들면, 행렬의 행과 열의 크기가 짝수인 벡터 레지스터의 엘리먼트 개수(ex. Unit16*8_t(16-bit*8개))를 기반으로 연산하는 경우, 행과 열의 크기가 8의 배수인 경우, 레지스터 레인 사이즈 밖에 위치한 행렬의 엘리먼트 간의 행렬 곱셈 및 벡터 덧셈을 수행하지 않을 수 있음을 나타낸다.
알고리즘 2를 이용하여, NEON을 이용하여 행렬 곱셈 및 벡터 덧셈을 계산할 수 있으며, NEON 레지스터 레인 사이즈 밖에 위치한 행렬 엘리먼트가 있는 경우 일반적인 행렬 곱셈 및 벡터 덧셈 연산 방법을 수행할 수 있다. 일례로, 일반적인 행렬 곱셈 및 벡터 덧셈으로는 각각의 행렬의 엘리먼트 간의 곱셈을 수행하는 것으로서 일반적인 행렬 계산 방법을 의미하며, C 언어에 의해 구현될 수 있다.
도 5는 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 LWE를 위해 효율적인 전치 행렬, 행렬 곱셈 및 누적을 수행하는 알고리즘 3을 나타낸 도면이다. 행렬 연산 최적화 처리 장치는 전치 행렬을 결정하는 알고리즘 1 및 행렬 곱셈 및 벡터 덧셈을 수행하는 알고리즘 2를 순차적으로 실행하는 알고리즘 3을 수행할 수 있다. 따라서, 행렬 연산 최적화 처리 장치는 알고리즘 3과 같은 래티스-기반 암호(lattice-based cryptography)에서의 LWE 문제에 대한 효율적인 전치 행렬, 행렬 곱셈과 벡터 덧셈을 수행할 수 있다.
도 6은 일 실시예에 따른, 데이터 로드(Data Load)가 수행되는 과정을 나타낸 도면이다.
효율적인 행렬 곱셈 및 벡터 덧셈을 위해, 아래의 표 1과 같은 NEON 고유 함수(intrinsic function)가 사용될 수 있다. 여기서, 행렬 연산 최적화 처리 장치의 일례로, NEON은 ARM Cortex-A series and Cortex-R52 프로세서를 위한 진화된(advanced) SIMD(Single Instruction Multiple Data) Extension를 나타낸다. 일례인, NEON은 128-bit 사이즈 Q 레지스터(Q0~Q15)를 지원하며, Q 레지스터는 4 32-bit 사이즈 데이터, 8 16-bit 사이즈 데이터, 및 16 8-bit 사이즈 데이터로 작성될 수 있고, 각각의 Q 레지스터는 아래의 표 2와 같이 2개의 D 레지스터(64-bit 사이즈)로 분리될 수 있다.
이때, SIMD는 병렬 프로세서의 한 종류로서, 하나의 명령어로 여러 개를 동시에 계산할 수 있다. 따라서, ARM SIMD(ARM Advanced Single Instruction Multiple Data) Extension인 NEON은 멀티미디어 및 신호 처리 응용 프로그램의 성능을 향상시키기 위해 ARM에서 개발한 64/128 비트 복합 SIMD 아키텍처를 나타낼 수 있다.
Figure PCTKR2018014683-appb-img-000009
Figure PCTKR2018014683-appb-img-000010
NEON 고유 함수로서 Load는 데이터를 로드할 수 있다. 구체적으로, Load 함수는 데이터 어레이(data array)로부터 128-bit인 데이터를 로드할 수 있다. 예를 들면, Load 함수는 사이즈가 16인 8-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있고, Load 함수는 사이즈가 8인 16-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있고, Load 함수는 사이즈가 4인 32-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있다.
도 6은 일례로서, 16-bit*8사이즈 데이터 어레이로부터 128-bit인 데이터를 로드하는 것을 나타낸다. 구체적으로, 도 6은 8 사이즈인 8개의 lane(0 lane, 1 lane, 2 lane, ~ 7 lane)으로부터 각각 16-bit인 데이터를 로드하는 것을 나타낸다. 예를 들면, 행렬 연산 최적화 처리 장치는 Load 함수를 이용하여 3 lane의 16-bit인 데이터를 로드할 수 있다.
도 7은 일 실시예에 따른, 데이터 저장(Data Store)이 수행되는 과정을 나타낸 도면이다.
NEON 고유 함수로서 Store는 데이터를 저장할 수 있다. 구체적으로, Store 함수는 데이터 어레이(data array)에 128-bit인 데이터를 저장할 수 있다. 예를 들면, Store 함수는 사이즈가 16인 8-bit 데이터 어레이에 128-bit인 데이터를 저장할 수 있고, Store 함수는 사이즈가 8인 16-bit 데이터 어레이에 128-bit인 데이터를 저장할 수 있고, Store 함수는 사이즈가 4인 32-bit 데이터 어레이에 128-bit인 데이터를 저장할 수 있다.
도 7은 일례로서, 16-bit*8 사이즈 데이터 어레이에 128-bit인 데이터를 저장하는 것을 나타낸다. 구체적으로, 도 7은 8 사이즈인 8개의 lane(0 lane, 1 lane, 2 lane, ~ 7 lane)에 각각 16-bit인 데이터를 저장하는 것을 나타낸다. 예를 들면, 행렬 연산 최적화 처리 장치는 Store 함수를 이용하여 3 lane에 16-bit인 데이터를 저장할 수 있다.
도 8은 일 실시예에 따른, Extracting lane from a vector to a register이 수행되는 과정을 나타낸 도면이다.
NEON 고유 함수로서 Extracting lane from a vector to a register는 레인 넘버에 따른 데이터를 추출할 수 있다. 도 7은 일례로서, 16-bit&8 사이즈인 벡터 a로부터 부호없는 짧은 16-bit 사이즈 데이터 레지스터 r(unsigned short 16-bit size data register r)로 레인 넘버 2를 추출하는 것을 나타낸다. Extracting lane from a vector to a register는 벡터로부터 일례인 8/16-32-bit 데이터를 추출할 수 있다. Extracting lane from a vector to a register는 행렬 곱셈 절차 동안 레지스터로 데이터 누적(data accumulate) 및 저장에 사용될 수 있다.
도 9는 일 실시예에 따른, Lane Broadcast가 수행되는 과정을 나타낸 도면이다.
NEON 고유 함수로서 lane Broadcast는 벡터의 모든 레인 데이터를 동일한 값으로 설정할 수 있다. 예를 들면, 도 9와 같이, lane Broadcast는 벡터의 모든 레인 데이터를 0으로 설정할 수 있다. lane Broadcast는 행렬 곱셈 절차 동안 누적 벡터를 0으로 초기화하는데 사용될 수 있다.
도 10는 일 실시예에 따른, Vector Interleave가 수행되는 과정을 나타낸 도면이다.
NEON 고유 함수로서 Vector Interleave는 복수의 레지스터간의 벡터 인터리브를 지원할 수 있다. 벡터 인터리브 이후, 그 결과는 레지스터 어레이에 저장될 수 있다. 구체적으로, 일반적으로 행렬의 엘리먼트(element) 간의 교환에 의해 행렬의 전치 행렬이 획득되지만, Vector Interleave를 이용할 경우 각각의 명령어(instruction)에서 128-bit 사이즈 데이터를 교환하여 전치 행렬을 획득할 수 있다.
도 11은 일 실시예에 따른, 행렬 연산 최적화 처리 장치가 수행하는 연산 방법을 나타낸 도면이다.
단계(1110)에서, 행렬 연산 최적화 처리 장치는 제1 행렬 및 제1 행렬과 곱셈 연산되는 제2 행렬을 식별할 수 있다.
단계(1120)에서, 행렬 연산 최적화 처리 장치는 벡터 인터리브(vector interleave)에 기초하여 제2 행렬의 전치 행렬을 결정할 수 있다.
이때, 행렬 연산 최적화 처리 장치는 BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE로 설정된 제2 행렬의 행 인덱스(row index)와 BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE로 설정된 제2 행렬의 열 인덱스(column index)를 계산하고, 제2 행렬의 인덱스를 계산한 이후 각각의 BLOCK_TRANSPOSE마다 제2 행렬의 전치 행렬이 결정될 때까지, 레지스터(register)에 대한 데이터 로딩과 레지스터 간의 벡터 인터리브를 반복함으로써 제2 행렬의 전치 행렬을 결정할 수 있다.
여기서, BLOCK_TRANSPOSE는 레지스터의 사이즈 및 제2 행렬의 사이즈에 따라 결정되는 것이며, 벡터 인터리브는 각각의 명령어(instruction)에서 복수의 레지스터의 데이터 간 교환(exchange)을 나타낼 수 있다.
단계(1130)에서, 행렬 연산 최적화 처리 장치는 제1 행렬과 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행할 수 있다.
행렬 연산 최적화 처리 장치는 제1 행렬, 제2 행렬 및 상기 레지스터의 데이터를 로딩하여 제1 행렬과 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 각각의 행렬 인덱스에 따라 곱셈 연산의 결과와 제3 행렬을 덧셈 연산함으로써 곱셈 연산 및 덧셈 연산을 수행할 수 있다.
또한, 행렬 연산 최적화 처리 장치는 제1 행렬의 열과 제2 행렬의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 벡터 인터리브에 의한 제2 행렬의 전치 행렬을 이용하지 않고 제1 행렬 열과 제2 행렬의 행 간의 곱셈을 수행할 수 있다.
일 실시예에 따르면, 행렬 연산 최적화 처리 장치는 전력 디바이스 환경에서 대용량 암호화 행렬 연산에 최적화된 속도를 제공할 수 있다. 이러한 실험 결과는 아래에서 확인 가능하다.
Lizard.CCA 파라미터에 따른 1000번의 동작을 실행한 평균을 측정하였다. Lizard.CCA CATEGORY5_N1088 및 Lizard.CCA CATEGORY5_N1088 파라미터들에서, 실행 시간을 측정할 수 없었다. 처음에, 아래의 표 3과 같이 일반적인 행렬 계산 방법(예를 들면, C언어)과 본 발명에서 제안한 방법을 비교하였고, 본 발명에서 제안한 방법이 전치 행렬 계산에 있어 더 좋은 성능을 나타내는 것을 확인할 수 있었다.(단위: ms)
Figure PCTKR2018014683-appb-img-000011
전치 행렬 계산한 이후, 행렬 곱셈 및 벡터 덧셈의 실행 속도를 측정하였다. 객관적인 평가를 위해, Lizard.CCA 파라미터에 따른 Lizard.CCA 키 생성의 행렬 곱셈 및 벡터 덧셈을 위한 일반적인 행렬 계산 방법과 본 발명에서 제안한 방법을 비교하였고, 아래의 표 4와 같은 결과를 확인할 수 있다. (단위: ms) 아래의 표 4에서 확인가능하듯이, 본 발명에서 제안된 방법이 일반적인 행렬 계산 방법보다 각각 36.93%, 6.95%, 32.92%, 7.66% 향상된 성능을 나타내는 것을 확인할 수 있다.
Figure PCTKR2018014683-appb-img-000012
또한, 기존의 Lizard.CCA 키 생성을 수행하는 방법 보다 본발명에서 제안된 방법이 적용된 Lizard.CCA 키 생성이 아래의 표 5와 같이 각각 7.04%, 3.66%, 7.57%, 9.32% 향상된 성능을 나타내는 것을 확인할 수 있다.
Figure PCTKR2018014683-appb-img-000013
한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 등을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로조직에 의해 보충되거나, 이에 포함될 수 있다.
또한, 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용매체일 수 있고, 컴퓨터 저장매체 및 전송매체를 모두 포함할 수 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 장치 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 장치들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
한편, 본 명세서와 도면에 개시된 본 발명의 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 자명한 것이다.

Claims (17)

  1. 제1 행렬 및 상기 제1 행렬과 곱셈 연산되는 제2 행렬을 식별하는 단계;
    벡터 인터리브(vector interleave)에 기초하여 상기 제2 행렬의 전치 행렬을 결정하는 단계;
    상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 단계
    를 포함하는 행렬 연산 최적화 처리 방법.
  2. 제1항에 있어서,
    상기 벡터 인터리브에 기초하여 상기 제2 행렬의 전치 행렬을 결정하는 단계는,
    BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 행 인덱스(row index)와 BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 열 인덱스(column index)를 계산하는 단계;
    상기 제2 행렬의 인덱스를 계산한 이후, 각각의 BLOCK_TRANSPOSE마다 상기 제2 행렬의 전치 행렬이 결정될 때까지, 레지스터(register)에 대한 데이터 로딩과 상기 레지스터 간의 벡터 인터리브를 반복하는 단계
    를 포함하는 행렬 연산 최적화 처리 방법.
  3. 제2항에 있어서,
    상기 BLOCK_TRANSPOSE는,
    상기 레지스터의 사이즈 및 상기 제2 행렬의 사이즈에 따라 결정되는 행렬 연산 최적화 처리 방법.
  4. 제2항에 있어서,
    상기 벡터 인터리브는,
    각각의 명령어(instruction)에서 복수의 레지스터의 데이터 간 교환(exchange)을 나타내는 행렬 연산 최적화 처리 방법.
  5. 제2항에 있어서,
    상기 N은, 상기 제2 행렬의 행을 나타내며,
    상기 L은, 상기 제2 행렬의 열을 나타내는 행렬 연산 최적화 처리 방법.
  6. 제2항에 있어서,
    상기 각각의 BLOCK_TRANSPOSE 마다 상기 제2 행렬의 전치 행렬이 결정된 이후, 전치된 상기 제2 행렬의 어레이(array)를 상기 레지스터에 저장하는 단계를 더 포함하는 행렬 연산 최적화 처리 방법.
  7. 제2항에 있어서,
    상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 단계는,
    상기 제1 행렬, 상기 제2 행렬 및 상기 레지스터의 데이터를 로딩하여 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 각각의 행렬 인덱스에 따라 상기 곱셈 연산의 결과와 상기 제3 행렬을 덧셈 연산하는 단계를 포함하는 행렬 연산 최적화 처리 방법.
  8. 제1항에 있어서,
    상기 제1 행렬의 열과 상기 제2 행렬의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 상기 벡터 인터리브에 의한 상기 제2 행렬의 전치 행렬을 이용하지 않고 상기 제1 행렬 열과 상기 제2 행렬의 행 간의 곱셈이 수행되는 단계
    를 더 포함하는 행렬 연산 최적화 처리 방법.
  9. 제1항 내지 제8항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
  10. 행렬 연산 최적화 처리 장치에 있어서,
    상기 행렬 연산 최적화 처리 장치는 프로세서를 포함하고,
    상기 프로세서는,
    행렬 곱셈 및 행렬 덧셈을 처리할 때 제1 행렬 및 상기 제1 행렬과 곱셈 연산되는 제2 행렬을 식별하고, 벡터 인터리브(vector interleave)에 기초하여 상기 제2 행렬의 전치 행렬을 결정하고, 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행하는 행렬 연산 최적화 처리 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    상기 벡터 인터리브에 기초하여 상기 제2 행렬의 전치 행렬을 결정할 때, BLOCK_TRANSPOSE-N% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 행 인덱스(row index)와 BLOCK_TRANSPOSE-L% BLOCK_TRANSPOSE로 설정된 상기 제2 행렬의 열 인덱스(column index)를 계산하고, 상기 제2 행렬의 인덱스를 계산한 이후, 각각의 BLOCK_TRANSPOSE마다 상기 제2 행렬의 전치 행렬이 결정될 때까지, 레지스터(register)에 대한 데이터 로딩과 상기 레지스터 간의 벡터 인터리브를 반복하는 행렬 연산 최적화 처리 장치.
  12. 제11항에 있어서,
    상기 BLOCK_TRANSPOSE는,
    상기 레지스터의 사이즈 및 상기 제2 행렬의 각각의 엘리먼트(element)의 사이즈에 따라 결정되는 행렬 연산 최적화 처리 장치.
  13. 제11항에 있어서,
    상기 벡터 인터리브는,
    각각의 명령어(instruction)에서 복수의 레지스터의 데이터 간 교환(exchange)을 나타내는 행렬 연산 최적화 처리 장치.
  14. 제11항에 있어서,
    상기 N은, 상기 제2 행렬의 행을 나타내며,
    상기 L은, 상기 제2 행렬의 열을 나타내는 행렬 연산 최적화 처리 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 각각의 BLOCK_TRANSPOSE 마다 상기 제2 행렬의 전치 행렬이 결정된 이후, 전치된 상기 제2 행렬의 어레이(array)를 상기 레지스터에 저장하는 행렬 연산 최적화 처리 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 상기 곱셈 연산의 결과와 제3 행렬에 대해 덧셈 연산을 수행할 때,
    상기 제1 행렬, 상기 제2 행렬 및 상기 레지스터의 데이터를 로딩하여 상기 제1 행렬과 상기 제2 행렬의 전치 행렬 간에 곱셈 연산을 수행하고, 각각의 행렬 인덱스에 따라 상기 곱셈 연산의 결과와 상기 제3 행렬을 덧셈 연산하는 행렬 연산 최적화 처리 장치.
  17. 제10항에 있어서,
    상기 프로세서는,
    상기 제1 행렬의 열과 상기 제2 행렬의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 상기 벡터 인터리브에 의한 상기 제2 행렬의 전치 행렬을 이용하지 않고 상기 제1 행렬 열과 상기 제2 행렬의 행 간의 곱셈을 수행하는 행렬 연산 최적화 처리 장치.
PCT/KR2018/014683 2018-07-30 2018-11-27 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법 WO2020027386A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180088505A KR102252311B1 (ko) 2018-07-30 2018-07-30 저전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법
KR10-2018-0088505 2018-07-30

Publications (1)

Publication Number Publication Date
WO2020027386A1 true WO2020027386A1 (ko) 2020-02-06

Family

ID=69232171

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2018/014683 WO2020027386A1 (ko) 2018-07-30 2018-11-27 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법

Country Status (2)

Country Link
KR (1) KR102252311B1 (ko)
WO (1) WO2020027386A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113536219A (zh) * 2020-04-21 2021-10-22 中科寒武纪科技股份有限公司 运算方法、处理器以及相关产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6877020B1 (en) * 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
KR101361080B1 (ko) * 2012-12-27 2014-02-13 네이버 주식회사 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
JP2016213731A (ja) * 2015-05-12 2016-12-15 日本電信電話株式会社 行列作用装置、行列作用方法、およびプログラム
US20180189237A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Winograd algorithm on a matrix processing architecture

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345408A (en) * 1993-04-19 1994-09-06 Gi Corporation Inverse discrete cosine transform processor
US9645974B1 (en) * 2015-03-11 2017-05-09 Google Inc. Optimized matrix multiplication using vector multiplication of interleaved matrix values

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6877020B1 (en) * 2001-12-31 2005-04-05 Apple Computer, Inc. Method and apparatus for matrix transposition
KR101361080B1 (ko) * 2012-12-27 2014-02-13 네이버 주식회사 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
JP2016213731A (ja) * 2015-05-12 2016-12-15 日本電信電話株式会社 行列作用装置、行列作用方法、およびプログラム
US20180189237A1 (en) * 2016-12-30 2018-07-05 Intel Corporation Winograd algorithm on a matrix processing architecture

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
H. C. JUNG ET AL.: "A Practical post-quantum public key cryptosystem based on spLWE", PROCEEDINGS OF THE 19TH ANNUAL INTERNATIONAL CONFERENCE ON INFORMATION SECURITY AND CRYPTOLOGY- ICISC, 2016, pages 51 - 74, XP061022193 *
PÖPPELMANN, THOMAS: "Efficient implementation of ideal lattice-based cryptography", PH.D DISSERTATION, June 2015 (2015-06-01), Germany, pages 305 - 309, XP055681451 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113536219A (zh) * 2020-04-21 2021-10-22 中科寒武纪科技股份有限公司 运算方法、处理器以及相关产品
CN113536219B (zh) * 2020-04-21 2024-01-26 中科寒武纪科技股份有限公司 运算方法、处理器以及相关产品

Also Published As

Publication number Publication date
KR102252311B1 (ko) 2021-05-14
KR20200013372A (ko) 2020-02-07

Similar Documents

Publication Publication Date Title
WO2011071282A1 (en) Quantum karnaugh map
EP0373291B1 (en) Digital signal processor
EP0240032A2 (en) Vector processor with vector data compression/expansion capability
US20130301826A1 (en) System, method, and program for protecting cryptographic algorithms from side-channel attacks
US6449706B1 (en) Method and apparatus for accessing unaligned data
GB1575214A (en) Floating point data processor
WO2020027386A1 (ko) 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법
WO2020105797A1 (ko) 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
CN105022961A (zh) 一种计算机数据的保护方法及装置
CN106802785A (zh) 一种栈解析方法和装置
CN112149706A (zh) 模型训练方法、装置、设备和介质
GB1336981A (en) Digital electric information processing system
US7028145B1 (en) Protocol processor intended for the execution of a collection of instructions in a reduced number of operations
WO2018101607A1 (ko) 벡터 프로세서 및 그 제어 방법
JPH06103062A (ja) コンピュータ処理装置に利用できるレジスタ数を増大させる装置
KR20060103965A (ko) 단일명령 복수데이터 관리를 위한 방법 및 컴퓨터 프로그램
US7093102B1 (en) Code sequence for vector gather and scatter
CN109684856B (zh) 一种针对MapReduce计算的数据保密方法及系统
WO2023191216A1 (ko) 데이터 암호화 및 복호화 시스템, 방법
WO2017155201A1 (ko) 열-지향 레이아웃 파일 생성 방법
WO2021020848A2 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
US4481582A (en) Method and apparatus for enabling the tracing of errors occuring in a series of transfers of binary message words
EP1193609B1 (en) Apparatus and method for address modification in a direct memory access controller
WO2017052125A1 (ko) 비트 수를 증가시킨 sram 기반 tcam의 동작 방법 및 시스템
WO2023075490A1 (en) Apparatus and method for ciphertext comparison capable of preventing side channel attack

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18928197

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18928197

Country of ref document: EP

Kind code of ref document: A1