KR20170113268A - 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 - Google Patents

논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 Download PDF

Info

Publication number
KR20170113268A
KR20170113268A KR1020170038260A KR20170038260A KR20170113268A KR 20170113268 A KR20170113268 A KR 20170113268A KR 1020170038260 A KR1020170038260 A KR 1020170038260A KR 20170038260 A KR20170038260 A KR 20170038260A KR 20170113268 A KR20170113268 A KR 20170113268A
Authority
KR
South Korea
Prior art keywords
modular
calculating
multiplier
montgomery
products
Prior art date
Application number
KR1020170038260A
Other languages
English (en)
Other versions
KR101990861B1 (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 윈본드 일렉트로닉스 코포레이션
Publication of KR20170113268A publication Critical patent/KR20170113268A/ko
Application granted granted Critical
Publication of KR101990861B1 publication Critical patent/KR101990861B1/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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • 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
    • 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
    • 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/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/722Modular multiplication
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/729Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using representation by a residue number system

Landscapes

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

Abstract

논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치가 제공된다. 논-모듈러 승산기는 인터페이스 및 회로를 포함한다. 인터페이스는 n-비트 정수들 A 및 B를 수신하도록 구성된다. 회로는 계산들의 시퀀스를 수행함으로써 논-모듈러 곱 (A*B)를 계산하도록 구성되고, 시퀀스를 수행시 승산기에 의해서 소비되는 전력의 패턴을 랜덤화하도록 구성된다. 시퀀스는, 난수 w를 생성하는 단계, 숫자 R=2k(k는 M1 및 M2의 비트 길이) 및 난수 w에 의존하는 계수들 M1 및 M2를 결정하는 단계, 제1 모듈러 곱 C=A*B%M1 및 제2 모듈러 곱 D=A*B%M2를 계산하는 단계, 및 제1 및 제2 모듈러 곱에 기초하여 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함한다.

Description

논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치{NON-MODULAR MULTIPLIER, METHOD FOR NON-MODULAR MULTIPLICATION AND COMPUTATIONAL DEVICE}
본 발명은 일반적으로 데이터 보안에 관한 것이고, 자세하게는 부-채널(side-channel) 공격들에 대항하여 보호되는 효율적인 논-모듈러(non-modular) 승산에 관한 것이다.
RSA와 같은 많은 중요 암호시스템(cryptosystem)들은, 큰 계수(modulus)값들을 갖는 모듈러(modular) 연산(arithmetic)뿐만 아니라, 거듭제곱(exponentiation) 및 승산을 포함하는 논-모듈러(non-modular) 연산을 사용한다. 논-모듈러 곱을 계산하는 고전적인 방법은 피연산자(operand)들을 블록들이나 "숫자들(digits)"로 분할하고 숫자들의 교차-곱들(cross-products)에 가중 합을 적용하는 것과 관계된다. 그러나, 이러한 순수한 승산 접근법은 많은 실제적인 경우들에서 계산상으로 고비용이다.
예를 들면 암호 계산들에서의 모듈러 승산을 위하여, 몽고메리(Montgomery) 모듈러 승산(또는 단순하게 몽고메리 승산)으로 알려진 효율적인 방법을 사용하는 것이 일반적이다. 몽고메리 승산을 수행하기 위하여, 피연산자들은 몽고메리 리덕션(reduction)으로 알려진 알고리즘을 사용하여 특정한 몽고메리 형식(form)으로 변환된다. 몽고메리 형식에서 피연산자들의 승산은, (비록 결과적인 곱이 계수 보다 크다면 보다 단순한 조건부 리덕션이 여전히 필요하지만) 종래의 연산에서 요구되는 바와 같은 모듈러 리덕션에 대한 필요성을 해소한다. 몽고메리 리덕션 및 승산 알고리즘들은, 예컨대 Menezes 외 저, Handbook of Applied Cryptography (1996), section 14.3.2, pages 600-603에 설명되어 있고, 해당 문서의 내용은 본 명세서에 참조되어 포함된다.
암호시스템들은 내부 비밀 정보를 노출시키는 것을 목적으로 하는 다양한 유형들의 공격들을 대상으로 할 수 있다. 부-채널 공격(side-channel attack; SCA)으로 지칭되는 공격에서 비밀 정보는, 기초가 되는 암호(cryptographic) 기능의 실행 동안 전력 소비 형태를 분석함으로써 추론 가능하다. 예를 들면, Amiel 등은 "Power Analysis for Secret Recovering and Reverse Engineering of Public Key Algorithms,"(proceedings of the 14th international conference on selected areas in cryptography, SAC 2007, LNCS, volume 4876, pages 110-125, Springer, Heidelberg)라는 제목의 논문에서, 논-모듈러 승산 계산들에 적용된 차동 전력 분석(differential power analysis; DPA) 공격들을 설명한 바 있고, 해당 논문의 내용은 본 명세서에 참조되어 포함된다.
본 발명은 일반적으로 데이터 보안에 관한 것이고, 자세하게는 부-채널(side-channel) 공격들에 대항하여 보호되는 효율적인 논-모듈러(non-modular) 승산에 관한 것이다.
본 명세서에서 설명된 일실시예는 인터페이스 및 회로를 포함하는 승산기를 제공한다. 인터페이스는 n-비트 정수들 A 및 B를 수신하도록 구성된다. 회로는 계산들의 시퀀스를 수행함으로써 논-모듈러 곱 (A*B)를 계산하고 시퀀스를 수행시 승산기에 의해 소비되는 전력의 패턴을 랜덤화하도록 구성되며, 시퀀스는 난수 w를 생성하는 단계, 숫자 R=2k(k는 M1 및 M2의 비트 길이)와 난수 w에 의존하는 계수들 M1 및 M2를 결정하는 단계, 제1 모듈러 곱 C=A*B%M1과 제2 모듈러 곱 D=A*B%M2을 계산하는 단계, 및 제1 및 제2 모듈러 곱에 기초하여 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함한다.
일부 실시예들에서, 회로는 제1 및 제2 모듈러 곱을 계산하도록 구성된 몽고메리(Montgomery) 승산기를 포함한다. 다른 실시예들에서, 회로는, w*A를 계산함으로써 몽고메리 도메인의 계수 M1에서 A를 A'으로 변환하도록 구성되고, (w-d)*B(d는 w보다 작은 정수)를 계산함으로써 몽고메리 도메인의 계수 M2에서 B를 B'로 변환하도록 구성되고, 몽고메리 승산기를 사용하여 몽고메리 곱들 A'⊙B 및 A⊙B'을 각각 계산함으로써 제1 및 제2 모듈러 곱을 계산하도록 구성된다. 또 다른 실시예들에서, (A*B)는 (A*B)=ABH*R+ABL을 만족하는 하부 ABL 및 상부 ABH의 결합(combination)으로 표현되고, 회로는 제1 및 제2 모듈러 곱에 기초하여 ABH 및 ABL을 계산하도록 구성된다.
일실시예에서, 회로는 ABH=(C-D)/d(d는 B를 몽고메리 도메인으로 변환하는데 사용된 정수)로 상부를 계산하도록 구성되고, ABL=C-w*ABH로 하부를 계산하도록 구성된다. 다른 실시예에서, 회로는 M1=R-w로 계수 M1을 결정하도록 구성되고, M2=R-(w-d)(d는 w보다 작은 정수)로 계수 M2를 결정하도록 구성된다.
본 명세서에 설명된 실시예에 따라, n-비트 정수들 A 및 B를 수신하는 단계를 포함하는 논-모듈러 승산을 위한 방법이 추가적으로 제공된다. 논-모듈러 곱 (A*B)는, 승산기를 사용하여, 계산들의 시퀀스를 수행하고 시퀀스를 수행시 승산기에 의해 소비된 전력의 패턴을 랜덤화함으로써, 계산되고, 상기 시퀀스는, 난수 w를 생성하는 단계, 숫자 R=2k(k는 M1 및 M2의 비트 길이)와 난수 w에 의존하는 계수들 M1 및 M2를 결정하는 단계, 제1 모듈러 곱 C=A*B%M1과 제2 모듈러 곱 D=A*B%M2를 계산하는 단계, 및 제1 및 제2 모듈러 곱에 기초하여 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함한다.
본 명세서에 설명된 실시예에 따라, 인터페이스 및 승산기를 포함하는 계산 장치가 추가적으로 제공된다. 인터페이스는 n-비트 정수들 A 및 B를 수신하도록 구성된다. 승산기는 계산들의 시퀀스를 수행하고 시퀀스를 수행시 승산기에 의해서 소비되는 전력의 패턴을 랜덤화함으로써, 논-모듈러 곱 (A*B)를 계산하도록 구성되고, 상기 시퀀스는 난수 w를 생성하는 단계, 숫자 R=2k(k는 M1 및 M2의 비트 길이)와 난수 w에 의존하는 계수들 M1 및 M2를 결정하는 단계, 제1 모듈러 곱 C=A*B%M1과 제2 모듈러 곱 D=A*B%M2를 계산하는 단계, 및 제1 및 제2 모듈러 곱에 기초하여 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함한다.
본 발명은, 아래의 도면들과 함께 본 발명의 실시예들에 대한 이하의 상세한 설명으로부터 보다 충분히 이해될 것이다.
도 1은 본 명세서에 설명된 실시예에 따라, 부-채널 공격들에 대항하여 보호되는 효율적인 논-모듈러 승산기를 가지는 계산 장치를 개략적으로 도해하는 블록도이다.
도 2는 본 명세서에서 설명된 실시예에 따라, 몽고메리 모듈러 승산들에 기초한 논-모듈러 승산 방법을 개략적으로 도해하는 순서도이다.
개관
본 명세서에서 설명된 실시예들은 몽고메리 모듈러 승산들에 기초한 효율적인 논-모듈러 승산을 위한 방법들을 제공한다. 본 방법들은 부-채널 공격들에 대항하여 보호되는, 랜덤화된 계수들을 갖는 모듈러 계산들을 포함한다.
간략하게 몽고메리 승산으로 단순하게 지칭될 수도 있는 몽고메리 모듈러 승산은, 효율적인 승산을 위한 방법이다. 간략하게 요약하자면, 2개의 큰 정수들 A 및 B가 주어질 때, A*B를 계산하는 대신, (⊙로 표시되는) 몽고메리 승산은 A⊙B=A*B*R-1%M을 생성하고, 이 때 R=2k(k는 계수 M의 비트 길이)이다. (심볼 "%"은 본 명세서 및 도면들에서 "모듈로(modulo)"를 표시하는데 사용되고, 심볼 "*" 또는 "·"는 논-모듈러 승산을 표시하는데 사용된다.)
개시된 실시예들에서, 몽고메리 승산은 A*B%M 형식의 수식들을 효율적으로 계산하는데 사용된다. 이를 위하여, 피연산자들 중 단 하나만이 몽고메리 도메인으로 변환되고 아래와 같이 다른 피연산자와 승산된다.
Figure pat00001
일부 실시예들에서, 논-모듈러 승산기는, 2개의 상이한 계수들 M1 및 M2에 대하여, 수학식 1의 형식에서 2개의 모듈러 곱들을 계산하고, 논-모듈러 곱 (A*B)을 유도하기 위하여 2개의 모듈러 곱들을 결합한다. 논-모듈러 곱은 상부 및 하부를 사용하여 ABH*R+ABL로 표현되고, 이 때 상부 및 하부는 모듈러 곱들 A*B%M1 및 A*B%M2에 기초하여 평가된다. 하부 및 상부는 2n-비트 곱 (A*B)의 하위(low-significance) 서브세트 및 상위(high-significance) 서브세트 각각으로 간주 가능하다.
계수들 M1 및 M2는 R=2k 및 랜덤하게 선택된 작은 홀수 w에 기초하여 결정된다. 상세하게 후술되는 바와 같이, 모듈러 곱들을 계산하는 것은 충분히 큰 k(그리고 그에 따른 R)를 선택함으로써 상당히 단순화된다. 계수들 M1 및 M2에서 랜덤 성분 w는 부-채널 공격들에 대항하여 보호되는 계산을 만들어 낸다. 보다 구체적으로, w에 대한 특정 조건들 하에서, 제안된 스킴(shceme)들은 선택된 특정 w에 독립적으로 논-모듈러 승산 결과(outcome)를 초래하지만, 상이한 w 값들에 대하여 계산은 상이한 계산들을 포함하기 때문에, 기초가 되는 전력 소비 패턴 역시 상이하게 되고, 전력 분석 공격들에 대항하여 계산을 보호한다.
본 개시의 문맥에서 그리고 청구항들에서, 전력 소비 패턴은, 계산시 소비되는 전력이나 전류와 같은 적합한 파라미터를 분석함으로써 유도 가능하다.
시스템 설명
도 1은, 본 명세서에 설명된 실시예에 따라, 부-채널 공격들에 대항하여 보호되는 효율적인 논-모듈러 승산기를 포함하는 계산 장치(20)에서 회로 구성요소들을 개략적으로 도해하는 블록도이다. 도면에 도시된 회로 구성요소들은, ASIC(Application-Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)와 같은 집적 회로(IC) 장치에서 하드웨어 논리 회로들로서 통상적으로 구현되나, 다르게는 적합한 프로그래머블 프로세서 상에서 소프트웨어로 구현될 수도 있고, 또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로서 구현될 수도 있다.
제시된 회로들은, 예컨대 암호화(encryption), 복호화(decryption) 및/또는 인증(authentication)과 결부된 동작들을 수행하기 위하여, 매우 다양하고 상이한 구성들(configurations) 및 어플리케이션들에서 계산 장치에 집적될 수 있는 논-모듈러 승산 기능을 수행한다. 논-모듈러 승산에 직접적으로 관련된 장치(20)의 구성요소들만이 도면에서 도시되고, 장치(20)의 다른 부품들과 이러한 구성요소들의 집적(integration)은 해당 기술분야의 통상의 기술자에 명백할 것이다.
장치(20)는, 예컨대 전력 공급기 또는 배터리(미도시)와 같은, 전력원으로부터 전력을 인출한다. 이하에서 설명되는 기술들은, 장치에 의해서 소비되는 전력의 일시적이거나(temporal) 스펙트럼의(spectral) 패턴을 분석함으로써 비밀 정보에 엑세스하려고 시도하는 부-채널 공격들로부터 장치(20)를 보호한다. 그러한 공격은 다양한 방식들, 예컨대 장치(20)에 공급되는 전력-공급 라인들 상의 전류를 감지하거나 장치의 근처에서 전자기 방사를 측정함으로써, 전력 소비를 감지할 수 있다.
계산 장치(20)는 n-비트 입력들 A 및 B를 수신하기 위하여 (예컨대, 메모리 어레이에서의 위치들로서 구현되는) 입력들(28A, 28B)의 쌍을 가진다. 장치(20)는, 인터페이스(32)를 통해서 A 및 B를 수용하고 (예컨대, 메모리 어레이에서의 다른 위치와 같은) 출력(36)으로 논-모듈러 곱 (A*B)를 출력하는 논-모듈러 승산기(24)를 포함하고, 논-모듈러 곱 (A*B)의 내용들은 장치(20)의 다른 부품들에 전달될 수 있고, 또는 거듭제곱에 사용되는 다수의 연속적인 승산들과 같은 후속하는 계산들을 위해서 입력들(28A, 28B) 중 하나 또는 모두에 피드백(feedback)될 수 있다.
논-모듈러 승산기(24)는, 후술되는 바와 같이 몽고메리 연산에 사용될 계수 파라미터 M(46) 및 정수 k(48)로써 구성되는 몽고메리 엔진(40)을 포함하고, 이 때 k는 M의 비트-길이와 일치한다. 정수 k는 R=2k로 R의 값을 결정한다.
몽고메리 엔진(40)은 인터페이스(32)로부터 입력들 A 및 B를 수신하고, A*B%M을 계산한다. (심볼 "%"은 본 명세서 및 도면들에서 "모듈로(modulo)"를 표시하는데 사용되고, 심볼 "*" 또는 "·"은 논-모듈러 승산을 표시하는데 사용된다.) A와 B 사이에 논-모듈러 승산을 수행하기 위하여, 장치(20)는 M1 및 M2로 표시된 2개의 상이한 계수들로써 A 및 B에 대하여 몽고메리 엔진을 적용하고, 결합기(50)에 모듈러 곱들 A*B%M1 및 A*B%M2를 전달한다. 상세하게 후술되는 바와 같이, 결합기(50)는 논-모듈러 곱 (A*B)를 유도하기 위하여 모듈러 곱들에 대한 추가적인 계산들을 적용한다.
몽고메리 엔진(40)은 k-비트 피연산자들(54A, 54B)을 수용하는 몽고메리 승산기(52)를 포함한다. 몽고메리 승산기(54)에 대한 입력들이 X 및 Y로 표시될 때, 몽고메리 승산기는 다음 계산을 수행할 수 있다.
Figure pat00002
몽고메리 엔진(40)은 계수 M(46)을 수신하는 변환기(converter)(56)를 더 포함한다. 변환기(56)는 n-비트 입력 X(즉, A 또는 B)를 수신하고 X를 다음과 같이 주어진 몽고메리 도메인 X'로 변환한다.
Figure pat00003
X'은 M과 동일한 비트 길이, 즉 k 비트들을 가진다. 후술되는 바와 같이, M=(R-w)를 선택함으로써, 수학식 3에서의 계산은, 어떠한 모듈러 계산들도 요구되지 아니하고 그에 따라 상당히 더 단순한 점에서, X'=w*X를 계산하는 것과 동등하다.
몽고메리 승산기(24)는 엔진(40)을 계수들 M1 및 M2에 대하여 분리하여 적용한다. 후술되는 동작들은 다양한 스케줄링 스킴들에서 수행 가능하다. 예시적인 실시예에서, 계수 M1에 대하여 설정되는 경우, 몽고메리 엔진(40)은 입력 B를 피연산자(54B)로 전달하고, 입력 A에 변환기(56)를 적용하고, A'=A*B%M1을 피연산자(54A)에 전달한다. 이 경우 몽고메리 승산기 출력은 다음과 같이 주어진다.
Figure pat00004
계수 M2에 대하여 설정되는 경우, 몽고메리 엔진(40)은 입력 A를 피연산자(54B)로 전달하고, 입력 B에 변환기(56)를 적용하고, B'=B*R%M2를 피연산자(54A)에 전달한다. 이 경우 몽고메리 승산기 출력은 다음과 같이 주어진다.
Figure pat00005
수학식 4 및 5에서, 2n-비트 값 (A*B)는 계수 M1 및 M2로써 k-비트 모듈러 곱들로 각각 리덕션된다. 상세하게 후술되는 바와 같이, 결합기(50)는 수학식 4 및 5의 2개의 모듈러 곱들로부터 논-모듈러 2n-비트 값 (A*B)을 복구한다.
전술된 바와 같이, 계수 파라미터 M(46)는 계수들 M1 및 M2 중 하나로 설정된다. 논-모듈러 승산기(24)는 아래와 같이 계수 M1(64) 계수 M2(68)을 계산하는 계수 랜덤화기(60)를 포함한다.
Figure pat00006
수학식 6에서, d는 접합한 정수, 예컨대 d=2이거나 d는 2의 거듭제곱이고, 숫자 w(72)는 랜덤 생성기(76)에 의해서 선택된 랜덤 또는 수도-랜덤(pseudo-random) 정수이다. (용어 "랜덤(random)"은 본 명세서 및 청구항들에서 사용되는 바와 같이, 문맥상 다르게 표시되지 아니하는 한, "수도-랜덤(pseudo-random)" 숫자들을 포함하는 것으로도 이해되어야 한다.) 본 개시에서, w는 d보다 큰 랜덤 홀수로서 선택된다.
숫자 w는, 몽고메리 승산이 홀수 계수들을 필요로하기 때문에, 홀수가 되도록 선택된다. 게다가, w는 변환기(56)가 w*A 및 (w-d)*B를 고속으로 효율적으로 계산할 수 있도록, 충분히 작게 선택된다. w의 범위는 M1 및 M2에서 효율적인 랜덤화를 달성하기 위하여 충분히 크다. 예시적인 실시예에서, w는 32-비트 난수를 포함한다.
몽고메리 엔진(40) 및 결합기(50)를 사용하여 논-모듈러 곱 (A*B)의 계산시 출력은, 비록 실제 기초가 되는 계산들이 w에 의존할지라도, (w에 대한 특정 조건들 하에서) 난수 w의 값에 독립적인 점이 유의된다. 다시 말해서, 상이한 숫자들 w1 및 w2로부터 유도된 계수들 M1 및 M2의 쌍들로써 동일한 입력들 A 및 B에 본 스킴을 적용하는 것은, 동일한 논-모듈러 결과 (A*B)를 초래한다. 그러나, w1로써 (A*B)의 계산시 수행된 연산 동작들은 w2로써 수행된 연산 동작들과 상이하고, 이는 상이한 각각의 전력 소비 패턴들을 초래한다.
논-모듈러 승산기(24)는 가산기(82) 및 논-모듈러 승산기(84)를 포함하는 연산 모듈(80)을 포함한다. 가산기 및 승산기는 통상적으로, 32-비트와 같은 미리 정해진 크기의 블록들에 대하여 동작한다. 연산 모듈(80)은, 몽고메리 승산기(52), 변환기(56), 결합기(50) 및 계수 랜덤화기(60)와 같은 다양한 구성요소들에 의해서 요구되는 바와 같이, 승산기(24)를 위한 논-모듈러 연산 계산들을 적용한다.
제어기(88)는 논-모듈러 승산을 수행을 위한 승산기(24)의 상이한 구성요소들의 동작들을 스케줄링하고 조정(coordination)한다.
몽고메리 승산들에 기초한 효율적인 논- 모듈러 승산
도 2는 본 명세서에서 설명된 실시예에 따라, 몽고메리 모듈러 승산들에 기초한 논-모듈러 승산을 위한 방법을 개략적으로 도해하는 순서도이다. 이하의 설명들에서, 본 방법은 도 1의 논-모듈러 승산기(24)에 의해서 실행되는 것으로 설명된다.
본 방법은 입력 단계(100)에서, n-비트 정수 입력들 A 및 B를 수신하는 논-모듈러 승산기(24)로 시작한다. 랜덤화 단계(104)에서, 논-모듈러 승산기는, 예컨대 랜덤 생성기(76)를 사용하여, 랜덤 홀수 w(72)를 생성한다. 단계(104)에서 추가로, 논-모듈러 승산기는, R=2k를 결정하게 되는 정수 k(48)를 설정한다. 일실시예에서, k는 w의 비트 길이와 n의 합으로 설정된다. 예를 들면, w가 32-비트 정수인 경우, k=n+32가 된다. k를 w의 비트 길이와 n의 합으로 선택함으로써, 이하의 조건들이 충족된다.
Figure pat00007
수학식 7에서, 입력들 A 및 B가 모두 n-비트 정수들일 때, 선행 조건이 충족되면 후행 조건도 만족하고, 이에 따라 선행 조건은 충분히 큰 R을 선택시 고려되어야 하는 점이 유의된다.
계수들 선택 단계(108)에서, 논-모듈러 승산기는, 전술된 수학식 6, 즉 M1=R-w 및 M2=R-(w-d)에 따라, R=2k 및 랜덤 정수 w에 기초하여 계수들 M1(64) 및 M2(68)를 결정한다. 변환 단계(112)에서, 몽고메리 엔진(40)은 변환기(56)를 사용하여, A 및 B를 몽고메리 도메인 계수들(M1, M2)로 각각 변환한다. A' 계산시, R=(R-w)+w을 분할하고, 수학식 7의 조건 w*A<R을 사용하여 또한 높은 확률로써 w*A<(R-w) 또는 아래를 얻는다.
Figure pat00008
수학식 8에서, 계수 (R-w)에 의한 동작은 w*A>(R-w)일 때에만 요구되고, 그렇지 아니한 경우 생략 가능하다. w*A<R이므로, w*A가 (R-w)를 초과할 확률은 w/R이고, 이는 32-비트 w 및 512-비트 k인 경우 232/2512보다 작고 실제적으로 영(zero)과 같다.
유사하게, B'을 계산시 R=[R-(w-d)]+(w-d)를 분할하고, 수학식 7의 조건 (w-d)*B<R을 사용하여 또한 높은 확률로써 (w-d)*B<[R-(w-d)] 또는 아래를 얻는다.
Figure pat00009
일부 실시예들에서, 수학식들 8 및 9에서의 승산들 w*A 및 (w-d)*B 각각은, 연산 모듈(80)에 의해서 수행된다.
일부 실시예들에서, 몽고메리 엔진(40)은, 입력 A에 대하여 A'을 생성하는 것과 입력 B에 대하여 B'을 생성하는 것에 변환기(56)를 분리하여 적용한다. 변환기(56)의 출력, 즉 A' 및 B'은 몽고메리 승산기(52)의 피연산자(54A)에 전달된다.
모듈러 계산 단계(114)에서, 몽고메리 승산기(52)는 전술된 수학식 4 및 5에서 주어진 바와 같이 모듈러 곱들을 계산한다.
Figure pat00010
Figure pat00011
아래 부록에서, 상이한 계수들 M1 및 M2를 사용하여 2m-비트 정수 Z를 리덕션할 때, 주어진 Z%M1 및 Z%M2로 풀릴 수 있는 m-비트 상부 Z1 및 하부 Z0에 의해서 Z를 나타내기 위하여 사용되는 방법이 제공된다. 부록의 결과들을 Z=(A*B)에 적용함으로써, 본 명세서에서 후술되는 바와 같이 논-모듈러 곱을 상부 및 하부로 분할할 수 있다.
상하 분할 단계(116)에서, 2n-비트 곱 (A*B)는 ABH 및 ABL로 표시되는 상부 및 하부로 각각 분할되고, 이 때 (A*B)=ABH*R+ABL이다. 부록을 참조하면, 다음과 같다.
Figure pat00012
Figure pat00013
수학식 12 및 13에서, R=2k, ABL은 k-비트 정수이고 ABH는 (2n-k)-비트 정수이다. 일부 실시예들에서, d는 2의 거듭제곱이고, 수학식 12에서 d로 나누는 것은 이진 시프트 동작들에 의해서 효율적으로 구현된다. 출력 단계(120)에서, 논-모듈러 승산기(24)는 논-모듈러 곱 (A*B)를 다음과 같이 출력하고, 그 다음에 본 방법은 종료한다.
Figure pat00014
승산기(24)는 통상적으로, 도 2의 방법이 수행될 때마다 상이한 값의 w를 선택한다. 예를 들면, 승산기(24) 및 장치(20) 전체에 대한 전력 소비의 일시적이거나 스펙트럼의 패턴은 랜덤하게 변한다. 전력 소비 패턴은 입력 값들 A 및 B가 동일하게 유지되더라도 랜덤화된다. 그러므로, 부-채널 공격은 전력 소비 프로파일의 분석으로부터 임의의 비밀 정보, 예컨대 A 및 B의 값들을 추론할 수 없을 것이다.
전술된 실시예들은 예시의 방식으로 제시되고, 다른 적합한 실시예들 또한 사용될 수 있다. 예를 들면, 상기 설명에서, 몽고메리 엔진(40)은, 2개의 모듈러 곱들 A*B%M1 및 A*B%M2를 계산하기 위하여 모두 2회 적용되는, 단일 몽고메리 승산기 및 몽고메리 도메인으로의 단일 변환기를 포함한다. 대체 가능한 실시예들에서, 몽고메리 엔진이 2개의 몽고메리 승산기들(52) 및 2개의 변환기들(56)을 포함할 때, 2개의 모듈러 곱들은 병렬적으로 계산되고, 이는 계산 시간을 절반으로 줄인다.
부록
Z를 2m-비트 정수라고 하자. Z는 Z=Z1*R+Z0로 표현 가능하고, 이 때 하부(Z0)및 상부(Z1)는 m-bit 정수들을 포함하며, R=2m이다. 2m-비트 정수 Z를 계수들 M1=R-w 및 M2=R-(w-d)로 리덕션하는 것은, w>d이고 w가 R과 비교하여 매우 작을 때, 다음과 같은 결과를 가져온다.
Figure pat00015
Figure pat00016
비트 길이 m이 Z1<<M1이 되도록 충분히 크게 선택되는 경우, 높은 확률로써, 다음과 같이 나타날 수 있다.
Figure pat00017
그런 다음, 아래 식들은 Z%M1 및 Z%M2이 주어질 때 Z의 상부 및 하부를 생성한다.
Figure pat00018
Figure pat00019
전술된 바와 같이, 본 발명의 대체 가능한 실시예에서, 전술된 단계들 및 동작들은 소프트웨어 프로그램 명령어들(instructions)의 제어 하에서 적합한 프로그래머블 프로세서에 의해 수행된다. 소프트웨어는 전자적 형태로, 예컨대 네트워크를 통해 프로세서에 다운로드될 수 있다. 추가적으로 또는 대안적으로, 소프트웨어는, 광학적, 자기적(magnetic), 또는 전자적 메모리 매체와 같은 실재적이고(tangible), 비일시적인(non-transitory) 컴퓨터로 읽기 가능한 매체에 저장될 수 있다.
본 명세서에서 설명된 실시예들은 부-채널 공격들에 대항하여 보호되는 효율적인 논-모듈러 승산 동작을 주로 다루지만, 본 명세서에서 설명된 방법들 및 시스템들은, 순수한 승산이 더 고속이나 DPA 공격들에 대항하여 보호되지 아니하는 경우, 소프트웨어에서 논-모듈러 승산의 구현시와 같은 그러한 다른 어플리케이션들에도 사용될 수 있다.
전술된 실시예들은 예시의 방식으로 인용되고, 본 발명은 상기에서 특정되어 제시되고 설명된 것에 제한되지 아니하는 점은 인정될 것이다. 오히려, 본 발명의 범위는 상기에서 설명된 다양한 특징들의 조합(combination)들 및 부조합(sub-combination)들 모두뿐만 아니라, 이상의 설명들을 읽고서 해당 기술분야의 통상의 기술자들에 발생할 수 있고 선행 기술에서 개시되지 아니한, 그것들의 변경들 및 변형들을 포함한다. 본 특허 출원에서 참조되어 포함된 문서들은, 임의의 용어들이 본 명세서에서 명시적으로 또는 암시적으로 만들어진 정의들과 상충하는 식으로 이러한 포함된 문서들에서 정의되는 범위를 제외하고, 본 출원의 일체로 된 일부로 간주되며, 본 명세서에서의 그러한 정의들만이 고려되어야 한다.

Claims (14)

  1. n-비트 정수들 A 및 B를 수신하도록 구성된 인터페이스; 및
    계산들의 시퀀스를 수행함으로써 논-모듈러(non-modular) 곱 (A*B)를 계산하도록 구성되고, 상기 시퀀스를 수행시 논-모듈러 승산기에 의해서 소비되는 전력의 패턴을 랜덤화하도록 구성된 회로를 포함하고,
    상기 시퀀스는,
    난수 w를 생성하는 단계;
    숫자 R=2k (k는 M1 및 M2의 비트 길이)및 상기 난수 w에 의존하는 계수(modulus)들 M1 및 M2를 결정하는 단계, 제1 모듈러(modular) 곱 C=A*B%M1 및 제2 모듈러 곱 D=A*B%M2을 계산하는 단계; 및
    상기 제1 및 제2 모듈러 곱에 기초하여 상기 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함하는, 논-모듈러 승산기.
  2. 청구항 1에 있어서,
    상기 회로는, 상기 제1 및 제2 모듈러 곱을 계산하도록 구성된 몽고메리(Montgomery) 승산기를 포함하는 것을 특징으로 하는 논-모듈러 승산기.
  3. 청구항 2에 있어서,
    상기 회로는, w*A를 계산함으로써 몽고메리 도메인의 상기 계수 M1에서 A 를 A'으로 변환하도록 구성되고, (w-d)*B(d는 w보다 작은 정수)를 계산함으로써 몽고메리 도메인의 상기 계수 M2에서 B를 B'으로 변환하도록 구성되고, 상기 몽고메리 승산기를 사용하여 몽고메리 곱들 A'⊙B 및 A⊙B'을 각각 계산함으로써 상기 제1 및 제2 모듈러 곱을 계산하도록 구성되는 것을 특징으로 하는 논-모듈러 승산기.
  4. 청구항 1에 있어서,
    (A*B)는, (A*B)=ABH*R+ABL을 만족하는 하부 ABL 및 상부 ABH의 조합으로 표현되고,
    상기 회로는 상기 제1 및 제2 모듈러 곱에 기초하여 ABH 및 ABL을 계산하도록 구성된 것을 특징으로 하는 논-모듈러 승산기.
  5. 청구항 4에 있어서,
    상기 회로는, 상기 상부를 ABH=(C-D)/d(d는 B를 몽고메리 도메인으로 변환하는데 사용된 정수)로 계산하고 상기 하부를 ABL=C-w*ABH로 계산하도록 구성된 것을 특징으로 하는 논-모듈러 승산기.
  6. 청구항 1에 있어서,
    상기 회로는, 계수 M1을 M1=R-w로 결정하고 계수 M2를 M2=R-(w-d)(d는 w보다 작은 정수)로 결정하도록 구성된 것을 특징으로 하는 논-모듈러 승산기.
  7. n-비트 정수들 A 및 B를 수신하는 단계; 및
    승산기를 사용하여, 계산들의 시퀀스를 수행함으로써 논-모듈러(non-modular) 곱 (A*B)를 계산하는 단계, 및 상기 시퀀스를 수행시 상기 승산기에 의해서 소비되는 전력의 패턴을 랜덤화하는 단계를 포함하고,
    상기 시퀀스는,
    w를 생성하는 단계;
    숫자 R=2k (k는 M1 및 M2의 비트 길이)및 상기 난수 w에 의존하는 계수(modulus)들 M1 및 M2를 결정하는 단계, 제1 모듈러(modular) 곱 C=A*B%M1 및 제2 모듈러 곱 D=A*B%M2을 계산하는 단계; 및
    상기 제1 및 제2 모듈러 곱에 기초하여 상기 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함하는, 논-모듈러 승산 방법.
  8. 청구항 7에 있어서,
    상기 제1 및 제2 모듈러 곱을 계산하는 단계는, 몽고메리(Montgomery) 승산기를 사용하여 상기 제1 및 제2 모듈러 곱을 계산하는 단계를 포함하는 것을 특징으로 하는 논-모듈러 승산 방법.
  9. 청구항 8에 있어서,
    상기 제1 및 제2 모듈러 곱을 계산하는 단계는, w*A를 계산함으로써 몽고메리 도메인의 상기 계수 M1에서 A를 A'으로 변환하는 단계, (w-d)*B(d는 w보다 작은 정수)를 계산함으로써 몽고메리 도메인의 상기 계수 M2에서 B를 B'으로 변환하는 단계, 및 상기 몽고메리 승산기를 사용하여 몽고메리 곱들 A'⊙B 및 A⊙B'을 각각 계산함으로써 상기 제1 및 제2 모듈러 곱을 계산하는 단계를 포함하는 것을 특징으로 하는 논-모듈러 승산 방법.
  10. 청구항 7에 있어서,
    (A*B)는, (A*B)=ABH*R+ABL을 만족하는 하부 ABL 및 상부 ABH의 조합으로 표현되고,
    상기 제1 및 제2 모듈러 곱에 기초하여 ABH 및 ABL을 계산하는 단계를 포함하는 논-모듈러 승산 방법.
  11. 청구항 10에 있어서,
    상기 상부를 계산하는 단계는 ABH=(C-D)/d(d는 B를 몽고메리 도메인으로 변환하는데 사용된 정수)로 계산하는 단계를 포함하고,
    상기 하부를 계산하는 단계는 ABL=C-w*ABH로 계산하는 단계를 포함하는 것을 특징으로 하는 논-모듈러 승산 방법.
  12. 청구항 7에 있어서,
    상기 계수들 M1 및 M2를 결정하는 단계는, 계수 M1을 M1=R1-w로 결정하는 단계, 및 계수 M2를 M2=R-(w-d)(d는 w보다 작은 정수)로 결정하는 단계를 포함하는 것을 특징으로 하는 논-모듈러 승산 방법.
  13. n-비트 정수들 A 및 B를 수신하도록 구성된 인터페이스; 및
    승산기로서, 계산들의 시퀀스를 수행함으로써 논-모듈러(non-modular) 곱 (A*B)를 계산하도록 구성되고, 상기 시퀀스를 수행시 상기 승산기에 의해서 소비되는 전력의 패턴을 랜덤화하도록 구성된 상기 승산기를 포함하고,
    상기 시퀀스는,
    난수 w를 생성하는 단계;
    숫자 R=2k (k는 M1 및 M2의 비트 길이)및 상기 난수 w에 의존하는 계수(modulus)들 M1 및 M2를 결정하는 단계, 제1 모듈러(modular) 곱 C=A*B%M1 및 제2 모듈러 곱 D=A*B%M2을 계산하는 단계; 및
    상기 제1 및 제2 모듈러 곱에 기초하여 상기 논-모듈러 곱 (A*B)를 생성하고 출력하는 단계를 포함하는, 계산 장치.
  14. 청구항 13에 있어서,
    상기 승산기는, 상이한 각각의 w 값들로써 A 및 B 사이에서 제1 및 제2 논-모듈러 승산 동작들을 적용하고,
    상기 제1 및 제2 논-모듈러 승산 동작들을 수행시 소비된 전력에 대응하는 제1 및 제2 전력 소비 패턴들은, 상이한 각각의 전력 소비 패턴들을 포함하는 것을 특징으로 하는 계산 장치.
KR1020170038260A 2016-03-30 2017-03-27 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치 KR101990861B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IL244842A IL244842A0 (en) 2016-03-30 2016-03-30 Efficient non-modular multiplexing is protected against side-channel attacks
IL244842 2016-03-30

Publications (2)

Publication Number Publication Date
KR20170113268A true KR20170113268A (ko) 2017-10-12
KR101990861B1 KR101990861B1 (ko) 2019-09-30

Family

ID=57300906

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170038260A KR101990861B1 (ko) 2016-03-30 2017-03-27 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치

Country Status (7)

Country Link
US (1) US10133554B2 (ko)
EP (1) EP3226120B1 (ko)
KR (1) KR101990861B1 (ko)
CN (1) CN107273089B (ko)
ES (1) ES2747758T3 (ko)
IL (1) IL244842A0 (ko)
TW (1) TWI630545B (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019232159A1 (en) * 2018-05-30 2019-12-05 Lg Electronics, Inc. Modulus calculation that leverages computer architecture and/or operand clustering
US11354383B2 (en) * 2019-09-27 2022-06-07 Applied Materials, Inc Successive bit-ordered binary-weighted multiplier-accumulator

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059767A1 (en) * 2002-09-20 2004-03-25 Pierre-Yvan Liardet Masking of factorized data in a residue number system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10219158B4 (de) * 2002-04-29 2004-12-09 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
KR20050088506A (ko) * 2004-03-02 2005-09-07 삼성전자주식회사 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기
TW200841232A (en) * 2007-04-09 2008-10-16 Univ Feng Chia Finite field Montgomery multiplier
CN101110016A (zh) * 2007-08-29 2008-01-23 中国人民解放军国防科学技术大学 子字并行整数乘法器
CN102207847B (zh) * 2011-05-06 2013-12-04 广州杰赛科技股份有限公司 基于蒙哥马利模乘运算的数据加解密处理方法及装置
KR20130111721A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
CN102999313B (zh) * 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
CN103226461B (zh) * 2013-03-26 2016-07-06 中山大学 一种用于电路的蒙哥马利模乘方法及其电路
CN103761068B (zh) * 2014-01-26 2017-02-01 上海交通大学 优化的蒙哥马利模乘硬件
US9813232B2 (en) * 2015-03-17 2017-11-07 Cypress Semiconductor Corporation Device and method for resisting non-invasive attacks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059767A1 (en) * 2002-09-20 2004-03-25 Pierre-Yvan Liardet Masking of factorized data in a residue number system

Also Published As

Publication number Publication date
CN107273089B (zh) 2020-09-29
EP3226120A1 (en) 2017-10-04
TW201802666A (zh) 2018-01-16
EP3226120B1 (en) 2019-07-17
KR101990861B1 (ko) 2019-09-30
TWI630545B (zh) 2018-07-21
ES2747758T3 (es) 2020-03-11
US20170286063A1 (en) 2017-10-05
CN107273089A (zh) 2017-10-20
IL244842A0 (en) 2016-07-31
US10133554B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
JP5488718B2 (ja) 暗号処理装置、暗号処理方法、およびプログラム
EP1014617A2 (en) Method and apparatus for elliptic curve cryptography and recording medium therefor
US7908641B2 (en) Modular exponentiation with randomized exponent
WO2006054559A1 (ja) 暗号処理演算装置
CN101632255A (zh) 密码方法及系统
JP5449576B2 (ja) 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法および剰余演算プログラム
US20090136025A1 (en) Method for scalarly multiplying points on an elliptic curve
JP5182364B2 (ja) サイドチャネル攻撃に対する耐タンパ性を有する暗号処理方法
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2009500710A (ja) 攻撃又は解析に対してデータ処理装置を保護するための装置及び方法
JP7155173B2 (ja) 外部監視攻撃からモジュラーインバージョン演算を保護すること
JP2011510579A (ja) 署名ダイアグラムを用いた非対称暗号方式のための対策方法およびデバイス
KR101990861B1 (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
JP2006145852A (ja) モンゴメリ変換装置、演算装置、icカード、暗号装置、復号装置及びプログラム
US10057064B2 (en) Computational method, computational device and computer software product for montgomery domain
JP2005020735A (ja) データ処理装置におけるサイドチャネル攻撃防止
Dąbrowski et al. Generation and Implementation of Cryptographically Strong Elliptic Curves
Leelavathi et al. Elliptic Curve Crypto Processor on FPGA using Montgomery Multiplication with Vedic and Encoded Multiplier over GF (2 m) for Nodes in Wireless Sensor Networks
JP2006201641A (ja) 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム
Fürbass ECC signature generation device for RFID tags
Moon A High-Security RSA Cryptoprocessor Embedded with an Efficient MAC Unit

Legal Events

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