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

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

Info

Publication number
KR101989943B1
KR101989943B1 KR1020170055698A KR20170055698A KR101989943B1 KR 101989943 B1 KR101989943 B1 KR 101989943B1 KR 1020170055698 A KR1020170055698 A KR 1020170055698A KR 20170055698 A KR20170055698 A KR 20170055698A KR 101989943 B1 KR101989943 B1 KR 101989943B1
Authority
KR
South Korea
Prior art keywords
parameter values
value
random number
parameter
unit
Prior art date
Application number
KR1020170055698A
Other languages
English (en)
Other versions
KR20180121247A (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 KR1020170055698A priority Critical patent/KR101989943B1/ko
Priority to US15/862,817 priority patent/US10812260B2/en
Priority to EP18154408.1A priority patent/EP3396892A1/en
Priority to SG11201909491V priority patent/SG11201909491VA/en
Priority to JP2020509399A priority patent/JP2020520613A/ja
Priority to PCT/KR2018/001582 priority patent/WO2018199442A1/en
Publication of KR20180121247A publication Critical patent/KR20180121247A/ko
Application granted granted Critical
Publication of KR101989943B1 publication Critical patent/KR101989943B1/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/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/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/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

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

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일 때의 전력소모량은 상대적으로 적으므로 지수승 계산 시 소모되는 전력분석을 통해 비밀 값인 지수승 값의 정보를 취득하는 방법으로 비밀 값(비밀키 등)에 대한 정보를 획득할 수 있다.
이와 같은 부채널 공격에 대한 방지 방법들은 일부 부채널 공격만을 방어하는 방법으로 전반적인 부채널 공격에 안전한 방법은 제안되지 않았다. 또한 현재까지 제안된 부채널 방지 방법은 추가 연산량이 많이 요구되어 성능저하(전자서명 생성 시간 지연) 문제점이 있다.
삭제
V. Boyko, M. Peinado, and R. Venkatesan. Speeding up discrete log and factoring based schemes via precomputations (1998.06.04. 공개).
본 발명의 실시예들은 부채널 공격에 의해 중요 정보가 노출되는 것을 방지하기 위한 연산 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 연산 장치는, 임의의 비트 열로 구성된 시드 값을 생성하는 시드 값 생성부, 상기 시드 값을 복수의 블록으로 분할하는 분할부, 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 추출부 및 상기 추출된 복수의 제2 파라미터 값을 이용하여 난수 값을 생성하는 연산부를 포함한다.
상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인트 곱 연산을 통해 생성될 수 있다.
상기 추출부는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 추출부는, 상기 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 제1 추출부 및 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 제2 추출부를 포함하고, 상기 연산부는, 상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하고, 상기 추출된 복수의 제2 파라미터 값을 이용하여 제2 난수 값을 생성할 수 있다.
상기 제1 추출부는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고, 상기 제2 추출부는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 연산부는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성할 수 있다.
상기 연산부는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 도출되는 값과 동일한 제2 난수 값을 생성할 수 있다.
상기 연산부는, 상기 제1 난수 값 및 상기 제2 난수 값을 이용하여 전자 서명을 생성할 수 있다.
본 발명의 일 실시예에 따른 연산 방법은, 임의의 비트 열로 구성된 시드 값을 생성하는 단계, 상기 시드 값을 복수의 블록으로 분할하는 단계, 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 단계 및 상기 추출된 복수의 제2 파라미터 값을 이용하여 난수 값을 생성하는 단계를 포함한다.
상기 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값은, 상기 복수의 제1 파라미터 값 각각을 지수로 이용한 지수 연산 또는 상기 복수의 제1 파라미터 값 각각을 승수로 이용한 스칼라 포인트 곱 연산을 통해 생성될 수 있다.
상기 추출하는 단계는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 추출하는 단계는, 상기 복수의 제1 파라미터 값을 포함하는 제1 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출하는 단계 및 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출하는 단계를 포함하고, 상기 난수 값을 생성하는 단계는, 상기 추출된 복수의 제1 파라미터 값을 이용하여 제1 난수 값을 생성하는 단계 및 상기 추출된 복수의 제2 파라미터 값을 이용하여 제2 난수 값을 생성하는 단계를 포함할 수 있다.
상기 제1 파라미터 값을 추출하는 단계는, 상기 제1 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제1 파라미터 값을 추출하고, 상기 제1 파라미터 값을 추출하는 단계는, 상기 제2 파라미터 값 집합으로부터 상기 분할된 각 블록의 비트 열 및 상기 분할된 각 블록의 상기 시드 값 내 위치에 대응되는 복수의 제2 파라미터 값을 추출할 수 있다.
상기 제1 난수 값을 생성하는 단계는, 상기 추출된 복수의 제1 파라미터 값을 더하여 상기 제1 난수 값을 생성할 수 있다.
상기 제2 난수 값을 생성하는 단계는, 상기 추출된 복수의 제2 파라미터 값을 이용하여, 상기 제1 난수 값을 지수로 이용한 지수 연산 또는 상기 제1 난수 값을 승수로 이용한 스칼라 포인트 곱 연산을 통해 도출되는 값과 동일한 제2 난수 값을 생성할 수 있다.
상기 연산 방법은, 상기 제1 난수 값 및 상기 제2 난수 값을 이용하여 전자 서명을 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시예들에 따르면, 사전 생성된 파라미터 값 집합들로부터 추출된 값과 부채널 공격에 안전한 연산을 이용하여 지수 연산 또는 스칼라 포인트 곱 연산을 통해 도출되는 값과 동일한 값을 생성할 수 있도록 함으로써, 성능 저하 없이 부채널 공격에 대한 안전성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 연산 장치의 구성도
도 2는 제2 파라미터 값 집합의 일 예를 나타낸 도면
도 3은 제2 파라미터 값 추출의 일 예를 나타낸 도면
도 4는 본 발명의 다른 실시예에 따른 연산 장치의 구성도
도 5는 제1 파라미터 값 집합의 일 예를 나타낸 도면
도 6은 제1 파라미터 값 추출의 일 예를 나타낸 도면
도 7은 본 발명의 또 다른 실시예에 따른 연산 장치의 구성도
도 8은 제3 파라미터 값 집합의 일 예를 나타낸 도면
도 9는 제3 파라미터 값 집합의 다른 예를 나타낸 도면
도 10은 제3 파라미터 값 추출의 일 예를 나타낸 도면
도 11은 제3 파라미터 값 추출의 다른 예를 나타낸 도면
도 12는 본 발명의 일 실시예에 따른 연산 방법의 순서도
도 13은 본 발명의 다른 실시예에 따른 연산 방법의 순서도
도 14는 본 발명의 또 다른 실시예에 따른 연산 방법의 순서도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 연산 장치의 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 연산 장치(100)는 시드 값 생성부(110), 분할부(120), 추출부(130) 및 연산부(140)를 포함한다.
시드 값 생성부(110)는 임의의 비트 열로 구성된 시드 값을 생성한다.
이때, 시드 값 생성부(110)는 예를 들어, 임의의 비트 값을 연속적으로 생성하여 시드 값을 생성할 수 있다.
다른 예로, 시드 값 생성부(110)는 외부 장치로부터 획득된 아이디를 임의의 비트 열로 변환하여 시드 값을 생성할 수 있다. 이때, 획득된 아이디를 임의의 비트 열로 변환하기 위해 예를 들어, sha-256과 같은 해시 함수를 이용할 수 있다.
한편, 시드 값 생성부(110)에 의한 시드 값 생성 방식은 반드시 특정한 방식에 한정되는 것은 아니므로, 시드 값 생성부(110)는 기 설정된 길이의 임의의 비트 열을 생성할 수 있는 공지된 다양한 방식을 이용하여 시드 값을 생성할 수 있다.
분할부(120)는 시드 값 생성부(110)에 의해 생성된 시드 값을 복수의 블록으로 분할한다.
구체적으로, 본 발명의 일 실시예에 따르면, 분할부(120)는 시드 값을 기 설정된 크기로 분할하여 복수의 블록을 생성할 수 있다. 이때, 분할부(120)에 의해 생성되는 블록의 수는 실시예에 따라 변경 가능하다.
예를 들어, 시드 값 생성부(110)에서 생성된 시드 값이 256 비트 길이의 비트 열인 경우, 분할부(120)는 시드 값을 8비트 단위로 분할하여 32개의 블록을 생성할 수 있다.
추출부(130)는 복수의 제1 파라미터 값 각각을 이용하여 생성된 복수의 제2 파라미터 값을 포함하는 제2 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 복수의 블록 각각에 대응되는 복수의 제2 파라미터 값을 추출한다.
이때, 본 발명의 일 실시예에 따르면, 복수의 제1 파라미터 값은 사전 생성된 임의의 값들일 수 있다.
또한, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 복수의 제1 파라미터 값들 각각을 지수로 이용한 지수 연산 또는 복수의 제1 파라미터 값들 각각을 승수(multiplier)로 이용한 스칼라 포인트 곱 연산을 통해 사전 생성된 값일 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합은 2n×m개의 제2 파라미터 값들을 포함할 수 있다. 이때, m은 분할부에 의해 생성되는 블록의 수를 나타내며, n은 분할된 각 블록에 포함되는 비트 열의 길이를 나타낸다. 즉, 제2 파라미터 값 집합에 포함되는 제2 파라미터 값들의 개수는 시드 값 생성부(110)에서 생성되는 시드 값의 길이 및 분할부(120)에서 생성되는 블록의 수에 따라 변경될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 추출부(130)는 제2 파라미터 값 집합으로부터 분할부(120)에 의해 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
구체적으로, 제2 파라미터 값 집합에 포함된 각 제2 파라미터 값들은 각각 n비트 길이를 가진 2n 개의 서로 상이한 비트 열 중 하나의 비트 열과 해당 비트 열을 포함하는 블록의 시드 값 내 위치로 인덱싱될 수 있다. 이에 따라, 추출부(130)는 분할부(120)에 의해 분할된 각 블록에 포함된 비트 열 및 해당 블록의 시드 값 내 위치와 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 각각의 인덱스 값을 비교하여 대응되는 제2 파라미터 값을 추출할 수 있다.
도 2는 제2 파라미터 값 집합의 일 예를 나타낸 도면이다.
도 2에 도시된 예에서는, 시드 값 생성부(110)에 의해 생성된 시드 값의 길이가 256 비트이며, 분할부(120)에서 시드 값을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 이에 따라, 도 2에 도시된 제2 파라미터 값 집합(210)은 28×32개의 제2 파라미터 값들을 포함할 수 있다.
구체적으로, 제2 파라미터 값 ri,j는 예를 들어, 아래의 수학식 1과 같이 제1 파라미터 값 ki,j을 을 지수로 이용한 지수 연산을 통해 생성될 수 있다.
[수학식 1]
Figure 112017042309617-pat00001
수학식 1에서, p는 임의의 소수, g는 위수가 p인 곱셈군의 생성원(generator)을 나타낸다.
다른 예로, 제2 파라미터 값 ri,j는 아래의 수학식 2 및 3과 같이 제1 파라미터 값 ki,j을 숭수로 이용한 스칼라 포인트 곱 연산을 통해 생성될 수 있다.
[수학식 2]
Figure 112017042309617-pat00002
[수학식 3]
Figure 112017042309617-pat00003
수학식 2 및 3에서, p는 임의의 소수, P는 위수가 p인 덧셈군의 생성원을 나타낸다.
한편, 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 각각은 8비트 길이의 256 개의 비트 열 중 하나와 해당 비트 열을 포함하는 블록의 시드 값 내 위치에 대응된다.
구체적으로, r1,1은 '00000000'인 비트 열과 시드 값 내 첫 번째 블록(즉, 1 block)으로 인덱싱된 제2 파라미터 값을 나타내며, r256,32는 '11111111'인 비트 열과 시드 값 내 32 번째 블록(즉, 32 block)으로 인덱싱된 제2 파라미터 값을 나타낸다.
도 3은 제2 파라미터 값 추출의 일 예를 나타낸 도면이다.
도 3에 도시된 예에서는, 시드 값 생성부(110)에 의해 생성된 시드 값(310)의 길이가 256 비트이며, 분할부(120)에서 시드 값(310)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제2 파라미터 값 집합(330)은 도 2에 도시된 제2 파라미터 값 집합(210)과 동일한 것으로 가정한다.
도 3에 도시된 예에서, 시드 값(310)으로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 추출부(130)는 제2 파라미터 값 집합(330)에서 '1 block'과 비트 열 '1111110'에 대응되는 제2 파라미터 값인 r255,1을 추출할 수 있다.
또한, 시드 값(310)으로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 추출부(130)는 제2 파라미터 값 집합(330)에서 '2 block'과 비트 열 '00000010'에 대응되는 제2 파라미터 값인 r3,2를 추출할 수 있다.
이와 동일한 방식으로, 추출부(130)는 제2 파라미터 값 집합(330)에서 시드 값(310)로부터 분할된 32개의 블록 각각에 대응되는 파라미터 값을 추출할 수 있다.
이에 따라, 도 3에 도시된 예에서 추출부(130)에 의해 추출되는 제2 파라미터 값들은 {r255,1, r3,2, r1,3, …, r3,30, r256,31, r255,32}과 같다.
다시, 도 1을 참조하면, 연산부(140)는 추출부(130)에서 추출된 제2 파라미터 값들을 이용하여 난수 값을 생성한다.
이때, 본 발명의 일 실시예에 따르면, 연산부(140)는 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 곱하거나 더하여 난수 값을 생성할 수 있다.
예를 들어, 제2 파라미터 값 집합이 상술한 수학식 1과 같이 제1 파라미터 값들을 이용한 지수 연산을 통해 생성된 제2 파라미터 값들을 포함하는 경우, 연산부(140)는 아래의 수학식 4를 이용하여 도 3 에 도시된 예에서 추출된 제2 파라미터 값들로부터 난수 값(r)을 생성할 수 있다.
[수학식 4]
r= r255,1×r3,2×r1,3×…×r3,30×r256,31×r255,32
한편, 상술한 수학식 1을 수학식 4에 대입하면, 수학식 4는 아래의 수학식 5와 같이 표현 가능하다.
[수학식 5]
Figure 112017042309617-pat00004
즉, 수학식 4에 의해 생성되는 난수 값(r)은 추출부(130)에서 추출된 제2 파라미터 값들을 생성하기 위해 지수 값으로 이용된 제1 파라미터 값들 {k255,1, k3,2, k1,3, …, k3,30, k256,31, k255,32}의 합 k를 지수로 이용한 지수 연산을 통해 도출되는 값과 동일하다.
다른 예로, 제2 파라미터 값 집합이 예를 들어, 상술한 수학식 2 및 3과 같이 제1 파라미터 값들을 이용한 스칼라 포인트 곱 연산을 통해 생성된 제2 파라미터 값들을 포함하는 경우, 연산부(140)는 아래의 수학식 6을 이용하여 도 3 에 도시된 예에서 추출된 제2 파라미터 값들로부터 난수 값(r)을 생성할 수 있다.
[수학식 6]
r= r255,1+r3,2+r1,3+…+r3,30+r256,31+r255,32
한편, 상술한 수학식 3을 수학식 6에 대입하면, 수학식 6은 아래의 수학식 7과 같이 표현 가능하다.
[수학식 7]
r= (x255,1+x3,2+x1,3+…+x3,30+x256,31+x255,32) mod p
또한, 수학식 2로부터 수학식 7의 (x255,1+x3,2+x1,3+…+x3,30+x256,31+x255,32)는 아래의 수학식 8과 같은 스칼라 포인트 곱 연산을 이용하여 도출된 값과 동일함을 알 수 있다.
[수학식 8]
(k255,1+k3,2+k1,3+…+k3,30+k256,31+k255,32)·P=k·P
결과적으로, 수학식 6에 의해 생성되는 난수 값(r)은 추출부(130)에서 추출된 제2 파라미터 값들을 생성하기 위해 승수로 이용된 제1 파라미터 값들 {k255,1, k3,2, k1,3, …, k3,30, k256,31, k255,32}의 합 k를 승수로 이용한 스칼라 포인트 곱 연산을 통해 도출되는 값과 동일하다.
한편, 연산부(140)는 상술한 수학식 4 및 6과 같이 추출된 제2 파라미터 값들을 곱하거나 더하는 것 외에도, 다양한 형태의 일 방향 함수를 이용하여 난수 값(r)을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산부(140)는 생성된 난수 값(r)을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
구체적으로, 연산부(140)는 암호화 또는 전자 서명 생성을 위해 지수 연산 또는 스칼라 포인트 곱 연산이 요구되는 다양한 방식의 암호 알고리즘 내지는 전자 서명 알고리즘을 이용하여 데이터를 암호화 또는 전자 서명을 생성할 수 있다. 이때, 연산부(140)는 지수 연산 또는 스칼라 포인트 곱 연산을 직접 수행하지 않고, 난수 값(r)을 지수 연산 또는 스칼라 포인트 곱 연산의 결과 값으로 이용할 수 있다.
예를 들어, 아이디 기반 공개키 암호화의 경우, 암호화된 데이터를 전송할 상대방의 아이디로부터 상대방의 공개키를 생성한 후, 생성된 공개키를 이용하여 데이터를 암호화한 후 상대방으로 전송할 수 있다. 이 경우, 시드 값 생성부(110)는 상대방의 아이디를 임의의 비트 열로 변환하여 시드 값을 생성할 수 있으며, 변환부(120)는 생성된 시드 값을 복수의 블록으로 분할할 수 있다. 이후, 추출부(130)는 제2 파라미터 집합으로부터 분할된 각 블록에 대응되는 제2 파라미터 값을 추출하고, 연산부(140)는 추출된 제2 파라미터 값들을 이용하여 난수 값(r)을 생성한 후, 생성된 난수 값을 상대방의 공개키로 이용할 수 있다. 이때, 제2 파라미터 값 집합 예를 들어, 키 생성 서버와 같은 외부 장치에 의해 미리 생성되어 안전한 채널을 통해 제공될 수 있다.
구체적인 예로, 연산부(140)는 임의의 난수 t를 선택하여 아래와 같은 암호문 C1를 생성할 수 있다.
C1= gt (mod p)
이후, 연산부(140)는 제2 파라미터 집합으로부터 추출된 제2 파라미터 값들을 이용하여 생성된 난수 값(r)을 공개키(pk)로 이용하여 아래와 같은 암호문 C2를 생성할 수 있다.
C2= (pkt mod p) XOR M=((gx)t mod p) XOR M
이때, M은 전송할 메시지를 나타내며, x는 데이터를 전송할 상대방의 비밀키를 나타낸다.
한편, 일 실시예에서, 도 1에 도시된 시드 값 생성부(110), 분할부(120), 추출부(130) 및 연산부(140)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 하나 이상의 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
도 4는 본 발명의 다른 실시예에 따른 연산 장치의 구성도이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 연산 장치(400)는 시드 값 생성부(410), 분할부(420), 제1 추출부(430), 제2 추출부(440) 및 연산부(450)를 포함한다.
한편, 도 4에 도시된 예에서, 시드 값 생성부(410), 분할부(420) 및 제2 추출부(440)는 각각 도 1에 도시된 시드 값 생성부(110), 분할부(120) 및 추출부(130)와 동일한 구성이므로 이에 대한 중복적인 설명은 생략한다.
제1 추출부(430)는 상술한 제2 파라미터 값 집합에 포함된 제2 파라미터 값 각각을 생성하기 위해 이용된 복수의 제1 파라미터 값들을 포함하는 제1 파라미터 값 집합으로부터 분할부(420)에 의해 분할된 복수의 블록 각각에 대응되는 복수의 제1 파라미터 값을 추출한다.
이때, 본 발명의 일 실시예에 따르면, 제1 파라미터 값 집합은 제2 파라미터 값 집합과 동일하게 2n×m개의 제1 파라미터 값들을 포함할 수 있다. 즉, 제1 파라미터 값 집합에 포함되는 제1 파라미터 값들의 개수는 시드 값 생성부(110)에서 생성되는 시드 값의 길이 및 분할부(120)에서 생성되는 블록의 수에 따라 변경될 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제1 추출부(430)는 제1 파라미터 값 집합으로부터 분할부(420)에 의해 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제1 파라미터 값을 추출할 수 있다.
구체적으로, 제1 파라미터 값 집합에 포함된 제1 파라미터 값들은 각각 n비트 길이의 2n 개의 서로 상이한 비트 열 중 하나의 비트 열과 해당 비트 열을 포함하는 블록의 시드 값 내 위치로 인덱싱될 수 있다.
이에 따라, 제1 추출부(430)는 분할부(420)에 의해 분할된 각 블록에 포함된 비트 열 및 해당 블록의 시드 값 내 위치와 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각의 인덱스 값을 비교하여 대응되는 제1 파라미터 값을 추출할 수 있다.
한편, 제1 파라미터 값 집합에 포함된 제1 파라미터 값 각각은 제2 파라미터 값 집합에 포함된 제2 파라미터 값 중 대응되는 제2 파라미터 값과 동일한 인덱스 값을 가질 수 있다.
도 5는 제1 파라미터 값 집합의 일 예를 나타낸 도면이다.
구체적으로, 도 5는 도 2에 도시된 제2 파라미터 값 집합에 포함된 제2 파라미터 값 각각을 생성하기 위해 이용된 제1 파라미터 값들을 포함하는 제1 파라미터 값 집합의 예를 나타낸다.
즉, 도 5에 도시된 제1 파라미터 값 k1,1은 도 2에 도시된 제2 파라미터 값 r1,1을 생성하기 위해 이용된 제1 파라미터 값을 나타내며, r1,1과 동일하게 '00000000'인 비트 열과 시드 값 내 첫 번째 블록(즉, 1 block)으로 인덱싱된다.
마찬가지로, 도 5에 도시된 제1 파라미터 값 k3,3은 도 2에 도시된 제2 파라미터 값 r3,3을 생성하기 위해 이용된 제1 파라미터 값을 나타내며, r3,3과 동일하게 '00000010'인 비트 열과 시드 값 내 세 번째 블록(즉, 3 block)으로 인덱싱된다.
도 6은 제1 파라미터 값 추출의 일 예를 나타낸 도면이다.
도 6에 도시된 예에서, 시드 값(610)은 도 3에 도시된 시드 값(310)과 동일한 값이며, 분할부(420)에서 시드 값(610)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제1 파라미터 값 집합(630)은 도 5에 도시된 제1 파라미터 값 집합(510)과 동일한 것으로 가정한다.
도 6에 도시된 예에서, 시드 값(610)으로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제1 추출부(430)는 제1 파라미터 값 집합(630)에서 '1 block'과 비트 열 '1111110'에 대응되는 제1 파라미터 값인 k255,1을 추출할 수 있다.
또한, 시드 값(610)으로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제1 추출부(430)는 제1 파라미터 값 집합(630)에서 '2 block'과 비트 열 '00000010'에 대응되는 제1 파라미터 값인 k3,2를 추출할 수 있다.
이와 동일한 방식으로, 제1 추출부(430)는 제1 파라미터 값 집합(630)에서 시드 값(610)로부터 분할된 32개의 블록 각각에 대응되는 파라미터 값을 추출할 수 있다.
이에 따라, 도 6에 도시된 예에서 제1 추출부(430)에 의해 추출되는 제1 파라미터 값들은 {k255,1, k3,2, k1,3, …, k3,30, k256,31, k255,32}과 같다.
다시, 도 4를 참조하면, 연산부(450)는 제1 추출부(430)에서 추출된 제1 파라미터 값들을 이용하여 제1 난수 값을 생성하고, 제2 추출부(440)에서 추출된 제2 파라미터 값들을 이용하여 제2 난수 값을 생성한다.
이때, 본 발명의 일 실시예에 따르면, 연산부(450)는 제1 파라미터 값 집합에서 추출된 제1 파라미터 값들을 더하여 제1 난수 값을 생성할 수 있다.
예를 들어, 연산부(450)는 아래의 수학식 9를 이용하여, 도 6에 도시된 예에서 추출된 제1 파라미터 값들로부터 제1 난수 값(k)을 생성할 수 있다.
[수학식 9]
k= k255,1+k3,2+k1,3+…+k3,30+k256,31+k255,32
한편, 연산부(450)는 상술한 수학식 9 외에도, 다양한 형태의 일 방향 함수들을 이용하여 제1 난수 값(k)을 생성할 수 있다.
한편, 제2 파라미터 값 집합이 예를 들어, 상술한 수학식 1과 같이 제1 파라미터 값들을 이용한 지수 연산을 통해 생성된 제2 파라미터 값들을 포함하는 경우, 연산부(450)는 상술한 수학식 4를 이용하여 도 3 에 도시된 예에서 추출된 제2 파라미터 값들로부터 제2 난수 값(r)을 생성할 수 있다.
다른 예로, 제2 파라미터 값 집합이 예를 들어, 상술한 수학식 2 및 3과 같이 제1 파라미터 값들을 이용한 스칼라 포인트 곱 연산을 통해 생성된 제2 파라미터 값들을 포함하는 경우, 연산부(450)는 상술한 수학식 6을 이용하여 도 3 에 도시된 예에서 추출된 제2 파라미터 값들로부터 제2 난수 값(r)을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산부(450)는 생성된 제1 난수 값(k) 및 제2 난수 값(r)을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
구체적으로, 연산부(140)는 암호화 또는 전자 서명 생성을 위해 지수 연산 또는 스칼라 포인트 곱 연산이 요구되는 다양한 방식의 암호 알고리즘 내지는 전자 서명 알고리즘을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다. 이때, 연산부(140)는 지수 연산 또는 스칼라 포인트 곱 연산을 직접 수행하지 않고, 제2 난수 값(r)을 지수 연산 또는 스칼라 포인트 곱 연산의 결과 값으로 이용할 수 있다.
예를 들어, 연산부(450)는 전자 서명 기법 중 하나인 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) 출력
이때, 연산부(450)는 제1 난수 값을 랜덤 값 k로 이용할 수 있으며, 제2 난수 값를 서명 값 r로 이용할 수 있다. 즉, 서명 값 r은 k를 이용한 지수 연산이 아닌 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 이용한 곱셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득될 수 있다. 이에 따라, 부채널 공격에 의해 서명 값 r을 생성하기 위해 사용된 랜덤 값 k를 알 수 없게 되며, 서명 값 s를 생성하기 위해 사용된 비밀 키 c 또한 안전하게 된다.
다른 예로, 연산부(450)는 전자 서명 기법 중 하나인 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로 이용할 수 있다. 즉, 서명 값 r은 k를 이용한 스칼라 포인트 곱 연산이 아닌 제2 파라미터 값 집합에서 추출된 제2 파라미터 값들을 이용한 덧셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득될 수 있다. 이에 따라, 부채널 공격에 의해 서명 값 r을 생성하기 위해 사용된 랜덤 값 k를 알 수 없게 되며, 서명 값 s를 생성하기 위해 사용된 비밀 키 c 또한 안전하게 된다.
한편, 일 실시예에서, 도 4에 도시된 시드 값 생성부(410), 분할부(420), 제1 추출부(430), 제2 추출부(440) 및 연산부(450)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 하나 이상의 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
도 7은 본 발명의 또 다른 실시예에 따른 연산 장치의 구성도이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 연산 장치(700)는 시드 값 생성부(710), 분할부(720), 제1 추출부(730), 제2 추출부(740), 제3 추출부(750) 및 연산부(760)를 포함한다.
한편, 도 7에 도시된 예에서, 시드 값 생성부(710), 분할부(720), 제1 추출부(730) 및 제2 추출부(740)는 각각 도 4에 도시된 시드 값 생성부(410), 분할부(420), 제1 추출부(430), 제2 추출부(440)와 동일한 구성이므로 이에 대한 중복적인 설명은 생략한다.
제3 추출부(750)는 제2 파라미터 값 집합에 포함된 복수의 제2 파라미터 값 각각을 이용하여 생성된 복수의 제3 파라미터 값들을 포함하는 제3 파라미터 값 집합으로부터 분할부(720)에 의해 분할된 복수의 블록 각각에 대응되는 복수의 제3 파라미터 값을 추출한다.
본 발명의 일 실시예에 따르면, 제3 파라미터 값 집합은 제1 파라미터 값 집합 및 제2 파라미터 값 집합과 동일하게 2n×m개의 제3 파라미터 값들을 포함할 수 있다. 즉, 제3 파라미터 값 집합에 포함되는 제3 파라미터 값들의 개수는 시드 값 생성부(710)에서 생성되는 시드 값의 길이 및 분할부(720)에서 생성되는 블록의 수에 따라 변경될 수 있다.
또한, 본 발명의 일 실시예에 따르면, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들은 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 각각을 이용하여 생성되며, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 중 적어도 일부는 암호화 또는 전자 서명 생성에 이용되는 비밀 키를 곱한 값을 포함할 수 있다.
구체적으로, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들은 예를 들어, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 각각에 비밀 키를 곱한 값일 수 있다.
다른 예로, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 중 일부는 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 일부와 동일한 값이며, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 중 나머지 일부는 2 파라미터 값 집합에 포함된 나머지 제2 파라미터 값들 각각에 비밀 키를 곱한 값일 수 있다.
한편, 본 발명의 일 실시예에 따르면, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들은 각각 n비트 길이의 2n 개의 서로 상이한 비트 열 중 하나의 비트 열과 해당 비트 열을 포함하는 블록의 시드 값 내 위치로 인덱싱될 수 있다. 이에 따라, 제3 추출부(750)는 분할부(720)에 의해 분할된 각 블록에 포함된 비트 열 및 해당 블록의 시드 값 내 위치와 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 각각의 인덱스 값을 비교하여 대응되는 제3 파라미터 값을 추출할 수 있다.
한편, 제3 파라미터 값 집합에 포함된 제3 파라미터 값 각각은 제2 파라미터 값 집합에 포함된 제2 파라미터 값 중 대응되는 제2 파라미터 값과 동일한 인덱스 값을 가질 수 있다.
도 8은 제3 파라미터 값 집합의 일 예를 나타낸 도면이다.
구체적으로, 도 8은 도 2에 도시된 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들로부터 생성된 제3 파라미터 값들을 포함하는 제3 파라미터 값 집합의 예를 나타낸다.
도 8에 도시된 예에서, 제3 파라미터 값 집합(810)은 도 2에 도시된 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들과 동일한 개수(즉, 28×32개)의 제3 파라미터 값들을 포함한다.
구체적으로, 제3 파라미터 값 집합(810)에 포함된 제3 파라미터 값들 각각은 32개의 블록 중 하나의 블록과 서로 상이한 8비트 길이의 비트 열 중 하나의 비트 열을 이용하여 인덱싱된다. 이때, 제3 파라미터 값 집합(810)에 포함된 제3 파라미터 값들 각각은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 대응되는 제2 파라미터 값과 동일한 인덱스 값을 가진다.
한편, 제3 파라미터 값 집합(810) 중 "32 block"를 인덱스 값으로 가지는 제3 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ..., cr255,32 , cr256,32)을 제외한 나머지 제3 파라미터 값들은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 동일한 인덱스 값을 가지는 제2 파라미터 값과 동일한 값을 가진다.
반면, 제3 파라미터 값 집합(810) 중 "32 block"을 인덱스 값으로 가지는 제3 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ..., cr255,32 , cr256,32)은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 동일한 인덱스 값을 가지는 제2 파라미터 값들(즉, r1,32, r2,32, r3,32, ..., r255,32 , r256,32) 각각에 비밀 키(c)를 곱한 값과 동일한 값을 가진다.
구체적으로, 제3 파라미터 값 r1,1은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값 r1,1과 동일한 값을 나타내며, '00000000'인 비트 열과 첫 번째 블록(즉, 1 block)으로 인덱싱된다.
또한, 제3 파라미터 값 cr1,32는 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값 r1,32에 비밀 키(c)를 곱하여 생성된 제3 파라미터 값을 나타내며, r1,32과 동일하게 '00000000'인 비트 열과 32 번째 블록(즉, 32 block)으로 인덱싱된다.
한편, 도 8에 도시된 예에서는 "32 block"을 인덱스 값으로 가지는 제3 파라미터 값들(즉, cr1,32, cr2,32, cr3,32, ...,cr255,32 , cr256,32)이 동일한 블록을 인덱스 값으로 가지는 제2 파라미터 값들(즉, r1,32, r2,32, r3,32, ..., r255,32 , r256,32) 각각에 비밀 키(c)를 곱한 값인 것으로 예시하고 있으나 반드시 이에 한정되는 것은 아니다. 구체적으로, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 중 특정 블록을 인덱스 값으로 가지는 제3 파라미터 값들은 동일한 블록을 인덱스 값으로 가지는 제2 파라미터 값들 각각에 비밀 키(c)를 곱한 값과 동일한 값을 가질 수 있다.
도 9는 제3 파라미터 값 집합의 다른 예를 나타낸 도면이다.
구체적으로, 도 9는 도 2에 도시된 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들로부터 생성된 제3 파라미터 값들을 포함하는 제3 파라미터 값 집합의 예를 나타낸다.
도 9에 도시된 예에서, 제3 파라미터 값 집합(910)은 도 2에 도시된 제2 파라미터 값 집합(210)과 동일한 개수(즉, 28×32개)의 제3 파라미터 값들을 포함한다.
구체적으로, 제3 파라미터 값 집합(910)에 포함된 제3 파라미터 값들 각각은 32개의 블록 중 하나의 블록과 서로 상이한 8비트 길이의 비트 열 중 하나의 비트 열을 이용하여 인덱싱된다. 이때, 제3 파라미터 값 집합(910)에 포함된 제3 파라미터 값들 각각은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 대응되는 제2 파라미터 값과 동일한 인덱스 값을 가진다.
또한, 제3 파라미터 값 집합(910)에 포함된 제3 파라미터 값들 각각은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값들 중 동일한 인덱스 값을 가지는 제2 파라미터 값에 비밀 키(c)를 곱한 값과 동일한 값을 가진다.
구체적으로, 도 9에 도시된 예에서, 제3 파라미터 값 cr1,1은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값 r1,1에 비밀 키(c)를 곱하여 생성된 제3 파라미터 값을 나타내며, r1,32과 동일하게 '00000000'인 비트 열과 32 번째 블록(즉, 32 block)으로 인덱싱된다.
또한, 제3 파라미터 값 cr255,32은 제2 파라미터 값 집합(210)에 포함된 제2 파라미터 값 r255,32에 비밀 키(c)를 곱하여 생성된 제3 파라미터 값을 나타내며, r255,32과 동일하게 '11111110'인 비트 열과 32 번째 블록(즉, 32 block)으로 인덱싱된다.
도 10은 제3 파라미터 값 추출의 일 예를 나타낸 도면이다.
도 10에 도시된 예에서, 시드 값(1010)은 도 3 및 도 6에 도시된 시드 값(310, 610)과 동일한 값이며, 분할부(720)에서 시드 값(1010)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제3 파라미터 값 집합(1030)은 도 8에 도시된 제3 파라미터 값 집합(810)과 동일한 것으로 가정한다.
도 8에 도시된 예에서, 시드 값(1010)로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제3 추출부(750)는 제3 파라미터 값 집합(1030)에서 '1 block'과 비트 열 '1111110'에 대응되는 파라미터 값인 r255,1을 추출할 수 있다.
또한, 시드 값(1010)로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제3 추출부(750)는 제3 파라미터 값 집합(1030)에서 '2 block'과 비트 열 '00000010'에 대응되는 제3 파라미터 값인 r3,2를 추출할 수 있다.
이와 동일한 방식으로, 제3 추출부(750)는 제3 파라미터 값 집합(1030)에서 시드 값(1010)로부터 분할된 32개의 블록 각각에 대응되는 파라미터 값을 추출할 수 있다.
이에 따라, 도 10에 도시된 예에서 제3 추출부(750)에 의해 추출되는 제3 파라미터 값들은 {r255,1, r3,2, r1,3, ..., r3,30, r256,31, cr255,32}과 같다.
도 11은 제3 파라미터 값 추출의 다른 예를 나타낸 도면이다.
도 11에 도시된 예에서, 시드 값(1110)은 도 3 및 도 6에 도시된 시드 값(310, 610)과 동일한 값이며, 분할부(720)에서 시드 값(1110)을 8비트 길이의 32개 블록으로 분할하는 것으로 가정한다. 또한, 제3 파라미터 값 집합(1130)은 도 9에 도시된 제3 파라미터 값 집합(910)과 동일한 것으로 가정한다.
도 11에 도시된 예에서, 시드 값(1110)로부터 분할된 32개의 블록들 중 첫 번째 블록에 포함된 비트 열은 '1111110'이므로, 제3 추출부(750)는 제3 파라미터 값 집합(1130)에서 '1 block'과 비트 열 '1111110'에 대응되는 파라미터 값인 cr255,1을 추출할 수 있다.
또한, 시드 값(1110)로부터 분할된 블록들 중 두 번째 블록에 포함된 비트 열은 '00000010'이므로, 제3 추출부(750)는 제3 파라미터 값 집합(1130)에서 '2 block'과 비트 열 '00000010'에 대응되는 제3 파라미터 값인 cr3,2를 추출할 수 있다.
이와 동일한 방식으로, 제3 추출부(750)는 제3 파라미터 값 집합(1130)에서 시드 값(1110)로부터 분할된 32개의 블록 각각에 대응되는 파라미터 값을 추출할 수 있다.
이에 따라, 도 11에 도시된 예에서 제3 추출부(750)에 의해 추출되는 제3 파라미터 값들은 {cr255,1, cr3,2, cr1,3, ..., cr3,30, cr256,31, cr255,32}과 같다.
다시, 도 7을 참조하면, 연산부(760)는 제1 추출부(730)에서 추출된 제1 파라미터 값들을 이용하여 제1 난수 값을 생성하고, 제2 추출부(740)에서 추출된 제2 파라미터 값들을 이용하여 제2 난수 값을 생성하며, 제3 추출부(750)에서 추출된 제3 파라미터 값들을 이용하여 제3 난수 값을 생성한다.
이때, 제1 난수 값 및 제2 난수 값 생성에 대해서는 이미 상술하였으므로, 이에 대한 중복적인 설명은 생략한다.
본 발명의 일 실시예에 따르면, 연산부(760)는 제3 파라미터 값 집합에서 추출된 제3 파라미터 값들을 곱하거나 더하여 제3 난수 값을 생성할 수 있다.
예를 들어, 연산부(760)는 아래의 수학식 10을 이용하여, 도 10에 도시된 예에서 추출된 제3 파라미터 값들로부터 제3 난수 값(cr)을 생성할 수 있다.
[수학식 10]
cr= r255,1×r3,2×r1,3×…×r3,30×r256,31×cr255 ,32
다른 예로, 연산부(760)는 아래의 수학식 11을 이용하여, 도 11에 도시된 예에서 추출된 제3 파라미터 값들로부터 제3 난수 값(cr)을 생성할 수 있다.
[수학식 11]
cr= cr255,1+cr3,2+cr1,3+…+cr3,30+cr256,31+cr255,32
즉, 연산부(760)에서 생성되는 제3 난수 값(cr)은 비밀 키(c)에 제2 난수 값(r)을 곱한 값과 동일하다.
한편, 연산부(760)는 추출된 제3 파라미터 값들을 곱하거나 더하는 것 외에도, 추출된 제3 파라미터 값들로부터 제2 난수 값(r)에 비밀 키(c)를 곱한 값과 동일한 값을 생성할 수 있는 다양한 형태의 일 방향 함수를 이용하여 제3 난수 값(cr)을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산부(760)는 생성된 제1 난수 값(k), 제2 난수 값(r) 및 제3 난수 값(cr)을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
구체적으로, 연산부(760)는 암호화 또는 전자 서명 생성을 위해 지수 연산 또는 스칼라 포인트 곱 연산과 지수 연산 또는 스칼라 포인트 곱을 통해 생성된 값에 비밀 키를 곱하는 연산이 요구되는 다양한 방식의 암호 알고리즘 내지는 전자 서명 알고리즘을 이용하여 데이터를 암호화 또는 전자 서명을 생성할 수 있다. 이때, 연산부(760)는 지수 연산 또는 스칼라 포인트 곱 연산을 직접 수행하지 않고, 제2 난수 값(r)을 지수 연산 또는 스칼라 포인트 곱 연산의 결과 값으로 이용할 수 있다. 또한, 연산부(760)는 제2 난수 값(r)에 비밀 키(c)를 직접 곱하지 않고, 제3 난수 값(cr)을 제2 난수 값(r)과 비밀 키(c)의 곱의 결과 값으로 이용할 수 있다.
예를 들어, DSA(Digital Signature Algorithm)를 이용하여 전자 서명을 생성하는 경우, 상술한 바와 같이, 연산부(760)는 제1 난수 값을 랜덤 값 k로 이용할 수 있으며, 제2 난수 값를 서명 값 r로 이용할 수 있다. 또한, 연산부(760)는 제1 난수 값과 제3 파라미터 값 집합에서 추출된 제3 파라미터 값들을 이용한 덧셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득된 제3 난수 값을 이용하여 서명 값 s를 생성할 수 있다. 즉, 서명 값 r은 랜덤 값 k를 이용한 지수 연산을 수행하지 않고 생성 가능하며, 서명 값 s는 서명 값 r에 비밀 키 c를 곱하는 연산을 수행하지 않고 생성 가능하게 된다. 따라서, 부채널 공격에 의해 서명 값 r을 생성하기 위해 사용된 랜덤 값 k와 서명 값 s를 생성하기 위해 사용된 비밀 키 c를 알 수 없게 된다.
다른 예로, ECDSA를 이용하여 전자 서명을 생성하는 경우, 상술한 바와 같이, 연산부(760)는 제1 난수 값을 랜덤 값 k로 이용할 수 있으며, 제2 난수 값를 서명 값 r로 이용할 수 있다. 또한, 연산부(760)는 제1 난수 값과 제3 파라미터 값 집합에서 추출된 제3 파라미터 값들을 이용한 곱셈 연산과 같이 부채널 공격에 안전한 다른 연산을 통해 획득된 제3 난수 값을 이용하여 서명 값 s를 생성할 수 있다. 즉, 서명 값 r은 랜덤 값 k를 이용한 스칼라 곱 연산을 수행하지 않고 생성 가능하며, 서명 값 s는 서명 값 r에 비밀 키 c를 곱하는 연산을 수행하지 않고 생성 가능하게 된다. 따라서, 부채널 공격에 의해 서명 값 r을 생성하기 위해 사용된 랜덤 값 k와 서명 값 s를 생성하기 위해 사용된 비밀 키 c를 알 수 없게 된다.
한편, 일 실시예에서, 도 7에 도시된 시드 값 생성부(710), 분할부(720), 제1 추출부(730), 제2 추출부(740), 제3 추출부(750) 및 연산부(760)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 하나 이상의 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
도 12는 본 발명의 일 실시예에 따른 연산 방법의 순서도이다.
도 12에 도시된 방법은 예를 들어, 도 1에 도시된 연산 장치(100)에 의해 수행될 수 있다.
도 12를 참조하면, 연산 장치(100)는 임의의 비트 열로 구성된 시드 값을 생성한다(1210).
이후, 연산 장치(100)는 생성된 시드 값을 복수의 블록으로 분할한다(1220).
이후, 연산 장치(100)는 복수의 제1 파라미터 값들로부터 생성된 복수의 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출한다(1230).
이때, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 복수의 제1 파라미터 값들 각각을 지수로 이용한 지수 연산 또는 복수의 제1 파라미터 값들 각각을 승수로 이용한 스칼라 곱 연산스칼라 포인트 곱 연산을 통해 생성된 값일 수 있다.
또한, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 제2 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
이후, 연산 장치(100)는 추출된 제2 파라미터 값들로부터 난수 값을 생성한다(1240).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 추출된 제2 파라미터 값들을 곱하거나 더하여 난수 값을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산 장치(100)는 생성된 난수 값을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
도 13은 본 발명의 다른 실시예에 따른 연산 방법의 순서도이다.
도 13에 도시된 방법은 예를 들어, 도 4에 도시된 연산 장치(400)에 의해 수행될 수 있다.
도 13을 참조하면, 연산 장치(400)는 임의의 비트 열로 구성된 시드 값을 생성한다(1310).
이후, 연산 장치(400)는 생성된 시드 값을 복수의 블록으로 분할한다(1320).
이후, 연산 장치(400)는 복수의 제1 파라미터 값들을 포함하는 제1 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출한다(1330).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 제1 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제1 파라미터 값을 추출할 수 있다.
이후, 연산 장치(400)는 추출된 제1 파라미터 값들로부터 제1 난수 값을 생성한다(1340).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 추출된 제1 파라미터 값들을 더하여 제1 난수 값을 생성할 수 있다.
이후, 연산 장치(400)는 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 이용하여 생성된 복수의 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출한다(1350).
이때, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 지수로 이용한 지수 연산 또는 제1 파라미터 값들 각각을 승수로 이용한 스칼라 곱 연산스칼라 포인트 곱 연산을 통해 생성된 값일 수 있다.
또한, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 제2 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
이후, 연산 장치(400)는 추출된 제2 파라미터 값들로부터 제2 난수 값을 생성한다(1360).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 추출된 제2 파라미터 값들을 곱하거나 더하여 제2 난수 값을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 생성된 제1 난수 값 및 제2 난수 값을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
도 14는 본 발명의 또 다른 실시예에 따른 연산 방법의 순서도이다.
도 14에 도시된 방법은 예를 들어, 도 7에 도시된 연산 장치(700)에 의해 수행될 수 있다.
도 14를 참조하면, 연산 장치(700)는 임의의 비트 열로 구성된 시드 값을 생성한다(1410).
이후, 연산 장치(700)는 생성된 시드 값을 복수의 블록으로 분할한다(1420).
이후, 연산 장치(700)는 복수의 제1 파라미터 값들을 포함하는 제1 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제1 파라미터 값을 추출한다(1430).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 제1 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제1 파라미터 값을 추출할 수 있다.
이후, 연산 장치(700)는 추출된 제1 파라미터 값들로부터 제1 난수 값을 생성한다(1440).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 추출된 제1 파라미터 값들을 더하여 제1 난수 값을 생성할 수 있다.
이후, 연산 장치(700)는 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 이용하여 생성된 복수의 제2 파라미터 값들을 포함하는 제2 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제2 파라미터 값을 추출한다(1450).
이때, 본 발명의 일 실시예에 따르면, 제2 파라미터 값 집합에 포함된 제2 파라미터 값들은 제1 파라미터 값 집합에 포함된 제1 파라미터 값들 각각을 지수로 이용한 지수 연산 또는 제1 파라미터 값들 각각을 승수로 이용한 스칼라 곱 연산스칼라 포인트 곱 연산을 통해 생성된 값일 수 있다.
또한, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 제2 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제2 파라미터 값을 추출할 수 있다.
이후, 연산 장치(700)는 추출된 제2 파라미터 값들로부터 제2 난수 값을 생성한다(1460).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 추출된 제2 파라미터 값들을 곱하거나 더하여 제2 난수 값을 생성할 수 있다.
이후, 연산 장치(700)는 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 각각을 이용하여 생성된 복수의 제3 파라미터 값들을 포함하는 제3 파라미터 값 집합으로부터 분할된 각 블록에 대응되는 복수의 제3 파라미터 값을 추출한다(1470).
이때, 본 발명의 일 실시예에 따르면, 제3 파라미터 값 집합에 포함된 제3 파라미터 값들 중 적어도 일부는 제2 파라미터 값 집합에 포함된 제2 파라미터 값들 중 적어도 일부에 비밀 키를 곱한 값을 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 제3 파라미터 값 집합으로부터 분할된 각 블록의 비트 열 및 시드 값 내 위치에 대응되는 제3 파라미터 값을 추출할 수 있다.
이후, 연산 장치(700)는 추출된 제3 파라미터 값들로부터 제3 난수 값을 생성한다(1480).
이때, 본 발명의 일 실시예에 따르면, 연산 장치(700)는 추출된 제3 파라미터 값들을 곱하거나 더하여 제3 난수 값을 생성할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 연산 장치(400)는 생성된 제1 난수 값, 제2 난수 값 및 제3 난수 값을 이용하여 데이터를 암호화하거나 전자 서명을 생성할 수 있다.
한편, 도 12 내지 14에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 400, 700: 연산 장치
110, 410, 710: 시드 값 생성부
120, 420, 720: 분할부
130: 추출부
140, 450, 760: 연산부
430, 730: 제1 추출부
440, 740: 제2 추출부
750: 제3 추출부

Claims (16)

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

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020170055698A KR101989943B1 (ko) 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법
US15/862,817 US10812260B2 (en) 2017-04-28 2018-01-05 Apparatus and method for performing operation being secure against side channel attack
EP18154408.1A EP3396892A1 (en) 2017-04-28 2018-01-31 Apparatus and method for performing operation being secure against side channel attack
SG11201909491V SG11201909491VA (en) 2017-04-28 2018-02-06 Apparatus and method for performing operation being secure against side channel attack
JP2020509399A JP2020520613A (ja) 2017-04-28 2018-02-06 サイドチャネル攻撃に安全な演算を実行するための装置および方法
PCT/KR2018/001582 WO2018199442A1 (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
KR1020170055698A KR101989943B1 (ko) 2017-04-28 2017-04-28 부채널 공격에 안전한 연산 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180121247A KR20180121247A (ko) 2018-11-07
KR101989943B1 true KR101989943B1 (ko) 2019-06-17

Family

ID=61132147

Family Applications (1)

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

Country Status (6)

Country Link
US (1) US10812260B2 (ko)
EP (1) EP3396892A1 (ko)
JP (1) JP2020520613A (ko)
KR (1) KR101989943B1 (ko)
SG (1) SG11201909491VA (ko)
WO (1) WO2018199442A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11362841B2 (en) * 2018-07-06 2022-06-14 Nec Corporation Method and system for providing security in trusted execution environments
EP3709561A1 (en) * 2019-03-14 2020-09-16 Thales Dis France SA Method for generating a digital signature of an input message

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 (12)

* 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
JP4701166B2 (ja) * 2004-04-26 2011-06-15 パナソニック株式会社 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム
EP2264939B1 (en) * 2008-03-31 2015-03-04 Fujitsu Limited Encrypting method having countermeasure function against power analyzing attacks
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.
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
KR101989956B1 (ko) * 2015-10-29 2019-06-17 삼성에스디에스 주식회사 암호화 장치 및 방법
DE102016120558A1 (de) * 2016-10-27 2018-05-03 Infineon Technologies Ag Datenverarbeitungsvorrichtung und -verfahren für kryptographische verarbeitung von daten

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 (1)

* Cited by examiner, † Cited by third party
Title
Speeding up Discrete Log and Factoring Based Schemes via Precomputations(1998.06.04.)*

Also Published As

Publication number Publication date
WO2018199442A1 (en) 2018-11-01
KR20180121247A (ko) 2018-11-07
SG11201909491VA (en) 2019-11-28
EP3396892A1 (en) 2018-10-31
US20180316499A1 (en) 2018-11-01
US10812260B2 (en) 2020-10-20
JP2020520613A (ja) 2020-07-09

Similar Documents

Publication Publication Date Title
KR101914028B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US10243734B2 (en) Elliptic curve random number generation
US9064123B2 (en) Secure product-sum combination system, computing apparatus, secure product-sum combination method and program therefor
KR100891323B1 (ko) 이진 필드 ecc에서 랜덤 포인트 표현을 이용하여 파워해독의 복잡도를 증가시키기 위한 암호화 방법 및 장치
US7853796B2 (en) Method, system and computer program for polynomial based hashing and message authentication coding with separate generation of spectrums
Moghaddam et al. A hybrid encryption algorithm based on RSA small-e and efficient-RSA for cloud computing environments
JPWO2007074836A1 (ja) 署名生成装置、署名生成方法及び署名生成プログラム
CN103023637A (zh) 一种云存储中可撤销的关键字搜索公钥加密及搜索方法
Dhanda et al. Demystifying elliptic curve cryptography: Curve selection, implementation and countermeasures to attacks
Abdullah et al. Security improvement in elliptic curve cryptography
Chen et al. Witness-based searchable encryption with optimal overhead for cloud-edge computing
KR101989943B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
KR101989950B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
US9590805B1 (en) Ladder-based cryptographic techniques using pre-computed points
JP2018036418A (ja) 暗号システム、暗号方法及び暗号プログラム
Nykolaychuk et al. Residue Number System Asymmetric Cryptoalgorithms
Ashraf et al. Message transmission for GH-public key cryptosystem
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
David et al. TLS protocol: Improving using ElGamal elliptic curves and one-time-pad
KR102507861B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
KR102510077B1 (ko) 부채널 공격에 안전한 연산 장치 및 방법
Mustafi et al. A novel approach to enhance the security dimension of RSA algorithm using bijective function
Pontie et al. Randomized windows for secure scalar multiplication on elliptic curves
Mohammed et al. Fully Homomorphic Encryption Scheme for Securing Cloud Data.
CN114422108A (zh) 一种用户隐私数据加密解密方法及系统

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