KR100805286B1 - 정보처리장치 정보처리방법 및 카드부재 - Google Patents

정보처리장치 정보처리방법 및 카드부재 Download PDF

Info

Publication number
KR100805286B1
KR100805286B1 KR1020010012144A KR20010012144A KR100805286B1 KR 100805286 B1 KR100805286 B1 KR 100805286B1 KR 1020010012144 A KR1020010012144 A KR 1020010012144A KR 20010012144 A KR20010012144 A KR 20010012144A KR 100805286 B1 KR100805286 B1 KR 100805286B1
Authority
KR
South Korea
Prior art keywords
signal
calculation
processing
data processing
integer
Prior art date
Application number
KR1020010012144A
Other languages
English (en)
Other versions
KR20010091939A (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 KR20010091939A publication Critical patent/KR20010091939A/ko
Application granted granted Critical
Publication of KR100805286B1 publication Critical patent/KR100805286B1/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/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
    • H04L9/3073Public 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 involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7252Randomisation as countermeasure against side channel attacks of operation order, e.g. starting to treat the exponent at a random place, or in a randomly chosen direction
    • 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/723Modular exponentiation
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Storage Device Security (AREA)
  • Credit Cards Or The Like (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 정보처리장치, 정보처리방법 및 카드부재로서 고세큐리티를 갖는 IC카드등에 공급하는 내덤퍼정보처리장치에 제공하는 것을 목적으로서신호를 입력하는 입력수단과 프로그램을 격납하는 격납부와 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단등을 적어도 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나 이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리 할때 상기 데이터처리명령의 적어도 하나가 신호A와 데이터처리에 있어서의 소망계산에 이용하는 신호B를 가지고 실행하는 연산을 일단 A에서는 B를 소망으로 분할하고 분할된 A 및 B를 각각 소망의 연산을 실행한다. 그리고 각각 개별로 계산 한 후 사이 각 개별계산의 총연산을 실행 하고 정확한 암호화신호를 구하는 스텝을 구비하는 것을 특징으로 하는 정보처리장치를 제공하는 기술이 제시된다.

Description

정보처리장치 정보처리방법 및 카드부재{INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD AND SMARTCARD}
도 1 은 IC카드의 개관 및 단자의 예를 나타내는 평면도이다.
도 2 는 마이크로컴퓨터의 기본구성을 나타내는 블록도이다.
도 3 은 IC카드에 있어서의 소비전류의 파형의 예를 나타내는 도이다.
도 4 는 누승잉여계산의 예를 나타내는 플로챠트이다.
도 5 는 입력분할에 의한 전류대책을 실행하는 예를 나타내는 플로챠트이다.
도 6A 는 입력분할에 의한 전류대책을 실행하는 별도의 예를 나타내는 플로챠트의 일부이다.
도 6B 는 입력분할에 의한 전류대책을 실행하는 별도예를 나타내는 플로챠트의 잔여부이다.
도 7A 는 키분할에 의한 전류대책을 실행하는 예를 나타내는 플로챠트에 일부이다.
도 7B 는 키분할에 의한 전류대책을 실행하는 예를 나타내는 플로챠트의 잔여부이다.
도 8A 는 키분할에 의한 전류대책을 실행하는 별도예를 나타내는 플로챠트의 일부이다.
도 8B 는 키분할에 의한 전류대책을 실행하는 별도예를 나타내는 플로챠트의 잔여부이다.
도 9 는 비트패턴의 다른 지수를 이용한 전류교란법의 예를 나타내는 플로챠트이다.
도 10 은 타원곡선상에서의 가산법을 설명하는 도이다.
도 11 은 타원곡선상의 점(P)의 스칼라배의 계산의 예를 나타내는 플로챠트이다.
도 12A 는 타원곡선상의 점의 스칼라배에 관한 스칼라분할방식의 예를 나타내는 플로챠트의 일부이다.
도 12B 는 타원곡선상의 점의 스칼라배에 관한 스칼라배에 관한 스칼라분할방식의 예를 나타내는 플로챠트의 잔여부이다.
도 13A 는 타원곡선상의 점의 스칼라배에 관한 스칼라분할방식의 별도예를 나타내는 플로챠트의 일부이다.
도 13B 는 타원곡선상의 점의 스칼라배에 관한 스칼라분할방식의 별도예를 나타내는 플로챠트의 잔연부이다.
도 14 는 비트패턴이 다른 스칼라를 이용한 전류교란법의 예를 나타내는 플로챠트이다.
도 15A 는 입력분할의 처리순서의 랜덤화의 예를 나타내는 플로챠트의 일부이다.
도 15B 는 입력분할의 처리순의 랜덤화의 예를 나타내는 플로챠트의 잔여부 이다.
도 16A 는 지수분할 후의 처리순서의 랜덤화의 예를 나타내는 플로챠트의 일부이다.
도 16B 는 지수분할 후의 처리순서의 랜덤화의 예를 나타내는 플로챠트의 잔여부이다.
도 17 은 2비트마다의 승산잉여처리 루틴의 예를 나타내는 플로챠트이다.
도 18 은 지수분할 후의 처리순서의 랜덤화의 별도 예를 나타내는 플로챠트이다.
도 19 는 스칼라분할 후의 처리순서의 랜덤화의 예를 나타내는 플로챠트이다.
도 20 은 2비트마다의 스칼라배 처리루틴을 나타내는 플로챠트이다.
도 21 은 카드 시스템의 개요를 나타내는 구성도이다.
<주요부분에 대한 도면부호의 설명>
0 5 0 0 : 개시
0 5 0 1 : 4승처리를 위한 테이블작성공정
0 5 1 4 : 초기화공정
0 5 1 5 : 처리의 최후까지의 실행여부 판단공정
0 5 0 2 : 4승처리공정
0 5 0 3 : 난수 혹은 의사난수의 발생공정
0 5 0 4, 0 5 0 5, 0 5 0 6, 0 5 0 7 : 비트치에 의한 분기조건의 판단공정
0 5 0 9, 0 5 1 0, 0 5 1 1, 0 5 1 2 : 변형처리공정
0 5 0 8 : 승산잉여계산
0 5 1 3 : 각 분기조건에 응한 최종 승산잉여계산
본 발명은 내탬퍼(Tamper-resistant)정보처리장치에 관한 것이다. 상기는 측히 IC카드등 카드부재에 적용 하여 매우 효과적이다.
IC카드는 임의대로 교체하는 것이 허용되지 않는 바와 같이 개인의 보지와 비밀정보인 암호키를 이용한 데이터의 암호화와 혹은 암호문의 복호화를 실행하는 장치이다. IC카드 자체는 전원을 가지고 있지 않고 IC카드용의 판독기에 들어가면 전원의 공급을 받고 동작이 가능해진다. IC카드는 동작이 가능해지면 판독기에서 송신되는 명령을 수신하고 상기 명령에 따라서 데이터의 전송등의 처리를 실행한다.
IC카드의 기본개념은 도 1에 도시하는 바와 같이 카드(101)상에 IC카드용 칩(102)을 탑재한 것이다. 도에 도시하는 바와 같이 일반적으로 IC카드는 소정위치에 공급전압단자(Vcc) 그랜드단자(GND) 리세트단자(RST) 입출력단자(I/O) 클록단자(CLK)를 갖는다. 상기 단자의 위치는 ISO7816의 규격에 규정되어 있다. 상 기의 각단자를 통하여 판독기에서 전원의 공급과 판독기와의 데이터의 통신을 실행한 다. 상기 후 IC카드를 이용 한 통싱에 관해서는 예를들면 W. Rankl And Effing : SMARTCART HAND BOOK, John Wiley & Sonss, 1997, PP.41등에서 볼수 있다.
IC카드에 탑재되는 반도체칩의 구성은 기본적으로는 통상의 마이크로컴퓨 터와 같은 구성이다. 도 2는 IC카드에 탑재된느 반도체 칩의 기본적 구성을 나타내는 블록도이다. 도 2에 보여지는 바와 같이 카드부재용의 반도체 칩은 중앙처리장치(CPU)(201) 기억장치(204) 입출력(I/O)포트(207) 코프로세서(202)를 가진다. 시스템에 의해서는 코프로세서는 없는 경우도 있다. CPU(201)은 논리연산과 산술연산등을 실행하는 장치이고 기억장치(204)는 프로그램과 데이터를 격납하는 장치이다. 입출력포트는 판독기와 통신을 실행하는 장치이다. 코프로세서는 암호처리 그 자체 또는 암호처리에 필요한 연산을 고속으로 실행하는 장치이다. 상기에는 예를들면 RSA암호의 잉여연산을 실행하기 위한 특별한 연산장치와 DES압호의 라운드처리를 실행하는 암호장치등이 있다. IC카드용 프로세서중에는 코프로세서를 갖지 않는 것도 많다. 데이터버스(203)는 각 장치를 접속하는 버스이다.
기억장치(204)는 ROM(Read Only Memory)와 RAM(Randoum Access Memory), EEPROM(Electric Erasabel Programble Read Only Memory)등을 가진다. ROM은 기억정보를 변경할 수 엇는 메모리이고 주로 프로그램을 격납하는 메모리이다. RAM은 자유롭게 교체이 가능한 메모리이지만 전원의 공급이 중단되면 기억하고 있는 내용해제된다. IC카드가 판독기에서 빠지면 전원의 공급이 중단되기 때문에 ROM의 내용은 보지되지 않게 된다. EEPROM은 전원의 공급이 중단되어도 그 내용을 보지하는 것이 가능한 메모리이다. 상기 EEPROM은 기억정보를 교체할 필요가 있고 IC카 드가 판독기에서 빠져도 보지가 가능한 데이터를 격납하기 위하여 사용 된다. 예를들면 프리베이트 카드에서의 프리베이트의 도수등은 사용 할 때마다 교체되고 또한 판독기가 빠져도 데이터를 보지할 필요가 있기 때문에 EEPROM에 보지된다.
본 발명은 고세큐리티를 갖는 카드부재등의 내댐퍼정보처리장치를 제공하기 위한 것이다.
본 발명의 실시예에 관련하는 기술적사항은 다음과 같다.
신호를 입력하는 수단과 프로그램을 격납하는 격납부와 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단을 최소한 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나 이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 신호 B를 가지고 실행하는 A○B(단 ○는 필요한 연산을 나타낸다. 이하 동일)의 계산을 신호 A를 A = A[1] + A[2] + ... + A[n]을 만족하는 A[1], A[2], .... A[m](단 m은 1이상의 정수)로 임의로 분할하고 신호 B를 B = B[1] + B[2] + .... + B[n]을 만족하는 B[1], B[2], .... B[n](단 n은 1이상의 정수)으로 임의로 분할하고 상기 A[1], A[2],....A[m]으로 상기 B[1], B[2], ...., B[n]을 이용하여 ∑A[i]○B[j](단 i = 1 .... m j, 1....n) 계산결과를 구하는 스텝을 가지는 것을 특징으로 하는 카드부재.
본 발명의 실시예의 기술적인 과제는 카드부재 예를들면 IC카드용칩에서의 데이터처리와 소비전류와의 관련성을 줄이는 것이다. 소비전류와 칩의 처리의 관 련성이 감소하면 관측한 소비전류의 파형 에서 IC카드용의 칩내에서의 처리와 암호키를 추측하는 것이 곤란해진다. 즉 본 발명의 실시예는 카드부재등에 고세큐리티를 가지게하는 것이다.
IC카드는 프로그램과 중용한 정보가 IC카드용 칩안에 밀폐되어 있기 때문에 중용한 정보를 격납하거나 카드안에서 암호처리를 실행하기 위하여 이용된다. 종래 IC카드에서의 암호를 해독하는 어려움은 암호알고리즘의 해독의 어려움과 같은 것이라고 사려되고 있다. 그러나 IC카드가 암호처리를 실행하고 있는 경우의 소비전류를 관측하고 해석하는 것에 의해 암호알고리즘의 해독에서 용이하게 암호처리의 내용과 암호키가 추정되는 가능성이 시사되어 있다.
소비전류는 판독기에서 공급되고 있는 전류를 측정하는 것에 의해 관측하는 것이 가능하고 상기 공격법의 상세는 예를들면 W.Rankl & W.Effing : SAMART CARD HANDBOOK, John Wiley & Sons, pp.263, 8.5.1.1 Passive Protective Mechanisma 에 상기와 같은 위험성이 기재되어 있다. 상기는 다음과 같은 이유에 의한다. IC카드용 칩을 구성하고 있는 CMOS는 출력상태가 1에서 0 혹은 0에서 1로 변할 때에 전류를 소비한다. 특히 데이터버스(203)에 있어서는 버스드라이버의 전류와 배선 및 배선에 접속되어 있는 트랜지스터의 정전용량을 위한 버스값이 1에서 0 혹은 0에서 1로 변하면 큰 전류가 흐른다. 그로 인하여 소비저류를 관측하면 IC카드용 칩안에서 무엇이 동작하고 있는가를 알수 있는 가능성이 있다.
도 3은 IC카드용 칩의 1사이클에서의 소비전류의 파형을 나타낸 것이다. 처리하고 있는 데이터에 의존하여 전류파형 301과 302와 이 달라진다. 이와 같은 차는 버스(203)를 흐르는 데이터와 중앙연산장치(201)에서 처리하고 있는 데이터에 의존하여 생긴다.
코프로세서(202)는 CPU와 배열로 예를들면, 512비트의 모듈승법(Modular Multiplication) 을 실행하는 것이 가능하다. 그로 인하여 CPU 소비전류와는 다른 소비전류파형의 장시간의 관측이 가능하다. 그 특징적인 파형을 관측하는 것에 의해 코 프로세서의 동작회수를 용이하게 측정하는 것이 가능하다. 코 프롯세서의 동작회수가 암호키와 무엇인가의 관계가 있다면 코프로세서의 동작회수에서 암호키를 추정가능한 가능성이 있다.
또한, 코프로세서에서의 연산내용이 암호키에 의존한 바이어스가 있다면 그 부분이 소비전류에서 구해지고 암호키가 추정되는 가능성이 있다.
CPU에서도 같은 형태의 사정에 의존한다. 암호키의 비트치는 결정되어 있다. 이로 인하여 처리하는 데이터를 변경하여 소비전류를 관측하는 것에 의해 암호키의 비트치의 영향이 관측가능한 가능성이 있다. 이들의 소비전류의 파형을 통계적으로 처리하는 것에 의해 암호키를 추정가능한 가능성이 있다.
본 발명의 실시예의 주요점은 IC카드용의 칩에서의 처리순서를 어택커(ATTACKER)에 추정되지 않도록 분할하는 것과 더미처리를 삽입하는 것이다. 이렇게 한 방법에 의해 소비전류의 파형에서 처리와 암호키의 추측을 곤란하게 하는 것이다.
IC카드칩에 대표되는 내댐퍼장치는 프로그램을 격납하는 프로그램격납부 데이터를 보존하는 데이터격납부를 갖는 기억장치와 프로그램에 따라서 소정의 처리 를 실행하고 데이터처리를 실행하는 중앙연산장치(CPU)를 갖고 프로그램은 CPU에 실행의 지시를 전하는 처리명령에서 구성되는 하나 이상의 데이터처리순단으로 이루는 정보처리장치로서 취할 수 있는 것이 가능하다.
본 발명의 실시예에 있어서 처리하고 있는 데이터와 IC카드용 칩의 소비전류의 관련성을 스크램블하는 하나의 방법은 본래의 연산처리에 이용하는 데이터를 직접이용하지 않고 상기를 분할하고 최종적으로 올바른 값이 구해지는 새로운 연산처리를 실행하는 것에 의해 본래의 처리가 어느 곳에서 실행되고 있는가가 불특정하게 되는 방법이다.
구체적으로는 우선 교란용의 데이터R1, R2 .., Rn을 작성하고 당해 교란데이터를 이용하여 데이터(D1)를 분할하여 각 데이터 D1[1], D1[2],.., D1[n]을 작성한다.
교란데이터 R1, R2등에 의한 분할의 방법은, 예를들면, (1) 논리적연산, (2) x[1] = 0, x[2] = x-v로 이루는 방법 (3) x[1] = x And R, x[1]= x AND ~R(단 ~R은 R의 반전치이다)로 이루는 방법등을 들수 있다.
즉 R1과 R2를 이용하여 D1을 D2[1] = D1[1] And R1, D2[2] = D1[2] And R2, ..., D2[n] = D1[n] And Rn으로 분할한다. 단 n은 정수이다. 이때 D2[1] + D2[2] + ... +D2[n] = D1이 성립된다. 그 외에 통상의 합과 차등을 이용하는 것도 가능 하다. 이들값에 대해서 각각 링승법(Ring Multiplication)을 계산하고 최후로 환상의 합을 취하는 것에 의해 올바른 값을 구할 수 있다. 본래는 분할을 실행하지 않고 직접 D1을 이용하여 처리를 실행하고 있지만 랜덤으로 분할된 데이터 D2[1], D2[2], .., D2[n]를 이용하고 있기 때문에 관측되는 전류파형에 나타나는 부분정보만으로는 본래의 데이터(D1)를 특정하는 것이 곤란하다. 통계처리를 실행하는 경우는 랜덤인 파형을 평균화하는 것과 같은 것이 되고 파형의 특징은 소멸되기 때문에 또한 효과는 현저하다. 항상 상기에서 상기 랜덤인 분할은 의사난수를 이용한 분할이어도 좋다.
데이터처리와 소비전류의 관련성을 감소하는 또 다른 방법은 처리하는 데이터 값을 최종적으로 동일한 결과를 전하는 별도의 처리를 전하도록 변형하는 것에 의해 처리도중의 소비전류가 데이터의 값이 바른 경우와 다르도록 하는 방법이다.
구체적으로는 우선 교란용의 랜덤인 스칼라데이터(R)를 작성하고 연산결과를 불변으로 유지하는 특수한 전극(V)을 이용하여 본래의 원소 x를 x + R * V(상기에서의 연산은 통상의 총연산과 누계연산 이하 같은 형태)와 같이 변형하고 상기를 지수와 스칼라로서 이용하는 것에 의해 소비전류파형데이터의 관측치의 통계처리를 교란하는 것이 가능하다. 항상 상기 원소V는 누계에 있어서는 1, 합에 있어서는 0과 같은 움직임을 하는 원소이다. 예를들면 RSA 암호법(Cryptosystem)에서는 공개키의 모듈이 N = pq의 경우 (p - 1) (q - 1)의 배수 타원그래프(Elliptic Curve)상의 베이스포이트의 스칼라배에 있어서는 베이스포인트의 위수의 배수가 상기 원소(V)이다.
또한, 분할 후의 처리를 랜덤인 순서로 실행하면 데이터처리와 소비전류의 관련성을 정하는 것은 보다 더 한층 곤란해진다.
또한, 상기를 조합시키는 것은 또한 데이터처리와 소비전류의 관련성을 감소 하기 위하여 유효하다.
본 발명은 특히 RSA암호에서의 승산잉여연산과 누승잉여연산 및 타원곡선암호에서의 기본 집합(Underlying Field)상에서의 승산과 제산 베이스포인트의 스칼라배등의 정보은거에 이용하는 것이 가능하다. 승산잉여연산에 있어서는 상기기술한 논리적산연을 데이터분할로 이용하여 분배법칙(Distributive Law)을 이용하여 최종적으로 올바른 답을 구하는 것 누승잉여연산과 베이스포인트의 스칼라배에 있어서는 통상의 차를 이용하여 지수를 분할하고 분할 한 지수에 대해서 누승잉여연산을 실행하고 최종적으로 이들의 누계를 취하는 것에 의해 올바른 답을 구하는 것은 유효한 처리방법의 하나이다. 항상 상기 승산잉여연산은 소체상에서의 승산을 포함하는 것이다.
본 발명의 실시예는 다분기에 걸쳐서 각 형태가 개시되어 있다. 따라서 구체적인 실시형태를 설명하기에 앞서서 우선 본원의 다분기에 이르는 발명사상의 이해를 용이하게 하기 위한 대표적인 RSA암호화방식을 예로 취하여 본 발명의 실시예의 발명사상의 골자를 대략 기술한다. 이어서, 본 발명의 실시예의 주요한 각 형태의 개요를 열거한다. 이들 각형태에 더욱 상세한 설명은 후 기술 한다.
전송하는 데이터(평문)의 암호화의 기본은 일반적인 RAS암호화이다.
즉, y = Re mod N 여기에서 y는 암호문 R은 평문 e는 공개키(public exponent) N은 공개키(public modulus)이다. e에 대해서는 ex mod Φ(N) = 1이고 Φ(N) = (p - 1) (q - 1) 올러(euler's)관수이다.
그리고 상기 암호문의 수취측은 다음과 같이 복호화한다.
즉 R = yx mod N 여기에서 y는 암호문 x는 비밀키(secret exponent) N은 공개키(public modulus)이다. 상기에서 상기 비밀키는 카드부재의 내부 즉 카드부재에 탑재된 IC칩내에 보지되어 있다.
본 발명의 실시예의 기본사상은 정보의 송신측이 상기 평문(R) 혹은 지수(e) 혹은 그 양자를 일단 분할하고 교란의 계산을 실행한 후 원래의 평문에 돌아가 송신용의 암호문(y)을 작성하는 것이다. 본 발명의 실시예는 상기 평문(R) 혹은 지수(e)가 되는 각 데이터의 분할 및 교란의 각 방법을 제시하는 것이다. 이리하여 송신된 암호분(y)는 수신측에서는 송신측에서 실행한 연산을 상기와 같이 연산을 실행하여도 어느 평문(R)을 구하는 것이 가능하다.
본 발명의 실시예의 골자를 보다 구체적으로 예시하면 크게 나누어서 다음과 같이 분류하는 것이 가능하다.
다음으로 본 발명의 실시예의 각 형태의 개요를 열거한다.
본 원의 제 1의 형태는 신호를 입력하는 수단과 프로그램을 격납하는 격납주와 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단을 적어도 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호(A)와 데이 터처리에 있어서의 소망계산에 이용하는 신호(B)를 가지고 실행하는 AOB(단, О는 소망의 연산을 나타낸다. 이하 같은형태)의 계산을 A를 A = A[1] + A[2] + ... + A[n](단 n은 1이상의 정수)를 만족하는 A[1], A[2], ..., A[n]으로 임의로 분할하고 상기 A[1], A[2], .., A[n]과 상기 데이터처리에 있어서의 소망계산에 이용하는 신호(B)를 이용하여 B[1] = A[1]ОB, B[2] = A[2]ОB, ... B[n] = A[n]О을 각각 개별로 계산 한 후 상기 각 개별계산결과를 이용하여 총연산 B[1] + B[2] + ... +B[n](단 n은 1이상의 정수)로하여 계산결과를 구하는 스텝을 가지는 것을 특징으로 하는 정보처리장치이다.
본 원의 제 2의 형태는 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 소정의 계산결과를 격납하는 격납수단과 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단을 적어도 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 구비하고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호(A)와 데이터처리에 있어서의 소망계산에 이용하는 신호(B)를 가지고 실행하는 AOB (단 O은 소망의 연산을 나타낸다. 이하 상기동일)의 계산을 B를 [B] = B[1] + B[2] + ... + B[n](단, n은 1이상의 정수)를 만족하는 B[1], B[2], ..., B[n]으로 임의로 분할하고 상기 A와 상기 B[1], B[2],..., B[n]을 이용하여 A[1] = AOB[1], A[2] = A O B[2], ..., A[n] = AOB[n]를 각각 개별로 계산 한 후 상기 각 개별계산결과를 이용하여 총연산, A[1] + A[2] + ... + A[n](단, n은 정수)로서 계산결과를 구하는 스텝을 갖는 것을 특징으로 하 는 정보처리장치이다.
또한 본 발명의 실시예의 다른 제 3의 형태에서는 상기 제 1 및 제 2의 기본사상을 맞춰서 이용 하는 것이 가능하다. 즉 신호 A 와 신호 B를 가지고 AOB의 계산을 실행할 때 A 및 B의 양자를 분할 소망의 연산을 실행한다.
즉, AOB = (A[1] + A[2] + ... + A[m]) O (B[1] + B[2] + ... + B[n]) 으로 계산하는 것이다. 상기 연산은 다음과 같이 된다.
(A[1] + A[2] + ... + A[m]) O (B[1] + B[2] + ... + B[n])
= A[1]O (B[1] + B[2] + ... + B[n])
+ A[2]O (B[1] + B[2] + ... + B[n])
.............
+ A[m]O (B[1] + B[2] + ... + B[n])
= A[1]OB[1] + A[1]OB[2] + ... A[1]OB[n]
+ A[2]OB[1] + A[2]OB[2] + ... A[2]OB[n]
.............
+ A[m]OB[1] + A[m]OB[2] + ... A[m]OB[n]
따라서 상기 연산은 ∑A[i]OB[j](단 i = 1 ... m, j = 1 ... n)의 결과가 된다. 상기 방법은 n혹은 m의 값을 비교적 작은 값으로 한 경우 유리한 방법이다. 상기는 신호 A 및 신호 B를 함께 분할 하기 위한 그 연산공정이 길어지는 것이 고려되기 때문이다. 물론 상기의 경우는 n 혹은 m등의 구체적인 값의 선택에 의한 것은 말할 필요도 없다. 항상 A 혹은 B의 쌍방을 분할 하는 경우 i ≠1, j ≠ 1의 조건이 되는 것은 물론이다.
상기 제 1 제 2의 형태 및 제 3의 형태등에 있어서 카드부재를 이용 한 통신에서는 신호 A는 전달정보 즉 평문 신호B는 키정보에 상당한다. 이하의 각 형태에서도 특히 문제가 없는 경우 신호 A 및 신호 B는 각각 카드부재에 있어서의 평문 및 키정보에 상당한다.
상기 제 1, 제 2의 형태 및 제 3형태등에 있어서 총연산(+) 및 누계연산(O)은 대수학의 지시에 의하면 가변환(S)에 있어서의 연산이 매우 실제적인것이다. 가변환(S)에는 2개의 연산이 있고 이들 총연산(+) 및 누계연산(O)이다. 또한 상기 연산을 정수연산이 실제적인것이다.
이하 본예에 의하지 않고 본원 명세서에 있어서 각종의 연산에 언급한 개소는 수학 그중에서도 대수학에 있어서 이용되고 있는 개념 용어를 가리키고 있다. 다음에는 키정보의 분할의 각 형태이다.
본원의 제 4의 형태는 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 소정의 계산결과를 격납하는 격납수단과 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단을 적어도 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나 이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 데이터처리에 있어서의 소망계산에 이용하는 신호 k를 가지고 실행하는 A⌒K(단 여기에서⌒k = AOAO...OA(k개)로 하고 O는 연산을 나타낸다. 이하 상기동일)을 계산할 때에 k를 k = k[1] + k[2] + k[3] + ... + k[n]을 만족하는 k[1], k[2], k[3], ..., k[n](단 n은 정수)로 임의로 분할하고 상기 신호 A외 상기 k[1], k[2], k[3], ..., k[n]을 이용하여 h[1] = A⌒k[1], h[2], = A⌒k[2], ..., h[n] = A⌒k[n]을 각각 개별로 계산한 후 상기 각 개별계산의 결과를 이용하여 연산 A⌒k = h[1] Oh[2] O ... Oh[n]으로서 계산결과를 구하는 스텝을 갖는 것을 특징으로 하는 정보처리장치이다.
본 형태에 있어서의 상기연산 O는 대수학이 지시하는 점에 의하면 세미그룹(semigroup)(S)에 있어서의 연산이 실제적인 것이다. 반군에서는 연산을 하나이다. 또한, 상기 연산은 정수연산이 실제적인 것이다. 이하 본원명세서에 있어서 본예와 유사한 연산으로 언급한 개소는 대수학적에는 상기와 동일하게 고찰하는 것이 가능하다. 본원의 제 5의 형태는 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 소정의 계산결과를 격납하는 격납수단과 프로그램에 따라서 소정의 데이터처리를 실행하는 연산부와 신호를 출력하는 수단을 적어도 갖고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 데이터처리에 있어서의 소망계산에 이용하는 신호 x를 가지고 실행하는 A⌒x(단 상기에서 A⌒x = AOAO ... OA(x개)로계산 할 때 연산 A⌒x 대신에 A⌒T = e 를 만족하는 T를 이용하는 A⌒(x + T)를 계산하는 스텝을 갖는 것을 특징으로 하는 정보처리장치이다.
본 형태에 있어서의 상기 연산 O는 대수학이 지시하는 점에 의하면 모노이드(monoid)(S)에 있어서의 연산이 실제적인 것이다. 모노이드는 단위원소(e)를 갖는 반군이다. 또한, 상기 연산은 정수연산이 실제적인 것이다. 이하 본원 명세서에 있어서 본예와 유사한 연산으로 언급한 개소는 대수학적에는 상기와 동일하게 고찰하는 것이 가능하다.
이하 본원에 있어서 정보처리방법에 대해서 언급한다.
본원의 제 6의 형태는 정보신호를 입력하는 입력수단과 소정연산의 프로그램을 기억하는 기억수단과 계산결과의 출력부를 적어도 갖고 상기 입력수단에서 입력된 정보신호 A와 신호 B를 갖고 실행하는 AOB(단 O는 누계연산이다)의 계산을 상기 기억수단에 기억된 스텝에 따라서 상기 정보신호 A를 A = A[1] + A[2] + ... + A[n]을 만족하는 A[1], A[2],...A[n](단 n은 정수)로 임의로 분할하고 상기 A[1], A[2], ... A[n]의 각각과 상기 신호B를 이용하여 B[1] = A[1]OB, B[2] = A[2]OB, ..., B[n] = A[n]O B(단 n은 1이상의 정수)를 각각 개별로 계산 한 후 AOB = B[1] + B[2] + ... + B[n](단 +은 총연산)으로서 AOB를 구하는 스텝을 가지는 것을 특징으로 하는 정보처리방법이다.
항상, 상기 신호 B는 정보신호 A의 변형계산에 이용 하는 신호이다.
본원의 제 7의 형태는 전달되는 신호를 입력하는 입력수단과 소정연산의 프로그램을 기억하는 기억수단과 계산결과의 출력부를 적어도 갖고 상기 입력수단에서 입력된 정보신호 A와 신호 B를 가지고 실행하는 AOB (단, O는 적연산이다)의 계산을 상기 기억수단에 기억된 스텝에 따라서 사이 변형계산에 이용하는 신호 B를 B = B[1] + B[2] + ... + B[n]을 만족하는 B[1], B[2], ... B[n](단, n은 정수)과 임의로 분할하고 상기 정보신호 A와 상기 B[1], B[2], ..., B[n]을 이용하여
A[1] = AOB[1], A[2] = A O B[2], ..., A[n] = AOB[n](단, n은 정수)를 각각 개별로 계산 한 후 AOB = A[1] + A[2] + ... + A[n](단 O은 누계연산이고 +은 통연산)으로서 AOB를 구하는 스텝을 가지는 것을 특징으로 하는 정보처리방법이다.
본 발명의 실시예의 제 8의 형태에서는 상기 제 6 및 제7의 기본사상을 맞춰 이용하는 것이 가능하다. 즉, 신호 A와 신호 B를 가지고 AOB의 계산을 실행 할 때 A 및 B의 양자를 분할 소망의 연산을 실행한다.
즉, AOB = (A[1] + A[2] + ... A[n]) O (B[1] + B[2] + ... + B[n])으로서 계산하는 것이다. 상기의 연산은 다음과 같이 된다.
(A[1] + A[2] + ... + A[m]) O (B[1] + B[2] + ... + B[n])
= A[1]O (B[1] + B[2] + ... + B[n])
+ A[2]O (B[1] + B[2] + ... + B[n])
.............
+ A[m]O (B[1] + B[2] + ... + B[n])
= A[1]OB[1] + A[1]OB[2] + ... A[1]OB[n]
+ A[2]OB[1] + A[2]OB[2] + ... A[2]OB[n]
.............
+ A[m]OB[1] + A[m]OB[2] + ... A[m]OB[n]
따라서 상기의 연산은 ∑A[i]OB[j](단 i = 1 ... n, j = 1...m)의 결과가 된다. 따라서 i = 1 혹은 j = 1의 경우는 A 혹은 B 중 어느 한쪽만을 분할한 예로 상당하는 것이된다.
상기의 방법은 n 혹은 m의 값을 비교적 작은 값으로 한 경우 유리한 방법이다. 상기는 신호 A 및 신호 B를 함께 분할 하기 위하여 그 연산이 공정이 길어지는 것이 고려되기 때문이다. 물론 상기의 것은 n 혹은 m등의 구체적값의 선택에 의한 것은 물론이다.
본원의 제 9의 형태는 정보전달하는 송신측의 정보 및 신호 k를 각각 당해 정보처리방법에서 채용되는 반군(S')에 있어서의 원소 A 및 k로 이루고 상기 A 와 k의 A⌒k(단 여기에서 A⌒k = A△A△ ... △A(k개)로 하고 △은 반군(S')에 있어서의 연산이다)를 계산할 때에 k를 k = k[1] + k[2] + k[3] + ... + k[n]을 만족하는 k[1], k[2], k[3], ..., k[n](단 n은 1이상의 정수)로 임의로 분할하고 상기 평문 A와 상기 k[1], k[2], k[3], ...., k[n]을 이용하여 h[1] = A⌒k[1], h[2] = A⌒k[2], ...., h[n] = A⌒k[n]을 각각 개별로 계산한 후 A⌒k = h[1] △h[2]△....△h[n](단 △는 반군(S')에 있어서의 연산이다)로서 A⌒k를 구하는 스텝을 가지는 것을 특징으로 하는 정보처리방법이다.
본원의 제 10의 형태는 정보전달하는 송신측의 정보 및 신호 k를 각각 당해 정보처리방법에서 채용되는 모노이드(S")(단윈원소(e)를 갖는 반군)에 있어서의 원소 A 및 x로 이루고 상기 A와 x와의 A⌒x(단 상기에서 A⌒x = A◇A◇....◇A(x개)로서 ◇는 모노이드(S")에 있어서의연산이다)를 계산할 때에 연산 A⌒x 대신으로 A⌒T = e를 만족하는 T를 이용하여 A⌒(x + T)를 계산하는 스텝을 가지는 것을 특징으로 하는 정보처리방법이다.
본원의 제 11의 형태는 상기 S, S' 혹은 S" N으로 한 것에 (플러스의 정수) 관하여 잉여집합(residue class)을 이루는 가환 링(commutative ring)(반군이기도 하다)이고 총연산(+)가 법(N)에 있어서의 총합이고 상기 누계연산O, 연산△ 혹은 연산◇(본원에서 이하 대표하여 연산(O)로 명기)가 법(N)에 의한 승산잉여연산 A + B = (A + B) mod N, AOB = A * B mod N인 것을 특징으로 하는 상기 항 1, 2, 3 및 4 중의 어느 한 항에 기재의 정보처리방법이다.
본원의 제 12의 형태는 상기 S, S', 혹은 S"가 지표(characteristic)(p)(소수)의 유한체(Fq)(단 q = p⌒n)상의 타원곡선(E)에 대한 몰델 웨일그룹(Mordell-Weil Group)(G)(E/Fq)이고 상기 연산△ 혹은 연산◇이 G(E/Fq)에 있어서의 가산법인 것을 특징으로 하는 상기 형태 6 혹은 7중 어느 것에 기재의 정보처리방법이다.
이하 상기 기술한 신호 A에서 신호 B의 분할의 방법의 구체적인 형태에 예로언급한다. 항상 이하의 열거일 경우에서는 그 특징에 대해서 정보처리방법 및 정보처리장치의 양자를 맞춰서 나타내는 경우로 한다. 상기는 명세서의 기술의 간략화를 위한 것이다.
본원의 제 13의 형태는 상기 실시형태 11에 있어서 정수(R)와 그 비트 반전치~R을 이용하여 승산잉여연산 A * B mod N 의 경우의 B의 분할을 B[1] = B AND R, B[2] = B AND ~R, B[3] = 0, ...., B[n] = 0
으로 분할하는 것을 특징으로 하는 정보처리방법 및 상기로 한 특징을 가지는 정보처리장치이다.
본원의 제 14형태는 상기 실시의 형태 11에 있어서 B이하의 정수(V)를 이용하여 승산잉여연산 A * B mod N 의 경우의 B의 분할을,
B[1] = V, B[2] = B - V, B[3] = 0, ....., B[n] = 0(단 n은 정수)으로 분할하는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 가지는 정보처리장치이다.
본원의 제 15의 형 태는 상기 실시형태 11에 있어서 정수 R과 그 비트반전치 ~R을 이용하여 승산잉여연산 A~x mod N의 경우의 분할을,
x[1] = x AND R, X[2] = x AND ~R, x[3] = 0, ....., x[n] = 0(단 n은 정수)로 분할하는 것을 특징으로 하는 정보처리방법 및 상기 한 특징을 갖는 정보처리장치이다.
본원의 제 16의 형태는 상기 실시의 형태 11에 있어서 A⌒x mod N의 경우의 x의 분할을 x 이하의 난수(V)를 이용하여 x[1] = V, x[2] = x - V, x[3] = 0, ...., x[n] = 0(단 n은 정수)로 분할하는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 가지는 정보처리장치이다.
본원의 제 17의 형태는 상기 실시의 혀태 13, 14, 15 및 16에 있어서 정수 R또는 V를 처리때마다 매회 변화시키는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다. 즉 조건판단 후 계산을 분기시켜서 실행 할 때 상기 분기 후의 계산에 이용하는 정수 R 또는 V를 매회 변화시키는 것이다. 이리하여 보다 세큐리티를 증가하는 것이 가능하다.
본원의 제 18의 형태는 상기 실시형태 5에 있어서 S로서 법(N)(플러스의 정수)에 관한 잉여류를 이루는 군으로 잡고 연산 O로서 법N에 의한 승산잉여연산으로 한 것 즉 AOB = A * B mod N으로 정하고 T로서 올러관수(f)(N)(1, 2, 3, ...., N) 중 N과 상호 소수가 되는 것의 개수를 나타내는 관수)비음수정수(S)의 배수(Sf)(N)를 취하는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 가지는 정보처리장치이다.
본원의 제 19의 형태는 상기 실시형태 18에 있어서 비음수 정수(Non-negative integer)(S)의 값을 처리때마다 매회변화시키는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 가지는 정보처리장치이다. 즉 조건판단 후 계산을 분기시켜서 실행할 때 상기의 분기후의 계산에 이용하는 비음수정수(S) 의 값을 매회변화시키는 것이다. 이리하여 보다 세큐리티를 증가하는 것이 가능하다.
다음은 타원곡선을 이용하는 각예이다.
본원의 제 20의 형태는 상기 실시형태 12에 있어서 정수R와 그 비트 반전값(~R)을 이용하여 타원곡선(E)상의 점(P)에 대해서 정수 k에 의한 스칼라배(kP)를 계산할 때의 k를 k = k[1] + k[2] + k[3] + .... +k[n], 그리고 k[1] = k AND R, k[2] = k AND ~R, k[3] = k[4] = .... = k[n] = 0으로 분할하는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 갖는 정보처리장치이다. 단 n은 정수이다.
본원의 제 21의 형태는 상기 실시형태 12에 있어서 k이하의 정수V를 이용하여 타원곡선(E)상의 점(P)에 대해서 정수 k에 의한 스칼라배(kP)를 계산할 때의 k를,
k = k[1] + k[2] + k[3] + .... +k[n] 그리고 k[1] = V, k[2] = k - V, k[3] = k[4] = .... = k[n ] = 0(단 n은 1 이상의 정수)로 분할하는 것을 특징으로 하는 정보처리방법 및 상기한 특징을 가지는 정보처리장치이다.
본원의 제 22의 형태는 상기 실시의 형태 12에 있어서 S로서 표수(p)(소수)의 유한체(Fq)(q = p⌒n)상의 타원곡선(E)에 대한 모델 웨일군(G)(E.Fq)를 취하고 연산O로서 G(E/Fq)에 있어서의 가산법으로 정하고 E상의 점 P의 정수 k의 배수(kP)를 계산할 때 점(P)의 위수(R)(RP = 0이되는 점(0은 무한점)의 정수 S배의 값 SPR을 이용하여 kP = (k + SR)P로 계산하는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다.
또한, 본 발명의 실시예에 있어서는 변형계산을 위한 각 정보를 상기의 계산의 임의 조건분기에 따라서 이루어지는 각 계산처리공정별로 변화시키는 것이 바람직한 형태이다. 그리고 상기의 변화는 각 하나의 계산처리공정 별 매회변화시키는 것이 대표적인 형태이다. 물론 임의처리만 변화시키는 것도 가능하다. 변형계산을 위한 각 정보의 변화방법은 정보자체를 변화시키는 것 혹은 계산의 순서를 변화시키는 등의 방법이 사려된다. 이하, 상기의 형태를 나타낸다.
본원의 제 23의 형태는 상기 형태 20, 21에 있어서 정수 R또는 V의 값을 처리로 변화시키는 것을 특징으로 하는 정보처리방법 및 이렇게 한 특징을 가지는 정보처리장치이다.
본원의 제 24의 형태는 상기 형태 23에 있어서 정수 S의 값을 처리로 변하는 것을 특징으로 하는 정보처리 방법 및 정보처리장치이다.
본원의 제 25의 형태는 상기 실시형태 1, 2, 및 3에 있어서 B를 분리한 B[1], B[2], B[3], .... , B[n]의 각각 각계산처리공정에 있어서 상기 공정내의 각 계산을 실행하는 순서를 상기 각 계산처리공정에서 바꾸는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다.
본 원의 제 26의 형태는 상기 실시형태 4에 있어서 k를 분리한 k[1]. K[2], k[3], ...., k[n]의 처리를 실행하는 순서를 각처리별 즉 계산공정중의 각 계산을 그 계산공정별로 바꾸는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다.
본원의 제 27의 형태는 상기 실시형태 25에 있어서 S로서 법N(플러스의 정수)에 관한 잉여류를 이루는 가변환(반군이기도 하다)을 취하고 총연산 +을 법N에 있어서의 총합으로하고 연산O로서 법N에 의한 승산잉여연산으로 한 것 즉 A + B = (A + B) mod N,
AOB = A * B mod N으로 하는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다. 본원의 제 27의 형태는 상기 실시형태 26에 있어서, S로서 법N(플러스의 정수)에 관한 잉여류를 이루는 가변환(반군이기도 하다)을 취하고, 총연산 +을 법N에 있어서의 총합으로하고 연산0로서 법N에 의한 승산잉여연산으로 한 것 즉, A + B = (A + B) mod N, AOB = A * B mod N으로 하는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다.
본원의 제 28의 형태는 상기 실시형태 26에 있어서 S로서 표수(p)(소수)의 유한체(Fq)(q = P⌒n)상의 타원곡선(E)에 대한 모델 웨일군(G)(E.Fq)를 취하고 연산O로서 G(E/Fq)에 있어서의 가산법으로 이용하는 것을 특징으로 하는 정보처리방법 및 정보처리장치이다. 본원의 정보처리장치 및 정보처리방법의 대표적인 적용은 IC카드에 대표되는 카드부재이다. 상기의 각 형태를 적용하는 것이 가능하다.
이상 본원의 주요한 각 형 태의 개요를 설명하였지만 다음으로 카드부재의 구체적인 적용방법에 대해서 개략 설명한다.
상기 기술한 정보처리장치를 내장하는 반도체집적회로장치를 카드부재에 적용하여 고 세큐리티의 카드부재를 제공하는 것이 가능 하다. 카드부재로서는 접촉형과 비접촉타입이 있지만 본 발명의 실시예는 물론 어느 것의 방식에도 당연 적용 하는 것이 가능하다.
그리고 상기 칩은 상기의 신호를 외부에서 즉 예를들면 단말기에서 공급되는 것에 의해 가동한다.
항상 상기 단말기자체는 기본적으로 통례의 카드시스템의 것을 이용하여 충분하다. 이하 간단하게 카드 시스템의 동작을 예시한다. 도21은 상기의 카드 시스템의 개념을 예시한다.
IC카드(52)안에는 칩(51)이 있어서 판독기(53)과 데이터의 취급을 실행하는 예를 나타내고 있다. 판독기안에는 콘트롤러 프로세서(54) 및 데이터베이스가 되는 자기디스크(55)등이 존재한다. 우선, 판독기(63)에서 IC카드(52)에 대해서 ID의 문의가 실행한다. 우선 판독기(53)에서 IC카드(52)에 대해서 ID(IDENTIFICATION)예를들면 당해 카드의 관리책임자를 특정하기 위한 성명코드 또는 인식코드의 문의가 실행된다. 도 21에는 상기의 상태를 (1)로 하여 나타냈다. 상기 성명코드 도는 인식코드는 IC칩안에 있는 소정의 에리어에 격납되어 있다. IC카드는 성명코드를 판독기에 응답한다. 도 21에는 상기의 상태를 (2)로하여 나타냈다. 판도기는 데이터베이스(53)에 있는 성명코드를 검색하여 데이베이스상의 키코드를 획득한다.
판도기는 난수를 IC카드에 보낸다. 상기 난수는 예를들면 판독기내의 MPU에서 회로적으로 발새이된다. LAN등에서 서버측에서 난수를 공급하는 것도 가능하다. IC카드는 난수를 수취한 시점에서 코맨드에 의해 판독기에서 지시를 수취하여 난수를 키코드발생부에 따라서 발생한 키코드에 의해 암호화한 난수를 작성한다.
한편 판독기는 IC카드와 동일하게 데이터베이스에서 얻은 키코드르 ㄹ사용 하여 IC카드로 보낸것과 같은 난수를 암호화한다. 상기에 의해 취득된 암호화된 난수의 결과와 앞서 IC카드에서의 암호화된 난수를 조합하여 일치가 되면 IC카드와 판독기의 상호인식이 완료하고 IC카드의 정당성이 인정된다.
이와 같이 하여 본 시스템에서는 상기의 키코드가 판독기에 전달되면 판독기는 자기디스트안의 ID를 검색하여 바르게 등록된 키코드에 의한 ID라고 인식한다.
생성된 IC카드의 키코드(ID코드)는 성명 코드 또는 인식코드와 함게 데이터베이스에 격납된다.
생성된 키코드는 전자머니로서 IC카드가 사용될 때의 본인인정과 위조체크와 IC카드와 판독기의 상호인증으로 사용하는 것이 가능하다.
상기 시스템은 예를들면 일반상점에서의 지불과 티켓의 구입 정기권에서의 개찰 면허증의 체크 전화카드에 의한 전화등 다수의 분야에 응용하는 것이 가능하다.
이상과 같은 카드부재 및 카드 시스템은 이하에 기술하는 발명의 각 형태를 이용하여 실시가 가능한 것은 물론이다.
다음으로 본 발명의 실시예의 실시의 각형태를 구체적으로 설명한다.
본 실시예에서는 공개키암호(비대칭암호)의 대표예이다. RSA암호 타원곡선암호를 예로 취한다. 이것은 타암호에도 이용하는 것이 가능 하다.
항상 RSA암호 일반에 대해서는 E.Okamoto : Introduction to Cryptography, Kyoritsu syuppan 과 A.J.Menezes, P.C. Van Oorschot, S.A.Vanstone : Handbook of Applied Cryptography, CRC-Press등에 상세하게 기재되어 있다. 타원곡선암호일반에 대해서는 고안자 한사람이 기술한 N. Koblitz : A Course in Number Therory and Cryptography, second Editon, Graduat Texts in Mathematics 114, springer-Verlag, 1987, 타원곡선상의 연산에 대해서는 J.H.Silverman and J.Tate : Rational Points on Elliptic Curve, Springer-Verlag, 1992 또는 군 환 체등의 대수계 일반에 대해서는 K.Matsuzaka;Introduction to Algebra, Iwanami syoten에 상세하게 설명이 있다.
일반에 공개키암호(비대칭키암호)에 있어서는 비밀키정보가 공개키안에 포함되어 있지만 공개키에서 비밀키정보를 취출하는 것이 계산시간의 점에서 현저하게 현실성이 결여된다는 것(산정의 보안)을 근거로하여 암호가 구성되어 있다. 계산량적 안정성을 가진 문제의 대표적인 것으로서 소인수분해와 군상의 이산대수문제를 들수 있다. 전자를 이용한 것이 RSA암호이고 후자를 타원곡선상의 군에 적용하여 이용하고 있는 것이 타원곡선암호이다.
<RSA 암호로의 적용예>
우선 간단하게 기본이 되는 통예의 RSA암호를 설명한다.
RSA암호에서는 큰 소수 예를들면 512비트의 2개의 소수 p, q의 누계 n = qp와 n과 상호 소수 e를 취하고 이것을 공개키로서 공개키명부에 등록한다. IC카드에서는 n과 상호로 소수인 상기의 수 e는 3과 65537이 이용되는 경우가 많다.
데이터(평문)의 암호화는 다음과 같이 실행된다.
상기 공개키의 주주(A)에 송신자(B)는 1이상 N -1 이하의 수로 표현된 데이 터(평문)(y)를
R = y⌒e mod n
으로 하여 암호화하고 상기의 암호문(R)을 송신한다. 상기에서 y⌒e는 y의 e승을 나타내는 기호이다.
상기의 암호문(R)을 수취한 A는 xe mod (p - 1)( q - 1) = 1이되는 비밀키 x를 이용하여
R⌒x mod n
을 계산한다. 항상 비밀키 x는 일반적으로는 카드부재 즉 카드부재에 탑재된 반도체칩에 기억 내장되어 있다.
상기에서 (p - 1)( q - 1) 은 N의 올러관수의 값f(N)이다. 상기는 N과 상호로 소수인 자연수의 개수와 일치한다. 올러의 정의에 의하면
R⌒((p - 1)( q - 1)) mod n = 1
이 성립된다. 한편으로 xe = 1 + k (p - 1)( q - 1) (k는 정수)로 적는 것이 가능 하다.
R⌒x mod N = y⌒(xe) mod n
= y⌒(1 + k (p - 1)( q - 1) ) mod n
= y * y⌒(k (p - 1)( q - 1) ) mod n
= y
가 성립된다.
따라서 R⌒x mod n을 계산하는 것으로 공개키의 주주(A)는 송신자(B)의 평문(y)을 복호하는 것이 가능하다.
이 때 비밀키(x)를 계산하는 것에 n의 소인수 p, q가 이용되고 있고 현재의 시점에서 소인수분해를 매개로 하지 않고 x를 계산하는 방법은 알려져 있지 않다. 따라서 큰 소수의 누계를 인수분해하는 것은 현실적이지 않는 시간이 필요하다. 상기 인수분해는 사실상 불가능하다고 할 수 있다. 이로 인하여 2개의 소수의 누계(n)이 공개되어도 공개키의 주주(A)의 비밀키는 안전하다.
RSA암호의 계산에서 이용되고 있는 연산은 n을 법으로 하는 정수의 잉여환(Zn)상의 연산으로 보는 것이 가능하다.
RSA암호의 암호화/복호화조작에서 이용되는 연산은 누승잉여계산이라고 불리운다. 도 4에 상기 누승잉역계산의 계산기상에서 통상 실장되는 알고리즘의 예를 나타낸다. 도4는 누승잉여계산의 플로챠트이다. 상기 y⌒x mod n의 계산순서의 골자는 다음과 같다. 항상 이하 플로챠트의 각 순서를 < >포위된 부호로 나타낸다.
본예의 암호화의 계산이 스타트된다<0401>
(1) 비밀키(x)의 비트를 소망비트별 예를드면 2비트별고 나누고 상위에서 읽어가고 그것이 00, 01, 10,11 중 어느 것인가에 응하여 A[0] = 1, A[1] = y A[2] = y⌒2 mod n, A[3] = y⌒3 mod n을 대응시킨다.
(2) 이들의 승산잉여계산을 실행한다.
상기 기술과 같이 비밀키(x)의 비트를 2비트별로 나누는 것은 설명의 편의를 위한 일례이다. 실제로는 비밀키(x)의 비트를 1 비트, 3비트 4비트를 모아서 계산 하는 것도 있다. 상기의 경우도 계산수법의 기본적인 방법은 전부 같다. x는 j비트별로 나누는 경우는 2⌒j승의 계산을 실행하는 것이 된다. 상기 x를 j비트별로 나누는 것을 window의 폭을 통칭하고 있다.
이하로 나타내는 본 발명의 실시예의 각 실시형태에 있어서도 특히 관계되지는 않지만 상기 계산방법에 대해서의 방법이 변함이 없다.
상기 계산시 4승의 계산 <0402>는 x의 비트와 무관계로 실행된다. 한편, 그 다음 으로 실행되는 승산잉여계산에 있어서는 x의 비트(상기의 예에서는 2비트분을 지시한다)값에 응하여 조건분기 <0403), <0404>, <0405>, <0406>, <0409>, <0410>의 승산잉여계산이 실행된다. 상기 승산잉여계산시 각 비트에 의해 다른 것은 테이블<0401>의 값 즉 A[0], A[1], A[2], A[3]이다.
일반적으로 승산잉여계산은 처리가 무겁고 그 때 발생하는 전류는 매우 크다. 특히 다행계산시에 A[0], A[1], A[2], A[3]의 가운데 어느것이 처리되어 있는것이 알 수 있는 경우가 있다. 간단하기 때문에 16비트의 계산을 생각한다. 예를들면 y = 58981 n = 59989(=239 * 251)로서 A[0], A[1], A[2], A[3]을 2진수표현하면 이하와 같은 비트예가된다.
A[0] = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
A[1] = 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0
A[2] = 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0
A[3] = 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1
이로 인하여 당행 IC카드의 소비전류를 측정하면 각 비트예가 다르게 대응하 여 다른 전류파형이 발생한다. 이와 같이 전류파형이 다르기 때문에 예를들면 전류파형패턴이 4종류로 분류가능하면 비밀키의 비트패턴을 발견하는 것이 가능하다. 즉, 4종류의 전류파형을 기초로 그 4개의 순차의 패턴수 4! = 24 순으로 시험하면 좋다. 법(n)의 비트수가 증가한 경우도 사정은 동일한다.
항상 실장면에서는 상기의 승산잉여계산은 처리가 무겁기 때문에 많은 IC카드에서는 내장되는 CPU가 아니고 승산잉여처리전용의 코 프로세서가 이용되는 경우가 많다.
상기의 공격방법은 특히 n의 비트수가 증가한 경우에 현저하게 효과를 발휘한다.
예를들면 n이 2048 비트의 경우 현재의 시점에서 사실상 인수분해를 실행하는 것은 불가능하다. 그러나 역전류검출관을 이용하여 IC칩의 소비전류를 보는 것이 가능하면 비밀키의 비트패턴을 발견하는 것이 가능하다. 예를 들면 x(2000의 비트 정도)의 값을 알기에는 다음과 같은 순서가 있다. 우선 2000비트정도의 소비전류의 파형의 합체(2 비트별로 구획하면 약 1000개의 합체)4개로 분류한다. 분류된 4종류의 각각에 대해서 별도의 계산기를 이용하여 누승잉여계산을 실행한다. 그리고 상기 각 누승잉여계산의 결과를 IC칩에서 출력되는 결과와 비교하여 그 양자가 일치하고 있는 것을 검출하면 된다. 상기 검증은 최고로 24종류에 불과하다. 따라서 데이터(평문) y을 R = y⌒e mod n으로 암호화하고 또한 비밀키 x를 이용 하는 방법에서는 충분하게 데이터의 독해의 가능성을 가지고 있다.
상기로 한 공격에서 비밀키를 지키기 위하여 본 발명의 실시예가 이루어진 것은 상기 기술한 종류이다.
(입력의 분할)
본 발명의 실시예에 관한 입력의 분할에 의한 방법의 제 1의 예를 설명한다.
제 1의 예는 다음과 같은 입력의 분할에 의한 방법이다.
항상 이하의 계산의 알고리즘과 함께 주요한 실장에 대해서 예시한다. 실장에 대해서는 상기에서 예시한 이외의 방책이 있는 것도 있다. 본원 명세서에 있어서 이하로 나타내는 각 실시형태에 있어서도 본 예에 준하여 실장의 형태를 고려하면 충분하다.
비밀키를 이용 한 암호문의 교환은 통예의 방법에 의한다. 즉, 암호를 송부받는 B가 소정의 암호법으로 키를 2개 작성한다. 하나는 자기자체 B가 보존하고 암호의 해독에 사용하는 해독전용의 키 [비밀키] 2개째는 암호를 송부 받는 A에 송부하는 [공개키]이다. B는 송신자 A에 공개키를 보내거나 사전에 공개해 둔다. B는 상기 비밀키로서 송신된 암호의 해독을 실행한다. 상기 암호문의 교환법은 후 기술하는 본 발명의 실시예의 각 형태에 있어서도 상기와 동일하다. 본 에에서는 예를들면 상기 비밀키(x)는 반도체칩의 기억수단 예를들면 기억부의 EEPROM에 기억되어 있다.
도 5에 본예의 암호화 복호화에 관한 플로챠트를 나타낸다.
상기 기술의 일반적인 설명에서 기술한 바와 같이 송신자(A)는 데이터(y)를 y⌒e mod n(n = R)로 암호화하여 수신자(B)에 송신한다.
상기의 암호문(R)을 수취한 수신자(B)는 비밀키(x)를 이용하여 R⌒x mod n(= y)을 계산한다. 항상 상기의 예에서의 비밀키(x)는 예를들면 x⌒e mod (p - 1)(q-1) = 1을 만족하는 x를 채용 한다. 여기에서 암호화와 복호화의 계산방법은 상기와 동일한 계산수법에 의한 것이 이해된다. 도 5에는 데이터(y)의 암호화의 연산의 플로챠트를 나타낸다. 한편 암호화에 있어서도 전부 상기와 동일한 수법에 의해 송신된 암호데이터(R)를 복호화한다.
본 예의 암호화의 계산을 스타트한다. < 0 5 0 0 >
(1) 미리 알려져 있는 비밀키(x)의 비트를 소망비트수에 응하여 나눈다. 비트별 나눈 비밀키(x)의 비트를 소정의 승산잉여연산에 의해 테이블을 작성한다. 상기 승산잉여연산은 예를들면 A[0] = 1, A[1] = y, A[2] = y⌒2 mod n, A[3] = y⌒3 mod n이다. 상기의 예는 상기 기술한 것과 동일하다. :< 0 5 0 1 >
상기의 각 연산은 IC의 중앙연산장치(CPU) 혹은 코 프로세서등에서 실행된다. 상기의 연산결과는 기억수단 통례 예를들면 데이터격납부의 RAM에 격납된다. 이들의 격납된 각 데이터는 필요에 따라서 취출되고 각 계산에 공급된다.
(2) 연산결과(S)를 1로하고 계산을 초기화(Initialization)한다. : < 0 5 1 4 >
(3) 교란용의 난수(R)를 발생한다. 상기의 경우 난수는 의사난수이어도 좋다. 항상 상기의 R은 n과 동일한 정도의 비트수를 갖도록 한다. : < 0 5 0 3 >
상기의 난수(R)는 일반적으로 CPU에서 작성된다. IC의 다른 특별한 영역에서 작성되는 바와 같이 이루어지고 있는 경우도 있다. 상기 작성된 난수는 일반적으로 데이터격납부에 격납된다. 작성된 난수를 직접 당해 연산에 이용 하는 경우 도 있다. 난수의 발생 및 계산으로의 채용은 이렇게 한 연산방식은 암호화에 있어서 통례로 이용하고 있는 방법에 의해 충분하다.
(4) S의 4승연산을 실시한다. 즉 상기 연산은 S = S⌒4 mod n이다. 여기에서는 비밀키(x)의 비트값에는 의존하지 않고 실행된다. : < 0 5 0 2 >
(5) 비트별 나누어진 비밀키(x)의 비트가 분기의 조건중 어느 것인가의 판단을 실행한다. 즉, x의 비트치가 00, 01, 10, 혹은 11중 어느것인가를 판단한다. " < 0 5 0 4 >, < 0 5 0 5 >, < 0 5 0 6 >, < 0 5 0 7 >
(6) 교란용의 난수(R)를 이용하여 테이블값의 변형계산을 실행한다.
상기 기술의 분기의 조건에 응하여 테이블값 A[0], A[1], A[2], 및 A[3] 을 각각 B[0], B[1]로 변형계산을 실행한다.
즉,
x의 비트치가 00의 경우 그 변형계산은 B[0] = A[0] and R, 및 B[1] = A[0] and ~R이다. : < 0 5 0 9 >
x의 비트치가 01의 경우 그 변형계산은 B[0] = A[1] and R, 및 B[1] = A[0] and ~R이다. : < 0 5 1 0 >
x의 비트치가 10의 경우 그 변형계산은 B[0] = A[2] and R, 및 B[1] = A[2] and ~R이다. : < 0 5 1 1 >
x의 비트치가 11의 경우 그 변형계산은 B[0] = A[3] and R, 및 B[1] = A[3] and ~R이다. : < 0 5 1 2 >
상기의 각 연산은 IC의 중앙연산장치(CPU) 혹은 코 프로세서등에서 실행된 다. 상기의 연산결과는 기억수단 통례 예를들면 데이터격납부의 RAM에 격납된다. 이들이 격납된 각 데이터는 필요에 응하여 취출되고 각 계산에 공급된다.
도 5에 도시한 각 변형계산 < 0 5 0 9 >, < 0 5 1 0 >, < 0 5 1 1 >, < 0 5 1 2 >에 의해 원래의 처리데이터 A[j](j = 0, 1, 2, 3, 4)는 랜덤에 분할된다. 상기의 랜덤인 분할은 의사난수에 의한 랜덤인 분할도 이용하는 것이 가능하다.
상기 예와 같이 예를들면 y = 5 8 9 8 1 n = 5 9 9 8 9 ( = 239 * 251)로 하면 각테이블값은 2진표현으로 다음과 같이된다.
A[0] = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
A[1] = 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0
A[2] = 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0
A[3] = 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1
상기에 대해서 R = 1 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1로 할 경우 x의 비트가 10(2진수)라고 한다면 A[2]가 선태기되고 그 변형 계산치가 다음과 같이된다.
B[0] = 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0
B[1] = 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0
A[0]에 대해서는 교란의 효과가 적기 때문에 1의 대신으로 1 + n을 이용 하는경우도 있다.
(7) 상기와 같이하여 구해진 B[0], B[1]을 이용하여 < 0 5 0 8 >의 처리 :
S1 = S * B[0] mod n
S2 = S * B[1] mod n 을 실행한다.
상기의 계산과정에서는 소비전류가 큰 것이 많기 때문에 전류관측자는 상기의 값을 단서로 비밀키를 읽으려고 하지만 랜덤에 분할되어 있기 때문에 본패의 파형과는 다른 파형을 보는 것이 되고 혼란한다. 특히 통계적으로 처리하여 파형을 보다 정확하게 보려고 한 경우 난수가 매회변화하기 때문에 또한 효과적이다.
(8) 송신된 데이터의 최종적인 독해
여기까지 기술해온 각 처리를 실행하여도 B[0] + B[1] = A[2]이다. 따라서 최종적으로 도5에 도시한 < 0 5 1 3 >의 처리
S1 + S2 mod n = S * (B[0] + B[1]) mod n = S * A[2] mod n이 실행된다.
(9) 상기의 분기조건의 각 비트가 최후까지 이루어진 것을 판단하고 < 0 5 1 5 > 상기 연산을 수료 < 0 5 1 6 >한다. 이리하여 상기의 계산결과는 바른 결과가 주어진 송신용의 데이터가 된다.
상기와 같이 하여 구해진 암호화된 송신용의 데이터는 통례 일단 예를들면 RAM에 격납된다. 그리고 필요에 따라서 상기의 데이터는 입출력포트에서 출력된다. 카드에 대한 입출력에 관한 카드 시스템의 개요에 대해서는 도 21을 이용하여 앞서 설명한 점이다.
항상 수신자가 복호화하는데 있어서는 상기 기술과 같이 전체가 동일한 수법에 의해 송신된 암호데이터(R)가 R⌒x mod n(=y)로서 복호화된다.
항상 상기 기술의 입력데이터의 분할 방법에서는 신호(A)만을 분할한 예를 예시하였지만 신호 A 및 신호 B의 쌍방을 분할하여 연산을 실해이하는 것도 가능하다. 즉 ∑A[i]OB[j](단 i = 1 ... m, j = 1 ... n)의 계산을 실행하는 것이다.
다음으로 입력데이터의 랜덤인 분할의 별도의 방법을 예시한다.
입력의 분할에 의한 방법의 제 2의 예를 설명한다. 도 6A 및 도 6B는 입력의 분할에 의한 별도의 방식을 나타내는 플로챠트도이다. 항상 도 6A 및 도 6B는 일련의 플로챠트를 나타내고 도안의 (A) 및 (B)로 연결되어 있다. 상기의 방버비은 난수(R)의 값의 범위를 제한하는 조작을 이용하는 것이다. 항상, 상기 기술의 제 1의 예와 다른 순서의 부분을 주요하게 설명한다.
상기의 예에서도 송신자(A)는 데이터(y)를 R = y⌒e mod n으로 암호화하여 수신자(B)에 송신한다. 상기의 암호문(R)을 수취한 수신자(B)는 비밀키(x)를 이용하여 R⌒x mod n을 계산한다. 항상 상기의 예에서의 비밀키(x)는 예를들면 xe mod (p - 1)(q - 1) = 1을 만족하는 x를 채용한다.
도 6A 및 도 6B에 예시한 처리는 계산의 스타트 < 0 6 0 0 >와 함께 도 5의 예와 동일하게 (1) 테이블 < 0 6 0 1>을 용의하고 (2) 계산의 초기화< 0 6 1 8 > (3) 교란용의 난수(R)(n과 같은 정도의 비트수를 갖는다)를 발생한다. : < 0 6 0 3 >, (4) 4승의 처리 S = S⌒4 mod n < 0 6 0 2 >을 실행한다. 여기까지는 비밀키(x)의 비트치에는 의존시키지 않고 실행된다.
(5) x의 비트치에 응하여 조건분기의 판단을 실행한다. 즉, x의 비트치가 00, 01, 10 혹은 11중 어느것인 가를 판단한다. : < 0 6 0 4 >, < 0 6 0 5 >, < 0 6 0 6 >, < 0 6 0 7 >
이어서 교란용의 난수(R)를 이용하여 테이블값의 변형계산을 실행한다. 즉, 상기의 제 2의 예의 경우는 상기의 변형계산은 다음과 같은 조작이다.
(6) 분기의 조건에 응하여 난수(R)의 값의 범위를 제한하는 조작을 실행한다.
x의 비트값이 00의 경우는 난수(R)를 A[0]이하로 제한한 값 T, x의 비트값이 01인 경우는 난수(R)를 A[1]이하로 제한한 값 T, x의 비트값이 10의 경우는 난수(R)를 A[2]이하로 제한한 값 T, x의 비트값이 11인 경우는 난수(R)를 A[3]이하로 제한한 값 T를 각각 구한다. : < 0 6 0 9 >, < 0 6 1 0 >, < 0 6 1 1 >, < 0 6 1 2 >
(7)다음으로 상기 기술의 분기의 조건에 응하여 다음의 조작이 이루어진다.
제한된 값을 T로할 때 상기의 T를 이용하여 A[j](j = 0, 1, 2, 3)의 값을 랜덤분할하는 처리 B[0] = A[j] - T, B[1] = T를 실행한다. : < 0 6 1 4 >, <0 6 1 5 >, < 0 6 1 6 >, < 0 6 1 7 >
(8) 이렇게 하여 구해진 B[0], B[1]을 이용하여 < 0 6 0 8 >의 처리 :
S1 = S * B[0] mod n
S2 = S * B[1] mod n을 실행한다.
상기의 경우의 전류가 큰것이 많기 때문에 전류관측자는 상기값을 단서로 비밀키를 읽으려고 하지만 랜덤(의사난수에 의한 랜덤을 포함)에 분할되어 있다. 따라서 본래의 소비전류의 파형과는 다른 파형을 보는 것이 되고 혼란한다. 특히 통계적으로 처리하여 소비전류의 파형을 보다 정확하게 보려고 한 경우 난수가 매회변화하기 때문에 혼란의 정도에는 또는 효과적이다.
(9) 최종적인 < 0 6 1 3 >의 처리 S1 + S2 mod n = S * (B[0] + B[1]) mod n = S * A[j]이기 때문에 계산결과는 최종적으로 바른결과를 전한 송신용의 데이터를 전하고 있다.
항상 복호화에 있어서는 상기 기술과 같이 전체가 동일한 수법에 의해 송시니된 암호데이터(R)를 R⌒x mod n (=y)로 하여 복호화하면 좋다.
(비밀키의 분할)
다음으로 입력의 분할은 아니고 비밀키를 분할하는 방식의 예를 설명한다. 비밀키를 분할하는 방식에서는 직접관측하는 방식 즉 단독의 소비전류파형을 관측하는 방식에는 효과가 없지만 다량의 파형을 모아서 통계처리하는 경우에 정보의 은폐효과가 있는 것이다.
우선 최초로 기본적으로 RSA암호의 경우를 설명한다. 우선 견지한 바와 같이 RSA암호의 암호화/복호화의 조작은 도 4와 같이 실 행된다.
본 발명의 실시예에서는 통계처리를 실행하여 비밀키를 읽은 경우 비밀키(x)의 비트치는 항상 동일하지 않으면 되지 않는 점에 주목하여 상기를 랜덤(의사난수에 의한 랜더을 포함)에 분할한다. 상기의 처리플로챠트를 도 7A 및 도 7B에 나타낸다. 항상 도 7A 및 도 7B는 일련의 플로챠트를 나타내고 도안의 (A)로 연결되어 있다.
도 7A 및 도 7B의 처리에 있어서는,
(1) 상기 기술의 처리(도 4) 와 같은 형태로 계산을 스타트한다 < 0 7 0 0 >과 우선 비밀키를 2비트별로 나누어서 처리하기 위한 테이블을 용의한다. : < 0 7 0 1 >
(2) 상기 후 초기화를 실행한다. 즉 S1 = 1 및 S2 = 1로 한다. 상기 각각 S1 및 S2가 2개로 분할된 비밀키의 계산결과에 대응한다. : < 0 7 1 4 >
(3) 교란용의 난수(R)을 용의한다. 상기의 경우 난수는 의사난수이어도 좋다. : < 0 7 0 2 >
(4) 교란용의 난수(R)를 이용하여 다음과 같 이 비밀키(x)를 2개로 분할한다. : < 0 7 0 3 >
t[0] = x AND R
t[1] = x AND ~R 상기에서 ~R은 R의 비트반전치이다.
상기 2개로 분할된 비밀키를 이용하여 각각에 누승잉여계산을 실행한다. 상기의 누승잉여계산의 과정은 통상의 처리가 동일하다.
(5) 우선 4승의 처리 S1 = S1⌒4 mod n, S2 = S2⌒4 mod n이 실행된다. : < 0 7 0 4 >, < 0 7 0 5 >
(6) 상기 t[0] 및 t[1]의 상위의 비트에서 2비트별 순서로 00, 01, 10 및 11중 어느것인가를 조건으로 하여 분기한다. < 0 7 0 6 >, < 0 7 0 7 >, < 0 7 0 8 >, < 0 7 0 9 >, < 0 7 1 0 >, < 0 7 1 1 >, < 0 7 1 2 >, < 0 7 1 3 >
(7) 상기 S1 및 S2와 테이블 0701값과의 승산잉여계산을 실행한다. 상기는 S1 = * A[j] mod n, 단 j = 0, 1, 2, 3 및 S2 = S2 * A[j] mod n 단 j = 0, 1, 2, 3이다. < 0 7 1 4 >, < 0 7 1 5 >, < 0 7 1 6 >, < 0 7 1 7 >, < 0 7 1 8 >, < 0 7 1 9 >, < 0 7 2 0 >, < 0 7 2 1 >
(8) 상기가 최후의 비트까지 실행이 되면 계산을 처리를 종료하고 S1, S2를 구한다. < 0 7 2 3 >, < 0 7 2 4 >
(9) 최후로 S1 * S2 mod n을 계산하고 종료한다. < 7 0 2 5 >, < 7 0 2 6 >
T[0] + T[1] = x이기 때문에 S1 * S2 mod n = y⌒x mod n와 같아지고 송신데이터의 정답으로 되어 있다.
전류파형의 통계처리에 있어서는 비밀키의 각비트치는 몇회처리를 실행하여도 동일하다는 것이 필요하다. 무엇보다도 간단한 통계처리의 예는 파형을 타고 있는 노이즈성분의 제거를 위하여 실행하는 평균화이다. 이것을 폭넓게 이용되고 있는 노이즈제거수법이다. 실제 많은 디지털 역전류검출관에서는 파형의 평균화기능이 장비되어 있다. 도 4에 예시한 통상의 처리에서는 동일의 입력을 반복하여 실행하는 것에 의해 노이즈성분 이외는 전첵가 모두 동일한 전류치가 출력된다. 따라서 상기를 다수 수집하여 평균을 잡으면 노이즈가 제거된다. 상기는 독립 또는 동일한 분포에 따르는 확률변수의 다수의 표본에 대한 표본평군은 각 표본에 대한 논리적평균치에 가깝다고 하는 즉 [대수의 법칙]에 의거한 것이다. 실제 역전류검출관에서 측정한 전류치는 본래의 전류치에 평균 0의 전류노이즈가 부가되어 있다고 사려되는 것이 가능하다. 평균이 0이라고 가정하는 이유는 무엇보다도 노이즈성분의 평균치가 0이지 않으면 본래의 전류치이외로 직류 성부이 포함되어 있는 것이 되기 때문이다.
한편, 도 7A 및 도 7B에 나타난 대책을 실행한 점에서 사실을 전류관측자가 알고 있는 경우 S1, S2의 계열에 대해서 T[0], T[1]을 구하고 최후로 그 합을 취하면 바른 키를 구하는 것이 가능하다. 그러나 일반적으로는 전류노이즈를 하드웨어 에 의해 완전하게 제거하는 것은 곤란하고 단일의 전류파형의 관측에서는 키T[0], T[1]을 완전하게 특정하는 것은 곤란하다. 따라서 확실성을 향상시키기 위해서는 복수의 파형의 채취가 필요하다. 그러나 도 7A 및 도 7B에 나타난 처리에 있어서는 측정할 때마다 난수(R)의 값이 변화하고 상기에 의해 T[0], T[1]의 값이 변화해버리기 때문에 평균화조작을 실행하면 각 비트값이 평균화되어 버리고 본래의 비트값 00, 01, 10, 11이 구해지지 않고 상기의 평균전류가 되고 차이가 없어지게 된다.
또한 본원에 있어서의 지수를 분할하는 별도의 방법을 설명한다.
상기 처리의 플로챠트를 도 8A 및 도 8B에 나타낸다. 양도는 (A)로 연결되어 있고 하나의 플로챠트가 된다.
도 8A 및 도 8B에 나타나는 처리에 있어서는 계산이 스타트하는 < 0 8 0 0 >의 다음공정을 거쳐서 계산된다.
(1) 상기 기술의 처리(도4)와 동일하게 비밀키를 2비트별고 나누어서 처리하기위한 테이블을 용의한다. : < 0 8 0 1 >
(2) 상기 후 초기화를 실행한다. 즉 S1 = 1 및 S2 = 1이된다. 그 각각 S1 및 S2가 2개로 분할된 지수 즉 분할된 비밀키정보에 대응한다.: < 0 8 2 3 >
(3) 교란용의 난수(R)를 용의한다. 상기의 우 난수는 의사난수이어도 좋다.: < 0 8 0 2 >
(4) 지수(x)를 2개로 분할한다. < 0 8 0 3 >
t[0] = V
t[1] = x - V
(5) 상기의 2개로 분할된 비밀키를 이용하여 각각으로 누승잉여계산을 실행한다. 상기의 과정은 통상의 처리와 동일하다.
우선 t(0), t(1)의 각각에 대해서 4승의 처리 S1 = S1⌒4 mod n S2 = S2 ⌒4 mod n이 실행된다. < 0 8 0 4 >, < 0 8 0 5 >(6) 상기 t[0] 및 t[1]의 상위의 비트에서 2비트별 순서로 00, 01, 10 및 11 중의 하나를 조건으로서 분기한다. < 0 8 0 6 >, < 0 8 0 7 >, < 0 8 0 9 >, < 0 8 1 0 >, < 0 8 1 1 >, < 0 8 1 2 >, < 0 8 1 3 >
(7) 상기 S1 및 S2와 테이블 < 0 8 0 1 >의 값과의 승산잉여계산을 실행한다. 상기는 S1 = S1 * A[j] mod n 단 j = 0, 1, 2, 3 및 S = S2 * A[j] mod n 단 j = 0, 1, 2, 3 이다. < 0 8 1 4 >, < 0 8 1 5 >, < 0 8 1 6 >, < 0 8 1 7 >, < 0 8 1 8 >, < 0 8 1 9 >, < 0 8 2 0 >, < 0 8 2 1 >
(8) 상기가 최후의 비트까지 실행되면 계산을 처리를 종료하고 S1, S2 를 구한다. < 0 8 2 4 >, < 0 8 2 5 >
(9) 최후로 S1 * S2 mod n 을 계산한다.
t[0] + t[1] = x이기 때문에 S1 * S2 mod n = y⌒x mod n으로 같게 이루고 있다. 송신데이터의 정답이 구해진다. < 0 8 2 6 >
소비전류파형의 통계처리에 있어서는 비밀키의 각 비트치는 몇번처리를 실행하여도 동일하다는 것이 필요 하다. 무엇보다도 간단한 통계처의 예는 파형을 타고 있는 노이즈성부의 제거를 위하여 실행하는 평균화이다. 상기는 폭넓게 이용되 고 있는 노이즈제거수법이고 실제 많은 디지털역전류검출관에서는 파형의 평균화기능이 장비되어 있다. 통하의 처리(도4)에서는 동일한 입력을 반복하여 실행하는 것에 의해 노이즈성분 이외는 전체가 전부동일한 전류치가 출력된다. 따라서 상기를 다수수집하여 평균을 취하면 노이즈가 제거된다.
한편 도 8A, 도 8B에 나타난 대책을 실행한 점의 사실을 전류관측자가 알고 있는 경우 S1, S2의 계열에 대해서 T[0], T[1]을 구하여 최후로 그 총합을 취하면 올바른 키를 구하는 것이 가능 하다.
그러나 일반적으로는 전류노이즈를 하드웨어에 의해 완전하게 제거하는 것은 곤란하다. 따라서 단일의 전류파형의 관측만으로는 키T[0], T[1]을 완전하게 특정하는 것은 곤란하다. 상기로 인하여 확실성을 향상시키기 위해서는 복수의 파형의 채취가 필요하다. 그런데 도 8A 도 8B에 나타난 처리에 있어서는 측정할 때마다 난수(R)의 값이 변화하고 상기에 의해 T[0], T[1]의 값이 변화해버리기 때문에 평균화조작을 실행하면 각 비트값이 평균화되어 버리고 종래의 비트값 00, 01, 10, 11이 구해지지 않고 상기들의 평균전류가되고 차이가 보이지 않게 된다.
비밀키의 교란의 다른 방법의 예를 설명한다.
키의 교란의 다른방법으로서 올러관수 f(n) = (p - 1) (q - 1)을 이용 하는 방법을 들수가 있다.
누승잉여연산을 이용 한 경우 y와 n이 상호 수수인 자연수이면 올러의 정리에 의해,
y⌒f(n) mod n = 1
이 되는 것을 알수 있다. 상기의 사실을 이용하면,
y⌒x mod n = y⌒(x + Sf(N)) mod n
이라는 관계가 성립된다.
상기의 경우의 처리의 흐름을 도 9에 나타낸다. 상기는 도 4에 나타난 통상의 누승잉여처리와 거의 같은 구성을 취하고 있다.
(1)우선 입력치를 2비트별로 처리하기 위해서 테이블(0901)을 작성한다. 상기 테이블은 도 5의 예와 동일하다. < 0 9 0 1 >
(2) 연산결과의 초기화를 실 행한다. < 0 9 0 4 >
(3) 교랸용의 난수(R)를 생성한다. 상기의 경우 상기 난수는 의사난수이어도 좋다. < 0 9 0 2 >
(4) 지수(x)를 u = x + Rf(n)으로 교환한다. < 0 9 0 3 >
상기 후의 처리는 통상의 누승잉여연산과 동일하다.
(5) 상기 u의 비트패턴을 처음부터 읽어가고 4승잉연연산 S = S⌒4 mod n 을 실행한다. < 0 9 0 4 >
(6) 상기 u의 비트값이 00, 01, 10, 11중 어느하나의 판단을 실 행하고 처리를 분기한다. < 0 9 0 5 >, < 0 9 0 6 >, < 0 9 0 7 >, < 0 9 0 8 > (7)의 상기 비트값에 따른 분기에 대응하여 S = S* A[j] mod n 단 j = 0, 1, 2, 3의 승산잉여연산을 실행한다. 상기에서 A[0] = 1, A[1] = y, A[2] = y⌒2 mod n, A[3] =y⌒3 mod n이다. < 0 9 0 9 >, < 0 9 1 0 >, < 0 9 1 1 >, < 0 9 1 2 >
(7) 상기를 지수의 비트장까지 반복하여 처리를 수료한다. < 0 9 1 4 >, < 0 9 1 5 >
예를들면 N = 187 (= 11 * 17)일경우 f(N) = (11 - 1) * (17 - 1) = 160이다. 따라서 지수가 x = 38 = (100110)(2진수 표현)이면
x + f(N) = 38 + 160 = 198 = (11000110) (2진수 표현)
x + 2f(N) = 38 + 320 = 358 = (101100110) (2진수 표현)
등과 같이 다른비트패턴 형성한다.
이와 같이 하여 본래의 x와는 다른 조건분기를 실행하고 해당하는 파형이 교란된다.
그러나 x + Sf(N)은 x와는 다른 비트패턴을 갖지만 위에 본 바와 같이 법N의 잉여류에 있어서는 x와 동등한 것이다. 따라서 일회의 전류관측에 의해 x + Sf(N)의 비트패턴을 알수 있으면 비밀키(x)를 도출한 것과 동일한 것이된다. 한편 전류의 관측에 있어서는 전류노이즈가 없어지지 않고 파형의 평균화를 하지 않으면 안되는 경우가 많다. 그 때 도 9의 예와 같이 S의 값을 누승잉여연산별로 변화하고 특히 랜덤을 시키면 파형을 많이 관측하여도 지수해당부의 파형이 평균화되어 버리고 비트의 특징을 교란한다. 항상 상기 랜덤에 의한것은 난수외로 의사난수를 적용하는 하는 것이 가능하다.
다음으로 상기의 고찰방법을 타원곡선암호에 대해서 적용 하는 것을 고찰한다.
우선 타원곡선암호자체에 대해서 간단하게 설명한다.
타원곡선은 체(K)상에서 정의된 3차다항식의 영점집합이다.
K의 표수가 2이지 않는 경우는
y⌒2 = x⌒3 + Ax⌒2 + Bx + c
라고 하는 표준형을 갖는다. 표수가 2체상에서는
y⌒2 + cy = x⌒3 + Ax + B
y⌒2 + xy = x⌒3 + Ax+ B
라고 하는 표준형을 갖는 곡선이다. 어느경우도 뒤에 설명하는 무한원점(0)을 포함하여 생각한다. 도 10에 타원곡선의 형태의 예를 나타낸다. 횡축은 X축 종축은 Y축으로 각각 임의단위이다. 도 10에 있어서의 곡선(100) 및 (101)이 타원곡선의 예이다.
본 발명에 있어서 표수가 2이거나 아닌것은 본질적이지 않기 때문에 이하 간단하게 표수가 2가 아닌 경우에 대해서 설명한다. 또한, 암호로 필요한 것은 유한체의 경우만이기 때문에 그 경우에 한하여 설명한다. 유한개의 원소로 이루는 체를 유한체 또는 갈로이체(Galois field)라 하고 그 구조는 잘 알려져 있다. 그 중에서도 단순한 구성법은 이하와 같다.
우선 표수(p)를 법으로 하는 정수환의 잉여환(Zp)을 생각한다. Zp에 있어서는 0이외의 원소는 역을 가지고 있기 때문에 체의 구조를 가지고 있다. 상기를 소체라고 하고 Fp라고 쓴다. 상기가 무엇보다도 원시적인 유한체의 예이다.
다음으로 Fp의 원소를 계수를 갖는 다항식 f(X)를 염두하고 그 영점 중 FP에 포함되지 않는 것을 Fp에 첨가하는 것에 의해 새로운 체를 구성하는 것이 가능하다. 상기를 Fp의 유한차대수확대체(Finite-Order algebraic extention field)라고 한다. FP의 유한차대수확대체의 원소의 개수는 p의 누승으로 되어 있는 것이 알려져 있다. 상기 원소의 개수를 q로 쓸경우 유한체대수확대체를 Fq등으로 표시하는 경우가 있다.
타원곡선상의 점사이에는 연상을 정하는 것이 가능하다. 상기 기술의 도 10을 이용하여 타원곡선상의 가산법의 방법을 나타낸다. 타원곡선상의2개의 점 P Q가 있을 경우 상기의 2점을 통하는 직선을 끌어 상기 직선이 다시 타원곡선과 교차하는 점S를 x축에 관하여 대칭으로 굴곡되어 반환한 점은 곡선의 비대칭에서 다시 타원곡선상의 점이 된다. 상기의 점을 P + Q로 쓰고 P와 Q의 [총합]으로 정의한다. 항상 P = Q의 경우 상기 2점을 통하는 직선을 상기의 점에서의 접선을 이용한다. 교점이 없는 경우는 가상점(virtual point)으로서 무한원점이라는 것을 생각하며 상기의 가공의 점에서 교차되어 있다고 본다. 무한원점을 0으로 쓴다. 또한 타원곡선상의 점 P와 x축에 관하여 대칭위치에 있는 점을 P의 역원소로 하고 -P로 나타낸다. G(E/Fq)에 있어서의 일점 P를 k개 부가한 것을 kP, -P를 k개 부가한 것을 -kP로 쓰고 P의 스칼라배라 칭한다. 상기의 좌표는 P, Q의 좌표의유리식으로 나타낼 수 있고 따라서 일반의 체상에서 상기의 연산을 고려 할 수 있다. 상기의 [가산법]은 통상의 가산법과 동일하게 결합법칙 교환법칙이 성립하고 상기의 가산법에 관하여 무한원점(0)은 통상의 수로서의 연산과 동일하게 제로의 역할을 이룬다. -P는 P와 부가하면 0이된다. 상기는 타원곡선상의 가산법연선이 가교환(아벨군)의 구조를 갖는 것을 나타낸고 있다. 상기를 모델 웰군으로 칭하는 경우가 있다. 타원곡선(E) 정의체(Fq)를 고정할 때의 모델 웰군을 G(E/Fq)로 쓸 경우가 있다. G(E/Fq)의 구조는 매우 단순하며 순환그룹(cyclic group)이거나 또는 2개의 순회군의 집적과 동형이 되는 것이 알려져 있다.
일반적으로 kP = Q의 값을 알아도 역으로 k의 값을 아는 것은 계산량이 팽배하게 되기 때문에 용이하지 않다. 상기를 타원곡선상의 이산대수문제(discrete logaritm problem)라고 칭한다. 타원곡선암호에서는 타원곡선상의 이산대수문제가 곤란한 것을 이용하고 있다.
다음으로 본원에 관한 타원곡선을 이용한 암호방식을 설명하다. 타원곡선을 이용한 암호방식에는 각종의 것이 있다. 상기를 예시하면 타원곡선 엘가멜 크립토시스템(Elliptic curve ElGamal cyrptosystem), 타원ESA(Electric Signature Algorithm)등이다. 상기에서는 특히 타원ElGamal 방식을 설명한다. 본 방법은 타원곡선상에서의 점의 스칼라배를 이용하는 암호방식에 대해서는 전체가 동일하게 적용하는 것이 가능 하다.
타원곡선(E)와 상기상의 한점(P)가 공개되어 있는 것으로 한다. 상기의 점(P)은 일반적으로 큰 대수를 갖는점이고 상기를 베이스포인트로 부른다.
A씨가 B씨에 비밀정보(M)을 송신하는 것을 생각한다. 비밀정보(M)는 타원곡선상의 점에서 표현된다. 항상 평문(암호문)의 타원곡선상의 매입에 대해서는 N. Koblita : A Course in Number Theory and Cryptography second Edition Graduate Texts in Mathematics 114, Springer-Verlag, 1987에 설명되어 있다.
< S T E P 1 > 수신자 B씨는 정수 x[B]를 선택하고 상기를 비밀키로서 보지하고 Y[B] = x[B]P를 공개키부에 등록한다.
< S T E P 2 > 송신자 A씨는 난수(R)를 이용하여 C1 = RP 및 C2 = M + RY[B]를 B씨에 송신한다.
< S T E P 3 > 수신자 B씨는 C1, C2를 수취하고 자신의 비밀키 x[B]를 이용하여 C2 - x[B]C1 = M으로 M을 복원한다.
타원ElGamal암호에 한정하지 않고 타원곡선암호에 있어서는 타원곡선상의 점 스칼라배를 계산할 필요가 있다.
타원곡선상의 점의 스칼라배를 구하는 알고리즘은 누승잉여계산의 알고리즘에 유사하고 있다. 도 11은 P의 스칼라배 kP(단 k는 정수)를 계산하는 표준적인 알고리즘을 누승잉여계산과 동일하게 2비트씩 합하여 처리하는 의 플로챠트이다.
(1) 우선 2비트처리를 한번에 실행하기 위하여 베이스포인트(P)의 테이블을 작성한다. 누승잉여연산에 있어서는 mod n에서의 0승 1승 2승 3승에 대응하여 0(무한원점) P, 2P, 3P를 용의한다. 즉, P[0] = 0, P[1] = P, P[2] = 2P, P[3] = 3P이다. < 1 2 0 0 >, < 1 2 0 1 >
누승잉여연산과는 다르게 상기의 테이블은 매회 교환할 필요없이 미리 용의해두는 것이 가능하다.
(2) 계산용의 점의 값을 초기화한다. < 1 2 0 2 >
(3) 상기의 점의 4배 S = 4S를 계산한다. < 1 2 0 3 >
(4) 2비트별로 k의 비트의 값을 보고 그 각각이 00, 01, 10, 11중 어느 조건인지 판단한다. < 1 2 0 4 >, < 1 2 0 5 >, < 1 2 0 6 >, < 1 2 0 7 > 상기에서 비밀키(k)는 IC칩내 예를들면 상기의 EEPROM내에 수납되어 있다.
(5) 상기의 조건에 응하여 계산을 분기하여 상기에 대응하여 각각의 점P[0], P[1], P[2], P[3]을 부가한다. 즉 S = S + P[j](단 j = 0, 1, 2, 3)이다. < 1 2 0 8 >, < 1 2 0 9 >, < 1 2 1 0 >, < 1 2 1 1 >
(6) 상기의 처리를 k의 비트가 이를때까지 연속하는 것에 의해 kP를 계산하는 것이 가능 하다. 그리고 계산을 수료한다. < 1 2 1 3 >, < 1 2 1 4 >
상기의 계산은 k의 상위에서 2비트씩 나누어 보고 계산하는 방식이다. 누승잉여계산과 수학적으로는 동일한 구조를 하고 있는 것을 알수 있다. 뒤에 다시 설명하지만 RSA에 있어서의 누승잉여연산 타원곡선상의 가산법연산을 각각 Zn, G(E/Fq)라고 하는 대수계상에서 실행되는 연산이라고 사려할 수 있고 상기를 보다 일반적으로 대수계로 확장하는 것이 가능하다. 그 경우의 계산기연산의 방법도 기본적으로는 상기에서 기술한 알고리즘에 의해 처리된다.
한편에서 마이크로컴퓨터가 내부의 프로그램을 실행하는 경우 동작시의 내부소비전력이 누설하는 가능성이 있기 때문에 상기 프로세스를 마이크로컴퓨터에서 실현하는 경우 비밀키의 처리가 누설하고 위험에 노출되는 경우가 된다. 예를들면 k의 비트의 상이에 의해 분기가 실행되기 때문에 혹시 상기의 처리가 소비전류의 차로서 표현되면 전류파형에서 k의 비트를 특정하는 것이 가능한 가능성이 있다. 상기의 예에서는 k는 2비트별로 상이하다.
앞서 본 바와 같이 타원곡선암호의 암호화/복호화의 조작은 상기의 도 11의 플로챠트에 나타난 수순으로 실행한다.
통계처리를 실행하여 비밀키를 읽는 경우 비밀키(k)의 비트값은 항상 동일하 지 않으면 되지 않는 것에 주목하여 상기를 랜덤에 분할한다.
즉 상기의 방법은 스칼라배에 있어서의 스칼라를 분할하는 방식이다. 항상 상기의 경우 상기 랜덤이 되는 분할은 의사난수에 의한 랜덤을 포함하여 좋다. 상기의 처리의 플로챠트를 도 12A 및 도 12B에 나타낸다. 양도는 (A)로 연결되어 있고 하나의 플로챠트가 된다.
(1) 도 12A 도 12B의 처리예에서는 비밀키(k)를 2비트별로 나누어서 처리하기 위한 테이블을 용의한다. 상기의 처리는 도 11에 도시되는 처리와 동일하다. < 1 3 0 0 >, < 1 3 0 1 >
(2) 계산용의 점의 값을 초기화한다. 즉 S1 = 0 S2 = 0을 이룬다. < 1 3 2 3 >
(3) 교란용의 난수(R)를 용의한다. < 1 3 0 2 >
(4) 교란용의 난수(R)를 이용하여 다음과 같이 비밀키(k)를 2개로 분할한다. < 1 3 0 3 >
t[0] = k and R
t[1] = k and ~R
상기에서 ~R은 R의 비트반전치이다.
상기 2개로 분할된 비밀키를 이용하여 각각으로 누승잉여계산을 실행한다. 상기의 과정은 통상의 처리와 동일하다.
(5) 우선 4배의 처리 S1 = 4S1 및 S2 = 4S2의 처리를 실행한다. < 1 3 0 4 >, < 1 3 0 5 >
(6) t[0], t[1] 의 각각에 대해서 상위의 비트에서 2비트씩 순서로 00, 01, 10, 11중의 어느하나의 판단을 실행한다. < 1 3 0 6 >, < 1 3 0 7 >, < 1 3 0 8 >, < 1 3 0 9 >, < 1 3 1 0 >, < 1 3 1 1 >, < 1 3 1 2 >, < 1 3 1 3 >
(7) 상기의 분기조건에 따라서 테이블(1301)의 값과의 승산잉여계산 S1 = S1 + A[j](단, j = 0, 1, 2, 3), S2 = S2 + A[j] (단 j = 0, 1, 2, 3)을 실행한다. < 1 3 1 4 >, < 1 3 1 5 >, < 1 3 1 6 >, < 1 3 1 7 >, < 1 3 1 8 >, < 1 3 1 9 >, < 1 3 2 0 >, < 1 3 2 1 >
(8)상기가 최후의 비트까지 실행되면 처리를 수료하고 S1, S2를 구한다. < 1 3 2 5 >, < 1 3 2 4 >
(9) 최후로 S1 + S2 즉 타원곡선상의 총계를 계산한다. t[0] + t[1] = k이기 때문에 S1 + S2 = kP로 같아지고 정답으로 되어 있다. < 1 3 2 2 >, < 1 3 2 6 >
항상 상기의 예에서는 키정보(k)를 2비트별로 나눈 예이다. 그러나 상기의 키정보의 나눔은 다른 비트수 예르들면 3비트 혹은 4비트를 합하여 계산을 실행하는 것이 가능하다. 상기의 경우 k를 j비트별고 나누는 경우 2⌒j배의 계산을 실행하는 것이 된다. 이것은 앞서 설명한 승산잉여계산의 경우와 유사하는 방법이다.
전류파형의 통계처리에 있어서는 비밀키의 각 비트값은 몇회처리를 실행하여도 동일하다는 경우가 필요하다. 무엇보다도 간단한 통계처리의 예는 파형을 타고 있는 노이즈성분의 제거를 위해 실행하는 평균화이다. 상기는 넓게 이용되고 있는 노이즈제거수법이고 실제 많은 디지털역전류검출관에서는 파형의 평균화기능이 장 비되어 있다. 통상의처리(도 11)에서는 동일한 입력을 반복하여 실행하는 것에 의해 노이즈성분이외는 전체가 전부동일한 전류치가 출력된다. 따라서 상기를 다수수집하여 평균을 취하면 노이즈가 제거된다.
한편 도 12A 및 도 12B에 예시한 대책을 실행한 사실을 전류관측자가 알고 있는 경우 S1, S2의 계열에 대해서 t[0], t[1]을 구하고 최후에 그 합을 취하면 바른키를 구하는 것이 가능하다. 그러나 일반에게는 전류노이즈를 하드웨어에 의해 완전하게 제거하는 것은 곤란하고 단일한 전류파형의 관측만으로는 키t[0], t[1]을 완전하게 특정하는 것은 곤란하다. 따라서 확실성을 향상시키기 위해서는 복수의 파형의 채취가 필요하다.
그런데 도 12A 및 도 12B의 처리에 있어서는 전류파형을 측정할 때마다 난수(R)의 값이 변화하고 상기에 의해 t[0], t[1]의 값이 변화해 버리기 때문에 편균화조작을 실행하면 각비트값이 평균화되어 버린다. 따라서 본래의 비트치 00, 01, 10, 11이 구해지지 않는다. 상기로 인하여 평균화조작을 실행한 전류파형은 각단일 전류파형의 평균전류가 되고 차이가 보이지 않게 된다.
RSA암호에 있어서의 누승잉여연산의 경우와 유사한 방법을 이용하여 비밀키의 다른 분할방법을 생각 할 수 있다. 상기의 예를 도 13A 및 도 13B에 예시한다. 양도는 도안의 (A)에 있어서 연결하고 하나의 플로챠트를 형성한다.
도 13A 및 도 13B에 예시하는 처리에 있어서는 도 11에 도시한 통상의 처리와 동일하게 계산을 스타트 < 1 4 0 0 > 하면 (1) 비밀키(k)를 2비트별로 나누어서 처리하기 위한 테이블 < 1 4 0 1 > 을 용의한다. 즉 P[0] = 0 , P[1] = P, P[2] = 2P P[3] = 3P이다.
(2) 상기 후 계산결과의 초기화를 실행한다 < 1 4 2 3 > (3) 교란용의 난수(R)를 용의한다. 상기의 경우 난수(R)는 의사난수이어도 좋다. < 1 4 0 2 >
(4) k이하의 값만 취할 수 없는 교란용의 난수(V)를 이용하여 다음과 같이 비밀키(k)를 2개로 분할한다 < 1 4 0 3 >.
t[0] = V
t[1] = k - V
(5) 상기 2개로 분할된 비밀키를 이용하여 각각으로 누승잉여계산을 실행한다. 상기의 과정은 통상의 처리와 동일하다. 우선 각값 S1 및 S2의 4배의 처리가 실행된다. < 1 4 0 4 >, < 1 2 0 5 >
(6) t[0] 및 t[1]의 상위의 비트에서 2비트씩 순서로 00, 01, 10, 11중 어느하나의 조건인지를 판단한다. < 1 4 0 6 >, < 1 4 0 7 >, < 1 4 0 8 >, < 1 4 0 9 >, < 1 4 1 0 >, < 1 4 1 1 >, < 1 4 1 2 >, < 1 4 1 3 >
(7) 상기 조건에 응하여 계산을 분기하여 테이블값과의 승산잉여계산을 실행한다. < 1 4 1 4 >, < 1 4 1 5 >, < 1 4 1 6 >, < 1 4 1 7 >, < 1 4 1 8 >, < 1 4 1 9 >, < 1 4 2 0 >, < 1 4 2 1 >
(8) 상기의 계산이 최후의 비트까지 실행되면 처리를 수료하고 S1, S2를 구한다. < 1 4 2 4 >, < 1 4 2 5 >
(9) 최후로 S1 + S2를 계산한다. < 1 4 2 2 >, < 1 4 2 6 >
t[0] + t[1] = k이기 때문에 S1 + S2 = kP로 같아지고 정답으로 되어 있다. < 1 4 2 0 >
전류파형의 통계처리에 있어서는 비밀키의 각비트값은 몇회처리를 실행하여도 전류파형의 통계처리에 있어서는 비밀키의 각 비트값은 몇회처리를 실행하여도 동일하다는 경우가 필요하다. 무엇보다도 간단한 통계처리의 예는 파형을 타고 있는 노이즈성분의 제거를 위해 실행하는 평균화이다. 상기는 넓게 이용되고 있는 노이즈제거수법이고 실제 많은 디지털역전류검출관에서는 파형의 평균화기능이 장비되어 있다. 통상의 처리(도 11)에서는 동일한 입력을 반복하여 실행하는 것에 의해 노이즈성분이외는 전체가 전부동일한 전류치가 출력된다. 따라서 상기를 다수수집하여 평균을 취하면 노이즈가 제거된다.
한편 도 13A 및 도 13B에 예시한 대책을 실행한 사실을 전류관측자가 알고 있는 경우 S1, S2의 계열에 대해서 t[0], t[1]을 구하고 최후에 그 합을 취하면 바른키를 구하는 것이 가능하다. 그러나 일반에게는 전류노이즈를 하드웨어에 의해 완전하게 제거하는 것은 곤란하고 단일한 전류파형의 관측만으로는 키t[0], t[1]을 완전하게 특정하는 것은 곤란하다. 따라서 확실성을 향상시키기 위해서는 복수의 파형의 채취가 필요하다.
그런데 도 13A 및 도 13B에 예시한 처리에 있어서는 전류파형을 측정할 때마다 난수(R)의 값이 변화하고 상기에 의해 t[0], t[1]의 값이 변화해 버리기 때문에 편균화조작을 실행하면 각비트값이 평균화되어 버린다. 따라서 본래의 비트치 00, 01, 10, 11이 구해지지 않는다. 상기로 인하여 평균화조작을 실행한 전류파형은 각단일 전류파형의 평균전류가 되고 차이가 보이지 않게 된다.
다음으로 타원곡선의 경우와 유사한 방법을 이용한 경우의 예를 예시한다.
G(E/Fq)에 있어서는 전체의 원소(상기는 타원곡선상의 점에 상당한ㄷ)P에 대해서 mP= 0이 되도록 정의 정수(m)이 존재한다. 상기 가운데 최소의 것을 P의 위수(order)로 하고 ord(P)등으로 쓴다.
정의에 의해 ord(P) P= 0이 성립된다. 따라서 임의의 정수(S)에 대해서 (k + S * ord (P)) P = kP가 성립한다. 상기는 누승잉여계산에 있어서 y⌒(x + Sf(n)) mod n = y⌒x mod n
이 성립하는 것의 타원곡선에 있어서 유사하다.
상기의 성질을 이용 하면 k는 비트패턴이 다른 키 k + S * ord(P)가 구해진다. 상기를 이용하여 통계처리에 의한 전류해석을 교란하는 알고리즘을 도 14에 나타낸다.
우선 계산을 개시< 1 5 0 0 > 하면 (1) 입력값을 2비트별로 처리하기 위한 테이블 < 1 5 0 1 > 을 작성한다. 즉 P[0] = 0 , P[1] = P, P[2] = 2P, P[3] = 3P이다.
(2) 이어서 계산결를 초기화, S = 0 으로 한 후< 1 5 1 0 > (3) 교란용의 난수(R)를 생성 < 1 5 0 2 > 한다. 상기의 경우 난수(R)는 의사난수이어도 좋다.
이어서 스칼라를 k에서 u = k + R * ord(P)로 교환한다 < 1 5 0 3 >.
상기 후의 처리는 통상의 누승잉여연산과 동일하게 (4) u의 비트패턴을 머리에서 읽어가고 4배계산 S = 4S < 1 5 0 4 >를 실행한다.
(5) 상기 u의 값이 00, 01, 10, 11중 어느하나의 조건인지를 판단한다. < 1 5 0 5 >, < 1 5 0 6 >, < 1 5 0 7 >, < 1 5 0 8 >
(6) 상기 조건에 응하여 계산을 분기하여 타원곡선상에서의 가산을 실행한다. P[0] = 0(무한원점), P[0] = 0 , P[1] = P, P[2] = 2P, P[3] = 3과 S와의 타원곡선상에서의 가산을 실행한다. < 1 5 0 9 >
(7) 상기를 스칼라(k)의 비트장까지 반복하여 처리를 수료한다. < 1 5 1 1 >, < 1 5 1 2 >
누승잉여연산의 경우와 동일하게 k와 k + R * ord (P)는 다른 비트패턴을 생성한다. 따라서 본래의 x와는 다른 조건분기를 실행하고 해당하는 파형이 교란된다.
그러나 k + S * ord(P)는 k와는 다른 비트패턴을 갖지만 상기에서 본바와 같이 타원곡선(E)에 있어서는 k와 동등한 것이다. 따라서 일회의 전류관측에 의해 k + S * ord(P)의 비트패턴을 아는 것이 가능하면 비밀키(k)를 도출한 것과 같은 것이 된다. 한편 전류의 관측에 있어서는 전류노이즈를 피하게 되면 파형의 평균화를 하지 않으면 되지 않는 경우가 많다. 그 때 도 14와 같이 S의 값을 누승타원곡선상의 점의 스칼라배연산별로 변화하고 특히 랜덤(의사난수를 포함한다)시키면 파형을 많이관측하여도 지수해당부의 파형이 평균화되어 버린다. 따라서 비트의 특징이 교란된다. 항상 상기 랜덤의 변형시에든 의사랜덤이 되는 분할을 이용하여도 좋다.
다음으로 이상의 전류교란처리를 또한 효과적으로 하는 방법을 제안한다. 상기는 입력신호에서는 지수의 분할을 실행한 후 다음의 스텝의 연산을 또한 계산 의 순서등을 변화시키는 것이다. 상기의 수법은 여기까지 기술해온 각 실시형태에 있어서도 적용가능한 것이다.
우선 누승잉여계산 y⌒x mod n에 있어서 입력의 분할을 실행하여 처리할 때에 분할 후의 계산의 순서를 매회변화시키는 방법을 도 15A 및 도 15B로 나타낸다. 양도는 도안의 (A) 및 (B)로 연결되어 하나의 플로챠트를 형성한다.
상기의 예는 예를들면 상기기술의 도 5의 예의 또다른 변형계산으로 보는 것이 가능하다.
우선 계산을 개시하면 < 1 6 0 0 > (1) 2비트씩 처리하기 위한 테이블을 작성한다. 즉 A[0] = 0 , A[1] = y, A[2] = y⌒2 mod n, A[3] = y⌒3 mod n이다.< 1 6 0 1 >
(2) 상기 후 계산결과의 초기화 즉 S = 1 을 실행한다.< 1 6 2 4 >
(3) 이어서 입력교란용의 난수(R)및 랜덤분기를 실행하기위한 난수 v( 0 또는 1)을 생성한다. 상기의 경우 상기 난수 및 랜던분기는 의사난수 혹은 의사랜덤이 되는 변형이어도 좋다. < 1 6 0 3 >
(4) x 의 비트열이 종료할 때까지 실행하고 있는지를 판정하고 < 1 6 0 4 >, x의 비트열 00, 01, 10, 11중 어느하나인지를 판단한다. < 1 6 0 5 >, < 16 0 6 >, < 1 6 0 7 >, < 1 6 0 8 > 그리고 상기 조건에 각각 응하여 A[0], A[1], A[2] , A[3]중 어느 하나를 분해할 것인가를 결정한다.
(5) 또한 v의 값이 1인지 아닌지에 응하여 그 후의 복원처리의 순서를 반전할 것인지 아닌지를 결정한다. < 1 6 0 9 >, < 16 1 0 >, < 1 6 1 1 >, < 1 6 1 2 >
(6) 상기 기술의 각 비트의 조건분기의 판단 및 v의 값의 판정에 응하여 복원처리 즉 B[0] = A[j] and R, B[1] = A[j] and ~R, (단 j = 0, 1, 2, 3)을 실행한다. < 1 6 1 3 >, < 1 6 1 4 >, < 1 6 1 5 >, < 1 6 1 6> , < 1 6 1 7 >, < 16 1 8 >, < 1 6 1 9 >, < 1 6 2 0 >
(7) 그리고 연산결과 S = S * B[0] mod n < 1 6 2 1 > 및 S = S * B[1] mod n< 1 6 2 2 > 또한 그 총연산 S = S1 + S2 mod n < 1 6 2 4 >를 구한다.
(8) x의 최후의 비트까지 실행한 것을 확인하고 < 1 6 0 4 > 계산을 종료한다. < 1 6 2 4 >
상기 처리에 의해 소비전류를 보고 내부처리를 추정하기 우히여 필요한 정보를 증가하고 추정이 보다 곤란해진다.
지수도 또한 분리후에 처리순서를 랜덤화하는 것에 의해 전류교란의 효과를 높이는 것이 가능하다. 도 16A 및 도 16B의 그 일례를 나타낸다. 양도는 도안의 (A), (B), (C)로 연결하고 하나의 플로챠트를 구성한다. 순서를 변경하는 방법으로는 각종의 것이 있기 때문에 후에 다른 방법도 나타낸다.
도 16A 및 도 16B의 처리에서는 다음의 계산이 이루어진다. 상기의 예는 예를들면 도 7A 및 도 7B에 나타난 예의 다른 변형계산으로 보인다.
(1) 계산이 개시되면 < 1 7 0 1 > 2비트처리의 테이블을 작성한다. < 1 7 0 1 >
(2) 초기화 S[0] = 1, S[1] = 2 < 1 7 1 2>된다. 상기 까지의 계산은 이미 설명한 처리이다.
(3) 지수(x)를 분할하기 위한 교란필요의 난수(R)(의사난수이어도 좋다)를 발생한다. < 1 7 0 2 >
(4) 지수(x)를 t[0] = x And R, t[1] = x And ~R로 분리한다. < 1 7 0 3 >. 항상 ~R은 R의 반전치이다. 또한 상기의 부분은 이미 나타난 바와 같이 T[0]을 x이하의 난수로서 t[1] = x - t[0]으로 구하는 것에 의해서도 실행하는 것을 말할 필요도 없다.
(5) x 전체의 처리가 종료했는지의 여부를 판정한다. < 1 7 0 4 >
(6) 만약에 x 전체의 처리가 종료하지 않았으면 분기용의 난수(v)(v = 0 또는 1)를 발생한다 < 1 7 0 2 >
(7) 상기의 분기용의 난수(v)의 값이 0 또는 1 인지를 판정한다 < 1 7 0 6 >.
(8) 상기 v값에 의해 다음에 실행되는 처리의 순서를 교체한다. < 1 7 0 7 >, < 1 7 0 9>
즉 v = 0의 경우 t[0]의 처리가 선행되고 < 1 7 0 7 > 이어서 T[1]의 처리가 실행된다 < 1 7 0 8 >. 역으로 v = 1의 경우 t[1]이 먼저 처리되고 < 1 7 0 9 > 다음으로 T[0] 이 먼저 처리된다 < 1 7 1 0 >.
(9) 어느하나의 경우도 최후의 비트까지 처리된 후의 S[0], S[1]의 승산잉여 즉 S[0] * S[1] mod n을 구한다. < 1 7 1 1 >
(10) 상기의 계산결과는 암호화데이터의 정답으로 되어 있다. < 1 7 1 3 > 항상 도 16B에 있어서 2비트별로 승산잉여처리루틴을 도 17에 나타낸다.
신호가 입력되는 < 1 8 0 0 >,S[j] = S[j]⌒4 mod n의 계산을 실행하지만 다음의 조건에 의해 분기하여 계산이 이루어진다.
즉 입력 t(j)의 2비트가 00이거나 01 이거나 10이거나 11에 따라서 각각 A[0], A[1], A[2], A[3]과 S[j](j = 0 or 1)과의 승산잉여연산, S[j] = S1 * A[j] mod n(단, j= 0, 1, 2, 3)이 실행된다. 그리고 상기의 계산결과 S(j)가 출력된다. 상기의 처리에 의해 소비전류파형의 순허의 예측이 불가능하기 때문에 전류에서 x의 비트열을 추정하는 것이 곤란해진다.
분리후의 지수의 처리순서를 교란하는 다른 방법을 도 18에 나타낸다. 상기의 방법은 도 16A 및 도 16B의 예와는 별도의 예이다.
도 18의 처리는 다음과 같이 이루어진다.
(1) 계산이 개시되면 < 1 9 0 0 > 2비트처리를 위한 테이블작성이 된다. < 1 9 0 1 >
(2) 계산결과가 초기화된다. < 1 9 0 2 >
상기까지의 스텝은 이미 설명한 처리이다.
(3) 지수 x를 분할하기 위한 x이하의 난수(R)를 발생하고 < 1 9 0 3 > 으로 한다. 여기에서 난수(R)는 의사난수이어도 좋다.
(4) 지수 x를 t[0] = R, t[1] = x - R로 분리한다. < 1 9 0 4 >. 또한 상기의 부분은 이미 나타난 바와 같이 R을 난수로 할 경우에 지수 x를 t[0] = x And R, t[1] = x And ~R과 같이 분해하는 것에 의해서도 실행하는 것이 가능한 것 을 말할 필요도 없다.
(5) x 전체의 처리가 종료했는지의 여부를 판정한다. < 1 9 0 5 >
(6) 만약에 종료하고 있지 않으면 또한 t[0]의 처리가 종료했는지, t[1]의 처리가 종료했는지를 판정한다. 한편 t[0]의 처리가 종료하였으면 t[1]의 처리를 실행하고 t[1]의 처리가 종료하였으면 t[0]의 처리를 실행하고 어느쪽도 종료하고 있지 않으면 랜덤분기처리로 진행한다. < 1 9 0 6 >
(7) 분기용의 난수v( = 0 또는 1)을 발생하고 < 1 9 0 7 >, 상기 값이 0인지 1을 판정한다< 1 9 0 8 >.
(8) 만약에 0이라면 t[0]을 처리하고 < 1 9 0 9 > 1이면 t[1]을 처리한다. < 1 9 1 0 >
(9) 어느쪽의 경우도 최후의 비트가지 처리된 후의 S[0], S[1]의 승산잉여 즉 S[0] * S[1] mod n을 구한다. < 1 9 1 1 >
(10) 상기의 계산결과는 암호화데이터의 정답으로 되어 있다. < 1 9 1 2 >
앞서 나타낸 순서의 랜덤화에 있어서는 t[0]의 처리와 t[1]의 처리는 v의 값에 의하지 않고 근접하고 있지만 본 실시예에 있어서는 그와 같은 제한은 없다는 점이 큰 차이이다.
항상 도 18에 있어서 2비트별의 승산잉여처리루틴은 앞과 동일하게 도 17과 동일하다.
상기의 처리에 의해서 소비전류파형 순서의 예측이 가능하지 않기 때문에 전류에서 x의 비트열을 추정하는 것이 곤란해진다.
이어서 타원곡선상의 점(P)의 스크랄라배(kP)에 대해서 상기 기술한 누승잉여연산의 처리의 유사를 고찰한다. 도 19에 도 18의 알고리즘의유사를 나타낸다. 그러나 본 예는 도 16에서 도시한 실시예의유사를 구성하는 것도 전체와 동일하게 실행하는 것이 가능한 것은 물론이다.
도 19의 처리에 있어서는 (1) 2비트처리를 위한 테이블작성 < 2 0 0 1 > (2) 초기화 < 2 0 0 2 >까지는 이미 설명한 처리이다. (3) 지수 x를 분할하기 위하여 k이하의 난수(R)를 발생한다. 상기에서 R은 의사난수이어도 좋다. < 2 0 0 3 >
(4) 스칼라(k)를 t[0] = R, t[1] = k - R로 분리한다 < 2 0 0 4 >. 항상 상기 부분은 이미 나타낸 바와 같이 R을 난수로 할 경우에 스칼라(k)를 t[0] = k And R, t[1] = k And ⌒R과 같이 분해하는 것에 의해서도 실행하는 것이 가능한 것은 물론이다. 상기에서 ~R은 R의 반전치이다.
(5) k 전체의 처리가 종료했는지의 여부를 판정한다. < 2 0 0 5 >
(6) 현재 혹시 k 전체의 처리가 종료하고 있지 않으면 또한 t[0]의 처리가 종료했는지 t[1]의처리가 종료했는지를 판정한다. < 2 0 0 6 > (7)t[0]의 처리가 종료하고 있으면 t[1]의 처리를 실행한다. 한편 t[1]의 처리가 종료하고 있으면 t[0]의 처리를 실행하고 어느쪽도 종료하고 있지 않으면 랜덤분기처리로 진행한다. < 2 0 0 6 >
(8) 분기용의 난수v (= 0 또는 1)을 발생하고 < 2 0 0 7 > (9) 상기 값이 0이거나 1을 판정한다 < 2 0 0 8 >
(10) 만약에 난수v의 값이 0이면 t[0]을 처리하고 < 2 0 0 9 > 난수 v의 값 이 1이면 t[1]을 처리한다 < 2 0 0 1 >
(11) 어느쪽의 경우도 최후의 비트까지 처리된 후의 S[0], S[1]의 승산잉여를 구한다. < 2 0 1 1 >
(12) 상기의 계산결과는 암호화데이터의 정답으로 되어 있다. < 2 0 1 2 > 도 19에 도시된 2비트별의 스칼라배 처리루틴을 도 20에 나타낸다.
즉 입력t[j]의 2비트가 00이거나 01 이거나 10이거나 11에 따라서 각각 P[0], P[1], P[2], P[3]과 S[j](j = 0 or 1)과의 타원곡선상의 가산법이 실행된다. 그리고 상기의 상기의 계산결과 S(j)가 출력된다.
상기의 처리에 의해 소비전류파형의 순허의 예측이 불가능하기 때문에 전류에서 x의 비트열을 추정하는 것이 곤란해진다.
이상으로 나타낸 바와 같이 본 발명의 한 실시예의 기술적사항의 본질은 지수와 스칼라의 비트열의 처리를 분할하는 것에 의해 비트열순서를 교체하는 것이 가능하고 결과적으로 전류관측을 실행한 경우에 비트열이 랜덤으로 있도록 보이는 것이다.
처리순서의 교체방법은 상기에 기술한 방법외에도 있다. 예를들면 실시예서는 지수와 스칼라를 2개로만 분리하고 있지 않지만 상기를 3종류 4종류등으로 분리하는 것과 난수로서 유사주기열(quasi-periodic sequence)과 무열(chaotic sequence)을 이용 하는 것도 가능하다. 또한, 여기까지 몇회인가 기술해온 의사난수는 커다란 주기를 가지고 주기열로 보는 것이 가능한 경우가 많지만 주기가 짧은 것도 이용하는 것이 가능하다.
이상에서 본 바와 같이 누승잉여연산 타원곡선상의 가산에 대한 본 발명의 사상은 추상 레벨에서는 전체가 동일한 것으로서 상기를 실제의 인프리먼트를 넘어서 추상화하는 것은 자연스러운 것이다.
여기까지 기술해 온 법n에 있어서 누승잉여연산과 타원곡선상의 가산에 있어서 실시예에 있어서 누적 또는 총합의 연산을 ○으로 쓰면 전체가 동일한 플로챠트가 구성가능하다. 상기들은 상기의 누승잉여연산 및 타원곡선상의 점의 스칼라배를 포함하고 또한 동일한 대수구조를 갖는 처리에 대해서도 유효하다.
이상 상세하게 설명한 바와 같이 본 발명의 실시예에 의하면 IC카드칩에 있어서 데이터를 분할하여 처리하고 최후로 분할처리된 결과를 통합하여 바른 결과를 구하거나 결과에 영향을 주는 키의 변형을 실행하는 것에 의해 소비전류의 파형 에서 처리와 암호키의 추측을 실행하는 것이 곤란해진다.
본 발명의 실시예는 고세큐리티를 갖는 IC카드등의 내템퍼정보처리장치를 제공하는 것이 가능하다.

Claims (9)

  1. 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 프로그램에 따라서 소정의 데이터 처리를 실행하는 연산부와 신호를 출력하는 수단을 최소한 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 신호 B를 가지고 실행하는 A ○B(단 ○는 필요의 연산을 나타낸다. 이하 동일)의 계산을,
    (1) A를 A = A[1] + A[2] + .... + A[n](단, n은 정수)을 만족하는 A[1], A[2], ...., A[n]으로 임의로 분할하고 상기 A[1], A[2],... A[n]과 상기 신호 B를 이용하여 B[1] = A[1] ○B, B[2] = A[2] ○B, ...., B[n] = A[n] ○B를 각각 개별로 계산 한 후 상기의 각 개별계산의 총연산 B[1] + B[2] + ... + B[n](단 n은 1이상의 정수)으로하여 계산결과를 구하는 스텝.
    (2) B를 B = B[1] + B[2] + .... + B[n](단, n은 정수)을 만족하는 B[1], B[2], ...., B[n]으로 임의로 분할하고 상기 신호 A와 상기 B[1], B[2],... B[n]을 이용하여 A[1] = A ○B[1], A[2] = A ○B[2], ...., A[n] = A ○B[n]을 각각 개별로 계산 한 후 상기의 각 개별계산의 총연산 A[1] + A[2] + ... + A[n](단 n은 1이상의 정수)으로하여 계산결과를 구하는 스텝 또는,
    (3) 신호 A를 A = A[1] + A[2] + .... + A[n]을 만족하는 A[1], A[2], ...., A[m]으로 임의로 분할하고 신호 B를 B = B[1] + B[2] + .... + B[n]을 만족하는 B[1], B[2],... B[n](단 n은 정수)으로 임의로 분할하고 A[1], A[2], ...., A[m]과 B[1], B[2],... B[n]을 이용하여 ∑A[i] ○B[j](단 i = 1 ....m, j = 1.... n)계산결과를 구하는 스텝
    의 가운데 적어도 하나를 구비하는 것을 특징으로 하는 정보처리장치.
  2. 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 소정의 계산결과를 격납하는 격납수단과 프로그램에 따라서 소정의 데이터 처리를 실행하는 연산부와 신호를 출력하는 수단을 최소한 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 신호 k를 가지고 실행하는 A ^k(단 상기에서 A ^ k = A ○A ...○A(k개)로 하고 ○은 연산을 나타낸다. 이하 동일)를 계산할 때 k를 k = k[1] + k[2] + k[3] +.... + k[n]을 만족하는 k[1], k[2],k[3] ...., k[n](단, n은 정수)으로 임의로 분할하고 상기 신호 A와 상기 k[1], k[2], k[3],... k[n]을 이용하여 h[1] = A^k[1], h[2] = A^k[2] = A^k[2], ..., h[n] = A^k[n]을 각각 개별로 계산 한 후 상기의 각 개별계산결과를 이용한 것의 연산 A^k = h[1] ○h[2] ○.....○h[n](단 n은 1이상의 정수)으로하여 계산결과를 구하는 스텝을 구비하는 것을 특징으로 하는 정보처리장치.
  3. 신호를 입력하는 수단과 프로그램을 격납하는 격납부와 소정의 계산결과를 격납하는 격납수단과 프로그램에 따라서 소정의 데이터 처리를 실행하는 연산부와 신호를 출력하는 수단을 최소한 구비하고 상기 격납부에 격납된 프로그램은 연산부에 실행의 지시를 전하는 하나이상의 데이터처리명령을 갖고 상기 데이터를 입력하는 수단에서 입력된 신호를 데이터처리할 때 상기 데이터처리명령의 적어도 하나가 신호 A와 신호 x를 가지고 실행하는 A^x(단 상기에서 A^x = A ○A ...○A(k개)로 하고 ○은 연산을 나타낸다.) 를 계산할 때 연산 A^k 대신으로 A^T = e(상기에서 e는 단위원소이다.)를 만족하는 T를 이용하여 A^(x + T)를 계산하는 스텝을 구비하는 것을 특징으로 하는 정보처리장치.
  4. 정보를 전달하는 송신측의 평문 및 당해 정보의 수신측에 있어서 키정보를 각각 당해 정보처리방법에서 채용되는 반군(S')에 있어서의 원 A 및 k로 이루고 상기의 A 와 k의 A^k(단, 상기에서 A^k = A△A△...△A(k개)로 하고 △은 반군(S')에 있어서의 연산이다)를 계산할 때 k를 k = k[1] + k[2] + k[3] +.... + k[n]을 만족하는 k[1], k[2],k[3] ...., k[n](단, n은 정수)으로 임의로 분할하고, 상기 평문A와 상기 k[1], k[2], k[3],... k[n]을 이용하여 h[1] = A^k[1], h[2] = A^k[2] , ...., h[n] = A^k[n]을 각각 개별로 계산 한 후 A^k = h[1] △h[2] △.....△h[n](단 △은 반군(S')에 있어서의 연산이고 n은 1이상의 정수이다)으로하여 A^k를 구하는 스텝을 구비하는 것을 특징으로 하는 정보처리방법.
  5. 청구항 4에 있어서,
    상기 S'가 법N(정의정수)에 관한 잉여류로 이루는 가환성(반군이기도 함)이며, 총연산 +가 법N에 있어서의 합이고, 상기 연산△가 법N에 의한 승산잉여연산, 가산잉여연산 중 어느 하나인 것을 특징으로 하는 정보처리방법.
  6. 청구항 4에 있어서,
    상기 S'가 표수(p)(소수)의 유한체(Fq)(단, q = p^n)상의 타원곡선(E)에 대한 모델 웰군(G(E/Fq))이고,
    상기 연산 △가 G(E/Fq)에 있어서의 가산법인 것을 특징으로 하는 정보처리방법.
  7. 정보전달하는 송신측의 평문 및 당해정보의 수신측에 있어서의 키정보를 각각 당해 정보처리방법에서 채용되는 모노이드(S")(단위원소e를 갖는 반군)에 있어서의 원소 A 및 x로 이루고 상기 A와 x와의 A^x(단 상기에서 ^x = A◇A◇....◇A(x개)로 하고 ◇는 모노이드(S")에 있어서의 연산이다)를 계산 할 때 연산 A^k 대신으로 A^T = e를 만족하는 T를 이용하여 A^(x + T)를 계산하는 스텝을 구비하는 것을 특징으로 하는 정보처리방법.
  8. 청구항 7에 있어서,
    상기 S"는 법N(정의 정수)에 관한 잉여류로 이루는 가환성(반군이기도 함)이며 총연산 +이 법N에 있어서의 합이고, 상기 연산 ◇가 법N에 의한 승산잉여연산, 가산잉여연산 중 어느 하나인 것을 특징으로 하는 정보처리방법.
  9. 청구항 7에 있어서,
    상기 S"가 표수(p)(소수)의 유한체(Fq)(단, q = p^n)상의 타원곡선(E)에 대한 모델 웰군(G(E/Fq))이고,
    상기 연산◇가 G(E/Fq)에 있어서의 가산법인 것을 특징으로 하는 정보처리방법.
KR1020010012144A 2000-03-16 2001-03-09 정보처리장치 정보처리방법 및 카드부재 KR100805286B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2000-79305 2000-03-16
JP2000079305A JP3926532B2 (ja) 2000-03-16 2000-03-16 情報処理装置、情報処理方法、及びカード部材

Publications (2)

Publication Number Publication Date
KR20010091939A KR20010091939A (ko) 2001-10-23
KR100805286B1 true KR100805286B1 (ko) 2008-02-20

Family

ID=18596571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010012144A KR100805286B1 (ko) 2000-03-16 2001-03-09 정보처리장치 정보처리방법 및 카드부재

Country Status (7)

Country Link
US (1) US6666381B1 (ko)
EP (1) EP1134653B1 (ko)
JP (1) JP3926532B2 (ko)
KR (1) KR100805286B1 (ko)
AU (1) AU782868B2 (ko)
DE (1) DE60136988D1 (ko)
TW (1) TW569103B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3926532B2 (ja) * 2000-03-16 2007-06-06 株式会社日立製作所 情報処理装置、情報処理方法、及びカード部材
JP3950638B2 (ja) * 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
US7136484B1 (en) * 2001-10-01 2006-11-14 Silicon Image, Inc. Cryptosystems using commuting pairs in a monoid
JP4034585B2 (ja) * 2002-01-28 2008-01-16 松下電器産業株式会社 楕円曲線演算装置及び楕円曲線演算方法
FR2844896A1 (fr) * 2002-09-19 2004-03-26 St Microelectronics Sa Alimentation d'un circuit de traitement asynchrone de donnees
KR100720726B1 (ko) * 2003-10-09 2007-05-22 삼성전자주식회사 Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법
WO2005114802A2 (en) * 2004-05-11 2005-12-01 North Dakota State University Optimal signed-digit recoding for elliptic curve cryptography
JP4555859B2 (ja) * 2005-07-13 2010-10-06 日本電信電話株式会社 認証システム、認証方法、証明装置、検証装置、それらのプログラム及び記録媒体
CN101243389A (zh) * 2005-08-19 2008-08-13 Nxp股份有限公司 用于rsa密钥产生的电路装置和方法
WO2007020566A1 (en) * 2005-08-19 2007-02-22 Nxp B.V. Circuit arrangement for and method of performing an inversion operation in a cryptographic calculation
EP1775880A1 (en) * 2005-10-11 2007-04-18 STMicroelectronics S.r.l. Method of processing information to be confidentially transmitted
US8229109B2 (en) * 2006-06-27 2012-07-24 Intel Corporation Modular reduction using folding
US7925011B2 (en) * 2006-12-14 2011-04-12 Intel Corporation Method for simultaneous modular exponentiations
EP2119101B1 (en) * 2007-03-06 2011-10-05 Research In Motion Limited Elliptical scalar multiplication method for countering power-analysis attacks
US8160245B2 (en) * 2007-03-07 2012-04-17 Research In Motion Limited Methods and apparatus for performing an elliptic curve scalar multiplication operation using splitting
US8042025B2 (en) * 2007-12-18 2011-10-18 Intel Corporation Determining a message residue
FR2956932B1 (fr) * 2010-03-01 2012-08-17 Inside Contactless Procede de test de la resistance d'un circuit integre a une analyse par canal auxiliaire
US8457919B2 (en) 2010-03-31 2013-06-04 Inside Secure Process for testing the resistance of an integrated circuit to a side channel analysis
EP2365659B1 (fr) 2010-03-01 2017-04-12 Inside Secure Procédé de test de la résistance d'un circuit intégré à une analyse par canal auxiliaire
US10148285B1 (en) 2012-07-25 2018-12-04 Erich Schmitt Abstraction and de-abstraction of a digital data stream
US10795858B1 (en) 2014-02-18 2020-10-06 Erich Schmitt Universal abstraction and de-abstraction of a digital data stream
WO2017163434A1 (ja) * 2016-03-25 2017-09-28 中国電力株式会社 情報処理方法及び情報処理システム
FR3069671A1 (fr) 2017-07-25 2019-02-01 Stmicroelectronics (Rousset) Sas Protection d'un calcul iteratif contre des attaques horizontales
EP3579493A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
EP3579492A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
FR3094522B1 (fr) 2019-03-29 2021-11-19 St Microelectronics Rousset Protection d’un calcul itératif

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08315099A (ja) * 1995-05-17 1996-11-29 Toppan Printing Co Ltd 情報記録媒体
WO1999035782A1 (en) * 1998-01-02 1999-07-15 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
JPH11296075A (ja) * 1998-03-14 1999-10-29 Koninkl Philips Electronics Nv メッセ―ジ符号化方法及び暗号解析装置
JP2000036015A (ja) * 1998-07-17 2000-02-02 Toshiba Corp Icカード処理装置とicカードとicカード処理システムとicカード処理方法
EP1134653A2 (en) * 2000-03-16 2001-09-19 Hitachi, Ltd. Information processing device, information processing method and smartcard

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6089460A (en) * 1996-09-13 2000-07-18 Nippon Steel Corporation Semiconductor device with security protection function, ciphering and deciphering method thereof, and storage medium for storing software therefor
JPH11338982A (ja) * 1998-05-25 1999-12-10 Mitsubishi Electric Corp Icメモリカードシステム装置及びそのicメモリカード
CA2259089C (en) * 1999-01-15 2013-03-12 Robert J. Lambert Method and apparatus for masking cryptographic operations
FR2789535B1 (fr) * 1999-02-04 2001-09-28 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique
FR2800478B1 (fr) * 1999-10-28 2001-11-30 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08315099A (ja) * 1995-05-17 1996-11-29 Toppan Printing Co Ltd 情報記録媒体
WO1999035782A1 (en) * 1998-01-02 1999-07-15 Cryptography Research, Inc. Leak-resistant cryptographic method and apparatus
JPH11296075A (ja) * 1998-03-14 1999-10-29 Koninkl Philips Electronics Nv メッセ―ジ符号化方法及び暗号解析装置
JP2000036015A (ja) * 1998-07-17 2000-02-02 Toshiba Corp Icカード処理装置とicカードとicカード処理システムとicカード処理方法
EP1134653A2 (en) * 2000-03-16 2001-09-19 Hitachi, Ltd. Information processing device, information processing method and smartcard

Also Published As

Publication number Publication date
EP1134653A2 (en) 2001-09-19
EP1134653A3 (en) 2006-07-19
US6666381B1 (en) 2003-12-23
EP1134653B1 (en) 2008-12-17
JP2001268072A (ja) 2001-09-28
AU782868B2 (en) 2005-09-01
TW569103B (en) 2004-01-01
KR20010091939A (ko) 2001-10-23
JP3926532B2 (ja) 2007-06-06
AU2801901A (en) 2001-09-20
DE60136988D1 (de) 2009-01-29

Similar Documents

Publication Publication Date Title
KR100805286B1 (ko) 정보처리장치 정보처리방법 및 카드부재
EP1217783B9 (en) Device, program or system for processing secret information
EP1248409B1 (en) Attack-resistant cryptographic method and apparatus
CN102638341B (zh) 用于计算标量乘法的结果的设备和方法
CN107040362B (zh) 模乘设备和方法
US6968354B2 (en) Tamper-resistant modular multiplication method
EP1011081B1 (en) Information processing equipment
KR20170098732A (ko) 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
EP1239365B1 (en) Tamper-resistant processing method
EP2211265B1 (en) Elliptic curve arithmetic processing unit and elliptic curve arithmetic processing program and method
WO2009091746A1 (en) Representation change of a point on an elliptic curve
Tunstall Smart card security
CN101925875A (zh) 用于非对称加密的对策方法和设备
US20090016523A1 (en) Masking and Additive Decomposition Techniques for Cryptographic Field Operations
KR20190020632A (ko) 부 채널 분석에 대한 회로의 저항성을 테스트하는 방법
US20020124179A1 (en) Fault detection method
US20090122980A1 (en) Cryptographic Method for Securely Implementing an Exponentiation, and an Associated Component
US7123717B1 (en) Countermeasure method in an electronic component which uses an RSA-type public key cryptographic algorithm
US20040247114A1 (en) Universal calculation method applied to points on an elliptical curve
MXPA02006801A (es) Algoritmo de exponenciacion modular en un componente electronico utilizando un algoritmo de codificacion de clave publica.
AU2005203004B2 (en) Information processing device, information processing method and smartcard
EP4372548A1 (en) Protecting cryptographic operations againt horizontal side-channel analysis attacks
Feix et al. Recovering CRT-RSA secret keys from message reduced values with side-channel analysis
Bevan Improved zero value attack on XTR
Ling Smart card fault attacks on public key and elliptic curve cryptography

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: 5

FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee