KR20150107784A - 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법 - Google Patents

스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법 Download PDF

Info

Publication number
KR20150107784A
KR20150107784A KR1020157021332A KR20157021332A KR20150107784A KR 20150107784 A KR20150107784 A KR 20150107784A KR 1020157021332 A KR1020157021332 A KR 1020157021332A KR 20157021332 A KR20157021332 A KR 20157021332A KR 20150107784 A KR20150107784 A KR 20150107784A
Authority
KR
South Korea
Prior art keywords
point
scalar
result
bits
coordinates
Prior art date
Application number
KR1020157021332A
Other languages
English (en)
Other versions
KR102136911B1 (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 KR20150107784A publication Critical patent/KR20150107784A/ko
Application granted granted Critical
Publication of KR102136911B1 publication Critical patent/KR102136911B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/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/3236Cryptographic 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 using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은, 프로세서(PROC)를 포함하는 전자 디바이스(DV1)에서 구현되는 암호 데이터 처리 방법으로서, 상기 방법은, 갈르와체(Galois field)에서 타원 곡선의 점과, 0을 포함한 양의 정수를 제공하는 단계, 및 상기 수와 상기 점의 스칼라 적을 계산하는 단계를 포함하고, 상기 점과 상기 수의 좌표는 상기 프로세서에 의해 직접 처리될 수 있는 워드의 사이즈를 초과하는 사이즈를 구비하고, 상기 수와 상기 점을 스칼라 곱셈하는 단계는, 0을 포함한 일련의 양의 정수에 속하는 2의 거듭제곱과 승산이 된 상기 점의 스칼라 배수를 저장하는 단계, 상기 제1 수의 0이 아닌 각 비트에 대해 결과 점을 설정하는 단계, 상기 결과 점과 상기 저장된 배수 점들 중 하나의 점을 가산하는 단계, 및 상기 스칼라 적을 한 결과로서 상기 결과 점을 상기 프로세서의 출력에 제공하는 단계를 포함하는 것을 특징으로 하는 암호 데이터 처리 방법에 관한 것이다.

Description

스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법{CRYPTOGRAPHY METHOD COMPRISING AN OPERATION OF MULTIPLICATION BY A SCALAR OR AN EXPONENTIATION}
본 발명은 전자 디바이스에서 타원 곡선 암호화(elliptic curve cryptography)를 구현하는 것에 관한 것으로, 보다 상세하게는 타원 곡선에 속하는 점(point)의 스칼라와의 곱셈 결과를 계산하는 방법에 관한 것이다.
여러 알려진 타원 곡선 암호화 방법은 스칼라 곱셈에 기초하는데, 여기서 그 수학적 표현은: [k]·P = P [+] P [+] ... [+] P (k배)이고, P는 타원 곡선에서 선택된 점이고, k는 0을 포함한 양의 정수(whole number)이고, "[+]"는 이 타원 곡선의 점들에 적용되는 가산 연산자(adding operator)이다. 이 수(k)는 예를 들어 개인 키(private key)이고, 이 연산의 결과 점([k]·P), 또는 이 결과 점의 아핀 좌표(affine coordinate)들 중 하나는 공개 키(public key)로 사용될 수 있다. 사실, 이 결과([k]·P)와 점(P)의 좌표들을 알아도, 수(k)의 값을 찾는 것은 극히 곤란할 수 있다. 이 연산은 예를 들어 시그너처(signature)를 계산하는 동안 사용되거나, 또는 암호 키를 생성하거나 또는 심지어 메시지를 암호화하는데 사용된다. 이 연산은 ECDSA ("Elliptic Curve Digital Signature Algorithm"), ECDH (Elliptic Curve Diffie-Hellman), ECIES (Elliptic Curve Integrated Cryptography Scheme) 등과 같은 타원 곡선에 기초하여 여러 암호화 알고리즘에 의해 구현된다.
타원 곡선의 점들 사이의 연산은 Fq 형태의 갈르와체(Galois field)에서 이들 점의 좌표에 대한 연산에 해당하고, 여기서 q는 소수(prime number) p이거나, 또는 2의 거듭제곱(power)(2m의 형태)이다. 스칼라 곱셈 연산은 일반적으로 점들을 가산하고 배가(doubling)하는 일련의 연산으로 분해된다. 따라서, 하나의 잘 알려진 방법은 부록 I(Appendix I)에 있는 "배가 및 가산" 알고리즘(A1 또는 A1')에 의하여 스칼라 곱셈의 계산을 실행하는 것을 수반한다. 알고리즘(A1)은 스칼라 수(k)의 최상위 비트에서 최하위 비트로 처리하는 것에 의해 계산 루프의 처음 단계가 시작할 때 "좌측으로부터 우측으로" 수행된다 라고 말한다. 알고리즘(A1')은 스칼라 수의 최하위 비트에서 최상위 비트로 처리하는 것에 의해 계산 루프의 처음 단계가 시작할 때 "우측으로부터 좌측으로" 수행된다 라고 말한다.
이들 알고리즘은, 각 반복에 대해, 즉 멱수(exponent)의 각 비트에 대해, 타원 곡선의 2개의 동일한 점(R)들을 가산하는 것과, 이 반복에 의해 처리된 스칼라의 비트가 1인 경우, 점(R)을 타원 곡선의 다른 점(P)과 가산하는 것을 포함한다. 일반적으로 상이한 함수를 사용하여 이들 연산 각각을 실행할 수 있고, 2개의 동일한 점들을 가산하는 것은 배가 함수(doubling function) 또는 "DOUBLE" 함수에 의해 실행되는 반면, 2개의 상이한 점들을 가산하는 것은 가산 함수(adding function) 또는 "ADD" 함수에 의해 실행된다. 이 구별은 점(P)과 점(Q)이 반대인 경우일 때보다 동일한 경우일 때 DOUBLE 함수에 의해 보다 신속히 P [+] Q를 계산할 수 있는 것으로 인한 것이다. 특정 좌표계에서, 2개의 동일한 점들을 가산하는 것은 0으로 나누는 것을 초래할 수 있다. 이에 따라 다른 계산 모드가 필요하다.
스마트 카드 유형의 전자 디바이스에서, 암호 계산(cryptographic calculation)은 일반적으로 산술 코프로세서(arithmetic coprocessor) 또는 암호 프로세서(crpyto-processor)와 같은 특정 프로세서에 의해 실행된다. "[k]·P"를 계산하는 것과, 보다 구체적으로 타원 곡선의 점들의 가산을 실행하는 것은, 키를 생성하거나, 시그너처를 계산하거나, 이 시그너처를 체크하거나, 또는 암호화 또는 복호화 연산을 수행하는데 드는 총 시간에 비해 프로세서의 컴퓨팅 시간의 대다수를 차지한다. 수행되는 계산 유형에 따라 DOUBLE 함수 또는 ADD 함수를 교대로 사용하면, 총 암호화, 복호화, 시그너처 또는 시그너처 체크 컴퓨팅 시간을 최적화할 수 있다.
그러나, 2개의 상이한 DOUBLE 함수와 ADD 함수를 사용하면, 카드의 전류 소비(current consumption)를 분석하는 것에 의해 SPA(Simple Power Analysis)에 의해 검출가능한 정보의 누설을 초래할 수 있다. DOUBLE 함수가 ADD 함수보다 더 짧은 실행 시간을 가지기 때문에, 성분(component)의 전류 소비 곡선을 관찰하는 것에 의해 이들 2개의 연산을 구별하는 것이 가능하다. "전류 소비"는 연산을 실행하는 전자 성분의 연산을 나타내는 임의의 관찰가능한 물리적 값, 특히 소비된 전기 전류 또는 성분의 전자기 복사선(electromagnetic radiation)을 의미한다. 따라서, 알고리즘(A1)을 실행하는 성분의 전류 소비 곡선에서, DOUBLE 함수의 소비 프로파일과 ADD 함수의 소비 프로파일을 구별하는 것이 가능하다. DOUBLE 연산 다음에 ADD 연산(단계 2.1 다음에 단계 2.2)을 하면, 단계 2.2 쪽을 향한 조건부 분기(conditional branching)에서 조건 k s =1이 충족되어야 하는 것이 요구되기 때문에 스칼라 수(k)의 비트가 1인 것을 나타낸다. 역으로, DOUBLE 연산 다음에 다른 DOUBLE 연산(단계 2.1 다음에 다른 단계 2.1)을 하면, 스칼라 수의 비트(ks)가 0인 것을 나타낸다. 이에 따라 전류 소비 곡선을 간단히 관찰하는 것에 의해 스칼라 수(k)의 비트들이 잇따라 발견될 수 있다.
이런 단점을 극복하기 위해, 알고리즘(A1 및 A1')의 단계 2.1 및 단계 2.2는, 가능한 경우, DOUBLE 함수를 사용함이 없이 ADD 함수만에 의해 수행될 수 있다. 그러나, 전류 소비를 보다 상세히 분석하면, 단계 2.1는 알고리즘(A1 또는 A1')이 규칙적(regular)이지 않기 때문에 단계 2.2와 구별될 수 있다. 사실, 이 경우에, 2개의 가산이 2개의 단계 2.1를 연속적으로 실행하는 것(비트(ks)는 0이다)에 대응할 때에나 또는 단계 2.1 다음에 단계 2.2를 실행하는 것(비트(ks)는 1이다)에 대응할 때에는, 2개의 연속적인 가산들 사이에 경과하는 시간은 동일하지 않다. 공격자(attacker)는 가산들 사이에 연장되는 소비 곡선의 일부에 "줌(zoom)" 기능을 수행하여, 조건부 분기를 나타내는 시간적 비대칭(temporal dissymmetry)과 그리하여 스칼라 수의 비트 값을 찾아낼 수 있을 수 있다.
"몽고메리 사다리(Montgomery Ladder)" 라고 언급되는 부록 I에 있는 알고리즘(A2)을 통해 스칼라 곱셈 계산이 더 수행될 수 있다. 각 반복 연산에서, 이 알고리즘은 2개의 가산을 수행하는 것을 수반하는데, 여기서 하나의 가산은 2개의 상이한 점들에 적용되고, 다른 가산은 2개의 동일한 점들에 적용되고 그에 따라 가산 연산 또는 배가 연산에 의해 수행될 수 있다. 각 반복 연산에서, 2개의 레지스터(R0, R1) 중 하나는 2개의 레지스터의 내용의 합계를 수신하고, 2개의 레지스터 중 다른 하나는 이 레지스터의 내용을 배가시킨다. 스칼라 수(k)의 진행에서 반복에 대응하는 비트(ks)가 0에 있는 경우에, 레지스터(R1)는 가산 결과를 수신하고, 레지스터(R0)의 내용은 배가되는 반면, 비트(ks)가 1에 있는 경우에는 이것이 역으로 된다.
이 알고리즘은 각 반복 연산이 체계적으로 2개의 가산을 포함하거나 또는 하나의 가산 연산과 배가 연산을 포함한다는 점에서 완벽히 규칙적이라는 잇점을 제공한다. 이 잇점은, 임의의 더미 연산(dummy operation)을 가산하여야 함이 없이, 이에 따라 컴퓨팅 시간을 증가시킴이 없이 획득된다.
또한 타원 곡선의 점들의 표현(representation)을 적절히 선택하는 것에 의해 스칼라 수에 의한 적(product)의 컴퓨팅 시간을 감소시키는 것이 가능하다. 사실, 아핀 좌표에서 배가 연산과 가산 연산은, 수 십 개의 곱셈의 컴퓨팅 시간에 대응하는 컴퓨팅 시간을 요구하는 반전 계산(inversion calculation)을 포함한다. 하나의 잘 알려진 방법은 동차(homogeneous) 또는 야코비안 투영 좌표(Jacobian projective coordinate)와 같은 투영 좌표에서 표현을 사용하는 것에 의해 이 반전 계산을 제거하는 것을 수반한다. 동차 투영 좌표에서 표현하는 것은 아핀 좌표(x, y)를 형태(X/Z, Y/Z)의 좌표로 변환하는 것으로 구성되고, 여기서 Z는 0이 아니다. 바이어슈트라스(Weierstrass) 타원 곡선의 수식은 Y2Z = X3 + aXZ2 + bZ3 으로 된다. 야코비안 투영 좌표에서 표현은 아핀 좌표(x, y)를 형태(X/Z2, Y/Z3)의 좌표로 변환하는 것으로 구성되고, 여기서 Z는 0이 아니다. 바이어슈트라스 타원 곡선의 수식은 Y2 = X3 + aXZ4 + bZ6 으로 된다.
따라서 타원 곡선의 점에 적용되는 스칼라 곱셈 계산을 실행하는 방법의 컴퓨팅 시간을 더 감소시키는 것이 요구될 수 있다. 또한 컴퓨팅 시간에 악영향을 회피하면서 전술된 은닉된 채널 공격으로부터 이러한 방법을 보호하는 것이 바람직할 수 있다.
일부 실시예는, 프로세서를 포함하는 전자 디바이스에서 구현되는 암호 데이터 처리 방법으로서, 상기 방법은 갈르와체에서 타원 곡선의 점과, 0을 포함한 제1 양의 정수(first whole number)를 제공하는 단계, 및 상기 제1 수와 상기 점의 스칼라 곱셈을 계산하는 단계를 포함하고, 여기서 상기 점과 상기 제1 수의 좌표는 상기 프로세서에 의해 직접 처리될 수 있는 워드(word)의 사이즈보다 더 큰 사이즈를 구비하는, 상기 암호 데이터 처리 방법에 관한 것이다. 일 실시예에 따라, 상기 제1 수와 상기 점의 스칼라 곱셈을 계산하는 단계는, 0을 포함한 일련의 양의 정수(series of whole number)에 속하는 2의 거듭제곱(power)와 상기 점과의 스칼라 적으로부터 각각 초래되는 일련의 배수 점들(multiple points)을 저장하는 단계, 상기 타원 곡선에 속하는 결과 점을 설정하는 단계, 상기 제1 수의 비트들 각각을 단 한번만 고려하도록 여러 반복을 실행하는 단계로서, 여기서 각 반복은 상기 제1 수의 여러 비트의 조합을 계산하는 것과, 상기 조합이 0이 아닌 경우, 상기 제1 수의 비트들의 조합의 비트들의 랭킹에 대응하는 저장된 배수 점들 중 하나와 상기 결과 점 사이에 가산 계산을 포함하는, 상기 여러 반복을 실행하는 단계, 및 상기 제1 수와 상기 점에 스칼라 곱셈을 계산한 결과로서 상기 결과 점을 상기 프로세서의 출력에 제공하는 단계를 포함한다.
일 실시예에 따라, 상기 제1 수의 비트들은 상기 결과 점을 계산할 때 랜덤하거나 의사-랜덤한 순서로 고려된다.
일 실시예에 따라, 상기 결과 점과 상기 저장된 배수들 사이에 가산 계산은 아핀 좌표에서 수행된다.
일 실시예에 따라, 상기 결과 점과 상기 저장된 결과들 사이에 가산 계산은 투영 좌표에서 수행된다.
일 실시예에 따라, 상기 점의 스칼라 배수(scalar multiple)들은 아핀 좌표에서 저장되고, 획득된 결과는 1로 설정된 값을 가지는 제3 좌표를 아핀 좌표에 가산하는 것에 의해 투영 좌표로 변환된다.
일 실시예에 따라, 상기 제1 수와 상기 점의 좌표들은 NAF 코딩되고, 상기 방법은, -1인 각 비트에 대해 또는 -1 이하의 상기 제1 수의 비트들의 조합에 대해, -1인 비트의 랭킹 또는 -1 이하의 상기 제1 수의 비트들의 조합의 랭킹에 대응하는 저장된 배수의 반대점과 결과 점 사이에 가산 계산을 포함한다.
일 실시예에 따라, 상기 방법은 개인 키로 제2 수(second number)를 랜덤하게 선택하는 단계, 타원 곡선의 점을 베이스 점으로 선택하는 단계로서, 상기 저장된 배수는 상기 베이스 점으로부터 계산된, 상기 선택하는 단계, 및 저장된 배수 점을 사용하여 상기 제2 수와 상기 베이스 점과의 스칼라 곱셈의 결과 점을 계산하는 단계를 포함하는, 한 쌍의 개인 키와 공개 키를 생성하는 단계를 포함하고, 상기 결과 점 또는 그 좌표들 중 하나의 좌표는 상기 개인 키에 대응하는 공개 키로 선택된다.
일 실시예에 따라, 상기 방법은 제2 수를 랜덤하게 선택하는 단계, 타원 곡선의 점을 베이스 점으로 선택하는 단계로서, 상기 저장된 배수는 상기 베이스 점으로부터 계산된, 상기 선택하는 단계, 및 상기 저장된 배수를 사용하여 상기 제2 수와 상기 베이스 점과의 스칼라 곱셈으로부터 오는 결과 점을 계산하는 단계, 서명될 메시지에 해싱 함수(hashing function)를 적용하는 단계, 및 다음 수식에 의해 상기 메시지의 시그너처를 계산하는 단계를 포함하는, 메시지에 서명하는 단계를 포함하고:
x = i mod n
y = k-1(H(m)+sx) mod n,
여기서 x와 y는 상기 메시지(m)의 시그너처를 나타내고, i는 결과 점의 좌표이고, k는 제2 수이고, H(m)는 메시지(m)에 적용되는 해싱 함수이고, s는 개인 키로 사용된 수이고, n는 베이스 점과 n의 스칼라 적이 타원 곡선의 무한대 점이 되는 최소 0을 포함한 양의 정수(smallest positive whole number)이다.
일부 실시예는 또한 전술된 방법을 구현하도록 구성된 프로세서를 포함하는 전자 디바이스에 관한 것이다.
일 실시예에 따라, 상기 디바이스는 휴대용이고 자율적이거나, 또는 스마트 카드 유형이다.
본 발명의 실시예와 본 발명의 방법의 구현예는 일 실시예에 따른 스칼라 곱셈 알고리즘을 구현하는 전자 디바이스를 개략적으로 도시하는 도 1을 참조하여 아래에서 설명되지만 본 발명이 이로 제한되는 것은 아니다.
본 발명은 갈르와체에 있는 타원 곡선에 속하는 동일하거나 상이한 점들의 가산을 포함하는 암호 계산 방법에 관한 것이다. 본 방법은 0을 포함한 양의 정수와 점의 스칼라 곱셈을 포함하는, 암호 계산을 실행하도록 구성된 전자 디바이스에 의해 구현된다. 본 방법은 ECDSA, ECDH, ECIES 등의 알고리즘에 의해 사용되는 스칼라 곱셈 계산을 포함할 수 있다.
일 실시예에 따라, 본 방법은 알고리즘(A1')의 유도에 기초하는데, 여기서 배가 계산은, 점(P)이 종종 변화될 것이 요구되지 않는다는 것을 고려하면, 한번 수행된다. 사실, 이러한 계산의 대상(subject)인 점(P)은 일부 경우에 예를 들어 타원 곡선 암호 시스템의 소위 "도메인(domain)" 파라미터의 일부인 베이스 점으로 설정된다. 이들 도메인 파라미터는 구체적으로 필드(Fp)에서는 형태(y2 = x3 + ax + b) (여기서 p는 엄격히 3을 초과하는 소수이고, 4a3 + 27b2 ≠ 0)의 또는 이진 필드(F2m)에서는 형태(y2 + xy = x3 + ax2 + b)의 소위 바이어슈트라스 타원 곡선의 계수(a와 b)를 포함한다. 타원 곡선의 배가 점들을 계산하는 것은 피연산수(operand)의 등식을 고려하여 최적화된 가산을 사용하는 것에 의해 수행될 수 있다.
부록 II에 있는 알고리즘(A3)은 일 실시예에 따라 우측으로부터 좌측으로 수행되는 스칼라 곱셈 알고리즘의 일례이다. 알고리즘(A3)은 점(P)의 사이즈(즉, 이 점의 좌표의 사이즈)의 v개의 레지스터(DP)의 테이블 또는 세트를 사용하고, 여기서 v는 스칼라 수(k)의 비트의 수이다. 이 알고리즘은 또한 점(P)의 사이즈의 다른 레지스터(R)를 사용한다. 레지스터의 사이즈는 선택된 좌표계에 따라 변할 수 있는 것으로 이해된다.
이 알고리즘의 단계 1에서, 레지스터(R)는 중성 점(neutral point)("Ø")(여기서, P [+] Ø = Ø [+] P = P)의 값으로 설정되고, 레지스터(DP[0])는 점(P)의 값을 수신한다. 단계 2는 스칼라 수(k)의 비트의 수(v)에 대한 루프 제어 단계이다. 이 루프에서 단계 2.1에서, 배가 함수는 레지스터(DP[i])에 포함된 점의 배가 값을 레지스터(DP[i+1])에 로딩하는 것이라고 언급된다. 이 루프에서 단계 2.2는 스칼라 수(k)의 랭킹(i)의 현재 비트(ki)가 1에 있는 경우 실행된다. 만약 그렇다면, 가산 함수는 레지스터(DP[i])에 포함된 값만큼 레지스터(R)의 내용을 증분시키는 것이라고 언급된다. v번의 반복 후에, 레지스터(R)는 0을 포함한 양의 정수(k)와 점(P)의 스칼라 곱셈 연산의 결과([k]·P)를 포함한다. 레지스터(DP)의 세트의 각 레지스터(DP[i])는 (0과 v-1 사이의 i의 각 값에 대해) 점(P)의 2i·P의 배수를 저장한다. 이런 방식으로, 새로운 스칼라 곱셈 계산이 수(k)와는 상이한 스칼라 수(k')로 수행되어야 한다면, 점(P)의 배수 2i·P를 재계산하는 것이 필요치 않다.
따라서, 부록 II에 있는 알고리즘(A4)은 각 반복에서 단계 2.2를 실행하는 것에 의해 단지 점(P)과 스칼라 수(k)의 곱셈의 결과([k]·P)를 획득한다.
(갈르와체(Fp)에 있는) 바이어슈트라스 타원 곡선에서, 좌표(x, y)의 점(P)의 반대점은 좌표(x, -y)의 점 [-]P이다. 2개의 점 P1(x1, y1)과 점 P2(x2, y2) (P2 ≠ ±P1)의 합계는,
x3 = m2 - x1 - x2
y3 = m(x1 - x3) - y1, (여기서 m = (y2 - y1)/(x2 - x1)) (1)
이 되는 점 P3(x3, y3)이다.
y ≠ 0에서 점 P(x, y)의 배가는,
x4 = m2 - 2x
y4 = m(x - x4) - y, (여기서 m = (3x2 + a)/2y) (2)
이 되는 점 P4(x4, y4) = [2]·P이다.
가산 연산과 배가 연산에서 수(m)을 계산하는 것은 반전 계산을 요구하는 것으로 볼 수 있다. 이러한 반전 계산은 매우 복잡하고 매우 값비싼 컴퓨팅 시간인 것으로 증명되었다. 타원 곡선의 점들의 표현을 적절히 선택하는 것에 의해 반전 계산을 제거하는 것이 가능하다. 이를 위해, 하나의 잘 알려진 방법은 동차 또는 야코비안 투영 좌표에서 표현과 같은 투영 좌표에서 표현을 사용하는 것을 수반된다. 동차 투영 좌표에서 표현은 아핀 좌표(x, y)를 좌표(X/Z, Y/Z)로 대체하는 것으로 구성되고, 여기서 Z는 0이 아니다. 역으로, 투영 좌표를 좌표(X=x·Z, Y=y·Z, Z)로 대체하는 것에 의해 점의 아핀 좌표로 되돌아갈 수 있고, 여기서 Z는 1 또는 필드(Fp)의 0이 아닌 임의의 다른 값일 수 있다. 아핀 좌표로부터 투영 좌표로 변경하는 것은 단순히 Z를 1로 선택하는 것에 의해 수행될 수 있다.
P2 ≠ [±]P1, Z1 ≠ 0 및 Z2 ≠ 0에서 동차 투영 좌표에서 2개의 점 P1(X1, Y1, Z1)과 점 P2(X2, Y2, Z2)의 합계는,
Figure pct00001
이 되는 점 P3(X3, Y3, Z3)이다.
점 P(X, Y, Z)의 배가는,
Figure pct00002
이 되는 점 P4(X4, Y4, Z4)이다.
상기 연산은 갈르와체(Fp)에서 모듈로(modulo) p로 수행된다. 상기 수식은 반전 연산을 전혀 포함하지 않는 것으로 볼 수 있다. 따라서, 동차 투영 좌표에서 가산 연산은 12개의 곱셈, 2개의 제곱 연산(squaring operation) 및 7개의 가산을 요구하는데, 이들 연산은 모듈러(modular)이고 큰 수(big number)를 배타적으로 수반한다. 동차 투영 좌표에서 배가 연산은 7개의 곱셈, 5개의 제곱 연산 및 11개의 가산을 요구한다. 나아가, a가 (FIPS 186-3 표준의 모든 곡선에서와 같이) -3으로 선택되면, 수(A)는 다음 방식으로 가산 식에서 팩터화될 수 있다:
A = 3·(X1+Z12)·(X1-Z12) (5)
이는 0을 포함한 큰 양의 정수들의 2개의 제곱 연산을 절감한다.
일 실시예에 따라, 레지스터(DP)에 저장된 값은 아핀 좌표에서 계산되고 저장되며, 스칼라 곱셈에서 Z를 1로 선택하는 것에 의해 야코비안 또는 동차 투영 좌표로 변환된다. 사실, 레지스터(DP)에 저장된 값이 스칼라 수와의 적을 여러 번 계산하는데 사용된다면, 허용가능한 절충은 보다 값비싼 컴퓨팅 시간에서 아핀 좌표에서 계산하는 것에 의해, 또는 투영 좌표에서 계산하고 나서 점들을 아핀 좌표로 변환하는 것에 의해, 이들 값을 계산하는 것을 수반할 수 있다. 그 결과 단계 2.2에서 수행된 좌표(DX, DY, 1)의 배수 DP[i]와 점 P1(X1, Y1, Z1)을 가산하는 것이 다음 방식으로 간단해질 수 있다:
Figure pct00003
이에 따라 이 실시예는 단계 2.2에서 수행되는 점들의 각 가산을 위해 큰 수의 3번의 곱셈의 감소를 획득한다. 점들 중 하나의 점이 투영 좌표로 표현되고, 다른 점은 아핀 좌표로 표현되고(또는 Z=1에서 투영되고) 그 결과가 투영 좌표에서 획득되는 방식으로 점들을 이렇게 가산하는 것은 "조합된" 가산이라고 언급된다.
부록 II에 제시된 알고리즘(A5)은, 2-비트 슬라이딩 윈도우(sliding window)를 적용하는 것에 의해, 즉 각 반복에서 스칼라 수(k)의 2개의 비트를 처리하는 것에 의해 알고리즘(A4)으로부터 유도된다. 수행될 반복의 수는 이에 따라 단 하나의 레지스터가 아니라 3개의 레지스터의 세트(R)를 사용하는 것에 의해 2로 나누어진다. 나아가, 레지스터(DP)의 세트의 레지스터의 수는 알고리즘(A4)에 비해 2로 나누어지고, 각 레지스터(DP[i])는 배수 [22i]·P를 수신한다. 색인(index)(i)의 각 반복은 2개의 단계 2.1과 단계 2.2를 포함한다. 단계 2.1는 스칼라 수(k)의 랭킹(2i 및 2i+1)의 2개의 연속적인 비트(k2i 및 k2i+1)를 조합하는 것에 의해 0을 포함한 양의 정수(u)를 계산하는 것을 수반한다. 수(u)가 0이 아닌 경우에 실행되는 단계 2.2는 레지스터(R[u])에 있는 점에 점(DP[i]), 즉 [22i]·P를 가산하는 것을 수반한다. 모든 반복이 수행되었을 때, 스칼라 곱셈의 결과는 레지스터(R[1] [+] 2·R[2] [+] 3·R[3])의 값의 조합으로 획득된다.
부록 II에 제시된 알고리즘(A6)은 각 반복에서 스칼라 수(k)의 m개의 비트(ki)의 처리를 서로 그룹화하는 것에 의해 m개의 값의 슬라이딩 윈도우로 알고리즘(A5)을 일반화하는 것이다. 이러한 슬라이딩 윈도우를 적용하면, 반복의 수를 감소시킬 수 있다. 그러나 이러한 감소는 단계 3에서 수행되는 가산 연산과 배가 연산의 수가 거듭제곱 방식(2m 형태)으로 증가하는 단점을 초래한다. 그리하여 스칼라 수의 사이즈(v)에 따라 슬라이딩 윈도우의 사이즈에 최적 값이 존재한다.
알고리즘(A4)의 단계 2.2에서 수행되는 연산은 임의의 순서로 수행될 수 있는 것으로 볼 수 있다. 이에 따라, 각 반복에서 처리된 비트(ki)의 랭킹(i)은 스칼라 수(k)의 각 비트(ki)가 한번만 처리될 경우에만 랜덤하게 또는 의사-랜덤하게 선택될 수 있다.
부록 II에 제시된 알고리즘(A4')은 랜덤한 순열(permutation)(σ)을 스칼라 수(k)의 비트(ki)에 적용하는 추가적인 단계 2' 를 가산하는 것에 의해 알고리즘(A4)으로부터 유도된다. 단계 2.2는 현재 반복에 의해 처리된 비트(kσ(i))에 대응하는 배수 DP[σ(i)]를 사용하는 것으로 더 변경된다. 의사-랜덤한 순열 알고리즘은 예를 들어 문헌 "A New DPA Countermeasure Based on Permutation Tables" (Jean-Sㅹbastien Corn, SCN 2008, p. 278-292)에 개시되어 있다. SPA와 DPA (Differential Power Analysis) 공격은 이에 따라 임의의 더미 연산을 가산함이 없이 및 이에 따라 컴퓨팅 성능을 저하시킴이 없이 무력화될 수 있다. 사실, 이러한 공격은, 수(k)의 각 비트(ki)가 1인 것에 대해 가산 연산이 수행되는 것을 고려하면, 가산 연산이 수행되는 반복을 결정하고, 스칼라 수(k)의 값을 추론하는 것을 목표로 한다. 비트(ki)가 알고리즘(A4')에서와 같이 랜덤한 순서로 처리되면, 이러한 공격은 단지 비트(ki)의 수가 1에 있다는 것을 결정할 수는 있으나, 수(k)에서 각 랭킹을 결정할 수는 없다.
알고리즘(A5 및 A6)에서, 각 반복에서 처리된 스칼라 수(k)의 비트의 그룹은 또한 임의의 순서로 처리될 수 있는데, 예를 들어 랜덤하게 선택될 수 있다. 그 결과 각 반복에서 처리된 수(k)의 2개 또는 m개의 비트의 그룹이 반드시 연속적인 것은 아니다. 알고리즘(A5 및 A6)의 각 반복에서 처리된 비트(ki)의 그룹은 이에 따라 스칼라 수(k)의 모든 비트들이 스칼라 적을 계산하는데 고려되는 경우에만 랜덤하게 또는 의사-랜덤하게 선택될 수 있다. 따라서, 부록 II에 제시된 알고리즘(A5', A6')은 스칼라 수(k)의 비트들에 랜덤한 순열을 적용하는 추가적인 단계 2'를 알고리즘 각각에 가산하는 것에 의해 알고리즘(A5 및 A6)으로부터 유도된다. 단계 2.1과 단계 2.2는 수(u)를 계산할 때 및 레지스터(DP)를 판독할 때 현재 반복에서 처리된 비트(ki) 각각의 랭킹을 고려하도록 더 수정된다.
도 1은 큰 수에 적용되는 알고리즘(A3, A4, A4', A5, A5', A6, A6') 중 하나 이상을 포함하는 암호 계산을 실행하도록 구성된 전자 디바이스(DV1)의 블록도.
디바이스(DV1)는 플라스틱 카드와 같은 휴대용 매체, 스마트 카드를 형성하는 조립체 위에 배열된 반도체 칩 상의 집적 회로일 수 있다. 이 디바이스(DV1)는 또한 스마트폰, 멀티미디어 플레이어, 촉각 테블릿 또는 퍼스널 컴퓨터와 같은 멀티태스크 프로세서를 구비하는 임의의 디바이스일 수 있다. 디바이스(DV1)는 또한 예를 들어 디바이스의 메인 프로세서에 연결된 디바이스의 성분일 수 있다.
디바이스(DV1)는 프로세서(PROC), 타원 곡선에 속하는 점(P)과 점(Q)의 가산을 실행하도록 구성된 계산 블록(AB1), 타원 곡선에 속하는 점(P)의 배가를 실행하도록 구성된 계산 블록(DB1), 메모리(MEM) 및 통신 인터페이스 회로(IC)를 포함한다. 인터페이스 회로(IC)는 접촉 또는 비접촉 유형일 수 있고, 예를 들어 유도 결합 또는 전기 결합에 의해 동작하는 RF 또는 UHF 인터페이스 회로일 수 있다. 계산 블록(AB1, DB1)은 프로그래밍가능한 중앙 유닛을 구비하는 코프로세서, 상태 기계 유형의 완전 하드웨어 코프로세서를 각각 포함할 수 있다. 계산 블록(AB1, DB1)은 특히 프로세서(PROC)에 의해 실행되는 메인 프로그램에 의해 호출되는 함수에 단지 대응할 수 있다. 2개의 계산 블록(AB1, DB1)은 또한 동일한 컴포넌트(코프로세서 또는 상태 기계)으로 통합될 수 있다.
그 자체가 종래 방식으로, 변수는 그 사이즈(비트들의 수)가 프로세서(PROC)의 계산 레지스터의 사이즈를 초과할 때 "크다(big)"라고 언급된다. 프로세서 그 자체는, 계산 블록(AB1, DB1)을 사용함이 없이, 계산 레지스터의 사이즈 이하인 수의 연산을 수행하고, 계산 블록(AB1, DB1)을 사용하여 큰 좌표를 가지는 타원 곡선 점들과 관련된 가산 연산과 배가 연산을 수행한다. 예를 들어, 프로세서(PROC)의 계산 레지스터의 사이즈가 32 비트인 경우, 큰 변수는 32 비트를 초과하는 변수이다. 타원 곡선에 기초한 암호화에서, 처리되는 변수(타원 곡선의 점의 좌표, 파라미터 p - 모듈러스(modulus), b, n - 타원 곡선에 속하는 점의 수, Gx, Gy - 베이스 점(G)의 좌표)는 수 백 개의 비트(일반적으로 160, 192, 224, 256, 320, 384, 521개의 비트)에 이를 수 있다.
메모리(MEM)는 프로세서(PROC)에 연결되고, 디바이스(DV1)로 하여금 비밀(secret) 키(k)를 저장하게 한다. 프로세서(PROC)는, 인터페이스 회로(IC)를 통해, 암호화, 복호화, 또는 서명될 메시지(m), 또는 체크될 시그너처를 수신하고, 암호화된 또는 복호화된 메시지, 또는 Fk(m) 유형의 시그너처를 되송신하며, 여기서 Fk 는 부록 II에 제시된 알고리즘들 중 하나의 알고리즘에 의해 실행되는 스칼라 곱셈 계산을 포함하는 키(k)에 기초한 암호화 함수이다. 스칼라 곱셈 계산 동안, 프로세서(PROC)는, 합계(P [+] Q)를 되송신하는 계산 블록(AB1)에 점(P, Q)을 제공하고, 및 배가값([2]·P)을 되송신하는 계산 블록(DB1)에 점(P)을 제공하는 것에 의해 계산 블록(AB1, DB1)을 사용한다. 메모리(MEM)의 일부는 또한 버퍼 메모리로 사용되어 부록 II에 제시된 알고리즘에 언급된 레지스터(R 및 DP)의 내용을 저장할 수 있다.
디바이스(DV1)는 큰 수의 모듈러 곱셈과 큰 수의 모듈러 제곱을 실행하도록 구성된 계산 블록을 더 포함할 수 있고, 여기서 이들 계산 블록은 수식 (1) 내지 수식 (6)을 구현하기 위해 계산 블록(AB1, DB1)에 의해 사용된다.
스칼라 수(k)의 비트당 실행 시간과 이전에 제시된 각 알고리즘에 대해 사용된 (즉, 저장될 점의) 큰 레지스터의 수는 다음 표 1에서 서로 그룹화되어 있다:
Figure pct00004
표 1에서, v는 스칼라 수(k)의 비트의 수를 나타내고, M은 큰 수의 곱셈의 컴퓨팅 시간을 나타내고, M은 또한 수(v)에 따라 변한다. 표 1에 포함된 실행 시간과 관련된 수치 값은, 큰 수의 제곱의 컴퓨팅 시간의 비용이 큰 수의 곱셈의 것의 0.8배인 것을 고려하는 것에 의해, 및 큰 수의 가산과 감산의 실행 시간을 무시하는 것에 의해 획득되었다. 표 1은 또한 점의 가산 연산과 배가 연산의 실행 시간을 언급한다. 알고리즘(A5, A6)에서, 실행 시간과 관련된 열(column)에 포함된 추가적인 항은, 비트(v)의 수와 관련하여 단계 3을 실행하는데 드는 컴퓨팅 시간을 나타낸다. 단계 3에서 수행된 가산 연산과 배가 연산의 수는 m의 값에 따라 신속히 증가한다.
표 1로부터 알고리즘(A4 내지 A6)은 스칼라 수의 비트당 컴퓨팅 시간이 타원 곡선의 점들을 가산하는 컴퓨팅 시간의 실질적으로 절반 이하에 이르는 것을 나타난다.
일 실시예에 따라, 부록 II에 제시된 알고리즘은, 이전수로 코딩되지는 않았으나, 다른 형태, 예를 들어 NAF 코딩(Non-Adjacent Form)으로 코딩된 스칼라 수를 처리하는데 적합하다. NAF 코딩에서, 수의 각 비트는 3개의 상태(-1, 0, 1)를 구비할 수 있고, 이 수에서 0이 아닌 각 비트가 선행하고, 이후 0에 있는 비트가 후속하며; 이 수의 제1 비트와 마지막 비트는 임의의 값을 구비할 수 있다. 그 결과 수에서 0 비트의 평균 수(해밍 웨이트(Hamming weight))는 이진수에서 절반으로부터 NAF 코딩에서 1/3로 가는 반면, NAF 코딩에서 수의 비트의 수는 이진수에서 코딩된 동일한 수와 동일하거나 이 수의 것에 비해 1만큼 증가된다. 따라서, 부록 III에서 제시된 알고리즘(A4", A5", A6")은 NAF 코딩에서 수의 표현에 알고리즘(A4, A5, A6)을 적응시킨 것이다. 알고리즘(A4, A5, A6)에 비해, 알고리즘(A4", A5", A6")은 비트(ki)가 -1인 경우를 처리하는 추가적인 단계 2.3을 포함한다. 이 경우에, 배수 DP[i] 또는 DP[u]는 점(R)으로부터 감산된다. 종래에, 점들을 감산하는 연산은 제2 피연산수의 부호를 변경한 가산을 수반한다. Fp 유형(여기서 p는 3을 초과하는 소수이다)의 갈르와체에서 타원 곡선의 점들의 그룹에서, 아핀 좌표에서 점 P(x, y)의 부호의 변경은 그 제2 좌표(y)의 부호의 변경을 수반한다. F2m 유형의 갈르와체에서 타원 곡선의 점들의 그룹에서, 아핀 좌표에서 점 P(x, y)의 부호의 변경은 제2 좌표를 이 점의 좌표의 합계(x+y)로 대체하는 것을 수반한다.
알고리즘(A4', A5', A6')은 NAF 코딩에서 수를 처리하여 SPA 및/또는 DPA 유형의 공격을 대항(counter)하기 위해 유사한 방식으로 적응될 수 있는 것으로 이해된다.
0이 아닌 비트의 평균 비율이 1/3인 경우, NAF 코딩의 수에서, 각 알고리즘(A4", A5", A6")에 대해 스칼라 수(k)의 비트당 실행 시간은 아래 표 2에 포함된다:
Figure pct00005
알고리즘(A4", A5", A6")에 의해 사용되는 큰 레지스터의 수는 알고리즘(A4, A5, A6)에 의해 사용되는 것에 비해 변함 없이 유지된다.
부록 II 및 III에서 제시된 알고리즘은 ECDSA 유형의 공개 키 디지털 시그너처 알고리즘으로 구현될 수 있다. ECDSA 알고리즘은 갈르와체(Fq)에서 타원 곡선 E(a, b)과 선택된 타원 곡선 E(a, b)의 베이스 점 G(Gx, Gy)을 선택하는 것을 수반한다. 수(n)는 [n]·G = Ø ( 무한대에서는 점)이 되는 최소 0을 포함한 양의 정수이다. 그 목표는 한 쌍의 공개 키와 개인 키를 생성하는 것이다. 개인 키는 1과 n-1 사이에서 랜덤하게 선택될 수 있다. 공개 키(Q)는 [s]·G로 선택된다. 점(G)은 고정되어 있으므로, 점(G)의 배가는 한번만 계산되고 테이블에 저장될 수 있다. 공개 키(Q)는, 점(G)의 2i의 배수를 포함하는 테이블(DP)이 완료되었다면 부록 II 및 III에 제시된 알고리즘(A3)에 의해 또는 다른 알고리즘에 의해 획득될 수 있다.
메시지(m)에 서명하기 위해, 1과 n-1 사이의 수(k)가 랜덤하게 선택된다. 점 P(i,j) = [k]·G의 좌표가 계산된다. x = i mod n이 0이라면, 다른 수(k)를 선택하는 것이 필요하다. 수 y = k-1(H(m)+sx) mod n이 이후 계산되고, 여기서 H(m)는 메시지(m)에 적용된 SHA-1과 같은 해싱 함수의 결과이다. 획득된 수(y)가 0인 경우, 수(k)에 대해 다른 값을 선택하는 것에 의해 계산을 다시 시작하는 것이 필요하다. 시그너처는 쌍(x, y)으로 구성된다.
시그너처(x, y)를 체크하기 위해, 공개 키를 구성하는 점(Q)이 Ø와는 상이한지, 타원 곡선 E(a, b)에 속하는지, [n]·Q = Ø인지, 및 xy가 정말 1과 n-1에 있는지 여부를 체크하는 것이 제일 먼저 필요하다. 이후, 점 P(i, j)의 좌표가 다음 방식으로 계산되어야 한다:
P(i,j) = [H(m)·y-1 mod n]·G + [x·y-1 mod n]·Q
그리고 x = i mod n을 체크하는 것이 필요하다. 또한 키(s, Q)의 쌍이 메시지의 시그너처를 서명하고 체크하기 위해 여러 번 사용될 수 있는 경우 점(Q)의 2i의 배수가 테이블에 저장될 수 있다.
부록 II 및 III에 제시된 알고리즘은 또한 ECIES 암호화/복호화 알고리즘에서 구현될 수 있다. 한 쌍의 개인 키와 공개 키(s, Q)가 ECDSA 알고리즘에서와 같이 생성될 수 있다. 메시지(m)를 암호화하기 위해, 1과 n-1의 수(r)가 랜덤하게 선택되고, 점 R = [r]·G와 점 P(x,y) = [r]·Q가 계산되고, 여기서 Q는 암호화된 메시지의 수신자의 공개 키이다. 조건 P ≠ Ø이 체크되어야 한다. 여기서 다시, 점(G)과 점(Q)의 2i의 배수가 한번 그리고 모두에 대해 계산되고, 테이블에 저장될 수 있다. 키 유도 함수(KDF)가 이후 (Ke, Km) = KDF(x, S1)이 되는 대칭 키(Ke, Km)를 생성하는데 사용되고, 여기서 S1는 암호화된 메시지의 수신자와 공유된 데이터이다. 메시지(m)는 이후 키(Ke)를 사용하여 대칭 암호화 알고리즘(E)에 의해 암호화된다. 데이터(d)는 이후 해싱 함수를 키(Km)에 적용하고 또 메시지의 수신자와 공유된 다른 데이터(S2)에 적용하는 것에 의해 계산된다. 메시지의 암호화 결과(c)는 공개 키(R)와 데이터(d)를 갖는 암호화된 메시지의 수신자에 송신된다.
암호화된 메시지(c, d)를 복호화하기 위해 메시지의 수신자는 점 P(x, y) = [s]·R (=[r]·Q)을 계산한다. 획득된 점(P)은 Ø와 달라야 한다. 동일한 키 유도 함수(KDF)와 공유된 데이터(S1)는 이후 대칭 키(Ke, Km)를 생성하는데 사용된다. 수(d)는 키(Km)에 및 공유된 데이터(S2)에 적용된 동일한 식을 사용하는 것에 의해 계산된다. 획득된 수(d)가 수신된 수(d)와 동일한 경우, 메시지는 수신된 암호화된 데이터(c)에 적용하는 것에 의해 복호화될 수 있고, 여기서 대칭 복호화 함수는 키(Ke)를 사용하여 사용된 암호화 함수에 대응한다.
이 기술 분야에 통상의 지식을 가진 자라면 본 발명은 여러 대안적인 실시예와 여러 응용에 적용될 수 있다는 것을 이해할 수 있을 것이다. 특히, 본 발명은 제시된 응용으로 제한되지 않고, 점의 배가를 여러 번 재사용하는 임의의 다른 타원 곡선 암호화 응용에 적용될 수 있다.
본 발명은 제시된 투영 좌표로만 제한되지 않고, 임의의 다른 유형의 좌표에 적용될 수 있고, 이들 다른 유형의 좌표에 제시된 알고리즘을 적응하는 것은 이 기술 분야에 통상의 지식을 가진 자의 이해 범위 내에 있는 것으로 이해된다.
본 발명은 스칼라 곱셈의 대상인 점(P)의 2i 또는 2m·i의 모든 배수를 저장하는 것으로 제한되지 않고, 최대 v 또는
Figure pct00006
, 즉 v/m을 초과하는 최소 0을 포함한 양의 정수을 저장하는데 적용될 수 있다. 사실, 레지스터(DP)에 의해 점유되는 메모리 공간을 제한하는 것이 바람직할 수 있다. 이를 위해, 필요한 경우에만 곱셈의 결과의 반복 계산에 누락 배수(missing multiple)가 계산될 수 있다. 따라서, 알고리즘(A4, A4' 및 A4")에서, 22i 또는 22i+1의 배수만이 저장될 수 있는데, 여기서 단지 배가 연산을 수행하여 바로 더 낮은 배수 DP[i]를 2와 곱하는 것에 의해 스칼라 곱셈 계산의 요구에 따라 누락 배수를 계산하는 것이 가능하다. 이 배열은 알고리즘(A5 및 A6)과 그 유도된 알고리즘에 용이하게 외삽될 수 있다. 또한 점(P)의 2i 또는 2m·i의 제1 배수만을 저장하는 것으로 고려될 수 있고, 다른 배수는 알고리즘(A3)에서와 같이 각 반복에서 계산된다.
부록 I (상세한 설명의 일체 부분이다)
알고리즘 A1 - 좌측으로부터 우측으로 수행되는 배가 및 가산 스칼라에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 이 점(P)의 사이즈의 레지스터(R)
출력: [k]·P
Step 1: R = Ø
Step 2: v-1 내지 0 범위의 s에 대해, 다음을 수행한다:
Step 2.1: R = [2]·R (DOUBLE)
Step 2.2: ks = 1인 경우에는 R = R [+] P (ADD)
Step 3: R을 되송신한다
알고리즘 A1' - 우측으로부터 좌측으로 수행되는 배가 및 가산 스칼라에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 이 점(P)의 사이즈의 2개의 레지스터(R 0 , R 1 )
출력: [k]·P
Step 1: R0 = Ø; R1 = P
Step 2: 0 내지 v-1 범위의 s에 대해, 다음을 수행한다:
Step 2.1: ks = 1인 경우에는 R0 = R0 [+] R1 (ADD)
Step 2.2: R1 = [2]·R1 (DOUBLE)
Step 3: R0을 되송신한다
"P[+]Q"는 타원 곡선의 2개의 점(P)과 점(Q)의 가산을 나타낸다.
"Ø"는 (P[+]Ø = Ø[+]P = P이 되는) Fq 체의 중성 요소(neutral element)를 나타낸다.
알고리즘 A2 - "몽고메리 사다리(Montgomery Ladder)" (좌측으로부터 우측으로 수행됨)
입력: 갈르와체(F q )에서 타원 곡선(E(에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 2개의 레지스터(R 0 , R 1 )
출력: [k]·P
Step 1: R0 = Ø; R1 = P
Step 2: v-1 내지 0 범위의 s에 대해, 다음을 수행한다:
Step 2.1: b = ks
Step 2.2: R1-b = R1-b [+] Rb (ADD)
Step 2.3: Rb = [2]·Rb (DOUBLE)
Step 3: R0을 되송신한다
부록 II (상세한 설명의 일체 부분이다)
알고리즘 A3 - "배가 및 가산" 스칼라에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 레지스터(R)
점(P)의 사이즈의 v+1개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R = Ø; DP[0] = P
Step 2: 0 내지 v-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: DP[i+1] = [2]·DP[i] (DOUBLE)
Step 2.2: ki = 1인 경우에는 R = R [+] DP[i] (ADD)
Step 3: R을 되송신한다
알고리즘 A4 - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선 E에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 레지스터(R)
DP[i]=[2 i ]·P (여기서 0 ≤ i < v)이 되는 점(P)의 사이즈의 v개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R = Ø
Step 2: 0 내지 v-1 범위의 i에 대해, 다음을 수행한다:
Step 2.2: ki = 1인 경우에는 R = R [+] DP[i] (ADD)
Step 3: R을 되송신한다
알고리즘 A5 - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 3개의 레지스터의 세트(R)
DP[i]=[2 2i ]·P (여기서, 0 ≤ i <
Figure pct00007
)이 되는 점(P)의 사이즈의
Figure pct00008
개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R[1] = Ø; R[2] = Ø; R[3] = Ø
Step 2: 0 내지
Figure pct00009
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u = k2i + 2k2i+1
Step 2.2: u ≥ 1인 경우에는 R[u] = R[u] [+] DP[i] (ADD)
Step 3: R[1] = R[1] [+] R[3] [+] [2]·(R[2] [+] R[3]) (ADD)
Step 4: R[1]을 되송신한다
Figure pct00010
는 x 이상의 최소 0을 포함한 양의 정수를 나타낸다.
알고리즘 A6 - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 2m-1 개의 레지스터(m>2 )의 세트(R)
DP[i]=[2 m·i ]·P (여기서, 0 ≤ i <
Figure pct00011
에 대해)이 되는 점(P)의 사이즈의
Figure pct00012
개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: 1 내지 2m-1 범위의 j에 대해, R[j] = Ø을 수행한다
Step 2: 0 내지
Figure pct00013
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u =
Figure pct00014
(여기서, i > v-1인 경우 ki = 0)
Step 2.2: u ≥ 1인 경우에는 R[u] = R[u] [+] DP[i] (ADD)
Step 3: R[1] =
Figure pct00015
[j]·R[j] (ADD)
Step 4: R[1]을 되송신한다
Figure pct00016
는 Fq 체에서 좌표를 갖는 타원 곡선의 점들의 그룹에 있는 점들을 가산하는 가산 연산자를 나타낸다 .
알고리즘 A4' - 배가를 저장하고 스칼라만을 가산하는 것에 의한 보안 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 레지스터(R)
DP[i]=[2 i ].P (여기서 0 ≤ i < v)이 되는 점(P)의 사이즈의 v개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R = Ø
Step 2': {0,...,v-1}에서 랜덤한 순열(σ)을 생성한다
Step 2: 0 내지 v-1 범위의 i에 대해, 다음을 수행한다:
Step 2.2: kσ(i) = 1인 경우에는 R = R [+] DP[σ(i)] (ADD)
Step 3: R을 되송신한다
알고리즘 A5' - 배가를 저장하고 스칼라만을 가산하는 것에 의한 보안 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 이 점(P)의 사이즈의 3개의 레지스터의 세트(R)
DP[i]=[2 2i ]·P (여기서 0 ≤ i <
Figure pct00017
)이 되는 점(P)의 사이즈의
Figure pct00018
개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R[1] = Ø; R[2] = Ø; R[3] = Ø
Step 2': {0,...,
Figure pct00019
-1} 내
Figure pct00020
개의 요소를 갖는 랜덤한 순열(σ)을 생성한다
Step 2: 0 내지
Figure pct00021
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u = k2σ(i) + 2k2σ(i)+1
Step 2.2: = 1인 경우에는 R[u] = R[u] [+] DP[σ(i)] (ADD)
Step 3: R[1] = R[1] [+] R[3] [+] [2]·(R[2] [+] R[3]) (ADD)
Step 4: R[1]을 되송신한다
알고리즘 A6' - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 2m-1개의 레지스터(m>2)의 세트(R)
DP[i]=[2 m·i ]·P (여기서 0 ≤ i <
Figure pct00022
)이 되는 점(P)의 사이즈의
Figure pct00023
개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: 1 내지 2m-1 범위의 j에 대해, R[j] = Ø을 수행한다
Step 2': {0,…,
Figure pct00024
-1} 내
Figure pct00025
개의 요소를 갖는 랜덤한 순열(σ)을 생성한다
Step 2: 0 내지
Figure pct00026
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u =
Figure pct00027
(여기서 i > v-1인 경우 ki = 0)
Step 2.2: u ≥ 1인 경우에는 R[u] = R[u] [+] DP[σ(i)] (ADD)
Step 3: R[1] =
Figure pct00028
[j]·R[j] (ADD)
Step 4: R[1]을 되송신한다
부록 III (상세한 설명의 일체 부분이다)
알고리즘 A4" - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
NAF 코딩된 k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 레지스터(R)
DP[i]=[2 i P (여기서 0 ≤ i < v)이 되는 점(P)의 사이즈의 v개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R = Ø
Step 2: 0 내지 v-1 범위의 i에 대해, 다음을 수행한다:
Step 2.2: ki = 1인 경우에는 R = R [+] DP[i] (ADD)
Step 2.3: ki = -1인 경우에는 R = R [-] DP[i] (ADD)
Step 3: R을 되송신한다
알고리즘 A5" - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
NAF 코딩된 k = (k v-1 k v- 2 .... k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 3개의 레지스터의 세트 R
DP[i]=[2 2i ]·P (여기서 0 ≤ i <
Figure pct00029
)이 되는 점(P)의 사이즈의
Figure pct00030
개의 레지스터(DP)의 세트
출력: [k]·P
Step 1: R[1] = Ø; R[2] = Ø; R[3] = Ø
Step 2: 0 내지
Figure pct00031
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u = k2i + 2k2i+1
Step 2.2: u ≥ 1인 경우에는 R[u] = R[u] [+] DP[i] (ADD)
Step 2.3: u ≤ -1인 경우에는 R[u] = R[-u] [-] DP[i] (ADD)
Step 3: R[1] = R[1] [+] R[3] [+] [2]·(R[2] [+] R[3]) (ADD)
Step 4: R[1]을 되송신한다
알고리즘 A6" - 배가를 저장하고 스칼라만을 가산하는 것에 의한 곱셈
입력: 갈르와체(F q )에서 타원 곡선(E)에 속하는 점(P)
NAF 코딩된 k = (k v-1 k v-2 , … k 0 ) 2 되는 v개의 비트의 전체 스칼라(k)
요구사항: 점(P)의 사이즈의 2m-1개의 레지스터(m>2 )의 세트(R)
DP[i]=[2 m·i ]·P (여기서 0 ≤ i <
Figure pct00032
)이 되는 점(P)의 사이즈의
Figure pct00033
의 레지스터(DP)의 세트
출력: [k]·P
Step 1: 1 내지 2m-1 범위의 j에 대해, R[j] = Ø을 수행한다
Step 2: 0 내지
Figure pct00034
-1 범위의 i에 대해, 다음을 수행한다:
Step 2.1: u =
Figure pct00035
(여기서 i > v-1인 경우 ki = 0)
Step 2.2: u ≥ 1인 경우에는 R[u] = R[u] [+] DP[i] (ADD)
Step 2.3: u ≤ -1인 경우에는 R[u] = R[-u] [-] DP[i] (ADD)
Step 3: R[1] =
Figure pct00036
[j]·R[j] (ADD)
Step 4: R[1]을 되송신한다

Claims (10)

  1. 프로세서(PROC)를 포함하는 전자 디바이스(DV1)에서 구현되는 암호 데이터 처리 방법으로서, 갈르와체(Galois field)에서 타원 곡선(elliptic curve)의 점과, 0을 포함한 제1 양의 정수(first whole number)를 제공하는 단계, 및 상기 제1 수와 상기 점의 스칼라 곱셈을 계산하는 단계를 포함하고, 상기 점과 상기 제1 수의 좌표는 상기 프로세서에 의해 직접 처리될 수 있는 워드(words)의 사이즈를 초과하는 사이즈를 구비하는, 암호 데이터 처리 방법에 있어서,
    상기 제1 수와 상기 점의 스칼라 곱셈을 계산하는 단계는,
    0을 포함한 일련의 양의 정수에 속하는 2의 거듭제곱(power)과 상기 점과의 스칼라 적(scalar product)으로부터 각각 초래되는 일련의 배수 점들(multiple points)을 저장하는 단계,
    상기 타원 곡선에 속하는 결과 점을 설정하는 단계,
    상기 제1 수의 비트들 각각을 한번만 고려하기 위하여 수 회 반복을 실행하는 단계로서, 각 반복은 상기 제1 수의 수 개의 비트들의 조합을 계산하는 것을 포함하고, 상기 조합이 0이 아닌 경우, 상기 제1 수의 비트들의 조합의 비트의 랭킹에 대응하는 상기 저장된 배수 점들 중 하나와 상기 결과점 사이에 가산을 포함하는, 상기 반복을 실행하는 단계, 및
    상기 제1 수와 상기 점의 스칼라 곱셈을 계산한 결과로서 상기 결과 점을 상기 프로세서의 출력에 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제1 수의 비트들은 상기 결과 점을 계산할 때 랜덤한 또는 의사-랜덤한 순서로 고려되는 것을 특징으로 하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 결과점과 상기 저장된 배수들 사이의 가산 계산은 아핀 좌표(affine coordinate)에서 수행되는 것을 특징으로 하는 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 결과점과 상기 저장된 결과 사이의 가산 계산은 투영 좌표(projective coordinate)에서 수행되는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 점의 스칼라 배수(scalar multiple)는 아핀 좌표에서 저장되고, 상기 획득된 결과는 1로 설정된 값을 가지는 제3 좌표를 상기 아핀 좌표에 가산하는 것에 의해 투영 좌표로 변환되는 것을 특징으로 하는 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 수와 상기 점의 좌표는 NAF 코딩되고, 상기 방법은, -1인 각 비트에 대해 또는 -1 이하의 상기 제1 수의 비트들의 조합에 대해, -1인 비트의 랭킹 또는 -1 이하의 상기 제1 수의 비트들의 조합의 랭킹에 대응하는 저장된 배수의 반대점과 상기 결과점 사이에 가산 계산을 포함하는 것을 특징으로 하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    개인 키로 제2 수(second number)를 랜덤하게 선택하는 단계,
    타원 곡선의 점을 베이스 점으로 선택하는 단계로서, 상기 저장된 배수는 상기 베이스 점으로부터 계산된, 상기 선택하는 단계, 및
    저장된 배수 점을 사용하여 상기 제2 수와 상기 베이스 점과의 스칼라 곱셈의 결과 점을 계산하는 단계를 포함하는,
    한 쌍의 개인 키와 공개 키를 생성하는 과정(stage)을 포함하고,
    상기 결과 점 또는 그 좌표들 중 하나의 좌표는 상기 개인 키에 대응하는 공개 키로 선택되는 것을 특징으로 하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    제2 수를 랜덤하게 선택하는 단계,
    타원 곡선의 점을 베이스 점으로 선택하는 단계로서, 상기 저장된 배수는 상기 베이스 점으로부터 계산된, 상기 선택하는 단계, 및
    상기 저장된 배수를 사용하여 상기 제2 수와 상기 베이스 점과의 스칼라 곱셈으로부터 오는 상기 결과점을 계산하는 단계,
    서명될 메시지에 해싱 함수(hashing function)를 적용하는 단계, 및
    다음 수식에 의해 메시지의 시그너처를 계산하는 단계를 포함하는,
    메시지에 서명하는 단계를 포함하고,
    x = i mod n
    y = k-1(H(m)+sx) mod n,
    여기서 x와 y는 상기 메시지(m)의 시그너처를 나타내고, i는 상기 결과 점의 좌표이고, k는 상기 제2 수이고, H(m)는 상기 메시지(m)에 적용되는 해싱 함수이고, s는 개인 키로 사용된 수이고, n은 상기 베이스 점과 n의 스칼라 적이 상기 타원 곡선의 무한대에서 점이 되는 최소 0을 포함한 양의 정수인 것을 특징으로 하는 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 따른 방법을 구현하도록 구성된 프로세서(PROC)를 포함하는 전자 디바이스(DV1).
  10. 제9항에 있어서, 휴대용이고 자율적이거나 또는 스마트 카드 유형인 것을 특징으로 하는 디바이스.
KR1020157021332A 2013-01-18 2014-01-13 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법 KR102136911B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1350431A FR3001315B1 (fr) 2013-01-18 2013-01-18 Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation
FR1350431 2013-01-18
PCT/FR2014/050054 WO2014111647A1 (fr) 2013-01-18 2014-01-13 Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation

Publications (2)

Publication Number Publication Date
KR20150107784A true KR20150107784A (ko) 2015-09-23
KR102136911B1 KR102136911B1 (ko) 2020-07-22

Family

ID=48771551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021332A KR102136911B1 (ko) 2013-01-18 2014-01-13 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법

Country Status (6)

Country Link
US (1) US9772821B2 (ko)
EP (1) EP2946284B1 (ko)
KR (1) KR102136911B1 (ko)
CN (1) CN104937537B (ko)
FR (1) FR3001315B1 (ko)
WO (1) WO2014111647A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018092981A3 (ko) * 2016-11-18 2018-08-02 부산대학교 산학협력단 고속의 naf 변환 장치 및 고속의 naf 변환 방법
KR20180089004A (ko) 2017-01-31 2018-08-08 권형석 NFC Tag 식별정보를 통한 다중서비스 제공 시스템 및 이용 방법

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9590805B1 (en) * 2014-12-23 2017-03-07 EMC IP Holding Company LLC Ladder-based cryptographic techniques using pre-computed points
US9635003B1 (en) * 2015-04-21 2017-04-25 The United States Of America As Represented By The Director, National Security Agency Method of validating a private-public key pair
US10372886B2 (en) * 2015-05-05 2019-08-06 Nxp B.V. Protecting the input/output of modular encoded white-box RSA/ECC
US10129026B2 (en) * 2016-05-03 2018-11-13 Certicom Corp. Method and system for cheon resistant static diffie-hellman security
FR3055444B1 (fr) * 2016-08-23 2022-02-04 Maxim Integrated Products Dispositif et procedes de commande de dispositif de cryptage sur courbe elliptique securises
FR3057369B1 (fr) 2016-10-07 2018-10-19 Idemia Identity And Security Procede de traitement cryptographique comprenant une multiplication d'un point d'une courbe elliptique par un scalaire
CA2984390A1 (en) * 2016-11-07 2018-05-07 Infosec Global Inc. Elliptic curve isogeny-based cryptographic scheme
CN108075889B (zh) * 2016-11-18 2021-07-16 腾讯科技(深圳)有限公司 一种降低加解密运算时间复杂度的数据传输方法及系统
CN108242994B (zh) * 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
EP3579493A1 (fr) * 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
US11251973B1 (en) * 2018-06-11 2022-02-15 Synopsys, Inc. Efficient calculation of ED25519/448 signature verification in an encryption device
IT201900025567A1 (it) 2019-12-24 2021-06-24 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000000886A1 (it) * 2020-01-17 2021-07-17 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
IT202000006475A1 (it) 2020-03-27 2021-09-27 St Microelectronics Srl Procedimento per eseguire operazioni di crittografia su dati in un dispositivo di elaborazione, corrispondenti dispositivo di elaborazione e prodotto informatico
JP2022045614A (ja) * 2020-09-09 2022-03-22 キオクシア株式会社 演算装置
CN113114462B (zh) * 2021-03-31 2022-10-04 南京航空航天大学 一种应用于ecc安全硬件电路的小面积标量乘电路
US20220417017A1 (en) * 2021-06-23 2022-12-29 Pqsecure Technologies, Llc Computer processing architecture and method for supporting multiple public-key cryptosystems based on exponentiation
GB2615081A (en) * 2022-01-26 2023-08-02 Nchain Licensing Ag Elliptic curve arithmetic in script
GB202200993D0 (en) * 2022-01-26 2022-03-09 Nchain Licensing Ag Elliptic curve arithmetic in script

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030048631A (ko) * 2001-12-12 2003-06-25 한국전자통신연구원 타원곡선 암호화 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU3073595A (en) * 1994-07-29 1996-03-04 Certicom Corp. Elliptic curve encryption systems
US6088798A (en) * 1996-09-27 2000-07-11 Kabushiki Kaisha Toshiba Digital signature method using an elliptic curve, a digital signature system, and a program storage medium having the digital signature method stored therein
KR100699836B1 (ko) * 2005-03-19 2007-03-27 삼성전자주식회사 스칼라 곱에서 dfa 대책을 위한 장치 및 방법
US20090214023A1 (en) * 2008-02-26 2009-08-27 Al-Somani Turki F Method for elliptic curve scalar multiplication
CN102109974A (zh) * 2009-12-24 2011-06-29 上海华虹集成电路有限责任公司 适用于椭圆曲线密码安全保护的随机点生成方法
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030048631A (ko) * 2001-12-12 2003-06-25 한국전자통신연구원 타원곡선 암호화 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018092981A3 (ko) * 2016-11-18 2018-08-02 부산대학교 산학협력단 고속의 naf 변환 장치 및 고속의 naf 변환 방법
KR20180089004A (ko) 2017-01-31 2018-08-08 권형석 NFC Tag 식별정보를 통한 다중서비스 제공 시스템 및 이용 방법

Also Published As

Publication number Publication date
FR3001315B1 (fr) 2016-05-06
CN104937537B (zh) 2017-10-24
US9772821B2 (en) 2017-09-26
EP2946284B1 (fr) 2017-04-26
EP2946284A1 (fr) 2015-11-25
KR102136911B1 (ko) 2020-07-22
US20150339102A1 (en) 2015-11-26
FR3001315A1 (fr) 2014-07-25
WO2014111647A1 (fr) 2014-07-24
CN104937537A (zh) 2015-09-23

Similar Documents

Publication Publication Date Title
KR102136911B1 (ko) 스칼라 또는 멱수와의 곱셈 연산을 포함하는 암호화 방법
US7864951B2 (en) Scalar multiplication method with inherent countermeasures
JP4875700B2 (ja) ランダム化されたモジュラー多項式のリダクション方法およびそのためのハードウェア
CN107040362B (zh) 模乘设备和方法
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP5488718B2 (ja) 暗号処理装置、暗号処理方法、およびプログラム
US7835517B2 (en) Encryption processing apparatus, encryption processing method, and computer program
US6914986B2 (en) Countermeasure method in an electronic component using a public key cryptography algorithm on an elliptic curve
EP2119098B1 (en) Method and apparatus for generating a public key in a manner that counters power analysis attacks
US20100322422A1 (en) Method for elliptic curve scalar multiplication using parameterized projective coordinates
CA2680050A1 (en) Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
WO2012090289A1 (ja) 暗号処理装置および方法
CN105337734B (zh) 包括错误检测的椭圆曲线加密方法
US11824986B2 (en) Device and method for protecting execution of a cryptographic operation
JP2005020735A (ja) データ処理装置におけるサイドチャネル攻撃防止
US20060282491A1 (en) Method for countermeasuring by masking the accumulators in an electronic component while using a public key cryptographic algorithm
WO2015199675A1 (en) System and method for securing scalar multiplication against differential power attacks
Sakai et al. Simple power analysis on fast modular reduction with generalized mersenne prime for elliptic curve cryptosystems
US20070121935A1 (en) Method for countermeasuring in an electronic component
Choi Lightweight ECC coprocessor with resistance against power analysis attacks over NIST prime fields
Dąbrowski et al. Generation and Implementation of Cryptographically Strong Elliptic Curves
US20240163074A1 (en) Circuit for a Combined Key Value-Dependent Exchange and Randomization of Two Values
JP2012242539A (ja) セキュリティシステム及びマイクロコンピュータ
Sakai et al. Simple power analysis on fast modular reduction with NIST recommended elliptic curves
Liu et al. A novel elliptic curve scalar multiplication algorithm against power analysis

Legal Events

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