KR102075848B1 - 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 - Google Patents

다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 Download PDF

Info

Publication number
KR102075848B1
KR102075848B1 KR1020180145458A KR20180145458A KR102075848B1 KR 102075848 B1 KR102075848 B1 KR 102075848B1 KR 1020180145458 A KR1020180145458 A KR 1020180145458A KR 20180145458 A KR20180145458 A KR 20180145458A KR 102075848 B1 KR102075848 B1 KR 102075848B1
Authority
KR
South Korea
Prior art keywords
polynomial
order
coefficients
multiplication
coefficient
Prior art date
Application number
KR1020180145458A
Other languages
English (en)
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 KR1020180145458A priority Critical patent/KR102075848B1/ko
Priority to PCT/KR2019/000520 priority patent/WO2020105797A1/ko
Application granted granted Critical
Publication of KR102075848B1 publication Critical patent/KR102075848B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

다항식의 계수 특성을 이용한 다항식 연산 최적화 처리 장치 및 방법이 개시된다. 다항식 연산 최적화 처리 방법은 다항식 차수 N-1를 가지는 복수의 다항식 간의 곱셈 연산을 수행하여 다항식 차수 N-1보다 큰 차수를 갖는 다항식을 생성한 후, 생성된 다항식 차수 N-1보다 큰 차수를 갖는 다항식에 대한 차수 환원 연산을 수행함으로서, Ring-LWE 문제에 기초하는 래티스-기반 암호를 위한 다항식 곱셈 및 벡터 덧셈을 효율적으로 수행할 수 있다.

Description

다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체{Method, Apparatus and Recording Medium Of Polynomial Operation Optimization Processing}
아래의 설명은 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체에 관한 것으로, 사물인터넷 게이트웨이 환경상에서 대용량의 암호화된 다항식을 처리하기 위해, 다항식의 계수 특성을 이용하여 다항식 곱셈을 수행하는 기술에 관한 것이다.
양자 계산 기술은 양자 기술로 생성한 암호키를 송수신 측에 안전하게 전달하는 방식이다. 이러한 양자 계산 기술이 발달함에 따라, 기존의 존재하는 암호화 방식은 데이터에 대한 안전성이 위협을 받고 있다. 이에, 최근에는 안전성을 고려하여 기존과 다른 새로운 양자 암호 알고리즘이 적용된 다양한 방법이 제안되고 있다.
이와 같은, 양자 암호 알고리즘의 하나로 LWE 문제(Learning with Errors problems)에 기초하는 래티스-기반 암호화(Lattice-based cryptography)가 있다. 다만, LWE 문제에 기초하는 래티스-기반 암호화는 키 생성(key generation), 암호화(encryption) 및 복호화(decryption)와 같은 대용량 다항식 연산 될 때, 많은 시간이 소비되는 문제가 있었다.
따라서, 대용량 다항식 곱셈 연산에서도 최적화된 속도를 제공하는 효율적인 다항식 곱셈 연산 최적화 처리 방법이 필요하다.
본 발명은 다항식의 계수 특성을 이용하여 다항식 곱셈 연산을 병렬적으로 수행하는 다항식 연산 최적화 처리 장치 및 방법을 제공할 수 있다.
본 발명은 LWE 문제에 기초하는 격자-기반 암호를 위한 다항식 곱셈을 효율적으로 수행하는 전력 디바이스 환경상에서의 다항식 연산 최적화 처리 장치 및 방법을 제공할 수 있다.
일실시예에 따른 다항식 연산 최적화 처리 방법은 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 및 제3 다항식을 생성하는 단계; 상기 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성하는 단계; 상기 다항식 차수 N-1 및 레지스터의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정하는 단계; 상기 제2 다항식의 계수를 이용하여 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 반복 연산 횟수만큼 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행하는 단계; 및 상기 덧셈 누적 연산된 제3 다항식에 대응하여 다항식 차수 N-1를 갖도록 제3 다항식에 대해 차수 환원 연산을 처리하는 단계를 포함할 수 있다.
일실시예에 따른 덧셈 누적 연산을 수행하는 단계는 제2 다항식의 계수가 나타내는 값이 '1'인 경우, 제2 다항식의 계수와 제1 다항식의 계수 간에 곱셈 연산을 수행할 수 있다.
일실시예에 따른 덧셈 누적 연산을 수행하는 단계는 제2 다항식의 계수가 나타내는 값이 '-1'인 경우, 제2 다항식의 계수와 음수 다항식의 계수 간에 곱셈 연산을 수행할 수 있다.
일실시예에 따른 덧셈 누적 연산을 수행하는 단계는 제2 다항식의 계수의 위치 및 다항식 차수 N-1 별 각각의 접근 인덱스를 고려하여 곱셈 연산된 결과에 대해 제3 다항식의 계수로 덧셈 누적 연산을 수행할 수 있다.
일실시예에 따른 덧셈 누적 연산을 수행하는 단계는 곱셈 연산된 결과가 상기 레지스터의 레인 사이즈보다 큰 경우, 음수 다항식과 제3 다항식의 계수 간에 덧셈 누적 연산을 수행할 수 있다.
일실시예에 따른 차수 환원 연산을 처리하는 단계는 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리할 수 있다.
다른 실시예에 따른 다항식 연산 최적화 처리 방법은 다항식 차수 N-1을 가지는 제1 다항식의 계수와 제2 다항식 계수 간의 다항식 곱셈을 수행하여 다항식 차수 N-1보다 큰 차수를 갖는 제3 다항식을 생성하는 단계; 및 차수 환원 연산을 통해 상기 제3 다항식의 차수가 다항식 차수 N-1를 갖도록 다항식 차수 N-1보다 큰 차수의 항을 변환하는 단계를 포함할 수 있다.
일실시예에 따른 다항식 연산 최적화 처리 장치에 있어서, 프로세서를 포함하고, 프로세서는, 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 및 제3 다항식을 생성하고, 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성하고, 다항식 차수 N-1 및 레지스터의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정하고, 제2 다항식의 계수를 고려하여 반복 연산 횟수에 따라 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행하고, 덧셈 누적 연산된 제3 다항식에 대응하여 다항식 차수 N-1를 갖도록 제3 다항식에 대해 차수 환원 연산을 처리할 수 있다.
일실시예에 따른 프로세서는, 제2 다항식의 계수가 나타내는 값이 '1'인 경우, 제2 다항식의 계수와 제1 다항식의 계수 간에 곱셈 연산을 수행하고, 제2 다항식의 계수가 나타내는 값이 '-1'인 경우, 제2 다항식의 계수와 음수 다항식의 계수 간에 곱셈 연산을 수행할 수 있다.
다항식 연산 최적화 처리 방법 프로세서는, 제2 다항식의 계수의 위치 및 다항식 차수 N-1 별 각각의 접근 인덱스를 고려하여 곱셈 연산된 결과에 대해 제3 다항식의 계수로 덧셈 누적 연산을 수행할 수 있다.
일실시예에 따른 프로세서는, 곱셈 연산된 결과가 레지스터의 레인 사이즈보다 큰 경우, 음수 다항식과 제3 다항식의 계수 간에 덧셈 누적 연산을 수행할 수 있다.
일실시예에 따른 프로세서는, 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리할 수 있다.
본 발명은 복수의 다항식을 연산하기 위한 계수 특성을 이용하여 복수의 다항식에 대한 곱셈 연산을 병렬적으로 수행할 수 있다.
본 발명은 Ring-LWE 문제에 기초하는 래티스-기반 암호를 기반으로 다항식 곱셈 연산 및 벡터 덧셈 연산을 효율적으로 수행할 수 있다.
본 발명은 다항식 차수 N-1보다 큰 차수를 가지는 다항식에 대하여 차수 환원 연산을 수행함으로써, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환할 수 있다.
도 1은 본 발명의 일실시예에 따른 다항식의 계수 특성을 이용하는 다항식 연산 최적화 처리 장치를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 데이터 어레이로부터 다항식 연산을 위한 데이터를 레지스터에 로드(Data Load)하는 과정을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 레지스터의 데이터를 데이터 어레이로 저장(Data Store)하는 과정을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 데이터 어레이 간의 덧셈 연산을 수행하는 과정을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 데이터 어레이 간의 뺄셈 연산을 수행하는 과정을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 데이터 어레이 간의 곱셈 연산을 병렬적으로 수행하는 과정을 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 복수의 다항식을 이용하여 병렬적으로 곱셈 연산을 수행하는 알고리즘을 도시한 도면이다.
도 8은 본 발명의 일실시예에 따른 다항식 연산 최적화 처리 방법의 복수의 다항식을 연산하는 과정을 도시한 플로우 차트이다.
도 9은 본 발명의 일실시예에 따른 다항식 연산 최적화 처리 방법에 따른 차수 환원 연산을 수행하는 과정을 도시한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일실시예에 따른 다항식의 계수 특성을 이용하는 다항식 연산 최적화 처리 장치를 도시한 도면이다.
도 1을 참고하면, 다항식 연산 최적화 처리 장치(100)는 도 1에 도시된 바와 같이 프로세서(110)를 포함할 수 있다. 프로세서(110)는 다항식의 계수 특성을 이용하여 다항식 곱셈과 같은 연산을 수행할 수 있다.
자세하게, 다항식 연산 최적화 처리 장치(100)은 LWE 문제(Learning with Errors problem)에 기반하여 래티스-기반 암호(Lattice-based cryptography)를 이용한 처리 장치일 수 있다. 다항식 연산 최적화 처리 장치(100)은 래티스-기반 암호를 위한 키 생성(key generation), 부호화(encryption), 복호화(decryption)에 이용되는 다항식 곱셈 및 벡터 덧셈(matrix multiplication and vector addition)을 최적화된 속도로 수행할 수 있다.
여기서, LWE 문제는 다음과 같이 간단히 설명할 수 있다. 집합 Zq의 확률 분포 D가 있다고 하자. 여기서, q는 소수(prime number)이고, 소수의 집함으로, Zq = {1, 2, …, q}일 수 있다. 확률 분포 D는 Zq에서 임의의 수를 선택할 때 각 수가 선택될 확률의 분포를 의미한다. LWE 문제에 의하면, Zq에서 선택한 에러 값이 정수
Figure 112018116729098-pat00001
이상일 확률은 η이며 정당한 파라미터 값으로 설정하였다는 가정 하에 η은 매우 작은(negligible) 값이 된다. 그리고, η이 매우 작은 값이 됨에 따라 LWE 문제를 풀기는 매우 어려우며, 이러한 사실에 기반하여 LWE 문제의 내용은 다음과 같다.
이에, 'LWE 문제를 해결한다' 함은 Zq의 원소로 구성되어 있는 비밀 값의 n차 벡터
Figure 112018116729098-pat00002
, 임의의 n차 벡터
Figure 112018116729098-pat00003
에 대하여 (a, z)의 독립적인 샘플들 (a1, z1), (a2, z2), …, (an, zn)이 주어졌을 때, 각 샘플 (a1, z1), (a2, z2), …, (an, zn)이
Figure 112018116729098-pat00004
에 속하는 균등한 임의의 분포(uniform random distribution)를 갖는 a1, a2, …, an와 동일한지 알아내는 것이다. 단, zi = <a,x> + ei (i는 1 ~ n인 자연수)이며, <a, x>는 벡터 a와 벡터 x의 내적(inner product)을 의미하고, (a, z)는 에 속한다.
여기서, 균등한 임의의 분포는, 위의 확률 분포 D의 경우와는 달리, Zq에서 임의의 수를 선택할 때, 각 수가 선택될 확률의 분포가 균등한 분포를 의미한다. 그리고, ai은 벡터 a의 각 성분(component)을, zi은 벡터 z의 각 성분을, ei은 에러 값 벡터 e의 각 성분을 의미한다. ai, zi, ei은 모두 Zq의 원소이다.
LWE 문제에 대한 해결의 키는 포함된 에러 값 벡터 e를 제거하여 비밀 값 벡터 x에 대한 정보를 알아내는(Learn) 것으로, 이때, 에러 값이 클수록 x를 알아내는 것이 매우 어렵다. 하지만, 이를 인증 스킴에 적용할 경우 인증 결과의 오류가 발생할 확률이 매우 높아지므로 x에 대한 기밀성을 보장하는 최소 상계 값 E가 선택될 수 있다.
LWE 문제는 포스트-양자 암호 기반한 래티스를 위한 가정으로서, 사용될 수 있다. 래티스-기반 암호에서, 에러는 부호화, 복호화 절차 동안 사용될 수 있고, 가우시안 샘플러(Gaussian sampler)과 같은 임의의 샘플러에 의해 생성될 수 있다. 부호화 및 복호화를 수행하는 과정에서 제1 다항식인 다항식 A와 제2 다항식인 비밀 다항식 S 간의 다항식 곱셈이 수행될 수 있고, 이후 에러와 벡터 덧셈이 수행될 수 있다.
이와 같은, 래티스-기반 암호 알고리즘은 양자 계산 환경(quantum computing environment)에 대한 비밀을 제공하기 위한 LWE 문제에 기반하며, 효율적인 실현을 제공할 수 있다.
이에, 본 발명에서 제안하는 프로세서(110)는 상술한 LWE 문제에 기초한 래티스-기반 암호를 이용하여, 제1 다항식과 제2 다항식 간의 다항식 곱셈을 수행할 수 있다. 그리고, 프로세서(110)는 제1 다항식과 제2 다항식 간의 다항식 곱셈의 결과를 제3 다항식에 누적 시키는 연산과 차수 환원 연산을 수행할 수 있다.
보다 구체적으로, 프로세서(110)는 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식을 생성할 수 있다. 제1 다항식, 제2 다항식은 모두 같은 차수를 가질 수 있으며, 프로세서(110)는 난수 생성기를 통해 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식을 생성할 수 있다. 여기서, 제2 다항식의 경우, 프로세서(110)는 난수 생성 이후, 최하위 2 비트의 값을 이용하여 제2 다항식의 계수를 설정할 수 있다. 다시 말해, 제2 다항식의 최하위 2 비트의 값은 '00', '01', '10', '11' 중 하나의 비트를 포함할 수 있다.
그리고, 프로세서(110)는 제2 다항식의 최하위 2 비트의 값에 따라 이용하여 제2 다항식의 계수를 '0', '1', '-1' 중 하나의 값으로 설정할 수 있다. 일례로, 프로세서(110)는 제2 다항식의 최하위 2비트가 '00'인 경우, '-1'로 설정되며, '01'인 경우, '1'로 설정되고, '10' 혹은 '11'인 경우에는 '0'으로 설정할 수 있다.
프로세서(110)는 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성할 수 있다. 즉, 프로세서(110)는 제 1 다항식에 대해 -1과의 곱셈 연산 결과를 미리 계산하여, 임의의 레지스터에 저장할 수 있다. 그리고, 프로세서(110)는 제1 다항식 및 제2 다항식이 갖는 차수(N-1)의 개수(N)와 데이터 어레이의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정할 수 있다. 반복 연산 횟수는, 제1 다항식 및 제2 다항식이 갖는 차수(N-1)의 개수(N)를 레지스터의 레인 개수로 나눈 몫으로 결정될 수 있다. 여기서, 레지스터의 레인 개수는 레지스터가 가지는 데이터의 개수를 의미할 수 있다.
프로세서(110)는 제2 다항식의 계수를 이용하여 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 반복 연산 횟수만큼 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행할 수 있다. 이를 위해, 프로세서(110)는 제2 다항식의 계수가 '1' 혹은 '-1'인지를 확인할 수 있다. 그리고, 프로세서(110)는 제2 다항식의 계수가 나타내는 값이 '1'인 경우, 제2 다항식의 계수와 제1 다항식의 계수 간에 곱셈 연산을 수행하고, 제2 다항식의 계수가 나타내는 값이 '-1'인 경우, 제2 다항식의 계수와 음수 다항식의 계수 간에 곱셈 연산을 수행할 수 있다.
프로세서(110)는 제2 다항식의 계수의 위치 및 다항식 차수 N-1 별 각각의 접근 인덱스를 고려하여 곱셈 연산된 결과에 대해 제3 다항식의 계수로 덧셈 누적 연산을 수행할 수 있다.
그리고, 프로세서(110)는 곱셈 연산된 결과가 상기 레지스터의 레인 사이즈보다 큰 경우, 음수 다항식과 제3 다항식의 계수 간에 덧셈 누적 연산을 수행할 수 있다. 다시 말해, 프로세서(110)는 제1 다항식의 열과 상기 제2 다항식의 행이 레지스터의 레인 사이즈(lane size) 밖에 위치한 경우, 제1 다항식 혹은 음수 다항식을 제 3 다항식에 덧셈 누적 연산을 수행할 수 있다.
프로세서(110)는 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리할 수 있다.
결국, 다항식 연산 최적화 처리 장치는 제1 다항식, 제2 다항식 및 레지스터의 데이터를 로딩하여 제1 다항식과 제2 다항식 간에 곱셈 연산을 수행할 수 있다. 그리고, 다항식 연산 최적화 처리 장치는 다항식 각각의 접근 인덱스를 고려하여 곱셈 연산을 수행한 결과와 제3 다항식을 덧셈 누적 연산함으로써 다항식 곱셈 연산을 수행할 수 있다.
도 2는 본 발명의 일실시예에 따른 데이터 어레이로부터 다항식 연산을 위한 데이터를 레지스터에 로드(Data Load)하는 과정을 도시한 도면이다.
도 2를 참고하면, 다항식 연산 최적화 처리 장치는 다항식을 이용한 곱셈 연산 및 벡터 덧셈 연산을 위해, 다음의 표 1과 같은 고유 함수(intrinsic function)를 사용할 수 있다.
Figure 112018116729098-pat00005
일례로, 고유 함수는 NEON 고유 함수로, 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 사이즈)로 분리될 수 있다.
Figure 112018116729098-pat00006
이때, SIMD는 병렬 프로세서의 한 종류로서, 하나의 명령어로 여러 개를 동시에 계산할 수 있다. 따라서, ARM SIMD(ARM Advanced Single Instruction Multiple Data) Extension인 NEON은 멀티미디어 및 신호 처리 응용 프로그램의 성능을 향상시키기 위해 ARM에서 개발한 64/128 비트 복합 SIMD 아키텍처를 나타낼 수 있다.
고유 함수로서, Load 함수는 데이터를 로드할 수 있다. 구체적으로, Load 함수는 데이터 어레이(data array)로부터 128-bit인 데이터를 로드할 수 있다. Load 함수는 사이즈가 16인 8-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있고, Load 함수는 사이즈가 8인 16-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있고, Load 함수는 사이즈가 4인 32-bit 데이터 어레이로부터 128-bit인 데이터를 로드할 수 있다.
일례로, 다항식 연산 최적화 처리 장치는 NEON 고유 함수 중 Load 함수를 이용하여 16-bit*8 사이즈를 갖는 데이터 어레이로부터 128-bit인 데이터를 레지스터로 로드할 수 있다. 예를 들면, 다항식 연산 최적화 처리 장치는 Load 함수를 이용하여 3 lane의 16-bit인 데이터를 로드할 수 있다.
도 3은 본 발명의 일실시예에 따른 레지스터의 데이터를 데이터 어레이로 저장(Data Store)하는 과정을 도시한 도면이다.
도 3을 참고하면, 다항식 연산 최적화 처리 장치는 다항식을 이용한 곱셈 연산 및 벡터 덧셈 연산을 위해, 도 3에서 언급한 고유 함수(intrinsic function)를 사용할 수 있다. 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인 데이터를 저장할 수 있다.
일례로, 다항식 연산 최적화 처리 장치는 16-bit*8 사이즈를 갖는 데이터 어레이에 128-bit인 데이터를 저장할 수 있다. 구체적으로, 다항식 연산 최적화 처리 장치는 사이즈 8인 8개의 lane(0 lane, 1 lane, 2 lane, ~ 7 lane)에 각각 16-bit인 데이터를 저장할 수 있다. 예를 들면, 다항식 연산 최적화 처리 장치는 Store 함수를 이용하여 3 lane에 16-bit인 데이터를 저장할 수 있다.
도 4는 본 발명의 일실시예에 따른 데이터 어레이 간의 덧셈 연산을 수행하는 과정을 도시한 도면이다.
도 4를 참고하면, 다항식 연산 최적화 처리 장치는 복수의 데이터 어레이(128-bit 데이터)간에 덧셈 연산을 수행할 수 있다. 자세하게, 다항식 연산 최적화 처리 장치는 데이터 어레이ⓐ(401) 및 데이터 어레이ⓑ(402) 간에 덧셈 연산을 수행할 수 있다. 데이터 어레이ⓐ(401) 및 데이터 어레이ⓑ(402)는 각각 16-bit*8 사이즈를 가지며, 128-bit 데이터를 포함할 수 있다.
다항식 연산 최적화 처리 장치는 데이터 어레이ⓐ(401) 및 데이터 어레이ⓑ(402) 간에 덧셈 연산을 수행한 결과를 데이터 어레이ⓒ(403)에 저장할 수 있다. 이때, 다항식 연산 최적화 처리 장치는 덧셈 연산을 수행한 결과를 아스키 코드 값으로 데이터 어레이ⓒ(403)에 저장할 수 있다. 다항식 연산 최적화 처리 장치는 덧셈 연산을 수행한 데이터 어레이ⓐ(401)의 접근 인덱스 및 데이터 어레이ⓑ(402)의 인덱스를 고려하여 데이터 어레이ⓒ(403)에 덧셈 연산을 수행한 결과를 저장할 수 있다.
도 5는 본 발명의 일실시예에 따른 데이터 어레이 간의 뺄셈 연산을 수행하는 과정을 도시한 도면이다.
도 5를 참고하면, 다항식 연산 최적화 처리 장치는 16-bit*8 사이즈를 갖는 복수의 데이터 어레이(128-bit 데이터)간 뺄셈 연산을 수행할 수 있다. 자세하게, 다항식 연산 최적화 처리 장치는 데이터 어레이ⓐ(501) 및 데이터 어레이ⓑ(502) 간에 덧셈 연산을 수행할 수 있다. 데이터 어레이ⓐ(501) 및 데이터 어레이ⓑ(502)는 각각 16-bit*8 사이즈를 가지며, 128-bit 데이터를 포함할 수 있다.
다항식 연산 최적화 처리 장치는 덧셈 연산을 수행한 결과를 아스키 코드 값으로 데이터 어레이ⓒ(403)에 저장할 수 있다. 그리고, 다항식 연산 최적화 처리 장치는 덧셈 연산을 수행한 데이터 어레이ⓐ(501)의 접근 인덱스 및 데이터 어레이ⓑ(502)의 인덱스를 고려하여 데이터 어레이ⓒ(503)에 덧셈 연산을 수행한 결과를 저장할 수 있다.
도 6은 본 발명의 일실시예에 따른 데이터 어레이 간의 곱셈 연산을 병렬적으로 수행하는 과정을 도시한 도면이다.
도 6을 참고하면, 다항식 연산 최적화 처리 장치는 복수의 다항식 간의 곱셈 연산을 수행하는 일련의 과정을 나타낼 수 있다.여기서, 복수의 다항식 각각은 31차 다항식으로, 총 32개의 16비트 데이터 사용할 수 있으며, 데이터는 512 비트(32개*16)를 가지며, 비트 사각형 1개당 16비트의 데이터를 의미할 수 있다. 일례로, 다항식 연산 최적화 처리 장치는 31차를 가지는 제1 다항식(601) 및 제2 다항식(602) 간에 곱셈 연산을 수행할 수 있다.
이 때, 다항식 연산 최적화 처리 장치는 128비트 단위로 제1 다항식(601) 및 제2 다항식(602)에 대한 고속 병렬화 연산 처리가 가능할 수 있다.
다항식 연산 최적화 처리 장치는 왼쪽에서부터 순차적으로 일련의 크기를 가지면서, 고속 병렬화 연산 처리를 수행할 수 있다. 여기서, 일련의 크기는 128비트(8개*16비트)로, 다항식 연산 최적화 처리 장치는 31차 데이터 어레이를 대상으로 순서에 맞춰 128비트(8개*16비트) 크기로 고속 병렬화 연산 처리를 수행할 수 있다. 고속 병렬화 연산 처리되는 128비트(8개*16비트) 크기는 고속 병렬화를 위한 레지스터를 나타낼 수 있다.
다항식 연산 최적화 처리 장치는 128 비트 크기를 갖는 고속 병렬화 레지스터를 활용하여 다항식 곱셈 연산을 수행하며, 곱셈 연산 수행 결과인 2*N차를 가지는 다항식을 가지게 됩니다. 이때, 다항식 연산 최적화 처리 장치는 복수의 다항식 각각의 곱셈 결과를 해당 위치에 누적 시키는 구조를 이용할 수 있다. 다항식 연산 최적화 처리 장치는 모든 다항식 곱셈 연산이 끝난 후, 차수 환원 연산이 수행되며, 128비트 크기의 고속 병렬화 레지스터를 사용하여 차수 환원 연산을 수행할 수 있다.
도 7은 본 발명의 일실시예에 따른 복수의 다항식을 이용하여 병렬적으로 곱셈 연산을 수행하는 알고리즘을 도시한 도면이다.
도 7을 살펴보면, 본 알고리즘(algorithm)은 복수의 다항식을 이용하여 병렬적으로 다항식 곱셈 및 벡터 덧셈을 수행하기 위한 절차, 명령어들의 집합일 수 있다. 도 7에 도시된 바와 같이 다항식 A는 제1 다항식을 나타내며, 다항식 B는 제2 다항식을 나타내고, 다항식 C는 제3 다항식을 나타낼 수 있다. 여기서, 다항식 곱셈 및 벡터 덧셈은 SIMD를 이용하여 수행될 수 있다.
다항식 A는 제1 다항식
Figure 112018116729098-pat00007
이며, 다항식 B는 제2 다항식
Figure 112018116729098-pat00008
이며, 다항식 C는 제3 다항식
Figure 112018116729098-pat00009
을 나타낼 수 있다. 본 알고리즘에 따르면, 변수 i는 다항식 B의 계수의 위치를 나타내기 위해 사용되는 인덱스를 나타낼 수 있다. 그리고, 변수 j는 B[i]의 값이 1, -1에 따라서 다항식 A 혹은 다항식 A2를 누적시킬 때 사용되며, 차수 환원 연산시, 계수별 접근 인덱스로 사용될 수 있다. 변수 i 및 변수 j는, 0부터 N-1까지 1씩 증가할 수 있다.
다항식 연산 최적화 처리 장치는 다항식 A의 모든 계수 값들과 다항식 B의 모든 계수 값들 간의 다항식 곱셈하고, 다항식 곱셈의 결과와 다항식 C를 누적 덧셈 연산 및 차수 환원 연산을 고속으로 처리할 수 있다.
도 8은 본 발명의 일실시예에 따른 다항식 연산 최적화 처리 방법의 복수의 다항식을 연산하는 과정을 도시한 플로우 차트이다.
단계(801)에서 다항식 연산 최적화 처리 장치는, 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 및 제3 다항식을 생성할 수 있다. 다항식 연산 최적화 처리 장치는, 난수 생성기를 통해 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식을 생성할 수 있다. 다항식 연산 최적화 처리 장치는 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성할 수 있다. 여기서, A[]는 제1 다항식, A2[]는 음수 다항식, B[]는 제2 다항식, C[]는 제3 다항식을 의미할 수 있다.
단계(802)에서 다항식 연산 최적화 처리 장치는, 다항식 차수 N-1 및 레지스터의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정할 수 있다.
다항식 연산 최적화 처리 장치는, 제2 다항식의 계수를 이용하여 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 반복 연산 횟수만큼 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행할 수 있다. 다항식 연산 최적화 처리 장치는, 다음의 단계(803) ~ 단계(811) 거쳐 다항식 연산을 수행할 수 있다.
단계(803)에서 다항식 연산 최적화 처리 장치는, 다항식의 차수가 N-1으로 가정하였을 때, 변수 i는 0부터 N-1까지 증가할 수 있다. 변수 i는 제2 다항식 계수의 위치를 나타내기 위해 사용되는 인덱스일 수 있다. 다항식 연산 최적화 처리 장치는 변수 i의 값을 이용하여 제2 다항식의 계수가 나타내는 값을 확인할 수 있다. 제2 다항식의 계수가 나타내는 값은 1, 0, -1 중 하나의 값을 가질 수 있다. 다항식 연산 최적화 처리 장치는 변수 i의 값이 N보다 작은지를 확인할 수 있다.
i의 값이 N보다 작으면(단계: 803, Yes), 단계(804)에서 다항식 연산 최적화 처리 장치는, 제2 다항식의 계수가 나타내는 값이 '1'인지 확인할 수 있다. 다시 말해, 다항식 연산 최적화 처리 장치는 제2 다항식의 i번째 계수가 '1'의 값을 갖는지 여부를 확인할 수 있다. 이후, 다항식 연산 최적화 처리 장치는 변수 i의 값을 1씩 증가할 수 있다.
변수 i의 위치에 있는 제2 다항식의 계수가 나타내는 값이 '1'이면(단계: 804, Yes), 단계(805)에서 다항식 연산 최적화 처리 장치는 변수 j의 값이 N보다 작은지 확인할 수 있다. 다시 말해, 다항식 연산 최적화 처리 장치는 다항식 곱셈 연산을 수행할 수 있다. 자세하게, 변수 i의 위치에 있는 제2 다항식의 계수가 나타내는 값이 '1'이면, 다항식 연산 최적화 처리 장치는 변수 j의 값이 N보다 작은지 확인할 수 있다.
변수 j의 값이 N보다 작으면(단계:805, Yes), 단계(806)에서 다항식 연산 최적화 처리 장치는, 다항식 곱셈 연산을 수행한 결과를 제3 다항식의 i+j 위치에 제1 다항식 A의 j 위치의 계수 값을 누적 연산할 수 있다. 누적 연산 시, 다항식 연산 최적화 처리 장치는 단계(802)에서 계산된 반복 연산 횟수를 기반으로 레지스터를 사용하여 고속 연산을 수행할 수 있다. 다시 말해, 다항식 연산 최적화 처리 장치는 다항식 2의 계수의 위치를 기반으로 제1 다항식과 제3 다항식에 대해 덧셈 연산을 수행할 수 있다. 이후, 다항식 연산 최적화 처리 장치는 변수 j를 0부터 N-1까지 1씩 증가 시킬 수 있다.
변수 i의 위치에 있는 제2 다항식의 계수가 나타내는 값이 '1'이 아니면(단계: 804, No), 단계(807)에서 다항식 연산 최적화 처리 장치는, 변수 i의 위치에 있는 제2 다항식의 계수가 나타내는 값이 '-1'인지 확인할 수 있다. 다시 말해, 다항식 연산 최적화 처리 장치는, 변수 i의 위치에 있는 제2 다항식의 계수가 나타내는 값이 -1인지 확인할 수 있다.
제2 다항식의 계수가 나타내는 값이 -1이 아니면(단계:807, No) 다항식 연산 최적화 처리 장치는, 단계(803)의 동작을 수행할 수 있다.
제2 다항식의 계수가 나타내는 값이 -1이면(단계:807, Yes), 다항식 연산 최적화 처리 장치는, 단계(808)에서 다항식 연산 최적화 처리 장치는, 변수 j의 값이 N보다 작은지 확인할 수 있다.
변수 j의 값이 N보다 작으면(단계:808, Yes), 단계(809)에서 다항식 연산 최적화 처리 장치는, 음수 다항식을 j값(0부터 N-1까지 증가)과 인덱스 i값을 바탕으로 연산 결과 다항식 C의 i+j 위치에 다항식 A2의 인덱스 j위치의 계수 값을 누적시킬 수 있다. 다항식 연산 최적화 처리 장치는 해당 누적 연산 또한 고속 병렬화 레지스터를 사용하여 고속 연산을 수행할 수 있다.
i의 값이 N보다 작지 않으면(단계: 803, No), 단계(810)에서 다항식 연산 최적화 처리 장치는, 변수 j의 값이 N보다 작은지 확인할 수 있다. 이는 인덱스 i값이 N보다 큰 경우, 모든 다항식 곱셈 연산 수행이 완료되어 차수 환원 연산을 수행할 수 있다.
변수 j의 값이 N보다 작으면(단계:808, Yes), 단계(811)에서 다항식 연산 최적화 처리 장치는, 인덱스 j를 0부터 N-1까지 증가시키며, 제3 다항식 의 j차 계수 값에 j+N차 계수를 빼는 구조로 차수 환원 연산을 수행할 수 있다. 차수 환원 연산(Reduction)을 은 환(ring) 상의 다항식 연산을 기반으로 한 공개키 암호 방식에 대한 것으로써, 사용되는 다항식은 최대 N-1 차수를 가지는 다항식입니다. 여기서, 최대 차수가 N-1인 다항식 간의 곱셈 시, 결과 중 차수가 N-1보다 큰 차수를 가지는 다항식이 생성된다. 이에, 차수 환원 연산은 차수가 N-1보다 큰 차수를 다시 N-1 차수를 가지는 다항식으로 변환하는 과정을 의미할 수 있다.
또한, 본 특허 건에서 제안하는 고속의 차수 환원 연산은 고속의 다항식 곱셈 연산을 처리한 후, 128비트 단위의 데이터(계수데이터가 16비트 인 경우, 한번에 8개씩) 고속으로 차수 환원 연산을 처리하는 방식을 적용할 수 있다.
다항식 연산 최적화 처리 장치는 모든 연산이 종료되면, 최종 다항식 곱셈 연산 결과를 얻을 수 있으며, 종료할 수 있다.
여기서, 단계(806), (809), (811) 각각에 표현된 C[j], A[j], A2[j]는 각각의 다항식에서 j번째 차수의 계수 값을 의미할 수 있다.
도 9는 본 발명의 일실시예에 따른 다항식 연산 최적화 처리 방법에 따른 차수 환원 연산을 수행하는 과정을 도시한 도면이다.
도 9를 참고하면, 다항식 연산 최적화 처리 장치는 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 간에 곱셈 연산을 수행하고, 다항식 각각의 접근 인덱스에 따라 곱셈 연산의 결과와 제3 다항식을 덧셈 누적 연산을 수행함으로써 다항식 곱셈 연산을 수행할 수 있다.
다항식 연산 최적화 처리 장치는 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리할 수 있다. 다시 말해, 다항식 연산 최적화 처리 장치는 차수 환원 연산(최대 차수가 N-1인 경우,) 시, x^N= -1 값을 가지도록 제3 다항식에 대한 차수 환원 연산을 처리할 수 있다 이에, 다항식 연산 최적화 처리 장치는 사물인터넷 게이트웨이 환경에서 대용량 암호화 다항식 연산에 최적화된 속도를 제공할 수 있다.
이러한, 다항식 연산 최적화 처리 방법을 통해 다항식 차수 변화에 따른 100,000번의 동작을 실행한다고 가정할 때, 그에 대한 결과는 아래의 표3과 같을 수 있다. 표 3은 실행된 다항식 차수 변화에 따라 실행된 동작의 평균일 수 있다. 아래의 표 3과 같이 일반적인 다항식 계산 방법과 본 발명에서 제안한 방법을 비교하였을 때, 본 발명에서 제안한 방법은 전치 다항식 계산에 있어 더 좋은 성능을 나타내는 것을 확인할 수 있었다.(단위: ㅅs)
Figure 112018116729098-pat00010
표 3에서 확인가능 하듯이, 본 발명에서 제안된 방법이 일반적인 다항식 계산 방법보다 각각 6.95%, 7.14%, 7.97%, 7.41%, 8.26% 향상된 성능을 나타내는 것을 확인할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100: 다항식 연산 최적화 처리 장치
110: 프로세서

Claims (13)

  1. 다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 및 제3 다항식을 생성하는 단계;
    상기 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성하는 단계;
    상기 다항식 차수 N-1 및 레지스터의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정하는 단계;
    상기 제2 다항식의 계수를 이용하여 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 반복 연산 횟수만큼 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행하는 단계; 및
    상기 덧셈 누적 연산된 제3 다항식에 대응하여 다항식 차수 N-1를 갖도록 제3 다항식에 대해 차수 환원 연산을 처리하는 단계
    를 포함하는 다항식 연산 최적화 처리 방법.
  2. 제1항에 있어서,
    상기 덧셈 누적 연산을 수행하는 단계는,
    상기 제2 다항식의 계수가 나타내는 값이 '1'인 경우, 제2 다항식의 계수와 제1 다항식의 계수 간에 곱셈 연산을 수행하는 다항식 연산 최적화 처리 방법.
  3. 제1항에 있어서,
    상기 덧셈 누적 연산을 수행하는 단계는,
    상기 제2 다항식의 계수가 나타내는 값이 '-1'인 경우, 제2 다항식의 계수와 음수 다항식의 계수 간에 곱셈 연산을 수행하는 다항식 연산 최적화 처리 방법.
  4. 제1항에 있어서,
    상기 덧셈 누적 연산을 수행하는 단계는,
    상기 제2 다항식의 계수의 위치 및 다항식 차수 N-1 별 각각의 접근 인덱스를 고려하여 곱셈 연산된 결과에 대해 제3 다항식의 계수로 덧셈 누적 연산을 수행하는 다항식 연산 최적화 처리 방법.
  5. 제1항에 있어서,
    상기 덧셈 누적 연산을 수행하는 단계는,
    상기 곱셈 연산된 결과가 상기 레지스터의 레인 사이즈보다 큰 경우, 상기 음수 다항식과 제3 다항식의 계수 간에 덧셈 누적 연산을 수행하는 다항식 연산 최적화 처리 방법.
  6. 제1항에 있어서,
    상기 차수 환원 연산을 처리하는 단계는,
    상기 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리하는 다항식 연산 최적화 처리 방법.
  7. 다항식 차수 N-1을 가지는 제1 다항식의 계수와 제2 다항식 계수 간의 다항식 곱셈을 수행하여 다항식 차수 N-1보다 큰 차수를 갖는 제3 다항식을 생성하는 단계; 및
    차수 환원 연산을 통해 상기 제3 다항식의 차수가 다항식 차수 N-1를 갖도록 다항식 차수 N-1보다 큰 차수의 항을 변환하는 단계
    를 포함하는 다항식 연산 최적화 처리 방법.
  8. 제1항 내지 제6항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
  9. 다항식 연산 최적화 처리 장치에 있어서,
    프로세서를 포함하고,
    상기 프로세서는,
    다항식 차수 N-1을 가지는 제1 다항식, 제2 다항식 및 제3 다항식을 생성하고,
    상기 제1 다항식과 -1을 곱셈 연산한 음수 다항식을 생성하고,
    상기 다항식 차수 N-1 및 레지스터의 레인 개수를 기반으로 고속 병렬화를 위한 반복 연산 횟수를 결정하고,
    상기 제2 다항식의 계수를 고려하여 반복 연산 횟수에 따라 제1 다항식의 계수 또는, 음수 다항식의 계수와 제2 다항식의 계수 간에 곱셈 연산을 수행하고, 곱셈 연산된 결과를 제3 다항식에 덧셈 누적 연산을 수행하고,
    상기 덧셈 누적 연산된 제3 다항식에 대응하여 다항식 차수 N-1를 갖도록 제3 다항식에 대해 차수 환원 연산을 처리하는 다항식 연산 최적화 처리 장치.
  10. 제9항에 있어서,
    상기 프로세서는,
    상기 제2 다항식의 계수가 나타내는 값이 '1'인 경우, 제2 다항식의 계수와 제1 다항식의 계수 간에 곱셈 연산을 수행하고,
    상기 제2 다항식의 계수가 나타내는 값이 '-1'인 경우, 제2 다항식의 계수와 음수 다항식의 계수 간에 곱셈 연산을 수행하는 다항식 연산 최적화 처리 장치.
  11. 제9항에 있어서,
    상기 프로세서는,
    상기 제2 다항식의 계수의 위치 및 다항식 차수 N-1 별 각각의 접근 인덱스를 고려하여 곱셈 연산된 결과에 대해 제3 다항식의 계수로 덧셈 누적 연산을 수행하는 다항식 연산 최적화 처리 장치.
  12. 제9항에 있어서,
    상기 프로세서는,
    상기 곱셈 연산된 결과가 상기 레지스터의 레인 사이즈보다 큰 경우, 상기 음수 다항식과 제3 다항식의 계수 간에 덧셈 누적 연산을 수행하는 다항식 연산 최적화 처리 장치.
  13. 제9항에 있어서,
    상기 프로세서는,
    상기 덧셈 누적 연산된 제3 다항식의 차수가 다항식 차수 N-1보다 큰 차수를 가지는 경우, 제3 다항식의 차수를 다항식 차수 N-1가 되도록 변환하는 차수 환원 연산을 처리하는 다항식 연산 최적화 처리 장치.
KR1020180145458A 2018-11-22 2018-11-22 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체 KR102075848B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180145458A KR102075848B1 (ko) 2018-11-22 2018-11-22 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
PCT/KR2019/000520 WO2020105797A1 (ko) 2018-11-22 2019-01-14 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180145458A KR102075848B1 (ko) 2018-11-22 2018-11-22 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체

Publications (1)

Publication Number Publication Date
KR102075848B1 true KR102075848B1 (ko) 2020-02-10

Family

ID=69627492

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180145458A KR102075848B1 (ko) 2018-11-22 2018-11-22 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체

Country Status (2)

Country Link
KR (1) KR102075848B1 (ko)
WO (1) WO2020105797A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111256835A (zh) * 2020-03-13 2020-06-09 西北工业大学 超参数多项式物理模型的测温红外热像仪标定方法及装置
CN112329519A (zh) * 2020-09-21 2021-02-05 中国人民武装警察部队工程大学 一种安全的在线指纹匹配方法
KR20220002046A (ko) * 2020-06-30 2022-01-06 한양대학교 산학협력단 컨볼루션 신경망 모델 검증 방법 및 그 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090090219A (ko) * 2008-02-20 2009-08-25 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
JP2009205535A (ja) * 2008-02-28 2009-09-10 Nippon Telegr & Teleph Corp <Ntt> 多項式乗算装置、多項式乗算方法及びプログラム
KR20100025403A (ko) * 2008-08-27 2010-03-09 고려대학교 산학협력단 다항식 기저 기반의 이진체 병렬 곱셈 장치 및 방법과 이를이용한 마이크로프로세서

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100457177B1 (ko) * 2002-12-20 2004-11-16 한국전자통신연구원 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
JP6413598B2 (ja) * 2014-10-10 2018-10-31 富士通株式会社 暗号処理方法、暗号処理装置、及び暗号処理プログラム
US10097351B1 (en) * 2016-09-15 2018-10-09 ISARA Corporation Generating a lattice basis for lattice-based cryptography
KR101837750B1 (ko) * 2017-01-25 2018-03-13 공주대학교 산학협력단 유한체 병렬 곱셈 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090090219A (ko) * 2008-02-20 2009-08-25 고려대학교 산학협력단 다항식 기저 기반의 유한체 직렬 곱셈 장치 및 방법
JP2009205535A (ja) * 2008-02-28 2009-09-10 Nippon Telegr & Teleph Corp <Ntt> 多項式乗算装置、多項式乗算方法及びプログラム
KR20100025403A (ko) * 2008-08-27 2010-03-09 고려대학교 산학협력단 다항식 기저 기반의 이진체 병렬 곱셈 장치 및 방법과 이를이용한 마이크로프로세서

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111256835A (zh) * 2020-03-13 2020-06-09 西北工业大学 超参数多项式物理模型的测温红外热像仪标定方法及装置
KR20220002046A (ko) * 2020-06-30 2022-01-06 한양대학교 산학협력단 컨볼루션 신경망 모델 검증 방법 및 그 장치
KR102605644B1 (ko) 2020-06-30 2023-11-23 한양대학교 산학협력단 컨볼루션 신경망 모델 검증 방법 및 그 장치
CN112329519A (zh) * 2020-09-21 2021-02-05 中国人民武装警察部队工程大学 一种安全的在线指纹匹配方法
CN112329519B (zh) * 2020-09-21 2024-01-02 中国人民武装警察部队工程大学 一种安全的在线指纹匹配方法

Also Published As

Publication number Publication date
WO2020105797A1 (ko) 2020-05-28

Similar Documents

Publication Publication Date Title
Wang et al. FPGA-based Niederreiter cryptosystem using binary Goppa codes
Alabdulatif et al. Towards secure big data analytic for cloud-enabled applications with fully homomorphic encryption
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
KR102075848B1 (ko) 다항식 연산 최적화 처리 장치, 다항식 연산 최적화 처리 방법 및 기록매체
JP2017515195A (ja) 断熱量子計算を介してデジタル論理制約問題を解く
US11164484B2 (en) Secure computation system, secure computation device, secure computation method, and program
CN112464296B (zh) 一种用于同态加密技术的大整数乘法器硬件电路
Bisheh Niasar et al. Efficient hardware implementations for elliptic curve cryptography over Curve448
US20190372753A1 (en) Efficient unified hardware implementation of multiple ciphers
US20230291541A1 (en) Methods of operating on data in a fully homomorphic encryption system using in-situ processing-in-memory and related circuits
JP7031682B2 (ja) 秘密計算装置、システム、方法、プログラム
Moon et al. An Efficient Encrypted Floating‐Point Representation Using HEAAN and TFHE
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
KR101361080B1 (ko) 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체
WO2016181992A1 (ja) 復号装置、復号方法、およびプログラム
EP4162355A1 (en) Protection of transformations by intermediate randomization in cryptographic operations
CN103765493B (zh) 数字平方计算机实现的方法和设备
Zajac Upper bounds on the complexity of algebraic cryptanalysis of ciphers with a low multiplicative complexity
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
Bouyukliev et al. Characteristic vector and weight distribution of a linear code
JP7248120B2 (ja) 暗号システム、鍵生成装置、暗号化装置、復号装置、及びプログラム
Kabulov et al. Gost R 34.12-2015 (Kuznechik) analysis of a cryptographic algorithm
US20220385447A1 (en) Hardware architecture for memory organization for fully homomorphic encryption
JP2024517596A (ja) 準同型暗号化システムにおけるインメモリ計算
EP4275157A1 (en) Method and system for privacy-preserving logistic regression training based on homomorphically encrypted ciphertexts

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant