KR20130089653A - 연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체, 연산 장치의 잉여 연산 방법 및 잉여 연산 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체 - Google Patents

연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체, 연산 장치의 잉여 연산 방법 및 잉여 연산 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR20130089653A
KR20130089653A KR1020137013286A KR20137013286A KR20130089653A KR 20130089653 A KR20130089653 A KR 20130089653A KR 1020137013286 A KR1020137013286 A KR 1020137013286A KR 20137013286 A KR20137013286 A KR 20137013286A KR 20130089653 A KR20130089653 A KR 20130089653A
Authority
KR
South Korea
Prior art keywords
variable
value
scalar multiplication
unit
coordinate value
Prior art date
Application number
KR1020137013286A
Other languages
English (en)
Other versions
KR101439804B1 (ko
Inventor
유스케 나이토
야스유키 사카이
Original Assignee
미쓰비시덴키 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미쓰비시덴키 가부시키가이샤 filed Critical 미쓰비시덴키 가부시키가이샤
Publication of KR20130089653A publication Critical patent/KR20130089653A/ko
Application granted granted Critical
Publication of KR101439804B1 publication Critical patent/KR101439804B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-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/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
    • 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/7261Uniform execution, e.g. avoiding jumps, or using formulae with the same power profile
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

타원 스칼라 곱셈 kG를 난수 k의 값에 관계없이 일정한 계산 시간에 처리하여, 타원 스칼라 곱셈 kG의 타이밍 해석을 방지할 수 있다. 초기 설정부(121)는 스칼라 곱셈 변수 R에 타원 곡선상의 특정점 G를 설정한다. 스칼라 곱셈부(122)는 난수 k를 나타내는 t비트의 비트열을 상위부터 1비트씩 참조하고, 1비트씩 참조할 때마다 스칼라 곱셈 변수 R을 2배 곱셈해서 획득한 값을 작업 변수 R[0]로 설정하며, 작업 변수 R[0]로 설정한 값에 특정점 G를 가산하여 획득한 값을 작업 변수 R[1]로 설정한다. 그리고, 스칼라 곱셈부(122)는 참조한 비트의 값이 0이면 스칼라 곱셈 변수 R에 작업 변수 R[0]을 설정하고, 참조한 비트의 값이 1이면 스칼라 곱셈 변수 R에 작업 변수 R[1]을 설정한다. 스칼라 곱셈 점 출력부(123)는 스칼라 곱셈 변수 R로부터 정수값 2tG를 감산하고, 감산해서 획득한 값을 스칼라 곱셈 점 kG으로서 출력한다.

Description

연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램, 연산 장치의 잉여 연산 방법, 잉여 연산 프로그램, 연산 장치의 제로 판정 방법 및 제로 판정 프로그램{ARITHMETICAL DEVICE, ARITHMETICAL DEVICE ELLIPTICAL SCALAR MULTIPLICATION METHOD AND ELLIPTICAL SCALAR MULTIPLICATION PROGRAM, ARITHMETICAL DEVICE MULTIPLICATIVE OPERATION METHOD AND MULTIPLICATIVE OPERATION PROGRAM, AS WELL AS ARITHMETICAL DEVICE ZERO DETERMINATION METHOD AND ZERO DETERMINATION PROGRAM}
본 발명은 예컨대, 타원 곡선 암호의 전자 서명을 생성하기 위한 연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램, 연산 장치의 잉여 연산 방법, 잉여 연산 프로그램, 연산 장치의 제로 판정 방법 및 제로 판정 프로그램에 관한 것이다.
전자 데이터의 작성자를 증명하기 위해서 전자 서명을 이용하는 기술이 있다.
전자 서명은, 전자 데이터와 비밀 키와 난수를 이용해서 특정한 서명 생성 알고리즘에 의해 작성된다. 전자 서명은 전자 데이터와 함께 통신된다.
전자 데이터의 수신자는 수신한 전자 데이터와, 수신한 전자 서명과, 서명자의 공개 키를 이용해서 특정한 서명 검증 알고리즘에 의해서 전자 데이터를 검증한다. 즉, 전자 데이터의 수신자는 수신한 전자 서명이 공개 키에 대응하는 비밀 키를 이용해서 생성되었는지 여부를 판정한다. 그리고, 수신한 전자 서명이 공개 키에 대응하는 비밀 키를 이용해서 생성되었다면, 수신한 전자 데이터가 비밀 키의 주인(서명자)에 의해서 작성된 것이 증명된다.
이 때문에, 비밀 키가 남에게 알려진 경우에는 전자 서명이 위조되어, 비밀 키의 주인을 가장해서 전자 데이터가 통신될 염려가 있다.
또한, 전자 서명의 생성시에 사용된 난수가 남에게 알려진 경우에는, 전자 서명과 난수에 기초해서 비밀 키가 특정되어 버린다.
이 때문에, 비밀 키가 알려진 경우와 마찬가지로, 전자 서명이 위조되어, 비밀 키의 주인을 가장해서 전자 데이터가 통신되어 버린다.
또한, 전자 서명을 생성하기 위한 연산 처리의 처리 시간을 타이밍 해석함으로써 연산 처리에서 이용된 수치(예컨대, 비밀 키나 난수)를 구할 수 있을 가능성이 있다(비특허문헌 1 참조).
예컨대, EC-Schnorr나 ECDSA 등의 타원 곡선 암호의 서명 생성 알고리즘(및 서명 검증 알고리즘)에서는 타원 곡선 상의 점 G를 난수 k로 스칼라 곱하는 타원 스칼라 곱셈 kG가 행해진다. 타원 곡선 암호의 서명 생성 알고리즘(및 서명 검증 알고리즘)은 비특허문헌 2에 기재되어 있다.
종래의 타원 스칼라 곱셈 kG은 이하와 같다.
Figure pct00001
상기 계산 방법을 Add-Double-Always 법이라고 부른다.
Add-Double-Always 법에서는 k[t]=1이 아니면 안되기 때문에, 난수 k의 비트수 t가 난수 k의 값에 따라 변화되어 버린다. 예컨대, 난수 k를 32비트로 나타낸 경우에는, 최상위 비트가 1인 난수 k의 비트수 t는 '32'이지만, 상위 12비트가 0인 난수 k의 비트수 t는 '20(=32-12)'로 변화되어 버린다.
즉, 난수 k의 값에 따라서 계산 시간에 차이가 생겨 버려서, 타이밍 해석에 의해 난수 k가 특정되어 버릴 가능성이 있다.
이하에, Add-Double-Always 법을 변형한 타원 스칼라 곱셈 kG를 나타낸다.
Figure pct00002
상기 계산 방법에서는 k[t]=1이 아니어도 상관없기 때문에, 난수 k의 비트수 t는 고정값으로, 난수 k의 값에 따라 변화되지 않는다.
단, 스텝 2-1에 있어서, 난수 k의 최상위 비트가 1인 경우에는 무한 원점(無限遠点)의 변수 R(R=0)의 2배 곱셈은 1번밖에 행해지지 않고, 난수 k의 상위의 복수 비트가 0인 경우에는 무한 원점의 변수 R의 2배 곱셈은 복수회 반복된다. 또한, 무한 원점의 변수 R의 2배 곱셈과 무한 원점이 아닌 변수 R의 2배 곱셈에서는 계산 시간이 다르다.
이 때문에, 난수 k의 값에 따라 계산 시간에 차이가 생겨 버려서, 타이밍 해석에 의해서 난수 k가 특정되어 버릴 가능성이 있다.
또한, 타원 곡선 암호의 서명 생성 알고리즘(및 서명 검증 알고리즘)에서는 다배장(multiple-precision) 연산 처리를 행할 필요가 있다.
이하에, 다배장 연산 처리에서 행해지는 잉여 연산 'a/2 mod p'를 나타낸다. a는 다배장 정수를 나타내고, p는 소수를 나타내며, mod는 잉여 연산자를 나타낸다.
Figure pct00003
상기 잉여 연산에 있어서, a가 짝수인 경우에는 시프트 연산이 1회 행해지고, a가 홀수의 경우에는 시프트 연산과 가산이 1회씩 행해진다.
즉, a의 값에 따라 계산 시간에 차이가 생겨 버려서, 타이밍 해석에 의해서 a가 특정되고, a에 따라 난수 k가 특정되어 버릴 가능성이 있다.
이하에, 다배장 연산 처리에서 행해지는 제로 판정 연산을 나타낸다. 제로 판정 연산에서는 다배장 정수 b의 값이 제로인지 여부를 판정한다. 다배장 정수 b는 복수의 워드(정수값)를 연결한 값으로서 표현된다.
Figure pct00004
Jean-Sebastien Coron : Resistance against Differential Power Analysis for Elliptic Curve Cryptosystems. CHES1999: 292-302 ISO/IEC JTC 1/SC 27
본 발명은 예컨대, 전자 서명을 생성하기 위한 연산 처리를 연산 처리에서 이용하는 수치의 차이에 관계없이 일정한 계산 시간으로 처리함으로써, 타이밍 해석을 방지하는 것을 목적으로 한다.
본 발명의 연산 장치는 특정한 타원 곡선에 포함되는 특정점의 좌표값 G를, t비트의 비트열로 표시되는 특정한 승수(乘數)값 k로 스칼라 곱셈해서 획득한 좌표값 kG를 산출한다.
상기 연산 장치는
상기 특정점의 좌표값 G를 2의 t승으로 스칼라 곱하여 획득한 좌표값 2tG를 미리 기억하는 정수 기억부와,
소정의 스칼라 곱셈 변수 R에 상기 특정점의 좌표값 G를 설정하는 초기 설정부와,
상기 승수값 k를 나타내는 t비트의 비트열을 상위부터 소정수의 비트씩 참조하고, 상기 비트열을 소정수의 비트씩 참조할 때마다 상기 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값을 소정의 제 0 작업 변수 R[0]로 설정하되, 상기 제 0 작업 변수 R[0]로 설정한 값에 상기 특정점의 좌표값 G를 소정수 곱한 좌표값을 가산하여 획득한 좌표값을 소정의 제 1 작업 변수 R[1]로 설정하고, 참조한 소정수의 비트의 값이 제로라면 상기 스칼라 곱셈 변수 R에 상기 제 0 작업 변수 R[0]을 설정하고, 참조한 소정수의 비트의 값이 제로가 아니라면 상기 스칼라 곱셈 변수 R에 상기 제 1 작업 변수 R[1]을 설정하는 스칼라 곱셈부와,
상기 스칼라 곱셈부에 의해 설정된 스칼라 곱셈 변수 R로부터 상기 정수 기억부에 기억된 좌표값 2tG를 감산하고, 감산해서 획득한 좌표값을 상기 좌표값 kG로서 출력하는 스칼라 곱셈 점(scalar multiple point) 출력부를 구비한다.
본 발명에 의하면, 난수 k(승수값)의 값에 관계없이 타원 스칼라 곱셈 kG를 일정한 계산 시간에 처리하여, 타원 스칼라 곱셈 kG의 타이밍 해석을 방지할 수 있다.
도 1은 실시예 1에 있어서의 타원 곡선 암호 장치(100)의 구성도,
도 2는 실시예 1에 있어서의 전자 서명 생성 방법(EC-Schnorr 방식)을 나타내는 흐름도,
도 3은 실시예 1에 있어서의 전자 서명 생성 방법(ECDSA 방식)을 나타내는 흐름도,
도 4는 실시예 1에 있어서의 타원 스칼라 곱셈 방법을 나타내는 흐름도,
도 5는 실시예 1에 있어서의 타원 스칼라 곱셈 방법의 다른 예를 나타내는 흐름도,
도 6은 실시예 1에 있어서의 타원 곡선 암호 장치(100)의 하드웨어 자원의 일례를 나타내는 도면,
도 7은 실시예 2에 있어서의 타원 곡선 암호 장치(100)의 구성도,
도 8은 실시예 2에 있어서의 다배장 잉여 연산 방법을 나타내는 흐름도,
도 9는 실시예 3에 있어서의 타원 곡선 암호 장치(100)의 구성도,
도 10은 실시예 3에 있어서의 다배장 제로 판정 방법을 나타내는 흐름도이다.
(실시예 1)
타원 곡선 암호 방식을 이용해서 전자 서명을 생성하는 타원 곡선 암호 장치에 대해서 설명한다.
단, 전자 서명의 생성은 타원 곡선 암호 방식을 이용한 암호 처리의 일례이다.
도 1은 실시예 1에 있어서의 타원 곡선 암호 장치(100)의 구성도이다.
실시예 1에 있어서의 타원 곡선 암호 장치(100)의 구성에 대해서, 도 1에 기초해서 설명한다.
타원 곡선 암호 장치(100)(연산 장치)는 전자 서명 생성부(110)와 타원 스칼라 곱셈부(120)와 장치 기억부(190)를 구비한다.
전자 서명 생성부(110)는 EC-Schnorr나 ECDSA 등의 타원 곡선 암호를 이용한 서명 생성 알고리즘(특허문헌 2 참조)를 실행해서 전자 서명을 생성한다.
전자 서명 생성부(110)는 난수 생성부(111)와 서명 생성 처리부(112)를 구비한다.
난수 생성부(111)는 소정의 난수 생성 처리에 의해 난수 k를 생성(산출)한다.
난수 k는 t비트의 비트열로 표시되는 값이다.
서명 생성 처리부(112)는 타원 스칼라 곱셈부(120)에 의해 산출되는 좌표값 kG를 이용해서 전자 서명을 생성한다.
타원 스칼라 곱셈부(120)는 특정한 타원 곡선에 포함되는 특정점의 좌표값 G를 난수 생성부(111)에 의해 생성된 난수 k(승수값)로 스칼라 곱셈해서 획득한 좌표값 kG를 산출한다.
타원 스칼라 곱셈부(120)는 초기 설정부(121), 스칼라 곱셈부(122) 및 스칼라 곱셈 점 출력부(a scalar multiple point output unit)(123)를 구비한다.
초기 설정부(121)는 소정의 스칼라 곱셈 변수 R에 특정점의 좌표값 G를 설정한다.
스칼라 곱셈부(122)는 난수 k를 나타내는 t비트의 비트열을 상위부터 소정수의 비트(1비트 또는 복수 비트)씩 참조한다.
스칼라 곱셈부(122)는 비트열을 소정수의 비트씩 참조할 때마다 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값을 소정의 제 0 작업 변수 R[0]로 설정한다.
스칼라 곱셈부(122)는 제 0 작업 변수 R[0]로 설정한 값에 특정점의 좌표값 G를 소정수 배(1배 또는 복수배)한 좌표값을 가산하여 획득한 좌표값을 소정의 제 1 작업 변수 R[1]로 설정한다.
스칼라 곱셈부(122)는 참조한 소정수의 비트의 값이 제로라면 스칼라 곱셈 변수 R에 제 0 작업 변수 R[0]을 설정하고, 참조한 소정수의 비트의 값이 제로가 아니라면 스칼라 곱셈 변수 R에 제 1 작업 변수 R[1]을 설정한다.
스칼라 곱셈 점 출력부(123)는 스칼라 곱셈부(122)에 의해 설정된 스칼라 곱셈 변수 R로부터 좌표값 2tG를 감산하고, 감산해서 획득한 좌표값을 좌표값 kG로서 출력한다.
좌표값 2tG는 특정점의 좌표값 G를 2의 t승으로 스칼라 곱해서 획득한 값이다.
장치 기억부(190)는 타원 곡선 암호 장치(100)에서 사용되는 각종 데이터를 기억한다.
특정점의 좌표값 G, 특정점의 좌표값 G의 위수(位數) n, 비밀 키 d, 좌표값 2tG, 메시지 M, 난수 k, 전자 서명은 장치 기억부(190)에 기억되는 데이터의 일례이다.
특정점의 좌표값 G, 특정점의 좌표값 G의 위수 n 및 비밀 키 d는 장치 기억부(190)에 미리 기억된다. 특정점의 좌표값 G는 '타원 곡선 정현값'이라고도 불린다.
좌표값 2tG는 특정점의 좌표값 G에 기초해서 미리 계산되어 장치 기억부(190)에 기억된다.
메시지 M은 타원 곡선 암호 장치(100)에 입력되어 장치 기억부(190)에 기억되며, 난수 k는 난수 생성부(111)에 의해 산출되어 장치 기억부(190)에 기억되고, 전자 서명은 서명 생성 처리부(112)에 의해 생성되어 장치 기억부(190)에 기억된다.
이하, 특정점의 좌표값 G를 '특정점 G'이라고 하고, 좌표값 2tG를 '정수값 2tG'라고 하며, 좌표값 kG를 '스칼라 곱셈 점 kG'이라고 한다.
도 2는 실시예 1에 있어서의 전자 서명 생성 방법(EC-Schnorr 방식)을 나타내는 흐름도이다.
EC-Schnorr 방식에 의한 전자 서명 생성 방법에 대해서, 도 2에 기초해서 설명한다.
전자 서명 생성부(110)는 장치 기억부(190)로부터 특정점 G, 특정점 G의 위수 n, 비밀 키 d 및 메시지 M을 입력하고, 특정점 G과 특정점 G의 위수 n과 비밀 키 d를 이용해서 메시지 M에 대응하는 전자 서명(e, s)을 아래와 같이 생성(산출)한다.
S111A에서, 난수 생성부(111)는 소정의 난수 생성 처리를 실행하여, 난수 k를 생성(산출)한다. 단, 난수 k는 특정점 G의 위수 n 미만의 자연수이다.
S111A 후에, S112A로 진행한다.
S112A에서, 서명 생성 처리부(112)는 S111A에서 생성된 난수 k와 장치 기억부(190)로부터 입력한 특정점 G를 타원 스칼라 곱셈부(120)에 입력한다.
그리고, 서명 생성 처리부(112)는 타원 스칼라 곱셈부(120)에 의해 산출된 스칼라 곱셈 점 kG를 소정의 변수 P로 설정한다. 이하, 변수 P를 '스칼라 곱셈 점 P'라고 한다.
타원 스칼라 곱셈부(120)에 의한 스칼라 곱셈 점 kG의 산출 방법을 '타원 스칼라 곱셈 방법'으로 해서 별도 설명한다.
S112A 후에, S113A로 진행한다.
S113A에서, 서명 생성 처리부(112)는 메시지 M과 스칼라 곱셈 점 P의 x 좌표값 Px를 결합한 메시지 M'(=M||Px)를 입력값으로 해서 소정의 해시 함수 h를 계산해서 해시값 e를 산출한다.
실시예에 있어서, 'A||B'는 A와 B의 연결을 의미하고, 'h(C)'는 입력값 C의 해시값을 산출하기 위한 해시 함수를 의미한다.
S113A 후에, S114A로 진행한다.
S114A에서, 서명 생성 처리부(112)는 (d×e+k)를 특정점 G의 위수 n로 나눈 나머지를 산출한다. 이하, S114에서 산출한 나머지를 '잉여값 s'라고 한다.
실시예에 있어서, 'A mod B'는 A를 B로 나눈 나머지를 구하는 연산을 의미한다.
서명 생성 처리부(112)는 S113A에서 산출한 해시값 e와 S114A에서 산출한 잉여값 s의 조합(e, s)을 메시지 M의 전자 서명으로서 출력한다.
S114A으로 EC-Schnorr 방식에 의한 전자 서명 생성 처리는 종료된다.
도 3은 실시예 1에 있어서의 전자 서명 생성 방법(ECDSA 방식)을 나타내는 흐름도이다.
전자 서명 생성부(110)는 도 3에 나타낸 바와 같은 ECDSA 방식으로 전자 서명을 생성해도 상관없다.
전자 서명 생성부(110)는 장치 기억부(190)로부터 특정점 G, 특정점 G의 위수 n, 비밀 키 d 및 메시지 M을 입력하고, 특정점 G과 특정점 G의 위수 n과 비밀 키 d를 이용하여 메시지 M에 대응하는 전자 서명(Px, s)을 아래와 같이 생성(산출)한다.
S111B에서, 난수 생성부(111)는 소정의 난수 생성 처리를 실행하여, 난수 k를 생성(산출)한다.
S111B 후에, S112B로 진행한다.
S112B에서, 서명 생성 처리부(112)는 S111B에서 생성된 난수 k와 장치 기억부(190)로부터 입력한 특정점 G를 타원 스칼라 곱셈부(120)에 입력한다.
그리고, 서명 생성 처리부(112)는 타원 스칼라 곱셈부(120)에 의해 산출된 스칼라 곱셈 점 kG를 소정의 변수 P(스칼라 곱셈 점 P)로 설정한다.
타원 스칼라 곱셈부(120)에 의한 스칼라 곱셈 점 kG의 산출 방법을 '타원 스칼라 곱셈 방법'으로 해서 별도로 설명한다.
S112B 후에, S113B로 진행한다.
S113B에서, 서명 생성 처리부(112)는 잉여값 s를 산출하고, 스칼라 곱셈 점 P의 x 좌표값 Px와 잉여값 s의 조합(Px, s)을 메시지 M의 전자 서명으로서 출력한다.
잉여값 s의 계산식은 's=k-1×(h(M)+Px×d) mod n'으로 나타낼 수 있다.
S113B으로 ECDSA 방식에 의한 전자 서명 생성 처리는 종료된다.
EC-Schnorr 방식(도 2) 및 ECDSA 방식(도 3)의 세부 사항은, 비특허문헌 2에 기재되어 있다.
도 4는 실시예 1에 있어서의 타원 스칼라 곱셈 방법을 나타내는 흐름도이다.
실시예 1에 있어서의 타원 스칼라 곱셈 방법에 대해서, 도 4에 기초해서 설명한다.
타원 스칼라 곱셈부(120)는 전자 서명 생성부(110)로부터 난수 k와 특정점 G를 입력하고, 장치 기억부(190)로부터 정수값 2tG를 입력하며, 아래와 같이 해서 스칼라 곱셈 점 kG를 산출한다.
S121A에서, 초기 설정부(121)는 소정의 변수 R에 특정점 G를 설정한다. 이하, 변수 R을 '스칼라 곱셈 변수 R'이라고 한다.
S121A 후에, S122A로 진행한다.
S122A에서, 스칼라 곱셈부(122)는 난수 k를 나타내는 비트열의 비트수 t를 소정의 변수 i로 설정한다. 이하, 변수 i를 '루프 변수 i'라고 한다.
예컨대, 난수 k의 값을 나타내는 변수(비트열)이 32비트의 변수인 경우에는, 스칼라 곱셈부(122)는 루프 변수 i에 '32'를 설정한다.
이하, 난수 k를 나타내는 비트열의 하위부터 i번째비트의 값(비트값)을 'k[i]'라고 한다.
즉, 난수 k의 최상위 비트의 비트값은 'k[t]'이고, 난수 k의 최하위 비트의 비트값은 'k[1]'이다. 최상위 비트는 가장 왼쪽의 비트로, 2의 t승을 나타내는 비트이다. 최하위 비트는 가장 오른쪽의 비트로, 2의 0승을 나타내는 비트이다.
난수 k의 최상위 비트의 비트값 k[t]는 '0'과 '1' 중 어느 것이어도 상관없다.
S122A 후에 S123A로 진행한다.
S123A에서, 스칼라 곱셈부(122)는 스칼라 곱셈 변수 R을 2배해서 획득한 값'2R'를 소정의 변수 R[0]로 설정한다. 이하, 변수 R[0]을 '제 0 작업 변수 R[0]'라고 한다.
S123A 후에, S124A로 진행한다.
S124A에서, 스칼라 곱셈부(122)는 제 0 작업 변수 R[0]로 설정한 값에 특정점 G를 가산해서 획득한 값을, 소정의 변수 R[1]로 설정한다. 이하, 변수[1]를 '제 1 작업 변수 R[1]'라고 한다.
S124A 후에, S125A로 진행한다.
S125A에서, 스칼라 곱셈부(122)는 루프 변수 i에 기초해서 난수 k의 하위로부터 i번째비트의 비트값 k[i]를 참조한다.
예컨대, 'i=t'이라면 스칼라 곱셈부(122)는 난수 k의 최상위 비트 k[t]를 참조하고, 'i=1'이라면 스칼라 곱셈부(122)는 난수 k의 최하위 비트 k[1]를 참조한다.
비트값 k[i]가 '0'인 경우에는, 스칼라 곱셈부(122)는 제 0 작업 변수 R[0]을 스칼라 곱셈 변수 R로 설정한다.
비트값 k[i]가 '1'인 경우에는, 스칼라 곱셈부(122)는 제 1 작업 변수 R[1]을 스칼라 곱셈 변수 R로 설정한다.
S125A 후에, S126A로 진행한다.
S126A에서, 스칼라 곱셈부(122)는 루프 변수 i에서 '1'을 감산한다.
S126A 후에, S127A로 진행한다.
S127A에서, 스칼라 곱셈부(122)는 루프 변수 i가 '0'인지 여부를 판정한다.
루프 변수 i가 '0'인 경우에는, S128A로 진행한다.
루프 변수 i가 '0'이 아닌 경우에는, S123A로 돌아간다.
단, S127A의 판정은 S126A 이후가 아니라 S123A 이전에 행하며, S126A 이후에 S127A로 돌아가도록 해도 상관없다. 이 경우, S127A에서 루프 변수 i가 '0'이면 S128A로 진행하고, 루프 변수 i가 '0'가 아니면 S123A로 진행한다.
S128A에서, 스칼라 곱셈 점 출력부(123)는 스칼라 곱셈 변수 R에서 정수값 2tG를 감산해서 획득한 스칼라 곱셈 변수 R의 값을, 스칼라 곱셈 점 kG으로서 전자 서명 생성부(110)에 출력한다.
S128A으로 타원 스칼라 곱셈 처리는 종료된다.
상기 타원 스칼라 곱셈 처리(도 4)에서는 스칼라 곱셈 변수 R에 초기값으로서 무한 원점 '0'이 아니라 특정점 G를 설정하고(S121A), 마지막에 스칼라 곱셈 변수 R에서 초기값에 대응하는 정수값 2tG를 감산하고 있다(S128A).
이로써, 난수 k의 값에 관계없이 일정한 계산 시간에 스칼라 곱셈 점 kG를 산출할 수 있다. 예컨대, 난수 k의 최상위 비트가 '1'인 경우에도, 난수 k의 최상위 비트로부터 연속해서 복수 비트가 '0'인 경우에도, 스칼라 곱셈 점 kG의 산출에 요하는 계산 시간은 바뀌지 않는다.
즉, 타원 스칼라 곱셈 처리는 난수 k의 값에 관계없이 일정한 계산 시간에 행해지 때문에, 타원 스칼라 곱셈 처리가 타이밍 해석되는 일은 없다. 타이밍 해석이란, 처리 시간의 시간차를 분석함으로써 처리된 데이터를 특정하는 기술이다. 타이밍 해석에 대해서는 비특허문헌 1에 기재되어 있다.
따라서, 타원 스칼라 곱셈 처리에서 이용하는 난수 k는 타이밍 해석에 의해서 특정할 수 없으므로, 난수 k에 기초해서 전자 서명이 알려져 버리는 일도 없다.
도 5는 실시예 1에 있어서의 타원 스칼라 곱셈 방법의 다른 예를 나타내는 흐름도이다.
타원 스칼라 곱셈부(120)는 도 5에 나타내는 방법에 의해 스칼라 곱셈 점 kG를 산출해도 상관없다.
타원 스칼라 곱셈부(120)는 전자 서명 생성부(110)로부터 난수 k와 특정점 G를 입력하고, 장치 기억부(190)로부터 정수값 2tG를 입력하며, 아래와 같이 해서 스칼라 곱셈 점 kG를 산출한다.
S121B에서, 초기 설정부(121)는 스칼라 곱셈 변수 R에 특정점 G를 설정한다.
S121B 후에, S122B로 진행한다.
S122B에서, 스칼라 곱셈부(122)는 난수 k를 나타내는 비트열의 비트수 t를 루프 변수 i로 설정한다.
S122B 후에, S123B로 진행한다.
S123B에서, 스칼라 곱셈부(122)는 스칼라 곱셈 변수 R을 2배한다.
S123B 후에, S124B로 진행한다.
S124B에서, 스칼라 곱셈부(122)는 루프 변수 i에 기초해서 난수 k의 하위부터 i번째비트의 비트값 k[i]를 참조하여, 참조한 비트값 k[i]가 '0'과 '1' 중 어느 값인지 판정한다.
비트값 k[i]가 '0'인 경우에는, S125B로 진행한다.
비트값 k[i]가 '1'인 경우에는, S126B로 진행한다.
S125B에서, 스칼라 곱셈부(122)는 스칼라 곱셈 변수 R에 특정점 G를 가산한다.
S125B 후에, S126B로 진행한다.
S126B에서, 스칼라 곱셈부(122)는 루프 변수 i에서 '1'을 감산한다.
S126B 후에, S127B로 진행한다.
S127B에서, 스칼라 곱셈부(122)는 루프 변수 i가 '0'인지 여부를 판정한다.
루프 변수 i가 '0'인 경우에는, S128B로 진행한다.
루프 변수 i가 '0'가 아닌 경우에는, S123B로 돌아간다.
단, S127B의 판정은 S126B 이후가 아니라 S123B 이전에 행하며, S126B 이후에 S127B로 돌아가도 상관없다. 이 경우, S127B에서 루프 변수 i가 '0'이면 S128B로 진행하고, 루프 변수 i가 '0'이 아니면 S123B로 진행한다.
S128B에서, 스칼라 곱셈 점 출력부(123)는 스칼라 곱셈 변수 R에서 정수값 2tG를 감산해서 획득한 스칼라 곱셈 변수 R의 값을, 스칼라 곱셈 점 kG으로서 전자 서명 생성부(110)에 출력한다.
S128B으로 타원 스칼라 곱셈 처리는 종료된다.
상기 타원 스칼라 곱셈 처리(도 5)에 있어서, S123B에서는 스칼라 곱셈 변수 R의 2배 곱셈(2R)을 행하고 있지만, 무한 원점 '0'의 2배 곱셈과 무한 원점 '0' 이외의 값의 2배 곱셈에서는 계산 시간에 차이가 생겨 버린다.
그러나, S121B에서 스칼라 곱셈 변수 R에 무한 원점 '0'이 아니라 특정점 G를 초기 설정하고 있기 때문에, 난수 k의 최상위 비트로부터 연속해서 복수 비트가 '0'인 경우에도 S123B에서 무한 원점 '0'를 2배 곱셈하는 일은 없다. 즉, 난수 k의 값에 의해서 S123B의 계산 시간에 차이가 생기지 않는다.
따라서, 난수 k의 값에 의해서 S123B의 계산 시간에 차이가 생기지 않는 만큼, 타원 스칼라 곱셈 처리의 타이밍 해석을 어렵게 할 수 있다.
도 6은 실시예 1에 있어서의 타원 곡선 암호 장치(100)의 하드웨어 자원의 일례를 나타내는 도면이다.
도 6에 있어서, 타원 곡선 암호 장치(100)는 CPU(901)(Central Processing Unit)를 구비하고 있다. CPU(901)는 버스(902)를 통해서 ROM(903)과 RAM(904)에 접속되어, 이들 하드웨어 디바이스를 제어한다.
ROM(903) 또는 RAM(904)에는 OS(오퍼레이팅 시스템), 프로그램군, 파일군이 기억되어 있다.
프로그램군에는, 실시예에서 '~부'로서 설명하는 기능을 실행하는 프로그램이 포함된다. 프로그램은, CPU(901)에 의해 판독되어 실행된다. 즉, 프로그램은, '~부'로서 컴퓨터를 기능시키는 것이고, 또한 '~부'의 순서나 방법을 컴퓨터에 실행시키는 것이다.
파일군에는 실시예에 있어서 설명하는 '~부'에서 사용되는 각종 데이터(입력, 출력, 판정 결과, 계산 결과, 처리 결과 등)이 포함된다.
실시예에 있어서 구성도 및 흐름도에 포함되어 있는 화살표는 주로 데이터나 신호의 입출력을 나타낸다.
실시예에 있어서 '~부'로서 설명하는 것은 '~회로', '~장치', '~기기'이어도 되고, 또한 '~스텝', '~순서', '~처리'이어도 된다. 즉, '~부'로서 설명하는 것은, 펌웨어, 소프트웨어, 하드웨어 또는 이들의 조합 중 어느 것으로 실장되어도 상관없다.
예컨대, 타원 곡선 암호 장치(100)는 IC 칩으로서 구성되어, 전자 결제 기능을 가진 휴대 단말 또는 IC 카드에 탑재된다. IC 칩에는 미리 개인 정보가 기억되어 있다.
휴대 단말 또는 IC 카드가 전자 결제 기능을 사용할 때, 타원 곡선 암호 장치(100)는 개인 정보의 전자 서명을 생성한다. 그리고, 휴대 단말 또는 IC 카드의 무선 통신 기능은 개인 정보와 전자 서명을 소정의 전자 결제 장치에 송신한다. 전자 결제 장치는 전자 서명을 검증하고, 개인 정보에 기초해서 전자 결제를 행한다.
또한, 타원 곡선 암호 장치(100)를 퍼스널 컴퓨터나 서버 장치 등의 계산기에 의해 구성하는 경우에는, 타원 곡선 암호 장치(100)는 ROM(903)이나 RAM(904) 이외에, 통신 보드, 디스플레이 장치, 키보드, 마우스, 드라이브 장치, 자기 디스크 장치 등의 하드웨어를 구비한다. CPU(901)는 이들 하드웨어도 제어한다.
실시예 1에 있어서 타원 곡선 암호 장치(100)는 전자 서명을 생성하는 암호 장치가 아니어도 되고, 타원 스칼라 곱셈 처리(도 4, 5)는 전자 서명을 생성하는 처리 이외의 연산 처리에서 실행해도 된다.
즉, 실시예 1에 있어서의 타원 스칼라 곱셈 처리(도 4, 5)는 타원 스칼라 곱셈 점 kG(k는 난수가 아니어도 된다)을 사용하는 어떠한 연산 처리에 이용해도 상관없다.
도 4 또는 도 5에 나타낸 타원 스칼라 곱셈 처리는 바이너리법이라고 불려지는 멱승 잉여 연산법이지만, 타원 스칼라 곱셈 처리로서 그 외의 멱승 잉여 연산법(예컨대, Comb법)을 이용해도 상관없다. Comb법을 이용하는 경우에는 도 4나 도 5에 있어서 k[i]는 1비트가 아닌 복수 비트를 동시에 참조함으로써 루프 횟수를 t보다 작게 할 수 있다.
그 외의 멱승 잉여 연산법을 이용하는 경우에도, 스칼라 곱셈 변수 R에 초기값으로서 특정점 G를 설정하고(도 4의 S121A 참조), 마지막에 스칼라 곱셈 변수 R로부터 정수값 2tG를 감산하면 된다. 이로써, 난수 k의 값에 관계없이 일정한 계산 시간에 스칼라 곱셈 점 kG를 산출할 수 있다.
(실시예 2)
다배장 정수의 잉여 연산을 일정한 계산 시간에 행하는 형태에 대해서 설명한다.
다배장 정수의 잉여 연산이란, 다배장 정수를 특정값으로 나누어서 나머지를 산출하는 처리이다.
이하, 실시예 1과 다른 사항에 대해서 주로 설명한다. 설명을 생략하는 사항에 대해서는 실시예 1과 마찬가지이다.
도 7은 실시예 2에 있어서의 타원 곡선 암호 장치(100)의 구성도이다.
실시예 2에 있어서의 타원 곡선 암호 장치(100)의 구성에 대해서, 도 7에 기초해서 설명한다.
타원 곡선 암호 장치(100)는 실시예 1에서 설명한 구성에 더해서, 다배장 잉여 연산부(130)를 구비한다.
다배장 잉여 연산부(130)는 특정한 다배장 정수 A를 2로 나눈 값을, 특정한 소수 p로 나누어서 획득한 나머지를 잉여값 r로서 산출한다.
다배장 잉여 연산부(130)는 다배장 정수 판정부(131)와 잉여 연산 변수 설정부(132)와, 시프트 연산부(133)를 구비한다.
다배장 정수 판정부(131)는 다배장 정수 a가 짝수이면 소정의 템포러리 변수 temp에 0을 설정하고, 다배장 정수 a가 홀수이면 템포러리 변수 temp에 소수 p를 설정한다.
잉여 연산 변수 설정부(132)는 다배장 정수 a에 템포러리 변수 temp를 가산하여, 가산해서 획득한 값을 소정의 잉여 연산 변수 c로 설정한다.
시프트 연산부(133)는 잉여 연산 변수 c를 1비트 오른쪽으로 시프트하고, 시프트해서 획득한 값을 잉여값 r로서 출력한다.
타원 스칼라 곱셈부(120)의 초기 설정부(121)는 특정점의 좌표값 G를 나타내는 다배장 정수를 스칼라 곱셈 변수 R로 설정한다(도 4의 S121A).
스칼라 곱셈부(122)는 스칼라 곱셈 변수 R을 2배 곱셈해서 획득한 좌표값 '2R'을 다배장 잉여 연산부(130)를 이용해서 산출한다(도 4의 S123A).
스칼라 곱셈부(122)는 제 0 작업 변수 R[0]에 특정점의 좌표값 G를 가산해서 획득한 좌표값 'R[0]+G'를 다배장 잉여 연산부(130)를 이용해서 산출한다(도 4의 S124A).
스칼라 곱셈 점 출력부(123)는 스칼라 곱셈 변수 R에서 좌표값 2tG를 감산해서 획득한 좌표값 'R-2tG'를 다배장 잉여 연산부(130)를 이용해서 산출한다(도 4의 S128A).
이하, 특정점의 좌표값 G를 '특정점 G'라고 하고, 좌표값 2tG를 '정수값 2tG'라고 한다.
도 8은, 실시예 2에 있어서의 다배장 잉여 연산 방법을 나타내는 흐름도이다.
실시예 2에 있어서의 다배장 잉여 연산 방법에 대해서, 도 8에 기초해서 설명한다.
전자 서명의 생성이나 검증 등의 암호 처리 또는 그 외의 암호 처리에서는 암호의 해독을 어렵게 하기 위해서 다배장 정수가 사용되고, 다배장 정수를 사용한 연산 처리가 행해진다.
다배장 정수란, 레지스터의 데이터 크기에 상당하는 소정의 비트수로 나타낼 수 있는 최대의 정수값보다 큰 정수값이다. 예컨대, 32비트 머신에서는 32비트로 나타낼 수 있는 최대의 정수값(2의 32승-1)보다 큰 정수값이 다배장 정수이다.
이하, 다배장 정수를 사용한 연산 처리를 '다배장 연산 처리'라고 한다.
통상, 다배장 연산 처리에서는 다배장 잉여 연산이 행해진다.
다배장 잉여 연산이란, 다배장 정수(후술하는 a)를 특정값(후술하는 p)으로 나누어서 나머지(후술하는 r)를 구하는 처리다.
실시예 1에서 설명한 타원 곡선 상의 특정점 G의 좌표값은 다배장 정수의 일례이다.
예컨대, 타원 스칼라 곱셈부(120)는 S123A, S124A 및 S128A(도 4 참조)에 있어서 다배장 잉여 연산부(130)를 호출하고, 다배장 잉여 연산부(130)는 도 8에 나타내는 다배장 잉여 연산을 실행한다.
이하, 계산 대상의 다배장 정수를 'a'라고 하고, 'a/2'를 나누는 값을 'p'라고 하며, 'a/2'를 'p'로 나누어서 획득한 나머지를 '잉여값 r'이라고 한다. 'a/2'는 다배장 정수 a를 2로 나눈 값이다. 'p'는 소수이다. 잉여값 r는 0 이상 p 미만의 정수값이다.
S131에서, 다배장 정수 판정부(131)는 다배장 정수 a가 짝수와 홀수 중 어느 값인지 판정한다.
다배장 정수 a가 짝수인 경우에는, S132로 진행한다.
다배장 정수 a가 홀수인 경우에는, S133로 진행한다.
S132에 있어서, 다배장 정수 판정부(131)는 소정의 변수 temp에 '0'를 설정한다. 이하, 변수 temp를 '템포러리 변수 temp'라고 한다.
S132 후에, S134로 진행한다.
S133에 있어서, 다배장 정수 판정부(131)는 템포러리 변수 temp에 소수 p를 설정한다.
S133 후에, S134로 진행한다.
S134에 있어서, 잉여 연산 변수 설정부(132)는 다배장 정수 a에 템포러리 변수 temp의 값을 가산해서 획득한 값을, 소정의 변수 c로 설정한다. 이하, 변수 c를 '잉여 연산 변수 c'라고 한다.
S134 후에, S135로 진행한다.
S135에 있어서, 시프트 연산부(133)는 잉여 연산 변수 c를 나타내는 비트열을 1비트 오른쪽으로 시프트해서 획득한 값을, 잉여값 r로서 출력한다.
잉여값 r은 'a/2'을 'p'로 나누어서 획득한 나머지이고, 'r=a/2 mod p'라는 수식으로 나타낼 수 있다.
S135로, 다배장 잉여 연산 처리는 종료된다.
상기 다배장 잉여 연산 처리(도 8)에서는 다배장 정수 a가 짝수와 홀수 중 어느 값이어도 처리 스텝수는 바뀌지 않는다.
이 때문에, 다배장 잉여 연산 처리에 있어서, 다배장 정수 a가 짝수인 경우와 다배장 정수 a가 홀수인 경우에서 계산 시간의 시간차는 발생하지 않는다. 즉, 다배장 잉여 연산 처리는 다배장 정수 a의 값에 관계없이 일정한 계산 시간에 행해지기 때문에, 다배장 잉여 연산 처리가 타이밍 해석되는 일은 없다.
따라서, 다배장 정수 a는 타이밍 해석에 의해서 특정할 수 없고, 다배장 정수 a에 기초해서 난수 k나 전자 서명 등의 비밀 정보가 알려져 버리는 일도 없다.
실시예 2에 있어서 타원 곡선 암호 장치(100)는 전자 서명을 생성하는 암호 장치가 아니어도 되고, 다배장 잉여 연산 처리(도 8)는 전자 서명을 생성하는 처리 이외의 처리에 포함되는 다배장 연산 처리로서 실행해도 된다.
즉, 실시예 2에 있어서의 다배장 잉여 연산 처리(도 8)는 전자 서명을 검증하는 처리, 전자 서명과 관계없는 암호 처리, 타원 곡선 암호 이외의 암호 처리 또는 암호 처리 이외의 연산 처리 등, 다배장 정수를 사용하는 어떠한 연산 처리에 이용해도 상관없다.
(실시예 3)
다배장 정수의 제로 판정을 일정한 계산 시간에 행하는 형태에 대하여 설명한다.
다배장 정수의 제로 판정이란, 다배장 정수의 값이 제로와 제로가 아님 중 어느 값인지를 판정하는 처리이다.
이하, 실시예 1, 2와 다른 사항에 대해서 주로 설명한다. 설명을 생략하는 사항에 대해서는 실시예 1, 2와 마찬가지이다.
도 9는 실시예 3에 있어서의 타원 곡선 암호 장치(100)의 구성도이다.
실시예 3에 있어서의 타원 곡선 암호 장치(100)의 구성에 대해서, 도 9에 기초해서 설명한다.
타원 곡선 암호 장치(100)는 실시예 2에서 설명한 구성에 더해서, 다배장 제로 판정부(140)를 구비한다.
다배장 제로 판정부(140)는 복수의 정수값을 연결하여 나타내어지는 특정한 다배장 정수 b가 제로인지 여부를 판정한다.
다배장 제로 판정부(140)는 논리합 연산부(141)와 제로 판정부(142)를 구비한다.
논리합 연산부(141)는 다배장 정수 b를 나타내는 복수의 정수값(워드)의 논리합을 산출한다.
제로 판정부(142)는 논리합 연산부(141)에 의해 산출된 논리합에 기초해서 다배장 정수 b가 제로인지 여부를 판정한다.
타원 스칼라 곱셈부(120)의 초기 설정부(121)는 특정점의 좌표값 G를 나타내는 다배장 정수를 스칼라 곱셈 변수 R로 설정한다(도 4의 S121A).
스칼라 곱셈부(122)는 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값 '2R'를 다배장 제로 판정부(140)를 이용해서 산출한다(도 4의 S123A).
스칼라 곱셈부(122)는 제 0 작업 변수 R[0]에 특정점의 좌표값 G를 가산하여 획득한 좌표값 'R[0]+G'를 다배장 제로 판정부(140)를 이용해서 산출한다(도 4의 S124A).
스칼라 곱셈 점 출력부(123)는 스칼라 곱셈 변수 R에서 좌표값 2tG를 감산하여 획득한 좌표값 'R-2tG'를 다배장 제로 판정부(140)를 이용해서 산출한다(도 4의 S128A).
이하, 특정점의 좌표값 G를 '특정점 G'라고 하고, 좌표값 2tG를 '정수값 2tG'라고 한다.
도 10는 실시예 3에 있어서의 다배장 제로 판정 방법을 나타내는 흐름도이다.
실시예 3에 있어서의 다배장 제로 판정 방법에 대해서, 도 10에 기초해서 설명한다.
통상, 다배장 연산 처리에서는 다배장 제로 판정 처리가 행해진다.
다배장 제로 판정 처리란, 다배장 정수 b의 값이 제로와 제로가 아님 중 어느 값인지를 판정하는 처리다.
실시예 1에서 설명한 타원 곡선 상의 특정점 G의 좌표값은 다배장 정수의 일례이다.
예컨대, 타원 스칼라 곱셈부(120)는 S123A, S124A 및 S128A(도 4참조)에서 다배장 제로 판정부(140)를 호출하고, 다배장 제로 판정부(140)는 도 10에 나타내는 다배장 제로 판정 처리를 실행한다.
S141에 있어서, 논리합 연산부(141)는 다배장 정수 b를 소정의 자리수(또는 비트수)마다 분할한다. 예컨대, 논리합 연산부(141)는 100 자리수의 다배장 정수 b를 10자리수씩의 10개의 정수값으로 분할한다. 또한 예컨대, 논리합 연산부(141)는 96비트의 다배장 정수 b를 32비트씩의 3개의 비트열로 분할한다.
이하, 다배장 정수 b를 분할해서 획득한 복수의 정수값 또는 다배장 정수 b를 분할해서 획득한 복수의 비트열로 표시되는 복수의 정수값을 '워드'라고 한다.
또한, 다배장 정수 b의 워드수(분할수)를 'w'라고 하고, 하위로부터 i번째의 워드를 b[i]라고 한다. 즉, 최상위의 워드(선두 워드)를 b[w]라고 하고, 최하위의 워드(최종 워드)를 b[1]라고 한다.
S141 후에, S142로 진행한다.
S142에서, 논리합 연산부(141)는 S141에서 획득한 다배장 정수 b의 복수 워드의 논리합을 산출하고, 산출한 논리합을 소정의 변수 OR로 설정한다. 이하, 변수 OR을 '논리합 OR'이라고 한다. 실시예에 있어서, 'A|B'는 A와 B의 논리합을 의미한다.
따라서, 다배장 정수 b를 구성하는 복수 워드모든 값이 '0'인 경우에는, 논리합 OR의 값은 '0'이 되고, 다배장 정수 b를 구성하는 복수 워드 중 적어도 어느 한 값이 '0'이 아닌 경우에는, 논리합 OR의 값은 '1'이 된다.
S142 후에, S143로 진행한다.
S143에서, 제로 판정부(142)는 S142에서 설정된 논리합 OR의 값이 '0'과 '1' 중 어느 값인지를 판정한다.
그리고, 논리합 OR의 값이 '0'인 경우에는, 제로 판정부(142)는 다배장 정수 b의 값이 제로라고 판정하고, 판정 결과를 출력한다.
또한, 논리합 OR의 값이 '0'이 아닌 경우에는, 제로 판정부(142)는 다배장 정수 b의 값이 제로 이외의 값(제로가 아님)이라고 판정하고, 판정 결과를 출력한다.
S143로 다배장 제로 판정 처리는 종료된다.
상기 다배장 제로 판정 처리(도 10)에서는 다배장 정수 b가 어떤 값이어도 처리 스텝수는 바뀌지 않는다.
이 때문에, 다배장 제로 판정 처리에 있어서, 다배장 정수 b의 값에 따라 계산 시간의 시간차는 발생하지 않는다. 즉, 다배장 제로 판정 처리는 다배장 정수 b의 값에 관계없이 일정한 계산 시간에 행해져서, 다배장 제로 판정 처리가 타이밍 해석되는 일은 없다.
따라서, 다배장 정수 b는 타이밍 해석에 의해서 특정할 수 없고, 다배장 정수 b에 기초해서 난수 k나 전자 서명 등의 비밀 정보가 알려져 버리는 일도 없다.
실시예 3에 있어서 타원 곡선 암호 장치(100)는 전자 서명을 생성하는 암호 장치가 아니어도 되고, 다배장 제로 판정 처리(도 10)는 전자 서명을 생성하는 처리 이외의 처리에 포함되는 다배장 연산 처리로서 실행해도 된다.
즉, 실시예 3에 있어서의 다배장 제로 판정 처리(도 10)는 전자 서명을 검증하는 처리, 전자 서명과 관계없는 암호 처리, 타원 곡선 암호 이외의 암호 처리 또는 암호 처리 이외의 연산 처리 등, 다배장 정수를 사용하는 어떠한 연산 처리에 이용해도 상관없다.
100 : 타원 곡선 암호 장치 110 : 전자 서명 생성부
111 : 난수 생성부 112 : 서명 생성 처리부
120 : 타원 스칼라 곱셈부 121 : 초기 설정부
122 : 스칼라 곱셈부 123 : 스칼라 곱셈 점 출력부
130 : 다배장 잉여 연산부 131 : 다배장 정수 판정부
132 : 잉여 연산 변수 설정부 133 : 시프트 연산부
140 : 다배장 제로 판정부 141 : 논리합 연산부
142 : 제로 판정부 190 : 장치 기억부
901 : CPU 902 : 버스
903 : ROM 904 : RAM

Claims (12)

  1. 특정한 타원 곡선에 포함되는 특정점의 좌표값 G를, t비트의 비트열로 표시되는 특정한 승수(乘數)값 k로 스칼라 곱셈(scalar multiplication)하여 획득한 좌표값 kG를 산출하는 연산 장치에 있어서,
    상기 특정점의 좌표값 G를 2의 t승으로 스칼라 곱하여 획득한 좌표값 2tG를 미리 기억하는 정수 기억부와,
    소정의 스칼라 곱셈 변수 R에 상기 특정점의 좌표값 G를 설정하는 초기 설정부와,
    상기 승수값 k를 나타내는 t비트의 비트열을 상위부터 소정수의 비트씩 참조하고, 상기 비트열을 소정수의 비트씩 참조할 때마다 상기 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값을 소정의 제 0 작업 변수 R[0]로 설정하며, 상기 제 0 작업 변수 R[0]로 설정한 값에 상기 특정점의 좌표값 G를 소정수 곱한 좌표값을 가산하여 획득한 좌표값을 소정의 제 1 작업 변수 R[1]로 설정하되, 참조한 소정수의 비트의 값이 제로라면 상기 스칼라 곱셈 변수 R에 상기 제 0 작업 변수 R[0]을 설정하고, 참조한 소정수의 비트의 값이 제로가 아니라면 상기 스칼라 곱셈 변수 R에 상기 제 1 작업 변수 R[1]을 설정하는 스칼라 곱셈부와,
    상기 스칼라 곱셈부에 의해 설정된 스칼라 곱셈 변수 R로부터 상기 정수 기억부에 기억된 좌표값 2tG를 감산하고, 감산해서 획득한 좌표값을 상기 좌표값 kG로서 출력하는 스칼라 곱셈 점 출력부(a scalar multiple point output unit)
    를 구비한 것을 특징으로 하는 연산 장치.
  2. 제 1 항에 있어서,
    상기 연산 장치는,
    특정한 다배장(multiple-precision) 정수 a를 2로 나눈 값을, 특정한 소수 p로 나누어서 획득한 나머지를 잉여값 r로서 산출하는 다배장 잉여 연산부로서, 상기 다배장 정수 a가 짝수이면 소정의 템포러리 변수 temp에 0을 설정하고, 상기 다배장 정수 a가 홀수이면 상기 템포러리 변수 temp에 상기 소수 p를 설정하며, 상기 다배장 정수 a에 상기 템포러리 변수 temp를 가산하여 획득한 값을 소정의 잉여 연산 변수 c로 설정하고, 설정한 잉여 연산 변수 c를 1비트 오른쪽으로 시프트하여 획득한 값을 상기 잉여값 r로서 출력하는 다배장 잉여 연산부
    를 더 구비하고,
    상기 초기 설정부는 상기 특정점의 좌표값 G를 나타내는 다배장 정수를 상기 스칼라 곱셈 변수 R로 설정하며,
    상기 스칼라 곱셈부는 상기 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값과, 상기 제 0 작업 변수 R[0]에 상기 특정점의 좌표값 G를 가산하여 획득한 좌표값을 상기 다배장 잉여 연산부를 이용해서 산출하고,
    상기 스칼라 곱셈 점 출력부는 상기 스칼라 곱셈 변수 R로부터 상기 좌표값 2tG를 감산하여 획득한 좌표값을 상기 다배장 잉여 연산부를 이용해서 산출하는
    것을 특징으로 하는 연산 장치.
  3. 제 2 항에 있어서,
    상기 연산 장치는,
    복수의 정수값을 연결하여 나타내어지는 특정한 다배장 정수 b가 제로인지 여부를 판정하는 다배장 제로 판정부로서, 상기 다배장 정수 b를 나타내는 복수의 정수값의 논리합을 산출하고, 산출한 논리합에 기초해서 상기 다배장 정수 b가 제로인지 여부를 판정하는 다배장 제로 판정부
    를 더 구비하고,
    상기 스칼라 곱셈부는 상기 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값과, 상기 제 0 작업 변수 R[0]에 상기 특정점의 좌표값 G를 가산하여 획득한 좌표값을, 상기 다배장 잉여 연산부와 상기 다배장 제로 판정부를 이용해서 산출하며,
    상기 스칼라 곱셈 점 출력부는 상기 스칼라 곱셈 변수 R로부터 상기 좌표값 2tG를 감산하여 획득한 좌표값을 상기 다배장 잉여 연산부와 상기 다배장 제로 판정부를 이용해서 산출하는
    것을 특징으로 하는 연산 장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 연산 장치는,
    상기 승수값 k로서 이용하는 난수값을 생성하고, 상기 스칼라 곱셈 점 출력부로부터 출력된 좌표값 kG를 이용해서 전자 서명을 생성하는 전자 서명 생성부
    를 더 구비한
    것을 특징으로 하는 연산 장치.
  5. 특정한 타원 곡선에 포함되는 특정점의 좌표값 G를, t비트의 비트열로 표시되는 특정한 승수값 k로 스칼라 곱셈하여 획득한 좌표값 kG를 산출하는 연산 장치의 타원 스칼라 곱셈 방법에 있어서,
    초기 설정부가, 소정의 스칼라 곱셈 변수 R에 상기 특정점의 좌표값 G를 설정하고,
    스칼라 곱셈부가, 상기 승수값 k를 나타내는 t비트의 비트열을 상위부터 소정수의 비트씩 참조하여, 상기 비트열을 소정수의 비트씩 참조할 때마다 상기 스칼라 곱셈 변수 R을 2배 곱셈해서 획득한 좌표값을 소정의 제 0 작업 변수 R[0]로 설정하며, 상기 제 0 작업 변수 R[0]로 설정한 값에 상기 특정점의 좌표값 G를 소정수 곱한 좌표값을 가산해서 획득한 좌표값을 소정의 제 1 작업 변수 R[1]로 설정하되, 참조한 소정수의 비트의 값이 제로라면 상기 스칼라 곱셈 변수 R에 상기 제 0 작업 변수 R[0]을 설정하고, 참조한 소정수의 비트의 값이 제로가 아니라면 상기 스칼라 곱셈 변수 R에 상기 제 1 작업 변수 R[1]을 설정하며,
    스칼라 곱셈 점 출력부가, 상기 스칼라 곱셈부에 의해 설정된 스칼라 곱셈 변수 R로부터, 상기 특정점의 좌표값 G를 2의 t승으로 스칼라 곱해서 획득한 정수값 2tG를 감산하고, 감산해서 획득한 좌표값을 상기 좌표값 kG로서 출력하는
    것을 특징으로 하는 연산 장치의 타원 스칼라 곱셈 방법.
  6. 특정한 타원 곡선에 포함되는 특정점의 좌표값 G를, t비트의 비트열로 표시되는 특정한 승수값 k로 스칼라 곱셈해서 획득한 좌표값 kG를 산출하기 위한 타원 스칼라 곱셈 프로그램으로서,
    소정의 스칼라 곱셈 변수 R에 상기 특정점의 좌표값 G를 설정하는 초기 설정 처리와,
    상기 승수값 k를 나타내는 t비트의 비트열을 상위부터 소정수의 비트씩 참조하고, 상기 비트열을 소정수의 비트씩 참조할 때마다 상기 스칼라 곱셈 변수 R을 2배 곱셈하여 획득한 좌표값을 소정의 제 0 작업 변수 R[0]로 설정하며, 상기 제 0 작업 변수 R[0]로 설정한 값에 상기 특정점의 좌표값 G를 소정수 곱한 좌표값을 가산해서 획득한 좌표값을 소정의 제 1 작업 변수 R[1]로 설정하되, 참조한 소정수의 비트의 값이 제로라면 상기 스칼라 곱셈 변수 R에 상기 제 0 작업 변수 R[0]을 설정하며, 참조한 소정수의 비트의 값이 제로가 아니라면 상기 스칼라 곱셈 변수 R에 상기 제 1 작업 변수 R[1]을 설정하는 스칼라 곱셈 처리와,
    상기 스칼라 곱셈 처리에 의해 설정된 스칼라 곱셈 변수 R로부터 상기 특정점의 좌표값 G를 2의 t승으로 스칼라 곱해서 획득한 정수값 2tG를 감산하며, 감산해서 획득한 좌표값을 상기 좌표값 kG로서 출력하는 스칼라 곱셈 점 출력 처리를 컴퓨터에 실행시키는
    것을 특징으로 하는 타원 스칼라 곱셈 프로그램.
  7. 특정한 다배장 정수 a를 2로 나눈 값을, 특정한 소수 p로 나누어서 획득한 나머지를 잉여값 r로서 산출하는 연산 장치에 있어서,
    상기 다배장 정수 a가 짝수이면 소정의 템포러리 변수 temp에 0을 설정하고, 상기 다배장 정수 a가 홀수이면 상기 템포러리 변수 temp에 상기 소수 p를 설정하는 다배장 정수 판정부와,
    상기 다배장 정수 a에 상기 템포러리 변수 temp를 가산하고, 가산해서 획득한 값을 소정의 잉여 연산 변수 c로 설정하는 잉여 연산 변수 설정부와,
    상기 잉여 연산 변수 c를 1비트 오른쪽으로 시프트하고, 시프트해서 획득한 값을 상기 잉여값 r로서 출력하는 시프트 연산부
    를 구비한 것을 특징으로 하는 연산 장치.
  8. 특정한 다배장 정수 a를 2로 나눈 값을, 특정한 소수 p로 나누어서 획득한 나머지를 잉여값 r로서 산출하는 연산 장치의 잉여 연산 방법에 있어서,
    다배장 정수 판정부가, 상기 다배장 정수 a가 짝수이면 소정의 템포러리 변수 temp에 0을 설정하고, 상기 다배장 정수 a가 홀수이면 상기 템포러리 변수 temp에 상기 소수 p를 설정하며,
    잉여 연산 변수 설정부가, 상기 다배장 정수 a에 상기 템포러리 변수 temp를 가산하고, 가산해서 획득한 값을 소정의 잉여 연산 변수 c로 설정하며,
    시프트 연산부가, 상기 잉여 연산 변수 c를 1비트 오른쪽으로 시프트하고, 시프트해서 획득한 값을 상기 잉여값 r로서 출력하는
    것을 특징으로 하는 연산 장치의 잉여 연산 방법.
  9. 특정한 다배장 정수 a를 2로 나눈 값을 특정한 소수 p로 나누어서 획득한 나머지를 잉여값 r로서 산출하는 잉여 연산 프로그램에 있어서,
    상기 다배장 정수 a가 짝수이면 소정의 템포러리 변수 temp에 0을 설정하고, 상기 다배장 정수 a가 홀수이면 상기 템포러리 변수 temp에 상기 소수 p를 설정하는 다배장 정수 판정 처리와,
    상기 다배장 정수 a에 상기 템포러리 변수 temp를 가산하고, 가산해서 획득한 값을 소정의 잉여 연산 변수 c로 설정하는 잉여 연산 변수 설정 처리와,
    상기 잉여 연산 변수 c를 1비트 오른쪽으로 시프트하고, 시프트해서 획득한 값을 상기 잉여값 r로서 출력하는 시프트 연산 처리를 컴퓨터에 실행시키는
    것을 특징으로 하는 잉여 연산 프로그램.
  10. 복수의 정수값을 연결해서 나타내어지는 특정한 다배장 정수 b가 제로인지 여부를 판정하는 연산 장치에 있어서,
    상기 다배장 정수 b를 나타내는 복수의 정수값의 논리합을 산출하는 논리합 연산부와,
    상기 논리합 연산부에 의해 산출된 논리합에 기초해서 상기 다배장 정수 b가 제로인지 여부를 판정하는 제로 판정부
    를 구비한 것을 특징으로 하는 연산 장치.
  11. 복수의 정수값을 연결해서 나타내어지는 특정한 다배장 정수 b가 제로인지 여부를 판정하는 연산 장치의 제로 판정 방법에 있어서,
    논리합 연산부가, 상기 다배장 정수 b를 나타내는 복수의 정수값의 논리합을 산출하고,
    제로 판정부가, 상기 논리합 연산부에 의해 산출된 논리합에 기초해서 상기 다배장 정수 b가 제로인지 여부를 판정하는
    것을 특징으로 하는 연산 장치의 제로 판정 방법.
  12. 복수의 정수값을 연결해서 나타내어지는 특정한 다배장 정수 b가 제로인지 여부를 판정하는 제로 판정 프로그램에 있어서,
    상기 다배장 정수 b를 나타내는 복수의 정수값의 논리합을 산출하는 논리합 연산 처리와,
    상기 논리합 연산 처리에 의해 산출된 논리합에 기초해서 상기 다배장 정수 b가 제로인지 여부를 판정하는 제로 판정 처리를 컴퓨터에 실행시키는
    것을 특징으로 하는 제로 판정 프로그램.
KR1020137013286A 2010-12-27 2010-12-27 연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체, 연산 장치의 잉여 연산 방법 및 잉여 연산 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체 KR101439804B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/073620 WO2012090284A1 (ja) 2010-12-27 2010-12-27 演算装置、演算装置の楕円スカラー倍算方法、楕円スカラー倍算プログラム、演算装置の剰余演算方法、剰余演算プログラム、演算装置のゼロ判定方法およびゼロ判定プログラム

Publications (2)

Publication Number Publication Date
KR20130089653A true KR20130089653A (ko) 2013-08-12
KR101439804B1 KR101439804B1 (ko) 2014-09-11

Family

ID=46382434

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137013286A KR101439804B1 (ko) 2010-12-27 2010-12-27 연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체, 연산 장치의 잉여 연산 방법 및 잉여 연산 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체

Country Status (6)

Country Link
US (1) US9176707B2 (ko)
EP (1) EP2660796B1 (ko)
JP (1) JP5449576B2 (ko)
KR (1) KR101439804B1 (ko)
CN (1) CN103282950B (ko)
WO (1) WO2012090284A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2791856A4 (en) * 2011-12-15 2015-08-19 Intel Corp METHOD, DEVICE AND SYSTEM FOR SECURELY SHARING MULTIMEDIA CONTENT FROM SOURCE DEVICE
US9391773B2 (en) * 2014-04-04 2016-07-12 Qualcomm Incorporated Elliptic curve point multiplication procedure resistant to side-channel information leakage
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
CN106301770A (zh) * 2016-08-22 2017-01-04 大唐微电子技术有限公司 一种Java卡SM2数字签名验证或信息加密的方法及装置
EP3376705A1 (en) * 2017-03-17 2018-09-19 Koninklijke Philips N.V. Elliptic curve point multiplication device and method in a white-box context
US20220060318A1 (en) * 2018-10-10 2022-02-24 Nippon Telegraph And Telephone Corporation Secure right shift computation system, secure division system, methods therefor, secure computation apparatus, and program
JP6690686B2 (ja) * 2018-11-07 2020-04-28 日本電気株式会社 口座開設システム、口座開設方法、及びプログラム
CN111756538B (zh) * 2020-06-28 2023-10-13 哈尔滨理工大学 一种基于素数预处理的ecc标量乘法器的实现方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3210356B2 (ja) 1991-03-12 2001-09-17 富士通株式会社 データのゼロ判定装置
DE69834431T3 (de) * 1998-01-02 2009-09-10 Cryptography Research Inc., San Francisco Leckresistentes kryptographisches verfahren und vorrichtung
CA2252078C (en) 1998-10-28 2009-02-17 Certicom Corp. Power signature attack resistant cryptographic system
US6963644B1 (en) 1999-04-07 2005-11-08 Matsushita Electric Industrial Co., Ltd. Multi-word arithmetic device for faster computation of cryptosystem calculations
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置
JP2003098962A (ja) 2001-09-20 2003-04-04 Hitachi Ltd 楕円曲線スカラー倍計算方法及び装置並びに記録媒体
US7308096B2 (en) * 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
JP2004198566A (ja) 2002-12-17 2004-07-15 Oki Electric Ind Co Ltd 演算処理装置
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
CN101031944A (zh) * 2004-09-30 2007-09-05 索尼株式会社 加密计算方法、加密系统和计算机程序
US7607019B2 (en) * 2005-02-03 2009-10-20 Apple Inc. Small memory footprint fast elliptic encryption
WO2006077651A1 (ja) 2005-01-24 2006-07-27 Fujitsu Limited 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
US7602907B2 (en) * 2005-07-01 2009-10-13 Microsoft Corporation Elliptic curve point multiplication
JP2010164904A (ja) * 2009-01-19 2010-07-29 Fujitsu Ltd 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法
US8542820B2 (en) * 2009-02-05 2013-09-24 Infineon Technologies Ag Apparatus for calculating a result of a scalar multiplication

Also Published As

Publication number Publication date
CN103282950B (zh) 2015-11-25
JP5449576B2 (ja) 2014-03-19
WO2012090284A1 (ja) 2012-07-05
EP2660796A4 (en) 2017-05-03
EP2660796B1 (en) 2018-10-31
EP2660796A1 (en) 2013-11-06
US20130218937A1 (en) 2013-08-22
CN103282950A (zh) 2013-09-04
KR101439804B1 (ko) 2014-09-11
JPWO2012090284A1 (ja) 2014-06-05
US9176707B2 (en) 2015-11-03

Similar Documents

Publication Publication Date Title
KR101439804B1 (ko) 연산 장치, 연산 장치의 타원 스칼라 곱셈 방법, 타원 스칼라 곱셈 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체, 연산 장치의 잉여 연산 방법 및 잉여 연산 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체
CN107040362B (zh) 模乘设备和方法
JP5488718B2 (ja) 暗号処理装置、暗号処理方法、およびプログラム
US7908641B2 (en) Modular exponentiation with randomized exponent
KR20100113130A (ko) 비대칭 암호화를 위한 대응조치 방법 및 디바이스
KR20140046568A (ko) 단순 전력 파형 분석 및 오류 주입 분석을 방지하는 타원곡선 암호화 방법 및 그 시스템
JP4513752B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US6480606B1 (en) Elliptic curve encryption method and system
CN105337734B (zh) 包括错误检测的椭圆曲线加密方法
JP2009505148A (ja) 暗号化演算における反転操作を行うための回路配置及び方法
US6609141B1 (en) Method of performing modular inversion
JP2011123356A (ja) 素数生成装置、素数生成方法、及び素数生成プログラム
EP3226120B1 (en) Non-modular multiplier, method for non-modular multiplication and computational device
JP2004163687A (ja) 楕円曲線暗号装置、楕円曲線暗号プログラム
US20140286488A1 (en) Determining a Division Remainder and Ascertaining Prime Number Candidates for a Cryptographic Application
US8850213B2 (en) Method for verifying an electronic signature and data processing device
Yen et al. Improvement on Ha-Moon randomized exponentiation algorithm
KR101423947B1 (ko) 확장된 nist 소수를 이용한 모듈러 곱셈 및 모듈러 지수승 방법
Nofriansyah et al. Efficiency of 128-bit Encryption and Decryption Process in Elgamal Method Using Elliptic Curve Cryptography (ECC)
CN117353929A (zh) 点乘运算装置、数字签名装置以及片上系统
JP2003263110A (ja) 楕円曲線上の有理点群の部分群の元生成装置、そのプログラム及び記録媒体
Lee et al. Efficient Exponentiation in GF (pm) Using the Frobenius Map
JP2008020757A (ja) 暗号処理装置、および暗号処理演算方法、並びにコンピュータ・プログラム
JP2012047941A (ja) べき乗剰余演算装置、べき乗剰余演算方法およびプログラム
JPH0721763B2 (ja) 素数発生器

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190819

Year of fee payment: 6