KR20140054059A - 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체 - Google Patents

정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체 Download PDF

Info

Publication number
KR20140054059A
KR20140054059A KR1020147003782A KR20147003782A KR20140054059A KR 20140054059 A KR20140054059 A KR 20140054059A KR 1020147003782 A KR1020147003782 A KR 1020147003782A KR 20147003782 A KR20147003782 A KR 20147003782A KR 20140054059 A KR20140054059 A KR 20140054059A
Authority
KR
South Korea
Prior art keywords
binary
algorithm
column
verifier
bit
Prior art date
Application number
KR1020147003782A
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 KR20140054059A publication Critical patent/KR20140054059A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Abstract

M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 2진 난수 생성부와, 상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성부를 구비하고, 상기 3진수열 생성부는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 정보 처리 장치가 제공된다.

Description

정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체{INFORMATION PROCESSING DEVICE, INFORMATION PROCESSING METHOD, PROGRAM, AND RECORDING MEDIUM}
본 기술은 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체에 관한 것이다.
정보 처리 기술이나 통신 기술의 급속한 발전에 수반하여, 공문서, 사문서를 막론하고, 문서의 전자화가 급속하게 진행되고 있다. 이에 따라, 많은 개인이나 기업은 전자 문서의 안전 관리에 큰 관심을 기울이고 있다. 이러한 관심의 고조에 발맞추어, 각 방면에서 전자 문서의 도청이나 위조 등의 탬퍼링(tempering) 행위에 대한 대항책이 활발히 연구되게 되었다. 전자 문서의 도청에 대해서는, 예를 들어 전자 문서를 암호화함으로써 안전성이 확보된다. 또한, 전자 문서의 위조에 대해서는, 예를 들어 전자 서명을 이용함으로써 안전성이 확보된다. 단, 이용하는 암호나 전자 서명이 높은 탬퍼링 내성을 갖고 있지 않으면, 충분한 안전성을 보증 받을 수 없다.
전자 서명은 전자 문서의 작성자를 특정하기 위하여 이용된다. 그로 인해, 전자 서명은 전자 문서의 작성자밖에 생성할 수 없도록 해야 한다. 가령, 악의가 있는 제3자가 동일한 전자 서명을 생성 가능하게 되면, 그 제3자가 전자 문서의 작성자 행세를 할 수 있다. 즉, 악의가 있는 제3자에 의해 전자 문서가 위조된다. 이러한 위조를 방지하기 위해서, 전자 서명의 안전성에 대해서는 여러가지 논의가 이루어져 왔다. 현재 널리 이용되고 있는 전자 서명 방식으로서는, 예를 들어 RSA 서명 방식이나 DSA 서명 방식 등이 알려져 있다.
RSA 서명 방식은, 「큰 합성수에 대한 소인수 분해의 곤란성(이하, 소인수 분해 문제)」을 안전성의 근거로 한다. 또한, DSA 서명 방식은, 「이산 대수 문제에 대한 해의 도출의 곤란성」을 안전성의 근거로 한다. 이들의 근거는, 고전적인 컴퓨터를 이용하여 소인수 분해 문제나 이산 대수 문제를 효율적으로 푸는 알고리즘이 존재하지 않는 것에 기인한다. 즉, 상기의 곤란성은 고전적인 컴퓨터에서의 계산량적인 곤란성을 의미한다. 그러나, 양자 컴퓨터를 사용하면, 소인수 분해 문제나 이산 대수 문제에 대한 해답이 효율적으로 산출된다고 한다.
현재 이용되고 있는 전자 서명 방식이나 공개 키 인증 방식의 대부분은, RSA 서명 방식이나 DSA 서명 방식과 마찬가지로, 소인수 분해 문제나 이산 대수 문제의 곤란성에 안전성의 근거를 두고 있다. 그로 인해, 이러한 전자 서명 방식이나 공개 키 인증 방식은, 양자 컴퓨터가 실용화된 경우에 그 안전성이 확보되지 않게 된다. 따라서, 소인수 분해 문제나 이산 대수 문제 등, 양자 컴퓨터에 의해 용이하게 풀리는 문제와는 상이한 문제에 안전성의 근거를 두는 새로운 전자 서명 방식 및 공개 키 인증 방식의 실현이 요구되고 있다. 양자 컴퓨터에 의해 용이하게 풀기 어려운 문제로서는, 예를 들어 다변수 다항식 문제가 있다.
다변수 다항식 문제에 안전성의 근거를 두는 전자 서명 방식으로서는, 예를 들어 MI(Matsumoto-Imai cryptography), HFE(Hidden Field Equation cryptography), OV(Oil-Vinegar signature scheme), TTM(Tamed Transformation Method cryptography)에 기초하는 방식이 알려져 있다. 예를 들어, 하기의 비특허문헌 1, 2에는 HFE에 기초하는 전자 서명 방식이 개시되어 있다.
Jacques Patarin Asymmetric Cryptography with a Hidden Monomial. CRYPTO 1996, pp.45-60. Patarin, J., Courtois, N., and Goubin, L. QUARTZ, 128-Bit Long Digital Signatures. In Naccache, D., Ed. Topics in Cryptology-CT-RSA 2001(San Francisco, CA, USA, April 2001), vol. 2020 of Lecture Notes in Computer Science, Springer-Verlag., pp.282-297.
상기와 같이, 다변수 다항식 문제는, 양자 컴퓨터를 사용해도 풀기 곤란한 NP 곤란 문제라고 불리는 문제의 일례이다. 통상, HFE 등으로 대표되는 다변수 다항식 문제를 이용한 공개 키 인증 방식은, 특수한 트랩 도어가 투입된 다차 다변수 연립방정식을 이용하고 있다. 예를 들어, x1, …, xn에 관한 다차 다변수 연립방정식 F(x1, …, xn)=y이면 선형 변환(A 및 B)이 준비되어 선형 변환(A 및 B)이 비밀로 관리된다. 이 경우, 다차 다변수 연립방정식(F), 선형 변환(A 및 B)이 트랩 도어가 된다.
트랩 도어(F, A, B)를 알고 있는 엔티티는, x1, …, xn에 관한 방정식 B(F(A(x1, …, xn)))=y'을 풀 수 있다. 한편, 트랩 도어(F, A, B)를 모르는 엔티티는, x1, …, xn에 관한 방정식 B(F(A(x1, …, xn)))=y'을 풀 수 없다. 이 시스템을 이용함으로써, 다차 다변수 연립방정식의 답 구하기 곤란성을 안전성의 근거로 하는 공개 키 인증 방식이나 전자 서명 방식이 실현된다.
상기와 같이, 이러한 공개 키 인증 방식이나 전자 서명 방식을 실현하기 위해서는, B(F(A(x1, …, xn)))=y를 만족하는 특수한 다차 다변수 연립방정식을 준비할 필요가 있다. 또한, 서명 생성 시에 다차 다변수 연립방정식(F)을 풀 필요가 있다. 그로 인해, 이용 가능한 다차 다변수 연립방정식(F)은, 비교적 용이하게 풀리는 것에 한정되어 있었다. 즉, 지금까지의 방식에 있어서는, 비교적 용이하게 풀리는 3개의 함수(트랩 도어)(B, F, A)를 합성한 형태의 다차 다변수 연립방정식 B(F(A(x1, …, xn)))=y밖에 사용할 수 없어 충분한 안전성을 확보하는 것이 어려웠다.
따라서, 본건 발명자는, 상기의 사정을 감안하여 효율적으로 푸는 수단(트랩 도어)이 알려져 있지 않은 다차 다변수 연립방정식을 사용하여 높은 안전성을 갖는 효율적인 공개 키 인증 방식을 고안하였다. 이 방식의 알고리즘에는 3진 난수를 이용하는 장면이 등장한다. 그러나, 우수한 3진 난수 생성기는 알려져 있지 않다. 이러한 사정을 감안하여, 본 기술은, 2진 난수로부터 3진 난수를 효율적으로 추출하는 것이 가능한, 신규이면서도 개량된 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체의 제공을 의도하여 고안된 것이다.
본 기술의 한 관점에 따르면, M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 2진 난수 생성부와, 상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성부를 구비하고, 상기 3진수열 생성부는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는 정보 처리 장치가 제공된다.
또한, 본 기술의 다른 관점에 따르면, M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 스텝과, 상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 스텝을 포함하고, 상기 3진수열을 생성하는 스텝에서는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는 정보 처리 방법이 제공된다.
또한, 본 기술의 다른 관점에 따르면, M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과, 상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램으로서, 상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는 프로그램이 제공된다.
또한, 본 기술의 다른 관점에 따르면, M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과, 상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램이 기록된 컴퓨터에 의해 판독 가능한 기록 매체로서, 상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는 기록 매체가 제공된다.
이상 설명한 바와 같이 본 기술에 의하면, 2진 난수로부터 3진 난수를 효율적으로 추출하는 것이 가능해진다.
도 1은 공개 키 인증 방식에 관한 알고리즘의 구성에 대하여 설명하기 위한 설명도이다.
도 2는 전자 서명 방식에 관한 알고리즘의 구성에 대하여 설명하기 위한 설명도이다.
도 3은 n패스의 공개 키 인증 방식에 관한 알고리즘의 구성에 대하여 설명하기 위한 설명도이다.
도 4는 3패스의 공개 키 인증 방식에 관한 효율적인 알고리즘에 대하여 설명하기 위한 설명도이다.
도 5는 3패스의 공개 키 인증 방식에 관한 효율적인 알고리즘의 병렬화에 대하여 설명하기 위한 설명도이다.
도 6은 5패스의 공개 키 인증 방식에 관한 효율적인 알고리즘의 구성예에 대하여 설명하기 위한 설명도이다.
도 7은 5패스의 공개 키 인증 방식에 관한 효율적인 알고리즘의 병렬화에 대하여 설명하기 위한 설명도이다.
도 8은 3패스의 공개 키 인증 방식에 관한 효율적인 알고리즘을 전자 서명 방식의 알고리즘에 변형되는 방법에 대하여 설명하기 위한 설명도이다.
도 9는 5패스의 공개 키 인증 방식에 관한 효율적인 알고리즘을 전자 서명 방식의 알고리즘에 변형되는 방법에 대하여 설명하기 위한 설명도이다.
도 10은 해시 함수의 구조예에 대하여 설명하기 위한 설명도이다.
도 11은 3패스 방식에 기초하는 전자 서명 방식에 관한 서명 검증 방법(통상의 실장 방법)에 대하여 설명하기 위한 설명도이다.
도 12는 3패스 방식에 기초하는 전자 서명 방식에 관한 서명 검증 방법(메모리 삭감 방법)에 대하여 설명하기 위한 설명도이다.
도 13은 5패스 방식에 기초하는 전자 서명 방식에 관한 서명 검증 방법(통상의 실장 방법)에 대하여 설명하기 위한 설명도이다.
도 14는 5패스 방식에 기초하는 전자 서명 방식에 관한 서명 검증 방법(메모리 삭감 방법)에 대하여 설명하기 위한 설명도이다.
도 15는 2진 난수로부터 3진 난수를 추출하는 방법(추출 방법#1)에 대하여 설명하기 위한 설명도이다.
도 16은 2진 난수로부터 3진 난수를 추출하는 방법(추출 방법#2)에 대하여 설명하기 위한 설명도이다.
도 17은 2진 난수로부터 3진 난수를 추출하는 방법(추출 방법#3)에 대하여 설명하기 위한 설명도이다.
도 18은 2진 난수로부터 3진 난수를 추출하는 방법(추출 방법#3)에 대하여 설명하기 위한 설명도이다.
도 19는 2진 난수로부터 3진 난수를 추출하는 방법(추출 방법#3)에 대하여 설명하기 위한 설명도이다.
도 20은 다변수 다항식의 계수를 효율적으로 대입하기 위한 데이터 구조화 방법(구조화 방법#1)에 대하여 설명하기 위한 설명도이다.
도 21은 다변수 다항식의 계수를 효율적으로 대입하기 위한 데이터 구조화 방법(구조화 방법#2)에 대하여 설명하기 위한 설명도이다.
도 22는 본 기술의 각 실시 형태에 관한 알고리즘을 실행하는 것이 가능한 정보 처리 장치의 하드웨어 구성예에 대하여 설명하기 위한 설명도이다.
이하에 첨부 도면을 참조하면서 본 기술의 적합한 실시 형태에 대하여 상세하게 설명한다. 또한, 본 명세서 및 도면에 있어서, 실질적으로 동일한 기능 구성을 갖는 구성 요소에 대해서는 동일한 번호를 부여함으로써 중복 설명을 생략한다.
[설명의 흐름에 대해서]
여기서, 이하에 기재하는 본 기술의 실시 형태에 관한 설명의 흐름에 대하여 간단하게 설명한다. 우선, 도 1을 참조하면서 공개 키 인증 방식의 알고리즘 구성에 대하여 설명한다. 계속해서, 도 2를 참조하면서 전자 서명 방식의 알고리즘 구성에 대하여 설명한다. 계속해서, 도 3을 참조하면서 n패스의 공개 키 인증 방식에 대하여 설명한다.
계속해서, 도 4 및 도 5를 참조하면서 3패스의 공개 키 인증 방식에 관한 알고리즘의 구성예에 대하여 설명한다. 계속해서, 도 6 및 도 7을 참조하면서 5패스의 공개 키 인증 방식에 관한 알고리즘의 구성예에 대하여 설명한다. 계속해서, 도 8 및 도 9를 참조하면서 3패스 및 5패스의 공개 키 인증 방식에 관한 효율적인 알고리즘을 전자 서명 방식의 알고리즘으로 변형하는 방법에 대하여 설명한다.
계속해서, 도 10 내지 도 14를 참조하면서 본 실시 형태에 관한 전자 서명 방식의 알고리즘을 실행할 때에 서명 검증에 필요로 하는 메모리량을 삭감하는 방법에 대하여 설명한다. 계속해서, 도 15 내지 도 19를 참조하면서 2진 난수로부터 3진 난수를 효율적으로 추출하는 방법에 대하여 설명한다. 계속해서, 도 20 및 도 21을 참조하면서 다변수 다항식의 계수를 효율적으로 대입하는 방법에 대하여 설명한다. 계속해서, 도 22를 참조하면서 본 기술의 실시 형태에 관한 각 알고리즘을 실현하는 것이 가능한 정보 처리 장치의 하드웨어 구성예에 대하여 설명한다. 마지막으로, 본 실시 형태의 기술적 사상에 대하여 정리하고, 당해 기술적 사상으로부터 얻어지는 작용 효과에 대하여 간단하게 설명한다.
(설명 항목)
1: 첫머리
1-1: 공개 키 인증 방식의 알고리즘
1-2: 전자 서명 방식의 알고리즘
1-3: n패스의 공개 키 인증 방식
2: 3패스의 공개 키 인증 방식에 관한 알고리즘의 구성
2-1: 구체적인 알고리즘의 구성예
2-2: 병렬화 알고리즘의 구성예
3: 5패스의 공개 키 인증 방식에 관한 알고리즘의 구성
3-1: 구체적인 알고리즘의 구성예
3-2: 병렬화 알고리즘의 구성예
4: 전자 서명 방식으로의 변형
4-1: 3패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형
4-2: 5패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형
5: 서명 검증에 필요로 하는 메모리량의 삭감 방법에 대해서
5-1: 해시 함수의 구조에 대해서
5-2: 3패스 방식에 기초하는 전자 서명 방식에의 적용예
5-3: 5패스 방식에 기초하는 전자 서명 방식에의 적용예
6: 2진수의 난수열로부터 3진수의 난수열을 추출하는 방법에 대해서
6-1: 추출 방법#1(2비트 구획)
6-2: 추출 방법#2(구획 없음)
6-3: 추출 방법#3(k비트 구획)
6-3-1: 기본 구성
6-3-2: 추가 추출 방법
7: 다변수 다항식의 계수를 효율적으로 대입하는 방법에 대해서
7-1: 기본적인 결정
7-2: 데이터의 구조화
7-2-1: 구조화 방법#1
7-2-2: 구조화 방법#2
7-2-3: 구조화 방법#3
8: 하드웨어 구성예
9: 정리
<1: 첫머리>
본 실시 형태는, 다차 다변수 연립방정식에 대한 답을 구하는 문제의 곤란성에 안전성의 근거를 두는 공개 키 인증 방식 및 전자 서명 방식에 관한 것이다. 단, 본 실시 형태는, HFE 전자 서명 방식 등의 종래 방법과는 달리, 효율적으로 푸는 수단(트랩 도어)을 갖지 않는 다차 다변수 연립방정식을 이용하는 공개 키 인증 방식 및 전자 서명 방식에 관한 것이다. 우선, 공개 키 인증 방식의 알고리즘, 전자 서명 방식의 알고리즘 및 n패스의 공개 키 인증 방식에 대해서 그 개요를 간단하게 설명한다.
[1-1: 공개 키 인증 방식의 알고리즘]
우선, 도 1을 참조하면서 공개 키 인증 방식의 알고리즘에 대하여 개요를 설명한다. 도 1은 공개 키 인증 방식의 알고리즘에 대하여 개요를 설명하기 위한 설명도이다.
공개 키 인증은, 어떤 사람(증명자)이 공개 키(pk) 및 비밀 키(sk)를 이용하여 다른 사람(검증자)에게 본인임을 납득시키기 위하여 이용된다. 예를 들어, 증명자(A)의 공개 키(pkA)는 검증자(B)에게 공개된다. 한편, 증명자(A)의 비밀 키(skA)는 증명자(A)에 의해 비밀로 관리된다. 공개 키 인증 시스템에 있어서는, 공개 키(pkA)에 대응하는 비밀 키(skA)를 아는 자가 증명자(A) 본인이라고 간주된다.
공개 키 인증 시스템을 이용하여 증명자(A)가 증명자(A) 본인임을 검증자(B)에게 증명하기 위해서는, 대화 프로토콜을 통해 증명자(A)가 공개 키(pkA)에 대응하는 비밀 키(skA)를 알고 있다는 증거를 검증자(B)에게 제시하면 된다. 그리고, 증명자(A)가 비밀 키(skA)를 알고 있다는 증거가 검증자(B)에게 제시되고, 그 증거를 검증자(B)가 확인 종료한 경우, 증명자(A)의 정당성(본인인 것)이 증명되게 된다.
단, 공개 키 인증 시스템에는, 안전성을 담보하기 위하여 이하의 조건이 요구된다.
첫번째 조건은, 「대화 프로토콜을 실행했을 때에 비밀 키(sk)를 갖지 않는 위증자에 의해 위증이 성립될 확률을 한없이 작게 한다」는 것이다. 이 첫번째 조건이 성립되는 것을 「건전성」이라고 칭한다. 즉, 건전성이란, 「비밀 키(sk)를 갖지 않는 위증자에 의해, 대화 프로토콜의 실행중에 무시할 수 없는 확률로 위증이 성립되는 경우는 없는 것」이라고 바꿔 말할 수 있다. 두번째 조건은, 「대화 프로토콜을 실행했다고 해도, 증명자(A)가 갖는 비밀 키(skA)의 정보가 검증자(B)에게 일절 누설되는 경우가 없다」는 것이다. 이 두번째 조건이 성립되는 것을 「영지식성」이라고 칭한다.
안전하게 공개 키 인증을 행하기 위해서는, 건전성 및 영지식성을 갖는 대화 프로토콜을 이용할 필요가 있다. 가령, 건전성 및 영지식성을 갖지 않는 대화 프로토콜을 사용하여 인증 처리를 행한 경우에는, 위증된 가능성 및 비밀 키의 정보가 누설될 가능성을 부정할 수 없으므로, 처리 자체가 성공리에 완료되어도 증명자의 정당성을 증명한 것이 되지는 않는다. 따라서, 대화 프로토콜의 건전성 및 영지식성을 어떻게 보증할지가 중요해진다.
(모델)
공개 키 인증 방식의 모델에는, 도 1에 나타낸 바와 같이, 증명자와 검증자라는 2개의 엔티티가 존재한다. 증명자는, 키 생성 알고리즘(Gen)을 사용하여 증명자 고유의 비밀 키(sk)와 공개 키(pk)의 조를 생성한다. 계속해서, 증명자는, 키 생성 알고리즘(Gen)을 사용하여 생성한 비밀 키(sk)와 공개 키(pk)의 조를 이용하여 검증자와 대화 프로토콜을 실행한다. 이 때, 증명자는, 증명자 알고리즘(P)를 이용하여 대화 프로토콜을 실행한다. 상기와 같이, 증명자는, 증명자 알고리즘(P)을 이용하여 대화 프로토콜중에 비밀 키(sk)를 보유하고 있는 증거를 검증자에게 제시한다.
한편, 검증자는, 검증자 알고리즘(V)을 이용하여 대화 프로토콜을 실행하고, 증명자가 공개하고 있는 공개 키에 대응하는 비밀 키를, 그 증명자가 보유하고 있을 것인지 여부를 검증한다. 즉, 검증자는, 증명자가 공개 키에 대응하는 비밀 키를 보유하고 있는지 여부를 검증하는 엔티티이다. 이와 같이, 공개 키 인증 방식의 모델은, 증명자와 검증자라는 2개의 엔티티 및 키 생성 알고리즘(Gen), 증명자 알고리즘(P), 검증자 알고리즘(V)이라는 3개의 알고리즘에 의해 구성된다.
또한, 이하의 설명에 있어서, 「증명자」 「검증자」라는 표현을 사용하지만, 이들의 표현은 어디까지나 엔티티를 의미하는 것이다. 따라서, 키 생성 알고리즘(Gen), 증명자 알고리즘(P)을 실행하는 주체는 「증명자」의 엔티티에 대응하는 정보 처리 장치이다. 마찬가지로, 검증자 알고리즘(V)을 실행하는 주체는 정보 처리 장치이다. 이들 정보 처리 장치의 하드웨어 구성은, 예를 들어 도 10에 나타낸 바와 같다. 즉, 키 생성 알고리즘(Gen), 증명자 알고리즘(P), 검증자 알고리즘(V)은, ROM(904), RAM(906), 기억부(920), 리무버블 기록 매체(928) 등에 기록된 프로그램에 기초하여 CPU(902) 등에 의해 실행된다.
(키 생성 알고리즘(Gen))
키 생성 알고리즘(Gen)은 증명자에 의해 이용된다. 키 생성 알고리즘(Gen)은, 증명자에게 고유한 비밀 키(sk)와 공개 키(pk)의 조를 생성하는 알고리즘이다. 키 생성 알고리즘(Gen)에 의해 생성된 공개 키(pk)는 공개된다. 그리고, 공개된 공개 키(pk)는 검증자에 의해 이용된다. 한편, 키 생성 알고리즘(Gen)에 의해 생성된 비밀 키(sk)는 증명자가 비밀로 관리한다. 그리고, 증명자에 의해 비밀로 관리되는 비밀 키(sk)는, 공개 키(pk)에 대응하는 비밀 키(sk)를 증명자가 보유하고 있는 것을 검증자에게 증명하기 위하여 이용된다. 형식적으로, 키 생성 알고리즘(Gen)은, 시큐리티 파라미터 1λ(λ는 0 이상의 정수))를 입력으로 하고, 비밀 키(sk)와 공개 키(pk)를 출력하는 알고리즘으로서 하기의 식(1)과 같이 표현된다.
Figure pct00001
(증명자 알고리즘(P))
증명자 알고리즘(P)은 증명자에 의해 이용된다. 증명자 알고리즘(P)은, 공개 키(pk)에 대응하는 비밀 키(sk)를 증명자가 보유하고 있는 것을 검증자에게 증명하기 위한 알고리즘이다. 즉, 증명자 알고리즘(P)은, 비밀 키(sk)와 공개 키(pk)를 입력으로 하고, 대화 프로토콜을 실행하는 알고리즘이다.
(검증자 알고리즘(V))
검증자 알고리즘(V)은 검증자에 의해 이용된다. 검증자 알고리즘(V)은, 대화 프로토콜의 중에서 공개 키(pk)에 대응하는 비밀 키(sk)를 증명자가 보유하고 있는지 여부를 검증하는 알고리즘이다. 검증자 알고리즘(V)은, 공개 키(pk)를 입력으로 하고, 대화 프로토콜의 실행 결과에 따라서 0 또는 1(1bit)을 출력하는 알고리즘이다. 또한, 검증자는, 검증자 알고리즘(V)이 0을 출력한 경우에는 증명자가 부정한 것이라고 판단하고, 1을 출력한 경우에는 증명자가 정당한 것이라고 판단한다. 형식적으로, 검증자 알고리즘(V)은 하기의 식(2)와 같이 표현된다.
Figure pct00002
상기와 같이, 의미가 있는 공개 키 인증을 실현하기 위해서는, 대화 프로토콜이 건전성 및 영지식성이라는 2개의 조건을 만족하고 있을 필요가 있다. 그러나, 증명자가 비밀 키(sk)를 보유하고 있는 것을 증명하기 위해서는, 증명자가 비밀 키(sk)에 의존한 수속을 실행하고, 그 결과를 검증자에게 통지한 후에, 그 통지 내용에 기초하는 검증을 검증자에게 실행시킬 필요가 있다. 비밀 키(sk)에 의존한 수속을 실행하는 것은 건전성을 담보하기 위하여 필요하다. 한편, 비밀 키(sk)의 정보가 일절 검증자에게 누설되지 않도록 할 필요가 있다. 그로 인해, 이것들의 요건을 충족시키도록, 상기의 키 생성 알고리즘(Gen), 증명자 알고리즘(P), 검증자 알고리즘(V)을 교묘하게 설계할 필요가 있다.
이상, 공개 키 인증 방식의 알고리즘에 대해서, 그 개요를 설명하였다.
[1-2: 전자 서명 방식의 알고리즘]
이어서, 도 2를 참조하면서 전자 서명 방식의 알고리즘에 대하여 개요를 설명한다. 도 2는 전자 서명 방식의 알고리즘에 대하여 개요를 설명하기 위한 설명도이다.
종이 문서와는 달리, 어떤 전자화된 데이터에 대하여 날인하거나 서명을 기재하거나 할 수는 없다. 그로 인해, 전자화된 데이터의 작성자를 증명하기 위해서는, 종이 문서에 날인하거나 서명을 기재하거나 하는 것과 동등한 효과를 얻을 수 있는 전자적인 시스템을 필요로 한다. 이 시스템이 전자 서명이다. 전자 서명이란, 데이터의 작성자밖에 모르는 서명 데이터를 데이터에 관련지어서 수령자에게 제공하고, 그 서명 데이터를 수령자측에서 검증하는 시스템을 말한다.
(모델)
전자 서명 방식의 모델에는, 도 2에 나타낸 바와 같이, 서명자 및 검증자라는 2개의 엔티티가 존재한다. 그리고, 전자 서명 방식의 모델은, 키 생성 알고리즘(Gen), 서명 생성 알고리즘(Sig), 서명 검증 알고리즘(Ver)라는 3개의 알고리즘에 의해 구성된다.
서명자는, 키 생성 알고리즘(Gen)을 이용하여 서명자 고유의 서명 키(sk)와 검증 키(pk)의 조를 생성한다. 또한, 서명자는, 서명 생성 알고리즘(Sig)을 이용하여 문서(M)에 부여하는 전자 서명(σ)을 생성한다. 즉, 서명자는, 문서(M)에 전자 서명을 부여하는 엔티티이다. 한편, 검증자는, 서명 검증 알고리즘(Ver)을 이용하여 문서(M)에 부여된 전자 서명(σ)을 검증한다. 즉, 검증자는, 문서(M)의 작성자가 서명자인지 여부를 확인하기 위해서, 전자 서명(σ)을 검증하는 엔티티이다.
또한, 이하의 설명에 있어서, 「서명자」 「검증자」라는 표현을 사용하지만, 이것들의 표현은 어디까지나 엔티티를 의미하는 것이다. 따라서, 키 생성 알고리즘(Gen), 서명 생성 알고리즘(Sig)을 실행하는 주체는 「서명자」의 엔티티에 대응하는 정보 처리 장치이다. 마찬가지로, 서명 검증 알고리즘(Ver)을 실행하는 주체는 정보 처리 장치이다. 이들 정보 처리 장치의 하드웨어 구성은, 예를 들어 도 10에 나타낸 바와 같다. 즉, 키 생성 알고리즘(Gen), 서명 생성 알고리즘(Sig), 서명 검증 알고리즘(Ver)은, ROM(904), RAM(906), 기억부(920), 리무버블 기록 매체(928) 등에 기록된 프로그램에 기초하여 CPU(902) 등에 의해 실행된다.
(키 생성 알고리즘(Gen))
키 생성 알고리즘(Gen)은 서명자에 의해 이용된다. 키 생성 알고리즘(Gen)은 서명자 고유의 서명 키(sk)와 검증 키(pk)의 조를 생성하는 알고리즘이다. 키 생성 알고리즘(Gen)에 의해 생성된 검증 키(pk)는 공개된다. 한편, 키 생성 알고리즘(Gen)에 의해 생성된 서명 키(sk)는 서명자에 의해 비밀로 관리된다. 그리고, 서명 키(sk)는 문서(M)에 부여되는 전자 서명(σ)의 생성에 이용된다. 예를 들어, 키 생성 알고리즘(Gen)은, 시큐리티 파라미터 1λ(λ는 0 이상의 정수)를 입력으로 하고, 서명 키(sk) 및 공개 키(pk)를 출력한다. 이 경우, 키 생성 알고리즘(Gen)은 형식적으로 하기의 식(3)과 같이 표현할 수 있다.
Figure pct00003
(서명 생성 알고리즘(Sig))
서명 생성 알고리즘(Sig)은 서명자에 의해 이용된다. 서명 생성 알고리즘(Sig)은 문서(M)에 부여되는 전자 서명(σ)을 생성하는 알고리즘이다. 서명 생성 알고리즘(Sig)은, 서명 키(sk)와 문서(M)를 입력으로 하고, 전자 서명(σ)을 출력하는 알고리즘이다. 이 서명 생성 알고리즘(Sig)은 형식적으로 하기의 식(4)와 같이 표현할 수 있다.
Figure pct00004
(서명 검증 알고리즘(Ver))
서명 검증 알고리즘(Ver)은 검증자에 의해 이용된다. 서명 검증 알고리즘(Ver)은, 전자 서명(σ)이 문서(M)에 대한 정당한 전자 서명인지 여부를 검증하는 알고리즘이다. 서명 검증 알고리즘(Ver)은, 서명자의 검증 키(pk), 문서(M), 전자 서명(σ)을 입력으로 하고, 0 또는 1(1bit)을 출력하는 알고리즘이다. 이 서명 검증 알고리즘(Ver)은 형식적으로 하기의 식(5)와 같이 표현할 수 있다. 또한, 검증자는, 서명 검증 알고리즘(Ver)이 0을 출력한 경우(공개 키(pk)가 문서(M)와 전자 서명(σ)을 거부할 경우)에 전자 서명(σ)이 부당한 것이라고 판단하고, 1을 출력한 경우(공개 키(pk)가 문서(M)와 전자 서명(σ)을 수리할 경우)에 전자 서명(σ)이 정당한 것이라고 판단한다.
Figure pct00005
이상, 전자 서명 방식의 알고리즘에 대해서, 그 개요를 설명하였다.
[1-3: n패스의 공개 키 인증 방식]
이어서, 도 3을 참조하면서 n패스의 공개 키 인증 방식에 대하여 설명한다. 도 3은 n패스의 공개 키 인증 방식에 대하여 설명하기 위한 설명도이다.
상기와 같이, 공개 키 인증 방식은, 대화 프로토콜 중에서, 증명자가 공개 키(pk)에 대응하는 비밀 키(sk)를 보유하고 있는 것을 검증자에게 증명하는 인증 방식이다. 또한, 대화 프로토콜은 건전성 및 영지식성이라는 2개의 조건을 만족할 필요가 있다. 그로 인해, 대화 프로토콜 중에서는, 도 3에 나타낸 바와 같이, 증명자 및 검증자의 양쪽이 각각 처리를 실행하면서 n회의 정보 교환을 행한다.
n패스의 공개 키 인증 방식의 경우, 증명자 알고리즘(P)을 사용하여 증명자에 의해 처리(공정#1)가 실행되고, 정보(T1)가 검증자에게 송신된다. 계속해서, 검증자 알고리즘(V)을 사용하여 검증자에 의해 처리(공정#2)가 실행되고, 정보(T2)가 증명자에게 송신된다. 또한, k=3 내지 n에 대하여 처리의 실행 및 정보(Tk)의 송신이 순차 행해지고, 마지막으로 처리(공정#n+1)가 실행된다. 이와 같이, 정보가 n회 송수신되는 방식을 「n패스」의 공개 키 인증 방식이라고 칭한다.
이상, n패스의 공개 키 인증 방식에 대하여 설명하였다.
<2: 3패스의 공개 키 인증 방식에 관한 알고리즘의 구성>
이하, 3패스의 공개 키 인증 방식에 관한 알고리즘에 대하여 설명한다. 또한, 이하의 설명에 있어서, 3패스의 공개 키 인증 방식을 「3패스 방식」이라고 칭하는 경우가 있다.
[2-1: 구체적인 알고리즘의 구성예(도 4)]
우선, 도 4를 참조하면서 3패스 방식에 관한 구체적인 알고리즘의 구성예에 대하여 소개한다. 도 4는 3패스 방식에 관한 구체적인 알고리즘의 구성에 대하여 설명하기 위한 설명도이다. 여기에서는, 공개 키(pk)의 일부로서 2차 다항식의 조(f1(x), …, fm(x))를 이용하는 경우에 대하여 생각한다. 단, 2차 다항식(fi(x))은 하기의 식(6)과 같이 표현되는 것으로 한다. 또한, 벡터(x1, …, xn)를 x라고 표기하고, 2차 다항식의 조(f1(x), …, fm(x))를 다변수 다항식 F(x)라고 표기하기로 한다.
Figure pct00006
또한, 2차 다항식의 조(f1(x), …, fm(x))는 하기의 식(7)과 같이 표현할 수 있다. 또한, A1, …, Am은 n×n 행렬이다. 또한, b1, …, bm은 각각 n×1 벡터이다.
Figure pct00007
이 표현을 사용하면, 다변수 다항식 F는 하기의 식(8) 및 식(9)와 같이 표현할 수 있다. 이 표현이 성립되는 것은 하기의 식(10)으로부터 용이하게 확인할 수 있다.
Figure pct00008
이와 같이 F(x+y)를 x에 의존하는 제1 부분과, y에 의존하는 제2 부분과, x 및 y의 양쪽에 의존하는 제3 부분으로 나누었을 때, 제3 부분에 대응하는 항 G(x, y)는 x 및 y에 대하여 쌍선형이 된다. 이하, 항 G(x, y)를 쌍선형항이라고 칭하는 경우가 있다. 이 성질을 이용하면, 효율적인 알고리즘을 구축하는 것이 가능해진다.
예를 들어, 벡터 t0∈Kn, e0∈Km을 사용하여 다변수 다항식 F(x+r)의 마스크에 이용하는 다변수 다항식 F1(x)를 F1(x)=G(x, t0)+e0라고 표현한다. 이 경우, 다변수 다항식 F(x+r0)과 G(x)의 합은 하기의 식(11)과 같이 표현된다. 여기서, t1=r0+t0, e1=F(r0)+e0라고 하면, 다변수 다항식 F2(x)=F(x+r0)+F1(x)는 벡터 t1∈Kn, e1∈Km에 의해 표현할 수 있다. 그로 인해, F1(x)=G(x, t0)+e0으로 설정하면, Kn 상의 벡터 및 Km 상의 벡터를 사용하여 F1 및 F2를 표현할 수 있게 되고, 통신에 필요한 데이터 크기가 적은 효율적인 알고리즘을 실현하는 것이 가능해진다.
Figure pct00009
또한, F2(또는 F1)로부터 r0에 관한 정보가 일절 누설되는 경우는 없다. 예를 들어, e1 및 t1(또는 e0 및 t0)이 부여되어도, e0 및 t0(또는 e1 및 t1)을 모르는 한, r0의 정보를 일절 알 수는 없다. 따라서, 영지식성이 담보된다. 이하, 상기의 논리에 기초하여 구축된 3패스 방식의 알고리즘에 대하여 설명한다. 여기서 설명하는 3패스 방식의 알고리즘은, 이하와 같은 키 생성 알고리즘(Gen), 증명자 알고리즘(P), 검증자 알고리즘(V)에 의해 구성된다.
(키 생성 알고리즘(Gen))
키 생성 알고리즘(Gen)은, 환(K) 상에서 정의되는 m개의 다변수 다항식 f1(x1, …, xn), …, fm(x1, …, xn) 및 벡터s=(s1, …, sn)∈Kn을 생성한다. 이어서, 키 생성 알고리즘(Gen)은, y=(y1, …, ym)←(f1(s), …, fm(s))을 계산한다. 그리고, 키 생성 알고리즘(Gen)은, (f1(x1, …, xn), …, fm(x1, …, xn), y)을 공개 키(pk)로 설정하고, s를 비밀 키로 설정한다.
(증명자 알고리즘(P), 검증자 알고리즘(V))
이하, 도 4를 참조하면서, 대화 프로토콜 중에서 증명자 알고리즘(P)이 실행하는 처리 및 검증자 알고리즘(V)이 실행하는 처리에 대하여 설명한다. 이 대화 프로토콜 중에서, 증명자는, 비밀 키(s)의 정보를 검증자에게 일절 누설하지 않고, 「자신이 y=F(s)을 만족하는 s를 알고 있는 것」을 검증자에게 나타낸다. 한편, 검증자는, 증명자가 y=F(s)을 만족하는 s를 알고 있는지 여부를 검증한다. 또한, 공개 키(pk)는 검증자에게 공개되어 있는 것으로 한다. 또한, 비밀 키(s)는 증명자에 의해 비밀로 관리되고 있는 것으로 한다. 이하, 도 4에 나타낸 흐름도에 따라 설명을 진행한다.
공정#1:
도 4에 나타낸 바와 같이, 우선, 증명자 알고리즘(P)은 랜덤하게 벡터 r0, t0∈Kn 및 e0∈Km을 생성한다. 계속해서, 증명자 알고리즘(P)은 r1←s-r0을 계산한다. 이 계산은, 비밀 키(s)를 벡터 r0에 의해 마스크하는 조작에 상당한다. 또한, 증명자 알고리즘(P)은 t1←r0-t0을 계산한다. 계속해서, 증명자 알고리즘(P)은 e1←F(r0)-e0을 계산한다.
공정#1(계속):
계속해서, 증명자 알고리즘(P)은 c0←H(r1, G(t0, r1)+e0)을 계산한다. 계속해서, 증명자 알고리즘(P)은 c1←H(t0, e0)을 계산한다. 계속해서, 증명자 알고리즘(P)은 c2←H(t1, e1)을 계산한다. 공정#1에서 생성된 메시지(c0, c1, c2)는 검증자 알고리즘(V)에 보내진다.
공정#2:
메시지(c0, c1, c2)를 수취한 검증자 알고리즘(V)은, 3개의 검증 패턴 중, 어느 검증 패턴을 이용할지를 선택한다. 예를 들어, 검증자 알고리즘(V)은, 검증 패턴의 종류를 나타내는 3개의 수치 {0, 1, 2} 중에서 하나의 수치를 선택하고, 선택한 수치를 요구Ch로 설정한다. 이 요구Ch는 증명자 알고리즘(P)에 보내진다.
공정#3:
요구Ch를 수취한 증명자 알고리즘(P)은, 수취한 요구Ch에 따라서 검증자 알고리즘(V)에 보내는 회답Rsp를 생성한다. Ch=0인 경우, 증명자 알고리즘(P)은 회답Rsp=(r0, t1, e1)을 생성한다. Ch=1인 경우, 증명자 알고리즘(P)은 회답Rsp=(r1, t0, e0)을 생성한다. Ch=2인 경우, 증명자 알고리즘(P)은 회답Rsp=(r1, t1, e1)을 생성한다. 공정#3에서 생성된 회답Rsp는 검증자 알고리즘(V)에 보내진다.
공정#4:
회답Rsp를 수취한 검증자 알고리즘(V)은, 수취한 회답Rsp를 이용하여 이하의 검증 처리를 실행한다.
Ch=0인 경우, 검증자 알고리즘(V)은 c1=H (r0-t1, F(r0)-e1)의 등호가 성립되는지 여부를 검증한다. 또한, 검증자 알고리즘(V)은 c2=H(t1, e1)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이들의 검증이 모두 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
Ch=1인 경우, 검증자 알고리즘(V)은 c0=H(r1, G(t0, r1)+e0)의 등호가 성립되는지 여부를 검증한다. 또한, 검증자 알고리즘(V)은 c1=H(t0, e0)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이들의 검증이 모두 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
Ch=2인 경우, 검증자 알고리즘(V)은 c0=H(r1, y-F(r1)-G(t1, r1)-e1)의 등호가 성립되는지 여부를 검증한다. 또한, 검증자 알고리즘(V)은 c2=H(t1, e1)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이들의 검증이 모두 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
이상, 3패스 방식에 관한 효율적인 알고리즘의 구성예에 대하여 설명하였다.
[2-2: 병렬화 알고리즘의 구성예(도 5)]
이어서, 도 5를 참조하면서, 도 4에 나타낸 3패스 방식의 알고리즘을 병렬화하는 방법에 대하여 설명한다. 또한, 키 생성 알고리즘(Gen)의 구성에 대해서는 설명을 생략한다.
그런데, 상기의 대화 프로토콜을 적용하면, 위증이 성공할 확률을 2/3 이하로 억제할 수 있다. 따라서, 이 대화 프로토콜을 2회 실행하면, 위증이 성공할 확률을 (2/3)2 이하로 억제할 수 있다. 또한, 이 대화 프로토콜을 N회 실행하면, 위증이 성공할 확률은 (2/3)N이 되고, N을 충분히 큰 수(예를 들어, N=140)로 하면, 위증이 성공할 확률은 무시할 수 있을 정도로 작아진다.
대화 프로토콜을 복수회 실행하는 방법으로서는, 예를 들어, 메시지, 요구, 회답의 교환을 순차적으로 복수회 반복하는 직렬적인 방법과, 1회분의 교환으로 복수회분의 메시지, 요구, 회답의 교환을 행하는 병렬적인 방법을 생각할 수 있다. 또한, 직렬적인 방법과 병렬적인 방법을 조합한 하이브리드형의 방법도 생각할 수 있다. 여기에서는, 도 5를 참조하면서, 3패스 방식에 관한 상기의 대화 프로토콜을 병렬적으로 실행하는 알고리즘(이하, 병렬화 알고리즘)에 대하여 설명한다.
공정#1:
도 5에 나타낸 바와 같이, 우선, 증명자 알고리즘(P)은 i=1 내지 N에 대하여 이하의 처리(1) 내지 처리(6)을 실행한다.
처리(1): 증명자 알고리즘(P)은 랜덤하게 벡터 r0i, t0i∈Kn 및 e0i∈Km을 생성한다.
처리(2): 증명자 알고리즘(P)은 r1i←s-r0i를 계산한다. 이 계산은, 비밀 키(s)를 벡터 r0i에 의해 마스크하는 조작에 상당한다. 또한, 증명자 알고리즘(P)은 t1i←r0i+t0i를 계산한다.
처리(3): 증명자 알고리즘(P)은 e1i←F(r0i)-e0i를 계산한다.
처리(4): 증명자 알고리즘(P)은 c0i←H(r1i, G(r1i, t0i)+e0i)을 계산한다.
처리(5): 증명자 알고리즘(P)은 c1i←H(t0i, e0i)을 계산한다.
처리(6): 증명자 알고리즘(P)은 c2i←H(t1i, e1i)을 계산한다.
공정#1(계속)
i=1 내지 N에 대하여 상기의 처리(1) 내지 처리(6)을 실행한 후, 증명자 알고리즘(P)은 Cmt←H(c01, c11, c21, …, c0N, c1N, c2N)을 계산한다. 공정#1에서 생성된 해시값 Cmt는 검증자 알고리즘(V)에 보내진다. 이와 같이, 메시지(c01, c11, c21, …, c0N, c1N, c2N)를 해시값으로 변환하고나서 검증자 알고리즘(V)에 보냄으로써 통신량을 삭감시키는 것이 가능해진다.
공정#2:
해시값 Cmt를 수취한 검증자 알고리즘(V)은, i=1 내지 N 각각에 대해서, 3개의 검증 패턴 중, 어느 검증 패턴을 이용할지를 선택한다. 예를 들어, 검증자 알고리즘(V)은, i=1 내지 N 각각에 대해서, 검증 패턴의 종류를 나타내는 3개의 수치 {0, 1, 2} 중에서 하나의 수치를 선택하고, 선택한 수치를 요구Chi로 설정한다. 요구Ch1, …, ChN은 증명자 알고리즘(P)에 보내진다.
공정#3:
요구Ch1, …, ChN을 수취한 증명자 알고리즘(P)은, 수취한 요구Ch1, …, ChN 각각에 응하여 검증자 알고리즘(V)에 보내는 회답Rsp1, …, RspN을 생성한다. Chi=0인 경우, 증명자 알고리즘(P)은 Rspi=(r0i, t1i, e1i, c0i)을 생성한다. Chi=1인 경우, 증명자 알고리즘(P)은 Rspi=(r1i, t0i, e0i, c2i)을 생성한다. Chi=2인 경우, 증명자 알고리즘(P)은 Rspi=(r1i, t1i, e1i, c1i)을 생성한다.
공정#3에서 생성된 회답Rsp1, …, RspN은 검증자 알고리즘(V)에 보내진다.
공정#4:
회답Rsp1, …, RspN을 수취한 검증자 알고리즘(V)은, 수취한 회답Rsp1, …, RspN을 이용하여 이하의 처리(1) 내지 처리(3)을 i=1 내지 N에 대하여 실행한다. 단, 검증자 알고리즘(V)은, Chi=0인 경우에 처리(1)을 실행하고, Chi=1인 경우에 처리(2)를 실행하고, Chi=2인 경우에 처리(3)을 실행한다.
처리(1): Chi=0인 경우, 검증자 알고리즘(V)은, Rspi로부터 (r0i, t1i, e1i, c0i)을 취출한다. 계속해서, 검증자 알고리즘(V)은 c1i=H(r0i-t1i, F(r0i)-e1i)을 계산한다. 또한, 검증자 알고리즘(V)은 c2i=H(t1i, e1i)을 계산한다. 그리고, 검증자 알고리즘(V)은 (c0i, c1i, c2i)을 유지한다.
처리(2): Chi=1인 경우, 검증자 알고리즘(V)은 Rspi로부터 (r1i, t0i, e0i, c2i)을 취출한다. 계속해서, 검증자 알고리즘(V)은 c0i=H(r1i, G(t0i, r1i)+e0i)을 계산한다. 또한, 검증자 알고리즘(V)은 c1i=H(t0i, e0i)을 계산한다. 그리고, 검증자 알고리즘(V)은 (c0i, c1i, c2i)을 유지한다.
처리(3): Chi=2인 경우, 검증자 알고리즘(V)은 Rspi로부터 (r1i, t1i, e1i, c1i)을 취출한다. 계속해서, 검증자 알고리즘(V)은 c0i=H(r1i, y-F(r1i)-G(t1i, r1i)-e1i)을 계산한다. 또한, 검증자 알고리즘(V)은 c2i=H(t1i, e1i)을 계산한다. 그리고, 검증자 알고리즘(V)은 (c0i, c1i, c2i)을 유지한다.
처리(1) 내지 처리(3)을 i=1 내지 N에 대하여 실행한 후, 검증자 알고리즘(V)은, Cmt=H(c01, c11, c21, …, c0N, c1N, c2N)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이 검증이 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패한 경우에 인증 실패를 나타내는 값 0을 출력한다.
이상, 3패스 방식에 관한 효율적인 병렬화 알고리즘의 구성예에 대하여 설명하였다.
<3: 5패스의 공개 키 인증 방식에 관한 알고리즘의 구성>
이어서, 5패스의 공개 키 인증 방식에 관한 알고리즘에 대하여 설명한다. 또한, 이하의 설명에 있어서, 5패스의 공개 키 인증 방식을 「5패스 방식」이라고 칭하는 경우가 있다.
3패스 방식의 경우에는 대화 프로토콜 1회당의 위증 확률이 2/3이었지만, 5패스 방식의 경우에는 대화 프로토콜 1회당의 위증 확률이 1/2+1/q가 된다. 단, q는 이용하는 환의 위수이다. 따라서, 환의 위수가 충분히 큰 경우, 5패스 방식이 1회당의 위증 확률을 저감시키는 것이 가능해지고, 적은 대화 프로토콜의 실행 횟수로 위증 확률을 충분히 작게 할 수 있다.
예를 들어, 위증 확률을 1/2n 이하로 하고 싶은 경우, 3패스 방식에 있어서는, n/(log3-1)=1.701n회 이상, 대화 프로토콜을 실행할 필요가 있다. 한편, 위증 확률을 1/2n 이하로 하고 싶은 경우, 5패스 방식에 있어서는, n/(1-log(1+1/q))회 이상, 대화 프로토콜을 실행할 필요가 있다. 따라서, q=24로 하면, 동일한 시큐리티 레벨을 실현하기 위해서 필요한 통신량은, 3패스 방식에 비해 5패스 방식쪽이 적어지는 것이다.
[3-1: 구체적인 알고리즘의 구성예(도 6)]
우선, 도 6을 참조하면서, 5패스 방식에 관한 구체적인 알고리즘의 구성예에 대하여 소개한다. 도 6은 5패스 방식에 관한 구체적인 알고리즘의 구성에 대하여 설명하기 위한 설명도이다. 여기에서는, 공개 키(pk)의 일부로서 2차 다항식의 조(f1(x), …, fm(x))를 이용하는 경우에 대하여 생각한다. 단, 2차 다항식 fi(x)는 상기의 식(6)과 같이 표현되는 것으로 한다. 또한, 벡터(x1, …, xn)을 x라고 표기하고, 2차 다항식의 조(f1(x), …, fm(x))를 다변수 다항식 F(x)라고 표기하기로 한다.
3패스 방식에 관한 알고리즘과 마찬가지로, 2개의 벡터 t0∈Kn, e0∈Km을 사용하여, 다변수 다항식 F(x+r0)을 마스크하기 위하여 사용한 다변수 다항식 F1(x)를 F1(x)=G(x, t0)+e0과 같이 표현한다. 이 표현을 사용하면, 다변수 다항식 F(x+r0)에 대해서, 하기의 식(12)로 표현되는 관계를 얻을 수 있다.
Figure pct00010
그로 인해, t1=ChA·r0+t0, e1=ChA·F(r0)+e0으로 하면, 마스크 후의 다변수 다항식 F2(x)=ChA·F(x+r0)+F1(x)도, 2개의 벡터 t1∈Kn, e1∈Km에 의해 표현할 수 있다. 이들의 이유로부터, F1(x)=G(x, t0)+e0으로 설정하면, Kn 상의 벡터 및 Km 상의 벡터를 사용하여 F1 및 F2를 표현할 수 있게 되고, 통신에 필요한 데이터 크기가 적은 효율적인 알고리즘을 실현하는 것이 가능해진다.
또한, F2(또는 F1)로부터 r0에 관한 정보가 일절 누설되는 경우는 없다. 예를 들어, e1 및 t1(또는 e0 및 t0)이 부여되어도, e0 및 t0(또는 e1 및 t1)을 모르는 한, r0의 정보를 일절 알 수는 없다. 따라서, 영지식성은 담보된다. 이하, 상기의 논리에 기초하여 구축된 5패스 방식의 알고리즘에 대하여 설명한다. 여기서 설명하는 5패스 방식의 알고리즘은, 이하와 같은 키 생성 알고리즘(Gen), 증명자 알고리즘(P), 검증자 알고리즘(V)에 의해 구성된다.
(키 생성 알고리즘(Gen))
키 생성 알고리즘(Gen)은, 환(K) 상에서 정의되는 다변수 다항식 f1(x1, …, xn), …, fm(x1, …, xn) 및 벡터 s=(s1, …, sn)∈Kn을 생성한다. 이어서, 키 생성 알고리즘(Gen)은 y=(y1, …, ym)←(f1(s), …, fm(s))을 계산한다. 그리고, 키 생성 알고리즘(Gen)은, (f1, …, fm, y)를 공개 키(pk)로 설정하고, s를 비밀 키로 설정한다. 또한, 이하에서는, 벡터(x1, …, xn)를 x라고 표기하고, 다변수 다항식의 조(f1(x), …, fm(x))를 F(x)라고 표기한다.
(증명자 알고리즘(P), 검증자 알고리즘(V))
이하, 도 6을 참조하면서, 대화 프로토콜 중에서 증명자 알고리즘(P) 및 검증자 알고리즘(V)에 의해 실행되는 처리에 대하여 설명한다. 이 대화 프로토콜 중에서, 증명자는, 비밀 키(s)의 정보를 검증자에게 일절 누설하지 않고, 「자신이y=F(s)을 만족하는 s를 알고 있는 것」을 검증자에게 나타낸다. 한편, 검증자는, 증명자가 y=F(s)을 만족하는 s를 알고 있는지 여부를 검증한다. 또한, 공개 키(pk)는 검증자에게 공개되어 있는 것으로 한다. 또한, 비밀 키(s)는 증명자에 의해 비밀로 관리되고 있는 것으로 한다. 이하, 도 6에 나타낸 흐름도에 따라 설명을 진행한다.
공정#1:
도 6에 나타낸 바와 같이, 우선, 증명자 알고리즘(P)은 랜덤하게 벡터 r0∈Kn, t0∈Kn, e0∈Km을 생성한다. 계속해서, 증명자 알고리즘(P)은 r1←s-r0을 계산한다. 이 계산은, 비밀 키(s)를 벡터 r0에 의해 마스크하는 조작에 상당한다. 계속해서, 증명자 알고리즘(P)은 벡터 r0, t0, e0의 해시값 c0을 생성한다. 즉, 증명자 알고리즘(P)은 c0←H(r0, t0, e0)을 계산한다. 계속해서, 증명자 알고리즘(P)은 G(t0, r1)+e0 및 r1의 해시값 c1을 생성한다. 즉, 증명자 알고리즘(P)은 c0←H(r1, G(t0, r1)+e0)을 계산한다. 공정#1에서 생성된 메시지(c0, c1)는 검증자 알고리즘(V)에 보내진다.
공정#2:
메시지(c0, c1)를 수취한 검증자 알고리즘(V)은, q가지 존재하는 환(K)의 근원으로부터 랜덤하게 하나의 수ChA를 선택하고, 선택한 수ChA를 증명자 알고리즘(P)에 보낸다.
공정#3:
수ChA를 수취한 증명자 알고리즘(P)은 t1←ChA·r0-t0을 계산한다. 또한, 증명자 알고리즘(P)은 e1←ChA·F(r0)-e0을 계산한다. 그리고, 증명자 알고리즘(P)은 t1 및 e1을 검증자 알고리즘(V)에 보낸다.
공정#4:
t1 및 e1을 수취한 검증자 알고리즘(V)은, 2개의 검증 패턴 중, 어느 쪽의 검증 패턴을 이용할지를 선택한다. 예를 들어, 검증자 알고리즘(V)은, 검증 패턴의 종류를 나타내는 2개의 수치 {0, 1} 중에서 하나의 수치를 선택하고, 선택한 수치를 요구ChB로 설정한다. 이 요구ChB는 증명자 알고리즘(P)에 보내진다.
공정#5:
요구ChB를 수취한 증명자 알고리즘(P)은, 수취한 요구ChB에 따라서 검증자 알고리즘(V)에 돌려 보내는 회답Rsp를 생성한다. ChB=0인 경우, 증명자 알고리즘(P)은 회답Rsp=r0을 생성한다. ChB=1인 경우, 증명자 알고리즘(P)은 회답Rsp=r1을 생성한다. 공정#5에서 생성된 회답Rsp는 검증자 알고리즘(V)에 보내진다.
공정#6:
회답Rsp를 수취한 검증자 알고리즘(V)은, 수취한 회답Rsp를 이용하여 이하의 검증 처리를 실행한다.
ChB=0인 경우, 검증자 알고리즘(V)은 r0←Rsp을 실행한다. 그리고, 검증자 알고리즘(V)은, c0=H(r0, ChA·r0-t1, ChA·F(r0)-e1)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이 검증이 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
ChB=1인 경우, 검증자 알고리즘(V)은 r1←Rsp을 실행한다. 그리고, 검증자 알고리즘(V)은, c1=H1(r1, ChA·(y-F(r1))-G(t1, r1)-e1)의 등호가 성립되는지 여부를 검증한다. 검증자 알고리즘(V)은, 이 검증이 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
이상, 5패스 방식에 관한 효율적인 알고리즘의 구성예에 대하여 설명하였다.
[3-2: 병렬화 알고리즘의 구성예(도 7)]
이어서, 도 7을 참조하면서, 도 6에 나타낸 5패스 방식의 알고리즘을 병렬화하는 방법에 대하여 설명한다. 또한, 키 생성 알고리즘(Gen)의 구성에 대해서는 설명을 생략한다.
상술한 바와 같이, 5패스 방식에 관한 대화 프로토콜을 적용하면, 위증이 성공할 확률을 (1/2+1/q) 이하로 억제할 수 있다. 따라서, 이 대화 프로토콜을 2회 실행하면, 위증이 성공할 확률을 (1/2+1/q)2 이하로 억제할 수 있다. 또한, 이 대화 프로토콜을 N회 실행하면, 위증이 성공할 확률은 (1/2+1/q)N이 되고, N을 충분히 큰 수(예를 들어, N=80)로 하면, 위증이 성공할 확률은 무시할 수 있을 정도로 작아진다.
대화 프로토콜을 복수회 실행하는 방법으로서는, 예를 들어, 메시지, 요구, 회답의 교환을 순차적으로 복수회 반복하는 직렬적인 방법과, 1회분의 교환으로 복수회분의 메시지, 요구, 회답의 교환을 행하는 병렬적인 방법을 생각할 수 있다. 또한, 직렬적인 방법과 병렬적인 방법을 조합한 하이브리드형의 방법도 생각할 수 있다. 여기에서는, 5패스 방식에 관한 상기의 대화 프로토콜을 병렬적으로 실행하는 알고리즘(이하, 병렬화 알고리즘)에 대하여 설명한다.
공정#1:
도 7에 나타낸 바와 같이, 우선, 증명자 알고리즘(P)은, i=1 내지 N에 대하여 처리(1) 내지 처리(4)를 실행한다.
처리(1): 증명자 알고리즘(P)은 랜덤하게 벡터 r0i, t0i∈Kn 및 e0i∈Km을 생성한다.
처리(2): 증명자 알고리즘(P)은 r1i←s-r0i를 계산한다. 이 계산은, 비밀 키(s)를 벡터 r0i에 의해 마스크하는 조작에 상당한다.
처리(3): 증명자 알고리즘(P)은 c0i←H(r0i, t0i, e0i)을 계산한다.
처리(4): 증명자 알고리즘(P)은 c1i←H(r1i, G(t0i, r1i)+e0i)을 계산한다.
i=1 내지 N에 대하여 처리(1) 내지 처리(4)를 실행한 후, 증명자 알고리즘(P)은 해시값 Cmt←H(c01, c11, …, c0N, c1N)을 실행한다. 그리고, 공정#1에서 생성된 해시값 Cmt는 검증자 알고리즘(V)에 보내진다.
공정#2:
해시값 Cmt를 수취한 검증자 알고리즘(V)는, i=1 내지 N 각각에 대해서, q가지 존재하는 환(K)의 근원으로부터 랜덤하게 하나의 수ChAi를 선택하고, 선택한 수ChAi(i=1 내지 N)을 증명자 알고리즘(P)에 보낸다.
공정#3:
수ChAi(i=1 내지 N)을 수취한 증명자 알고리즘(P)은, i=1 내지 N 각각에 대해서, t1i←ChAi·r0i-t0i를 계산한다. 또한, 증명자 알고리즘(P)은, i=1 내지 N 각각에 대해서, e1i←ChAi·F(r0i)-e0i를 계산한다. 계속해서, 증명자 알고리즘(P)은 해시값 d←H(t11, e11, …, t1N, e1N)을 계산한다. 그리고, 증명자 알고리즘(P)은 해시값 d를 검증자 알고리즘(V)에 보낸다.
공정#4:
해시값 d를 수취한 검증자 알고리즘(V)은, i=1 내지 N 각각에 대해서, 2개의 검증 패턴 중, 어느 쪽의 검증 패턴을 이용할지를 선택한다. 예를 들어, 검증자 알고리즘(V)은, 검증 패턴의 종류를 나타내는 2개의 수치 {0, 1} 중에서 하나의 수치를 선택하고, 선택한 수치를 요구ChBi로 설정한다. 요구ChBi(i=1 내지 N)은 증명자 알고리즘(P)에 보내진다.
공정#5:
요구ChBi(i=1 내지 N)을 수취한 증명자 알고리즘(P)은, i=1 내지 N에 대해서, 수취한 요구ChBi에 따라서 검증자 알고리즘(V)에 돌려 보내는 회답Rspi를 생성한다. ChBi=0인 경우, 증명자 알고리즘(P)은 회답Rspi=(r0i, t0i, e0i, c1i)을 생성한다. ChBi=1인 경우, 증명자 알고리즘(P)은 회답Rspi=(r1i, t1i, e1i, c0i)을 생성한다. 공정#5에서 생성된 회답Rspi(i=1 내지 N)은 검증자 알고리즘(V)에 보내진다.
공정#6:
회답Rspi(i=1 내지 N)을 수취한 검증자 알고리즘(V)은, 수취한 회답Rspi(i=1 내지 N)을 이용하여 이하의 처리(1) 및 처리(2)를 실행한다.
처리(1): ChBi=0인 경우, 검증자 알고리즘(V)은 (r0i, t0i, e0i, c1i)←Rspi를 실행한다. 그리고, 검증자 알고리즘(V)은 c0i=H(r0i, t0i, e0i)을 계산한다. 또한, 검증자 알고리즘(V)은 t1i←ChAi·r0i+t0i 및 e1i←ChAi·F(r0i)-e0i를 계산한다. 그리고, 검증자 알고리즘(V)은 (c0i, c1i, t1i, e1i)을 유지한다.
처리(2): ChBi=1인 경우, 검증자 알고리즘(V)은 (r1i, t1i, e1i, c0i)←Rspi를 실행한다. 그리고, 검증자 알고리즘(V)은 c1i=H(r1i, ChAi·(y-F(r1i))-G(t1i, r1i)-e1i)을 계산한다. 그리고, 검증자 알고리즘(V)은 (c0i, c1i, t1i, e1i)을 유지한다.
i=1 내지 N에 대하여 처리(1) 및 처리(2)를 실행한 후, 검증자 알고리즘(V)은 Cmt=H(c01, c11, …, c0N, c1N)의 등호가 성립되는지 여부를 검증한다. 또한, 검증자 알고리즘(V)은 d=H(t11, e11, …, t1N, e1N)의 등호가 성립되는지 여부를 검증한다. 그리고, 검증자 알고리즘(V)은, 이들의 검증이 모두 성공한 경우에 인증 성공을 나타내는 값 1을 출력하고, 검증에 실패가 있는 경우에 인증 실패를 나타내는 값 0을 출력한다.
이상, 5패스 방식에 관한 효율적인 병렬화 알고리즘의 구성예에 대하여 설명하였다.
<4: 전자 서명 방식으로의 변형>
이어서, 상기의 공개 키 인증 방식을 전자 서명 방식으로 변형하는 방법을 소개한다.
공개 키 인증 방식의 모델에서의 증명자를 전자 서명 방식에서의 서명자에 대응시키면, 증명자만이 검증자를 납득시킬 수 있다는 점에서, 전자 서명 방식의 모델과 근사하다는 것이 용이하게 이해될 것이다. 이러한 생각에 기초하여, 상술한 공개 키 인증 방식을 전자 서명 방식으로 변형하는 방법에 대하여 설명한다.
[4-1: 3패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형(도 8)]
우선, 3패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형에 대하여 설명한다.
도 8에 나타낸 바와 같이, 3패스 방식에 관한 효율적인 알고리즘(예를 들어, 도 5를 참조)은 3회의 대화 및 4개의 공정#1 내지 공정#4로 표현된다.
공정#1은, i=1 내지 N에 대해서, ai=(r0i, t0i, e0i, r1i, t1i, e1i, c0i, c1i, c2i)을 생성하는 처리(1)과, Cmt←H(c01, c11, c21, …, c0N, c1N, c2N)을 계산하는 처리(2)로 구성된다. 공정#1에서 증명자 알고리즘(P)에 의해 생성된 Cmt는 검증자 알고리즘(V)에 보내진다.
공정#2는, Ch1, …, ChN을 선택하는 처리로 구성된다. 공정#2에서 검증자 알고리즘(V)에 의해 선택된 Ch1, …, ChN은 증명자 알고리즘(P)에 보내진다.
공정#3은, Ch1, …, ChN 및 a1, …, aN을 사용하여 Rsp1, …, RspN을 생성하는 처리로 구성된다. 이 처리를 Rspi←Select(Chi, ai)이라고 표현한다. 공정#3에서 증명자 알고리즘(P)에 의해 생성된 Rsp1, …, RspN은 검증자 알고리즘(V)에 보내진다.
공정#4는, Ch1, …, ChN 및 Rsp1, …, RspN을 사용해서 c01, c11, c21, …, c0N, c1N, c2N을 재생하는 처리(1)과, 재생한 c01, c11, c21, …, c0N, c1N, c2N을 사용하여 Cmt=H(c01, c11, c21, …, c0N, c1N, c2N)을 검증하는 처리(2)로 구성된다.
상기의 공정#1 내지 공정#4으로 표현되는 공개 키 인증 방식의 알고리즘은, 도 8에 나타낸 바와 같은 서명 생성 알고리즘(Sig) 및 서명 검증 알고리즘(Ver)으로 변형된다.
(서명 생성 알고리즘(Sig))
우선, 서명 생성 알고리즘(Sig)의 구성에 대하여 설명한다. 서명 생성 알고리즘(Sig)은 이하의 처리(1) 내지 처리(5)로 구성된다.
처리(1): 서명 생성 알고리즘(Sig)은 ai=(r0i, t0i, e0i, r1i, t1i, e1i, c0i, c1i, c2i)을 생성한다.
처리(2): 서명 생성 알고리즘(Sig)은 Cmt←H(c01, c11, c21, …, c0N, c1N, c2N)을 계산한다.
처리(3): 서명 생성 알고리즘(Sig)은 (Ch1, …, ChN)←H(M, Cmt)을 계산한다. 이 M은 서명을 부여하는 문서이다.
처리(4): 서명 생성 알고리즘(Sig)은 Rspi←Select(Chi, ai)을 계산한다.
처리(5): 서명 생성 알고리즘(Sig)은 (Cmt, Rsp1, …, RspN)을 서명으로 설정한다.
(서명 검증 알고리즘(Ver))
이어서, 서명 검증 알고리즘(Ver)의 구성에 대하여 설명한다. 서명 검증 알고리즘(Ver)은 이하의 처리(1) 내지 처리(3)로 구성된다.
처리(1): 서명 검증 알고리즘(Ver)은 (Ch1, …, ChN)←H(M, Cmt)을 계산한다.
처리(2): 서명 검증 알고리즘(Ver)은 Ch1, …, ChN 및 Rsp1, …, RspN을 사용해서 c01, c11, c21, …, c0N, c1N, c2N을 생성한다.
처리(3): 서명 검증 알고리즘(Ver)은, 재생한 c01, c11, c21, …, c0N, c1N, c2N을 사용하여 Cmt=H(c01, c11, c21, …, c0N, c1N, c2N)을 검증한다.
이상 설명한 바와 같이, 공개 키 인증 방식의 모델에서의 증명자를 전자 서명 방식에서의 서명자에 대응시킴으로써, 공개 키 인증 방식의 알고리즘을 전자 서명 방식의 알고리즘으로 변형되는 것이 가능해진다.
[4-2: 5패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형(도 9)]
이어서, 5패스의 공개 키 인증 방식에서 전자 서명 방식으로의 변형에 대하여 설명한다.
도 9에 나타낸 바와 같이, 5패스 방식에 관한 효율적인 알고리즘(예를 들어, 도 7을 참조)은 5회의 대화 및 6개의 공정#1 내지 공정#6으로 표현된다.
공정#1은, i=1 내지 N에 대해서, ai=(r0i, t0i, e0i, r1i, t1i, e1i, c0i, c1i)을 생성하는 처리(1)과, Cmt←H(c01, c11, …, c0N, c1N)을 계산하는 처리(2)로 구성된다. 공정#1에서 증명자 알고리즘(P)에 의해 생성된 Cmt는 검증자 알고리즘(V)에 보내진다.
공정#2는, ChA1, …, ChAN을 선택하는 처리로 구성된다. 공정#2에서 검증자 알고리즘(V)에 의해 선택된 ChA1, …, ChAN은 증명자 알고리즘(P)에 보내진다.
공정#3은, i=1 내지 N에 대해서, bi=(t1i, e1i)을 생성하는 처리 및 d=H(t11, e11, …, t1N, e1N)을 생성하는 처리로 구성된다. 공정#3에서 증명자 알고리즘(P)에 의해 생성된 d는 검증자 알고리즘(V)에 보내진다.
공정#4는, ChB1, …, ChBN을 선택하는 처리로 구성된다. 공정#4에서 검증자 알고리즘(V)에 의해 선택된 ChB1, …, ChBN은 증명자 알고리즘(P)에 보내진다.
공정#5는, ChB1, …, ChBN, a1, …, aN, b1, …, bN을 사용하여 Rsp1, …, RspN을 생성하는 처리로 구성된다. 이 처리를 Rspi←Select(ChBi, ai, bi)이라고 표현한다. 공정#5에서 증명자 알고리즘(P)에 의해 생성된 Rsp1, …, RspN은 검증자 알고리즘(V)에 보내진다.
공정#6은, ChA1, …, ChAN, ChB1, …, ChBN, Rsp1, …, RspN을 사용해서 c01, c11, …, c0N, c1N, t11, e11, …, t1N, e1N을 재생하는 처리와, 재생한 c01, c11, …, c0N, c1N을 사용하여 Cmt=H(c01, c11, …, c0N, c1N)을 검증하는 처리와, d=H(t11, e11, …, t1N, e1N)을 검증하는 처리로 구성된다.
상기의 공정#1 내지 공정#6으로 표현되는 공개 키 인증 방식의 알고리즘은, 도 9에 나타낸 바와 같은 서명 생성 알고리즘(Sig) 및 서명 검증 알고리즘(Ver)으로 변형된다.
(서명 생성 알고리즘(Sig))
우선, 서명 생성 알고리즘(Sig)의 구성에 대하여 설명한다. 서명 생성 알고리즘(Sig)은 이하의 처리(1) 내지 처리(7)로 구성된다.
처리(1): 서명 생성 알고리즘(Sig)은 ai=(r0i, t0i, e0i, r1i, t1i, e1i, c0i, c1i)을 생성한다.
처리(2): 서명 생성 알고리즘(Sig)은 Cmt←H(c01, c11, …, c0N, c1N)을 계산한다.
처리(3): 서명 생성 알고리즘(Sig)은 (ChA1, …, ChAN)←H(M, Cmt)을 계산한다. 이 M은 서명을 부여하는 문서이다.
처리(4): 서명 생성 알고리즘(Sig)은, i=1 내지 N에 대해서, bi=(t1i, e1i)을 생성한다. 또한, 서명 생성 알고리즘(Sig)은 d=H(t11, e11, …, t1N, e1N)을 산출한다.
처리(5): 서명 생성 알고리즘(Sig)은 (ChB1, …, ChBN)←H(M, Cmt, ChA1, …, ChAN, d)을 계산한다. 또한, (ChB1, …, ChBN)←H(ChA1, …, ChAN, d)이라고 변형되어도 된다.
처리(6): 서명 생성 알고리즘(Sig)은 Rspi←Select(ChBi, ai, bi)을 계산한다.
처리(7): 서명 생성 알고리즘(Sig)은 (Cmt, d, Rsp1, …, RspN)을 전자 서명으로 설정한다.
(서명 검증 알고리즘(Ver))
이어서, 서명 검증 알고리즘(Ver)의 구성에 대하여 설명한다. 서명 검증 알고리즘(Ver)은 이하의 처리(1) 내지 처리(4)로 구성된다.
처리(1): 서명 검증 알고리즘(Ver)은 (ChA1, …, ChAN)←H(M, Cmt)을 계산한다.
처리(2): 서명 검증 알고리즘(Ver)은 (ChB1, …, ChBN)←H(M, Cmt, ChA1, …, ChAN, d)을 계산한다. 또한, 서명 검증 알고리즘(Ver)이 실행하는 처리(5)에 있어서, (ChB1, …, ChBN)←H(ChA1, …, ChAN, d)이라고 변형된 경우, 서명 검증 알고리즘(Ver)은 (ChB1, …, ChBN)←H(ChA1, …, ChAN, d)을 계산한다.
처리(3): 서명 검증 알고리즘(Ver)은, ChA1, …, ChAN, ChB1, …, ChBN, Rsp1, …, RspN을 사용해서 t11, e11, …, t1N, e1N, c01, c11, …, c0N, c1N을 생성한다.
처리(4): 서명 검증 알고리즘(Ver)은, 재생한 c01, c11, …, c0N, c1N을 사용하여 Cmt=H(c01, c11, …, c0N, c1N) 및 d=H(t11, e11, …, t1N, e1N)을 검증한다.
이상 설명한 바와 같이, 공개 키 인증 방식의 모델에서의 증명자를 전자 서명 방식에서의 서명자에 대응시킴으로써, 공개 키 인증 방식의 알고리즘을 전자 서명 방식의 알고리즘으로 변형하는 것이 가능해진다.
<5: 서명 검증에 필요로 하는 메모리량의 삭감 방법에 대해서>
그런데, 상술한 전자 서명 방식의 알고리즘에 있어서는, 서명 검증 알고리즘(Ver)이 전자 서명 전체를 수신한 후에 서명 검증의 처리를 실행했었다. 그러나, 상술한 전자 서명 방식의 경우, 전자 서명의 데이터 크기가 비교적 크다. 그로 인해, RFID(Radio Frequency IDentification) 등, 적은 메모리 용량밖에 갖고 있지 않은 디바이스를 사용하여 인증을 행할 경우에는, 메모리의 빈 용량이나 인증 처리중의 메모리 사용률 등에 신경 쓸 필요가 있었다. 또한, 충분한 메모리 용량을 갖고 있지 않은 디바이스를 이용할 경우, 인증을 행할 수 없을 경우도 상정된다. 따라서, 본건 발명자는, 서명 검증에 필요로 하는 메모리량의 삭감 방법을 고안하였다.
[5-1: 해시 함수의 구조에 대해서(도 10)]
우선, 본건 발명자는 해시 함수의 구조에 주목하였다. 대부분의 경우, 해시 함수는, 입력을 블록 단위로 구획하고, 블록 단위로 순차 처리를 진행시키는 구조를 갖고 있다. 예를 들어, SHA-1의 경우, 해시 함수는, 도 10에 나타낸 바와 같은 구조를 갖고 있다. 도 10에 나타낸 해시 함수는, 패딩이 완료된 입력(M)을 Z개의 블록(m1, …, mZ)으로 구획하고, 인덱스 j를 인크리먼트하면서, 순차적으로 블록 mj를 초기값 IV 또는 중간값 CVj와 함께 소정의 함수CF에 작용시켜서 해시값을 생성한다. 따라서, 중간값 CVj가 얻어진 시점에서, 그 이전에 이용한 블록은 불필요해진다. 따라서, 이 특성을 이용하여 알고리즘의 실행에 필요한 메모리량을 효과적으로 삭감하는 구조(이하, 메모리 삭감 방법)를 고안하였다. 이하, 이 구조를 상술한 전자 서명 방식에 적용하는 방법에 대하여 설명한다.
[5-2: 3패스 방식에 기초하는 전자 서명 방식으로의 적용예(도 12)]
우선, 도 8에 나타낸 3패스 방식에 기초하는 전자 서명 방식의 알고리즘에 상기의 메모리 삭감 방법을 적용하는 방법에 대하여 설명한다.
(통상의 실장 방법: 도 11)
통상, 상술한 전자 서명 방식에 관한 서명 검증 알고리즘(Ver)은, 도 11에 나타낸 바와 같이, 전자 서명을 구성하는 (Cmt, Rsp1, …, RspN)을 한번에 수신한다(S101). 계속해서, 서명 검증 알고리즘(Ver)은 (Ch1, …, ChN)←H(M, Cmt)을 실행한다(S102). 계속해서, 서명 검증 알고리즘(Ver)은 (c01, c11, c21, …, c0N, c1N, c2N)←Reproduce(Ch1, …, ChN; Rsp1, …, RspN)을 실행한다(S103). 계속해서, 서명 검증 알고리즘(Ver)은, Cmt=H(c01, c11, c21, …, c0N, c1N, c2N)을 검증하고(S104), 서명 검증에 관한 일련의 처리를 종료한다.
(메모리 삭감 방법: 도 12)
통상의 실장 방법의 경우, 도 11의 스텝 S101과 같이, 한번에 전자 서명을 수신하면, 스텝 S103의 처리가 완료될 때까지 (Rsp1, …, RspN)을 유지해 두기 위한 메모리가 필요해진다. 그러나, 도 5의 알고리즘 구성에서 알 수 있는 바와 같이, 스텝 S103에서 실행하는 (c0i, c1i, c2i)의 재생에는 (Chi; Rspi) 이외의 정보를 이용하지 않는다. 또한, 도 10에 나타낸 해시 함수의 구조를 고려하면, 스텝 S104에서 실행되는 해시 함수의 계산은 블록 단위로 분할하여 실행할 수 있는 것을 알 수 있다. 따라서, 서명 검증에 관한 처리의 구성을 도 12에 나타낸 바와 같은 구성으로 개량한다.
도 12에 나타낸 구성의 경우, 서명 검증 알고리즘(Ver)은, 우선, 전자 서명에 포함되는 Cmt만을 수신한다(S111). 계속해서, 서명 검증 알고리즘(Ver)은 (Ch1, …, ChN)←H(M, Cmt)을 실행한다(S112). 계속해서, 서명 검증 알고리즘(Ver)은, i=1 내지 N에 대해서, i를 인크리먼트시키면서 순차적으로 스텝 S113 내지 S115의 처리를 실행한다.
스텝 S113에 있어서, 서명 검증 알고리즘(Ver)은 Rspi를 수신한다(S113). 계속해서, 서명 검증 알고리즘(Ver)은, 수신한 Rspi를 사용하여 (c0i, c1i, c2i)←Reproduce(Chi; Rspi)을 실행한다(S114). 스텝 S114의 처리를 실행한 후, Chi 및 Rspi는 불필요해진다. 따라서, 서명 검증 알고리즘(Ver)은, 스텝 S114의 처리를 실행한 후에 Chi 및 Rspi를 메모리로부터 소거한다.
계속해서, 서명 검증 알고리즘(Ver)은 tmpi←Hi(tmpi-1; c0i, c1i, c2i)을 실행한다(S115). 또한, 함수Hi는, 해시 함수H의 내부에서 c0i, c1i, c2i까지 계산했을 때에 생성되는 중간값을 출력하는 함수이다. 실제로는 선택한 해시 함수에 따라서 함수Hi의 입력 크기는 상이하므로 필요에 따라서 비트를 부가하는 등의 적절한 입력 길이의 보정이 행해진다. 함수Hi를 사용하면, 해시 함수H는, 이하에 나타내는 처리(1) 내지 처리(3)으로 구성된 알고리즘에 의해 표현된다. 그리고, tmpN이 해시 함수H의 최종적인 출력(해시값)이 된다. 실제로는 해시 함수의 사양에 따라서 최종 처리에서 패딩의 추가 처리를 행한다.
처리(1): tmp0←빈 문자열
처리(2):
for i=1 to N
tmpi←Hi(tmpi-1; c0i, c1i, c2i)
end for
처리(3): output tmpN
i=1 내지 N에 대해서, 스텝 S113 내지 S115의 처리를 실행한 후, 서명 검증 알고리즘(Ver)은 Cmt=tmpN이 성립되는지 여부를 검증하고(S116), 서명 검증에 관한 일련의 처리를 종료한다. 상기한 바와 같이, 서명 검증 알고리즘(Ver)은, 스텝 S113 내지 S115의 처리를 반복 실행하는 과정에서 불필요해진 정보를 메모리로부터 소거한다. 그로 인해, 서명 검증에 필요로 하는 메모리량은 최소한으로 억제된다. 그 결과, 적은 메모리 용량밖에 갖고 있지 않은 디바이스에서도 상기의 서명 검증이 가능해진다.
[5-3: 5패스 방식에 기초하는 전자 서명 방식에의 적용예(도 14)]
이어서, 도 9에 나타낸 5패스 방식에 기초하는 전자 서명 방식의 알고리즘에 상기의 메모리 삭감 방법을 적용하는 방법에 대하여 설명한다.
(통상의 실장 방법: 도 13)
통상, 상술한 전자 서명 방식에 관한 서명 검증 알고리즘(Ver)은, 도 13에 나타낸 바와 같이, 전자 서명을 구성하는 (Cmt, d, Rsp1, …, RspN)을 한번에 수신한다(S121). 계속해서, 서명 검증 알고리즘(Ver)은 (ChA1, …, ChAN)←H(M, Cmt)을 실행한다(S122). 계속해서, 서명 검증 알고리즘(Ver)은 (ChB1, …, ChBN)←H(M, Cmt, ChA1, …, ChAN, d)을 실행한다(S123). 계속해서, 서명 검증 알고리즘(Ver)은 (c01, c11, …, c0N, c1N, d11, e11, …, d1N, e1N)←Reproduce(ChA1, …, ChAN, ChB1, …, ChBN; Rsp1, …, RspN)을 실행한다(S124). 계속해서, 서명 검증 알고리즘(Ver)은, Cmt=H(c01, c11, …, c0N, c1N)과 d=H(d11, e11, …, d1N, e1N)을 검증하고(S125), 서명 검증에 관한 일련의 처리를 종료한다.
(메모리 삭감 방법: 도 14)
도 13의 스텝 S121과 같이, 한번에 전자 서명을 수신하면, 스텝 S124의 처리가 완료될 때까지 (Rsp1, …, RspN)을 유지해 두기 위한 메모리가 필요해진다. 그러나, 도 7의 알고리즘 구성에서 알 수 있는 바와 같이, 스텝 S124에서 실행하는 (c0i, c1i, d1i, e1i)의 재생에는 (ChAi, ChBi; Rspi) 이외의 정보를 이용하지 않는다. 또한, 도 10에 나타낸 해시 함수의 구조를 고려하면, 스텝 S125에서 실행되는 해시 함수의 계산은 블록 단위로 분할하여 실행할 수 있는 것을 알 수 있다. 따라서, 서명 검증에 관한 처리의 구성을 도 14에 나타낸 바와 같은 구성으로 개량한다.
도 14에 나타낸 구성의 경우, 서명 검증 알고리즘(Ver)은, 우선, 전자 서명에 포함되는 Cmt만을 수신한다(S131). 계속해서, 서명 검증 알고리즘(Ver)은 (ChA1, …, ChAN)←H(M, Cmt)을 실행한다(S132).
계속해서, 서명 검증 알고리즘(Ver)은 d를 수신한다(S133). 계속해서, 서명 검증 알고리즘(Ver)은 수신한 d를 사용하여 (ChB1, …, ChBN)←H(M, Cmt, ChA1, …, ChAN, d)을 실행한다(S134). 스텝 S134의 처리를 실행한 후, d는 불필요해진다. 따라서, 서명 검증 알고리즘(Ver)은, 스텝 S134의 처리를 실행한 후에 d를 메모리로부터 소거한다. 계속해서, 서명 검증 알고리즘(Ver)은, i=1 내지 N에 대해서, i를 인크리먼트시키면서 순차적으로 스텝 S135 내지 S137의 처리를 실행한다.
스텝 S135에 있어서, 서명 검증 알고리즘(Ver)은 Rspi를 수신한다(S135). 계속해서, 서명 검증 알고리즘(Ver)은 수신한 Rspi를 사용하여 (c0i, c1i, t1i, e1i)←Reproduce(ChAi, ChBi, Rspi)을 실행한다(S136). 스텝 S136의 처리를 실행한 후, ChAi, ChBi 및 Rspi는 불필요해진다. 따라서, 서명 검증 알고리즘(Ver)은, 스텝 S136의 처리를 실행한 후에 ChAi, ChBi 및 Rspi를 메모리로부터 소거한다.
계속해서, 서명 검증 알고리즘(Ver)은 tmpi←Hi(tmpi-1; c0i, c1i)과 tmpi'←Hi(tmpi-1'; t1i, e1i)을 실행한다(S137). i=1 내지 N에 대해서, 스텝 S135 내지 S137의 처리를 실행한 후, 서명 검증 알고리즘(Ver)은, Cmt=tmpN과 d=tmpN'이 성립하는지 여부를 검증하고(S138), 서명 검증에 관한 일련의 처리를 종료한다. 상기한 바와 같이, 서명 검증 알고리즘(Ver)은, 스텝 S135 내지 S137의 처리를 반복 실행하는 과정에서 불필요해진 정보를 메모리로부터 소거한다. 그로 인해, 서명 검증에 필요로 하는 메모리량은 최소한으로 억제된다. 그 결과, 적은 메모리 용량밖에 갖고 있지 않은 디바이스에서도 상기의 서명 검증이 가능해진다.
이상, 서명 검증에 필요로 하는 메모리량의 삭감 방법에 대하여 설명하였다.
<6: 2진수의 난수열로부터 3진수의 난수열을 추출하는 방법에 대해서>
그런데, 3패스 방식에 기초하는 공개 키 인증 방식의 알고리즘에 있어서, 3진수의 균등 난수를 N개 이상 생성하는 장면이 존재한다. 그러나, 3진수의 균등 난수를 생성하는 우수한 난수 생성기는 일반적이지 않다. 그로 인해, 2진수의 균등 난수를 생성하는 우수한 난수 생성기를 사용해서 3진수의 균등 난수를 생성하는 방법을 생각할 필요가 있다. 따라서, 본건 발명자는, 2진수의 균등 난수로부터 3진수의 균등 난수를 효율적으로 생성하는 방법을 고안하였다. 이하, 이 방법에 대하여 상세하게 설명한다. 또한, 이하의 설명에서 l진 표현(l은 2 또는 3)으로 표현된 하나의 수를 1심볼이라고 세기로 한다.
[6-1: 추출 방법#1(2비트 구획)(도 15)]
우선, 도 15를 참조하면서, M비트의 2진수를 2비트씩 구획해서 3진수를 추출하는 방법(이하, 추출 방법#1)을 소개한다. 도 15에 나타낸 바와 같이, 2진 표현의 난수열을 2비트씩 구획하면, M/2개의 2비트의 난수가 얻어진다. 예를 들어, 「00」을 3진수의 「0」, 「01」을 3진수의 「1」, 「10」을 3진수의 「2」에 대응시키면, 2비트 단위의 2진 표현의 난수열로부터 3진수의 난수열을 얻을 수 있다. 단, 2비트의 값 「11」은 제외한다. 즉, 추출 방법#1은, 2진수 2심볼로 표현되는 22가지의 수 중에서 3진수 1심볼로 표현되는 31가지의 수를 추출하는 방법이다. 따라서, N개 이상의 3진수를 추출할 수 없을 확률P1은, 하기의 식(13)과 같이 된다.
Figure pct00011
[6-2: 추출 방법#2(구획 없음)(도 16)]
이어서, 도 16을 참조하면서, 2진수 M심볼의 난수를 구획하지 않고 이용해서3진수 L심볼의 난수를 추출하는 방법(이하, 추출 방법#2)을 소개한다. 단, L은 3L≤2M이 되는 최대의 정수이다. 2진수 M심볼로 표현 가능한 수는 2M가지 존재한다. 한편, 3진수 L심볼로 표현 가능한 수는 3L가지밖에 존재하지 않는다. 그로 인해, 2진수 M심볼로 표현되는 2M가지의 수 중, 2M-3L가지의 수는 3진 표현의 난수로서 이용되지 않는다. 따라서, N개 이상의 3진수를 추출할 수 없을 확률P2는, 하기의 식(14)와 같이 된다.
Figure pct00012
[6-3: 추출 방법#3(k비트 구획)(도 17)]
상기의 추출 방법#1은, 최소의 구획 단위로 2진 표현의 난수열을 구획하는 방법이다. 한편, 상기의 추출 방법#2는, (M비트 구획으로 생각되므로) 최대의 구획 단위로 2진 표현의 난수열을 구획하는 방법이다. 상기의 식(13) 및 식(14)에서 알 수 있는 바와 같이, 구획하는 길이에 따라서 N개 이상의 3진수를 추출할 수 없을 확률은 상이하다. 이와 관련하여, 도 17에 나타낸 바와 같이, k비트 단위로 2진 M심볼의 난수열을 구획한 경우, N개 이상의 3진수를 추출할 수 없을 확률P3은, 하기의 식(15)와 같이 된다.
Figure pct00013
N개 이상의 3진수를 추출할 수 없을 확률P3을 최소화할 수 있으면, 가장 효율적으로 3진 표현의 난수열을 추출할 수 있게 된다. 예를 들어, M=512, N=140인 경우, k=8일 때에 확률P3이 최소가 된다.
(6-3-1: 기본 구성(도 18))
여기서, 도 18을 참조하면서, 2진 M심볼의 난수열로부터 3진 L심볼의 난수열을 추출하는 처리의 흐름에 대하여 설명한다. 도 18에 나타낸 바와 같이, 우선, 2진 M심볼의 난수열이 생성된다(S201). 계속해서, 2진 M심볼의 난수열이 k비트 단위로 구획된다(S202). 계속해서, k비트 단위로 구획된 비트열X2k 중, X2k≤3L이 되는 비트열이 추출된다(S203). 계속해서, 추출된 비트열이 3진수 표현으로 출력되고(S204), 일련의 처리가 종료된다.
(6-3-2: 추가 추출 방법(도 19))
상기의 식(15)로 표현되는 확률P3이 최소가 되는 구획 길이(k)를 산출하고, 도 18에 나타낸 알고리즘을 실행함으로써, 2진 표현의 난수열로부터 3진 표현의 난수열을 효율적으로 추출하는 것이 가능해진다. 그러나, 본건 발명자는, 도 18의 스텝 S204에서 X2k>3L이 되는 비트열이 이용되지 않는 점에 주목하여, 3진 표현의 난수열을 보다 효율적으로 추출하는 방법을 고안하였다. 이하, 이 방법에 대해서 도 19를 참조하면서 설명한다.
이 방법은, 도 18의 스텝 S204에서 추출되지 않은 비트열을 이용하여 3진 표현의 심볼열을 추출하는 방법이다. 도 19에 나타낸 바와 같이, 우선, 도 18의 스텝 S204에서 추출되지 않은 X2k>3L이 되는 비트열의 조(예를 들어, 비트열의 조를 y1y2…yN'이라고 표현하면, 개개의 비트열yi는 3L≤yi<2k)가 추출된다(S211). 계속해서, 추출한 비트열yi로부터 각각 3L이 감산되고, 새로운 비트열의 조(예를 들어, 새로운 비트열의 조를 z1z2…zN'이라고 표현하면, 개개의 비트열 zi=yi-3L은 0≤zi<2k-3L)가 산출된다(S212).
계속해서, 새로운 비트열의 조로부터 비트열X가 X<3L'로 되는 것이 추출된다(S213). 단, L'는 3L'≤2k-3L이 되는 최대의 정수이다. 계속해서, 스텝 S213에서 추출된 비트열이 3진 표현으로 출력되고(S214), 일련의 처리가 종료된다. 이 알고리즘을 적용함으로써, 확률 3L'/(2k-3L)로 새롭게 L'개의 3진수를 추출하는 것이 가능해진다. 또한, 이 방법을 재귀적으로 사용함으로써 더욱 많은 3진수를 추출할 수 있다. 즉, 스텝 S213에서 비트열X가 X≥3L'이 된 비트열로부터 마찬가지로 하여3진수를 추출할 수 있다.
이상, 2진수의 균등 난수로부터 3진수의 균등 난수를 효율적으로 생성하는 방법에 대하여 설명하였다.
<7: 다변수 다항식의 계수를 효율적으로 대입하는 방법에 대해서>
그런데, 지금까지는 다변수 다항식을 증명자(또는 서명자)와 검증자의 사이에서 공유하는 방법에 대하여 구체적으로 명시하지 않았다. 다변수 다항식을 공유하는 방법으로서는, 다변수 다항식의 계수(난수)를 생성할 때에 사용하는 시드를 양자에서 공유하는 방법을 생각할 수 있다. 그러나, 공유하고 있는 시드를 이용하여 생성한 난수를 계수에 적용시키는 순서를 양자에서 공유하지 않는 한, 다변수 다항식을 공유한 것으로는 되지 않는다.
[7-1: 기본적인 결정]
따라서, 증명자(또는 서명자)와 검증자의 사이에서, 공유하고 있는 시드를 사용하여 생성한 난수열을, 어느 순서로 다변수 다항식에 적용시킬지에 대하여 기본적인 결정을 행한다. 그리고, 다변수 다항식을 이용할 때, 이 기본적인 결정에 따라서 난수열을 다변수 다항식에 적용시킨다. 이러한 방법을 사용하면, 증명자(또는 서명자)와 검증자의 사이에서 다변수 다항식을 공유하게 된다.
[7-2: 데이터의 구조화]
단, 다변수 다항식을 구성하는 계수의 수는 방대하다. 하나의 계수가 1비트단위로 표현되어 있는 경우, 다변수 다항식을 표현하기 위해서 최저 몇만비트 이상의 데이터가 필요해진다. 그로 인해, 수를 다변수 다항식의 계수에 대입하는 처리의 부하는 매우 높다. 따라서, 본건 발명자는, 다변수 다항식의 계수를 소정의 단위로 구조화하여 계수에의 대입 처리를 효율화하는 방법(구조화 방법#1 및 #2)을 고안하였다. 또한, 본건 발명자는, 동일한 다변수 다항식의 계수에 대하여 복수회 대입 처리를 실행할 경우, 그 처리 효율을 향상시키는 방법(구조화 방법#3)을 고안하였다. 이하, 이들의 방법에 대하여 상세하게 설명한다.
(7-2-1: 구조화 방법#1(도 20))
우선, 구조화 방법#1에 대하여 설명한다. 구조화 방법#1은, 도 20에 나타낸 바와 같이, 다변수 다항식을 구성하는 동일한 종류의 항의 계수를 하나의 데이터 구조로서 통합하는 방법이다. 도 20의 예에서는, 계수 a1IJ 내지 amIJ가 데이터 구조A로서 통합되고, 계수 b1I 내지 bmI가 데이터 구조B로서 통합되어 있다.
구조화 방법#1을 적용하지 않을 경우, m개의 n변수 다항식에 대한 계수의 대입은, 다음과 같은 알고리즘 (예1)에 의해 행해진다. 예1의 경우, 1비트의 AND 연산(&)을 2×N×(N-1)×M/2회 실행할 필요가 있다. 또한, 1비트의 XOR 연산(^)을 N×(N-1)×M/2회 실행할 필요가 있다.
(예1)
for L=1 to M
for I=1 to N
for J=I to N
[f의 L비트째]^=[aIJL]&[x의 I비트째]&[x의 J비트째];
end for
end for
end for
output f;
한편, 도 20에 나타낸 바와 같이 계수를 구조화하고, 생성한 난수를 다변수 다항식의 계수로서 1부씩 차차 적용해갈 경우, 계수의 대입 알고리즘은 (예2)와 같이 된다. 예2의 경우, L비트의 AND 연산(&)을 2×N×(N-1)/2회, M비트의 XOR 연산(^)을 N×(N-1)/2회만 실행하면 된다. 또한, aIJ (1~M)은 각각 루프의 타이밍에서 생성된다. 또한, 계수를 돌려 써도 된다. 예를 들어, N(N-1)/2회의 루프를 실행할 때, [aIJ(1~M)]을 매회 생성하지 않고, L회에 한번만 생성하도록 해도 된다. 또한, M회의 루프 중, [aIJ(1~M)]을 1비트씩 로테이션하면서 이용해도 된다.
(예2)
for I=1 to N
for J=I to N
[f의 1 내지 M비트째]^=[aIJ(1~M)]&[x의 I비트째]&[x의 J비트째];
end for
end for
output f;
또한, 도 20에 나타낸 바와 같이 계수를 구조화하고, 다변수 다항식의 계수를 적용한 중간의 결과를 테이블에 유지하도록 해도 된다. 이 경우, 계수의 대입 알고리즘은 (예3)과 같이 된다. 또한, 배열 aIJ[0][0] 내지 aIJ[2k-1][2k-1]에는, 각각 aIJ[x1, …, xk][z1, …, zk]=(a(k(I-1)+1)(k(J-1)+1)&x1&z1)^…^(a(k(I-1)+1)(k(J-1)+k)&x1&zk)^…^(a(k(I-1)+k)(k(J-1)+1)&xk&z1)^…^(a(k(I-1)+k)(k(J-1)+k)&xk&zk)이 저장되어 있다. 예3의 경우, L비트의 XOR 연산(^)을 (N/k)(N/k-1)/2회만 실행하면 된다. 단, (예2)의 알고리즘에 비하면, 필요한 메모리량, 22k/k2배가 된다.
예를 들어, k=1일 때, L비트 XOR 연산이 120*119/2=7140회, 필요한 메모리량이 (예2)의 22=4배, 루프 횟수는 변화 없음이 된다. 또한, k=2일 때, L비트 XOR 연산이 60*59/2=1770회, 필요한 메모리량이 24/4=4배, 루프 횟수가 1/4이 된다. k=4일 때, L비트 XOR 연산이 30*29/2=435회, 필요한 메모리량이 28/42=16배, 루프 횟수가 1/16.4가 된다. k=6일 때, L비트 XOR 연산이 20*19/2=190회, 필요한 메모리량이 212/62=114배, 루프 횟수가 1/37.6이 된다. k=8일 때, L비트 XOR 연산이 15*14/2=135회, 필요한 메모리가 216/82=1024배, 루프 횟수가 1/52.9가 된다.
(예3)
for I=1 to N/k
for J=I to N/k
[f의 1 내지 M비트째]^=aIJ(1~M)[x의 k(I-1)+1 내지 k비트째][x의 k(J-1)+1 내지 k비트째];
end for
end for
output f;
이상, 구조화 방법#1에 관한 구체적인 계수의 대입 알고리즘에 대하여 설명하였다. 이러한 구성에 의해, 알고리즘을 실행할 때에 처리의 고속화를 기대할 수 있다.
(7-2-2: 구조화 방법#2(도 21))
이어서, 구조화 방법#2에 대하여 설명한다. 구조화 방법#2는, 도 21에 나타낸 바와 같이, 다변수 다항식을 2차 형식으로 표현하고, 2차 형식의 행 또는 열을 하나의 데이터 구조로서 통합하는 방법이다. 도 21의 예에서는, 행 방향으로 데이터 구조가 통합되어 있다.
도 21에 나타낸 바와 같이 계수를 구조화하고, 생성한 난수를 다변수 다항식의 계수로서 1부씩 차차 적용해갈 경우, 계수의 대입 알고리즘은 (예4)와 같이 된다. 예4의 경우, N비트의 AND 연산(&)을 (N+1)×M회, N비트의 XOR 연산(^)을 N×M회, 함수Q의 연산을 M회만 실행하면 된다.
(예4)
for I=1 to N
T^=AI&[x의 I 비트째];
end for
T&=x;
output Q (T);
Q(z){
z=z^(z>>1);
z=z^(z>>2);
z=z^(z>>4);
z=z^(z>>8);
···
z=z^(z>>2Log(N));
return z&1;
}
또한, 도 21에 나타낸 바와 같이 계수를 구조화하고, 다변수 다항식의 계수를 적용한 중간의 결과를 테이블에 유지하도록 해도 된다. 이 경우, 계수의 대입 알고리즘은 (예5)와 같이 된다. 또한, 배열 AI[0] 내지 AI[2k-1]에는, 각각 AI[x1, …, xk]=(A(k(I-1)+1)&x1)^…^(A(k(I-1)+k)&xk)이 저장되어 있다. 예5의 경우, N비트의 XOR 연산(^)을 (N/k)×M, N비트의 함수Q의 연산을 M회만 실행하면 된다. 단, (예4)의 알고리즘에 비하면, 필요한 메모리량은 2k/k배가 된다.
예를 들어, k=1일 때, N비트 XOR 연산이 120회, 필요한 메모리량이 (예4)의 2배, 루프 횟수는 변화 없음이 된다. 또한, k=4일 때, N비트 XOR 연산이 30회, 필요한 메모리량이 24/4=4배, 루프 횟수가 1/4이 된다. k=8일 때, N비트 XOR 연산이 15회, 필요한 메모리가 28/8=32배, 루프 횟수가 1/8이 된다. k=16일 때, N비트 XOR 연산이 8회, 필요한 메모리가 216/16=4096배, 루프 횟수가 1/15이 된다.
(예5)
for I=1 to N/k
T^=AI[x의 k(I-1)+1 내지 k(I-1)+k비트째];
end for
T&=x;
output Q(T);
이상, 구조화 방법#2에 관한 구체적인 계수의 대입 알고리즘에 대하여 설명하였다. 이러한 구성에 의해, 알고리즘을 실행할 때에 처리의 고속화를 기대할 수 있다.
(7-2-3: 구조화 방법#3)
이어서, 구조화 방법#3에 대하여 설명한다. 구조화 방법#3은, 동일한 다변수 다항식에 N회(N≥2) 대입 처리를 행할 경우, 난수로부터 다항식을 N회 생성하여 대입 처리를 행하는 것이 아니라, 「계수를 일부 생성하고, 그 부분에 관한 N회분의 처리를 행하는」 부분을 단위로 하는 순차적인 처리를 N회분 병렬하여 행한다는 방법이다. 이 방법을 적용하면, 난수 생성의 비용을 무시할 수 없을 경우에 N회분의 처리 전체에서의 스루풋이 개선된다.
예를 들어, 도 5에 나타낸 알고리즘에서는, 공정#1에서 인수를 갱신하면서 다변수 다항식 F 및 G의 계산을 N회 반복 실행하고 있다. 따라서, 이러한 계산 부분에 대해서, 동일한 계수를 이용하여 반복 연산을 행하도록 구성한다. 상기 (예2)의 알고리즘을 사용하여 다변수 다항식 F(r0i)(i=1 내지 N)을 계산할 경우, 한번 생성한 [aIJL]에 대해서, N개의 r0i를 모두 적용한 후, 다음의 [aIJL]에 관한 처리를 실행하도록 구성한다. 이와 같이 구성하면, 동일한 계수 [aIJL]을 N회 생성하지 않고 마치게 된다.
이상, 구조화 방법#3에 관한 구체적인 계수의 대입 알고리즘에 대하여 설명하였다. 이러한 구성에 의해, N회분의 처리 전체에서의 스루풋이 개선된다.
<8: 하드웨어 구성예(도 22)>
상기의 각 알고리즘은, 예를 들어 도 22에 나타낸 정보 처리 장치의 하드웨어 구성을 사용하여 실행하는 것이 가능하다. 즉, 당해 각 알고리즘의 처리는, 컴퓨터 프로그램을 사용하여 도 22에 나타낸 하드웨어를 제어함으로써 실현된다. 또한, 이 하드웨어의 형태는 임의이며, 예를 들어 퍼스널 컴퓨터, 휴대 전화기, PHS, PDA 등의 휴대 정보 단말기, 게임기, 접촉식 또는 비접촉식의 IC 칩, 접촉식 또는 비접촉식의 IC 카드, 또는 다양한 정보 가전이 이것에 포함된다. 단, 상기의 PHS는 Personal Handy-phone System의 약어이다. 또한, 상기의 PDA는 Personal Digital Assistant의 약어이다.
도 22에 나타낸 바와 같이, 이 하드웨어는 주로 CPU(902)와 ROM(904)과 RAM(906)과 호스트 버스(908)와 브리지(910)를 갖는다. 또한, 이 하드웨어는 외부 버스(912)와 인터페이스(914)와 입력부(916)와 출력부(918)와 기억부(920)와 드라이브(922)와 접속 포트(924)와 통신부(926)를 갖는다. 단, 상기의 CPU는 Central Processing Unit의 약어이다. 또한, 상기의 ROM은 Read Only Memory의 약어이다. 그리고, 상기의 RAM은 Random Access Memory의 약어이다.
CPU(902)는, 예를 들어 연산 처리 장치 또는 제어 장치로서 기능하고, ROM(904), RAM(906), 기억부(920), 또는 리무버블 기록 매체(928)에 기록된 각종 프로그램에 기초하여 각 구성 요소의 동작 전반 또는 그 일부를 제어한다. ROM(904)은, CPU(902)에 읽어들여지는 프로그램이나 연산에 사용하는 데이터 등을 저장하는 수단이다. RAM(906)에는, 예를 들어 CPU(902)에 읽어들여지는 프로그램이나, 그 프로그램을 실행할 때에 적절히 변화하는 각종 파라미터 등이 일시적 또는 영속적으로 저장된다.
이들 구성 요소는, 예를 들어 고속의 데이터 전송이 가능한 호스트 버스(908)를 통하여 서로 접속된다. 한편, 호스트 버스(908)는, 예를 들어 브리지(910)를 통하여 비교적 데이터 전송 속도가 저속한 외부 버스(912)에 접속된다. 또한, 입력부(916)로서는, 예를 들어 마우스, 키보드, 터치 패널, 버튼, 스위치 및 레버 등이 사용된다. 또한, 입력부(916)로서는, 적외선이나 그 밖의 전파를 이용하여 제어 신호를 송신하는 것이 가능한 리모트 컨트롤러(이하, 리모콘)가 사용되는 경우도 있다.
출력부(918)로서는, 예를 들어 CRT, LCD, PDP, 또는 ELD 등의 디스플레이 장치, 스피커, 헤드폰 등의 오디오 출력 장치, 프린터, 휴대 전화기, 또는 팩시밀리 등, 취득한 정보를 이용자에게 시각적 또는 청각적으로 통지하는 것이 가능한 장치이다. 단, 상기의 CRT는 Cathode Ray Tube의 약어이다. 또한, 상기의 LCD는 Liquid Crystal Display의 약어이다. 그리고, 상기의 PDP는 Plasma Display Panel의 약어이다. 또한, 상기의 ELD는 Electro-Luminescence Display의 약어이다.
기억부(920)는 각종 데이터를 저장하기 위한 장치이다. 기억부(920)로서는, 예를 들어 하드디스크 드라이브(HDD) 등의 자기 기억 디바이스, 반도체 기억 디바이스, 광 기억 디바이스, 또는 광자기 기억 디바이스 등이 사용된다. 단, 상기의 HDD는 Hard Disk Drive의 약어이다.
드라이브(922)는, 예를 들어 자기 디스크, 광 디스크, 광자기 디스크, 또는 반도체 메모리 등의 리무버블 기록 매체(928)에 기록된 정보를 판독하고, 또는 리무버블 기록 매체(928)에 정보를 기입하는 장치이다. 리무버블 기록 매체(928)는, 예를 들어 DVD 미디어, Blu-ray 미디어, HD DVD 미디어, 각종 반도체 기억 미디어 등이다. 물론, 리무버블 기록 매체(928)는, 예를 들어 비접촉형 IC 칩을 탑재한 IC 카드, 또는 전자 기기 등이어도 된다. 단, 상기의 IC는 Integrated Circuit의 약어이다.
접속 포트(924)는, 예를 들어 USB 포트, IEEE1394 포트, SCSI, RS-232C 포트, 또는 광 오디오 단자 등과 같은 외부 접속 기기(930)를 접속하기 위한 포트이다. 외부 접속 기기(930)는, 예를 들어 프린터, 휴대 음악 플레이어, 디지털 카메라, 디지털 비디오 카메라, 또는 IC 레코더 등이다. 단, 상기의 USB는 Universal Serial Bus의 약어이다. 또한, 상기의 SCSI는 Small Computer System Interface의 약어이다.
통신부(926)는 네트워크(932)에 접속하기 위한 통신 디바이스이며, 예를 들어 유선 또는 무선 LAN, Bluetooth(등록 상표), 또는 WUSB용의 통신 카드, 광통신용의 라우터, ADSL용의 라우터, 또는 접촉 또는 비접촉 통신용의 디바이스 등이다. 또한, 통신부(926)에 접속되는 네트워크(932)는 유선 또는 무선에 의해 접속된 네트워크에 의해 구성되고, 예를 들어 인터넷, 가정내 LAN, 적외선 통신, 가시광 통신, 방송, 또는 위성 통신 등이다. 단, 상기의 LAN은 Local Area Network의 약어이다. 또한, 상기의 WUSB는 Wireless USB의 약어이다. 그리고, 상기의 ADSL은 Asymmetric Digital Subscriber Line의 약어이다.
<9: 정리>
마지막으로, 본 기술의 실시 형태에 관한 기술 내용에 대하여 간단하게 정리한다. 여기에서 설명하는 기술 내용은, 예를 들어 PC, 휴대 전화기, 게임기, 정보 단말기, 정보 가전, 카 내비게이션 시스템 등, 다양한 정보 처리 장치에 대하여 적용할 수 있다. 또한, 이하에서 설명하는 정보 처리 장치의 기능은, 1대의 정보 처리 장치를 이용하여 실현하는 것도 가능하고, 복수대의 정보 처리 장치를 이용하여 실현하는 것도 가능하다. 또한, 이하에서 설명하는 정보 처리 장치가 처리를 실행할 때에 사용하는 데이터 기억 수단 및 연산 처리 수단은, 당해 정보 처리 장치에 설치된 것이어도 되고, 네트워크를 통하여 접속된 기기에 설치된 것이어도 된다.
상기의 정보 처리 장치의 기능 구성은 이하와 같이 표현된다. 예를 들어, 하기 (1)에 기재된 정보 처리 장치는, 다차 다변수 연립방정식의 답 구하기 곤란성에 안전성의 근거를 두는 효율적인 공개 키 인증 방식 또는 전자 서명 방식의 알고리즘을 실행하는 기능을 갖는다.
(1)
M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 2진 난수 생성부와,
상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성부를 구비하고,
상기 3진수열 생성부는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 정보 처리 장치.
(2)
N개의 3진수를 생성할 경우, 상기 3진수열 생성부는, 상기의 식(15)로 표현되는 확률P3이 소정값보다도 작아지는 k에 기초하여 상기 3진수열을 생성하는, 상기 (1)에 기재된 정보 처리 장치.
(3)
상기 3진수열 생성부는, 상기 확률P가 최소가 되는 k에 기초하여 상기 3진수열을 생성하는, 상기 (2)에 기재된 정보 처리 장치.
(4)
상기 3진수열 생성부는, X'>3L을 만족하는 상기 k비트의 2진수열 X'로부터 3L을 감산하여 새로운 k비트의 2진수열 Y를 생성하고, 당해 k비트의 2진수열 Y 중에서 Y'≤3L'(단, L'는 3L'≤2k-3L을 만족하는 최대의 정수)을 만족하는 상기 k비트의 2진수열 Y'를 상기 L'심볼의 3진수로 표현해서 3진수열을 다시 생성하는, 상기 (1) 내지 (3) 중 어느 하나에 기재된 정보 처리 장치.
(5)
상기 3진수열 생성부는,
L(0)=L로 설정하고, 인덱스j를 0부터 순서대로 갱신하면서,
Xj>3L(j)을 만족하는 상기 k비트의 2진수열 Xj로부터 3L(j)을 감산하여 새로운 k비트의 2진수열 Yj를 생성하는 처리와,
상기 k비트의 2진수열 Yj 중에서 Yj+1≤3L(j+1)(단, L(j+1)은 3L(j+1)≤2k-3L(j)을 만족하는 최대의 정수)을 만족하는 상기 k비트의 2진수열 Yj+1을 상기 L(j+1)심볼의 3진수로 표현해서 3진수열을 다시 생성하는 처리를 반복 실행하는, 상기 (1) 내지 (3) 중 어느 하나에 기재된 정보 처리 장치.
(6)
환(K) 상에서 정의되는 다차 다변수 다항식의 조 F=(f1, …, fm) 및 벡터 y=(y1, …, ym)=(f1(s), …, fm(s))을 유지하는 정보 유지부와,
상기 다차 다변수 다항식의 조F 및 벡터s∈Kn에 기초하여 생성된 메시지를 취득하는 메시지 취득부와,
상기 메시지를 제공한 증명자에게 3가지의 검증 패턴 중에서 랜덤하게 선택한 하나의 검증 패턴의 정보를 제공하는 패턴 정보 제공부와,
상기 선택한 검증 패턴에 대응하는 회답 정보를 상기 증명자로부터 취득하는 회답 취득부와,
상기 메시지, 상기 다차 다변수 다항식의 조F, 상기 벡터y 및 상기 회답 정보에 기초하여 상기 증명자가 상기 벡터s를 유지하고 있는지 여부를 검증하는 검증부를 구비하고,
상기 벡터s는 비밀 키이며,
상기 다차 다변수 다항식의 조F 및 상기 벡터y는 공개 키이며,
상기 메시지는, 상기 공개 키 및 상기 회답 정보를 이용하여 당해 회답 정보에 대응하는 검증 패턴용으로 미리 준비된 연산을 실행함으로써 얻어지는 정보이며,
상기 2진 난수열로부터 생성된 3진수는, 상기 하나의 검증 패턴을 선택할 때에 이용되는, 상기 (1) 내지 (5) 중 어느 하나에 기재된 정보 처리 장치.
(7)
M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 스텝과,
상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 스텝을 포함하고,
상기 3진수열을 생성하는 스텝에서는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 정보 처리 방법.
(8)
M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과,
상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램이며,
상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 프로그램.
(9)
M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과,
상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램이 기록된, 컴퓨터에 의해 판독 가능한 기록 매체이며,
상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 기록 매체.
(비고)
상기의 증명자 알고리즘(P)은, 난수 생성부, 메시지 생성부, 메시지 제공부, 회답 제공부, 중간 정보 생성부, 중간 정보 제공부의 일례이다. 또한, 상기의 서명 생성 알고리즘(Sig)은, 난수 생성부, 서명 생성부, 서명 제공부의 일례이다.
이상, 첨부 도면을 참조하면서 본 기술의 적합한 실시 형태에 대하여 설명했지만, 본 기술은 이러한 예에 한정되지 않는 것은 물론이다. 당업자라면 특허 청구 범위에 기재된 범주 내에 있어서, 각종 변경예 또는 수정예에 상도할 수 있는 것은 명확하며, 그것들에 대해서도 당연히 본 기술의 기술적 범위에 속하는 것이라고 이해된다.
상기의 설명에 있어서, 해시 함수H를 사용하는 알고리즘을 소개했지만, 해시 함수H 대신에 커미트먼트 함수COM을 사용해도 된다. 커미트먼트 함수COM은, 문자열(S) 및 난수(ρ)를 인수로 취하는 함수이다. 커미트먼트 함수의 예로서는, Shai Halevi와 Silvio Micali에 의해 국제 회의 CRYPTO1996에서 발표된 방식 등이 있다.
Gen : 키 생성 알고리즘
P : 증명자 알고리즘
V : 검증자 알고리즘
Sig : 서명 생성 알고리즘
Ver : 서명 검증 알고리즘

Claims (9)

  1. 정보 처리 장치로서,
    M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 2진 난수 생성부와,
    상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성부를 구비하고,
    상기 3진수열 생성부는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 정보 처리 장치.
  2. 제1항에 있어서, N개의 3진수를 생성할 경우, 상기 3진수열 생성부는, 하기의 식(1)로 표현되는 확률P가 소정값보다도 작아지는 k에 기초하여 상기 3진수열을 생성하는, 정보 처리 장치.
    Figure pct00014
    ... (1)
  3. 제2항에 있어서, 상기 3진수열 생성부는, 상기 확률P가 최소가 되는 k에 기초하여 상기 3진수열을 생성하는, 정보 처리 장치.
  4. 제1항에 있어서, 상기 3진수열 생성부는, X'>3L을 만족하는 상기 k비트의 2진수열 X'로부터 3L을 감산하여 새로운 k비트의 2진수열 Y를 생성하고, 당해 k비트의 2진수열 Y 중에서 Y'≤3L'(단, L'는 3L'≤2k-3L을 만족하는 최대의 정수)을 만족하는 상기 k비트의 2진수열 Y'를 상기 L'심볼의 3진수로 표현해서 3진수열을 다시 생성하는, 정보 처리 장치.
  5. 제1항에 있어서, 상기 3진수열 생성부는,
    L(0)=L로 설정하고, 인덱스j를 0부터 순서대로 갱신하면서,
    Xj>3L(j)을 만족하는 상기 k비트의 2진수열 Xj로부터 3L(j)을 감산하여 새로운 k비트의 2진수열 Yj를 생성하는 처리와,
    상기 k비트의 2진수열 Yj 중에서 Yj+1≤3L(j+1)(단, L(j+1)은 3L(j+1)≤2k-3L(j)을 만족하는 최대의 정수)을 만족하는 상기 k비트의 2진수열 Yj+1을 상기 L(j+1)심볼의 3진수로 표현해서 3진수열을 다시 생성하는 처리를 반복 실행하는, 정보 처리 장치.
  6. 정보 처리 장치로서,
    환(K) 상에서 정의되는 다차 다변수 다항식의 조 F=(f1, …, fm) 및 벡터 y=(y1, …, ym)=(f1(s), …, fm(s))을 유지하는 정보 유지부와,
    상기 다차 다변수 다항식의 조F 및 벡터s∈Kn에 기초하여 생성된 메시지를 취득하는 메시지 취득부와,
    상기 메시지를 제공한 증명자에게 3가지의 검증 패턴 중에서 랜덤하게 선택한 하나의 검증 패턴의 정보를 제공하는 패턴 정보 제공부와,
    상기 선택한 검증 패턴에 대응하는 회답 정보를 상기 증명자로부터 취득하는 회답 취득부와,
    상기 메시지, 상기 다차 다변수 다항식의 조F, 상기 벡터y 및 상기 회답 정보에 기초하여 상기 증명자가 상기 벡터s를 유지하고 있는지 여부를 검증하는 검증부를 구비하고,
    상기 벡터s는 비밀 키이며,
    상기 다차 다변수 다항식의 조F 및 상기 벡터y는 공개 키이며,
    상기 메시지는, 상기 공개 키 및 상기 회답 정보를 이용하여 당해 회답 정보에 대응하는 검증 패턴용으로 미리 준비된 연산을 실행함으로써 얻어지는 정보이며,
    상기 2진 난수열로부터 생성된 3진수는, 상기 하나의 검증 패턴을 선택할 때에 이용되는, 정보 처리 장치.
  7. 정보 처리 방법으로서,
    M비트(M≥2)의 2진수로 표현되는 2진 난수열을 생성하는 스텝과,
    상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 스텝을 포함하고,
    상기 3진수열을 생성하는 스텝에서는, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 정보 처리 방법.
  8. M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과,
    상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램으로서,
    상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 프로그램.
  9. M비트(M≥2)의 2진수로 표현되는 2진 난수열을 출력하는 2진 난수 생성 기능과,
    상기 2진 난수열을 k비트 단위로 구획해서 k비트의 2진수열을 생성하고, 상기 k비트의 2진수열을 L심볼(단, L은 3L≤2M을 만족하는 최대의 정수)의 3진수로 표현해서 3진수열을 생성하는 3진수열 생성 기능을 컴퓨터에 실현시키기 위한 프로그램이 기록된, 컴퓨터에 의해 판독 가능한 기록 매체로서,
    상기 3진수열 생성 기능은, X≤3L을 만족하는 상기 k비트의 2진수열 X를 상기 L심볼의 3진수로 표현해서 3진수열을 생성하는, 기록 매체.
KR1020147003782A 2011-08-29 2012-07-19 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체 KR20140054059A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2011-185945 2011-08-29
JP2011185945A JP2013047727A (ja) 2011-08-29 2011-08-29 情報処理装置、情報処理方法、プログラム、及び記録媒体
PCT/JP2012/068322 WO2013031413A1 (ja) 2011-08-29 2012-07-19 情報処理装置、情報処理方法、プログラム、及び記録媒体

Publications (1)

Publication Number Publication Date
KR20140054059A true KR20140054059A (ko) 2014-05-08

Family

ID=47755921

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147003782A KR20140054059A (ko) 2011-08-29 2012-07-19 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체

Country Status (9)

Country Link
US (1) US20140211940A1 (ko)
EP (1) EP2752837A4 (ko)
JP (1) JP2013047727A (ko)
KR (1) KR20140054059A (ko)
CN (1) CN103782332A (ko)
BR (1) BR112014004059A2 (ko)
RU (1) RU2014106522A (ko)
TW (1) TW201310957A (ko)
WO (1) WO2013031413A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5790288B2 (ja) * 2011-08-12 2015-10-07 ソニー株式会社 情報処理装置、及び情報処理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0013349D0 (en) * 2000-06-01 2000-07-26 Tao Group Ltd Pseudo-random number generator
JP2004226852A (ja) * 2003-01-24 2004-08-12 Sony Corp 擬似乱数生成装置
JP2006080642A (ja) * 2004-09-07 2006-03-23 Sony Corp 情報処理装置および方法、プログラム並びに記録媒体
JP2006215824A (ja) * 2005-02-03 2006-08-17 Sanyo Electric Co Ltd 乱数生成回路
JP4398904B2 (ja) * 2005-06-21 2010-01-13 株式会社東芝 乱数系列生成装置、乱数系列生成方法、演算処理装置、演算処理方法及びプログラム
JP4586163B2 (ja) * 2005-09-09 2010-11-24 国立大学法人岩手大学 暗号化システム
JP6069852B2 (ja) * 2011-08-29 2017-02-01 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
JP5790319B2 (ja) * 2011-08-29 2015-10-07 ソニー株式会社 署名検証装置、署名検証方法、プログラム、及び記録媒体
JP6041133B2 (ja) * 2012-06-08 2016-12-07 パナソニックIpマネジメント株式会社 画像処理装置、画像処理方法、画像処理プログラムおよびチップ回路

Also Published As

Publication number Publication date
EP2752837A4 (en) 2015-10-14
EP2752837A1 (en) 2014-07-09
US20140211940A1 (en) 2014-07-31
CN103782332A (zh) 2014-05-07
WO2013031413A1 (ja) 2013-03-07
RU2014106522A (ru) 2015-08-27
TW201310957A (zh) 2013-03-01
JP2013047727A (ja) 2013-03-07
BR112014004059A2 (pt) 2017-03-07

Similar Documents

Publication Publication Date Title
JP5790319B2 (ja) 署名検証装置、署名検証方法、プログラム、及び記録媒体
JP6069852B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US9276735B2 (en) Information processing apparatus, signature generation apparatus, information processing method, signature generation method, and program
TWI511517B (zh) Information processing apparatus, information processing method, program and recording medium
EP2744147A1 (en) Information processing device, information processing method, program, and recording medium
EP2822217A1 (en) Information processing device, information processing method, and program
WO2013129119A1 (ja) 情報処理装置、情報処理方法、及びプログラム
JP5790286B2 (ja) 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム
KR20140054059A (ko) 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체
EP2752836A1 (en) Information processing device, signature generation device, signature verification device, information processing method, signature generation method, and signature verification method
Al-Saidi et al. A new idea in zero knowledge protocols based on iterated function systems

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