KR20020025630A - 비밀 정보의 처리 장치, 프로그램 또는 시스템 - Google Patents

비밀 정보의 처리 장치, 프로그램 또는 시스템 Download PDF

Info

Publication number
KR20020025630A
KR20020025630A KR1020007009164A KR20007009164A KR20020025630A KR 20020025630 A KR20020025630 A KR 20020025630A KR 1020007009164 A KR1020007009164 A KR 1020007009164A KR 20007009164 A KR20007009164 A KR 20007009164A KR 20020025630 A KR20020025630 A KR 20020025630A
Authority
KR
South Korea
Prior art keywords
information
processing
secret
secret information
program
Prior art date
Application number
KR1020007009164A
Other languages
English (en)
Other versions
KR100373669B1 (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 KR20020025630A publication Critical patent/KR20020025630A/ko
Application granted granted Critical
Publication of KR100373669B1 publication Critical patent/KR100373669B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/005Countermeasures against attacks on cryptographic mechanisms for timing attacks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • 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
    • 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
    • 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/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)

Abstract

내부에 보존한 비밀 정보를 추정하기 위한 공격 방법인 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 견딜 수 있는 IC 카드 등의 secure cryptographic device를 제공하기 위해서, 내부에 유지된 비밀 정보나 그 비밀 정보를 사용한 연산을 행할 때, 그 비밀 정보나 연산 중에 이용되는 다른 정보를 복수의 표현 방법으로 나타내어 연산함으로써, 연산을 행할 때마다 연산 처리 방법이 다르도록 하고 연산 시간이나 발생하는 전자파의 강함이나 소비 전류가 다르도록 한다.

Description

비밀 정보의 처리 장치, 프로그램 또는 시스템{THE PROCESSING DEVICE OF SECRET INFORMATION, PROGRAM OR SYSTEM THEREOF}
IC 카드는 그 구조 상, 내부에 대한 정보의 기록 및 판독이 IC 카드 자체가 갖는 연산 처리부의 제어 하에서 행해지기 때문에, 자기 카드(magnetic card) 등과 비교하여 안전하게 정보를 관리할 수 있기 때문에, 비밀로 해야 할 정보를 안전하게 관리하기 위한 수단으로서의 이용이 주목받고 있다. 앞으로는, 예를 들면 암호문을 복호하는 기능과, 그 때문에 필요한 키 정보를 갖는 IC 카드나 전자적인 데이터에 대한 디지털 서명을 생성하는 기능과, 그 때문에 필요한 키 정보를 갖는 IC 카드 등의 이용이 더 넓어질 것이 기대되고 있다.
공개 키(public key)나 디지털 서명과 같은 누구나 알 수 있는 정보로부터 계산에 의해서 비밀 키를 아는 것은 계산의 양적 문제로서 매우 곤란하며, 실제상으로 불가능한 것으로 알려져 있다.
그 한편으로, IC 카드 등의 상기 암호화, 복호화, 서명 작성 등의 기능을 갖는 장치(secure cryptographic device라고 함)에 대한 새로운 위협으로서 내부에 있는 중요한 정보(예를 들면 비밀 키)를 물리적으로 직접 해석하지 않고, 통상 사용 방법에서의 처리 시간, 소비 전류, 발생하는 전자파 등을 장치의 외부로부터 해석함으로써, 추정하고자 하는 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등의 공격법의 가능성이 시사되고 있다.
예를 들면, 이들의 공격에 의해 서명 작성을 위한 비밀 키가 해석되면 악의가 있는 사람이 정당한 소유자인 것처럼 서명 작성하는 것이 가능해지는 등 미치는 영향이 커서 대책이 요구되고 있다.
IC 카드에 대해서는
문헌 [Handbook] Rankl Effing, "Smart Card Handbook", John Wiley & Sons, 1997에 개시되어 있다.
secure cryptographic device에 대해서는
문헌 [ISO13491] ISO13491-1 "Banking-Secure cryptographic devices(retail)-Part 1 : Concepts, requirements and evaluation methods", First edition 1998-06-15에 개시되어 있다.
또한, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등의 공격에 대해서는 상기 문헌 [Handbook] 외에,
문헌 [DPA] Paul Kocher, Joshua Jaffe and Benjamin Jun, "Introduction to Differential Power Analysis and Related Attacks", 1998
문헌 [TA] Paul Kocher, "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems", CRYPTO'96, 1996에 개시되어 있다.
상기 각 공격법은 간접적으로 얻어지는 측정 결과와 내부 정보가 상관을 갖는 것을 근거로 하는 것이다.
RSA 암호의 복호화 기능을 갖는 IC 카드로의 Timing Attack에 대한 대책으로서, 상기 문헌 [TA]에는 블라인드 서명이라는 기술을 응용한 대책안이 기재되어 있다. 이것은 Timing Attack을 실행할 때 필요해지는 샘플 데이터를 채용하기 어렵게 하기 위해서, 입력으로서 주어지는 암호문을 직접 복호하지 않고 암호문에 난수 정보를 더한 것을 복호하고 마지막에 다시 난수에 따른 영향을 제거함으로써 복호문을 얻는 수법이다. 그러나 여전히, 어느 데이터를 비밀 키에 곱하는 처리가 포함되고 있는 점에서 충분하지 않다.
본 발명은 정보의 보안을 확보하는 기술에 관한 것이다.
도 1은 본 발명의 일 실시예에서의 IC 카드 구성도.
도 2는 도 1의 IC 카드 구성 중 표현 변환 프로그램의 순서도.
도 3은 도 1의 IC 카드 구성 중 타원 곡선 암호 복호 프로그램의 순서도.
도 4는 도 1의 IC 카드 구성 중 공통키 암호 복호 프로그램의 순서도.
도 5는 본 발명의 일 실시예에서의 IC 카드 구성도.
도 6은 도 5의 IC 카드 구성 중 테이블 데이터 계산 프로그램의 순서도.
도 7은 도 5의 IC 카드 구성 중 테이블 참조형 타원 곡선 암호 복호 프로그램의 순서도.
도 8은 본 발명의 일 실시예에서의 IC 카드 구성도.
도 9는 도 8의 IC 카드 구성 중 점 표현 변환 프로그램의 순서도.
도 10은 본 발명의 일 실시예에서의 IC 카드 구성도.
도 11은 도 10의 IC 카드 구성 중 ECDSA 서명 생성 프로그램의 순서도.
도 12는 본 실시예에서의 시스템 구성도.
<발명을 실시하기 위한 최량의 형태>
(제1 실시예)
본 발명을 타원 곡선 암호의 일종인 Elliptic Curve Encryption Scheme (ECES)의 복호화 기능을 갖는 IC 카드에 적용한 일 실시예를 이하 도면을 이용하여 설명한다. Elliptic Curve Encryption Scheme에 대해서는 문헌 [X9. 63]에 진술되어 있다.
타원 곡선 암호에 대해서는
문헌 [X9.63] "Working Draft : AMERICAN NATIONAL STANDARD X 9.63-199x Public Key Cryptography For The Financial Services Industry : Key Agreement and Key Transport Using Elliptic Curve Cryptography", American National Standards Institute, January 9, 1999 문헌 [IEEEP1363] "Standard Specifications For Public Key Cryptography(Draft Version 9)" IEEE P1363 Standard, IEEE, Febrary 8, 1999에 개시되어 있다.
또, 본 실시예에 있어서 상기 비밀 이면에 보존해야 할 정보(비밀 정보)에 해당하는 정보는 타원 곡선 암호의 복호에 이용되는 비밀 키이다. 또한 본 실시예에서는 소수 위치 계수의 유한체 상의 타원 곡선을 이용하는 것으로 한다.
도 1은 본 실시예에서의 IC 카드의 하드웨어 구성도이다. IC 카드(1001)는 CPU 등으로 구성하는 연산 처리부(1002), 기억 회로(메모리)로 구성하는 데이터 저장부(1004)와 프로그램 저장부(1005), 인터페이스 회로로 구성하는 I/01006 및 이들 각 구성 요소를 내부에서 접속하는 버스(1003)로 이루어진다.
프로그램 저장부(1005)에는 표현 변환 프로그램(1010)과, 타원 곡선 암호 복호 프로그램(1011)과, 공통키 암호 복호 프로그램(1012)이 보존되어 있어 각각 연산 처리부(1002)에 판독되어 실행된다.
데이터 저장부(1004)에는 타원 곡선 암호에서의 시스템 키(1009)가 보존되어 있다. 시스템 키는 타원 곡선 암호로 이용하는 타원 곡선을 결정하기 위한 데이터이고, 미리 암호화된 메시지의 교환에 관한 시스템 전체에 대하여 공통인 값으로서 공개되고 있다. 시스템 키는 다음과 같은 값을 포함한다. 즉, 타원 곡선의 정의식 y2=x3+ax+b의 계수 a 및 b, 상기 타원 곡선이 정의되는 유한체의 위치 계수 p, 베이스 포인트라고 불리는 상기 타원 곡선 상의 고정된 점 P의 좌표, 상기 베이스 포인트 P의 위치 계수 n, n×h가 상기 타원 곡선 상의 유리점의 갯수와 같아지는 공통 인자라고 불리는 수 h를 포함한다.
또한, 데이터 저장부(1004)에는 또한 타원 곡선 암호의 복호에 이용되는 비밀 키 d를 나타내는 데이터(비밀 정보 생성 정보)가 보존되어 있다. 여기서 특징적인 것은 비밀키 d 그 자체가 데이터 저장부에 보존되어 있는 것은 아니라는 것이다. 본 실시예에서는 비밀 정보 생성 부분 정보인 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조에 의해 비밀 정보 생성 정보가 표현되어 있다. 보다 구체적으로는, dA(1007)와 dB(1008)의 법 n에서의 차가 비밀 키 d의 값과 같아지도록 되어 있고, 또한 비밀 정보 생성 정보 처리 수단에 상당하는 타원 곡선 암호 복호 프로그램(1011)은 이들을 정확하게 처리할 수 있도록 구성되어 있다. dA(1007)와 dB(1008)의 조합은 복수개이고 예를 들면, dA(1007)의 값을 비밀 키 d 그 자체의 값으로 하고, dB(1008)의 값을 0(제로)으로 하면, 이 dA(1007)와 dB(1008)의 조는 비밀 키 d의 표현의 일례가 된다. 또한, dA(1007)의 값을 0(제로)으로 하고 dB(1008)의 값을 n-d(mod n)이라고 하면, 이것도 비밀 키 d의 상기한 바와 다른 표현의 일례가 된다.
이하, 각 프로그램의 동작의 개략을 설명한다.
우선, 타원 곡선 암호 복호 프로그램(1011)에 의한 타원 곡선 암호의 복호 처리에 대하여 설명한다. 타원 곡선 암호 복호 프로그램(1011)은 데이터 저장부(1004)에 보존된 시스템 키(1009)에 의해서 결정되는 타원 곡선 상의 연산을 포함하는 프로그램이고, IC 카드(1001)의 외부로부터 입력으로 해서 주어진 복호용 점 R(1013) 및 데이터 저장부(1004)에 보존된 비밀 키를 나타내는 정보 즉 본 실시예에서는 비밀 키 d를 구하지 않고 비밀 키 정보의 일 표현인 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)로부터, 타원 곡선 상의 점 dR을 계산하고, 암호화된 메시지 m(1014)도 공통키 암호 복호 프로그램(1012)으로 복호하기 위해서 필요해지는 복호용 공통키를 계산하는 프로그램이다. 이 프로그램의 출력으로서 얻어진 복호용 공통키는 공통키 암호 복호 프로그램(1012)의 입력의 일부가 된다.
다음에, 공통키 암호 복호 프로그램(1012)에 의한 암호 메시지의 복호 처리에 대하여 설명한다. 공통키 암호 복호 프로그램(1012)은 타원 곡선 암호 복호 프로그램(1011)의 출력으로서 얻어진 복호용 공통키 및 IC 카드(1001)의 외부로부터 입력으로서 주어진 암호화된 메시지 m(1014)을 입력으로 하고, 암호화된 메시지 m(1014)을 복호하고, 그 결과를 IC 카드(1001)의 외부로 복호화된 메시지 m'(1015)로서 출력하는 프로그램이다.
또, 본 실시예에서는 공통키 암호 복호 프로그램(1012)에 의한 공통키 암호 복호 처리는 IC 카드(1001) 내에서 행하는 것으로 했지만, 이 처리는 IC 카드(1001)와 정보의 교환이 가능한 외부의 장치 예를 들면, IC 카드(1001)와 IC 카드 리더(reader) 기록기를 통하여 정보의 교환이 가능한 PC 등으로 행해도 좋다. 이 경우에는 IC 카드(1001)에 대한 입력은 복호용점 R(1013)이 되며 IC 카드(1001)로부터의 출력은 타원 곡선 암호 복호 프로그램의 출력인 복호용 공통키가 된다.
IC 카드(1001)를 사용했을 때의 암호화된 메시지 m(1014)을 복호할 때의 상기한 3개의 프로그램에 의한 기본적인 동작의 흐름을 통합하면 다음과 같아진다.
우선, 타원 곡선 암호 복호 프로그램(1011)이 IC 카드(1001)의 외부로부터의 입력인 복호용점 R(1013)과, 데이터 저장부(1004)에 보존된 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)로부터, 비밀 키 정보 d를 구하지 않고 복호용 공통키를 계산한다. 다음에 공통키 암호 복호 프로그램(1012)이 타원 곡선 암호 복호 프로그램(1011)에 의해서 계산된 복호용 공통키를 사용하여, IC카드(1001)의 외부로부터의 입력인 암호화된 메시지 m(1014)을 복호하고 복호화된 메시지 m'(1015)로서 출력한다.
이에 따라, 암호화된 메시지 m을 복호할 수 있다.
이와 같이 비밀 키 d가 데이터 저장부(1004), 버스(1003), 연산 처리부(1002)에 출현하지 않고 암호화된 메시지 m을 복호할 수 있으므로 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키의 값을 추정하는 것이 곤란해진다.
이 예에서는 데이터 저장부(1004)에 보존된 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 값이 고정되어 있다. 따라서, 복호를 행할 때마다 고정치인 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)가 데이터 저장부(1004)로부터 버스(1003)를 통해 연산 처리부(1002)에 매회 흐르게 되며 또한 타원 곡선 암호 복호 프로그램(1011)은 매회 동일 계산을 행하게 되기 때문에, 이 동안의 계산 시간이나 발생하는 전자파의 강함이나 소비 전류 등도 동일해진다. 이것은 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키 부분 정보의 값이 추정될 가능성이 있음을 의미한다.
본 발명에서는 이들의 공격에 대한 대책으로서 표현 변환 프로그램(1010)을 이용한다.
표현 변환 프로그램(1010)에 의한 비밀 키 정보의 표현의 변환 처리에 대하여 설명한다. 표현 변환 프로그램(1010)은 데이터 저장부(1004)로부터 판독된 비밀 키 정보의 하나의 표현을 다른 표현으로 변환하고, 이 새로운 표현을 데이터 저장부(1004) 중의 원래의 표현으로 치환하는(재기입하는) 프로그램이다. 본 실시예에서는 표현 변환 프로그램(1010)은 데이터 저장부(1004)로부터 판독된 비밀 키 정보의 일 표현인 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조로부터 새로운 다른 표현인 비밀 키 부분 정보 dA'와 비밀 키 부분 정보 dB'의 조를 생성하고, 데이터 저장부(1004) 중에 있는 원래의 표현 dA(1007)와 dB(108)를 새로운 표현 dA'와 dB'로 재기입하는 프로그램이 된다.
표현 변환 프로그램(1010)을 실행함으로써, 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 값이 다른 값으로 재기입되기 때문에, 데이터 저장부(1004)로부터 버스(1003)를 통하여 연산 처리부(1002)에 흐르는 데이터, 타원 곡선 암호 복호 프로그램(1011)을 연산 처리부(1002)로 실행했을 때의 시간, 발생하는 전자파의 강함이나 소비 전류 등이 다르게 된다. 이에 따라, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의한 비밀 키의 값의 추정을 곤란하게 하는 것이 가능해진다.
표현 변환 프로그램(1010)은 타원 곡선 암호 복호 프로그램(1011)이 실행되기 직전에 매회 실행되어도 좋고, 타원 곡선 암호 복호 프로그램(1011)이 실행된 직후에 매회 실행되어도 좋다. 혹은 타원 곡선 암호 복호 프로그램(1011)이 몇회실행될 때마다 실행되어도 좋다. 혹은 또 타원 곡선 암호 복호 프로그램(1011)의 실행과는 무관하게 랜덤 타이밍으로 실행되어도 좋다. 타원 곡선 암호 복호 프로그램(1011)에 대한 TA(Timing Attack)나 DPA(Differential Power Analysis)로의 대책으로서는 표현 변환 프로그램(1010)의 실행 빈도가 많은 쪽이 바람직하다.
다음에 각 프로그램의 동작의 상세를 설명한다.
도 2는 도 1에서의 표현 변환 프로그램(1010)의 순서를 나타낸다.
단계 2001 : 시작
단계 2002 : 0 이상 n 미만의 난수 k를 생성한다.
단계 2003 : 데이터 저장부(1004)로부터 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)를 판독한다.
단계 2004 : dA'=dB+k(mod n) 및 dB'=dB+k(mod n)을 계산한다.
단계 2005 : dA' 및 dB'를 각각 데이터 저장부(1004) 중 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)가 씌어져 있는 곳에 기입한다.
단계 2006 : 종료
도 3은 도 1에서의 타원 곡선 암호 복호 프로그램(1011)의 순서를 나타낸다.
단계 3001 : 시작
단계 3002 : Q=0(무한 원점)으로 한다.
단계 3003 : IC 카드(1001)의 외부로부터 복호용점 R(1013)을 판독한다.
단계 3004 : 데이터 저장부(1004)로부터 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)를 판독한다.
단계 3005 : i=|n|으로 한다(|n|에는 베이스 포인트 P의 위치 계수 n의 비트 길이)
단계 3006 : (dA(1007)의 제i 비트째, dB(1008)의 제i 비트째)=(1, 0)이면 단계 3008로(여기서 제i 비트째란 최하위 비트를 제1 비트째로 하며, 상위로 향할수록 커지도록 세는 것으로 함)
단계 3007 : (dA(1007)의 제i 비트째, dB(1008)의 제i 비트째)=(0, 1)이면 단계 3010으로, 그렇지 않으면 단계 3009으로(여기서 제i 비트째란 최하위 비트를 제1 비트째로 하고 상위로 향할수록 커지도록 세는 것으로 함)
단계 3008 : Q=Q+R로서 단계 3010으로(여기서 +는 타원 곡선 상의 점의 가산을 나타냄)
단계 3009 : Q=Q-R로서 단계 3010으로(여기서 -는 타원 곡선 상의 점의 감산을 나타냄)
단계 3010 : i=i-1로 한다.
단계 3011 : i>0이면 Q=2Q로서 단계 3006으로(여기서 2Q는 타원 곡선 상의 점 Q의 2배를 나타냄)
단계 3012 : Q의 x 좌표 xQ를 복호용 공통키로서 출력한다.
단계 3013 : 종류
또, 상기 단계 3009에서의 타원 곡선 상의 점의 가산, 단계 3010에서의 타원 곡선 상의 점의 감산 및 단계 3012에서의 타원 곡선 상의 점의 2배로 계산한 것의 상세한 내용에 대해서는 문헌 [IEEEP1363]에 자세히 진술되어 있다.
타원 곡선 암호 복호 프로그램(1011)의 순서는 비밀 키 d의 표현, 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)가 각각 dA=d, dB=0으로 되어 있을 때는 2치법이라 불리는 타원 곡선 상의 점의 스칼라배 dR을 구하기 위해서 널리 사용되고 있는 방법과 동일한 순서가 된다. 또한, 비밀 키 d의 표현, 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보dB(1008)가
(dA(1007)의 제i 비트째, dB(1008)의 제i 비트째)=(1, 0) 또는 (0, 1)인 비트의 조가 가장 적어지는 표현으로 되어 있을 때는 타원 곡선 상의 점의 스칼라배 dR을 고속으로 구하는 수법으로서 알려져 있는 최적의 addition-subtraction chain을 사용한 타원 곡선 상의 점의 스칼라배 연산 방법에 의한 연산과 동일한 순서가 된다.
이와 같이, 비밀 키 d의 복수의 표현 방법을 구별지어 사용하는 것은 타원 곡선 상의 점의 스칼라배 연산 dR을 구하는 연산 방법으로서, 알려져 있는 여러가지 연산 방법을 구별지어 사용하여 연산하는 것을 의미하고 있다. 결과적으로, 이 타원 곡선 암호 복호 프로그램(1011)의 실행 시간이나 발생하는 전자파의 강함이나 소비 전류 등은 그 표현 방법마다 다르게 된다. 평균적으로는, 2치법을 사용한 경우와 동일한 정도의 처리 시간이 되는 것이 기대된다.
addition-subtraction chain을 사용한 타원 곡선 상의 연산 방법에 대해서는
문헌 [ADD-SUB] F. Morain and J.Olivas "Speeding up the computations on an elliptic curve using addition-subtraction chains" Theoretical Informatics and Applications vo1. 24, no.6, 1990에 진술되어 있다.
본 실시예에서는 비밀 키, 그 자체를 적당한 기회에 다른 표현 방법에 의해서 재보유함으로써, IC 카드 내에는 상기 비밀로 해야 할 정보 그 자체나 그에 관한 정보의 고정된 값은 존재하지 않게 된다. 따라서, 예를 들면 공격자가 데이터 저장부(1004)에 보존된 데이터의 연산 처리부(1002)로의 교환 시에 정보가 흐르는 버스(1003)의 부분을 해석할 수 있다고 해도 흐르는 정보로부터 비밀로 해야 할 정보를 추정하는 것은 곤란해진다.
또한, 혹시 어떠한 수단에 의해서 데이터 저장부(1004)에 보존된 데이터의 일부가 공격자에 의해서 해석되었다고 해도 반드시 비밀로 해야 할 정보가 누설된 것은 아니다. 즉, 비밀로 해야 할 정보 그 자신이 고정된 값으로서 데이터 저장부(1004)에 보존되어 있는 경우에는 그 값의 1 비트의 정보가 누설되었다는 것은 비밀로 해야 할 정보에 관한 정보의 일부가 누설된 것이 분명하지만, 본 발명에 따라서 비밀로 해야 할 정보 그 자신이 아니라, 그것을 나타내는 있는 표현에 의해서 보유해둔 경우에는 가령, 비밀로 해야 할 정보 d의 표현이며, 실제로 데이터 저장부(1004)에 보존되어 있는 데이터인 dA와 dB의 조 중 그 반정도에 해당하는 dA의 값이 완전히 누설되었다고 해도 비밀로 해야 할 정보 d 그 자체에 대해서는 정보가누설되어 있지 않게 된다.
왜냐하면, d를 어떠한 부분 정보로 어떻게 표현하고 있는지를 모르기 때문이고, 가령 dA와 dB의 조에서 d를 나타내고 있는 것을 알고 있다고 해도, dB의 값이나 dA과 dB의 조에서 어떻게 d를 나타내는지를 모른다면 d와 dA간의 어떤 관계도 발견할 수 없기 때문이다.
그 외에, 본 발명에서는 비밀로 해야 할 정보를 적절한 시기에 다른 표현 방법에 의해서 재보유하고 있기 때문에, 공격자가 후에 다른 시점에서의 dB의 값을 알았다고 해도 서로 다른 시점에서의 dA와 dB간에는 역시 어떤 관계도 발견될 수 없기 때문에, d에 관한 정보는 누설되지 않는다.
도 4는 도 1에서의 공통키 암호 복호 프로그램(1012)의 순서를 나타낸다.
단계 4001 : 시작
단계 4002 : 복호용 공통키 c 및 암호화된 메시지 m(1014)를 입력한다. 여기서 복호용 공통키 c란 타원 곡선 암호 복호 프로그램(1011)의 단계 3011에서 출력된 복호용 공통키 xQ이다.
단계 4003 : 복호용 공통키 c와, 암호화된 메시지 m(1014)의 비트 길이 L을 'key derivation function'으로의 입력으로 하고 출력으로 하여, 길이 L의 마스크 열 M을 얻는다. 여기서, 'key derivation function'이란 복호용 공통키 c와 출력되는 마스크 열의 길이 L을 입력으로 하여 지정하면, 길이 L의 마스크 열을 출력하는 것과 같은 함수이며, 공통 키 암호 복호 프로그램(1012)의 일부로서 실장되어있는 것으로 한다. 'key derivation function'의 상세한 내용에 대해서는 문헌 [X9.63]에 진술되어 있다.
단계 4004 : 암호화된 메시지 m(1014)과 마스크 열 M의 배타적 논리합(m' XOR M)을 계산하고, 그 결과를 복호화된 메시지 m'(1015)로서 IC 카드(1001)의 외부에 출력한다.
단계 4005 : 종료
본 실시예에서는 타원 곡선 암호의 일종인 Elliptic Curve Encryption Scheme(ECES)의 복호화 기능을 갖는 IC 카드에 적용한 예를 나타냈지만 본 발명은 이 외에도 널리 적용 가능하다.
예를 들면, Elliptic Curve Encryption Scheme(ECES)가 아니라 Elliptic Curve Augmented Encryption Scheme(ECAES)의 복호화 기능을 갖는 IC 카드에 적용해도 좋다. 이 경우, 본 실시예의 처리 외에 미리 암호화된 데이터와 함께 보내진 MAC라고 불리는 메시지 검증용 데이터를 사용하여 복호된 데이터가 옳은 것인지의 여부를 검증하는 처리가 더해진다. Elliptic Curve Augmented Encryption Scheme(ECAES)에 대한 상세한 내용은 문헌 [X9.63]에 진술되어 있다.
혹은 또한, 본 실시예에서는 소수 위치 계수의 유한체 상의 타원 곡선을 이용했었지만, 표수 2의 유한체 상의 타원 곡선이라도 좋다. 혹은 이 외의 임의의 유한체 상의 타원 곡선이라도 좋다. 또한, 본 실시예에서는 식 y2=x3+ax+b에서 정의된 타원 곡선을 이용했지만, 이 외의 식, 예를 들면 by2= x3+ax2+bx에서 정의된 타원 곡선을 이용해도 좋다. 또한, 본 실시예에서는 타원 곡선 상의 유리점이 생성하는 군 상의 이산대수 문제의 곤란성을 이용한 암호를 사용하고 있었지만, 이 외의 군 예를 들면 유한체의 곱셈군, 초타원 곡선 상의 인자류군, Cab 곡선 상의 인자류군 등의 군 상의 이산대수 문제의 곤란성을 이용한 암호라도 좋다. 이들의 암호를 이용하는 경우에는 상기한 타원 곡선 암호 복호 프로그램(1011) 중의 타원 곡선 상의 점의 비밀 정보에 기초하는 연산을 각각의 군에서의 비밀 정보에 기초하는 연산으로 대체하면 좋다.
게다가, 이들 이산대수 문제의 곤란성을 이용한 암호 이외의 암호라도 보다 일반적으로는, 암호 이외의 어떠한 비밀로도 할 수 있어서, 군 연산을 그 비밀로 해야 할 수만큼 반복하여 행하는 것과 같은 연산을 포함하는 기능을 갖는 IC 카드에 대해서도 본 발명은 본 실시예와 마찬가지로 하여 적용 가능하다. 즉, 상기한 타원 곡선 암호 복호 프로그램(1011)에서는 R을 더하는 연산을 비밀로 해야 할 수(비밀 키 d)회만큼 행한 결과인 dR을 구하고 있었지만, 이것과 마찬가지로 하여 비밀로 해야 할 수를 어느 표현에 의해서 나타내두고, 타원 곡선 암호 복호 프로그램(1011)에 상당하는 프로그램에 의해서 연산을 행하면 좋다. 이러한 암호의 예로서는 상기한 이산대수 문제의 곤란성을 이용한 암호 이외에, 예를 들면, RSA 암호 등이 있다. 암호 이외의 기능의 예로서는 RSA 서명 등이 있다. 또, 여기서 군이란 집합으로써, 그 집합에 속하는 각 원 간에 어느 연산이 정의되어 있는 것과 같은 것이다.
RSA 암호·서명에 대해서는
문헌 [APPLIED] Bruce Schneier, "Applied Cryptography", John wiley & Sons, Inc, 1996에 개시되어 있다.
본 실시예에서는 IC 카드에 적용한 예를 나타내었지만, 비밀로 해야 할 정보를 보다 안전하게 보존하는 기술로서 IC 카드 이외에도 널리 적용 가능하다. 예를 들면, 동일 기능을 갖는 IC 카드 이외의 secure cryptographic device나 반도체 칩이나 PC 또는 워크스테이션에 대해서도 적용 가능하다.
(제2 실시예)
제1 실시예에서 타원 곡선 암호 복호 프로그램(1011)을 다음과 같이 변형해도 좋다.
도 5는 본 실시예에서의 IC 카드의 구성도이다. 이 실시예에서는 제1 실시예에서의 타원 곡선 암호 복호 프로그램(1011)에 해당하는 프로그램은 다음의 2개의 프로그램인 테이블 데이터 계산 프로그램(5001)과 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)으로 이루어진다.
이하, 각 프로그램의 동작의 개략을 설명한다.
테이블 데이터 계산 프로그램(5001)은 IC 카드(1001)의 외부에서부터 주어지는 복호용점 R(1013)을 입력으로 하고, 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)에서 이용되는 테이블의 데이터를 계산하고, 그 결과를 데이터 저장부(1004) 내의 테이블 데이터(5003) 영역에 기입하는 프로그램이다. 이 프로그램은 데이터 저장부(1004)에 포함되는 비밀 키 d를 나타내는 데이터 즉 본 실시예에서의 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)에 의존하지 않은 처리를 행한다. 따라서, 이 프로그램이 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해 공격되어도 비밀 키 d에 관한 데이터가 누설될 우려는 없다.
테이블 참조형 타원 곡선 암호 복호 프로그램(5002)은 데이터 저장부(1004)에 보존되어 있는 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보dB(1008)와, 테이블 데이터 계산 프로그램(5001)에 의해서 계산된 테이블 데이터(5003)로부터 암호화된 메시지 m(1014)을 공통키 암호 복호 프로그램(1012)으로 복호하기 위해서 필요해지는 복호용 공통키를 계산하는 프로그램이다.
다음에 각 프로그램의 동작의 상세를 설명한다.
도 6은 도 5에서의 테이블 데이터 계산 프로그램(5001)의 순서를 나타낸다.
단계 6001 : 시작
단계 6002 : IC 카드(1001)의 외부에서부터 복호용점 R(1013)을 판독한다.
단계 6003 : 타원 곡선 상의 점 3R, 2R, R, -R, -2R, -3R을 계산한다.
단계 6004 : 테이블 데이터(5003)를
T[00][00]=0(무한 원점)
T[00][01]=-R
T[00][10]=-2R
T[00][11]=-3R
T[01][00]=R
T[01][0l]=0(무한 원점)
T[01][10]=-R
T[01][11]=-2R
T[10][00]=2R
T[10][01]=R
T[10][10]=0(무한 원점)
T[10][11]=-R
T[11][00]=3R
T[11][01]=2R
T[11][10]=R
T[11][11]=0(무한 원점)
으로 하고 데이터 저장부에 보존한다.
단계 6005 : 종료
도 7은 도 5에서의 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)의 순서를 나타낸다.
단계 7001 : 시작
단계 7002 : Q=0(무한 원점)으로 한다.
단계 7003 : IC 카드(1001)의 외부에서부터 복호용점 R(1013)을 판독한다.
단계 7004 : 데이터 저장부(1004)로부터 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)를 판독한다.
단계 7005 : |n|이 짝수이면 i=|n|, |n|이 홀수이면 i=|n|+1로 한다(|n|은 베이스 포인트 P의 위치 계수 n의 비트 길이).
단계 7006 : 데이터 저장부(1004) 중의 테이블 데이터(5003)를 참조하고, S=T[dA(1007)의 제i 비트째, dA(1007)의 제(i-1) 비트째][dB(1008)의 제i 비트째, dB(1008)의 제(i-1) 비트째]로 한다(여기서, 제i 비트째란 최하위 비트를 제1 비트째로 하고 상위로 향할수록 커지도록 헤아리는 것으로 함).
단계 7007 : Q=Q+S를 계산한다(여기에서 +는 타원 곡선 상의 점의 가산을 나타냄).
단계 7008 : i=i-2로 한다.
단계 7009 : i>0이면 Q=4Q로서 단계 7006으로(여기서 4Q는 타원 곡선 상의 점 Q의 2배산을 2회 반복함으로써 구할 수 있음).
단계 7010 : Q의 x 좌표 xQ를 복호용 공통키로서 출력한다.
단계 7011 : 종료
또, 상기 단계 7007에서의 타원 곡선 상의 점의 가산 및 단계 7009에서의 타원 곡선 상의 점의 2배 계산의 상세한 내용에 대해서는 문헌 [IEEEP1363]에 자세히 진술되고 있다.
본 실시예에서는 비밀 키 부분 정보의 연속하는 2 비트씩에 대하여 연산을행했지만, 이와는 다른 방식이라도 좋다. 예를 들면, 연속하는 3비트씩에 대하여 연산을 행해도 좋고, 일반적으로 연속하는 t 비트씩을 대상으로 해도 좋다. 혹은 서로 j비트 떨어진 (|n|/j)개의 비트를 대상으로 해도 좋다. 또 테이블 데이터 계산 프로그램(5001)은 이들의 비밀 키 부분 정보의 비트의 견해에 따라서 적절한 값을 계산하는 프로그램으로 변경할 필요가 있다.
본 실시예에서도 dR을 구하는 연산 중에 d 자신의 값은 나타나지 않는다. 이에 따라, dR을 구하는 연산에 걸리는 시간이나 발생하는 전자파의 강함이나 소비 전류는 d 그 자체의 값에는 의존하지 않게 된다. 따라서 TA(Timing Attack), DPA(Differential Power Analysis) 등에 의해 공격에 의해서 비밀 키 d의 값을 추정하는 것이 곤란해진다.
본 실시예에서는 타원 곡선 암호의 일종인 Elliptic Curve Encryption Scheme(ECES)의 복호화 기능을 갖는 IC 카드에 적용한 예를 나타냈지만, 본 발명은 제1 실시예와 마찬가지로 이외에도 널리 적용 가능하다. 특히, 어느 미리 결정된 원에 대한 군 연산을 비밀로 해야 할 수만큼 반복하여 행하는 것과 같은 연산을 포함하는 처리를 행하는 장치에 적용하는 경우에는 테이블 데이터 계산 프로그램(5001)을 매회 실행할 필요가 없고, 한번만 실행하면 되기 때문에 매회의 처리가 고속으로 실행 가능해지며 한층 유효하다. 이 경우에는 또한 테이블 데이터의 계산을 장치[본 실시예의 경우에서 말하면 IC 카드(1001)]의 외부에서 행하는 것도 가능하다. 이러한 처리를 포함하는 장치의 예로서는 예를 들면, 타원 곡선 암호에서의 키 생성 처리를 행하는 IC 카드를 들 수 있다. 이 경우, 난수로서 생성한 비밀 키 정보 d와, 고정점인 베이스 포인트 P에서 타원 곡선 상의 점 dP를 구하는 처리가 포함된다. 따라서, 테이블 데이터는 예를 들면, IC 카드의 외부에서 계산해두고, 시스템 키 정보의 일부로서 IC 카드 내에 미리 보존해 둔 것이 가능하다.
(제3 실시예)
제2 실시예에서 테이블 데이터(5003) 영역으로의 테이블 데이터의 보존 방법을 다음과 같이 해도 좋다.
타원 곡선 상의 점은 통상 2차원 affine 좌표를 이용하여, x 좌표 및 y 좌표의 2개의 값의 조에 의해서 표현되지만, 점의 가산이나 점의 2배산을 행하는 경우에 주로 고속으로 연산을 행할 목적으로, x 좌표, y 좌표 및 z 좌표의 3개의 값의 조에 의해서 표현하는 것도 가능하다. 이러한 표현 및 이 표현을 사용한 경우의 타원 곡선 상의 점의 연산 방법의 일례가 문헌 [IEEEP1363]에 projective coordinate로서 진술되어 있다. 2차원 affine 좌표에 의한 표현과 projective coordinate에 의한 표현 간의 상호 변환은 다음과 같이 행할 수 있다.
[2차원 affine 좌표에서부터 projective coordinate로] (x, y) ->[x, y, 1]
[projective coordinate로부터 2차원 affine 좌표로] [X, Y, Z] ->(X/Z2, Y/Z3)
여기서 주의해야 할 일은 projective coordinate에 의한 표현으로는 동일 점을 나타내는 표현이 한가지가 아니라는 것이다. 즉, t를 0<t<p(p는 타원 곡선에서정의되는 유한체의 위치 계수)가 되는 수로 하면 점[X, Y, Z]와 점[t2X, t3Y, tZ]는 모두 동일 점(X/Z2, Y/Z3)을 나타내고 있다.
제2 실시예에서의 테이블 데이터(5003) 영역으로의 테이블 데이터의 보존 방법으로서, 이 projective coordinate에 의한 표현으로 보존해둘 수 있다. 이 경우, 동일 점을 나타내는 데이터라도 다른 표현에 의해서 보존해 두는 것이 가능해진다. 예를 들면, T[10][00]과 T[11][01]은 모두 점 2R을 나타내는 데이터가 보존되고 있지만, 이들 2개를 각각 다른 표현 즉 T[10][00]=[X, Y, Z], T[11][01]=[X', Y', Z'](여기서 X/Z2=X'/Z'2, Y/Z3=Y'/Z'3을 만족하는 것으로 함)를 사용하여 보존해 둠으로써, 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)의 실행 중에 T[10][00]이 참조된 경우와 T[11][01]이 참조된 경우로 연산 처리가 다르게 되며, 그 결과, 실행에 걸린 시간, 발생하는 전자파의 강함 및 소비 전류 등도 다르게 된다.
도 8은 본 실시예에서의 IC 카드의 구성도이다. 본 실시예에서는 제2 실시예에 점 표현 변환 프로그램(8001)이 추가되어 있다.
이하, 점 표현 변환 프로그램(8001)을 개략적으로 설명한다.
점 표현 변환 프로그램(8001)은 데이터 저장부(1004)에 보존되어 있는 테이블 데이터(5003) 중의 점의 표현을 변환하여, 변환한 값에 의해서 테이블 데이터(5003)를 재기입한다. 또, 테이블 데이터(5003)는 테이블 데이터 계산 프로그램(5001)에 의해서, projective coordinate에서 나타낸 x 좌표, y 좌표 및 z 좌표의 3개의 값의 조에 의해서 표현되어 보존되고 있는 것으로 한다. 즉, 예를 들면 2차원 affine 좌표에 의해서 (x, y)로 표현되고 있는 것을 [x, y, 1]로 변환하여 보존해도 좋고, 혹은 테이블 데이터 계산 프로그램(5001)의 단계 6003에서 테이블 데이터(5003)를 계산할 때, projective coordinate를 사용하여 계산을 행하고, 그 결과를 projective coordinate 그대로 테이블 데이터(5003)에 보존해도 좋다. 점 표현 변환 프로그램(8001)은 테이블 데이터 계산 프로그램(5001)의 실행 후에서부터 마지막으로 테이블 데이터(5003)가 참조되기까지의 동안의 임의의 시점에서 실행되면 된다. 또한, 이 사이에 몇 번 실행되어도 된다. 예를 들면, 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)이 실행되기 직전에 실행되어도 좋고, 혹은 테이블이 참조되는 기회가 한번이라도 남아 있다면 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)의 실행 중에 인터럽트하는 형태로 실행되어도 된다.
다음에, 점 표현 변환 프로그램(8001)의 상세를 설명한다.
도 9는 도 8에서의 점 표현 변환 프로그램(8001)의 순서를 나타낸다.
단계 9001 : 시작
단계 9002 : i=00으로 한다.
단계 9003 : j=00으로 한다.
단계 9004 : [x, y, z]= T[i][j]를 판독한다.
단계 9005 : 난수 k를 생성한다(0<k<p로 함. p는 타원 곡선이 정의되는 유한체의 위치 계수).
단계 9006 : [x, y, z]=[k2x(mod p), k3y(mod p), kz(mod p)]로 한다(p는 타원 곡선에서 정의되는 유한체의 위치 계수).
단계 9007 : T[i][j]=[x, y, z]로 한다.
단계 9008 : j=i+1로 한다(다만 j는 2진법으로 표기되어 있다고 함).
단계 9009 : j≤11(2진법 표기)이면 단계 9005로
단계 9010 : j=00으로 한다.
단계 9011 : i=i+1로 한다(다만 i는 2진법으로 표기되어 있다고 함).
단계 9012 : i≤11(2진법 표기)이면 단계 9005로
단계 9013 : 종료
본 실시예에서는 적당한 타이밍에서 점 표현 변환 프로그램(8001)을 실행함으로써, 동일 점을 나타내는 복수의 데이터 예를 들면, T[10][00]과 T[11][01]은 다른 표현에 의해서 보존되게 되며 또한 동일 데이터 T[i][j]라도 그것을 참조하는 타이밍에 따라서 다른 표현으로 되어 있기 때문에, 테이블 데이터(5003)를 참조하는 연산을 포함하는 처리는 가령 입력이 매회 동일하더라도 다르게 된다. 따라서, 처리 시간이나 발생하는 전자파의 강함이나 처리 중의 소비 전류 등도 일정하지 않다. 이것은 즉, 비밀 키와 테이블 데이터(5003)를 사용한 연산, 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)의 실행에 걸린 시간이나 발생하는 전자파의 강함이나 소비 전류가 일정하지 않은 것을 의미한다. 따라서 TA(Timing Attack), DPA(Differentia1 Power Analysis) 등의 공격에 의해서 비밀 키의 값을 추정하는것이 곤란해진다.
본 실시예에서는 점 표현 변환 프로그램(8001)에 의해서, 테이블 데이터(5003)에 포함되는 모든 점 정보의 변환을 행했지만, 모든 점은 아니고 랜덤하게 선택된 1개 또는 복수개의 점의 데이터만을 변환해도 좋다. 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)에 대한 TA(Timing Attack)나 DPA(Differential Power Analysis)로의 대책으로서는 많은 점 데이터의 표현을 변환하는 쪽이 바람직하고, 또한 점 표현 변환 프로그램(8001)의 실행 빈도가 많은 쪽이 바람직하다.
본 실시예에서는 타원 곡선 암호의 일종인 El1iptic Curve Encryption Scheme(ECES)의 복호화 기능을 갖는 IC 카드에 적용한 예를 나타냈지만, 본 발명은 제2 실시예와 마찬가지로, 이 외에도 널리 적용 가능하다.
(제4 실시예)
제1 실시예에서 비밀로 해야 할 정보, 즉 비밀 키 d는 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조에 따라서 표현되고 있었다. 보다 구체적으로는 dA(1007)와 dB(1008)의 법 n에서의 차가 비밀 키 d의 값과 같아지도록 표현되고 있었다. 또한, 제1 실시예에서는 dA(1007)와 dB(1008)는 0 이상 n 미만의 수로서 표현되고 있었다. 그러나 이 외의 방법으로 표현되어 있어도 좋다. 예를 들면, dA(1007)는 0 이상 2n 미만의 수로서 표현되어 있어도 좋다. 혹은 합이나 차가 비밀 키 d의 값과 같아지도록 3개 이상의 수의 조로서 표현되어 있어도 된다.
혹은 다른 표현으로서 예를 들면 다음과 같이, 1, 0, -1의 배열로서 d의 값이 표현되어 있어도 된다. 즉 표현 (Bn, Bn-1, …, B1, B0)은 수학식 2nBn+2n-1Bn-1+ … + 21B1+20B0를 나타내는 것으로 한다. 여기서, Bi는 1, 0, -1 중 어느 하나로 한다. 이 표현은 통상의 2진 표현의 확장으로 되어 있다. 즉, 이 표현 방법으로, Bi를 0이나 1 중 어느 하나만으로 하도록 제한한 것이 통상의 2진 표현이다. 또, 1, 0, -1을 메모리 상에서 표현하기 위해서는 2 비트분을 사용하여, 00이면 0, 01이면 1, 11이면 -1을 나타내는 방법이 생각된다.
이 표현을 사용할 때는 제1 실시예에서의 표현 변환 프로그램(1010)은 예를 들면, 다음과 같이 변경된다. 또, 데이터 저장부(1004)에는 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조 대신에, 1, 0, -l의 배열로서 표현된 비밀 키 정보 d_rep가 보존되어 있는 것으로 한다.
표현 변환 프로그램(확장 2진 표현)
단계 10001 : 시작
단계 10002 : 데이터 저장부(1004)로부터 비밀 키 정보 d_rep를 판독한다.
단계 10003 : 난수 K, L을 생성한다(여기서 0<K<L<|d_rep|로 한다. 다만 |d_rep|는 d_rep의 비트 길이)
단계 10004 : 비밀 키 정보 d_rep의 제L+1 비트째의 값 BL+1을 BL+1=BL+1+1로 한다.
단계 10005 : K<i≤L이 되는 모든 i에 대하여 비밀 키 정보 d_rep의 제i 비트째의 값 Bi를 Bi=Bi-1로 한다.
단계 10006 : 비밀 키 정보 d_rep의 제K 비트째의 값 Bk를 Bk=Bk-2로 한다.
단계 10007 : 비밀 키 정보 d_rep의 각 비트가 1, 0, -1 중 어느 하나이면 단계 10013으로
단계 10008 : j=|d_rep|로 한다.
단계 10009 : d_rep의 제j 비트째의 값 Bj가 2이면 Bj+1=Bj+1+1, Bj=0으로 한다.
단계 10010 : d_rep의 제j 비트째의 값 Bj가 -2이면 Bj+1=Bj+1-1, Bj=0으로 한다.
단계 10011 : j=j-1로 한다.
단계 10012 : j>0이면 단계 10007로
단계 10013 : 데이터 저장부(1004)에 갱신된 비밀 키 정보 d_rep를 기입한다.
단계 10014 : 종료
또한, 제1 실시예에서의 타원 곡선 암호 복호 프로그램(1011)은 다음과 같이 변경된다.
타원 곡선 암호 복호 프로그램(확장 2진 표현)
[단계 3004]를 다음과 같이 변경
단계 11004 : 데이터 저장부(1004)로부터 비밀 키 정보 d_rep를 판독한다.
[단계 3006]을 다음과 같이 변경
단계 11006 : d_rep1의 제i 비트째 Bi가 -1이면 단계 3009로
[단계 3007]을 다음과 같이 변경
단계 11007 : d_rep1의 제i 비트째 Bi가 -1이면 단계 3010으로
본 실시예에서는 1, 0, -1의 배열로서 d의 값이 표현되고 있지만, 마찬가지로 2진 표현의 확장을 사용하여, 예를 들면 2, 1, 0, -1의 배열로서 d의 값을 표현해도 좋다. 또한, t, t-1, …, 0, -1, …, -s(s, t≥0)의 배열로서 d의 값을 표현해도 좋다. 게다가, 모든 d의 값을 표현할 수 있는 것이면 반드시 연속하지 않은 몇몇 수의 배열로서 d의 값을 표현해도 좋다.
혹은 또한, 비밀 키 정보 d의 값의 다른 표현으로서, 곱이 d와 같아지도록 2개의 조로서 표현되어 있어도 좋다. 즉, 제1 실시예에서의 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조 대신에 dmA×dmB(mod n)가 비밀 키 정보 d의 값과 같아지도록 2개의 조 dmA와 dmB가 데이터 저장부(1004)에 보존되어 있도록 해도 좋다. 혹은 곱이 d와 같이 되도록 3개 이상의 조에 의해서 표현되어 있어도 좋다. 게다가, 곱에 한하지 않고 미리 결정된 연산 결과가 비밀 키 정보 d가 되도록 복수의 수의 조에 의해서 표현되어 있어도 된다. 또, 이들 여러가지 비밀 정보 생성 정보에 의한 표현 방법을 이용하는 경우에는 이들을 정확하게 처리할 수 있는 비밀 정보 생성 정보 처리 수단을 더불어 이용함으로서 원하는 결과를 얻을수 있다.
곱이 d와 같이 되도록 2개의 조에 의한 표현을 사용할 때는 제1 실시예에서의 표현 변환 프로그램(1010)은 예를 들면, 다음과 같이 변경된다.
표현 변환 프로그램(곱 표현)
단계 12001 : 시작
단계 12002 : 0보다 크고 n 미만인 난수 k를 생성한다.
단계 12003 : 데이터 저장부(1004)로부터 dmA및 dmB를 판독한다.
단계 12004 : dmA'=kdmA(mod n) 및 dmB'=k-1dmB(mod n)를 계산한다.
단계 12005 : dmA' 및 dmB'를 각각 데이터 저장부(1004) 중의 dmA및 dmB가 씌어져 있는 곳에 기입한다.
단계 12006 : 종료
또한, 제1 실시예에서의 타원 곡선 암호 복호 프로그램(1011)은 다음과 같이 변경된다.
타원 곡선 암호 복호 프로그램(곱 표현)(개략)
단계 13001 : 시작
단계 13002 : IC 카드(1001)의 외부에서부터 복호용점 R(1013)을 판독한다.
단계 13003 : 데이터 저장부(1004)로부터 dmA및 dmB를 판독한다.
단계 13004 : Q=dmAR을 계산한다.
단계 13005 : Q=dmBQ를 계산한다.
단계 13006 : Q의 x 좌표 xQ를 복호용 공통키로서 출력한다.
단계 13007 : 종료
또, 상기 단계 13004 및 13005에서의 타원 곡선 상의 점의 스칼라배 연산은 임의의 방법으로 행하면 좋다. 예를 들면, 2치법을 사용하여 연산해도 되거나 혹은 dmA나 dmB를 비밀 키의 값 그 자체로 간주하여 다른 실시예에 나타낸 방법을 이용하여 연산해도 좋다.
이상, 비밀 정보를 나타내는 표현 방법의 몇개의 예를 나타내었지만, 이들을 조합해도 좋다. 예를 들면, 다르거나 혹은 동일한 표현 방법에 의한 복수의 표현을 데이터 저장부(1004)에 보유해두고 실제로 비밀 정보를 이용하는 연산을 행할 때, 이 중 하나 또는 복수를 랜덤하게 선택하여 연산을 행해도 된다. 또한, 이들의 표현을 처리하는 복수의 처리 수단을 보유해두고, 실제로 비밀 정보를 이용하는 연산을 행할 때, 이 중 하나 또는 복수를 랜덤하게 선택하여 연산을 행해도 된다.
혹은 비밀 분산이라고 불리는 수법에 의해, 미리 비밀 정보를 n개 중 k개가 갖추어졌을 때 원래의 정보를 복원할 수 있도록 n개로 분산해두고, 이들 n개의 정보를 비밀 정보의 표현으로 해도 좋다.
비밀 분산에 대해서는
문헌 [Shamir] Adi Shamir, "How to Share a Secret", Communications of the ACM vo1. 22, no. 11, pp. 612-613, 1979에 개시되어 있다.
이들 수단에 의해, 비밀 이면에 보존해야 할 정보를 이용하는 연산을 행할 때 요하는 시간이나 발생하는 전자파의 강함이나 소비 전류를 일정하지 않도록 하는 것이 가능해지며, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키의 값을 추정하는 것이 곤란해진다.
본 실시예에서는 타원 곡선 암호의 일종인 Elliptic Curve Encryption Scheme(ECES)의 복호화 기능을 갖는 IC 카드에 적용한 예를 나타냈지만, 본 발명은 제1 실시예와 마찬가지로, 이 외에도 널리 적용 가능하다.
(제5 실시예)
제1 내지 제4까지의 실시예에서는 주로 본 발명을 비밀 키 d로 주어진 타원 곡선 상의 점 R에 대하여, dR을 계산하는 처리에 적용한 예를 나타냈지만, 본 발명은 이 외의 처리에 대하여도 유효하다.
본 발명을 타원 곡선을 이용한 디지털 서명 방식인 ECDSA 서명의 서명 생성 기능을 갖은 IC 카드에 적용한 일 실시예를 이하 도면을 이용하여 설명한다. ECDSA 서명에 대해서는 상기 문헌 [IEEEP1363] 외에,
문헌 [X9. 62] "Working Draft AMERICAN NATIONAL STANDARD X9. 62-1998 Public Key Cryptography For The Financial Services Industry : The Elliptic Curve Digital Signature Algorithm(ECDSA)" American National Standards Institute, September 20, 1998에 개시되어 있다.
또, 본 실시예에서 비밀 이면에 보존하여야 할 정보에 해당하는 정보는ECDSA 서명의 생성에 필요로 되는 비밀 키이다. 또한 본 실시예에서는 소수 위치 계수의 유한체 상의 타원 곡선을 이용하는 것으로 한다.
도 10은 본 실시예에서의 IC 카드의 구성도이다. 제1 실시예에서의 IC 카드의 구성도인 도 1과의 상이한 점으로 도 10에는 타원 곡선 암호 복호 프로그램(1011)과 공통키 암호 복호 프로그램(1012)이 없다는 것, 도 10에는 ECDSA 서명 생성 프로그램(14001)이 있다는 것, IC 카드(1001)에 대한 입출력이 다른 것 및 도 10에서는 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 조가 나타내는 정보가 타원 곡선 암호 복호용 비밀 키가 아니라 ECDSA 서명 생성용 비밀 키를 의미하는 것이다. 도 1과 공통의 요소에 대해서는 동일 번호가 선택되고 있다.
ECDSA 서명 생성 프로그램(14001)에 대하여 설명한다.
ECDSA 서명 생성 프로그램(14001)은 IC 카드(1001)의 외부에서부터 서명 대상 메시지(14002)를 입력하고 또한 데이터 저장부(1004)로부터 비밀 키 부분 정보dA(1007) 및 비밀 키 부분 정보 dB(1008)를 입력하고, 디지털 서명(14003)을 계산하고, IC 카드(1001)의 외부로 출력한다. 전자적인 서명 대상 메시지에 대한 디지털 서명은 종이의 서류에 대한 인영에 상당하는 것으로, 서명 대상 메시지의 내용을 서명자 즉 비밀 키의 소유자가 보증한 것을 나타내는 증거가 된다. ECDSA 서명의 상세한 내용에 대해서는 문헌 [X9. 62]에 자세히 진술되고 있다.
IC 카드(1001)를 사용할 때 서명 대상 메시지(14002)에 대한 서명 생성을 행할 때의 표현 변환 프로그램(1011) 및 ECDSA 서명 생성 프로그램(14001)에 의한 기본적인 동작의 흐름을 통합하면 다음과 같이 된다.
우선, ECDSA 서명 생성 프로그램(14001)이 IC 카드(1001)의 외부로부터의 입력인 서명 대상 메시지(14002)와, 데이터 저장부(1004)에 보존된 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)로부터 비밀 키 d를 구하지 않고 디지털 서명(14003)을 계산하고 IC 카드(1001)의 외부로 출력한다.
이에 따라, 디지털 서명을 생성할 수 있다.
이와 같이 비밀 키 d가 데이터 저장부(1004), 버스(1003), 연산 처리부(1002)에 출현하지 않고 디지털 서명(14003)을 생성할 수 있으므로, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키의 값을 추정하는 것이 곤란해지고 있다.
이 예에서는 데이터 저장부(1004)에 보존된 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 db(1008)의 값이 고정되어 있다. 따라서, 서명 생성을 행할 때마다 고정치인 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)가 데이터 저장부(1004)로부터 버스(1003)를 통하여 연산 처리부(1002)로 매회 흐르게 되며, 또한 ECDSA 서명 생성 프로그램(14001)은 매회 동일 값을 사용하여 계산을 행하게 되기 때문에, 이 동안의 계산 시간이나 발생하는 전자파의 강함이나 소비 전류 등도 이 고정된 값에 의존한다. 이것은 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키 부분 정보의 값이 추정될 가능성이 있는 것을 의미한다.
본 발명에서는 이들의 공격에 대한 대책으로서, 제1 실시예와 마찬가지로 표현 변환 프로그램(1010)을 이용한다. 즉, 표현 변환 프로그램(1010)을 실행함으로써, 비밀 키 부분 정보 dA(1007)와 비밀 키 부분 정보 dB(1008)의 값이 다른 값으로 재기입되기 때문에, 데이터 저장부(1004)로부터 버스(1003)를 통하여 연산 처리부(1002)로 흐르는 데이터, ECDSA 서명 생성 프로그램(14001)을 연산 처리부(1002)로 실행했을 때의 시간이나 발생하는 전자파의 강함이나 소비 전류 등도 다르게 된다. 이에 따라, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의한 비밀 키의 값의 추정을 곤란하게 하는 것이 가능해진다.
표현 변환 프로그램(1010)은 ECDSA 서명 생성 프로그램(14001)이 실행되기 직전에 매회 실행되어도 좋고, ECDSA 서명 생성 프로그램(14001)이 실행된 직후에 매회 실행되어도 좋다. 혹은 ECDSA 서명 생성 프로그램(14001)이 몇회 실행될 때마다 실행되어도 좋다. 혹은 또 ECDSA 서명 생성 프로그램(14001)의 실행과는 무관하게, 랜덤한 타이밍으로 실행되어도 좋다. ECDSA 서명 생성 프로그램(14001)에 대한 TA(Timing Attack)나 DPA(Differential Power Analysis)로의 대책으로서는 표현 변환 프로그램(1010)의 실행 빈도가 많은 쪽이 바람직하다.
다음에 ECDSA 서명 생성 프로그램(14001)의 상세에 대하여 설명한다.
도 11은 도 10에서의 ECDSA 서명 생성 프로그램(14001)의 순서를 나타낸다.
단계 15001 : 시작
단계 15002 : IC 카드(1001)의 외부로부터 서명 대상 메시지(14002)를 판독한다.
단계 15003 : 서명 대상 메시지(14002)를 해시(hash) 함수의 입력으로 하여 메시지의 해시(hash)치 h를 얻는다
단계 15004 : 데이터 저장부(1004)로부터 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보dB(1008)를 판독한다
단계 15005 : 난수 k를 생성한다(0<k<n으로 한다)
단계 15006 : (x, y)=kP를 계산한다.
단계 15007 : r=x(mod n)로 한다.
단계 15008 : sA=k-1(dAr+h)(mod n)를 계산한다.
단계 15009 : sB=k-1(dBr+h)(mod n)를 계산한다.
단계 15010 : s=sA-sB(mod n)를 계산한다.
단계 15011 : (r, s)를 디지털 서명으로서 출력한다.
단계 15012 : 종료
여기에서, 특징적인 것은 비밀 키 d의 값 그 자체 즉, dA-dB(mod n)는 이 ECDSA 서명 생성 프로그램(14001) 중에 한번도 나타나지 않았지만, 그 결과로서 얻어진 s는
s=sA-sB(mod n)
=k-1(dAr+h)-k-1(dBr+h)(mod n)
=k-1(dr+h)(mod n)
을 만족하기 위해서 비밀 키 d를 사용하여 계산한 것과 동일 결과가 얻어진다는 것이다.
이와 같이, 본 실시예에서도 dA와 dB로 나누어서 보존하고 있는 것을 활용한 처리를 행함으로서, 상기 실시예와 마찬가지의 효과가 얻어진다. 왜냐하면, 모처럼 비밀 키를 비밀 키 부분 정보로 나누어서 보존해두어도 예를 들면, 일단 d=dA-dB라는 계산에 의해서 구한 d의 값을 사용하여 ECDSA 서명 생성을 행하게 되는 효과가 감소하게 되기 때문이다.
또한, 제1 실시예과 마찬가지로 표현 변환 프로그램(1010)에 의해서 비밀 키 d의 표현인 비밀 키 부분 정보 dA(1007) 및 비밀 키 부분 정보 dB(1008)의 조를 변경함으로써, ECDSA 서명 생성 프로그램(14001), 보다 상세하게는 ECDSA 서명 생성 프로그램(14001)의 단계 15008 중의 승산 dAr 및 단계 15009 중 승산 dBr의 실행에 걸린 시간이나 발생하는 전자파의 강함이나 소비 전류는 비밀 키 d 그 자체의 값에는 의존하지 않게 된다. 따라서, TA(Timing Attack), DPA(Differential PowerAnalysis) 등에 의한 공격에 의해서 비밀 키의 값을 추정하는 것이 곤란해지는 효과를 얻을 수 있다.
본 실시예에서는 서명 대상 메시지의 메시지 다이제스트인 해시치를 IC 카드(1001)의 내부에서 ECDSA 서명 생성 프로그램(14001)의 단계 15003에서 구했지만 이 처리는 IC 카드(1001)와 정보의 교환을 할 수 있는 외부의 장치 예를 들면, IC 카드(100l)과 IC 카드 리더 기록기를 통하여 정보의 교환을 할 수 있는 PC 등으로 행해도 좋다. 이 경우, IC 카드에 대한 입력은 서명 대상 메시지의 해시치가 된다.
본 실시예에서 ECDSA 서명 생성 프로그램(14001)의 단계 15005에서 생성되는 난수 k도 비밀로 유지해야 할 값이다. 왜냐하면, 디지털 서명(r, s), 비밀 키 d, 난수 k, 해시치 h 등 간에는 s=k-1(dr+h)(mod n)라는 관계가 있고, 이들 중에서 r, s, h는 누구나 알 수 있는 값이기 때문에, 혹시 난수 k의 값을 알 수 있으면, 비밀 키 d의 값도 계산에 의해 알 수 있기 때문이다.
다만, 비밀 키 d의 값이 일정한 데 대하여, 난수 k는 서명을 생성할 때마다 랜덤하게 생성되는 점에서 다르기 때문에, TA(Timing Attack), DPA(Differential Power Analysis) 등의 공격에 의해서 값이 추정될 가능성이 비밀키에 비해 낮다. 또, 여기서, 비밀 키 d의 값이 일정한 것은 구체적 표현이 아니라 본래 가지고 있는 정보의 내용이다.
또, 보다 안전성을 높이는 목적으로 난수 k에 대해서도 본 발명을 적용하는것이 가능하다. 예를 들면, 제2 실시예와 마찬가지로 하여 다음과 같이 행할 수 있다. 즉, 우선 제2 실시예에서의 테이블 데이터 계산 프로그램(5001)에 의해 테이블 데이터를 계산해둔다. 본 실시예에서는 고정 점인 베이스 포인트 P에 관한 테이블이므로, 제2 실시예 중의 설명 중에서 진술한 바와 같이 테이블 데이터는 사전에 예를 들면, IC 카드(1001)의 외부에서 계산해 두는 것이 가능하다.
ECDSA 서명 생성 프로그램(14001)의 단계 15005에서 난수 k를 생성한 후, 이것을 kA와 kB의 조로 해서 표현하여 데이터 저장부(1004)에 보존하고 또한 표현 변환 프로그램에 의해 변환한다. 그 후 ECDSA 서명 생성 프로그램(14001)의 단계 15006에서의 (x, y)를 제2 실시예에서의 테이블 참조형 타원 곡선 암호 복호 프로그램(5002)과 마찬가지로 하여 계산한다. ECDSA 서명 생성 프로그램(14001)의 단계 15008 및 단계 15009에서 사용하는 값 k-1은 예를 들면, 다음과 같이 하여 계산하면 된다. 우선, t=kB -1, -kA -1(mod n)을 계산한다. 다음에 t-1kA -1kB -1(mod n)을 계산한다. 이것이 k-1과 같아진다.
여기서 특징적인 것은 이 k-1을 구하는 연산 중에 k 자신의 값은 나타나지 않은 것이다. 이에 따라 k-1을 구하는 연산에 걸린 시간이나 발생하는 전자파의 강함 또는 소비 전류는 k 그 자체의 값에는 의존하지 않게 된다. 따라서 TA(Timing Attack), DPA(Differential Power Analysis) 등에 의해 공격에 의해서, 난수 k의값을 추정하는 것이 곤란해진다.
본 실시예에서는 디지털 서명의 일종인 ECDSA 서명의 서명 생성 기능을 갖는 IC 카드에 적용한 예를 나타냈지만, 본 발명은 이 외에도 널리 적용 가능하다.
예를 들면, 이용하는 타원 곡선은 제1 실시예에서 진술한 다른 타원 곡선이라도 좋다. 또한, 타원 곡선 상의 이산대수 문제의 곤란성을 이용한 디지털 서명에 제한하지 않고, 제1 실시예에서 진술한 다른 군 상의 이산대수 문제의 곤란성을 이용한 디지털 서명이라도 좋다.
혹은 디지털 서명이 아니어도 보다 일반적으로, 군 G1로부터 군 G2로의 준동형 맵핑 f가 있어 비밀 이면에 유지해야 할 군 G1의 원 g에서 군 G2의 원 f(g)을 계산하는 장치가 있을 때, 이 장치에 대한 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해 g가 추정될 가능성은 본 발명에 따르면, 예를 들면 다음과 같이 하여 줄일 수 있다.
우선, g=g1·g2(·는 군 G1의 연산을 나타냄)가 되는 g1과 g2의 조에 의해 g를 표현하고 데이터 보존부에 보존해둔다.
다음에, 랜덤하게 선택한 G1의 원 h에 대하여 g1'=h·g1, g2'=h-1·g2(h-1은 군 G1의 연산·에 관한 h의 역원을 나타낸다)를 계산하고, g1을 gl'로 g2를 g2'로 대체하는 프로그램을 실행한다. 이것을 표현 변환 프로그램이라고 부른다. 마지막으로, f(g)의 값을 얻기 위해서, f(g1)#f(g2)(#은 군 G2의 연산을 나타낸다)를 계산한다. f는 준동형 맵핑이므로 f(gl)#f(g2)는 f(g)와 동일하다.
이와 같이 적절하게, 표현 변환 프로그램을 실행할 때마다 그 후의 f(g)의 값을 구하는 처리에 요하는 시간이나 발생하는 전자파의 강함이나 소비 전류는 달라진다. 이에 따라, TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등에 의해서 비밀 키의 값을 추정하는 것이 곤란해진다. 또, 여기서, 준동형 맵핑이란 군에서부터 군으로의 맵핑으로 연산을 행하도록 하는 맵핑이다.
(제6 실시예)
본 발명을 전자 상거래에서의 메시지의 송수신에 적용한 일 실시예를 이하 도면을 이용하여 설명한다.
이하의 실시예에서는 일반 소비자인 카드 홀더가 판매점인 상인에 대하여, 상품의 구입 요구를 행할 때의 처리에 대하여 설명한다. 도 12는 본 실시예에서의 시스템 구성도이다. 도 12에서 네트워크(16001)에 일반 소비자인 카드 홀더의 컴퓨터(16002), 판매점인 상인의 컴퓨터(16003) 및 인증국(16004)이 접속되어 있다. 여기서, 인증국이란 공개 키의 정당성을 보증하는 증명서를 발행하는 기관이다.
카드 홀더의 컴퓨터(16002)는 CPU(16005), 메모리(16006)로 이루어지며, 디스플레이(16007), 키보드(16008) 및 IC 카드 리더 기록기(16009)가 접속되어 있고 또한 네트워크(16001)에 접속되어 있다. 카드 홀더는 또 서명용 IC 카드(16010)를 소유하고 있고, 서명용 IC 카드(16010)와 컴퓨터(16002)는 IC 카드 리더 기록기(16009)를 통하여 정보의 교환이 가능해지고 있다. 이 서명용 IC 카드(16010)는 제5 실시예에 나타낸 IC 카드와 같은 것이다.
상인의 컴퓨터(16003)는 CPU(16011), 메모리(16012)로 이루어지며 디스플레이(16013) 및 키보드(16014)가 접속되고 있으며 또한 네트워크(16001)에 접속되어 있다.
카드 홀더의 컴퓨터(16002)의 메모리(16006) 내에는 공개 키(16015)가, 또한 카드 홀더의 소유하는 서명용 IC 카드(16010)의 메모리 내에는 공개 키(16015)와 쌍이 되는 비밀 키에 관계되는 정보나 프로그램이 본 발명을 적용한 형태로 보존되어 있다. 이들 정보는 카드 발행자, 예를 들면 신용 카드 회사에 의해서, 미리 비밀 키에 관계되는 정보나 프로그램이 기입된 IC 카드와, 공개 키 정보가 들어 간 FD나 CD-ROM 등의 기록 매체가 보내짐으로써 설정되는 것이다. 혹은 공개 키 정보는 유선 무선 등의 전송 매체에 의해서 보내지는 것으로 해도 된다. 혹은 카드 발행자로부터 보내진 IC 카드에 키 생성 기능이 삽입되어 있고, 그것을 카드 홀더가 실행함으로써 설정되는 것으로 해도 좋다. 혹은 또한 카드 발행자로부터 카드 홀더의 컴퓨터 상에서 실행 가능한 키 생성 프로그램이 FD나 CD-ROM 등의 기록 매체나 유선 무선 등의 전송 매체에 의해서 보내지고 있으며, 그것을 카드 홀더가 실행함으로써, 보내지는 IC 카드로 설정되는 것으로 해도 된다. 키 생성 기능이 첨가된 IC 카드를 이용하는 방법의 경우에는 비밀 키에 관한 정보가 IC 카드의 외부에 누설되지 않기 때문에, 보안 상의 관점으로부터는 이 방법이 가장 바람직하다. 또, IC 카드 내의 비밀키는 제5 실시예와 마찬가지로, 본 발명을 적용한 보존 방법에 의해서 보존되어 있는 것으로 한다. 또한, 상기 실시예를 적용한 비밀 정보 생성 정보에 의한 비밀 정보의 표현 방법이나 그 비밀 정보 생성 정보를 처리하는 프로그램은 개개의 IC 카드에 의해서 다르게 해도 좋고 동일해도 된다. 다르게 한 쪽이 보다 안전성이 높아진다.
상인의 컴퓨터(16003)의 메모리(16012) 내에는 미리 서명 검증 프로그램(16018) 및 시스템 키(16019)가 설정되어 있다. 이들은 카드 홀더가 소유하는 서명용 IC 카드(16010)에 대응하도록 설정되어 있는 것으로 한다. 서명 검증 프로그램(16018)의 상세에 대해서는 문헌 [X9. 62]에 진술되고 있다.
다음에, 카드 홀더가 행하는 처리에 대하여 설명한다.
처음에 카드 홀더는 인증국(16004)에 공개 키 증명서(16016)를 발행해주기 때문에 공개 키(16015)를 보낸다. 인증국(16004)은 카드 홀더로부터의 요구에 따라, 주지의 방법으로, 공개 키 증명서(16016)를 발행하여 카드 홀더의 컴퓨터(16002)로 보낸다. 이 처리는 하나의 공개 키에 대하여 한번만 필요한 처리이다. 다시 말해서, 구입 요구 메시지를 송신하는 처리를 행할 때마다 필요한 것은 아니다. 또한, 인증국이 공개 키 증명서를 발행하는 순서 중에는 디지털 서명을 생성하는 과정이 포함되기 때문에, 이 과정에 대해서도 본 발명을 적용하는 것은 가능하다.
다음에, 카드 홀더가 구입 요구 메시지를 상인에게 송신할 때의 처리에 대하여 설명한다.
카드 홀더의 컴퓨터(16002)는 구입 요구 메시지(16017)를 작성하고, 메모리(16006) 내에 보존한다. 이 구입 요구 메시지(16017)를 IC 카드 리더 기록기(16009)를 통하여 서명용 IC 카드(16010)로 보내서, 본 발명에 따른 방법에 따라서 디지털 서명(16020)을 생성시키고 이것을 메모리(16006) 내에 보존한다.
이 디지털 서명(16020)은 구입 요구 메시지(16017)의 내용이 확실히 카드 홀더에 의해서 확인된 것을 나타내는 증거가 되며, 통상의 종이의 서류에서의 인영에 상당한다. 즉, 통상의 종이의 서류에 대한 인감에 상당하는 것이 서명용 IC 카드(16010) 내에 보존된 비밀 키가 된다. 따라서, 혹시 서명용 IC 카드(16010) 내에 보존된 비밀키를 악의가 있는 사람이 알게 되면, 정당한 소유자가 카드 홀더를 사용하는 것처럼 하여 구입 요구를 행할 수 있게 된다.
본 실시예에 따르면, 지금까지 진술한 바와 같이 서명용 IC 카드에 대한 이들의 공격법에 의해 비밀키를 추정하는 것이 곤란해진다.
카드 홀더의 컴퓨터(16002)는 디지털 서명(16020)을 생성한 후, 구입 요구 메시지(16017), 공개키(16015), 공개 키 증명서(16016) 및 디지털 서명(16020)을 통합하여 송신문(16021)으로서 네트워크(16001)를 통하여 상인에게 보낸다.
상인은 송신문(16021)을 수취하면 우선 주지 방법에 의해 공개 키 증명서(16016)를 사용하여 공개 키(16015)가 정당한 것을 확인한 후, 서명 검증 프로그램(16018)을 실행함으로써, 구입 요구 메시지(16017)가 확실히 카드 홀더에 의해서 작성된 것인지의 여부를 디지털 서명(16020), 공개 키(16015) 및 시스템 키(16019) 등을 이용하여 조사한다. 그 결과, 디지털 서명(16020)의 정당성이 확인되면, 구입 요구 메시지(16017)의 내용은 신뢰할 수 있다고 하여 거래를 계속한다. 한편, 혹시 디지털 서명(16020)의 정당성이 확인되지 않으면, 네트워크(16001) 상에서 위조되었거나, 혹은 올바른 카드 홀더가 아닌 사람에 의해구입 요구 메시지(16017)가 작성되는 등 어떤 부정이 있었기 때문에 거래는 중지한다.
본 발명은 상기 과제에 감안하여 이루어진 것으로, IC 카드 등의 secure cryptographic device내의 비밀 정보를 추정할 수 없도록 하는 수단, 기술을 제공하는 것을 목적으로 한다.
즉, 본 발명은 IC 카드 등의 secure cryptographic device에 대한 TA(Timing Attack), DPA(Differential Power Analysis), SPA(Simple Power Analysis) 등의 공격법을 무효로 하는 수단, 기술을 제공하는 것을 목적으로 한다.
또한, 이들 수단, 기술을 이용한 IC 카드, 시큐러티 모듈, 반도체 칩, 시스템, 컴퓨터, 프로그램을 제공하는 것을 목적으로 하고 있다.
상기 목적을 달성하기 위해서, 본 발명은 연산 처리 회로와 기억 회로와 이들을 접속하는 신호선으로 구성된 비밀 정보의 처리 장치에 있어서, 비밀 정보와 처리 대상이 되는 데이터를 기지의 처리 방법에 기초하여 처리한 처리 결과와 동일한 처리 결과를 얻도록 구성된 비밀 정보의 처리 방법으로써, 상기 비밀 정보와는 다른 비밀 정보 생성 정보와, 상기 비밀 정보 생성 정보와 상기 처리 대상이 되는 데이터를 이용하여 동일한 상기 처리 결과를 출력하는 비밀 정보 생성 정보 처리 수단을 이용하는 것을 특징으로 하는 것이다.
또한, 본 발명의 비밀 정보 생성 정보 처리 수단은 상기 비밀 정보를 상기 연산 처리 회로나 상기 기억 회로나 상기 신호선에 출현시키지 않고 처리를 행하는 것을 특징으로 하는 것이다.
구체적인 일례로서는 비밀 정보는 암호문의 복호나 서명 생성을 위한 비밀 키이고, 비밀 정보 처리 수단은 암호화 또는 서명 생성의 기지 알고리즘을 실현하는 수단이고, 처리 결과는 복호화된 평문이나 생성된 서명이다. 비밀 키와는 다른 비밀 정보 생성 정보와, 그것을 이용하여 평문이나 서명을 처리 결과로서 출력하는 비밀 정보 생성 정보 처리 수단을 이용함으로써, 비밀 정보를 외부로부터 알게 되는 것은 곤란하다.
또한, 본 발명은 동일한 비밀 정보 생성 정보 처리 수단이 처리하는 비밀 정보 생성 정보가 취할 수 있는 값이 복수개 있도록 구성한다.
구체적으로는, 본 발명의 상기 기억 회로는 상기 비밀 정보 생성 정보를 그 조합이 복수개 있는 복수의 비밀 정보 부분 정보로서 구성하고, 상기 기억 회로에 보유하는 것을 특징으로 하는 것이다.
이들 수단을 채용함으로써, 비밀 정보 그 자체는 내부의 기억 수단에 유지되고 있을 때나 기억 수단과 연산 수단 간을 장치 내부의 신호선(내부 버스)을 통하여 보낼 때, 연산 수단에 있어서 상기 처리 수단에 의해 처리될 때, 어느쪽의 경우에서도 출현하지 않는다. 따라서 비밀 정보 그 자체를 얻는 것은 곤란해진다. 또한, 비밀 정보 생성 정보는 그것과 조합하여 이용하는 비밀 정보 생성 정보 처리 수단에 의해서 원하는 결과를 얻을 수 있으므로, 상기 정보만을 얻었다고 해도 비밀 정보를 얻지는 못한다. 또한, 부정으로 비밀 정보를 입수하려고 하는 공격자가 비밀 정보 생성 정보 처리 수단을 알았다고 해도, 비밀 정보 생성 정보로서 취할 수 있는 데이터가 복수개로 그대로 있을 때는 공격자에게 있어서 필요한 시행 횟수가 증가하기 때문에 비밀 정보를 얻는 것이 더 곤란해진다.
따라서, 걸리는 시간, 발생하는 전자파의 강함 및 소비 전류 등으로부터 비밀 정보 그 자체를 얻는 것이 곤란해진다.
또한, 상기 목적을 달성하기 위해서 간접적으로 얻어지는 측정 결과와 내부 정보와의 상관 관계를 적게 하는 수단을 설치한다.
보다 구체적으로는 본 발명에서는 다음 수단을 이용한다.
(1) 비밀 이면에 유지해야 할 정보를 이용한 연산에 있어서, 상기 정보를 나타내는 복수의 표현을 연산마다 구별지어서 사용한다.
(2) 어느 표현 방법으로 기억 장치 내에 보유되었던 비밀로 해야 할 정보를 그 정보를 이용한 연산이 행해질 때마다 혹은 미리 결정된 시기에 혹은 랜덤하게 결정된 시기에, 다른 표현으로 변환하고 변환된 새로운 표현에 의해 원래의 표현을 재기입한다.
(3) 비밀 이면에 보유해야 할 정보 A와 그것과는 다른 정보 B를 이용한 연산에 있어서, 상기 정보 B를 나타내는 복수의 표현을 연산마다 구별지어 사용한다.
(4) 비밀로 해야 할 정보 A를 이용한 연산에 사용되는 정보로써, 어느 표현 방법으로 기억 장치 내에 보유된 상기 비밀로 해야 할 정보 A와는 다른 정보 B를 상기 비밀로 해야 할 정보 A를 이용한 연산이 행해질 때마다 혹은 미리 결정된 시기에 혹은 랜덤하게 결정된 시기에 다른 표현으로 변환하고, 변환된 새로운 표현에 의해 원래의 표현을 재기입한다.
즉, 본 발명의 상기 기억 회로는 상기 비밀 정보 생성 정보를 다른 비밀 정보 생성 정보로 변환하는 변환 수단을 더 구비하고, 상기 다른 비밀 정보 생성 정보는 상기 비밀 정보 생성 정보 처리 수단이 상기 처리 결과와 동일한 처리 결과를 출력시키는 정보인 것을 특징으로 하는 것이다.
또한 본 발명의 상기 연산 처리 회로는 상기 변환 수단을 소정의 시기에 실행하는 것을 특징으로 하는 것이다.
상기 수단을 채용함으로써 상기 비밀로 해야 할 정보 A를 이용하는 연산이 실행될 때 걸리는 시간, 발생하는 전자파의 강함 및 소비 전류 등이 일정해지도록 하여서, 그 결과로서 상기 비밀로 해야 할 정보 A와, 정보 A를 이용하는 연산에 걸리는 시간, 발생하는 전자파의 강함 및 소비 전류 간의 관련(상관 관계)을 적게 한다.
또, 상기 비밀 정보 생성 정보 처리 수단이나 변환 수단의 구체적인 일례가 프로그램이고, 이것은 디지털 신호 처리 프로세서(DSP라 함), 중앙 연산 처리 회로(CPU라 함) 등의 연산 수단에 의해서 실행되는 것이다.
또한, 본 발명은 상술한 비밀 정보의 처리 장치를 이용하여 상기 비밀 정보를 이용한 처리 결과를 송수신하는 비밀 정보의 처리 시스템으로써, 상기 처리 결과의 수신자측 장치는 상기 비밀 정보 생성 정보 처리 수단과 상기 비밀 정보 생성 정보를 상기 처리 장치의 상기 기억 회로로 설정하는 수단을 구비하고, 처리 장치의 사용자측 장치는 상기 처리 장치에 처리 대상이 되는 데이터를 입력하는 수단과, 상기 처리 장치로부터 상기 처리 결과를 수취하는 수단과, 상기 수취한 처리 결과를 상기 수신자측 장치로 송신하는 수단을 포함하는 것을 특징으로 하는 것이다.
본 발명에 의해, 각 종 공격법에 대하여 안전한 연산 방법, 정보의 보유 방법 및 이들의 방법을 이용한 IC 카드, 시큐러티 모듈, 반도체 칩, 시스템, 컴퓨터, 프로그램을 제공할 수 있다.

Claims (9)

  1. 연산 처리 회로와 기억 회로와 이들을 접속하는 신호선으로 구성하고 있으며, 비밀 정보와 처리 대상이 되는 데이터를 기지의 처리 방법에 기초하여 처리한 처리 결과와 동일한 처리 결과를 얻도록 구성된 비밀 정보의 처리 장치에 있어서,
    상기 기억 회로는 상기 비밀 정보와는 다른 비밀 정보 생성 정보와, 상기 비밀 정보 생성 정보와 상기 처리 대상이 되는 데이터를 이용하여, 상기 비밀 정보를 상기 연산 처리 회로나 상기 기억 회로 또는 상기 신호선에 출현시키지 않고, 상기 처리 결과를 출력하는 비밀 정보 생성 정보 처리 수단을 보유하고,
    상기 연산 처리 회로는 상기 비밀 정보 생성 정보 처리 수단을 실행하는 것을 특징으로 하는 비밀 정보의 처리 장치.
  2. 제1항에 있어서, 상기 기억 회로는 상기 비밀 정보 생성 정보를 복수의 비밀 정보 부분 정보로서 보유하는 것을 특징으로 하는 비밀 정보의 처리 장치.
  3. 제1항 또는 제2항에 있어서, 상기 기억 회로는 상기 비밀 정보 생성 정보를 다른 비밀 정보 생성 정보로 변환하는 변환 수단을 더 포함하고,
    상기 다른 비밀 정보 생성 정보는 상기 비밀 정보 생성 정보 처리 수단이 상기 처리 결과와 동일한 처리 결과를 출력시키는 정보인 것을 특징으로 하는 비밀 정보의 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 비밀 정보는 공개 키 암호 기술에서의 복호화 또는 디지털 서명을 생성하기 위한 비밀 키인 것을 특징으로 하는 비밀 정보의 처리 장치.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 연산 처리 회로는 상기 변환 수단을 소정의 시기에 실행하는 것을 특징으로 하는 비밀 정보의 처리 장치.
  6. 연산 처리 회로와 기억 회로와 이들을 접속하는 신호선으로 구성된 처리 장치에 있어서의 비밀 정보의 처리 프로그램으로써, 비밀 정보와 처리 대상이 되는 데이터를 기지의 처리 방법에 기초하여 처리한 처리 결과와 동일한 처리 결과를 얻도록 구성되는 비밀 정보의 처리 프로그램에 있어서,
    상기 비밀 정보와는 다른 비밀 정보 생성 정보와 상기 처리 대상이 되는 데이터를 이용하고,
    상기 비밀 정보를 상기 연산 처리 회로나 상기 기억 회로, 또는 상기 신호선에 출현시키지 않고,
    상기 연산 처리 회로에 상기 처리 결과를 출력시키는 바와 같이 구성한 것을 특징으로 하는 비밀 정보의 처리 프로그램.
  7. 제6항에 있어서, 상기 비밀 정보의 처리 프로그램은 상기 비밀 정보 생성 정보로서 복수개의 비밀 정보 부분 정보를 처리하는 것을 특징으로 하는 비밀 정보의 처리 프로그램.
  8. 제6항 또는 제7항에 있어서, 상기 비밀 정보 생성 정보를 다른 비밀 정보 생성 정보로 변환하는 변환 수단을 더 포함하고,
    상기 비밀 정보의 처리 프로그램은 다른 비밀 정보 생성 정보를 이용하여, 상기 처리 결과와 동일한 처리 결과를 출력하는 것을 특징으로 하는 비밀 정보의 처리 프로그램.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서, 비밀 정보의 처리 장치를 이용하여 상기 비밀 정보를 이용한 처리 결과를 송수신하는 비밀 정보의 처리 시스템에 있어서,
    상기 처리 결과의 수신자측 장치는 상기 비밀 정보 생성 정보 처리 수단과 상기 비밀 정보 생성 정보를 상기 처리 장치의 상기 기억 회로로 설정하는 수단을 포함하고,
    처리 장치의 사용자측 장치는 상기 처리 장치에 처리 대상이 되는 데이터를 입력하는 수단과, 상기 처리 장치로부터 상기 처리 결과를 수취하는 수단과, 상기 수취한 처리 결과를 상기 수신자측 장치로 송신하는 수단을 포함하는 것을 특징으로 하는 비밀 정보의 처리 시스템.
KR10-2000-7009164A 1999-09-29 1999-09-29 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템 KR100373669B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1999/005353 WO2001024439A1 (fr) 1999-09-29 1999-09-29 Dispositif, programme ou systeme de traitement d'informations secretes

Publications (2)

Publication Number Publication Date
KR20020025630A true KR20020025630A (ko) 2002-04-04
KR100373669B1 KR100373669B1 (ko) 2003-02-26

Family

ID=14236839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7009164A KR100373669B1 (ko) 1999-09-29 1999-09-29 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템

Country Status (7)

Country Link
US (1) US6873706B1 (ko)
EP (1) EP1217783B9 (ko)
JP (1) JP4671571B2 (ko)
KR (1) KR100373669B1 (ko)
AU (1) AU762650B2 (ko)
DE (1) DE69940372D1 (ko)
WO (1) WO2001024439A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750425B1 (ko) * 2005-03-01 2007-08-21 인피니언 테크놀로지스 아게 결과 오퍼랜드의 표시를 계산하기 위한 장치 및 방법과 컴퓨터 판독 가능한 매체
KR101456579B1 (ko) * 2010-07-23 2014-10-31 니폰 덴신 덴와 가부시끼가이샤 비밀 분산 시스템, 분산 장치, 분산 관리 장치, 취득 장치, 비밀 분산 방법, 프로그램, 및 기록 매체

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092523B2 (en) * 1999-01-11 2006-08-15 Certicom Corp. Method and apparatus for minimizing differential power attacks on processors
US7599491B2 (en) * 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
JP4671571B2 (ja) 1999-09-29 2011-04-20 株式会社日立製作所 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ
DE19963408A1 (de) * 1999-12-28 2001-08-30 Giesecke & Devrient Gmbh Tragbarer Datenträger mit Zugriffsschutz durch Schlüsselteilung
DE50014462D1 (de) * 2000-05-22 2007-08-16 Infineon Technologies Ag Sicherheits-Datenverarbeitungseinheit sowie dazugehöriges Verfahren
US7308096B2 (en) * 2000-05-30 2007-12-11 Hitachi, Ltd. Elliptic scalar multiplication system
US9323955B2 (en) * 2000-12-21 2016-04-26 Gemalto Sa Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system
FR2820914A1 (fr) * 2001-02-15 2002-08-16 Bull Cp8 Procede de securisation d'un ensemble electronique mettant en oeuvre en algorithme cryptographique utilisant des operations booleennes et des operations arithmetiques, et systeme embarque correspondant
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
DE10148415C2 (de) * 2001-09-29 2003-07-31 Univ Braunschweig Tech Verfahren und Vorrichtung zum Verschlüsseln und Entschlüsseln von Daten
JP4045777B2 (ja) * 2001-10-30 2008-02-13 株式会社日立製作所 情報処理装置
US8582774B2 (en) * 2002-03-07 2013-11-12 Gemalto Sa Method for making safe an electronic cryptography assembly with a secret key
US7549059B2 (en) * 2002-06-26 2009-06-16 Arm Limited Transferring data values via a data bus or storing data values using a selectable representation
JP3881942B2 (ja) * 2002-09-04 2007-02-14 松下電器産業株式会社 暗号化部を有する半導体装置
KR100451570B1 (ko) * 2002-10-29 2004-10-08 (주)미래스멕스 에스피에이에 견디는 타원 곡선 암호화 알고리즘을구현하는 방법 및 장치
KR100453230B1 (ko) * 2002-11-08 2004-10-15 한국전자통신연구원 초타원곡선 암호화 프로세싱 장치
DE10253285B4 (de) * 2002-11-15 2018-11-15 Giesecke+Devrient Mobile Security Gmbh Verschleierung eines geheimen Wertes
US7587051B2 (en) 2003-01-13 2009-09-08 Denis Bisson System and method for securing information, including a system and method for setting up a correspondent pairing
DE10308092A1 (de) * 2003-02-24 2004-09-02 Schenck Process Gmbh Verfahren und Vorrichtung zur digitalen Sicherung von Meßwerten
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
EP1668466B1 (de) * 2003-09-30 2008-02-27 Siemens Aktiengesellschaft Einräumung eines zugriffs auf ein computerbasiertes objekt
DE502004007798D1 (de) * 2003-09-30 2008-09-18 Siemens Ag Einräumung eines zugriffs auf ein computerbasiertes objekt
JP4428036B2 (ja) * 2003-12-02 2010-03-10 ソニー株式会社 情報処理装置および方法、プログラム、並びに、情報処理システムおよび方法
FR2873523B1 (fr) * 2004-07-22 2007-08-10 Sagem Procede et dispositif d'execution d'un calcul cryptographique
JPWO2006030496A1 (ja) * 2004-09-15 2008-05-08 三菱電機株式会社 楕円曲線暗号演算装置、楕円曲線を用いた演算装置の演算方法および楕円曲線上の点のスカラー倍演算をコンピュータに実行させるプログラム
KR20060081847A (ko) * 2005-01-10 2006-07-13 삼성전자주식회사 비밀키를 보호하는 스마트 카드 및 그것의 방법
WO2006076800A1 (en) 2005-01-18 2006-07-27 Certicom Corp. Accelerated verification of digital signatures and public keys
US8467535B2 (en) * 2005-01-18 2013-06-18 Certicom Corp. Accelerated verification of digital signatures and public keys
JP4668931B2 (ja) * 2005-01-24 2011-04-13 富士通株式会社 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
WO2006118086A1 (ja) * 2005-04-28 2006-11-09 Matsushita Electric Industrial Co., Ltd. プログラム変換装置、暗号処理装置、暗号処理方法
KR101194837B1 (ko) * 2005-07-12 2012-10-25 삼성전자주식회사 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법
US8913739B2 (en) 2005-10-18 2014-12-16 Telecom Italia S.P.A. Method for scalar multiplication in elliptic curve groups over prime fields for side-channel attack resistant cryptosystems
US8243920B2 (en) 2005-10-28 2012-08-14 Telecom Italia S.P.A. Method for scalar multiplication in elliptic curve groups over binary polynomial fields for side-channel attack-resistant cryptosystems
US8280039B2 (en) * 2005-12-28 2012-10-02 Panasonic Corporation Signature generating device, signature generating method and signature generating program
WO2007088796A1 (en) * 2006-01-31 2007-08-09 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
US8997255B2 (en) 2006-07-31 2015-03-31 Inside Secure Verifying data integrity in a data storage device
US8301890B2 (en) * 2006-08-10 2012-10-30 Inside Secure Software execution randomization
US7613907B2 (en) * 2006-08-11 2009-11-03 Atmel Corporation Embedded software camouflage against code reverse engineering
US8352752B2 (en) * 2006-09-01 2013-01-08 Inside Secure Detecting radiation-based attacks
US7554865B2 (en) * 2006-09-21 2009-06-30 Atmel Corporation Randomizing current consumption in memory devices
US7860244B2 (en) * 2006-12-18 2010-12-28 Sap Ag Secure computation of private values
US8559625B2 (en) * 2007-08-07 2013-10-15 Inside Secure Elliptic curve point transformations
US7991162B2 (en) * 2007-09-14 2011-08-02 University Of Ottawa Accelerating scalar multiplication on elliptic curve cryptosystems over prime fields
US8619977B2 (en) * 2008-01-15 2013-12-31 Inside Secure Representation change of a point on an elliptic curve
US8233615B2 (en) * 2008-01-15 2012-07-31 Inside Secure Modular reduction using a special form of the modulus
FR2926652B1 (fr) * 2008-01-23 2010-06-18 Inside Contactless Procede et dispositifs de contre-mesure pour cryptographie asymetrique a schema de signature
JP5233473B2 (ja) * 2008-07-25 2013-07-10 大日本印刷株式会社 暗号処理装置
US8139765B2 (en) * 2008-12-29 2012-03-20 King Fahd University Of Petroleum & Minerals Elliptical polynomial-based message authentication code
US9009481B2 (en) 2010-03-31 2015-04-14 Irdeto Canada Corporation System and method for protecting cryptographic assets from a white-box attack
US8705730B2 (en) * 2010-12-23 2014-04-22 Morega Systems Inc. Elliptic curve cryptography with fragmented key processing and methods for use therewith
CN102110206B (zh) * 2010-12-27 2013-01-16 北京握奇数据系统有限公司 防御攻击的方法和具有攻击防御功能的装置
US8525545B1 (en) 2011-08-26 2013-09-03 Lockheed Martin Corporation Power isolation during sensitive operations
US8624624B1 (en) 2011-08-26 2014-01-07 Lockheed Martin Corporation Power isolation during sensitive operations
US8745376B2 (en) 2011-10-14 2014-06-03 Certicom Corp. Verifying implicit certificates and digital signatures
US8635467B2 (en) 2011-10-27 2014-01-21 Certicom Corp. Integrated circuit with logic circuitry and multiple concealing circuits
US8334705B1 (en) 2011-10-27 2012-12-18 Certicom Corp. Analog circuitry to conceal activity of logic circuitry
CN103679008B (zh) * 2012-09-03 2018-08-17 江苏东大集成电路系统工程技术有限公司 一种高效的安全芯片功耗攻击测试方法
CN104811445B (zh) * 2015-04-20 2018-03-27 深圳市文鼎创数据科技有限公司 一种时间攻击安全性评估的方法及系统
JP5986279B2 (ja) * 2015-08-28 2016-09-06 ルネサスエレクトロニクス株式会社 半導体装置
KR20200046481A (ko) * 2018-10-24 2020-05-07 삼성전자주식회사 난수 생성기, 이를 포함하는 암호화 장치 및 이의 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0376447A (ja) 1989-08-18 1991-04-02 Sharp Corp 秘話装置
US5825880A (en) * 1994-01-13 1998-10-20 Sudia; Frank W. Multi-step digital signature method and system
US5768389A (en) * 1995-06-21 1998-06-16 Nippon Telegraph And Telephone Corporation Method and system for generation and management of secret key of public key cryptosystem
US5937066A (en) * 1996-10-02 1999-08-10 International Business Machines Corporation Two-phase cryptographic key recovery system
WO1998036520A1 (en) 1997-02-13 1998-08-20 Secure Transaction Solutions, Llc Cryptographic key split combiner
US7212632B2 (en) * 1998-02-13 2007-05-01 Tecsec, Inc. Cryptographic key split combiner
JPH10282881A (ja) 1997-04-04 1998-10-23 Nippon Telegr & Teleph Corp <Ntt> 秘密鍵分散管理方法
US6411715B1 (en) * 1997-11-10 2002-06-25 Rsa Security, Inc. Methods and apparatus for verifying the cryptographic security of a selected private and public key pair without knowing the private key
EP0936776B1 (en) * 1998-02-13 2004-05-19 Hitachi, Ltd. A network system using a threshold secret sharing method
JP3050313B2 (ja) 1998-03-05 2000-06-12 松下電器産業株式会社 楕円曲線変換装置、利用装置及び利用システム
JP4671571B2 (ja) 1999-09-29 2011-04-20 株式会社日立製作所 秘密情報の処理装置および秘密情報の処理プログラムを格納するメモリ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750425B1 (ko) * 2005-03-01 2007-08-21 인피니언 테크놀로지스 아게 결과 오퍼랜드의 표시를 계산하기 위한 장치 및 방법과 컴퓨터 판독 가능한 매체
KR101456579B1 (ko) * 2010-07-23 2014-10-31 니폰 덴신 덴와 가부시끼가이샤 비밀 분산 시스템, 분산 장치, 분산 관리 장치, 취득 장치, 비밀 분산 방법, 프로그램, 및 기록 매체

Also Published As

Publication number Publication date
KR100373669B1 (ko) 2003-02-26
EP1217783A4 (en) 2004-05-12
AU5999299A (en) 2001-04-30
EP1217783B1 (en) 2009-01-28
US6873706B1 (en) 2005-03-29
EP1217783A1 (en) 2002-06-26
DE69940372D1 (de) 2009-03-19
AU762650B2 (en) 2003-07-03
EP1217783B9 (en) 2009-07-15
WO2001024439A1 (fr) 2001-04-05
JP4671571B2 (ja) 2011-04-20

Similar Documents

Publication Publication Date Title
KR100373669B1 (ko) 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템
US7940927B2 (en) Information security device and elliptic curve operating device
CN108833103B (zh) 射频识别标签和读取设备之间进行安全通信的方法和系统
US20080240443A1 (en) Method and apparatus for securely processing secret data
US11323255B2 (en) Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes
EP3871365B1 (en) Computer implemented system and method for distributing shares of digitally signed data
US20080063193A1 (en) Crypto-communication method, recipient-side device, key management center-side device and program
US11764943B2 (en) Methods and systems for somewhat homomorphic encryption and key updates based on geometric algebra for distributed ledger/blockchain technology
EP2742644B1 (en) Encryption and decryption method
Vincent et al. Improving e-payment security using elliptic curve cryptosystem
CN109921905B (zh) 基于私钥池的抗量子计算密钥协商方法和系统
JP2004304800A (ja) データ処理装置におけるサイドチャネル攻撃防止
JP2010164904A (ja) 楕円曲線演算処理装置、楕円曲線演算処理プログラム及び方法
JP2004512570A (ja) 非安全な暗号加速器を用いる方法と装置
EP1296224A1 (en) Elliptic scalar multiplication system
US11336425B1 (en) Cryptographic machines characterized by a Finite Lab-Transform (FLT)
JP4706811B2 (ja) 依頼計算を用いた演算装置、及び記録媒体
KR100817048B1 (ko) 여러 가지 포인트 표현을 기반으로 한 ecc에서 dfa대책을 위한 암호화 방법 및 장치
KR100564599B1 (ko) 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체
KR102067065B1 (ko) 전력 분석 및 전자파 분석에 안전한 메시지 랜덤화 기반의 행렬-벡터 곱 연산 장치, 이를 이용한 암호화 장치 및 방법
KR100899020B1 (ko) 공개키를 이용하여 암호화 작업을 수행하는 방법
Sasikaladevi et al. SNAP-compressive lossless sensitive image authentication and protection scheme based on Genus-2 hyper elliptic curve
AU2003252789B2 (en) Processing apparatus, program, or system of secret information
CN115865531B (zh) 一种代理重加密数字资产授权方法
GOEL DEVELOPMENT OF SECURE AND EFFICIENT HYBRID CRYPTOSYSTEM

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
FPAY Annual fee payment

Payment date: 20120119

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee