KR20110135962A - 암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체 - Google Patents

암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체 Download PDF

Info

Publication number
KR20110135962A
KR20110135962A KR1020117023736A KR20117023736A KR20110135962A KR 20110135962 A KR20110135962 A KR 20110135962A KR 1020117023736 A KR1020117023736 A KR 1020117023736A KR 20117023736 A KR20117023736 A KR 20117023736A KR 20110135962 A KR20110135962 A KR 20110135962A
Authority
KR
South Korea
Prior art keywords
function
value
ciphertext
common key
elements
Prior art date
Application number
KR1020117023736A
Other languages
English (en)
Other versions
KR101246241B1 (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 KR20110135962A publication Critical patent/KR20110135962A/ko
Application granted granted Critical
Publication of KR101246241B1 publication Critical patent/KR101246241B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • 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
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

CCA 안전성을 향상시키기 위해서만의 공간을 암호문 공간에 형성하지 않고 CCA 안전성을 향상시킨다. 암호화 처리에서는, 평문(M)과 공통키(K)로부터 제 1 암호문(C1)을 산출하고, 공통키(K)에 대응하는 값과 제 1 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 그것에 대응하는 r을 사용하여 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출한다. 복호처리에서는, 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)=α·(Σμ=1 nwμ·bμ *)+bn+1 *∈G2 n +1을 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 함수값(S)에 대응하는 값과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 그것에 대응하는 r에 대하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn+1∈G1 n +1을 충족시키는지 아닌지를 판정한다.

Description

암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체{ENCRYPTION APPARATUS, DECRYPTION APPARATUS, ENCRYPTION METHOD, DECRYPTION METHOD, SECURITY METHOD, PROGRAM, AND RECORDING MEDIUM}
본 발명은 세큐러티 기술에 관한 것으로, 특히 암호기술에 관한 것이다.
암호연구 분야의 하나로, 선택 암호문 공격(CCA: Chosen ciphertext attack)에 대한 안전성(CCA 안전성)을 갖는 암호방식 (CCA 안전 암호방식)의 구축이 있다. 특히 최근, 선택 평문 공격(CPA: Chosen Plaintext Attack)에 대한 안전성밖에 갖지 않은 ID 베이스 암호(IBE: Identity-based Encryption)(예를 들면, 비특허문헌 1 참조)로부터 CCA 안전 암호방식을 구성하고자 하는 연구가 왕성하게 행해지고 있다. 예를 들면, 비특허문헌 2에서는, One-Time 서명을 사용하여, CPA 안전 임의의 ID 베이스 암호로부터 CCA 안전 암호방식을 구성하는 방법이 제안되어 있다(CHK 변환방식). 또한, 예를 들면, 비특허문헌 3에서는, 메시지 인증자(MAC: Message Authentication Code)와 비트 커미트먼트 방식을 사용하여, CPA 안전 임의의 ID 베이스 암호로부터 CCA 안전 암호방식을 구성하는 방법이 제안되어 있다(BK 변환방식).
D. Boneh, M. Franklin, "Identity based encryption from the Weil pairing," Crypto 2001, Lecture Notes in Computer Science, Vol.2139, Springer-Verlag, pp. 213-229, 2001. R. Canetti, S. Halevi, J. Katz, "Chosen-Ciphertext Security from Identity-Based Encryption," Proc. of EUROCRYPT' 04, LNCS 3027, pp. 207-222, 2004. D. Boneh, J. Katz, "Improved Efficiency for CCA-Secure Cryptosystems Built Using Identity-Based Encryption," Proc. of CT-RSA' 05, LNCS 3376, pp. 87-103, 2005.
(발명의 개요)
(발명이 해결하고자 하는 과제)
상기한 CHK 변환방식에 의해 생성되는 암호문은 평문의 암호문과 당해 평문의 암호문의 One-Time 서명과 당해 One-Time 서명을 검증하기 위한 서명키를 포함한다. 그 때문에 이 CHK 변환방식의 암호문 공간에는, 평문의 암호문을 위한 공간뿐만 아니라, One-Time 서명이나 서명키를 위한 공간이 필요하게 된다. 또, 상기한 BK 변환방식에 의해 생성되는 암호문은 평문의 암호문과 메시지 인증자와 비트 커미트먼트열을 포함한다. 그 때문에 BK 변환방식의 암호문 공간에는, 평문의 암호문뿐만 아니라, 메시지 인증자나 비트 커미트먼트열을 위한 공간이 필요하게 된다. 즉, CHK 변환방식이나 BK 변환방식의 암호문 공간에는, CCA 안전성을 향상시키기 위해서만 사용하는 2차원의 공간이 여분으로 설치되어 있다. 그렇지만, 암호문 공간의 사이즈가 커질수록 연산량이나 데이터량이 증가하기 때문에, 암호문 공간의 사이즈는 가능한 한 작은 쪽이 바람직하다.
또, ID 베이스 암호는 암호화를 행하는 자가 암호화를 행하기 전에 복호를 행하는 자의 ID를 취득해 두지 않으면 안 된다. 이에 대하여, 암호화를 행하는 자가 복호를 행하는 자를 특정하지 않고 암호문을 생성할 수 있고, 원하는 조건에 합치한 자가 당해 암호문을 복호할 수 있는 방식을 구성할 수 있으면 편리하다.
본 발명은 이러한 점을 감안하여 이루어진 것으로, 편리성이 높고, CCA 안전성을 향상시키기 위해서만 사용하는 공간을 암호문 공간에 형성하지 않고 CCA 안전성을 향상할 수 있는 암호방식을 제공한다.
본 발명의 암호화 처리에서는, 적어도, 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 제 1 암호문(C1)을 산출하고, 공통키(K)에 대응하는 값과 제 1 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 함수(H)의 함수값에 대응하는 값(r)과, 공통키(K)에 대응하는 값(ρ)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n,n≥1)와, 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터(bi)∈G1 n + 1(i=1,...,n+1)를 사용하고, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출한다.
이것에 대응하는 복호처리에서는, 적어도, 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)=α·(Σμ=1 nwμ·bμ *)+bn +1 *∈G2 n + 1를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 함수값(S)에 대응하는 값과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출한다. 또한, 키정보(D1 *)가 옳은 경우, 「함수값(S)에 대응하는 값」은 암호화 처리에서 충돌 곤란한 함수(H)에 입력된 「공통키(K)에 대응하는 값」과 동일하게 된다. 그리고, 값(ρ)과, 함수(H)의 함수값에 대응하는 값(r)과, n차원 벡터(v)의 요소(vμ)와, 기저 벡터(bi)∈G1 n+1(i=1,...,n+1)에 대하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 충족시키는지 아닌지를 판정한다.
여기에서, 암호화 처리의 처리에 사용되는 값(r)은 공통키(K)에 대응하는 값과 제 1 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 얻어지는 함수값에 대응한다. 그 때문에 제 1 암호문(C1)이나 공통키(K)가 상이하면 값(r)도 상이하다. 따라서, 공통키(K)를 모르는 공격자는, 가령, 정확하게 취득한 제 1 암호문(C1')으로부터 그것과 상이한 제 1 암호문(C1)을 생성할 수 있었다고 해도, 생성한 제 1 암호문(C1)에 대응하는 값(r)을 정확하게 생성할 수는 없다. 따라서, 복호처리에 있어서, 함수값(S)에 대응하는 값과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 값(r)을 복원하고, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 충족시키는지 아닌지를 판정하는 구성으로 함으로써, CCA 안전성을 향상시킬 수 있다. 또한, 「값 1에 대응하는 값 2」란, 값 2가 값 1인 경우, 또는, 값 2가 적어도 값 1에 의존하는 값인 경우를 의미한다.
또한 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1은 제 2 암호문(C2)의 기본구성이 되는 n차원 벡터(v)=(v1,...,vn)를 위한 n차원 공간과, 공통키(K)를 포함하는 값에 대응하는 값(ρ)을 위한 1차원 공간만으로 구성된다. 즉, 제 2 암호문(C2)은 CCA 안전성을 향상시키기 위해서만 사용하는 공간을 필요로 하지 않는다.
또, 본 발명의 암호화 처리의 1예에서는, 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 제 1 암호문(C1)을 산출하고, 공통키(K)와 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 값(r 및 ρ)을 산출하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하고, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 공통키(K)와의 배타적 논리합값인 제 3 암호문(C3)을 산출하고, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출한다.
이것에 대응하는 복호처리에서는, 예를 들면, 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 함수값(S∼)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(r(S∼))과 제 3 암호문(C3)과의 배타적 논리합값(K∼)을 산출하고, 배타적 논리합값(K∼)과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 값(r및 ρ)을 산출하고, 함수값(C2 )=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하고, 함수값(C2 )과 제 2 암호문(C2)이 동일한지 아닌지를 판정하고, 함수값(C2 )과 제 2 암호문(C2)이 동일한 취지의 판정 결과인 경우에, 배타적 논리합값(K)을 공통키로 하고, 당해 배타적 논리합값(K)과 제 1 암호문(C1)을 공통키 복호 함수에 입력하여 복호값(M)을 산출한다.
또한 암호화 처리의 다른 예에서는, 값(ρ)을 선택하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하고, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 평문(M)을 공통키 암호 함수에 입력하여 제 1 암호문(C1)을 산출하고, 함수값(S)과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 값(r)을 산출하고, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출한다.
이것에 대응하는 복호처리에서는, 예를 들면, 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 함수값(S)과 제 1 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 값(r)을 산출하고, 제 2 암호문(C2)과 값(r)과 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)를 사용하고, 함수값(λ)=C2-r·(Σμ=1 nvμ·bμ)∈G1 n +1을 산출하고, 함수값(λ)과 보조키 정보(D2 *)=Σμ=1 nβμ·bμ *를 쌍선형 함수(e)에 입력하여 함수값(e(λ, D2 *))을 산출하고, 함수값(e(λ, D2 *))이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정하고, e(λ , D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우에, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S∼))을 공통키(K)로 하고 당해 공통키(K)와 제 1 암호문(C1)을 공통키 복호 함수에 입력하여 복호값(M)을 산출한다.
또, 바람직한 단사함수(R)나 충돌 곤란한 함수(H)의 예는 유사적인 랜덤 함수이다. 이것에 의해, 보다 안전성이 향상된다.
전술한 바와 같이, 본 발명의 암호방식은, 편리성이 높고, CCA 안전성을 향상시키기 위해서만 사용하는 공간을 암호문 공간에 형성하지 않고 CCA 안전성을 향상할 수 있다.
도 1은 제 1 실시형태의 암호 시스템의 구성을 설명하기 위한 도면.
도 2는 도 1의 암호화 장치의 구성을 설명하기 위한 도면.
도 3은 도 1의 복호장치의 구성을 설명하기 위한 도면.
도 4는 도 1의 키 생성장치의 구성을 설명하기 위한 도면.
도 5는 제 1 실시형태의 암호화 처리를 설명하기 위한 도면.
도 6은 제 1 실시형태의 키정보의 생성 처리를 설명하기 위한 도면.
도 7은 제 1 실시형태의 복호처리를 설명하기 위한 도면.
도 8은 제 2 실시형태의 암호 시스템의 구성을 설명하기 위한 도면.
도 9는 도 8의 암호화 장치의 구성을 설명하기 위한 도면.
도 10은 도 8의 복호장치의 구성을 설명하기 위한 도면.
도 11은 도 8의 키 생성장치의 구성을 설명하기 위한 도면.
도 12는 제 2 실시형태의 암호화 처리를 설명하기 위한 도면.
도 13은 제 2 실시형태의 키정보의 생성 처리를 설명하기 위한 도면.
도 14는 제 2 실시형태의 복호처리를 설명하기 위한 도면.
(발명을 실시하기 위한 형태)
본 발명을 실시하기 위한 형태를 설명한다.
[정의]
우선, 본 형태에서 사용하는 용어나 기호를 정의한다.
행렬: 「행렬」이란 연산이 정의된 집합의 원소를 직사각형으로 나열한 것을 의미한다. 환의 원소를 요소로 하는 것뿐만 아니라, 군의 원소를 요소로 하는 것도 「행렬」이라고 표현한다.
(·)T:(·)T는·의 전치행렬을 나타낸다.
(·)-1:(·)-1은·의 역행열을 나타낸다.
∧: ∧는 논리적을 나타낸다.
∨: ∨는 논리합을 나타낸다.
Z: Z는 정수 집합을 나타낸다.
k: k는 세큐러티 패러미터(k∈Z, k>0)를 나타낸다.
{0,1}*: {0,1}* 는 임의 비트 길이의 바이너리 계열을 나타낸다. 그 일례는 정수 0 및 1로 이루어지는 계열이다. 그러나, {0,1}*는 정수 0 및 1로 이루어지는 계열에 한정되지 않는다. {0,1}*는 위수 2의 유한체 또는 그 확대체와 동의이다.
{0,1}ζ: {0,1}ζ는 비트길이(ζ)(ζ∈Z,ζ>0)의 바이너리 계열을 나타낸다. 그 일례는 정수 0 및 1로 이루어지는 계열이다. 그러나, {0,1}ζ는 정수 0 및 1로 이루어지는 계열에 한정되지 않는다. {0,1}ζ는 위수 2의 유한체(ζ=1의 경우) 또는 그것을 ζ차 확대한 확대체(ζ>1의 경우)와 동의이다.
(+):(+)는 바이너리 계열 간의 배타적 논리합 연산자를 나타낸다. 예를 들면, 10110011(+)11100001=01010010을 충족시킨다.
Fq: Fq는 위수(q)의 유한체를 나타낸다. 위수(q)는 1 이상의 정수이며, 예를 들면, 소수나 소수의 멱승값을 위수(q)로 한다. 즉, 유한체(Fq)의 예는 근본체나 그것을 기초체로 한 확대체이다. 또한, 유한체(Fq)가 근본체일 경우의 연산은, 예를 들면, 위수(q)를 법으로 하는 잉여 연산에 의해 용이하게 구성할 수 있다. 또한 유한체(Fq)가 확대체일 경우의 연산은, 예를 들면, 기약 다항식을 법으로 하는 잉여 연산에 의해 용이하게 구성할 수 있다. 유한체(Fq)의 구체적인 구성방법은, 예를 들면, 참고문헌 1 「ISO/IEC 18033-2: Information technology - Security techniques - Encryption algorithms - Part 2: Asymmetric ciphers」에 개시되어 있다.
0F: 0F는 유한체(Fq)의 가법단위원을 나타낸다.
1F: 1F는 유한체(Fq)의 승법단위원을 나타낸다.
δ(i,j): δ(i,j)는 크로네커의 델타 함수를 나타낸다. i=j인 경우에 δ(i,j)=1F를 충족시키고, i≠j인 경우에 δ(i,j)=0F를 충족시킨다.
E: E는 유한체(Fq)상에서 정의된 타원 곡선을 나타낸다. E는 아핀(affine) 좌표판의 Weierstrass 방정식
y2+a1·x·y+a3·y=x3+a2·x2+a4·x+a6 …(1)
(단, a1, a2, a3, a4, a6∈Fq)를 충족시키는 x, y∈Fq로 이루어지는 점(x, y)의 집합에 무한 원점으로 불리는 특별한 점 O를 부가한 것으로 정의된다. 타원 곡선(E) 위의 임의의 2점에 대하여 타원 가산이라고 불리는 2항 연산(+) 및 타원 곡선(E) 위의 임의인 1점에 대하여 타원 역원이라 불리는 단항 연산(-)을 각각 정의할 수 있다. 또, 타원 곡선(E) 위의 유리점으로 이루어지는 유한집합이 타원 가산에 관하여 군을 이루는 것, 타원 가산을 사용하여 타원 스칼라배산이라 불리는 연산을 정의할 수 있는 것, 및 컴퓨터상에서의 타원 가산 등의 타원 연산의 구체적인 연산방법은 잘 알려져 있다(예를 들면, 참고문헌 1, 참고문헌 2 「RFC 5091: Identity-Based Cryptography Standard(IBCS)#1: Supersingular Curve Implementations of the BF and BB1 Cryptosystems」, 참고문헌 3 「이안·F·블라케, 가디엘·세로씨, 나이젤·P·스마트=저, 「타원 곡선 암호」, 출판=피어슨·에듀케이션, ISBN4-89471-431-0」 등 참조).
또한 타원 곡선(E)상의 유리점으로 이루어지는 유한집합은 위수(p)(p≥1)의 부분군을 갖는다. 예를 들면, 타원 곡선(E)상의 유리점으로 이루어지는 유한집합의 요소수를 #E로 하고, p를 #E를 정제(整除)하는 큰 소수로 한 경우, 타원 곡선(E)의 p등분점으로 이루어지는 유한집합 E[p]는 타원 곡선(E) 위의 유리점으로 이루어지는 유한집합의 부분군을 구성한다. 또한, 타원 곡선(E)의 p등분점이란 타원 곡선(E) 위의 점(A) 중, 타원 곡선(E) 위에서의 타원 스칼라배산값(p·A)이 p·A=O를 충족시키는 점을 의미한다.
G1, G2, GT: G1, G2, GT는 위수(q)의 순회군을 나타낸다. 순회군 G1, G2의 구체예는, 타원 곡선(E)의 p등분점으로 이루어지는 유한집합(E[p])이나 그 부분군이다. G1=G2이어도 되고 G1≠G2이어도 된다. 또한 순회군 GT의 구체예는 유한체(Fq)를 기초체로 하는 확대체를 구성하는 유한집합이다. 그 일례는 유한체(Fq)의 대수폐포에 있어서의 1의 p승근으로 이루어지는 유한집합이다.
또한, 본 형태에서는, 순회군(G1, G2)상에서 정의된 연산을 가법적으로 표현하고, 순회군(GT)상에서 정의된 연산을 승법적으로 표현한다. 즉, χ∈Fq 및 Ω∈G1에 대한χ·Ω∈G1은, Ω∈G1에 대하여 순회군(G1)에서 정의된 연산을 χ회 시행하는 것을 의미하고, Ω1, Ω2∈G1에 대한 Ω12∈G1은 Ω1∈G1과 Ω2∈G1을 피연산자로 하여 순회군(G1)에서 정의된 연산을 행하는 것을 의미한다. 마찬가지로, χ∈Fq 및 Ω∈G2에 대한 χ·Ω∈G2는, Ω∈G2에 대하여 순회군(G2)에서 정의된 연산을 χ회 시행하는 것을 의미하고, Ω1, Ω2∈G2에 대한 Ω12∈G2는, Ω1∈G2와 Ω2∈G2를 피연산자로 하여 순회군(G2)에서 정의된 연산을 행하는 것을 의미한다. 한편, χ∈Fq 및 Ω∈GT에 대한 Ωχ∈GT는, Ω∈GT에 대하여 순회군(GT)에서 정의된 연산을 χ회 시행하는 것을 의미하고, Ω1, Ω2∈GT에 대한 Ω1·Ω2∈GT는, Ω1∈GT와 Ω2∈GT를 피연산자로 하여 순회군(GT)에서 정의된 연산을 행하는 것을 의미한다.
G1 n +1: G1 n +1은 n+1(n≥1)개의 순회군(G1)의 직적을 나타낸다.
G2 n +1: G2 n +1은 n+1개의 순회군(G2)의 직적을 나타낸다.
g1, g2, gT: g1, g2, gT는 순회군(G1, G2, GT)의 생성원을 나타낸다.
V: V는 n+1개의 순회군(G1)의 직적으로 이루어지는 n+1차원의 벡터공간을 나타낸다.
V*: V*는 n+1개의 순회군(G2)의 직적으로 이루어지는 n+1차원의 벡터공간을 나타낸다.
e: e는 직적(G1 n+1)과 직적(G2 n+1)과의 직적(G1 n+1×G2 n+1)을 순회군(GT)에 그리는 비퇴화한 쌍선형 사상(bilinear map)을 계산하기 위한 함수(「쌍선형 함수」라고 부름)를 나타낸다. 쌍선형 함수(e)는 순회군(G1)의 n+1개의 원소 γL(L=1,..., n+1)(n≥1)과 순회군(G2)의 n+1개의 원소 γL *(L=1,..., n+1)을 입력으로 하고, 순회군(GT)의 1개의 원소를 출력한다.
e: G1 n +1×G2 n +1→GT …(2)
쌍선형 함수(e)는 이하의 성질을 충족시킨다.
[쌍선 형성] 모든 Γ1∈G1 n +12∈G2 n +1 및 ν,κ∈Fq에 대하여 이하의 관계를 충족시킨다.
e(ν·Γ1,κ·Γ2)=e(Γ12)ν·κ …(3)
[비퇴화성] 모든
Γ1∈G1 n +1, Γ2∈G2 n +1 …(4)
를 순회군(GT)의 단위원에 복사하는 함수는 아니다.
[계산가능성] 모든 Γ1∈G1 n +1, Γ2∈G2 n +1에 대하여 e(Γ12)를 효율적으로 계산하는 알고리즘이 존재한다.
본 형태에서는, 순회군(G1)과 순회군(G2)의 직적(G1×G2)을 순회군(GT)에 복사하는 비퇴화 쌍선형 사상을 계산하기 위한 함수
Pair: G1×G2→GT …(5)
를 사용하여 쌍선형 함수(e)를 구성한다. 본 형태의 쌍선형 함수(e)는 순회군(G1)의 n+1개의 원소 γL(L=1,...,n+1)로 이루어지는 n+1차원 벡터(γ1,...,γn+1)와, 순회군(G2)의 n+1개의 원소 γL *(L=1,...,n+1)로 이루어지는 n+1차원 벡터(γ1 *,...,γn+1 *)의 입력에 대하여, 순회군(GT)의 1개의 원소
e=ΠL=1 n+1 Pair(γL, γL *) …(6)
를 출력하는 함수다.
또한, 쌍선형 함수(Pair)는 순회군(G1)의 1개의 원소와 순회군(G2)의 1개의 원소와의 세트를 입력으로 하고, 순회군(GT)의 1개의 원소를 출력하는 함수이며, 이하의 성질을 충족시킨다.
[쌍선 형성] 모든 Ω1∈G1, Ω2∈G2 및 ν,κ∈Fq에 대하여 이하의 관계를 충족시킨다.
Pair(ν·Ω1, κ·Ω2)=Pair(Ω1, Ω2)ν·κ …(7)
[비퇴화성] 모든
Ω1∈G1, Ω2∈G2 …(8)
을 순회군(GT)의 단위원에 복사하는 함수는 아니다.
[계산가능성] 모든 Ω1∈G1, Ω2∈G2에 대하여 Pair(Ω1, Ω2)를 효율적으로 계산하는 알고리즘이 존재한다.
또한, 쌍선형 함수(Pair)의 구체예는 Weil 페어링이나 Tate 페어링 등의 페어링 연산을 행하기 위한 함수이다(예를 들면, 참고문헌 4 「Alfred. J. Menezes, ELLIPTIC CURVE PUBLIC KEY CRYPTOSYSTEMS, KLUWER ACADEMIC PUBLISHERS, ISBNO-7923-9368-6, pp.61-81」 등 참조). 또, 타원곡선(E)의 종류에 따라, Tate 페어링 등의 페어링 연산을 행하기 위한 함수와 소정의 함수 phi를 조합한 변경 페어링 함수(e)(Ω1, phi(Ω2))(Ω1∈G1, Ω2∈G2)를 쌍선형 함수(Pair)로서 사용해도 된다(예를 들면, 참고문헌 2 등 참조). 또, 페어링 연산을 컴퓨터상에서 행하기 위한 알고리즘으로서는 주지의 Miller의 알고리즘(참고문헌 5 「V. S. Miller, "Short Programs for functions on Curves," 1986, 인터넷<http://crypto.stanford.edu/miller/miller.pdf>」 등이 존재한다. 또한 페어링 연산을 효율적으로 행하기 위한 타원 곡선이나 순회군의 구성방법은 잘 알려져 있다(예를 들면, 참고문헌 2, 참고문헌 6 「A. Miyaji, M. Nakabayashi, S. Takano, "New explicit conditions of elliptic curve Traces for FR-Reduction," IEICE Trans. Fundamentals, vol. E84-A, no05, pp.1234-1243, May 2001」, 참고문헌 7 「P. S. L. M. Barreto, B. Lynn, M. Scott, "Constructing elliptic curves with prescribed embedding degrees," Proc. SCN'2002, LNCS 2576, pp.257-267, Springer-Verlag. 2003」, 참고문헌 8 「R. Dupont, A. Enge, F. Morain, "Building curves with arbitrary small MOV degree over finite prime fields," http://eprint.iacr.org/2002/094/」 등 참조).
ai(i=1,...,n+1): 순회군(G1)의 n+1개의 원소를 요소라고 하는 n+1차원의 기저벡터를 나타낸다. 기저벡터(ai)의 일례는 κ1·g1∈G1을 i차원째의 요소로 하고, 나머지의 n개의 요소를 순회군(G1)의 단위원(가법적으로 「0」으로 표현)으로 하는 n+1차원의 기저벡터이다. 이 경우, n+1차원의 기저벡터(ai)(i=1,...,n+1)의 각 요소를 각각 열거하여 표현하면, 이하와 같이 된다.
Figure pct00001
여기에서, κ1은 가법단위원(0F) 이외의 유한체(Fq)의 원소로 이루어지는 정수이며, κ1∈Fq의 구체예는 κ1=1F이다. 기저벡터(ai)는 직교 기저이며, 순회군(G1)의 n+1개의 원소를 요소로 하는 모든 n+1차원 벡터는 n+1차원의 기저벡터(ai)(i=1,...,n+1)의 선형합에 의해 표시된다. 즉, n+1차원의 기저벡터(ai)는 전술의 벡터공간(V)을 펼친다.
ai *(i=1,...,n+1): ai *는 순회군(G2)의 n+1개의 원소를 요소로 하는 n+1차원의 기저벡터를 나타낸다. 기저벡터(ai *)의 일례는, κ2·g2∈G2를 i차원째의 요소로 하고, 나머지 n개의 요소를 순회군(G2)의 단위원(가법적으로 「0」으로 표현)으로 하는 n+1차원의 기저벡터이다. 이 경우, 기저벡터(ai *)(i=1,...,n+1)의 각 요소를 각각 열거하여 표현하면, 이하와 같이 된다.
Figure pct00002
여기에서, κ2는 가법단위원(0F) 이외의 유한체(Fq)의 원소로 이루어지는 정수이며, κ2∈Fq의 구체예는 κ2=1F이다. 기저벡터(ai *)는 직교 기저이며, 순회군(G2)의 n+1개의 원소를 요소로 하는 모든 n+1차원 벡터는 n+1차원의 기저벡터(ai *)(i=1,...,n+1)의 선형합에 의해 표시된다. 즉, n+1차원의 기저벡터(ai *)는 전술의 벡터공간(V*)을 펼친다.
또한, 기저벡터(ai)와 기저벡터(ai *)는 0F를 제외한 유한체(Fq)의 원소(τ=κ1·κ2)에 대하여
e(ai, aj *)=gT τ·δ(i,j) …(11)
를 충족시킨다. 즉, i=j의 경우에는, 식 (6)(7)의 관계로부터,
e(ai, aj *) = Pair(κ1·g12·g2)·Pair(0,0)·...·Pair(0,0)
= Pair(g1, g2)κ1·κ2·Pair(g1, g2)0·0·...·Pair(g1, g2)0·0
= Pair(g1, g21·κ2=gT τ
를 충족시킨다. 한편, i≠j의 경우에는, e(ai, aj *)는, Pair(κ1·g12·g2)를 포함하지 않고, Pair(κ1·g1, 0)와 Pair(0, κ2·g2)와 Pair(0, 0)과의 적으로 된다. 또한, 식 (7)의 관계로부터 Pair(g1, 0)=Pair(0, g2)=Pair(g1, g2)0을 충족시킨다. 그 때문에, i≠j의 경우에는,
e(ai, aj *)=e(g1, g2)0=gT 0
를 충족시킨다.
특히, τ=κ1·κ2=1F인 경우(예를 들면, κ12=1F인 경우),
e(ai, aj *)=gT δ(i,j) …(12)
를 충족시킨다. 여기에서, gT 0=1은 순회군(GT)의 단위원이며, gT 1=gT는 순회군(GT)의 생성원이다. 이 경우, 기저벡터(ai)와 기저벡터(ai *)는 쌍대 정규 직교 기저이며, 벡터공간(V)과 벡터공간(V*)은 쌍선형 사상을 구성 가능한 쌍대 벡터공간[쌍대 페어링 벡터공간(DPVS: Dual Paring Vector space)]이다.
A: A는 기저벡터(ai)(i=1,...,n+1)을 요소로 하는 n+1행 n+1열의 행렬을 나타낸다. 예를 들면, 기저벡터(ai)(i=1,...,n+1)가 식 (9)에 의해 표현되는 경우, 행렬(A)은,
Figure pct00003
이 된다.
A*: A*는 기저벡터(ai *)(i=1,...,n+1)를 요소로 하는 n+1행 n+1열의 행렬을 나타낸다. 예를 들면, 기저벡터(ai *)(i=1,...,n+1)가 식 (10)에 의해 표현되는 경우, 행렬(A*)은,
Figure pct00004
가 된다.
X: X는 유한체(Fq)의 원소를 요소라고 하는 n+1행 n+1열의 행렬을 나타낸다. 행렬(X)은 기저벡터(ai)의 좌표변환에 사용된다. 행렬(X)의 i행j열(i=1,...,n+1,j=1,...,n+1)의 요소를 χi,j∈Fq로 하면, 행렬(X)은,
Figure pct00005
가 된다. 또한, 행렬(X)의 각 요소(χi,j)를 변환계수라고 부른다.
X*: X*는 행렬(X)의 역행열의 전치 행렬(X*)=(X-1)T를 나타낸다. 행렬(X*)은 기저벡터(ai *)의 좌표변환에 사용된다. 행렬(X*)의 i행j열의 요소를 χi,j *∈Fq로 하면, 행렬(X*)은,
Figure pct00006
이 된다. 또한, 행렬(X*)의 각 요소(χi,j *)를 변환계수라고 부른다.
이 경우, n+1행 n+1열의 단위행렬을 I라고 하면 X·(X*)T=I를 충족시킨다. 즉, 단위행렬
Figure pct00007
에 대하여,
Figure pct00008
을 충족시킨다. 여기에서, n+1차원 벡터
χi =(χi,1,..., χi,n+1) …(19)
χj →*=(χj,1 *,..., χj,n+1 *) …(20)
를 정의한다. 그러면, 식 (18)의 관계로부터, n+1차원 벡터 χi 와 χj →*의 내적은,
χi ·χj →*=δ(i,j) …(21)
이 된다.
bi: bi는 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저벡터를 나타낸다. 기저벡터(bi)는 행렬(X)을 사용하여 기저벡터(ai)(i=1,...,n+1)를 좌표변환함으로써 얻어진다. 구체적으로는, 기저벡터(bi)는,
bij=1 n+1χi,j·aj …(22)
의 연산에 의해 얻어진다. 예를 들면, 기저벡터(aj)(j=1,...,n+1)가 식 (9)에 의해 표현되는 경우, 기저벡터(bi)의 각 요소를 각각 열거하여 표현하면, 이하와 같이 된다.
bi=(χi,1·κ1·g1, χi,2·κ1·g1,...,χi,n+1·κ1·g1) …(23)
순회군(G1)의 n+1개의 원소를 요소로 하는 모든 n+1차원 벡터는 n+1차원의 기저벡터(bi)(i=1,...,n+1)의 선형합에 의해 표시된다. 즉, n+1차원의 기저벡터(bi)는 전술의 벡터공간(V)을 펼친다.
bi *: bi *는 순회군(G2)의 n+1개의 원소를 요소로 하는 n+1차원의 기저벡터를 나타낸다. 행렬(X*)을 사용하여 기저벡터(ai *)(i=1,...,n+1)를 좌표변환함으로써 얻어진다. 구체적으로는, 기저벡터(bi *)는,
bi *j=1 n+1χi,j *·aj * …(24)
의 연산에 의해 얻어진다. 예를 들면, 기저벡터(aj *)(j=1,...,n+1)가 식 (10)에 의해 표현되는 경우, 기저벡터(bi *)의 각 요소를 각각 열거하여 표현하면, 이하와 같이 된다.
bi *=(χi,1 *·κ2·g2, χi,2 *·κ2·g2,...,χi,n+1 *·κ2·g2) …(25)
가 된다. 순회군(G2)의 n+1개의 원소를 요소로 하는 모든 n+1차원 벡터는 n+1차원의 기저벡터(bi *)(i=1,...,n+1)의 선형합에 의해 표시된다. 즉, n+1차원의 기저벡터(bi *)는 전술의 벡터공간(V*)을 펼친다.
또한, 기저벡터(bi)와 기저벡터(bi *)는 0F를 제외한 유한체(Fq)의 원소(τ=κ1·κ2)에 대하여
e(bi, bj *)=gT τ·δ(i,j) …(26)
를 충족시킨다. 즉, 식 (6)(21)(23)(25)의 관계로부터,
Figure pct00009
를 충족시킨다. 특히, τ=κ1·κ2=1F인 경우(예를 들면,κ12=1F인 경우),
e(bi, bj *)=gT δ(i,j) …(27)
를 충족시킨다. 이 경우, 기저벡터(bi)와 기저벡터(bi*)는 쌍대 페어링 벡터공간(벡터공간(V)과 벡터공간(V*))의 쌍대 정규 직교 기저이다.
또한, 식 (26)의 관계를 충족시키는 것이라면, 식 (9)(10)에서 예시한 것 이외의 기저벡터(ai 및 ai *)나, 식 (22)(24)에서 예시한 것 이외의 기저벡터(bi 및 bi *)를 사용해도 된다.
B: B는 기저벡터(bi)(i=1,...,n+1)를 요소로 하는 n+1행 n+1열의 행렬을 나타낸다. B=X·A를 충족시킨다. 예를 들면, 기저벡터(bi)가 식 (23)에 의해 표현되는 경우, 행렬 B는,
Figure pct00010
이 된다.
B*: B*는 기저벡터(bi *)(i=1,...,n+1)를 요소라고 하는 n+1행 n+1열의 행렬을 나타낸다. B*=X*·A*를 충족시킨다. 예를 들면, 기저벡터(bi *)(i=1,...,n+1)가 식 (25)에 의해 표현되는 경우, 행렬 B*는,
Figure pct00011
으로 된다.
w: w는 유한체(Fq)의 원소를 요소로 하는 n차원 벡터를 나타낸다.
w→=(w1,..., wn)∈Fq n …(30)
wμ: wμ는 n차원 벡터의 μ(μ=1,...,n)번째의 요소를 나타낸다.
v: v는 유한체(Fq)의 원소를 요소로 하는 n차원 벡터를 나타낸다.
v→=(v1,..., vn)∈Fq n …(31)
vμ: vμ는 n차원 벡터의 μ(μ=1,...,n)번째의 요소를 나타낸다.
충돌 곤란한 함수: 「충돌 곤란한 함수」란 충분히 큰 세큐러티 패러미터(k)에 대하여 이하의 조건을 충족시키는 함수(h), 또는, 그것으로 간주할 수 있는 함수를 나타낸다.
Pr[A(h)=(x,y)|h(x)=h(y)∧x≠y]<ε(k) …(32)
단, Pr[·]은 사상[·]의 확률이며, A(h)는 함수(h)에 대하여 h(x)=h(y)를 충족시키는 값(x,y)(x≠y)을 산출하는 확률적 다항식 시간 알고리즘이며, ε(k)는 세큐러티 패러미터(k)에 대한 다항식이다. 충돌 곤란한 함수의 예는, 참고문헌 1에 개시된 「cryptographic hash function」 등의 해쉬 함수이다.
단사 함수: 「단사 함수」란 값역에 속하는 각각의 원소가 그 정의역에 속하는 각각 한개의 원소만의 상인 함수, 또는, 그것으로 간주할 수 있는 함수를 나타낸다. 단사 함수의 예는, 참고문헌 1에 개시된 「KDF(Key Derivation Function)」 등의 해쉬 함수이다.
유사적인 랜덤 함수: 「유사적인 랜덤 함수」란 집합(Φζ)의 부분집합(φζ)에 속하는 함수, 또는 그것으로 간주할 수 있는 함수를 나타낸다. 단, 임의의 확률적 다항식 시간 알고리즘은 집합(Φζ)과 그 부분집합(φζ)을 구별할 수 없고, 집합(Φζ)은 집합({0,1}*)의 원소를 집합({0,1}ζ)의 원소로 복사하는 모든 함수의 집합이다. 유사적인 랜덤 함수의 예는, 상술한 바와 같은 해쉬 함수이다.
H1: H1은 2개의 바이너리 계열(ω1, ω2)∈{0,1}k×{0,1}*를 입력으로 하고, 유한체(Fq)의 2개의 원소(ψ12)∈Fq×Fq를 출력하는 충돌 곤란한 함수를 나타낸다.
H1: {0,1}k×{0,1}*→Fq×Fq …(33)
이러한 함수(H1)의 예는, ω1과 ω2의 비트 연결값(ω1||ω2)을 입력으로 하고, 유한체(Fq)의 2개의 원소(ψ12)∈Fq×Fq를 출력하는 함수이다. 이 함수는 참고문헌 1에 개시된 「cryptographic hash function」 등의 해쉬 함수, 「바이너리 계열로부터 정수로의 변환 함수(Octet string/integer conversion)」 및 「바이너리 계열로부터 유한체의 원소로의 변환 함수(Octet string and integer/finite field conversion)」를 포함해도 된다. 또한, 함수(H1)은 유사적인 랜덤 함수인 것이 바람직하다.
H2: H2는 순회군(GT)의 원소와 바이너리 계열(ξ,ω2)∈GT×{0,1}*를 입력으로 하고, 유한체(Fq)의 1개의 원소(ψ∈Fq)를 출력하는 충돌 곤란한 함수를 나타낸다.
H2: GT×{0,1}*→Fq …(34)
이러한 함수(H2)의 예는, 순회군(GT)의 원소(ξ∈GT)와 바이너리 계열(ω2∈{0,1}*)을 입력으로 하고, 순회군(GT)의 원소(ξ∈GT)를 참고문헌 1에 개시된 「유한체의 원소로부터 바이너리 계열로의 변환 함수(Octet string and integer/finite field conversion)」로 입력하여 바이너리 계열을 구하고, 그 바이너리 계열과 바이너리 계열(ω2∈{0,1}*)과의 비트 연결값에 대하여 참고문헌 1에 개시된 「cryptographic hash function」 등의 해쉬 함수 연산을 행하고, 또한 「바이너리 계열로부터 유한체의 원소로의 변환 함수(Octet string and integer/finite field conversion)」의 연산을 행하고, 유한체(Fq)의 1개의 원소(ψ∈Fq)를 출력하는 함수이다. 또한, 안전성의 관점에서, 함수(H2)는 유사적인 랜덤 함수인 것이 보다 바람직하다.
R: R은 1개의 순회군(GT)의 원소(ξ∈GT)를 입력으로 하고, 1개의 바이너리 계열(ω∈{0,1}k)을 출력하는 단사 함수를 나타낸다.
R: GT→{0,1}k …(35)
이러한 단사 함수(R)의 예는 순회군(GT)의 원소(ξ∈GT)를 입력으로 하고, 참고문헌 1에 개시된 「유한체의 원소로부터 바이너리 계열로의 변환 함수(Octet string and integer/finite field conversion)」와, 참고문헌 1에 개시된 「KDF(Key Derivation Function)」 등의 해쉬 함수와의 연산을 행하고, 1개의 바이너리 계열(ω∈{0,1}k)을 출력하는 함수이다. 또한, 안전성의 관점에서, 함수(R)는 충돌 곤란한 함수인 것이 바람직하고, 유사적인 랜덤 함수인 것이 보다 바람직하다.
Enc: Enc는 공통키 암호 방식 (cipher system)의 암호화 처리를 나타내는 공통키 암호 함수를 나타낸다. 공통키 암호 방식 (cipher system)의 구체예는 카멜리아(Camellia)나 AES 등이다.
Enck(M): Enck(M)은 공통키(K)를 사용하고, 공통키 암호 함수(Enc)를 따라 평문(M)을 암호화하여 얻어진 암호문을 나타낸다.
Dec: Dec는 공통키 암호 방식 (cipher system)의 복호 처리를 나타내는 공통키 복호 함수를 나타낸다.
Deck(C): Deck(C)는, 공통키(K)를 사용하고, 공통키 복호 함수(Dec)를 따라 암호문(C)을 복호하여 얻어진 복호 결과를 나타낸다.
[내적 술어 암호]
다음에, 내적 술어 암호의 기본적인 구성에 대하여 설명한다.
<술어 암호>
술어 암호(「함수 암호」라고 부르는 경우도 있음)란 「속성 정보」라고 불리는 정보와 「술어 정보」라고 불리는 정보와의 조합이 소정의 논리식을 「참」으로 하는 경우에 암호문을 복호할 수 있는 방식이다. 「속성 정보」와 「술어 정보」의 일방이 암호문에 메워 넣어지고, 타방이 키 정보에 메워 넣어진다. 종래의 술어 암호의 구성은, 예를 들면, 참고문헌 9 「"Predicate Encryption Supporting Disjunctions, Polynomial Equations, and Inner Products," with Amit Sahai and Brent Waters One of 4 papers from Eurocrypt 2008 invited to the Journal of Cryptology」 등에 개시되어 있다.
<내적 술어 암호>
내적 술어 암호는, 속성 정보나 술어 정보로서 벡터를 사용하고, 그들 내적이 0이 되는 경우에 암호문이 복호되는 술어 암호이다. 내적 술어 암호에서는 내적이 0이 되는 것과 논리식이 「참」이 되는 것이 등가이다.
[논리식과 다항식과의 관계]
내적 술어 암호에서는, 논리합이나 논리적으로 이루어지는 논리식을 다항식으로 표현한다.
우선, 「x가 η1이다」라고 하는 명제 1과 「x가 η2이다」라고 하는 명제 2의 논리합(x=η1)∨(x=η2)를
(x-η1)·(x-η2) …(36)
이라고 하는 다항식으로 표현한다. 그러면, 각 진리값과 식 (36)의 함수값과의 관계는 이하와 같이 된다.
Figure pct00012
표 1로부터 알 수 있는 바와 같이, 논리합(x=η1)∨(x=η2)이 참인 경우, 식 (36)의 함수값은 0이 되고, 논리합(x=η1)∨(x=η2)이 거짓인 경우, 식 (36)의 함수값은 0 이외의 값이 된다. 즉, 논리합(x=η1)∨(x=η2)이 참인 것과, 식 (36)의 함수값이 0이 되는 것과는 등가이다. 따라서, 논리합은 식 (36)으로 표현할 수 있다.
또한 「x가 η1이다」라고 하는 명제 1과 「x가 η2이다」라고 하는 명제 2와의 논리적(x=η1)∧(x=η2)을
ι1·(x-η1)+ι2·(x-η2) …(37)
라고 하는 다항식으로 표현한다. 단, ι1 및 ι2는 난수이다. 그러면, 진리값과 식 (37)의 함수값은 이하의 관계가 된다.
Figure pct00013
표 2로부터 알 수 있는 바와 같이, 논리적(x=η1)∧(x=η2)이 참인 경우, 식 (37)의 함수값은 0이 되고, 논리적(x=η1)∧(x=η2)이 거짓인 경우, 식 (37)의 함수값은 0 이외의 값으로 된다. 즉, 논리적(x=η1)∧(x=η2)이 참인 것과, 식 (37)의 함수값이 0이 되는 것과는 등가이다. 따라서, 논리적은 식 (37)로 표현할 수 있다.
이상과 같이, 식 (36)과 식 (37)을 사용함으로써 논리합이나 논리적으로 이루어지는 논리식을 다항식 (f(x))로 표현할 수 있다. 예를 들면, 논리식 {(x=η1)∨(x=η2)∨(x=η3)}∧(x=η4)∧(x=η5)는, 다항식
f(x)=ι1·{(x-η1)·(x-η2)·(x-η3)}+ι2·(x-η4)+ι3·(x-η5)…(38)
로 표현할 수 있다.
또한, 식 (36)에서는, 1개의 부정원(x)을 사용하여 논리합을 표현했지만, 복수의 부정원을 사용하여 논리합을 표현하는 것도 가능하다. 예를 들면, 2개의 부정원 x0 및 x1을 사용하여, 「x0이 η0이다」라고 하는 명제 1과 「x1이 η1이다」라고 하는 명제 2와의 논리합(x00)∨(x11)을
(x00)·(x11)
이라고 하는 다항식으로 표현하는 것도 가능하고, 3개 이상의 부정원을 사용하여, 논리합을 다항식으로 표현하는 것도 가능하다.
또, 식 (37)에서는, 1개의 부정원(x)을 사용하여 논리적을 표현했지만, 복수의 부정원을 사용하여 논리적을 표현하는 것도 가능하다. 예를 들면, 또한 「x0이 η0이다」라고 하는 명제 1과 「x1이 η1이다」라고 하는 명제 2와의 논리적(x00)∧(x11)을
ι0·(x00)+ι1·(x11)
이라고 하는 다항식으로 표현하는 것도 가능하고, 3개 이상의 부정원을 사용하여, 논리적을 다항식으로 표현하는 것도 가능하다.
논리합 및/또는 논리적을 포함하는 논리식을 H(H≥1) 종류의 부정원(x0,...,xH -1)을 사용하여 표현한 다항식을 f(x0,...,xH -1)으로 표현한다. 또한 각 부정원(x0,...,xH-1)에 대응하는 명제를 「xh가 ηh이다」로 한다. 단, ηh(h=0,...H-1)는 명제마다 정해지는 정수이다. 이 경우, 당해 논리식을 나타내는 다항식 (f)(x0,...,xH -1)은, 부정원(xh)와 정수(ηh)와의 차를 취하는 다항식에 의해 당해 부정원(xh)이 당해 정수(ηh)라고 하는 명제를 표현하고, 명제를 각각 표현하는 다항식의 적에 의해 당해 명제의 논리합을 표현하고, 명제 또는 명제의 논리합을 각각 표현하는 다항식의 선형합에 의해 당해 명제 또는 명제의 논리합의 논리적을 표현하고, 그것에 의해 논리식을 표현한 다항식으로 된다. 예를 들면, 5개의 부정원(x0,...,x4)을 사용하여, 논리식 {(x00)∨(x11)∨(x22)}∧(x33)∧(x44)를 다항식으로 표현하면,
f(x0,...,x4)=ι0·{(x00)·(x11)·(x22)}+ι1·(x=-η3)+ι2·(x=-η4)
가 된다.
[다항식과 내적의 관계]
논리식을 나타내는 다항식 (f)(x0,...,xH -1)은 2개의 n차원 벡터의 내적으로 표현할 수 있다. 즉, 다항식 (f)(x0,...,xH -1)은 당해 다항식 (f)(x0,...,xH -1)의 각 항의 부정원 성분을 각 요소로 하는 벡터
v=(v1,..., vn)
와, 당해 다항식 (f)(x0,...,xH -1)의 각 항의 계수성분을 각 요소로 하는 벡터
w=(w1,..., wn)
와의 내적
f(x0,...,xH -1)=w·v
와 동일하다. 즉, 논리식을 나타내는 다항식 (f)(x0,...,xH -1)이 0인지 아니지와, 다항식 (f)(x0,...,xH -1)의 각 항의 부정원 성분을 각 요소로 하는 벡터(v)와, 다항식 (f)(x0,...,xH-1)의 각 항의 계수 성분을 각 요소로 하는 벡터(w)와의 내적이 0인지의 아닌지는 등가이다.
f(x0,...,xH -1)=0 ←→ w·v=0
예를 들면, 1개의 부정원(x)으로 표현된 다항식 f(x)=θ0·x01·x+...+θn-1·xn-1은 2개의 n차원 벡터
w→=(w1,..., wn)=(θ0,..., θn-1) …(39)
v→=(v1,..., vn)=(x0,...,xn -1) …(40)
의 내적
f(x)=w·v …(41)
로 표현할 수 있다. 즉, 논리식을 나타내는 다항식 (f(x))이 0인지 아닌지는, 식 (41)의 내적이 0인지의 아닌지와 등가이다.
f(x)=0 ←→ w·v→=0 …(42)
또한 다항식 (f)(x0,...,xH -1)의 각 항의 부정원 성분을 각 요소로 하는 벡터를
w=(w1,..., wn)
으로 하고, 다항식 (f)(x0,...,xH -1)의 각 항의 계수 성분을 각 요소로 하는 벡터
v=(v1,..., vn)
으로 해도, 논리식을 나타내는 다항식 (f)(x0,...,xH -1)이 0인지 아닌지와, 벡터(w)와 벡터(v)의 내적이 0인지 아닌지는 등가이다.
예를 들면, 식 (39)(40) 대신에
w=(w1,..., wn)=(x0,...,xn -1) …(43)
v→=(v1,..., vn)=(θ0,..., θn-1) …(44)
로 해도, 논리식을 나타내는 다항식 (f(x))이 0인지 아닌지와, 식 (41)의 내적이 0인지 아닌지는 등가이다.
내적 술어 암호에서는, 벡터(v)=(v0,..., vn -1) 및 w=(w0,..., wn -1)의 어느 일방을 속성 정보로 하고, 타방을 술어 정보로 하고, 속성 정보와 술어 정보의 일방이 암호문에 메워 넣어지고, 타방이 키 정보에 메워 넣어진다. 예를 들면, n차원 벡터(θ0,...,θn-1)가 술어 정보가 되고, n차원 벡터(x0,...,xn -1)가 속성 정보가 되고, 속성 정보와 술어 정보의 일방이 암호문에 메워넣어지고, 타방이 키 정보에 메워 넣어진다.
또한, 이하에서는, 키 정보에 메워 넣어지는 n차원 벡터를 w=(w1,..., wn)으로 하고, 암호문에 메워 넣어지는 n차원 벡터를 v=(v1,..., vn)으로 한다. 예를 들면,
술어 정보: w=(w1,..., wn)=(θ0,...,θn-1)
속성 정보: v=(v1,..., vn)=(x0,...,xn -1)
이거나,
술어 정보: v=(v1,..., vn)=(θ0,...,θn-1)
속성 정보: w=(w1,..., wn)=(x0,...,xn -1)
이다.
[내적 술어 암호의 기본 구성]
이하에서는, 내적 술어 암호를 사용하여 키 캡슐화 메커니즘(KEM)(Key Encapsulation Mechanisms)을 구성하는 경우의 기본 구성을 예시한다. 이 구성은 Setup(1k), GenKey(MSK, w), Enc(PA, v), Dec(SKw, C2)를 포함한다.
《Setup(1k): 셋업》
- 입력: 세큐러티 패러미터(k)
- 출력: 매스터 키 정보(MSK), 공개 패러미터(PK)
Setup(1k)의 1예에서는, 우선, 세큐러티 패러미터(k)를 n으로 하고, n+1차원의 기저벡터(ai)(i=1,...,n+1)을 요소호 하는 n+1행 n+1열의 행렬(A)과, 기저벡터(ai *)(i=1,...,n+1)를 요소로 하는 n+1행 n+1열의 행렬(A*)과, 좌표변환을 위한 n+1행 n+1열의 행렬(X, X*)이 선택된다. 다음에 식 (22)에 따라 좌표변환된 n+1차원의 기저벡터(bi)(i=1,...,n+1)가 산출되고, 식 (24)에 따라 좌표변환된 n+1차원의 기저벡터(bi *)(i=1,...,n+1)가 산출된다. 그리고, 기저벡터(bi *)(i=1,...,n+1)를 요소로 하는 n+1행 n+1열의 행렬(B*)이 매스터 키 정보(MSK)로서 출력되고, 벡터공간(V, V*), 기저벡터(bi)(i=1,...,n+1)를 요소로 하는 n+1행 n+1열의 행렬(B), 세큐러티 패러미터(k), 유한체(Fq), 타원 곡선(E), 순회군(G1, G2, GT), 생성원(g1, g2, gT), 쌍선형 함수(e) 등이 공개 패러미터(PK)로서 출력된다.
《GenKey(MSK, w): 키 정보 생성》
- 입력: 매스터 키 정보(MSK), 벡터(w)
- 출력: 벡터(w)에 대응하는 키 정보(D*)
GenKey(MSK, w)의 1예에서는, 우선, 유한체(Fq)로부터 원소(α∈Fq)가 선택된다. 그리고, 매스터 키 정보(MSK)인 행렬(B*)을 사용하여, 벡터(w)에 대응하는 키 정보
D*=α·(Σμ=1 nwμ·bμ *)+bn +1 *∈G2 n +1 …(45)
가 생성되고, 출력된다. 또한, 순회군(G2) 위에서의 이산 대수 문제의 구해가 곤란한 경우, 키 정보(D*)로부터 wμ·bμ *나 bn +1 *의 성분을 분리 추출하는 것은 곤란하다.
《Enc(PA, v): 암호화》
- 입력: 공개 패러미터(PK), 벡터(v)
- 출력: 암호문(C2), 공통키(K)
Enc(PA, v)의 1예에서는, 우선, 공통키(K)와 유한체(Fq)의 원소인 난수(υ1)가 생성된다. 그리고, 행렬(B) 등의 공개 패러미터(PK)와, 공통키(K)를 포함하는 값에 대응하는 유한체(Fq)의 원소(υ2)와, 벡터(v)와, 난수(υ1)를 사용하고, 암호문
C21·(Σμ=1 nvμ·bμ)+υ2·bn +1∈G1 n +1 …(46)
이 생성된다. 그리고, 암호문(C2)과 공통키(K)가 출력된다. 공통키(K)의 일례는 K=gT τ·υ2∈GT이다. 여기에서, 첨자의 υ2는 υ2를 의미한다. 또한 상기한 바와 같이τ의 일례는 τ=1F이다. 또한, 순회군(G1)상에서의 이산 대수 문제의 구해가 곤란한 경우, 암호문(C2)으로부터 vμ·bμ나 υ2·bn +1의 성분을 분리 추출하는 것은 곤란하다.
《Dec(SKw, C2): 복호·키 공유》
- 입력: 벡터(w)에 대응하는 키 정보(D1 *), 암호문(C2)
- 출력:공통키(K)
Dec(SKw, C2)의 1예에서는, 우선, 암호문(C2)과 키 정보(D1 *)가 식 (2)의 쌍선형 함수(e)에 입력된다. 그러면, 식 (3)(26)의 성질로부터,
Figure pct00014
을 충족시킨다.
여기에서, 내적 w·v=0이면, 식 (47)은,
Figure pct00015
로 변형할 수 있다. 이 결과로부터 공통키(K)가 생성되어 출력된다. 공통키(K)의 일례는 K=gT τ·υ2∈GT이다.
[CCA 안전성]
이하의 가정에 있어서
Pr[bit=bit']<(1/2)-FNK(k) …(49)
인(단 FNK(k)는 k의 함수) 것을 「CCA 안전하다」라고 한다. 이 경우, [2]의 뒤에 [3]이 행해지는 것이라면 「CCA2에 대하여 안전하다」라고 하고, [3]의 뒤에 [2]가 행해지는 것이라면 「CCA1에 대하여 안전하다」라고 한다. 「CCA2」는 「CCA1」보다도 강력한 공격법이다.
[1] 공격자에게 공개 패러미터(PK)가 주어진다.
[2] 공격자는 공개 패러미터(PK)를 갖는 암호 오라클에 2개의 비트열인 평문(M0,M1)을 넘겨주고, 암호 오라클은 랜덤하게 bit∈{0,1}을 선택하고, 일방의 평문(Mbit)을 암호화하고, 그 암호문(C)을 공격자에게 넘겨준다.
[3] 공격자는 키정보(D*)를 갖는 복호 오라클에 암호문(C(σ))(C(σ)≠C)을 넘겨주고, 복호 오라클로부터 암호문(C(σ))의 복호결과를 받을 수 있다.
[4] 공격자는 bit'∈{0,1}을 출력한다.
[내적 술어 암호의 기본구성의 CCA 안전성]
상기한 내적 술어 암호의 기본구성은 CCA 안전성을 갖지 않는다. 이것을 간단한 예를 제시하여 설명한다. 이 간단한 예에서는, τ=1F이며, 공통키(K)가 K=MAP(gT υ2)이며, 평문(M)에 대한 공통키(K)를 사용한 공통키 암호방식의 암호문이 C1=K(+)M인 것으로 한다. 또한, MAP(gT υ2)는 gT υ2∈GT의 비트열로의 사상을 나타낸다. 이 경우, 공격자는 이하와 같은 전략(이하 「상정 전략」이라고 부름)을 취할 수 있다.
[1] 공격자에게 공개 패러미터(PK)가 주어진다.
[2] 공격자는 공개 패러미터(PK)를 갖는 암호 오라클에 벡터(v)와 2개의 평문(M0,M1)을 넘겨주고, 암호 오라클은 랜덤하게 bit∈{0,1}을 선택하고, 일방의 평문(Mbit)을 공통키(K)=gTυ2에서 암호화한 암호문
C1=K(+)Mbit …(50)
와, 공통키(K)=gT υ2의 암호문
C21·(Σμ=1 nvμ·bμ)+υ2·bn +1∈G1 n +1 …(51)
을 생성하고, 암호문(C1, C2)을 공격자에게 넘겨준다.
[3] 공격자는 키정보(D*)를 갖는 복호 오라클에 암호문
(C1(+)ΔM, C2) …(52)
를 넘겨주고, 복호 오라클로부터 암호문(C1(1) 및 C1(2))의 복호결과를 받는다.
여기에서, bit=0이었던 것이라면, C1=K(+)M0이며, C1(+)ΔM의 복호결과는 M0(+)ΔM으로 된다. 한편, bit=1이었던 것이라면, C1=K(+)M1이며, C1(+)ΔM의 복호결과는 M1(+)ΔM으로 된다.
[4] 공격자는 C1(+)ΔM의 복호결과가 M0(+)ΔM일 때 bit'=0을 출력하고, M1(+)ΔM일 때 bit'=1을 출력한다.
이 경우 Pr[bit=bit']=1이 되고, 식 (49)를 충족시키지 않는다.
[본 형태의 내적 술어 암호]
전술한 바와 같이, 내적 술어 암호의 기본구성은 CCA 안전성을 갖지 않는다. 한편, 내적 술어 암호의 기본구성에 CCA 안전성을 갖게 하기 위하여 CHK 변환방식이나 BK 변환방식을 사용하는 것에서는, CCA 안전성을 향상시키기 위해서만 사용하는 2차원의 공간이 암호문 공간에 필요하게 되어, 벡터공간(V,V*)의 차원수를 n+3으로 하지 않으면 안 된다. 본 형태에서는, CCA 안전성을 향상시키기 위해서만 사용하는 공간을 설치하지 않고 CCA 안전성을 향상시킨다.
<내적 술어 암호의 개량방식>
이하에, 본 형태의 내적 술어 암호의 개량방식의 개요를 나타낸다.
[암호화 처리]
암호화 처리를 행하는 암호화 장치에 있어서 이하의 처리를 실행한다.
(ENC-1) 공통키 암호화부에 있어서, 기억부로부터 읽어낸 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력한다.
(ENC-2) 함수 연산부에 있어서, 공통키(K)에 대응하는 값과 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 당해 함수(H)의 함수값을 출력한다.
(ENC-3) 벡터 연산부에 있어서, 함수(H)의 함수값에 대응하는 유한체(Fq)의 원소(r)와, 공통키(K)에 대응하는 유한체(Fq)의 원소(ρ)와, 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n,n≥1)와, n+1차원의 기저 벡터(bi)∈G1 n + 1를 사용하고, 암호문
C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(53)
을 산출하고, 당해 암호문(C2)을 출력한다.
[복호처리]
복호처리를 행하는 복호장치에 있어서 이하의 처리를 실행한다.
(DEC-1) 암호문(C1)과 암호문(C2)∈G1 n +1을 포함하는 값이 입력부에 입력된다.
(DEC-2) 쌍선형 함수 연산부에 있어서, 암호문(C2)∈G1 n +1과 키정보
D1 *=α·(Σμ=1 nwμ·bμ *)+bn +1 * …(54)
를 쌍선형 함수(e)에 입력하여 함수값
S=e(C2, D1 *)∈GT …(55)
를 산출하고, 당해 함수값(S)을 출력한다.
(DEC-3) 함수 연산부에 있어서, 함수값(S)에 대응하는 값과 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 당해 함수(H)의 함수값을 출력한다. 또한, 키정보(D1 *)가 옳은 경우, 「함수값(S)에 대응하는 값」은 암호화 처리의(ENC-2)에서 충돌 곤란한 함수(H)에 입력된 「공통키(K)에 대응하는 값」과 동일하게 된다.
(DEC-4) 판정부에 있어서, 제 2 암호문(C2)과, 함수(H)의 함수값에 대응하는 유한체(Fq)의 원소(r)와, 상기 유한체(Fq)의 원소(ρ)와, n차원 벡터(v)의 요소(vμ)와, 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)에 대하여,
C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(56)
를 충족시키는지 아닌지를 판정하고, 그 판정 결과를 출력한다.
(DEC-5) 식 (56)를 충족시키는 것이라면 암호문(C1)의 복호결과를 출력하고, 식 (56)을 충족시키지 않는 것이라면 ⊥(에러)를 출력한다.
<내적 술어 암호의 개량방식의 CCA 안전성>
이 개량방식에 대하여, 상기의 상정 전략이 적용되는 경우를 상정한다.
[1] 공격자에게 공개 패러미터(PK)가 주어진다.
[2] 공격자는 공개 패러미터(PK)를 갖는 암호 오라클에 벡터(v)와 2개의 평문(M0, M1)을 넘겨준다. 암호 오라클은 랜덤하게 bit∈{0,1}을 선택하고, 일방의 평문(Mbit)을 공통키(K)=gT υ2로 암호화한 암호문
C1=K(+)Mbit …(57)
를 생성한다(ENC-1). 또한, 암호 오라클은, 공통키(K)에 대응하는 값과 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출한다(ENC-2). 그리고, 암호 오라클은, 함수(H)의 함수값에 대응하는 유한체(Fq)의 원소(r)와, 공통키(K)에 대응하는 유한체(Fq)의 원소(ρ)와, 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n,n≥1)와, n+1차원의 기저 벡터(bi∈G1 n +1)를 사용하여, 공통키(K)=gT υ2의 암호문
C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(58)
을 생성하고(ENC-3), 암호문(C1, C2)을 공격자에게 넘겨준다.
[3] 공격자는 비밀키(K)을 모르기 때문에, 공통키(K)에 대응하는 값과 암호문(C1(+)ΔM)을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 얻어지는 함수값에 대응하는 유한체(Fq)의 원소(r')에 대응하는 C2'=r'·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 생성할 수 없다.
그 때문에 공격자는 C1(+)ΔM과 암호문(C1)에 대응하는 암호문(C2)와의 세트
(C1(+)ΔM, C2) …(59)
를 복호 오라클에 넘겨준다.
식 (59)의 암호문이 입력된(DEC-1) 복호 오라클은, 식 (55)의 함수값(S)을 생성하고(DEC-2), 함수값(S)에 대응하는 값과 암호문(C1(+)ΔM)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하고, 당해 함수(H)의 함수값을 출력한다(DEC-3). 그리고, 복호 오라클은 제 2 암호문(C2)과, 함수(H)의 함수값에 대응하는 유한체(Fq)의 원소(rΔM)와, 상기 유한체(Fq)의 원소(ρ)와, n차원 벡터(v)의 요소(vμ)와, 기저 벡터(bi∈G1 n +1)(i=1,...,n+1)에 대하여,
C2=r ΔM·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(60)
을 충족시키는지 아닌지를 판정한다(DEC-4). 여기에서 r ΔM≠r이기 때문에, 식 (60)을 충족시키지 않고, 복호 오라클은 ⊥(에러)를 출력한다.
[4] 공격자는, C1(+)ΔM의 복호결과를 취득할 수 없기 때문에, 「복호결과가 M0(+)ΔM일 때 bit'=0을 출력하고, M1(+)ΔM일 때에 bit'=1을 출력할」 수 없다. 따라서, 이 공격자의 전략은 성공하지 못한다.
[제 1 실시형태]
다음에 상기 개량방식의 제 1 실시형태를 설명한다.
<개요>
우선, 제 1 실시형태의 개요를 나타낸다.
[암호화 처리]
암호화 처리를 행하는 암호화 장치에서 이하의 처리를 실행한다.
(ENC-11) 공통키 암호화부에 있어서, 기억부에서 읽어낸 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력한다.
(ENC-21) 함수 연산부에 있어서, 공통키(K)와 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소 r 및 ρ를 산출하고, 당해 원소 r 및 ρ를 출력한다. 또한,(ENC-21)에서는 「공통키(K)」가 전술한(ENC-2)의 「공통키(K)에 대응하는 값」에 상당한다.
(ENC-31) 군 연산부에 있어서, 원소(ρ)를 사용하여 함수값(S)=gT τ·ρ∈GT를 산출하고, 당해 함수값(S)을 출력한다.
(ENC-32) 배타적 논리합 연산부에 있어서, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 공통키(K)와의 배타적 논리합값인 암호문(C3)을 산출하고, 당해 암호문(C3)을 출력한다.
(ENC-33) 벡터 연산부에 있어서, 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소 r 및 ρ를 사용하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하고, 당해 암호문(C2)을 출력한다.
[복호처리]
복호처리를 행하는 복호장치에 있어서 이하의 처리를 실행한다.
(DEC-11) 암호문(C1)과 암호문(C2)과 암호문(C3)을 포함하는 값이 입력부에 입력된다.
(DEC-21) 쌍선형 함수 연산부에 있어서, 암호문(C2)∈G1 n +1과 키정보(D1 *)=α·(Σμ=1 nwμ·bμ *)+bn +1 *을 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 당해 함수값(S)을 출력한다. 또한, 내적(w·v)=0일 경우, 식 (3)(26)의 성질로부터,
Figure pct00016
을 충족시킨다.
(DEC-31) 배타적 논리합 연산부에 있어서, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 암호문(C3)의 배타적 논리합값(K)을 산출하고, 당해 배타적 논리합값(K)을 출력한다. 또한, 식 (61)을 충족시키는 경우,
K =R(S)(+)C3
=R(S)(+)C3
=R(S)(+)R(S)(+)K
=K …(62)
를 충족시킨다.
(DEC-32) 함수 연산부에 있어서, 배타적 논리합값(K)과 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r 및 ρ)를 산출하고, 당해 원소(r 및 ρ)를 출력한다. 또한,(DEC-31)의 「원소(r 및 ρ)」가 전술의(DEC-3)의 「원소(r)을 포함하는 값」에 상당한다.
(DEC-41) 벡터 연산부에 있어서, n차원 벡터(v)의 요소(vμ)(μ=1,...,n)와 원소(r 및 ρ)를 사용하여, 함수값(C2 )=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하고, 당해 함수값(C2 )을 출력한다.
(DEC-42) 비교부에 있어서, 함수값(C2 )과 암호문(C2)이 동일한지 아닌지를 판정하고, 그 판정 결과를 출력한다. 이 판정은(DEC-4)의 판정에 상당한다.
(DEC-51) 비교부로부터 출력된 판정 결과가, 함수값(C2 )과 암호문(C2)이 동일한 취지의 판정 결과인 경우에, 공통키 복호부에 있어서, 배타적 논리합값(K)을 공통키로 하고, 당해 배타적 논리합값(K)과 암호문(C1)을 공통키 복호 함수에 입력하여 복호값(M∼)을 산출하고, 당해 복호값(M)을 출력한다. 한편, 비교부로부터 출력된 판정 결과가, 함수값(C2 )과 암호문(C2)이 동일하지 않은 취지의 판정 결과일 경우에는, ⊥(에러)가 출력된다.
<제 1 실시형태의 CCA 안전성>
제 1 실시형태의 방식에 대하여, 전술의 상정 전략이 적용되는 경우를 상정한다. 또한, 이 예에서는, τ=1F이며, 평문(M)에 대한 공통키(K)를 사용한 공통키 암호방식의 암호문이 C1=K(+)M인 것으로 한다.
[1] 공격자에게 공개 패러미터(PK)가 주어진다.
[2] 공격자는 공개 패러미터(PK)를 갖는 암호 오라클에 벡터(v)와 2개의 평문(M0, M1)을 넘겨준다. 암호 오라클은, 랜덤하게 bit∈{0,1}을 선택하고, 일방의 평문(Mbit)을 공통키(K)=gT υ2로 암호화한 암호문
C1=K(+)Mbit …(63)
을 생성한다(ENC-11). 또한, 암호 오라클은, 공통키(K)와 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r 및 ρ)를 산출하고(ENC-21), 함수값(S)=gT τ·ρ∈GT를 산출하고(ENC-31), 함수값(R(S))과 공통키(K)와의 배타적 논리합값인 암호문(C3)을 산출하고(ENC-32), C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출사고(ENC-33), 암호문(C1, C2, C3)을 공격자에게 넘겨준다.
[3] 공격자는 비밀키(K)를 모르기 때문에, 공통키(K)와 암호문(C1(+)ΔM)을 충돌 곤란한 함수(H)에 입력하여 얻어지는 유한체(Fq)의 원소(r' 및 ρ')에 대응하는 C2'=r'·(Σμ=1 nvμ·bμ)+ρ'·bn +1∈G1 n +1을 생성할 수 없다. 그 때문에 공격자는 C1(+)ΔM과 암호문(C1)에 대응하는 암호문(C2)과 암호문(C3)의 세트
(C1(+)ΔM, C2, C3) …(64)
를 복호 오라클에 넘겨준다.
식 (64)의 암호문이 입력된(DEC-11) 복호 오라클은, 함수값(S)=e(C2, D1 *)∈GT를 생성하고(DEC-21), 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 암호문(C3)과의 배타적 논리합값(K)을 산출하고, 배타적 논리합값(K)과 암호문(C1(+)ΔM)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r ΔM 및 ρ ΔM)를 산출한다(DEC-32). 그리고, 복호 오라클은, v의 요소(vμ)와, 원소(r ΔM)과, 기저 벡터(bi)∈G1 n + 1(i=1,...,n+1)와, 원소(ρ ΔM)에 대하여,
C2 =r ΔM·(Σμ=1 nvμ·bμ)+ρ ΔM·bn +1∈G1 n +1 …(65)
를 산출하고(DEC-41), 함수값(C2 )과 암호문(C2)이 동일한지 아닌지를 판정한다. 여기에서 r ΔM≠r이며, ρ ΔM≠ρ이기 때문에, 식 (65)는 이 관계를 충족시키지 않고, 복호 오라클은 ⊥(에러)를 출력한다.
[4] 공격자는, C1(+)ΔM의 복호결과를 취득할 수 없기 때문에, 「복호결과가 M0(+)ΔM일 때에 bit'=0을 출력하고, M1(+)ΔM일 때에 bit'=1을 출력할」 수 없다. 따라서, 이 공격자의 전략은 성공하지 못한다.
<상세>
다음에 제 1 실시형태의 상세를 설명한다. 또한, 이하에서는 τ=1F인 경우를 예로 들어 설명한다. 그러나, 이것은 본 발명을 한정하는 것은 아니고, 0F 및 1F 이외의 유한체(Fq)의 원소를 τ로 해도 된다.
[전체 구성]
도 1은 제 1 실시형태의 암호 시스템(1)의 구성을 설명하기 위한 도면이다.
도 1에 예시하는 바와 같이, 본 형태의 암호 시스템(1)은 네트워크(140)를 통하여 통신 가능하게 접속된 암호화 장치(110)와 복호장치(120)와 키 생성장치(130)를 갖는다.
[암호화 장치]
도 2는 도 1의 암호화 장치(110)의 구성을 설명하기 위한 도면이다. 또한, 도 2에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(111)나 일시 기억부(113b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 2에 예시하는 바와 같이, 본 형태의 암호화 장치(110)는 제어부(111)와, 난수생성부(112a)와, 공통키 암호화부(112b)와, 함수 연산부(112c)와, 군 연산부(112d)와, 배타적 논리합 연산부(112e)와, 벡터 연산부(112f)와, 기억부(113a)와, 일시 기억부(113b)와, 송신부(114)를 갖는다.
암호화 장치(110)는, 예를 들면, CPU(Central Processing Unit), RAM(Random Access Memory), ROM(Read-Only Memory) 등을 구비하는 공지 또는 전용의 컴퓨터와 특별한 프로그램을 포함하는 특별한 장치이다. 즉, 제어부(111) 난수생성부(112a), 공통키 암호화부(112b), 함수 연산부(112c), 군 연산부(112d), 배타적 논리합 연산부(112e) 및 벡터 연산부(112f)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 난수생성부(112a)를 공지의 난수생성용 IC(integrated Circuit)로 구성하는 등, 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다. 또한 기억부(113a) 및 일시 기억부(113b)는, 예를 들면, RAM, 레지스터, 캐시 메모리, 집적회로 내의 소자 혹은 하드 디스크 등의 보조기억 장치, 또는, 이것들의 적어도 일부의 결합으로 이루어지는 기억 영역이다. 또, 송신부(114)는, 예를 들면, 모뎀, LAN(Local Area Network) 카드 등의 통신장치이다.
또한 암호화 장치(110)는 제어부(111)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(113b) 또는 기억부(113a)에 저장된다. 일시 기억부(113b) 또는 기억부(113a)에 저장된 데이터는, 필요에 따라 읽어내어져, 각 처리부에 입력되고 그 처리에 이용된다.
[복호장치]
도 3은 도 1의 복호장치(120)의 구성을 설명하기 위한 도면이다. 또한, 도 3에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(121)나 일시 기억부(123b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 3에 예시하는 바와 같이, 본 형태의 복호장치(120)는 제어부(121)와, 쌍선형 함수 연산부(122a)와, 배타적 논리합 연산부(122b)와, 함수 연산부(122c)와, 판정부(122d)와, 공통키 복호부(122e)와, 기억부(123a)와, 일시 기억부(123b)와, 송신부(124)와, 수신부(125)(「입력부」에 상당)를 갖는다. 또한 판정부(122d)는 벡터 연산부(122da)와 비교부(122db)를 갖는다.
복호장치(120)는, 예를 들면, CPU, RAM, ROM 등을 구비하는 공지 또는 전용의 컴퓨터로 특별한 프로그램과를 포함하는 특별한 장치이다. 즉, 제어부(121), 쌍선형 함수 연산부(122a), 배타적 논리합 연산부(122b), 함수 연산부(122c), 판정부(122d) 및 공통키 복호부(122e)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 쌍선형 함수 연산부(122a)를 공지의 페어링 연산용 IC로 구성하는 등, 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다. 또한 기억부(123a) 및 일시 기억부(123b)는, 예를 들면, RAM, 레지스터, 캐시 메모리, 집적회로 내의 소자 혹은 하드 디스크 등의 보조기억 장치, 또는, 이것들의 적어도 일부의 결합으로 이루어지는 기억영역이다. 또, 송신부(124) 및 수신부(125)는, 예를 들면, 모뎀, LAN 카드 등의 통신장치이다.
또한 복호장치(120)는 제어부(121)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(123b) 또는 기억부(123a)에 저장된다. 일시 기억부(123b) 또는 기억부(123a)에 저장된 데이터는, 필요에 따라 읽어내어져, 각 처리부에 입력되고 그 처리에 이용된다.
[키 생성장치]
도 4는 도 1의 키 생성장치(130)의 구성을 설명하기 위한 도면이다. 또한, 도 4에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(131)나 일시 기억부(133b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 4에 예시하는 바와 같이, 본 형태의 키 생성장치(130)는 제어부(131)와, 난수생성부(132a)와, 벡터 연산부(132b)와, 기억부(133a)와, 일시 기억부(133b)와, 수신부(134)와, 송신부(135)를 갖는다.
키 생성장치(130)는, 예를 들면, CPU, RAM, ROM 등을 구비하는 공지 또는 전용의 컴퓨터와 특별한 프로그램을 포함하는 특별한 장치이다. 즉, 제어부(131), 난수생성부(132a) 및 벡터 연산부(132b)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다. 또한 기억부(133a) 및 일시 기억부(133b)는, 예를 들면, RAM, 레지스터, 캐시 메모리, 집적회로 내의 소자 혹은 하드 디스크 등의 보조기억 장치, 또는, 이것들의 적어도 일부의 결합으로 이루어지는 기억영역이다. 또한 송신부(134) 및 수신부(135)는, 예를 들면, 모뎀, LAN 카드 등의 통신장치이다.
또한 키 생성장치(130)는 제어부(131)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(133b) 또는 기억부(133a)에 저장된다. 일시 기억부(133b) 또는 기억부(133a)에 저장된 데이터는, 필요에 따라 읽어내어져, 각 처리부에 입력되고 그 처리에 이용된다.
[사전설정]
다음에 본 형태의 각 처리를 실행하기 위한 사전설정을 설명한다.
벡터공간(V, V*), 기저 벡터(bi)(i=1,...,n+1)를 요소로 하는 n+1행n+1열의 행렬(B), 세큐러티 패러미터(k), 유한체(Fq), 타원곡선(E), 순회군(G1, G2, GT), 생성원(g1, g2, gT), 쌍선형 함수(e), 1 이상의 정수(n) 등으로 이루어지는 공개 패러미터(PK)가 암호화 장치(110), 복호장치(120) 및 키 생성장치(130)에 설정된다. 또한 식 (33)에 나타낸 충돌 곤란한 함수(H1) 및 식 (35)에 나타낸 단사함수(R)가 암호화 장치(110) 및 복호장치(120)에 설정된다.
또한 매스터키 정보(MSK)인 n+1행n+1열의 행렬(B*)이 키 생성장치(130)의 기억부(133a)에 안전하게 저장된다. 행렬(B*)은 비밀정보이며, 공개되지 않는다.
또, 식 (31)에 나타낸 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)=(v1,...,vn)가 암호화 장치(110)의 기억부(113a)에 격납되고, n차원 벡터(v)=(v1,...,vn) 및 식 (30)에 나타낸 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(w)=(w1,...,wn)가 복호장치(120)의 기억부(123a)에 저장된다. 또한, 이들 벡터는
w· v→=0 …(66)
를 충족시키는 것으로 한다. 또한, 술어정보: w=(w1,...,wn) 또한 속성정보: v=(v1,...,vn)이어도 되고, 술어정보: v=(v1,...,vn) 또한 속성정보: w=(w1,...,wn)이어도 된다.
또한 암호화 장치(110)의 기억부(113a)에는 암호화를 행하는 평문(M)∈{0,1}*이 저장된다.
[암호화 처리]
도 5는 제 1 실시형태의 암호화 처리를 설명하기 위한 도면이다. 이하, 본 형태의 암호화 처리를 설명한다.
우선, 암호화 장치(110)(도 2)의 난수생성부(112a)가 k비트의 바이너리 계열의 난수를 생성하고, 그것을 공통키
K∈{0,1}k …(67)
로 하여 기억부(113a)에 저장한다(스텝 S101).
다음에 기억부로부터 읽어내어진 평문(M)과 공통키(K)가 공통키 암호화부(112b)에 입력된다. 공통키 암호화부(112b)는 이것들을 공통키 암호 함수(Enc)에 입력하여 암호문
C1=Enck(M)∈{0,1}k …(68)
을 산출하고, 당해 암호문(C1)을 출력한다(스텝 S102).
다음에 함수 연산부(112c)에 암호문(C1)과 공통키(K)가 입력된다. 수연산부(112c)는 공통키(K)와 암호문(C1)을 충돌 곤란한 함수(H1)에 입력하여
(r, ρ)=H1(K, C1)∈Fq×Fq …(69)
를 산출하고, 유한체(Fq)의 원소(r 및 ρ)를 출력한다(스텝 S103).
다음에 군 연산부(112d)에 유한체(Fq)의 원소(ρ)가 입력된다. 군 연산부(112d)는, 이 원소(ρ)를 사용하여 함수값
S=gT ρ∈GT …(70)
을 산출하고, 당해 함수값(S)을 출력한다(스텝 S104).
다음에 배타적 논리합 연산부(112e)에 함수값(S)과 공통키(K)가 입력된다. 배타적 논리합 연산부(112e)는 함수값(S)을 단사함수(R)에 입력하여 얻어지는 k비트의 바이너리 계열인 함수값
R(S)∈{0,1}k …(71)
과 공통키(K)와의 배타적 논리합값인 암호문
C3=R(S)(+)K∈{0,1}k …(72)
를 산출하고, 당해 암호문(C3)을 출력한다(스텝 S105).
또, 벡터 연산부(112f)에 유한체(Fq)의 원소(r 및 ρ)와 n차원 벡터(v)=(v1,...,vn)가 입력된다. 벡터 연산부(112f)는 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소(r 및 ρ)를 사용하여, 암호문
C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(73)
을 산출하고, 당해 암호문(C2)을 출력한다(스텝 S106).
그 후, 송신부(114)에 암호문(C1)과 암호문(C2)과 암호문(C3)이 입력된다. 송신부(114)는, 이것들을 포함하는 값을 네트워크(140) 경유로 복호장치(120)에 송신한다(스텝 S107).
[키정보의 생성 처리]
키정보의 생성 처리는, 특히, 복호장치(120)의 기억부(123a)에 키정보(D1 *)가 저장되어 있지 않은 경우에 실행된다. 복호장치(120)의 기억부(123a)에 키정보(D1 *)가 저장되어 있을 때에는, 이 처리를 생략해도 된다.
도 6은 제 1 실시형태의 키정보의 생성 처리를 설명하기 위한 도면이다. 이하, 본 형태의 키정보의 생성 처리를 설명한다.
우선, 복호장치(120)(도 3)에 저장된 n차원 벡터(w)=(w1,...,wn)가 읽어내어져, 송신부(124)에 입력된다. 송신부(124)는, n차원 벡터(w)=(w1,...,wn)를 네트워크(140) 경유로 키 생성장치(130)에 송신한다(스텝 S111).
송신된 n차원 벡터(w)=(w1,...,wn)는 키 생성장치(130)(도 4)의 수신부(134)에서 수신된다(스텝 S112). 이것을 계기로, 키 생성장치(130)의 난수생성부(132a)는 유한체(Fq)의 원래의 난수
α∈Fq …(74)
를 생성하고, 당해 난수(α)를 출력한다(스텝 S113).
다음에 벡터 연산부(132b)에 n차원 벡터(w)=(w1,...,wn)와 난수(α)와 행렬(B*)이 입력된다. 벡터 연산부(132b)는 이것들을 사용하여 키정보
D1 *= α·(Σμ=1 nwμ·bμ *)+bn +1 *∈G1 n +1 …(75)
를 생성하고, 당해 키정보(D1 *)를 출력한다(스텝 S114).
다음에, 키정보(D1 *)가 송신부(135)에 입력된다. 송신부(135)는 네트워크(140) 경유로 키정보(D1 *)를 복호장치(120)에 송신한다(스텝 S115).
송신된 키정보(D1 *)는, 복호장치(120)(도 3)의 수신부(125)에서 수신되어, 기억부(123a)에 격납된다(스텝 S116).
[복호처리]
도 7은 제 1 실시형태의 복호처리를 설명하기 위한 도면이다. 이하, 본 형태의 복호처리를 설명한다.
우선, 복호장치(120)(도 3)의 수신부(125)가 암호문(C1)과 암호문(C2)∈G1 n +1과 암호문(C3)을 포함하는 값을 수신한다(스텝 S121).
다음에 쌍선형 함수 연산부(122a)에 암호문(C2)∈G1 n +1과 키정보(D1 *)가 입력된다. 쌍선형 함수 연산부(122a)는 암호문(C2)∈G1 n +1과 키정보(D1 *)를 쌍선형 함수(e)에 입력하여 함수값
S=e(C2, D1 *)∈GT …(76)
을 산출하고, 당해 함수값(S)을 출력한다(스텝 S122).
다음에 배타적 논리합 연산부(122b)에 함수값(S)과 암호문(C3)이 입력된다. 배타적 논리합 연산부(122b)는 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 암호문(C3)과의 배타적 논리합값
K=R(S)(+)C3 …(77)
을 산출하고, 당해 배타적 논리합값(K)을 출력한다(스텝 S123).
다음에 함수 연산부(122c)에 배타적 논리합값(K)과 암호문(C1)이 입력된다. 함수 연산부(122c)는 배타적 논리합값(K)과 암호문(C1)을 충돌 곤란한 함수(H1)에 입력하여
(r)=H1(K, C1)∈Fq×Fq …(78)
을 산출하고, 당해 원소(r 및 ρ)를 출력한다(스텝 S124).
다음에 판정부(122d)의 벡터 연산부(122da)에 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)와 원소(r 및 ρ)가 입력된다. 벡터 연산부(122da)는 이것들을 사용하여 함수값
C2 =r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(79)
을 산출하고, 당해 함수값(C2 )을 출력한다(스텝 S125).
다음에 함수값(C2 )과 암호문(C2)이 판정부(122d)의 비교부(122db)에 입력된다. 비교부(122db)는 함수값(C2 )과 암호문(C2)이 동일한지 아닌지를 판정하고, 그 판정 결과를 출력한다(스텝 S126).
여기에서, 비교부(122db)로부터 출력된 판정 결과가 함수값(C2 )과 암호문(C2)이 동일한 취지의 판정 결과인 경우, 공통키 복호부(122e)에 배타적 논리합값(K)과 암호문(C1)이 입력되고, 공통키 복호부(122e)는 당해 배타적 논리합값(K)과 암호문(C1)을 공통키 복호함수에 입력하여 복호값
M=DecK (C1) …(80)
를 산출하고, 당해 복호값(M)을 출력한다(스텝 S127). 한편, 비교부(122db)로부터 출력된 판정 결과가 함수값(C2 )과 암호문(C2)이 상이한 취지의 판정 결과인 경우, 공통키 복호부(122e)는 에러 출력(⊥)을 행한다(스텝 S128).
[제 2 실시형태]
다음에 상기 개량방식의 제 2 실시형태를 설명한다.
<개요>
우선, 제 2 실시형태의 개요를 나타낸다.
[암호화 처리]
암호화 처리를 행하는 암호화 장치에 있어서 이하의 처리를 실행한다.
(ENC-111) 선택부에 있어서, 유한체(Fq)의 원소(ρ)를 선택하고, 당해 원소(ρ)를 출력한다.
(ENC-112) 군 연산부에 있어서, 원소(ρ)를 사용하여 함수값(S)=gT τ·ρ∈GT를 산출하고, 당해 함수값(S)을 출력한다.
(ENC-113) 공통키 암호화부에 있어서, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 평문(M)을 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력한다.
(ENC-211) 함수 연산부에 있어서, 함수값(S)과 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r)를 산출하고, 당해 원소(r)를 출력한다.
(ENC-311) 벡터 연산부에 있어서, 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소(r)와 원소(ρ)를 사용하여, 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하고, 당해 암호문(C2)을 출력한다.
[복호처리]
복호처리를 행하는 복호장치에 있어서 이하의 처리를 실행한다.
(DEC-101) 암호문(C1)과 암호문(C2)∈G1 n +1을 포함하는 값이 입력부에 입력된다.
(DEC-201) 쌍선형 함수 연산부에 있어서, 암호문(C2)∈G1 n +1과 키정보(D1 *)=α·(Σμ=1 nwμ·bμ *)+bn +1 *를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하고, 당해 함수값(S)을 출력한다. 또한, 내적(w·v)=0일 경우, 식 (3)(26)의 성질로부터, S=S를 충족시킨다.
(DEC-301) 함수 연산부에 있어서, 함수값(S)과 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r)를 산출하고, 당해 원소(r)를 출력한다. 또한, S=S를 충족시키고, 게다가, 암호문(C1)이 정당하게 생성된 것인 경우, r=r을 충족시킨다.
(DEC-401) 벡터 연산부에 있어서, 암호문(C2)과 원소(r)와 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)를 사용하여, 함수값(λ)=C2-r·(Σμ=1 nvμ·bμ)∈G1 n +1을 산출하고, 당해 함수값(λ)을 출력한다. 또한, r=r을 충족시키는 경우, λ=ρ·bn +1∈G1 n+1을 충족시킨다.
(DEC-402) 쌍선형 함수 연산부에 있어서, 함수값(λ)과 보조키정보(D2 *)=Σμ=1 nβμ·bμ *를 쌍선형 함수(e)에 입력하여 함수값(e)(λ, D2 *)을 산출하고, 당해 함수값(e)(λ, D2 *)을 출력한다. λ=ρ·bn +1∈G1 n +1을 충족시키는 경우, 식 (3)의 성질로부터 e(λ, D2 *)=1∈GT를 충족시킨다.
(DEC-403) 비교부에 있어서, 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정하고, 그 판정 결과를 출력한다. 또한, 본 형태에서는, 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지에 따라, 식 (56)을 충족시킬지 아닐지를 판정하고 있다. 즉, 이 판정은(DEC-4)의 판정에 상당한다.
(DEC-501) 비교부로부터 출력된 판정 결과가, e(λ, D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우에, 공통키 복호부에 있어서, 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 제 1 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력한다. 한편, 비교부로부터 출력된 판정 결과가 e(λ, D2 *)=1∈GT를 충족시키지 않는 취지의 판정 결과인 경우에는, ⊥(에러)가 출력된다.
<제 2 실시형태의 CCA 안전성>
제 2 실시형태의 방식에 대하여, 전술의 상정 전략이 적용되는 경우를 상정한다. 또한, 이 예에서는, τ=1F이며, 평문(M)에 대한 공통키(K)를 사용한 공통키 암호방식의 암호문이 C1=K(+)M인 것으로 한다.
[1] 공격자에게 공개 패러미터(PK)가 주어진다.
[2] 공격자는 공개 패러미터(PK)를 갖는 암호 오라클에 벡터(v)와 2개의 평문(M0, M1)을 넘겨준다. 암호 오라클은 유한체(Fq)의 원소(ρ)를 선택하고(ENC-111), 함수값(S)=gT τ·ρ∈GT를 산출하고(ENC-112), 함수값(R(S))을 공통키(K)로 하고(ENC-113), 암호문
C1=K(+)Mbit …(81)
을 생성한다(ENC-113). 또한, 암호 오라클은 함수값(S)과 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r)를 산출한다(ENC-211). 그리고, 암호 오라클은, 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소(r)와 원소(ρ)를 사용하여, 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n+1을 생성하고(ENC-311), 암호문(C1, C2)을 공격자에게 넘겨준다.
[3] 공격자는 비밀키(K)=R(S)나 함수값(S)(「공통키(K)에 대응하는 값」)을 모르기 때문에, 함수값(S)과 암호문(C1(+)ΔM)을 충돌 곤란한 함수(H)에 입력하여 얻어지는 유한체(Fq)의 원소(r')에 대응하는 C2'=r'·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 생성할 수 없다. 그 때문에 공격자는 C1(+)ΔM과 암호문(C1)에 대응하는 암호문(C2)과의 세트
(C1(+)ΔM, C2) …(82)
를 복호 오라클에 넘겨준다.
식 (82)의 암호문이 입력된(DEC-101) 복호 오라클은, 함수값(S)=e(C2, D1 *)∈GT를 산출하고(DEC-201), 함수값(S)과 암호문(C1(+)ΔM)을 충돌 곤란한 함수(H)에 입력하여 유한체(Fq)의 원소(r ΔM)를 산출하고(DEC-301), 함수값(λΔM)=C2-r ΔM·(Σμ=1 nvμ·bμ)∈G1 n +1을 산출한다(DEC-401). 또한, r ΔM≠r이기 때문에, λΔM=(r-r ΔM)·(Σμ=1 nvμ·bμ)+ρ·bn +1≠ρ·bn +1이 된다. 복호 오라클은 함수값(e)(λΔM, D2 *)을 산출하고(DEC-402), 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정한다(DEC-403). 여기에서, λΔM≠ρ·bn +1이기 때문에, e(λ, D2 *)=1∈GT를 충족시키지 않는다(DEC-403). 따라서 복호 오라클은 ⊥(에러)를 출력한다.
[4] 공격자는 C1(+)ΔM의 복호결과를 취득할 수 없기 때문에, 「복호결과가 M0(+)ΔM일 때에 bit'=0을 출력하고, M1(+)ΔM일 때에 bit'=1을 출력할」 수 없다. 따라서, 이 공격자의 전략은 성공하지 못한다.
<상세>
다음에 제 2 실시형태의 상세를 설명한다. 또한, 이하에서는 τ=1F의 경우를 예로 들어 설명한다. 그러나, 이것은 본 발명을 한정하는 것은 아니고, 0F 및 1F 이외의 유한체(Fq)의 원소를 τ로 해도 된다. 또한 제 2 실시형태에 있어서, 제 1 실시형태와 동일한 구성부분에 대해서는 제 1 실시형태와 동일한 부호를 사용하여 설명을 행한다.
[전체 구성]
도 8은 제 2 실시형태의 암호 시스템의 구성을 설명하기 위한 도면이다.
도 8에 예시하는 바와 같이, 본 형태의 암호 시스템(2)은 네트워크(140)를 통하여 통신 가능하게 접속된 암호화 장치(210)와 복호장치(220)와 키 생성장치(230)를 갖는다.
[암호화 장치]
도 9는 도 8의 암호화 장치(210)의 구성을 설명하기 위한 도면이다. 또한, 도 9에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(111)나 일시 기억부(113b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 9에 예시하는 바와 같이, 본 형태의 암호화 장치(210)는 제어부(111)와, 선택부(212a)와, 군 연산부(112d)와, 함수 연산부(212c)와, 공통키 생성부(212e)와, 공통키 암호화부(112b)와, 벡터 연산부(112f)와, 기억부(113a)와, 일시 기억부(113b)와, 송신부(114)를 갖는다.
암호화 장치(210)는, 예를 들면, CPU, RAM, ROM 등을 구비하는 공지 또는 전용의 컴퓨터와 특별한 프로그램을 포함하는 특별한 장치이다. 즉, 제어부(111), 난수생성부(212a)(「선택부」에 상당), 군 연산부(112d), 함수 연산부(212c), 공통키 생성부(212e), 공통키 암호화부(112b) 및 벡터 연산부(112f)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 난수생성부(212a)를 공지의 난수생성용 IC로 구성하는 등, 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다.
또, 암호화 장치(210)는 제어부(111)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(113b) 또는 기억부(113a)에 저장된다. 일시 기억부(113b) 또는 기억부(113a)에 저장된 데이터는 필요에 따라 각 처리부에 입력되어 그 처리에 이용된다.
[복호장치]
도 10은 도 8의 복호장치(220)의 구성을 설명하기 위한 도면이다. 또한, 도 10에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(121)나 일시 기억부(123b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 10에 예시하는 것 같이, 본 형태의 복호장치(220)는 제어부(121)와, 쌍선형 함수 연산부(122a)와, 함수 연산부(222b, 222c)와, 판정부(222d)와, 공통키 복호부(122e)와, 기억부(123a)와, 일시 기억부(123b)와, 송신부(124)와, 수신부(125)(「입력부」에 상당)를 갖는다. 또, 판정부(222d)는 벡터 연산부(222da)와, 쌍선형 함수 연산부(222db)와, 비교부(222dc)를 갖는다.
복호장치(220)는, 예를 들면, CPU, RAM, ROM 등을 구비하는 공지 또는 전용의 컴퓨터와 특별한 프로그램과을 포함하는 특별한 장치이다. 즉, 제어부(121), 쌍선형 함수 연산부(122a), 함수 연산부(222b, 222c), 판정부(222d) 및 공통키 복호부(122e)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다.
또한 복호장치(220)는 제어부(121)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(123b) 또는 기억부(123a)에 저장된다. 일시 기억부(123b) 또는 기억부(123a)에 저장된 데이터는, 필요에 따라 읽어내어져, 각 처리부에 입력되고 그 처리에 이용된다.
[키 생성장치]
도 11은 도 8의 키 생성장치(230)의 구성을 설명하기 위한 도면이다. 또한, 도 11에 있어서의 화살표는 데이터의 흐름을 나타내는데, 제어부(131)나 일시 기억부(133b)에 입출력되는 데이터의 기술은 생략되어 있다.
도 11에 예시하는 바와 같이, 본 형태의 키 생성장치(230)는 제어부(131)와, 난수생성부(232a)와, 벡터 연산부(132b, 232c)와, 기억부(133a)와, 일시 기억부(133b)와, 수신부(134)와, 송신부(135)를 갖는다.
키 생성장치(230)는, 예를 들면, CPU, RAM, ROM 등을 구비하는 공지 또는 전용의 컴퓨터와 특별한 프로그램을 포함하는 특별한 장치이다. 즉, 제어부(131), 난수생성부(232a) 및 벡터 연산부(132b, 232c)는, 예를 들면, CPU가 특별한 프로그램을 실행함으로써 구성되는 처리부이다. 또한 처리부의 적어도 일부를 특별한 집적회로로 구성해도 된다.
또, 키 생성장치(230)는 제어부(131)의 제어하에 각 처리를 실행한다. 또한 이하에서는 설명을 간략화하지만, 각 처리부로부터 출력된 데이터는, 차례로, 일시 기억부(133b) 또는 기억부(133a)에 저장된다. 일시 기억부(133b) 또는 기억부(133a)에 저장된 데이터는, 필요에 따라 읽어내어져, 각 처리부에 입력되고 그 처리에 이용된다.
[사전설정]
제 2 실시형태의 사전설정에서는, 제 1 실시형태와 동일한 공개 패러미터(PK)가, 암호화 장치(210), 복호장치(220) 및 키 생성장치(230)에 설정된다. 또한 식 (34)에 나타낸 충돌 곤란한 함수(H2)가 암호화 장치(210) 및 복호장치(220)에 설정된다. 또한 매스터키 정보(MSK)인 n+1행n+1열의 행렬(B*)이 키 생성장치(230)의 기억부(133a)에 안전하게 저장된다. 행렬(B*)은 비밀정보이며, 공개되지 않는다.
또한 식 (31)에 나타낸 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(v)=(v1,...,vn)가 암호화 장치(110)의 기억부(113a)에 저장되고, n차원 벡터(v)=(v1,...,vn) 및 식 (30)에 나타낸 유한체(Fq)의 원소를 요소로 하는 n차원 벡터(w)=(w1,...,wn)가 복호장치(120)의 기억부(123a)에 저장된다. 또한, 이들 벡터는 식 (66)을 충족시키는 것으로 한다. 또한, 술어정보: w=(w1,...,wn) 또한 속성정보: v=(v1,...,vn)이어도 되고, 술어정보: v=(v1,...,vn) 또한 속성정보: w=(w1,...,wn)이어도 된다.
또한 암호화 장치(210)의 기억부(113a)에는, 암호화를 행하는 평문(M)∈{0,1}*이 저장된다.
[암호화 처리]
도 12는 제 2 실시형태의 암호화 처리를 설명하기 위한 도면이다. 이하, 본 형태의 암호화 처리를 설명한다.
우선, 암호화 장치(210)(도 9)의 난수생성부(212a)가 유한체(Fq)의 원소
ρ∈Fq …(83)
를 랜덤하게 선택하고, 당해 원소(ρ)를 출력한다(스텝 S201).
다음에 군 연산부(112d)에 원소(ρ)가 입력된다. 군 연산부(112d)는 원소(ρ)를 사용하여 함수값
S=gT ρ∈GT …(84)
를 산출하고, 당해 함수값(S)를 출력한다(스텝 S202).
다음에 공통키 생성부(212e)에 함수값(S)이 입력된다. 공통키 생성부(212e)는 함수값(S)을 단사함수(R)에 입력하여 공통키
K=R(S)∈{0,1}k …(85)
를 산출하고, 당해 공통키(K)를 기억부(113a)에 저장한다(스텝 S203).
다음에 공통키 암호화부(112b)에 공통키(K)와 평문(M)이 입력된다. 공통키 암호화부(112b)는 공통키(K)와 평문(M)을 공통키 암호 함수(Enc)에 입력하여 암호문
C1=Enck(M)∈{0,1}k …(86)
을 산출하고, 당해 암호문(C1)을 출력한다(스텝 S204).
다음에 함수 연산부(212c)에 암호문(C1)과 함수값(S)이 입력된다. 함수 연산부(212c)는 함수값(S)과 제 1 암호문(C1)을 충돌 곤란한 함수(H2)에 입력하여 유한체(Fq)의 원소
r=H2(S,C1)∈Fq …(87)
를 산출하고, 당해 원소(r)를 출력한다(스텝 S205).
다음에 벡터 연산부(112f)에 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소(r)와 원소(ρ)가 입력된다. 벡터 연산부(112f)는 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 원소(r)와 원소(ρ)를 사용하여, 암호문
C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1 …(88)
을 산출하고, 당해 암호문(C2)을 출력한다(스텝 S206).
다음에 암호문(C1)과 암호문(C2)이 송신부(114)에 입력된다. 송신부(114)는 이것들을 포함하는 값을 네트워크(140) 경유로 복호장치(120)에 송신한다(스텝 S207).
[키정보의 생성 처리]
키정보의 생성 처리는, 특히, 복호장치(220)의 기억부(123a)에 키정보(D1 *) 및 보조키정보(D2 *)가 들어있지 않은 경우에 실행된다. 복호장치(220)의 기억부(123a)에 키정보(D1 *) 및 보조키정보(D2 *)가 들어 있을 때는, 이 처리를 생략해도 된다.
도 13은 제 2 실시형태의 키정보의 생성 처리를 설명하기 위한 도면이다. 이하, 본 형태의 키정보의 생성 처리를 설명한다.
우선, 복호장치(220)(도 10)에 저장된 n차원 벡터(w)=(w1,...,wn)가 읽어내어져, 송신부(124)에 입력된다. 송신부(124)는 n차원 벡터(w)=(w1,...,wn)를 네트워크(140) 경유로 키 생성장치(230)에 송신한다(스텝 S111).
송신된 n차원 벡터(w)=(w1,...,wn)는 키 생성장치(230)(도 11)의 수신부(134)에서 수신된다(스텝 S112). 이것을 계기로, 키 생성장치(230)의 난수생성부(232a)와 벡터 연산부(132b)가, 제 1 실시형태의 스텝 S113 및 S114의 처리를 행하여 식 (75)에 나타내는 키정보(D1 *)를 생성하고, 당해 키정보(D1 *)를 출력한다.
또한 난수생성부(232a)가 유한체(Fq)의 원래의 난수
βμ(μ=1,...,n)∈Fq …(89)
를 생성하고, 당해 난수(βμ)를 출력한다(스텝 S215).
다음에 벡터 연산부(232c)에 난수(βμ)와 행렬(B*)이 입력된다. 벡터 연산부(232b)는 이것들을 사용하여 보조키정보
D2 *μ=1 nβμ·bμ *∈G2 n …(90)
를 생성하고, 당해 보조키정보(D2 *)를 출력한다(스텝 S216).
다음에 키정보(D1 *)와 보조키정보(D2 *)가 송신부(135)에 입력된다. 송신부(135)는 네트워크(140) 경유로 키정보(D1 *)와 보조키정보(D2 *)를 복호장치(220)에 송신한다(스텝 S217).
송신된 키정보(D1 *)와 보조키정보(D2*)는 복호장치(220)(도 10)의 수신부(125)에서 수신되고, 기억부(123a)에 격납된다(스텝 S218).
[복호처리]
도 14는 제 2 실시형태의 복호처리를 설명하기 위한 도면이다. 이하, 본 형태의 복호처리를 설명한다.
우선, 복호장치(220)(도 10)의 수신부(125)가 암호문(C1)과 암호문(C2)∈G1 n +1을 포함하는 값을 수신한다(스텝 S221).
다음에 쌍선형 함수 연산부(122a)에 암호문(C2)∈G1 n +1과 키정보(D1 *)가 입력된다. 쌍선형 함수 연산부(122a)는 암호문(C2)∈G1 n +1과 키정보(D1 *)를 쌍선형 함수(e)에 입력하여 함수값
S=e(C2, D1 *)∈GT …(91)
을 산출하고, 당해 함수값(S)을 출력한다(스텝 S222).
다음에 함수 연산부(222c)에 함수값(S)과 암호문(C1)이 입력된다. 함수 연산부(222c)는 함수값(S)과 제 1 암호문(C1)을 충돌 곤란한 함수(H2)에 입력하고 유한체(Fq)의 원소
r=H2(S,C1)∈Fq …(92)
를 산출하고, 당해 원소(r)를 출력한다(스텝 S223).
다음에 판정부(222d)의 벡터 연산부(222da)에 암호문(C2)과 원소(r)와 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)가 입력된다. 벡터 연산부(222da)는 암호문(C2)과 원소(r)와 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)과를 사용하고, 함수값
λ=C2-r·(Σμ=1 nvμ·bμ)∈G1 n +1 …(93)
을 산출하고, 당해 함수값(λ)을 출력한다(스텝 S224).
다음에 판정부(222d)의 쌍선형 함수 연산부(222db)에 함수값(λ)과 보조키정보(D2 *)가 입력된다. 쌍선형 함수 연산부(222db)는 함수값(λ)과 보조키정보(D2 *)를 쌍선형 함수(e)에 입력하여 함수값
e(λ, D2 *)∈GT …(94)
을 산출하고, 당해 함수값(e)(λ, D2 *)을 출력한다(스텝 S225).
다음에 판정부(222d)의 비교부(222dc)에 함수값(e)(λ, D2 *)이 입력된다. 비교부(222dc)는 함수값(e)(λ, D2 *)이
e(λ, D2 *)=1∈GT …(95)
를 충족시키는지 아닌지를 판정하고, 그 판정 결과를 출력한다(스텝 S226).
여기에서, 222dc로부터 출력된 판정 결과가 e(λ, D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우, 함수 연산부(222b)에 함수값(S)이 입력된다. 함수 연산부(222b)는 함수값(S)을 단사함수(R)에 입력하여 공통키
K=R(S) …(96)
를 산출하고, 당해 공통키(K)를 출력한다(스텝 S227). 그리고, 공통키 복호부(222b)에 공통키(K)와 암호문(C1)이 입력되고, 공통키 복호부(222b)는 당해 공통키(K)과 암호문(C1)을 공통키 복호함수(Dec)에 입력하여 복호값
M=DecK (C1) …(97)
을 산출하고, 당해 복호값(M)을 출력한다(스텝 S228).
한편, 비교부(222dc)로부터 출력된 판정 결과가 e(λ, D2 *)=1∈GT를 충족시키지 않는 취지의 판정 결과인 경우, 공통키 복호부(122e)는 에러 출력(⊥)을 행한다(스텝 S229).
[변형예 등]
또한, 본 발명은 상기의 각 실시형태에 한정되는 것은 아니다. 예를 들면, 제 1 실시형태의 스텝 S101에서는, 바이너리 계열의 난수를 공통키(K)로 했지만, 미리 설정된 복수의 바이너리 계열로부터 정해진 규칙에 따라 선택된 값을 공통키(K)로 해도 된다. 마찬가지로, 제 1 실시형태의 스텝 SS113에서는, 유한체(Fq)의 원래의 난수를 α로 했지만, 유한체(Fq)의 원소로부터 정해진 규칙에 따라 α를 선택해도 된다. 그 밖의 난수에 의해 생성되는 값에 대해서도 동일한 변형이 가능하다.
또한 제 1 실시형태에서는, 식 (69)에서 얻어지는 함수값을 그대로 r 및 ρ로서 사용했다. 그러나, 식 (69)에서 얻어지는 함수값을 또한 어떤 부가함수에 입력하여 얻어지는 함수값을 r이나 ρ로 해도 된다. 이 경우에는, 식 (78)에서 얻어지는 함수값을 당해 부가함수에 더 입력하여 얻어지는 함수값을 r이나 ρ으로 한다. 마찬가지로, 제 2 실시형태에서는, 식 (87)에서 얻어지는 함수값을 그대로 r로서 사용했지만, 식 (87)에서 얻어지는 함수값을 어떤 부가함수에 더 입력하여 얻어지는 함수값을 r로 해도 된다. 이 경우에는, 식 (92)에서 얻어지는 함수값을 당해 부가함수에 더 입력하여 얻어지는 함수값을 r으로 한다.
또한 제 1, 2 실시형태의 복호처리에서는, 스텝 S126이나 S226의 판정 요건을 충족시키지 않는 경우에 에러 출력이 되는 예를 나타냈다. 그러나, 판정 요건을 충족시키지 않는 경우에, 복호장치가 복호결과와 무관계인 난수를 출력하거나, 아무것도 출력하지 않거나 하는 구성이어도 된다.
또한 상기의 각종 처리는, 기재에 따라서 시계열로 실행될 뿐만 아니라, 처리를 실행하는 장치의 처리능력 또는 필요에 따라 병렬적으로 또는 개별적으로 실행되어도 된다. 예를 들면, 제 1 실시형태의 스텝 S105와 스텝 S106과의 처리는 병렬로 실행되어도 되고, 스텝 S106의 처리 후에 스텝 S105의 처리가 실행되어도 된다.
또한, 상기의 유한체(Fq)상에서 정의된 각 연산을 위수(q)의 유한환(Zq)상에서 정의된 연산으로 치환해도 된다. 유한체(Fq)상에서 정의된 각 연산을 유한환(Zq)상에서 정의된 연산으로 치환하는 방법의 일례는, 소수나 그 멱승값 이외의 q를 허용하는 방법이다. 그 외에, 본 발명의 취지를 일탈하지 않는 범위에서 적당히 변경이 가능한 것은 말할 필요도 없다.
또한, 상기의 구성을 컴퓨터에 의해 실현하는 경우, 각 장치가 가져야 하는 기능의 처리내용은 프로그램에 의해 기술된다. 그리고, 이 프로그램을 컴퓨터로 실행함으로써, 상기 처리기능이 컴퓨터상에서 실현된다.
이 처리내용을 기술한 프로그램은 컴퓨터로 독취 가능한 기록매체에 기록해 둘 수 있다. 컴퓨터로 독취 가능한 기록매체로서는, 예를 들면, 자기기록 장치, 광디스크, 광자기 기록매체, 반도체 메모리 등 어떤 것이어도 된다.
또한, 이 프로그램의 유통은, 예를 들면, 그 프로그램을 기록한 DVD, CD-ROM 등의 가반형 기록매체를 판매, 양도, 대여 등 함으로써 행한다. 또한, 이 프로그램을 서버 컴퓨터의 기억 장치에 저장해 두고, 네트워크를 통하여, 서버 컴퓨터로부터 다른 컴퓨터에 그 프로그램을 전송함으로써, 이 프로그램을 유통시키는 구성으로 해도 된다.
이러한 프로그램을 실행하는 컴퓨터는, 예를 들면, 우선, 가반형 기록매체에 기록된 프로그램 혹은 서버 컴퓨터로부터 전송된 프로그램을, 일단, 자기의 기억 장치에 저장한다. 그리고, 처리의 실행시, 이 컴퓨터는, 자기의 기억 장치에 저장된 프로그램을 읽어내고, 읽어낸 프로그램에 따른 처리를 실행한다. 또한 이 프로그램의 다른 실행 형태로서, 컴퓨터가 가반형 기록매체로부터 직접 프로그램을 읽어내고, 그 프로그램에 따른 처리를 실행하는 것으로 해도 되고, 또한, 이 컴퓨터에 서버 컴퓨터로부터 프로그램이 전송될 때마다, 차례차례, 수취한 프로그램에 따른 처리를 실행하는 것으로 해도 된다. 또한 서버 컴퓨터로부터, 이 컴퓨터로의 프로그램의 전송은 행하지 않고, 그 실행 지시와 결과취득만에 의해 처리기능을 실현하는, 소위 ASP(Application Service Provider)형의 서비스에 의해, 상기의 처리를 실행하는 구성으로 해도 된다.
1, 2 암호 시스템 110, 210 암호화 장치 120, 220 복호장치

Claims (35)

  1. 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력하도록 구성된 공통키 암호화부와,
    상기 공통키(K)에 대응하는 값과 상기 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하도록 구성된 함수 연산부와,
    상기 함수(H)의 함수값에 대응하는 값(r)과, 상기 공통키(K)에 대응하는 값(ρ)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n)(n≥1)와, 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터(bi)∈G1 n + 1(i=1,...,n+1)를 사용하고, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하고, 당해 제 2 암호문(C2)을 출력하도록 구성된 벡터 연산부
    를 갖는 것을 특징으로 하는 암호화 장치.
  2. 제 1 항에 있어서,
    상기 공통키(K)는 바이너리 계열이며,
    상기 함수 연산부는 상기 공통키(K)와 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하도록 구성되어 있고,
    당해 암호화 장치는,
    상기 값(ρ)을 사용하고, gT를 순회군(GT)의 생성원으로 하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하도록 구성된 군 연산부와,
    상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 공통키(K)와의 배타적 논리합값인 제 3 암호문(C3)을 산출하고, 당해 제 3 암호문(C3)을 출력하도록 구성된 배타적 논리합 연산부를 더 갖는 것을 특징으로 하는 암호화 장치.
  3. 제 1 항에 있어서,
    상기 값(ρ)을 선택하도록 구성된 선택부와,
    상기 값(ρ)을 사용하여, gT를 순회군(GT)의 생성원으로 하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하도록 구성된 군 연산부와,
    상기 함수값(S)을 단사함수(R)에 입력하여 함수값(R(S))을 산출하고, 당해 함수값(R(S))을 상기 공통키(K)로 하도록 구성된 공통키 생성부를 더 갖고,
    상기 함수 연산부는 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하도록 구성되는 것을 특징으로 하는 암호화 장치.
  4. 제 2 항에 있어서,
    상기 단사함수(R)는 유사적인 랜덤 함수인 것을 특징으로 하는 암호화 장치.
  5. 제 3 항에 있어서,
    상기 단사함수(R)는 유사적인 랜덤 함수인 것을 특징으로 하는 암호화 장치.
  6. 제 1 항에 있어서,
    상기 충돌 곤란한 함수(H)는 유사적인 랜덤 함수인 것을 특징으로 하는 암호화 장치.
  7. 제 2 항에 있어서,
    상기 충돌 곤란한 함수(H)는 유사적인 랜덤 함수인 것을 특징으로 하는 암호화 장치.
  8. 제 3 항에 있어서,
    상기 충돌 곤란한 함수(H)는 유사적인 랜덤 함수인 것을 특징으로 하는 암호화 장치.
  9. 제 2 항에 있어서,
    상기 순회군(G1) 및 상기 순회군(GT)은 상기 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)와 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)와의 입력에 대하여 상기 순회군(GT)의 1개의 원소를 출력하는 비퇴화한 쌍선형 함수(e)가 존재하는 집합인 것을 특징으로 하는 암호화 장치.
  10. 제 9 항에 있어서,
    상기 값(r)과 상기 값(ρ)과 상기 정수(τ)이 유한체(Fq)의 원소이며,
    상기 순회군(G1 및 G2)의 위수는, 각각, 상기 유한체(Fq)의 위수(q)(q≥1)와 동일한 것을 특징으로 하는 암호화 장치.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 쌍선형 함수(e)는, 상기 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)와 상기 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여, 상기 순회군(GT)의 원소(e)=Πi=1 n+1 Pair(γLL *)를 출력하는 함수이며, Pair가 상기 순회군(G1)의 1개의 원소과 상기 순회군(G2)의 1개의 원소의 세트를 상기 순회군(GT)의 1개의 원소에 옮기는 비퇴화한 쌍선형 함수인 것을 특징으로 하는 암호화 장치.
  12. 제 3 항에 있어서,
    상기 순회군(G1) 및 상기 순회군(GT)은 상기 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)와 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여 상기 순회군(GT)의 1개의 원소를 출력하는 비퇴화한 쌍선형 함수(e)가 존재하는 집합인 것을 특징으로 하는 암호화 장치.
  13. 제 12 항에 있어서,
    상기 값(r)과 상기 값(ρ)과 상기 정수(τ)가 유한체(Fq)의 원소이며,
    상기 순회군(G1 및 G2)의 위수는, 각각, 상기 유한체(Fq)의 위수(q)(q≥1)와 동일한 것을 특징으로 하는 암호화 장치.
  14. 제 12 항 또는 제 13 항에 있어서,
    상기 쌍선형 함수(e)는, 상기 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)와 상기 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여, 상기 순회군(GT)의 원소(e)=Πi=1 n+1 Pair(γLL *)를 출력하는 함수이며, Pair가 상기 순회군(G1)의 1개의 원소와 상기 순회군(G2)의 1개의 원소의 세트를 상기 순회군(GT)의 1개의 원소에 옮기는 비퇴화한 쌍선형 함수인 것을 특징으로 하는 암호화 장치.
  15. 암호문(C1)과 제 2 암호문(C2)∈G1 n +1을 포함하는 값이 입력되는 입력부와,
    상기 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)∈G2 n +1을 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하도록 구성된 쌍선형 함수 연산부와,
    상기 함수값(S)에 대응하는 값과 상기 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하도록 구성된 함수 연산부와,
    상기 제 2 암호문(C2)과, 값(ρ)과, 상기 함수(H)의 함수값에 대응하는 값(r)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n)와, 기저 벡터(bi)∈G1 n+1(i=1,...,n+1)에 대하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 충족시키는지 아닌지를 판정하고, 그 판정 결과를 출력하도록 구성된 판정부를 갖고,
    상기 쌍선형 함수(e)가 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)(n≥1)와 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여 순회군(GT)의 1개의 원소를 출력하는 비퇴화한 쌍선형 함수이고, 상기 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)의 각각이, 상기 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이고, bi *∈G2 n +1(i=1,...,n+1)의 각각이 상기 순회군(G2)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이며, 상기 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)의 각 요소와 상기 기저 벡터(bj *)∈G2 n +1(j=1,...,n+1)의 각 요소를 상기 쌍선형 함수(e)에 입력하여 얻어지는 함수값이 크로네커의 델타함수(δ(i,j))를 사용하여 gT τ·δ(i,j)∈GT로 표현되고, τ가 가법단위원 이외의 정수이고, gT가 상기 순회군(GT)의 생성원이고, w=(w1,...,wn)이 n차원 벡터이고, wμ(μ=1,...,n)가 상기 n차원 벡터(w)=(w1,...,wn)의 요소이며, α가 선택된 값이며, 상기 키정보 D1 *∈G2 n +1이 D1 *=α·(Σμ=1 nwμ·bμ *)+bn +1 *∈G2 n +1인 것을 특징으로 하는 복호장치.
  16. 제 15 항에 있어서,
    상기 입력부에 입력되는 상기 암호문(C1)과 상기 제 2 암호문(C2)∈G1 n +1을 포함하는 값은 바이너리 계열인 제 3 암호문(C3)을 더 포함하고,
    당해 복호장치는 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 제 3 암호문(C3)과의 배타적 논리합값(K)을 산출하도록 구성된 배타적 논리합 연산부를 더 포함하고,
    상기 함수 연산부는 상기 배타적 논리합값(K)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하도록 구성되고,
    상기 판정부는,
    상기 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)와 상기 값(r 및 ρ)을 사용하여, 함수값(C2 )=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하도록 구성된 벡터 연산부와,
    상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한지 아닌지를 판정하도록 구성된 비교부를 포함하고,
    당해 복호장치는, 상기 비교부에서의 판정 결과가 상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한 취지의 판정 결과인 경우에, 상기 배타적 논리합값(K)을 공통키로 하고, 당해 배타적 논리합값(K)과 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하도록 구성된 공통키 복호부를 더 갖는 것을 특징으로 하는 복호장치.
  17. 제 15 항에 있어서,
    상기 함수 연산부는 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하도록 구성되고,
    상기 판정부는,
    상기 제 2 암호문(C2)과 상기 값(r)과 상기 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)를 사용하여, 함수값(λ)=C2-r·Σμ=1 nvμ·bμ∈G1 n +1을 산출하도록 구성된 벡터 연산부와,
    상기 함수값(λ)과 값(βμ)(μ=1,...,n)에 대한 보조키정보(D2 *)=Σμ=1 nβμ·bμ *를 상기 쌍선형 함수(e)에 입력하여 함수값(e)(λ, D2 *)을 산출하도록 구성된 제 2 쌍선형 함수 연산부와,
    상기 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정하도록 구성된 비교부를 포함하고,
    당해 복호장치는, 상기 비교부에서의 판정 결과가 e(λ, D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우에, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하도록 구성된 공통키 복호부를 더 갖는 것을 특징으로 하는 복호장치.
  18. 제 16 항 또는 제 17 항에 있어서,
    상기 단사함수(R)는 유사적인 랜덤 함수인 것을 특징으로 하는 복호장치.
  19. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 충돌 곤란한 함수(H)는 유사적인 랜덤 함수인 것을 특징으로 하는 복호장치.
  20. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 순회군(G1)의 생성원을 g1으로 하고, κ1을 가법단위원 이외의 정수라고 한 경우에 있어서의, κ1·g1을 i차원째의 요소로 하고, 나머지 n개의 요소를 상기 순회군(G1)의 단위원으로 하는, n+1차원의 기저 벡터를 각각 ai∈G1 n + 1(i=1,...,n+1)으로 하고, n+1행n+1열의 행렬을 X로 하고, 당해 행렬(X)의 i행j열의 요소를 χi,j로 한 경우에, 상기 기저 벡터(bi)가 bij=1 n+1χi,j·aj를 충족시키고,
    상기 순회군(G2)의 생성원을 g2로 하고, κ2를 가법단위원 이외의 정수로 한 경우에 있어서의, κ2·g2를 i차원째의 요소로 하고, 나머지 n개의 요소를 상기 순회군(G2)의 단위원으로 한다. n+1차원의 기저 벡터를 각각 ai *∈G2 n + 1(i=1,...,n+1)으로 하고, n+1행n+1열의 행렬을 X*로 하고, 당해 행렬(X*)의 i행j열의 요소를 χi,j *로 한 경우에, 상기 기저 벡터(bi *)가 bi *j=1 n+1χi,j *·aj *를 충족시키는 것을 특징으로 하는 복호장치.
  21. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 값(r)과 상기 값(ρ)과 상기 정수(τ)와 상기 값(α)이 유한체(Fq)의 원소이며,
    상기 순회군(G1 및 G2)의 위수는, 각각, 상기 유한체(Fq)의 위수(q)(q≥1)와 동일한 것을 특징으로 하는 복호장치.
  22. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 쌍선형 함수(e)는, 상기 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)와 상기 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여, 상기 순회군(G1)의 1개의 원소와 상기 순회군(G2)의 1개의 원소의 세트를 상기 순회군(GT)의 1개의 원소에 옮기는 비퇴화한 쌍선형 함수를 Pair로 한 경우에 있어서의, 상기 순회군(GT)의 원소(e)=ΠL=1 n+1 Pair(γLL *)를 출력하는 함수인 것을 특징으로 하는 복호장치.
  23. 암호화 장치와 복호장치로 실행되는 세큐러티 방법으로서,
    (A) 상기 암호화 장치에 있어서, 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력하는 스텝과,
    (B) 상기 암호화 장치에 있어서, 상기 공통키(K)에 대응하는 값과 상기 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 제 1 함수값을 산출하는 스텝과,
    (C) 상기 암호화 장치에 있어서, 상기 함수(H)의 제 1 함수값에 대응하는 값(r)과, 상기 공통키(K)에 대응하는 값(ρ)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n,n≥1)와, 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터(bi)∈G1 n + 1(i=1,...,n+1)를 사용하여, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn+1∈G1 n +1을 산출하고, 당해 제 2 암호문(C2)을 출력하는 스텝과,
    (D) 상기 복호장치에 상기 암호문(C1)과 상기 제 2 암호문(C2)∈G1 n +1을 포함하는 값이 입력되는 스텝과,
    (E) 상기 복호장치에 있어서, 상기 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2,D1 *)∈GT를 산출하는 스텝과,
    (F) 상기 복호장치에 있어서, 상기 함수값(S)에 대응하는 값과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 함수(H)의 제 2 함수값을 산출하는 스텝과,
    (G) 상기 복호장치에 있어서, 상기 제 2 암호문(C2)과, 상기 값(ρ)과, 상기 함수(H)의 제 2 함수값에 대응하는 값(r)과, 상기 n차원 벡터(v)의 요소(vμ)와, 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)에 대하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 충족시키는지 아닌지를 판정하는 스텝을 갖고,
    상기 쌍선형 함수(e)가 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)(n≥1)와 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)의 입력에 대하여 순회군(GT)의 1개의 원소를 출력하는 비퇴화한 쌍선형 함수이고, 상기 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)의 각각이, 상기 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이고, 기저 벡터(bi)*∈G2 n +1(i=1,...,n+1)의 각각이 상기 순회군(G2)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이고, 상기 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)의 각 요소와 상기 기저 벡터(bj *)∈G2 n +1(j=1,...,n+1)의 각 요소를 상기 쌍선형 함수(e)에 입력하여 얻어지는 함수값이 크로네커의 델타함수(δ(i,j))를 사용하여 gT τ·δ(i,j)∈GT로 표현되고, τ가 가법단위원 이외의 정수이고, gT가 상기 순회군(GT)의 생성원이고, α가 선택된 값이고, w=(w1,...,wn)이 n차원 벡터이고, wμ(μ=1,...,n)가 상기 n차원 벡터(w)=(w1,...,wn)의 요소이며, 상기 키정보(D1 *)가 D1 *=α·(Σμ=1 nwμ·bμ *)+bn+1 *∈G2 n +1인 것을 특징으로 하는 세큐러티 방법.
  24. 제 23 항에 있어서,
    상기 스텝(B)은 상기 공통키(K)와 상기 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하는 스텝을 포함하고,
    상기 스텝(C)은,
    상기 복호장치에 있어서, 상기 값(ρ)을 사용하여 함수값(S)=gT τ·ρ∈GT를 산출하는 스텝과,
    상기 복호장치에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 공통키(K)와의 배타적 논리합값인 제 3 암호문(C3)을 산출하고, 당해 제 3 암호문(C3)을 출력하는 스텝과,
    상기 복호장치에 있어서, n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 상기 값(r 및 ρ)을 사용하여, 상기 제 2 암호문(C2)을 산출하고, 당해 제 2 암호문(C2)을 출력하는 스텝을 포함하고,
    상기 스텝(D)은,
    상기 복호장치에 있어서, 상기 복호장치에 상기 암호문(C1)과 상기 제 2 암호문(C2)∈G1 n +1과 상기 제 3 암호문(C3)을 포함하는 값이 입력되는 스텝을 포함하고,
    상기 스텝(F)은,
    상기 복호장치에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 제 3 암호문(C3)과의 배타적 논리합값(K∼)을 산출하는 스텝과,
    상기 복호장치에 있어서, 상기 배타적 논리합값(K)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하는 스텝을 포함하고,
    상기 스텝(G)은,
    상기 복호장치에 있어서, 상기 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)와 상기 값(r 및 ρ)을 사용하여, 함수값(C2 )=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하는 스텝과,
    상기 복호장치에 있어서, 상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한지 아닌지를 판정하고, 그 판정 결과가, 상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한 취지의 판정 결과인 경우에, 상기 배타적 논리합값(K)을 공통키로 하고, 당해 배타적 논리합값(K)과 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하는 스텝을 포함하는 것을 특징으로 하는 세큐러티 방법.
  25. 제 23 항에 있어서,
    상기 스텝(A)은,
    상기 암호화 장치에 있어서 상기 값(ρ)을 선택하는 스텝과,
    상기 암호화 장치에 있어서 상기 값(ρ)을 사용하여 함수값(S)=gT τ·ρ∈GT를 산출하는 스텝과,
    상기 암호화 장치에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 평문(M)을 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력하는 스텝을 포함하고,
    상기 스텝(B)은, 상기 암호화 장치에 있어서, 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하는 스텝을 포함하고,
    상기 스텝(C)은, 상기 암호화 장치에 있어서, n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)와 상기 값(r)과 상기 값(ρ)을 사용하여, 상기 제 2 암호문을 산출하고, 당해 제 2 암호문(C2)을 출력하는 스텝을 포함하고,
    상기 스텝(F)은, 상기 복호장치에 있어서, 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하는 스텝을 포함하고,
    상기 스텝(G)은,
    상기 복호장치에 있어서, 상기 제 2 암호문(C2)과 상기 값(r)과 상기 n차원 벡터(v)의 각 요소(vμ)(μ=1,...,n)를 사용하여, 함수값(λ)=C2-r·(Σμ=1 nvμ·bμ)∈G1 n +1을 산출하는 스텝과,
    상기 복호장치에 있어서, 상기 함수값(λ)과 보조키정보(D2 *)를 상기 쌍선형 함수(e)에 입력하여 함수값(e)(λ, D2 *)을 산출하는 스텝과,
    상기 복호장치에 있어서, 상기 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정하고, 그 판정 결과가, e(λ, D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우에, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하는 스텝을 포함하는 것을 특징으로 하는 세큐러티 방법.
  26. (A) 암호화 장치의 제 1 수단에 있어서, 평문(M)과 공통키(K)를 공통키 암호 함수에 입력하여 암호문(C1)을 산출하고, 당해 암호문(C1)을 출력하는 스텝과,
    (B) 상기 암호화 장치의 제 2 수단에 있어서, 상기 공통키(K)에 대응하는 값과 상기 암호문(C1)에 대응하는 값을 포함하는 값을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하는 스텝과,
    (C) 상기 암호화 장치의 제 3 수단에 있어서, 상기 함수(H)의 함수값에 대응하는 값(r)과, 상기 공통키(K)에 대응하는 값(ρ)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n)(n≥1)와, 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터(bi)∈G1 n + 1(i=1,...,n+1)를 사용하여, 제 2 암호문(C2)=r·(Σμ=1 nvμ·bμ)+ρ·bn+1∈G1 n +1을 산출하고, 당해 제 2 암호문(C2)을 출력하는 스텝
    을 갖는 것을 특징으로 하는 암호화 방법.
  27. 제 26 항에 있어서,
    상기 공통키(K)는 바이너리 계열이며,
    상기 스텝(B)은, 상기 암호화 장치의 제 4 수단에 있어서, 상기 공통키(K)와 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하는 스텝을 포함하고,
    당해 암호화 방법은,
    상기 암호화 장치의 제 5 수단에 있어서, 상기 값(ρ)을 사용하고, gT를 순회군(GT)의 생성원으로 하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하는 스텝과,
    상기 암호화 장치의 제 6 수단에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 공통키(K)의 배타적 논리합값인 제 3 암호문(C3)을 산출하고, 당해 제 3 암호문(C3)을 출력하는 스텝을 더 갖는 것을 특징으로 하는 암호화 방법.
  28. 제 26 항에 있어서,
    상기 암호화 장치의 제 7 수단에 있어서, 상기 값(ρ)을 선택하는 스텝과,
    상기 암호화 장치의 제 8 수단에 있어서, 상기 값(ρ)을 사용하여, gT를 순회군(GT)의 생성원으로 하고, τ를 가법단위원 이외의 정수로 한 경우에 있어서의 함수값(S)=gT τ·ρ∈GT를 산출하는 스텝과,
    상기 암호화 장치의 제 9 수단에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 함수값(R(S))을 산출하고, 당해 함수값(R(S))을 상기 공통키(K)로 하는 스텝을 더 갖고,
    상기 스텝(B)은, 상기 암호화 장치의 제 10 수단에 있어서, 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하는 스텝을 포함하는 것을 특징으로 하는 암호화 방법.
  29. (A) 암호문(C1)과 제 2 암호문(C2)∈G1 n +1을 포함하는 값이 복호장치에 입력되는 스텝과,
    (B) 상기 복호장치의 제 1 수단에 있어서, 상기 제 2 암호문(C2)∈G1 n +1과 키정보(D1 *)∈G2 n + 1를 쌍선형 함수(e)에 입력하여 함수값(S)=e(C2, D1 *)∈GT를 산출하는 스텝과,
    (C) 상기 복호장치의 제 2 수단에 있어서, 상기 함수값(S)에 대응하는 값과 상기 암호문(C1)을 충돌 곤란한 함수(H)에 입력하여 함수(H)의 함수값을 산출하는 스텝과,
    (D) 상기 복호장치의 제 3 수단에 있어서, 상기 제 2 암호문(C2)과, 상기 함수(H)의 함수값에 대응하는 값(r)과, 값(ρ)과, n차원 벡터(v)=(v1,...,vn)의 요소(vμ)(μ=1,...,n)와, 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)에 대하여, C2=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 충족시키는지 아닌지를 판정하고, 그 판정 결과를 출력하는 스텝을 갖고,
    상기 쌍선형 함수(e)가 순회군(G1)의 n+1개의 원소(γL)(L=1,...,n+1)(n≥1)와 순회군(G2)의 n+1개의 원소(γL *)(L=1,...,n+1)와의 입력에 대하여 순회군(GT)의 1개의 원소를 출력하는 비퇴화한 쌍선형 함수이고, 상기 기저 벡터(bi)∈G1 n+1(i=1,...,n+1)의 각각이, 상기 순회군(G1)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이고, bi *∈G2 n +1(i=1,...,n+1)의 각각이 상기 순회군(G2)의 n+1개의 원소를 요소로 하는 n+1차원의 기저 벡터이고, 상기 기저 벡터(bi)∈G1 n +1(i=1,...,n+1)의 각 요소와 상기 기저 벡터(bj *)∈G2 n +1(j=1,...,n+1)의 각 요소를 상기 쌍선형 함수(e)에 입력하여 얻어지는 함수값이, 크로네커의 델타함수(δ(i,j))를 사용하여 gT τ·δ(i,j)∈GT로 표현되고, τ가 가법단위원 이외의 정수이고, gT가 상기 순회군(GT)의 생성원이고, w=(w1,...,wn)이 n차원 벡터이고, wμ(μ=1,...,n)이 상기 n차원 벡터(w)=(w1,...,wn)의 요소이고, α가 선택된 값이며, 상기 키정보(D1 *)∈G2 n +1이 D1 *=α·(Σμ=1 nwμ·bμ *)+bn +1 *∈G2 n +1인 것을 특징으로 하는 복호방법.
  30. 제 29 항에 있어서,
    상기 스텝(A)에서 입력되는 상기 암호문(C1)과 상기 제 2 암호문(C2)∈G1 n +1을 포함하는 값은 바이너리 계열인 제 3 암호문(C3)을 더 포함하고,
    당해 복호방법은, 상기 복호장치의 제 4 수단에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 바이너리 계열인 함수값(R(S))과 상기 제 3 암호문(C3)과의 배타적 논리합값(K)을 산출하는 스텝을 더 포함하고,
    상기 스텝(C)은, 상기 복호장치의 제 5 수단에 있어서, 상기 배타적 논리합값(K)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r 및 ρ)을 산출하는 스텝을 포함하고,
    상기 스텝(D)은,
    (D-1) 상기 복호장치의 제 6 수단에 있어서, 상기 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)와 상기 값(r 및 ρ)을 사용하여, 함수값(C2 )=r·(Σμ=1 nvμ·bμ)+ρ·bn +1∈G1 n +1을 산출하는 스텝과,
    (D-2) 상기 복호장치의 제 7 수단에 있어서, 상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한지 아닌지를 판정하는 스텝을 포함하고,
    당해 복호방법은, 상기 스텝(D-2)에서의 판정 결과가, 상기 함수값(C2 )과 상기 제 2 암호문(C2)이 동일한 취지의 판정 결과인 경우에, 상기 복호장치의 제 8 수단에 있어서, 상기 배타적 논리합값(K)을 공통키로 하고, 당해 배타적 논리합값(K)과 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하는 스텝을 더 갖는 것을 특징으로 하는 복호방법.
  31. 제 29 항에 있어서,
    상기 스텝(C)은, 상기 복호장치의 제 9 수단에 있어서, 상기 함수값(S)과 상기 암호문(C1)을 상기 충돌 곤란한 함수(H)에 입력하여 상기 값(r)을 산출하는 스텝을 포함하고,
    상기 스텝(D)은,
    (D-1) 상기 복호장치의 제 10 수단에 있어서, 상기 제 2 암호문(C2)과 상기 값(r)과 상기 n차원 벡터(v)의 요소(vμ)(μ=1,...,n)를 사용하여, 함수값(λ)=C2-r·Σμ=1 nvμ·bμ∈G1 n +1을 산출하는 스텝과,
    (D-2) 상기 복호장치의 제 11 수단에 있어서, 상기 함수값(λ)과 값(βμ)(μ=1,...,n)에 대한 보조키정보(D2 *)=Σμ=1 nβμ·bμ *를 상기 쌍선형 함수(e)에 입력하여 함수값(e)(λ, D2 *)을 산출하는 스텝과,
    (D-3) 상기 복호장치의 제 12 수단에 있어서, 상기 함수값(e)(λ, D2 *)이 e(λ, D2 *)=1∈GT를 충족시키는지 아닌지를 판정하는 스텝을 포함하고,
    당해 복호방법은, 상기 스텝(D-3)에서의 판정 결과가, e(λ, D2 *)=1∈GT를 충족시키는 취지의 판정 결과인 경우에, 상기 복호장치의 제 13 수단에 있어서, 상기 함수값(S)을 단사함수(R)에 입력하여 얻어지는 함수값(R(S))을 공통키(K)로 하고, 당해 공통키(K)와 상기 암호문(C1)을 공통키 복호함수에 입력하여 복호값(M)을 산출하고, 당해 복호값(M)을 출력하는 스텝을 더 갖는 것을 특징으로 하는 복호방법.
  32. 제 1 항 내지 제 3 항 중 어느 한 항의 암호화 장치로서 컴퓨터를 기능시키기 위한 프로그램.
  33. 제 15 항 내지 제 17 항 중 어느 한 항의 복호장치로서 컴퓨터를 기능시키기 위한 프로그램.
  34. 제 1 항 내지 제 3 항 중 어느 한 항의 암호화 장치로서 컴퓨터를 기능시키기 위한 프로그램을 저장한 컴퓨터 독취 가능한 기록매체.
  35. 제 15 항 내지 제 17 항 중 어느 한 항의 복호장치로서 컴퓨터를 기능시키기 위한 프로그램을 저장한 컴퓨터 독취 가능한 기록매체.
KR1020117023736A 2009-04-24 2010-04-23 암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체 KR101246241B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009106021 2009-04-24
JPJP-P-2009-106021 2009-04-24
PCT/JP2010/057271 WO2010123112A1 (ja) 2009-04-24 2010-04-23 暗号化装置、復号装置、暗号化方法、復号方法、セキュリティ方法、プログラム及び記録媒体

Publications (2)

Publication Number Publication Date
KR20110135962A true KR20110135962A (ko) 2011-12-20
KR101246241B1 KR101246241B1 (ko) 2013-03-22

Family

ID=43011226

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117023736A KR101246241B1 (ko) 2009-04-24 2010-04-23 암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체

Country Status (7)

Country Link
US (1) US8515060B2 (ko)
EP (1) EP2423903B1 (ko)
JP (1) JP5291795B2 (ko)
KR (1) KR101246241B1 (ko)
CN (1) CN102396011B (ko)
ES (1) ES2496740T3 (ko)
WO (1) WO2010123112A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101449239B1 (ko) * 2013-01-24 2014-10-15 서울대학교산학협력단 환 동형 사상을 이용한 동형 암호화 방법과 복호화 방법 및 이를 이용한 장치

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5349261B2 (ja) * 2009-04-23 2013-11-20 三菱電機株式会社 暗号処理システム、鍵生成装置、鍵委譲装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
US8938068B2 (en) * 2009-08-03 2015-01-20 Nippon Telegraph And Telephone Corporation Functional encryption applied system, information output apparatus, information processing apparatus, encryption protocol execution method, information output method, information processing method, program and recording medium
EP2503533B1 (en) * 2009-11-20 2016-10-05 Mitsubishi Electric Corporation Cipher processing system, key generating device, key delegating device, encrypting device, decrypting device, cipher processing method and cipher processing program
JP5334873B2 (ja) * 2010-01-08 2013-11-06 三菱電機株式会社 暗号処理システム、鍵生成装置、鍵委譲装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
WO2012011564A1 (ja) * 2010-07-23 2012-01-26 日本電信電話株式会社 暗号化装置、復号装置、暗号化方法、復号方法、プログラム、及び記録媒体
FR2967851B1 (fr) * 2010-11-22 2018-05-18 Cryptoexperts Sas Procede et systeme d'acces conditionnel a un contenu numerique, terminal et dispositif d'abonne associes
JP5606344B2 (ja) * 2011-01-25 2014-10-15 三菱電機株式会社 署名処理システム、鍵生成装置、署名装置、検証装置、署名処理方法及び署名処理プログラム
IN2014CN04197A (ko) * 2011-12-20 2015-07-17 Mitsubishi Electric Corp
JP5689839B2 (ja) * 2012-02-16 2015-03-25 日本電信電話株式会社 公開鍵暗号システム、公開鍵暗号方法、受信装置、およびプログラム
US8948386B2 (en) 2012-06-27 2015-02-03 Certicom Corp. Authentication of a mobile device by a network and key generation
US9088408B2 (en) 2012-06-28 2015-07-21 Certicom Corp. Key agreement using a key derivation key
US8971851B2 (en) 2012-06-28 2015-03-03 Certicom Corp. Key agreement for wireless communication
US20150278553A1 (en) * 2013-01-18 2015-10-01 Mitsubishi Electric Corporation Data decryption device, attribute-based encryption system, random number element removing device, randomized secret key generation device, data decryption method, and data decryption program
WO2015091172A1 (en) * 2013-12-20 2015-06-25 Koninklijke Philips N.V. Secure data transformations
US10608814B2 (en) * 2015-05-17 2020-03-31 Gideon Samid Equivoe-T: Transposition equivocation cryptography
US11038668B2 (en) * 2015-05-17 2021-06-15 Gideon Samid Transposition encryption alphabet method (TEAM)
KR102447476B1 (ko) * 2015-08-20 2022-09-27 삼성전자주식회사 암복호 장치, 그것을 포함하는 저장 장치 및 그것의 암복호 방법
CN107196760B (zh) * 2017-04-17 2020-04-14 徐智能 具有可调整性的伴随式随机重构密钥的序列加密方法
US10411891B2 (en) * 2017-06-28 2019-09-10 Nxp B.V. Distance-revealing encryption

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0624013B1 (en) * 1993-05-05 1998-12-02 Zunquan Liu Device and method for data encryption
JP4181724B2 (ja) * 2000-03-03 2008-11-19 日本電気株式会社 証明付再暗号シャッフル方法と装置、再暗号シャッフル検証方法と装置、入力文列生成方法と装置及び記録媒体
KR100585119B1 (ko) * 2004-01-07 2006-06-01 삼성전자주식회사 암호화 장치, 암호화 방법 및 그 기록매체
EP1993086B1 (en) * 2006-01-11 2012-09-05 Mitsubishi Electric Corporation Elliptical curve encryption parameter generation device, elliptical curve encryption calculation device, elliptical curve encryption parameter generation program, and elliptical curve encryption calculation program
JP4869824B2 (ja) * 2006-08-08 2012-02-08 三菱電機株式会社 受信者装置及び送信者装置及び暗号通信システム及びプログラム
JP5349261B2 (ja) * 2009-04-23 2013-11-20 三菱電機株式会社 暗号処理システム、鍵生成装置、鍵委譲装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101449239B1 (ko) * 2013-01-24 2014-10-15 서울대학교산학협력단 환 동형 사상을 이용한 동형 암호화 방법과 복호화 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
JP5291795B2 (ja) 2013-09-18
US8515060B2 (en) 2013-08-20
KR101246241B1 (ko) 2013-03-22
US20120027201A1 (en) 2012-02-02
CN102396011A (zh) 2012-03-28
JPWO2010123112A1 (ja) 2012-10-25
EP2423903A1 (en) 2012-02-29
EP2423903A4 (en) 2013-04-10
ES2496740T3 (es) 2014-09-19
EP2423903B1 (en) 2014-07-16
CN102396011B (zh) 2014-04-16
WO2010123112A1 (ja) 2010-10-28

Similar Documents

Publication Publication Date Title
KR101246241B1 (ko) 암호화 장치, 복호장치, 암호화 방법, 복호방법, 세큐러티 방법, 프로그램 및 기록매체
JP5466763B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、プログラム、及び記録媒体
KR101456579B1 (ko) 비밀 분산 시스템, 분산 장치, 분산 관리 장치, 취득 장치, 비밀 분산 방법, 프로그램, 및 기록 매체
JP5562475B2 (ja) 秘密分散システム、分散装置、分散管理装置、取得装置、それらの処理方法、秘密分散方法、プログラム
KR20110136841A (ko) 정보 생성 장치, 방법, 프로그램 및 그 기록 매체
Lee et al. Anonymous HIBE with short ciphertexts: full security in prime order groups
Qin et al. Simultaneous authentication and secrecy in identity-based data upload to cloud
Li et al. Identity-based multi-recipient public key encryption scheme and its application in IoT
WO2018043049A1 (ja) 暗号システム、暗号方法及び暗号プログラム
Kara et al. A Probabilistic Public-Key Encryption with Ensuring Data Integrity in Cloud Computing
Kim et al. Collusion resistant trace-and-revoke for arbitrary identities from standard assumptions
Wang et al. Attribute-Based Traitor Tracing.
Backes et al. Fully secure inner-product proxy re-encryption with constant size ciphertext
JP5612494B2 (ja) 関数暗号を用いた時限暗号システム、時限暗号方法、装置、プログラム
Ding et al. Ciphertext retrieval via attribute-based FHE in cloud computing
Jinman et al. Hierarchical identity-based broadcast encryption scheme on lattices
Freeman Homomorphic encryption and the BGN Cryptosystem
Partala Symmetric blind decryption with perfect secrecy
Shokurov et al. On the Possibility of Secure Program Obfuscation in Some Model of Cloud Computing
Sepehri Efficient and Secure Data Sharing Using Attribute-based Cryptography
Singh FIFE: A Framework for Investigating Functional Encryption
Kawachi et al. Quantum asymmetric-key cryptosystems secure against computationally unbounded adversaries (theory of computer science and its applications)

Legal Events

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

Payment date: 20151005

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170303

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180302

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200305

Year of fee payment: 8