KR20130111721A - 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서 - Google Patents

부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서 Download PDF

Info

Publication number
KR20130111721A
KR20130111721A KR1020120033804A KR20120033804A KR20130111721A KR 20130111721 A KR20130111721 A KR 20130111721A KR 1020120033804 A KR1020120033804 A KR 1020120033804A KR 20120033804 A KR20120033804 A KR 20120033804A KR 20130111721 A KR20130111721 A KR 20130111721A
Authority
KR
South Korea
Prior art keywords
zero
code
partial product
booth
generating
Prior art date
Application number
KR1020120033804A
Other languages
English (en)
Inventor
이용기
신종훈
안경문
강지수
신선수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020120033804A priority Critical patent/KR20130111721A/ko
Priority to US13/716,994 priority patent/US20130262544A1/en
Publication of KR20130111721A publication Critical patent/KR20130111721A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction

Landscapes

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

Abstract

디지털 신호 프로세서의 n 비트 피승수와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수를 디지트 시리얼 곱셈하는 것을 개시한다. 프로세서는 랜덤 수 발생기, 부스 인코더 및 부분 곱 생성기를 포함한다. 부스 인코더는 d개의 k비트 승수 각각에 대해서 부스 인코딩한 부스코드를 생성하되, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성한다.부분 곱 생성기는 n 비트 피승수를 입력하여 부스코드에 응답하여 n+1 비트 부분 곱 데이터와 1비트 부호 데이터를 각각 생성하되, 제로생성 부스코드에 응답하여, 제1 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "0"으로 생성하거나, 제로회피 부스코드에 응답하여, 제2 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "1"로 생성한다. 따라서 디지털 신호 프로세서의 곱셈 연산시 "0"입력에 의한 현저한 전력소모량 감소현상을 방지함으로써 부채널 공격에 대한 방어효과를 얻을 수 있다.

Description

부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서{Method of Generating Booth Code, Computer System and Computer Readable Medium, and Digital Signal Processor}
본 발명은 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서에 관한 것으로서, 보다 상세하게는 전력분석에 의한 부채널 공격을 방어하기 위한 방법 및 시스템에 관한 것이다.
보안 연산기 (Security Processor)의 구현에 있어서, 가장 중요한 요소들 중 하나가 부채널 공격 (SCA; Side Channel Analysis)에 대한 방어기술(Countermeasure)을 적용하는 것이다.
부채널에 의한 암호 시스템 공격 기술을 일반적으로 부채널 공격이라 부르며, 시차정보에 의한 시차공격, 결함 오작동 정보에 의한 결함 주입 공격, 전자기 누출 정보에 의한 전자기 누출 공격, 전력선 누출 정보에 의한 전력분석 공격으로 대별된다.
이 중에서 전력분석 공격은 카드 내부에 내장된 암호 알고리즘과 암호용 비밀 키가 작동되는 순간에 IC 칩의 순간적인 전압(전력) 변화를 관측하여 각종 정보의 이진 코드를 읽어낸 후 통계적인 방법으로 중요 정보를 분석함은 물론 위조/변조까지 가능한 암호 해독 기술을 의미하며, 단순 전력분석 공격, 차분 전력분석 공격, 추론 전력분석 공격 및 고차 차분 전력분석 공격으로 나눌 수 있다. 특히, 차분 전력분석 공격은 전압의 변화를 관측할 수 있는 몇 가지 장비만 구비하면 비밀 키의 추정이 가능하기 때문에 전용 해독 기계 또는 슈퍼컴퓨터를 동원한 전수공격(brute-force attack)보다 훨씬 효과적인 것으로 분석되고 있다.
입력값에 따라 스위칭되는 트랜지스터의 개수에 차이가 발생하며, 이에 따라 전력 소모량이 달라진다. 이러한 전력 차이는 차분 전력분석 공격에 대한 취약점으로 작용하게 된다.
그러므로 H/W (Hard Ware)구현에 있어서, 상당한 비중을 두는 사항 중 하나가 전력소모의 차이를 활용한 공격 (Power Analysis)에 대한 방어이다. 이를 위해서는 입력값에 대한 전력소모의 의존도를 제거해야만 한다.
하지만, 이에 대한 방어기술들은 상당히 큰 오버헤드(Overhead)를 발생시키는데, 경우에 따라 보안 프로세서의 크기가 크게 증가되거나, 평균전력소모가 급격하게 증가하기도 하며, 연산 수행에 필요한 사이클의 수가 늘어나기도 한다.
따라서 방어기술을 구현하는 것이 부담으로 작용하는 경우가 많다. 특히, 산술연산들 중 큰 비중을 차지하는 곱셈과 관련하여, 승수(multiplier)가 전체 혹은 부분적으로 "0"(zero)을 포함하고 있을 경우, 부분 결과값 (Partial Product)이 "0"이 됨으로 인해 전력소모가 현저히 변할 수 있다. 따라서 이에 기반한 부채널 공격이 이루어질 가능성이 크다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 곱셈연산의 '0'입력(zero input)에 대한 전력소모의 현저한 변화를 효과적으로 방지할 수 있는 부분 곱 생성기의 부스코드 생성방법을 제공하는 것이다.
본 발명의 다른 목적은 부채널 공격에 대한 방어능력을 향상시킬 수 있는 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 판독 가능매체를 제공하는 데 있다.
본 발명의 또 다른 목적은 곱셈 연산시 부분 곱 데이터의 값이 연속적으로 '0'으로 발생되는 것을 방지할 수 있는 디지털 신호 프로세서 및 그 곱셈방법을 제공하는 데 있다.
본 발명의 또 다른 목적은 부분 곱 발생기의 추가적인 하드웨어 부담없이 부분 곱 데이터의 값이 연속적으로 "0"으로 발생되는 것을 방지할 수 있는 디지털 신호 프로세서 및 그 곱셈방법을 제공하는 데 있다.
상술한 본 발명의 일 목적을 달성하기 위하여, 본 발명의 실시예들에 따른 부스코드 생성방법은 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 생성한다.
본 발명에서 제로생성 부스코드와 제로회피 부스코드는 서로 랜덤하게 생성되는 것이 바람직하며, 특히 제로회피 부스코드의 생성빈도는 부분 곱 생성기의 전력 소모량의 평균값에 근접하는 생성빈도로 생성되는 것이 좋다.
본 발명에서 제2 제로표현 부분 곱 데이터는 제1 제로표현 부분 곱 데이터인 "0"의 1의 보수와 "0"의 1의 보수에 가산되어 "0"의 2의 보수를 형성하기 위한 1비트 "1"을 포함할 수 있다.
본 발명의 부스코드 생성회로는 선택신호를 랜덤하게 생성하기 위한 랜덤수 발생기와, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 생성하고 선택신호에 응답하여 제로생성 부스코드와 제로회피 부스코드를 랜덤하게 선택하여 부분곱 생성기에 인가하는 부스 코드 인코더를 포함한다.
또한 본 발명은 기록을 위한 컴퓨터 실행 가능 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능 매체, 즉 소프트웨어 프로그램으로 구현될 수 있다. 여기서 컴퓨터 실행가능 명령어는 승수를 부스 코드로 인코딩하여, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성하는 명령어와, 제로생성 부스코드에 응답하여, 제1 제로표현 부분 곱 데이터의 모든 비트들을 "0"으로 생성하는 명령어와, 제로회피 부스코드에 응답하여, 제2 제로표현 부분 곱 데이터를 상기 제1 제로표현 부분 곱 데이터인 "0"의 1의 보수와, 상기 "0"의 1의 보수에 가산되어 "0"의 2의 보수를 형성하기 위한 1비트 "1"을 각각 생성하는 명령어를 포함한다.
본 발명의 컴퓨터 시스템은 승수를 부스 코드로 인코딩하여 부분 곱 데이터를 "0"으로 생성하는 제로생성 부스코드와 제로회피 부스코드를 랜덤하게 생성하는 수단과, 피승수를 입력하고, 제로생성 부스코드에 응답하여, 상기 제1 제로표현 부분 곱 데이터의 모든 비트들을 "0"으로 생성하거나, 제로회피 부스코드에 응답하여, 제2 제로표현 부분 곱 데이터를 상기 제1 제로표현 부분 곱 데이터인 "0"의 1의 보수와, "0"의 1의 보수에 가산되어 "0"의 2의 보수를 형성하기 위한 1비트 "1"을 각각 생성하는 부분 곱 생성 수단과, 부분 곱 생성수단으로부터 제공된 부분 곱 데이터들을 순차적으로 누산하여 최종 곱셈 결과를 생성하는 누산 수단을 구비한다.
또한 본 발명은 디지털 신호 프로세서에 탑재되는 하드웨어 또는 펌웨어로 구현될 수 있다.
디지털 신호 프로세서의 n 비트 피승수와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수를 디지트 시리얼 곱셈한다. 디지털 신호 프로세서는 랜덤 수 발생기, 부스 인코더 및 부분 곱 생성기를 포함한다. 부스 인코더는 d개의 k비트 승수 각각에 대해서 부스 인코딩한 부스코드를 생성하되, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성한다.부분 곱 생성기는 n 비트 피승수를 입력하여 부스코드에 응답하여 n+1 비트 부분 곱 데이터와 1비트 부호 데이터를 각각 생성하되, 제로생성 부스코드에 응답하여, 제1 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "0"으로 생성하거나, 제로회피 부스코드에 응답하여, 제2 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "1"로 생성한다.
또한 디지털 신호 프로세서에서 n 비트 피승수와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수를 디지트 시리얼 곱셈하는 방법은 디지털 신호 프로세서에서 상기 d개의 k비트 승수 각각에 대해서 부스 인코딩한 부스코드를 생성하고, 디지털 신호 프로세서에서 상기 부스코드에 응답하여 상기 n 비트 피승수의 n+1 부분 곱 데이터와 1비트 부호 데이터를 각각 생성한다. 디지털 신호 프로세서에서 상기 부스코드를 생성하는 단계에서는 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성한다. 부분 곱 데이터를 생성하는 단계에서는 제로생성 부스코드에 응답하여, 제1 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "0"으로 생성하거나, 제로회피 부스코드에 응답하여, 제2 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "1"로 생성한다.
또한 본 발명의 디지트 시리얼 곱셈방법은 n 비트 피승수(A)와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수(B)를 디지트 시리얼 곱셈하는 방법에 있어서 다음 단계들로 구성된다.
a) 입력 레지스터에 피승수 A를 입력하는 단계;
b) 내부 버퍼 메모리를 초기화하는 단계;
c) 승수 B를 디지트 단위로 분할하고 분할된 디지트 값 bi가 "0"인지를 판단하는 단계;
d) 상기 bi의 값이"0"이 아니면 모디파이드 부스 알고리즘에 의해 부스코드를 생성하여 부분 곱 생성 모듈에 제공하는 단계;
e) 상기 bi가 "0"일 경우에는 한비트 이상의 랜덤 수를 입력하여 제로생성 부스코드 및 제로회피 부스코드들 중 어느 하나를 랜덤하게 발생하는 단계;
f) 생성된 부스코드에 응답하여 부분 곱과 부호비트를 생성하는 단계;
g) 생성된 부분 곱과 부호비트를 이전의 부분 곱들에 누적 합산하는 단계;
h) 모든 분할된 디지트에 대한 부분 곱 생성 및 합산 완료될 때까지 상기 c) 내지 g) 단계들을 반복 수행하는 단계; 및
i) 상기 h)단계에서 모든 디지트에 대해 누적 합산이 완료된 경우에는 누적 합산된 값을 곱셈 결과로 출력하는 단계.
상기와 같은 본 발명의 실시예들에 따른 부스 알고리즘을 이용한 디지트 시리얼 곱셈 연산을 수행하는 시스템에 있어서, 하드웨어의 추가 없이 연속적으로 "0"값을 가진 부분 곱 데이터의 발생을 방지함으로써 현저한 전력 소모량 변화를 제거할 수 있다. 따라서 보안 프로세서의 부채널 공격에 대해 효과적으로 대채할 수 있는 곱셈 연산이 가능하다. 또한 부가적인 H/W 및 평균전력소모에 대한 오버헤드가 적고, 부가적인 사이클 추가가 없으며, 동작 주파수의 저하도 없다. 그러므로 대부분의 암호 연산기가 채용하고 있는 부스 알고리즘을 적용한 부스 레코딩 방식의 곱셈을 사용할 경우, 기존 H/W 기본 구조를 그대로 사용할 수 있다.
다만, 본 발명의 효과는 상기에서 언급된 효과로 제한되는 것은 아니며, 상기에서 언급되지 않은 다른 효과들은 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명에 의한 바람직한 일실시예인 디지털 신호 프로세서의 디지트 시리얼 곱셈기의 블록도.
도 2는 도 1의 곱셈기(140)의 바람직한 일 실시예의 세부 블록도.
도 3은 도 2의 부분 곱 생성기(144)의 바람직한 일 실시예의 세부 블록도.
도 4는 도 3의 부분 곱 블록의 바람직한 일 실시예의 상세한 회로도.
도 5는 본 발명에 의한 디지트 시리얼 곱셈동작을 설명하기 위한 도면.
도 6은 본 발명에 의한 곱셈방법을 컴퓨터 시스템에서 소프트웨어적으로 실행하기 위한 흐름도.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시(說示)된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세히 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
일반적인 연산기에서와 마찬가지로, 보안연산기에서 가장 기본이 되는 연산 중 하나가 곱셈연산이다. 특히, 공개키 알고리즘을 수행하는 연산기에서는 상대적으로 큰 수에 대한 산술연산들(덧셈/뺄셈, 곱셈, modular 연산 등)을 수행하는데, 그 연산자의 크기가 RSA의 경우 최소 1024bit이상은 되어야 안전한 연산으로 인정받을 수 있다. 이로 인해, 대부분의 공개키 연산기는 디지트 시리얼 곱셈기(digit-serial multiplier) 형태의 연산방식을 채택하고 있다. 다음의 알고리즘1은 시리얼 곱셈기(serial multiplication)을 보여주고 있다.
Figure pat00001
시리얼 곱셈방식에서
Figure pat00002
가 0인 경우에 대한 전력소모의 변화를 다음과 같이 구분하여 생각해볼 수 있다.
(1). 알고리즘 1에서 2.A는 단순히 쉬프트 연산(즉, wiring)으로 구현되기 때문에, 실제적인 전력을 소모하는 계산과정은 2.B에 해당한다. 이때, 만일
Figure pat00003
가 0이면,
Figure pat00004
가 0이기 때문에, 2.B에서 변수
Figure pat00005
의 값이 변하지 않게 되며, 이로 인해 전력소모가 평균 전력소모량에 비해 적게 된다.
(2). 만일,
Figure pat00006
가 연속적으로 2회 이상 0인 경우에는 2.B의
Figure pat00007
값이 변하지 않을 뿐만 아니라,
Figure pat00008
의 값이 연속적으로 0으로 고정되기 때문에
Figure pat00009
을 산출(evaluation)하는 로직게이트의 스위칭 활성도(switching activity)가 급격히 줄어들게 되어 전력소모량 역시 급격히 줄게 된다.
(3). 그리고, (2)의 경우가 연산자
Figure pat00010
의 MSD(Most Significant Digit) 부분에서 발생한다면, 전력소모의 차이는 더욱 심각해지는데, 이는 2.B에서
Figure pat00011
Figure pat00012
의 변화가 없을 뿐만 아니라, 레지스터를 업데이트하는 부분(2.C)에서 레지스터 값이 0으로 고정되어 이 역시 변화가 없기 때문이다.
이러한 사실에 기반하여,
Figure pat00013
의 값이 유출될 가능성이 있으며, 이는 보안연산기의 중요한 결점으로 작용할 수 있다. 기존에 알려진 SCA의 대책(countermeasure)로 크게 하이딩(hiding)과 마스킹(masking)으로 나누어 볼 수 있다.
Hiding은 부채널 신호를 줄이거나 노이즈를 증가시킴으로써, 전력소모의 변화를 줄이는 방법이다. 하이딩 방식을 쓸 경우, 회로면적과 평균 전력소모가 2배 이상을 늘어나게 된다. 그리고 클록이 로우일 때만, 실제적인 로직 산출동작이 수행되기 때문에, 전체적인 성능(performance)가 저하될 수 있다.
한편 Masking은 암호연산 전에 masking operation을 수행함으로써 암호연산에 사용되는 input을 랜덤화 시킨다. 그리고, masking operation을 상쇄하기 위해, 암호연산 후에는 unmasking operation을 추가적으로 수행함으로써 결과적으로 등가의 연산결과를 도출하는 방법이다. 마스킹 방법은 곱셈 masking을 H/W에 직접 적용하기 보다는, 곱셈기를 제어하는 제어기 혹은 이를 제어하는 S/W에 반영하여 구현하는 것이 더 효과적일 것이다. 곱셈 masking의 또 다른 단점은
Figure pat00014
혹은
Figure pat00015
Figure pat00016
인 경우 masking의 효과가 없다는 것이다.
그러므로 본 발명에서는, 값이 0임으로 인해 발생할 수 있는 SCA(Side Channel Analysis)의 취약성을 효과적으로 제거하는 방법을 제안한다. 기존의 countermeasure는 일반적인 SPA(Simple Power Analysis)에 대한 방어방식으로, 큰 오버헤드를 가지는 반면, 본 발명은 circuit area와 평균 전력소모에 대한 오버헤드가 무시할 만큼 적게 구현될 수 있다. 또한, cycle수와 maximum frequency의 performance 오버헤드 없이 구현될 수 있다.
따라서 부분곱셈 (partial product)이 0인 경우의 값을 일반적인 형태와 다른 형태로 처리하게 된다. 기본 접근 개념을 다음의 수식으로 요약할 수 있다.
Figure pat00018
0은 -1과 1의 합으로 볼 수 있으며, -1을 2의 보수 (2' complement)로 나타내면,
Figure pat00019
로 표현된다. 따라서, 0은
Figure pat00020
Figure pat00021
의 합으로 해석할 수 있는 것이다.
실제적으로 연산기에서
Figure pat00022
Figure pat00023
의 합을 계산하게 되면, 오버플로우(overflow)를 발생시키고 덧셈의 결과로 0을 생성하기 때문에, 동일한 결과값을 생성하게 된다. 다시 말해, 2.A에서 0을 더하면 전력소모가 줄어들게 되겠지만, 단순히 0을 더하는 대신
Figure pat00024
을 더하게 되면 좀더 복잡한 계산과정을 거쳐 0을 더하기 때문에 전력소모의 감소를 방지할 수 있게 된다. 하지만, 단순히 모든 0에 대해 위와 같은 방식을 적용한다면, 연속된 0에 대해
Figure pat00025
의 연산이 연속적으로 나타나게 되는데, 이에 해당하는 로직 게이트의 토글링(toggling)이 발생하지 않게 되므로 좀더 정교하게 제어할 필요가 있다.
알고리즘1와 같은 시리얼 곰셈기의 성능을 향상시키기 위해 디지트 시리얼 곱셈기로 확장하여 쓰는 경우가 일반적이다. 시리얼 곱셈기에서는 한 사이클에 1 비트의 승수(multiplier)가 처리되는 반면, 디지트 시리얼 곱셈기에서는 한 사이클에 여러 bit의 승수가 처리된다. 따라서, 디지트 사이즈가
Figure pat00026
인 경우, 곱셈 연산에 필요한 사이클 수는
Figure pat00027
로 줄어들게 된다. 디지트 시리얼 곱셈기의 알고리즘은 알고리즘 2에 보여진 바와 같다. 알고리즘 2에서, 부분곱(partial product) 계산이 수행되는 부분은 2.B이다. 2.A는 단순한 쉬프트 연산으로 처리되며, H/W에서는 별도의 로직 게이트의 할당 없이 와이어링으로 구현된다. 이 때, 부분곱의 개수를 줄이기 위해서,
Figure pat00028
를 binary 형태 그대로 곱하는 것이 아니라, recoding 방식을 채택하기 되는데, 가장 일반적인 방식으로 BOOTH recoding이 있다.
Figure pat00029
본 발명에서는 다음 < 표 1 >에 표현된 확장된 BOOTH recoding를 사용한다.
recoding value sel0 sel1 sel2 sel3
-2 1 0 1 0
-1 1 0 0 1
0 0 0 0 0
1 1 1 1
1 0 1 0 1
2 0 1 1 0
본 발명에서는 부분 곱이 "0" 인 경우에 대한 두 가지 선택사항 (sel0=sel1=sel2=sel3=0 혹은 sel0=sel1= sel2=sel3=1)이 존재하게 된다. 단 본 발명에서 사용된 확장 부스코드는 도 3 및 도 4에서 사용된 부분 곱 생성기의 구조에 따라 다르게 설계될 수 있다. 본 발명의 범위는 상기 예에서 사용된 코드의 표현 방법에 제한되지 않으며, 제로생성 부스코드와 더불어 제로회피 부스코드를 생성 및 사용하는 것으로 확장되어 해석되어야 한다.
선택과정을 어떻게 처리하느냐에 따라, 다음과 같이 분류할 수 있다.
(1) 항상 'sel0=sel1=sel2=sel3=0' 을 적용
(2) 항상 'sel0=sel1=sel2=sel3=1' 을 적용
(3) 'sel0=sel1=sel2=sel3=0'과 'sel0=sel1=sel2=sel3=1'을 번갈아 적용
(4) 'sel0=sel1=sel2=sel3=0'과 'sel0=sel1=sel2=sel3=1'을 random (or pseudo-random)하게 선택하여 적용
(1)의 경우, 앞서 설명하였듯이 부분 곱이 "0"으로 생성됨으로 인해, 평균전력에 비해 적은 전력을 소모하게 되므로 SCA의 공격대상이 된다.
(2)에서와 같이 항상 변경된 방식으로 사용할 경우, (1)보다는 개선의 여지가 있지만, recoding 값이 2회 이상 연속으로 0인 경우, 이 역시 평균전력보다 적게 소모할 가능성이 크다. 그 이유는
Figure pat00030
을 산출(evaluation)하는 과정이 고정되기 때문에 이에 해당하는 로직 게이트의 토글링(toggling)이 발생하지 않기 때문이다.
(3)의 경우, recoding 값이 2회 이상 연속으로 0이 발생할 때, 평균보다 오히려 큰 전력을 소모할 가능성이 크다. 이는
Figure pat00031
에서
Figure pat00032
으로 (혹은 그 반대로) 바뀌기 되어, 모든 bit정보가 토글링 됨으로 인해, 평균전력보다 큰 전력을 소모하게 되는 것이다. 이와 더불어, 또 다른 문제점은 이때의 전력 패턴이 고정될 수 있다는 것이다. 비록, 전력소모량이 평균에 근접한다고 하더라도, 항상 동일한 특정패턴을 가진다면 이를 통해 SCA 공격이 이루어질 수 있다.
(4)를 적용함으로써, 특정 패턴이 발생하는 것을 방지할 수 있다. 또한 랜덤분포를 적절히 조정함으로써, (3)에서 발생할 수 있는 평균보다 큰 전력을 소모하는 것을 방지할 수 있다.
본 발명에 의한 개선된 디지트 시리얼 곱셈기의 하드웨어 구조를 구체적인 실시예를 들어 설명하면 다음과 같다.
도 1은 본 발명에 의한 바람직한 일실시예인 디지털 신호 프로세서의 디지트 시리얼 곱셈기의 블록도를 나타낸다.
도 1을 참조하면 디지털 신호 프로세서(100)는 제어부(110), 랜덤 수 발생기(120), 입력 레지스터(130), 곱셈기(140), 버퍼 및 출력 레지스터(150) 및 메모리(160)를 포함한다.
제어부(110)는 시스템 외부와 데이터를 통신하면서 연산 프로그램을 실행하기 위하여 구성요소들을 제어한다.
랜덤 수 발생기(120)는 랜덤 수 발생 알고리즘에 수행하여 2비트의 선택신호(S1)를 무작위로 발생한다. 선택신호(S1)의 각 랜덤 비트는 다음 <표 1>의 상태값을 가진다. 각각의 랜덤비트는 제로생성 부스코드 혹은 제로회피 부스코드 중 하나를 선택하는 신호로 사용된다. 예컨대 "r0" 는 두 개의 부분 곱 생성기들 중 하나에 대한 제로생성 부스코드 혹은 제로회피 부스코드 중 하나를 선택하는 신호로 사용된다. "r1" 는 두 개의 부분 곱 생성기들 중 다른 하나에 대한 제로생성 부스코드 혹은 제로회피 부스코드 중 하나를 선택하는 신호로 사용된다. 즉 본 발명의 예에서는 한번에 2개의 부스코드를 생성하므로 2비트의 랜덤 수가 사용되고 있다.
< 표 1 > 선택신호(S1)의 상태값
Figure pat00033
입력 레지스터(130)는 제어부(110)의 제어에 응답하여 메모리(160)로부터 제공된 n비트 피승수(Multiplicant)와 n비트 승수(Multiplier)를 입력한다.
곱셈기(140)는 디지트 시리얼 곱셈기로 입력 레지스터(130)로부터 n비트 피승수와 d 디지트 승수를 입력받고 랜덤 수 발생기(120)의 선택신호(S1)를 입력받아 디지트 단위로 곱셈연산을 수행하고 그 결과를 버퍼 및 출력 레지스터(150)로 제공한다.
버퍼 및 출력 레지스터(150)는 제어부(110)의 제어를 받아 곱셈결과를 버퍼링하고 다음 디지트 시리얼 곱셈연산을 위하여 곱셈기(140)로 피드백하고 모든 디지트에 대한 곱셉 연산이 완료되면 최종 곱셈결과를 메모리(160)에 저장한다.
도 2는 도 1의 곱셈기의 바람직한 일 실시예의 세부 블록도이다.
도 2를 참조하면 곱셈기(140)는 부스 인코더(142), 부분 곱 생성기(144) 및 누산기(146)를 포함한다.
부스 인코더(142)는 4비트 승수(bi)와 2비트 선택신호(S1)를 입력하여 다음 <표 2>와 같은 모디파이드 부스코드를 생성한다.
bi+1 bi bi-1 recoded digit operation S1
r0 or r1
sel0 sel1 sel2 sel3 설명
1 0 0 -2 -2A 0 or 1 1 0 1 0 A의 2의 보수를 1비트 쉬프트
1 0 1 -1 -1A 0 or 1 1 0 0 1 A의 2의 보수
1 1 0
0 0 0 0 0A 0 0 0 0 0 제로생성 부스코드
1 1 1 1 1 1 1 1 제로회피 부스코드
0 0 1 1 1A 0 or 1 0 1 0 1 A
0 1 0
0 1 1 2 2A 0 or 1 0 1 1 0 A를 1비트 쉬프트
디지트 시리얼 곱셈기를 구성하기 위하여 승수 B를 4 디지트씩 나누어 부스 인코더(142)에 입력한다. 그러므로 본 발명의 부스 인코더(142)에서는 하위 2비트에 대응하는 4비트 부스코드(sel0~sel3)와 상위 2비트에 대응하는 4비트 부스코드(sel0~sel3)가 각각 생성된다. 따라서 부스 인코더(142)는 디지트 수에 따라 동시에 출력되는 부스코드의 수도 달라진다.
본 발명에서는 부분 곱으로 제로값이 생성되면 선택신호(S1)에 의해 랜덤하게 제로생성 부스코드(0000)와 재로회피 부스코드(1111)가 발생된다는 점이 다르다.
부분 곱 생성기(144)는 부스 인코더(142)로부터 8비트 코드값을 입력받아 n비트 피승수 A에 대한 두 개의 n+1 비트 부분 곱(PP0, PP2)과 1비트 부호 데이터(PP0_neg, PP1_neg)를 출력한다.
도 3은 도 2의 부분 곱 생성기(144)의 바람직한 일 실시예의 세부 블록도이고, 도 4는 도 3의 부분 곱 블록의 바람직한 일 실시예의 상세한 회로도이다.
도면을 참조하면 부분 곱 생성기(144)는 두 개의 부분 곱 블록들(144a, 144b)을 포함한다. 부분 곱 블록(144a)은 하위 2비트에 대응하는 4비트 부스코드를 입력하여 5비트 부분 곱(PP0)과 1비트의 부호 데이터(PP0_neg)를 생성한다. 부분 곱 블록(144b)은 상위 2비트에 대응하는 4비트 부스코드를 입력하여 5비트 부분 곱(PP2)과 1비트의 부호 데이터(PP2_neg)를 생성한다.
부분 곱 블록들(144a, 144b) 각각은 n 비트 피승수 A가 4비트인 경우에 6개(= n+2)의 NOT 게이트(NG1~NG6)와 12개(= 2*(= n+2))의 1단 AND 게이트(A1G1~A1G12)와 6개(= n+2)의 1단 OR 게이트(O1G1~O1G6)와, 10개(= 2*(n+1))의 2단 AND 게이트(A2G1~A2G12)와 5개(= n+1)의 2단 OR 게이트(O2G1~O2G6)를 포함한다.
피승수 A의 최하위 자리(A0)는 NOT 게이트(NG2)를 거쳐서 AND 게이트(A1G3)의 일단자에 입력되고 동시에 AND 게이트(A1G4)의 일단자에 입력된다. AND 게이트(A1G3)의 타단자에는 부스코드의 sel0이 입력되고 AND 게이트(A1G4)의 타단자에는 부스코드의 sel1이 입력된다. OR 게이트(O1G2)의 두 입력단에는 AND 게이트(A1G3)와 AND 게이트(A1G3)의 출력단들이 각각 연결된다. 이와 같은 방식으로 피승수 (A1)는 NOT 게이트(NG3), AND 게이트(A1G5), AND 게이트(A1G6) 및 OR 게이트(O1G3)에 결합되고, 피승수 (A2)는 NOT 게이트(NG4), AND 게이트(A1G7), AND 게이트(A1G8) 및 OR 게이트(O1G4)에 결합되고, 피승수 (A3)는 NOT 게이트(NG5), AND 게이트(A1G9), AND 게이트(A1G10) 및 OR 게이트(O1G5)에 결합된다.
피승수 A의 최하위 자리(A0)의 우측에는 제로값이 배치된다. 이 제로값은 NOT 게이트(NG1)를 거쳐서 AND 게이트(A1G1)의 일단자에 입력되고 동시에 AND 게이트(A1G2)의 일단자에 입력된다. AND 게이트(A1G1)의 타단자에는 부스코드의 sel0이 입력되고 AND 게이트(A1G2)의 타단자에는 부스코드의 sel1이 입력된다. OR 게이트(O1G1)의 두 입력단에는 AND 게이트(A1G1)와 AND 게이트(A1G2)의 출력단들이 각각 연결된다.
피승수 A의 최상위 자리(A3)의 좌측에도 제로값이 배치된다. 이 제로값은 NOT 게이트(NG6)를 거쳐서 AND 게이트(A1G11)의 일단자에 입력되고 동시에 AND 게이트(A1G12)의 일단자에 입력된다. AND 게이트(A1G11)의 타단자에는 부스코드의 sel0이 입력되고 AND 게이트(A1G12)의 타단자에는 부스코드의 sel1이 입력된다. OR 게이트(O1G6)의 두 입력단에는 AND 게이트(A1G11)와 AND 게이트(A1G12)의 출력단들이 각각 연결된다.
2단 AND 게이트(A2G1)와 AND 게이트(A2G2)의 일단자에는 OR 게이트(O1G1)의 출력단자와 OR 게이트(O1G2)의 출력단자가 각각 연결된다. AND 게이트(A2G1)의 타단자에는 sel2가 입력되고 AND 게이트(A2G2)의 타단자에는 sel3가 입력된다. AND 게이트(A2G1)와 AND 게이트(A2G2)의 출력단자는 OR 게이트(O2G1)의 입력단자에 각각 연결된다. 2단 AND 게이트(A2G3)와 AND 게이트(A2G4)의 일단자에는 OR 게이트(O1G2)의 출력단자와 OR 게이트(O1G3)의 출력단자가 각각 연결된다. AND 게이트(A2G3)의 타단자에는 sel2가 입력되고 AND 게이트(A2G4)의 타단자에는 sel3가 입력된다. AND 게이트(A2G3)와 AND 게이트(A2G4)의 출력단자는 OR 게이트(O2G2)의 입력단자에 각각 연결된다. 2단 AND 게이트(A2G5)와 AND 게이트(A2G6)의 일단자에는 OR 게이트(O1G3)의 출력단자와 OR 게이트(O1G4)의 출력단자가 각각 연결된다. AND 게이트(A2G5)의 타단자에는 sel2가 입력되고 AND 게이트(A2G6)의 타단자에는 sel3가 입력된다. AND 게이트(A2G5)와 AND 게이트(A2G6)의 출력단자는 OR 게이트(O2G3)의 입력단자에 각각 연결된다. 2단 AND 게이트(A2G7)와 AND 게이트(A2G8)의 일단자에는 OR 게이트(O1G4)의 출력단자와 OR 게이트(O1G5)의 출력단자가 각각 연결된다. AND 게이트(A2G7)의 타단자에는 sel2가 입력되고 AND 게이트(A2G8)의 타단자에는 sel3가 입력된다. AND 게이트(A2G7)와 AND 게이트(A2G8)의 출력단자는 OR 게이트(O2G4)의 입력단자에 각각 연결된다. 2단 AND 게이트(A2G9)와 AND 게이트(A2G10)의 일단자에는 OR 게이트(O1G5)의 출력단자와 OR 게이트(O1G6)의 출력단자가 각각 연결된다. AND 게이트(A2G9)의 타단자에는 sel2가 입력되고 AND 게이트(A2G10)의 타단자에는 sel3가 입력된다. AND 게이트(A2G9)와 AND 게이트(A2G10)의 출력단자는 OR 게이트(O2G5)의 입력단자에 각각 연결된다.
따라서 부분 곱 생성 블록(144a)에서는 다음 < 표 3 >과 같은 부분 곱을 생성한다.
부스코드 1단 OR 게이트 출력 2단 OR 게이트 출력 설명
sel0 sel1 sel2 sel3 O1G6 O1G5 O1G4 O1G3 O1G2 O1G1 O2G5 O2G4 O2G3 O2G2 O2G1
1 0 1 0 1 /A3 /A2 /A1 /A0 1 /A3 /A2 /A1 /A0 1 A의 보수를 1비트 쉬프트
1 0 0 1 1 /A3 /A2 /A1 /A0 1 1 /A3 /A2 /A1 /A0 A의 보수
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 제로생성 부스코드
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 제로회피부스코드
0 1 0 1 0 A3 A2 A1 A0 0 0 A3 A2 A1 A0 A
0 1 1 0 0 A3 A2 A1 A0 0 A3 A2 A1 A0 0 A를 1비트 쉬프트
부스코드의 sel0 값을 1비트 부호 데이터(PP0_neg)로 출력한다.
즉 본 발명에서는 부분 곱의 결과가 "O"일 경우에는 제로생성 부스코드(0000)에 의해 부분 곱이 제1 제로표현,"00000"으로 발생되고 부호데이터가 "0"되지만 제로회피 부스코드(1111)에 의해서는 부분 곱이 "11111"로 발생되고 부호 데이터가 "1"로 발생된다. 이와 같은 "11111"+"1"은 "0"의 또 다른 표현, 즉 제2 제로표현으로 가산기(146a)에 인가된다.
여기서 제로생성 부스코드(0000)가 연속적으로 인가될 경우에는 부분 곱 블록(144a, 144b)들의 모든 게이트들에서 모스 트랜지스터들의 활성화 동작 즉 스위칭 동작이 없으므로 전력소모가 거의 없는 상태이다.
그러나 제로생성 부스코드(0000)가 인가 된 후, 제로회피 부스코드(1111)가 인가될 때 피승수 A의 상태에 관계없이 부분 곱 블록(144a, 144b)들의 12개의 게이트들(A1G1~A1G12) 중의 6개의 게이트들이 스위칭되고 게이트들(O1G1~O1G6), (A2G1~A2G10), (O2G1~O2G5)에서 모두 스위칭 동작이 일어나므로 전력소모가 거의 최대 상태로 된다.
도 2를 참조하면 누산기(146)는 캐리 세이브 가산기(146a)와 쉬프터 연산기(146b) 및 버퍼 레지스터(146c)를 포함한다.
캐리 세이브 가산기(146a)는 PP2 값(Val1)와 PP2_neg 값(Val2), PP0 값(Val3)와 PP0_neg 값(Val4), 피드백 값(Val5, Val6)을 합산하는 연산로직을 포함한다.
PP2 값(Val1)의 최하위 자리는 PP0 값(Val3)의 최하위 자리로부터 2자리 상위 자리와 얼라인되게 배치되고 PP2_neg 값(Val2)은 PP2 값(Val2)의 최하위 자리에 얼라인 되게 배치되고, PP0_neg 값(Val4)는 PP0 값(Val3)의 최하위 자리에 얼라인 되게 배치된다. 이들 입력된 값들은 피드백 값(Val5, Val6)들과 캐리 세이브 가산 연산을 통해 합산된다.
여기서 Val1의 최하위 자리에 Val2가 얼라인되고 Val3의 최하위 자리에 Val4가 얼라인되므로 제로회피 부스코드(1111)에 의해서 발생된 부분 곱 "11111"과 부호 데이터 "1"은 서로 더해져서 "0"의 2의 보수로 작용하게 된다.
이와 같이 캐리 세이브 가산기(146a)에서는 4 디지트 승수와 피승수의 부분 곱을 이전 디지트에서 산출된 섬(sum) 값에 더하고 그 결과를 쉬프트 연산기(146b)에 전송한다. 쉬프트 연산기(146b)는 상위 4비트 계산결과와 자리수를 맞추기 위하여 섬(sum) 값을 4비트 우측으로 쉬프트 시킨다. 이 때 쉬프트되어 4비트씩 출력되는 값들은 곱셈기의 최종 연산결과 중 하위 부분에 해당된다. 쉬프트된 캐리(carry) 값과 섬(sum) 값은 버퍼 레지스터(146c)에 저장된다. 버퍼 레지스터(146c)에 캐리 값과 섬 값은 다음 상위 4비트 계산결과와 누산하기 위하여 캐리 세이브 가산기(146a)에 피드백되는 피드백 값(val5, Val6)으로 제공된다.
모든 디지트에 대해서 부분 곱셈이 완료되면 버퍼 레지스터(146c)의 값을 출력한다. 따라서 곱셈기의 최종 결과 값은 연산 도중 쉬프트 연산을 통해 출력되는 4비트 값들과 연산완료 후 출력되는 쉬프트 연산값의 조합(concatenate)된 값이다.
도 5는 본 발명에 의한 디지트 시리얼 곱셈동작을 설명하기 위한 도면이다.
도 5에서 곱셈기는 피승수 "0000 1111"과 승수 "0011 1111"의 곱셈 과정, 즉 십진수 15 ㅧ 63을 나타낸다. 도면에서 우측은 이진수 표현이고 좌측은 대응하는 십진수를 나타낸다.
승수 "0011 1111"는 하위 4비트 "1111"과 상위 4비트"0011"로 4비트씩 분할되어 피승수"0000 1111"과 곱해진다.
먼저 승수 하위 4비트"1111"에 대한 피승수와의 부분 곱은 부스코드"-1"과 "0"에 의해 부분 곱 생성기(144)를 통해 PP0와 PP0_neg의 값 "1 0000"과 "1", PP2와 PP2_neg의 값 "0 0000"과 "0"으로 생성된다.
캐리 세이브 가산기(146a)에 제공된 부분 곱 PP0와 PP0_neg의 "1 0000"과 "1"은 "1111 0000"과 "1"로 부호 확장되어 Val3, Val4 연산로직에 인가되고, PP2와 PP2_neg의 "0 0000"과 "0"은 "0000 0000"과 "0"으로 부호 확장되어 Val1, Val2 연산로직에 인가된다.
이들 값들의 캐리 세이브 가산결과는 캐리 값 "0000 0000"과 섬 값 "1111 0001"로 생성되어 Val5 및 Val6 연산 로직에 인가된다. Val5 및 Val6에 인가된 값은 쉬프트 연산기(146b)에서 4비트 쉬프트 되어 "1111 1111 0001"로 된다. 최하위 4비트 "0001"은 곱셈 결과의 최하위 4자리 값으로 출력된다. 상위 비트 "1111 1111"값은 다음 상위 4비트 연산을 위하여 버퍼 레지스터(146c)에 저장된다. 이 때 캐리 값 "0000 0000"도 함께 버퍼 레지스터(146c)에 저장된다. 버퍼 레지스터(146c)에 저장된 캐리 값 "0000 0000"과 섬 값 "1111 1111"은 캐리 세이브 가산기(146a)의 피드백 값 Val5 및 Val6으로 피드백 된다.
다음 승수 상위 4비트"0011"에 대한 피승수와의 부분 곱은 부스코드"0"과 "1"에 의해 부분 곱 생성기(144)를 통해 PP4와 PP4_neg의 값 "1 1111"과 "1", PP6와 PP6_neg의 값 "0 1111"과 "0"으로 생성된다.
캐리 세이브 가산기(146a)에 제공된 부분 곱 PP4와 PP4_neg의 "1 1111"과 "1"은 "1111 1111"과 "1"로 부호 확장되어 Val3, Val4 연산로직에 인가되고, PP6와 PP6_neg의 "0 1111"과 "0"은 "0000 1111"과 "0"으로 부호 확장되어 Val1, Val2 연산로직에 인가된다.
이들 값들의 캐리 세이브 가산결과는 캐리 값 "1111 1111"와 섬 값 "0011 1011"으로 생성되어 Val5 및 Val6 연산 로직에 인가된다. val5 및 Val6에 인가된 값은 쉬프트 연산기(146b)를 통해 최종 출력되어 "0011 1011"과 "0001"과 조합된다. 이 조합된 값 "0011 1011 0001"이 최종 곱셈결과(product)로 획득된다.
상술한 바와 같이 본 발명에서는 두 번의 부분 곱 "0 0000"이 발생되었으나 제로회피 부스코드(1111)에 의해 그 중 하나의 부분 곱"0 0000"를 "1 1111"+"1"이라는 제로의 다른 표현의 부분 곱으로 생성함으로써 연속적인 "0 0000" 부분 곱을 회피함으로써 전력소모가 현저하게 줄어드는 것을 방지할 수 있다.
도 6은 본 발명에 의한 곱셈방법을 컴퓨터 시스템에서 소프트웨어적으로 실행하기 위한 흐름도이다.
먼저 입력 레지스터에 피승수 A를 입력한다(S102). 내부 버퍼 메모리를 초기화한다(S104). 승수 B를 디지트 단위로 분할하고 분할된 디지트 값 bi가 "0"인지를 판단한다(S108). "0"이 아니면 모디파이드 부스 알고리즘에 의해 부스코드를 생성하여 부분 곱 생성 모듈에 제공한다(S110). S108단계에서 bi가 "0"일 경우에는 랜덤 수 r0, r1을 입력하여(S112) 제로생성 부스코드 및 제로회피 부스코드들 중 어느 하나를 랜덤하게 발생한다(S114). S110단계와 S114단계에서 생성된 부스코드에 응답하여 부분 곱과 부호비트를 생성한다(S116). 생성된 부분 곱과 부호비트를 이전의 부분 곱들에 누적 합산한다(S118). 모든 분할된 디지트에 대한 부분 곱 생성 및 합산 과정이 완료되지 않을 경우에는 S106단계로 복귀하여 상술한 S106~S120단계를 반복 수행한다. S120단계에서 모든 디지트에 대해 누적 합산이 완료된 경우에는 누적 합산된 값을 곱셈 결과로 출력하고 종료한다(S122).
상기 블록도와 순서도에 나타난 각각의 블록 또는 블록의 집합들의 동작이나 기능들은 하드웨어 또는 소프트웨어 기반으로 다양한 형태로 구현될 수 있음을 이해하여야 한다. 상기 블록도와 순서도에 나타난 블록 또는 블록의 집합들의 동작이나 기능을 구현하기 위한 구조나 수단을 생성할 수 있도록, GPP(General Purpose Processor), SPP(Special Purpose Processor)를 탑재한 컴퓨터, 그 외 프로그램이 가능한 장치에 의해 소프트웨어 기반으로도 구현될 수 있음을 이해하여야 한다.
이상 본 발명의 실시예들에 따른 디지트 시리얼 곱셈기에 대하여 설명의 편의를 위하여 "0"의 다른 표현을 "111...111"+"1"으로 제한하여 설명하였으나, 본 발명의 기술적 사상의 범위 내에서 "0"을 표현하는 여러 가지 다른 표현들, 예컨대 "111...110"+"10", "111...100"+"100"등으로 달리 표현할 수 있음을 이해하여야 할 것이다.
본 발명은 디지트 시리얼 곱셈을 사용하는 회로를 포함하는 임의의 연산장치들에 유용하게 이용될 수 있고, 특히 부채널 공격에 대한 방어기술이 필요한 보안 연산기 등에 더욱 유용하게 이용될 수 있다.
상술한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (10)

  1. 부스 알고리즘으로 부분 곱 생성기를 제어하기 위하여 상기 승수를 인코딩하여 부스코드를 생성하는 방법에 있어서,
    모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 생성하는 것을 특징으로 하는 부분 곱 생성기의 부스코드 생성방법.
  2. 제1항에 있어서, 상기 제로회피 부스코드의 생성빈도는 상기 부분 곱 생성기의 전력 소모량의 평균값에 근접하는 생성빈도로 생성되는 것을 특징으로 하는 부분 곱 생성기의 부스코드 생성방법.
  3. 부스 알고리즘으로 부분 곱 생성기를 제어하기 위하여 상기 승수를 인코딩하여 부스코드를 생성하는 것에 있어서,
    선택신호를 랜덤하게 생성하기 위한 랜덤수 발생기; 및
    모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 생성하고 상기 선택신호에 응답하여 상기 제로생성 부스코드와 제로회피 부스코드를 랜덤하게 선택하여 상기 부분곱 생성기에 인가하는 부스 코드 인코더를 구비한 것을 특징으로 하는 부분 곱 생성기의 부스코드 생성방법.
  4. 기록을 위한 컴퓨터 실행 가능 명령어를 포함하는 하나 이상의 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 실행가능 명령어는
    승수를 부스 코드로 인코딩하여, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성하는 명령어;
    상기 제로생성 부스코드에 응답하여, 상기 제1 제로표현 부분 곱 데이터의 모든 비트들을 "0"으로 생성하는 명령어; 및
    상기 제로회피 부스코드에 응답하여, 상기 제2 제로표현 부분 곱 데이터를 상기 제1 제로표현 부분 곱 데이터인 "0"의 1의 보수와, 상기 "0"의 1의 보수에 가산되어 "0"의 2의 보수를 형성하기 위한 1비트 "1"을 각각 생성하는 명령어를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  5. 제4항에 있어서, 상기 제로생성 부스코드와 제로회피 부스코드는 부분 곱 생성 동작시 전력 소모량이 평균값에 수렴하도록 랜덤하게 생성되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  6. 승수를 부스 코드로 인코딩하여 부분 곱 데이터를 "0"으로 생성하는 제로생성 부스코드와 제로회피 부스코드를 랜덤하게 생성하는 수단;
    피승수를 입력하고, 상기 제로생성 부스코드에 응답하여, 상기 제1 제로표현 부분 곱 데이터의 모든 비트들을 "0"으로 생성하거나, 상기 제로회피 부스코드에 응답하여, 상기 제2 제로표현 부분 곱 데이터를 상기 제1 제로표현 부분 곱 데이터인 "0"의 1의 보수와, 상기 "0"의 1의 보수에 가산되어 "0"의 2의 보수를 형성하기 위한 1비트 "1"을 각각 생성하는 부분 곱 생성 수단; 및
    상기 부분 곱 생성수단으로부터 제공된 부분 곱 데이터들을 순차적으로 누산하여 최종 곱셈 결과를 생성하는 누산 수단을 구비한 것을 특징으로 하는 특징으로 하는 컴퓨터 시스템.
  7. 디지털 신호 프로세서에서 n 비트 피승수와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수를 디지트 시리얼 곱셈하는 방법에 있어서,
    상기 디지털 신호 프로세서에서 상기 d개의 k비트 승수 각각에 대해서 부스 인코딩한 부스코드를 생성하는 단계;
    상기 디지털 신호 프로세서에서 상기 부스코드에 응답하여 상기 n 비트 피승수의 n+1 비트 부분 곱 데이터와 1비트 부호 데이터를 각각 생성하는 단계를 구비하고,
    상기 디지털 신호 프로세서에서 상기 부스코드를 생성하는 단계에서는
    모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성하며,
    상기 부분 곱 데이터를 생성하는 단계에서는
    상기 제로생성 부스코드에 응답하여, 상기 제1 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "0"으로 생성하거나, 상기 제로회피 부스코드에 응답하여, 상기 제2 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "1"로 생성하는 것을 특징으로 하는 디지털 신호 프로세서의 곱셈방법.
  8. 제7항에 있어서, 상기 제로생성 부스코드와 제로회피 부스코드는 부채널 공격을 방어하기 위하여 곱셈 동작시 전력 소모량이 평균값에 수렴하도록 랜덤하게 생성되는 것을 특징으로 하는 디지털 신호 프로세서의 곱셈방법.
  9. n 비트 피승수와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수를 디지트 시리얼 곱셈하는 디지털 신호 프로세서에 있어서,
    랜덤 수를 생성하는 랜덤 수 발생기;
    상기 d개의 k비트 승수 각각에 대해서 부스 인코딩한 부스코드를 생성하되, 모든 비트가 "0"으로 표현되는 제1 제로표현 부분 곱 데이터를 생성하기 위한 제로생성 부스코드와, 적어도 1비트 이상이"1"로 표현되는 제2 제로표현 부분 곱 데이터를 생성하기 위한 제로회피 부스코드를 각각 랜덤하게 생성하는 부스 인코더;
    상기 n 비트 피승수를 입력하여 상기 부스코드에 응답하여 n+1 비트 부분 곱 데이터와 1비트 부호 데이터를 각각 생성하되, 상기 제로생성 부스코드에 응답하여, 상기 제1 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "0"으로 생성하거나, 상기 제로회피 부스코드에 응답하여, 상기 제2 제로표현 부분 곱 데이터의 n+1 비트들과 1비트 부호 데이터를 모두 "1"로 생성하는 부분 곱 생성기를 구비한 것을 특징으로 하는 디지털 신호 프로세서.
  10. n 비트 피승수(A)와 d 디지트씩 k( = n/d) 비트 이진수로 분할되는 승수(B)를 디지트 시리얼 곱셈하는 방법에 있어서,
    a) 입력 레지스터에 피승수 A를 입력하는 단계;
    b) 내부 버퍼 메모리를 초기화하는 단계;
    c) 승수 B를 디지트 단위로 분할하고 분할된 디지트 값 bi가 "0"인지를 판단하는 단계;
    d) 상기 bi의 값이"0"이 아니면 모디파이드 부스 알고리즘에 의해 부스코드를 생성하여 부분 곱 생성 모듈에 제공하는 단계;
    e) 상기 bi가 "0"일 경우에는 랜덤 수를 입력하여 제로생성 부스코드 및 제로회피 부스코드들 중 어느 하나를 랜덤하게 발생하는 단계;
    f) 생성된 부스코드에 응답하여 부분 곱과 부호비트를 생성하는 단계;
    g) 생성된 부분 곱과 부호비트를 이전의 부분 곱들에 누적 합산하는 단계;
    h) 모든 분할된 디지트에 대한 부분 곱 생성 및 합산 완료될 때까지 상기 c) 내지 g) 단계들을 반복 수행하는 단계; 및
    i) 상기 h)단계에서 모든 디지트에 대해 누적 합산이 완료된 경우에는 누적 합산된 값을 곱셈 결과로 출력하는 단계를 구비한 것을 특징으로 하는 디지트 시리얼 곱셈방법.
KR1020120033804A 2012-04-02 2012-04-02 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서 KR20130111721A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120033804A KR20130111721A (ko) 2012-04-02 2012-04-02 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
US13/716,994 US20130262544A1 (en) 2012-04-02 2012-12-17 Electronic multiplier and digital signal processor including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120033804A KR20130111721A (ko) 2012-04-02 2012-04-02 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서

Publications (1)

Publication Number Publication Date
KR20130111721A true KR20130111721A (ko) 2013-10-11

Family

ID=49236506

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120033804A KR20130111721A (ko) 2012-04-02 2012-04-02 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서

Country Status (2)

Country Link
US (1) US20130262544A1 (ko)
KR (1) KR20130111721A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180059270A (ko) * 2016-11-25 2018-06-04 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
KR20190045640A (ko) * 2017-10-24 2019-05-03 삼성전자주식회사 부채널 공격으로부터 정보를 보호하는 방법 및 디바이스

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014222825A1 (de) * 2014-11-07 2016-05-12 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Vorrichtung und Verfahren zur Multiplikation zur Erschwerung von Seitenkanalangriffen
US9813232B2 (en) * 2015-03-17 2017-11-07 Cypress Semiconductor Corporation Device and method for resisting non-invasive attacks
EP3220305B1 (en) * 2016-02-22 2018-10-31 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
IL244842A0 (en) * 2016-03-30 2016-07-31 Winbond Electronics Corp Efficient non-modular multiplexing is protected against side-channel attacks
KR101920190B1 (ko) * 2016-11-22 2019-02-08 한국인터넷진흥원 임의의 ip 생성 방법 및 그 장치
US10778407B2 (en) * 2018-03-25 2020-09-15 Nuvoton Technology Corporation Multiplier protected against power analysis attacks
CN109388372B (zh) * 2018-10-19 2023-04-07 华东交通大学 一种基于最小模块的三值光学处理器msd乘法计算方法
CN110688087B (zh) * 2019-09-24 2024-03-19 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
FR3123743B1 (fr) * 2021-06-02 2024-04-05 St Microelectronics Alps Sas Circuit électronique de multiplication et procédé correspondant de multiplication au sein d’un tel circuit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325320A (en) * 1992-05-01 1994-06-28 Seiko Epson Area efficient multiplier for use in an integrated circuit
US5761106A (en) * 1996-06-24 1998-06-02 Motorola, Inc. Horizontally pipelined multiplier circuit
US5777914A (en) * 1996-08-29 1998-07-07 Lucent Technologies Inc. Technique for reducing power consumption in digital filters
US5835393A (en) * 1996-11-19 1998-11-10 Audiologic Hearing Systems, L.P. Integrated pre-adder for a multiplier
US6144980A (en) * 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US7620832B2 (en) * 2000-09-20 2009-11-17 Mips Technologies, Inc. Method and apparatus for masking a microprocessor execution signature
US7069290B2 (en) * 2002-05-06 2006-06-27 Lucent Technologies Inc. Power efficient booth recoded multiplier and method of multiplication
TWI263164B (en) * 2004-12-29 2006-10-01 Ind Tech Res Inst Booth array multiplier with bypass circuits
US8082287B2 (en) * 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US7797365B2 (en) * 2006-06-27 2010-09-14 International Business Machines Corporation Design structure for a booth decoder

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180059270A (ko) * 2016-11-25 2018-06-04 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
US10693625B2 (en) 2016-11-25 2020-06-23 Samsung Electronics Co., Ltd. Security processor, application processor including the same, and operating method of security processor
KR20190045640A (ko) * 2017-10-24 2019-05-03 삼성전자주식회사 부채널 공격으로부터 정보를 보호하는 방법 및 디바이스

Also Published As

Publication number Publication date
US20130262544A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
KR20130111721A (ko) 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
KR100725169B1 (ko) 전력 분석 공격에 안전한 논리 연산 장치 및 방법
Groß et al. Generic low-latency masking in hardware
KR20180002067A (ko) 부채널 분석에 대응하여 대입표를 이용한 대입 연산을 보호하는 방법
CA2864227C (en) Lightweight stream cipher cryptosystems
GB2453367A (en) Cryptographic processing using isomorphic mappings of Galois fields
KR102594656B1 (ko) 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
KR20050072537A (ko) 암호화 장치, 암호화 방법 및 그 기록매체
WO2015166496A1 (en) Multi-topology logic gates
US7139787B2 (en) Multiply execution unit for performing integer and XOR multiplication
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
Mayhew et al. On-chip nanoscale capacitor decoupling architectures for hardware security
KR20140037153A (ko) 랜덤 출력 비트 시퀀스의 생성 방법
CN110336658B (zh) 基于aes算法的加密方法、用户设备、存储介质及装置
Baba et al. Multiple-valued constant-power adder for cryptographic processors
GB2443358A (en) Cryptographic logic circuits and method of performing logic operations
JP4290203B2 (ja) リダクションアレイの装置および方法
GB2443355A (en) Cryptographic logic circuits and method of performing logic operations
CN107241183B (zh) 用于aes和rsa混合算法硬件电路的可配置乘法装置
Mahyar Reliable and High-Speed KASUMI Block Cipher by Residue Number System Code
Nadjia et al. High throughput parallel montgomery modular exponentiation on FPGA
US20060020822A1 (en) Device and method for calculating encrypted data from unencrypted data or unencrypted data from encrypted data
Saputra et al. Masking the energy behaviour of encryption algorithms
CN104346134A (zh) 用于执行缩小和舍入算术运算的数据处理装置和方法
Ahn et al. A random M-ary method based countermeasure against side channel attacks

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid