KR20180121248A - 부채널 공격에 안전한 연산 장치 및 방법 - Google Patents

부채널 공격에 안전한 연산 장치 및 방법 Download PDF

Info

Publication number
KR20180121248A
KR20180121248A KR1020170055700A KR20170055700A KR20180121248A KR 20180121248 A KR20180121248 A KR 20180121248A KR 1020170055700 A KR1020170055700 A KR 1020170055700A KR 20170055700 A KR20170055700 A KR 20170055700A KR 20180121248 A KR20180121248 A KR 20180121248A
Authority
KR
South Korea
Prior art keywords
parameter values
value
random number
parameter
generating
Prior art date
Application number
KR1020170055700A
Other languages
English (en)
Other versions
KR101989950B1 (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 KR1020170055700A priority Critical patent/KR101989950B1/ko
Priority to US15/862,803 priority patent/US10659224B2/en
Priority to EP18154413.1A priority patent/EP3396893B1/en
Priority to JP2020509401A priority patent/JP2020520615A/ja
Priority to SG11201909494R priority patent/SG11201909494RA/en
Priority to PCT/KR2018/001584 priority patent/WO2018199444A1/en
Publication of KR20180121248A publication Critical patent/KR20180121248A/ko
Application granted granted Critical
Publication of KR101989950B1 publication Critical patent/KR101989950B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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/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/723Modular exponentiation
    • 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/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Abstract

연산 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 연산 장치는, 임의의 비트 열로 구성된 시드 값을 생성하는 시드 값 생성부, 상기 시드 값을 복수의 블록으로 분할하는 분할부, 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 제1 추출부, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 제2 추출부 및 상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하고, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성하며, 상기 추출된 복수의 제2 파라미터 값을 이용하여 제3 난수 값을 생성하는 연산부를 포함한다.

Description

부채널 공격에 안전한 연산 장치 및 방법{APPARATUS AND METHOD FOR PERFORMING OPERATION BEING SECURE AGAINST SIDE CHANNEL ATTACK}
본 발명의 실시예들은 부채널 공격 방지 기술과 관련된다.
IoT(Internet of Things) 디바이스가 발전함에 따라 암호화를 위한 키 교환, 암호화, 전자 서명 등을 위한 수학적인 계산 시 디바이스에서 유출되는 물리적인 정보를 이용하여 중요 정보를 알아내는 부채널 공격(side channel attack)의 위험성이 날로 커져 가고 있다.
부채널 공격(side channel attack)은 키 교환, 암호화, 전자 서명 등을 위한 알고리즘 구동 시 수행되는 연산에 대한 부채널 정보(예를 들어, 전력소비, 전자기파 방출량, 알고리즘의 수행시간 등)의 유출을 이용해 비밀 정보를 알아내는 공격을 말한다.
부채널 공격 중 전력분석공격(Power Analysis Attack)은 현재 가장 강력한 부채널 공격으로 알려져 있으며, 공격 장비 또한 저가로 실현 가능성이 높아 매우 효율적인 공격수단으로 알려져 있다. 때문에 현재 가장 많은 연구가 이루어지고 있는 분야이기도 하다. 이러한 전력분석공격 방법에는 크게 단순전력분석(Simple Power Analysis, SPA), 차분전력분석(Differential Power Analysis, DPA)이 있다.
예를 들어, 지수승 연산 또는 스칼라 곱 연산은 종래 암호키 교환 기법, 공개키 암호화 기법, 전자 서명 기법 등에서 반드시 필요한 연산이다. 지수승(또는 스칼라 곱) 연산의 경우, 지수승 값을 비트 열로 표기했을 때 비트 열의 각 자리가 1일 때는 제곱 연산과 곱셈 연산을 0일 때는 곱셈 연산만을 수행한다.
전력분석공격은 지수승 값의 각 자리의 비트 값이 1일 때와 0일 때의 연산에 대한 전력소모량이 다른 것을 이용한 공격이다. 즉, 1일 때의 거듭제곱 후 곱셈연산은 전력소모량이 크고 0일 때의 전력소모량은 상대적으로 적으므로 지수승 계산 시 소모되는 전력분석을 통해 비밀 값인 지수승 값의 정보를 취득하는 방법으로 비밀 값(비밀키 등)에 대한 정보를 획득할 수 있다.
이와 같은 부채널 공격에 대한 방지 방법들은 일부 부채널 공격만을 방어하는 방법으로 전반적인 부채널 공격에 안전한 방법은 제안되지 않았다. 또한 현재까지 제안된 부채널 방지 방법은 추가 연산량이 많이 요구되어 성능저하(전자서명 생성 시간 지연) 문제점이 있다.
한국공개특허 제10-2016-0115936호 (2016.10.06. 공개)
본 발명의 실시예들은 부채널 공격에 의해 중요 정보가 노출되는 것을 방지하기 위한 연산 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 연산 장치는, 임의의 비트 열로 구성된 시드 값을 생성하는 시드 값 생성부, 상기 시드 값을 복수의 블록으로 분할하는 분할부, 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 제1 추출부, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 제2 추출부 및 상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하고, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성하며, 상기 추출된 복수의 제2 파라미터 값을 이용하여 제3 난수 값을 생성하는 연산부를 포함한다.
상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인터 곱 연산을 통해 생성되되, 상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값 중 적어도 일부는, 비밀 키를 곱한 값을 포함할 수 있다.
상기 제1 추출부는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고, 상기 제2 추출부는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 연산부는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성할 수 있다.
상기 연산부는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제2 난수 값에 상기 비밀 키를 곱한 값과 동일한 제3 난수 값을 생성할 수 있다.
상기 연산부는, 상기 제1 난수 값, 상기 제2 난수 값 및 상기 제3 난수 값을 이용하여 전자 서명을 생성할 수 있다.
본 발명의 일 실시예에 따른 연산 방법은, 임의의 비트 열로 구성된 시드 값을 생성하는 단계, 상기 시드 값을 복수의 블록으로 분할하는 단계, 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 단계, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 단계, 상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하는 단계, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성하는 단계 및 상기 추출된 복수의 제2 파라미터 값을 이용하여 제3 난수 값을 생성하는 단계를 포함한다.
상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인터 곱 연산을 통해 생성되되, 상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값 중 적어도 일부는, 비밀 키를 곱한 값을 포함할 수 있다.
상기 제1 파라미터 값을 추출하는 단계는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고, 상기 제1 파라미터 값을 추출하는 단계는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 상기 제1 난수 값을 생성하는 단계는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성할 수 있다.
상기 제3 난수 값을 생성하는 단계는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제2 난수 값에 상기 비밀 키를 곱한 값과 동일한 제3 난수 값을 생성할 수 있다.
상기 연산 방법은, 상기 제1 난수 값, 상기 제2 난수 값 및 상기 제3 난수 값을 이용하여 전자 서명을 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, 사전 생성된 파라미터 값 집합들로부터 추출된 값과 부채널 공격에 안전한 연산을 이용하여 지수 연산 또는 스칼라 포인트 곱 연산을 통해 도출되는 값과 동일한 값을 생성할 수 있도록 함으로써, 성능 저하 없이 부채널 공격에 대한 안전성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 연산 장치의 구성도
도 2는 제1 파라미터 값 집합의 일 예를 나타낸 도면
도 3은 제1 파라미터 값 추출의 일 예를 나타낸 도면
도 4는 제2 파라미터 값 집합의 일 예를 나타낸 도면
도 5는 제2 파라미터 값 집합의 다른 예를 나타낸 도면
도 6은 제2 파라미터 값 추출의 일 예를 나타낸 도면
도 7은 제2 파라미터 값 추출의 다른 예를 나타낸 도면
도 8은 본 발명의 일 다른 실시예에 따른 연산 방법의 순서도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 연산 장치의 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 연산 장치(100)는 시드 값 생성부(110), 분할부(120), 제1 추출부(130), 제2 추출부(140) 및 연산부(150)를 포함한다.
시드 값 생성부(110)는 임의의 비트 열로 구성된 시드 값을 생성한다.
이때, 시드 값 생성부(110)는 예를 들어, 임의의 비트 값을 연속적으로 생성하여 시드 값을 생성할 수 있다.
다른 예로, 시드 값 생성부(110)는 외부 장치로부터 획득된 아이디를 임의의 비트 열로 변환하여 시드 값을 생성할 수 있다. 이때, 획득된 아이디를 임의의 비트 열로 변환하기 위해 예를 들어, sha-256과 같은 해시 함수를 이용할 수 있다.
한편, 시드 값 생성부(110)에 의한 시드 값 생성 방식은 반드시 특정한 방식에 한정되는 것은 아니므로, 시드 값 생성부(110)는 기 설정된 길이의 임의의 비트 열을 생성할 수 있는 공지된 다양한 방식을 이용하여 시드 값을 생성할 수 있다.
분할부(120)는 시드 값 생성부(110)에 의해 생성된 시드 값을 복수의 블록으로 분할한다.
구체적으로, 본 발명의 일 실시예에 따르면, 분할부(120)는 시드 값을 기 설정된 크기로 분할하여 복수의 블록을 생성할 수 있다. 이때, 분할부(120)에 의해 생성되는 블록의 수는 실시예에 따라 변경 가능하다.
예를 들어, 시드 값 생성부(110)에서 생성된 시드 값이 256 비트 길이의 비트 열인 경우, 분할부(120)는 시드 값을 8비트 단위로 분할하여 32개의 블록을 생성할 수 있다.
제1 추출부(130)는 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 복수의 블록 각각에 대응되는 복수의 제1 파라미터 값을 추출한다. 이때, 제1 파라미터 값 집합에 포함된 제1 파라미터 값들은 사전 생성된 임의의 값들일 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제1 파라미터 값 집합은 2nㅧm개의 제1 파라미터 값들을 포함할 수 있다. 이때, m은 분할부(120)에 의해 생성되는 블록의 수를 나타내며, n은 분할된 각 블록에 포함되는 비트 열의 길이를 나타낸다. 즉, 제1 파라미터 값 집합에 포함되는 제1 파라미터 값들의 개수는 시드 값 생성부(110)에서 생성되는 시드 값의 길이 및 분할부(120)에서 생성되는 블록의 수에 따라 변경될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제1 추출부(130)는 제1 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제1 파라미터 값을 추출할 수 있다.
구체적으로, 제1 파라미터 값 집합에 포함된 각 제2 파라미터 값들은 각각 n비트 길이를 가진 2n 개의 서로 상이한 비트 열 중 하나의 비트 열과 해당 비트 열을 포함하는 블록의 시드 값 내 위치로 인덱싱될 수 있다. 이에 따라, 제1 추출부(130)는 분할부(120)에 의해 분할된 각 블록에 포함된 비트 열 및 해당 블록의 시드 값 내 위치와 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각의 인덱스 값을 비교하여 대응되는 제1 파라미터 값을 추출할 수 있다.
도 2는 제1 파라미터 값 집합의 일 예를 나타낸 도면이다.
도 2에 도시된 예에서는, 시드 값 생성부(110)에 의해 생성된 시드 값의 길이가 256 비트이며, 분할부(120)에서 시드 값을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 이에 따라, 도 2에 도시된 제1 파라미터 값 집합(210)은 28×32개의 제1 파라미터 값들을 포함할 수 있다.
한편, 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 각각은 8비트 길이의 256 개의 비트 열 중 하나와 해당 비트 열을 포함하는 블록의 시드 값 내 위치에 대응된다.
구체적으로, k1,1은 '00000000'인 비트 열과 시드 값 내 첫 번째 블록(즉, 1 block)으로 인덱싱된 제1 파라미터 값을 나타내며, k256,32는 '11111111'인 비트 열과 시드 값 내 32 번째 블록(즉, 32 block)으로 인덱싱된 제1 파라미터 값을 나타낸다.
도 3은 제1 파라미터 값 추출의 일 예를 나타낸 도면이다.
도 3에 도시된 예에서는, 시드 값 생성부(110)에 의해 생성된 시드 값(310)의 길이가 256 비트이며, 분할부(120)에서 시드 값(310)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제1 파라미터 값 집합(330)은 도 2에 도시된 제1 파라미터 값 집합(210)과 동일한 것으로 가정한다.
도 3에 도시된 예에서, 시드 값(310)으로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제1 추출부(130)는 제1 파라미터 값 집합(330)에서 '1 block'과 비트 열 '1111110'에 대응되는 제1 파라미터 값인 k255,1을 추출할 수 있다.
또한, 시드 값(310)으로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제1 추출부(130)는 제1 파라미터 값 집합(330)에서 '2 block'과 비트 열 '00000010'에 대응되는 제1 파라미터 값인 k3,2를 추출할 수 있다.
이와 동일한 방식으로, 제1 추출부(130)는 제1 파라미터 값 집합(330)에서 시드 값(310)로부터 분할된 32개의 블록 각각에 대응되는 제1 파라미터 값을 추출할 수 있다.
이에 따라, 도 3에 도시된 예에서 제1 추출부(130)에 의해 추출되는 제1 파라미터 값들은 {k255,1, k3,2, k1,3, …, k3,30, k256,31, k255,32}과 같다.
다시, 도 1을 참조하면, 제2 추출부(140)는 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 복수의 블록 각각에 대응되는 복수의 제2 파라미터 값을 추출한다.
이때, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들(ri,j)은 예를 들어, 아래의 수학식 1과 같이 제1 파라미터 값 집합에 포함된 제1 파라미터 값들(ki,j) 각각을 지수로 이용한 지수 연산 또는 아래의 수학식 2 및 3과 같이 제1 파라미터 값 집합에 포함된 제1 파라미터 값들(ki,j) 각각을 승수(multiplier)로 이용한 스칼라 포인트 곱 연산을 통해 생성될 수 있다.
[수학식 1]
Figure pat00001
수학식 1에서, p는 임의의 소수, g는 위수가 p인 곱셈군의 생성원(generator)을 나타낸다.
[수학식 2]
Figure pat00002
[수학식 3]
Figure pat00003
수학식 2 및 3에서, p는 임의의 소수, P는 위수가 p인 덧셈군의 생성원을 나타낸다.
또한, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 적어도 일부는 암호화 또는 전자 서명 생성에 이용되는 비밀 키를 곱한 값을 포함할 수 있다.
구체적으로, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 예를 들어, 제1 파라미터 값 집합에 포함된 제1 파라미터 값 각각을 이용한 지수 연산 또는 스칼라 포인트 곱 연산을 통해 생성된 값들 각각에 비밀 키를 곱한 값일 수 있다.
다른 예로, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 일부는 제1 파라미터 값 집합에 포함된 일부의 제1 파라미터 값들 각각을 이용한 지수 연산 또는 스칼라 포인트 곱 연산을 통해 생성된 값일 수 있다. 이때, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 나머지 일부는 제1 파라미터 값들 중 나머지 일부 각각을 이용한 지수 연산 또는 스칼라 포인트 곱 연산을 통해 생성된 값들 각각에 비밀 키를 곱한 값일 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합은 2n×m개의 제2 파라미터 값들을 포함할 수 있다. 즉, 제2 파라미터 값 집합에 포함되는 제2 파라미터 값들의 개수는 시드 값 생성부(110)에서 생성되는 시드 값의 길이 및 분할부(120)에서 생성되는 블록의 수에 따라 변경될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제2 추출부(140)는 제2 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
구체적으로, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 각각 n비트 길이의 2n 개의 서로 상이한 비트 열 중 하나의 비트 열과 해당 비트 열을 포함하는 블록의 시드 값 내 위치로 인덱싱될 수 있다. 이에 따라, 제2 추출부(140)는 분할부(120)에 의해 분할된 각 블록에 포함된 비트 열 및 해당 블록의 시드 값 내 위치와 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 각각의 인덱스 값을 비교하여 대응되는 제2 파라미터 값을 추출할 수 있다.
도 4는 제2 파라미터 값 집합의 일 예를 나타낸 도면이다.
구체적으로, 도 4는 도 2에 도시된 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들로부터 생성된 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합의 예를 나타낸다.
도 4를 참조하면, 제2 파라미터 값 집합(410)은 도 2에 도시된 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들과 동일한 개수(즉, 28×32개)의 제2 파라미터 값들을 포함한다.
또한, 제2 파라미터 값 집합(410)에 포함된 제2 파라미터 값들 각각은 32개의 블록 중 하나의 블록과 서로 상이한 8비트 길이의 비트 열 중 하나의 비트 열을 이용하여 인덱싱된다. 이때, 제2 파라미터 값 집합(410)에 포함된 제2 파라미터 값들 각각은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 대응되는 제1 파라미터 값과 동일한 인덱스 값을 가진다.
구체적으로, 제2 파라미터 값 r1,1은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 k1,1을 이용하여 생성된 값이며, k1,1 과 동일하게 '00000000'인 비트 열과 첫 번째 블록(즉, 1 block)으로 인덱싱된다.
또한, 제2 파라미터 값 cr1,32는 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값 k1,32 을 이용하여 생성된 값이며, k1,32와 동일하게 '00000000'인 비트 열과 32 번째 블록(즉, 32 block)으로 인덱싱된다.
한편, 제2 파라미터 값 집합(410) 중 "32 block"를 인덱스 값으로 가지는 제2 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ..., cr255,32 , cr256,32)을 제외한 나머지 제2 파라미터 값들은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 동일한 인덱스 값을 가지는 제1 파라미터 값들 각각을 이용한 지수 연산을 통해 생성된 값과 동일한 값을 가진다.
반면, 제2 파라미터 값 집합(410) 중 "32 block"을 인덱스 값으로 가지는 제2 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ..., cr255,32 , cr256,32)은 제1 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 동일한 인덱스 값을 가지는 제2 파라미터 값들(즉, k1,32, k2,32, k3,32, ..., k255,32 , k256,32) 각각을 이용한 지수 연산을 통해 생성된 값에 비밀 키(c)를 곱한 값과 동일한 값을 가진다.
한편, 도 4에 도시된 예에서는 "32 block"을 인덱스 값으로 가지는 제2 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ...,cr255,32 , cr256,32)이 동일한 블록을 인덱스 값으로 가지는 제1 파라미터 값들(즉, r1,32, r2,32, r3,32, ..., r255,32 , r256,32) 각각에 비밀 키(c)를 곱한 값인 것으로 예시하고 있으나 반드시 이에 한정되는 것은 아니다. 구체적으로, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 특정 블록을 인덱스 값으로 가지는 제2 파라미터 값들은 동일한 블록을 인덱스 값으로 가지는 제1 파라미터 값들 각각에 비밀 키(c)를 곱한 값과 동일한 값을 가질 수 있다.
도 5는 제2 파라미터 값 집합의 다른 예를 나타낸 도면이다.
구체적으로, 도 5는 도 2에 도시된 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들로부터 생성된 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합의 예를 나타낸다.
도 5를 참조하면, 제2 파라미터 값 집합(510)은 도 2에 도시된 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들과 동일한 개수(즉, 28×32개)의 제2 파라미터 값들을 포함한다.
또한, 제2 파라미터 값 집합(510)에 포함된 제2 파라미터 값들 각각은 32개의 블록 중 하나의 블록과 서로 상이한 8비트 길이의 비트 열 중 하나의 비트 열을 이용하여 인덱싱된다. 이때, 제2 파라미터 값 집합(510)에 포함된 제2 파라미터 값들 각각은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 대응되는 제1 파라미터 값과 동일한 인덱스 값을 가진다.
구체적으로, 제2 파라미터 값 cr1,1은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 k1,1을 이용하여 생성된 값이며, k1,1 과 동일하게 '00000000'인 비트 열과 첫 번째 블록(즉, 1 block)으로 인덱싱된다.
또한, 제2 파라미터 값 cr1,32는 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값 k1,32 을 이용하여 생성된 값이며, k1,32와 동일하게 '00000000'인 비트 열과 32 번째 블록(즉, 32 block)으로 인덱싱된다.
한편, 제2 파라미터 값 집합(510)에 포함된 제2 파라미터 값들은 제1 파라미터 값 집합(210)에 포함된 제1 파라미터 값들 중 동일한 인덱스 값을 가지는 제1 파라미터 값들 각각을 이용한 스칼라 곱 연산을 통해 생성된 값에 비밀 키(c)를 곱한 값과 동일한 값을 가진다.
도 6은 제2 파라미터 값 추출의 일 예를 나타낸 도면이다.
도 6에 도시된 예에서, 시드 값(610)은 도 3에 도시된 시드 값(310)과 동일한 값이며, 분할부(120)에서 시드 값(610)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제2 파라미터 값 집합(630)은 도 4에 도시된 제2 파라미터 값 집합(410)과 동일한 것으로 가정한다.
도 6에 도시된 예에서, 시드 값(610)로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제2 추출부(140)는 제2 파라미터 값 집합(630)에서 '1 block'과 비트 열 '1111110'에 대응되는 파라미터 값인 r255,1을 추출할 수 있다.
또한, 시드 값(610)로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제2 추출부(140)는 제2 파라미터 값 집합(630)에서 '2 block'과 비트 열 '00000010'에 대응되는 제2 파라미터 값인 r3,2를 추출할 수 있다.
이와 동일한 방식으로, 제2 추출부(140)는 제2 파라미터 값 집합(630)에서 시드 값(610)로부터 분할된 32개의 블록 각각에 대응되는 제2 파라미터 값들을 추출할 수 있다.
이에 따라, 도 6에 도시된 예에서 제2 추출부(140)에 의해 추출되는 제2 파라미터 값들은 {r255,1, r3,2, r1,3, ..., r3,30, r256,31, cr255,32}과 같다.
도 7은 제2 파라미터 값 추출의 다른 예를 나타낸 도면이다.
도 7에 도시된 예에서, 시드 값(710)은 도 3에 도시된 시드 값(310)과 동일한 값이며, 분할부(120)에서 시드 값(710)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제2 파라미터 값 집합(730)은 도 5에 도시된 제2 파라미터 값 집합(510)과 동일한 것으로 가정한다.
도 7에 도시된 예에서, 시드 값(710)로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제2 추출부(140)는 제2 파라미터 값 집합(730)에서 '1 block'과 비트 열 '1111110'에 대응되는 파라미터 값인 cr255,1을 추출할 수 있다.
또한, 시드 값(710)로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제2 추출부(140)는 제2 파라미터 값 집합(730)에서 '2 block'과 비트 열 '00000010'에 대응되는 제2 파라미터 값인 cr3,2를 추출할 수 있다.
이와 동일한 방식으로, 제2 추출부(140)는 제2 파라미터 값 집합(730)에서 시드 값(710)로부터 분할된 32개의 블록 각각에 대응되는 파라미터 값을 추출할 수 있다.
이에 따라, 도 7에 도시된 예에서 제2 추출부(140)에 의해 추출되는 제2 파라미터 값들은 {cr255,1, cr3,2, cr1,3, ..., cr3,30, cr256,31, cr255,32}과 같다.
다시, 도 1을 참조하면, 연산부(150)는 제1 추출부(130)에서 추출된 제1 파라미터 값들을 이용하여 제1 난수 값을 생성한다.
이때, 본 발명의 일 실시예에 따르면, 연산부(150)는 제1 파라미터 값 집합에서 추출된 제1 파라미터 값들을 더하여 제1 난수 값을 생성할 수 있다. 예를 들어, 연산부(150)는 아래의 수학식 4를 이용하여, 도 3에 도시된 예에서 추출된 제1 파라미터 값들로부터 제1 난수 값(k)을 생성할 수 있다.
[수학식 4]
k= k255,1+k3,2+k1,3+…+k3,30+k256,31+k255,32
한편, 연산부(150)는 상술한 수학식 4 외에도, 다양한 형태의 일 방향 함수들을 이용하여 제1 난수 값(k)을 생성할 수 있다.
한편, 연산부(150)는 제1 난수 값을 지수로 이용한 지수 연산 또는 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성한다.
예를 들어, 연산부(150)는 아래의 수학식 5를 이용하여, 제1 난수 값(k)로부터 제2 난수 값(r)을 생성할 수 있다.
[수학식 5]
Figure pat00004
수학식 5에서, p는 임의의 소수, g는 위수가 p인 곱셈군의 생성원을 나타낸다.
다른 예로, 연산부(150)는 아래의 수학식 6 및 7을 이용하여, 제1 난수 값(k)로부터 제2 난수 값(r)을 생성할 수 있다
[수학식 6]
Figure pat00005
[수학식 7]
Figure pat00006
수학식 6 및 7에서, p는 임의의 소수, P는 위수가 p인 덧셈군의 생성원을 나타낸다.
한편, 연산부(150)는 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 이용하여 제3 난수 값을 생성한다.
구체적으로, 본 발명의 일 실시예에 따르면, 연산부(150)는 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 곱하거나 더하여 제3 난수 값을 생성할 수 있다.
예를 들어, 연산부(150)는 아래의 수학식 8을 이용하여, 도 6에 도시된 예에서 추출된 제2 파라미터 값들로부터 제3 난수 값(cr)을 생성할 수 있다.
[수학식 8]
cr= r255,1×r3,2×r1,3×…×r3,30×r256,31×cr255 ,32
다른 예로, 연산부(150)는 아래의 수학식 9를 이용하여, 도 7에 도시된 예에서 추출된 제2 파라미터 값들로부터 제3 난수 값(cr)을 생성할 수 있다.
[수학식 9]
cr= cr255,1+cr3,2+cr1,3+…+cr3,30+cr256,31+cr255,32
즉, 연산부(150)에서 생성되는 제3 난수 값(cr)은 비밀 키(c)에 제2 난수 값(r)을 곱한 값과 동일하다.
한편, 연산부(150)는 추출된 제2 파라미터 값들을 곱하거나 더하는 것 외에도, 추출된 제2 파라미터 값들로부터 제2 난수 값(r)에 비밀 키(c)를 곱한 값과 동일한 값을 생성할 수 있는 다양한 형태의 일 방향 함수를 이용하여 제3 난수 값(cr)을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산부(150)는 생성된 제1 난수 값(k), 제2 난수 값(r) 및 제3 난수 값(cr)을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
구체적으로, 연산부(150)는 암호화 또는 전자 서명 생성을 위해 지수 연산 또는 스칼라 포인트 곱 연산과 지수 연산 또는 스칼라 포인트 곱을 통해 생성된 값에 비밀 키를 곱하는 연산이 요구되는 다양한 방식의 암호 알고리즘 내지는 전자 서명 알고리즘을 이용하여 데이터를 암호화 또는 전자 서명을 생성할 수 있다.
예를 들어, 연산부(150)는 전자 서명 기법 중 하나인 DSA(Digital Signature Algorithm)를 이용하여 전자 서명을 생성할 수 있다.
구체적으로, DSA에 따른 전자 서명은 아래와 같이 생성된다.
1) k∈[1,q-1]인 랜덤 값 k 선택
2) r=(gk mod p) mod q 계산 (이때, p는 임의의 소수, p는 소수로서 p-1의 약수, g는 위수가 p인 곱셈군의 생성원)
3) s=k-1(H(m)+cr) mod q 계산 (이때, c는 비밀 키, m은 메시지, H()는 해시함수)
4) 메시지에 대한 서명 값 (r, s) 출력
이때, 연산부(140)는 제1 난수 값을 랜덤 값 k로 이용할 수 있으며, 제2 난수 값를 서명 값 r로 이용할 수 있다. 또한, 연산부(140)는 제3 난수 값을 서명 값 s를 생성하기 위한 cr로 이용할 수 있다. 즉, 서명 값 s를 생성하기 위한 cr은 서명 값 r과 비밀 키 c를 곱하는 연산 대신 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 이용한 곱셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득될 수 있다. 따라서, 부채널 공격에 의해 서명 값 s을 생성하기 위해 사용된 비밀 키 c를 알 수 없게 된다.
다른 예로, 연산부(140)는 전자 서명 기법 중 하나인 ECDSA(Elliptic Curve Digital Signature Algorithm)를 이용하여 전자 서명을 생성할 수 있다.
구체적으로, ECDSA에 따른 전자 서명은 아래와 같이 생성된다.
1) k∈[1,q-1]인 랜덤 값 k 선택 (q는 소수로서 p-1의 약수, p는 임의의 소수)
2) kㅇP=(x, y) 계산 (이때, P는 위수가 p인 덧셈군의 생성원)
3) r=x mod p 계산
4) s=k-1(H(m)+cr) mod (p-1) 계산 (이때, c는 비밀 키, m은 메시지, H()는 해시함수)
5) 메시지에 대한 서명 값 (r, s) 출력
이때, 연산부(140)는 제1 난수 값을 랜덤 값 k로 이용할 수 있으며, 제2 난수 값를 서명 값 r로 이용할 수 있다. 또한, 연산부(140)는 제3 난수 값을 서명 값 s를 생성하기 위한 cr로 이용할 수 있다. 즉, 서명 값 s를 생성하기 위한 cr은 서명 값 r과 비밀 키 c를 곱하는 연산 대신 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 이용한 덧셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득될 수 있다. 따라서, 부채널 공격에 의해 서명 값 s을 생성하기 위해 사용된 비밀 키 c를 알 수 없게 된다.
한편, 일 실시예에서, 도 1에 도시된 시드 값 생성부(110), 분할부(120), 제1 추출부(130), 제2 추출부(140) 및 연산부(150)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 하나 이상의 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.도 8은 본 발명의 일 다른 실시예에 따른 연산 방법의 순서도이다.
도 8에 도시된 방법은 예를 들어, 도 1에 도시된 연산 장치(100)에 의해 수행될 수 있다.
도 8을 참조하면, 연산 장치(100)는 임의의 비트 열로 구성된 시드 값을 생성한다(810).
이후, 연산 장치(100)는 생성된 시드 값을 복수의 블록으로 분할한다(820).
이후, 연산 장치(100)는 복수의 제1 파라미터 값들을 포함하는 제1 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출한다(830).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 제1 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제1 파라미터 값을 추출할 수 있다.
이후, 연산 장치(100)는 추출된 제1 파라미터 값들로부터 제1 난수 값을 생성한다(840).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 추출된 제1 파라미터 값들을 더하여 제1 난수 값을 생성할 수 있다.
이후, 연산 장치(100)는 생성된 제1 난수 값을 이용하여 제2 난수 값을 생성한다(850).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 제1 난수 값을 지수로 이용한 지수 연산 또는 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성할 수 있다.
이후, 연산 장치(100)는 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 이용하여 생성된 복수의 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출한다(860).
이때, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 지수로 이용한 지수 연산 또는 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값들 각각을 승수로 이용한 스칼라 포인터 곱 연산을 통해 생성될 수 있다. 또한, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 적어도 일부는 암호화 또는 전자 서명 생성을 위한 비밀 키를 곱한 값을 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 제2 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
이후, 연산 장치1700)는 추출된 제2 파라미터 값들을 이용하여 제3 난수 값을 생성한다(870).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 추출된 제2 파라미터 값들을 곱하거나 더하여 제3 난수 값을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 생성된 제1 난수 값, 제2 난수 값 및 제3 난수 값을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
한편, 도 8에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 연산 장치
110: 시드 값 생성부
120: 분할부
130: 제1 추출부
140: 제2 추출부
150: 연산부

Claims (12)

  1. 임의의 비트 열로 구성된 시드 값을 생성하는 시드 값 생성부;
    상기 시드 값을 복수의 블록으로 분할하는 분할부;
    복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 제1 추출부;
    상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 제2 추출부; 및
    상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하고, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성하며, 상기 추출된 복수의 제2 파라미터 값을 이용하여 제3 난수 값을 생성하는 연산부를 포함하는 연산 장치.
  2. 청구항 1에 있어서,
    상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인터 곱 연산을 통해 생성되되,
    상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값 중 적어도 일부는, 비밀 키를 곱한 값을 포함하는 연산 장치.
  3. 청구항 1에 있어서,
    상기 제1 추출부는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고,
    상기 제2 추출부는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출하는 연산 장치.
  4. 청구항 2에 있어서,
    상기 연산부는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성하는 연산 장치.
  5. 청구항 2에 있어서,
    상기 연산부는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제2 난수 값에 상기 비밀 키를 곱한 값과 동일한 제3 난수 값을 생성하는 연산 장치.
  6. 청구항 5에 있어서,
    상기 연산부는, 상기 제1 난수 값, 상기 제2 난수 값 및 상기 제3 난수 값을 이용하여 전자 서명을 생성하는 연산 장치.
  7. 임의의 비트 열로 구성된 시드 값을 생성하는 단계;
    상기 시드 값을 복수의 블록으로 분할하는 단계;
    복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 단계;
    상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 단계;
    상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하는 단계;
    상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 제2 난수 값을 생성하는 단계; 및
    상기 추출된 복수의 제2 파라미터 값을 이용하여 제3 난수 값을 생성하는 단계를 포함하는 연산 방법.
  8. 청구항 7에 있어서,
    상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 제1 파라미터 값 집합에 포함된 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인터 곱 연산을 통해 생성되되,
    상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값 중 적어도 일부는, 비밀 키를 곱한 값을 포함하는 연산 방법.
  9. 청구항 7에 있어서,
    상기 제1 파라미터 값을 추출하는 단계는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고,
    상기 제1 파라미터 값을 추출하는 단계는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출하는 연산 방법.
  10. 청구항 8에 있어서,
    상기 상기 제1 난수 값을 생성하는 단계는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성하는 연산 방법.
  11. 청구항 8에 있어서,
    상기 제3 난수 값을 생성하는 단계는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제2 난수 값에 상기 비밀 키를 곱한 값과 동일한 제3 난수 값을 생성하는 연산 방법.
  12. 청구항 11에 있어서,
    상기 제1 난수 값, 상기 제2 난수 값 및 상기 제3 난수 값을 이용하여 전자 서명을 생성하는 단계를 더 포함하는 연산 방법.
KR1020170055700A 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법 KR101989950B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020170055700A KR101989950B1 (ko) 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법
US15/862,803 US10659224B2 (en) 2017-04-28 2018-01-05 Apparatus and method for performing operation being secure against side channel attack
EP18154413.1A EP3396893B1 (en) 2017-04-28 2018-01-31 Apparatus and method for performing operation being secure against side channel attack
JP2020509401A JP2020520615A (ja) 2017-04-28 2018-02-06 サイドチャネル攻撃に安全な演算を実行するための装置および方法
SG11201909494R SG11201909494RA (en) 2017-04-28 2018-02-06 Apparatus and method for performing operation being secure against side channel attack
PCT/KR2018/001584 WO2018199444A1 (en) 2017-04-28 2018-02-06 Apparatus and method for performing operation being secure against side channel attack

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170055700A KR101989950B1 (ko) 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180121248A true KR20180121248A (ko) 2018-11-07
KR101989950B1 KR101989950B1 (ko) 2019-06-17

Family

ID=61132151

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170055700A KR101989950B1 (ko) 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법

Country Status (6)

Country Link
US (1) US10659224B2 (ko)
EP (1) EP3396893B1 (ko)
JP (1) JP2020520615A (ko)
KR (1) KR101989950B1 (ko)
SG (1) SG11201909494RA (ko)
WO (1) WO2018199444A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019046420A1 (en) * 2017-08-29 2019-03-07 Robert Bosch Gmbh METHODS AND SYSTEMS FOR TRANSFER SECRET LINEAR KEY AGREEMENT USING UNSECURED SHARED COMMUNICATION MEDIUM
US10990355B1 (en) * 2020-06-19 2021-04-27 Panagiotis Andreadakis Aperiodic pseudo-random number generator based on a linear congruential generator

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000500886A (ja) * 1996-08-16 2000-01-25 ベル コミュニケーションズ リサーチ,インコーポレイテッド ランダムに生成されたペアをプリコンピューティングすることによるアクセラレイティング公開鍵暗号技術

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19963408A1 (de) * 1999-12-28 2001-08-30 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung
JP4423900B2 (ja) * 2003-08-05 2010-03-03 株式会社日立製作所 楕円曲線暗号におけるスカラー倍計算方法と、その装置およびそのプログラム
US7899190B2 (en) 2004-04-16 2011-03-01 Research In Motion Limited Security countermeasures for power analysis attacks
US7587047B2 (en) * 2005-06-22 2009-09-08 Apple Inc. Chaos generator for accumulation of stream entropy
WO2009122461A1 (ja) * 2008-03-31 2009-10-08 富士通株式会社 電力解析攻撃への対策機能を備えた暗号化方法
EP2378707B1 (en) 2010-02-26 2013-04-24 Certicom Corp. Implementation of the ECDSA, DSA, El Gamal cryptosystems, and variations thereof, with improved security against side-channel attacks.
US8966264B2 (en) * 2010-05-28 2015-02-24 Nec Corporation Signature generation apparatus, signature method, non-transitory computer readable medium storing signature generation program
US9118441B2 (en) 2013-01-25 2015-08-25 Freescale Semiconductor, Inc. Layout-optimized random mask distribution system and method
CN103905462B (zh) 2014-04-16 2017-05-17 深圳国微技术有限公司 可抵御差分功耗分析攻击的加密处理装置及方法
KR101586811B1 (ko) 2015-03-31 2016-01-19 국민대학교산학협력단 Hight 부채널 분석에 대응하기 위한 장치 및 방법
ITUB20152708A1 (it) 2015-07-31 2017-01-31 St Microelectronics Srl Procedimento per operare una crittografia con mascheratura di dati sensibili, apparato di crittografia e prodotto informatico corrispondente

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000500886A (ja) * 1996-08-16 2000-01-25 ベル コミュニケーションズ リサーチ,インコーポレイテッド ランダムに生成されたペアをプリコンピューティングすることによるアクセラレイティング公開鍵暗号技術
US6091819A (en) * 1996-08-16 2000-07-18 Telcordia Technologies, Inc. Accelerating public-key cryptography by precomputing randomly generated pairs

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Speeding up Discrete Log and Factoring Based Schemes via Precomputations(1998.06.04.)* *
V. Boyko, M. Peinado, and R. Venkatesan. Speeding up discrete log and factoring based schemes via precomputations (1998.06.04. 공개).

Also Published As

Publication number Publication date
US20180316498A1 (en) 2018-11-01
EP3396893B1 (en) 2020-07-29
US10659224B2 (en) 2020-05-19
EP3396893A1 (en) 2018-10-31
JP2020520615A (ja) 2020-07-09
KR101989950B1 (ko) 2019-06-17
SG11201909494RA (en) 2019-11-28
WO2018199444A1 (en) 2018-11-01

Similar Documents

Publication Publication Date Title
KR101914028B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US7908641B2 (en) Modular exponentiation with randomized exponent
US7853013B2 (en) Cryptographic method and system for encrypting input data
KR101194837B1 (ko) 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
US10726108B2 (en) Protecting the input/output of modular encoded white-box RSA
CN107004084B (zh) 用于加密操作的乘法掩码
CN106464483A (zh) 用于电子部件实现椭圆曲线密码算法的应对方法
US10140437B2 (en) Array indexing with modular encoded values
US10235506B2 (en) White-box modular exponentiation
Koppermann et al. 18 seconds to key exchange: Limitations of supersingular isogeny Diffie-Hellman on embedded devices
KR101989950B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
KR101989943B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
US20160328542A1 (en) White-box elliptic curve point multiplication
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
KR102510077B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
KR102507861B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US11973866B2 (en) Cryptographic processing method, related electronic device and computer program
JP2006201641A (ja) 非線形演算装置及び暗号処理装置及び非線形演算方法及び非線形演算プログラム
JP2007519305A (ja) 強化された自然モンゴメリー指数マスキング

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