KR102578869B1 - 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법 - Google Patents

부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법 Download PDF

Info

Publication number
KR102578869B1
KR102578869B1 KR1020190122600A KR20190122600A KR102578869B1 KR 102578869 B1 KR102578869 B1 KR 102578869B1 KR 1020190122600 A KR1020190122600 A KR 1020190122600A KR 20190122600 A KR20190122600 A KR 20190122600A KR 102578869 B1 KR102578869 B1 KR 102578869B1
Authority
KR
South Korea
Prior art keywords
matrix
elements
multiplication operation
multiplication
order
Prior art date
Application number
KR1020190122600A
Other languages
English (en)
Other versions
KR20200107739A (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 KR1020190122600A priority Critical patent/KR102578869B1/ko
Priority to US16/664,825 priority patent/US11509460B2/en
Publication of KR20200107739A publication Critical patent/KR20200107739A/ko
Application granted granted Critical
Publication of KR102578869B1 publication Critical patent/KR102578869B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena
    • G06N10/60Quantum algorithms, e.g. based on quantum optimisation, quantum Fourier or Hadamard transforms
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • 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/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Artificial Intelligence (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Evolutionary Computation (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Complex Calculations (AREA)

Abstract

부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법이 제공된다. 본 발명의 일 실시예에 따른 방법은, 하나 이상의 프로세서, 및 상기 하나 이상의 프로세서에 의해 실행되는 하나 이상의 프로그램을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)하는 단계; 및 상기 셔플링된 연산 순서에 기초하여 상기 행렬 곱 연산을 수행하는 단계를 포함한다.

Description

부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING MATRIX MULTIPLICATION OPERATION BEING SECURE AGAINST SIDE CHANNEL ATTACK}
본 발명의 실시예들은 부채널 공격을 방지하기 위한 기술과 관련된다.
현재 사용되고 있는 공개키 암호 RSA(Rivest Shamir Adleman), ECC(Elliptic Curve Cryptography) 등은 큰 수의 소인수분해, 환 또는 유한체 위에서의 이산 로그 문제 등 수학적 난제를 기반으로 한다. 그러나, 양자 컴퓨팅 기술을 통해 현재 사용하는 컴퓨팅 능력으로는 해결하기 어려운 문제를 빠르게 해결할 수 있다. 더욱이 1995년 Shor가 제안한 알고리즘은 양자 컴퓨터 상에서 소인수분해 문제와 이산 로그 문제를 다항식 시간에 풀 수 있다. 이는 현재의 공개키 암호화 체계의 대부분을 깨뜨릴 수 있어 웹 인프라가 의존하는 공개키 인프라를 위험에 빠뜨릴 수 있다는 것을 의미한다. 이러한 위협에 대한 대안으로 양자 내성 암호(Post-Quantum Cryptography, PQC)에 대한 요구가 증가하고 있다.
현재 PQC로 제안된 많은 알고리즘이 행렬 연산을 주로 사용하고 있다. 이러한 행렬 연산을 주로 사용하는 이유는 양자 컴퓨터에도 안전한 암호 알고리즘의 설계가 행렬의 곱셈 연산을 수행하여 구성할 수 있기 때문이다. 그러나, 행렬 곱은 단순 전력 분석(Simple Power Analysis, SPA) 공격, 차분 전력 분석(Differential Power Analysis, DPA) 공격, 충돌 공격(Collision Attack) 등과 같은 부채널 공격에 취약하므로, 현재 제시된 행렬 곱을 이용한 PQC 알고리즘들은 모두 부채널 공격에 취약한 상태이다.
한국 공개특허공보 제10-2014-0054647호 (2016.02.02. 등록)
본 발명의 실시예들은 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 방법은, 하나 이상의 프로세서, 및 상기 하나 이상의 프로세서에 의해 실행되는 하나 이상의 프로그램을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서, 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)하는 단계; 및 상기 셔플링된 연산 순서에 기초하여 상기 행렬 곱 연산을 수행하는 단계를 포함한다.
상기 행렬 곱 연산은, 양자 내성 암호(Post-Quantum Cryptography) 알고리즘에 기초한 암호화 및 복호화 중 적어도 하나를 위해 수행될 수 있다.
상기 제1 행렬 및 상기 제2 행렬 중 적어도 하나는, 상기 암호화 및 상기 복호화 중 적어도 하나를 수행하기 위해 반복적으로 이용될 수 있다.
상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
상기 셔플링하는 단계는, 상기 제1 행렬 및 상기 제2 행렬의 크기에 기초하여 하나 이상의 수열을 생성하고, 상기 하나 이상의 수열에 기초하여 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
일 실시예에 따른 장치는, 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 메모리를 포함하는 장치로서, 상기 프로그램은, 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)하는 단계; 및 상기 셔플링된 연산 순서에 기초하여 상기 행렬 곱 연산을 수행하는 단계를 실행하기 위한 명령어들을 포함한다.
상기 행렬 곱 연산은, 양자 내성 암호(Post-Quantum Cryptography) 알고리즘에 기초한 암호화 및 복호화 중 적어도 하나를 위해 수행될 수 있다.
상기 제1 행렬 및 상기 제2 행렬 중 적어도 하나는, 상기 암호화 및 상기 복호화 중 적어도 하나를 수행하기 위해 반복적으로 이용되는 비밀 정보일 수 있다.
상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
상기 셔플링하는 단계는, 상기 제1 행렬 및 상기 제2 행렬의 크기에 기초하여 하나 이상의 수열을 생성하고, 상기 하나 이상의 수열에 기초하여 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
본 발명의 실시예들에 따르면, 행렬 곱 연산 수행 시 해당 행렬 곱 연산을 위해 독립적으로 수행될 수 있는 곱셈 연산들의 연산 순서를 셔플링하고, 셔플링된 연산 순서에 따라 행렬 곱 연산을 수행함으로써, 특정 시간에 동일한 중간 값이 발생할 확률을 감소시킬 수 있으며, 이에 따라 부채널 공격을 위해 필요한 전력 파형의 수가 증가하게 되므로 부채널 공격을 효과적으로 방지할 수 있다
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 행렬 곱 연산 방법의 순서도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경(10)을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 본 발명의 실시예들에 따른 행렬 곱 연산 수행 방법을 수행하기 위한 장치일 수 있다. 컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이하의 실시예에서, 행렬은 복수의 행과 복수의 열을 포함하는 행렬뿐 아니라, 각각 하나의 행 또는 하나의 열만을 포함하는 벡터 행렬(즉, 행 벡터 또는 열 벡터)을 포함하는 개념으로 이용된다.
또한, 이하의 실시예들은 예를 들어, QcBits, Rainbow, UOV, Frodo 등과 같이 암호화 및 복호화 중 적어도 하나를 수행하기 위해 행렬 곱 연산이 요구되는 양자 내성 암호(Post-Quantum Cryptography, PQC) 알고리즘에 따른 암호화 또는 복호화 과정에서 수행될 수 있다. 구체적으로, 컴퓨팅 장치(12)는 행렬 곱 연산이 요구되는 양자 내성 암호 알고리즘을 이용하여 암호화 및 복호화 중 적어도 하나를 수행할 수 있으며, 암호화 또는 복호화 수행 중 행렬 곱 연산이 요구되는 경우, 이하의 실시예들에 따라 해당 행렬 곱 연산을 수행할 수 있다.
도 2는 본 발명의 일 실시예에 따른 행렬 곱 연산 방법의 순서도이다.
도 2를 참조하면, 우선, 컴퓨팅 장치(12)는 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)한다(210).
이때, 제1 행렬 및 제2 행렬은 각각 행렬 곱 연산의 좌측 행렬과 우측 행렬을 의미한다. 구체적으로, 크기가 m×n인 행렬 A와 크기가 n×r인 행렬 B 사이의 행렬 곱 연산 AB의 경우, 제1 행렬은 좌측 행렬 A를 의미하며, 제2 행렬은 우측 행렬 B를 의미한다. 이하, 제1 행렬 및 제2 행렬은 동일한 의미로 이용된다.
일 실시예에 따르면, 제1 행렬 및 제2 행렬 중 적어도 하나는 예를 들어, 비밀 키와 같이 양자 내성 암호 알고리즘에 기초한 암호화 및 복호화 중 적어도 하나를 수행하기 위해 반복적으로 이용되는 비밀 정보일 수 있다. 또한, 행렬 곱 연산을 위한 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서는 제1 행렬 및 제2 행렬 중 비밀 정보인 행렬을 이용한 행렬 곱 연산 수행 시마다 임의로 셔플링될 수 있다.
한편, 일 실시예에 따르면, 컴퓨팅 장치(12)는 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경하여 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다. 이때, 벡터 곱 연산은 행 벡터(즉, 1×n 행렬)와 열 벡터(즉, n×1 행렬) 사이의 행렬 곱 연산을 의미하며, 이하 동일한 의미로 이용된다.
구체적으로, 제1 행렬의 크기가 m×n이고, 제2 행렬의 크기가 n×r인 경우, 제1 행렬과 제2 행렬 사이의 행렬 곱 연산은 수학식 1에 따라 수행될 수 있다.
[수학식 1]
수학식 1에서, A는 제1 행렬, B는 제2 행렬, X는 제1 행렬과 제2 행렬 사이의 행렬 곱 연산에 의해 도출되는 결과 행렬을 나타낸다. 또한, (이때, i∈{1, 2,..., m}, j∈{1, 2,..., n})는 제1 행렬 A의 원소, (이때, k∈{1, 2,..., r})는 제2 행렬 B의 원소, 는 결과 행렬 X의 원소를 나타낸다.
한편, 수학식 1에서, 결과 행렬 X의 원소 각각은 아래의 수학식 2와 같이 제1 행렬 A에 포함된 행 벡터 중 i번째 행 벡터와 제2 행렬 B에 포함된 열 벡터 중 k번째 열 벡터 사이의 벡터 곱 연산을 통해 독립적으로 계산될 수 있다.
[수학식 2]
따라서, 제1 행렬 A와 제2 행렬 B사이의 행렬 곱 연산을 위해 수행되어야 할 벡터 곱 연산의 연산 순서가 변경되더라도 변경 전과 동일한 결과를 도출할 수 있다.
한편, 수학식 2에서 알 수 있듯이, 제1 행렬 A에 포함된 행 벡터 중 i번째 행 벡터와 제2 행렬 B에 포함된 열 벡터 중 k번째 열 벡터 사이의 벡터 곱 연산은 i번째 행 벡터에 포함된 원소 와 k번째 열 벡터에 포함된 원소 사이의 곱셈 연산 와 곱셈 연산 결과 사이의 덧셈을 통해 수행된다. 따라서, 제1 행렬 A와 제2 행렬 B 사이의 행렬 곱 연산을 위해 수행되어야 할 벡터 곱 연산의 연산 순서가 변경되는 경우, 제1 행렬 A에 포함된 원소 와 제2 행렬 B에 포함된 원소 사이의 곱셈 연산 의 연산 순서 역시 변경된다.
따라서, 컴퓨팅 장치(12)는 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경함으로써, 해당 행렬 곱 연산을 위한 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
한편, 일 실시예에 따르면, 컴퓨팅 장치(12)는 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 연산 순서를 변경하여, 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
구체적으로, 상술한 바와 같이, 제1 행렬 A에 포함된 행 벡터 중 i번째 행 벡터와 제2 행렬 B에 포함된 열 벡터 중 k번째 열 벡터 사이의 벡터 곱 연산은 수학식 2와 같이 곱셈 연산 와 곱셈 연산 결과 사이의 덧셈을 통해 수행된다. 이때, 곱셈 연산 은 독립적으로 계산될 수 있는 연산으로 연산 순서가 변경되더라도 의 값은 변경되지 않는다.
따라서, 컴퓨팅 장치(12)는 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해, 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산 의 연산 순서를 변경함으로써 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
이후, 컴퓨팅 장치(12)는 셔플링된 연산 순서에 따라 제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 수행한다(220).
한편, 제1 행렬과 제2 행렬 사이의 행렬 곱 연산 수행 시마다 벡터 곱 연산의 순서 및 벡터 곱 연산을 위한 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 순서 중 적어도 하나를 변경하는 경우, 해당 행렬 곱 연산 수행 시 특정 시간에 동일한 중간 값이 발생할 확률은 1/ρ(이때, ρ=m×n×r)로 감소하게 된다. 따라서, 이 경우, 부채널 공격을 위해 필요한 전력 파형의 수가 ρ2배로 증가하게 되므로, 부채널 공격을 효과적으로 방지할 수 있다.
한편, 도 2에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
이하에서는, 크기가 2×3 제1 행렬 와 크기가 3×2인 제2 행렬 사이의 행렬 곱 연산 AB에 대해 본 발명의 일 실시예에 따른 행렬 곱 연산 방법을 적용하는 구체적인 예를 설명한다.
구체적으로, 행렬 곱 연산 AB는 아래의 수학식 3에 따라 수행될 수 있다.
[수학식 3]
또한, 결과 행렬 X의 원소는 각각 아래의 수학식 4 내지 수학식 7과 같이 제1 행렬 A에 포함된 각 행 벡터와 제2 행렬 B에 포함된 각 열 벡터 사이에 벡터 곱 연산을 통해 획득될 수 있다.
[수학식 4]
[수학식 5]
[수학식 6]
[수학식 7]
이때, 일 실시예에 따르면, 컴퓨팅 장치(12)는 제1 행렬 A 및 제2 행렬 B의 크기에 기초하여, 하나 이상의 수열을 생성하고, 생성된 하나 이상의 수열에 기초하여 제1 행렬 A 및 제2 행렬 B 사이의 행렬 곱 연산을 위한 제1 행렬의 원소들 및 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링할 수 있다.
구체적으로, 일 실시예에 따르면, 컴퓨팅 장치(12)는 제1 행렬 A의 행의 개수(즉, 2)와 동일한 길이를 가지는 제1 랜덤 수열 및 제2 행렬 B의 열의 개수(즉, 2)와 동일한 길이를 가지는 제2 랜덤 수열 중 적어도 하나를 생성하고, 생성된 랜덤 수열에 따라 벡터 곱 연산의 연산 순서를 변경할 수 있다.
이때, 제1 랜덤 수열에 포함된 숫자는 제1 행렬 A에 포함된 행 벡터의 인덱스를 나타내며, 각 숫자의 제1 랜덤 수열 내 위치는 연산 순서를 나타낼 수 있다. 마찬가지로, 제2 랜덤 수열에 포함된 각 숫자는 제2 행렬 B에 포함된 열 벡터의 인덱스를 나타내며, 각 숫자의 제2 랜덤 수열 내 위치는 연산 순서를 나타낼 수 있다.
예를 들어, 제1 랜덤 수열이 S1={2, 1}이고, 제2 랜덤 수열이 S2={1, 2}인 경우, 컴퓨팅 장치(12)는 수학식 6 => 수학식 7 => 수학식 4 => 수학식 5의 순서로 벡터 곱 연산을 수행할 수 있다.
한편, 일 실시예에 따르면, 컴퓨팅 장치(12)는 제1 행렬 A의 열의 개수(즉, 3)와 동일한 길이를 가지는 하나 이상의 제3 랜덤 수열을 생성할 수 있다. 이 경우, 컴퓨팅 장치(12)는 생성된 하나 이상의 제3 랜덤 수열에 따라 수학식 4 내지 수학식 7에 따른 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산 순서를 변경할 수 있다.
이때, 제3 랜덤 수열에 포함된 숫자는 행 벡터에 포함된 각 원소의 행 벡터 내 인덱스를 나타내고, 제3 랜덤 수열 내에 포함된 각 숫자의 제3 랜덤 수열 내 위치는 연산 순서를 나타낼 수 있다.
예를 들어, 제3 랜덤 수열이 S3={3, 2, 1}인 경우, 컴퓨팅 장치(12)는 수학식 4에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => => 로 변경, 수학식 5에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => => 로 변경, 수학식 6에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => => 로 변경, 수학식 7에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => => 로 변경 중 적어도 하나를 수행할 수 있다.
다른 예로, 컴퓨팅 장치(12)는 각각 수학식 4 내지 수학식 7에 따른 벡터 곱 연산 중 하나에 대응되는 상이한 복수의 제3 랜덤 수열을 생성하고, 생성된 복수의 제3 랜덤 수열에 따라 수학식 4 내지 7에 따른 벡터 곱 연산 중 일부에 대해 곱셈 연산의 순서를 변경할 수 있다. 구체적으로, 컴퓨팅 장치(12)는 수학식 4에 따른 벡터 곱 연산에 대응되는 제3 랜덤 수열 S3,1={3, 2, 1}과 수학식 5에 따른 벡터 곱 연산에 대응되는 제3 랜덤 수열 S3,2={2, 1, 3}을 생성할 수 있다. 이 경우, 컴퓨팅 장치(12)는 S3,1에 기초하여 수학식 4에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => =>로 변경하고, S3,1에 기초하여 수학식 5에 따른 벡터 곱 연산을 위한 곱셈 연산의 순서를 => => 로 변경할 수 있다.
한편, 상술한 예에서는, 랜덤 수열을 이용하여 제1 행렬 A의 원소들 및 제2 행렬 B의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 것으로 예시하였으나, 연산의 순서를 셔플링하기 위한 방법은 반드시 상술한 예 외에도 다양한 방식에 따라 수행될 수 있으며, 반드시 특정한 방식으로 한정되는 것은 아니다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스

Claims (12)

  1. 하나 이상의 프로세서, 및
    상기 하나 이상의 프로세서에 의해 실행되는 하나 이상의 프로그램을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행되는 방법으로서,
    제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)하는 단계; 및
    상기 셔플링된 연산 순서에 기초하여 상기 행렬 곱 연산을 수행하는 단계를 포함하는 것으로,
    상기 셔플링에 의하여 상기 연산 순서가 변경되더라도, 상기 행렬 곱 연산의 결과는 변경 전과 동일한 것인, 방법.
  2. 청구항 1에 있어서,
    상기 행렬 곱 연산은, 양자 내성 암호(Post-Quantum Cryptography) 알고리즘에 기초한 암호화 및 복호화 중 적어도 하나를 위해 수행되는 방법.
  3. 청구항 2에 있어서,
    상기 제1 행렬 및 상기 제2 행렬 중 적어도 하나는, 상기 암호화 및 상기 복호화 중 적어도 하나를 수행하기 위해 반복적으로 이용되는 비밀 정보인 방법.
  4. 청구항 1에 있어서,
    상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 방법.
  5. 청구항 1에 있어서,
    상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 방법.
  6. 청구항 1에 있어서,
    상기 셔플링하는 단계는, 상기 제1 행렬 및 상기 제2 행렬의 크기에 기초하여 하나 이상의 수열을 생성하고, 상기 하나 이상의 수열에 기초하여 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 방법.
  7. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장하는 메모리를 포함하는 장치로서,
    상기 프로그램은,
    제1 행렬 및 제2 행렬 사이의 행렬 곱 연산을 위한 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링(shuffling)하는 단계; 및
    상기 셔플링된 연산 순서에 기초하여 상기 행렬 곱 연산을 수행하는 단계를 실행하기 위한 명령어들을 포함하는 것으로,
    상기 셔플링에 의하여 상기 연산 순서가 변경되더라도, 상기 행렬 곱 연산의 결과는 변경 전과 동일한 것인, 장치.
  8. 청구항 7에 있어서,
    상기 행렬 곱 연산은, 양자 내성 암호(Post-Quantum Cryptography) 알고리즘에 기초한 암호화 및 복호화 중 적어도 하나를 위해 수행되는 장치.
  9. 청구항 8에 있어서,
    상기 제1 행렬 및 상기 제2 행렬 중 적어도 하나는, 상기 암호화 및 상기 복호화 중 적어도 하나를 수행하기 위해 반복적으로 이용되는 비밀 정보인 장치.
  10. 청구항 7에 있어서,
    상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 장치.
  11. 청구항 7에 있어서,
    상기 셔플링하는 단계는, 상기 행렬 곱 연산을 위한 벡터 곱 연산 중 적어도 하나에 대해 행 벡터의 원소와 열 벡터의 원소 사이의 곱셈 연산의 연산 순서를 변경하여, 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 장치.
  12. 청구항 7에 있어서,
    상기 셔플링하는 단계는, 상기 제1 행렬 및 상기 제2 행렬의 크기에 기초하여 하나 이상의 수열을 생성하고, 상기 하나 이상의 수열에 기초하여 상기 제1 행렬의 원소들 및 상기 제2 행렬의 원소들 사이의 곱셈 연산의 연산 순서를 셔플링하는 장치.
KR1020190122600A 2019-03-06 2019-10-02 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법 KR102578869B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190122600A KR102578869B1 (ko) 2019-03-06 2019-10-02 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법
US16/664,825 US11509460B2 (en) 2019-10-02 2019-10-26 Apparatus and method for performing matrix multiplication operation being secure against side channel attack

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20190025967 2019-03-06
KR1020190025967 2019-03-06
KR1020190122600A KR102578869B1 (ko) 2019-03-06 2019-10-02 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200107739A KR20200107739A (ko) 2020-09-16
KR102578869B1 true KR102578869B1 (ko) 2023-09-15

Family

ID=72669639

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190122600A KR102578869B1 (ko) 2019-03-06 2019-10-02 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102578869B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230147942A (ko) 2022-04-15 2023-10-24 호서대학교 산학협력단 양자 내성 암호 시스템에서 부채널 공격에 대응하는 복호화를 수행하는 방법 및 복호화를 수행하는 장치
KR20230162328A (ko) * 2022-05-20 2023-11-28 국방과학연구소 양자 내성 공개키 암호화 방법 및 그 전자 장치와 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101245056B1 (ko) * 2008-12-19 2013-03-22 인텔 코포레이션 평문 암호화 방법, 암호화 장치 및 기계-액세스 가능한 매체를 포함하는 물품
US20160269048A1 (en) * 2011-07-27 2016-09-15 Sun Patent Trust Encoding method, decoding method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102023526B1 (ko) 2012-10-29 2019-09-20 아이디 퀀티크 에스.에이. 양자 키 분배 시스템에서 생성된 비밀키의 안전성을 높이는 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101245056B1 (ko) * 2008-12-19 2013-03-22 인텔 코포레이션 평문 암호화 방법, 암호화 장치 및 기계-액세스 가능한 매체를 포함하는 물품
US20160269048A1 (en) * 2011-07-27 2016-09-15 Sun Patent Trust Encoding method, decoding method

Also Published As

Publication number Publication date
KR20200107739A (ko) 2020-09-16

Similar Documents

Publication Publication Date Title
KR101255393B1 (ko) 타원 곡선 점 곱셈
US8139763B2 (en) Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks
US10361854B2 (en) Modular multiplication device and method
CN106716344B (zh) 用于密码运算的指数分裂
US10142105B2 (en) Hypersphere-based multivariable public key encryption/decryption system and method
US10354063B2 (en) Protection of a modular calculation
KR102578869B1 (ko) 부채널 공격에 안전한 행렬 곱 연산을 수행하기 위한 장치 및 방법
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
US11902432B2 (en) System and method to optimize generation of coprime numbers in cryptographic applications
US20220085999A1 (en) System and method to optimize decryption operations in cryptographic applications
Lu et al. Cryptanalysis of an RSA variant with moduli N= prql
KR102155035B1 (ko) 양자 내성 암호 ntru 기술에 대한 단일 파형 전력 분석 및 대응 방법
EP3188401B1 (en) Method and system for protecting a cryptographic operation
US8553878B2 (en) Data transformation system using cyclic groups
US10855443B2 (en) Protecting polynomial hash functions from external monitoring attacks
EP3085005B1 (en) Secure data transformations
US20220085998A1 (en) System and method to generate prime numbers in cryptographic applications
US20200344056A1 (en) Device and method for protecting execution of a cryptographic operation
US20230246806A1 (en) Efficient masking of secure data in ladder-type cryptographic computations
US11509460B2 (en) Apparatus and method for performing matrix multiplication operation being secure against side channel attack
Zhou et al. A third is all you need: extended partial key exposure attack on CRT-RSA with additive exponent blinding
Hla et al. Attack experiments on elliptic curves of prime and binary fields
Grubbs et al. Modifying an enciphering scheme after deployment
KR102507861B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
KR20230053543A (ko) 공개키 암호의 오류 탐지 방법 및 이를 수행하기 위한 컴퓨팅 장치

Legal Events

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