KR100808953B1 - 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 - Google Patents

모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 Download PDF

Info

Publication number
KR100808953B1
KR100808953B1 KR1020060045819A KR20060045819A KR100808953B1 KR 100808953 B1 KR100808953 B1 KR 100808953B1 KR 1020060045819 A KR1020060045819 A KR 1020060045819A KR 20060045819 A KR20060045819 A KR 20060045819A KR 100808953 B1 KR100808953 B1 KR 100808953B1
Authority
KR
South Korea
Prior art keywords
modular
data
bits
mod
register
Prior art date
Application number
KR1020060045819A
Other languages
English (en)
Other versions
KR20070112656A (ko
Inventor
오딜
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020060045819A priority Critical patent/KR100808953B1/ko
Publication of KR20070112656A publication Critical patent/KR20070112656A/ko
Application granted granted Critical
Publication of KR100808953B1 publication Critical patent/KR100808953B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • 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/722Modular multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/08Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means
    • G06K19/10Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means at least one kind of marking being used for authentication, e.g. of credit or identity cards
    • G06K19/14Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means at least one kind of marking being used for authentication, e.g. of credit or identity cards the marking being sensed by radiation
    • G06K19/145Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code using markings of different kinds or more than one marking of the same kind in the same record carrier, e.g. one marking being sensed by optical and the other by magnetic means at least one kind of marking being used for authentication, e.g. of credit or identity cards the marking being sensed by radiation at least one of the further markings being adapted for galvanic or wireless sensing, e.g. an RFID tag with both a wireless and an optical interface or memory, or a contact type smart card with ISO 7816 contacts and an optical interface or memory

Landscapes

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

Abstract

모듈러 곱셈 방법 및 상기 곱셈 방법을 수행할 수 있는 스마트카드가 개시된다. 상기 모듈러 곱셈 방법은 모듈러스 레지스터를 통하여 다수의 k비트(단, k는 자연수)들로 구성된 모듈러스 N (단, N은 자연수)을 수신하는 단계; 각각 다수의 k비트들의 절반의 비트들로 구성된 제1데이터(A)와 제2데이터(B)에 대하여, 제1오퍼랜드 레지스터를 통하여 A를 수신하고, 제2오퍼랜드 레지스터를 통하여 B를 수신하는 단계; A, B, k와 N에 기초하여 제1모듈러연산(S= A·B·2-p·(c+16) mod N)을 수행하는 단계; k비트들에 기초하여 미리 연산된 값(RH= 22p·(c+16) mod N)을 제1오퍼랜드 레지스터에 저장하는 단계; S를 제2오퍼랜드 레지스터에 저장하는 단계, 및 S와 RH에 기초하여 제2모듈러연산 M= S·RH·2-P·(C+16) mod N을 수행하여 A·B에 해당하는 연산결과인 M을 출력하는 단계를 구비하며, c는 모듈러연산이 수행되는 단위 블럭내의 비트 수이고, p는 블럭의 수 및 k는 p·c이다. 상기모듈러곱셈방법 및 상기 곱셈방법을 수행하는 스마트카드를 이용함으로써 암호화 시스템에서 A·B를 연산할 수 있어, 연산속도를 향상시킬 수 있다.
모듈러곱셈, 몽고메리

Description

모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는 스마트카드{Modular multiplication method and smart card using the method}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 모듈러곱셈방법을 수행하는 기능을 구비한 스마트 카드이다.
도 2는 본 발명의 실시예에 따른 모듈러곱셈방법을 나타내는 흐름도이다.
본 발명은 모듈러 곱셈방법 및 상기 곱셈 방법을 수행할 수 있는 스마트카드에 관한 것으로서, 보다 상세하게는 공개키 암호화/복호화 및 디지털 서명 시스템에서 필요로 하는 모듈러 연산을 위해 스마트 카드에서 사용되는 모듈러 곱셈 방법과 상기 곱셈 방법을 수행할 수 있는 스마트카드에 관한 것이다.
공개키 암호화/복호화 및 디지털 서명 시스템에서 사용되는 암호화 알고리즘은 디피(Diffie)와 헬만(Hellman)에 의해 도입된 공개키 암호시스템(Public Key Cryptosystem), 이산대수 문제에 근거한 엘가말(Elgamal)형의 암호시스템과 소인수 분해 문제에 근거한 RSA(Revest Shamir Adleman) 암호시스템 등이 있다.
대다수의 암호화/복호화 시스템들은 암호화, 복호화에 사용하는 숫자 "키"를 사용하는데, 키 관리 및 디지털서명을 구현하기 어려운 초기의 암호시스템인 관용(대칭형) 암호시스템(Conventional or symmetric cryptosystem)과는 달리 디피(Diffie)와 헬만(Hellman)에 의해 도입된 공개키 암호 시스템(Public Key Cryptosystem)에서는 수학적으로 풀기 어려운 문제의 일방성을 이용하여 공개키와 비밀키를 계산하고, 공개키는 누구나 이용할 수 있게 공개되고 비밀키만이 각 사용자에 의해 관리된다. 따라서, 공개된 상대방의 공개키를 가진 사용자는 누구나 그 상대방과 비밀통신을 할 수 있게 된다.
상기 디피와 헬만의 암호화 시스템 외에 대표적인 공개키 암호시스템으로는 이산대수 문제에 근거한 엘가말(ElGamal)형의 암호시스템과 소인수분해 문제에 근거한 RSA(Revest Shamir Adleman) 암호시스템이 있다.
이러한 암호화 시스템들은 모듈러연산을 이용하여 암호화 및 복호화를 수행한다. 예컨대, X mod M=Z로 표현되는 모듈러연산에 있어서, X는 오퍼랜드(operand; 피연산자), M은 모듈러스(modulus), Z는 나머지가 된다. 상기 나머지 Z는 상기 오퍼랜드 X를 상기 모듈러스 M으로 나눈 나머지이다. 예컨데, 27 mod 10=7 은 27을 10으로 나눈 나머지가 7이라는 의미이다.
모듈러연산은 모듈러덧셈, 모듈러뺄셈, 모듈러곱셈, 모듈러나눗셈, 모듈러멱승등의 연산을 포함한다. 예컨대, X·Y mod M=Z 은 X·Y를 M으로 나눈 나머지가 Z라는 의미이다.
상기 공개키 암호시스템들은 대부분 오퍼랜드 A와 B에 대하여 모듈러 멱승(modular exponentiation: Ae mod N) 연산을 필요로 하고, 상기 모듈러멱승 연산을 위해서는 모듈러 곱셈 (A·B mod N)을 수행하는 것이 반드시 필요하다.
한편, 일반적으로 상기 A, B, N과 같은 "키"의 길이가 커질수록 암호 및 복호의 보안성은 더 커지게 된다. 따라서 대부분의 암호화 시스템의 모듈러 연산에 사용되는 오퍼랜드는 길이가 큰 키로 구성된다. 예컨대, 2048비트들로 구성된 키들을 사용하는 암호화 시스템은 전형적인 하드웨어로는 구현할 수 없는 수백만개의 논리게이트와 높은 주파수의 클럭을 가진다. 그래서 큰 길이의 키보다 보안성은 떨어지지만 계산량을 줄이기 위하여 작은 길이의 키로 구현된 암호화 시스템을 사용하여 왔다.
또한 상기 암호화 시스템들이 장치되는 스마트카드에 있어서, 상기 모듈러 연산은 스마트카드 내부에 있는 CPU에 의해 동작되는데 이러한 경우에는 처리시간이 긴 단점을 지니고 있다. 예컨대, 16비트의 CALM 프로세서(CALM processor)를 생각해보면, 상기 CALM 프로세서는 최대 8·8비트 크기의 곱셈만 수행하게 되므로 큰 길이의 정수끼리의 곱셈을 수행할때 8·8비트 단위의 곱셈을 반복 수행하여야 한다. 따라서 곱셈연산을 수행할 때 소요되는 시간이 많아져 프로세스의 효율이 낮아지게 된다.
결국, 스마트카드는 암호화시스템에서 주로 사용되는 모듈러 연산을 처리하여 주는 모듈러연산기(co-processor)를 구비하여 연산시간을 단축시킬 수 있어야 한다.
일반적으로 상기와 같은 문제점을 해결하기 위해서 큰 길이의 키에 기초하여 모듈러 곱셈이 가능한 몽고메리 곱셈기(co-processor)를 사용하는데, 상기 공개키 암호화시스템의 몽고메리 곱셈기에 사용되는 주요 알고리즘은 몽고메리 알고리즘으로서 이는 나눗셈없이 수체계의 변환을 통하여 모듈러 곱셈을 하는 바, 연산속도가 빨라지게 된다.
따라서, 보안성의 측면에서 큰 길이로 구성된 오퍼랜드의 모듈러 연산을 수행하기 위해서 몽고메리(Montgomery)알고리즘을 사용하는데, 상기 몽고메리 알고리즘은 하나의 모듈러 감소는 직접 나눗셈을 하지않고 단지 쉬프트(shift)에 의한 모듈러 연산의 반복으로 모듈러곱셈을 수행하는 방식이다.
예컨대, X·Y mod M 를 수행하기 위해서는 실제로는 X·Y·2- kmod M 을 수행한다 (단,k는 모듈러스 M의 크기). 상기 몽고메리 알고리즘을 사용함으로써, 암호화 과정의 단순화와 신속한 연산 처리를 꾀할 수 있다.
특히, 토네이도( TORNADO; (주)삼성전자의 몽고메리 알고리즘을 기반으로한 모듈러곱셈기로 상기 제품의 시방서(specification) 참조)는 빠른 연산성능을 보여주는 모듈러 곱셈기로서, 기본적으로 모듈러연산(A·B·2-p·(c+16) mod N )을 수행한다. 단, 상기 N은 다수의 k비트들로 구성된 모듈러스, 상기 A와 B는 각각 상기 k비트들의 절반의 비트수를 가지는 데이터, 상기 c는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트수, 상기 p는 상기 블럭의 수, 상기 k는 p·c이다.
상기 토네이도(TORNADO)에 대해서 간략하게 설명하면, 상기 c는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트수로서, 160비트, 196비트, 228비트,260비트,...,512비트와 같이 160비트에서 32비트 스텝단위로 512비트까지의 비트수를 가진다. 상기 p는 상기 블럭의 수로서 1,2,3, 또는 4의 수를 가진다.
상기 토네이도(TORNADO)를 사용함으로써 큰 길이의 비트들로 구성된 데이터에 대해서도 연산능력이 향상되어 암호화, 복호화 또는 디지털 서명의 생성 및 검증에 있어서 처리속도가 향상되었다.
그러나 상기 몽고메리알고리즘을 바탕으로한 모듈러 곱셈기(특히, 토네이도( TORNADO)에서는 소정의 비트들로 이루어진 데이터 A, B에 대하여 A·B를 연산 할 수 없는 경우도 발생할 수 있어서 암호화시스템의 연산과정에서 상기 몽고메리알고리즘에 기초한 모듈러 곱셈기를 사용할 수 없는 경우가 발생할 수 있다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 몽고메리알고리즘을 바탕으로한 모듈러 곱셈기에서 소정의 비트들로 이루어진 데이터의 곱셈연산을 수행할 수 있는 방법, 상기 방법을 저장하기 위한 기록매체, 및 상기 방법을 수행할 수 있는 스마트카드를 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 모듈러곱셈방법은 모듈러스 레지스터를 통하여 다수의 k비트(단,k는 자연수)들로 구성된 모듈러스 N (단, N은 자연수)을 수신하는 단계, 각각 상기 다수의 k비트들의 절반의 비트들로 구성된 제1데이터(A)와 제2데이터(B)에 대하여, 제1오퍼랜드 레지스터를 통하여 상기 A를 수신하고, 제2오퍼랜드 레지스터를 통하여 상기 B를 수신하는 단계, 상기 수신된 A, B, k와 N 중에서 적어도 어느 하나에 기초하여 제1모듈러 연산(S= A·B·2-p·(c+16) mod N)을 수행하는 단계, 상기 k비트들에 기초하여 중앙처리장치에 의해 미리 연산된 값(RH= 22p·(c+16) mod N)을 상기 제1오퍼랜드 레지스터에 저장하는 단계, 상기 S를 제2오퍼랜드 레지스터에 저장하는 단계 및 상기 S와 상기 RH에 기초하여 제2모듈러연산 M= S·RH·2-P·(C+16) mod N을 수행하여 A·B에 해당하는 연산결과인 상기 M을 출력하는 단계(S213)를 구비하되, 상기 c는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트 수이고, 상기 p는 상기 블럭의 수 및 상기 k는 p·c이다.
상기 RH는 232P에 해당하는 값인 것이 바람직하고, 상기 모듈러곱셈방법은 기록매체에 저장될 수 있다.
상기 기술적 과제를 달성하기 위한 스마트카드는 다수의 k비트들로 구성된 모듈러스 N, 각각 상기 k비트들의 절반의 비트수를 가지는 제1데이터(A)와 제2데이터(B)에 기초하여 모듈러 연산 A·B·2-p·(c+16) mod N 을 계산하는 기능을 구비한 스마트카드에 있어서, 상기 모듈러연산을 위한 제어신호를 발생하고, RH= 22p·(c+16) mod N를 미리 연산하여 데이터저장부에 전송하는 중앙처리장치, 상기 중앙처리장치로부터 출력된 상기 제어신호에 기초하여 암호화 레지스터부에 저장된 데이터를 수 신하여 상기 모듈러 연산을 수행하고, 상기 연산결과를 상기 암호화 레지스터부로 출력하는 모듈러곱셈기 및 상기 암호화 레지스터부에 저장된 데이터과 상기 중앙처리장치에 의해 실행되는 데이터가 저장되는 데이터저장부를 구비하며, 상기 암호화 레지스터부는 상기 데이터저장부로부터 수신된 데이터 및 상기 모듈러연산기의 연산결과를 일시저장하고, 상기 C는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트 수이고, 상기 P는 상기 블럭의 수이며 상기 k는 p·c이다.
상기 데이터는 상기 A, B, 또는 N 중 적어도 어느 하나를 구비하고,상기 중앙처리장치, 상기 모듈러곱셉기, 상기 암호화 레지스터부, 또는 상기 데이터저장부 중 적어도 어느 하나는 버스와 접속되어 상기 데이터를 전송하는 것이 바람직하다.
상기 암호화 레지스터부는 상기 데이터저장부로부터 상기 k비트들로 구성된 모듈러스 N을 저장하는 모듈러스레지스터, 상기 데이터 A 또는 상기 중앙처리장치에서 미리 계산된 RH= 22p·(c+16) mod N을 저장하는 제1오퍼랜드레지스터, 상기 데이터 B 또는 상기 모듈러 곱셈기의 제1연산결과인 S= A·B·2-p·(c+16) mod N를 저장하는 제2오퍼랜드레지스터 및 상기 모듈러 곱셈기의 제2연산결과인 M=S·RH·2-p·(c+16) 를 저장하는 출력레지스터를 구비하는 것이 바람직하다.
상기 제2연산결과인 M은 A·B 에 해당하는 값이고, 상기 데이터저장부는, 비휘발성메모리 또는 휘발성메모리 중 적어도 어느 하나를 구비하며 상기 RH는 232P 에 해당하는 값인 것이 바람직하다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시예에 따른 모듈러곱셈방법을 수행하는 기능을 구비한 스마트 카드이다. 도 1을 참조하면, 상기 스마트 카드(또는, IC카드 600)는 중앙처리장치(100), 모듈러 곱셈기(200), 암호화 레지스터부(300), 데이터 저장부(400)를 구비한다.
스마트 카드(600)는 다수의 k비트들로 구성된 모듈러스 N, 각각 상기 k비트들의 절반의 비트 수를 가지는 소정의 데이터 A와 B에 기초하여 모듈러 연산 A·B·2-p·(c+16) mod N 을 계산하는 기능을 구비하고, 상기 C는 상기 모듈러 연산이 수행되는 단위 블럭 내의 비트 수이고, 상기 P는 상기 블럭의 수이며 상기 k는 p·c이다.
중앙처리장치(100)는 상기 모듈러 연산을 위한 제어신호를 발생하고, RH= 22p·(c+16) mod N를 미리 연산하여 버스(150)를 통하여 데이터 저장부(400)로 전송한다.
모듈러 곱셈기(200)는 상기 중앙처리장치(100)로 부터 출력된 제어신호에 기초하여 암호화 레지스터부(300)에 저장된 데이터를 수신하여 상기 모듈러 연산 (예 컨대, A·B·2-p·(c+16) mod N )을 수행하고, 상기 연산결과를 상기 암호화 레지스터부(300)로 출력한다.
암호화 레지스터부(300)는 모듈러스 레지스터(310), 제1오퍼랜드 레지스터(320), 제2오퍼랜드 레지스터(330), 및 출력 레지스터(340)를 구비한다. 암호화 레지스터부(300)는 상기 데이터 저장부(400)로부터 수신된 데이터 및 상기 모듈러 곱셈기(200)의 연산결과(예컨대, A·B·2-p·(c+16) mod N)를 일시저장한다.
모듈러스 레지스터(310)는 상기 데이터 저장부(400)로부터 출력된 상기 k비트들로 구성된 모듈러스 N을 저장하고, 상기 제1오퍼랜드 레지스터(320)는 상기 제1데이터(A) 또는 상기 중앙처리장치(100)에서 미리 계산된 RH= 22p·(c+16) mod N을 수신하여 저장한다.
제2오퍼랜드 레지스터(330)는 상기 제2데이터(B) 또는 상기 모듈러 곱셈기 (200)의 제1연산 결과인 S= A·B·2-p·(C+16) mod N를 수신하여 저장한다.
출력 레지스터(340)는 상기 모듈러 곱셈기(200)의 제2연산 결과인 M=S·RH·2-p·(c+16)를 수신하여 저장한다.
데이터 저장부(400)는 RAM(410)과 같은 휘발성 메모리 장치 또는 ROM(420), EEPROM(430), FLASH MEMORY(440)등과 같은 비휘발성 메모리 장치로 구현될 수 있다. 상기 데이터 저장부(400)는 상기 암호화 레지스터부 (300)에 저장된 데이터(예컨대, k, A, B, S, RH 또는 M) 및/또는 상기 중앙처리장치(100)에 의해 실행되는 데이터를 버스(150)를 통하여 수신하고 저장한다.
예컨대, k, A, B, S, RH 또는 M은 상기 ROM(420), RAM(410), EEPROM(430) 및 FLASH MEMORY(440) 중 어느 하나에 저장되어있으며, 상기 데이터는 모듈러 곱셈을 위해서 암호화 레지스터부(300)에 일시저장되고, 상기 모듈러 곱셈기(200)에 입력되어 모듈러 곱셈을 수행한다.
한편, 중앙처리장치(100), 모듈러 곱셉기(200), 암호화 레지스터부(300) 또는 데이터 저장부(400)중 적어도 어느 하나는 버스(150)와 접속되어 상기 데이터 (예컨대, k, A, B, S, RH 또는 M)를 전송할 수 있다.
도 2는 본 발명의 실시예에 따른 모듈러 곱셈방법을 나타내는 흐름도이다. 상기 방법은 도 1에 도시된 스마트카드(600)에서 수행된다. 도 1과 도 2를 참조하면, 중앙처리장치(100)의 제어신호에 의해서 모듈러 곱셈기(200)가 작동되면, 모듈러스 레지스터(310)는 상기 데이터 저장부(400)에 저장되어 있는 모듈러스 N을 저장한다(S201). 여기서 상기 모듈러스 N은 다수의 k비트(k는 자연수)들로 구성되고 N은 자연수이다.
각각 상기 다수의 k비트들의 절반의 비트들로 구성된 제1데이터(A)와 제2데이터(B)에 대하여, 제1오퍼랜드 레지스터(320)는 상기 데이터저장부(400)에 저장되어 있는 상기 제1데이터(A)를 수신하여 저장한다(S203).
제2오퍼랜드 레지스터(330)는 상기 데이터 저장부(400)에 저장되어 있는 상기 제2데이터(B)를 수신하여 저장한다(S205).
모듈러 곱셈기(200)는 상기 암호화 레지스터부(300)에 저장되어 있는 데이터 들(예컨대, A, B, 또는 N)에 기초하여, 제1모듈러 연산(S= A·B·2-p·(c+16) mod N)을 수행한다(S207). c (여기서, c는 자연수)는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트 수이고, 상기 p(자연수)는 상기 블럭의 수 및 상기 k는 p·c이다.
제1오퍼랜드 레지스터(320)는 상기 k비트들에 기초하여 중앙처리장치 (100)에 의해 미리 연산된 값(RH= 22p·(c+16) mod N)을 저장한다(S209).
여기서 RH는 232P에 해당하는 값으로 이를 증명하면 다음과 같다.
RH= 22p·(c+16) mod N
= 22p·(c+16) mod 2k -1
= 22·p·c+32· pmod 2k -1
= (22·c·p·232·p)mod 2k -1
= (22·k·232·p- 232·p+ 232·p)mod 2k -1
= ((22·k-1)· 232·p+ 232·p ) mod 2k -1
= 232· pmod 2k -1 (왜냐하면, (22·k -1)는 (2k -1)로 나뉘어지는바 나머지는 "0"이기 때문이다.)
= 232·p (왜냐하면, k=p·c이고, 상기 c는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트수로서, 160비트로 시작하여 32비트 스텝 단위로 512비트까지의 비트수를 가지며, 상기 p는 상기 블럭의 수로서 1,2,3, 또는 4의 수를 가지는 바, 결국, 2k -1 이 232·p 보다 값이 크므로 나머지는 상기 232·p 가 된다.)
제2오퍼랜드 레지스터(330)는 상기 제1모듈러 연산결과값(S)을 저장한다 (S211).
모듈러 곱셈기(200)는 각각 제1오퍼랜드 레지스터(320)와 제2오퍼랜드 레지스터(330)에 저정되어있는 상기 S와 상기 RH에 기초하여 제2모듈러 연산(M= S·RH·2-P·(C+16) mod N)을 수행(S213)하고 A·B에 해당하는 결과인 상기 M을 출력한다(S215). 여기서 상기 M은 A·B에 해당하는 값으로 이를 증명하면 다음과 같다.
M= S·RH·2-P·(C+16) mod N
=A·B·2-p·(c+16) mod N·22p·(c+16) mod N·2-P·(C+16) mod N
=A·B mod N
= A·B (왜냐하면, A와 B는 각각 k/2로 구성되는 수인바, A ≤ 2n/2 -1 , B ≤2n/2-1 이고, A·B≤(2n/2-1)2≤ 2n -1 에서 2n -1은 모듈러스 N에 해당하여 상기 A·B의 값은 상기 모듈러스 N보다 작으므로 상기 모듈러 곱셈의 연산값은 A·B가 된다.
예컨대, 공개키 암호화 방식을 사용하는 RSA알고리즘을 사용하는 암호화 시스템은 평문 M(plaintext)을 복호문 C(cipher)로 암호화하기 위해서, 공개키 D와 N 을 사용하여 최종적으로 모듈러 연산(C = MD mod N)의 결과를 출력한다.
상기 RSA알고리즘을 사용하는 암호화 시스템에서, 상기 암호화 시스템의 연산성능을 향상시키기 위해, 당업자에게 널리 알려진 상기 RSA알고리즘에 CRT(Chinese Remainder Theorem; 중국인의 나머지 정리)가 적용된 가너 알고리즘(Garner's algorithm)이 사용되는데, 상기 가너 알고리즘(Garner's algorithm)이 적용된 RSA알고리즘은 다음과 같다.
입력: P, Q, Dp = D mod (P-1), Dq = D mod (Q-1), Qinv = Q-1 mod P, M (단, P,Q는 비밀정보로서 서로 다른 소수들(prime number)이고, P와 Q의 곱은 N과 같고, P와 Q의 길이는 각각 n길이의 절반이다. Dp,Dq는 미리 계산된 값이고,Mp, Mq, Dp 및 Dq의 길이는 각각 N길이의 절반이다.)
알고리즘:
(a)모듈러연산 Mp = M mod P을 수행하는 단계;
(b)모듈러연산 Mq = M mod Q을 수행하는 단계;
(c)모듈러연산 Cp = Mp^Dp mod P을 수행하는 단계;
(d)모듈러연산 Cq = Mq^Dq mod Q을 수행하는 단계; 및
(e)모듈러연산 C = [(Cp-Cq)·Qinv mod P]·Q +Cq 을 수행하는 단계
출력: C = MD mod N
상기 (e)단계의 모듈러 연산식은 단순곱셈([(Cp-Cq)·Qinv mod P]·Q)을 연산하기 위하여, 각각 상기 A에 대응되는 [(Cp-Cq)·Qinv mod P], B에 대응되는 Q 를 상기 모듈러 곱셈방법에 의해 수행하면 원하는 결과인 A·B 즉,([(Cp-Cq)·Qinv mod P]·Q)을 연산한 결과를 얻게 된다.
상술한 실시예들에서는 RSA 암호화 방법에 있어서 곱셈연산이 가능한 방법을 수행하는 예가 기술되었으나 이는 ECC(Elliptic Curve Cryptosystem)에 의한 암호화 시스템에도 사용될 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이 다.
상술한 바와 같이 본 발명에 따른 모듈러 곱셈방법은 몽고메리알고리즘을 바탕으로한 모듈러 곱셈기에서 소정의 비트들로 이루어진 데이터의 곱셈연산을 수행할 수 있어 모듈러연산을 촉진시킬 수 있다.
상술한 바와 같이 본 발명에 따른 모듈러 곱셈방법을 수행할 수 있는 스마트카드는 모듈러 곱셈연산을 촉진시켜, 암호/복호화 및 디지털 서명을 생성 및 검증의 처리속도를 향상시킬 수 있다.

Claims (10)

  1. 모듈러스 레지스터를 통하여 다수의 k비트(k는 자연수)들로 구성된 모듈러스 N(N은 자연수)을 수신하는 단계;
    각각이 상기 다수의 k비트들의 절반의 비트들로 구성된 제1데이터(A)와 제2데이터(B)에 대하여, 제1오퍼랜드 레지스터를 통하여 상기 A를 수신하고, 제2오퍼랜드 레지스터를 통하여 상기 B를 수신하는 단계;
    상기 수신된 A, B, k와 N중에서 적어도 어느 하나에 기초하여 제1모듈러 연산(S= A·B·2-p·(c+16) mod N)을 수행하는 단계;
    상기 k비트들에 기초하여 중앙처리장치에 의해 미리 연산된 값(RH= 22p·(c+16) mod N)을 상기 제1오퍼랜드 레지스터에 저장하는 단계;
    상기 S를 상기 제2오퍼랜드 레지스터에 저장하는 단계; 및
    상기 S와 상기 RH에 기초하여 제2모듈러 연산 M= S·RH·2-P·(C+16) mod N을 수행하여 A·B에 해당하는 연산 결과인 상기 M을 출력하는 단계를 구비하며,
    상기 c는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트 수이고, 상기 p는 상기 블럭의 수, 및 상기 k는 p·c인 모듈러 곱셈방법.
  2. 제1항에 있어서, 상기 RH는 232P에 해당하는 값인 모듈러 곱셈 방법.
  3. 제1항에 기재된 상기 모듈러 곱셈 방법을 수행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  4. 다수의 k비트들로 구성된 모듈러스 N, 각각 상기 k비트들의 절반의 비트수를 가지는 제1데이터(A)와 제2데이터(B)에 기초하여 모듈러 연산 A·B·2-p·(c+16) mod N 을 계산하는 기능을 구비한 스마트카드에 있어서,
    상기 모듈러연산을 위한 제어신호를 발생하고, RH= 22p·(c+16) mod N를 미리 연산하여 데이터저장부에 전송하는 중앙처리장치;
    상기 중앙처리장치로부터 출력된 상기 제어신호에 기초하여 암호화 레지스터부에 저장된 데이터를 수신하여 상기 모듈러 연산을 수행하고, 상기 연산결과를 상기 암호화 레지스터부로 출력하는 모듈러 곱셈기; 및
    상기 암호화 레지스터부에 저장된 데이터과 상기 중앙처리장치에 의해 실행되는 데이터가 저장되는 데이터 저장부를 구비하며,
    상기 암호화 레지스터부는 상기 데이터 저장부로부터 수신된 데이터 및 상기 모듈러연산기의 연산결과를 일시저장하고, 상기 C는 상기 모듈러 연산이 수행되는 단위 블럭내의 비트 수이고, 상기 P는 상기 블럭의 수이며 상기 k는 p·c인 스마트카드.
  5. 제4항에 있어서, 상기 데이터는 상기 제1데이터(A), 상기 제2데이터(B), 또는 상기 모듈러스(N) 중 적어도 어느 하나를 구비하는 스마트카드.
  6. 제4항에 있어서, 상기 중앙처리장치, 상기 모듈러곱셉기, 상기 암호화 레지스터부, 또는 상기 데이터 저장부 중 적어도 어느 하나는 버스와 접속되어 상기 데이터를 전송하는 스마트카드.
  7. 제4항에 있어서, 상기 암호화 레지스터부는,
    상기 데이터저장부로부터 상기 k비트들로 구성된 모듈러스 N을 저장하는 모듈러스 레지스터;
    상기 제1데이터(A) 또는 상기 중앙처리장치에서 미리 계산된 RH= 22p·(c+16) mod N을 저장하는 제1오퍼랜드 레지스터;
    상기 제2데이터(B) 또는 상기 모듈러 곱셈기의 제1연산결과인 S= A·B·2-p·(c+16) mod N를 저장하는 제2오퍼랜드 레지스터; 및
    상기 모듈러 곱셈기의 제2연산결과인 M=S·RH·2-p·(c+16) 를 저장하는 출력 레지스터를 구비하는 스마트카드.
  8. 제7항에 있어서, 상기 제2연산결과인 M은 A·B에 해당하는 값인 스마트카드.
  9. 제4항에 있어서, 상기 데이터저장부는,
    비휘발성메모리 또는 휘발성메모리 중 적어도 어느 하나를 구비하는 스마트카드.
  10. 제4항에 있어서, 상기 RH는 232P에 해당하는 값인 스마트카드.
KR1020060045819A 2006-05-22 2006-05-22 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드 KR100808953B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060045819A KR100808953B1 (ko) 2006-05-22 2006-05-22 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060045819A KR100808953B1 (ko) 2006-05-22 2006-05-22 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드

Publications (2)

Publication Number Publication Date
KR20070112656A KR20070112656A (ko) 2007-11-27
KR100808953B1 true KR100808953B1 (ko) 2008-03-04

Family

ID=39090910

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060045819A KR100808953B1 (ko) 2006-05-22 2006-05-22 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드

Country Status (1)

Country Link
KR (1) KR100808953B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11288215A (ja) 1998-01-28 1999-10-19 Hitachi Ltd Icカ―ド
US6085210A (en) 1998-01-22 2000-07-04 Philips Semiconductor, Inc. High-speed modular exponentiator and multiplier
JP2002258743A (ja) 2001-03-05 2002-09-11 Hitachi Ltd 耐タンパーモジュラ演算処理方法
US20030048898A1 (en) 2001-06-20 2003-03-13 Frank Boeh Method of encrypting the data transmission in a data processing unit, particularly a smart card
KR20030051992A (ko) * 2001-12-20 2003-06-26 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085210A (en) 1998-01-22 2000-07-04 Philips Semiconductor, Inc. High-speed modular exponentiator and multiplier
JPH11288215A (ja) 1998-01-28 1999-10-19 Hitachi Ltd Icカ―ド
JP2002258743A (ja) 2001-03-05 2002-09-11 Hitachi Ltd 耐タンパーモジュラ演算処理方法
US20030048898A1 (en) 2001-06-20 2003-03-13 Frank Boeh Method of encrypting the data transmission in a data processing unit, particularly a smart card
KR20030051992A (ko) * 2001-12-20 2003-06-26 한국전자통신연구원 아이씨카드용 알에스에이 암호 연산 장치

Also Published As

Publication number Publication date
KR20070112656A (ko) 2007-11-27

Similar Documents

Publication Publication Date Title
CN107040362B (zh) 模乘设备和方法
US7904498B2 (en) Modular multiplication processing apparatus
Walter Precise bounds for Montgomery modular multiplication and some potentially insecure RSA moduli
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
EP3242202A1 (en) Countermeasure to safe-error fault injection attacks on cryptographic exponentiation algorithms
Großschädl A bit-serial unified multiplier architecture for finite fields GF (p) and GF (2 m)
EP0952697B1 (en) Elliptic curve encryption method and system
Paar Implementation of cryptographic schemes 1
RU2279766C2 (ru) Способ и устройство для хранения и восстановления криптографического секретного ключа
US8014520B2 (en) Exponentiation ladder for cryptography
US6609141B1 (en) Method of performing modular inversion
JP4626148B2 (ja) 復号または署名作成におけるべき乗剰余算の計算方法
CN1985458B (zh) 增强的自然蒙哥马利指数掩蔽和恢复的方法和装置
KR100808953B1 (ko) 모듈러곱셈 방법 및 상기 곱셈방법을 수행할 수 있는스마트카드
Joye et al. GCD-free algorithms for computing modular inverses
Rahman et al. Efficient hardware implementation of RSA cryptography
Mentens et al. FPGA-oriented secure data path design: implementation of a public key coprocessor
Koziel Low-Resource and Fast Elliptic Curve Implementations over Binary Edwards Curves
de Macedo Mourelle et al. Fast reconfigurable hardware for the M-ary modular exponentiation
WO2006103851A1 (ja) 冪値生成装置
JP2000214777A (ja) 巾乗剰余演算を行う演算装置
Tunstall et al. The distributions of individual bits in the output of multiplicative operations
Kakde et al. Performance analysis of Montgomery multiplier for public key cryptosystem
Lou et al. An efficient Montgomery exponentiation algorithm by using signed-digit-recoding and folding techniques
Knezevic et al. Speeding up Barrett and Montgomery modular multiplications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee