KR101808363B1 - 인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체 - Google Patents

인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체 Download PDF

Info

Publication number
KR101808363B1
KR101808363B1 KR1020137001413A KR20137001413A KR101808363B1 KR 101808363 B1 KR101808363 B1 KR 101808363B1 KR 1020137001413 A KR1020137001413 A KR 1020137001413A KR 20137001413 A KR20137001413 A KR 20137001413A KR 101808363 B1 KR101808363 B1 KR 101808363B1
Authority
KR
South Korea
Prior art keywords
verifier
algorithm
public key
information
cmt
Prior art date
Application number
KR1020137001413A
Other languages
English (en)
Other versions
KR20130100959A (ko
Inventor
고이치 사쿠모토
다이조 시라이
하루나가 히와타리
Original Assignee
소니 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 소니 주식회사 filed Critical 소니 주식회사
Publication of KR20130100959A publication Critical patent/KR20130100959A/ko
Application granted granted Critical
Publication of KR101808363B1 publication Critical patent/KR101808363B1/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/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
    • 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/3218Cryptographic 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 using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic 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 using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • 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/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • 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/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • 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/3271Cryptographic 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 using challenge-response
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3239Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

능동적 공격에 대한 안전성 레벨을 실현하는 것이다. L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지부와, (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 대화 프로토콜 실행부를 구비하며, 상기 대화 프로토콜 실행부는, 상기 검증자와의 사이에서 상기 대화 프로토콜을 실행할 때, 어느 비밀 키 si를 사용하였는지를 당해 검증자에게 알려지지 않도록 하는 인증 장치가 제공된다.

Description

인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체 {AUTHENTICATION DEVICE, AUTHENTICATION METHOD, AND COMPUTER READABLE RECORDING MEDIUM}
본 발명은 인증 장치, 인증 방법 및 프로그램에 관한 것이다.
정보 처리 기술이나 통신 기술의 급속한 발전에 수반하여 공문서, 사문서를 불문하고 문서의 전자화가 급속하게 진행되고 있다. 이에 따라, 많은 개인이나 기업은 전자 문서의 안전 관리에 큰 관심을 기울이고 있다. 이러한 관심의 고조를 받아들여 각 방면에서 전자 문서의 도청이나 위조 등의 템퍼링(tempering) 행위에 대한 안전성이 활발하게 논의되어 왔다. 전자 문서의 도청에 대한 안전성은, 예를 들어 전자 문서를 암호화함으로써 확보된다. 또한, 전자 문서의 위조에 대한 안전성은, 예를 들어 전자 서명을 이용함으로써 확보된다. 단, 암호나 전자 서명에는 충분한 템퍼링 내성이 요구된다.
전자 서명은 전자 문서의 작성자를 특정하기 위하여 이용된다. 그로 인해, 전자 서명은 전자 문서의 작성자만 생성할 수 있도록 해야 한다. 가령, 악의 있는 제3자가 동일한 전자 서명을 생성할 수 있게 되면, 그 제3자가 전자 문서의 작성자 행세를 할 수 있게 되어 버린다. 즉, 악의 있는 제3자에 의해 전자 문서가 위조되어 버린다. 이러한 위조를 방지하기 위하여, 전자 서명의 안전성에 대해서는 여러가지 논의가 나누어져 왔다. 현재 널리 이용되고 있는 전자 서명 방식으로서는, 예를 들어 RSA 서명 방식이나 DSA 서명 방식을 이용하는 방식이 알려져 있다.
RSA 서명 방식은 「큰 합성수에 대한 소인수 분해의 곤란성(이하, 소인수 분해 문제)」을 안전성의 근거로 한다. 또한, DSA 서명 방식은 「이산 대수(discrete logarithm) 문제에 대한 풀이 도출의 곤란성」을 안전성의 근거로 한다. 이들 근거는 고전적인 컴퓨터를 이용하여 소인수 분해 문제나 이산 대수 문제를 효율적으로 푸는 알고리즘이 존재하지 않는 것에 기인한다. 즉, 상기의 곤란성은 고전적인 컴퓨터에서의 계산량적인 곤란성을 의미한다. 그러나, 양자 컴퓨터를 사용하면, 소인수 분해 문제나 이산 대수 문제에 대한 해답이 효율적으로 산출되어 버린다고 알려져 있다.
현재 이용되고 있는 전자 서명 방식이나 공개 키 인증 방식의 대부분은, RSA 서명 방식이나 DSA 서명 방식과 마찬가지로 소인수 분해 문제나 이산 대수 문제의 곤란성에 안전성의 근거를 두고 있다. 그로 인해, 이러한 전자 서명 방식이나 공개 키 인증 방식은 양자 컴퓨터가 실용화된 경우에, 그 안전성이 확보되지 않게 된다. 따라서, 소인수 분해 문제나 이산 대수 문제 등, 양자 컴퓨터에 의해 용이하게 풀어져 버리는 문제와는 상이한 문제에 안전성의 근거를 두는 새로운 전자 서명 방식 및 공개 키 인증 방식이 요구되고 있다. 양자 컴퓨터에 의해 용이하게 푸는 것이 어려운 문제로서는, 예를 들어 다변수 다항식에 대한 해답의 곤란성(이하, 다변수 다항식 문제)이 있다.
그 밖에도 양자 컴퓨터에 의해 푸는 것이 곤란하다고 되어 있는 문제로서 Syndrome Decoding 문제, Constrained Linear Equation 문제, Permuted Kernel 문제, Permuted Perception 문제, 대수 곡면(algebraic surface) 상의 섹션 찾기(section-finding) 문제 등이 있다.
이들 문제 중 대수 곡면 상의 섹션 찾기 문제 이외의 문제는 NP 곤란인 것이 알려져 있다. 그 응용예로서 예를 들어 하기 비특허문헌 1, 2에는 Syndrome Decoding 문제에 기초하는 공개 키 인증 방식이 개시되어 있다. 또한, 하기 비특허문헌 3에는 Permuted Kernel 문제에 기초하는 공개 키 인증 방식이 개시되어 있다. 이들 이외에도 Constrained Linear Equations 문제에 기초하는 공개 키 인증 방식이나 Permuted Perceptions 문제에 기초하는 공개 키 인증 방식 등이 제안되어 있다.
Jacques Stern, A New Identification Scheme Based on Syndrome Decoding, CRYPTO 1993, p13-21 Jacques Stern, A New Paradigm for Public Key Identification, IEEE Transactions on Information Theory, 1996, p13-21 Adi Shamir, An Efficient Identification Scheme Based on Permuted Kernels(Extended Abstract), CRYPTO 1989, p606-609
여기서, 공개 키 인증 방식의 안전성 레벨에 대하여 언급해 두고자 한다. 공개 키 인증 방식의 안전성 레벨에는 2가지 안전성 레벨이 존재한다. 그 중 하나는 수동적 공격(passive attack)에 대한 안전성 레벨이다. 또 하나는 능동적 공격(active attack)에 대한 안전성 레벨이다. 수동적 공격에 대한 안전성 레벨은, 정당한 프로토콜에 따른 증명자와 검증자의 대화를 도청하는 것만이 가능한 공격자를 상정한 안전성의 레벨이다. 한편, 능동적 공격에 대한 안전성 레벨은, 공격자 자신이 직접적으로 증명자와 대화 프로토콜을 실행할 수 있는 상황을 상정한 안전성의 레벨이다. 즉, 능동적 공격에 대한 안전성 레벨은, 공격자가 마음껏 증명자와 대화 프로토콜을 행할 수 있다고 하는 것이 상정되어 있는 것이다.
상기의 비특허문헌 1 내지 3에 기재되어 있는 바와 같은 종래의 공개 키 인증 방식은, 수동적 공격에 대한 안전성 레벨을 보증하고 있다. 그러나, 이들 종래의 공개 키 인증 방식은 병렬적 반복 구성을 행한 경우, 능동적 공격에 대한 안전성 레벨을 확실하게 보증하고 있는지 여부가 알려져 있지 않다. 왜냐하면, 병렬적 반복 구성을 행한 경우, 제로 지식성은 보존되지 않는다고 하는 것이 일반적으로 알려져 있기 때문이다. 그로 인해, 병렬적 반복 구성에 있어서 능동적 공격에 대한 안전성 레벨을 확실하게 보증하기 위해서는, 또 다른 성질을 보증할 필요가 있다.
종래의 공개 키 인증 방식은, 1조의 키 페어(공개 키 y, 비밀 키 s)를 사용하여 「y에 대하여 y=F(s)가 되는 s를 알고 있는 것」을 증명자가 검증자에 대하여 증명하는 방식이었다. 그로 인해, 검증에 의해 수리(受理)되는 대화를 행한 경우, 「대화를 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알리게 되는 것을 피할 수 없었다. 또한, 이 형식의 공개 키 인증 방식의 병렬적 반복 구성에서는, F에 충돌 곤란성의 보증이 없는 경우, 능동적 공격에 대한 안전성 레벨을 확실하게 보증하고 있는지 여부가 알려져 있지 않았다. 실제로, 전술한 공개 키 인증 방식에서 사용되고 있는 함수 F에서는 충돌 곤란성은 보증되어 있지 않다.
따라서, 본 발명은 상기 문제를 감안하여 이루어진 것이며, 본 발명의 목적으로 하는 바는 함수 F에 충돌 곤란성이 보증되어 있지 않아도 대화 프로토콜을 병렬적으로 반복 실행하였다고 하여도 능동적 공격에 대한 안전성 레벨을 보증하는 것이 가능한, 신규이면서도 개량된 인증 장치, 인증 방법 및 프로그램을 제공하는 데에 있다.
상기 과제를 해결하기 위하여, 본 발명의 어느 관점에 따르면, L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지부와, (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 대화 프로토콜 실행부를 구비하며, 상기 대화 프로토콜 실행부는, 상기 검증자와의 사이에서 상기 대화 프로토콜을 실행할 때, 어느 비밀 키 si를 사용하였는지를 당해 검증자에게 알려지지 않도록 하는 인증 장치가 제공된다.
또한, 상기 대화 프로토콜 실행부는, 상기 검증자로부터 L개의 챌린지(challenge) Chi를 수신하는 챌린지 수신부와, 상기 챌린지 수신부에 의해 수신된 L개의 챌린지 Chi 중에서 (L-1)개의 챌린지 Chi를 임의로 선택하는 챌린지 선택부와, 상기 비밀 키 si를 사용하여 상기 챌린지 선택부에 의해 선택된 (L-1)개의 챌린지 Chi의 각각에 대한 (L-1)개의 회답 Rspi를 생성하는 회답 생성부와, 상기 회답 생성부에 의해 생성된 (L-1)개의 회답 Rspi를 상기 검증자에게 송신하는 회답 송신부를 포함하고 있어도 된다.
또한, 상기 대화 프로토콜 실행부는, 상기 검증자에 대하여 L개의 상기 비밀 키 si의 각각에 대응하는 메시지 Cmti를 송신하는 메시지 송신부를 더 포함하고 있어도 된다. 이 경우, 상기 챌린지 수신부는, 상기 메시지 송신부에 의해 송신된 각 메시지 Cmti에 따라, 상기 검증자에 의해 k개(k≥2)의 검증 패턴 중에서 선택된 검증 패턴을 나타내는 챌린지 Chi를 수신한다.
또한, 상기 메시지 Cmti가 Cmti=(ci ,1,, ci ,N)인 경우, 상기 메시지 송신부는 일방향성 함수 H를 사용하여 새로운 메시지 Cmt'=H(Cmt1, …, CmtL)을 산출하여 당해 메시지 Cmt'를 상기 검증자에게 송신하고, 상기 회답 송신부는, 상기 회답 Rspi와 함께, 당해 회답 Rspi를 이용하여도 상기 검증자가 복원할 수 없는 상기 메시지 Cmti의 요소를 송신하도록 구성되어 있어도 된다.
또한, 상기 키 유지부는, 상기 L개의 비밀 키 si 중 1개의 비밀 키 si0(1≤i0≤L)을 유지하지 않도록 하여도 된다. 이 경우, 상기 대화 프로토콜 실행부는, 상기 대화 프로토콜 중에서 실행되는 상기 비밀 키 si0에 관한 처리를 위증 알고리즘에 기초하여 실행한다.
또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, L개의 비밀 키 si(i=1 내지 L), n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지부와, 검증자로부터 Q조(Q≥2)의 L개의 챌린지 Chi (j)(j=1 내지 Q)를 수신하는 챌린지 수신부와, 상기 챌린지 수신부에 의해 수신된 Q조의 L개의 챌린지 Chi (j) 중에서 1조의 L개의 챌린지 Chi (j)를 임의로 선택하는 챌린지 선택부와, 상기 비밀 키 si를 사용하여, 상기 챌린지 선택부에 의해 선택된 L개의 챌린지 Chi (j)의 각각에 대한 L개의 회답 Rspi를 생성하는 회답 생성부와, 상기 회답 생성부에 의해 생성된 L개의 회답 Rspi를 상기 검증자에게 송신하는 회답 송신부를 구비하는 인증 장치가 제공된다.
또한, 상기 대화 프로토콜 실행부는, 상기 검증자에 대하여 L개의 상기 비밀 키 si의 각각에 대응하는 메시지 Cmti를 송신하는 메시지 송신부를 더 포함하고 있어도 된다. 이 경우, 상기 챌린지 수신부는, 상기 메시지 송신부에 의해 송신된 각 메시지 Cmti에 따라, 상기 검증자에 의해 k개(k≥2)의 검증 패턴 중에서 선택된 검증 패턴을 나타내는 챌린지 Chi (j)를 수신한다.
또한, 상기 메시지 Cmti가 Cmti=(ci,1, …, ci,N)인 경우, 상기 메시지 송신부는 일방향성 함수 H를 사용하여 새로운 메시지 Cmt'=H(Cmt1, …, CmtL)을 산출하여 당해 메시지 Cmt'를 상기 검증자에게 송신하고, 상기 회답 송신부는, 상기 회답 Rspi와 함께, 당해 회답 Rspi를 이용하여도 상기 검증자가 복원할 수 없는 상기 메시지 Cmti의 요소를 송신하도록 구성되어 있어도 된다.
또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 생성하는 키 생성 스텝과, (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 대화 프로토콜 실행 스텝을 포함하며, 상기 대화 프로토콜 실행 스텝에서는, 상기 검증자와의 사이에서 상기 대화 프로토콜을 실행할 때, 어느 비밀 키 si를 사용하였는지를 당해 검증자에게 알려지지 않도록 하는 인증 방법이 제공된다.
또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지 기능과, (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 대화 프로토콜 실행 기능을 컴퓨터에 실현시키기 위한 프로그램이며, 상기 대화 프로토콜 실행 기능은, 상기 검증자와의 사이에서 상기 대화 프로토콜을 실행할 때, 어느 비밀 키 si를 사용하였는지를 당해 검증자에게 알려지지 않도록 하는 프로그램이 제공된다.
또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, L개의 비밀 키 si(i=1 내지 L), n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 생성하는 키 생성 스텝과, 검증자로부터 Q조(Q≥2)의 L개의 챌린지 Chi (j)(j=1 내지 Q)를 수신하는 챌린지 수신 스텝과, 상기 챌린지 수신 스텝에서 수신된 Q조의 L개의 챌린지 Chi (j) 중에서 1조의 L개의 챌린지 Chi (j)를 임의로 선택하는 챌린지 선택 스텝과, 상기 비밀 키 si를 사용하여, 상기 챌린지 선택 스텝에서 선택된 L개의 챌린지 Chi (j)의 각각에 대한 L개의 회답 Rspi를 생성하는 회답 생성 스텝과, 상기 회답 생성 스텝에서 생성된 L개의 회답 Rspi를 상기 검증자에게 송신하는 회답 송신 스텝을 포함하는 인증 방법이 제공된다.
또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, L개의 비밀 키 si(i=1 내지 L), n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지 기능과, 검증자로부터 Q조(Q≥2)의 L개의 챌린지 Chi (j)(j=1 내지 Q)를 수신하는 챌린지 수신 기능과, 상기 챌린지 수신 기능에 의해 수신된 Q조의 L개의 챌린지 Chi (j) 중에서 1조의 L개의 챌린지 Chi (j)를 임의로 선택하는 챌린지 선택 기능과, 상기 비밀 키 si를 사용하여, 상기 챌린지 선택 기능에 의해 선택된 L개의 챌린지 Chi (j)의 각각에 대한 L개의 회답 Rspi를 생성하는 회답 생성 기능과, 상기 회답 생성 기능에 의해 생성된 L개의 회답 Rspi를 상기 검증자에게 송신하는 회답 송신 기능을 컴퓨터에 실현시키기 위한 프로그램이 제공된다. 또한, 상기 과제를 해결하기 위하여, 본 발명의 다른 관점에 따르면, 상기의 프로그램이 기록된, 컴퓨터에 의해 판독 가능한 기록 매체가 제공된다.
이상 설명한 바와 같이 본 발명에 따르면, 대화 프로토콜을 병렬적으로 반복 실행하였다고 하여도 능동적 공격에 대한 안전성 레벨을 보증하는 것이 가능하게 된다.
도 1은 공개 키 인증 방식의 알고리즘 구성에 대하여 설명하기 위한 설명도이다.
도 2는 n 패스의 공개 키 인증 방식에 대하여 설명하기 위한 설명도이다.
도 3은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대하여 설명하기 위한 설명도이다.
도 4는 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대하여 설명하기 위한 설명도이다.
도 5는 대화 프로토콜의 직렬적 반복 구성에 대하여 설명하기 위한 설명도이다.
도 6은 대화 프로토콜의 병렬적 반복 구성에 대하여 설명하기 위한 설명도이다.
도 7은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 위증 알고리즘에 대하여 설명하기 위한 설명도이다.
도 8은 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 위증 알고리즘에 대하여 설명하기 위한 설명도이다.
도 9는 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법에 대하여 설명하기 위한 설명도이다.
도 10은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법(변형예 1)에 대하여 설명하기 위한 설명도이다.
도 11은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법(변형예 2)에 대하여 설명하기 위한 설명도이다.
도 12는 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법(변형예 3)에 대하여 설명하기 위한 설명도이다.
도 13은 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법에 대하여 설명하기 위한 설명도이다.
도 14는 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #1의 적용 방법(변형예)에 대하여 설명하기 위한 설명도이다.
도 15는 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #2의 적용 방법에 대하여 설명하기 위한 설명도이다.
도 16은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #2의 적용 방법(변형예)에 대하여 설명하기 위한 설명도이다.
도 17은 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #2의 적용 방법에 대하여 설명하기 위한 설명도이다.
도 18은 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 본 방법 #2의 적용 방법(변형예)에 대하여 설명하기 위한 설명도이다.
도 19는 SSH10a 공개 키 인증 방식의 대화 프로토콜에서의 통신량의 삭감 방법에 대하여 설명하기 위한 설명도이다.
도 20은 SSH10b 공개 키 인증 방식의 대화 프로토콜에서의 통신량의 삭감 방법에 대하여 설명하기 위한 설명도이다.
도 21은 본 실시 형태에 관한 대화 프로토콜을 실현하는 것이 가능한 정보 처리 장치의 하드웨어 구성예에 대하여 설명하기 위한 설명도이다.
이하에 첨부 도면을 참조하면서, 본 발명의 적합한 실시 형태에 대하여 상세하게 설명한다. 또한, 본 명세서 및 도면에 있어서, 실질적으로 동일한 기능 구성을 갖는 구성 요소에 대해서는, 동일한 번호를 부여함으로써 중복 설명을 생략한다.
[설명의 흐름에 대하여]
여기서, 이하에 기재하는 본 발명의 실시 형태에 관한 설명의 흐름에 대하여 간단하게 설명한다. 우선, 도 1을 참조하면서 공개 키 인증 방식의 알고리즘 구성에 대하여 설명한다. 계속해서, 도 2를 참조하면서 n 패스의 공개 키 인증 방식에 대하여 설명한다. 계속해서, 도 3을 참조하면서 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대하여 설명한다. 계속해서, 도 4를 참조하면서 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대하여 설명한다. 계속해서, 도 5, 도 6을 참조하면서 대화 프로토콜의 반복 구성에 대하여 설명한다. 이 중에서 능동적 공격에 대한 안전성 레벨에 대하여 간단하게 설명한다.
계속해서, 도 7을 참조하면서 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대한 위증 알고리즘에 대하여 설명한다. 계속해서, 도 8을 참조하면서 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대한 위증 알고리즘에 대하여 설명한다. 계속해서, 도 9 내지 도 12를 참조하면서 본 발명의 제1 실시 형태에 관한 방법(본 방법 #1)을 SSH10a 공개 키 인증 방식의 대화 프로토콜에 적용하는 방법에 대하여 설명한다. 계속해서, 도 13, 도 14를 참조하면서 본 방법 #1을 SSH10b 공개 키 인증 방식의 대화 프로토콜에 적용하는 방법에 대하여 설명한다.
계속해서, 도 15, 도 16을 참조하면서 본 발명의 제2 실시 형태에 관한 방법(본 방법 #2)을 SSH10a 공개 키 인증 방식의 대화 프로토콜에 적용하는 방법에 대하여 설명한다. 계속해서, 도 17, 도 18을 참조하면서 본 방법 #2를 SSH10b 공개 키 인증 방식의 대화 프로토콜에 적용하는 방법에 대하여 설명한다. 계속해서, 도 19, 도 20을 참조하면서 본 실시 형태에 관한 대화 프로토콜에서의 통신량의 삭감 방법에 대하여 설명한다. 계속해서, 도 21을 참조하면서 본 실시 형태에 관한 대화 프로토콜을 실현하는 것이 가능한 정보 처리 장치의 하드웨어 구성예에 대하여 설명한다. 마지막으로, 동일 실시 형태의 기술적 사상에 대하여 요약하고, 당해 기술적 사상으로부터 얻어지는 작용 효과에 대하여 간단하게 설명한다.
(설명 항목)
1: 도입
1-1: 공개 키 인증 방식의 알고리즘 구성
1-2: n 패스의 공개 키 인증 방식에 대하여
1-3: SSH10a 공개 키 인증 방식의 대화 프로토콜
1-4: SSH10b 공개 키 인증 방식의 대화 프로토콜
1-5: 대화 프로토콜의 반복 구성
1-6: SSH10a 공개 키 인증 방식에 대한 위증 알고리즘
1-7: SSH10b 공개 키 인증 방식에 대한 위증 알고리즘
2: 제1 실시 형태(본 방법 #1)
2-1: 개요
2-2: SSH10a 공개 키 인증 방식에의 적용
2-3: SSH10a 공개 키 인증 방식에의 적용(변형예 1)
2-4: SSH10a 공개 키 인증 방식에의 적용(변형예 2)
2-5: SSH10a 공개 키 인증 방식에의 적용(변형예 3)
2-6: SSH10b 공개 키 인증 방식에의 적용
2-7: SSH10b 공개 키 인증 방식에의 적용(변형예)
3: 제2 실시 형태(본 방법 #2)
3-1: 개요
3-2: SSH10a 공개 키 인증 방식에의 적용
3-3: SSH10a 공개 키 인증 방식에의 적용(변형예)
3-4: SSH10b 공개 키 인증 방식에의 적용
3-5: SSH10b 공개 키 인증 방식에의 적용(변형예)
4: 보충
4-1: 방식의 확장에 대하여
4-2: 비대화형의 공개 키 인증 방식에 대하여
4-3: 통신량의 삭감 방법에 대하여
5: 하드웨어 구성
6: 요약
<1: 도입>
도입에서, 본 발명에 관한 실시 형태에 대하여 상세하게 설명하기에 앞서, 일반적인 공개 키 인증 방식의 알고리즘 구성 및 n 패스의 공개 키 인증 방식에 대하여 간단하게 설명한다.
[1-1: 공개 키 인증 방식의 알고리즘 구성]
우선, 도 1을 참조하면서 공개 키 인증 방식의 알고리즘 구성에 대하여 설명한다. 도 1은 공개 키 인증 방식의 알고리즘 구성에 대하여 설명하기 위한 설명도이다.
(개요)
공개 키 인증 방식이란, 어떤 사람(증명자)이 공개 키 pk 및 비밀 키 sk를 이용하여 다른 사람(검증자)에게 본인인 것을 납득시키기 위한 인증 방식이다. 예를 들어, 증명자 A의 공개 키 pkA는 검증자에게 공개된다. 한편, 증명자 A의 비밀 키 skA는 증명자에 의해 비밀로 관리된다. 공개 키 인증 방식에서는 공개 키 pkA에 대응하는 비밀 키 skA를 아는 자가 증명자 A 본인인 것으로 간주된다.
증명자 A가 검증자 B에 대하여 본인인 것을 증명하고자 하는 경우, 증명자 A는 검증자 B와 대화 프로토콜을 실행하여 자신이 공개 키 pkA에 대응하는 비밀 키 skA를 알고 있는 것을 증명하면 된다. 그리고, 대화 프로토콜에 의해 증명자 A가 비밀 키 skA를 알고 있는 것이 검증자 B에 의해 증명된 경우, 증명자 A의 정당성(본인인 것)이 증명된다.
또한, 공개 키 인증 방식의 안전성을 확보하기 위해서는, 다음에 나타내는 2가지 조건이 요구된다.
첫번째 조건은, 대화 프로토콜을 실행하였을 때에 비밀 키 sk를 갖지 않는 위증자에 의해 위증이 성립되어 버리는 확률을 한없이 작게 하는 것이다. 이 첫번째 조건이 성립하는 것을 「건전성(soundness)」이라고 칭한다. 즉, 건전성을 갖는 대화 프로토콜에 있어서는, 비밀 키 sk를 갖지 않는 위증자에 의해 무시할 수 없는 확률로 위증이 성립하는 일은 없다고 바꿔 말할 수 있다. 두번째 조건은, 대화 프로토콜을 실행하였다고 하여도 증명자 A가 갖는 비밀 키 skA의 정보가 검증자 B에 일절 누설되는 일이 없도록 하는 것이다. 이 두번째 조건이 성립하는 것을 「제로 지식성(zero knowledge)」이라고 칭한다.
상기의 건전성과 제로 지식성을 갖는 대화 프로토콜을 이용함으로써, 공개 키 인증 방식의 안전성이 확보된다.
(모델)
공개 키 인증 방식의 모델에는, 도 1에 도시한 바와 같이 증명자와 검증자라고 하는 2개의 엔티티가 존재한다. 증명자는 키 생성 알고리즘 Gen을 사용하여 증명자 고유의 비밀 키 sk와 공개 키 pk의 조를 생성한다. 계속해서, 증명자는 키 생성 알고리즘 Gen을 사용하여 생성된 비밀 키 sk와 공개 키 pk의 조를 이용하여 검증자와 대화 프로토콜을 실행한다. 이때, 증명자는 증명자 알고리즘 P를 이용하여 대화 프로토콜을 실행한다. 상기한 바와 같이, 대화 프로토콜에 있어서, 증명자는 증명자 알고리즘 P를 이용하여 비밀 키 sk를 보유하고 있는 것을 검증자에게 증명한다.
한편, 검증자는 검증자 알고리즘 V를 이용하여 대화 프로토콜을 실행하고, 증명자가 공개하고 있는 공개 키에 대응하는 비밀 키를 그 증명자가 보유하고 있는지 여부를 검증한다. 즉, 검증자는 증명자가 공개 키에 대응하는 비밀 키를 보유하고 있는지 여부를 검증하는 엔티티이다. 이와 같이 공개 키 인증 방식의 모델은, 증명자와 검증자라고 하는 2개의 엔티티, 및 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V라고 하는 3개의 알고리즘에 의해 구성된다.
또한, 이하의 설명에 있어서, 「증명자」 「검증자」라고 하는 표현을 사용하지만, 이들 표현은 어디까지나 엔티티를 의미하는 것이다. 따라서, 키 생성 알고리즘 Gen, 증명자 알고리즘 P를 실행하는 주체는 「증명자」의 엔티티에 대응하는 정보 처리 장치이다. 마찬가지로 검증자 알고리즘 V를 실행하는 주체는 정보 처리 장치이다. 이들 정보 처리 장치의 하드웨어 구성은, 예를 들어 도 21에 도시한 바와 같다. 즉, 키 생성 알고리즘 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 112013005144147-pct00001
(증명자 알고리즘 P)
증명자 알고리즘 P는 증명자에 의해 이용된다. 그리고, 증명자 알고리즘 P는 공개 키 pk에 대응하는 비밀 키 sk를 보유하고 있는 것을 증명하는 알고리즘이다. 증명자 알고리즘 P는 증명자의 비밀 키 sk와 공개 키 pk를 입력으로 하여, 검증자와의 대화 프로토콜을 실행하는 알고리즘으로서 정의된다.
(검증자 알고리즘 V)
검증자 알고리즘 V는 검증자에 의해 이용된다. 그리고, 검증자 알고리즘 V는 대화 프로토콜 중에서 공개 키 pk에 대응하는 비밀 키 sk를 증명자가 보유하고 있는지 여부를 검증하는 알고리즘이다. 검증자 알고리즘 V는 증명자의 공개 키 pk를 입력으로 하여, 증명자와의 사이에서 대화 프로토콜을 실행한 후, 0 또는 1(1bit)을 출력하는 알고리즘으로서 정의된다. 또한, 출력 0의 경우에는 증명자가 부정한 것으로 하고, 출력 1의 경우에는 증명자가 정당한 것으로 한다.
(보충)
상기한 바와 같이, 공개 키 인증 방식은 안전성을 확보하기 위하여 건전성과 제로 지식성이라고 하는 2가지 조건을 만족하는 것이 요구된다. 그러나, 증명자가 비밀 키 sk를 보유하고 있는 것을 증명자에게 증명시키기 위해서는, 증명자가 비밀 키 sk에 의존한 수속을 실행하고, 그 결과를 검증자에게 통지하여, 그 통지 내용에 기초하는 검증을 검증자에게 실행시킬 필요가 있다. 비밀 키 sk에 의존한 수속을 실행하는 것은 건전성을 담보하기 위하여 필요하다. 한편, 이 수속의 결과를 검증자에게 통지하여도 비밀 키 sk의 정보가 일절 검증자에게 누설되지 않도록 할 필요가 있다. 그로 인해, 이들 요건을 만족하도록 상기의 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V가 설계된다.
이상, 공개 키 인증 방식의 알고리즘 구성에 대하여 설명하였다.
[1-2: n 패스의 공개 키 인증 방식에 대하여]
이어서, 도 2를 참조하면서 n 패스의 공개 키 인증 방식에 대하여 설명한다. 도 2는 n 패스의 공개 키 인증 방식에 대하여 설명하기 위한 설명도이다.
상기한 바와 같이, 공개 키 인증 방식은, 대화 프로토콜 중에서 증명자가 공개 키 pk에 대응하는 비밀 키 sk를 보유하고 있는 것을 검증자에게 증명하는 인증 방식이다. 또한, 공개 키 인증 방식의 안전성을 담보하기 위하여, 건전성과 제로 지식성이라고 하는 2가지 조건을 만족할 필요가 있다. 그로 인해, 대화 프로토콜 중에서는, 도 2에 도시한 바와 같이, 증명자와 검증자의 쌍방이 각각 처리를 실행하면서 증명자와 검증자의 사이에서 n회의 정보 교환이 행해진다.
n 패스의 공개 키 인증 방식의 경우, 증명자 알고리즘 P를 사용하여 증명자에 의해 처리(Step.1)가 실행되고, 정보 T1이 검증자에게 송신된다. 계속해서, 검증자 알고리즘 V를 사용하여 검증자에 의해 처리(Step.2)가 실행되고, 정보 T2가 증명자에게 송신된다. 마찬가지로 하여 처리(Step.3 내지 Step.n)가 실행되어 정보 T3, …, Tn이 송신되고, 처리(Step.n+1)가 실행된다. 이와 같이 정보가 n회 송수신되는 대화 프로토콜에 기초하는 공개 키 인증 방식을 「n 패스」의 공개 키 인증 방식이라고 칭한다.
이상, n 패스의 공개 키 인증 방식에 대하여 설명하였다.
[1-3: SSH10a 공개 키 인증 방식의 대화 프로토콜]
이어서, 도 3을 참조하면서 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대하여 설명한다. 도 3은 SSH10a 공개 키 인증 방식의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 또한, SSH10a 공개 키 인증 방식이란, 본건 발명자(사꾸모또, 시라이, 히와따시)에 의해 고안된 다차(multi-order) 다변수 연립 방정식의 해답 문제에 기초하는 공개 키 인증 방식 중 하나이다. 또한, 이 SSH10a 공개 키 인증 방식은 3 패스의 공개 키 인증 방식의 일례이다.
또한, 다차 다변수 연립 방정식의 해답 문제란, 환(ring) K 상의 m개의 n 변수 다차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 벡터 y∈Km이 제공되었을 때, (f1(s1, …, sn), …, fm(s1, …, sn))=y가 되는 벡터 (s1, …, sn)∈Kn을 구하는 문제이다. 2차 이상의 다변수 연립 방정식의 해답 문제는 NP 곤란 문제로 불리며, 푸는 것이 매우 곤란한 문제의 클래스에 속한다.
그런데, SSH10a 공개 키 인증 방식의 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 벡터 s=(s1, …, sn)∈Kn을 생성한다. 이어서, 키 생성 알고리즘 Gen은 y=(y1, …, ym)←(f1(s), …, fm(s))를 계산한다. 그리고, 키 생성 알고리즘 Gen은 (f1, …, fm, y)를 공개 키 pk로 설정하고, s를 비밀 키로 설정한다. 또한, 이하에서는 n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 3을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. SSH10a 공개 키 인증 방식의 대화 프로토콜은 「증명자가 y=F(s)를 만족하는 s를 알고 있는 것」을 s의 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
여기서, 2차 다항식의 성질에 대하여 언급해 두고자 한다.
m개의 n 변수 2차 다항식의 조 (f1(x), …, fm(x))는 하기 식 (2)와 같이 표현할 수 있다. 단, x=(x1, …, xn)은 n개의 변수를 나타내는 벡터이다. 또한, A1, …, Am은 n×n 행렬이다. 또한, b1, …, bm은 n×1 벡터이다. 그리고, c는 m×1 벡터이다.
Figure 112013005144147-pct00002
이 표현을 사용하면, 다항식의 조 F는 하기 식 (3) 및 식 (4)와 같이 표현할 수 있다. 이 표현이 성립하는 것은 하기 식 (5)로부터 용이하게 확인할 수 있다.
Figure 112013005144147-pct00003
Figure 112013005144147-pct00004
Figure 112013005144147-pct00005
이렇게 F(x1+x2)를 x1에 의존하는 부분과 x2에 의존하는 부분과 x1, x2의 양쪽에 의존하는 부분의 3개로 나누었을 때, x1과 x2의 양쪽에 의존하는 부분 Fb(x1, x2)는 x1, x2에 대하여 쌍선형 사상(bilinear map)이 된다. 또한, 이하에서 설명하는 SSH10a 공개 키 인증 방식은, 상기와 같은 2차 다항식의 성질을 이용한 것이다.
다시 SSH10a 공개 키 인증 방식의 대화 프로토콜(도 3을 참조)에서의 증명자 알고리즘 P, 검증자 알고리즘 V의 설명으로 되돌아간다.
Step.1:
우선, 증명자 알고리즘 P는 임의로 수 w를 선택한다. 계속해서, 증명자 알고리즘 P는 의사 난수 생성기 G1에 수 w를 적용하여 벡터 r∈Kn과 수 w'를 생성한다. 즉, 증명자 알고리즘 P는 (r, w')←G1(w)를 계산한다. 계속해서, 증명자 알고리즘 P는 의사 난수 생성기 G2에 수 w'를 적용하여 2개의 벡터 t∈Kn, e∈Km을 생성한다. 즉, 증명자 알고리즘 P는 (t, e)←G2(w')를 계산한다. 계속해서, 증명자 알고리즘 P는 z←s-r을 계산한다. 이 계산은 비밀 키 s를 벡터 r에 의해 마스크하는 조작에 상당한다. 또한, 증명자 알고리즘 P는 t'←r+t를 계산한다. 계속해서, 증명자 알고리즘 P는 e'←F(r)-c+e를 계산한다.
계속해서, 증명자 알고리즘 P는 상기의 식 (3) 및 식 (4)에 나타낸 함수 Fb의 정의에 기초하여 Fb(z, t)를 산출하고, Fb(z, t)+e와 z의 해시값(hash value) c1을 생성한다. 즉, 증명자 알고리즘 P는 c1←H1(Fb(z, t)+e, z)를 계산한다. 또한, 증명자 알고리즘 P는 수 w'의 해시값 c2를 생성한다. 즉, 증명자 알고리즘 P는 c2←H2(w')를 계산한다. 또한, 증명자 알고리즘 P는 2개의 벡터 t'와 e'의 해시값 c3을 생성한다. 즉, 증명자 알고리즘 P는 c3←H3(t', e')를 계산한다.
계속해서, 증명자 알고리즘 P는 St←(F, y, s, r, t, e, z, t', e') 및 Cmt←(c1, c2, c3)을 설정한다. 그리고, Step.1에서 생성된 Cmt는 검증자(검증자 알고리즘 V)에게 보내진다. 또한, 상기의 H1(…), H2(…), H3(…)은 해시 함수이다. 또한, Step.1에서의 상기의 조작을 (Cmt;St)←Pa,1(F, y, s;r, t, e)로 표현하기로 한다.
Step.2:
Cmt를 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 Ch∈R{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
Ch를 수취한 증명자 알고리즘 P는 검증자 알고리즘 V로부터 수취한 챌린지 Ch에 따라 검증자 알고리즘 V로 되돌려지는 회답 Rsp를 생성한다. 만약 Ch=0의 경우, 증명자 알고리즘 P는 회답 Rsp←(r, t, e)를 생성한다. 또한, Ch=1의 경우, 증명자 알고리즘 P는 회답 Rsp=(z, t, e)를 생성한다. 그리고, Ch=2의 경우, 증명자 알고리즘 P는 회답 Rsp=(z, t', e')를 생성한다. 또한, Step.3에서의 상기의 조작을 Rsp←Pa,2(Ch;St)로 표현하기로 한다. 또한, Step.3에서 생성된 Rsp는 검증자(검증자 알고리즘 V)에게 보내진다.
Step.4:
Rsp를 수취한 검증자 알고리즘 V는 수취한 Rsp에 대하여 다음의 어느 하나의 검증을 실행한다.
Ch=0의 경우, 검증자 알고리즘 V는 (r'', t'', e'')←Rsp를 실행한다. 계속해서, 검증자 알고리즘 V는 c2=H2(t'', e'') 및 c3=H3(r''+t'', F(r'')-c+e'')가 성립하는지 여부를 검증한다.
Ch=1의 경우, 검증자 알고리즘 V는 (z'', t'', e'')←Rsp를 실행한다. 계속해서, 검증자 알고리즘 V는 c1=H1(Fb(z'', t'')+e'', z'') 및 c2=H2(t'', e'')가 성립하는지 여부를 검증한다.
Ch=2의 경우, 검증자 알고리즘 V는 (z'', t''', e''')←Rsp를 실행한다. 계속해서, 검증자 알고리즘 V는 c1=H1(F(z'')+Fb(z'', t''')+e'''-y, z'') 및 c3=H3(t''', e''')가 성립하는지 여부를 검증한다.
또한, Step.4에서의 검증의 조작을 0/1←Deca(F, y;Cmt, Ch, Rsp)로 표현하기로 한다. 이 조작에 있어서 출력 1은 검증의 성공을 나타내고, 출력 0은 검증의 실패를 나타내는 것으로 한다.
이상, SSH10a 공개 키 인증 방식에서의 증명자 알고리즘 P 및 검증자 알고리즘 V의 처리 내용에 대하여 설명하였다. 또한, 상기의 방식에서는 해시 함수 H1, H2, H3을 사용하여 c1, c2, c3을 계산하고 있지만, 해시 함수 H1, H2, H3 대신에 커미트먼트(commitment) 함수 COM을 사용하여도 된다. 또한, 본 명세서를 통하여 해시 함수를 이용하고 있는 개소를 커미트먼트 함수 COM으로 치환하여도 된다.
커미트먼트 함수 COM은 문자열 S와 난수 ρ의 2개를 인수로 취하는 함수이다. 커미트먼트 함수의 예로서는 Shai Halevi와 Silvio Micali에 의해 국제 회의 CRYPTO1996에서 발표된 방식 등이 있다. 커미트먼트 함수를 사용하는 경우, c1, c2, c3을 계산하기 전에 난수 ρ1, ρ2, ρ3을 준비하고, 해시 함수 H1(ㆍ), H2(ㆍ), H3(ㆍ)을 적용하는 대신에 커미트먼트 함수 COM(ㆍ, ρ1), COM(ㆍ, ρ2), COM(ㆍ, ρ3)을 적용하여 c1, c2, c3을 생성한다. 또한, ρi는 회답에 포함시켜 증명자 알고리즘 P로부터 검증자 알고리즘 V에게로 보내진다.
[1-4: SSH10b 공개 키 인증 방식의 대화 프로토콜]
이어서, 도 4를 참조하면서 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대하여 설명한다. 도 4는 SSH10b 공개 키 인증 방식의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 또한, SSH10b 공개 키 인증 방식이란, 본건 발명자(사꾸모토, 시라이, 히와따시)에 의해 고안된 다차 다변수 연립 방정식의 해답 문제에 기초하는 공개 키 인증 방식 중 하나이다. 또한, 이 SSH10b 공개 키 인증 방식은 5 패스의 공개 키 인증 방식의 일례이다.
SSH10b 공개 키 인증 방식의 대화 프로토콜은, SSH10a 공개 키 인증 방식의 대화 프로토콜과 마찬가지로 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 벡터 s=(s1, …, sn)∈Kn을 생성한다. 이어서, 키 생성 알고리즘 Gen은 y=(y1, …, ym)←(f1(s), …, fm(s))를 계산한다. 그리고, 키 생성 알고리즘 Gen은 (f1, …, fm, y)를 공개 키 pk로 설정하고, s를 비밀 키로 설정한다. 또한, 이하에서는 n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 4를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. SSH10b 공개 키 인증 방식의 대화 프로토콜은 「증명자가 y=F(s)를 만족하는 s를 알고 있는 것」을 s의 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
SSH10b 공개 키 인증 방식의 대화 프로토콜은, 도 4에 도시하는 Step.1 내지 Step.6의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 임의로 수 w를 선택한다. 계속해서, 증명자 알고리즘 P는 의사 난수 생성기 G에 수 w를 적용하여 벡터 r∈Kn, t∈Kn, e∈Km을 생성한다. 즉, 증명자 알고리즘 P는 (r, t, e)←G(w)를 계산한다. 계속해서, 증명자 알고리즘 P는 z←s-r을 계산한다. 이 계산은 비밀 키 s를 벡터 r에 의해 마스크하는 조작에 상당한다.
계속해서, 증명자 알고리즘 P는 Fb(z, t)+e와 z의 해시값 c1을 생성한다. 즉, 증명자 알고리즘 P는 c1←H1(Fb(z, t)+e, z)를 계산한다. 또한, 증명자 알고리즘 P는 벡터 r, t, e의 해시값 c2를 생성한다. 즉, 증명자 알고리즘 P는 c2←H2(r, t, e)를 계산한다. 또한, 상기의 H1(…), H2(…)은 해시 함수이다.
계속해서, 증명자 알고리즘 P는 StA←(F, y, s, r, t, e, z) 및 CmtA←(c1, c2)를 설정한다. 그리고, Step.1에서 생성된 CmtA는 검증자(검증자 알고리즘 V)에게 보내진다. 또한, 상기의 H1(…), H2(…)은 해시 함수이다. 또한, Step.1에서의 상기의 조작을 (CmtA;StA)←Pb,1(F, y, s;r, t, e)로 표현하기로 한다.
Step.2:
CmtA를 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 1개의 난수 α를 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 ChA=α를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
ChA를 수취한 증명자 알고리즘 P는 t'←αr+t를 계산한다. 또한, 증명자 알고리즘 P는 e'←α(F(r)-c)+e를 계산한다. 그리고, 증명자 알고리즘 P는 StB←(StA, ChA, t', e') 및 CmtB←(t', e')를 설정한다. 또한, 증명자 알고리즘 P는 CmtB를 검증자(검증자 알고리즘 V)에게 보낸다. 또한, Step.3에서의 상기의 조작을 (CmtB;StB)←Pb,2(ChA;StA)로 표현하기로 한다.
Step.4:
CmtB를 수취한 검증자 알고리즘 V는 2개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 ChBR{0, 1}을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.5:
ChB를 수취한 증명자 알고리즘 P는 검증자 알고리즘 V로부터 받은 챌린지 ChB에 따라 검증자(검증자 알고리즘 V)에게 되돌리는 회답 Rsp를 다음과 같이 하여 생성한다. ChB=0의 경우, 증명자 알고리즘 P는 Rsp←r로 설정한다. ChB=1의 경우, 증명자 알고리즘 P는 Rsp←z로 설정한다. 그리고, 증명자 알고리즘 P는 회답 Rsp를 검증자(검증자 알고리즘 V)에게 보낸다. 또한, Step.5에서의 상기의 조작을 Rsp←Pb,3(ChB;StB)로 표현하기로 한다.
Step.6:
회답 Rsp를 수취한 검증자 알고리즘 V는 증명자(증명자 알고리즘 P)로부터 수취한 회답 Rsp를 이용하여 이하의 검증 처리를 실행한다.
ChB=0의 경우, 검증자 알고리즘 V는 r''←Rsp로서 c2=H2(r'', t'-αr'', e'-α(F(r'')-c))가 성립하는지 여부를 검증한다.
ChB=1의 경우, 검증자 알고리즘 V는 z''←Rsp로서 c1=H1(α(F(z'')-y)+Fb(z'', t')+e', z'')가 성립하는지 여부를 검증한다.
또한, Step.6에서의 검증의 조작을 0/1←Decb(F, y;CmtA, ChA, CmtB, ChB, Rsp)로 표현하기로 한다. 이 조작에 있어서 출력 1은 검증의 성공을 나타내고, 출력 0은 검증의 실패를 나타내는 것으로 한다.
이상, SSH10b 공개 키 인증 방식에서의 증명자 알고리즘 P 및 검증자 알고리즘 V의 처리 내용에 대하여 설명하였다. 또한, 상기의 방식에서는 해시 함수 H1, H2를 사용하여 c1, c2를 계산하고 있지만, 해시 함수 H1, H2 대신에 커미트먼트 함수 COM을 사용하여도 된다.
[1-5: 대화 프로토콜의 반복 구성]
그런데, 상기의 SSH10a 공개 키 인증 방식의 대화 프로토콜을 적용하면, 위증이 성공할 확률을 2/3 이하로 억제할 수 있다. 따라서, 이 대화 프로토콜을 2회 실행하면, 위증이 성공할 확률을 (2/3)2 이하로 억제할 수 있다. 마찬가지로 이 대화 프로토콜을 N회 실행하면, 위증이 성공할 확률은 (2/3)N이 되며, N을 충분히 큰 수(예를 들어, N=140)로 하면 위증이 성공할 확률은 무시할 수 있을 정도로 작아진다.
마찬가지로, 상기의 SSH10b 공개 키 인증 방식의 대화 프로토콜을 적용하면, 위증이 성공할 확률을 (1/2+1/2q) 이하로 억제할 수 있다. 따라서, 이 대화 프로토콜을 2회 실행하면, 위증이 성공할 확률을 (1/2+1/2q)2 이하로 억제할 수 있다. 마찬가지로, 이 대화 프로토콜을 N회 실행하면, 위증이 성공할 확률은 (1/2+1/2q)N이 되며, N을 충분히 큰 수(예를 들어, N=80)로 하면 위증이 성공할 확률은 무시할 수 있을 정도로 작아진다.
또한, SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식에 한정되지 않고, 상기의 비특허문헌 1 내지 3 등에 개시되어 있는 공개 키 인증 방식에 있어서도 마찬가지이지만, 대화 프로토콜을 1회 실행한 경우의 위증 성공 확률이 충분히 작지 않은 경우, 대화 프로토콜을 반복 실행하여 위증 성공 확률을 낮출 필요가 있다. 대화 프로토콜을 반복 실행하는 방법으로서는, 도 5에 도시한 직렬적 반복 구성과 도 6에 도시한 병렬적 반복 구성이 있다.
직렬적 반복 구성은, 도 5에 도시한 바와 같이 대화 프로토콜을 1회 실행하고, 1회째가 종료된 후에 2회째를, 2회째가 종료된 후에 3회째를 실행하는 등의 형태로, 순차적으로 대화 프로토콜을 실행하는 방법이다. 한편, 병렬적 반복 구성은, 도 6에 도시한 바와 같이 N회분의 1 패스째의 메시지 m1,1, …, mN,1을 동시에 송신하고, 다음에 N회분의 2 패스째의 메시지 m1,2, …, mN,2를 동시에 송신하고, 다음에 N회분의 3 패스째의 메시지 m1,3, …, mN,3을 동시에 송신하는 등의 형태로, 각 패스에 있어서 N회분의 메시지를 동시 송신하는 방법이다.
그런데, 상기의 비특허문헌 1 내지 3에 개시되어 있는 공개 키 인증 방식, SSH10a 공개 키 인증 방식 및 SSH10b 공개 키 인증 방식은 수동적 공격에 대한 안전성 레벨을 보증하고 있다. 그러나, 이들 공개 키 인증 방식은 병렬적 반복 구성을 행한 경우, 능동적 공격에 대한 안전성 레벨을 확실하게 보증하고 있는지 여부가 알려져 있지 않다. 이들 공개 키 인증 방식은 1조의 키 페어(공개 키 y, 비밀 키 s)를 사용하여 「y에 대하여 y=F(s)가 되는 s를 알고 있는 것」을 증명자가 검증자에 대하여 증명하는 방식이었다.
그로 인해, 검증에 의해 수리되는 대화를 행한 경우, 「대화를 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알리게 되는 것을 피할 수 없었다. 또한, 이들 방식에서 사용하는 F는 충돌 곤란성이 보증되어 있지 않다. 그 결과, 이들 공개 키 인증 방식은 병렬적 반복 구성을 행한 경우, 능동적 공격에 대한 안전성 레벨을 확실하게 보증하고 있는지 여부가 알려져 있지 않았던 것이다. 특히, 이들 공개 키 인증 방식을 상기의 병렬적 반복 구성에 의해 실시하는 경우에는 능동적 공격에 대한 안전성 레벨을 보증하기 위한 수단이 알려져 있지 않았다.
따라서, 본건 발명자는 이들 공개 키 인증 방식을 상기의 병렬적 반복 구성에 의해 실시할 때에 능동적 공격에 대한 안전성 레벨이 보증되도록 하는 구조를 고안하였다. 이 구조 (본 방법 #1, #2)에 대해서는, 후단에 있어서 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식을 예로 들어 상세하게 설명한다.
[1-6: SSH10a 공개 키 인증 방식에 대한 위증 알고리즘]
여기서, 도 7을 참조하면서 SSH10a 공개 키 인증 방식(1회의 대화 프로토콜)에 있어서 2/3의 확률로 성공하는 위증 알고리즘에 대하여 생각해 보고자 한다. 도 7은 SSH10a 공개 키 인증 방식(1회의 대화 프로토콜)에 있어서 2/3의 확률로 성공하는 위증 알고리즘에 대하여 설명하기 위한 설명도이다. 이 위증 알고리즘은 위증자가 검증자에 대하여 「y=F(s)를 만족하는 s를 알고 있는 체」를 하는 알고리즘이다. 단, 이 위증 알고리즘을 적용하여도 1/3의 확률로 위증이 실패한다.
Step.1:
우선, 위증자(위증 알고리즘)는 벡터 s, r, t∈Kn, e∈Km을 생성한다. 계속해서, 위증 알고리즘은 Ch*∈{0, 1, 2}를 임의로 선택한다. 이 Ch*은 위증 알고리즘을 회답할 수 없는 검증 패턴에 대응한다. 또한, 여기에서 사용하는 s는 정당한 비밀 키가 아니다. 그러나, 증명자(증명자 알고리즘 P)는 Ch* 이외의 검증 패턴이면 정당한 비밀 키를 이용하지 않고 정확하게 회답할 수 있다.
이어서, 위증 알고리즘은 z←s-r, t'←r+t를 계산한다. 또한, 위증 알고리즘은 Ch*=0의 경우, e'←y-F(s)+F(r)-c+e를 계산한다. 한편, Ch*=1, 2의 경우, 위증 알고리즘은 e'←F(r)-c+e를 계산한다. 계속해서, 위증 알고리즘은 Ch*=0, 2의 경우, c1←H1(Fb(z, t)+e, z)를 계산한다. 한편, Ch*=1의 경우, 위증 알고리즘은 c1←H1(F(z)+Fb(z, t')+e'-y, z)를 계산한다.
계속해서, 위증 알고리즘은 c2←H2(t, e), c3←H3(t', e')를 계산한다. 그리고, 위증 알고리즘은 St←(Ch*, F, y, s, r, t, e, z, t', e') 및 Cmt←(c1, c2, c3)을 설정한다. 계속해서, 위증 알고리즘은 Cmt를 검증자(검증자 알고리즘 V)에게 보낸다. 또한, Step.1에서의 상기의 조작을 (Cmt;St)←Ma,1(F, y;Ch*, s, r, t, e)로 표현하기로 한다.
Step.2:
Cmt를 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 Ch∈R{0, 1, 2}를 위증자(위증 알고리즘)에게 보낸다.
Step.3:
Ch를 수취한 위증 알고리즘은 검증자 알고리즘 V로부터 수취한 챌린지 Ch에 따라 검증자 알고리즘 V에게 되돌리는 회답 Rsp를 생성한다. 또한, Ch=Ch*의 경우, 위증 알고리즘은 에러를 출력하여 대화 프로토콜을 종료한다. Ch≠Ch*이며 Ch=0의 경우, 위증 알고리즘은 회답 Rsp←(r, t, e)를 생성한다. 또한, Ch=1의 경우, 위증 알고리즘은 회답 Rsp=(z, t, e)를 생성한다. 그리고, Ch=2의 경우, 위증 알고리즘은 회답 Rsp=(z, t', e')를 생성한다.
또한, Step.3에서의 상기의 조작을 Rsp←Ma,2(Ch;St)로 표현하기로 한다. 또한, Step.3에서 생성된 Rsp는 검증자(검증자 알고리즘 V)에게 보내진다.
Step.4:
Ch≠Ch*의 경우, 회답 Rsp가 검증자 알고리즘 V에 보내지기 때문에, 검증자 알고리즘 V에 의해 검증 처리 0/1←Deca(F, y;Cmt, Ch, Rsp)가 실시된다.
이상, SSH10a 공개 키 인증 방식에 대한 위증 알고리즘에 대하여 설명하였다. 이와 같이 s를 임의로 선택하였다고 하여도 2/3의 확률(Ch≠Ch*이 될 확률)로 검증을 통과하는 Rsp를 검증자에게 되돌릴 수 있다. 따라서, 1회의 대화 프로토콜에 있어서 2/3의 확률로 위증이 성공해 버린다. 따라서, 앞서 설명한 반복 구성이 적용된다.
[1-7: SSH10b 공개 키 인증 방식에 대한 위증 알고리즘]
이어서, 도 8을 참조하면서 SSH10b 공개 키 인증 방식(1회의 대화 프로토콜)에 있어서 1/2의 확률로 성공하는 위증 알고리즘에 대하여 생각해 보고자 한다. 도 8은 SSH10b 공개 키 인증 방식(1회의 대화 프로토콜)에 있어서 1/2의 확률로 성공하는 위증 알고리즘에 대하여 설명하기 위한 설명도이다. 이 위증 알고리즘은 위증자가 검증자에 대하여 「y=F(s)를 만족하는 s를 알고 있는 체」를 하는 알고리즘이다. 단, 이 위증 알고리즘을 적용하여도 1/2의 확률로 위증이 실패한다.
Step.1:
우선, 위증 알고리즘은 벡터 s, r, t∈Kn, e∈Km을 생성한다. 계속해서, 위증 알고리즘은 Ch* B∈{0, 1}을 선택한다. 이 Ch* B는 i0의 계열에 대하여 위증자(위증 알고리즘)가 회답할 수 없는 검증 패턴에 대응한다. 또한, 여기에서 사용하는 si0은 정당한 비밀 키는 아니지만, 위증 알고리즘은 Ch* B 이외의 검증 패턴에 대해서는 정당한 비밀 키를 이용하지 않고 정확하게 회답할 수 있다.
계속해서, 위증 알고리즘은 z←s-r을 계산한다. 계속해서, 위증 알고리즘은 c1←H1(Fb(z, t)+e, z) 및 c2←H2(r, t, e)를 계산한다. 계속해서, 위증 알고리즘은 StA←(F, y, Ch* B, s, r, t, e, z) 및 CmtA←(c1, c2)를 설정한다. 그리고, Step.1에서 생성된 CmtA는 검증자(검증자 알고리즘 V)에게 보내진다. 또한, 상기의 H1(…), H2(…)은 해시 함수이다. 또한, Step.1에서의 상기의 조작을 (CmtA;StA)←Mb,1(F, y;Ch* B, s, r, t, e)로 표현하기로 한다.
Step.2:
CmtA를 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 1개의 난수 α를 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 ChA=α를 위증자(위증 알고리즘)에게 보낸다.
Step.3:
ChA를 수취한 위증 알고리즘은 t'←αr+t를 계산한다. 또한, 위증 알고리즘은 Ch* B=1의 경우, e'←α(F(r)-c)+e를 계산한다. 한편, Ch* B=0의 경우, 위증 알고리즘은 e'←α(y-F(s)+F(r)-c)+e를 계산한다. 그리고, 위증 알고리즘은 StB←(StA, ChA, t', e') 및 CmtB←(t', e')를 설정한다. 또한, 위증 알고리즘은 CmtB를 검증자(검증자 알고리즘 V)에게 보낸다. 또한, Step.3에서의 상기의 조작을 (CmtB;StB)←Mb,2(ChA;StA)로 표현하기로 한다.
Step.4:
CmtB를 수취한 검증자 알고리즘 V는 2개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 ChBR{0, 1}을 위증자(위증 알고리즘)에게 보낸다.
Step.5:
ChB를 수취한 위증 알고리즘은 ChB=Ch* B의 경우, 에러를 출력하여 대화 프로토콜을 종료한다. ChB≠Ch* B의 경우, 위증 알고리즘은 검증자 알고리즘 V로부터 받은 챌린지 ChB에 따라 검증자(검증자 알고리즘 V)에게 되돌리는 회답 Rsp를 다음과 같이 하여 생성한다.
ChB=0의 경우, 위증 알고리즘은 Rsp←r로 설정한다. ChB=1의 경우, 위증 알고리즘은 Rsp←z로 설정한다. 그리고, 위증 알고리즘은 회답 Rsp를 검증자(검증자 알고리즘 V)에게 보낸다. 또한, Step.5에서의 상기의 조작을 Rsp←Mb,3(ChB;StB)로 표현하기로 한다.
Step.6:
ChB≠Ch* B의 경우, 회답 Rsp가 검증자 알고리즘 V에 보내지기 때문에, 검증자 알고리즘 V에 의해 검증 처리 0/1←Decb(F, y;CmtA, ChA, CmtB, ChB, Rsp)가 실시된다.
이상, SSH10b 공개 키 인증 방식에 대한 위증 알고리즘에 대하여 설명하였다. 이와 같이 s를 임의로 선택하였다고 하여도 1/2의 확률(ChB≠Ch* B가 될 확률)로 검증을 통과하는 Rsp를 검증자에게 되돌릴 수 있다. 따라서, 1회의 대화 프로토콜에 있어서 1/2의 확률로 위증이 성공해 버린다. 따라서, 앞서 설명한 반복 구성이 적용된다.
(보충)
여기까지 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식, 그의 위증 알고리즘 및 대화 프로토콜의 반복 구성에 대하여 설명하였다. 이들 공개 키 인증 방식은 1조의 키 페어(공개 키 y, 비밀 키 s)를 사용하여 「y에 대하여 y=F(s)가 되는 s를 알고 있는 것」을 증명자가 검증자에 대하여 증명하는 방식이다. 그로 인해, 검증에 의해 수리되는 대화를 행한 경우, 「검증을 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알리게 되는 것을 피할 수 없었다. 또한, 이들 방식에서 사용하는 F는 충돌 곤란성이 보증되어 있지 않다. 그 결과, 이들 공개 키 인증 방식은 병렬적 반복 구성을 행한 경우, 능동적 공격에 대한 안전성 레벨을 확실하게 보증하고 있는지 여부가 알려져 있지 않았다.
따라서, 본건 발명자는 이들 공개 키 인증 방식을 상기의 병렬적 반복 구성에 의해 실시할 때에 능동적 공격에 대한 안전성 레벨이 보증되도록 하는 구조를 고안하였다. 이하, 이 구조에 대하여 구체예를 들어 상세하게 설명한다.
<2: 제1 실시 형태(본 방법 #1)>
우선, 본 발명의 제1 실시 형태(이하, 본 방법 #1)에 대하여 설명한다.
[2-1: 개요]
본 방법 #1은 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식에 대하여 병렬적 반복 구성을 행한 경우에도 능동적 공격에 대한 안전성 레벨이 보증되도록 하는 구조를 적용한 것이다. 반복하게 되지만, 능동적 공격에 대한 안전성 레벨이 보증되어 있는지 여부가 알려져 있지 않았던 이유는, 이용하는 함수 F의 충돌 곤란성이 보증되지 않는 데다가 「검증을 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알리게 되는 것을 피할 수 없었기 때문이다. 따라서, 대화 프로토콜 중에서 「검증을 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알려지지 않도록 하면, 능동적 공격에 대한 안전성 레벨을 보증할 수 있다.
따라서, 본건 발명자는 비밀 키 s, 공개 키 y를 다중화하는 방식을 고안하였다. 이 방식은 L개(L≥2)의 s1, …, sL∈Kn을 비밀 키로 하고, m개의 n 변수 다차 다항식 F(x)=(f1(x), …, fm(x))에 대하여 (y1, …, yL)=(F(s1), …, F(sL))을 만족하는 y1, …, yL∈Km을 공개 키로 한다. 또한, 이 방식은 「i=1, …, L 중 L-1개의 i에 대하여 yi=F(si)가 되는 si를 알고 있는 것」을 어느 si를 대화 프로토콜 중에서 사용하였는지를 알 수 없도록 증명하는 방식이다. 이 방식을 적용하면, 대화 프로토콜 중에서 「어느 si를 이용하였는지」에 관한 정보가 누설되지 않기 때문에, 능동적 공격에 대한 안전성 레벨이 보증되는 것이다.
본 방법 #1의 방식은 검증자가 i=1, …, L에 대하여 챌린지 Ch1, …, ChL(검증 패턴)을 증명자에 대하여 송신하고, 챌린지 Ch1, …, ChL을 수취한 증명자가 L-1개의 챌린지 Chi를 선택하여 회답한다고 하는 것이다. 이 방식을 이용하면, s1, …, sL을 알고 있는 증명자는 L개의 모든 챌린지 Chi에 대하여 회답할 수 있지만, s1, …, sL을 알지 못하는 위증자는 어느 정도의 확률로 위증이 실패한다. 또한, 증명자는 L-1개의 챌린지 Chi에 대하여 회답하면 되므로, 어느 1개의 챌린지 Chi에 대해서는 si를 사용하지 않고 인증을 성립시킬 수 있다. 즉, 대화 프로토콜 중에서 어느 si를 사용하였는지 여부가 검증자에게는 알려지지 않는 것이다.
[2-2: SSH10a 공개 키 인증 방식에의 적용]
우선, 도 9를 참조하면서 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명한다. 도 9는 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 9를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #1의 대화 프로토콜은 「증명자가 L-1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 9에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (Cmti;Sti)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 Cmt1, …, CmtL을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
Cmt1, …, CmtL을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 Ch1, …, ChLR{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
Ch1, …, ChL을 수취한 증명자 알고리즘 P는 i=1, …, L로부터 1개만 회답하지 않는 챌린지 Chi의 인덱스 i(이하, i*)를 랜덤하게 선택한다. 계속해서, 증명자 알고리즘 P는 i∈{1, …, L}\{i*}에 대하여 Rspi←Pa,2(Chi;Sti)를 계산한다. 그리고, 증명자 알고리즘 P는 (Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)를 수취한 검증자 알고리즘 V는 i∈{1, …, L}\{i*}에 대하여 0/1←Deca(F, yi;Cmti, Chi, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, …, L}\{i*}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하였다. 이 대화 프로토콜은 SSH10a 공개 키 인증 방식의 안전성에 의해, si를 갖지 않는 위증자가 i=1, …, L에 대하여 각각 2/3 이하의 확률로만 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 수 있는 것이 보증되어 있다. 또한, 본 방법 #1을 적용한 것에 의해, L-1개 이상의 i에 대하여 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 필요가 있기 때문에, 위증이 성공할 확률은 (2/3)L+L(1/3)(2/3)L-1=(2+L)2L-1/3L이다.
또한, 상기의 대화 프로토콜에 있어서는 s1, …, sL 모두를 사용하고 있지만, L≤3의 경우이면 i=1, …, L의 1개에 대하여 si를 사용하지 않아도 어느 si를 사용하지 않았는지를 검증자에게 일절 알리지 않고 완전히 증명자와 마찬가지의 거동을 행하는 것이 가능하다. 따라서, 1개의 si를 사용하지 않고, 상기의 대화 프로토콜과 동일한 인증이 실현 가능한 대화 프로토콜(변형예 1 내지 3)에 대하여 설명한다.
[2-3: SSH10a 공개 키 인증 방식에의 적용(변형예 1)]
우선, 도 10을 참조하면서 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 1)에 대하여 설명한다. 도 10은 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 1)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 단, 검증자 알고리즘 V에 있어서, 앞서 설명한 위증 알고리즘의 구성이 이용된다. 또한, L=3의 경우에 대하여 설명한다. 또한, 사용하지 않는 si의 인덱스를 i0으로 한다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 단, si0은 적당히 선택한 벡터를 사용한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 단, yi0=F(si0)이 되는 것은 보증되어 있지 않아도 된다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 10을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 10에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, 2, 3에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 Ch*∈{0, 1, 2}를 1개 선택한다. 이 Ch*은 i0의 계열에 대하여 증명자가 회답할 수 없는 검증 패턴에 대응한다. 계속해서, 증명자 알고리즘 P는 i≠i0의 경우, (Cmti;Sti)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 한편, i=i0의 경우, 증명자 알고리즘 P는 (Cmti;Sti)←Ma,1(F, yi;Ch*, si, ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 Cmt1, Cmt2, Cmt3을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
Cmt1, Cmt2, Cmt3을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 Ch1, Ch2, Ch3R{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
Ch1, Ch2, Ch3을 수취한 증명자 알고리즘 P는 i=1, …, L로부터 1개만 회답하지 않는 챌린지 Chi의 인덱스 i(이하, i*)를 다음과 같이 하여 선택한다. Chi0=Ch*의 경우, 검증자 알고리즘 V는 i*←i0을 설정한다. 한편, Chi0≠Ch*의 경우, 검증자 알고리즘 V는 i*∈{1, 2, 3}\{i0}으로부터 랜덤하게 i*을 선택한다. 이 i*의 설정 방법을 이용하면, 검증자가 어떤 검증 패턴을 요구해 와도 i*은 각각 1/3의 확률로 1, 2, 3의 값을 취한다. 즉, i0이 1, 2, 3 중 어느 값이었는가와 같은 정보가 완전히 비닉(秘匿)되어 있는 것이다.
계속해서, 증명자 알고리즘 P는 i∈{1, 2, 3}\{i*}에 대하여 다음과 같이 Rspi를 계산한다. i≠i0의 경우, 증명자 알고리즘 P는 Rspi←Pa,2(Chi;Sti)를 계산한다. i=i0의 경우, 증명자 알고리즘 P는 Rspi←Ma,2(Chi;Sti)를 계산한다. 그리고, 증명자 알고리즘 P는 (Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)을 수취한 검증자 알고리즘 V는 i∈{1, 2, 3}\{i*}에 대하여 0/1←Deca(F, yi;Cmti, Chi, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, 2, 3}\{i*}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하였다. 여기에서는 L=3의 경우에 대하여 설명하였지만, L=2의 경우에 대해서도 마찬가지이다. 예를 들어, 다음과 같이 하여 i=1, 2로부터 1개만 이용하지 않는 i(i*)을 설정한다. Chi0=Ch*이면 i*=i0으로 설정한다. 한편, Chi0≠Ch*이면 1/4의 확률로 i*=i0으로 설정하고, 3/4의 확률로 i*≠i0으로 설정한다. 이렇게 설정하면, 검증자가 어떤 검증 패턴을 요구해 와도 i*은 각각 1/2의 확률로 1, 2의 값을 취한다. 그로 인해, i0이 1, 2의 어느 값이었는가와 같은 정보가 완전히 비닉된다.
[2-4: SSH10a 공개 키 인증 방식에의 적용(변형예 2)]
이어서, 도 11을 참조하면서 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 2)에 대하여 설명한다. 또한, 변형예 2는 도 9에 도시한 대화 프로토콜의 일 변형예이다. 도 11은 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 2)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 2개의 벡터 s1, s2∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), y2=F(s2)를 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, y2)를 공개 키 pk로 설정하고, (s1, s2)를 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 11을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #1의 대화 프로토콜은 「증명자가 1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 11에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 벡터 r1, t1∈Kn과 벡터 e1∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (Cmt1;St1)←Pa,1(F, y1, s1;r1, t1, e1), (Cmt2;St2)←Pa,1(F, y2, s2;r1, t1, e1)을 계산한다. 단, Cmt1=(c11, c12, c13), Cmt2=(c21, c12, c13)이 된다. 계속해서, 증명자 알고리즘 P는 c11, c12, c13, c21을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
c11, c12, c13, c21을 수취한 검증자 알고리즘 V는 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (Ch1, Ch2)∈{0, 1, 2}×{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
Ch1, Ch2를 수취한 증명자 알고리즘 P는 회답하는 챌린지 Chi의 인덱스 i를 랜덤하게 선택한다. 계속해서, 증명자 알고리즘 P는 선택한 i에 대하여 Rspi←Pa,2(Chi;Sti, r1, t1, e1)을 계산한다. 그리고, 증명자 알고리즘 P는 (Rspi, i)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
Rspi, i를 수취한 검증자 알고리즘 V는 0/1←Deca(F, yi;(ci1, c12, c13,), Chi, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 출력이 1인 경우(수리된 경우)에 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 2)에 대하여 설명하였다. 본 변형예는 Cmt1, St1, Cmt2, St2를 생성할 때에 사용하는 난수의 조 (r1, t1, e1)과 (r2, t2, e2)를 공통화하는 점에 특징이 있다. 이들 난수를 공통화함으로써, Cmt1=(c11, c12, c13), Cmt2=(c21, c22, c23)을 구성하는 요소 중 (c12, c13)과 (c22, c23)이 공통의 값이 된다. 그로 인해, 증명자로부터 검증자에게 Cmt1과 Cmt2를 보낼 때, 4개의 값 (c11, c12, c13, c21)만을 보내면 되어 통신량을 저감시키는 것이 가능하게 된다. 또한, 본 변형예의 경우, 3 패스째에 있어서 한쪽 계열에 관한 정보만 공개하므로, 상기와 같이 난수의 일부를 공통화하여도 제로 지식성은 손상되지 않는다.
[2-5: SSH10a 공개 키 인증 방식에의 적용(변형예 3)]
이어서, 도 12를 참조하면서 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 3)에 대하여 설명한다. 또한, 변형예 3은 도 11에 도시한 대화 프로토콜(변형예 2)의 일 변형예이다. 도 12는 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 3)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 2개의 벡터 s1, s2∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), y2=F(s2)를 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, y2)를 공개 키 pk로 설정하고, (s1, s2)를 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 12를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #1의 대화 프로토콜은 「증명자가 1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 12에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 벡터 r1, t1∈Kn과 벡터 e1∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (Cmt1;St1)←Pa,1(F, y1, s1;r1, t1, e1), (Cmt2;St2)←Pa,1(F, y2, s2;r1, t1, e1)을 계산한다. 단, Cmt1=(c11, c12, c13), Cmt2=(c21, c12, c13)이 된다. 계속해서, 증명자 알고리즘 P는 c11, c12, c13, c21을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
c11, c12, c13, c21을 수취한 검증자 알고리즘 V는 어느 검증 패턴을 이용할지를 선택한다. 이때, 검증자 알고리즘 V는 검증 패턴(챌린지의 조 (Ch1, Ch2))을 (Ch1, Ch2)∈{(0, 0), (1, 1), (1, 2), (2, 1), (2, 2)} 중에서 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (Ch1, Ch2)를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
Ch1, Ch2를 수취한 증명자 알고리즘 P는 회답하는 챌린지 Chi의 인덱스 i를 랜덤하게 선택한다. 계속해서, 증명자 알고리즘 P는 선택한 i에 대하여 Rspi←Pa,2(Chi;Sti, r1, t1, e1)을 계산한다. 그리고, 증명자 알고리즘 P는 (Rspi, i)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(Rspi, i)를 수취한 검증자 알고리즘 V는 0/1←Deca(F, yi;(ci1, c12, c13,), Chi, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 출력이 1인 경우(수리된 경우)에 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예 3)에 대하여 설명하였다. 본 변형예는 이용 가능한 검증 패턴을 (Ch1, Ch2)∈{(0, 0), (1, 1), (1, 2), (2, 1), (2, 2)}의 5 패턴에 한정하는 점에 특징이 있다.
상기한 바와 같이 Cmt1의 요소 (c12, c13)과 Cmt2의 요소 (c22, c23)이 공통화되어 있는 경우, Ch1=0에 대한 회답(c12, c13에 대한 회답)과 Ch2=0에 대한 회답(c22, c23에 대한 회답)은 공통이 된다. 그로 인해, 「(Ch1, Ch2)=(0, 0)에 회답할 수 있는 것」은 「Ch1=0과 Ch2=0의 양쪽에 회답할 수 있는 것」을 의미한다. 즉, (Ch1, Ch2)=(0, 0)에 회답할 수 있는 증명자는 (Ch1, Ch2)=(0, 1), (0, 2), (1, 0), (2, 0)의 어느 쪽에도 회답할 수 있게 된다. 따라서, 검증자는 (Ch1, Ch2)=(0, 0), (1, 1), (1, 2), (2, 1), (2, 2)의 5 패턴에 대하여 검증을 행하면 충분하다.
이러한 이유로부터 비밀 키 sk를 알지 못하는 한, 상기의 5 패턴 모두에 회답하는 것은 불가능한 것이 보증된다. 즉, 비밀 키 sk를 알지 못하는 자는 최대 4 패턴밖에 회답할 수 없게 되므로 위증 확률은 최대 4/5가 된다. 도 9에 도시한 대화 프로토콜의 경우, L=2에서의 위증 확률은 8/9이었다. 따라서, 변형예 3의 구성을 적용함으로써 위증 확률이 저감된다.
[2-6: SSH10b 공개 키 인증 방식에의 적용]
이어서, 도 13을 참조하면서 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명한다. 도 13은 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 13을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #1의 대화 프로토콜은 「증명자가 L-1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 13에 도시하는 Step.1 내지 Step.6의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (CmtA,i;StA,i)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtA,1, …, CmtA,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
(CmtA,1, …, CmtA,L)을 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 L개의 난수의 조 (α1, …, αL)을 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 (ChA,1, …, ChA,L)=(α1, …, αL)을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
(ChA,1, …, ChA,L)을 수취한 증명자 알고리즘 P는 i=1, …, L에 대하여 (CmtB,i;StB,i)←Pb,2(ChA,i;StA,i)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtB,1, …, CmtB,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(CmtB,1, …, CmtB,L)을 수취한 검증자 알고리즘 V는 2개의 검증 패턴 중 어느 검증 패턴을 이용할지를 i=1, …, L의 각각에 대하여 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 ChB ,1, …, ChB ,LR{0, 1}을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.5:
ChB,1, …, ChB,L을 수취한 증명자 알고리즘 P는 i=1, …, L로부터 1개만 회답하지 않는 i(이하, i*)를 랜덤하게 선택한다. 그리고, 증명자 알고리즘 P는 Rspi←Pb,3(ChB,i;StB,i)를 계산한다. 그리고, 증명자 알고리즘 P는 (Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.6:
(Rsp1, …, Rspi*-1, Rspi*+1, …, RspL, i*)을 수취한 검증자 알고리즘 V는 i∈{1, …, L}\{i*}에 대하여 0/1←Decb(F, yi;CmtA ,i, ChA ,i, CmtB ,i, ChB ,i, Rspi)를 실시한다. 그리고, 검증자 알고리즘 V는 i∈{1, …, L}\{i*}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하였다. 이 대화 프로토콜은 SSH10b 공개 키 인증 방식의 안전성에 의해, si를 갖지 않는 위증자가 i=1, …, L에 대하여 각각 1/2+1/2q 이하의 확률로만 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 수 있는 것이 보증되어 있다. 또한, 본 방법 #1을 적용한 것에 의해, L-1개 이상의 i에 대하여 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 필요가 있기 때문에, 위증이 성공할 확률은 (1/2+1/2q)L+L(1/2-1/2q)(1/2+1/2q)L-1이다.
또한, 상기의 대화 프로토콜에 있어서는 s1, …, sL 모두를 사용하고 있지만, L=2의 경우이면, i=1, …, L의 1개에 대하여 si를 사용하지 않아도 어느 si를 사용하지 않았는지를 검증자에게 일절 알리지 않고 완전히 증명자와 마찬가지의 거동을 행하는 것이 가능하다. 따라서, 1개의 si를 사용하지 않고, 상기의 대화 프로토콜과 동일한 인증이 실현 가능한 대화 프로토콜(변형예)에 대하여 설명한다.
[2-7: SSH10b 공개 키 인증 방식에의 적용(변형예)]
이하, 도 14를 참조하면서 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명한다. 도 14는 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 단, 검증자 알고리즘 V에 있어서, 앞서 설명한 위증 알고리즘의 구성이 이용된다. 또한, L=2의 경우에 대하여 설명한다. 또한, 사용하지 않는 si의 인덱스를 i0으로 한다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 단, si0은 적당히 선택한 벡터를 사용한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 단, yi0=F(si0)이 되는 것은 보증되어 있지 않아도 된다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 14를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #1의 대화 프로토콜은, 도 14에 도시하는 Step.1 내지 Step.6의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, 2에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 ChB *∈{0, 1}을 1개 선택한다. 이 ChB *은 i0의 계열에 대하여 증명자가 회답할 수 없는 검증 패턴에 대응한다. 계속해서, 증명자 알고리즘 P는 i≠i0의 경우에 대하여 (CmtA,i;StA,i)←Pb,1(F, yi, si;ri, ti, ei)를 계산한다. 또한, i=i0의 경우에 대하여, 증명자 알고리즘 P는 (CmtA,i;StA,i)←Mb,1(F, yi;ChB *, si, ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtA,1, CmtA,2)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
(CmtA,1, CmtA,2)를 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 2개의 난수의 조 (α1, α2)를 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 (ChA,1, ChA,2)=(α1, α2)를 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
(ChA,1, ChA,2)를 수취한 증명자 알고리즘 P는 i=1, 2에 대하여 다음과 같이 CmtB,i를 계산한다. i≠i0의 경우, 증명자 알고리즘 P는 (CmtB,i;StB,i)←Pb,2(ChA,i;StA,i)를 계산한다. 한편, i=i0의 경우, 증명자 알고리즘 P는 (CmtB,i;StB,i)←Mb,2(ChA,i;StA,i)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtB,1, CmtB,2)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(CmtB,1, CmtB,2)를 수취한 검증자 알고리즘 V는 2개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지 (ChB ,1, ChB ,2)∈R{0, 1}을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.5:
(ChB,1, ChB,2)를 수취한 증명자 알고리즘 P는 i=1, 2로부터 1개만 회답하지 않는 i(이하, i*)를 다음과 같이 하여 선택한다. Chi0=Ch*의 경우, 증명자 알고리즘 P는 Chi0≠Ch*로 설정한다. 한편, i≠i0의 경우, 증명자 알고리즘 P는 i*≠i0이 되도록 랜덤하게 설정한다. 이 i*의 설정 방법을 이용하면, 검증자가 어떤 검증 패턴을 요구해 와도 i*은 각각 1/2의 확률로 1, 2의 값을 취한다. 즉, i0이 1, 2 중 어느 값이었는가라고 하는 정보가 완전히 비닉되어 있는 것이다.
계속해서, 증명자 알고리즘 P는 i∈{1, 2}\{i*}에 대하여 다음과 같이 Rspi를 계산한다. i≠i0의 경우, 증명자 알고리즘 P는 Rspi←Pb,3(Chi;Sti)를 계산한다. i=i0의 경우, 증명자 알고리즘 P는 Rspi←Mb,3(Chi;Sti)를 계산한다. 그리고, 증명자 알고리즘 P는 (Rsp1, Rsp2, i*)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.6:
(Rsp1, Rsp2, i*)을 수취한 검증자 알고리즘 V는 i∈{1, 2}\{i*}에 대하여 0/1←Decb(F, yi;CmtA ,i, ChA ,i, CmtB ,i, ChB ,i, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, 2}\{i*}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #1의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하였다. 여기에서는 L=2의 경우에 대하여 설명하였지만, L≥3의 경우에 대해서도 동일한 구조를 실현하는 것은 가능하다.
이상, 본 발명의 제1 실시 형태에 대하여 설명하였다. 상기 설명에 있어서는 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식을 예로 들어 설명하였지만, 본 방법 #1의 적용 범위는 이것에 한정되지 않는다. SSH10a 공개 키 인증 방식이나 SSH10b 공개 키 인증 방식의 변형예 및 그 밖의 공개 키 인증 방식에 대해서도 적용이 가능하다. 예를 들어, 상기의 예에서는 공개 키를 (F, y)로 설정하고 있지만, F가 비밀 키에 따르지 않는 파라미터이기 때문에, 이 F를 증명자마다 설정하는 것이 아니라 시스템 전체에 공통되는 파라미터로 하여도 된다. 이 경우, 개별적으로 공개해야 할 공개 키는 y만이 되며, 공개 키의 크기가 작아진다. 또한, 상기의 대화 프로토콜에 있어서는 i=1, …, L에 대하여 개별적으로 난수 α1, …, αL을 선택하고 있지만, 이들 난수를 하나로 공통화하여도 된다. 이 경우, 챌린지 ChA,i를 보낼 때의 통신 비용을 삭감하는 것이 가능하게 된다.
<3: 제2 실시 형태(본 방법 #2)>
이어서, 본 발명의 제2 실시 형태(본 방법 #2)에 대하여 설명한다.
[3-1: 개요]
본 방법 #2는 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식에 대하여 능동적 공격에 대한 안전성 레벨이 보증되도록 하는 구조를 적용한 것이다. 반복하게 되지만, 능동적 공격에 대한 안전성 레벨이 보증되어 있는지 여부가 알려져 있지 않았던 이유는, 이용하는 함수 F의 충돌 곤란성이 보증되지 않는 데다가 「검증을 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알리게 되는 것을 피할 수 없었기 때문이다. 따라서, 대화 프로토콜 중에서 「검증을 행한 증명자가 s를 사용하였다」고 하는 정보를 검증자에게 알려지지 않도록 하면, 능동적 공격에 대한 안전성 레벨을 보증할 수 있다.
따라서, 본건 발명자는 비밀 키 s, 공개 키 y를 다중화하는 방식을 고안하였다. 이 방식은 L개(L≥2)의 s1, …, sL∈Kn을 비밀 키로 하고, m개의 n 변수 다차 다항식 F(x)=(f1(x), …, fm(x))에 대하여 (y1, …, yL)=(F(s1), …, F(sL))을 만족하는 y1, …, yL∈Km을 공개 키로 한다. 또한, 이 방식은 어느 si를 대화 프로토콜 중에서 사용하였는지를 알지 못하도록 증명하는 방식이다. 이 방식을 적용하면, 대화 프로토콜 중에서 「어느 si를 이용하였는지」에 관한 정보가 누설되지 않기 때문에, 능동적 공격에 대한 안전성 레벨이 보증되는 것이다.
본 방법 #2의 방식은 검증자가 i=1, …, L에 대하여 챌린지의 조 (Ch1 (0), …, ChL (0)) 및 (Ch1 (1), …, ChL (1))을 증명자에게 보내고, 증명자가 한쪽 챌린지의 조를 선택하여 회답한다고 하는 것이다. 이 방법은 일반적으로 Q(Q≥2)조의 챌린지의 조를 증명자에게 보내고, 증명자가 1개의 챌린지의 조를 선택하여 회답하는 것인데, 여기에서는 Q=2의 경우에 대하여 설명하기로 한다. s1, …, sL을 알고 있는 증명자는 양쪽 챌린지의 조에 대하여 회답할 수 있지만, s1, …, sL을 알지 못하는 위증자는 어느 정도의 확률로 어느 챌린지에 대해서도 회답할 수 없어 위증이 실패한다. 또한, 증명자는 1개의 i에 대해서는 si를 이용하지 않아도 한쪽 챌린지의 조에 대하여 회답할 수 있기 때문에, 검증이 수리되는 대화 프로토콜을 실행하였다고 하여도, 이 대화 프로토콜 중에서 어느 si를 이용하였는지는 검증자에게 알려지는 일이 없는 것이다.
[3-2: SSH10a 공개 키 인증 방식에의 적용]
우선, 도 15를 참조하면서 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명한다. 도 15는 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
이어서, 도 15를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #1의 대화 프로토콜은 「증명자가 L-1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #2의 대화 프로토콜은, 도 15에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (Cmti;Sti)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 Cmt1, …, CmtL을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
Cmt1, …, CmtL을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 이때, 검증자 알고리즘 V는 2조의 검증 패턴의 조합을 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (Ch1 (0), …, ChL (0)), (Ch1 (1), …, ChL (1))∈R{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다. 단, Chi (0)≠Chi (1)이다.
Step.3:
(Ch1 (0), …, ChL (0)), (Ch1 (1), …, ChL (1))을 수취한 증명자 알고리즘 P는 어느 챌린지의 조에 회답할지를 랜덤하게 선택한다. 또한, 그 선택 결과를 d∈R{0, 1}로 표현한다. 그리고, 증명자 알고리즘 P는 i∈{1, …, L}에 대하여 Rspi←Pa,2(Ch(d) i;Sti)를 계산한다. 그 후, 증명자 알고리즘 P는 (Rsp1, …, RspL, d)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(Rsp1, …, RspL, d)를 수취한 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 0/1←Deca(F, yi;Cmti, Ch(d) i, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하였다. 이 대화 프로토콜은 SSH10a 공개 키 인증 방식의 안전성에 의해, si를 갖지 않는 위증자가 i=1, …, L에 대하여 각각 2/3 이하의 확률로만 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 수 있는 것이 보증되어 있다. 또한, 본 방법 #2를 적용한 것에 의해, 2개의 챌린지의 조의 한쪽에 대해서는 L개의 i에 대하여 검증자로부터 보내진 챌린지 Chi에 정확하게 회답할 필요가 있기 때문에, 위증이 성공할 확률은 (2/3)L+(2/3)L-(1/3)L=(2L+1-1)/3L이다.
또한, 상기의 대화 프로토콜에 있어서는 s1, …, sL 모두를 사용하고 있지만, L≤3의 경우이면, i=1, …, L의 1개에 대하여 si를 사용하지 않아도 어느 si를 사용하지 않았는지를 검증자에게 일절 알리지 않고 완전히 증명자와 마찬가지의 거동을 행하는 것이 가능하다. 따라서, 1개의 si를 사용하지 않고, 상기의 대화 프로토콜과 동일한 인증이 실현 가능한 대화 프로토콜(변형예)에 대하여 설명한다.
[3-3: SSH10a 공개 키 인증 방식에의 적용(변형예)]
이하, 도 16을 참조하면서 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명한다. 도 16은 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 단, 검증자 알고리즘 V에 있어서, 앞서 설명한 위증 알고리즘의 구성이 이용된다. 또한, 사용하지 않는 si의 인덱스를 i0으로 한다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 단, si0은 적당히 선택한 벡터를 사용한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 단, yi0=F(si0)이 되는 것은 보증되어 있지 않아도 된다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 16을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #2의 대화 프로토콜은, 도 16에 도시하는 Step.1 내지 Step.4의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 Ch*∈{0, 1, 2}를 1개 선택한다. 이 Ch*은 i0의 계열에 대하여 증명자가 회답할 수 없는 검증 패턴에 대응한다. 계속해서, 증명자 알고리즘 P는 i≠i0의 경우, (Cmti;Sti)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 한편, i=i0의 경우, 증명자 알고리즘 P는 (Cmti;Sti)←Ma,1(F, yi;Ch*, si, ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 Cmt1, …, CmtL을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
Cmt1, …, CmtL을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 이때, 검증자 알고리즘 V는 2조의 검증 패턴의 조합을 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (Ch1 (0), …, ChL (0)), (Ch1 (1), …, ChL (1))∈R{0, 1, 2}를 증명자(증명자 알고리즘 P)에게 보낸다. 단, Chi (0)≠Chi (1)이다.
Step.3:
(Ch1 (0), …, ChL (0)), (Ch1 (1), …, ChL (1))을 수취한 증명자 알고리즘 P는 어느 챌린지의 조에 회답할지를 다음과 같이 하여 선택한다. 또한, 그 선택 결과를 d∈R{0, 1}로 표현한다. Chi0 (0)=Ch*의 경우(조건 1), 증명자 알고리즘 P는 d←1로 설정한다. 한편, Chi0 (1)=Ch*의 경우(조건 2), 증명자 알고리즘 P는 d←0으로 설정한다. 조건 1, 2 이외의 경우, 증명자 알고리즘 P는 랜덤하게 d∈{0, 1}을 설정한다. 이러한 설정 방법에 따르면, 검증자가 어떤 검증 패턴을 요구해 와도 d는 1/2의 확률로 0, 1의 값을 취하기 때문에, i0이 1, …, L 중 어느 것이었는가라고 하는 정보는 완전히 비닉된다.
d를 설정한 후, 증명자 알고리즘 P는 i∈{1, …, L}에 대하여 다음과 같이 Rspi를 계산한다. i≠i0의 경우, 증명자 알고리즘 P는 Rspi←Pa,2(Ch(d) i;Sti)를 계산한다. 한편, i=i0의 경우, 증명자 알고리즘 P는 Rspi←Ma,2(Ch(d) i;Sti)를 계산한다. 그 후, 증명자 알고리즘 P는 (Rsp1, …, RspL, d)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(Rsp1, …, RspL, d)를 수취한 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 0/1←Deca(F, yi;Cmti, Ch(d) i, Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #2의 방식을 SSH10a 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하였다. 또한, 상기의 설명에 있어서는 2개의 챌린지의 조를 검증자로부터 증명자에게 보내고 있지만, 예를 들어 2개째의 챌린지가 Chi (1)=Chi (0)+1 mod 3인 것으로 미리 정해 버려도 된다. 이 경우, 한쪽 챌린지의 조를 보내지 않아도 되므로 통신량을 삭감하는 것이 가능하게 된다.
[3-4: SSH10b 공개 키 인증 방식에의 적용]
이어서, 도 17을 참조하면서 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명한다. 도 17은 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 135를 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 본 방법 #2의 대화 프로토콜은 「증명자가 L-1개의 yi=F(si)를 만족하는 si를 알고 있는 것」을, 「어느 si를 사용하였는지 여부」라고 하는 정보를 검증자에게 일절 누설하지 않고, 검증자에게 증명시키는 것이다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #2의 대화 프로토콜은, 도 17에 도시하는 Step.1 내지 Step.6의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 (CmtA,i;StA,i)←Pa,1(F, yi, si;ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtA,1, …, CmtA,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
(CmtA,1, …, CmtA,L)을 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 L개의 난수의 조 (α1, …, αL)을 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 (ChA,1, …, ChA,L)=(α1, …, αL)을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
(ChA,1, …, ChA,L)을 수취한 증명자 알고리즘 P는 i=1, …, L에 대하여 (CmtB,i;StB,i)←Pb,2(ChA,i;StA,i)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtB,1, …, CmtB,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(CmtB,1, …, CmtB,L)을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 이때, 검증자 알고리즘 V는 2조의 검증 패턴의 조합을 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (ChB ,1 (0), …, ChB ,L (0)), (ChB ,1 (1), …, ChB ,L (1))∈R{0, 1}L을 증명자(증명자 알고리즘 P)에게 보낸다. 단, ChB,i (0)≠ChB,i (1)이다.
Step.5:
(ChB,1 (0), …, ChB,L (0)), (ChB,1 (1), …, ChB,L (1))을 수취한 증명자 알고리즘 P는 어느 챌린지의 조에 회답할지를 랜덤하게 선택한다. 또한, 그 선택 결과를 d∈R{0, 1}로 표현한다. 그리고, 증명자 알고리즘 P는 i∈{1, …, L}에 대하여 Rspi←Pb,2(ChB,i (d);StB,i)를 계산한다. 그 후, 증명자 알고리즘 P는 (Rsp1, …, RspL, d)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.6:
(Rsp1, …, RspL, d)를 수취한 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 0/1←Decb(F, yi;CmtA,i, ChA,i, CmtB,i, ChB,i (d), Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i∈{1, …, L}에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜에 대하여 설명하였다. 이 대화 프로토콜은 SSH10b 공개 키 인증 방식의 안전성에 의해, si를 갖지 않는 위증자가 i=1, …, L에 대하여 각각 1/2+1/2q 이하의 확률로만 검증자로부터 보내진 챌린지에 정확하게 회답할 수 있는 것이 보증되어 있다. 또한, 본 방법 #2를 적용한 것에 의해, 2개의 챌린지의 조의 한쪽에 대하여 L개의 i에 대하여 검증자로부터 보내진 챌린지에 정확하게 회답할 필요가 있기 때문에, 위증이 성공할 확률은 (1/2+1/2q)L+(1/2+1/2q)L=2(1/2+1/2q)L이다.
또한, 상기의 대화 프로토콜에 있어서는 s1, …, sL 모두를 사용하고 있지만, i=1, …, L의 1개에 대하여 si를 사용하지 않아도 어느 si를 사용하지 않았는지를 검증자에게 일절 알리지 않고 완전히 증명자와 마찬가지의 거동을 행하는 것이 가능하다. 따라서, 1개의 si를 사용하지 않고, 상기의 대화 프로토콜과 동일한 인증이 실현 가능한 대화 프로토콜(변형예)에 대하여 설명한다.
[3-5: SSH10b 공개 키 인증 방식에의 적용(변형예)]
이하, 도 18을 참조하면서 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명한다. 도 18은 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하기 위한 설명도이다. 이 대화 프로토콜은 키 생성 알고리즘 Gen, 증명자 알고리즘 P, 검증자 알고리즘 V에 의해 구성된다. 단, 검증자 알고리즘 V에 있어서, 앞서 설명한 위증 알고리즘의 구성이 이용된다. 또한, 사용하지 않는 si의 인덱스를 i0으로 한다. 이하, 각 알고리즘의 내용에 대하여 설명한다.
(키 생성 알고리즘 Gen)
우선, 키 생성 알고리즘 Gen의 구성에 대하여 설명한다. 키 생성 알고리즘 Gen은 환 K 상에서 정의되는 m개의 n 변수 2차 다항식 f1(x1, …, xn), …, fm(x1, …, xn)과 L개의 벡터 s1, …, sL∈Kn을 생성한다. 단, si0은 적당히 선택한 벡터를 사용한다. 또한, n 변수의 벡터 (x1, …, xn)을 x로 표기하고, m개의 n 변수 2차 다항식 (f1(x), …, fm(x))를 F(x)로 표기한다. 이어서, 키 생성 알고리즘 Gen은 y1=F(s1), …, yL=F(sL)을 계산한다. 단, yi0=F(si0)이 되는 것은 보증되어 있지 않아도 된다. 그리고, 키 생성 알고리즘 Gen은 (F, y1, …, yL)을 공개 키 pk로 설정하고, (s1, …, sL)을 비밀 키로 설정한다.
(증명자 알고리즘 P, 검증자 알고리즘 V)
이어서, 도 18을 참조하면서 증명자 알고리즘 P, 검증자 알고리즘 V의 구성에 대하여 설명한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 공개 키 pk는 증명자와 검증자의 사이에서 공유되어 있는 것으로 한다. 또한, 키 생성 알고리즘 Gen에 의해 생성된 비밀 키 sk는 증명자에 의해 비밀로 관리되고 있는 것으로 한다.
본 방법 #2의 대화 프로토콜은, 도 18에 도시하는 Step.1 내지 Step.6의 처리 스텝에 의해 구성된다. 이하, 각 스텝의 처리에 대하여 설명한다.
Step.1:
우선, 증명자 알고리즘 P는 i=1, …, L에 대하여 벡터 ri, ti∈Kn과 벡터 ei∈Km을 생성한다. 계속해서, 증명자 알고리즘 P는 ChB *∈{0, 1}을 1개 선택한다. 이 Ch*은 i0의 계열에 대하여 증명자가 회답할 수 없는 검증 패턴에 대응한다. 계속해서, 증명자 알고리즘 P는 i≠i0의 경우에 대하여 (CmtA,i;StA,i)←Pb,1(F, yi, si;ri, ti, ei)를 계산한다. 또한, i=i0의 경우에 대하여, 증명자 알고리즘 P는 (CmtA,i;StA,i)←Mb,1(F, yi;ChB *, si, ri, ti, ei)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtA,1, …, CmtA,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.2:
(CmtA,1, …, CmtA,L)을 수취한 검증자 알고리즘 V는 q개 존재하는 환 K하에서 L개의 난수의 조 (α1, …, αL)을 선택한다. 그리고, 검증자 알고리즘 V는 챌린지 (ChA,1, …, ChA,L)=(α1, …, αL)을 증명자(증명자 알고리즘 P)에게 보낸다.
Step.3:
(ChA,1, …, ChA,L)을 수취한 증명자 알고리즘 P는 i=1, …, L에 대하여 다음과 같이 CmtB,i를 계산한다. 우선, i≠i0의 경우에 대하여, 증명자 알고리즘 P는 (CmtB,i;StB,i)←Pb,2(ChA,i;StA,i)를 계산한다. 한편, i=i0의 경우에 대하여, 증명자 알고리즘 P는 (CmtB,i;StB,i)←Mb,2(ChA,i;StA,i)를 계산한다. 그리고, 증명자 알고리즘 P는 (CmtB,1, …, CmtB,L)을 검증자(검증자 알고리즘 V)에게 보낸다.
Step.4:
(CmtB,1, …, CmtB,L)을 수취한 검증자 알고리즘 V는 3개의 검증 패턴 중 어느 검증 패턴을 이용할지를 선택한다. 이때, 검증자 알고리즘 V는 2조의 검증 패턴의 조합을 선택한다. 그리고, 검증자 알고리즘 V는 선택한 검증 패턴을 나타내는 챌린지의 조 (ChB ,1 (0), …, ChB ,L (0)), (ChB ,1 (1), …, ChB ,L (1))∈R{0, 1}L을 증명자(증명자 알고리즘 P)에게 보낸다. 단, ChB,i (0)≠ChB,i (1)이다.
Step.5:
(ChB,1 (0), …, ChB,L (0)), (ChB,1 (1), …, ChB,L (1))을 수취한 증명자 알고리즘 P는 어느 챌린지의 조에 회답할지를 다음과 같이 하여 선택한다. 또한, 그 선택 결과를 d∈R{0, 1}로 표현한다. ChB,i0 (0)=ChB *의 경우, 증명자 알고리즘 P는 d←1로 설정한다. 한편, ChB,i0 (1)=ChB *의 경우, 증명자 알고리즘 P는 d←0으로 설정한다. 이 설정 방법을 이용하면, 검증자가 어떤 검증 패턴을 요구해 와도 d는 각각 1/2의 확률로 0, 1의 값을 취한다. 즉, d가 0, 1 중 어느 값이었는가라고 하는 정보가 완전히 비닉되어 있는 것이다.
계속해서, 증명자 알고리즘 P는 i=1, …, L에 대하여 다음과 같이 Rspi를 계산한다. i≠i0의 경우에 대하여, 증명자 알고리즘 P는 Rspi←Pb,3(ChB,i (d);StB,i)를 계산한다. 또한, i=i0의 경우에 대하여, 증명자 알고리즘 P는 Rspi←Mb,3(ChB,i (d);StB,i)를 계산한다. 그 후, 증명자 알고리즘 P는 (Rsp1, …, RspL, d)를 검증자(검증자 알고리즘 V)에게 보낸다.
Step.6:
(Rsp1, …, RspL, d)를 수취한 검증자 알고리즘 V는 i=1, …, L에 대하여 0/1←Decb(F, yi;CmtA,i, ChA,i, CmtB,i, ChB,i (d), Rspi)를 실행한다. 그리고, 검증자 알고리즘 V는 i=1, …, L에 대하여 모두 수리(출력 1)되면 검증이 성립된 것으로 간주한다.
이상, 본 방법 #2의 방식을 SSH10b 공개 키 인증 방식에 적용한 경우의 대화 프로토콜(변형예)에 대하여 설명하였다. 또한, 상기의 설명에 있어서는 2개의 챌린지의 조를 검증자로부터 증명자에게 보내고 있지만, 예를 들어 2개째의 챌린지가 Chi (1)=Chi (0)+1 mod 2인 것으로 미리 정해 버려도 된다. 이 경우, 한쪽 챌린지의 조를 보내지 않아도 되므로 통신량을 삭감하는 것이 가능하게 된다.
이상, 본 발명의 제2 실시 형태에 대하여 설명하였다. 상기 설명에 있어서는 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식을 예로 들어 설명하였지만, 본 방법 #2의 적용 범위는 이것에 한정되지 않는다. SSH10a 공개 키 인증 방식이나 SSH10b 공개 키 인증 방식의 변형예 및 그 밖의 공개 키 인증 방식에 대해서도 적용이 가능하다. 예를 들어, 상기의 예에서는 공개 키를 (F, y)로 설정하고 있지만, F가 비밀 키에 의하지 않는 파라미터이기 때문에, 이 F를 증명자마다 설정하는 것이 아니라 시스템 전체에 공통되는 파라미터로 하여도 된다. 이 경우, 개별적으로 공개해야 할 공개 키는 y만이 되며, 공개 키의 크기가 작아진다. 또한, 상기의 대화 프로토콜에 있어서는 i=1, …, L에 대하여 개별적으로 난수 α1, …, αL을 선택하고 있지만, 이들 난수를 1개로 공통화하여도 된다. 이 경우, 챌린지 ChA,i를 보낼 때의 통신 비용을 삭감하는 것이 가능하게 된다.
<4: 보충>
여기서, 본 방법 #1, #2에 대하여 설명을 보충한다.
[4-1: 방식의 확장에 대하여]
이제까지는 다차 다변수 연립 방정식의 해답 문제에 기초하는 공개 키 인증 방식에 대하여 설명하였다. 그러나, 본 방법 #1, #2의 사고 방식은, 그 밖의 공개 키 인증 방식에 대해서도 마찬가지로 적용하는 것이 가능하다. 따라서, 일례로서 Syndrome Decoding 문제에 기초하는 공개 키 인증 방식에의 적용 방법, Constrained Linear Equations 문제에 기초하는 공개 키 인증 방식에의 적용 방법, Permuted Kernel 문제에 기초하는 공개 키 인증 방식에의 적용 방법, 대수 곡면 상의 섹션 찾기 문제에 기초하는 공개 키 인증 방식에의 적용 방법, Permuted Perceptrons 문제에 기초하는 공개 키 인증 방식에의 적용 방법에 대하여 소개한다.
(Syndrome Decoding 문제에의 적용)
Syndrome Decoding 문제에 기초하는 공개 키 인증 방식은, 예를 들어 「Jacques Stern, A New Identification Scheme Based on Syndrome Decoding, CRYPTO 1993, p13-21.」이나 「Jacques Stern, A New Paradigm for Public Key Identification, IEEE Transactions on Information Theory, 1996, p13-21.」에 기재되어 있다. 이에 따르면, 이 공개 키 인증 방식에는 3 패스의 방식과 5 패스의 방식이 있다.
3 패스의 방식은 SSH10a 공개 키 인증 방식과 마찬가지로 검증 패턴이 3 패턴 있으며, 그 중 2 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 또한, 5 패스의 방식도 SSH10b 공개 키 인증 방식과 마찬가지로 검증 패턴이 2 패턴 있으며, 그 중 1 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 그로 인해, 3 패스의 방식에는 SSH10a 공개 키 인증 방식에 대하여 앞서 설명한 방법이, 5 패스의 방식에는 SSH10b 공개 키 인증 방식에 대하여 앞서 설명한 방법이 적용 가능하다.
(Constrained Linear Equations 문제에의 적용)
Constrained Linear Equations 문제에 기초하는 공개 키 인증 방식은, 예를 들어 「Jacques Stern, Designing Identification Schemes with Keys of Short Size, CRYPTO 1994, p164-173.」에 기재되어 있다. 이에 따르면, 이 공개 키 인증 방식에도 3 패스의 방식과 5 패스의 방식이 있다.
3 패스의 방식은 SSH10a 공개 키 인증 방식과 마찬가지로 검증 패턴이 3 패턴 있으며, 그 중 2 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 또한, 5 패스의 방식도 SSH10b 공개 키 인증 방식과 마찬가지로 검증 패턴이 2 패턴 있으며, 그 중 1 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 그로 인해, 3 패스의 방식에는 SSH10a 공개 키 인증 방식에 대하여 앞서 설명한 방법이, 5 패스의 방식에는 SSH10b 공개 키 인증 방식에 대하여 앞서 설명한 방법이 적용 가능하다.
(Permuted Kernel 문제에의 적용)
Permuted Kernel 문제에 기초하는 공개 키 인증 방식은, 예를 들어 「Adi Shamir, An Efficient Identification Scheme Based on Permuted Kernels(Extended Abstract), CRYPTO 1989, p606-609.」에 기재되어 있다. 이에 따르면, 이 공개 키 인증 방식에는 검증 패턴이 2 패턴 있으며, 그 중 1 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 그로 인해, 이 공개 키 인증 방식에는 SSH10b 공개 키 인증 방식에 대하여 앞서 설명한 방법이 적용 가능하다.
(대수 곡면 상의 섹션 찾기 문제에의 적용)
대수 곡면 상의 섹션 찾기 문제에 기초하는 공개 키 인증 방식에는 3 패스와 5 패스의 방식이 있다(예를 들어, 일본 특허 출원 제2010-125026호 등을 참조). 3 패스의 방식은 SSH10a 공개 키 인증 방식과 마찬가지로 검증 패턴이 3 패턴 있으며, 그 중 2 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 또한, 5 패스의 방식도 SSH10b 공개 키 인증 방식과 마찬가지로 검증 패턴이 2 패턴 있으며, 그 중 1 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 그로 인해, 3 패스의 방식에는 SSH10a 공개 키 인증 방식에 대하여 앞서 설명한 방법이, 5 패스의 방식에는 SSH10b 공개 키 인증 방식에 대하여 앞서 설명한 방법이 적용 가능하다.
(Permuted Perceptrons 문제에의 적용)
Permuted Perceptrons 문제에 기초하는 공개 키 인증 방식은, 예를 들어 「David Pointcheval, A New Identification Scheme Based on the Perceptrons Problem, EUROCRYPT 1995, p319-328.」이나 「David Pointcheval and Guillaume Poupard, A New NP-Complete Problem and Public-Key Identification, Des. Codes Cryptography, 2003, p5-31.」에 기재되어 있다. 이에 따르면, 이 공개 키 인증 방식에는 3 패스의 방식과 5 패스의 방식이 있다.
3 패스의 방식은 검증 패턴이 4 패턴 있으며, 그 중 3 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 한편, 5 패스의 방식은 검증 패턴이 3 패턴 있으며, 그 중 2 패턴까지는 대응 가능한 위증 알고리즘이 존재한다. 그로 인해, SSH10a 공개 키 인증 방식이나 SSH10b 공개 키 인증 방식과 마찬가지로, 이 공개 키 인증 방식에 대해서도 본 방법 #1, #2의 기술을 적용하는 것이 가능하다. 단, 이 공개 키 인증 방식에 대하여 본 방법 #1을 적용할 때에는 이하의 변경이 필요하게 된다.
검증 패턴이 k 패턴 있는 방식에 대하여, 비밀 키를 L=k개로 다중화하여 본 방법 #1을 적용하는 경우, i=1, …, L로부터 1개만 회답하지 않는 i(이하, i*)를 다음과 같이 선택하는 것이 필요하게 된다. 즉, i*의 선택 방법은 Chi0=Ch*이면 i*←i0이 선택되고, Chi0≠Ch*이면 i*∈{1, …, L}\{i0}으로부터 랜덤하게 i*이 선택된다고 하는 것이 된다.
또한, 검증 패턴이 k 패턴 있는 방식에 대하여, 비밀 키를 L(L<k)개로 다중화하여 본 방법 #1을 적용하는 경우, i=1, …, L로부터 1개만 회답하지 않는 i(이하, i*)를 다음과 같이 선택하는 것이 필요하게 된다. 즉, i*의 선택 방법은 Chi0=Ch*이면 i*←i0이 선택되고, Chi0≠Ch*이면 확률 (1-1/k)-1(1/L-1/k)로 i*←i0이 선택되며, 또한 확률 1-(1-1/k)-1(1/L-1/k)로 i*∈{1, …, L}\{i0}으로부터 랜덤하게 i*이 선택된다고 하는 것이 된다.
상기의 방법에 따르면 검증자가 어떤 검증 패턴을 요구해 와도 i*이 1/L의 확률로 1, …, L의 값을 취하게 되어, i0이 1, …, L 중 어느 것이었는가라고 하는 정보가 완전히 비닉된다.
이상 설명한 바와 같이, 본 방법 #1, #2는 SSH10a 공개 키 인증 방식, SSH10b 공개 키 인증 방식에 한정되지 않고, 여러가지 공개 키 인증 방식에 적용 가능하다.
[4-2: 비대화형의 공개 키 인증 방식에 대하여]
상기의 본 방법 #1, #2를 적용한 공개 키 인증 방식은 검증자가 난수만 송신하는 방식이기 때문에, 1 패스(비대화형)의 공개 키 인증 방식으로 변형하는 것이 가능하다. 예를 들어, N회의 병렬적 반복 구성에 있어서 검증자와의 사이에서 주고 받은 내용에 해시 함수를 적용한 것을, 검증자로부터 송신되는 난수 대신에 사용하면 된다. 또한, 해시 함수의 인수에 증명자가 선택한 난수를 더하여도 된다. 이와 같이 검증자가 난수를 선택하는 대신에 증명자 자신이 해시 함수를 이용함으로써, 검증자가 난수를 선택한 경우와 동일한 거동이 실현된다. 단, 이상적인 해시 함수를 이용하는 것이 바람직하다. 또한, 위증을 불가능하게 하기 위하여 반복 횟수 N을 충분히 크게 취하는 것이 바람직하다. 이러한 고안에 의해 비대화형의 공개 키 인증 방식으로 변형하는 것이 가능하게 된다.
[4-3: 통신량의 삭감 방법에 대하여]
여기서, 도 19, 도 20을 참조하면서 대화 프로토콜에서의 통신량의 삭감 방법에 대하여 간단하게 설명을 보충한다.
이미 설명한 바와 같이, SSH10a 공개 키 인증 방식의 1 패스째에 있어서, 증명자로부터 검증자에게 메시지의 조 (c1, c2, c3)이 보내진다. 단, 상기 설명에 있어서는 Cmt라고 하는 표현을 사용하고 있었다. N회의 병렬적 반복 구성의 경우, 이 메시지의 조는 도 19에 도시한 바와 같이 (c1,1, c1,2, c1,3, …, cN,1, cN,2, cN,3)이 되어 통신량이 매우 커져 버린다. 따라서, 본건 발명자는 이들 메시지를 1개의 해시값으로 통합하여 보내는 구성을 고안하였다.
도 19에 도시한 바와 같이, 이 구성을 적용하면 1 패스째로 보내는 메시지가 1개의 해시값만으로 되어 대폭 통신량을 삭감하는 것이 가능하게 된다. 단, 이 해시값 및 증명자로부터 보내지는 챌린지에 대한 회답으로부터 복원할 수 없는 해시값에 대해서는, 회답과 함께 증명자로부터 받게 한다. 이 구성에 따르면, N회의 병렬적 반복 구성의 경우, 보내야 할 정보의 수를 2N-1개 삭감하는 것이 가능하게 된다. 도 20에 도시한 바와 같이, SSH10b 공개 키 인증 방식에 대해서도 마찬가지의 구성을 적용하는 것이 가능하다. 이 경우, 보내야 할 정보의 수를 N-1개 삭감하는 것이 가능하게 된다.
이상, 본 방법 #1, #2에 대하여 설명을 보충하였다.
<5: 하드웨어 구성>
상기의 각 알고리즘은, 예를 들어 도 21에 도시하는 정보 처리 장치의 하드웨어 구성을 사용하여 실행하는 것이 가능하다. 즉, 당해 각 알고리즘의 처리는 컴퓨터 프로그램을 사용하여 도 21에 도시하는 하드웨어를 제어함으로써 실현된다. 또한, 이 하드웨어의 형태는 임의이며, 예를 들어 퍼스널 컴퓨터, 휴대 전화, PHS, PDA 등의 휴대 정보 단말기, 게임기, 접촉식 또는 비접촉식의 IC칩, 접촉식 또는 비접촉식의 IC 카드, 또는 다양한 정보 가전이 이것에 포함된다. 단, 상기의 PHS는 Personal Handy-phone System의 약칭이다. 또한, 상기의 PDA는 Personal Digital Assistant의 약칭이다.
도 21에 도시한 바와 같이, 이 하드웨어는 주로 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의 약칭이다.
<6: 요약>
마지막으로, 본 발명의 실시 형태에 관한 기술 내용에 대하여 간단하게 요약한다. 여기에서 설명하는 기술 내용은, 예를 들어 PC, 휴대 전화, 휴대 게임기, 휴대 정보 단말기, 정보 가전, 카 내비게이션 시스템 등 다양한 정보 처리 장치에 대하여 적용할 수 있다.
상기의 정보 처리 장치의 기능 구성은 다음과 같이 표현할 수 있다. 당해 정보 처리 장치는 다음과 같은 키 유지부와 대화 프로토콜 실행부를 갖는다. 당해 키 유지부는 L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 것이다. 또한, 상기의 대화 프로토콜 실행부는 (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 것이다. 또한, 상기 대화 프로토콜 실행부는, 상기 검증자와의 사이에서 상기 대화 프로토콜을 실행할 때, 어느 비밀 키 si를 사용하였는지를 당해 검증자에게 알려지지 않도록 한다.
상기한 바와 같이, 비밀 키 si를 다중화하여 대화 프로토콜을 실행할 때, 그 중 일부의 비밀 키를 이용하고, 또한 어느 비밀 키 si가 이용되었는지를 대화 프로토콜 중에서 알려지지 않도록 함으로써, 병렬적 반복 구성의 경우에도 능동적 공격에 대한 안전성 레벨을 보증하는 것이 가능하게 된다. 즉, 위증자가 검증자 행세를 하여 인증에 이용되는 비밀 키 si의 정보를 얻고자 하여도, 대화 프로토콜 중에서 어느 비밀 키 si가 이용되었는지 검증자도 알지 못한다. 즉, 임의의 횟수만 대화 프로토콜을 실행할 수 있는 상황에 있어서도 비밀 키 si의 정보가 증명자로부터 누설되지 않기 때문에, 능동적 공격에 대한 안전성 레벨을 보증할 수 있는 것이다.
(비고)
상기의 정보 처리 장치는 증명자측 및 검증자측의 인증 장치의 일례이다. 또한, 상기의 ROM(904), RAM(906), 기억부(920), 리무버블 기록 매체(928)는 키 유지부의 일례이다. 또한, 이 키 유지부에 유지되는 비밀 키 si, 공개 키 yi는 키 생성 알고리즘 Gen에 의해 생성된다. 또한, 증명자 알고리즘 P, 검증자 알고리즘 V는 대화 프로토콜 실행부의 일례이다. 또한, 실제로는 증명자 알고리즘 P, 검증자 알고리즘 V가 CPU(902)의 기능에 의해 실행됨으로써 대화 프로토콜 실행부의 기능이 실현된다. 또한, 증명자 알고리즘 P에 의해 실현되는 기능에 의해 챌린지 수신부, 챌린지 선택부, 회답 생성부, 회답 송신부, 메시지 송신부의 기능이 실현된다. 또한, 정보의 송수신에는 통신부(926)의 기능이 이용된다.
이상, 첨부 도면을 참조하면서 본 발명의 적합한 실시 형태에 대하여 설명하였지만, 본 발명은 이러한 예에 한정되지 않는 것은 물론이다. 당업자라면 특허청구범위에 기재된 범주 내에 있어서 각종 변경예 또는 수정예에 상도할 수 있는 것은 명확하며, 그것들에 대해서도 당연히 본 발명의 기술적 범위에 속하는 것이라고 이해된다.
Gen: 키 생성 알고리즘
P: 증명자 알고리즘
V: 검증자 알고리즘

Claims (19)

  1. 인증 장치로서,
    L개(L≥2)의 비밀 키 si(i=1 내지 L) 및 n차 다변수 다항식의 조 F(n≥2)에 대하여 yi=F(si)를 만족하는 L개의 공개 키 yi를 유지하는 키 유지부와,
    (L-1)개의 yi=F(si)를 만족하는 비밀 키 si를 알고 있는 것을 증명하기 위한 대화 프로토콜을 검증자와의 사이에서 실행하는 대화 프로토콜 실행부를 구비하며,
    상기 대화 프로토콜 실행부는,
    상기 검증자로부터 L개의 챌린지 Chi를 수신하는 챌린지 수신부와,
    상기 챌린지 수신부에 의해 수신된 L개의 챌린지 Chi 중에서 (L-1)개의 챌린지 Chi를 임의로 선택하는 챌린지 선택부와,
    상기 비밀 키 si를 사용하여, 상기 챌린지 선택부에 의해 선택된 (L-1)개의 챌린지 Chi의 각각에 대한 (L-1)개의 회답 Rspi를 생성하는 회답 생성부와,
    상기 회답 생성부에 의해 생성된 (L-1)개의 회답 Rspi를 상기 검증자에게 송신하는 회답 송신부와,
    상기 검증자에 대하여 L개의 상기 비밀 키 si의 각각에 대응하는 메시지 Cmti를 송신하는 메시지 송신부를 포함하고,
    상기 챌린지 수신부는, 상기 메시지 송신부에 의해 송신된 각 메시지 Cmti에 따라, 상기 검증자에 의해 k개(k≥2)의 검증 패턴 중에서 선택된 검증 패턴을 나타내는 챌린지 Chi를 수신하고,
    상기 키 유지부는, 상기 L개의 비밀 키 si 중 1개의 비밀 키 si0(1≤i0≤L)을 유지하지 않도록 하고,
    상기 대화 프로토콜 실행부는, 상기 대화 프로토콜 중에서 실행되는 상기 비밀 키 si0에 관한 처리를 위증 알고리즘에 기초하여 실행하는, 인증 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 메시지 Cmti가 Cmti=(ci,1, …, ci,N)인 경우,
    상기 메시지 송신부는 일방향성 함수 H를 사용하여 새로운 메시지 Cmt'=H(Cmt1, …, CmtL)을 산출하여 당해 메시지 Cmt'를 상기 검증자에게 송신하고,
    상기 회답 송신부는, 상기 회답 Rspi와 함께, 당해 회답 Rspi를 이용하여도 상기 검증자가 복원할 수 없는 상기 메시지 Cmti의 요소를 송신하는, 인증 장치.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 인증 장치로서,
    s∈Kn을 비밀 키로 설정하고, 환(ring) K 상의 다차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 키 설정부와,
    검증자에 대하여 메시지 c를 송신하는 메시지 송신부와,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 검증 패턴 수신부와,
    k개의 회답 정보 중에서 상기 검증 패턴 수신부에 의해 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 회답 송신부를 구비하며,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, x에 관한 다차 다항식 fi(x+r)을 다항식 fi'(x)에 의해 마스크한 다항식 fi''(x)를 사용하여 계산되는, 인증 장치.
  13. 제12항에 있어서,
    상기 다차 다항식 fi(x1, …, xn)(i=1 내지 m)은 2차 다항식이고,
    상기 다항식 fi'(x)는 1차 다항식인, 인증 장치.
  14. 제13항에 있어서, 상기 1차 다항식 fi'(x)는 x에 관한 1차 다항식 fi(x+t)-fi(x)-fi(t)+ei(ei∈K)인, 인증 장치.
  15. 인증 장치로서,
    s∈Kn을 비밀 키로 설정하고, 환 K 상의 2차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 키 설정부와,
    검증자에 대하여 메시지 c를 송신하는 메시지 송신부와,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 검증 패턴 수신부와,
    k개의 회답 정보 중에서 상기 검증 패턴 수신부에 의해 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 회답 송신부를 구비하며,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, 상기 2차 다항식 fi에 상기 r을 대입한 fi(r)을 ei∈K에 의해 마스크한 ei'∈K를 사용하여 계산되는, 인증 장치.
  16. 인증 방법으로서,
    s∈Kn을 비밀 키로 설정하고, 환 K 상의 다차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 단계와,
    검증자에 대하여 메시지 c를 송신하는 단계와,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 단계와,
    k개의 회답 정보 중에서 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 단계를 포함하며,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, x에 관한 다차 다항식 fi(x+r)을 다항식 fi'(x)에 의해 마스크한 다항식 fi''(x)를 사용하여 계산되는, 인증 방법.
  17. 인증 방법으로서,
    s∈Kn을 비밀 키로 설정하고, 환 K 상의 2차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 단계와,
    검증자에 대하여 메시지 c를 송신하는 단계와,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 단계와,
    k개의 회답 정보 중에서 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 단계를 포함하며,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, 상기 2차 다항식 fi에 상기 r을 대입한 fi(r)을 ei∈K에 의해 마스크한 ei'∈K를 사용하여 계산되는, 인증 방법.
  18. s∈Kn을 비밀 키로 설정하고, 환 K 상의 다차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 기능과,
    검증자에 대하여 메시지 c를 송신하는 기능과,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 기능과,
    k개의 회답 정보 중에서 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 기능을 컴퓨터에 실현시키기 위한 프로그램이 기록된 컴퓨터 판독가능한 기록 매체로서,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, x에 관한 다차 다항식 fi(x+r)을 다항식 fi'(x)에 의해 마스크한 다항식 fi''(x)를 사용하여 계산되는, 컴퓨터 판독가능한 기록 매체.
  19. s∈Kn을 비밀 키로 설정하고, 환 K 상의 2차 다항식 fi(x1, …, xn)(i=1 내지 m) 및 yi=fi(s)를 공개 키로 설정하는 기능과,
    검증자에 대하여 메시지 c를 송신하는 기능과,
    1개의 상기 메시지 c에 대한 k개(k≥3)의 검증 패턴 중에서 상기 검증자에 의해 선택된 1개의 검증 패턴의 정보를 수신하는 기능과,
    k개의 회답 정보 중에서 수신된 검증 패턴의 정보에 대응하는 회답 정보를 상기 검증자에게 송신하는 기능을 컴퓨터에 실현시키기 위한 프로그램이 기록된 컴퓨터 판독가능한 기록 매체로서,
    상기 회답 정보는, 상기 비밀 키 s를 r∈Kn에 의해 마스크한 정보 z∈Kn과, 상기 r을 t∈Kn에 의해 마스크한 t'∈Kn과, 상기 2차 다항식 fi에 상기 r을 대입한 fi(r)을 ei∈K에 의해 마스크한 ei'∈K를 사용하여 계산되는, 컴퓨터 판독가능한 기록 매체.
KR1020137001413A 2010-07-30 2011-07-12 인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체 KR101808363B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2010171940 2010-07-30
JPJP-P-2010-171940 2010-07-30
JP2010224752A JP5594034B2 (ja) 2010-07-30 2010-10-04 認証装置、認証方法、及びプログラム
JPJP-P-2010-224752 2010-10-04
PCT/JP2011/065872 WO2012014669A1 (ja) 2010-07-30 2011-07-12 認証装置、認証方法、及びプログラム

Publications (2)

Publication Number Publication Date
KR20130100959A KR20130100959A (ko) 2013-09-12
KR101808363B1 true KR101808363B1 (ko) 2017-12-12

Family

ID=45529885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137001413A KR101808363B1 (ko) 2010-07-30 2011-07-12 인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체

Country Status (13)

Country Link
US (2) US9076000B2 (ko)
EP (1) EP2600563A4 (ko)
JP (1) JP5594034B2 (ko)
KR (1) KR101808363B1 (ko)
CN (1) CN103155480B (ko)
AU (1) AU2011283888B2 (ko)
BR (1) BR112013001733A2 (ko)
CA (2) CA2804394C (ko)
MY (1) MY181936A (ko)
RU (1) RU2573772C2 (ko)
SG (1) SG187039A1 (ko)
TW (1) TWI455555B (ko)
WO (1) WO2012014669A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5790287B2 (ja) 2011-08-12 2015-10-07 ソニー株式会社 情報処理装置、情報処理方法、プログラム、及び記録媒体
JP5790289B2 (ja) * 2011-08-12 2015-10-07 ソニー株式会社 情報処理装置、情報処理方法、プログラム、及び記録媒体
TW201351195A (zh) 2012-03-02 2013-12-16 Sony Corp 演算裝置、控制方法、及程式
US9516007B2 (en) * 2012-12-05 2016-12-06 Sony Corporation Verifier and prover have an authentication protocol with challenge-response with the challenge from prover having identification of the verifier
US10447475B1 (en) * 2018-11-08 2019-10-15 Bar Ilan University System and method for managing backup of cryptographic keys
CN110650160B (zh) * 2019-10-29 2022-01-04 北京天威诚信电子商务服务有限公司 一种身份认证方法及系统
JP7273742B2 (ja) * 2020-02-07 2023-05-15 株式会社東芝 暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008048451A (ja) 1999-10-01 2008-02-28 Fr Telecom エンティティの真正性又はメッセージの完全性を証明するための方法、システム、デバイス

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5375170A (en) * 1992-11-13 1994-12-20 Yeda Research & Development Co., Ltd. Efficient signature scheme based on birational permutations
FR2737370B1 (fr) 1995-07-27 1997-08-22 Bull Cp8 Procede de communication cryptographique
US5710814A (en) * 1996-07-23 1998-01-20 Cheyenne Property Trust Cryptographic unit touch point logic
JPH1165439A (ja) * 1996-08-09 1999-03-05 Nippon Telegr & Teleph Corp <Ntt> N進表現暗号による通信および認証方法、ならびにそれらの装置、およびn進表現暗号による通信および認証プログラムを格納した記憶媒体
US6307936B1 (en) * 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US6076163A (en) * 1997-10-20 2000-06-13 Rsa Security Inc. Secure user identification based on constrained polynomials
US6411715B1 (en) * 1997-11-10 2002-06-25 Rsa Security, Inc. Methods and apparatus for verifying the cryptographic security of a selected private and public key pair without knowing the private key
US6959085B1 (en) * 1999-05-03 2005-10-25 Ntru Cryptosystems, Inc. Secure user identification based on ring homomorphisms
US7243236B1 (en) * 1999-07-29 2007-07-10 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US20020136401A1 (en) * 2000-07-25 2002-09-26 Jeffrey Hoffstein Digital signature and authentication method and apparatus
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7114178B2 (en) * 2001-05-22 2006-09-26 Ericsson Inc. Security system
US7308097B2 (en) * 2001-12-07 2007-12-11 Ntru Cryptosystems, Inc. Digital signature and authentication method and apparatus
KR20040093128A (ko) * 2002-03-13 2004-11-04 코닌클리케 필립스 일렉트로닉스 엔.브이. 다항식을 기반으로 한 다수-사용자 키 생성 및 인증 방법및 시스템
US8046832B2 (en) 2002-06-26 2011-10-25 Microsoft Corporation Spam detector with challenges
JP4457651B2 (ja) * 2003-11-27 2010-04-28 日本電気株式会社 証明装置及び証明方法並びにプログラム
FR2865590A1 (fr) * 2004-01-23 2005-07-29 France Telecom Procede pour etablir, a partir d'un jeu de grands nombres premiers, un jeu de cles destine a prouver l'authenticite d'une entite ou l'integrite d'un message
JP4282546B2 (ja) * 2004-05-19 2009-06-24 株式会社東芝 暗号装置、復号装置、鍵生成装置、プログラム及び方法
US20060083370A1 (en) * 2004-07-02 2006-04-20 Jing-Jang Hwang RSA with personalized secret
US8645694B2 (en) 2004-09-30 2014-02-04 Koninklijke Philips N.V. Method of authentication based on polyomials
US20060245587A1 (en) * 2005-04-28 2006-11-02 Binyamin Pinkas System and method for private information matching
US7958362B2 (en) * 2005-10-11 2011-06-07 Chang Gung University User authentication based on asymmetric cryptography utilizing RSA with personalized secret
US20080013721A1 (en) * 2005-11-30 2008-01-17 Jing-Jang Hwang Asymmetric cryptography with discretionary private key
WO2008001322A2 (en) * 2006-06-30 2008-01-03 International Business Machines Corporation Message handling at a mobile device
JP4197710B2 (ja) * 2006-07-19 2008-12-17 株式会社東芝 暗号装置、復号装置、プログラム及び方法
US8006300B2 (en) * 2006-10-24 2011-08-23 Authernative, Inc. Two-channel challenge-response authentication method in random partial shared secret recognition system
WO2009083109A1 (en) * 2008-01-02 2009-07-09 National University Of Ireland, Galway A method and apparatus for authenticating a user
US8713655B2 (en) * 2008-04-21 2014-04-29 Indian Institute Of Technology Method and system for using personal devices for authentication and service access at service outlets
JP2010049215A (ja) * 2008-08-25 2010-03-04 Toshiba Corp パラメータ生成装置、暗号処理システム、方法およびプログラム
JP4756067B2 (ja) 2008-11-27 2011-08-24 株式会社サンセイアールアンドディ 遊技機

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008048451A (ja) 1999-10-01 2008-02-28 Fr Telecom エンティティの真正性又はメッセージの完全性を証明するための方法、システム、デバイス

Also Published As

Publication number Publication date
CN103155480A (zh) 2013-06-12
TW201215069A (en) 2012-04-01
SG187039A1 (en) 2013-02-28
CA2804394C (en) 2018-05-22
MY181936A (en) 2021-01-14
TWI455555B (zh) 2014-10-01
EP2600563A1 (en) 2013-06-05
EP2600563A4 (en) 2016-10-19
JP2012050053A (ja) 2012-03-08
CN103155480B (zh) 2015-11-25
US9602285B2 (en) 2017-03-21
BR112013001733A2 (pt) 2016-05-31
CA2804394A1 (en) 2012-02-02
AU2011283888B2 (en) 2015-10-29
CA3000137A1 (en) 2012-02-02
AU2011283888A1 (en) 2012-12-13
JP5594034B2 (ja) 2014-09-24
WO2012014669A1 (ja) 2012-02-02
RU2013103035A (ru) 2014-07-27
KR20130100959A (ko) 2013-09-12
US9076000B2 (en) 2015-07-07
RU2573772C2 (ru) 2016-01-27
US20150256342A1 (en) 2015-09-10
US20130089201A1 (en) 2013-04-11

Similar Documents

Publication Publication Date Title
US8959355B2 (en) Authentication device, authentication method, program, and signature generation device
KR101808363B1 (ko) 인증 장치, 인증 방법 및 컴퓨터 판독가능한 기록 매체
JP5593850B2 (ja) 認証装置、認証方法、プログラム、及び署名生成装置
WO2013024699A1 (ja) 情報処理装置、情報処理方法、プログラム、及び記録媒体
KR101986392B1 (ko) 정보 처리 장치, 정보 처리 방법, 및 기록 매체
WO2013024697A1 (ja) 情報処理装置、署名提供方法、署名検証方法、プログラム、及び記録媒体
JP5790286B2 (ja) 情報処理装置、署名生成装置、情報処理方法、署名生成方法、及びプログラム
JP5790290B2 (ja) 情報処理装置、情報処理方法、プログラム、及びプログラムを記録したコンピュータ読み取り可能な記録媒体
WO2013024630A1 (ja) 情報処理装置、及び情報処理方法
KR20140054059A (ko) 정보 처리 장치, 정보 처리 방법, 프로그램 및 기록 매체
WO2013024628A1 (ja) 情報処理装置、及び情報処理方法

Legal Events

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