KR102653018B1 - 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법 - Google Patents

랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법 Download PDF

Info

Publication number
KR102653018B1
KR102653018B1 KR1020190005855A KR20190005855A KR102653018B1 KR 102653018 B1 KR102653018 B1 KR 102653018B1 KR 1020190005855 A KR1020190005855 A KR 1020190005855A KR 20190005855 A KR20190005855 A KR 20190005855A KR 102653018 B1 KR102653018 B1 KR 102653018B1
Authority
KR
South Korea
Prior art keywords
random
random number
operand
input data
generator
Prior art date
Application number
KR1020190005855A
Other languages
English (en)
Other versions
KR20200089145A (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 KR1020190005855A priority Critical patent/KR102653018B1/ko
Priority to US16/536,796 priority patent/US11392725B2/en
Priority to CN201910970322.1A priority patent/CN111444518A/zh
Priority to TW109101100A priority patent/TWI821501B/zh
Publication of KR20200089145A publication Critical patent/KR20200089145A/ko
Application granted granted Critical
Publication of KR102653018B1 publication Critical patent/KR102653018B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • 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/582Pseudo-random number generators
    • G06F7/586Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법이 개시된다. 본 개시에 따른 보안 프로세서는 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기 및 제1 입력 데이터 및 상기 제1 랜덤 넘버를 기초로 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기를 포함하고, 상기 제1 입력 데이터에 대한 나머지 연산의 결과 값과 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산의 결과 값은 동일한 것을 특징으로 할 수 있다.

Description

랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법{SECURITY PROCESSOR PERFORMING REMAINDER CALCULATION USING RANDOM NUMBER AND OPERATING METHOD USING THE SAME}
본 개시의 기술적 사상은 보안 프로세서에 관한 것으로서, 자세하게는 부채널 공격을 효과적으로 방어할 수 있는 보안 프로세서 및 보안 프로세서의 동작 방법에 관한 것이다.
보안 프로세서(Security Processor)는 비밀 키 등과 같은 보안이 요구되는 정보를 이용하여 암호 연산 등의 보안 알고리즘을 수행한다. 보안 프로세서의 비밀 정보의 외부 누출을 부채널(Side Channel)이라 할 수 있으며, 부채널을 이용한 공격 방법을 부채널 공격(Side Channel Analysis, SCA)이라 할 수 있다. 보안 연산기는 부채널 공격에 대한 방어기술(Countermeasure)을 채용할 필요가 있다.
탬플릿 공격(Template Attack)은 강력한 부채널 공격 중 하나로서, 공격자는 공격의 대상이 되는 장치와 동일한 장치에 대해 입력과 동작 횟수에 제한이 없는 환경을 보유하고 있다고 가정한다. 공격자는 해당 환경을 이용해 탬플릿을 구성하고 이를 통해 실제 장치에 대한 공격에서는 연산이 수행될 때 측정되는 전력 측정 결과등을 이용하여 비밀 정보를 알아낼 수 있다.
상기와 같은 부채널 공격에 대해 마스킹(masking)이나 하이딩(Hiding) 등과 같은 방어기술이 제안되어 있으나, 일반적인 방어기술의 경우 보안 연산기의 회로 면적이나 평균 소모 전력이 매우 증가될 수 있으며 또한 전력분석 공격에 대해 효과적인 방어가 이루어지지 않을 수 있다.
본 개시의 기술적 사상이 해결하고자 하는 과제는 전력 소모나 퍼포먼스의 오버헤드 증가를 최소화하면서 부채널 공격을 효과적으로 방어할 수 있는 보안 프로세서 및 이의 동작 방법을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 보안 프로세서는 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기 및 제1 입력 데이터 및 상기 제1 랜덤 넘버를 기초로 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기를 포함하고, 상기 제1 입력 데이터에 대한 나머지 연산의 결과 값과 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산의 결과 값은 동일한 것을 특징으로 할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 보안 프로세서는 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기 및 모듈로에 상기 제1 랜덤 넘버를 곱한 뒤, 제1 입력 데이터를 더함으로써 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드를 상기 모듈로로 나눈 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기를 포함할 수 있다.
본 개시의 기술적 사상의 일측면에 따른 제1 랜덤 넘버를 생성하는 단계, 모듈로, 상기 제1 랜덤 넘버 및 제1 입력 데이터를 기초로 제1 랜덤 오퍼랜드를 생성하는 단계, 상기 제1 랜덤 오퍼랜드를 기초로 출력 데이터를 생성하는 단계를 포함하고, 상기 제1 랜덤 오퍼랜드을 상기 모듈로로 나눈 나머지와 상기 제1 입력 데이터를 상기 모듈로로 나눈 나머지는 동일한 것을 특징으로 할 수 있다.
본 개시의 기술적 사상에 따른 보안 프로세서는 입력 데이터를 복호화시키기 위한 나머지 연산에서 랜덤 넘버를 이용함으로써 전력 소모나 퍼포먼스의 오버헤드 증가를 최소화하면서 다양한 패턴의 데이터를 생성함으로써 부채널 공격을 방어할 수 있다.
도 1은 본 개시의 예시적 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 3은 본 개시의 예시적 실시예에 따른 랜덤 오퍼랜드 생성기를 나타내는 블록도이다.
도 4는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 5 및 도 6은 본 개시의 예시적 실시예에 따른 연산 프로세서의 동작을 나타내는 도면이다.
도 7은 본 개시의 예시적 실시예에 따른 리코더를 나타내는 도면이다.
도 8은 본 개시의 예시적 실시예에 따른 리코딩 테이블을 나타내는 표이다.
도 9는 본 개시의 예시적 실시예에 따른 제어 신호 테이블을 나타내는 표이다.
도 10은 본 개시의 예시적 실시예에 따른 부분 곱셈기를 나타내는 회로도이다.
도 11은 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 12는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시예에 따른 보안 프로세서의 동작을 나타내는 도면이다.
도 14는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 15는 본 개시의 예시적 실시예에 따른 어플리케이션 프로세서를 나타내는 블록도이다.
도 1은 본 개시의 예시적 실시예에 따른 전자 시스템을 나타내는 블록도이다.
도 1을 참조하면, 전자 시스템(1)은 보안 프로세서(10), 메모리(20) 및 중앙 처리 장치(30)를 포함할 수 있다. 전자 시스템(1)은 다양한 종류의 시스템에 해당할 수 있고, 일 예시로써 랩탑 컴퓨터, 이동 전화기, 스마트폰, 태블릿 PC, PDA(Personal Digital Assistant)등을 포함할 수 있다.
중앙 처리 장치(30)는 보안 프로세서(10) 및 메모리(20)를 제어하는 각종 제어 신호를 출력할 수 있다. 다른 실시예에서, AP(Application Processor)가 중앙 처리 장치(30)의 역할을 수행할 수 있다.
메모리(20)는 중앙 처리 장치(30) 또는 보안 프로세서(10)의 제어에 기초하여 데이터를 저장할 수 있다. 본 개시의 일 실시예에서, 메모리(20)는 외부로부터 수신한 입력 데이터(ID)를 기록하고, 중앙 처리 장치(30)의 제어에 기초하여 입력 데이터(ID)를 보안 프로세서(10)에 출력할 수 있고, 입력 데이터(ID)에 대한 보안 연산이 수행된 결과인 출력 데이터(OD)를 보안 프로세서(10)로부터 수신하고, 기록할 수 있다.
전자 시스템(1)에는 중앙 처리 장치(30)와 별개로 빠른 보안과 관련된 연산 처리 속도를 구현할 수 있는 보안 프로세서(10)가 더 구비될 수 있다. 보안 프로세서(10)는 비밀 정보를 이용한 연산을 수행할 수 있으며, 보안 연산기로도 지칭될 수 있다. 일 예시에서, 보안 프로세서(10)는 공개키 기반 구조(Public Key Infrastructure, PKI)에서 개인키(또는 비밀키, Private Key)를 이용한 암호화(Encryption) 또는 복호화(Decryption) 동작을 수행할 수 있다.
보안 프로세서(10)는 암호화 또는 복호화 동작에 관련하여 다양한 종류의 연산을 수행할 수 있으며, 일 예시에서, 데이터를 암호화 또는 복호화하기 위한 전체 연산을 수행하거나, 또는 암호화 또는 복호화에 필요한 다수의 연산들 중 일부의 연산만을 수행할 수도 있다. 본 명세서에서, 보안 프로세서(10)의 암호화 또는 복호화 동작의 대상이 되는 데이터를 입력 데이터(ID)라고 칭하고, 암호화 또는 복호화 동작의 결과 생성된 데이터를 출력 데이터(OD)라고 칭한다. 일 예시에서, 입력 데이터(ID)는 공개키 기반 구조에서 개인키 또는 공개키를 나타낼 수 있고, 출력 데이터(OD)는 개인키 및 공개키를 기반으로 암호화 또는 복호화 된 데이터를 나타낼 수 있다.
보안 프로세서(10)에서 암호화 또는 복호화 하기 위한 연산에는 곱셈 연산이 포함될수 있다. 특히, 보안 프로세서(10)가 공개키 알고리즘을 수행하는 경우, 보안 프로세서(10)에서는 상대적으로 큰 수에 대한 산술 연산들(덧셈/뺄셈, 곱셈, 나머지 연산(또는 모듈러(Modular) 연산) 등)이 수행되고, 그 연산자의 크기가 RSA(Rivest Shamir Adleman)의 경우 최소 1024bit 이상은 되어야 안전한 연산으로 인정받을 수 있다.
크기가 큰 연산자를 이용한 연산을 위해, 보안 프로세서(10)는 디지트 시리얼 곱셈기(digit-serial multiplier) 형태의 연산 방식을 채택할 수 있다. 일반 시리얼 곱셈(serial multiplication)을 수행하는 알고리즘 1과 디지트 시리얼 곱셈(digit-serial multiplication)을 수행하는 알고리즘 2는 각각 다음과 같다.
상기 알고리즘 1 및 2를 참조하면, 디지트 시리얼 곱셈은 한 번에 승수(예컨대, B)의 여러 비트(b-i)의 연산 처리를 수행할 수 있으며, 일반 시리얼 곱셈으로부터 쉽게 확장될 수 있다.
상기와 같은 곱셈 연산을 수행함에 있어서, 보안 프로세서(10)에서 소모되는 전력은 연산 값에 따라 영향을 받을 수 있다. 이에 따라, 같은 연산이 자주 수행되는 경우, 탬플릿 공격에 의해 입력 데이터(예컨데, A 또는 B) 값이 유출될 수 있으며, 또한 이로부터 비밀 키 등의 보안 프로세서(10)의 비밀 정보가 분석될 수 있다.
상기와 같은 부채널 공격(SCA)에 대응하는 방어기술(Countermeasure)로서 하이딩(hiding)과 마스킹(masking) 기법이 고려될 수 있다. 하이딩 기법은 부채널 신호를 줄이거나 노이즈를 증가시킴으로써 전력 소모의 변화를 줄이는 방법이다. 그러나, 하이딩 기법에 따르면 회로 면적과 평균 전력소모가 2 배 이상 늘어나게 되며, 또한 실제 연산 동작이 클록 신호가 특정 상태(예컨대, 로우 상태)일 때만 수행되므로, 전체적인 성능(performance)이 저하될 수 있다.
한편, 마스킹 기법은 암호 연산 전에 마스킹 동작(masking operation)을 수행함으로써 암호 연산에 이용되는 입력을 랜덤화시키고, 마스킹 동작을 상쇄하기 위해 암호 연산 후에 언마스킹 동작(unmasking operation)을 추가적으로 수행함으로써 결과적으로 등가의 연산 결과를 도출하는 방법이다. 그러나, 마스킹 기법의 경우, 곱셈 연산에서 입력 데이터(예컨데, A 또는 B)가 0 에 해당하는 경우에는 마스킹의 효과가 없어지게 되며, 이로 인해 여전히 보안 프로세서(10)의 정보가 누출될 수 있는 위험이 발생된다.
본 개시의 기술적 사상에 따른 보안 프로세서(10)는 부채널 공격(SCA)에 대응하기 위해, 랜덤 넘버에 기초하여 입력 데이터(ID)를 변경함으로써 부채널 공격(SCA)에 대상이 되는 입력 데이터(ID)에 랜덤 특성을 부여할 수 있다. 이로써, 실제 입력 데이터(ID)에 대한 연산 시의 전력 소모가 랜덤하게 변동될 수 있고, 템플릿 공격에 대한 취약성이 제거될 수 있다.
이를 위해 보안 프로세서(10)는 랜덤 넘버 생성기(100) 및 모듈러 계산기(200)를 포함할 수 있다. 랜덤 넘버 생성기(100)는 무작위성(Randomness)에 기반하여 랜덤 넘버를 생성할 수 있는데, 일 예시로써 랜덤 넘버 생성기(100) 사용자의 움직임, 저항체의 열잡음, 반도체의 PN 접합의 쇼트 잡음, 광자 생성에 따르는 쇼트 잡음, 방사선의 발생 파동 등에 의해서 생성되는 엔트로피 신호에 기초하여 랜덤 넘버를 생성할 수 있다. 또 다른 예시에서 랜덤 넘버 생성기(100)는 준 안정 상태(meta-stable)에서 확률적으로 변동하는 엔트로피 신호에 기초하여 랜덤 넘버를 생성할 수 있다.
모듈러 계산기(200)는 메모리(20)로부터 수신한 입력 데이터(ID) 및 랜덤 넘버 생성기(100)로부터 수신한 랜덤 넘버를 기초로 랜덤 오퍼랜드를 생성하고, 랜덤 오퍼랜드에 대한 나머지 연산을 통해 출력 데이터(OD)를 생성할 수 있다. 본 명세서에서, 나머지 연산은 피제수를 제수로 나눈 나머지를 출력하는 연산을 의미할 수 있고, 모듈러(Modular) 연산으로 불릴 수 있다. 본 개시의 기술적 사상에 따르면, 모듈러 계산기(200)는 입력 데이터(ID)가 아닌 랜덤 넘버와 입력 데이터(ID)를 기초로 생성한 랜덤 오퍼랜드에 대해 나머지 연산을 수행할 수 있고, 랜덤 넘버에 따라서 변경되는 랜덤 오퍼랜드의 특성 때문에 보안 프로세서(10)는 부채널 공격(SCA)에 대해 강한 내성을 가질 수 있다.
도 2는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다. 도 1과 중복되는 내용은 생략한다.
도 2를 참조하면, 보안 프로세서(10)는 랜덤 넘버 생성기(100) 및 모듈러 계산기(200)를 포함하고, 모듈러 계산기(200)는 랜덤 오퍼랜드 생성기(210) 및 출력 데이터 생성기(220)를 포함할 수 있다.
랜덤 오퍼랜드 생성기(210)는 랜덤 넘버 생성기(100)로부터 랜덤 넘버(RN)를 수신하고, 메모리(도 1, 20)로부터 제1 입력 데이터(ID1)를 수신할 수 있다. 랜덤 오퍼랜드 생성기(210)는 랜덤 넘버(RN) 및 제1 입력 데이터(ID1)를 기초로 랜덤 오퍼랜드(RO)를 생성할 수 있다. 일 실시예에서, 랜덤 오퍼랜드 생성기(210)는 미리 결정된 공식에 랜덤 넘버(RN) 및 제1 입력 데이터(ID1)를 대입함으로써 랜덤 오퍼랜드(RO)를 생성할 수 있다. 일 예시에서, 랜덤 오퍼랜드 생성기(210)는 모듈로(M)에 랜덤 넘버(RN)를 곱한 뒤, 제1 입력 데이터(ID1)를 더함으로써 랜덤 오퍼랜드(RO)를 생성할 수 있다(RO=ID1+RN*M). 상기 모듈로(M)는 출력 데이터 생성기(220)가 출력 데이터(OD)를 생성하기 위해 수행하는 나머지 연산의 제수일 수 있다.
출력 데이터 생성기(220)는 랜덤 오퍼랜드 생성기(210)로부터 랜덤 오퍼랜드(RO)를 수신하고, 메모리(도 1, 20)로부터 제2 입력 데이터(ID2)를 수신할 수 있다. 출력 데이터 생성기(220)는 랜덤 오퍼랜드(RO) 및 제2 입력 데이터(ID2)에 대한 사칙 연산(예를 들면, 덧셈, 뺄셈, 곱셈, 나눗셈)을 수행하고, 사칙 연산을 수행한 결과에 대해 모듈로(M)를 제수로 하는 나머지 연산을 수행함으로써 출력 데이터(OD)를 생성할 수 있다.
나머지 연산(mod)의 성질에 따르면, 임의의 수 A, B, r, M 및 임의의 사칙연산 △(예를 들면, 덧셈, 뺄셈, 곱셈, 나눗셈 중 어느 하나)에 대해서 아래 수학식 1 및 수학식 2가 만족될 수 있다.
상기 수학식 1 및 수학식 2에 의해 제1 입력 데이터(ID1), 제2 입력 데이터(ID2) 및 랜덤 오퍼랜드(RO)에 대한 아래 수학식 3 및 수학식 4가 성립한다.
본 개시의 기술적 사상에 따른 보안 프로세서(10)는 제1 입력 데이터(ID1) 대신 랜덤 넘버(RN)에 기초하여 연산된 랜덤 오퍼랜드(RO)에 대해서 나머지 연산을 수행할 수 있다. 나머지 연산의 성질에 따르면 랜덤 오퍼랜드(RO)에 대한 나머지 연산도 제1 입력 데이터(ID1)에 대한 나머지 연산과 그 결과 값이 같을 수 있고, 보안 프로세서(10)는 랜덤 성질이 부가된 랜덤 오퍼랜드(RO)에 대해서 연산함으로써 부채널 공격을 효과적으로 방어할 수 있다.
도 3은 본 개시의 예시적 실시예에 따른 랜덤 오퍼랜드 생성기를 나타내는 블록도이다.
도 3을 참조하면, 랜덤 오퍼랜드 생성기(210)는 곱셈기(211) 및 덧셈기(212)를 포함할 수 있다. 곱셈기(211)는 랜덤 넘버(RN) 및 모듈로(M)를 수신하고, 랜덤 넘버(RN)와 모듈로(M)에 대한 곱셈을 수행할 수 있다. 일 예시에서, 곱셈기(211)는 보안 프로세서(도 1, 10) 내부의 레지스터로부터 모듈로(M)를 수신할 수 있다.
일 실시예에서 곱셈기(211)는 랜덤 넘버(RN)를 복수의 유닛 랜덤 넘버들로 분할하고, 복수의 유닛 랜덤 넘버들 각각에 모듈로(M)를 곱함으로써 복수의 유닛 모듈로들(UMs)을 생성할 수 있다. 곱셈기(211)는 생성된 복수의 유닛 모듈로들(UMs)을 덧셈기(212)에 출력할 수 있다.
본 개시의 일 실시예에 따른 곱셈기(211)는 랜덤 넘버(RN)를 작은 단위(예를 들면, 2bit)의 복수의 유닛 랜덤 넘버들로 분할하고, 복수의 유닛 랜넘 넘버들 각각과 모듈로(M)에 대한 곱셈을 수행하는 복수 회의 부분 곱 연산들이 수행될 수 있고, 이에 따라서 큰 비트수를 갖는 랜덤 넘버(RN) 및 모듈로(M)에 대한 곱셈이 효율적으로 수행될 수 있다. 덧셈기(212)는 복수의 유닛 모듈로들(UMs) 및 제1 입력 데이터(ID1)를 자릿수에 맞추어 더함으로써 출력 데이터(OD)를 생성할 수 있다.
도 4는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다.
도 4를 참조하면, 보안 프로세서(10)는 랜덤 넘버 레지스터(213), 곱셈기(211), 덧셈기(212), 랜덤 오퍼랜드 레지스터(216) 및 내부 메모리(300)를 포함할 수 있고, 곱셈기(211)는 리코더(214) 및 부분 곱셈기(215)를 포함할 수 있다.
랜덤 넘버 레지스터(213)는 랜덤 넘버 생성기(도 1, 100)로부터 랜덤 넘버(RN)를 수신하고, 미리 결정된 비트수(예를 들면, t-비트)의 랜덤 넘버(RN)를 곱셈기(211)에 출력할 수 있다.
리코더(214)는 랜덤 넘버(RN)를 수신하고, 이에 대한 리코딩 동작을 수행할 수 있다. 일 예시에서, 리코딩 동작은 랜덤 넘버(RN)와 모듈로(M)에 대한 디지트 시리얼 알고리즘을 구현하기 위한 로직 소자들에 적합한 부스(Booth) 리코딩 동작에 해당할 수 있다.
랜덤 넘버(RN) * 모듈로(M) 연산을 수행하기 위하여 복수 회의 부분 곱 연산들이 수행되고, 각각의 부분 곱 연산에 대응하여 하나의 리코딩 동작이 수행될 수 있다. 리코딩 동작이란, 곱셈을 효율적으로 구현하기 위하여 랜덤 넘버의 값을 원래의 값에서 수학적으로 등가인 다른 값으로 치환하는 것을 의미한다. 리코딩 동작을 수행하면 부분곱 연산의 횟수가 감소할 수 있다. 가장 대표적인 리코딩 동작으로써 부스 리코딩(Booth recoding) 동작이 있을 수 있다.
일 실시예에서, 리코더(214)는 복수의 단위 랜덤 넘버들 각각을 복수의 리코딩 값들로 변환하기 위한 변환 정보가 저장된 리코딩 테이블을 포함하고, 리코딩 테이블을 기초로 상기 복수의 단위 랜덤 넘버들을 복수의 리코딩 값들을 생성할 수 있다. 리코딩 테이블은 도 7에서 상세하게 후술한다.
일 실시예에서, 리코더(214)는 복수의 리코딩 값들 각각에 대응하는 복수의 제어 신호들(SELs)에 대한 대응 정보가 저장된 제어 신호 테이블을 포함하고, 제어 신호 테이블을 기초로 복수의 리코딩 값들 각각에 대한 복수의 제어 신호들(SELs)을 부분 곱셈기(215)에 출력할 수 있다. 제어 신호 테이블은 도 8에서 상세하게 후술한다.
부분 곱셈기(215)는 m 비트의 모듈로(M) 및 복수의 제어 신호들(SELs)을 수신하고, 복수의 제어 신호들(SELs)에 기초하여 n 비트의 복수의 유닛 모듈로들(UMs)을 생성할 수 있다. 복수의 유닛 모듈로들(UMs)은 각각 복수의 유닛 랜덤 넘버들과 모듈로(M)를 곱한 값에 대응할 수 있다.
내부 메모리(300)는 보안 프로세서(10)의 외부(예를 들면, 도 1의 메모리(20))로부터 수신한 오리지널 데이터(OrgD)를 저장하고, 오리지널 데이터(OrgD)를 m 비트 단위로 분할한 분할 데이터(SD)를 덧셈기(212)에 출력할 수 있다. 이를 위해 내부 메모리(300)는 적어도 하나의 저장 장치로 구현될 수 있고, 일 예시로써 휘발성 메모리(volatile memory) 및 비휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 비휘발성 메모리는 플래시 메모리, PRAM(Phase-change Random Access Memory), MRAM(Magnetic Random Access Memory), RRAM(Resistive Random Access Memory), FRAM(Ferroelectric Random Access Memory) 등을 포함할 수 있고, 휘발성 메모리는 DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory), SDRAM(Synchronous DRAM), 래치(Latch), 플립-플롭(Flip-Flop), 레지스터(Register) 등을 포함할 수 있다.
덧셈기(212)는 복수의 유닛 모듈로들(UMs) 및 분할 데이터(SD)를 수신하고, 랜덤 오퍼랜드 레지스터(216)로부터 올림 값(Cr)을 더 수신할 수 있다. 올림 값(Cr)은 이전 분할 데이터(SD)에 대한 계산에서 분할 데이터(SD)의 비트 수인 m 비트를 초과하는 부분에 해당하는 데이터를 의미할 수 있다. 덧셈기(212)는 복수의 유닛 모듈로들(UMs), 분할 데이터(SD) 및 올림 값(Cr)을 자릿수에 맞추어 더함으로써 m+a 비트의 랜덤 오퍼랜드(RO)를 생성할 수 있다. 덧셈기(212)는 생성한 랜덤 오퍼랜드(RO)를 랜덤 오퍼랜드 레지스터(216)에 저장할 수 있다.
랜덤 오퍼랜드 레지스터(216)는 랜덤 오퍼랜드(RO)를 저장하고, 모든 오리지널 데이터(OrgD)에 대한 연산이 완료되면, 저장된 랜덤 오퍼랜드(RO)를 출력할 수 있다. 도 4에서는 랜덤 오퍼랜드 레지스터(216), 랜덤 넘버 레지스터(213) 및 내부 메모리(300)가 서로 별개의 구성으로 도시되어 있으나 이는 일 예시일 뿐이고, 랜덤 오퍼랜드 레지스터(216), 랜덤 넘버 레지스터(213) 및 내부 메모리(300) 중 적어도 둘 이상의 구성은 하나의 메모리 소자로 구현될 수 있다. 또한, 도 4에서는 덧셈기(212)가 내부 메모리(300)로부터 분할 데이터(SD)를 수신하는 예시가 도시되어 있으나 이는 일 예시일 뿐이고, 보안 프로세서(10) 외부의 메모리(예를 들면, 도 1의 20)로부터 분할 데이터(SD)를 수신할 수 있다.
도 5 및 도 6은 본 개시의 예시적 실시예에 따른 연산 프로세서의 동작을 나타내는 도면이다.
도 4 및 도 5를 참조하면, 곱셈기(221)는 4 비트의 랜덤 넘버(RN)를 수신하고, 랜덤 넘버(RN)를 각각 2 비트 단위의 제1 유닛 랜덤 넘버(URN1) 및 제2 유닛 랜덤 넘버(URN2)로 분할할 수 있다. 곱셈기(221)는 제1 유닛 랜덤 넘버(URN1)와 8비트의 모듈로(M)를 곱함으로써 10 비트의 제1 유닛 모듈로(UM1)를 생성할 수 있다. 곱셈기(221)는 제2 유닛 랜덤 넘버(URN2)와 모듈로(M)를 곱함으로써 10 비트의 제2 유닛 모듈로(UM2)를 생성할 수 있다.
본 개시의 일 실시예에 따르면, 곱셈기(221)는 리코딩 테이블에 기초하여 랜덤 넘버(RN)에 대한 복수의 리코딩 값들을 계산하고, 제어 신호 테이블에 기초하여 복수의 리코딩 값들 각각에 대응하는 복수의 제어 신호들을 이용하여 모듈로(M)와 유닛 랜덤 넘버(URN1, URN2)를 곱할 수 있다. 이에 관해서는 도 7 내지 도 10에서 상세하게 후술한다.
도 5에서는 제1 유닛 모듈로(UM1) 및 제2 유닛 모듈로(UM2)가 10 비트인 실시예가 도시되어 있으나, 이는 일 예시일 뿐이고, 유닛 랜덤 넘버(URN1, URN2)와 모듈로(M)의 곱셈 결과에 따라서 제1 유닛 모듈로(UM1) 및 제2 유닛 모듈로(UM2)는 10 비트보다 많거나 적을 수 있다.
도 4 및 도 6을 참조하면, 덧셈기(222)는 제1 유닛 모듈로(UM1) 및 제2 유닛 모듈로(UM2)를 곱셈기(221)로부터 수신하고, 분할 데이터(SD)를 내부 메모리(300)로부터 수신하고, 제1 올림 값(Cr1)을 랜덤 오퍼랜드 레지스터(226)로부터 수신할 수 있다. 덧셈기(222)는 제1 유닛 모듈로(UM1), 제2 유닛 모듈로(UM2), 분할 데이터(SD) 및 제1 올림 값(Cr1)을 자릿수에 맞추어 더할 수 있다. 일 예시에서, 제2 유닛 모듈로(UM2)는 자릿수가 제1 유닛 랜덤 넘버(URM1)에 비해 2 비트만큼 높은 제2 유닛 랜덤 넘버(URM2)에 모듈로(M)를 곱한 값이므로, 자릿수를 맞추기 위해, 제1 유닛 모듈로(UM1)에 비해 2 비트만큼 올림하여 더할 수 있다.
덧셈기(222)는 덧셈 결과 12비트의 데이터를 생성할 수 있다. 생성된 데이터 중 분할 데이터(SD)에 대응하는 8비트의 제1 비트(o0) 내지 제8 비트(o7)는 계산이 완료된 랜덤 오퍼랜드(RO)로써 랜덤 오퍼랜드 레지스터(226)에 저장될 수 있고, 제9 비트(o8) 내지 제12 비트(o11)는 제2 올림 값(Cr2)로써 다음 분할 데이터에 대한 덧셈에 활용될 수 있다.
도 7은 본 개시의 예시적 실시예에 따른 리코더를 나타내는 도면이다.
도 4 및 도 7을 참조하면, 리코더는 리코더 입력과 리코딩 값들 사이의 변환 정보를 저장하는 리코딩 테이블(Recoding Table)을 포함할 수 있다. 변환 정보는 다수의 리코더 입력의 패턴들 각각에 대응하는 복수의 리코딩 값들을 포함할 수 있다. 리코더 입력(Reco_In)은 유닛 랜덤 넘버의 비트(bi)와 레퍼런스 비트(bref)를 포함할 수 있다. 리코더 입력(Reco_In)은 비트들(bi, bref)에 의해 다양한 패턴들을 가질 수 있으며, 유닛 랜덤 넘버의 비트(bi)가 2 비트이고, 레퍼런스 비트(bref)가 1 비트인 경우, 리코더 입력(Reco_In)은 제1 내지 제8 패턴들(Pat(1) ~ Pat(8)) 중 어느 하나가 될 수 있다.
리코딩 테이블(Recoding Table)에 저장된 변환 정보에 따라, 리코더 입력(Reco_In)은 대응하는 리코딩 값(Recoding Value)으로 맵핑 또는 변환될 수 있다. 일 예시에서, 제1 패턴(Pat(1))을 갖는 리코더 입력(Reco_In)에 대응하는 제1 리코딩 값(Val(1))이 변환 정보에 저장되고, 유닛 랜덤 넘버의 비트(bi)와 레퍼런스 비트(bref)가 제1 패턴(Pat(1))을 갖는 경우, 리코더는 제1 리코딩 값(Val(1))을 출력할 수 있다.
또한, 상기와 같은 변환 동작에 기반하여 리코딩 값이 발생될 수 있으며, 상기 리코딩 값은 제어 신호(SEL[0:k]) 형태로 출력될 수 있다. 일 예시에서, 랜덤 넘버가 2 비트를 갖는 경우, 상기 제어 신호(SEL[0:k])는 4 비트의 값을 가질 수 있다.
본 개시의 일 실시예에 따라, 전술한 부스 리코딩 방식이 적용되는 경우, 리코딩 값은 {-2, -1, 0, 1, 2}의 값을 가질 수 있다. 이에 따라, 어느 하나의 패턴을 갖는 리코더 입력에 대응하는 리코딩 값은 다른 하나의 패턴을 갖는 리코더 입력에 대응하는 리코딩 값과 동일할 수 있다. 또한, 제어 신호(sel[0:k])에 기초하여 부분 곱셈기(215)는 부분 곱 연산에서 랜덤 넘버(RN)와 상기 {-2, -1, 0, 1, 2}의 값들(예컨대, 부분 곱 계수들) 중 어느 하나가 곱해진 결과가 생성될 수 있다. 이에 따라, 하나의 부분 곱 연산에서, 부분 곱셈기(215)는 모듈로(M) 및 제어 신호(sel[0:k])를 입력으로 수신하고, 부분 곱 연산 과정을 거쳐 {-2M, -M, 0, M, 2M}의 값들 중 어느 하나를 생성할 수 있다.
도 8은 본 개시의 예시적 실시예에 따른 리코딩 테이블을 나타내는 표이다.
도 8을 참조하면, 랜덤 넘버(RN)가 8 비트의 값으로서 "01101001"인 경우, 랜덤 넘버(RN)는 계수가 {-2, -1, 0, 1, 2}의 값을 갖도록 아래 수학식 5와 같이 변환될 수 있다.
=
= (1)
= (2)
예컨대, 랜덤 넘버(RN)는 (1)과 같이 로 변환될 수도 있으며, 또는 (2)에서와 같이 로 변환될 수도 있다. 즉, 상술한 변환 값들은 랜덤 넘버(RN)와 모두 동일하게 105의 값을 가질 수 있다.
상기와 같은 변환 예에 따라, 유닛 랜덤 넘버(URN)의 2 개의 비트는 {-2, -1, 0, 1, 2}의 값 중 어느 하나로 변환될 수 있다. 일 예로서, 8 비트의 랜덤 넘버는 각각 2 개의 비트를 갖는 4 개의 유닛 랜덤 넘버로 분류될 수 있으며, 예컨대 최하위의 2 개의 비트가 제1 유닛 랜덤 넘버, 다음 하위의 2 개의 비트가 제2 유닛 랜덤 넘버, 그 다음 하위의 2 개의 비트가 제3 유닛 랜덤 넘버, 최상위의 2 개의 비트가 제4 유닛 랜덤 넘버로 분할될 수 있다.
또한, 랜덤 넘버(RN)의 하위 비트들부터 먼저 리코딩 동작이 수행되는 것으로 가정할 때, 현재 리코딩 동작이 수행되는 유닛 랜덤 넘버의 상위 비트가 다음의 리코딩 동작에서 레퍼런스 비트로 이용될 수 있다. 예컨대, 제2 유닛 랜덤 넘버에 대해 리코딩 동작이 수행될 때, 제1 유닛 랜덤 넘버의 두 개의 비트들 중 상위 비트가 레퍼런스 비트(Ref bit)에 해당할 수 있다.
만약, 최하위 2 개의 비트를 포함하는 제1 유닛 랜덤 넘버에 대해 리코딩 동작이 수행되는 경우에는, 0 에 해당하는 비트가 레퍼런스 비트(Ref bit)로 정의될 수 있다. 이에 따라, 현재 리코딩 동작이 수행되는 2 개의 비트들이 b2i +1 및 b2i 인 것으로 가정할 때, 현재의 리코딩 동작에서 레퍼런스 비트(Ref bit)는 b2i -1에 해당하고, 다음 리코딩 동작에서의 레퍼런스 비트(Next Ref bit)는 b2i +1에 해당할 수 있다.
랜덤 넘버(RN)가 '01101001(2) '인 예시에서, 제1 유닛 랜덤 넘버는 '01'이고, 레퍼런스 비트는 '0'일 수 있다. 도 8의 표에서와 같이 제1 유닛 랜덤 넘버의 비트들 및 레퍼런스 비트(Ref bit)를 포함하는 리코더 입력은 '010'에 해당하고 이에 대응하는 리코딩 값(Recoding Value)은 '1'의 값을 가질 수 있다.
다음 하위 2 개의 비트를 포함하는 제2 유닛 랜덤 넘버는 '10'이고, 레퍼런스 비트(Ref bit)는 이전의 제1 유닛 랜덤 넘버의 상위 비트로서 '0'일 수 있다. 이에 따라, 제2 유닛 랜덤 넘버의 비트들 및 레퍼런스 비트(Ref bit)를 포함하는 리코더 입력은 '100'에 해당하고 이에 대응하는 리코딩 값(Recoding Value)는 '-2'의 값을 가질 수 있다.
다음 하위 2 개의 비트를 포함하는 제3 유닛 랜덤 넘버 역시 '10'이고, 레퍼런스 비트(Ref bit)는 이전의 제2 유닛 랜덤 넘버의 상위 비트로서 '1'일 수 있다. 이에 따라, 제3 유닛 랜덤 넘버의 비트들 및 레퍼런스 비트(Ref bit)를 포함하는 리코더 입력은 '101'에 해당하고 이에 대응하는 리코딩 값(Recoding Value)는 '-1'의 값을 가질 수 있다.
다음 하위 2 개의 비트를 포함하는 제4 유닛 랜덤 넘버는 '01'이고, 레퍼런스 비트(Ref bit)는 이전의 제3 유닛 랜덤 넘버의 상위 비트로서 '1'일 수 있다. 이에 따라, 제4 유닛 랜덤 넘버의 비트들 및 레퍼런스 비트(Ref bit)를 포함하는 리코더 입력은 '011'에 해당하고 이에 대응하는 리코딩 값(Recoding Value)는 '2'의 값을 가질 수 있다.
즉, 리코더는 랜덤 넘버(RN)로써 '01101001(2)'를 수신하고, 리코딩 값으로써 '2', '-1', '-2', '1'을 생성할 수 있다.
도 8에서는 리코딩 테이블이 미리 생성되어 보안 프로세서 내에 저장되는 예시가 설명되었으나 본 개시의 실시예는 이에 제한되지 않는다. 일 예시에서, 상기 표에 도시된 리코더 입력에 대응하는 리코딩 값은 소정의 수식을 연산함에 의해 산출될 수 있으며, 보안 프로세서 내에 상기 소정의 수식을 연산하기 위한 구성이 구비되어 연산 과정을 통해 리코딩 값이 생성될 수 있다.
도 9는 본 개시의 예시적 실시예에 따른 제어 신호 테이블을 나타내는 표이다.
도 8 및 도 9를 참조하면, 도 9의 표에 표시된 리코딩 값이 '-2'에 해당하는 경우 이에 대응하여 제어 신호(sel0~ sel3)는 '1010'의 값을 가지며, 리코딩 값이 '-1'에 해당하는 경우 이에 대응하여 제어 신호(sel0 ~ sel3)는 '1001'의 값을 가질 수 있다. 또한, 리코딩 값이 '0'에 해당하는 경우 이에 대응하여 제어 신호(sel0 ~ sel3)는 '0000'의 값을 가지며, 리코딩 값이 '1'에 해당하는 경우 이에 대응하여 제어 신호(sel0 ~ sel3)는 '0101'의 값을 가지며, 리코딩 값이 '2'에 해당하는 경우 이에 대응하여 제어 신호(sel0 ~ sel3)는 '0110'의 값을 가질 수 있다. 상기와 같은 제어 신호(sel0 ~ sel3)는 이하에 설명되는 부분 곱 연산에서 모듈로에 곱해지는 계수를 선택하는 신호로 이용될 수 있다.
본 개시의 일 실시예에 따른 리코더는 도 8에서 상술한 리코딩 값들('2', '-1', '-2', '1')에 대응하는 제어 신호들(sel0 ~ sel3)을 부분 곱셈기에 출력할 수 있다. 일 예시에서, 리코더는 제1 유닛 랜덤 넘버에 대응하는 리코딩 값인 '1'에 기초하여 부분 곱셈기에 '0101'을 제어 신호들(sel0 ~ sel3)로써 출력할 수 있다. 또한, 리코더는 제2 유닛 랜덤 넘버에 대응하는 리코딩 값인 '-2'에 기초하여 부분 곱셈기에 '1010'을 제어 신호들(sel0 ~ sel3)로써 출력할 수 있다.
도 10은 본 개시의 예시적 실시예에 따른 부분 곱셈기를 나타내는 회로도이다.
도 10을 참조하면, n 비트의 모듈로(M[0 ~ n-1])와 전술한 랜덤 넘버에 대한 리코딩 결과에 따른 제어 신호(sel0 ~ sel3)가 부분 곱셈기(225)로 제공될 수 있다. 도 10에는 하나의 부분 곱셈기(225)를 구성하는 로직들이 도시되었으나, 전술한 바와 같이 보안 프로세서가 두 개 이상의 부분 곱셈기들을 포함함에 따라 두 개 이상의 부분 곱들이 함께 연산될 수 있다. 부분 곱셈기(225)는 n 비트의 모듈로(M[0 ~ n-1])와 2 비트의 유닛 랜덤 넘버를 곱셈한 결과로서, n+1 비트의 유닛 모듈로(UMi[n:0])) 및 1 비트의 부호 데이터(UMi_neg)를 생성할 수 있다.
모듈로 M에 대해서, n+1 비트의 유닛 모듈로(UMi[n:0]) 및 1 비트의 부호 데이터(UMi_neg)에 의해 부분 곱 결과 값은 {-2M, -M, 0, M, 2M} 중 어느 하나가 될 수 있다. 1 비트의 부호 데이터(UMi_neg)는 제1 제어 신호(sel0)에 상응할 수 있다.
부분 곱셈기(225)는 다수의 로직 소자들을 이용하여 구현될 수 있으며, 도 10에는 그 일 예로서 부분 곱셈기(225)가, 다수 개의 인버터들(410), 다수 개의 AND 게이트들 및 다수 개의 OR 게이트들을 포함한 예가 도시된다. 예컨대, 부분 곱셈기(225)의 입력으로서 n 비트의 모듈로(M[0 ~ n-1]) 이외에도 모듈로(M[0 ~ n-1])의 최하위 비트(M[0])의 우측에는 제로 값이 더 입력되고, 또한 모듈로(M[0 ~ n-1])의 최상위 비트(M[n-1])의 좌측에는 제로 값이 더 입력될 수 있다.
부분 곱셈기(225)는 상기 모듈로(M[0 ~ n-1]) 및 두 개의 제로 값에 대응하여 n+2 개의 인버터들(225_1)을 포함할 수 있다. 또한, 부분 곱셈기(225)는 제1 단의 AND 게이트 블록(225_2)과 제1 단의 OR 게이트 블록(225_3)을 더 포함할 수 있다. 제1 단의 AND 게이트 블록(225_4)은 다수 개의 AND 게이트들(AND1_11,AND1_12 ~AND1_(n+2)1,AND1(n+2)2)을 포함할 수 있으며, 일 예로 모듈로(M[0 ~ n-1]) 및 두 개의 제로 값의 각각의 비트에 대응하여 두 개의 AND 게이트들이 배치될 수 있다. 모듈로(M[0 ~ n-1])의 최하위 비트(M[0])를 예로 들면, 제1 AND 게이트(AND1_21)는 제2 선택 신호(sel1)와 최하위 비트(M[0])를 입력으로 수신하고, 제2 AND 게이트(AND1_22)는 제1 선택 신호(sel0)와 최하위 비트(M[0])의 반전된 값을 입력으로 수신할 수 있다. 또한, 제1 단의 OR 게이트 블록(430)은 다수 개의 OR 게이트들(OR1_1 ~ OR1_(n+2))을 포함할 수 있으며, 모듈로(A[0 ~ n-1])의 최하위 비트(M[0])를 예로 들면, 제1 AND 게이트(AND1_21) 및 제2 AND 게이트(AND1_22)의 출력들이 제2 OR 게이트(OR1_2)의 입력으로 제공될 수 있다.
부분 곱셈기(225)는 제2 단의 AND 게이트 블록(225_4)과 제2 단의 OR 게이트 블록(225_5)을 더 포함할 수 있다. 일 예로서, 제2 단의 AND 게이트 블록(225_4)은 다수 개의 AND 게이트들(AND2_11, AND2_12 ~AND2_n1, AND2_n2)을 포함할 수 있다. 모듈로(M[0 ~ n-1])의 하위의 두 개의 비트들(M[0], M[1])를 예로 들면, 제1 AND 게이트(AND2_21)는 제4 선택 신호(sel3)와 제1 단의 OR 게이트 블록(430)의 제3 OR 게이트(OR1_3)의 출력을 수신할 수 있으며, 제2 AND 게이트(AND2_22)는 제3 선택 신호(sel2)와 제1 단의 OR 게이트 블록(225_3)의 제2 OR 게이트(OR1_2)의 출력을 수신할 수 있다.
한편, 제2 단의 OR 게이트 블록(225_5)은 다수 개의 OR 게이트들(OR2_1 ~ OR2_n)을 포함할 수 있으며, 모듈로(M[0 ~ n-1])의 하위의 두 개의 비트들(M[0], M[1])를 예로 들면, 제1 AND 게이트(AND2_21) 및 제2 AND 게이트(AND2_22)의 출력들이 제2 OR 게이트(OR2_2)의 입력으로 제공될 수 있다. 이외, 부분 곱셈기(225)에 구비되는 다른 로직 소자들에 대한 구체적인 연결 관계는 도면에 도시된 바에 따라 구현될 수 있으며, 이에 관련된 구체적인 설명은 생략된다.
도 10에 도시된 로직 소자들에서, 전술한 리코딩 결과는 제어 신호(sel0 ~ sel3)를 통해 부분 곱 연산에 반영되며, 일 예로서 제1 및 제2 제어 신호(sel0 ~ sel1)는 모듈로(M)의 음/양의 부호를 결정할 수 있으며, 제3 및 제4 제어 신호(sel2 ~ sel3)는 부분 곱의 계수가 '1' 또는 '2' 에 해당하는 것으로 결정할 수 있다. 만약, 부분 곱 결과가 음수인 경우, 2의 보수를 생성하기 위해 부호 데이터(UMi_neg)가 이용될 수 있으며, 일 예로서, -2M는 -2M = ~(M<<1)+1 과 같이 계산될 수 있다. 상기 식에서, M<<1는 2를 곱하는 것에 해당하고, 부정(negation, "~")과 "+1"은 2의 보수를 생성하기 위함이다.
본 개시의 일 실시예에 따른 부분 곱셈기는 제어 신호들(sel0 ~ sel3)에 기초하여 모듈로(M)와 유닛 랜덤 넘버를 곱한 값에 대응하는 유닛 모듈로(UMi[n:0], UMi_neg)를 생성하고, 생성한 유닛 모듈로(UMi[n:0], UMi_neg)를 덧셈기에 출력할 수 있다.
도 11은 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다. 도 2와 중복되는 내용은 생략한다.
도 11을 참조하면, 보안 프로세서(10a)는 랜덤 넘버 생성기(100a) 및 모듈러 계산기(200a)를 포함하고, 모듈러 계산기(200a)는 제1 랜덤 오퍼랜드 생성기(210a), 제2 랜덤 오퍼랜드 생성기(230a) 및 출력 데이터 생성기(220a)를 포함할 수 있다.
제1 랜덤 오퍼랜드 생성기(210a)는 랜덤 넘버 생성기(100a)로부터 제1 랜덤 넘버(RN1)를 수신하고, 메모리(도 1, 20)로부터 제1 입력 데이터(ID1)를 수신할 수 있다. 제1 랜덤 오퍼랜드 생성기(210a)는 제1 랜덤 넘버(RN1) 및 제1 입력 데이터(ID1)를 기초로 제1 랜덤 오퍼랜드(RO1)를 생성할 수 있다. 일 예시에서, 제1 랜덤 오퍼랜드 생성기(210a)는 모듈로(M)에 랜덤 넘버(RN)를 곱한 뒤, 제1 입력 데이터(ID1)를 더함으로써 제1 랜덤 오퍼랜드(RO1)를 생성할 수 있다(RO1=ID1+RN1*M).
제2 랜덤 오퍼랜드 생성기(230a)는 랜덤 넘버 생성기(100a)로부터 제2 랜덤 넘버(RN2)를 수신하고, 메모리(도 1, 20)로부터 제2 입력 데이터(ID2)를 수신할 수 있다. 제2 랜덤 오퍼랜드 생성기(230a)는 제2 랜덤 넘버(RN2) 및 제2 입력 데이터(ID2)를 기초로 제2 랜덤 오퍼랜드(RO2)를 생성할 수 있다. 일 예시에서, 제2 랜덤 오퍼랜드 생성기(230a)는 모듈로(M)에 제2 랜덤 넘버(RN2)를 곱한 뒤, 제2 입력 데이터(ID2)를 더함으로써 제2 랜덤 오퍼랜드(RO2)를 생성할 수 있다(RO2=ID2+RN2*M).
출력 데이터 생성기(220a)는 제1 랜덤 오퍼랜드(RO1) 및 제2 랜덤 오퍼랜드(RO2)를 수신하고, 제1 랜덤 오퍼랜드(RO1) 및 제2 랜덤 오퍼랜드(RO2)에 대한 사칙 연산(예를 들면, 덧셈, 뺄셈, 곱셈, 나눗셈)을 수행하고, 사칙 연산을 수행한 결과에 대해 모듈로(M)를 제수로 하는 나머지 연산을 수행함으로써 출력 데이터(OD)를 생성할 수 있다.
나머지 연산(mod)의 성질에 따르면, 임의의 수 A, B, r, M 및 임의의 사칙연산 △(예를 들면, 덧셈, 뺄셈, 곱셈, 나눗셈 중 어느 하나)에 대해서 아래 수학식 6가 만족될 수 있다.
상기 수학식 6에 의해 제1 입력 데이터(ID1), 제2 입력 데이터(ID2), 제1 랜덤 오퍼랜드(RO1) 및 제2 랜덤 오퍼랜드(RO2)에 대한 아래 수학식 7가 성립한다.
즉, 본 개시의 일 실시예에 따른 보안 프로세서(10a)는 제1 입력 데이터(ID1) 및 제1 랜덤 넘버(RN1)를 기초로 연산된 제1 랜덤 오퍼랜드(RO1)와 제2 입력 데이터(ID2) 및 제2 랜덤 넘버(RN2)를 기초로 연산된 제1 랜덤 오퍼랜드(RO1)에 대해서 나머지 연산을 수행할 수 있다. 보안 프로세서(10a)는 제1 입력 데이터(ID1) 뿐 만 아니라 제2 입력 데이터(ID2)에 대해서도 제2 랜덤 넘버(RN2)를 이용하여 생성한 제2 랜덤 오퍼랜드(RO2)를 이용하여 나머지 연산을 수행할 수 있고, 보안 프로세서(10a)의 보안성이 증가할 수 있다.
도 12는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다. 도 2와 중복되는 내용은 생략한다.
도 12를 참조하면, 보안 프로세서(10b)는 랜덤 넘버 생성기(100b) 및 모듈러 계산기(200b)를 포함하고, 모듈러 계산기(200b)는 랜덤 오퍼랜드 생성기(210b), 및 출력 데이터 생성기(220b)를 포함할 수 있다. 랜덤 넘버 생성기(100b)는 제1 랜덤 넘버(RN1)를 랜덤 오퍼랜드 생성기(210b)에 출력할 수 있다. 랜덤 오퍼랜드 생성기(210b)는 제1 랜덤 넘버(RN1)를 이용하여 제1 랜덤 오퍼랜드(ROa)를 생성할 수 있고, 출력 데이터 생성기(220b)는 제2 입력 데이터(ID2) 중 적어도 일부에 대한 연산에 있어서 제1 랜덤 오퍼랜드(ROa)를 이용할 수 있다.
랜덤 넘버 생성기(100b)는 제2 입력 데이터(ID2)에 대한 연산 중 제1 랜덤 넘버(RN1)와 상이한 제2 랜덤 넘버(RN2)를 랜덤 오퍼랜드 생성기(210b)에 출력할 수 있다. 즉, 다시 말하면, 랜덤 넘버 생성기(100b)는 제2 입력 데이터(ID2)에 대한 연산 중 출력 신호를 제1 랜덤 넘버(RN1)에서 제2 랜덤 넘버(RN2)로 갱신할 수 있다. 랜덤 오퍼랜드 생성기(210b)는 제2 랜덤 넘버(RN2)를 이용하여 제2 랜덤 오퍼랜드(ROb)를 생성할 수 있고, 출력 데이터 생성기(220b)는 제2 입력 데이터(ID2) 중 나머지 일부에 대한 연산에 있어서 제2 랜덤 오퍼랜드(ROb)를 이용할 수 있다.
본 개시의 일 실시예에 따르면, 입력 데이터에 대한 연산 도중 랜덤 넘버 생성기(100b)로부터 출력되는 랜덤 넘버를 갱신함으로써 제1 랜덤 오퍼랜드(ROa) 및 제2 랜덤 오퍼랜드(ROb)의 랜덤 특성이 더 증가할 수 있고, 부채널 공격으로부터 입력 데이터(ID1)를 효과적으로 방어할 수 있다.
도 13은 본 개시의 예시적 실시예에 따른 보안 프로세서의 동작을 나타내는 도면이다.
도 12 및 도 13을 참조하면, 제2 입력 데이터(ID2)는 제1 서브 입력 데이터(SID1) 및 제2 서브 입력 데이터(SID2)를 포함할 수 있다. 랜덤 넘버 생성기(100b)는 제1 랜덤 넘버(RN1)를 생성하고, 랜덤 오퍼랜드 생성기(210b)는 제1 랜덤 넘버(RN1)를 이용하여 제1 랜덤 오퍼랜드(ROa)를 계산할 수 있다. 출력 데이터 생성기(220b)는 제2 입력 데이터(ID2) 중 제1 서브 입력 데이터(SID1)에 대한 연산 과정에서는 제1 랜덤 넘버(RN1)에 기초하여 생성된 제1 랜덤 오퍼랜드(ROa)를 이용할 수 있다. 일 예시에서, 출력 데이터 생성기(220b)는 제1 서브 입력 데이터(SID1)와 제1 랜덤 오퍼랜드(ROa)를 곱함으로써 제1 서브 출력 데이터(SOD1)를 생성할 수 있다.
이 후, 랜덤 넘버 생성기(100b)는 제2 랜덤 넘버(RN2)를 생성하고, 랜덤 오퍼랜드 생성기(210b)는 제2 랜덤 넘버(RN2)를 이용하여 제2 랜덤 오퍼랜드(ROb)를 계산할 수 있다. 출력 데이터 생성기(220b)는 제2 입력 데이터(ID2) 중 제2 서브 입력 데이터(SID2)에 대한 연산 과정에서는 제2 랜덤 넘버(RN2)에 기초하여 생성된 제2 랜덤 오퍼랜드(ROb)를 이용할 수 있다. 일 예시에서, 출력 데이터 생성기(220b)는 제2 서브 입력 데이터(SID2)와 제2 랜덤 오퍼랜드(ROb)를 곱함으로써 제2 서브 출력 데이터(SOD2)를 생성할 수 있다.
출력 데이터 생성기(220b)는 생성된 제1 서브 출력 데이터(SOD1) 및 제2 서브 출력 데이터(SOD2)를 자릿수에 맞추어 더한 뒤 모듈로(M)으로 나눈 나머지 값을 출력 데이터(OD)로 생성할 수 있다. 일 예시에서, 출력 데이터 생성기(220b)는 제2 서브 출력 데이터(SOD2)의 최하위 비트를 제2 서브 입력 데이터(SID2)의 최하위 비트의 자릿수에 맞춘 뒤 제1 서브 출력 데이터(SOD1)와 더할 수 있다.
도 14는 본 개시의 예시적 실시예에 따른 보안 프로세서를 나타내는 블록도이다. 도 2와 중복되는 내용은 생략한다.
도 14를 참조하면, 보안 프로세서(10c)는 랜덤 넘버 생성기(100c) 및 모듈러 계산기(200c)를 포함하고, 모듈러 계산기(200c)는 랜덤 오퍼랜드 생성기(210c), 및 출력 데이터 생성기(230c)를 포함할 수 있다. 랜덤 오퍼랜드 생성기(220c)는 랜덤 넘버를 저장하기 위한 랜덤 넘버 레지스터(223c)를 포함할 수 있다.
랜덤 오퍼랜드 생성기(220c)는 랜덤 넘버 생성기(100c)에 랜덤 넘버 요청 신호(RSig_RN)를 출력할 수 있다. 랜덤 넘버 생성기(100c)는 랜덤 넘버 요청 신호(RSig_RN)에 대응하여 업데이트된 랜덤 넘버(RN_upt)를 랜덤 넘버 레지스터(223c)에 저장할 수 있다.
일 실시예에서, 랜덤 오퍼랜드 생성기(220c)는 미리 결정된 이벤트가 발생하는 경우 랜덤 넘버 요청 신호(RSig_RN)를 랜덤 넘버 생성기(100c)에 출력할 수 있다. 일 예시에서, 미리 결정된 이벤트는 입력 데이터에 대한 리코딩이 완료되었을 때를 일 수 있다. 또 다른 예시에서, 미리 결정된 이벤트는 미리 결정된 비트 수에 대한 리코딩을 완료했을 때 일 수 있다.
또 다른 실시예에서, 랜덤 오퍼랜드 생성기(220c)는 미리 결정된 시간이 지난 경우 랜덤 넘버 요청 신호(RSig_RN)를 랜덤 넘버 생성기(100C)에 출력할 수 있다.
도 15는 본 개시의 예시적 실시예에 따른 어플리케이션 프로세서를 나타내는 블록도이다.
도 15을 참조하면, 어플리케이션 프로세서(1000)는 시스템 온 칩(SoC)으로 구현될 수 있다. 어플리케이션 프로세서(1000)는 CPU(Central processing unit, 1010), 보안 프로세서(1020), 모뎀(1030), 디스플레이 콘트롤러(1040), ROM(read only memory, 1050), 메모리 콘트롤러(1060) 및 RAM(random access memory, 1070)을 포함할 수 있다. 어플리케이션 프로세서(1000)는 도시된 구성요소들 외에도 다른 구성요소, 예컨대, 전원 관리 유닛(power management unit), GPU(Central processing unit) 및 클락 유닛(clock unit) 등을 더 포함할 수 있다.
CPU(1010)는 ROM(1050) 및/또는 RAM(1070)에 저장된 프로그램들이나 데이터를 처리 또는 실행할 수 있다. ROM(1050)은 프로그램들 및/또는 데이터를 저장할 수 있다. 또한, RAM(1070)은 프로그램들, 데이터 및 명령들(instructions)을 일시적으로 저장할 수 있다. 메모리 콘트롤러(1060)는 외부 메모리 장치와 인터페이스하는 기능을 수행하며, 데이터 억세스 요청에 따라 외부 메모리 장치를 제어하여 데이터를 기록하거나 독출할 수 있다. 또한, 디스플레이 콘트롤러(1040)는 디스플레이 장치를 구동함으로써 화면의 표시 동작을 제어할 수 있다.
본 개시의 실시예에 따라, 보안 프로세서(1020)는 전술한 실시예에 따른 보안 연산을 수행할 수 있다. 일 실시예에서, 보안 프로세서(1020)는 모듈러 계산기(1021)를 포함하고, 랜덤 넘버를 이용하여 나머지 연산을 수행할 수 있다. 도 15에 도시되지는 않았으나, 보안 프로세서(1020)는 랜덤 넘버 생성기 등을 더 포함할 수 있다.
모뎀(1030)이 어플리케이션 프로세서(1000)에 구비됨에 따라, 상기 어플리케이션 프로세서(1000)는 ModAP 으로 지칭될 수 있다. 모뎀(1030)을 통해 보안 연산이 필요로 되는 정보들이 외부의 시스템과 송수신될 수 있으며, 이 때 보안 프로세서(1020)는 전술한 실시예들에 따라 보안 연산을 수행할 수 있을 것이다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기;및
    제1 입력 데이터 및 상기 제1 랜덤 넘버를 기초로 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기;를 포함하고,
    상기 제1 입력 데이터에 대한 나머지 연산의 결과 값과 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산의 결과 값은 동일하고,
    상기 모듈러 계산기는,
    상기 제1 랜덤 오퍼랜드를 생성하는 제1 랜덤 오퍼랜드 생성기;및
    제2 입력 데이터 및 상기 제1 랜덤 오퍼랜드에 대한 산술 연산을 수행한 뒤, 나머지 연산을 수행함으로써 상기 출력 데이터를 생성하는 출력 데이터 생성기;를 포함하고,
    상기 랜덤 넘버 생성기는 제2 랜덤 넘버를 더 생성하고,
    상기 모듈러 계산기는,
    상기 제2 입력 데이터 및 상기 제2 랜덤 넘버를 기초로 제2 랜덤 오퍼랜드를 생성하는 제2 랜덤 오퍼랜드 생성기;를 더 포함하고,
    상기 출력 데이터 생성기는 상기 제1 랜덤 오퍼랜드 및 상기 제2 랜덤 오퍼랜드에 대한 상기 산술 연산을 수행한 뒤, 나머지 연산을 수행함으로써 상기 출력 데이터를 생성하는 것을 특징으로 하는 보안 프로세서.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 랜덤 오퍼랜드 생성기는,
    상기 나머지 연산의 제수인 모듈로에 상기 제1 랜덤 넘버를 곱하는 곱셈기;및
    상기 곱셈기의 곱셈 결과에 상기 제1 입력 데이터를 더함으로써 상기 제1 랜덤 오퍼랜드를 생성하는 덧셈기;를 포함하는 것을 특징으로 하는 보안 프로세서.
  4. 제3항에 있어서,
    상기 곱셈기는,
    상기 제1 랜덤 넘버를 구성하는 복수의 단위 랜덤 넘버들 각각에 대응하는 복수의 제어 신호들을 생성하는 리코더;및
    상기 복수의 제어 신호들을 기초로 상기 모듈로와 상기 복수의 단위 랜덤 넘버들을 곱한 값에 대응하는 복수의 단위 모듈로들을 생성하는 단위 모듈로 생성기;를 포함하고,
    상기 덧셈기는 상기 복수의 단위 모듈로들과 상기 제1 입력 데이터를 자릿수에 맞추어 더함으로써 상기 제1 랜덤 오퍼랜드를 생성하는 것을 특징으로 하는 보안 프로세서.
  5. 제4항에 있어서,
    상기 리코더는 상기 복수의 단위 랜덤 넘버들 각각을 복수의 리코딩 값들로 변환하고, 상기 복수의 리코딩 값들을 기초로 상기 복수의 제어 신호들을 생성하는 것을 특징으로 하는 보안 프로세서.
  6. 제5항에 있어서,
    상기 리코더는,
    부스 리코딩(Booth Recoding)에 기반하여 상기 복수의 단위 랜덤 넘버들 각각을 복수의 리코딩 값들로 변환하기 위한 변환 정보가 저장된 리코딩 테이블 및 리코딩 값들에 대응하는 상기 복수의 제어 신호들에 대한 변환 정보가 저장된 제어 신호 테이블을 포함하고,
    상기 리코딩 테이블을 기초로 상기 복수의 단위 랜덤 넘버들을 상기 복수의 리코딩 값들로 변환하고, 상기 제어 신호 테이블을 기초로 상기 복수의 리코딩 값들 별 상기 복수의 제어 신호들을 상기 단위 모듈로 생성기에 출력하고,
    상기 단위 모듈로 생성기는 상기 복수의 제어 신호들을 기초로 복수의 단위 모듈로들을 생성하는 것을 특징으로 하는 보안 프로세서.
  7. 제4항에 있어서,
    상기 제1 입력 데이터를 포함하는 오리지널 데이터를 저장하는 메모리;를 더 포함하고,
    상기 모듈러 계산기는, 상기 오리지널 데이터를 m(m은 자연수) 비트 단위로 분할한 복수의 분할 데이터들을 순차적으로 로드하는 것을 특징으로 하는 보안 프로세서.
  8. 제7항에 있어서,
    상기 덧셈기는 상기 복수의 분할 데이터들 중 제1 분할 데이터에 대한 제1 연산을 수행하기 전에 제2 분할 데이터에 대한 제2 연산을 수행하고,
    상기 제1 랜덤 오퍼랜드 생성기는 상기 제2 연산 중 m 비트를 초과하는 올림 값을 저장하는 제1 레지스터;를 더 포함하고,
    상기 덧셈기는 상기 제1 레지스터로부터 로드한 상기 올림 값, 상기 복수의 단위 모듈로들 및 상기 제1 분할 데이터를 자릿수에 맞추어 더함으로써 상기 제1 랜덤 오퍼랜드를 생성하는 것을 특징으로 하는 보안 프로세서.
  9. 삭제
  10. 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기;및
    제1 입력 데이터 및 상기 제1 랜덤 넘버를 기초로 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기;를 포함하고,
    상기 제1 입력 데이터에 대한 나머지 연산의 결과 값과 상기 제1 랜덤 오퍼랜드에 대한 나머지 연산의 결과 값은 동일하고,
    상기 모듈러 계산기는,
    상기 제1 랜덤 오퍼랜드를 생성하는 제1 랜덤 오퍼랜드 생성기;및
    제2 입력 데이터 및 상기 제1 랜덤 오퍼랜드에 대한 산술 연산을 수행한 뒤, 나머지 연산을 수행함으로써 상기 출력 데이터를 생성하는 출력 데이터 생성기;를 포함하고,
    상기 랜덤 넘버 생성기는 상기 제1 랜덤 넘버와 상이한 제3 랜덤 넘버를 더 생성하고,
    상기 제1 랜덤 오퍼랜드 생성기는 상기 제2 입력 데이터에 대한 연산 과정에서 상기 제1 입력 데이터 및 상기 제3 랜덤 넘버를 기초로 제3 랜덤 오퍼랜드를 더 생성하는 것을 특징으로 하는 보안 프로세서.
  11. 제10항에 있어서,
    상기 제2 입력 데이터는 제1 서브 입력 데이터 및 제2 서브 입력 데이터를 포함하고,
    상기 출력 데이터 생성기는,
    상기 제1 랜덤 오퍼랜드 및 상기 제1 서브 입력 데이터에 대한 산술 연산을 수행한 뒤, 나머지 연산을 수행함으로써 제1 서브 출력 데이터를 생성하고,
    상기 제3 랜덤 오퍼랜드 및 상기 제2 서브 입력 데이터에 대한 산술 연산을 수행한 뒤, 나머지 연산을 수행함으로써 제2 서브 출력 데이터를 생성하고,
    상기 제1 서브 출력 데이터 및 상기 제2 서브 출력 데이터를 자릿수에 맞추어 더한 뒤 나머지 연산을 수행함으로써 상기 출력 데이터를 생성하는 것을 특징으로 하는 보안 프로세서.
  12. 제10항에 있어서,
    상기 제1 랜덤 오퍼랜드 생성기는,
    상기 랜덤 넘버 생성기로부터 수신한 적어도 하나의 랜덤 넘버를 저장하는 제2 레지스터;를 더 포함하고,
    상기 제1 랜덤 오퍼랜드를 상기 출력 데이터 생성기에 출력한 후, 상기 랜덤 넘버 생성기에 랜덤 넘버 요청 신호를 출력하고,
    상기 랜덤 넘버 생성기는 상기 랜덤 넘버 요청 신호에 대응하여 상기 제2 레지스터에 상기 제3 랜덤 넘버를 출력하는 것을 특징으로 하는 보안 프로세서.
  13. 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기;및
    모듈로에 상기 제1 랜덤 넘버를 곱한 뒤, 제1 입력 데이터를 더함으로써 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드를 상기 모듈로로 나눈 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기;를 포함하고,
    상기 모듈러 계산기는 제2 입력 데이터 및 상기 제1 랜덤 오퍼랜드에 대한 산술 연산을 수행하고, 상기 산술 연산의 결과값을 상기 모듈로로 나눈 결과 발생하는 나머지를 상기 출력 데이터로서 생성하고,
    상기 랜덤 넘버 생성기는 상기 제1 랜덤 넘버와 상이한 제3 랜덤 넘버를 더 생성하고,
    상기 모듈러 계산기는 상기 제2 입력 데이터에 대한 연산 과정에서 상기 모듈로에 상기 제3 랜덤 넘버를 곱한 뒤, 상기 제1 입력 데이터를 더함으로써 제3 랜덤 오퍼랜드를 더 생성하는 것을 특징으로 하는 보안 프로세서.
  14. 삭제
  15. 삭제
  16. 제13항에 있어서,
    상기 제2 입력 데이터는 제1 서브 입력 데이터 및 제2 서브 입력 데이터를 포함하고,
    상기 모듈러 계산기는 상기 제1 랜덤 오퍼랜드 및 상기 제1 서브 입력 데이터에 대한 제1 산술 연산을 수행하고, 상기 제1 산술 연산의 결과 값을 상기 모듈로로 나눈 결과 발생하는 나머지를 제1 서브 출력 데이터로서 생성하고,
    상기 제3 랜덤 오퍼랜드 및 상기 제2 서브 입력 데이터에 대한 제2 산술 연산을 수행하고, 상기 제2 산술 연산의 결과 값을 상기 모듈로로 나눈 결과 발생하는 나머지를 제2 서브 출력 데이터로서 생성하고,
    상기 제1 서브 출력 데이터 및 상기 제2 서브 출력 데이터에 기초하여 상기 출력 데이터를 생성하는 것을 특징으로 하는 보안 프로세서.
  17. 제1 랜덤 넘버를 생성하는 랜덤 넘버 생성기;및
    모듈로에 상기 제1 랜덤 넘버를 곱한 뒤, 제1 입력 데이터를 더함으로써 제1 랜덤 오퍼랜드(operand)를 생성하고, 상기 제1 랜덤 오퍼랜드를 상기 모듈로로 나눈 나머지 연산을 통해 출력 데이터를 생성하는 모듈러 계산기;를 포함하고,
    상기 모듈러 계산기는 상기 제1 랜덤 넘버에 대한 부스 리코딩(Booth Recording)에 기반하여 상기 제1 랜덤 넘버에 대응되는 복수의 제어 신호들을 생성하고, 상기 복수의 제어 신호들에 기초하여 상기 제1 랜덤 넘버 및 상기 모듈로를 곱한 결과값에 대응되는 복수의 단위 모듈로들을 생성하는 것을 특징으로 하는 보안 프로세서.
  18. 제1 랜덤 넘버를 생성하는 단계;
    모듈로, 상기 제1 랜덤 넘버 및 제1 입력 데이터를 기초로 제1 랜덤 오퍼랜드를 생성하는 단계;
    상기 제1 랜덤 오퍼랜드를 기초로 출력 데이터를 생성하는 단계;를 포함하고,
    상기 제1 랜덤 오퍼랜드을 상기 모듈로로 나눈 나머지와 상기 제1 입력 데이터를 상기 모듈로로 나눈 나머지는 동일하고,
    상기 출력 데이터를 생성하는 단계는,
    제2 입력 데이터 및 상기 제1 랜덤 오퍼랜드에 대한 산술 연산을 수행하는 단계;및
    상기 산술 연산을 수행하는 단계에 대한 결과 값을 상기 모듈로로 나눈 나머지를 상기 출력 데이터로서 생성하는 단계;를 포함하는 것을 특징으로 하는 보안 프로세서의 동작 방법.
  19. 제18항에 있어서,
    상기 제1 랜덤 오퍼랜드를 생성하는 단계는,
    상기 모듈로와 상기 제1 랜덤 넘버를 곱하는 단계;및
    상기 곱하는 단계의 결과 값에 상기 제1 입력 데이터를 더하는 단계;를 포함하고,
    상기 더하는 단계의 결과 생성되는 데이터는 상기 제1 랜덤 오퍼랜드인 것을 특징으로 하는 보안 프로세서의 동작 방법.
  20. 삭제
KR1020190005855A 2019-01-16 2019-01-16 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법 KR102653018B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190005855A KR102653018B1 (ko) 2019-01-16 2019-01-16 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법
US16/536,796 US11392725B2 (en) 2019-01-16 2019-08-09 Security processor performing remainder calculation by using random number and operating method of the security processor
CN201910970322.1A CN111444518A (zh) 2019-01-16 2019-10-12 安全处理器及其操作方法、加密或解密数据的方法
TW109101100A TWI821501B (zh) 2019-01-16 2020-01-13 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190005855A KR102653018B1 (ko) 2019-01-16 2019-01-16 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법

Publications (2)

Publication Number Publication Date
KR20200089145A KR20200089145A (ko) 2020-07-24
KR102653018B1 true KR102653018B1 (ko) 2024-03-29

Family

ID=71517668

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190005855A KR102653018B1 (ko) 2019-01-16 2019-01-16 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법

Country Status (4)

Country Link
US (1) US11392725B2 (ko)
KR (1) KR102653018B1 (ko)
CN (1) CN111444518A (ko)
TW (1) TWI821501B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449642B2 (en) * 2020-09-04 2022-09-20 Arm Limited Attack protection by power signature blurring
CN114846473A (zh) 2020-10-27 2022-08-02 京东方科技集团股份有限公司 数据处理电路、数据处理方法及电子设备
CN112653706B (zh) * 2020-12-29 2022-11-04 杭州趣链科技有限公司 基于中国剩余定理的数据传输方法、装置和系统
CN113839769B (zh) * 2021-09-27 2023-08-22 刘昀宸 防止侧信道攻击的方法、算术逻辑单元以及处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571268B1 (en) 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US20090276610A1 (en) 2008-04-30 2009-11-05 International Business Machines Corporation Test case generation with backward propagation of predefined results and operand dependencies
US20110246789A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Integrated circuit protected against horizontal side channel analysis

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1840732A1 (en) 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
US20090016523A1 (en) 2007-07-12 2009-01-15 Atmel Corporation Masking and Additive Decomposition Techniques for Cryptographic Field Operations
KR101592920B1 (ko) 2009-06-10 2016-02-12 삼성전자주식회사 모듈러 연산 방법 및 이를 위한 장치
KR101344402B1 (ko) 2010-08-12 2013-12-26 한국전자통신연구원 Rsa 서명 방법 및 장치
KR101341810B1 (ko) 2011-11-17 2013-12-17 고려대학교 산학협력단 Crt-rsa를 이용하여 전력 분석 공격과 오류 주입 공격으로부터 정보를 보호하는 방법
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
KR101553148B1 (ko) 2014-03-05 2015-09-14 울산대학교 산학협력단 비트 확장 방식을 이용한 암호화 장치 및 방법
US9626531B2 (en) * 2014-11-18 2017-04-18 Intel Corporation Secure control of self-encrypting storage devices
US10181944B2 (en) 2015-06-16 2019-01-15 The Athena Group, Inc. Minimizing information leakage during modular exponentiation and elliptic curve point multiplication
KR102594656B1 (ko) 2016-11-25 2023-10-26 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
KR101891898B1 (ko) 2016-12-21 2018-08-27 (주)라닉스 수평 상관 전력 분석 공격에 안전한 rsa 암호화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571268B1 (en) 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US20090276610A1 (en) 2008-04-30 2009-11-05 International Business Machines Corporation Test case generation with backward propagation of predefined results and operand dependencies
US20110246789A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Integrated circuit protected against horizontal side channel analysis

Also Published As

Publication number Publication date
US11392725B2 (en) 2022-07-19
TWI821501B (zh) 2023-11-11
KR20200089145A (ko) 2020-07-24
TW202044083A (zh) 2020-12-01
US20200226294A1 (en) 2020-07-16
CN111444518A (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
KR102653018B1 (ko) 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법
CN101507176B (zh) 椭圆曲线点乘法
KR100891323B1 (ko) 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
US11509454B2 (en) Apparatus for processing modular multiply operation and methods thereof
US20110002460A1 (en) High-speed cryptographic system using chaotic sequences
CN107004084B (zh) 用于加密操作的乘法掩码
KR102594656B1 (ko) 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
US11424907B2 (en) Countermeasures for side-channel attacks on protected sign and key exchange operations
KR20050072537A (ko) 암호화 장치, 암호화 방법 및 그 기록매체
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
Kang et al. Fast image encryption algorithm based on (n, m, k)-PCMLCA
JP2023063430A (ja) 暗号システム、鍵生成装置、暗号化装置、復号装置、方法及びプログラム
US20090268900A1 (en) Signed montgomery arithmetic
KR20040067779A (ko) 정보 처리방법
KR100508092B1 (ko) 저전력 모듈로 곱셈을 수행하는 연산장치
CN116436709B (zh) 一种数据的加解密方法、装置、设备和介质
CN110336658B (zh) 基于aes算法的加密方法、用户设备、存储介质及装置
Parihar et al. Fast Montgomery modular multiplier for rivest–shamir–adleman cryptosystem
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
EP3419213B1 (en) Computer implemented method, computer system and computer readable computer program product
KR102491902B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
US20240106639A1 (en) Method of Calculating Cipher and Electronic Device Performing the Method
Ho Accelerating homomorphic encryption for privacy-preserving applications

Legal Events

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