[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR20060126705A - 소수산출장치, 방법 및 키 발행시스템 - Google Patents

소수산출장치, 방법 및 키 발행시스템 Download PDF

Info

Publication number
KR20060126705A
KR20060126705A KR1020067013868A KR20067013868A KR20060126705A KR 20060126705 A KR20060126705 A KR 20060126705A KR 1020067013868 A KR1020067013868 A KR 1020067013868A KR 20067013868 A KR20067013868 A KR 20067013868A KR 20060126705 A KR20060126705 A KR 20060126705A
Authority
KR
South Korea
Prior art keywords
prime
information
key
unit
candidate
Prior art date
Application number
KR1020067013868A
Other languages
English (en)
Inventor
유이치 후타
모토지 오모리
Original Assignee
마츠시타 덴끼 산교 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마츠시타 덴끼 산교 가부시키가이샤 filed Critical 마츠시타 덴끼 산교 가부시키가이샤
Publication of KR20060126705A publication Critical patent/KR20060126705A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • 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
    • 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
    • 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/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3033Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
    • 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/7204Prime number generation or prime number testing
    • 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

Landscapes

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

Abstract

소수를 산출할 때에 간단한 관리에 의해 중복을 피하면서 소수를 산출하는 소수산출장치를 제공한다. 소수산출장치는 기지의 소수 q와 소수의 이용범위에서의 고유한 관리정보를 기억하고 있다. 소수산출장치는, 관리정보를 판독하고, 판독한 관리정보에 의존하는 교란정보 R을 생성하고, 소수 q를 판독하며, 판독한 소수 q와 생성한 교란정보 R을 이용하여 수 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하고, 산출된 소수 후보 N이 소수인가의 여부를 판정하며, 소수라고 판정된 경우에, 산출된 소수 후보 N을 소수로 출력한다. 이에 의해, 소수산출장치는 고유한 관리정보에서 중복을 피하면서 소수 후보를 산출할 수 있게 된다.
소수산출, 관리정보, 교란정보, 소수 후보

Description

소수산출장치, 방법 및 키 발행시스템{PRIME CALCULATION DEVICE, METHOD, AND KEY ISSUING SYSTEM}
본 발명은 소인수 분해의 어려움을 안전성의 근거로 하여 정보의 보안을 유지하는 기술에 관한 것이다.
최근, 컴퓨터 기술 및 통신기술에 의한 데이터통신이 널리 보급되고 있으며, 이 데이터통신에서는 비밀통신방식이나 디지털 서명방식이 이용된다. 여기서, 비밀통신방식은 특정한 통신상대 이외에 통신내용을 누설하지 않고 통신을 행하는 방식이다. 또, 디지털 서명방식이란 통신상대에게 통신내용의 정당성을 나타내거나 발신자의 신분을 증명하거나 하는 통신방식이다.
1. 공개키 암호방식
이들 비밀통신방식 또는 디지털 서명방식에서는 공개키 암호방식이라고 불리는 암호방식이 이용된다. 공개키 암호방식을 이용하는 비밀통신에서는 암호화 키와 복호화 키가 다르며, 복호화 키는 비밀로 하지만 암호화 키는 공개한다. 비밀로 하는 복호화 키를 비밀키라고 하고, 공개하는 암호화 키를 공개키라고 한다. 통신상대가 다수인 경우, 공통키 암호에서는 통신상대 사이에서 키를 가질 필요가 있으나, 공개키 암호에서는 통신상대가 하나의 고유한 키를 갖는 것만으로도 통신이 가 능해지므로, 통신상대가 증가해도 공통키 암호보다 키의 수가 적어도 된다. 이와 같이, 공개키 암호는 다수의 통신상대와 통신을 행하는데 적합하며, 없어서는 안 되는 기반기술이다.
공개키 암호방식의 한 종류인 RSA 암호방식에서는 정수의 소인수 분해 문제를 푸는 것이 계산량의 면에서 어렵다는 점을 안전성의 근거로 하고 있다. 소인수 분해 문제란, p, q를 소수로 하고, 정수 n = p × q로 했을 때, 정수 n에 대하여 소수 p, q를 구하는 문제이다. 여기서, ×는 통상의 곱셈이다. 일반적으로 p, q가 1024비트의 수와 같이 큰 경우는, 소인수 분해 문제가 곤란하다. 그로 인해, RSA 암호방식의 공개키에서 비밀키를 구하거나 비밀키를 갖지 않는 사용자가 암호문에서 평문을 구하기가 어려워진다. 또, 소인수 분해 문제에 대해서는 비 특허문헌 1의 144 ~ 151페이지에 상세하게 설명되어 있다.
(소인수 분해 문제를 응용하는 RSA 암호방식)
여기서, 소인수 분해 문제를 응용하는 RSA 암호방식에 대하여 설명한다.
(1) 키의 생성
다음에 설명하는 바와 같이 하여 공개키 및 비밀키를 계산한다.
· 임의로 큰 소수 p, q를 선택하고, 그 곱 n = p × q를 계산한다.
· (p-1) 및 (q-1)의 최소공배수 L=LCM(p-1, q-1)을 계산하다.
· L과 서로 소(co-prime)로서 L보다 작은 자연수 e를 임의로 선택한다.
1≤e≤L-1, GCD(e, L)=1
여기서, GCD(e, L)은 e와 L의 최대공약수를 나타내고 있다.
· e×d=1 mod L을 만족하는 d를 계산한다. GCD(e, L)=1에서 이와 같은 d는 반드시 존재한다. 이와 같이 해서 얻어진 정수 e 및 정수 n이 공개키이다. 또, 정수 d가 비밀키이다. 여기서, x mod y는, x를 y로 나눈 나머지를 나타낸다.
(2) 암호문의 생성
공개키인 정수 e 및 정수 n을 이용하여 평문 m에 암호연산을 시행하여 암호문 c를 계산한다.
c=m^e mod n
또, 이 명세서에서 연산자 ^은 거듭제곱(exponent)을 나타낸다. 예를 들어, A^x는, x>0 일 때는 A를 x회 곱한 것을 나타낸다.
(3) 복호문의 생성
비밀키인 정수 d를 이용하여 암호문 c에 복호연산을 시행하여 복호문 m'을 계산한다.
m'=c^d mod n
또,
m'=c^d mod n
=(m^e)^d mod n
=m^(e×d mod L) mod n
=m^1 mod N
=m mod n
이므로 복호문 m'은 평문 m과 일치한다.
또, RSA 암호에 대해서는 비 특허문헌 2의 110 ~ 113페이지에 상세하게 설명되어 있다.
상기에서 설명한 소인수 분해를 응용한 RSA 암호에서의 공개키의 생성스텝에서 소수 생성이 행해진다. 소수 생성에 대해서는 비 특허문헌 3의 145 ~ 154페이지에 상세하게 설명되어 있다. 소수 생성방법에는 확률적 소수 생성방법과 확정적 소수 생성방법이 있다. 확률적 소수 생성방법에 의해 생성되는 소수는, 「소수일 확률이 높은」 수이며, 100% 소수라고는 할 수 없다. 한편, 확정적 소수 생성방법은 확실하게 소수인 수를 생성한다. 확률적 소수 생성방법 및 확정적 소수 생성방법에 대해서는 비 특허문헌 2에 상세하게 설명되어 있다. 이하에서는, 확정적 소수 생성방법에 대하여 설명한다.
2. 종래 예 1 - 확정적 소수 생성방법
확정적으로 소수를 생성할 수 있는 Maurer법에 의한 확정적 소수 생성방법에 대하여 설명한다. 여기서, Maurer법에 대해서는 비 특허문헌 3의 152 ~ 153페이지에 상세하게 설명되어 있다.
상기 확정적 소수 생성방법에서는 다음에 설명하는 스텝을 반복함으로써 소수를 생성한다. 미리 비트사이즈 lenq의 소수 q가 주어져 있다.
(스텝 1) (lenq-1) 비트의 난수 R을 선택한다. 또, 난수 R의 선두 비트는 반드시 1이 되도록 한다.
(스텝 2) 수 N을 이하의 식에 의해 계산한다.
N=2×q×R+1
(스텝 3) 수 N이 소수인가 여부는 다음의 제 1 판정 및 제 2 판정이 함께 성립하는 경우에 소수로 판정한다. 다른 경우에는 소수가 아니라고 판정한다.
(제 1 판정) 2^(N-1) = 1 mod N
(제 2 판정) GCD(2^(2R)-1, N) = 1
소수라고 판정된 경우에는, 수 N을 소수로 출력한다. 소수가 아니라고 판정된 경우에는, 스텝 1에 복귀하여 소수가 출력될 때까지 처리를 반복한다.
스텝 3에서 설명하고 있는 판정방법은 Pocklington의 소수 판정법이라고 불리며, 비 특허문헌 3의 144페이지에 상세하게 설명되어 있다. Pocklington의 소수 판정법에서는, N=2×q×R+1의 q가 소수이고, 제 1 판정 및 제 2 판정의 결과가 참이면, 반드시 N이 소수가 된다. 따라서, 확정적으로 소수라고 판정할 수 있어서 확정적인 소수 생성이 가능해진다.
이와 같이 하여, Maurer법에 의한 확정적 소수 생성방법에서는, 사이즈 lenq의 소수 q를 기초로 하여 사이즈 2×lenq의 소수 N을 생성한다. 따라서, Maurer법에 의한 확정적 소수 생성방법을 이용하여 소정 길이의 소수를 생성하는 경우에는, 상기 소정 길이 이하의 소수의 생성을 반복해서 행한다. 예를 들어, 512비트 길이의 소수를 생성하는 경우에는, 미리 인가된 8비트의 소수를 기초로 하여 16비트의 소수를 생성한다. 이어서, 생성한 16비트의 소수를 기초로 하여 32비트의 소수를 생성한다. 이어서, 생성한 32비트의 소수를 기초로 하여 64비트의 소수를 생성한다. 이하, 동일한 소수 생성을 반복하여 512비트의 소수를 생성한다.
또, 상기 제 2 판정을 다음의 판정으로 대치해도 된다.
(제 3 판정) 2^(2R)≠1 mod N
상기 제 3 판정방법은 비 특허문헌 4에 상세하게 설명되어 있다. 이후, 이 판정방법을 사용한다.
3. 복수의 키 발행 서버를 갖는 키 발행시스템
공개키 암호의 키 발행시스템에서는 사용자가 키를 생성하는 경우나 키 발행 서버에 의해 사용자에게 키를 발행하는 경우가 있다. 키 발행 서버에 의해 키를 발행하는 경우, 사용자에게 키를 발행하는 서버는 한 대인 경우가 많다. 그러나 처리의 부하를 경감하기 위해서 키 발행시스템은 복수 대의 키 관리 서버를 구비하고, 복수 대의 키 관리 서버 각각이 키를 발행할 때도 있다.
특허문헌 1 : 일본국 특개 2003-5644호 공보
비 특허문헌 1 : 오카모토 다츠아키, 오타 가즈오 공동편찬, 「암호· 제로지식문제·수론」, 공립출판, 1990
비 특허문헌 2 : 오카모토 다츠아키, 야마모토 히로시, "현대암호" 산업도서(1997년)
비 특허문헌 3: A.J. Menezes, P.C.van Oorschot, S.A. Vanstone, "Handbook of applied cryptography", CRC Pres s, 1997
비 특허문헌 4 : 오카모토 에이지, 「암호이론입문」, 공립출판, 1993, 21페이지
특허문헌 5 : Henri Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer-Verlag, 1993
복수 대의 키 발행 서버를 이용한 키 발행시스템에서는 제 1 키 발행 서버와 제 2 키 발행 서버에서 각각 발행한 RSA 키를 서로 체크하지 않는다. 왜냐하면, 발행한 RSA 키를 다른 키 발행 서버에 공개하면, 보안상에 문제가 있기 때문이다. 따라서, 우연히 제 1 및 제 2 키 발행 서버가 제 1 사용자 및 제 2 사용자를 위하여 동일한 공개키와 동일한 비밀키를 생성하는 일이 발생할 수 있다.
따라서, 암호방식을 이용할 때에 보안이 확보되지 않는다고 하는 문제가 있다.
예를 들어, 제 3 사용자가 제 1 사용자를 위한 상기 공개키를 이용하여 제 1 사용자에 대하여 암호문을 생성하여 송부하면, 제 1 사용자는 당연히 자신의 비밀키를 이용하여 암호문을 복호 할 수 있지만, 제 2 사용자도 자신의 비밀키를 이용하여 상기 암호문을 복호 할 수 있게 되어 버린다.
이와 같은 문제를 해결하기 위해서는, RSA의 공개키는 2개의 다른 소수의 곱에 의해 연산 되므로, 공개키의 생성에 이용되는 각 소수가 제 1 키 발행 서버와 제 2 키 발행 서버에서 다르게 해두면 된다.
이에 본 발명은, 소수의 산출을 행할 때에 간단한 관리에 의해 중복을 피하면서 소수를 산출하는 소수산출장치, 키 발행시스템, 소수산출방법 및 소수산출 프로그램을 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여, 본 발명은, 기지의 소수(known prime) q보다 큰 소수 후보 N을 산출하여 소수 판정을 하는 소수산출장치로, 기지의 소수 q를 기억하고 있는 소수기억수단과, 소수의 이용범위에서의 고유의 관리정보(unique management information)를 기억하고 있는 관리정보 기억수단과, 상기 관리정보 기억수단에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보(random information) R을 생성하는 교란정보 생성수단과, 상기 소수기억수단에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보산출수단과, 산출된 소수 후보 N이 소수인가 여부를 판정하는 소수 판정수단과, 소수라고 판정된 경우에, 산출된 소수 후보 N을 소수로 출력하는 출력수단을 구비하는 것을 특징으로 한다.
상기에서 설명한 구성에 의하면, 소수산출장치는, 고유한 관리정보에 의존하여 생성된 교란정보 R을 이용하여 소수 후보 N을 산출하므로, 중복을 피하면서 소수 후보를 산출할 수 있다. 소수의 이용범위란 소인수 분해의 어려움을 안전성의 근거로 소수를 이용하는 범위이다.
여기서, 상기 교란정보 생성수단은, 상기 관리정보 기억수단에서 상기 관리정보를 판독하는 판독부와, 난수 r을 산출하는 난수 산출부와, 판독한 상기 관리정보와 생성한 난수 r을 결합하는 결합부와, 상기 관리정보와 난수 r의 결합체에 의거하여 교란정보 R을 산출하는 연산부를 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 관리정보와 난수 r의 결합체에 의거하여 교란정보 R을 생성하므로, 관리정보에 의한 고유성과 난수 r에 의한 무작위성(randomness)을 함께 구비한 교란정보를 생성할 수 있다.
여기서, 상기 연산부는 상기 결합체에 단사 함수(injection function)를 시행하여 교란정보 R을 생성하여도 된다.
이 구성에 의하면, 소수산출장치는, 결합체에 단사 함수를 시행하여 교란정보 R을 생성하므로, 단사 함수의 성질에 의해 결합체가 갖는 고유성을 유지하고, 또한, 결합체에서 변환됨에 따른 무작위성을 구비한 교란정보를 생성할 수 있다.
여기서, 상기 단사 함수는 배타적 논리합(exclusive OR)이고, 상기 연산부는 소정의 키 정보(predetermined key information)를 미리 기억하고 있으며, 상기 키 정보와 상기 결합체에 배타적 논리합을 시행하여 교란정보 R을 생성하여도 된다.
이 구성에 의하면, 소수산출장치는 결합체와 소정의 키 정보에서 배타적 논리합을 시행하여 교란정보 R을 생성할 수 있다.
여기서, 상기 소수산출장치는 소수 q의 2배의 비트 길이를 갖는 소수 후보 N을 산출하고, 상기 난수 산출부는 소수 q의 비트 길이에서 상기 관리정보의 비트 길이 및 1을 빼서 얻어진 비트 길이의 상기 난수 r을 산출하여도 된다.
이 구성에 의하면, 소수산출장치는, 소수 q의 비트 길이에서 관리정보의 비트 길이 및 1을 빼서 얻어지는 비트 길이의 난수 r을 산출하고, 소수 q의 2배의 비트 길이를 갖는 소수 후보 N을 산출할 수 있다.
여기서, 상기 소수 판정수단은, 상기 소수 후보 N에 대하여 2N-1 = 1 mod N을 만족하는가 여부를 판정하는 제 1 판정부와, 상기 제 1 판정부에 의해 만족한다고 판정된 경우에, 소수 후보 N 및 교란정보 R에 대하여 22R ≠ 1 mod N을 만족하는가 여부를 판정하고, 만족한다고 판정한 경우에 소수 후보 N이 소수라고 결정하는 제 2 판정부를 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 제 1 및 제 2 판정부를 이용하여 소수 후보 N이 소수인가 여부를 판단하므로, 제 1 및 제 2 판정부의 쌍방에서 판정결과가 긍정적인 경우에, 소수 후보 N을 소수로 판단할 수 있다.
여기서, 상기 소수 판정수단은, 상기 소수 후보 N에 대하여 2N-1=1 mod N을 만족하는가 여부를 판정하는 제 1 판정부와, 상기 제 1 판정부에 의해 만족한다고 판정된 경우에, 소수 후보 N 및 교란정보 R에 대하여 GCD(22R-1, N) = 1을 만족하는가 여부를 판정하고, 만족한다고 판정한 경우에, 소수 후보 N이 소수라고 결정하는 제 2 판정부를 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 제 1 및 제 2 판정부를 이용하여 소수 후보 N이 소수인가 여부를 판단하므로, 제 1 및 제 2 판정부의 쌍방에서 판정결과가 긍정적인 경우에, 소수 후보 N을 소수로 판단할 수 있다.
여기서, 상기 소수산출장치는, 상기 소수 판정수단에 의해 소수라고 판정될 때까지 상기 교란정보 생성수단, 상기 후보산출수단 및 상기 소수 판정수단에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복제어수단을 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 반복제어수단에 의해 생성된 소수 후보가 소수라고 판정될 때까지 교란정보 R의 생성, 소수 후보 N의 산출, 소수의 판정을 반복하므로 항상 소수를 출력할 수 있다.
여기서, 상기 소수산출장치는, 난수 R'를 산출하는 2차 난수(secondary random number) 산출수단과, 출력된 상기 소수 N 및 생성된 상기 난수 R'를 이용하여 N'=2×난수 R'×소수 N+1에 의해 소수 후보 N'를 산출하는 2차 후보 산출수단과, 산출된 소수 후보 N'가 소수인가 여부를 판정하는 2차 소수 판정수단과, 소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 출력하는 2차 출력수단과, 상기 2차 소수 판정수단에 의해 소수라고 판정될 때까지 상기 2차 난수 산출수단, 상기 2차 후보 산출수단 및 상기 2차 소수 판정수단에 대하여 난수 R'의 생성과, 소수 후보 N'의 산출과, 상기 판정을 반복하도록 제어하는 2차 반복제어수단을 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 소수 N과, 생성된 난수 R'를 이용하여 소수 후보 N'를 산출하고, 산출된 소수 후보 N'가 소수인가 여부를 판단하며, 소수인 경우에는, 산출된 소수 후보 N'를 소수로 출력할 수 있다.
여기서, 상기 소수산출장치는, 소정의 검증 값을 기억하고 있는 2차 정보 기억수단과, 난수 r'를 생성하는 2차 난수 생성수단과, 상기 관리정보에 생성한 상기 난수 r'를 곱하여 교란정보 R'를 산출하고, N'=2×교란정보 R'×소수 N+검증 값에 의해 소수 후보 N'를 산출하는 2차 후보 산출수단을 더 포함하며, 상기 소수 판정수단은 산출된 소수 후보 N'가 소수인가 여부를 더 판정하고, 상기 출력수단은 소수 후보 N'가 소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 더 출력하여도 된다.
이 구성에 의하면, 소수산출장치는, 검증 값과, 소수 N과, 관리정보에 난수 r'를 곱한 교란정보 R'를 이용하여 소수 후보 N'를 산출하고, 산출된 소수 후보 N'가 소수인가 여부를 판단하며, 소수인 경우에는, 소수 후보 N'를 소수로 출력할 수 있다. 이에 의해, 소수 N'에서 검증 값을 뺀 결과가 관리정보에서 나누어지는 소수 N'를 생성할 수 있다.
여기서, 상기 소수산출장치는 RSA 암호의 공개키 및 비밀키를 생성하는 키 생성장치이며, 상기 소수산출장치는, 산출된 소수 N을 이용하여 RSA 암호의 공개키를 생성하는 공개키 생성수단과, 생성된 공개키를 이용하여 RSA 암호의 비밀키를 생성하는 비밀키 생성수단을 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는 RSA 암호의 공개키 및 비밀키를 생성하는 키 생성장치로 할 수 있으며, 소수산출장치는 산출된 소수 N을 이용하여 공개키를 생성하고, 생성한 공개키를 이용하여 비밀키를 생성할 수 있다.
여기서, 상기 공개키 생성수단은, 상기 반복제어수단에 대하여 새롭게 소수 N'을 취득하도록 지시하고, 상기 소수 N 및 새로 취득된 소수 N'를 이용하여 n=소수 N×소수 N'에 의해 수 n을 산출하여, 난수 e를 생성하며, 산출된 수 n과 생성된 난수 e의 세트가 상기 공개키이고, 상기 비밀키 생성수단은 e×d=1 mod L을 만족하는 d를 산출하며, L은 소수 N-1과 소수 N'-1의 최소공배수이고, 산출된 d가 상기 비밀키여도 된다.
이 구성에 의하면, 소수산출장치는, 소수 N 및 소수 N'를 이용하여 수 n을 산출하여 난수 e를 생성함으로써 공개키를 생성하고, 생성된 난수 e와, 소수 N-1과 소수 N'-1과의 최소공배수에서 비밀키를 생성할 수 있다.
여기서, 상기 소수산출장치는 단말장치에 대하여 RSA의 비밀키 및 공개키를 생성하여 발행하는 키 발행 서버장치이며, 상기 소수산출장치는, 생성한 상기 비밀키를 단말장치에 대하여 출력하는 키 출력수단과, 생성한 상기 공개키를 공개하는 공개수단을 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는 생성한 비밀키를 단말장치에 대하여 출력하고, 생성한 공개키를 공개할 수 있다.
여기서, 상기 소수산출장치는, 상기 단말장치를 고유하게(uniquely) 식별하는 단말장치 식별자를 취득하는 식별자 취득수단과, 취득한 단말장치 식별자를 포함하는 상기 관리정보를 생성하는 관리정보 생성수단과, 생성한 상기 관리정보를 상기 관리정보 기억수단에 기록하는 기록수단을 더 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 단말장치 식별자를 포함하는 관리정보를 생성하고, 생성한 관리정보를 관리정보 기억수단에 기록하므로 고유한 관리정보를 기억할 수 있다.
여기서, 상기 소수산출장치는, 키 발행 서버장치로서의 당해 소수산출장치를 고유하게 식별하는 서버 식별자를 미리 기억하고 있는 서버 식별자 기억수단을 더 포함하고, 상기 관리정보 생성수단은, 상기 서버 식별자 기억수단에서 상기 서버 식별자를 더 판독하고, 판독한 서버 식별자를 더 포함하는 상기 관리정보를 생성하여도 된다.
이 구성에 의하면, 소수산출장치는 서버 식별자를 포함하는 관리정보를 생성하므로, 관리정보의 고유성을 더 높일 수 있다.
또, 본 발명은, 기지의 소수보다 큰 소수를 산출하는 소수산출장치로, 기지의 입력 소수의 2배의 비트 길이를 갖는 출력 소수를 산출하는 소수산출수단과, 기지의 소수의 초기치를 기억하고 있는 소수기억수단과, 상기 소수산출수단에 대하여 산출을 복수 회 반복하도록 제어하는 반복제어수단을 구비하고, 상기 반복제어수단은 상기 반복에서의 첫 회의 산출에서, 상기 소수기억수단에 기억되어 있는 소수의 초기치를 상기 입력 소수로 상기 소수산출수단에 부여하며, 상기 반복의 첫 회의 산출 이외의 다른 산출에서, 하나 전 회의 산출에서 산출된 출력 소수를 당해 다른 산출에서의 상기 입력 소수로 상기 소수산출수단에 부여하며, 상기 복수 회의 산출 중 어느 하나의 산출에서, 상기 소수산출수단은, 소수의 이용범위에서의 고유한 관리정보를 기억하고 있는 관리정보 기억부와, 상기 관리정보 기억부에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보 R을 생성하는 교란정보 생성부와, 상기 입력 소수 q를 수신하고, 수신한 상기 입력 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보 산출부와, 산출된 소수 후보 N이 소수인가 여부를 판정하는 소수 판정부와, 소수라고 판정된 경우에, 산출된 소수 후보 N을 출력 소수로 출력하는 출력부와, 상기 소수 판정부에 의해 소수라고 판정될 때까지 상기 교란정보 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하는 것을 특징으로 한다.
이 구성에 의하면, 소수산출장치의 소수출력수단은, 복수 회의 출력 소수의 산출 중 어느 하나의 산출에서, 고유한 관리정보에 의존하여 생성된 교란정보 R을 이용하여 소수 후보 N을 산출하므로, 중복을 피하면서 소수 후보를 산출할 수 있다.
여기서, 상기 복수 회의 산출 중 최종 회의 산출에서, 상기 소수산출수단은, 소정의 검증 값을 기억하고 있는 정보 기억부와, 난수 r'를 생성하는 난수 생성부와, 상기 관리정보에 생성한 상기 난수 r'를 곱하여 교란정보 R'를 산출하고, N'=2×교란정보 R'×하나 전 회에서 산출된 출력 소수 + 검증 값에 의해 소수 후보 N'를 산출하는 후보 산출부와, 산출된 소수 후보 N'가 소수인가의 여부를 판정하는 소수 판정부와, 소수 후보 N'가 소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 출력하는 출력부와, 상기 소수 판정부에 의해 소수라고 판정될 때까지 상기 난수 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 난수 r'의 생성과, 소수 후보 N'의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하여도 된다.
이 구성에 의하면, 소수산출장치는, 검증 값과, 하나 전 회에서 산출된 출력 소수와, 관리정보에 난수 r'를 곱한 교란정보 R'를 이용하여 소수 후보 N'를 산출하고, 산출된 소수 후보 N'가 소수인가 여부를 판단하며, 소수인 경우에는, 소수 후보 N'를 소수로 출력할 수 있다. 이에 의해, 소수 N'에서 검증 값을 뺀 결과가 관리정보에서 나누어지는 소수 N'를 생성할 수 있다.
또, 본 발명은, 단말장치에 대하여 RSA의 비밀키 및 공개키를 생성하여 발행하는 키 발행 서버장치와 상기 단말장치로 구성되는 키 발행시스템으로, 키 발행 서버장치는, 기지의 소수 q보다 큰 소수 N을 산출하는 소수산출수단과, 산출된 소수 N을 이용하여 RSA 암호의 공개키를 생성하는 공개키 생성수단과, 생성된 공개키를 이용하여 RSA 암호의 비밀키를 생성하는 비밀키 생성수단과, 생성된 상기 비밀키를 단말장치에 대하여 출력하는 키 출력수단과, 생성된 상기 공개키를 공개하는 공개수단을 구비하고, 상기 소수산출수단은, 기지의 소수 q를 기억하고 있는 소수 기억부와, 고유한 관리정보를 기억하고 있는 관리정보 기억부와, 상기 관리정보 기억부에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보 R을 생성하는 교란정보 생성부와, 상기 소수 기억부에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보 산출부와, 산출된 소수 후보 N이 소수인가의 여부를 판정하는 소수 판정부와, 소수라고 판정된 경우에 산출된 소수 후보 N를 소수로 출력하는 출력부와, 상기 소수 판정부에 의해 소수라고 판정될 때까지, 상기 교란정보 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하며, 상기 단말장치는, 상기 비밀키를 수신하는 수신수단과, 수신한 비밀키를 기억하는 키 기억수단을 구비하는 것을 특징으로 한다.
이 구성에 의하면, 키 발행시스템의 키 발행 서버 장치는, 고유한 관리정보에 의존하여 생성된 교란정보 R을 이용하여 소수 후보 N을 산출하므로, 중복을 피하면서 소수 후보를 산출할 수 있다. 단말장치는 비밀키를 키 발행 서버장치에서 수신하여 기억하므로, 중복을 피하면서 생성된 소수 N에 의해 생성된, 즉 중복을 피하면서 생성된 비밀키를 기억할 수 있다.
여기서, 상기 키 발행시스템은 증명서 발행 서버장치를 더 포함하고, 상기 키 출력수단은 상기 공개키를 상기 증명서 발행 서버장치에 출력하며, 상기 증명서 발행 서버장치는, 당해 증명서 발행 서버 장치의 비밀키를 기억하고 있는 기억수단과, 상기 공개키를 취득하는 취득수단과, 상기 증명서 발행 서버장치의 비밀키를 이용하여 상기 공개키를 포함하는 공개키 정보에 디지털 서명을 시행하여 서명 데이터를 생성하고, 적어도 상기 공개키 및 생성한 상기 서명 데이터를 포함하는 공개키 증명서를 생성하는 증명서 생성수단과, 생성한 공개키 증명서를 키 발행 서버장치에 출력하는 출력수단을 구비하여도 된다.
이 구성에 의하면, 키 발행시스템은 증명서 발행 서버장치를 이용하여 키 발행 서버장치에서 발행된 공개키에 대한 공개키 증명서를 발행할 수 있다.
도 1은 키 발행시스템 1의 전체의 개요를 도시한 도면이다.
도 2는 키 발행 서버(100)의 구성을 도시한 블록 도이다.
도 3은 소수 생성부(116)의 구성을 도시한 블록 도이다.
도 4는 제어정보 테이블 T100의 데이터 구조의 일례를 도시한 도면이다.
도 5는 소수정보 생성부(133)의 구성을 도시한 블록 도이다.
도 6은 증명서 발행 서버(200)의 구성을 도시한 블록 도이다.
도 7은 검증 값 테이블 T200의 데이터 구조의 일례를 도시한 도면이다.
도 8은 단말장치(300)의 구성을 도시한 블록 도이다.
도 9는 키 발행시스템 1의 동작 개요를 도시한 흐름도이다.
도 10은 키 발행시스템 1에서의 키 의뢰 처리의 동작을 도시한 흐름도이다.
도 11은 키 발행시스템 1에서의 키 발행 처리의 동작을 도시한 흐름도이다. 도 12에 이어진다.
도 12는 키 발행시스템 1에서의 키 발행 처리의 동작을 도시한 흐름도이다. 도 11에서 이어지고, 도 13에 이어진다.
도 13은 키 발행시스템 1에서의 키 발행 처리의 동작을 도시한 흐름도이다. 도 12에서 이어지고, 도 14에 이어진다.
도 14는 키 발행시스템 1에서의 키 발행 처리의 동작을 도시한 흐름도이다. 도 13에서 이어진다.
도 15는 소수 생성처리의 동작을 도시한 흐름도이다.
도 16은 소수 후보 생성처리의 동작을 도시한 흐름도이다. 도 17에 이어진다.
도 17은 소수 후보 생성처리의 동작을 도시한 흐름도이다. 도 16에서 이어진다.
도 18은 키 발행시스템 1에서의 증명서 발행처리의 동작을 도시한 흐름도이다.
도 19는 소수정보 생성부(133A)의 구성을 도시한 블록 도이다.
도 20은 검증 값 테이블 T250의 데이터 구조의 일례를 도시한 도면이다.
도 21은 소수정보 생성부(133B)의 구성을 도시한 블록 도이다.
도 22는 소수 생성부(116C)의 구성을 도시한 블록 도이다.
도 23은 제어정보 테이블 T150의 데이터 구조의 일례를 도시한 도면이다.
도 24는 소수정보 생성부(133C)의 구성을 도시한 블록 도이다.
도 25는 소수 후보 생성처리의 동작을 도시한 흐름도이다.
도 26은 키 발행시스템 2의 전체의 개요를 도시한 도면이다.
도 27은 키 발행 서버(1100)의 구성을 도시한 블록 도이다.
도 28은 발행이 끝난 키 정보 테이블 T1100의 데이터 구조의 일례를 도시한 도면이다.
도 29는 키 발행 감사(監査) 서버(1200)의 구성을 도시한 블록 도이다.
도 30은 검증 값 테이블 T1200의 데이터 구조의 일례를 도시한 도면이다.
도 31은 키 발행시에서의 키 발행시스템 2의 동작개요를 도시한 흐름도이다.
도 32는 키 감사시에서의 키 발행시스템 2의 동작개요를 도시한 흐름도이다.
도 33은 키 발행시스템 2에서의 증명서 발행 처리의 동작을 도시한 흐름도이다.
도 34는 키 발행시스템 2에서의 키 정보 취득처리의 동작을 도시한 흐름도이다.
도 35는 키 발행시스템 2에서의 감사처리의 동작을 도시한 흐름도이다.
도 36은 확인처리의 동작을 도시한 흐름도이다.
도 37은 8비트의 소수에서 512비트의 소수를 생성하는 동작을 도시한 흐름도 이다.
도 38은 소수 생성장치(2100)의 구성을 도시한 블록 도이다.
도 39는 소수 생성처리의 동작을 도시한 흐름도이다.
도 40은 소수 후보 생성처리의 동작을 도시한 흐름도이다.
도 41은 소수 생성장치(2200)의 구성을 도시한 블록 도이다.
도 42는 소수 생성장치(2300)의 구성을 도시한 블록 도이다.
도 43은 소수 생성장치(2400)의 구성을 도시한 블록 도이다.
도 44는 소수 생성장치(2500)의 구성을 도시한 블록 도이다.
도 45는 발행 식별자 정보 「IDI」의 비트 열에 난수 「R1」을 구성하는 각 비트를 매입한 결과 「IDI_R1」의 일례를 도시한 도면이다.
도 46은 검증처리의 동작을 도시한 흐름도이다.
(부호의 설명)
1 키 발행시스템 100, 101, 102 키 발행 서버
110 식별자 저장부 111 비밀키 저장부
112 공개키 저장부 113 증명서 저장부
114 제어부 115 식별자 생성부
116 소수 생성부 117 키 판정부
118 키 생성부 119 정보 취득부
120 수신부 121 송신부
130 서버 식별자 기억영역 131 단말정보 기억영역
132 반복 제어부 133 소수정보 생성부
135 반복 카운터 136 출력 카운터
140 정보 제어부 141 난수 생성부
142 소수 후보 생성부 143 제 1 소수 판정부
144 제 2 소수 판정부 200 증명서 발행 서버
210 비밀키 저장부 211 발행 공개키 저장부
212 발행 식별자 정보 저장부 213 공개키 증명서 저장부
214 발행 공개키 확인부 215 공개키 증명서 생성부
216 증명서 취득부 217 수신부
218 송신부 220 서버정보 기억영역
221 확인정보 기억영역
300, 301, 302, 303, 304, 305, 306 단말장치
310 비밀키 저장부 311 공개키 증명서 저장부
312 제어부 313 접수부
314 무선부
315 베이스밴드(base band) 신호처리부
316 스피커 317 마이크
318 표시부 319 안테나
320 단말 식별자 기억영역 400 단말장치
2 키 발행시스템 1100, 1101, 1102 키 발행 서버
1110 식별자 저장부 1111 비밀키 저장부
1112 공개키 저장부 1113 증명서 저장부
1114 제어부 1115 식별자 생성부
1116 소수 생성부 1117 키 판정부
1118 키 생성부 1119 정보 취득부
1120 수신부 1121 송신부
1122 증명서 생성부 1123 증명서용 비밀키 저장부
1124 발행이 끝난 키 정보 저장부 1130 서버 식별자 기억영역
1131 단말정보 기억영역 1200 키 발행 감사 서버
1210 확인정보 저장부 1211 발행이 끝난 정보 저장부
1212 제어부 1213 발행 공개키 확인부
1214 접수부 1215 감사결과 출력부
1216 수신부 1217 송신부
1220 서버정보 기억영역 1250 모니터
1300, 1301, 1302, 1303, 1304, 1305, 1306 단말장치
1400 단말장치 2100 소수 생성장치
2101 접수부 2102 접수정보 기억부
2103 소수 시드(seed) 생성부 2104 난수 생성부
2105 소수 후보 생성부 2106 소수 판정부
2107 소수 판정부 2200 소수 생성장치
2201 접수부 2202 접수정보 기억부
2203 난수 생성부 2204 소수 후보 생성부
2205 소수 판정부 2206 소수 판정부
2300 소수 생성장치 2301 접수부
2302 접수정보 기억부 2303 식별자 소수 생성부
2304 난수 생성부 2305 소수 후보 생성부
2306 소수 판정부 2307 소수 판정부
2400 소수 생성장치 2401 접수부
2402 접수정보 기억부 2403 난수 생성부
2404 소수 후보 생성부 2405 소수 판정부
2406 소수 판정부 2500 소수 생성장치
2501 접수부 2502 접수정보 기억부
2503 난수 생성부 2504 소수 후보 생성부
2505 소수 판정부 2506 소수 판정부
1. 제 1 실시 예
본 발명에 관한 제 1 실시 예의 키 발행시스템 1에 대하여 설명한다.
1. 1 키 발행시스템 1의 개요
키 발행시스템 1은, 도 1에 도시한 바와 같이, 키 발행 서버(100, 101, 102)와, 증명서 발행 서버(200)와, 단말장치(300, 301, …, 302, 303, …, 304, 305, …, 306)로 구성되어 있다. 단말장치의 대수는, 예를 들어 1000대이다.
키 발행 서버(100, 101, 102)는 각각 다른 회사에 의해 관리되고 있다. 단말장치 300, 301, …, 302는 키 발행 서버 100에 대하여 키의 발행을 요구하고, 단말장치 303, …, 304는 키 발행 서버 101에 대하여 키의 발행을 요구하며, 단말장치 305, …, 306은 키 발행 서버 102에 대하여 키의 발행을 요구한다. 또, 단말장치 300, 301, …, 302와 키 발행 서버 100 사이에는 안전한 통신 경로가 확립되어 있다. 또, 단말장치 303, …, 304와 키 발행 서버 101 사이, 및 단말장치 305. … 306과 키 발행 서버 102 사이에도 마찬가지로 안전한 통신 경로가 확립되어 있다.
또, 키 발행 서버 100, 101, 102와 증명서 발행 서버 200 사이에도 마찬가지로 안전한 통신 경로가 확립되어 있는 것으로 한다.
또, 이하에서는 키 발행 서버(100), 증명서 발행 서버(200) 및 단말장치(300)를 이용하여 키 발행시스템 1의 개요를 설명한다.
키 발행 서버(100)는 단말장치(300)로부터 키의 발행요구를 수신하면, RSA 암호에서의 비밀키 및 암호키를 생성하고, 증명서 발행 서버(200)에 대하여 생성한 공개키에 대한 공개키 증명서의 발행을 요구한다. 또, 여기서, 생성하는 각 키의 키 길이는 1024비트로 한다.
증명서 발행 서버(200)는, 키 발행 서버(100)로부터 증명서의 발행요구를 수신하면, 공개키 증명서를 발행하고, 발행한 공개키 증명서를 키 발행 서버(100)에 송신한다.
키 발행 서버(100)는 증명서 발행 서버(200)에서 공개키 증명서를 수신하면, 수신한 공개키 증명서와 생성한 비밀키를 단말장치(300)에 송신한다.
단말장치(300)는, 공개키 증명서와 비밀키를 키 발행 서버(100)에서 수신하면, 수신한 공개키 증명서와 비밀키를 기억한다.
이후, 예를 들어 단말장치(400)의 사용자는, 먼저 키 발행 서버(100)에서 단말장치(300)의 공개키 증명서를 입수하거나, 또는 단말장치(300)에서 공개키 증명서를 입수하여, 증명서 발행 서버(200)가 갖는 공개키를 이용하여 공개키 증명서의 정당성을 확인하고, 정당한 공개키 증명서라고 판단한 경우에, 입수한 공개키 증명서를 단말장치(400)에 기억한다. 단말장치(400)는 기억하고 있는 공개키 증명서에 포함되는 공개키를 이용하여 단말장치(300)에 송신하는 전자 메일을 암호화하고, 암호화된 전자 메일을 단말장치(300)에 송신한다.
단말장치(300)는, 단말장치(400)에서 암호화된 전자 메일을 수신하면, 기억하고 있는 비밀키를 이용하여 암호화된 전자 메일을 복호하고, 복호 된 전자 메일을 표시한다.
이에 의해, 단말장치(300)와 단말장치(400) 사이에는 안전하게 데이터의 교환을 할 수 있게 된다.
또, 단말장치 301, …, 302는 단말장치 300과 동일하므로 설명은 생략한다. 또, 키 발행 서버 101 및 102는 키 발행 서버 100과 동일하므로 설명은 생략한다.
이후의 설명에서, 각 단말장치의 대표로 단말장치 300을, 각 키 발행 서버의 대표로 키 발행 서버 100을 이용한다.
1. 2 키 발행 서버(100)의 구성
키 발행 서버(100)는, 도 2에 도시한 바와 같이, 식별자 저장부(110), 비밀키 저장부(111), 공개키 저장부(112), 증명서 저장부(113), 제어부(114), 식별자 생성부(115), 소수 생성부(116), 키 판정부(117), 키 생성부(118), 정보 취득부(119), 수신부(120) 및 송신부(121)로 구성되어 있다.
키 발행 서버(100)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램에 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 키 발행 서버(100)는 그 기능을 달성한다.
또, 키 발행 서버 101 및 102는 키 발행 서버(100)와 동일한 구성이므로 설명은 생략한다.
(1) 식별자 저장부(110)
식별자 저장부(110)는 비트사이즈가 126비트 이하인 발행 식별자 정보를 기억하기 위한 영역을 구비하고 있다. 발행 식별자 정보의 비트사이즈는, 예를 들어 64비트이다.
(2) 비밀키 저장부(111)
비밀키 저장부(111)는 비밀키 생성시에 이용되는 2개의 소수를 기억하기 위한 소수저장영역과 키 생성부(118)에 의해 생성된 비밀키를 기억하기 위한 비밀키 저장영역을 구비하고 있다.
(3) 공개키 저장부(112)
공개키 저장부(112)는 키 생성부(118)에 의해 생성된 공개키를 기억하기 위한 영역을 구비하고 있다.
(4) 증명서 저장부(113)
증명서 저장부(113)는 증명서 발행 서버에 의해 발행된 공개키 증명서를 기억하는 영역을 구비하고 있다.
(5) 제어부(114)
제어부(114)는, 도 2에 도시한 바와 같이, 서버 식별자 기억영역(130)과 단말정보 기억영역(131)을 가지고 있다.
서버 식별자 기억영역(130)은 당해 서버를 식별하는 서버 식별자를 미리 기억하고 있다. 예를 들어, 키 발행 서버 100은 SIDA를, 키 발행 서버 101은 SIDB를, 키 발행 서버 102는 SIDC를 기억하고 있다. 또, 이후에는 키 발행 서버(100)의 서버 식별자를 「SID」로 하여 설명한다. 여기에서는, 서버 식별자의 비트사이즈를 31비트로 한다.
단말정보 기억영역(131)은 키 발행의 요구가 있은 단말장치를 식별하는 단말 식별자를 기억하는 영역을 구비하고 있다. 여기서, 단말 식별자는, 예를 들어 단말장치의 시리얼 번호이다. 여기에서는, 시리얼 번호의 비트사이즈를 32비트로 한다.
제어부(114)는, 단말장치(300)에서 수신부(120)를 통해서 키의 발행요구를 나타내는 키 발행 의뢰정보와, 단말장치(300)의 단말 식별자 「TID」를 수신하면, 수신한 단말 식별자 「TID」를 단말정보 기억영역(131)에 기록한다. 제어부(114)는, 발행 식별자 정보의 생성명령과, 수신한 단말 식별자 「TID」를 식별자 생성 부(115)에 출력한다.
제어부(114)는, 증명서 발행 서버(200)에서 수신부(120)를 통해서 공개키 증명서 「Cert」를 수신하면, 수신한 공개키 증명서 「Cert」를 증명서 저장부(113)에 기록한다. 제어부(114)는 비밀키 및 공개키 증명서를 키의 발행요구가 있은 단말장치(300)에 배포의 처리를 개시하는 배포개시명령을 정보 취득부(119)에 출력한다.
(6) 식별자 생성부(115)
식별자 생성부(115)는, 제어부(114)에서 발행 식별자 정보의 생성명령과 단말 식별자 「TID」를 수신하면, 서버 식별자 기억영역에 기억되어 있는 서버 식별자 「SID」를 취득한다.
식별자 생성부(115)는, 취득한 서버 식별자 「SID」와, 수신한 단말 식별자 「TID」와 수 「1」에서 발행 식별자 정보 「IDI=SID∥TID∥1」을 생성한다. 여기서, 기호 「∥」는 비트 또는 바이트 연결이다. 발행 식별자 정보 「IDI」의 최하위 비트를 「1」로 함으로써, 발행 식별자 정보 「IDI」는 항상 홀수가 되며, 그 비트 사이즈는 64비트가 된다.
식별자 생성부(115)는, 생성한 발행 식별자 정보 「IDI」를 식별자 저장부(110)에 기록하고, 소수 생성부(116)에 소수의 생성개시 명령을 출력한다.
(7) 소수 생성부(116)
소수 생성부(116)는, 도 3에 도시한 바와 같이, 반복 제어부(132) 및 소수정보 생성부(133)를 가지고 있다.
소수 생성부(116)는 8비트의 소수에서 512비트의 소수를 생성하고, 생성한 512비트의 소수를 키 판정부(117)에 출력한다.
<반복 제어부(132)>
반복 제어부(132)는, 8비트로 이루어지는 소수와 그 소수의 비트사이즈(즉, 「8」)을 미리 기억하고 있는 초기치 기억영역과, 소수정보 생성부(133)에서 수신한 소수를 일시적으로 기억하는 일시 기억영역을 구비하고 있다.
반복 제어부(132)는, 도 3에 도시한 바와 같이, 소수정보 생성부(133)의 동작의 반복 횟수를 카운트하는 반복 카운터(135)와, 키 판정부(117)에 출력한 소수의 개수, 즉 생성한 512비트의 소수의 출력 횟수를 카운트하는 출력 카운터(136)를 가지고 있다. 또, 반복 카운터(135) 및 출력 카운터(136)의 초기치는 각각 「1」이다.
반복 제어부(132)는, 도 4에 도시한 제어정보 테이블 T100을 가지고 있다. 제어정보 테이블 T100은 횟수와 제어정보로 이루어지는 세트를 하나 이상 저장하고 있다. 횟수는 반복 카운터(135)의 값에 대응한다. 제어정보는 소수정보 생성부(133)에서 생성하는 소수의 생성방법의 종별을 나타낸다.
반복 제어부(132)는 식별자 생성부(115)에서 소수의 생성개시명령을 수신하면 소수정보 생성부(133)가 소수를 생성하도록 제어한다. 소수정보 생성부(133)에서 소수를 수신하면, 반복 카운터(135) 및 출력 카운터(136)의 각각의 값에 의거하여 다시 소수정보 생성부(133)에 소수 생성의 명령 및 수신한 소수를 키 판정부(117)에 출력 중 어느 하나를 행한다.
이하에, 그 동작에 대하여 설명한다.
반복 제어부(132)는 식별자 생성부(115)에서 소수의 생성개시 명령을 수신하면 반복 카운터(135) 및 출력 카운터(136)를 각각 「1」에 설정한다.
반복 제어부(132)는, 소수정보 생성부(133)에서 소수를 수신하면, 반복 카운터(135)의 값에 「1」을 가산하고, 가산 결과가 7인가 여부를 판단한다.
가산결과가 7이라고 판단한 경우에는, 반복 제어부(132)는 출력 카운터(136)의 값이 1인가 여부를 판단한다. 1이라고 판단한 경우에는, 반복 제어부(132)는, 수신한 소수를 소수 「p1」으로 하여 키 판정부(117)에 출력하고, 출력 카운터(136)의 값에 「1」을 가산하며, 반복 카운터(135)의 값에 「1」을 설정한다. 1이 아닌, 즉 2 이상이라고 판단한 경우에는, 반복 제어부(132)는 수신한 소수를 소수 「p2」로 하여 소수 「p2」와 판정개시 명령을 키 판정부(117)에 출력한다.
가산결과가 7이 아니라고 판단한 경우에는, 수신한 소수의 비트사이즈를 산출하고, 반복 제어부(132)는 수신한 소수와 산출한 비트사이즈를 일시기억영역에 일시적으로 기억한다.
반복 제어부(132)는, 소수의 생성개시명령을 수신하고, 반복 카운터(135) 및 출력 카운터(136)의 각각의 값에 「1」을 가산한 후, 소수정보 생성부(133)에서 수신한 소수와 그 비트사이즈를 일시적으로 기억한 후, 및 출력 카운터(136)에 「1」을 가산하며, 또한 반복 카운터(135)의 값을 「1」에 설정한 후 중 어느 하나의 경우에서 반복 제어부(132)는 이하의 동작을 행한다.
반복 제어부(132)는 반복 카운터(135)의 값이 1인가 여부를 판단한다. 1이라 고 판단한 경우에는, 초기치 기억영역에서 8비트의 소수와 그 비트사이즈를 판독하고, 1이 아니라고 판단한 경우에는, 일시기억영역에서 비트사이즈 「8×(2^(n-1))」과 그 소수를 판독한다. 즉, 반복 제어부(132)는 반복 카운터(135)의 값이 1이 아니라고 판단한 경우에는, 일시 기억영역에서 직전에 일시적으로 기억한 소수와 그 비트사이즈를 판독한다. 여기서, 「n」은 반복 카운터의 값이다. 이에 의해, 반복 제어부(132)는 일시기억영역에서 전회 생성한 소수 및 그 비트사이즈를 판독한다. 예를 들어, 반복 카운터(135)의 값이 「2」인 경우에는, 반복 제어부(132)는 「16」 비트로 이루어지는 소수를 판독하고, 반복 카운터(135)의 값이 「3」인 경우에는, 「31」 비트로 이루어지는 소수를 판독한다. 즉, 반복 카운터(135)의 값이 「2」에서 「6」동안, 순서대로, 「16」 비트로 이루어지는 소수, 「32」 비트로 이루어지는 소수, 「64」 비트로 이루어지는 소수, 「128」 비트로 이루어지는 소수 및 「256」 비트로 이루어지는 소수를 판독하게 된다.
반복 카운터(135)의 값에 대응하는 제어정보를 제어정보 테이블 T100에서 판독하고, 판독한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 반복 제어부(132)는, 판독한 소수 및 그 비트사이즈와 제어정보로 이루어지는 제 1 정보를 생성하고, 생성한 제 1 정보를 소수정보 생성부(133)에 출력한다.
「정보 C」가 아니라고 판단한 경우에는, 반복 제어부(132)는, 식별자 저장부(110)에서 발행 식별자정보 「IDI」를 취득하고, 취득한 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 산출하며, 판독한 소수 및 그 비트사이즈와, 제어정 보와, 발행 식별자 정보 「IDI」및 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 생성하며, 생성한 제 2 정보를 소수정보 생성부(133)에 출력한다.
또, 반복 제어부(132)는, 키 판정부(117)에서 소수를 다시 생성하는 취지의 재생성 명령을 수신하면, 출력 카운터(136)의 값에 「1」을 가산하고, 또한 반복 카운터(135)의 값을 「1」로 설정하여, 반복 카운터(135)의 값이 1인가 여부를 판단하는 동작 이후를 행한다.
<소수정보 생성부(133)>
소수정보 생성부(133)는, 도 5에 도시한 바와 같이, 정보 제어부(140), 난수 생성부(141), 소수 후보 생성부(142), 제 1 소수 판정부(143) 및 제 2 소수 판정부(144)로 구성되어 있다.
소수정보 생성부(133)는 반복 제어부(132)에서 수신한 소수의 비트사이즈가 2배인 비트사이즈로 이루어지는 소수를 생성한다. 예를 들어, 8비트로 이루어지는 소수를 수신한 경우에는, 16비트로 이루어지는 소수를 생성하고, 16비트로 이루어지는 소수를 수신한 경우에는, 32비트로 이루어지는 소수를 생성한다.
또, 이하의 설명에서, 반복 제어부(132)에서 수신하는 소수를 소수 「q」, 그 비트사이즈를 「lenq」로 하여 각 구성요소에 대하여 설명한다.
<정보 제어부(140)>
정보 제어부(140)는 제 1 정보 및 제 2 정보를 기억하기 위한 정보기억영역을 구비하고 있다.
정보 제어부(140)는, 증명서 발행 서버(200)에 의해 할당되고, 또한 제어정 보 「정보 A」에 의거하여 소수를 생성할 때에 이용하는 제 1 검증 값 「c11」 및 제 2 검증 값 「c12」를 미리 기억하고 있는 검증 값 기억영역을 구비하고 있다.
정보 제어부(140)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보로 이루어지는 제 1 정보를 수신하면, 수신한 제 1 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보(이 경우, 「정보 C」)를 기록한다.
정보 제어부(140)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 수신하면, 수신한 제 2 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」를 기록한다.
정보 제어부(140)는 수신한 정보의 기록 후, 난수의 생성 지시를 나타내는 제 1 생성지시를 난수 생성부(141)에 출력한다.
정보 제어부(140)는, 제 2 소수 판정부(144)에서 소수를 수신하면, 수신한 소수를 반복 제어부(132)에 출력한다.
정보 제어부(140)는, 소수 후보 생성부(142)에서 출력 카운터(136)의 값을 판독하는 취지의 횟수 판독명령을 수신하면, 반복 제어부(132)의 출력 카운터(136)의 값을 판독한다. 정보 제어부(140)는 판독한 값을 소수 후보 생성부(142)에 출력한다.
<난수 생성부(141)>
난수 생성부(141)는, 난수의 생성지시를 나타내는 제 1 생성지시를 정보 제어부(140)로부터 수신하면, 정보 제어부(140)의 정보기억영역에 기억되어 있는 제어정보를 판독한다. 난수 생성부(141)는 판독한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 난수 생성부(141)는, 정보 제어부(140)의 정보기억영역에 기억되어 있는 「lenq」를 판독하고, (lenq-1) 비트로 이루어지는 난수 「R1」을 생성하며, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142)에 출력한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다. 난수 생성방법은 비 특허문헌 2가 상세하다.
「정보 C」가 아니라고 판단한 경우에는, 난수 생성부(141)는, 정보 제어부(140)의 정보기억영역에 기억되어 있는 「lenq」 및 「lenIDI」를 판독하고, (lenq-lenIDI-1) 비트로 이루어지는 난수 「R1」을 생성하며, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142)에 출력한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
또, 난수 생성부(141)는, 제 1 소수 판정부(143) 및 제 2 소수 판정부(144) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 수신하면, 제어정보를 정보기억영역에서 판독하고, 상기의 동작을 행한다.
<소수 후보 생성부(142)>
소수 후보 생성부(142)는, 생성된 정보를 기억하는 생성정보 기억영역과, 단사인 함수 「f」를 미리 기억하고 있는 함수 기억영역을 구비하고 있다. 여기서, 함수 「f」는, 예를 들어, f(X∥Y)= Enc(K, X∥Y)이다. Enc(K, X∥Y)는 키 X를 이용했을 때의 (X∥Y)의 공통키 암호에 의한 암호문이다. 공통키 암호의 암호화 함수는 일반적으로 전단사(bijection)이다. 또, 기호 「∥」는 비트 또는 바이트 연결이다. 암호화 함수 「Enc(K, X∥Y)」의 일례는 「Enc(K, X∥Y)」=K XOR X∥Y)이다. 또, 공통 암호의 일례는 DES이고, DES를 이용하는 경우에는, 키 길이는 128비트가 된다. 이때, 소수 후보 생성부(142)는 소정의 키 「K」를 기억하고 있다.
소수 후보 생성부(142)는, 난수 생성부(141)에서 난수 「R1」과 제어정보를 수신하면, 수신한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 소수 후보 생성부(142)는 정보 제어부(140)의 정보기억영역에서 소수 「q」를 판독한다. 소수 후보 생성부(142)는 판독한 소수 「q」와 난수 생성부(141)에서 수신한 난수 「R1」을 이용하여 수 「N=2×R1×q+1」을 생성한다. 이때, 생성한 수 「N」이 소수 후보가 된다.
소수 후보 생성부(142)는, 생성한 수 「N」의 비트사이즈 「lenN」이「lenq」와 일치하는가 여부를 판단하고, 일치한다고 판단한 경우에는, 소수 후보 생성부(142)는 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하며, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다.
일치하지 않는다고 판단한 경우에는, 소수 후보 생성부(142)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」로 하고, 다시 상기의 동작을 행하여 수 「N=2×R1×q+1」을 생성한다.
제어정보가 「정보 C」가 아니라고 판단한 경우에는, 소수 후보 생성부(142) 는 정보 제어부(140)의 정보기억영역에서 소수 「q」 및 발행 식별자 정보 「IDI」를 판독한다. 소수 후보 생성부(142)는 제어정보가 「정보 B」인가 여부를 판단한다.
「정보 B」라고 판단한 경우에는, 소수 후보 생성부(142)는, 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」에서 결합 값 「IDI∥R1」을 생성하고, 생성한 결합 값 「IDI∥R1」과 함수기억영역에서 기억하고 있는 함수 「f」를 이용하여 수 「R=f(IDI∥R1)」을 생성한다. 소수 후보 생성부(142)는, 생성한 수 「R」과 판독한 소수 「q」를 이용하여 수 「N=2×R×q+1」을 생성한다. 이때, 생성한 수 「N」이 소수 후보가 된다.
소수 후보 생성부(142)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142)는, 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
「정보 B」가 아니라고 판단한 경우에는, 소수 후보 생성부(142)는 수신한 난수 「R1」과 판독한 발행 식별자 정보「IDI」를 이용하여 수 「R=IDI×R1」를 생성한다.
소수 후보 생성부(142)는, 횟수판독명령을 정보 제어부(140)에 출력하고, 정보 제어부(140)에서 출력 카운터(136)의 값을 수신한다. 소수 후보 생성부(142)는 출력 카운터(136)의 값이 「1」인가 여부를 판단한다.
출력횟수가 「1」이라고 판단한 경우에는, 소수 후보 생성부(142)는 정보 제어부(140)의 검증 값 기억영역에서 제 1 검증 값 「c11」을 판독한다.
출력횟수가 「1」이 아닌, 즉 「2」 이상이라고 판단한 경우에는, 소수 후보 생성부(142)는 정보 제어부(140)의 검증 값 기억영역에서 제 2 검증 값 「c12」를 판독한다.
또, 제 1 검증 값 「c11」을 판독한 경우의 동작과, 제 2 검증 값 「c12」를 판독한 경우의 동작은 동일하므로, 이하에는 검증 값 「c」로 설명한다.
소수 후보 생성부(142)는, 판독한 소수 「q」, 발행 식별자 정보 「IDI」, 검증 값 「c」 및 생성한 수 「R」을 이용하여 수 「N=2×(R+w)×q+1」을 생성한다. 이때, 생성한 수 「N」이 소수 후보가 된다.
여기서, 「w」는 「2×w×q+1=c mod IDI, 0≤w<IDI」를 만족하는 수이다. 「w」는 「w=(c-1)×m mod IDI」를 계산함으로써 구한다. 「m」은 「(2×q)×m=1 mod IDI」를 만족하는 수이다. 상술한 바와 같이, 발행 식별자 정보 「IDI」가 홀수, 즉 「GCD(IDI, 2)=1」이고, 「IDI<q」이므로, 「m」은 계산이 가능하다. 계산방법에 대해서는 비 특허문헌 5가 상세하다. 또, 이후에 제 1 검증 값 「c11」을 이용한 경우의 「w」를「w1」으로 표기하고, 제 2 검증 값을 이용한 경우의 「w」를「w2」로 표기한다.
소수 후보 생성부(142)는, 소수 「q」의 비트사이즈 「lenq」를 정보 제어부(140)의 정보기억영역에서 판독하고, 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142)는 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142)는 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
<제 1 소수 판정부(143)>
제 1 소수 판정부(143)는 수 「N」을 소수 후보 생성부(142)에서 수신하면 수신한 수 「N」을 이용하여 이하의 식의 성립을 판정한다.
2^(N-1)=1 mod N (eq1)
여기서, 2^(N-1)은, 2의 N-1승을 나타내고 있다.
제 1 소수 판정부(143)는 식 (eq1)이 성립하고 있다고 판단한 경우에는, 수 「N」을 제 2 소수 판정부(144)에 출력한다.
제 1 소수 판정부(143)는 식 (eq1)이 성립하고 있지 않다고 판단한 경우에는, 난수 생성부(141)에 제 2 생성지시를 출력한다.
<제 2 소수 판정부(144)>
제 2 소수 판정부(144)는, 수 「N」을 제 1 소수 판정부(143)에서 수신하면, 소수 후보 생성부(142)의 생성정보 기억영역에 기억되어 있는 수 「R」을 판독한다.
제 2 소수 판정부(144)는 수 「N」 및 「R」을 이용하여 이하의 식의 성립을 판정한다.
2^(2×R)≠1 mod N (eq2)
제 2 소수 판정부(144)는, 식 (eq2)가 성립하고 있다고 판단한 경우에는, 수 「N」을 소수 「N」으로 하여 정보 제어부(140)를 통해서 반복 제어부(132)에 출력한다.
제 2 소수 판정부(144)는, 식 (eq2)가 성립하고 있지 않다고 판단한 경우에는, 난수 생성부(141)에 제 2 생성지시를 출력한다.
(8) 키 판정부(117)
키 판정부(117)는 소수 생성부(116)에서 수신한 2개의 소수 「p1」 및 「p2」를 기억하는 소수기억영역을 갖는다.
키 판정부(117)는, 소수 생성부(116)에서 소수 「p1」 및 「p2」를 수신하면, 수신한 소수 「p1」 및 「p2」를 각각 소수기억영역에 기억한다.
키 판정부(117)는, 소수 생성부(116)에서 판정개시명령을 수신하면, 소수기억영역에서 기억하고 있는 2개의 소수 「p1」 과 「p2」가 일치하는가 여부를 판단한다. 일치한다고 판단한 경우에는, 기억하고 있는 소수 「p2」를 소거하고, 재생성 명령을 반복 제어부(132)에 출력한다.
일치하지 않는다고 판단한 경우에는, 기억하고 있는 2개의 소수 「p1」 및 「p2」를 비밀키 저장부(111)의 소수저장영역에 기록하고, 키 생성개시명령을 키 생성부(118)에 출력한다.
(9) 키 생성부(118)
키 생성부(118)는, 키 판정부(117)에서 키 생성명령을 수신하면, 비밀키 저장부(111)의 소수저장영역에 기억되어 있는 2개의 소수 「p1」 및 「p2」를 판독하고, 판독한 소수 「p1」 과 「p2」의 곱 「n=p1×p2」를 계산한다.
키 생성부(118)는, 난수 「e」를 생성하고, 산출한 「n」과 생성한 난수 「e」로 이루어지는 세트 「PK=(n, e)」를 공개키로 생성하며, 생성한 공개키 「PK」를 공개키 저장부(112)에 기록한다. 여기서, 난수 「e」는, 종래와 마찬가지로 난수 「e」는 수 「L」과 서로 소이며, 「1≤e≤L-1, GCD(e, L)=1」을 만족한다. 여기서, GCD(e, L)은, e와 L의 최대공약수를 나타내고, 수 「L」은 「L=LCM(p1-1, p2-1)」이며, LCM(p1-1, p2-1)은 「p1-1」과 「p2-1」의 최소공배수를 나타낸다.
키 생성부(118)는, 「e×d=1 mod L」을 만족하는 「d」를 산출하고, 산출한 「d」와, 소수 「p1」 및 「p2」로 이루어지는 세트 「SK=(p1, p2, d)」를 비밀키로 하여 비밀키 저장부(111)의 비밀키 저장영역에 기록한다. 키 생성부(118)는 공개키 증명서의 요구처리를 개시하는 요구개시명령을 정보 취득부(119)에 출력한다.
(10) 정보 취득부(119)
정보 취득부(119)는, 키 생성부(118)에서 요구개시명령을 수신하면, 식별자 저장부(110)에서 발행 식별자 정보 「IDI」와, 공개키 저장부(112)에서 공개키 「 PK」와, 제어부(114)의 서버 식별자 기억영역(130)에서 서버 식별자를 각각 판독한다. 정보 취득부(119)는, 판독한 발행 식별자 정보 「IDI」와, 공개키「PK」와, 서버 식별자와, 공개키 증명서의 발행을 의뢰하는 증명서 발행 의뢰정보를 송신부(121)를 통해서 증명서 발행 서버(200)에 송신한다.
정보 취득부(119)는, 제어부(114)에서 배포개시명령을 수신하면, 비밀키 저장부(111)에서 기억하고 있는 비밀키 「SK」와, 증명서 저장부(113)에서 기억하고 있는 공개키 증명서 「Cert」와, 제어부(114)의 단말정보 기억영역에서 기억하고 있는 단말 식별자를 각각 판독하고, 판독한 비밀키 「SK」 및 공개키 증명서 「Cert」를 판독한 단말 식별자에 대응하는 단말장치(300)에 송신부(121)를 통해서 송신한다.
(11) 수신부(120)
수신부(120)는 인터넷을 통해서 증명서 발행 서버(200) 및 단말장치(300)에서 정보를 수신하고, 수신한 정보를 제어부(114)에 출력한다.
(12) 송신부(121)
송신부(121)는, 정보 취득부(119)에서 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신하면, 수신한 각 정보를 증명서 발행 서버(200)에 송신한다.
송신부(121)는, 정보 취득부(119)에서 비밀키 「SK」 및 공개키 증명서 「Cert」를 수신하고, 수신한 각 정보를 단말장치(300)에 송신한다.
1. 3 증명서 발행 서버(200)의 구성
증명서 발행 서버(200)는, 키 발행 서버(100, 101 및 102)에서 증명서 발행 의뢰정보를 수신하면, 공개키 증명서를 발행하고, 발행한 공개키 증명서를 발행 의뢰가 있던 키 발행 서버에 송신한다.
증명서 발행 서버(200)는, 도 6에 도시한 바와 같이, 비밀키 저장부(210), 발행 공개키 저장부(211), 발행 식별자 정보 저장부(212), 공개키 증명서 저장부(213), 발행 공개키 확인부(214), 공개키 증명서 생성부(215), 증명서 취득부(216), 수신부(217) 및 송신부(218)로 구성되어 있다.
증명서 발행 서버(200)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 증명서 발행 서버(200)는 그 기능을 달성한다.
또, 키 발행 서버(100)에서 증명서 발행 의뢰정보를 수신한 경우의 동작과 다른 키 발행 서버에서 증명서 발행 의뢰정보를 수신한 경우의 동작은 동일하므로, 이후의 설명에서는 키 발행 서버(100)에서 송신된 증명서 발행 의뢰정보를 이용하여 설명한다.
(1) 비밀키 저장부(210)
비밀키 저장부(210)는 증명서 발행 서버(200)만이 갖는 비밀키 「SKCA」를 미리 기억하고 있다.
여기서, 비밀키 「SKCA」에 대응하는 공개키 「PKCA」는 단말장치(400)에 배 포되어 있는 것으로 한다.
(2) 발행 공개키 저장부(211)
발행 공개키 저장부(211)는 키 발행 서버(100)에서 수신한 공개키 「PK」를 기억하는 영역을 구비하고 있다.
(3) 발행 식별자 정보 저장부(212)
발행 식별자 정보 저장부(212)는 키 발행 서버(100)에서 수신한 발행 식별자 정보 「IDI」를 기억하는 영역을 구비하고 있다.
(4) 공개키 증명서 저장부(213)
공개키 증명서 저장부(213)는 발행한 공개키 증명서 「Cert」를 기억하는 영역을 구비하고 있다.
(5) 발행 공개키 확인부(214)
발행 공개키 확인부(214)는, 도 6에 도시한 바와 같이, 서버정보 기억영역(220) 및 확인정보 기억영역(221)을 가지고 있다.
서버정보 기억영역(220)은 공개키 증명서의 발행의뢰가 있었던 키 발행 서버를 식별하는 서버 식별자를 기억하는 영역을 구비하고 있다.
확인정보 기억영역(221)은, 도 7에 도시한 바와 같이, 검증 값 테이블 T200을 가지고 있다. 검증 값 테이블 T200은, 서버 식별자와, 제 1 검증 값과, 제 2 검증 값으로 이루어지는 세트를 하나 이상 기억하는 영역을 구비하고 있다. 서버 식별자는 키 발행 서버를 식별하는 식별자이며, 「SIDA」는 키 발행 서버(100)를 나타내고, 「SIDB」는 키 발행 서버(101)를 나타내며, 「SIDC」는 키 발행 서버(102) 를 나타낸다. 제 1 검증 값 및 제 2 검증 값은 대응된 서버 식별자에 나타내는 키 발행 서버에 할당한 검증 값이다. 또, 이후에는 키 발행 서버(100)의 서버 식별자를 「SID」로 설명한다.
발행 공개키 확인부(214)는, 키 발행 서버(100)에서 수신부(217)를 통해서 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신한다.
발행 공개키 확인부(214)는 수신한 서버 식별자를 서버정보 기억영역(220)에 기록한다.
발행 공개키 확인부(214)는 수신한 서버 식별자를 이용하여 대응하는 제 1 검증 값 「c11」 및 제 2 검증 값 「c12」를 판독한다.
발행 공개키 확인부(214)는, 수신한 공개키 「PK」와 발행 식별자 정보 「IDI」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다.
여기서, 확인방법에 대하여 설명한다. 공개키 「PK」는, 상술한 바와 같이 「PK=(n, e)」이다. 발행 공개키 확인부(214)는 「n-(c11×c12)」를 산출하고, 산출결과가 「IDI」로 나누어지는가 여부를 검증한다. 이에 의해, 공개키 「PK」 거 발행 식별자 정보 「IDI」를 이용하여 생성되었는가의 여부를 확인할 수 있다.
발행 공개키 확인부(214)는, 「n-(c11×c12)」가 「IDI」로 나누어진다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단하고, 「n-(c11×c12)」가 「IDI」로 나누어지지 않는다고 판단한 경우에 는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한다.
발행 공개키 확인부(214)는, 공개키 「PK」가 발행 식별자 정보 「IDI」를
이용하여 생성되었다고 판단한 경우에는, 수신한 공개키 「PK」를 발행 공개키 저장부(211)에, 발행 식별자 정보를 발행 식별자 정보 저장부(212)에, 각각 기록한다. 발행 공개키 확인부(214)는 공개키 증명서의 생성개시명령을 공개키 증명서 생성부(215)에 출력한다.
발행 공개키 확인부(214)는 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한 경우에는 처리를 종료한다.
(6) 공개키 증명서 생성부(215)
공개키 증명서 생성부(215)는, 발행 공개키 확인부(214)에서 공개키 증명서의 생성개시명령을 수신하면, 비밀키 저장부(210)에서 비밀키 「SKCA」를, 발행 공개키 저장부(211)에서 공개키 「PK」를, 발행 식별자 정보 저장부(212)에서 발행 식별자 정보 「IDI」를, 각각 판독한다.
공개키 증명서 생성부(215)는, 판독한 비밀키 「SKCA」, 공개키 「PK」 및 발행 식별자 정보 「IDI」를 이용하여 공개키 증명서 「Cert」를 생성한다. 생성한 공개키 증명서 「Cert」는, 구체적으로는 「Cert=n∥e∥IDI∥Sig(SKCA, n∥e∥IDI)」이다. 여기서, Sig(K, D)는, 데이터 「D」에 대하여 비밀키 「K」를 이용했을 때의 서명 데이터이다. 기호 「∥」는 비트 또는 바이트의 연결이다.
공개키 증명서 생성부(215)는, 생성한 공개키 증명서 「Cert」를 공개키 증 명서 저장부(213)에 기록하고, 공개키 증명서 「Cert」의 송신개시명령을 증명서 취득부(216)에 출력한다.
(7) 증명서 취득부(216)
증명서 취득부(216)는, 공개키 증명서 생성부(215)에서 공개키 증명서 「Cert」의 송신개시명령을 수신하면, 공개키 증명서 저장부(213)에서 공개키 증명서「Cert」를, 서버정보 기억영역(220)에서 서버 식별자를 각각 판독하고, 판독한 공개키 증명서 「Cert」를 판독한 서버 식별자에 대응하는 키 발행 서버(100)에 송신부(218)를 통해서 송신한다.
(8) 수신부(217)
수신부(217)는, 키 발행 서버(100)에서 정보를 수신하고, 수신한 정보를 발행 공개키 확인부(214)에 출력한다.
(9) 송신부(218)
송신부(218)는 증명서 취득부(216)에서 정보를 수신하고, 수신한 정보를 키 발행 서버(100)에 송신한다.
1. 4 단말장치(300)의 구성
단말장치(300)는, 도 8에 도시한 바와 같이, 비밀키 저장부(310), 공개키 증명서 저장부(311), 제어부(312), 접수부(313), 무선부(314), 베이스밴드 신호처리부(315), 스피커(316), 마이크(317) 및 표시부(318)로 구성되어 있다. 단말장치(300)의 일례는 휴대전화기이다.
단말장치(300)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 단말장치(300)는 그 기능을 달성한다.
또, 단말장치(301, …, 302, 303, …, 304, 305, …, 306)는 단말장치(300)와 동일한 구성이므로, 설명은 생략한다.
또, 단말장치 301, …, 302에서 키 발행 의뢰정보와 단말 식별자를 키 발행 서버 100에 송신한 경우, 단말장치 303, …, 304에서 키 발행 의뢰정보와 단말 식별자를 키 발행 서버 101에 송신한 경우, 및 단말장치 305, …, 306에서 키 발행의뢰정보와 단말 식별자를 키 발행 서버 102에 송신한 경우의 동작은, 단말장치(300)에서 키 발행 의뢰정보와 단말 식별자를 키 발행 서버(100)에 송신한 경우의 동작과 동일하므로, 이후의 설명에서는 키 발행 의뢰정보와 단말 식별자를 키 발행 서버(100)에 송신한 경우의 동작에 대하여 설명한다.
(1) 비밀키 저장부(310)
비밀키 저장부(310)는, 키 발행 의뢰정보를 송신한 키 발행 서버, 여기에서는 키 발행 서버(100)에서 발행된 비밀키 「SK=(p1, p2, d)」를 기억하는 영역을 구비하고 있다.
(2) 공개키 증명서 저장부(311)
공개키 증명서 저장부(311)는 키 발행 서버(100)에서 발행된 비밀키에 대응하는 공개키의 공개키 증명서 「Cert」를 기억하는 영역을 구비하고 있다.
(3) 제어부(312)
제어부(312)는, 도 8에 도시한 바와 같이, 단말 식별자 기억영역(320)을 가지고 있다.
제어부(312)는 암호화된 전자 메일을 기억하는 메일 기억영역도 구비하고 있다.
단말 식별자 기억영역(320)은 당해 장치를 식별하는 단말 식별자 「TID」를 미리 기억하고 있다.
제어부(312)는, 접수부(313)에서 키 발행요구의 지시를 접수하면, 단말 식별자 기억영역(320)에서 단말 식별자 「TID」를 판독한다.
제어부(312)는 키 발행 의뢰정보와 판독한 단말 식별자 「TID」를 키 발행 서버(100)에 베이스밴드 신호처리부(315) 및 무선부(314)를 통해서 송신한다.
제어부(312)는, 키 발행 서버(100)에서 무선부(314) 및 베이스밴드 신호처리부(315)를 통해서 비밀키 「SK」 및 공개키 증명서 「Cert」를 수신하면, 수신한 비밀키 「SK」를 비밀키 저장부(310)에, 공개키 증명서 「Cert」를 공개키 증명서 저장부(311)에 각각 기록한다.
제어부(312)는, 단말장치(400)에서 무선부(314) 및 베이스밴드 신호처리부(315)를 통해서 암호화된 전자 메일을 수신하면, 수신한 암호화된 전자 메일을 메일 기억영역에 기록한다.
제어부(312)는, 접수부(313)에서 암호화된 전자 메일의 표시명령을 수신하면, 비밀키 저장부(310)에서 비밀키 「SK」를, 메일 기억영역에서 암호화된 전자 메일을 각각 판독하고, 판독한 비밀키 「SK」를 이용하여 암호화된 전자 메일을 복호 하며, 복호 된 전자 메일(이하, 간단히 「전자 메일」이라 한다)를 표시부(318)에 출력한다.
(4) 접수부(313)
접수부(313)는, 사용자의 조작에 의해 키 발행요구의 지시를 접수하면, 접수한 지시를 제어부(312)에 출력한다.
접수부(313)는, 사용자의 조작에 의해 암호화된 전자 메일의 표시의 지시를 접수하면, 표시명령을 제어부(312)에 출력한다.
(5) 무선부(314)
무선부(314)는 안테나(319)를 구비하고 있으며, 무선신호의 송수신을 행한다.
(6) 베이스밴드 신호처리부(315)
베이스밴드 신호처리부(315)는, 무선부(314)에서 수신한 신호를 스피커(316)에 출력하기 위한 신호처리나 마이크(317)에서 수신한 음성을 무선부(314)에 출력하기 위한 신호처리를 행한다.
베이스밴드 신호처리부(315)는, 제어부(312)에서 키 발행 의뢰정보 및 단말 식별자를 수신하면, 수신한 키 발행 의뢰정보 및 단말 식별자를 무선부(314)를 통해서 키 발행 서버(100)에 송신한다.
베이스밴드 신호처리부(315)는, 키 발행 서버(100)에서 비밀키 및 공개키 증명서를 무선부(314)를 통해서 수신하면, 수신한 비밀키 및 공개키 증명서를 제어 부(312)에 출력한다.
베이스밴드 신호처리부(315)는, 키 발행 서버(100)에서 비밀키 및 공개키 증명서를 무선부(314)를 통해서 수신하면, 수신한 비밀키 및 공개키 증명서를 제어부(312)에 출력한다.
베이스밴드 신호처리부(315)는, 단말장치(400)에서 암호화된 전자 메일을 무선부(314)를 통해서 수신하면, 수신한 암호화된 전자 메일을 제어부(312)에 출력한다.
(7) 스피커(316)
스피커(316)는 베이스밴드 신호처리부(315)에서 처리된 신호를 음성으로 출력한다.
(8) 마이크(317)
마이크(317)는 사용자의 음성을 접수하고, 접수한 음성을 베이스밴드 신호처리부(315)에 출력한다.
(9) 표시부(318)
표시부(318)는 제어부(312)에서 수신한 전자 메일을 표시한다.
1. 5 키 발행시스템 1의 동작
여기에서는, 키 발행시스템 1의 동작에 대하여 설명한다.
(1) 키 발행시스템 1의 동작개요
키 발행시스템 1의 동작개요를 도 9에 도시한 흐름도를 이용하여 설명한다.
이하에는, 키 발행 서버(100)가 단말장치(300)에 키를 발행할 때의 동작개요 를 나타낸다.
단말장치(300)는, 우선 키 의뢰처리에서 키 발행 의뢰정보 및 단말 식별자「TID」를 키 발행 서버(100)에 송신한다(스텝 S5).
키 발행 서버(100)는, 단말장치(300)에서 키 발행 의뢰정보 및 단말 식별자 「TID」를 수신하면, 키 발행처리에서 발행 식별자 정보 「IDI」, 비밀키 「SK=(p1, p2, d)」 및 공개키 「PK=(n, e)」를 생성한다. 키 발행 서버(100)는, 생성한 발행 식별자 정보 「IDI」 및 공개키 「PK」와, 증명서 발행 의뢰정보와, 서버 식별자 「SID」를 증명서 발행 서버(200)에 송신한다(스텝 S10).
증명서 발행 서버(200)는, 발행 식별자 정보 「IDI」 및 공개키 「PK」와, 증명서 발행 의뢰정보와, 서버 식별자 「SID」를 수신하면, 증명서 발행 처리에 의해 공개키 「PK」에 대응하는 비밀키 「SK」에 포함되는 소수 「p1」, 「p2」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있는지를 판정하고, 판정결과가 긍정적인 경우에, 공개키 「PK」에 대한 공개키 증명서 「Cert」를 생성한다. 증명서 발행 서버(200)는 생성한 공개키 증명서 「Cert」를 키 발행 서버(100)에 송신한다(스텝 S15).
키 발행 서버(100)는, 키 발행 처리에서 증명서 발행 서버(200)에서 공개키 증명서 「Cert」를 수신하면, 비밀키 「SK=(p1, p2, d)」와 공개키 증명서「Cert」를 단말장치(300)에 송신한다(스텝 S20).
단말장치(300)는, 키 의뢰 처리에서 키 발행 서버(100)에서 비밀키 「SK」와 공개키 증명서 「Cert」를 수신하면, 수신한 비밀키 「SK」, 공개키 증명서 「Cert 」를 저장하고, 시스템을 종료한다.
(2) 키 의뢰처리
여기에서는, 도 9에 도시한 키 의뢰처리의 동작에 대하여, 도 10에 도시한 흐름도를 이용하여 설명한다. 또, 여기에서는 단말장치(300) 및 키 발행 서버(100)를 이용하여 키 의뢰처리의 동작을 설명한다.
단말장치(300)의 접수부(313)는 사용자의 조작에 의해 키 발행요구의 지시를 접수한다(스텝 S100).
단말장치(300)의 제어부(312)는 단말 식별자 기억영역(320)에서 단말 식별자 「TID」를 취득한다(스텝 S105).
단말장치(300)의 제어부(312)는 키 발행 의뢰정보와 취득한 단말 식별자 「TID」를 키 발행 서버(100)에 베이스밴드 신호처리부(315) 및 무선부(314)를 통해서 송신한다(스텝 S110).
단말장치(300)의 제어부(312)는, 키 발행 서버(100)에서 무선부(314) 및 베이스밴드 신호처리부(315)를 통해서 비밀키 「SK」 및 공개키 증명서 「Cert」를 수신한다(스텝 S115).
제어부(312)는, 수신한 비밀키 「SK」를 비밀키 저장부(310)에 기록하고(스텝 S120), 공개키 증명서 「Cert」를 공개키 증명서 저장부(311)에 기록한다(스텝 S125).
(3) 키 발행처리
여기에서는, 도 9에 도시한 키 발행처리의 동작에 대하여, 도 11, 도 12, 도 13 및 도 13에 도시한 흐름도를 이용하여 설명한다.
키 발행 서버(100)의 제어부(114)는, 단말장치(300)에서 수신부(120)를 통해서 키 발행 의뢰정보와 단말장치(300)의 단말 식별자 「TID」를 수신하면(스텝 S200), 수신한 단말 식별자 「TID」를 단말정보 기억영역(131)에 기록하고, 발행 식별자 정보의 생성명령과, 수신한 단말 식별자 「TID」를 식별자 생성부(115)에 출력한다(스텝 S205).
식별자 생성부(115)는, 제어부(114)에서 발행 식별자 정보의 생성명령과, 단말 식별자 「TID」를 수신하면, 서버 식별자 기억영역에 기억되어 있는 서버 식별자 「SID」를 취득한다. 식별자 생성부(115)는, 취득한 서버 식별자 「SID」와, 수신한 단말 식별자 「TID」와 수 「1」에서 발행 식별자 정보 「IDI」를 생성하고, 생성한 발행 식별자 정보 「IDI」를 식별자 저장부(110)에 기록하며, 소수의 생성명령을 소수 생성부(116)에 출력한다(스텝 S210).
반복 제어부(132)는, 식별자 생성부(115)에서 소수의 생성개시명령을 수신하면, 반복 카운터(135) 및 출력 카운터(136)를 각각 「1」에 설정한다(스텝 S215).
반복 제어부(132)는 반복 카운터(135)의 값이 1인가 여부를 판단한다(스텝 S220).
1이라고 판단한 경우에는(스텝 S220에서의 「YES」), 반복 제어부(132)는 초기치 기억영역에서 소수와 그 비트사이즈를 판독하고(스텝 S225), 1이 아니라고 판단한 경우에는(스텝 S220에서의 「NO」), 일시기억영역에서 비트사이즈 「8×2^(n-1)」과, 그 소수, 즉 전회에 생성한 소수와 그 비트사이즈를 판독한다(스텝 S230). 즉, 반복 제어부(132)는, 반복 카운터(135)의 값이 1이 아니라고 판단한 경우에는, 일시기억영역에서 전회에 생성한 소수와 그 비트사이즈를 판독한다. 여기서, 「n」은 반복 카운터의 값이다.
반복 카운터(135)의 값에 대응하는 제어정보를 제어정보 테이블 T100에서 판독하고(스텝 S235), 판독한 제어정보가 「정보 C」인가 여부를 판단한다(스텝 S240).
「정보 C」라고 판단한 경우에는(스텝 S240에서의 「YES」), 반복 제어부(132)는, 판독한 소수 및 그 비트사이즈와 제어정보로 이루어지는 제 1 정보를 생성하고, 생성한 제 1 정보를 소수정보 생성부(133)에 출력한다(스텝 S245).
「정보 C」가 아니라고 판단한 경우에는(스텝 S240에서의 「NO」), 반복 제어부(132)는 식별자 저장부(110)에서 발행 식별자 정보 「IDI」를 취득하고, 취득한 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 산출하며, 판독한 소수 및 그 비트사이즈와, 제어정보와, 발행 식별자 정보 「IDI」및 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 생성하며, 생성한 제 2 정보를 소수정보 생성부(133)에 출력한다(스텝 S250).
소수정보 생성부(133)는, 소수 생성처리에 의해 소수를 생성하고, 생성한 소수를 반복 제어부(132)에 출력한다(스텝 S255).
반복 제어부(132)는, 소수정보 생성부(133)에서 소수를 수신하면, 반복 카운터(135)의 값에 「1」을 가산하고(스텝 S260), 가산결과가 7인가 여부를 판단한다(스텝 S265).
가산결과가 7이 아니라고 판단한 경우에는(스텝 S265에서의 「NO」), 반복 제어부(132)는 수신한 소수의 비트사이즈를 산출하고(스텝 S270), 수신한 소수와 산출한 비트사이즈를 일시적으로 기억하며(스텝 S275), 스텝 S220에 복귀한다.
가산결과가 7이라고 판단한 경우에는(스텝 S265에서의 「YES」), 반복 제어부(132)는 출력 카운터(136)의 값이 1인가 여부를 판단한다(스텝 S280).
1이라고 판단한 경우에는(스텝 S280에서의 「YES」), 반복 제어부(132)는 수신한 소수를 소수 「p1」으로 키 판정부(117)에 출력하고(스텝 S285), 출력 카운터(136)의 값에 「1」을 가산하며(스텝 S290), 반복 카운터(135)의 값에 「1」을 설정하고(스텝 S295), 스텝 S220에 복귀한다.
1이 아닌, 즉 2 이상이라고 판단한 경우에는(스텝 S280에서의 「NO」), 반복 제어부(132)는 수신한 소수를 소수 「p2」로 하고, 소수 「p2」와 판정개시명령을 키 판정부(117)에 출력한다(스텝 S300).
키 판정부(117)는, 스텝 S285에서 반복 제어부(132)로부터 소수 「p1」을 수신하면, 수신한 소수 「p1」을 소수기억영역에 기억한다. 키 판정부(117)는, 스텝 S300에서 반복 제어부(132)로부터 「p2」 및 판정개시명령을 수신하면, 수신한 소수 「p2」를 소수기억영역에 기억한다. 키 판정부(117)는 소수기억영역에서 기억하고 있는 2개의 소수 「p1」 과 「p2」가 일치하는가 여부를 판단한다(스텝 S305). 일치한다고 판단한 경우에는, 기억하고 있는 소수 「p2」를 소거하고, 재생성 명령을 반복 제어부(132)에 출력하며(스텝 S305에서의 「YES」), 반복 제어부(132)는 키 판정부(117)에서 소수를 다시 생성하는 취지의 재생성 명령을 수신하면, 상술한 스텝 S290 및 스텝 S295를 행하고, 스텝 S220에 복귀한다.
일치하지 않는다고 판단한 경우에는, 기억하고 있는 2개의 소수 「p1」 및 「p2」를 비밀키 저장부(111)의 소수저장영역에 기록하고, 키 생성개시명령을 키 생성부(118)에 출력하며(스텝 S305에서의 「NO」), 키 생성부(118)는, 키 판정부(117)에서 키 생성명령을 수신하면, 비밀키 저장부(111)의 소수저장영역에 기억되어 있는 2개의 소수 「p1」 및 「p2」를 판독하고, 판독한 소수 「p1」과 「p2」의 곱 「n=p1×p2」를 계산한다(스텝 S310).
키 생성부(118)는, 난수 「e」를 생성하고(스텝 S315), 산출한 「n」과, 생성한 난수 「e」로 이루어지는 세트 「PK=(n, e)」를 공개키로 생성하며, 생성한 공개키 「PK」를 공개키 저장부(112)에 기록한다(스텝 S320). 여기서, 난수 「e」는, 종래와 마찬가지로, 난수 「e」는 수 「L」과 서로 소이며, 「1≤e≤L-1, GCD(e, L)=1」을 만족한다. 수 「L」은 「L=LCM(p1-1, p2-1)」이다.
키 생성부(118)는, 「e×d=1 mod L」을 만족하는 「d」를 산출하고(스텝 S325), 산출한 「d」와, 소수 「p1」 및 「p2」로 이루어지는 세트 「SK=(p1, p2, d」를 비밀키로 하여 비밀키 저장부(111)의 비밀키 저장영역에 기록하며, 요구개시명령을 정보 취득부(119)에 출력한다(스텝 S330).
정보 취득부(119)는, 키 생성부(118)에서 요구개시명령을 수신하면, 식별자 저장부(110)에서 발행 식별자 정보 「IDI」와, 공개키 저장부(112)에서 공개키 「PK」와, 제어부(114)의 서버 식별자 기억영역(130)에서 서버 식별자를 각각 판독한다(스텝 S335). 정보 취득부(119)는, 판독한 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 공개키 증명서의 발행을 의뢰하는 증명서 발행 의뢰정보를 송신부(121)를 통해서 증명서 발행 서버(200)에 송신한다(스텝 S340).
제어부(114)는, 증명서 발행 서버(200)에서 수신부(120)를 통해서 공개키 증명서 「Cert」를 수신하면, 수신한 공개키 증명서 「Cert」를 증명서 저장부(113)에 기록하고, 배포개시명령을 정보 취득부(119)에 출력한다(스텝 S345).
정보 취득부(119)는, 제어부(114)에서 배포개시명령을 수신하면, 비밀키 저장부(111)에서 기억하고 있는 비밀키 「SK」와, 증명서 저장부(113)에서 기억하고 있는 공개키 증명서 「Cert」와, 제어부(114)의 단말정보 기억영역에서 기억하고 있는 단말 식별자를 각각 판독하고(스텝 S350), 판독한 비밀키 「SK」 및 공개키 증명서 「Cert」를 판독한 단말 식별자에 대응하는 단말장치(300)에 송신부(121)를 통해서 송신한다(스텝 S355).
(4) 소수 생성처리
여기에서는, 도 12에 도시한 소수 생성처리의 동작에 대하여, 도 15에 도시한 흐름도를 이용하여 설명한다.
정보 제어부(140)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보로 이루어지는 제 1 정보 및 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lneIDI」로 이루어지는 제 2 정보 중 어느 하나를 수신하면, 수신한 정보를 정보기억영역에 기록하고, 난수의 생성의 지시를 나타내는 제 1 생성지시를 난수 생성부(141)에 출력한다(스텝 S400).
난수 생성부(141)는, 난수의 생성의 지시를 나타내는 제 1 생성지시를 정보 제어부(140)에서 수신하면, 정보 제어부(140)의 정보기억영역에 기억되어 있는 제어정보를 판독하고(스텝 S405), 판독한 제어정보가 「정보 C」인가 여부를 판단한다(스텝 S410).
「정보 C」라고 판단한 경우에는(스텝 S410에서의 「YES」), 난수 생성부(141)는 정보 제어부(140)의 정보기억영역에 기억되어 있는 「lenq」를 판독하고(스텝 S415), (lenq-1) 비트로 이루어지는 난수 「R1」을 생성하며, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142)에 출력한다(스텝 S420). 여기서, 난수 「R1」의 최상위 비트는 1로 한다. 난수 생성방법은 비 특허문헌 2가 상세하다.
「정보 C」가 아니라고 판단한 경우에는(스텝 S410에서의 「NO」), 난수 생성부(141)는 정보 제어부(140)의 정보기억영역에 기억되어 있는 「lenq」 및 「lenIDI」를 판독하고(스텝 S425), (lenq-lneIDI-1) 비트로 이루어지는 난수 「R1」을 생성하며, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142)에 출력한다(스텝 S430). 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
소수 후보 생성부(142)는, 소수 후보 생성처리에 의해 난수 「R」과 소수 후보인 수 「N」을 생성하고, 생성한 난수 「R」을 생성정보 기억영역에 기억하며, 생성한 수 「N」을 제 1 소수 판정부(143)에 출력한다(스텝 S435).
제 1 소수 판정부(143)는, 수 「N」을 소수 후보 생성부(142)에서 수신하면, 수신한 수 「N」을 이용하여 상술한 식 (eq1)이 성립하는가 여부를 판단한다(스텝 S440).
제 1 소수 판정부(143)는, 식 (eq1)이 성립하고 있다고 판단한 경우에는, 수 「N」을 제 2 소수 판정부(144)에 출력하고(스텝 S440에서의 「YES」), 제 2 소수 판정부(144)는, 수 「N」을 제 1 소수 판정부(143)에서 수신하면, 소수 후보 생성부(142)의 생성정보 기억영역에 기억되어 있는 수 「R」을 판독하고, 상술한 식 (eq2)가 성립하는가 여부를 판단한다(스텝 S445).
제 2 소수 판정부(144)는, 식 (eq2)가 성립하고 있다고 판단한 경우에는(스텝 S445에서의 「YES」), 수 「N」을 소수 「N」으로 하여, 정보 제어부(140)를 통해서 반복 제어부(132)에 출력한다(스텝 S450).
제 1 소수 판정부(143)는, 식 (eq1)이 성립하고 있지 않다고 판단한 경우에는, 난수 생성부(141)에 제 2 생성지시를 출력하고(스텝 S440에서의「NO」), 제 2 소수 판정부(144)는 식 (eq2)가 성립하고 있지 않다고 판단한 경우에는, 난수 생성부(141)에 제 2 생성지시를 출력하며(스텝 S445에서의 「NO」), 난수 생성부(141)는 제 1 소수 판정부(143) 및 제 2 소수 판정부(144) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 스텝 S405에 복귀한다.
(5) 소수 후보 생성처리
여기에서는, 도 15에 도시한 소수 후보 생성처리의 동작에 대하여, 도 16 및 도 17에 도시한 흐름도를 이용하여 설명한다.
소수 후보 생성부(142)는, 난수 생성부(141)에서 난수 「R1」과 제어정보를 수신하면(스텝 S500), 수신한 제어정보가 「정보 C」인가 여부를 판단한다(스텝 S505).
「정보 C」라고 판단한 경우에는(스텝 S505에서의 「YES」), 소수 후보 생성부(142)는 정보 제어부(140)의 정보기억영역에서 소수 「q」를 판독한다(스텝 S510). 소수 후보 생성부(142)는, 판독한 소수 「q」와 난수 생성부(141)에서 수신한 난수 「R1」을 이용하여 「N=2×R1×q+1」을 생성한다(스텝 S515). 소수 후보 생성부(142)는, 생성한 수 「N」의 비트사이즈 「lenN」이 「lenq」와 일치하는가 여부를 판단하고(스텝 S520), 일치한다고 판단한 경우에는(스텝 S520에서의 「YES」), 소수 후보 생성부(142)는 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하며, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다(스텝 S595).
일치하지 않는다고 판단한 경우에는(스텝 S520에서의 「NO」), 소수 후보 생성부(142)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하며(스텝 S525), 스텝 S515에 복귀한다.
제어정보가 「정보 C」가 아니라고 판단한 경우에는(스텝 S505에서의 「NO」), 소수 후보 생성부(142)는, 정보 제어부(140)의 정보기억영역에서 소수 「q」 및 발행 식별자 정보 「IDI」를 판독한다(스텝 S530). 소수 후보 생성부(142)는 제어정보가 「정보 B」인가 여부를 판단한다(스텝 S535).
「정보 B」라고 판단한 경우에는(스텝 S535에서의 「YES」), 소수 후보 생성부(142)는, 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」에서 결합 값 「IDI∥R1」을 생성하고, 생성한 결합 값 「IDI∥R1」과 함수 기억영역에서 기억하고 있는 함수 「f」를 이용하여 수 「R=f(IDI∥R1)」을 생성한다(스텝 S540).
소수 후보 생성부(142)는 생성한 수 「R」과 판독한 소수 「q」를 이용하여 수 「N=2×R×q+1」을 생성한다(스텝 S545).
소수 후보 생성부(142)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다(스텝 S550).
「2×lenq」라고 판단한 경우에는(스텝 S550에서의 「YES」), 소수 후보 생성부(142)는 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다(스텝 S595).
「2×lenq」가 아니라고 판단한 경우에는(스텝 S550에서의 「NO」), 소수 후보 생성부(142)는 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고(스텝 S555), 스텝 S540에 복귀한다.
「정보 B」가 아니라고 판단한 경우에는(스텝 S535에서의 「NO」), 소수 후보 생성부(142)는 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」를 이용하여 수 「R=IDI×R1」을 생성한다(스텝 S560). 소수 후보 생성부(142)는, 횟수판독명령을 정보 제어부(140)에 출력하고, 정보 제어부(140)에서 출력 카운터(136)의 값을 수신한다. 소수 후보 생성부(142)는 수신한 값에 「1」인가 여부를 판단한다(스텝 S565).
출력횟수가 「1」이라고 판단한 경우에는(스텝 S565에서의「YES」), 소수 후보 생성부(142)는 정보 제어부(140)의 검증 값 기억영역에서 제 1 검증 값 「c11」을 판독한다(스텝 S570). 소수 후보 생성부(142)는, 판독한 소수 「q」, 발행 식별자 정보 「IDI」, 검증 값 「c11」 및 생성한 수 「R」을 이용하여 수 「N=2 ×(R+w1)×q+1」을 생성한다(스텝 S575). 여기서, 「w1」은 「2×w1×q+1=c11 mod IDI, 0≤w1<IDI」를 만족하는 수이다.
출력횟수가 「1」이 아닌, 즉 「2」 이상이라고 판단한 경우에는(스텝 S565에서의 「NO」), 소수 후보 생성부(142)는 정보 제어부(140)의 검증 값 기억영역에서 제 2 검증 값 「c12」를 판독한다(스텝 S580). 소수 후보 생성부(142)는 판독한 소수 「q」, 발행 식별자 정보 「IDI」, 검증 값 「c12」 및 생성한 수 「R」을 이용하여 수 「N=2×(R+w2)×q+1」을 생성한다(스텝 S585). 여기서, 「w2」는 「2×w2×q+1=c12 mod IDI, 0≤w2<IDI」를 만족하는 수이다.
소수 후보 생성부(142)는, 소수 「q」의 비트사이즈 「lenq」를 정보 제어부(140)의 정보기억영역에서 판독하고, 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다(스텝 S590).
「2×lenq」라고 판단한 경우에는(스텝 S590에서의 「YES」), 소수 후보 생성부(142)는, 생성한 수 「N」을 제 1 소수 판정부(143)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다(스텝 S595).
「2×lenq」가 아니라고 판단한 경우에는(스텝 S590에서의 「NO」), 소수 후보 생성부(142)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고(스텝 S600), 스텝 S560에 복귀한다.
(6) 증명서 발행 처리
여기에서는, 도 9에 도시한 증명서 발행 처리의 동작에 대하여, 도 18에 도시한 흐름도를 이용하여 설명한다.
증명서 발행 서버(200)의 발행 공개키 확인부(214)는, 키 발행 서버(100)에서 수신부(217)를 통해서 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신한다(스텝 S650).
발행 공개키 확인부(214)는 수신한 서버 식별자를 서버정보 기억영역(220)에 기록한다(스텝 S655).
발행 공개키 확인부(214)는 수신한 서버 식별자를 이용하여 대응하는 제 1 검증 값 「c11」 및 제 2 검증 값 「c12」를 판독한다(스텝 S660).
발행 공개키 확인부(214)는, 판독한 제 1 검증 값 「c11」 및 제 2 검증 값 「c12」와, 수신한 공개키 「PK」와, 발행 식별자 정보 「IDI」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다(스텝 S660).
발행 공개키 확인부(214)는, 「n-(c11×c12)」가 「IDI」로 나누어진다고 판단한 경우, 즉 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단한 경우에는(스텝 S660에서의 「YES」), 발행 공개키 확인부(214)는 수신한 공개키 「PK」를 발행 공개키 저장부(211)에, 발행 식별자 정보를 발행 식별자 정보 저장부(212)에 각각 기록한다. 발행 공개키 확인부(214)는 공개키 증명서의 생성개시명령을 공개키 증명서 생성부(215)에 출력한다(스텝 S665).
발행 공개키 확인부(214)는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한 경우에는(스텝 S660에서의 「YES」), 처리를 종료한다.
공개키 증명서 생성부(215)는, 발행 공개키 확인부(214)에서 공개키 증명서의 생성개시명령을 수신하면, 비밀키 저장부(210)에서 비밀키 「SKCA」를, 발행 공개키 저장부(211)에서 공개키 「PK」를, 발행 식별자 정보 저장부(212)에서 발행 식별자 정보 「IDI」를 각각 판독한다(스텝 S670).
공개키 증명서 생성부(215)는, 판독한 비밀키 「SKCA」, 공개키 「PK」 및 발행 식별자 정보 「IDI」를 이용하여 공개키 증명서 「Cert」를 생성하고, 생성한 공개키 증명서 「Cert」를 공개키 증명서 저장부(213)에 기록하며, 공개키 증명서 「Cert」의 송신개시명령을 증명서 취득부(216)에 출력한다(스텝 S675).
증명서 취득부(216)는, 공개키 증명서 생성부(215)에서 공개키 증명서 「Cert」의 송신개시명령을 수신하면, 공개키 증명서 저장부(213)에서 공개키 증명서 「Cert」를, 서버정보 기억영역(220)에서 서버 식별자를 각각 판독하고, 판독한 공개키 증명서 「Cert」를 판독한 서버 식별자에 대응하는 키 발행 서버(100)에 송신부(218)를 통해서 송신한다(스텝 S680).
1. 6 소수 정보 생성부(133)의 동작검증
소수 정보 생성부(133)의 제 1 소수 판정부(143) 및 제 2 소수 판정부(144)는 Pocklington 판정이다. Pocklington 판정은 비 특허문헌 1의 144페이지 및 비 특허문헌 4에 상세하게 기재되어 있다. 이하에, 간단하게 설명한다.
Pocklington판정에 의하면, 「N=2×R×q+1」의 「q」가 소수이고,
2^(N-1) = 1 mod N
2^(2R) ≠ 1 mod N
의 양방이 성립하는 경우, 수 「N」은 소수가 되고, 소수 정보 생성부(133)는 수 「N」을 소수로 출력할 수 있다.
또, 난수 「R1」의 비트사이즈가 (lenq-lenIDI-1)이므로, 수 「R」의 비트사이즈가 (lenq-1)이 되어 대부분의 수 「N」의 비트사이즈가 (2×lenq)가 된다. 여기서, 소수 「q」나 발행 식별자 정보 「IDI」등의 값에 따라서는 비트사이즈가 (2×lenq-1)이 되는 경우가 있다. 그 경우는, 소수 후보 생성부(142)는, 상술한 바와 같이 R1에 2를 곱하여 그것을 새롭게 R1으로 함으로써, 생성하는 수 「N」의 비트사이즈를 (2×lenq)가 되도록 설정할 수 있다.
1. 7 제 1 실시 예의 효과
(1) 생성되는 키의 고유성
여기에서는, 키 발행 서버(100)에서 생성되는 키, 즉 소수의 고유성에 대하여 설명한다.
여기서, 이하의 명제(proposition)를 설명한다.
(명제) 발행 식별자 정보 IDI가 다르면, 출력되는 소수 「N」이 다르다.
우선, 이하의 보제(補題, lemma)를 설명하고, 그 보제를 이용하여 상기 명제를 설명한다.
(보제) 2개의 소수 「p1=2×q1×R1+1」 및 「p2=2×q2×R2+1」에 대하여, p1=p2이면, q1=q2 또한 R1=R2가 된다.
(증명) p1=p2인 경우, 소수 「q1」 및 「q2」의 비트사이즈는 각각 256비트이고, 수 「R1」 및 「R2」의 비트사이즈는 각각 255비트이므로, q1=q2가 되는 것 은 명백하다. 또, q1=q2에서 R1=R2도 성립한다(증명 종료).
상기 보제에서 p1=p2이면 R1=R2가 성립한다. R1=f(IDI1∥R11), R2=f(IDI2∥R22)로 해두면 R1=R2이며, f는 단사이므로, IDI1=IDI2가 성립한다. 따라서, 이 대우(contraposition)를 취함으로써, 상기의 명제가 성립한다. 이상으로부터, IDI가 다르면 반드시 소수가 달라진다. 따라서, 키 발행 서버(100)에 부여하는 IDI를 매회 바꿈으로써, 매회 다른 소수를 생성할 수 있다. 이에 의해, 생성되는 소수는 고유성이 유지된다.
따라서, 복수 회 생성한 소수가 일치하지 않는 것을 비교하지 않고 증명할 수 있다.
(2) 생성된 키의 정당성
키 발행 서버(100)에서 생성된 소수 「p1」에 대하여 「p1-c11」은 반드시 발행 식별자 정보 「IDI」로 나누어진다.
왜냐하면, 「p1-c11=2×q×(R+w1)+1-c11=2×q×(IDI×R1+w1)+1-c11=2×q×IDI×R1+2×q×w1+1-c11」이고, 항 「2×q×IDI×R」은 「IDI」로 나누어지는 것을 알 수 있다. 또, 상술한 바와 같이, 「2×q×w1+1=c11 mod IDI」가 성립되어 있으므로, 남은 항 「2×q×w1+1-c11」도 「IDI」로 나누어진다. 즉, 키 발행 서버(100)에서 생성된 소수 「p1」에 대하여 「p1-c11」은 반드시 발행 식별자 정보 「IDI」로 나누어진다. 따라서, 생성된 소수 「p1」에 대하여, 「p1-c11」이 발행 식별자 정보 「IDI」로 나누어지는가의 여부로 키 발행 서버(100)를 이용하여 소수가 생성되었는지를 확인할 수 있다.
또, 상기와 동일한 이유에 의해, 소수 「p1」에 대하여 「p2-c12」는 반드시 발행 식별자 정보 「IDI」로 나누어진다.
따라서, 「n-c11×c12」는 「IDI」로 나누어지므로, 증명서 발행 서버(200)는 「n-c11×c12」가 「IDI」로 나누어지는 것을 확인함으로써, 소수 「p1」, 「p2」가 바르게 발행 식별자 정보 「IDI」를 이용하여 생성하고 있는지를 확인할 수 있다.
왜냐하면, 비밀키인 소수 「p1」, 「p2」는 각각 소수 「q1」, 「q2」, 난수 「R1」, 「R12」, 발행 식별자 정보 「IDI」에 대하여, 「p1=2×q1×(IDI×R11+w1)+1=c11 mod IDI」, 「p2=2×q2×(IDI×R12+w1)+1=c12 mod IDI」를 만족하므로,
n=p1×p2=(2×q1×IDI×R11+1)×(2×q2×IDI×R12+1)
=c11×c12 mod IDI
가 된다. 따라서, 증명서 발행 서버(200)는 「n-c11×c12」가 「IDI」로 나누어지는가의 여부를 확인함으로써, 키 발행 서버가 바르게 발행 식별자 정보 IDI를 이용하여 생성하고 있는지를 확인할 수 있다.
또, 「IDI」의 비트사이즈가 「lenIDI」이고, 「R1」의 비트사이즈가 (lenq-lenIDI-1)이므로, 대부분의 「N1=2×q×(IDI×R1+w)+1」의 비트사이즈는 2×lenq1이 된다. 여기서, 「q1」이나 「IDI」등의 값에 따라서는, 비트사이즈가 (2×lenq-1)이 되는 경우가 있다. 그 경우는, 소수 후보 생성부(142)에서 「R1」에 2를 곱하여 그것을 새롭게 「R1」으로 간주함으로써, 「N1」의 비트사이즈를 「2×lenq1」 이 되도록 설정할 수 있다.
또, 키 발행시스템 1은, 단말이 그 단말이 갖는 비밀키를 이용하여 부정하게 작용했을 경우, 이하의 확인방법에 의해 비밀키에서 부정하게 작용한 단말의 정보를 얻을 수 있다. 부정하게 작용한 단말의 비밀키 「p1」, 「p2」가 판명되었다고 하자. 또, 부정한 추적자, 예를 들어 증명서 발행 서버(200)의 관리자는 발행 식별자 정보와 단말의 대응 표를 구비하고 있는 것으로 한다. 「p1-c11」, 「p2-c12」는 모두 발행 식별자 정보 「IDI」로 나누어진다. 따라서, GCD(p1-c11, p2-c12)는 발행 식별자 정보로 나누어진다. 따라서, GCD(p1-c11, p2-c12)의 소인수를 살펴봄으로써, 부정한 추적자는 취할 수 있는 발행 식별자 정보를 한정할 수 있고, 발행 식별자 정보를 알 수 있는, 즉 단말을 특정하기 위한 도움이 된다.
1. 10 소수 생성의 변형 예 1
상기 실시 예에서는 제 1 검증 값 및 제 2 검증 값의 2개의 검증 값을 이용하였으나, 여기에서는 하나의 검증 값을 이용한 경우의 소수의 생성에 대하여 설명한다.
상기 실시 예 와 다른 점은 키 발행 서버에서의 소수정보 생성부와 증명서 발행 서버에서의 발행 공개키 확인부가 다르다. 이하에, 본 변형 예에서의 소수정보 생성부(133A) 및 발행 공개키 확인부(214A)에 대하여 설명한다. 또, 다른 구성요소에 대해서는 제 1 실시 예에서 설명한 구성요소를 이용한다.
(1) 소수 정보 생성부(133A)
소수 정보 생성부(133A)는, 도 9에 도시한 바와 같이, 정보 제어부(140A), 난수 생성부(141A), 소수 후보 생성부(142A), 제 1 소수 판정부(143A) 및 제 2 소수 판정부(144A)로 구성되어 있다.
소수 정보 생성부(133A)는 반복 제어부(132)에서 수신한 소수의 비트사이즈가 2배의 비트사이즈로 이루어지는 소수를 생성한다.
또, 이하의 설명에서 반복 제어부(132)에서 수신하는 소수를 소수 「q」, 그 비트사이즈를 「lenq」로 하여 각 구성요소에 대하여 설명한다.
<정보 제어부(140A)>
정보 제어부(140A)는 제 1 정보 및 제 2 정보를 기억하기 위한 정보기억영역을 구비하고 있다.
정보 제어부(140A)는, 증명서 발행 서버(200)에 의해 할당되고, 또한 제어정보 「정보 A」에 의거하여 소수를 생성할 때에 이용하는 검증 값 「c1」을 미리 기억하고 있는 검증 값 기억영역을 구비하고 있다.
정보 제어부(140A)는, 반복 제어부(132)에서 소수 「q」와, 소소의 비트사이즈 「lenq」와, 제어정보로 이루어지는 제 1 정보를 수신하면, 수신한 제 1 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보(이 경우, 「정보 C」)를 기록한다.
정보 제어부(140A)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 수신하면, 수신한 제 2 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」를 기록한다.
정보 제어부(140A)는, 수신한 정보의 기록 후, 난수의 생성의 지시를 나타내는 제 1 생성지시를 난수 생성부(141A)에 출력한다.
정보 제어부(140A)는 제 2 소수 판정부(144A)에서 소수를 수신하면, 수신한 소수를 반복 제어부(132)에 출력한다.
<난수 생성부(141A)>
난수 생성부(141A)는 제 1 실시 예에서 설명한 난수 생성부(141A)와 동일하므로 설명은 생략한다.
<소수 후보 생성부(142A)>
소수 후보 생성부(142A)는, 생성된 정보를 기억하는 생성정보 기억영역과, 단사인 함수 「f」를 미리 기억하고 있는 함수 기억영역을 구비하고 있다. 여기서, 함수 「f」는, 예를 들어 f(X∥Y)=Enc(K, X∥Y)이다. Enc(K, X∥Y)는 키 X를 이용했을 때의 (X∥Y)의 공통키 암호에 의한 암호문이다. 공통키 암호의 암호화 함수는 일반적으로 전단사이다. 또, 기호 「∥」는 비트 또는 바이트 연결이다. 암호화 함수 「Enc(K, X∥Y)」의 일례는, 「Enc(K, X∥Y)」=K XOR X∥Y」이다. 또, 공통암호의 일례는 DES이고, DES를 이용하는 경우에는 키 길이는 128비트가 된다.
소수 후보 생성부(142A)는, 난수 생성부(141A)에서 난수 「R1」과 제어정보를 수신하면, 수신한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 소수 후보 생성부(142A)는 정보 제어부(140A)의 정보기억영역에서 소수 「q」를 판독한다. 소수 후보 생성부(142A)는 판독한 소수 「q」와 난수 생성부(141A)에서 수신한 난수 「R1」을 이용하여 수 「N=2×R1×q+1」을 생성한다. 소수 후보 생성부(142A)는, 생성한 수 「N」의 비트사이즈 「lenN」이「lenq」와 일치하는가 여부를 판단하고, 일치한다고 판단한 경우에는, 소수 후보 생성부(142A)는 생성한 수 「N」을 제 1 소수 판정부(143A)에 출력하며, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다.
일치하지 않는다고 판단한 경우에는, 소수 후보 생성부(142A)는, 난수 생성부(141A)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 수 「N=2×R1×q+1」을 생성한다.
제어정보가 「정보 C」가 아니라고 판단한 경우에는, 소수 후보 생성부(142A)는, 정보 제어부(140A)의 정보기억영역에서 소수 「q」 및 발행 식별자 정보 「IDI」를 판독한다. 소수 후보 생성부(142A)는 제어정보가 「정보 B」인가 여부를 판단한다.
「정보 B」라고 판단한 경우에는, 소수 후보 생성부(142A)는 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」와 함수 기억영역에서 기억하고 있는 함수 「f」를 이용하여 수 「R=f(IDI∥R1)」을 생성한다. 소수 후보 생성부(142A)는 생성한 수 「R」과 판독한 소수 「q」를 이용하여 수 「N=2×R×q+1」을 생성한다.
소수 후보 생성부(142A)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142A)는, 생성한 수 「N」을 제 1 소수 판정부(143A)에 출력하고, 생성한 수 「R」을 생성정보 기억영역 에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142A)는, 난수 생성부(141A)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
「정보 B」가 아니라고 판단한 경우에는, 소수 후보 생성부(142A)는, 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」를 이용하여 수 「R=IDI×R1」을 생성한다.
소수 후보 생성부(142A)는 정보 제어부(140A)의 검증 값 기억영역에서 검증 값 「c1」을 판독한다.
소수 후보 생성부(142A)는, 판독한 소수 「q」, 발행 식별자 정보 「IDI」, 검증 값「c1」 및 생성한 수 「R」을 이용하여 수 「N=2×(R+w)×q+1」을 생성한다.
여기서, 「w」는 「2×w×q+1=c1 mod IDI, 0≤w<IDI」를 만족하는 수이다. 「w」는 「w=(c1-1)×m mod IDI」를 계산함으로써 구한다. 「m」은 「(2×q)×m=1 mod IDI」를 만족하는 수이다.
소수 후보 생성부(142A)는, 소수 「q」의 비트사이즈 「lenq」를 정보 제어부(140A)의 정보기억영역에서 판독하고, 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142A)는, 생성한 수 「N」을 제 1 소수 판정부(143A)에 출력하고, 생성한 수 「R」을 생성정보 기억영역 에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142A)는, 난수 생성부(141A)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
<제 1 소수 판정부(143A)>
제 1 소수 판정부(143A)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일하므로 설명은 생략한다.
<제 2 소수 판정부(144A)>
제 2 소수 판정부(144A)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일하므로 설명은 생략한다.
(2) 발행 공개키 확인부(214A)
발행 공개키 확인부(214A)는 도시하지는 않았으나 서버정보 기억영역(220A) 및 확인정보 기억영역(221A)을 가지고 있다.
서버정보 기억영역(220A)은 공개키 증명서의 발행의뢰가 있던 키 발행 서버를 식별하는 서버 식별자를 기억하는 영역을 구비하고 있다.
확인정보 기억영역(221A)은, 도 20에 도시한 바와 같이, 검증 값 테이블 T250을 가지고 있다. 검증 값 테이블 T250은 서버 식별자와 검증 값으로 이루어지는 세트를 하나 이상 기억하는 영역을 구비하고 있다. 서버 식별자는 키 발행 서버를 식별하는 식별자이고, 「SIDA」는 키 발행 서버(100)를 나타내고, 「SIDB」는 키 발행 서버(101)를 나타내며, 「SIDC」는 키 발행 서버(102)를 나타낸다. 검증 값은 대응된 서버 식별자에 나타나는 키 발행 서버에 할당한 검증 값이다. 또, 이후에는 키 발행 서버(100)의 서버 식별자를 「SID」로 설명한다.
발행 공개키 확인부(214A)는, 키 발행 서버(100)에서 수신부(217)를 통해서 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신한다.
발행 공개키 확인부(214A)는 수신한 서버 식별자를 서버정보 기억영역(220A)에 기록한다.
발행 공개키 확인부(214A)는 수신한 서버 식별자를 이용하여 대응하는 검증 값 「c1」을 판독한다.
발행 공개키 확인부(214A)는, 수신한 공개키 「PK」와 발행 식별자 정보 「IDI」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다.
여기서, 확인방법은, 「n-(c1)^2」가「IDI」로 나누어지는가 여부를 검증한다. 이에 의해, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인할 수 있다.
발행 공개키 확인부(214A)는, 「n-(c1)^2」가 「IDI」로 나누어진다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단하고, 「n-(c1)^2」가 「IDI」로 나누어지지 않는다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한다.
발행 공개키 확인부(214A)는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단한 경우에는, 수신한 공개키 「PK」를 발행 공개키 저장부(211)에, 발행 식별자 정보를 발행 식별자 정보 저장부(212)에 각각 기록한다. 발행 공개키 확인부(214A)는 공개키 증명서의 생성개시명령을 공개키 증명서 생성부(215)에 출력한다.
발행 공개키 확인부(214A)는 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한 경우에는 처리를 종료한다.
(3) 소수 후보 생성처리
본 변형 예에 따른 소수 후보 생성처리에 대하여 제 1 실시 예에서 설명한 소수 후보 생성처리와 다른 점만 설명한다. 또, 키 발행처리 및 소수 생성처리의 동작의 흐름은 제 1 실시 예와 동일하므로 설명은 생략한다.
소수 후보 생성부(142A)는, 도 16 및 도 17에 도시한 스텝 S500에서 스텝 S560까지를 실행 후, 스텝 S565를 생략하고, 스텝 S570에서 검증 값 「c1」을 판독한다. 소수 후보 생성부(142A)는 스텝 S575에서 수 「N=2×(R+w)×q+1」을 생성한다. 즉, 스텝 S565, 스텝 S580 및 스텝 S585를 생략하고, 스텝 S570 및 스텝 S575를 상기와 같이 변경한다.
이후는 제 1 실시 예와 동일하므로 설명은 생략한다.
즉, 본 변형 예에 따른 소수 후보 생성처리는 출력 카운터의 값에 관계없이 검증 값 「c1」과 소수 「q」와 수 「R」을 이용하여 수 「N」을 생성하게 된다.
(4) 증명서 발행처리
본 변형 예에 따른 증명서 발행처리에 대하여, 제 1 실시 예에서 설명한 증명서 발행처리와 다른 점만 설명한다.
발행 공개키 확인부(214A)는, 스텝 S660에서 수신한 서버 식별자에 대응하는 검증 값(예를 들어, 「c1」)을 판독하고, 스텝 S670에서 판독한 검증 값 「c1」과 공개키 「PK」와 발행 식별자 정보 「IDI」를 이용하여 「PK」가 「IDI」에서 생성되었는가의 여부를 확인한다.
1. 11 소수 생성의 변형 예 2
상기 실시 예에서는 제 1 검증 값 및 제 2 검증 값의 2개의 검증 값을 이용하였으나, 여기에서는 1개의 검증 값이고, 또한 그 검증 값이 고정 값 「1」인 경우의 소수의 생성에 대하여 설명한다.
상기 실시 예와 다른 점은, 키 발행 서버에서의 소수 정보 생성부와, 증명서 발행 서버에서의 발행 공개키 확인부가 다르다. 이하에, 본 변형 예에서의 소수정보 생성부(133B), 및 발행 공개키 확인부(214B)에 대하여 설명한다. 또, 다른 구성요소에 대해서는 제 1 실시 예에서 설명한 구성요소를 이용한다.
(1) 소수정보 생성부(133B)
소수정보 생성부(133B)는, 도 21에 도시한 바와 같이, 정보 제어부(140B), 난수 생성부(141B), 소수 후보 생성부(142B), 제 1 소수 판정부(143B) 및 제 2 소수 판정부(144B)로 구성되어 있다.
소수정보 생성부(133B)는 반복 제어부(132)에서 수신한 소수의 비트사이즈가 2배인 비트사이즈로 이루어지는 소수를 생성한다.
또, 이후의 설명에서 반복 제어부(132)에서 수신하는 소수를 소수 「q」, 그 비트사이즈를 「lenq」로 하여 각 구성요소에 대하여 설명한다.
<정보 제어부(140B)>
정보 제어부(140B)는 제 1 정보 및 제 2 정보를 기억하기 위한 정보기억영역을 구비하고 있다.
정보 제어부(140B)는, 제어정보 「정보 A」에 의거하여 소수를 생성할 때에 이용하는 검증 값 「1」을 미리 기억하고 있는 검증 값 기억영역을 구비하고 있다.
정보 제어부(140B)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보로 이루어지는 제 1 정보를 수신하면, 수신한 제 1 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보(이 경우, 「정보 C」)를 기록한다.
정보 제어부(140B)는, 반복 제어부(132)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 수신하면, 수신한 제 2 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」를 기록한다.
정보 제어부(140B)는, 수신한 정보의 기록 후, 난수의 생성의 지시를 나타내는 제 1 생성지시를 난수 생성부(141B)에 출력한다.
정보 제어부(140B)는 제 2 소수 판정부(144B)에서 소수를 수신하면, 수신한 소수를 반복 제어부(132)에 출력한다.
<난수 생성부(141B)>
난수 생성부(141B)는 제 1 실시 예에서 설명한 난수 생성부(141B)와 동일하므로 설명은 생략한다.
<소수 후보 생성부(142B)>
소수 후보 생성부(142B)는 생성된 정보를 기억하는 생성정보 기억영역과 단사인 함수 「f」를 미리 기억하고 있는 함수 기억영역을 구비하고 있다.
소수 후보 생성부(142B)는, 난수 생성부(141B)에서 난수 「R1」과 제어정보를 수신하면, 수신한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 소수 후보 생성부(142B)는, 정보 제어부(140B)의 정보기억영역에서 소수 「q」를 판독한다. 소수 후보 생성부(142B)는 판독한 소수 「q」와 난수 생성부(141B)에서 수신한 난수 「R1」을 이용하여 수 「N=2×R1×q+1」을 생성한다. 소수 후보 생성부(142B)는, 생성한 수 「N」의 비트사이즈 「lenN」이 「lenq」와 일치하는가 여부를 판단하고, 일치한다고 판단한 경우에는, 소수 후보 생성부(142B)는 생성한 수 「N」을 제 1 소수 판정부(143B)에 출력하고, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다.
일치하지 않는다고 판단한 경우에는, 소수 후보 생성부(142B)는, 난수 생성부(141B)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 수 「N=2×R1×q+1」을 생성한다.
제어정보가 「정보 C」가 아니라고 판단한 경우에는, 소수 후보 생성부(142B)는 정보 제어부(140B)의 정보기억영역에서 소수 「q」 및 발행 식별자 정 보 「IDI」를 판독한다. 소수 후보 생성부(142B)는 제어정보가 「정보 B」인가 여부를 판단한다.
「정보 B」라고 판단한 경우에는, 소수 후보 생성부(142B)는 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」와 함수기억영역에서 기억하고 있는 함수 「 f」를 이용하여 수 「R=f(IDI∥R1)」을 생성한다. 소수 후보 생성부(142B)는 생성한 수 「R」과 판독한 소수 「q」를 이용하여 수 「N=2×R×q+1」을 생성한다.
소수 후보 생성부(142B)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142B)는 생성한 수 「N」을 제 1 소수 판정부(143B)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142B)는 난수 생성부(141B)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
「정보 B」가 아니라고 판단한 경우에는, 소수 후보 생성부(142B)는 수신한 난수 「R1」과 판독한 발행 식별자 정보 「IDI」를 이용하여 수 「R=IDI×R1」을 생성한다.
소수 후보 생성부(142B)는 정보 제어부(140B)의 검증 값 기억영역에서 검증 값 「1」을 판독한다.
소수 후보 생성부(142B)는 판독한 소수 「q」, 발행 식별자 정보 「IDI」, 검증 값 「1」 및 생성한 수 「R」을 이용하여 수 「N=2×R×q+1」을 생성한다. 여기서, 최후의 항의 「1」이 검증 값이다.
소수 후보 생성부(142B)는, 소수 「q」의 비트사이즈 「lenq」를 정보 제어부(140B)의 정보기억영역에서 판독하고, 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142B)는 생성한 수 「N」을 제 1 소수 판정부(143B)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142B)는 난수 생성부(141B)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「R」 및 「N」을 생성한다.
<제 1 소수 판정부(143B)>
제 1 소수 판정부(143B)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)과 동일하므로 설명은 생략한다.
<제 2 소수 판정부(144B)>
제 2 소수 판정부(144B)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)과 동일하므로 설명은 생략한다.
(2) 발행 공개키 확인부(214B)
발행 공개키 확인부(214B)는, 도시하지는 않았으나 서버정보 기억영역(220B) 및 확인정보 기억영역(221B)을 가지고 있다.
서버정보 기억영역(220B)은, 공개키 증명서의 발행의뢰가 있던 키 발행 서버를 식별하는 서버 식별자를 기억하는 영역을 구비하고 있다.
확인정보 기억영역(221B)은 고정 값인 검증 값 「1」을 기억하고 있다.
발행 공개키 확인부(214B)는, 키 발행 서버(100)에서 수신부(217)를 통해서 발행 식별자 정보 「IDI」와, 공개키 「PK」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신한다.
발행 공개키 확인부(214B)는 수신한 서버 식별자를 서버정보 기억영역(220B)에 기록한다.
발행 공개키 확인부(214B)는 검증 값 「1」을 확인정보 기억영역(221B)에서 판독한다.
발행 공개키 확인부(214B)는, 수신한 공개키 「PK」와, 발행 식별자 정보 「IDI」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가의 여부를 확인한다.
여기서, 확인방법은 「n-검증 값」, 즉 「n-1」이「IDI」로 나누어지는지의 여부를 검증한다. 이에 의해, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가의 여부를 확인할 수 있다.
발행 공개키 확인부(214B)는, 「n-1」이「IDI」로 나누어진다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보「IDI」를 이용하여 생성되었다고 판단하고, 「n-1」이「IDI」로 나누어지지 않는다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한다.
발행 공개키 확인부(214B)는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단한 경우에는, 수신한 공개키 「PK」를 발행 공개키 저장부(211)에, 발행 식별자 정보를 발행 식별자 정보 저장부(212)에 각각 기록한다. 발행 공개키 확인부(214B)는 공개키 증명서의 생성개시명령을 공개키 증명서 생성부(215)에 출력한다.
발행 공개키 확인부(214B)는 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한 경우에는 처리를 종료한다.
(3) 소수 후보 생성처리
본 변형 예에 따른 소수 후보 생성처리에 대하여 제 1 실시 예에서 설명한 소수 후보 처리와 다른 점만 설명한다. 또, 키 발행처리 및 소수 생성처리의 동작의 흐름은 제 1 실시 예와 동일하므로 설명은 생략한다.
소수 후보 생성부(142B)는, 도 16 및 도 17에 도시한 스텝 S500에서 스텝 S560까지를 실행 후, 스텝 S565를 생략하고, 스텝 S570에서 검증 값 「1」을 판독한다. 소수 후보 생성부(142B)는 스텝 S575에서 수 「N=2×(R+w)×q+1」을 생성한다. 즉, 스텝 S565, 스텝 S580 및 스텝 S585를 생략하고, 스텝 S570 및 스텝 S575를 상기와 같이 변경한다. 또, 수 「N」을 산출할 때의 최후의 항이 검증 값이다.
이후는 제 1 실시 예와 동일하므로 설명은 생략한다.
즉, 본 변형 예에 따른 소수 후보 생성처리는 출력 카운터에 관계없이 소수 「q」와 수 「R」을 이용하여 수 「N」을 생성하게 된다.
(4) 증명서 발행처리
본 변형 예에 따른 증명서 발행 처리에 대하여 제 1 실시 예에서 설명한 증명서 발행처리와 다른 점만 설명한다.
발행 공개키 확인부(214B)는, 스텝 S660에서 검증 값 「1」을 판독하고, 스텝 S670에서 판독한 검증 값 「1」과, 공개키 「PK」와 발행 식별자 정보 「IDI」를 이용하여 「PK」가 「IDI」에서 생성되었는가의 여부를 확인한다,
(5) 확인방법의 검증
상기에서 설명한 방법에 의해, 증명서 발행 서버는 키 발행 서버가 바르게 발행 식별자 정보 IDI를 이용하여 생성하고 있는가를 확인할 수 있다.
왜냐하면, 비밀키인 소수 「p1」, 「p2」는 각각 소수 「q1」, 「q2」, 난수 「R11」, 「R12」, 발행 식별자 정보 「IDI」를 이용하여 「p1=2×q1×IDI×R11+1」, 「p2=2×q2×IDI×R12+1」을 만족하므로,
n=p1×p2=(2×q1×IDI×R11+1)×(2×q2×IDI×R12+1)
=IDI×(4×q1×q2×R11×R12×IDI+2×q1×R11+2×q2×R12)+1
이 된다. 따라서, 「n-1」은 「IDI」로 나누어지므로, 「n-1」이 「IDI」로 나누어지는 것을 확인함으로써, 소수 「p1」, 「p2」가 바르게 발행 식별자 정보 「IDI」를 이용하여 생성하고 있는가를 확인할 수 있다.
1. 12 소수 생성의 변형 예 3
상기 실시 예에서는 256비트의 소수를 생성할 때에, 단사 함수를 시행하여 생성하는 소수의 고유성을 만족하고, 512비트의 소수를 생성할 때에 생성하는 소수의 정당성을 확인하기 위한 요소를 부가하였으나, 여기에서는 소수의 고유성 및 정 당성을 확인하기 위한 요소의 부가를 1회의 동작으로 행하는 경우에 대하여 설명한다.
상기 실시 예와 다른 점은, 키 발행 서버에서의 소수 생성부와, 증명서 발행 서버에서의 발행 공개키 확인부가 다르다. 이하에, 본 변형 예에서의 소수 생성부(116C) 및 발행 공개키 확인부(214C)에 대하여 설명한다. 또, 다른 구성요소에 대해서는 제 1 실시 예에서 설명한 구성요소를 이용한다.
또, 여기에서는 서버 식별자의 비트사이즈를 15비트, 단말장치의 단말 식별자의 비트사이즈를 16비트로 하고, 발행 식별자 정보의 비트사이즈를 32비트로 한다.
(1) 소수 생성부(116C)
소수 생성부(116C)는, 도 22에 도시한 바와 같이, 반복 제어부(132C) 및 소수 정보 생성부(133C)를 가지고 있다.
소수 생성부(116C)는 8비트의 소수에서 512비트의 소수를 생성하고, 생성한 512비트의 소수를 키 판정부(117)에 출력한다.
<반복 제어부(132C)>
반복 제어부(132C)는, 8비트로 이루어지는 소수와 그 소수의 비트사이즈 (즉, 「8」)을 미리 기억하고 있는 초기치 기억영역과, 소수 정보 생성부(133C)에서 수신한 소수를 일시적으로 기억하는 일시 기억영역을 구비하고 있다.
반복 제어부(132C)는, 소수 정보 생성부(133C)의 동작의 반복횟수를 카운트하는 반복 카운터(135C)와, 키 판정부(117)에 출력한 소수의 개수, 즉 생성한 512 비트의 소수의 출력횟수를 카운트하는 출력 카운터(136C)를 가지고 있다. 또, 반복 카운터(135C) 및 출력 카운터(136C)의 초기치는 각각 「1」이다.
반복 제어부(132C)는, 도 23에 도시한 제어정보 테이블 T150을 가지고 있다. 제어정보 테이블 T150은 횟수와 제어정보로 이루어지는 세트를 하나 이상 저장하고 있다. 횟수는 반복 카운터(135C)의 값에 대응한다. 제어정보는 소수 정보 생성부(133C)에서 생성하는 소수의 생성방법의 종별을 나타낸다.
반복 제어부(132C)는, 식별자 생성부(115)에서 소수의 생성개시명령을 수신하면, 소수 정보 생성부(133C)가 소수를 생성하도록 제어한다. 소수 정보 생성부(133C)에서 소수를 수신하면, 반복 카운터(135C) 및 출력 카운터(136C)의 각각의 값에 의거하여 다시 소수 정보 생성부(133C)에 소수 생성의 명령 및 수신한 소수를 키 판정부(117)에 출력 중 어느 하나를 행한다.
이하에, 그 동작에 대하여 설명한다.
반복 제어부(132C)는, 식별자 생성부(115)에서 소수의 생성개시명령을 수신하면, 반복 카운터(135C) 및 출력 카운터(136C)를 각각 「1」에 설정한다.
반복 제어부(132C)는, 소수 정보 생성부(133C)에서 소수를 수신하면, 반복 카운터(135C)의 값에 「1」을 가산하고, 가산결과가 7인가 여부를 판단한다.
가산결과가 7이라고 판단한 경우에는, 반복 제어부(132C)는 출력 카운터(136C)의 값이 1인가 여부를 판단한다. 1이라고 판단한 경우에는, 반복 제어부(132C)는 수신한 소수를 소수 「p1」으로 키 판정부(117)에 출력하고, 출력 카운터(136C)의 값에 「1」을 가산하며, 반복 카운터(135C)의 값에 「1」을 설정한다. 1이 아닌, 즉 2 이상이라고 판단한 경우에는, 반복 제어부(132C)는 수신한 소수를 소수 「p2」로 하여 소수 「p2」와 판정개시명령을 키 판정부(117)에 출력한다.
가산결과가 7이 아니라고 판단한 경우에는, 수신한 소수의 비트사이즈를 산출하고, 수신한 소수와 산출한 비트사이즈를 일시 기억영역에 일시적으로 기억한다.
반복 제어부(132C)는, 소수의 생성개시명령을 수신하면, 반복 카운터(135C) 및 출력 카운터(136C)의 각각의 값에 「1」을 가산한 후, 소수 정보 생성부(133C)에서 수신한 소수와 그 비트사이즈를 일시적으로 기억한 후, 및 출력 카운터(136C)에 「1」을 가산하고, 또한 반복 카운터(135C)의 값을 「1」에 설정한 후 중 어느 하나의 경우에서 반복 제어부(132C)는 이하의 동작을 행한다.
반복 제어부(132C)는 반복 카운터(135C)의 값이 1 인가 여부를 판단한다. 1이라고 판단한 경우에는, 반복 제어부(132C)는 초기치 기억영역에서 8비트의 소수와 그 비트사이즈를 판독하고, 1이 아니라고 판단한 경우에는, 일시기억영역에서 비트사이즈 「8×(2^(n-1))」과 그 소수를 판독한다. 즉, 반복 제어부(132C)는 반복 카운터(135C)의 값이 1이 아니라고 판단한 경우에는, 일시기억영역에서 전회에 생성한 소수와 그 비트사이즈를 판독한다. 여기서, 「n」은 반복 카운터의 값이다.
반복 카운터(135C)의 값에 대응하는 제어정보를 제어정보 테이블 T150에서 판독하고, 판독한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 반복 제어부(132C)는 판독한 소수 및 그 비트사이즈와 제어정보로 이루어지는 제 1 정보를 생성하고, 생성한 제 1 정보를 소수 정보 생성부(133C)에 출력한다.
「정보 C」가 아니라고 판단한 경우에는, 반복 제어부(132C)는 식별자 저장부(110)에서 발행 식별자 정보 「IDI」를 취득하고, 취득한 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 산출하며, 판독한 소수 및 그 비트사이즈와 제어정보와, 발행 식별자 정보 「IDI」 및 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 생성하고, 생성한 제 2 정보를 소수 정보 생성부(133C)에 출력한다.
또, 반복 제어부(132C)는, 키 판정부(117)에서 소수를 다시 생성하는 취지의 재생성 명령을 수신하면, 출력 카운터(136C)의 값에 「1」을 가산하고, 또한 반복 카운터(135C)의 값에 「1」을 설정하며, 반복 카운터(135C)의 값이 1인가 여부를 판단하는 동작 이후를 행한다.
<소수 정보 생성부(133C)>
소수 정보 생성부(133C)는, 도 24에 도시한 바와 같이, 정보 제어부(140C), 난수 생성부(141C), 소수 후보 생성부(142C), 제 1 소수 판정부(143C) 및 제 2 소수 판정부(144C)로 구성되어 있다.
소수 정보 생성부(133C)는, 반복 제어부(132C)에서 수신한 소수의 비트사이즈가 2배의 비트사이즈로 이루어지는 소수를 생성한다. 예를 들어, 8비트로 이루어지는 소수를 수신한 경우에는, 16비트로 이루어지는 소수를 생성하고, 16비트로 이루어지는 소수를 수신한 경우에는, 32비트로 이루어지는 소수를 생성한다.
또, 이하의 설명에서 반복 제어부(132C)에서 수신하는 소수를 소수 「q」, 그 비트사이즈를 「lenq」로 하여 각 구성요소에 대하여 설명한다.
<정보 제어부(140C)>
정보 제어부(140C)는 제 1 정보 및 제 2 정보를 기억하기 위한 정보기억영역을 구비하고 있다.
정보 제어부(140C)는, 증명서 발행 서버(200)에 의해 할당되고, 또한 제어정보 「정보 AB」에 의거하여 소수를 생성할 때에 이용하는 소수 「qp」와 그 비트사이즈 「lenqg」를 미리 기억하고 있는 할당 소수 기억영역을 구비하고 있다. 여기서, 소수 「qg」의 비트사이즈는, 예를 들어 「64」 비트이다.
정보 제어부(140C)는, 반복 제어부(132C)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보로 이루어지는 제 1 정보를 수신하면, 수신한 제 1 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보(이 경우, 「정보 C)」)를 기록한다.
정보 제어부(140C)는, 반복 제어부(132C)에서 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」로 이루어지는 제 2 정보를 수신하면, 수신한 제 2 정보를 정보기억영역에 기록한다. 즉, 소수 「q」와, 소수의 비트사이즈 「lenq」와, 제어정보, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」를 기록한다.
정보 제어부(140C)는, 수신한 정보의 기록 후, 난수의 생성의 지시를 나타내는 제 1 생성지시를 난수 생성부(141C)에 출력한다.
정보 제어부(140C)는, 제 2 소수 판정부(144C)에서 소수를 수신하면, 수신한 소수를 반복 제어부(132C)에 출력한다.
정보 제어부(140C)는, 소수 후보 생성부(142C)에서 출력 카운터(136C)의 값을 판독하는 취지의 횟수판독명령을 수신하면, 반복 제어부(132C)의 출력 카운터(136C)의 값을 판독한다. 정보 제어부(140C)는 판독한 값을 소수 후보 생성부(142C)에 출력한다.
<난수 생성부(141C)>
난수 생성부(141C)는, 난수의 생성의 지시를 나타내는 제 1 생성지시를 정보 제어부(140C)에서 수신하면, 정보 제어부(140C)의 정보기억영역에 기억되어 있는 제어정보를 판독한다. 난수 생성부(141C)는 판독한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 난수 생성부(141C)는, 정보 제어부(140C)의 정보기억영역에 기억되어 있는 「lenq」를 판독하고, (lenq-1) 비트로 이루어지는 난수 「R1」을 생성하며, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142C)에 출력한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다. 난수 생성방법은 비 특허문헌 2가 상세하다.
「정보 C」가 아니라고 판단한 경우에는, 난수 생성부(141C)는, 정보 제어부(140C)의 정보기억영역에 기억되어 있는 「lenq」를, 할당 소수 기억영역에 기억되어 있는 「lenqg」를 각각 판독한다. 난수 생성부(141C)는, 판독한 「lenq」 및 「lenqg」를 이용하여, (lenq-2×lenqg-1) 비트로 이루어지는 난수 「R1」을 생성하고, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142C)에 출력한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
또, 난수 생성부(141C)는, 제 1 소수 판정부(143) 및 제 2 소수 판정부(144) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 제어정보를 정보기억영역에서 판독하고, 상기의 동작을 행한다.
<소수 후보 생성부(142C)>
소수 후보 생성부(142C)는, 생성된 정보를 기억하는 생성정보 기억영역과, 발행 식별자 정보 「IDI」와 소수 「qg」에서 고유하게 소수를 생성하는 소수 생성 함수 「gp」, 및 단사인 함수 「f」를 미리 기억하고 있는 함수 기억영역을 구비하고 있다.
여기서, 소수 생성함수 「gp」를 이용한 소수 생성의 일례를 이하에 나타낸다.
우선, 「c=0」으로 하여 「2×qg×f(IDI∥c)+1」이 소수인지를 판정한다. 소수인 경우는, 「gp(IDI, qg)=2×qg×f(IDI∥c)+1」로 한다. 소수가 아니라면, 「c」에 「1」을 가산하고, 「2×qg×f(IDI∥c)+1」이 소수인지를 판정한다. 소수라면, 「gp(IDI, qg)=2×qg×f(IDI∥c)+1」로 한다. 소수가 아니라면, 「c」에 「1」을 가산하여 동일한 판정을 행하여 소수가 될 때까지 반복한다. 이와 같이 함수 「gp」를 정의할 때, 함수 「qg」 와 「f」를 보유하고 있으면, 발행 식별자 정보 「IDI」에 대하여 소수 후보 생성부(142C)는 몇 회라도 소수 생성 함수에 의해 소수를 생성하여도 동일한 소수를 생성할 수 있다. 이때, 「IDI」의 비트사이즈 및 「qg」의 비트사이즈가 각각 「32」 비트 및 「64」 비트인 경우에는, 「gp(IDI, qg)」의 비트사이즈는 128비트가 된다.
소수 후보 생성부(142C)는, 난수 생성부(141C)에서 난수 「R1」과 제어정보를 수신하면, 수신한 제어정보가 「정보 C」인가 여부를 판단한다.
「정보 C」라고 판단한 경우에는, 소수 후보 생성부(142C)는 정보 제어부(140C)의 정보기억영역에서 소수 「q」를 판독한다. 소수 후보 생성부(142C)는 판독한 소수 「q」와 난수 생성부(141C)에서 수신한 난수 「R1」을 이용하여 수 「N=2×R1×q+1」을 생성한다. 소수 후보 생성부(142C)는, 생성한 수 「N」의 비트사이즈 「lenN」이「lenq」와 일치하는가 여부를 판단하고, 일치한다고 판단한 경우에는, 소수 후보 생성부(142C)는, 생성한 수 「N」을 제 1 소수 판정부(143C)에 출력하고, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다.
일치하지 않는다고 판단한 경우에는, 소수 후보 생성부(142C)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여, 수 「N=2×R1×q+1」을 생성한다.
제어정보가 「정보 C」가 아니라고 판단한 경우, 즉 제어정보가 「정보 AB」라고 판단한 경우에는, 소수 후보 생성부(142C)는 정보 제어부(140C)의 정보기억영역에서 소수 「q」 및 발행 식별자 정보 「IDI」를, 할당 소수 기억영역에서 소수 「qg」를 각각 판독한다.
소수 후보 생성부(142C)는, 판독한 발행 식별자 정보 「IDI」 및 소수 「qg」와, 함수 기억영역에서 기억하고 있는 함수 「f」 및 「gp」를 이용하여 상기에서 설명한 방법으로 소수 「pIDI=gp(IDI, qg)」를 생성하고, 생성한 소수 「pIDI」를 생성정보 기억영역에 기억한다.
소수 후보 생성부(142C)는, 생성정보 기억영역에서 기억하고 있는 소수 「pIDI」를 판독하고, 판독한 소수 「pIDI」와, 수신한 난수 「R1」과, 판독한 소수 「q」를 이용하여, 수 「N=2×R1×q×pIDI+1」을 생성한다.
소수 후보 생성부(142C)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(142C)는, 생성한 수 「N」을 제 1 소수 판정부(143C)에 출력하고, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(142C)는, 난수 생성부(141C)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 수 「N」을 생성한다.
<제 1 소수 판정부(143C)>
제 1 소수 판정부(143C)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일하므로 설명은 생략한다.
<제 2 소수 판정부(144C)>
제 2 소수 판정부(144C)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일하므로 설명은 생략한다.
(2) 발행 공개키 확인부(214C)
발행 공개키 확인부(214C)는 도시하지는 않았으나 서버정보 기억영역(220C) 및 확인정보 기억영역(221C)을 가지고 있다.
서버정보 기억영역(220C)은 공개키 증명서의 발행의뢰가 있던 키 발행 서버를 식별하는 서버 식별자를 기억하는 영역을 구비하고 있다.
확인정보 기억영역(221C)은, 키 발행 서버(100)에 할당한 소수 「qg」와 그 비트사이즈 「lenqg」와, 키 발행 서버(100)에서 기억하고 있는 소수 생성함수 및 단사 함수의 각각과 동일한 함수 「gp」 및 「f」를 미리 기억하고 있다.
발행 공개키 확인부(214C)는, 키 발행 서버(100)에서 수신부(217)를 통해서 발행 식별자 정보 「IDI」와, 공개키 「PK=(n, e)」와, 서버 식별자와, 증명서 발행 의뢰정보를 수신한다.
발행 공개키 확인부(214C)는 수신한 서버 식별자를 서버정보 기억영역(220C)에 기록한다.
발행 공개키 확인부(214C)는, 수신한 공개키 「PK」와 발행 식별자 정보 「IDI」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다.
이하에, 확인방법을 나타낸다. 우선, 발행 공개키 확인부(214C)는, 수신한 발행 식별자 정보 「IDI」와, 기억하고 있는 소수 「qg」, 함수 「gp」 및 「f」를 이용하여 소수 「gp(IDI, qg)」를 생성하고, 생성한 소수 「gp(IDI, qg)」를 확인정보 기억영역(221C)에 기록한다. 소수 「gp(IDI, qg)」의 생성방법은 상기에서 설명한 방법과 동일하므로 설명은 생략한다. 이때, 발행 공개키 확인부(214C)에서 생성되는 소수 「gp(IDI, qg)」는 키 발행 서버의 소수 후보 생성부(142C)에서 생성되는 소수 「pIDI」와 동일한 것을 알 수 있다.
이어서, 발행 공개키 확인부(214C)는, 확인정보 기억영역(221C)에서 기억하고 있는 소수 「gp(IDI, qg)」를 판독하고, 「n-1」이 판독한 소수 「gp(IDI, qg)」로 나누어지는가 여부를 검증한다. 이에 인해, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인할 수 있다.
발행 공개키 확인부(214C)는, 「n-1」이 소수 「gp(IDI, qg)」로 나누어진다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단하고, 「n-1」이 소수 「gp(IDI, qg)」로 나누어지지 않는다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한다.
발행 공개키 확인부(214C)는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단한 경우에는, 수신한 공개키 「PK」를 발행 공개키 저장부(211)에, 발행 식별자 정보를 발행 식별자 정보 저장부(212)에, 각각 기록한다. 발행 공개키 확인부(214C)는 공개키 증명서의 생성개시명령을 공개키 증명서 생성부(215)에 출력한다.
발행 공개키 확인부(214C)는 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한 경우에는 처리를 종료한다.
(3) 소수 생성처리
본 변형 예에 따른 소수 생성처리에 대하여 제 1 실시 예에서 설명한 소수 생성처리와 다른 점만 설명한다. 또, 키 발행 처리의 동작의 흐름은 제 1 실시 예와 동일하므로 설명은 생략한다.
도 15에 도시한 소수 생성처리의 스텝 S425에서, 난수 생성부(141C)는, 정보 제어부(140C)의 정보기억영역에 기억되어 있는 「lenq」를, 할당 소수 기억영역에 기억되어 있는 「lenqg」를, 각각 판독하도록 변경한다. 이어서, 스텝 S430에서 난수 생성부(141)는, 판독한 「lenq」 및 「lenqg」를 이용하여 (lenq-2×lenqg-1) 비트로 이루어지는 난수 「R1」을 생성하고, 생성한 난수 「R1」과 판독한 제어정보를 소수 후보 생성부(142C)에 출력하도록 변경한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
(4) 소수 후보 생성처리
본 변형 예에 따른 소수 후보 생성처리에 대하여, 도 25에 도시한 흐름도를 이용하여 설명한다.
소수 후보 생성부(142C)는, 난수 생성부(141C)에서 난수 「R1」과 제어정보를 수신하면(스텝 S700), 수신한 제어정보가 「정보 C」인가 여부를 판단한다(스텝 S705).
「정보 C」라고 판단한 경우에는(스텝 S705에서의 「YES」), 소수 후보 생성부(142C)는 정보 제어부(140C)의 정보기억영역에서 소수 「q」를 판독한다(스텝 S710). 소수 후보 생성부(142C)는 판독한 소수 「q」와 난수 생성부(141C)에서 수신한 난수 「R1」을 이용하여 수 「N=2×R1×q+1」을 생성한다(스텝 S715). 소수 후보 생성부(142C)는, 생성한 수 「N」의 비트사이즈 「lenN」이「lenq」와 일치하는가의 여부를 판단하고(스텝 S720), 일치한다고 판단한 경우에는(스텝 S720에서의 「YES」), 소수 후보 생성부(142C)는 생성한 수 「N」을 제 1 소수 판정부(143C)에 출력하며, 수신한 난수 「R1」을 「R」로 생성정보 기억영역에 기억한다(스텝 S755).
일치하지 않는다고 판단한 경우에는(스텝 S720에서의 「NO」), 소수 후보 생성부(142C)는, 난수 생성부(141)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고(스텝 S725), 스텝 S715에 복귀한다.
제어정보가 「정보 C」가 아니라고 판단한 경우(스텝 S705에서의 「NO」), 즉 제어정보가 「정보 AB」라고 판단한 경우에는, 소수 후보 생성부(142C)는 정보 제어부(140C)의 정보기억영역에서 소수 「q」 및 발행 식별자 정보 「IDI」를, 할당 소수 기억영역에서 소수 「qg」를, 각각 판독한다(스텝 S730).
소수 후보 생성부(142C)는, 판독한 발행 식별자 정보 「IDI」 및 소수 「qg」와, 함수 기억영역에서 기억하고 있는 함수 「f」 및 「gp」를 이용하여 상기에서 설명한 방법으로 소수 「pIDI=gp(IDI, qg)」를 생성하고, 생성한 소수 「pIDI」를 생성정보 기억영역에 기억한다(스텝 S735).
소수 후보 생성부(142C)는, 생성정보 기억영역에서 기억하고 있는 소수 「pIDI」를 판독하고, 판독한 소수 「pIDI」와, 판독한 소수 「q」와, 생성한 소수 「pIDI」를 이용하여, 수 「N=2×R1×q×pIDI+1」을 생성한다(스텝 S740).
소수 후보 생성부(142C)는 생성한 수 「N」의 비트사이즈 「lenN」이「2×lenq」인가 여부를 판단한다(스텝 S745).
「2×lenq」라고 판단한 경우에는(스텝 S745에서의 「YES」), 소수 후보 생성부(142C)는, 생성한 수 「N」을 제 1 소수 판정부(143C)에 출력하고, 난수 「R1 」을 「R」로 생성정보 기억영역에 기억한다(스텝 S755).
「2×lenq」가 아니라고 판단한 경우에는(스텝 S745에서의 「NO」), 소수 후보 생성부(142C)는, 난수 생성부(141C)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고(스텝 S750), 스텝 S740에 복귀한다.
(5) 증명서 발행처리
본 변형 예에 따른 증명서 발행처리에 대하여, 제 1 실시 예에서 설명한 증명서 발행처리와 다른 점만 설명한다.
발행 공개키 확인부(214C)는, 스텝 S660에서 수신한 발행 식별자 정보 「IDI」와, 기억하고 있는 소수 「qg」, 함수 「gp」 및 「f」를 이용하여, 소수 「gp(IDI, qg)를 생성하고, 확인정보 기억영역(221C)에 기록하도록 변경한다. 스텝 S665에서는 발행 공개키 확인부(214C)는, 소수 「gp(IDI, qg)」를 판독하고, 수신한 공개키 「PK」 및 발행 식별자 정보 「IDI」와, 판독한 소수 「gp(IDI, qg)」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다.
(6) 소수의 고유성 및 확인방법의 검증
상기와 동일한 증명에 의해, 소수 생성부(116C)에서 생성되는 소수의 고유성은 만족한다. 즉, 단말장치 별로 다른 발행 식별자 정보가 생성되므로 소수 생성에 이용하는 함수 「f」의 단사의 성질에 의해 생성되는 소수도 다르다. 이에 의해, 단말장치 별로 다른 비밀키 및 그에 대응하는 공개키를 할당할 수 있다.
상기에서 설명한 방법으로 증명서 발행 서버는 키 발행 서버가 바르게 발행 식별자 정보 IDI를 이용하여 생성하고 있는가를 확인할 수 있다.
왜냐하면, 비밀키인 소수 「p1」, 「p2」는 각각 소수 「q1」, 「q2」, 난수 「R11」, 「R12」 및 소수 「pIDI=gp(IDI, qg)」를 이용하여, 「p1=2×q1×pIDI×R11+1」, 「p2=2×q2×pIDI×R12+1」을 만족하므로,
n=p1×p2=(2×q1×pIDI×R11+1)×(2×q2×pIDI×R12+1)
=pIDI×(4×q1×q2×R11×R12×pIDI+2×q1×R11+2×q2×R12)+1
이 된다. 따라서, 「n-1」은 「pIDI」로 나누어지므로, 「n-1」이「pIDI」로 나누어지는 것을 확인함으로써, 소수 「p1」, 「p2」가 바르게 발행 식별자 정보 「IDI」를 이용하여 생성하고 있는가를 확인할 수 있다.
(7) 변형 예
본 발명은 상기의 실시 예에 한정되지 않음은 당연하다. 이하와 같은 경우도 본 발명에 포함된다.
상기의 변형 예에서는, 미리 1개의 소수 「qg」를 기억하고 있다고 하였으나, 이에 한정되는 것은 아니다. 키 발행 서버는 미리 2개의 소수 「qg1」, 「qg2」를 기억해 두고, 소수 「p1」을 생성하는 경우에 소수 「qg1」을 이용하고, 소수 「p2」를 생성하는 경우에 소수 「qg2」를 이용하여도 된다.
또, 상기의 변형 예에서는, 소수 「p1」 및 「p2」를 생성하는 경우에 이용하는 「pIDI」를 동일한 것으로 하였으나, 이에 한정되는 것은 아니다. 예를 들어, 소수 「p1」의 생성에 이용하는 「c」의 값과, 예를 들어 소수 「p2」의 생성에 이용하는 「c」의 값을 다르게 설정하고, 소수 「p1」 및 「p2」를 생성하는 경우에 이용하는 각각의 「pIDI」의 값을 다르게 하여도 된다.
2. 제 2 실시 예
본 발명에 관한 제 2 실시 예의 키 발행시스템 2에 대하여, 제 1 실시 예에서의 키 발행시스템 1과 다른 점을 중심으로 설명한다.
2. 1 키 발행시스템 2의 개요
키 발행시스템 2는, 도 26에 도시한 바와 같이, 키 발행 서버(1100, 1101, 1102)와, 키 발행 감사 서버(1200)와, 단말장치(1300, 1301, …, 1032, 1303, …, 1304, 1305, …, 1306)으로 구성되어 있다. 단말장치의 대수는, 예를 들어 1000대이다.
키 발행 서버 1100, 1101 및 1102 는 각각 다른 회사에서 관리되어 있다. 단말장치 1300, 1301, …, 1302는 키 발행 서버 1100에 대하여 키의 발행을 요구하고, 단말장치 1303, …, 1304는 키 발행 서버 1101에 대하여 키의 발행을 요구하며, 단말장치 1305, …, 1306은 키 발행 서버 1102에 대하여 키의 발행을 요구한다. 또, 단말장치 1300, 1301, … 1302는, 키 발행 서버 1100 사이에는 안전한 통신 경로가 확립되어 있는 것으로 한다. 또, 단말장치 1303, … 1304와 키 발행 서버 1101 사이, 및 단말장치 1305, … 1306과 키 발행 서버 1102 사이에도 마찬가지로 안전한 통신 경로가 확립되어 있는 것으로 한다.
또, 키 발행 서버 1100, 1101, 1102와 키 발행 감사 서버 1200 사이에도, 마찬가지로 안전한 통신 경로가 확립되어 있는 것으로 한다.
또, 이하에는 키 발행 서버(1100), 키 발행 감사 서버(1200), 및 단말장 치(1300)를 이용하여 키 발행시스템 2의 개요를 설명한다.
키 발행 서버(1100)는, 단말장치(1300)에서 키의 발행 요구를 수신하면, RSA 암호에서의 비밀키 및 공개키를 생성한다. 또, 키 발행 서버(1100)는, 생성한 공개키에 대한 공개키 증명서를 생성하고, 생성한 공개키 증명서 및 비밀키를 단말장치(1300)에 송신한다. 또, 여기서, 생성하는 각 키의 키 길이는 1024비트로 한다.
키 발행 서버(1100)는, 키 발행 감사 서버(1200)에서 발행이 끝난 공개키 및 발행 식별자 정보를 요구하는 취지의 발행이 끝난 키 의뢰 정보를 수신하면, 발행한 공개키와, 공개키의 생성에 이용한 발행 식별자 정보로 이루어지는 발행이 끝난 키 정보를 키 발행 감사 서버(1200)에 송신한다.
키 발행 감사 서버(1200)는, 키 발행 서버(1100)에서 발행이 끝난 공개키 정보를 수신하면, 발행된 공개키의 정당성을 감사하고, 감사결과를 표시한다.
단말장치(1300)는, 공개키 증명서와 비밀키를 키 발행 서버(1100)에서 수신하면, 수신한 공개키 증명서와 비밀키를 기억한다.
이후, 예를 들어 단말장치(1400)의 사용자는, 우선 키 발행 서버(1100)에서 단말장치(1300)의 공개키 증명서를 입수 또는 단말장치(1300)에서 공개키 증명서를 입수하여, 키 발행 서버(1100)가 가지며, 공개키 증명서의 정당성을 확인할 때에 이용하는 증명서용 공개키 「C_PK」를 이용하여 공개키 증명서의 정당성을 확인하고, 정당한 공개키 증명서라고 판단한 경우에, 입수한 공개키 증명서를 단말장치(1400)에 기억한다. 단말장치(1400)는, 기억하고 있는 공개키 증명서에 포함되는 공개키를 이용하여 단말장치(1300)에 송신하는 전자 메일을 암호화하고, 암호화된 전자 메일을 단말장치(1300)에 송신한다.
단말장치(1300)는, 단말장치(1400)에서 암호화된 전자 메일을 수신하면, 기억하고 있는 비밀키를 이용하여 암호화된 전자 메일을 복호하고, 복호 된 전자 메일을 표시한다.
이에 의해, 단말장치(1300)와 단말장치(1400) 사이에서는 안전하게 데이터를 주고받을 수 있게 된다.
또, 단말장치 1301, … 1302는 단말장치(1300)와 동일하므로 설명은 생략한다. 또, 키 발행 서버 1101 및 1102는 키 발행 서버(1100)와 동일하므로 설명은 생략한다.
이후의 설명에서 각 단말장치의 대표로 단말장치(1300)를 각 키 발행 서버의 대표로 키 발행 서버(1100)를 이용한다.
2. 2 키 발행 서버(1100)의 구성
키 발행 서버(1100)는, 도 27에 도시한 바와 같이, 식별자 저장부(1110), 비밀키 저장부(1111), 공개키 저장부(1112), 증명서 저장부(1113), 제어부(1114), 식별자 생성부(1115), 소수 생성부(1116), 키 판정부(1117), 키 생성부(1118), 정보 취득부(1119), 수신부(1120), 송신부(1121), 증명서 생성부(1122), 증명서용 비밀키 저장부(1123) 및 발행이 끝난 키 정보 저장부(1124)로 구성되어 있다.
키 발행 서버(1100)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써, 키 발행 서버(1100)는 그 기능을 달성한다.
또, 키 발행 서버 1101 및 1102는 키 발행 서버(1100)와 동일한 구성이므로 설명은 생략한다.
(1) 식별자 저장부(1110)
식별자 저장부(1110)는, 제 1 실시 예에서의 식별자 저장부(110)와 마찬가지로, 비트사이즈가 126비트 이하인 발행 식별자 정보를 기억하기 위한 영역을 구비하고 있다. 발행 식별자 정보의 비트사이즈는, 예를 들어 64비트이다.
(2) 비밀키 저장부(1111)
비밀키 저장부(1111)는 제 1 실시 예에서의 비밀키 저장부(111)와 마찬가지로, 소수 저장영역과 비밀키 저장영역을 구비하고 있다.
(3) 공개키 저장부(1112)
공개키 저장부(1112)는 제 1 실시 예에서의 공개키 저장부(112)와 마찬가지로, 공개키를 기억하기 위한 영역을 구비하고 있다.
(4) 증명서 저장부(1113)
증명서 저장부(1113)는 당해 서버에서 생성한 증명서 발행 서버에 의해 발행한 공개키 증명서를 기억하는 영역을 구비하고 있다.
(5) 증명서용 비밀키 저장부(1123)
증명서용 비밀키 저장부(1123)는 공개키 증명서를 생성할 때에 이용되는 증명서용 비밀키 「C_SK」를 미리 기억하고 있다.
(6) 제어부(1114)
제어부(1114)는, 도 27에 도시한 바와 같이, 서버 식별자 기억영역(1130)과 단말정보 기억영역(1131)을 가지고 있다.
서버 식별자 기억영역(1130)은 당해 서버를 식별하는 서버 식별자를 미리 기억하고 있다. 예를 들어, 키 발행 서버 1100은 SIDA를, 키 발행 서버 1101은 SIDB를, 키 발행 서버 1102는 SIDC를 기억하고 있다. 또, 이후에는 키 발행 서버(1100)의 서버 식별자를 「SID」로 설명한다. 여기에서는, 서버 식별자의 비트사이즈를 31비트로 한다.
단말정보 기억영역(1131)은, 키 발행의 요구가 있은 단말장치를 식별하는 단말 식별자를 기억하는 영역을 구비하고 있다. 여기서, 단말 식별자는, 예를 들어, 단말장치의 시리얼 번호이다. 여기에서는, 시리얼 번호의 비트사이즈를 32비트로 한다.
제어부(1114)는 단말장치(1300)에서 수신부(1120)를 통해서 키 발행 의뢰정보와, 단말장치(1300)의 단말 식별자 「TID」를 수신하면, 수신한 단말 식별자 「TID」를 단말정보 기억영역(1131)에 기록한다. 제어부(1114)는 발행 식별자 정보의 생성명령과 수신한 단말 식별자 「TID」를 식별자 생성부(1115)에 출력한다.
제어부(1114)는, 키 발행 감사 서버(1200)에서 수신부(1120)를 통해서 발행이 끝난 키 의뢰정보를 수신하면, 키 정보 취득명령을 정보 취득부(1119)에 출력한다.
(7) 식별자 생성부(1115)
식별자 생성부(1115)는 제 1 실시 예에서의 식별자 생성부(115)와 동일하므로 설명은 생략한다.
(8) 소수 생성부(1116)
소수 생성부(1116)는 제 1 실시 예에서의 소수 생성부(116)의 소수의 생성방법과 동일한 방법으로 512비트의 소수를 생성한다.
(9) 키 판정부(1117)
키 판정부(1117)는 제 1 실시 예에서의 키 판정부(117)와 동일하므로 설명은 생략한다.
(10) 키 생성부(1118)
키 생성부(1118)는, 키 판정부(1117)에서 키 생성명령을 수신하면, 비밀키 저장부(1111)의 소수 기억영역에 기억되어 있는 2개의 소수 「p1」 및 「p2」를 판독하고, 판독한 소수 「p1」 과 「p2」의 곱 「n=p1×p2」를 계산한다.
키 생성부(1118)는, 난수 「e」를 생성하고, 산출한 「n」과, 생성한 난수 「e」로 이루어지는 세트 「PK=(n, e)」를 공개키로 생성하며, 생성한 공개키 「PK」를 공개키 저장부(1112)에 기록한다. 여기서, 난수 「e」는, 종래와 마찬가지로, 난수 「e」는 수 「L」과 서로 소이고, 「1≤e≤L-1, GCD(e, L)=1」을 만족한다. 여기서, GCD(e, L)은 e와 L의 최대공약수를 나타내고, 수 「L」은 「L=LCM(p1-1, p2-1)」이며, LCM(p1-1, p2-1)은 「p1-1」과 「p2-1」의 최소공배수를 나타낸다.
키 생성부(1118)는, 「e×d=1 mod L」을 만족하는 「d」를 산출하고, 산출한 「d」와, 소수 「p1」 및 「p2」로 이루어지는 세트 「SK=(p1, p2, d)」를 비밀 키로 하여 비밀키 저장부(1111)의 비밀키 저장영역에 기록한다. 키 생성부(1118)는 공개키 증명서의 생성명령을 증명서 생성부(1122)에 출력한다.
(11) 증명서 생성부(1122)
증명서 생성부(1122)는, 키 생성부(1118)에서 공개키 증명서의 생성명령을 수신하면, 증명서용 비밀키 저장부에서 증명서용 비밀키 「C_SK」를, 공개키 저장부(1112)에서 공개키 「PK」를, 식별자 저장부(1110)에서 발행 식별자 정보 「IDI」를 각각 판독한다.
증명서 생성부(1122)는, 판독한 비밀키 「C_SK」, 공개키 「PK」 및 발행 식별자 정보 「IDI」를 이용하여 공개키 증명서 「Cert」를 생성한다. 생성하는 공개키 증명서 「Cert」는, 구체적으로는 「Cert=n∥e∥IDI∥Sig(C_SK, n∥e∥IDI)」이다. 여기서, Sig(K, D)는, 데이터 「D」에 대하여 비밀키 「K」를 이용했을 때의 서명 데이터이다. 기호 「∥」는 비트 또는 바이트의 연결이다.
증명서 생성부(1122)는, 생성한 공개키 증명서 「Cert」를 증명서 저장부(1113)에 기록하고, 공개키 증명서 「Cert」의 배포개시명령을 정보 취득부(1119)에 출력한다.
(12) 정보 취득부(1119)
정보 취득부(1119)는, 증명서 생성부(1122)에서 배포개시명령을 수신하면, 비밀키 저장부(1111)에서 기억하고 있는 비밀키 「SK」와, 증명서 저장부(1113)에서 기억하고 있는 공개키 증명서 「Cert」와, 제어부(1114)의 단말정보 기억영역(1131)에서 기억하고 있는 단말 식별자를 각각 판독하고, 판독한 비밀키 「SK」 및 공개키 증명서 「Cert」를 판독한 단말 식별자에 대응하는 단말장치(1300)에 송신부(1121)를 통해서 송신한다.
정보 취득부(1119)는, 비밀키 「SK」 및 공개키 증명서 「Cert」를 단말장치(1300)에 송신부(1121)를 통해서 송신한 후, 공개키 저장부(1112)에서 발행한 공개키 「PK=(n, e)」를, 식별자 저장부(1110)에서 발행한 발행 식별자 정보 「IDI」를 각각 판독하고, 판독한 공개키 「PK」 및 발행 식별자 정보 「IDI」를 하나의 세트로 하여 발행이 끝난 키 정보 저장부(1124)에 기록한다.
정보 취득부(1119)는, 제어부(1114)에서 키 정보 취득명령을 수신하면, 발행이 끝난 키 정보 저장부(1124)에서 모든 발행이 끝난 키 정보를 판독한다. 정보 취득부(1119)는 제어부(1114)의 서버 식별자 기억영역(1130)에서 서버 식별자를 판독하고, 판독한 모든 발행이 끝난 키 정보와 서버 식별자를 송신부(1121)를 통해서 키 발행 감사 서버(1200)에 송신한다.
(13) 발행이 끝난 키 정보 저장부(1124)
발행이 끝난 키 정보 저장부(1124)는, 도 28에 도시한 바와 같이 발행이 끝난 키 정보 테이블 T1100을 가지고 있다.
발행이 끝난 키 정보 테이블 T1100은 발행이 끝난 공개키와 발행이 끝난 식별자 정보로 이루어지는 세트를 하나 이상 기억하기 위한 영역을 구비하고 있다.
발행이 끝난 공개키는 당해 키 발행 서버에서 발행한 공개키이고, 발행이 끝난 식별자 정보는 공개키 및 그 공개키에 대응하는 비밀키를 생성할 때에 이용된 발행 식별자 정보이다.
상기에 의해, 키 발행 서버(1100)는 발행한 공개키와 발행한 발행 식별자 정보를 축적해갈 수 있다.
또, 발행이 끝난 키 정보 저장부(1124)는, 발행이 끝난 공개키 정보인 발행 이력을 저장하기 위해 사용하므로, 전원이 끊어져도 데이터가 없어지지 않는 불휘발성 메모리(예를 들어, 하드디스크 등)가 아니면 안 된다.
(14) 수신부(1120)
수신부(1120)는 키 발행 감사 서버(1200) 및 단말장치(1300)에서 정보를 수신하고, 수신한 정보를 제어부(1114)에 출력한다.
(15) 송신부(1121)
송신부(1121)는, 정보 취득부(1119)에서 비밀키 「SK」 및 공개키 증명서 「Cert」를 수신하고, 수신한 각 정보를 단말장치(1300)에 송신한다.
송신부(1121)는, 정보 취득부(1119)에서 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 수신하면, 수신한 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 키 발행 감사 서버(1200)에 송신한다.
2. 3 키 발행 감사 서버(1200)
키 발행 감사 서버(1200)는, 도 29에 도시한 바와 같이, 확인정보 저장부(1210), 발행이 끝난 키 정보 저장부(1211), 제어부(1212), 발행 공개키 확인부(1213), 접수부(1214), 감사결과 출력부(1215), 수신부(1216) 및 송신부(1217)로 구성되어 있다.
키 발행 감사 서버(1200)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하 드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 키 발행 감사 서버(1200)는 그 기능을 달성한다.
또, 키 발행 서버(1100)에서 발행이 끝난 키 정보를 수신한 경우의 동작과 다른 키 발행 서버에서 발행이 끝난 키 정보를 수신한 경우의 동작은 동일하므로, 이후의 설명에서는 키 발행 서버(100)에서 송신된 발행이 끝난 키 정보를 이용하여 설명한다.
(1) 확인정보 저장부(1210)
확인정보 저장부(1210)는, 도 30에 도시한 바와 같이 검증 값 테이블 T1200 을 가지고 있다. 검증 값 테이블 T1200은, 서버 식별자와, 제 1 검증 값과, 제 2 검증 값으로 이루어지는 세트를 하나 이상 기억하는 영역을 구비하고 있다. 서버 식별자는 키 발행 서버를 식별하는 식별자이고, 「SIDA」는 키 발행 서버 1100을 나타내며, 「SIDB」는 키 발행 서버 1101을 나타내고, 「SIDC」는 키 발행 서버 1102를 나타낸다. 제 1 검증 값 및 제 2 검증 값은 대응된 서버 식별자에서 나타내는 키 발행 서버에 할당한 검증 값이다. 또, 이후에는 키 발행 서버(1100)의 서버 식별자를 「SID」로 설명한다.
(2) 발행이 끝난 키 정보 저장부(1211)
발행이 끝난 키 정보 저장부(1211)는 키 발행 서버(1100)에서 송신된 하나 이상의 발행이 끝난 키 정보를 기억하기 위한 영역을 구비하고 있다.
(3) 제어부(1212)
제어부(1212)는, 도 29에 도시한 바와 같이 서버정보 기억영역(1220)을 가지고 있다.
서버정보 기억영역(1220)은 공개키 증명서의 발행 의뢰가 있던 키 발행 서버를 식별하는 서버 식별자를 기억하는 영역을 구비하고 있다.
제어부(1212)는, 접수부(1214)에서 공개키의 감사를 개시하는 감사개시명령과, 감사대상의 서버 식별자(여기에서는, 「SID」라 한다)를 수신하면, 발행이 끝난 키 의뢰 정보를 송신부(1217)를 통해서 서버 식별자에 대응하는 키 발행 서버(1100)에 송신한다.
제어부(1212)는 접수부(1214)에서 수신한 서버 식별자를 서버정보 기억영역(1220)에 기록한다.
제어부(1212)는 키 발행 서버(1100)에서 수신부(1216)를 통해서 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 수신한다.
제어부(1212)는 수신한 서버 식별자와 서버정보 기억영역에서 기억하고 있는 서버 식별자가 일치하는가 여부를 판단한다.
일치한다고 판단한 경우에는, 제어부(1212)는 수신한 하나 이상의 발행이 끝난 키 정보를 발행이 끝난 키 정보 저장부(1211)에 기록하고, 감사개시명령과 수신한 서버 식별자를 발행 공개키 확인부(1213)에 출력한다.
일치하지 않는다고 판단한 경우에는, 제어부(1212)는 처리를 종료한다.
(4) 발행 공개키 확인부(1213)
발행 공개키 확인부(1213)는, 제어부(1212)에서 감사개시명령과 서버 식별자를 수신하면, 수신한 서버 식별자를 이용하여 대응하는 제 1 검증 값 「c1」 및 제 2 검증 값 「c12」를 확인정보 저장부(1210)에서 판독한다.
발행 공개키 확인부(1213)는 판독되지 않은 발행이 끝난 키 정보 중 하나의 발행이 끝난 키 정보를 발행이 끝난 키 정보 저장부(1211)에서 판독한다.
발행 공개키 확인부(1213)는, 판독한 발행이 끝난 키 정보에 포함되는 공개키 「PK」와 발행 식별자 정보 「IDI」와, 제 1 검증 값 「c11」 및 제 2 검증 값 「c12」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다.
여기서, 확인방법은 제 1 실시 예와 동일하므로 설명은 생략한다.
발행 공개키 확인부(1213)는, 「n-(c11×c12)」가 「IDI」로 나누어진다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단하고, 「n-(c11×c12)」가 「IDI」로 나누어지지 않는다고 판단한 경우에는, 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단하여 판독한 발행 식별자 정보 「IDI」를 일시적으로 기억한다.
발행 공개키 확인부(1213)는, 판독되지 않은 발행이 끝난 키 정보가 존재하는가 여부를 판단하고, 판독되지 않은 발행이 끝난 키 정보가 존재한다고 판단한 경우에는, 상기의 동작을 반복한다. 판독되지 않은 발행이 끝난 키 정보가 존재하지 않는다고 판단한 경우에는, 일시적으로 기억하고 있는 발행 식별자 정보가 존재하는가 여부를 판단한다.
일시적으로 기억하고 있는 발행 식별자 정보가 존재한다고 판단한 경우에는, 발행 공개키 확인부(1213)는, 기억되어 있는 모든 발행 식별자를 연결하여 부정 발행 식별자 정보 군(群)을 생성하고, 생성한 부정 발행 식별자 정보 군을 감사결과 출력부(1215)에 출력한다.
일시적으로 기억하고 있는 발행 식별자 정보가 존재하지 않는다고 판단한 경우에는, 발행 공개키 확인부(1213)는 모든 공개키의 정당성이 확인되었음을 나타내는 취지의 정당 메시지를 감사결과 출력부(1215)에 출력한다.
(5) 접수부(1214)
접수부(1214)는, 사용자의 조작에 의해 감사를 개시하는 지시와 감사대상인 키 발행 서버의 서버 식별자를 수신하면, 감사개시명령과 서버 식별자를 제어부(1212)에 출력한다.
(6) 감사결과 출력부(1215)
감사결과 출력부(1215)는, 발행 공개키 확인부(1213)에서 부정 발행 식별자 정보 군을 수신하면, 수신한 부정 발행 식별자 정보 군을 모니터(1250)에 출력한다.
감사결과 출력부(1215)는 발행 공개키 확인부(1213)에서 정당 메시지를 수신하면, 수신한 정당 메시지를 모니터(1250)에 출력한다.
또, 모니터(1250)에서는 감사결과 출력부(1215)에서 수신한 정보를 표시한다.
(7) 수신부(1216)
수신부(1216)는, 키 발행 서버(1100)에서 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 수신하면, 수신한 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 제어부(1212)에 출력한다.
(8) 송신부(1217)
송신부(1217)는 제어부(1212)에서 발행이 끝난 키 의뢰정보를 수신하면, 수신한 발행이 끝난 키 의뢰정보를 키 발행 서버(1100)에 송신한다.
2. 4 단말장치(1300)의 구성
단말장치(1300)는 제 1 실시 예에서의 단말장치(300)와 동일하므로 설명은 생략한다.
또, 단말장치 1301, …, 1302, 1303, …, 1304, 1305, …, 1306에 대해서도 단말장치(300)와 동일하므로 설명은 생략한다.
2. 5 키 발행시스템 2의 동작
여기에서는, 키 발행시스템 2의 동작에 대하여 설명한다.
(1) 키 발행시스템 2의 동작개요
여기에서는, 키 발행시스템 2의 동작 개요를 설명한다.
이하에는, 키 발행 서버(1100)가 단말장치(1300)에 키를 발행할 때의 동작개요를 나타낸다.
이후의 설명에서 하나 이상의 발행이 끝난 키 정보를 발행이 끝난 키 정보 군으로 기술한다.
<키 발행시의 동작개요>
키 발행시의 동작개요를 도 31에 도시한 흐름도를 이용하여 설명한다.
단말장치(1300)는, 사용자의 조작에 의해 키 발행요구의 지시를 접수하면, 키 발행 의뢰정보와, 단말 식별자 「TID」를 키 발행 서버(100)에 송신한다(스텝 S1000).
키 발행 서버(1100)는, 키 발행 의뢰정보와 단말 식별자 「TID」를 단말장치(1300)에서 수신하면, 키 발행처리에서 비밀키 및 공개키를 생성하고(스텝 S1005), 증명서 발행처리에 의해 스텝 S1005에서 생성한 공개키에 대한 공개키 증명서를 발행하며, 발행한 공개키 증명서와 스텝 S1005에서 생성한 비밀키를 단말장치(1300)에 송신한다(스텝 S1010).
단말장치(1300)는, 키 발행 서버(1100)에서 비밀키 「SK」 및 공개키 증명서 「Cert」를 수신하면, 수신한 비밀키 「SK」 및 공개키 증명서 「Cert」를 기억한다(스텝 S1015).
<키의 감사시의 동작개요>
키의 감사시의 동작개요를 도 32에 도시한 흐름도를 이용하여 설명한다.
키 발행 감사 서버(1200)는 감사 처리에서 발행이 끝난 키 의뢰정보를 키 발행 서버(1100)에 송신한다(스텝 S1050).
키 발행 서버(1100)는 키 정보 취득처리에서 취득한 발행이 끝난 키 정보 군과 서버 식별자를 키 발행 감사 서버(1200)에 송신한다(스텝 S1055).
(2) 키 발행처리
여기에서는, 도 31에 도시한 키 발행처리의 동작에 대하여 제 1 실시 예에서 설명한 키 발행처리와 다른 점만을 도 11, 도 12, 도 13 및 도 14에 도시한 흐름도를 이용하여 설명한다.
본 실시 예에 따른 키 발행처리는, 도 11, 도 12 및 도 13에 도시한 스텝 S200에서 스텝 S325까지 실행한다.
본 실시 예에 따른 키 발행 처리는, 도 13에 도시한 스텝 S330을, 키 생성부(1118)는 세트 「SK=(p1, p2, d)」를 비밀키로 하여 비밀키 저장부(1111)의 비밀키 저장영역에 기록하고, 공개키 증명서의 생성명령을 증명서 생성부(1122)에 출력하도록 변경한다.
본 실시 예에 따른 키 발행처리는 변경 후의 스텝 S330을 실행하면 처리를 종료한다.
(3) 증명서 발행 처리
여기에서는, 도 31에 도시한 키 발행처리의 동작에 대하여, 도 33에 도시한 흐름도를 이용하여 설명한다.
증명서 생성부(1122)는, 키 생성부(1118)에서 공개키 증명서의 생성명령을 수신하면, 증명서용 비밀키 저장부에서 증명서용 비밀키 「C_SK」를, 공개키 저장부(1112)에서 공개키 「PK」를, 식별자 저장부(1110)에서 발행 식별자 정보 「IDI」를, 각각 판독한다(스텝 S1100).
증명서 생성부(1122)는, 판독한 비밀키 「C_SK」, 공개키 「PK」 및 발행 식별자 정보 「IDI」를 이용하여 공개키 증명서 「Cert」를 생성하고, 생성한 공개키 증명서 「Cert」를 증명서 저장부(1113)에 기록하며, 공개키 증명서 「Cert」의 배 표개시명령을 정보 취득부(1119)에 출력한다(스텝 S1105).
정보 취득부(1119)는, 증명서 생성부(1122)에서 배포개시명령을 수신하면, 비밀키 저장부(1111)에서 기억하고 있는 비밀키 「SK」와, 증명서 저장부(1113)에서 기억하고 있는 공개키 증명서 「Cert」와, 제어부(1114)의 단말정보 기억영역에서 기억하고 있는 단말 식별자를 각각 판독하고, 판독한 비밀키 「SK」 및 공개키 증명서 「Cert」를 판독한 단말 식별자에 대응하는 단말장치(1300)에 송신부(1121)를 통해서 송신한다(스텝 S1110).
정보 취득부(1119)는, 공개키 저장부(1112)에서 발행한 공개키 「PK=(n, e)」를, 식별자 저장부(1110)에서 판독한 발행 식별자 정보 「IDI」를 각각 판독하고, 판독한 공개키 「PK」 및 발행 식별자 정보 「IDI」를 하나의 세트로 하여 발행이 끝난 키 정보 저장부(1124)에 기록한다(스텝 S1115).
(4) 키 정보 취득처리
여기에서는, 도 32에 도시한 키 정보 취득처리의 동작에 대하여, 도 34에 도시한 흐름도를 이용하여 설명한다.
키 발행 서버(1100)의 제어부(1114)는, 키 발행 감사 서버(1200)에서 수신부(1120)를 통해서 발행이 끝난 키 의뢰정보를 수신하면, 키 정보 취득명령을 정보 취득부(1119)에 출력한다(스텝 S1200).
키 발행 서버(1100)의 정보 취득부(1119)는, 제어부(1114)에서 키 정보 취득명령을 수신하면, 발행이 끝난 키 정보 저장부(1124)에서 모든 발행이 끝난 키 정보를 판독한다(스텝 S1205).
정보 취득부(1119)는, 제어부(1114)의 서버 식별자 기억영역(1130)에서 서버 식별자를 판독하고, 판독한 발행이 끝난 키 정보 군과 서버 식별자를 송신부(1121)를 통해서 키 발행 감사 서버(1200)에 송신한다(스텝 S1210).
(5) 감사처리
여기에서는, 도 32에 도시한 감사처리의 동작에 대하여, 도 35에 도시한 흐름도를 이용하여 설명한다.
키 발행 감사 서버(1200)의 접수부(1214)는, 사용자의 조작에 의해 감사를 개시하는 지시와, 감사대상인 키 발행 서버의 서버 식별자를 접수하면, 감사개시명령과 서버 식별자를 제어부(1212)에 출력한다(스텝 S1300).
제어부(1212)는, 접수부(1214)에서 공개키의 감사를 개시하는 감사개시명령과 감사대상인 서버 식별자(여기에서는, 「SID」라 한다)를 접수하면, 발행이 끝난 키 의뢰정보를 송신부(1217)를 통해서 서버 식별자에 대응하는 키 발행 서버(1100)에 송신한다(스텝 S1305).
제어부(1212)는 접수부(1214)에서 수신한 서버 식별자를 서버정보 기억영역(1220)에 기록한다(스텝 S1310).
제어부(1212)는, 키 발행 서버(1100)에서 수신부(217)를 통해서 하나 이상의 발행이 끝난 키 정보와 서버 식별자를 수신한다(스텝 S1315).
제어부(1212)는 수신한 서버 식별자와 서버정보 기억영역에서 기억하고 있는 서버 식별자가 일치하는가의 여부를 판단한다(스텝 S1320).
일치한다고 판단한 경우에는(스텝 S1320에서의 「YES」), 제어부(1212)는, 수신한 하나 이상의 발행이 끝난 키 정보를 발행이 끝난 키 정보 저장부(1211)에 기록하고, 감사개시명령과 수신한 서버 식별자를 발행 공개키 확인부(1213)에 출력한다(스텝 S1325).
발행 공개키 확인부(1213)는 확인처리에서 공개키의 정당성의 확인을 행하고 결과를 모니터(1250)에 표시한다.
일치하지 않는다고 판단한 경우에는(스텝 S1320에서의 「NO」), 제어부(1212)는 처리를 종료한다.
(6) 확인처리
여기에서는, 도 35에 도시한 확인처리의 동작에 대하여, 도 36에 도시한 흐름도를 이용하여 설명한다.
발행 공개키 확인부(1213)는, 제어부(1212)에서 감사개시명령과 서버 식별자를 수신하면, 수신한 서버 식별자를 이용하여 대응하는 제 1 검증 값 「c11」 및 제 2 검증 값「c12」를 확인정보 저장부(1210)에서 판독한다(스텝 S1400).
발행 공개키 확인부(1213)는 발행이 끝난 키 정보 저장부(1211)에서 판독되지 않은 발행이 끝난 키 정보를 하나 판독한다(스텝 S1405).
발행 공개키 확인부(1213)는, 판독한 발행이 끝난 키 정보에 포함되는 공개키 「PK」와 발행 식별자 정보 「IDI」와, 제1 검증 값 「c11」 및 제 2 검증 값 「c12」를 이용하여 공개키 「PK」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인한다(스텝 S1410). 또, 확인방법은 제 1 실시 예와 동일하므로 설명은 생략한다.
발행 공개키 확인부(1213)는, 「n-(c11×c12)」가 「IDI」로 나누어지지 않는다고 판단한 경우, 즉 공개키가 부정이라고 판단한 경우(스텝 S1410에서의 「NO」), 판독한 발행 식별자 정보 「IDI」를 일시적으로 기억한다(스텝 S1415).
발행 공개키 확인부(1213)는, 「n-(c11×c12)」가 「IDI」로 나누어진다고 판단한 경우, 즉 공개키가 정당하다고 판단한 경우에는(스텝 S1410에서의 「YES」), 스텝 S1415를 생략한다.
발행 공개키 확인부(1213)는, 판독되지 않는 발행이 끝난 키 정보가 존재하는가 여부를 판단하고(스텝 S1420), 판독되지 않은 발행이 끝난 키 정보가 존재한다고 판단한 경우에는(스텝 S1420에서의 「YES」), 스텝 S1405에 복귀한다.
판독되지 않은 발행이 끝난 키 정보가 존재하지 않는다고 판단한 경우에는(스텝 S1420에서의 「NO」), 일시적으로 기억하고 있는 발행 식별자 정보가 존재하는가 여부를 판단한다(스텝 S1425).
일시적으로 기억하고 있는 발행 식별자 정보가 존재한다고 판단한 경우에는(스텝 S1425에서의 「YES」), 발행 공개키 확인부(1213)는, 기억되어 있는 모든 발행 식별자를 연결하여 부정 발행 식별자 정보 군을 생성하고, 생성한 부정 발행 식별자 정보 군을 감사결과 출력부(1215)를 통해서 모니터(1250)에 표시한다(스텝 S1430).
일시적으로 기억하고 있는 발행 식별자 정보가 존재하지 않는다고 판단한 경우에는(스텝 S1425에서의 「NO」), 발행 공개키 확인부(1213)는 모든 공개키의 정당성이 확인되었음을 나타내는 취지의 정당 메시지를 감사결과 출력부(1215)를 통 해서 모니터(1250)에 표시한다(스텝 S1435).
3. 종합
상기의 제 1 실시 예에서 설명한 키 발행 서버(100)의 소수 생성부(116)의 소수정보 생성부(133)는, 도 37에 도시한 동작을 반복함으로써 8비트의 소수에서 512비트의 소수를 생성한다.
소수정보 생성부(133)는, 8비트의 소수에서 16비트의 소수를 생성하고(스텝 S1700), 생성한 16비트의 소수에서 32비트의 소수를 생성하며(스텝 S1705), 이후에 순서대로 32비트의 소수에서 64비트의 소수, 64비트의 소수에서 128비트의 소수, 128비트의 소수에서 256비트의 소수를 생성하고(스텝 S1710, S1715, 및 S1720), 최후에 생성한 256비트의 소수에서 516비트의 소수를 생성한다(스텝 S1725).
소수 생성부(116)는 8비트에서 128비트의 소수를 생성하는 동안은 제어정보 「정보 C」에 의해 종래와 동일한 생성방법으로 소수를 생성한다.
소수 생성부(116)는, 스텝 S1720에서는 제어정보 「정보 B」에 의해 생성되는 소수가 발행 식별자 정보 「IDI」에 대하여 고유하게 되도록 단사의 함수 「f」를 이용하여 256비트의 소수를 생성한다.
소수 생성부(116)는, 스텝 S1725에서는 제어정보 「정보 A」에 의해 생성되는 소수의 정당성을 확인할 수 있도록 발행 식별자 정보 「IDI」를 매입한 512비트의 소수를 생성한다.
이에 의해, 키 발행 서버(100)는, 단사 함수 「f」를 이용함으로써, 단말장치별로 다른 비밀키 및 공개키를 생성할 수 있다. 또, 키 발행 서버(100)에서 256 비트의 소수에서 512비트의 소수를 생성할 때에 생성되는 소수에 발행 식별자 정보 「IDI」가 매입되어 있으므로, 증명서 발행 서버(200)는 생성된 공개키와 발행 식별자 정보를 이용하여 공개키의 정당성을 확인할 수 있다.
또, 제 2의 실시 예에서도, 상기의 기재와 마찬가지로 키 발행 서버(1100)는 단수함수 「f」를 이용함으로써, 단말장치 별로 다른 비밀키 및 공개키를 생성할 수 있다. 또, 키 발행 서버(1100)에서 256비트의 소수에서 512비트의 소수를 생성할 때에 생성되는 소수에 발행 식별자 정보 「IDI」가 매입되어 있으므로, 키 발행 감사 서버(1200)는 생성된 공개키와 발행 식별자 정보를 이용하여 공개키의 정당성을 확인할 수 있다.
상기 제 1 실시 예에 의하면, 키 발행 서버(100)는 단사 함수 「f」를 이용함으로써, 복수 회 소수 생성을 행하여도 소수가 일치하지 않음을 비교하지 않고 증명할 수 있는 소수를 생성하는 것을 실현할 수 있다.
상기 제 1 실시 예에 의하면, 키 발행 서버(100)가 생성하는 소수에 발행 식별자 정보 「IDI」를 매입함으로써, 증명서 발행 서버(200)는 바르게 키 발행하고 있는지를 발행 식별자 정보 「IDI」로 나누어지는가를 체크함으로써 확인할 수 있다.
종래 1대의 키 발행 서버를 갖는 키 발행시스템이 있다. 그러나 사용자가 증가하면, 소수를 생성할 때에 복수 회 거듭제곱을 행함에 따라 계산량이 커지므로, 계산시간이 길어지게 된다. 이에, 키 발행 서버를 복수 대 가지고, 각각에서 키 발행을 함으로써 계산량의 분산을 도모할 수 있다. 그러나 복수 대의 키 발행 서버를 갖는 종래의 키 발행시스템에서는, 예를 들어 2명의 사용자에게 동일한 소수가 키가 되는 경우가 있다. 이때, 암호의 안전성이 현저하게 저하한다. 왜냐하면, 예를 들어, 사용자 A의 소수를 pA1, pA2로 하고, nA=pA1×pA2, 사용자 B의 소수를 pB1, pB2로 하고, nB=pB1×pB2로 한다. 이때, pA1=pB1이면, 사용자 A는 GCD(pA1, nB)를 구함으로써, 사용자 B의 소수의 하나가 pA1과 동일함을 알 수 있으며, 그 결과, nB/pA1을 계산함으로써 pB2도 얻을 수 있다. RSA 암호는 소인수 분해를 안전성의 근거로 하고 있으므로, 소인수가 판명하면 간단하게 해독이 가능해진다. 따라서, 사용자 A는 사용자 B의 공개키로 암호화한 암호문을 풀 수 있다. 또, 마찬가지로 사용자 B는 사용자 A의 공개키로 암호화한 암호문을 풀 수 있게 되어 버린다.
종래 기술에서는 복수 회 소수 생성을 행했을 때에 소수가 일치할 가능성이 있고, 그로 인해 암호화 안전성을 현저하게 저하시킨다. 그것에 대해서는, 발행이 끝난 소수(비밀키)와 발행한 소수를 비교함으로써 일치하지 않음을 확인할 수 있다. 그러나 통상의 공개키 암호의 시스템에서는, 발행한 후의 공개키는 키 발행 서버에서 관리하지만, 비밀키는 기밀성이 높으므로 삭제해버리는 경우가 많다. 따라서, 새롭게 발행이 끝난 소수(비밀키)를 관리할 필요가 있다. 또, 발행 수가 10억 개 정도로 커지면, 비교하는 시간이 길어져서 현실적이지 않다.
또, 복수의 키 발행 서버에서 발행한 경우, 모든 키 발행 서버에서 발행한 소수가 일치되지 않으므로, 각 키 발행 서버 사이에서 발행한 소수, 즉 비밀키를 서로 체크 할 필요가 있다. 각 키 발행 서버 사이에 신뢰관계가 있는 경우는 문제가 없으나, 각 키 발행 서버는 각각 다른 회사가 설치하는 일이 많으므로 신뢰할 수 있다고는 할 수 없다. 또, 만약 각 키 발행 서버 사이에 신뢰관계가 있는 경우라도, 키를 발행할 때마다 각 키 발행 서버의 비밀키의 데이터베이스에 액세스하기 위해 각 키 발행 서버 사이의 통신량이 커진다. 이와 같이 각 키 발행 서버 사이에서 서로 체크하는 것도 현실적이지 않다.
본 발명의 키 발행 서버를 이용하면, 소수의 생성을 복수 회 행하여도 소수가 일치하지 않음을 비교하지 않고 증명할 수 있다.
3. 1 변형 예
본 발명을 상기의 제 1, 제 2 실시 예 및 소수 생성의 변형 예 1, 2, 3에 의거하여 설명하였으나, 본 발명은 상기의 실시 예에 한정되지 않음은 당연하다. 이하와 같은 경우도 본 발명에 포함된다.
(1) 발행 식별자 정보 「IDI」는, 서버 식별자, 단말 식별자 및 수 「1」의 연결에서 이루어지는 것으로 하였으나, 이에 한정되는 것은 아니다. IDI는 서버 식별자와 카운터에 의해 생성되는 발행 식별자 「PID」를 이용하여 생성하여도 좋다. 여기서, 발행 식별자 「PID」는 1에서 발행 순으로 할당된 홀수이다. 이때, 식별자 생성부(115)는 소수를 발행(생성)할 때마다 수 「2」를 증가시켜 감으로써, 용이하게 매회 다른 소수를 생성할 수 있게 된다.
(2) 128비트에서 256비트의 소수를 생성할 때에 단사 함수를 이용하였으나, 이에 한정되는 것은 아니다. 발행 식별자 정보를 매입하기 전이라면, 단사 함수를 시행하는 동작은 어느 단계라도 좋다.
예를 들어, 8비트의 소수에서 16비트의 소수를 생성할 때에 단사 함수를 시 행하여도 된다. 또는, 16비트의 소수에서 32비트의 소수를 생성할 때에 단사 함수를 시행하여도 된다. 또는 32비트의 소수에서 64비트의 소수를 생성할 때에 단사 함수를 시행하여도 된다. 또는 64비트의 소수에서 128비트의 소수를 생성할 때에 단사 함수를 시행하여도 된다.
단, 발행 식별자 「IDI」의 비트 수는, 입력에 이용되는 소수 「q」의 비트 수보다도 작고, 난수 「R1」의 비트 수는 (lenq-lenIDI-1) 비트이며, 수 「R」의 비트 수는 (lenq-1) 비트이다.
(3) 제 1 실시 예에서의 소수 생성부(116)를 하나의 소수 생성장치로 하여도 된다. 이때, 소수 생성장치는, 발행 식별자 정보 「IDI」와 그 비트사이즈 「lenIDI」가 인가된 경우, 인가된 「IDI」 및 그 비트사이즈 「lenIDI」와 미리 기억되어 있는 8비트의 소수에서 512비트의 소수를 생성한다.
또, 제 2 실시 예에서의 소수 생성부(1116)도 마찬가지로 하나의 소수 생성장치여도 된다.
(4) 제 1 실시 예에서의 소수 생성부(116)를 미리 기억하고 있는 8비트의 소수에서 128비트의 소수를 생성하는 제 1 소수 생성부와, 128비트의 소수에서 512비트의 소수를 생성하는 제 2 소수 생성부로 이루어져도 된다. 또, 제 1 소수 생성부 및 제 2 소수 생성부를 각각 개별의 소수 생성장치로 하여도 된다.
제 1 소수 생성부는, 종래와 동일한 방법으로 8비트의 소수에서 128비트의 소수를 생성한다. 종래의 방법에 대해서는 특허문헌 1 및 비 특허문헌 3이 상세하다.
이하에, 제 2 소수 생성부의 구성의 일례를 도 38에 도시한다. 여기에서는, 제 2 소수 생성부를 하나의 소수 생성장치(2100)로 설명한다. 소수 생성장치(2100)는, 소수 「q1」과, 그 비트사이즈 「lenq1」(여기에서는, 비트사이즈를 128비트로 한다)와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」가 인가된 경우에, (4×lenq1) 비트로 이루어지는 소수 「N」을 출력한다. 또, 여기서 설명하는 소수 생성장치(2100)는 제 1 실시 예에서 설명한 제 1 및 제 2 검증 값을 이용하지 않고 소수 「N」을 생성한다.
소수 생성장치(2100)는, 도 38에 도시한 바와 같이, 접수부(2101), 접수정보 기억부(2102), 소수 시드 생성부(2103), 난수 생성부(2104), 소수 후보 생성부(2105), 제 1 소수 판정부(2106) 및 제 2 소수 판정부(2107)로 구성되어 있다.
소수 생성장치(2100)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 소수 생성장치(2100)는 그 기능을 달성한다.
<접수정보 기억부(2102)>
접수정보 기억부(2102)는, 소수 「N」을 생성할 때에 인가된 소수 「q1」, 소수 「q1」의 비트사이즈 「lenq1」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 기억하는 영역을 구비하고 있다.
<접수부(2101)>
접수부(2101)는, 소수 「q1」, 소수 「q1」의 비트사이즈 「lenq1(예를 들어, 128비트)」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 외부(예를 들어, 상기에서 설명한 제 1 소수 생성부)에서 접수하고, 접수한 소수 「q1」, 그 비트사이즈 「lenq1」, 발행 식별자 정보 「IDI」 및 그 비트사이즈 「lenIDI」를 접수정보 기억부(2102)에 기록한다.
접수부(2101)는 접수한 각 정보를 소수 시드 생성부(2103)에 출력한다.
<소수 시드 생성부(2103)>
소수 시드 생성부(2103)는, 상기 제 1 실시 예에서 설명한 소수 생성부(116)에서, 제어정보장치가 「정보 B」인 경우에 행하는 동작과 동일한 동작을 행하므로, 여기에서는 설명을 생략한다. 또, 여기에서는, 128비트의 소수 「q1」에서 256비트의 소수 「q2」를 생성하는 것으로 한다.
소수 시드 생성부(2103)는 생성한 소수 「q2」를 소수 후보 생성부(2105)에 출력한다.
<난수 생성부(2104)>
난수 생성부(2104)는, 제 1 생성지시를 소수 후보 생성부(2105)에서 수신하면, 소수 「q1」의 비트사이즈 「lenq1」과, 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 접수정보 기억부(2102)에서 판독한다.
난수 생성부(2104)는, 판독한 비트사이즈 「lenq1」 및 「lenIDI」를 이용하여, (2×lenq1-lenIDI-1) 비트의 난수 「R1」을 생성한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
난수 생성부(2104)는 생성한 난수 「R1」을 소수 후보 생성부(2105)에 출력한다.
또, 난수 생성부(2104)는, 제 1 소수 판정부(2106) 및 제 2 소수 판정부(2107) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 각 비트사이즈를 판독하고 상기의 동작을 행한다.
<소수 후보 생성부(2105)>
소수 후보 생성부(2105)는 생성된 수를 기억하는 생성정보 기억영역을 구비하고 있다.
소수 후보 생성부(2105)는, 소수 시드 생성부(2103)에서 소수 「q2」를 수신하면, 제 1 생성지시를 난수 생성부(2104)에 출력한다.
소수 후보 생성부(2105)는, 난수 생성부(2104)에서 난수 「R1」을 수신하면, 접수정보 기억부(2102)에서 기억하고 있는 발행 식별자 정보 「IDI」를 판독한다.
소수 후보 생성부(2105)는, 소수 시드 생성부(2103)에서 수신한 소수 「q2」, 접수정보 기억부(2102)에서 판독한 발행 식별자 정보 「IDI」 및 난수 생성부(2104)에서 수신한 난수 「R1」을 이용하여 수 「R=IDI×R1」과 수 「N=2×R×q2+1」을 생성한다.
소수 후보 생성부(2105)는, 소수 「q1」의 비트사이즈 「lenq1」을 접수정보 기억부(2102)에서 판독하고, 생성한 수 「N」의 비트사이즈가 「4×lenq1」인가 여부를 판단한다.
「4×lenq1」이라고 판단한 경우에는, 소수 후보 생성부(2105)는 생성한 수 「N」을 제 1 소수 판정부(2106)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「4×lenq1」이 아니라고 판단한 경우에는, 소수 후보 생성부(2105)는, 난수 생성부(2104)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 수 「R」 및 「N」을 생성한다.
소수 후보 생성부(2105)는 수 「N」의 비트사이즈가 「4×lenq1」이 될 때까지 상기의 동작을 반복한다.
<제 1 소수 판정부(2106)>
제 1 소수 판정부(2106)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일한 동작이므로 여기에서는 설명은 생략한다.
<제 2 소수 판정부(2107)>
제 2 소수 판정부(2107)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일한 동작이므로 여기에서는 설명을 생략한다.
또, 제 2 소수 판정부(2107)는 판정에 의해 생성한 수 「N」이 소수라고 판단한 경우에는, 생성한 수 「N」을 소수 「N」으로 출력한다.
<소수 생성장치(2100)의 동작>
이하에, 소수 생성장치(2100)의 동작에 대하여 설명한다.
(소수 생성처리)
여기에서는, 소수 생성장치(2100)에서 행해지는 소수 생성처리에 대하여, 도 39에 도시한 흐름도를 이용하여 설명한다.
소수 생성장치(2100)는, 접수부(2101)에서 소수 「q1」, 소수 「q1」의 비트사이즈 「lenq1」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 접수하고, 접수한 각 정보를 접수정보 기억부(2102)에 기록한다(스텝 S2000).
소수 생성장치(2100)는, 소수 시드 생성부(2103)에 있어서, 스텝 S2000에서 접수한 각 정보를 이용하여 소수 「q2」를 생성한다(스텝 S2005).
소수 생성장치(2100)는, 난수 생성부(2104)에 있어서, 스텝 S2000에서 접수한 비트사이즈 「lenq1」 및 「lenIDI」를 이용하여 (2×lenq1-lenIDI-1) 비트의 난수 「R1」을 생성한다(스텝 S2010). 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
소수 생성장치(2100)는, 소수 후보 생성부(2105)에 있어서, 스텝 S2000에서 접수된 발행 식별자 정보 「IDI」, 스텝 S2005에서 생성된 소수 「q2」 및 스텝 S2010에서 생성된 난수 「R1」을 이용하여 소수 후보 생성처리를 시행함으로써, 수 「R」 및 「N」을 생성한다(스텝 S2015). 소수 생성장치(2100)는, 제 1 소수 판정부(2106)에 있어서, 스텝 S2015에서 생성한 수 「N」을 이용하여 상기에서 설명한 식 (eq1)이 성립하는가 여부를 판정한다(스텝 S2020).
식 (eq1)이 성립하고 있다고 판단한 경우에는(스텝 S2020에서의 「YES」), 소수 생성장치(2100)는 제 2 소수 판정부(2107)에 있어서, 스텝 S2015에서 생성한 수 「R」과 「N」을 이용하여 상기에서 설명한 식 (eq2)가 성립하는가 여부를 판정한다(스텝 S2025).
식 (eq2)가 성립하고 있다고 판단한 경우에는(스텝 S2025에서의 「YES」), 소수 생성장치(2100)는 수 「N」을 소수 「N」으로 출력하고, 처리를 종료한다(스텝 S2030).
식 (eq1)이 성립하고 있지 않다고 판단한 경우(스텝 S2020에서의 「NO)」, 및 식 (eq2)가 성립하고 있지 않다고 판단한 경우에는(스텝 S2025에서의 「NO」), 스텝 S2010으로 복귀하고, 다시 처리를 행한다.
(소수 후보 생성처리)
여기에서는, 소수 생성처리의 스텝 S2015에서 행해지는 소수 후보 생성처리에 대하여, 도 40에 도시한 흐름도를 이용하여 설명한다.
소수 후보 생성부(2105)는, 소수 생성처리의 스텝 S2000에서 접수한 발행 식별자 정보 「IDI」와, 스텝 S2010에서 생성한 난수 「R1」을 이용하여 수 「R」을 생성한다(스텝 S2050). 여기서, 수 「R」은 「R=IDI×R1」이다.
소수 후보 생성부(2105)는, 소수 생성처리의 스텝 S2005에서 생성된 소수 「q2」와 스텝 S2050에서 생성된 수 「R」을 이용하여 수 「N」을 생성한다(스텝 S2055). 여기서, 수 「N」은 「N=2×R×q2+1」이다.
소수 후보 생성부(2105)는 생성한 수 「N」의 비트사이즈가 「4×lenq」인가 여부를 판단한다(스텝 S2060).
「4×lenq1」이라고 판단한 경우에는(스텝 S2060에서의 「YES」), 처리를 종료한다. 「4×lenq1」이 아니라고 판단한 경우에는(스텝 S2060에서의 「NO」), 소수 생성처리의 스텝 S2010에서 생성한 난수 「R1」에 2를 곱하여 그 결과를 「R1」 으로 하고, 스텝 S2050에 복귀한다(스텝 S2065).
<그 외>
여기서, 생성하는 비밀키인 소수의 비트사이즈는 512비트로 하고 있으나, 이에 한정되는 것은 아니다. 1024비트라도, 2048비트라도 좋다. 또, 상기의 제 1 소수 생성부에서 생성하는 소수도 마찬가지로 128비트에 한정되는 것은 아니다.
(5) 상기에서 설명한 소수 시드 생성부(2103)를 하나의 소수 생성장치로 하여도 좋다. 이하에, 이 경우의 소수 생성장치(2200)에 대하여 설명한다. 소수 생성장치(2200)는, 소수 「q」와, 그 비트사이즈 「lenq」(여기에서는, 비트사이즈를 128비트로 한다)와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」가 인가된 경우에, (2×lenq) 비트로 이루어지는 소수 「N」을 출력한다.
소수 생성장치(2200)는, 도 41에 도시한 바와 같이, 접수부(2201), 접수정보 기억부(2202), 난수 생성부(2203), 소수 후보 생성부(2204), 제 1 소수 판정부(2205) 및 제 2 소수 판정부(2206)로 구성되어 있다.
소수 생성장치(2200)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 소수 생성장치(2200)는 그 기능을 달성한다.
<접수정보 기억부(2202)>
접수정보 기억부(2202)는, 소수 「N」을 생성할 때에 인가된 소수 「q」, 소 수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 기억하는 영역을 구비하고 있다.
<접수부(2201)>
접수부(2201)는, 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 외부(예를 들어, 상기에서 설명한 제 1 소수 생성부)에서 접수하고, 접수부(2201)는 접수한 소수 「q」, 그 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 그 비트사이즈 「lenIDI」를 접수정보 기억부(2202)에 기록한다.
접수부(2201)는 처리를 개시하는 취지의 개시지시를 소수 후보 생성부(2204)에 출력한다.
<난수 생성부(2203)>
난수 생성부(2203)는, 난수를 생성하는 취지의 제 1 생성지시를 소수 후보 생성부(2204)에서 수신하면, 소수 「q」의 비트사이즈 「lenq」와, 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 접수정보 기억부(2202)에서 판독한다.
난수 생성부(2203)는 판독한 비트사이즈 「lenq」 및 「lenIDI」를 이용하여 (lenq-lenIDI-1) 비트의 난수 「R1」을 생성한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다. 난수 생성방법은 비 특허문헌 2가 상세하다.
난수 생성부(2203)는 생성한 난수 「R1」을 소수 후보 생성부(2204)에 출력한다.
또, 난수 생성부(2203)는, 제 1 소수 판정부(2205) 및 제 2 소수 판정 부(2206) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 각 비트사이즈를 판독하고 상기의 동작을 행한다.
<소수 후보 생성부(2204)>
소수 후보 생성부(2204)는, 단사인 함수 「f」를 미리 기억하고 있는 함수 기억영역과, 함수 「f」를 이용하여 생성된 수를 기억하는 생성정보 기억영역을 구비하고 있다.
소수 후보 생성부(2204)는, 접수부(2201)에서 개시지시를 수신하면, 제 1 생성지시를 난수 생성부(2203)에 출력한다.
소수 후보 생성부(2204)는, 난수 「R1」을 난수 생성부(2203)에서 수신하면, 접수정보 기억부(2202)에서 기억하고 있는 소수 「q」 및 발행 식별자 정보 「IDI」를 판독한다.
소수 후보 생성부(2204)는, 함수 기억영역에서 기억하고 있는 함수 「f」와, 판독한 소수 「q」 및 발행 식별자 정보 「IDI」와, 난수 생성부(2203)에서 수신한 난수 「R1」을 이용하여 수 「R=f(IDI∥R1)」과, 수 「N=2×R×q+1」을 생성한다.
소수 후보 생성부(2204)는 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(2204)는, 생성한 수 「N」을 제 1 소수 판정부(2205)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(2204)는, 난수 생성부(2203)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 상기의 식을 만족하는 수 「R」 및 「N」을 생성한다.
소수 후보 생성부(2204)는 생성한 수 「N」의 비트사이즈가 「2×lenq」가 될 때까지 상기의 동작을 반복한다.
<제 1 소수 판정부(2205)>
제 1 소수 판정부(2205)는, 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일한 동작이므로 여기에서는 설명을 생략한다.
<제 2 소수 판정부(2206)>
제 2 소수 판정부(2206)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일한 동작이므로 여기에서는 설명을 생략한다.
또, 제 2 소수 판정부(2206)는 판정에 의해 생성한 수 「N」이 소수라고 판단한 경우에는, 생성한 수 「N」을 소수 「N」으로 출력한다.
<소수 생성장치(2200)의 동작>
이하에, 소수 생성장치(2200)의 동작에 대하여 설명한다.
(소수 생성처리)
여기에서는, 소수 생성장치(2200)에서 행해지는 소수 생성처리에 대하여, 도 39에 도시한 흐름도를 이용하여 변경 점만 설명한다.
소수 생성장치(2200)는, 스텝 S2000에서 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「 lenIDI」를 사용자 조작에 의해 접수하고, 접수한 각 정보를 접수정보 기억부(2202)에 기록하도록 변경한다.
소수 생성장치(2200)는, 상기와 같이 변경된 스텝 S2000의 실행 후, 스텝 S2005를 생략하고, 이하와 같이 변경된 스텝 S2010을 실행한다. 소수 생성장치(2200)는 스텝 S2010에서 (lenq-lenIDI-1) 비트의 난수 「R1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 39와 동일하므로 설명은 생략한다.
(소수 후보 생성처리)
여기에서는, 소수 후보 생성처리에 대하여, 도 40에 도시한 흐름도를 이용하여 변경 점만 설명한다.
우선, 스텝 S2050을 수 「R=f(IDI∥R1)」을 생성하도록 변경한다.
이어서, 스텝 S2055를 수 「N=2×R×q+1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 40과 동일하므로 설명은 생략한다.
(6) 소수 생성 변형 예 3에서의 소수 생성부(116C)를 미리 기억하고 있는 8비트의 소수에서 256비트의 소수를 생성하는 제 1 소수 생성부와, 256비트의 소수에서 512비트의 소수를 생성하는 제 2 소수 생성부로 이루어져 있어도 된다. 또, 제 1 소수 생성부 및 제 2 소수 생성부를 각각 개별의 소수 생성장치로 하여도 된다.
제 1 소수 생성부는 종래와 동일한 방법으로 8비트의 소수에서 256비트의 소수를 생성한다.
이하에, 제 2 소수 생성부의 구성의 일례를 도 42에 도시한다. 여기에서는, 제 2 소수 생성부를 하나의 소수 생성장치(2300)로 설명한다. 소수 생성장치(2300)는, 소수 「q」와, 그 비트사이즈 「lenq」(여기에서는, 비트사이즈를 128비트로 한다)와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」가 인가된 경우에, (2×lenq) 비트로 이루어지는 소수 「N」을 출력한다. 또, 여기서 설명하는 소수 생성장치(2300)는 제 1 실시 예에서 설명한 제 1 및 제 2 검증 값을 이용하지 않고 소수 「N」을 생성한다.
소수 생성장치(2300)는, 도 42에 도시한 바와 같이, 접수부(2301), 접수정보 기억부(2302), 식별자 소수 생성부(2303), 난수 생성부(2304), 소수 후보 생성부(2305), 제 1 소수 판정부(2306) 및 제 2 소수 판정부(2307)로 구성되어 있다.
소수 생성장치(2300)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 소수 생성장치(2300)는 그 기능을 달성한다.
<접수정보 기억부(2302)>
접수정보 기억부(2302)는, 소수 「N」을 생성할 때에 인가된 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 기억하는 영역을 구비하고 있다.
<접수부(2301)>
접수부(2301)는, 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 외부(예를 들어, 제 1 소수 생성부)에서 접수하고, 접수한 소수 「q」, 그 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 그 비트사이즈 「lenIDI」를 접수정보 기억부(2302)에 기록한다.
접수부(2301)는 처리를 개시하는 취지의 개시지시를 식별자 소수 생성부(2303)에 출력한다.
<식별자 소수 생성부(2303)>
식별자 소수 생성부(2303)는 소수 「qg」 및 그 비트사이즈 「lenqg」를 미리 기억하고 있다.
식별자 소수 생성부(2303)는, 발행 식별자 「IDI」와 소수 「qg」에서 고유하게 소수를 생성하는 소수 생성함수 「gp」와, 단사의 함수 「f」를 미리 기억하고 있다.
식별자 소수 생성부(2303)는, 접수부(2301)에서 개시지시를 수신하면, 발행 식별자 정보 「IDI」를 접수정보 기억부(2302)에서 판독한다.
식별자 소수 생성부(2303)는 미리 기억하고 있는 소수 「qg」 및 소수 생성 함수 「gp」와 판독한 발행 식별자 정보 「IDI」에서 소수 「pIDI=gp(IDI, qg)」를 생성한다. 소수 「pIDI」의 생성방법은 소수 생성의 변형 예 3에서 설명한 방법과 동일하므로 설명은 생략한다.
식별자 소수 생성부(2303)는 생성한 소수 「pIDI」를 소수 후보 생성 부(2305)에 출력한다.
<난수 생성부(2304)>
난수 생성부(2304)는, 제 1 생성지시를 소수 후보 생성부(2305)에서 수신하면, 소수 「q」의 비트사이즈 「lenq」를 접수정보 기억부(2302)에서 판독하고, 소수 「qg」의 비트사이즈 「lenqg」를 식별자 소수 생성부(2303)에서 판독한다.
난수 생성부(2304)는, 판독한 비트사이즈 「lenq」 및 「lenqg」를 이용하여, (lenq-2×lenqg-1) 비트의 난수 「R」을 생성한다. 여기서, 난수 「R」의 최상위 비트는 1로 한다.
난수 생성부(2304)는 생성한 난수 「R」을 소수 후보 생성부(2305)에 출력한다.
또, 난수 생성부(2304)는 제 1 소수 판정부(2306) 및 제 2 소수 후보 판정부(2307) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 각 비트사이즈를 판독하고, 상기의 동작을 행한다.
<소수 후보 생성부(2305)>
소수 후보 생성부(2305)는, 식별자 소수 생성부(2303)에서 소수 「pIDI」를 수신하면, 제 1 생성지시를 난수 생성부(2304)에 출력한다.
소수 후보 생성부(2305)는, 난수 생성부(2304)에서 난수 「R」을 수신하면, 접수정보 기억부(2302)에서 기억하고 있는 소수 「q」를 판독한다.
소수 후보 생성부(2305)는, 식별자 소수 생성부(2303)에서 수신한 소수 「pIDI」, 접수정보 기억부(2302)에서 판독한 소수 「q」 및 난수 생성부(2304)에서 수신한 난수 「R」을 이용하여, 「N=2×R×q×pIDI+1」을 생성한다.
소수 후보 생성부(2305)는, 소수 「q」의 비트사이즈 「lenq」를 접수정보 기억부(2302)에서 판독하고, 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(2305)는 생성한 수 「N」을 제 1 소수 판정부(2306)에 출력하고, 난수 「R」을 일시적으로 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(2305)는 난수 생성부(2304)에서 수신한 난수 「R」에 2를 곱하여 그 결과를 「R」로 하고, 다시 상기의 동작을 행하여 수 「N」을 생성한다.
소수 후보 생성부(2305)는 수 「N」의 비트사이즈가 「2×lenq」가 될 때까지 상기의 동작을 반복한다.
<제 1 소수 판정부(2306)>
제 1 소수 판정부(2306)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일한 동작이므로 여기에서는 설명을 생략한다.
<제 2 소수 후보 판정부(2307)>
제 2 소수 후보 판정부(2307)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일한 동작이므로 여기에서는 설명을 생략한다.
또, 제 2 소수 후보 판정부(2307)는, 판정에 의해 생성한 수 「N」이 소수라고 판단한 경우에는, 생성한 수 「N」을 소수 「N」으로 출력한다.
<소수 생성장치(2300)의 동작>
이하에, 소수 생성장치(2300)의 동작에 대하여 설명한다.
(소수 생성장치)
여기에서는, 소수 생성장치(2300)에서 행해지는 소수 생성처리에 대하여, 도 39에 도시한 흐름도를 이용하여 변경 점만 설명한다.
소수 생성장치(2300)는, 스텝 S2000에서 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 사용자 조작에 의해 접수하고, 접수한 각 정보를 접수정보 기억부(2202)에 기록하도록 변경한다.
소수 생성장치(2300)는 스텝 S2005에서 소수 「pIDI」를 생성하도록 변경한다.
소수 생성장치(2300)는 스텝 S2010에서 (lenq-2×lenqg-1) 비트의 난수 「R」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 39와 동일하므로 설명은 생략한다.
(소수 후보 생성처리)
여기에서는, 소수 후보 생성처리에 대하여, 도 40에 도시한 흐름도를 이용하여 변경 점만 설명한다.
우선, 스텝 S2050을 생략한다.
이어서, 스텝 S2055를 수 「N=2×R×q×pIDI+1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 40과 동일하므로 설명은 생략한다.
<그 외>
여기에서는, 생성하는 비밀키인 소수의 비트사이즈는 512비트로 하고 있으나, 이에 한정되는 것은 아니다. 1024비트라도, 2048비트라도 좋다. 또, 상기의 제 1 소수 생성부에서 생성하는 소수도 마찬가지로 256비트에 한정되는 것은 아니다.
(7) 제 1 실시 예에서의 소수 생성부(116)를 미리 기억하고 있는 8비트의 소수에서 256비트의 소수를 생성하는 제 1 소수 생성부와, 256비트의 소수에서 512비트의 소수를 생성하는 제 2 소수 생성부로 이루어져도 좋다. 또, 제 1 소수 생성부 및 제 2 소수 생성부를 각각 개별의 소수 생성장치로 하여도 좋다.
제 1 소수 생성부는, 종래와 동일한 방법으로 8비트의 소수에서 128비트의 소수를 생성하고, 상기에서 설명한 소수 생성장치(2200)를 적용하여 128비트의 소수에서 256비트의 소수를 생성한다.
이하에, 제 2 소수 생성부의 구성의 일례를 도 43에 도시한다. 여기에서는, 제 2 소수 생성부를 하나의 소수 생성장치(2400)로 설명한다. 소수 생성장치(2400)는, 소수 「q」와, 그 비트사이즈 「lenq」(여기에서는, 비트사이즈를 256비트로 한다)와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」가 인가된 경우에, (2×lenq) 비트로 이루어지는 소수 「N」을 출력한다. 또, 여기서 설명하는 소수 생성장치(2400)는 제 1 실시 예에서 설명한 제 1 및 제 2 검증 값을 이용하지 않고 소수 「N」을 생성한다.
소수 생성장치(2400)는, 도 43에 도시한 바와 같이, 접수부(2401), 접수정보 기억부(2402), 난수 생성부(2403), 소수 후보 생성부(2404), 제 1 소수 판정부(2405) 및 제 2 소수 판정부(2406)로 구성되어 있다.
소수 생성장치(2400)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상기 컴퓨터 프로그램에 따라 동작함으로써 소수 생성장치(2400)는 그 기능을 달성한다.
<접수정보 기억부(2402)>
접수정보 기억부(2402)는, 소수 「N」을 생성할 때에 인가된 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 기억하는 영역을 구비하고 있다.
<접수부(2401)>
접수부(2401)는, 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 발행 식별자 정보의 비트사이즈 「lenIDI」를 외부(예를 들어, 상기에서 설명하는 제 1 소수 생성부)에서 접수하고, 접수부(2401)는 접수한 소수 「q」, 그 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」 및 그 비트사이즈 「lenIDI」를 접수정보 기억부(2402)에 기록한다.
접수부(2401)는 처리를 개시하는 취지의 개시지시를 소수 후보 생성부(2404)에 출력한다.
<난수 생성부(2403)>
난수 생성부(2403)는, 난수를 생성하는 취지의 제 1 생성지시를 소수 후보 생성부(2404)에서 수신하면, 소수 「q」의 비트사이즈 「lenq」와, 발행 식별자 정 보 「IDI」의 비트사이즈 「lenIDI」를 접수정보 기억부(2402)에서 판독한다.
난수 생성부(2403)는 판독한 비트사이즈 「lenq」 및 「lenIDI」를 이용하여, (lenq-lenIDI-1) 비트의 난수 「R1」을 생성한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
난수 생성부(2403)는 생성한 난수 「R1」을 소수 후보 생성부(2404)에 출력한다.
또, 난수 생성부(2403)는, 제 1 소수 판정부(2405) 및 제 2 소수 판정부(2406) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 각 비트사이즈를 판독하고, 상기의 동작을 행한다.
<소수 후보 생성부(2404)>
소수 후보 생성부(2404)는 생성된 수를 기억하는 생성정보 기억영역을 구비하고 있다.
소수 후보 생성부(2404)는 접수부(2401)에서 개시지시를 수신하면, 제 1 생성지시를 난수 생성부(2403)에 출력한다.
소수 후보 생성부(2404)는, 난수 「R1」을 난수 생성부(2403)에서 수신하면, 접수정보 기억부(2402)에서 기억하고 있는 소수 「q」 및 발행 식별자 정보 「IDI」를 판독한다.
소수 후보 생성부(2404)는, 판독한 소수 「q」 및 발행 식별자 정보 「IDI」와, 난수 생성부(2403)에서 수신한 난수 「R1」을 이용하여 수 「R=IDI×R1」과, 수 「N=2×R×q+1」을 생성한다.
소수 후보 생성부(2404)는 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(2404)는 생성한 수 「N」을 제 1 소수 판정부(2405)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(2404)는, 난수 생성부(2403)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 수 「R」 및 「N」을 생성한다.
소수 후보 생성부(2404)는 생성한 수 「N」의 비트사이즈가 「2×lenq」가 될 때까지 상기의 동작을 반복한다.
<제 1 소수 판정부(2405)>
제 1 소수 판정부(2405)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)과 동일한 동작이므로 여기에서는 설명을 생략한다.
<제 2 소수 판정부(2406)>
제 2 소수 판정부(2406)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일한 동작이므로 여기에서는 설명을 생략한다.
또, 제 2 소수 판정부(2406)는, 판정에 의해 생성한 수 「N」이 소수라고 판단한 경우에는, 생성한 수 「N」을 소수 「N」으로 출력한다.
<소수 생성장치(2400)의 동작>
이하에, 소수 생성장치(2400)의 동작에 대하여 설명한다.
(소수 생성처리)
여기에서는, 소수 생성장치(2400)에서 행해지는 소수 생성장치에 대하여, 도 39에 도시한 흐름도를 이용하여 변경 점만 설명한다.
소수 생성장치(2400)는, 스텝 S2000에서 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」및 발행 식별자 정보의 비트사이즈 「lenIDI」를 접수하고, 접수한 각 정보를 접수정보 기억부(2402)에 기록하도록 변경한다.
소수 생성장치(2400)는, 상기와 같이 변경된 스텝 S2000의 실행 후, 스텝 S2005를 생략하고, 이하와 같이 변경된 스텝 S2010을 실행한다. 소수 생성장치(2400)는 스텝 S2010에서 (lenq-lenIDI-1) 비트의 난수 「R1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 39와 동일하므로 설명은 생략한다.
(소수 후보 생성처리)
여기에서는, 소수 후보 생성처리에 대하여, 도 40에 도시한 흐름도를 이용하여 변경 점만 설명한다.
우선, 스텝 S2050을 수 「R=IDI×R1」을 생성하도록 변경한다.
이어서, 스텝 S2055를 수 「N=2×R×q+1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 40과 동일하므로 설명은 생략한다.
(8) 제 1 실시 예에서의 소수 생성부(116)를 미리 기억하고 있는 8비트의 소수에서 256비트의 소수를 생성하는 제 1 소수 생성부와, 256비트의 소수에서 512비 트의 소수를 생성하는 제 2 소수 생성부로 이루어져도 된다. 또, 제 1 소수 생성부 및 제 2 소수 생성부를 각각 개별의 소수 생성장치로 하여도 된다.
제 1 소수 생성부는, 종래와 동일한 방법으로 8비트의 소수에서 128비트의 소수를 생성하고, 상기에서 설명한 소수 생성장치(2200)를 적용하여 128비트의 소수에서 256비트의 소수를 생성한다.
이하에, 제 2 소수 생성부의 구성의 일례를 도 44에 도시한다. 여기에서는, 제 2 소수 생성부를 하나의 소수 생성장치(2500)로 설명한다. 소수 생성장치(2500)는, 소수 「q」와, 그 비트사이즈 「lenq」(여기에서는, 비트사이즈를 256비트로 한다)와, 발행 식별자 정보 「IDI」와, 그 비트사이즈 「lenIDI」와, 검증 값 「c」가 인가된 경우에, (2×lenq) 비트로 이루어지는 소수 「N」을 출력한다.
소수 생성장치(2500)는, 도 44에 도시한 바와 같이, 접수부(2501), 접수정보 기억부(2502), 난수 생성부(2503), 소수 후보 생성부(2504), 제 1 소수 판정부(2505) 및 제 2 소수 판정부(2506)로 구성되어 있다.
소수 생성장치(2500)는, 구체적으로는, 마이크로프로세서, ROM, RAM, 하드디스크 유닛, 디스플레이 유닛, 키보드, 마우스 등으로 구성되는 컴퓨터 시스템이다. 상기 RAM 또는 상기 하드디스크 유닛에는 컴퓨터 프로그램이 기억되어 있다. 상기 마이크로프로세서가 상시 컴퓨터 프로그램에 따라 동작함으로써 소수 생성장치(2500)는 그 기능을 달성한다.
<접수정보 기억부(2502)>
접수정보 기억부(2502)는, 소수 「N」을 생성할 때에 인가된 소수 「q」, 소 수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」, 발행 식별자 정보의 비트사이즈 「lenIDI」 및 검증 값 「c」를 기억하는 영역을 구비하고 있다.
<접수부(2501)>
접수부(2501)는, 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」, 발행 식별자 정보의 비트사이즈 「lenIDI」 및 검증 값 「c」를 외부(예를 들어, 상기에서 설명한 제 1 소수 생성부)에서 접수하고, 접수부(2501)는 접수한 소수 「q」, 그 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」, 그 비트사이즈 「lenIDI」 및 검증 값 「c」를 접수정보 기억부(2502)에 기록한다.
접수부(2501)는 처리를 개시하는 취지의 개시지시를 소수 후보 생성부(2504)에 출력한다.
<난수 생성부(2503)>
난수 생성부(2503)는, 난수를 생성하는 취지의 제 1 생성지시를 소수 후보 생성부(2504)에서 수신하면, 소수 「q」의 비트사이즈 「lenq」와, 발행 식별자 정보 「IDI」의 비트사이즈 「lenIDI」를 접수정보 기억부(2502)에서 판독한다.
난수 생성부(2503)는 판독한 비트사이즈 「lenq」 및 「lenIDI」를 이용하여 (lenq-lenIDI-1) 비트의 난수 「R1」을 생성한다. 여기서, 난수 「R1」의 최상위 비트는 1로 한다.
난수 생성부(2503)는 생성한 난수 「R1」을 소수 후보 생성부(2504)에 출력한다.
또, 난수 생성부(2503)는, 제 1 소수 판정부(2505) 및 제 2 소수 판정 부(2506) 중 어느 하나에서 다시 난수를 생성하는 취지의 제 2 생성지시를 접수하면, 각 비트사이즈를 판독하고, 상기의 동작을 행한다.
<소수 후보 생성부(2504)>
소수 후보 생성부(2504)는 생성된 수를 기억하는 생성정보 기억영역을 구비하고 있다.
소수 후보 생성부(2504)는 접수부(2501)에서 개시지시를 수신하면, 제 1 생성지시를 난수 생성부(2503)에 출력한다.
소수 후보 생성부(2504)는 난수 「R1」을 난수 생성부(2503)에서 수신하면, 접수정보 기억부(2502)에서 기억하고 있는 소수 「q」, 발행 식별자 정보 「IDI」 및
검증 값 「c」를 판독한다.
소수 후보 생성부(2504)는, 판독한 소수 「q」, 발행 식별자 정보 「IDI」 및
검증 값 「c」와 난수 생성부(2503)에서 수신한 난수 「R1」을 이용하여 수 「R=IDI×R1」과, 수 「N=2×(R+w)×q+1」을 생성한다.
여기서, 「w」는 「2×w×q+1=c mod IDI, 0≤w<IDI」를 만족하는 수이다. 「w」는 「w=(c-1)×m mod IDI」를 계산함으로써 구한다. 「m」은 「(2×q)×m=1 mod IDI」를 만족하는 수이다.
소수 후보 생성부(2504)는 생성한 수 「N」의 비트사이즈가 「2×lenq」인가 여부를 판단한다.
「2×lenq」라고 판단한 경우에는, 소수 후보 생성부(2504)는 생성한 수 「N」을 제 1 소수 판정부(2505)에 출력하고, 생성한 수 「R」을 생성정보 기억영역에 기억한다.
「2×lenq」가 아니라고 판단한 경우에는, 소수 후보 생성부(2504)는 난수 생성부(2503)에서 수신한 난수 「R1」에 2를 곱하여 그 결과를 「R1」으로 하고, 다시 상기의 동작을 행하여 수 「R」 및 「N」을 생성한다.
소수 후보 생성부(2504)는 생성한 수 「N」의 비트사이즈가 「2×lenq」가 될 때까지 상기의 동작을 반복한다.
<제 1 소수 판정부(2505)>
제 1 소수 판정부(2505)는 제 1 실시 예에서 설명한 제 1 소수 판정부(143)와 동일한 동작이므로 여기에서는 설명을 생략한다.
<제 2 소수 판정부(2506)>
제 2 소수 판정부(2506)는 제 1 실시 예에서 설명한 제 2 소수 판정부(144)와 동일한 동작이므로 여기에서는 설명을 생략한다.
또, 제 2 소수 판정부(2506)는, 판정에 의해 생성한 수 「N」이 소수라고 판단한 경우에는, 생성한 수 「N」을 소수 「N」으로 출력한다.
<소수 생성장치(2500)의 동작>
이하에, 소수 생성장치(2500)의 동작에 대하여 설명한다.
(소수 생성장치)
여기에서는, 소수 생성장치(2500)에서 행해지는 소수 생성처리에 대하여, 도 39에 도시한 흐름도를 이용하여 변경 점만 설명한다.
소수 생성장치(2500)는, 스텝 S2000에서 소수 「q」, 소수 「q」의 비트사이즈 「lenq」, 발행 식별자 정보 「IDI」, 발행 식별자 정보의 비트사이즈 「lenIDI」 및 검증 값 「c」를 접수하고, 접수한 각 정보를 접수정보 기억부(2502)에 기록하도록 변경한다.
소수 생성장치(2500)는, 상기와 같이 변경된 스텝 S2000의 실행 후, 스텝 S2005를 생략하고, 이하와 같이 변경된 스텝 S2010을 실행한다. 소수 생성장치(2500)는 스텝 S2010에서 (lenq-lenIDI-1) 비트의 난수 「R1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 39와 동일하므로 설명은 생략한다.
(소수 후보 생성처리)
여기에서는, 소수 후보 생성처리에 대하여, 도 40에 도시한 흐름도를 이용하여 변경 점만 설명한다.
우선, 스텝 S2050을 수 「R=IDI×R1」을 생성하도록 변경한다.
이어서, 스텝 S2055를 수 「N=2×(R+w)×q+1」을 생성하도록 변경한다.
이후의 동작의 흐름은 도 40과 동일하므로 설명은 생략한다.
(9) 상기 제 1 실시 예에서 소수 생성부(116)는, 단사 함수 「f」를 시행하고, 그 후 발행 식별자 정보 「IDI」의 매입을 행하였으나, 단사 함수 「f」를 시행하는 것만이어도 좋고, 발행 식별자 정보 「IDI」의 매입만을 행하여도 좋다.
단사 함수를 시행하는 것뿐인 경우에는, 생성되는 소수는 고유성이 만족된 다. 이때, 단사 함수를 시행하는 타이밍은 언제라도 좋다.
발행 식별자 정보 「IDI」의 매입만을 행하는 경우에는, 생성된 소수의 고유성은 만족되지 않으나, 생성된 키의 정당성의 확인은 「IDI」를 이용하여 행할 수 있다. 또, 발행 식별자 정보 「IDI」의 매입만을 행하는 경우는, 256비트의 소수에서 512비트의 소수를 생성하는 타이밍에 행한다.
또, 제 2 실시 예에서도 동일하다.
(10) 상기 제 1 및 제 2 실시 예에서 제어정보가 「정보 B」인 경우에, 소수 생성부(116)는 단사 함수를 시행하고, 수 「R=f(IDI∥R1)」을 생성하였으나, 이에 한정되는 것은 아니다.
예를 들어, 제어정보가 「정보 B」인 경우에, 소수 생성부(116)는 수 「R=f(R1∥IDI)」를 생성하여도 좋고, 수 「R=f(IDI∥R1)」을 생성하여도 좋으며, 수 「R=R1∥f(IDI)」를 생성하여도 좋다.
또, 단사 함수를 이용하지 않고 수 「R=(IDI∥R1)」을 생성하여도 좋고, 수 「R=R1∥IDI」를 생성하여도 좋다.
또, 발행 식별자 정보 「IDI」의 비트열에 난수 「R1」을 구성하는 각 비트를 매입하고, 매입한 결과(이하, 「IDI_R1」이라 한다)에 단사 함수 「f」를 시행하여 수 「R」를 생성하여도 좋다.
그 일례를 도 45에 도시한다. 발행 식별자 정보 「IDI」는, 상술한 바와 같이 구체적으로는 64비트로 이루어지고, 그 비트열을 「S1S2S3S4…S62S63S64」로 한다. 난수 「R1」은, 구체적으로는 63비트로 이루어지며, 그 비트열을 「T1T2T3T4…T61T62T63」으로 한다. 여기서, 「Sn」 및 「Tm」은 「0」 및 「1」 중 어느 하나이다. 또, 「n」은 1 이상 64 이하의 수이고, 「m」은 1 이상 63 이하의 수이다. 이때, 수 「IDI_R1」의 비트열은 「S1T1S2T2S3T3S4T4…T61S62T62S63T63S64」가 된다.
또, 일례에서는 발행 식별자 정보 「IDI」의 비트열에 대하여 1비트마다 난수 「R1」의 각 비트를 매입하였으나, 이에 한정되는 것은 아니다. 발행 식별자 정보 「IDI」의 비트열에 대하여 복수 비트마다 난수 「R1」의 각 비트를 매입하여 수 「IDI_R1」을 생성하여도 좋다. 이때, 「IDI」의 비트열 사이에 매입되지 않는 모든 비트를 「IDI」의 비트열에서의 말미의 비트 이후에 결합하여 「IDI_R1」을 생성한다.
또, 난수 「R1」의 비트열에 대하여 발행 식별자 정보 「IDI」의 각 비트를 매입하여 수 「IDI_R1」을 생성하여도 좋다. 예를 들어, 1비트마다 매입하는 경우에는, 수 「IDI_R1」의 비트열은 「T1S1T2S2T3S3T4S4…T62S62T63S63S64」가 되다.
또, 발행 식별자 정보 「IDI」와 난수 「R1」에서 수 「IDI_R1」을 생성하고, 생성한 수 「IDI_R1」에 단사 함수 「f」를 시행하여 수 「R」을 생성하였으나, 이에 한정되는 것은 아니다. 수 「R」은 「R=IDI_R1」이어도 된다.
(11) 상기 제 1 실시 예에서 제어정보가 「정보 A」인 경우에, 소수 생성부(116)는 발행 식별자 정보 「IDI」의 매입을 행하였으나, 매입 정보는 「IDI」에 한정되는 것은 아니다.
예를 들어, 키 발행 서버(100)와 증명서 발행 서버(200)만이 기지의 비밀 함수이고, 또한 1 대 1의 함수인 「g」를 이용한 값이어도 좋다. 이때, 「IDI」의 대신에 매입하는 값은 「g(IDI)」이다.
또, 제 2 실시 예에서도 동일하다.
(12) 상기 제 1 실시 예에서 키 발행 서버(100)와 단말장치(300) 사이에 안전한 통신 경로를 확립하여 키 발행 서버(100)에서 단말장치(300)에 비밀키 및 공개키의 송부를 행하였으나, 이에 한정되는 것은 아니다.
예를 들어, 단말장치(300)의 제조시에 키 발행 서버(100)와 단말장치(300)를 입출력 장치를 통해서 비밀키 및 공개키의 송부를 행하여도 좋다.
또, 제 2 실시 예에서도 동일하다.
(13) 상기 제 1 및 제 2 실시 예에서 단말장치의 구체 예로 휴대전화기로 하였으나, 이에 한정되는 것은 아니다.
암호화된 데이터를 네트워크를 통해서 수신하고, 복호 할 수 있는 단말장치이면 된다.
예를 들어, 퍼스널 컴퓨터나 PDA(Personal Digital Assistants) 이다.
(14) 상기 제 1 및 제 2 실시 예에서 발행 식별자 정보 「IDI」는 홀수로 하였으나, 소수 생성에 검증 값을 이용하지 않는 경우에는, 발행 식별자 정보 「IDI」는 홀수가 아니어도 된다.
이때, 서버 식별자와 카운터에 의해 1에서 순서대로 생성되는 발행 식별자 「PID」를 이용하여 생성하는 경우에는, 이때, 식별자 생성부(115)는 소수를 발행 (생성)할 때마다 수 「1」을 증가시켜감으로써 용이하게 매회 다른 소수를 생성할 수 있게 된다.
(15) 제 1 및 제 2 실시 예에서 생성하는 비밀키인 소수의 비트사이즈는 512비트에 한정되는 것은 아니다. 1024비트라도, 2048비트라도 좋다. 이때, 소수 생성부(116)는 비밀키인 소수의 비트사이즈(여기에서는, 「lenN」으로 한다)에 대하여, (lenN/4) 비트로 이루어지는 소수를 종래의 소수의 생성방법에 의해 생성하고, 그 후 단사 함수 「f」를 시행하여 (lenN/2) 비트로 이루어지는 소수를 생성하며, 최후에 발행 식별자 정보 「IDI」를 매입한 「lenN」비트로 이루어지는 소수 「N」을 생성한다.
또, 발행 식별자 정보 「IDI」의 매입만을 행하는 경우에는, 소수 생성부는 (lenN/2) 비트로 이루어지는 소수를 종래의 소수의 생성방법에 의해 생성하고, 최후에 발행 식별자 정보 「IDI」를 매입한 「lenN」비트로 이루어지는 소수 「N」을 생성한다.
또, 단사 함수 「f」를 시행하고, 고유한 소수를 생성만 하는 경우는, (lenN/2) 비트로 이루어지는 소수를 종래의 소수의 생성방법에 의해 생성하고, 그 후 단사 함수 「f」를 시행하여 「lenN」비트로 이루어지는 소수를 생성한다.
(16) 제 1 실시 예에서의 소수 생성부(116)를 하나의 소수 생성장치로 하여도 좋다. 이때, 이 소수 생성장치는 정수 len과 발행 식별자 정보 IDI를 입력 값으로 하여 len비트의 소수를 출력하여도 좋다.
또, 상술한 바와 같이, 제 1 실시 예에서의 소수 생성부(116)는 소수정보 생 성부(133)의 대신에 소수 생성의 변형 예 1, 2 및 3에서 설명하는 소수정보 생성부(133A), 소수정보 생성부(133B) 및 소수정보 생성부(133C) 중 어느 하나를 이용하여도 좋다.
또, 제 1 실시 예에서의 소수 생성부(116)는, 8비트의 소수에서 512비트의 소수를 생성할 때에 발행 식별자 정보「IDI」를 매입하지 않고, 단사 함수 「f」를 1회만 시행하여도 좋다. 이때, 증명서 발행 서버(200)에서는 증명서 발행 의뢰정보와 공개키를 수신하면, 정당성의 확인을 행하지 않고 공개키 증명서 「Cert」를 발행한다.
(17) 소수에 발행 식별자 정보를 포함시키는 방법은 실시 예에 한정되는 것은 아니다. 예를 들어, 하위 lenIDI비트가 IDI인 소수를 생성, 발행하여도 좋다.
(18) 키 발행 서버는 3대로 한정되는 것은 아니다. 키 발행 서버는 1대 이상이면 된다. 이때, 각 키 발행 서버에서 행하는 소수의 생성방법은 동일한 방법을 이용한다.
(19) 제 1 실시 예에서의 제 2 소수 판정부(144)는 소수의 판정에 이용하는 조건식은 상기에서 설명한 (eq2)에 한정되는 것은 아니다.
조건식 「GCD(2^(2R)-1, N)=1」을 이용하여 제 2 소수 판정부(144)는, 제 1 소수 판정부(143)에서 수신한 수 「N」이 당해 조건식을 만족하는가 여부를 판단하고, 만족한다고 판단한 경우에, 수 「N」을 소수 「N」으로 하여도 된다.
(20) 제 1 실시 예에서 키 발행 서버(100)는 단말장치(300)에 비밀키와 공개키 증명서를 배포하였으나, 이에 한정되는 것은 아니다. 키 발행 서버(100)는 단말 장치(300)에 비밀키만을 배포하여도 된다. 이때, 키 발행 서버(100)는 공개키 증명서를 제 3자에 대하여 공개한다. 또는, 키 발행 서버(100)는 공개키를 제 3자에 대하여 공개한다.
(21) 제 1 실시 예에서 소수 생성부(116)는 출력 카운터(136)에서 키 판정부(117)에 출력한 소수의 개수를 관리하였으나, 이에 한정되는 것은 아니다.
키 판정부(117)에서 수신한 소수의 개수를 카운트하여도 된다. 이 경우의 일례를 이하에 나타낸다.
소수 판정부(116)는, 식별자 생성부(1150에서 소수의 생성개시명령을 수신하면, 소수 「p1」을 생성하고, 생성한 소수 「p1」을 키 판정부(117)에 출력한다. 소수 생성부(116)는 키 판정부(117)에서 다음의 소수의 요구를 수신하면, 소수 「p2」를 생성하고, 생성한 소수 「p2」를 키 판정부(117)에 출력한다. 또, 소수 「p1」 및 「p2」의 생성은 제 1 실시 예와 동일하므로 설명은 생략한다.
키 판정부(117)는 카운터(초기치는 「0」이다)를 이용하여 소수 생성부(116)에서 소수를 수신하면, 카운터에 「1」을 증가시켜서 그 결과가 1인가 여부를 판단한다. 1이라고 판단한 경우에는, 키 판정부(117)는 소수 생성부(116)에 다음의 소수를 요구한다. 1이 아니라고 판정한 경우에는, 키 판정부(117)는 소수 「p1」과 「p2」가 일치하는가 여부를 판단한다. 이후의 동작은 제 1 실시 예와 동일하므로 설명은 생략한다.
(22) 상기 제 1 및 제 2 실시 예에서 발행 식별자 정보 「IDI」의 비트사이즈를 64비트로 하였으나, 이에 한정되는 것은 아니다. (lenq-1)보다도 작은 비트사 이즈이면 된다.
또, 소수 생성의 변형 예 3에서 소수 「qg」의 비트사이즈를 64비트로 하였으나, 이에 한정되는 것은 아니다. 소수 「qg」는 비트사이즈 「lenqg」가 「(2×lenqg)<(lenq-1)」을 만족하는 소수이면 된다. 이때, 발행 식별자 정보는 그 비트사이즈가 소수 「qg」의 비트사이즈보다 작으면 된다.
(23) 증명서 발행 서버(200)의 발행 공개키 확인부(214)에서 공개키 「PK=(n, e)」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가 여부를 확인하는 방법에 대하여, 「n-(c11×c12)」가 「IDI」로 나누어지는가 여부를 검증한다. 여기서, 검증방법의 구체 예를 나타낸다.
검증방법의 구체적인 동작의 흐름을 도 46에 도시한 흐름도를 이용하여 설명한다.
발행 공개키 확인부(214)는 수 「n-(c11×c12)」를 「Q」로 한다(스텝 S2500).
이어서, 발행 공개키 확인부(214)는 「Q-IDI」를 산출하고, 산출결과를 다시 「Q」로 한다(스텝 S2505).
발행 공개키 확인부(214)는 수 「Q」가 발행 식별자 정보 「IDI」보다 작은가의 여부를 판단한다(스텝 S2510).
작다고 판단한 경우에는(스텝 S2510에서의 「YES」), 발행 공개키 확인부(214)는 수 「Q」가 「0」인가 여부를 판단한다(스텝 S2515).
「0」이라고 판단한 경우에는(스텝 S2515에서의 「YES」), 검증결과 「0」을 출력한다(스텝 S2520). 「0」이 아니라고 판단한 경우에는(스텝 S2515에서의 「NO」), 검증결과 「1」을 출력한다(스텝 S2525).
수 「Q」가 발행 식별자 정보 「IDI」 이상이라고 판단한 경우에는(스텝 S2510에서의 「NO」), 스텝 S2505에 복귀한다.
이 동작에 의해, 공개키 「PK=(n, e)」가 발행 식별자 정보 「IDI」를 이용하여 생성되었는가의 여부를 확인할 수 있다.
발행 공개키 확인부(214)는, 도 18에 도시한 스텝 S670에서 상기의 검증처리를 실행 후, 출력된 검증결과가 「0」인 경우에는, 공개키 「PK」는 발행 식별자 정보 「IDI」를 이용하여 생성되었다고 판단하고, 검증결과가 「1」인 경우에는, 공개키 「PK」는 발행 식별자 정보 「IDI」를 이용하여 생성되어 있지 않다고 판단한다.
(24) 소수 후보 생성부(142)에서 생성된 수 「N」이 「lenN=2×lenq」를 만족하지 않는 경우, 「R1=2×R1」으로 하고 있으나, 그 연산의 구체 예를 이하에 나타낸다.
소수 후보 생성부(142)는, 생성된 수 「N」이「lenN=2×lenq」를 만족하지 않는 경우에는, 수 「R1」의 비트열을 왼쪽에 1비트 분만큼 시프트한다. 이때, 말미의 비트에는 「0」이 설정된다. 이에 의해, 「R1=2×R1」으로 할 수 있다.
(25) 제 1 및 제 2 실시 예에서, 수 「N」을 산출할 때에 「N=2×(R+w)×q+1」로 하였으나, 이에 한정되는 것은 아니다. 「N=2×R×q+c」로 하여도 된다.
왜냐하면, 상기의 실시 예에서 설명한 「w」 및 「m」의 조건식 「w=(c-1)× m mod IDI」와, 「(2×q)×m=1 mod IDI」를 이용하면, 「N=2×(R+w)×q+1」은 이하와 같이 변형할 수 있기 때문이다.
2×(R+w)×q+1=2×R×q+2×w×q+1
=2×R×q+2×(c-1)×m×q+1
=2×R×q+2×(c-1)×(1/2q)×q+1
=2×R×q+(c-1)+1
=2×R×q+c
이에 의해, 「N=2×(R+w)×q+1」 대신에 「N=2×R×q+c」로 하여도 됨을 알 수 있다.
또, 「c」는 검증 값이고, 출력 카운터의 값이 「1」인 경우에는 검증 값 「c」는 「c11」이 되며, 출력 카운터의 값이 「2」 이상인 경우에는 검증 값 「c」는 「c12」가 된다. 예를 들어, 제 1 실시 예에서의 증명서 발행 서버(200)는 「N-c11×c12」가 「IDI」로 나누어지는가의 여부를 판단함으로써, 생성된 공개키의 정당성을 확인할 수 있다.
(26) 제 1 실시 예의 키 발행시스템 1에서 키 발행 서버에서 생성된 소수의 정당성을 검증하는 소수검증장치를 더하여도 된다.
이 경우에서의 소수검증장치 및 키 발행 서버(100)의 동작에 대하여 이하에 설명한다.
소수검증장치는 증명서 발행 서버와 마찬가지로 검증 값 테이블을 미리 기억하고 있다.
키 발행 서버(100)는, 소수 생성부(116)에서 소수 「p1」을 생성하면, 생성한 소수 「p1」, 발행 식별자 정보 「IDI」 및 서버 식별자를 소수검증장치에 출력한다.
소수검증장치는, 키 발행 서버(100)에서 소수 「p1」, 발행 식별자 정보 「IDI」 및 서버 식별자 정보를 수신하면, 수신한 서버 식별자에 대응하는 제 1 검증 값 「c11」를 판독하고, 판독한 제 1 검증 값 「c11」을 이용하여 「p1-c11」을 산출하며, 산출결과가 「IDI」로 나누어지는가의 여부를 판단한다. 나누어진다고 판단한 경우에는, 소수검증장치는 소수 「p1」의 이용을 허가하는 정보를 키 발행 서버(100)에 출력한다. 나누어지지 않는다고 판단한 경우에는, 소수 「p1」의 이용을 금지하는 정보를 키 발행 서버(100)에 출력한다.
키 발행 서버(100)의 소수 생성부(116)는, 소수검증장치에서 소수 「p1」의 이용을 금지하는 정보를 수신하면, 다시 소수 「p1」을 생성하고, 상기 동작을 반복한다.
키 발행 서버(100)의 소수 생성부(116)는, 소수검증장치에서 소수 「p1」의 이용을 허가하는 정보를 수신하면, 생성한 소수 「p1」을 키 판정부(117)에 출력하고, 소수 「p2」를 생성한다. 소수 생성부(116)는 생성한 소수 「p2」, 발행 식별자 정보 「IDI」 및 서버 식별자를 소수검증장치에 출력한다.
소수검증장치는, 키 발행 서버(100)에서 소수 「p2」, 발행 식별자 정보 「IDI」 및 서버 식별자를 수신하면, 수신한 서버 식별자에 대응하는 제 2 검증 값 「c12」를 판독하고, 판독한 제 1 검증 값 「c12」를 이용하여 「p1-c12」을 산출 하며, 산출결과가 「IDI」로 나누어지는가의 여부를 판단한다. 나누어진다고 판단한 경우에는, 소수검증장치는 소수 「p2」의 이용을 허가하는 정보를 키 발행 서버(100)에 출력한다. 나누어지지 않는다고 판단한 경우에는, 소수 「p2」의 이용을 금지하는 정보를 키 발행 서버(100)에 출력한다.
키 발행 서버(100)의 소수 생성부(116)는, 소수검증장치에서 소수 「p2」의 이용을 금지하는 정보를 수신하면, 다시 소수 「p2」를 생성하고, 상기 동작을 반복한다.
키 발행 서버(100)의 소수 생성부(116)는, 소수검증장치에서 소수 「p2」의 이용을 허가하는 정보를 수신하면, 생성한 소수 「p2」와 판정개시명령을 키 판정부(117)에 출력한다.
키 발행 서버(100)에서의 이후의 동작은 제 1 실시 예와 동일하므로 설명은 생략한다.
또, 소수 생성부(116)는 키 판정부(117)에서 재생성 명령을 수신한 경우에는, 다시 소수 「p2」를 생성하고, 상기의 동작을 반복한다.
(27) 제 1 및 제 2 실시 예에서 제 1 및 제 2 검증 값은 키 발행 서버 별로 할당하였으나, 이에 한정되는 것은 아니다.
단말장치 별로 제 1 및 제 2 검증 값을 할당하고, 단말 식별자와 단말장치 별로 할당된 제 1 및 제 2 검증 값으로 이루어지는 테이블을 키 발행 서버 및 증명서 발행 서버에서 관리하여도 된다.
키 발행 서버는, 키 발행의 요구가 있은 단말장치에 대응하는 제 1 및 제 2 검증 값을 이용하여 소수 「p1」 및 「p2」를 생성하고, 생성한 「p1」 및 「p2」를 이용하여 공개키 및 비밀키를 생성한다. 키 발행 서버는 공개키 증명서를 요구할 때에는, 공개키, 발행 식별자 정보, 서버 식별자 및 단말 식별자를 증명서 발행 서버에 송신한다.
증명서 발행 서버는, 수신한 단말 식별자에 대응하는 제 1 및 제 2 검증 값을 판독하고, 판독한 검증 값과, 수신한 공개키 및 발행 식별자 정보를 이용하여 공개키의 정당성을 검증한다.
단말장치 별로 2개의 검증 값을 할당함으로써, 공개키의 고유성을 유지하면서 단말장치 별로 할당한 공개키의 정당성을 검증할 수 있다.
또, 상기에서 설명한 소수검증장치를 이용하여 생성한 소수별로 정당한 소수인가 여부를 검증하여도 된다. 또, 소수검증장치는 단말 식별자와 단말장치 별로 할당된 제 1 및 제 2 검증 값으로 이루어지는 테이블을 구비하고 있다.
(28) 제 1 및 제 2 실시 예에서, 단말장치와 키 발행 서버를 각각 개별의 장치로 하였으나, 단말장치에서 키 발행을 행하여도 된다.
이때, 단말장치는, 예를 들어 제 1 실시 예에서 설명하는 구성에 더하여, 키 발행 서버(100)의 구성에서 설명한 식별자 저장부, 식별자 생성부, 소수 생성부, 키 판정부, 키 생성부 및 공개키 저장부를 갖는다.
단말장치는, 식별자 생성부를 이용하여 단말 식별자와 수 「1」에서 발행 식별자 정보 「IDI=TID∥1」을 생성하고, 생성한 발행 식별자 정보를 식별자 저장부에 기억한다.
단말장치는 소수 생성부, 키 판정부 및 키 생성부를 이용하여 공개키와 비밀키를 생성하고, 생성한 공개키를 공개키 저장부에 저장하며, 생성한 비밀키를 비밀키 저장부에 저장한다.
또, 단말장치는, 발행 식별자 정보와, 공개키와, 단말 식별자와, 증명서 발행 의뢰정보를 증명서 발행 서버에 송신하고, 공개키 증명서를 증명서 발행 서버에서 수신한다.
또, 단말장치는 IC카드라도 좋다. 이 경우, IC카드는 키의 생성 및 저장을 행한다. 또, 발행 식별자 정보의 생성 및 저장도 IC카드가 행하여도 좋다. 이때, IC카드와 증명서 발행 서버의 통신은 증명서 발행 서버와 네트워크에 접속된 장치에 IC카드를 장착함으로써 행한다.
(29) 단말 식별자는, 일례로 시리얼 번호로 하고 있으나, 이에 한정되는 것은 아니다.
단말 식별자는 사용자의 생체과학적 특징을 나타내는 바이오메트릭(biometric) 정보라도 좋다. 바이오메트릭 정보는, 예를 들어 사용자의 지문의 특징을 나타내는 지문정보, 사용자의 성문의 특징을 나타내는 성문정보, 사용자의 홍채의 특징을 나타내는 홍채정보, 사용자의 얼굴의 윤곽의 특징을 나타내는 윤곽정보, 사용자의 DNA의 특징을 나타내는 DNA정보 또는 이들 정보의 조합이다.
또, 단말 식별자의 일부가 바이오메트릭 정보라도 좋다.
또, 단말 식별자는, 단말장치를 관리하는 관리 서버에 의해 발행되고, 관리 서버에서 네트워크에 의한 통신에 의해 인가되는 것이어도 된다. 또는, 관리 서버 에 의해 발행된 단말 식별자를 SD카드 등의 기록매체에 의해 인가되는 것이어도 된다.
(30) 본 발명은 상기에서 설명한 방법이어도 된다. 또, 이들 방법을 컴퓨터에 의해 실현하는 컴퓨터 프로그램이어도 되고, 상기 컴퓨터 프로그램으로 이루어지는 디지털 신호여도 된다.
또, 본 발명은, 상기 컴퓨터 프로그램 또는 상기 디지털 신호를 컴퓨터 판독 가능한 기록매체, 예를 들어 플렉시블 디스크, 하드디스크, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD(Blu-ray Disc), 반도체 메모리 등에 기록한 것이어도 좋다. 또, 이들 기록매체에 기록되어 있는 상기 컴퓨터 프로그램 또는 상기 디지털 신호여도 좋다.
또, 본 발명은 상기 컴퓨터 프로그램 또는 상기 디지털 신호를 전기통신회선, 무선 또는 유선통신회선, 인터넷을 대표로 하는 네트워크 등을 경유해서 전송하는 것으로 해도 된다.
또, 본 발명은 마이크로프로세서와 메모리를 구비한 컴퓨터 시스템으로, 상기 메모리는 상기 컴퓨터 프로그램을 기억하고 있으며, 상기 마이크로프로세서는 상기 컴퓨터 프로그램에 따라 동작함으로써 동작하여도 좋다.
또, 상기 프로그램 또는 상기 디지털 신호를 상기 기록매체에 기록하여 이송함으로써, 또는 상기 프로그램 또는 상기 디지털 신호를 상기 네트워크 등을 경유하여 이송함으로써 독립된 다른 컴퓨터 시스템에 의해 실시하여도 좋다.
(31) 상기 실시 예 및 상기 변형 예를 각각 조합하여도 좋다.
본 발명을 구성하는 각 서버 및 각 단말장치는, 전기기기 제조산업에서 경영적으로, 또 계속적이고도 반복적으로 제조하여 판매할 수 있다. 또, 본 발명을 구성하는 각 서버 및 각 단말장치는 인터넷을 이용한 서비스 산업에서 경영적으로, 또 계속적이고 반복적으로 사용할 수 있다.

Claims (23)

  1. 기지의 소수(known prime) q보다 큰 소수 후보 N을 산출하여 소수 판정을 하는 소수산출장치로,
    기지의 소수 q를 기억하고 있는 소수기억수단과,
    소수의 이용범위에서의 고유의 관리정보(unique management information)를 기억하고 있는 관리정보 기억수단과,
    상기 관리정보 기억수단에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보(random information) R을 생성하는 교란정보 생성수단과,
    상기 소수기억수단에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보산출수단과,
    산출된 소수 후보 N이 소수인가 여부를 판정하는 소수 판정수단과,
    소수라고 판정된 경우에, 산출된 소수 후보 N을 소수로 출력하는 출력수단을 구비하는 것을 특징으로 하는 소수산출장치.
  2. 제 1 항에 있어서,
    상기 교란정보 생성수단은,
    상기 관리정보 기억수단에서 상기 관리정보를 판독하는 판독부와,
    난수 r을 산출하는 난수 산출부와,
    판독한 상기 관리정보와 생성한 난수 r을 결합하는 결합부와,
    상기 관리정보와 난수 r의 결합체에 의거하여 교란정보 R을 산출하는 연산부를 포함하는 것을 특징으로 하는 소수산출장치.
  3. 제 2 항에 있어서,
    상기 연산부는 상기 결합체에 단사 함수(injection function)를 시행하여 교란정보 R을 생성하는 것을 특징으로 하는 소수산출장치.
  4. 제 3 항에 있어서,
    상기 단사 함수는 배타적 논리합(exclusive OR)이고,
    상기 연산부는 소정의 키 정보(predetermined key information)를 미리 기억하고 있으며, 상기 키 정보와 상기 결합체에 배타적 논리합을 시행하여 교란정보 R을 생성하는 것을 특징으로 하는 소수산출장치.
  5. 제 3 항에 있어서,
    상기 소수산출장치는 소수 q의 2배의 비트 길이를 갖는 소수 후보 N을 산출하고,
    상기 난수 산출부는 소수 q의 비트 길이에서 상기 관리정보의 비트 길이 및 1을 빼서 얻어진 비트 길이의 상기 난수 r을 산출하는 것을 특징으로 하는 소수산출장치.
  6. 제 5 항에 있어서,
    상기 소수 판정수단은,
    상기 소수 후보 N에 대하여 2N-1=1 mod N을 만족하는가 여부를 판정하는 제 1 판정부와,
    상기 제 1 판정부에 의해 만족한다고 판정된 경우에, 소수 후보 N 및 교란정보 R에 대하여 22R≠1 mod N을 만족하는가 여부를 판정하고, 만족한다고 판정한 경우에 소수 후보 N이 소수라고 결정하는 제 2 판정부를 더 포함하는 것을 특징으로 하는 소수산출장치.
  7. 제 5 항에 있어서,
    상기 소수 판정수단은,
    상기 소수 후보 N에 대하여 2N-1=1 mod N을 만족하는가 여부를 판정하는 제 1 판정부와,
    상기 제 1 판정부에 의해 만족한다고 판정된 경우에, 소수 후보 N 및 교란정보 R에 대하여 GCD(22R-1, N) = 1을 만족하는가 여부를 판정하고, 만족한다고 판정한 경우에, 소수 후보 N이 소수라고 결정하는 제 2 판정부를 더 포함하는 것을 특징으로 하는 소수산출장치.
  8. 제 1 항에 있어서,
    상기 소수산출장치는,
    상기 소수 판정수단에 의해 소수라고 판정될 때까지 상기 교란정보 생성수단, 상기 후보산출수단 및 상기 소수 판정수단에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복제어수단을 더 포함하는 것을 특징으로 하는 소수산출장치.
  9. 제 8 항에 있어서,
    상기 소수산출장치는,
    난수 R'를 산출하는 2차 난수(secondary random number) 산출수단과,
    출력된 상기 소수 N 및 생성된 상기 난수 R'를 이용하여 N'=2×난수 R'×소수 N+1에 의해 소수 후보 N'를 산출하는 2차 후보 산출수단과,
    산출된 소수 후보 N'가 소수인가 여부를 판정하는 2차 소수 판정수단과,
    소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 출력하는 2차 출력수단과,
    상기 2차 소수 판정수단에 의해 소수라고 판정될 때까지 상기 2차 난수 산출수단, 상기 2차 후보 산출수단 및 상기 2차 소수 판정수단에 대하여 난수 R'의 생성과, 소수 후보 N'의 산출과, 상기 판정을 반복하도록 제어하는 2차 반복제어수단을 더 포함하는 것을 특징으로 하는 소수산출장치.
  10. 제 8 항에 있어서,
    상기 소수산출장치는,
    소정의 검증 값을 기억하고 있는 2차 정보 기억수단과,
    난수 r'를 생성하는 2차 난수 생성수단과,
    상기 관리정보에 생성한 상기 난수 r'를 곱하여 교란정보 R'를 산출하고, N'=2×교란정보 R'×소수 N+검증 값에 의해 소수 후보 N'를 산출하는 2차 후보 산출수단을 더 포함하며,
    상기 소수 판정수단은 산출된 소수 후보 N'가 소수인가 여부를 더 판정하고,
    상기 출력수단은 소수 후보 N'가 소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 더 출력하는 것을 특징으로 하는 소수산출장치.
  11. 제 8 항에 있어서,
    상기 소수산출장치는 RSA 암호의 공개키 및 비밀키를 생성하는 키 생성장치이며,
    상기 소수산출장치는,
    산출된 소수 N을 이용하여 RSA 암호의 공개키를 생성하는 공개키 생성수단과,
    생성된 공개키를 이용하여 RSA 암호의 비밀키를 생성하는 비밀키 생성수단을 더 포함하는 것을 특징으로 하는 소수산출장치.
  12. 제 11 항에 있어서,
    상기 공개키 생성수단은, 상기 반복제어수단에 대하여 새롭게 소수 N'을 취득하도록 지시하고, 상기 소수 N 및 새로 취득된 소수 N'를 이용하여 n=소수 N×소수 N'에 의해 수 n을 산출하여, 난수 e를 생성하며,
    산출된 수 n과 생성된 난수 e의 세트가 상기 공개키이고,
    상기 비밀키 생성수단은 e×d=1 mod L을 만족하는 d를 산출하며,
    L은 소수 N-1과 소수 N'-1의 최소공배수이고,
    산출된 d가 상기 비밀키인 것을 특징으로 하는 소수산출장치.
  13. 제 11 항에 있어서,
    상기 소수산출장치는 단말장치에 대하여 RSA의 비밀키 및 공개키를 생성하여 발행하는 키 발행 서버장치이며,
    상기 소수산출장치는,
    생성한 상기 비밀키를 단말장치에 대하여 출력하는 키 출력수단과,
    생성한 상기 공개키를 공개하는 공개수단을 더 포함하는 것을 특징으로 하는 소수산출장치.
  14. 제 13 항에 있어서,
    상기 소수산출장치는,
    상기 단말장치를 고유하게(uniquely) 식별하는 단말장치 식별자를 취득하는 식별자 취득수단과,
    취득한 단말장치 식별자를 포함하는 상기 관리정보를 생성하는 관리정보 생성수단과,
    생성한 상기 관리정보를 상기 관리정보 기억수단에 기록하는 기록수단을 더 포함하는 것을 특징으로 하는 소수산출장치.
  15. 제 14 항에 있어서,
    상기 소수산출장치는,
    키 발행 서버장치로서의 당해 소수산출장치를 고유하게 식별하는 서버 식별자를 미리 기억하고 있는 서버 식별자 기억수단을 더 포함하고,
    상기 관리정보 생성수단은, 상기 서버 식별자 기억수단에서 상기 서버 식별자를 더 판독하고, 판독한 서버 식별자를 더 포함하는 상기 관리정보를 생성하는 것을 특징으로 하는 소수산출장치.
  16. 기지의 소수보다 큰 소수를 산출하는 소수산출장치로,
    기지의 입력 소수의 2배의 비트 길이를 갖는 출력 소수를 산출하는 소수산출수단과,
    기지의 소수의 초기치를 기억하고 있는 소수기억수단과,
    상기 소수산출수단에 대하여 산출을 복수 회 반복하도록 제어하는 반복제어수단을 구비하고,
    상기 반복제어수단은 상기 반복에서의 첫 회의 산출에서, 상기 소수기억수단에 기억되어 있는 소수의 초기치를 상기 입력 소수로 상기 소수산출수단에 부여하며,
    상기 반복의 첫 회의 산출 이외의 다른 산출에서, 하나 전 회의 산출에서 산출된 출력 소수를 당해 다른 산출에서의 상기 입력 소수로 상기 소수산출수단에 부여하며,
    상기 복수 회의 산출 중 어느 하나의 산출에서, 상기 소수산출수단은,
    소수의 이용범위에서의 고유한 관리정보를 기억하고 있는 관리정보 기억부와,
    상기 관리정보 기억부에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보 R을 생성하는 교란정보 생성부와,
    상기 입력 소수 q를 수신하고, 수신한 상기 입력 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보 산출부와,
    산출된 소수 후보 N이 소수인가 여부를 판정하는 소수 판정부와,
    소수라고 판정된 경우에, 산출된 소수 후보 N을 출력 소수로 출력하는 출력부와,
    상기 소수 판정부에 의해 소수라고 판정될 때까지, 상기 교란정보 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하는 것을 특징 으로 하는 소수산출장치.
  17. 제 16 항에 있어서,
    상기 복수 회의 산출 중 최종 회의 산출에서, 상기 소수산출수단은,
    소정의 검증 값을 기억하고 있는 정보 기억부와,
    난수 r'를 생성하는 난수 생성부와,
    상기 관리정보에 생성한 상기 난수 r'를 곱하여 교란정보 R'를 산출하고, N'=2×교란정보 R'×하나 전 회에서 산출된 출력 소수+검증 값에 의해 소수 후보 N'를 산출하는 후보 산출부와,
    산출된 소수 후보 N'가 소수인가의 여부를 판정하는 소수 판정부와,
    소수 후보 N'가 소수라고 판정된 경우에, 산출된 소수 후보 N'를 소수로 출력하는 출력부와,
    상기 소수 판정부에 의해 소수라고 판정될 때까지 상기 난수 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 난수 r'의 생성과, 소수 후보 N'의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하는 것을 특징으로 하는 소수산출장치.
  18. 단말장치에 대해서 RSA의 비밀키 및 공개키를 생성하여 발행하는 키 발행 서버장치와 상기 단말장치로 구성되는 키 발행시스템으로,
    키 발행 서버장치는,
    기지의 소수 q보다 큰 소수 N을 산출하는 소수산출수단과,
    산출된 소수 N을 이용하여 RSA 암호의 공개키를 생성하는 공개키 생성수단과,
    생성된 공개키를 이용하여 RSA 암호의 비밀키를 생성하는 비밀키 생성수단과,
    생성된 상기 비밀키를 단말장치에 대하여 출력하는 키 출력수단과,
    생성된 상기 공개키를 공개하는 공개수단을 구비하고,
    상기 소수산출수단은,
    기지의 소수 q를 기억하고 있는 소수 기억부와,
    고유한 관리정보를 기억하고 있는 관리정보 기억부와,
    상기 관리정보 기억부에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보 R을 생성하는 교란정보 생성부와,
    상기 소수 기억부에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보 산출부와,
    산출된 소수 후보 N이 소수인가의 여부를 판정하는 소수 판정부와,
    소수라고 판정된 경우에 산출된 소수 후보 N를 소수로 출력하는 출력부와,
    상기 소수 판정부에 의해 소수라고 판정될 때까지, 상기 교란정보 생성부, 상기 후보 산출부 및 상기 소수 판정부에 대하여 교란정보 R의 생성과, 소수 후보 N의 산출과, 상기 판정을 반복하도록 제어하는 반복 제어부를 포함하며,
    상기 단말장치는,
    상기 비밀키를 수신하는 수신수단과,
    수신한 비밀키를 기억하는 키 기억수단을 구비하는 것을 특징으로 하는 키 발행시스템.
  19. 제 18 항에 있어서,
    상기 키 발행시스템은 증명서 발행 서버장치를 더 포함하고,
    상기 키 출력수단은 상기 공개키를 상기 증명서 발행 서버장치에 출력하며,
    상기 증명서 발행 서버장치는,
    당해 증명서 발행 서버 장치의 비밀키를 기억하고 있는 기억수단과,
    상기 공개키를 취득하는 취득수단과,
    상기 증명서 발행 서버장치의 비밀키를 이용하여 상기 공개키를 포함하는 공개키 정보에 디지털 서명을 시행하여 서명 데이터를 생성하고, 적어도 상기 공개키 및 생성한 상기 서명 데이터를 포함하는 공개키 증명서를 생성하는 증명서 생성수단과,
    생성한 공개키 증명서를 키 발행 서버장치에 출력하는 출력수단을 구비하는 것을 특징으로 하는 키 발행시스템.
  20. 기지의 소수 q보다 큰 소수 후보 N을 산출하여 소수를 판정하는 소수산출장치에서 이용되는 소수산출방법으로,
    상기 소수산출장치는, 기지의 소수 q를 기억하고 있는 소수기억수단과, 소수의 이용범위에서의 고유한 관리정보를 기억하고 있는 관리정보 기억수단을 구비하고,
    상기 소수산출방법은,
    상기 관리정보 기억수단에서 상기 관리정보를 판독하고, 판독한 상기 관리정보에 의존하는 교란정보 R을 생성하는 난수 생성 스텝과,
    상기 소수기억수단에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보산출 스텝과,
    산출된 소수 후보 N이 소수인가의 여부를 판정하는 소수 판정 스텝과,
    소수라고 판정된 경우에 산출된 소수 후보 N을 소수로 출력하는 출력 스텝을 포함하는 것을 특징으로 하는 소수산출방법.
  21. 기지의 소수 q보다 큰 소수 후보 N을 산출하여 소수를 판정하는 소수산출장치에서 이용되는 소수 산출용 컴퓨터 프로그램으로,
    상기 소수산출장치는, 기지의 소수 q를 기억하고 있는 소수기억수단과, 소수의 이용범위에서의 고유한 관리정보를 기억하고 있는 관리정보 기억수단을 구비하고,
    상기 소수산출용 컴퓨터 프로그램은,
    상기 관리정보 기억수단에서 상기 관리정보를 판독하고, 판독한 상기 관리정 보에 의존하는 교란정보 R을 생성하는 난수 생성 스텝과,
    상기 소수기억수단에서 상기 소수 q를 판독하고, 판독한 상기 소수 q 및 생성된 상기 교란정보 R을 이용하여 N = 2 × 교란정보 R × 소수 q + 1에 의해 소수 후보 N을 산출하는 후보산출 스텝과,
    산출된 소수 후보 N이 소수인가의 여부를 판정하는 소수 판정 스텝과,
    소수하고 판정된 경우에 산출된 소수 후보 N을 소수로 출력하는 출력 스텝을 포함하는 것을 특징으로 하는 컴퓨터 프로그램.
  22. 제 21 항에 있어서,
    상기 컴퓨터 프로그램은,
    컴퓨터에 의해 판독 가능한 기록매체에 기록되어 있는 것을 특징으로 하는 컴퓨터 프로그램.
  23. 제 21 항에 있어서,
    상기 컴퓨터 프로그램은, 전송파에 실려서 송신되는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020067013868A 2003-12-26 2004-12-21 소수산출장치, 방법 및 키 발행시스템 KR20060126705A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2003433903 2003-12-26
JP2003433904 2003-12-26
JPJP-P-2003-00433904 2003-12-26
JPJP-P-2003-00433903 2003-12-26
JP2004023796 2004-01-30
JPJP-P-2004-00023796 2004-01-30

Publications (1)

Publication Number Publication Date
KR20060126705A true KR20060126705A (ko) 2006-12-08

Family

ID=34743474

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020067013868A KR20060126705A (ko) 2003-12-26 2004-12-21 소수산출장치, 방법 및 키 발행시스템
KR1020067014930A KR20060129302A (ko) 2003-12-26 2004-12-21 소수 산출장치 및 방법과 키 발행 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067014930A KR20060129302A (ko) 2003-12-26 2004-12-21 소수 산출장치 및 방법과 키 발행 시스템

Country Status (6)

Country Link
US (2) US7634084B2 (ko)
EP (2) EP1699161A1 (ko)
JP (2) JP4668796B2 (ko)
KR (2) KR20060126705A (ko)
TW (2) TW200527925A (ko)
WO (2) WO2005064844A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160072178A (ko) * 2013-10-17 2016-06-22 에이알엠 아이피 리미티드 에이전트 디바이스에 대한 신뢰된 신원을 확립하는 방법
US10911424B2 (en) 2013-10-17 2021-02-02 Arm Ip Limited Registry apparatus, agent device, application providing apparatus and corresponding methods
US10951630B2 (en) 2014-09-08 2021-03-16 Arm Limited Registry apparatus, agent device, application providing apparatus and corresponding methods
US11076290B2 (en) 2013-10-17 2021-07-27 Arm Ip Limited Assigning an agent device from a first device registry to a second device registry

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1741222B1 (en) * 2004-04-30 2011-02-23 Research In Motion Limited System and method for securing data
US7953978B2 (en) * 2006-09-07 2011-05-31 International Business Machines Corporation Key generation and retrieval using key servers
US8472620B2 (en) * 2007-06-15 2013-06-25 Sony Corporation Generation of device dependent RSA key
FR2946207A1 (fr) * 2009-05-28 2010-12-03 Proton World Internat Nv Protection d'une generation de nombres premiers pour algorithme rsa
US8971530B2 (en) * 2009-06-24 2015-03-03 Intel Corporation Cryptographic key generation using a stored input value and a stored count value
JP2011123356A (ja) * 2009-12-11 2011-06-23 Oki Semiconductor Co Ltd 素数生成装置、素数生成方法、及び素数生成プログラム
US20120297187A1 (en) * 2011-05-17 2012-11-22 Google Inc. Trusted Mobile Device Based Security
JP5848106B2 (ja) * 2011-11-28 2016-01-27 ルネサスエレクトロニクス株式会社 半導体装置及びicカード
IN2014CN04637A (ko) * 2011-12-15 2015-09-18 Inside Secure
KR101493212B1 (ko) * 2012-10-31 2015-02-23 삼성에스디에스 주식회사 아이디 기반 암호화, 복호화 방법 및 이를 수행하기 위한 장치
US8897450B2 (en) * 2012-12-19 2014-11-25 Verifyle, Inc. System, processing device, computer program and method, to transparently encrypt and store data objects such that owners of the data object and permitted viewers are able to view decrypted data objects after entering user selected passwords
US20140344319A1 (en) * 2013-05-14 2014-11-20 Daljit Singh Jandu Algorithm for primality testing based on infinite, symmetric, convergent, continuous, convolution ring group
US9860235B2 (en) * 2013-10-17 2018-01-02 Arm Ip Limited Method of establishing a trusted identity for an agent device
CN103580858B (zh) * 2013-11-06 2017-01-04 北京华大信安科技有限公司 Rsa算法私钥元素获取方法及获取装置
GB2529838B (en) 2014-09-03 2021-06-30 Advanced Risc Mach Ltd Bootstrap Mechanism For Endpoint Devices
GB2540987B (en) 2015-08-03 2020-05-13 Advanced Risc Mach Ltd Bootstrapping without transferring private key
GB2540989B (en) 2015-08-03 2018-05-30 Advanced Risc Mach Ltd Server initiated remote device registration
WO2018174112A1 (ja) * 2017-03-21 2018-09-27 渡辺浩志 ネットワーク上の装置認証技術
KR101918741B1 (ko) 2017-08-21 2018-11-14 국방과학연구소 안전소수 판별 방법
GB2574613B (en) * 2018-06-12 2020-07-22 Advanced Risc Mach Ltd Device, system, and method of generating and handling cryptographic parameters
GB2579571B (en) 2018-12-03 2021-05-12 Advanced Risc Mach Ltd Device bootstrapping
US11475134B2 (en) 2019-04-10 2022-10-18 Arm Limited Bootstrapping a device
JP2020141425A (ja) * 2020-06-10 2020-09-03 エヌ・ティ・ティ・コミュニケーションズ株式会社 端末装置、鍵提供システム、鍵生成方法及びコンピュータプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2570136B2 (ja) * 1993-10-28 1997-01-08 日本電気株式会社 鍵生成装置
US6052467A (en) * 1995-03-27 2000-04-18 Brands; Stefanus A. System for ensuring that the blinding of secret-key certificates is restricted, even if the issuing protocol is performed in parallel mode
JP3835896B2 (ja) * 1997-07-30 2006-10-18 富士通株式会社 素数生成装置,B−smooth性判定装置及び記録媒体
US6404890B1 (en) 1998-04-08 2002-06-11 Citibank, Na Generating RSA moduli including a predetermined portion
JP3518672B2 (ja) * 1998-11-27 2004-04-12 村田機械株式会社 素数生成装置及び暗号システム
EP1026851A1 (en) * 1999-02-03 2000-08-09 Hewlett-Packard Company Composite cryptographic keys
US6687375B1 (en) * 1999-06-02 2004-02-03 International Business Machines Corporation Generating user-dependent keys and random numbers
US6940976B1 (en) * 1999-06-02 2005-09-06 International Business Machines Corporation Generating user-dependent RSA keys
JP2002207426A (ja) * 2001-01-10 2002-07-26 Sony Corp 公開鍵証明書発行システム、公開鍵証明書発行方法、および電子認証装置、並びにプログラム記憶媒体
JP4102090B2 (ja) 2001-04-17 2008-06-18 松下電器産業株式会社 情報セキュリティ装置、素数生成装置及び素数生成方法
TWI244610B (en) * 2001-04-17 2005-12-01 Matsushita Electric Ind Co Ltd Information security device, prime number generation device, and prime number generation method
GB2384403B (en) * 2002-01-17 2004-04-28 Toshiba Res Europ Ltd Data transmission links

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160072178A (ko) * 2013-10-17 2016-06-22 에이알엠 아이피 리미티드 에이전트 디바이스에 대한 신뢰된 신원을 확립하는 방법
US10911424B2 (en) 2013-10-17 2021-02-02 Arm Ip Limited Registry apparatus, agent device, application providing apparatus and corresponding methods
US11076290B2 (en) 2013-10-17 2021-07-27 Arm Ip Limited Assigning an agent device from a first device registry to a second device registry
US11240222B2 (en) 2013-10-17 2022-02-01 Arm Ip Limited Registry apparatus, agent device, application providing apparatus and corresponding methods
US10951630B2 (en) 2014-09-08 2021-03-16 Arm Limited Registry apparatus, agent device, application providing apparatus and corresponding methods

Also Published As

Publication number Publication date
WO2005064843A1 (ja) 2005-07-14
JPWO2005064843A1 (ja) 2007-12-20
JP4668795B2 (ja) 2011-04-13
TW200531495A (en) 2005-09-16
EP1699161A1 (en) 2006-09-06
US20070143388A1 (en) 2007-06-21
US20070121934A1 (en) 2007-05-31
JP4668796B2 (ja) 2011-04-13
TW200527925A (en) 2005-08-16
JPWO2005064844A1 (ja) 2007-12-20
US7706528B2 (en) 2010-04-27
WO2005064844A1 (ja) 2005-07-14
EP1699160A1 (en) 2006-09-06
US7634084B2 (en) 2009-12-15
KR20060129302A (ko) 2006-12-15

Similar Documents

Publication Publication Date Title
KR20060126705A (ko) 소수산출장치, 방법 및 키 발행시스템
JP4741503B2 (ja) 公開鍵を検証可能に生成する方法及び装置
US8300811B2 (en) Method and device for processing data
KR101040588B1 (ko) 익명성을 제공하는 효율적인 신원기반 환서명 방법과 그 시스템
US9154306B2 (en) Privacy-preserving flexible anonymous-pseudonymous access
JP2020502856A5 (ko)
EP1076952A1 (en) Private key validity and validation
US8438393B2 (en) Quadratic residue based password authenticated key exchange method and system
US20020018560A1 (en) Cryptosystem based on a jacobian of a curve
WO2014068427A1 (en) Reissue of cryptographic credentials
JP2014052588A (ja) 情報処理装置、情報処理方法及びコンピュータプログラム
JP2014515125A (ja) データの暗号化のための方法、コンピュータ・プログラム、および装置
KR20020081120A (ko) 정보보안장치, 소수생성장치 및 소수생성방법
GB2450574A (en) Batch verification of multiple signature data
JP4776378B2 (ja) 複数鍵認証端末装置及び複数鍵認証管理装置及び複数鍵認証システム及びプログラム
JP2005513564A (ja) 負荷を複数のエンティティおよびそのデバイスに分散させるための暗号法
JPH11174957A (ja) 認証プロトコル
TWI381696B (zh) 基於利用個人化秘密的rsa非對稱式密碼學之使用者認證
US9252941B2 (en) Enhanced digital signatures algorithm method and system utilitzing a secret generator
JP4629889B2 (ja) 検証可暗号方法、その装置、そのプログラム及びその記録媒体
KR102435056B1 (ko) 확장함수를 이용한 복수의 인증서 발급 시스템 및 그 발급 방법
JP4102090B2 (ja) 情報セキュリティ装置、素数生成装置及び素数生成方法
CN110445602B (zh) 密钥生成方法及电子设备
CN115878566A (zh) 一种分频率数据审计方法、装置、设备以及存储介质
CN116680736A (zh) 基于数据混淆的匿踪查询系统及方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid