KR101805840B1 - 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체 - Google Patents

암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체 Download PDF

Info

Publication number
KR101805840B1
KR101805840B1 KR1020160099387A KR20160099387A KR101805840B1 KR 101805840 B1 KR101805840 B1 KR 101805840B1 KR 1020160099387 A KR1020160099387 A KR 1020160099387A KR 20160099387 A KR20160099387 A KR 20160099387A KR 101805840 B1 KR101805840 B1 KR 101805840B1
Authority
KR
South Korea
Prior art keywords
montgomery
modulus
block size
multiplier circuit
product
Prior art date
Application number
KR1020160099387A
Other languages
English (en)
Inventor
우리 칼루즈니
Original Assignee
윈본드 일렉트로닉스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윈본드 일렉트로닉스 코포레이션 filed Critical 윈본드 일렉트로닉스 코포레이션
Priority to KR1020160099387A priority Critical patent/KR101805840B1/ko
Application granted granted Critical
Publication of KR101805840B1 publication Critical patent/KR101805840B1/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
    • 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/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]
    • 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/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체가 제공된다. 계산을 위한 방법은, 미리 정의된 블록크기를 가지는 몽고메리(Montgomery) 승산기 회로에서, 한 쌍의 피연산자들(A, B) 및 모듈러스(modulus)(M)를 "A와 B의 몽고메리 곱 mod M"의 계산을 위해 수신하는 단계, 상기 계산에서 사용되도록 상기 미리 정의된 블록크기의 블록들 중 n개를 특정하는 단계; 블라인딩된 모듈러스(M')의 길이가 n배의 블록크기보다 적어도 2 비트만큼 작도록 선택된 랜덤 인자(R)에 의한 모듈러스(M)의 배수로서 블라인딩된 모듈러스(M')을 계산하는 단계(M'=R*M); 및 "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력하도록 몽고메리 승산기 회로를 동작시키는 단계를 포함한다.

Description

암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체{METHOD, DEVICE AND NON-TRANSITORY COMPUTER-READABLE MEDIUM FOR CRYPTOGRAPHIC COMPUTATION}
본 개시는 계산 회로 및 그것의 동작 방법에 관한 것이며, 보다 상세하게는 효율적인 모듈러 승산(modular multiplication)과 관계된 계산 회로에 관한 것이다.
큰 모듈러스(modulus) 값들을 갖는 거듭제곱(exponentiation) 및 승산을 포함하는 모듈러 산술을 사용하는, RSA 및 DSA와 같은 다수의 중요한 암호체계들(cryptosystems)이 존재한다. 모듈러 곱(product)을 연산하는 고전적인 방법은, 우선 비-모듈러(non-modular) 정수로서 피연산자를 승산하여 그 결과의 모듈러스를 획득하는 것과 관계되고, 이는 모듈러 리덕션(reduction)으로 지칭된다. 그러나, 모듈러 리덕션은 길이가 긴 나눗셈과 동등한, 과도한 계산이다.
이러한 이유로, 몽고메리(Montgomery) 모듈러 승산(또는 단순하게 몽고메리 승산)으로 알려진 보다 효율적인 방법을 사용하는 것은, 암호(cryptographic) 계산에서 흔한 것은 아니다. 몽고메리 모듈러 승산을 수행하기 위하여, 피연산자들은 몽고메리 리덕션으로서 알려진 알고리즘을 사용하여 특수한 몽고메리 형식으로 변환된다. 몽고메리 형식의 피연산자들의 승산은, (비록 결과적인 곱이 모듈러스보다 크다면, 보다 단순한 조건부 리덕션이 여전히 필요하지만) 종래 산술에서 요구되는 바와 같은 모듈러 리덕션에 대한 필요성을 회피한다. 몽고메리 리덕션 및 승산 알고리즘들은, 예컨대 본 명세서에서 참조되어 포함되는, 저자 Menezes et al, "Handbook of Applied Cryptograph (1996)"의 섹션 14.4.2, 페이지 600-603에 설명되어 있다.
계산들에 사용된 비밀 값들을 추출하는 것을 시도하는 공격들에 대한 취약성을 감소시키기 위하여, 블라인딩 기법(blinding technique)들이 암호 연산들에 흔히 적용된다. 다양한 블라인딩 기법들이 몽고메리 승산을 포함하는 모듈러 계산들에 적용되어 왔다. 예를 들면, 미국 등록 특허 제8,422,671호는 복수의 몽고메리 승산들이 비밀 키를 사용하여 암호문(ciphertext)을 해독하기 위해 모듈러 거듭제곱에서 사용되는 방법을 설명한다. 암호문은 난수(random number)로 곱해짐으로써 블라인딩되고, 최종 값은 블라인딩을 제거하기 위해 역원(inverse element)에 의해 곱해진다. 미국 등록 특허 제8,738,927호는 유사하게, 블라인딩이 몽고메리 리덕션과 결합된 기법을 설명한다.
본 명세서에서 어떠한 것도 본 개시의 임의의 부분에서 선행 기술에서의 지식에 대한 인정으로 해석되어서는 아니된다. 더욱이, 본 출원에서 임의의 문서에 대한 인용이나 확인은, 그러한 문서가 본 개시에 대한 선행 기술로서 활용가능하다거나, 임의의 참조가 당 기술분야에서 통상의 일반적인 지식의 일부를 형성한다는 것을 인정하는 것이 아니다.
이하에서 본 명세에 설명된 본 개시의 실시예들은, 몽고메리 승산의 성능을 단순화하는 동시에 공격들에 대한 저항성을 증진시키는데 유용한 방법들 및 장치들을 제공한다.
본 개시의 일 실시예에서, 암호 계산 방법은, 미리 정의된 블록크기를 가지는 몽고메리(Montgomery) 승산기 회로에서, 한 쌍의 피연산자들(A, B) 및 모듈러스(M)를 "A와 B의 몽고메리 곱 mod M"의 계산을 위해 수신하는 단계를 포함한다. 미리 정의된 블록크기의 블록들 중 n개가 본 계산에서의 사용을 위해 특정된다. 블라인딩된(blinded) 모듈러스(M')는, M'의 길이가 n배의 블록크기보다 적어도 2 비트만큼 작도록 선택된 랜덤 인자(random factor)(R)에 의한 모듈러스(M)의 배수로서 계산된다(M' = R*M). 몽고메리 승산기 회로는 "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력하도록 동작된다.
통상적으로, 몽고메리 승산기 회로를 동작시키는 것은, "A와 B의 몽고메리 곱 mod M'"과 동등한 결과를 그 결과의 조건부 모듈러 리덕션의 수행 없이 계산 루프의 n회 반복들이 완료되면 생성하도록, n회 반복들을 수행하는 것을 포함한다. 일부 실시예들에서, 그 결과는 조건부 모듈러 리덕션의 수행 없이 추가적인 연산을 위한 몽고메리 승산기 회로에 대한 피연산자로서 전달된다.
개시된 일 실시예에서, 본 방법은 적어도 하나의 추가적인 랜덤 인자(R')를 선택하는 단계, 및 모듈러스(M)와 적어도 하나의 추가적인 랜덤 인자(R')의 곱과 일치하는 블라인딩 값(R'*M)의 가산에 의해서 피연산자들(A, B) 중 적어도 하나를 블라인딩 하는 단계를 포함한다.
본 개시의 일 실시예에서, 암호 계산 장치는 한 쌍의 피연산자들(A, B) 및 모듈러스(M)를 수신하도록 구성된 입력들을 포함하고, 몽고메리 승산기 회로는 미리 정의된 블록크기를 가지고, 한 쌍의 피연산자들(A, B) 및 모듈러스(M)를 입력들로서 수신하도록 구성되고, 몽고메리 곱의 계산에서 미리 정의된 블록크기의 블록들 중 특정된 n개를 사용하여 "A와 B의 몽고메리 곱 mod M"과 일치하는 출력을 생성하도록 구성된다. 몽고메리 승산기 회로는, 모듈러스(M)와 랜덤 인자(R)의 곱(M' = R*M)으로 블라인딩된 모듈러스(M')를 계산하도록 구성된 승산기를 포함하고, 이 때 R은 M'의 길이가 n배의 블록크기보다 적어도 2 비트만큼 작도록 선택되고, 몽고메리 승산기 회로는 "A와 B의 몽고메리 곱 mod M"을 계산하고 출력하도록 동작한다.
본 개시의 일 실시예에서, 비일시적이고 컴퓨터로 독출가능한 매체(non-transitory computer-readable medium)는 명령어들을 저장하고, 명령어들은, 미리 정해진 블록크기를 갖는 프로그램가능한(programmable) 프로세서에 의해서 독출되는 경우, 프로세서로 하여금, 한 쌍의 피연산자들(A, B) 및 모듈러스(M)를 미리 정의된 블록크기의 블록들 중 특정된 n개를 사용하여 "A와 B의 몽고메리 곱 mod M"의 계산을 위하여 수신하게 하고, M'의 길이가 n배의 블록크기보다 적어도 2 비트만큼 작도록 선택된 랜덤 인자(R)에 의한 모듈러스(M)의 배수로서 블라인딩된 모듈러스(M')를 계산하게 하며(M' = R*M), "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력하게 한다.
본 개시의 이상의 특징들 및 이점들을 더욱 이해할 수 있도록, 첨부된 도면들과 함께 몇몇의 실시예들이 이하에서 상세하게 설명된다.
첨부된 도면들은 본 개시의 보다 나은 이해를 제공하기 위하여 포함되고, 본 명세서의 일부에 포함되고 그 일부를 구성한다. 도면들은 설명과 함께 본 개시의 실시예들을 예시하고, 본 개시의 원리들을 설명하는 기능을 한다.
도 1은 본 개시의 일 실시예에 따라 암호 장치에서 회로 구성요소들을 개략적으로 예시하는 블록도이다.
도 2는 본 개시의 일 실시예에 따라 모듈러 승산 방법을 개략적으로 예시하는 순서도이다.
본 개시의 바람직한 실시예들, 첨부된 도면들에 예시된 예시들에 대하여 상세하게 언급될 것이다. 가능한 한 동일한 참조 번호들이 도면들 및 설명이 동일하거나 비슷한 부분들을 가리키기 위하여 사용된다.
종래의 몽고메리 승산은, 최상위(most significant) 블록의 계산 이후 조건부 리덕션이 뒤따르는, 비트들의 연속적인 블록들에 대한 결과의 반복적인 계산과 관련된다. 그 결과가 지정된 모듈러스(M)보다 크면, 그 결과로부터 모듈러스를 감산함으로써 리덕션된다. 이러한 조건부 리덕션은 계산의 복잡도를 증가시키고, 계산을 수행하는 장치의 부채널 공격(side channel attack)들에 대한 취약성을 증가시키는 것으로도 확인된 바 있다.
본 명세서에서 설명되는 본 개시의 실시예들은, 조건부 리덕션의 최종 단계에 대한 필요성을 경감시킨, 개선된 몽고메리 승산 기법들뿐만 아니라 그러한 기법들을 구현하는 장치들을 제공한다. 이러한 기법들은 신중하게 선택된 랜덤 인자를 가지고 블라인딩하는 것을 활용하며, 이에 따라 계산의 보안성을 증진하면서도 승산기의 설계를 단순화한다.
본 개시의 예시적 실시예들 중 하나에서, 몽고메리 승산기 회로는, 예컨대 32 비트와 같은 미리 정의된 블록크기를 가지고, 한 쌍의 피연산자들(A, B) 및 모듈러스(M)을 "A와 B의 몽고메리 곱 mod M"의 계산을 위해 입력으로서 수신한다. 몽고메리 승산기 회로는 미리 정의된 블록크기의 블록들 중 특정된 n개(즉, 길이 m = n * 블록크기 또는 자세하게는 본 예시에서 m = 32n 비트의 정수들을 사용하여)에 대한 계산을 수행하도록 구성된다. 블라인딩을 위하여, 회로는 랜덤 인자(R)에 의한 상기 특정된 모듈러스(M)의 배수인 블라인딩된 모듈러스(M')를 계산하고(M' = R*M), 계산은 "mod M'"을 수행한다. 최종 결과는 직관적 방식으로 "mod M"으로 리덕션될 수 있고, 중간 계산들에서 블라인딩된 모듈러스(M')의 사용에 의해 영향 받지 아니한다.
암호 계산들은 일반적으로, 공격의 난이도를 증가시키기 위하여, 모든 이용가능한 비트들을 사용하도록 설계된다. 그러나 본 예시적인 실시예들에서, 랜덤 인자(R)는, M'의 길이가 n배의 블록크기보다 적어도 2 비트만큼 작도록 각각의 계산에 대하여 선택된다. (또한, 본 예시에서 본 조건은 M'에서의 비트들의 개수가 불과 m-2 = 32n-2임을 의미한다.) 그 다음에 몽고메리 승산기 회로는 "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력한다. 구체적으로, 본 회로는, "A와 B의 몽고메리 곱 mod M"과 동등한 결과를 계산 루프의 n회 반복들의 완료되면 생성하도록, n회 반복들을 수행한다. M'의 길이를 제한하기 위한 랜덤 인자(R)의 적절한 선택을 고려할 때, 그 결과의 조건부 모듈러 리덕션에 대한 필요성은 없다.
보다 자세하게는, M'의 비트 길이가 m-2이하인 한, 피연산자들(A, B)은 m-1이하의 비트 길이들을 가지고, 아래와 같이 나타낼 수 있다.
1) 계산 루프의 각 반복에서 중간 계산 결과들의 길이들은 m을 넘지 아니할 것이다.
2) 최종 결과의 길이가 m-1 비트을 초과할 확률은 무시할 수 있을 정도로 작다(2-128보다 작은 확률).
상기 제1 요점은, 불과 m 비트만이 중간 계산 결과들의 저장을 위하여 회로에서 할당될 필요가 있고, 계산에서 오버플로우(overflow) 비트들을 체크하고 처리할 필요가 없음을 의미한다. 상기 제2 요점은, 계산의 결과가 어떠한 조건부 모듈러 리덕션의 수행 없이도 추가적인 계산을 위해 몽고메리 승산기 회로에 대한 피연산자로서 피드백될 수 있음을 의미한다. 이러한 후자의 요점은, 예컨대 다수의 연속적인 승산들을 필요로 하는 거듭제곱 연산들에서 중요하다.
최종 결과가 m-1 비트를 초과하는 것에 대한 낮은 확률은 개시된 기법들의 실제 어플리케이션들에서 중요한 것은 아니다. 암호 시스템들은, 노이즈 또는 시도된 결함 주입(fault injection) 공격들에 기인하여 발생할 수 있는 오류들에 대한 어느 정도의 내성(tolerance)을 가지도록 흔히 설계된다. 본 명세서에서 설명되는 몽고메리 승산기 회로의 단순한 설계가 명백한 결함을 유발하는 (확률 2- 128으로) 그러한 드문 경우들에서, 시스템은 일반적으로 반복 계산을 발동할 것이다. 반복 계산은 상이한 랜덤 인자(R)로 수행될 것이고, 그 결과 반복된 오류의 확률은 극미하다.
도 1은, 본 개시의 일 실시예에 따라, 암호 장치(20)에서 회로 구성요소들을 개략적으로 예시하는 블록도이다. 도면에 도시된 회로 구성요소들은 통상적으로 집적 회로(integrated circuit; IC) 장치에서 하드웨어 논리 회로들로서 구현되나, 다르게는 적합한 프로그램가능한 프로세서 상에서 소프트웨어로 구현될 수도 있다. 묘사된 회로들은, 예컨대 암호화(encryption), 복호화(decryption) 및/또는 인증(authentication)과 관계된 연산들을 수행하기 위하여, 매우 다양하고 상이한 구성들 및 어플리케이션들에서 암호 장치에 집적될 수 있는 몽고메리 승산 기능을 수행한다. 몽고메리 승산과 직접적으로 관련된 장치(20)의 구성요소들만이 도면에 도시되었으며, 장치(20)의 다른 부품들과 함께 이러한 구성요소들을 집적하는 것은 통상의 기술자에게 명백할 것이다.
장치(20)는 전술된 그러한 종류의 단순화된 연산을 위하여, 기술분야에서 공지된 승산기와 비교하여 변형된 몽고메리 승산기(22)를 포함한다. 구체적으로, 모듈러스의 블라인딩이, 결과의 조건부 리덕션이 필요 없도록 선택된 랜덤 인자로 본 실시예에 적용된다.
승산기(22)는, 위에서 정의된 바와 같이 m-1 비트까지의 임의의 길이일 수 있는 피연산자들(A, B)을 수신하기 위한 (예컨대, 메모리 어레이에서의 위치들로서 구현되는) 한 쌍의 피연산자 입력들(24, 26), 및 몽고메리 곱(A ⊙ B = A * B * 2-m % M)을 계산하는데 사용될 모듈러스(M)의 값을 수신하는 모듈러스 입력(28)을 가진다. (심볼 "%"는 "모듈로(modulo)"를 나타내기 위하여 본 설명 및 도면들에서 사용된다.) 승산기(22)는 계산의 결과를 출력(30)(예컨대 메모리 어레이에서의 다른 위치)으로 출력하고, 출력(30)의 내용은 장치(20)의 다른 부품들에 전해지거나, 거듭제곱에서 사용되는 다수의 연속적인 승산들과 같은 그러한 후속하는 계산들을 위하여 입력들(24, 26) 중 하나 또는 모두로 피드백될 수 있다.
승산기(22)는, 이하 본 명세서에서 설명되는 반복적인 계산들을 수행하기 위하여 적합한 상호연결들을 갖는, 적어도 하나의 가산기(32) 및 적어도 하나의 승산기(34)를 포함하는 산술 회로들을 포함한다. 가산기 및 승산기는 통상적으로, 32 비트와 같이 미리 정의된 크기의 블록들 상에서 동작한다. 승산기(22)는, 블라인딩된 모듈러스(M') 및 중간 계산 값들을 보유하기 위하여, (입력들 및 출력들과 동일한 메모리 어레이의 일부분도 가능한) 하나 이상의 내부 어레이들(36)을 포함한다. 어레이(36)는 통상적으로, 어레이(36)의 총 길이가 m 비트가 되도록, 특정된 블록 길이의 n개 블록들(37)을 보유하고, 본 예시에서는 앞서 언급된 바와 같이 m = 32n이다.
승산기(22)는 블라인딩된 모듈러스(M' = R*M)을 사용하여 A⊙B의 계산을 수행하고, 이때 R은 랜덤 생성기(38)에 의해 선택된 난수(random number)이다. 랜덤 생성기는, 모듈러스 입력(28)에서 M의 값이 주어지면, 곱(R*M)이 m-2 비트 길이를 넘지 않게 R을 제한하도록 구성된다. (다시 말해서, M'의 적어도 2개의 최상위 블록은 영(zero)일 것이다). 랜덤 생성기(38)는 하나 이상의 추가적인 랜덤 인자들(R')을 생성할 수도 있고, 랜덤 인자들(R')은, R'*M 형의 블라인딩 값들의 가산에 의해서 피연산자들(A, B) 중 하나 또는 모두를 블라인딩하는데 사용된다.
도 2는 본 개시의 일 실시예에 따라, 모듈러 승산을 위한 방법을 개략적으로 예시하는 순서도이다. 본 방법은, 명료성과 편의성을 위하여 도 1에 도시된 장치(20)의 구성요소들을 참조하여 이하 본 명세서에서 설명된다. 이와 달리, 본 방법은 앞서 언급된 바와 같이, 다른 하드웨어 구성들이나 소프트웨어에서 필요한 변경을 가하여 수행될 수 있다. 그러한 모든 대안적인 구현들은 본 개시의 범위 내에 있는 것으로 간주된다.
먼저, 입력 단계(40)에서 승산기(22)는, 피연산자들(A, B) 및 모듈러스(M)을 입력들(24, 26, 28)을 통해서 수신한다. 피연산자들은 아래 형식의 정수들이다.
Figure 112016075862111-pat00001
여기서 계수들(ai, bi)은 특정된 블록 길이(본 예시에서 32 비트)의 비트들의 블록들이며, w=232이다. 모듈러스 블라인딩 단계(42)에서 모듈러스(M)은, 블라인딩된 값(M')이 불과 m-2 비트를 포함하도록 (M의 값에 의존하여) 적합한 한계를 초과하지 않게 하기 위하여 제한된, 랜덤 값(R)으로 승산됨으로써 블라인딩된다. 블라인딩된 모듈러스는 아래 형식을 가진다.
Figure 112016075862111-pat00002
여기서 계수들 mi는 32 비트의 블록들과 비슷하다.
선택적으로, 장치(20)의 보안을 더욱 증진하기 위하여, 피연산자 블라인딩 단계(44)에서, 피연산자들(A, B)은 R'*M 형의 개별적인 값들의 가산에 의해서 블라인딩되고, 이때 R'은 다른 랜덤 값이다. 랜덤 값들(R')은 통상적으로, 승산에 실제로 사용되는 피연산자들이 m-1 비트 길이를 초과하지 않도록, 즉 적어도 피연산자들의 최상위 비트가 영(zero)이 되도록 제한된다.
승산기(22)는 피연산자들 및 중간 결과들의 불록들에 대한 반복적인 연산에 의해서 곱(A⊙B)을 계산한다. 처음에는, 파라미터 설정 단계(46)에서, 초기 결과 파라미터(C0) 및 모듈러스 파라미터(μ)가 C0 = 0 및 μ=-m0 - 1%w로 설정된다. 초기화 단계(48)에서, 반복 인덱스(i)가 1로 설정된다. 그 다음에 승산기(22)는 i=1, ..., n 각각의 값에 대하여 연속적으로 아래 단계들을 수행한다.
단계 50:
Figure 112016075862111-pat00003
단계 52:
Figure 112016075862111-pat00004
단계 54:
Figure 112016075862111-pat00005
각각의 반복 이후에, 단계 56에서 승산기는 i의 값을 체크하고, 그 다음에 단계 58에서 반복들이 i=n에서 완료될 때까지 i를 증가시킨다.
반복들이 완료되면, 출력 단계(60)에서 승산기(22)는 출력(30)으로 결과(C = Cn)를 출력한다. 전술된 바와 같이, 어떠한 조건부 리덕션도 수행되지 아니하며, 값 C의 길이는 높은 확률로 m-1보다 크지 않다.
앞서 언급된 바와 같이, 본 개시의 대안적인 실시예에서, 전술된 단계들 및 동작들이 소프트웨어 프로그램 명령어들의 제어 하에서 적합한 프로그램가능한 프로세서에 의해서 수행된다. 소프트웨어는 전자적 형태로, 예를 들면 네트워크로 프로세서에 다운로드될 수 있다. 추가적으로 또는 대안으로, 소프트웨어는, 광학, 자기 혹은 전자적 기억 매체와 같은, 실재하는 비일시적 컴퓨터로 독출가능한 매체에 저장될 수 있다.
전술된 실시예들은 예시의 방식으로 설명되었으며, 본 개시는 위에서 특별히 도시되고 설명된 것에 제한되지 아니하는 점은 인정되어야 할것이다. 오히려, 본 개시의 범위는 전술된 다양한 특징들뿐만 아니라, 앞선 설명을 읽고 나서 통상의 기술자에 의해 일어나고 선행 기술에 개시되지 아니한, 그것들의 변경들 및 변형들의 조합들(combinations) 및 부조합들(subcombinatinons) 양자를 포함한다.
다양한 변형들 및 변경들이 본 개시의 범위나 사상으로부터 벗어나지 아니하고서 본 개시의 구조에 가해질 수 있는 점은 통상의 기술자에게 분명할 것이다. 이상의 관점에서, 그것들이 이하의 청구항들 및 그것들의 균등물의 범위 내에 속한다는 것으로 하여, 본 개시는 본 개시의 변형들 및 변경들을 커버하고자 한다.

Claims (12)

  1. 미리 정의된 블록크기를 가지는 몽고메리(Montgomery) 승산기 회로에서, 한 쌍의 피연산자들(A, B) 및 모듈러스(modulus)(M)를 "A와 B의 몽고메리 곱 mod M"의 계산을 위해 수신하는 단계;
    n이 1보다 큰 정수일 때, 상기 계산에서 사용되도록 상기 미리 정의된 블록크기의 블록들 중 n개를 특정하는 단계;
    블라인딩된(blinded) 모듈러스(M')의 길이가 n배의 상기 블록크기보다 적어도 2 비트만큼 작도록 선택된 랜덤 인자(R)에 의한 모듈러스(M)의 배수로서 상기 블라인딩된 모듈러스(M')을 계산하는 단계; 및
    "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력하도록 상기 몽고메리 승산기 회로를 동작시키는 단계를 포함하는 암호 계산 방법.
  2. 제1항에 있어서,
    상기 몽고메리 승산기 회로를 동작시키는 단계는, 상기 "A와 B의 몽고메리 곱 mod M"과 동등한 결과를 상기 결과의 조건부 모듈러 리덕션(modular reduction)의 수행 없이 계산 루프의 n회 반복들이 완료되면 생성하도록, 상기 n회 반복들을 수행하는 단계를 포함하는 것을 특징으로 하는 암호 계산 방법.
  3. 제2항에 있어서,
    상기 조건부 모듈러 리덕션의 수행 없이 추가적인 연산을 위해 상기 결과를 피연산자로서 상기 몽고메리 승산기 회로에 입력하는 단계를 더 포함하는 암호 계산 방법.
  4. 제1항에 있어서,
    적어도 하나의 다른 랜덤 인자(R')를 선택하는 단계; 및
    상기 모듈러스(M)와 상기 적어도 하나의 랜덤 인자(R')의 곱과 일치하는 블라인딩 값의 가산에 의해서, 상기 피연산자들(A, B) 중 적어도 하나를 블라인딩하는 단계를 더 포함하는 암호 계산 방법.
  5. 한 쌍의 피연산자들(A, B) 및 모듈러스(modulus)(M)를 수신하도록 구성된 입력들; 및
    미리 정의된 블록크기를 가지고, 상기 한 쌍의 피연산자들(A, B) 및 상기 모듈러스(M)을 입력들로서 수신하도록 구성되고, n이 1보다 큰 정수 일 때 A와 B의 몽고메리(Montgomery) 곱의 계산에서 상기 미리 정의된 블록크기의 블록들 중 특정된 n개를 사용하여 "A와 B의 몽고메리 곱 mod M"과 일치하는 출력을 생성하도록 구성된, 몽고메리 승산기 회로를 포함하고,
    상기 몽고메리 승산기 회로는, 랜덤 인자(R)과 상기 모듈러스(M)의 곱으로서 블라인딩된(blinded) 모듈러스(M')을 계산하도록 구성된 승산기를 포함하고,
    상기 랜덤 인자(R)는, M'의 길이가 n배의 상기 블록크기보다 적어도 2 비트만큼 작도록 선택되고,
    상기 몽고메리 승산기 회로는 상기 "A와 B의 몽고메리 곱 mod M"을 계산하고 출력하도록 동작하는 것을 특징으로 하는 암호 계산 장치.
  6. 제5항에 있어서,
    상기 몽고메리 승산기 회로는, 상기 "A와 B의 몽고메리 곱 mod M"과 동등한 결과를 상기 결과의 조건부 모듈러 리덕션(modular reduction)의 수행 없이 계산 루프의 n회 반복들이 완료되면 생성하도록, 상기 n회 반복들을 수행하도록 구성되는 것을 특징으로 하는 암호 계산 장치.
  7. 제6항에 있어서,
    상기 몽고메리 승산기 회로는, 상기 조건부 모듈러 리덕션의 수행 없이, 상기 장치에 의해 추가적인 연산을 위하여 상기 입력들 중 적어도 하나에 피연산자로서 상기 결과를 입력하도록 구성되는 것을 특징으로 하는 암호 계산 장치.
  8. 제5항에 있어서,
    상기 몽고메리 승산기 회로는, 상기 모듈러스(M)와 적어도 하나의 추가적인 랜덤 인자(R')의 곱과 일치하는 블라인딩 값의 가산에 의해서, 상기 피연산자들(A, B) 중 적어도 하나를 블라인딩하도록 구성되는 것을 특징으로 하는 암호 계산 장치.
  9. 명령어들을 저장하는 비일시적이고 컴퓨터로 독출가능한 매체로서,
    상기 명령어들은, 미리 정해진 블록크기를 가지는 프로그램가능한 프로세서에 의해서 독출될 때 프로세서가,
    한 쌍의 피연산자들(A, B) 및 모듈러스(modulus)(M)을, 상기 미리 정해진 블록크기의 블록들 중 특정된 n개를 사용하여 "A와 B의 몽고메리(Montgomery) 곱 mod M"의 계산을 위하여 수신하게 하고,
    블라인딩된(blinded) 모듈러스(M')의 길이가 n배의 상기 블록크기보다 적어도 2 비트만큼 작도록 선택된 랜덤 인자(R)에 의한 상기 모듈러스(M)의 배수로서 상기 블라인딩된 모듈러스(M')을 계산하게 하고,
    "A와 B의 몽고메리 곱 mod M'"을 계산하고 출력하게 하며,
    상기 n은 1보다 큰 정수인 것을 특징으로 하는 비일시적이고 컴퓨터로 독출가능한 매체.
  10. 제9항에 있어서,
    상기 명령어들은 상기 프로세서가, 상기 "A와 B의 몽고메리 곱 mod M"과 동등한 결과를 상기 결과의 조건부 모듈러 리덕션(modular reduction)의 수행 없이 계산 루프의 n회 반복들이 완료되면 생성하도록, 상기 n회 반복들을 수행하게 하는 것을 특징으로 하는 비일시적이고 컴퓨터로 독출가능한 매체.
  11. 제10항에 있어서,
    상기 명령어들은 상기 프로세서가, 상기 조건부 모듈러 리덕션의 수행 없이 추가적인 몽고메리 승산에 대한 피연산자로서 상기 결과를 입력하게 하는 것을 특징으로 하는 비일시적이고 컴퓨터로 독출가능한 매체.
  12. 제9항에 있어서,
    상기 명령어들은 상기 프로세서가, 상기 모듈러스(M)와 적어도 하나의 추가적인 랜덤 인자(R')의 곱과 일치하는 블라인딩 값의 가산에 의해서 피연산자들(A, B) 중 적어도 하나를 블라인딩하게 하는 것을 특징으로 하는 비일시적으로 컴퓨터로 독출가능한 매체.
KR1020160099387A 2016-08-04 2016-08-04 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체 KR101805840B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160099387A KR101805840B1 (ko) 2016-08-04 2016-08-04 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160099387A KR101805840B1 (ko) 2016-08-04 2016-08-04 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체

Publications (1)

Publication Number Publication Date
KR101805840B1 true KR101805840B1 (ko) 2017-12-07

Family

ID=60920576

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160099387A KR101805840B1 (ko) 2016-08-04 2016-08-04 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체

Country Status (1)

Country Link
KR (1) KR101805840B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101610917B1 (ko) 2010-03-08 2016-04-11 삼성전자주식회사 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101610917B1 (ko) 2010-03-08 2016-04-11 삼성전자주식회사 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Batina, Lejla, and Geeke Muurling. "Montgomery in practice: How to do it more efficiently in hardware." CT-RSA. 2002.
Schindler, Werner. "Exclusive exponent blinding may not suffice to prevent timing attacks on RSA." International Workshop on Cryptographic Hardware and Embedded Systems. Springer, 2015
Varela, David Tinoco. "HOW TO AVOID THE N-1 ATTACK WITHOUT COSTLY IMPLEMENTATIONS." International Journal of Network Security & Its Applications 4.4 (2012)

Similar Documents

Publication Publication Date Title
CN110363030B (zh) 用于执行基于格的密码操作的方法和处理设备
TWI448963B (zh) 用於密碼系統之以中國餘數定理為基礎之計算方法
EP2962185B1 (en) Random number generator and stream cipher
JP5378579B2 (ja) フォールディングを用いるモジュール削減
EP3115887B1 (en) Method, device and non-transitory computer-readable medium for cryptographic computation
US20080240443A1 (en) Method and apparatus for securely processing secret data
JP4086503B2 (ja) 暗号演算装置及び方法並びにプログラム
EP3596876B1 (en) Elliptic curve point multiplication device and method for signing a message in a white-box context
US10721056B2 (en) Key processing method and device
JP2019515353A (ja) 暗号化べき乗アルゴリズムへのセーフ−エラーフォールトインジェクション攻撃に対する対策
US20160149708A1 (en) Electronic signature system
KR101805840B1 (ko) 암호 계산을 위한 방법, 장치 및 비일시적이고 컴퓨터로 독출가능한 매체
CN107040370B (zh) 一种用于产生实施模幂运算的代码的装置
US7974409B2 (en) Changing the order of public key cryptographic computations
US7085791B2 (en) Method and apparatus for generating a pseudo random number
EP3809628B1 (en) Method and system for selecting a secure prime for finite field diffie-hellman
KR20170113268A (ko) 논-모듈러 승산기, 논-모듈러 승산 방법 및 계산 장치
US20170353294A1 (en) Electronic calculating device
KR101112570B1 (ko) 전력 분석 및 오류 주입 공격에 안전한 디지털 서명 장치, 방법 및 그 기록 매체
JP2012242539A (ja) セキュリティシステム及びマイクロコンピュータ
WO2023194309A1 (en) Method for performing polynomial multiplication operations
WO2024056778A1 (en) Method for performing polynomial multiplication operations
KR20050064107A (ko) 공개키 암호화 장치에 적합한 소수 생성 방법 및 장치
JP2003157001A (ja) 正則行列を用いた公開鍵暗号化復号化システム及びその装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant