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

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

Info

Publication number
KR20200013372A
KR20200013372A KR1020180088505A KR20180088505A KR20200013372A KR 20200013372 A KR20200013372 A KR 20200013372A KR 1020180088505 A KR1020180088505 A KR 1020180088505A KR 20180088505 A KR20180088505 A KR 20180088505A KR 20200013372 A KR20200013372 A KR 20200013372A
Authority
KR
South Korea
Prior art keywords
matrix
transpose
multiplication
block
vector
Prior art date
Application number
KR1020180088505A
Other languages
English (en)
Other versions
KR102252311B1 (ko
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 부산대학교 산학협력단
Priority to KR1020180088505A priority Critical patent/KR102252311B1/ko
Priority to PCT/KR2018/014683 priority patent/WO2020027386A1/ko
Publication of KR20200013372A publication Critical patent/KR20200013372A/ko
Application granted granted Critical
Publication of KR102252311B1 publication Critical patent/KR102252311B1/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

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

전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법{A METHOD FOR LARGE-SIZE CRYPTOGRAPHY MATRIX OPERATION OPTIMIZED PROCESSING IN A POWER DEVICE ENVIRONMENT}
아래의 설명은 전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법에 관한 것으로, 보다 구체적으로는 전치 행렬을 이용하여 행렬 곱셈 및 벡터 덧셈을 수행하는 기술에 관한 것이다.
양자 계산 기술의 발달에 따라, 기존의 존재하는 암호화 방식은 안전성은 위협을 받고 있어, 기존과 다른 새로운 양자 암호 알고리즘이 적용된 다양한 방법이 제안되고 있다. 이와 같은, 새로운 양자 암호 알고리즘의 일례로 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 pat00001
이상일 확률은 η이며 정당한 파라미터 값으로 설정하였다는 가정 하에 η은 매우 작은(negligible) 값이되어, LWE 문제를 풀기는 매우 어려운 바, 이러한 사실에 기반하여 LWE 문제의 내용은 다음과 같다.
LWE 문제를 해결한다 함은 Zq의 원소로 구성되어 있는 비밀 값의 n차 벡터
Figure pat00002
, 임의의 n차 벡터
Figure pat00003
에 대하여 (a, z)의 독립적인 샘플들 (a1, z1), (a2, z2), …, (an, zn)이 주어졌을 때[단, zi = <a,x> + ei (i는 1 ~ n인 자연수)이며, <a,x>는 벡터 a와 벡터 x의 내적(inner product)을 의미하며, (a, z)는
Figure pat00004
에 속함], 각 샘플 (a1, z1), (a2, z2), …, (an, zn)이
Figure pat00005
에 속하는 균등한 임의의 분포(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 pat00006
및 제2 행렬인 행렬 S
Figure pat00007
및 제3 행렬인 행렬 E
Figure pat00008
는 도 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 pat00009
Figure pat00010
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 pat00011
전치 행렬 계산한 이후, 행렬 곱셈 및 벡터 덧셈의 실행 속도를 측정하였다. 객관적인 평가를 위해, Lizard.CCA 파라미터에 따른 Lizard.CCA 키 생성의 행렬 곱셈 및 벡터 덧셈을 위한 일반적인 행렬 계산 방법과 본 발명에서 제안한 방법을 비교하였고, 아래의 표 4와 같은 결과를 확인할 수 있다. (단위: ms) 아래의 표 4에서 확인가능하듯이, 본 발명에서 제안된 방법이 일반적인 행렬 계산 방법보다 각각 36.93%, 6.95%, 32.92%, 7.66% 향상된 성능을 나타내는 것을 확인할 수 있다.
Figure pat00012
또한, 기존의 Lizard.CCA 키 생성을 수행하는 방법 보다 본발명에서 제안된 방법이 적용된 Lizard.CCA 키 생성이 아래의 표 5와 같이 각각 7.04%, 3.66%, 7.57%, 9.32% 향상된 성능을 나타내는 것을 확인할 수 있다.
Figure pat00013
한편, 본 발명에 따른 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성되어 마그네틱 저장매체, 광학적 판독매체, 디지털 저장매체 등 다양한 기록 매체로도 구현될 수 있다.
본 명세서에 설명된 각종 기술들의 구현들은 디지털 전자 회로조직으로, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어로, 또는 그들의 조합들로 구현될 수 있다. 구현들은 데이터 처리 장치, 예를 들어 프로그램가능 프로세서, 컴퓨터, 또는 다수의 컴퓨터들의 동작에 의한 처리를 위해, 또는 이 동작을 제어하기 위해, 컴퓨터 프로그램 제품, 즉 정보 캐리어, 예를 들어 기계 판독가능 저장 장치(컴퓨터 판독가능 매체) 또는 전파 신호에서 유형적으로 구체화된 컴퓨터 프로그램으로서 구현될 수 있다. 상술한 컴퓨터 프로그램(들)과 같은 컴퓨터 프로그램은 컴파일된 또는 인터프리트된 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있고, 독립형 프로그램으로서 또는 모듈, 구성요소, 서브루틴, 또는 컴퓨팅 환경에서의 사용에 적절한 다른 유닛으로서 포함하는 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 처리되도록 또는 다수의 사이트들에 걸쳐 분배되고 통신 네트워크에 의해 상호 연결되도록 전개될 수 있다.
컴퓨터 프로그램의 처리에 적절한 프로세서들은 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 다, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령어들을 실행하는 적어도 하나의 프로세서 및 명령어들 및 데이터를 저장하는 하나 이상의 메모리 장치들을 포함할 수 있다. 일반적으로, 컴퓨터는 데이터를 저장하는 하나 이상의 대량 저장 장치들, 예를 들어 자기, 자기-광 디스크들, 또는 광 디스크들을 포함할 수 있거나, 이것들로부터 데이터를 수신하거나 이것들에 데이터를 송신하거나 또는 양쪽으로 되도록 결합될 수도 있다. 컴퓨터 프로그램 명령어들 및 데이터를 구체화하는데 적절한 정보 캐리어들은 예로서 반도체 메모리 장치들, 예를 들어, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(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 행렬의 행 간의 곱셈을 수행하는 행렬 연산 최적화 처리 장치.
KR1020180088505A 2018-07-30 2018-07-30 저전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법 KR102252311B1 (ko)

Priority Applications (2)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20200013372A true KR20200013372A (ko) 2020-02-07
KR102252311B1 KR102252311B1 (ko) 2021-05-14

Family

ID=69232171

Family Applications (1)

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

Country Status (2)

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

Families Citing this family (1)

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

Citations (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

Family Cites Families (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 네이버 주식회사 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
JP5927323B1 (ja) * 2015-05-12 2016-06-01 日本電信電話株式会社 行列作用装置、行列作用方法、およびプログラム
US10482155B2 (en) * 2016-12-30 2019-11-19 Intel Corporation Winograd algorithm on a matrix processing architecture

Patent Citations (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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tuy Nguyen Tan, Hanho Lee. High-performance Ring-LWE Cryptography Scheme for Biometric Data Security. IEIE Transactions on Smart Processing & Computing, Vol. 7, No. 2, pp. 97-106(2018.04.30.) 1부.* *

Also Published As

Publication number Publication date
KR102252311B1 (ko) 2021-05-14
WO2020027386A1 (ko) 2020-02-06

Similar Documents

Publication Publication Date Title
Al Badawi et al. Implementation and performance evaluation of RNS variants of the BFV homomorphic encryption scheme
US11983280B2 (en) Protection of cryptographic operations by intermediate randomization
CN103975302B (zh) 矩阵乘法累加指令
KR101202445B1 (ko) 프로세서
CN110300957B (zh) 数据处理装置中的加宽算数
TWI325571B (en) Systems and methods of indexed load and store operations in a dual-mode computer processor
US20130301826A1 (en) System, method, and program for protecting cryptographic algorithms from side-channel attacks
CN110262773B (zh) 一种计算机数据处理方法及装置
US11190340B2 (en) Efficient unified hardware implementation of multiple ciphers
CN109597647B (zh) 数据处理方法及设备
US20160225119A1 (en) Systems and methods for calculating a feature descriptor
US11397791B2 (en) Method, circuit, and SOC for performing matrix multiplication operation
KR20210146513A (ko) 인공 지능 연산 반도체 장치 및 이를 포함하는 저장 장치
KR102075848B1 (ko) 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
CN112929300B (zh) 一种数据处理装置、方法、基站和存储介质
KR102252311B1 (ko) 저전력 디바이스 환경상에서 대용량 암호화 행렬 연산 최적화 처리 방법
CN110737612A (zh) 一种含有存储内计算的处理器
CN103765493B (zh) 数字平方计算机实现的方法和设备
US20200272478A1 (en) Vector processor and control method therefor
US11456862B2 (en) Secure computation system, secure computation apparatus, secure computation method, and recording medium
US11210090B2 (en) Register-based complex number processing
CN117407640A (zh) 一种矩阵计算方法及装置
US20230370251A1 (en) Secure computation system, secure computation apparatus, secure computation method, and program
CN104767544A (zh) 一种实现解扰解扩的方法和矢量运算器
KR102149576B1 (ko) 저전력 디바이스 환경상에서의 공개키 암호 고속화 연산 처리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant