KR102418016B1 - 래티스를 기반으로 하는 신원 기반 암호화 방법 - Google Patents

래티스를 기반으로 하는 신원 기반 암호화 방법 Download PDF

Info

Publication number
KR102418016B1
KR102418016B1 KR1020200101937A KR20200101937A KR102418016B1 KR 102418016 B1 KR102418016 B1 KR 102418016B1 KR 1020200101937 A KR1020200101937 A KR 1020200101937A KR 20200101937 A KR20200101937 A KR 20200101937A KR 102418016 B1 KR102418016 B1 KR 102418016B1
Authority
KR
South Korea
Prior art keywords
elements
vector
encryption method
public key
calculated
Prior art date
Application number
KR1020200101937A
Other languages
English (en)
Other versions
KR20210066695A (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 서울대학교산학협력단
Priority to EP20851405.9A priority Critical patent/EP3854024B1/en
Priority to PCT/KR2020/016488 priority patent/WO2021107515A1/en
Priority to US17/269,239 priority patent/US20220021535A1/en
Publication of KR20210066695A publication Critical patent/KR20210066695A/ko
Application granted granted Critical
Publication of KR102418016B1 publication Critical patent/KR102418016B1/ko
Priority to US18/590,797 priority patent/US20240205007A1/en

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

연산 장치가 개시된다. 본 연산 장치는 적어도 하나의 인스트럭션(instruction) 및 신원 정보를 저장하는 메모리, 및 적어도 하나의 인스트럭션을 실행하는 프로세서를 포함하고, 프로세서는, 작은 원소들을 랜덤하게 샘플링하고, 저장된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하고, 2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 마스터 공개키, 샘플링된 작은 원소들 및 함수처리 출력 값을 이용하여 메시지에 대한 암호문을 생성한다.

Description

래티스를 기반으로 하는 신원 기반 암호화 방법{IDENTITY-BASED ENCRYPTION MTTHOD BASED ON LATTICES}
본 개시는 래티스를 기반으로 하는 신원 기반 암호화 방법에 관한 것으로, 보다 구체적으로는 파라미터 유연성을 확보할 수 있는 래티스 기반 신원 기반 암호화를 위한 마스터 비밀키, 마스터 공개키를 생성하는 방법과 사용자 비밀키를 생성하는 방법, 사용자 비밀키를 이용하여 메시지를 암호화하는 방법 및 그 암호화를 복호화하는 방법에 관한 것이다.
신원 기반 암호화(Identity-Based Encryption)는 사용자에게 유일하게 부여되는 신원 정보에 기초하여 사용자 비밀키와 공개키를 생성하는 암호화 방법으로서 키를 나눠가지지 않는 사용자끼리도 안전하게 통신할 수 있는 장점이 있다. 사용자의 신원 정보로는 사용자에게 유일하게 부여되는 지문 정보와 같은 생체 정보, 사용자의 이메일 주소나 전화번호 등이 이용될 수 있다.
사용자 비밀키는 키 생성기관이 생성하여 사용자에게 제공한다.
2014년 공개된 논문 "Efficient Identity-Based Encryption over NTRU Lattices"에서 Leo Ducas 등은 신원 기반 암호화의 마스터 비밀키와 마스터 공개키를 생성하는 방법의 하나로서 NTRU 래티스에 기반한 방법을 제안한 바 있다.
상기 종래 기술에서의 키 생성 과정은 다항식 링(polynomial ring)(
Figure 112020085447116-pat00001
)에서 수행된다. 그런데 종래 기술에서는 전체 차원이 2의 거듭제곱이 되어야 하며, 그렇지 않은 경우의 안정성은 증명되지 않았기 때문에 파라미터 유연성에 한계가 있었다. 예를 들어, 대략 80 bit 보안 레벨을 제공하는 링의 차원이 n= 512이고, 192 bit 보안 레벨을 제공하는 다음 링의 차원이 n=1024인 경우에 128 bit 보안 레벨이 필요한 경우에는 n=1024인 차원을 이용하여야 하며, 그에 따라 키 생성에 필요한 계산량이나 계산 시간이 급격하게 상승하는 단점이 있었다.
본 개시는 이상과 같은 문제점을 해결하기 위하여 고안된 것으로, 파라미터 경직성을 해소하여 파라미터를 유연하게 선택할 수 있게 함과 동시에 안정성을 역시 확보할 수 있는 래티스에 기반한 신원 기반 암호화 방법을 제공하는 데 있다.
이상과 같은 목적을 달성하기 위하여, 본 개시의 일 실시 예에 따른 래티스 및 신원 기반 암호화 방법은 신원 정보를 입력받는 단계, 작은 원소들을 랜덤하게 샘플링하는 단계, 상기 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하는 단계, 및 상기 샘플링된 작은 원소들, 상기 함수처리 출력 값 및 마스터 공개키를 이용하여 메시지에 대한 암호문을 생성하는 단계를 포함하고, 상기 마스터 공개키는, 2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된다.
이 경우, 본 암호화 방법은 상기 래티스 및 신원 기반 암호화 방법에 사용되는 트랩 도어(T)를 산출하는 단계, 및 상기 산출된 트랩 도어(T)를 마스터 비밀키로 설정하는 단계를 더 포함할 수 있다.
이 경우, 본 암호화 방법은 상기 링에서 상호 선형 독립인 원소들(
Figure 112020085447116-pat00002
)을 샘플링하여, 열의 개수가 상기 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬(S)을 산출하는 단계, 및 열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출하는 단계, 및 상기 제2 랜덤 행렬(A)에 기초하여 상기 마스터 공개키를 산출하는 단계를 더 포함할 수 있다.
이 경우, 상기 제2 랜덤 행렬을 산출하는 단계는, 행렬
Figure 112020085447116-pat00003
에서 i번째 행을 제외한 d×d 행렬(Mi)을 산출하고,
Figure 112020085447116-pat00004
를 행렬식(ai)으로 설정하고,
Figure 112020085447116-pat00005
를 제2 랜덤 행렬로 산출할 수 있다.
이 경우, 상기 트랩 도어(T)를 산출하는 단계는,
Figure 112020085447116-pat00006
관계를 만족하는 벡터(
Figure 112020085447116-pat00007
)를 샘플링하는 단계를 포함하고,
Figure 112020085447116-pat00008
를 트랩 도어(T)로 산출할 수 있다.
이 경우, 상기 벡터를 샘플링하는 단계는, 상기 원소들(
Figure 112020085447116-pat00009
)을 이용하여 상기 벡터의 원소들을 축소시킨 후에 결과값 벡터를 출력할 수 있다.
이 경우, 상기 벡터(
Figure 112020085447116-pat00010
)를 샘플링하는 단계는, 상기 벡터의 원소들(
Figure 112020085447116-pat00011
)에서 상기 원소들(
Figure 112020085447116-pat00012
)의 상수배를 빼어서 상기 원소 방향 성분을 제거하여 축소시킬 수 있다.
한편, 상기 벡터(
Figure 112020085447116-pat00013
)를 샘플링하는 단계는, 확장 유클리드 알고리즘(Extended Euclidean Algorithm)을 이용하여 상기 벡터의 원소들을 축소할 수 있다.
한편, 본 암호화 방법은 상기 함수처리 출력 값에 대해서 상기 제2 랜덤 행렬(A)과의 곱이 상기 해시 값이 되는 크기가 작은 해를 산출하는 단계, 및 상기 산출된 작은 해를 이용하여 사용자 비밀키를 설정하는 단계를 더 포함할 수 있다.
이 경우, 본 암호화 방법은 상기 사용자 비밀키를 이용하여, 상기 암호문에서 메시지를 복호하는 단계를 더 포함할 수 있다.
한편, 상기 신원 정보는, 주민등록번호, 이메일 주소, 전화번호, 지문 정보 또는 홍채 정보 적어도 하나일 수 있다.
한편, 본 개시의 일 실시 예에 따른 연산 장치는 적어도 하나의 인스트럭션(instruction) 및 신원 정보를 저장하는 메모리, 및 상기 적어도 하나의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는, 작은 원소들을 랜덤하게 샘플링하고, 상기 저장된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하고, 2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 마스터 공개키, 상기 샘플링된 작은 원소들 및 상기 함수처리 출력 값을 이용하여 메시지에 대한 암호문을 생성한다.
이 경우, 상기 프로세서는, 상기 링에서 상호 선형 독립인 원소들(
Figure 112020085447116-pat00014
)을 샘플링하여, 열의 개수가 상기 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬(S)을 산출하고, 열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출하고, 상기 제2 랜덤 행렬(A)에 기초하여 상기 마스터 공개키를 산출하고, 상기 래티스 및 신원 기반 암호화 방법에 사용되는 트랩 도어(T)를 산출하고, 상기 산출된 트랩 도어(T)를 마스터 비밀키로 설정할 수 있다.
이 경우, 상기 프로세서는, 기설정된 관계를 만족하는 벡터를 샘플링하되, 상기 벡터의 원소들을 축소한 결과값 벡터로 트랩 도어를 산출할 수 있다.
한편, 본 개시의 일 실시 예에 따른 래티스 및 신원 기반 암호화 방법을 실행하기 위한 프로그램을 포함하는 컴퓨터 판독가능 기록매체에 있어서, 상기 암호화 방법은, 신원 정보를 입력받는 단계, 작은 원소들을 랜덤하게 샘플링하는 단계, 상기 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하는 단계, 및 상기 샘플링된 작은 원소들, 상기 함수처리 출력 값 및 마스터 공개키를 이용하여 메시지에 대한 암호문을 생성하는 단계를 포함하고, 상기 마스터 공개키는, 2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된다.
이상과 같은 본 개시의 다양한 실시 예들에 따르면, 래티스에 기반한 신원 기반 암호화 방법에 있어서 요구되는 보안성을 만족시키면서도 파라미터를 유연하게 선택, 즉, 전체 차원이 2의 거듭제곱이 아닌 정수를 사용하는 것이 가능하다.
또한, 보안성에 정확히 알맞은 파라미터를 자유롭게 선택할 수 있으므로, 아호 시스템의 전체적인 효율성을 증대시키면서 공개키, 비밀키, 암호문 모두의 크기를 줄일 수 있다.
도 1은 본 개시에 따른 마스터 공개키 및 마스터 비밀키를 생성하는 동작을 설명하기 위한 흐름도,
도 2는 본 개시에 따른 사용자 비밀키를 생성하는 동작을 설명하기 위한 흐름도,
도 3은 본 개시에 따른 암호문을 생성하는 동작을 설명하기 위한 흐름도,
도 4는 본 개시에 따른 메시지 복호 동작을 설명하기 위한 흐름도,
도 5는 본 개시의 랜덤 행렬을 구조를 도시한 도면,
도 6은 본 개시의 일 실시 예에 따른 네트워크 시스템의 구조를 설명하기 위한 도면,
도 7은 본 개시의 일 실시 예에 따른 연산 장치의 구성을 나타낸 블럭도,
도 8은 본 개시의 일 실시 예에 따른 암호화 방법을 설명하기 위한 흐름도,
도 9는 본 개시의 일 실시 예에 따른 키 생성 알고리즘을 설명하기 위한 도면,
도 10은 본 개시의 일 실시 예에 따른 추출(extract) 알고리즘을 설명하기 위한 도면,
도 11은 본 개시의 일 실시 예에 따른 암호화(encrypt) 알고리즘을 설명하기 위한 도면, 그리고
도 12는 본 개시의 일 실시 예에 따른 복호화(Decrypt) 알고리즘을 설명하기 위한 도면이다.
이하에서는 첨부 도면을 참조하여 본 개시에 대해서 자세하게 설명한다. 본 개시에서 수행되는 정보(데이터) 전송 과정은 필요에 따라서 암호화/복호화가 적용될 수 있으며, 본 개시 및 특허청구범위에서 정보(데이터) 전송 과정을 설명하는 표현은 별도로 언급되지 않더라도 모두 암호화/복호화하는 경우도 포함하는 것으로 해석되어야 한다. 본 개시에서 "A로부터 B로 전송(전달)" 또는 "A가 B로부터 수신"과 같은 형태의 표현은 중간에 다른 매개체가 포함되어 전송(전달) 또는 수신되는 것도 포함하며, 반드시 A로부터 B까지 직접 전송(전달) 또는 수신되는 것만을 표현하는 것은 아니다.
본 개시의 설명에 있어서 각 단계의 순서는 선행 단계가 논리적 및 시간적으로 반드시 후행 단계에 앞서서 수행되어야 하는 경우가 아니라면 각 단계의 순서는 비제한적으로 이해되어야 한다. 즉, 위와 같은 예외적인 경우를 제외하고는 후행 단계로 설명된 과정이 선행단계로 설명된 과정보다 앞서서 수행되더라도 개시의 본질에는 영향이 없으며 권리범위 역시 단계의 순서에 관계없이 정의되어야 한다. 그리고 본 명세서에서 "A 또는 B"라고 기재한 것은 A와 B 중 어느 하나를 선택적으로 가리키는 것뿐만 아니라 A와 B 모두를 포함하는 것도 의미하는 것으로 정의된다. 또한, 본 개시에서 "포함"이라는 용어는 포함하는 것으로 나열된 요소 이외에 추가로 다른 구성요소를 더 포함하는 것도 포괄하는 의미를 가진다.
본 개시에서 "모듈" 또는 "유닛"이라 함은 범용적인 하드웨어 또는 그 기능을 수행하는 소프트웨어이거나, 하드웨어와 소프트웨어와의 논리적인 결합일 수 있다.
본 개시에서는 본 개시의 설명에 필요한 필수적인 구성요소만을 설명하며, 본 개시의 본질과 관계가 없는 구성요소는 언급하지 아니한다. 그리고 언급되는 구성요소만을 포함하는 배타적인 의미로 해석되어서는 안 되며 다른 구성요소도 포함할 수 있는 비배타적인 의미로 해석되어야 한다.
본 개시는 전자적 연산이 가능한 컴퓨터, 서버, 스마트폰과 같은 모바일 디바이스 등의 전자적인 연산 장치에 의해 수행될 수 있으며, 후술하는 본 개시의 각 단계의 수학적 연산 및 산출은 해당 연산 또는 산출을 하기 위해 공지되어 있는 코딩 방법 및/또는 본 개시에 적합하게 고안된 코딩에 의해서 컴퓨터 프로그램의 실행에 다른 연산으로 구현될 수 있다. 본 개시를 실행하는 컴퓨터 프로그램은 컴퓨터에 의해 판독 가능한 기록 매체에 저장될 수 있다.
그리고 본 개시에서 "값"이라 함은 스칼라값뿐만 아니라 벡터, 행렬, 다항식 등 수학식으로 표현될 수 있는 모든 값을 포함하는 광의의 개념으로 정의될 수 있다.
본 개시에서 특정 값에 대한 암호화 또는 해시 등과 같은 연산을 하여 소정의 값을 획득한다는 의미는 해당 특정 값뿐만 아니라, 해당 특정 값의 변형 값(예를 들어, 특정 값에 소정의 값을 추가로 연산하거나 소정의 규칙에 따라서 해당 특정 값을 변화시키는 등의 과정을 통해서 산출된 다른 값)에 대한 암호화 또는 해시 등의 연산도 포함하는 것으로 정의될 수 있다.
후술하는 본 개시의 각 단계의 수학적 연산 및 산출은 해당 연산 또는 산출을 하기 위해 공지되어 있는 코딩 방법 및/또는 본 개시에 적합하게 고안된 코딩에 의해서 컴퓨터 연산으로 구현될 수 있다.
본 명세서의 첨부 도면에 도시되어 있는 장치의 각 구성요소는 도면에 명시적으로 도시된 형태, 크기, 치수뿐만 아니라 본 개시가 의도하는 기능을 수행할 수 있는 형태, 크기, 치수라면 어느 것이든 적용될 수 있다.
이하에서 설명하는 구체적인 수학식은 가능한 여러 대안 중에서 예시적으로 설명되는 것이며, 본 개시의 권리 범위가 본 개시에 언급된 수학식에 제한되는 것으로 해석되어서는 아니된다.
설명의 편의를 위해서, 본 개시에서는 다음과 같이 표기를 정하기로 한다.
a ← D : 분포(D)에 따라서 원소(a)를 선택함
s1, s2 ∈ R : S1, S2 각각은 R 집합에 속하는 원소이다.
mod(q) : q 원소로 모듈(modular) 연산
Figure 112020085447116-pat00015
: 내부 값을 반올림함
이하에서는 첨부된 도면을 이용하여 본 개시의 다양한 실시 예들에 대하여 구체적으로 설명한다.
본 개시에서는 NTRU 기반의 암호화의 차원 유연성을 해결할 수 있는 moduled-NTRU(MNTRU) 격자라 부르는 NTRU 격자의 일반화된 개념을 제안한다. 이러한 MNTRU 격자는 효율적인 트랩도어 생성을 보이며, 기존의 NTRU 트랩도어 보다 효율성을 갖는다. 이하에서는 먼저 MNTRU 트랩 도어에 기초하여 새로운 신원 기반 암호화에 적용한다.
먼저, NTRU 트랩도어을 일반화화는 동작을 먼저 설명한다.
ring-LWE으로부터 module-LWE로 일반화와 유사하게, R2 내의 NTRU 격자의 컨텍스트를 고차원의 Rd의 MNTRU 격자로 일반화할 수 있다.
먼저, 행렬(
Figure 112020085447116-pat00016
)에서 샘플링된 두 개의 작은 다항식(f, g)을 샘플링하고, f를 링에서 역이라고 가정하며, NTRU 인스턴스(instance)는
Figure 112020085447116-pat00017
로 정의되고, 여기서
Figure 112020085447116-pat00018
이고, 다음과 같은 수학식 1을 만족할 수 있다.
[수학식 1]
Figure 112020085447116-pat00019
여기서, h는 NTRU 인스턴스, SNTRU는 행렬이다.
그리고, NTRU 격자는 다음과 같은 수학식 2와 같이 정의될 수 있다.
[수학식 2]
Figure 112020085447116-pat00020
여기서, ANTRU는 NTRU 격자이고, q는 소수이다.
이러한 내용은 일반적이지 않은 짧은 벡터(g, -f)를 포함하는 Z2n 내의 정수 격자로 이해될수 있으며, f, g는 다음의 수학식 3을 만족하는 F, G ∈R를 찾음으로써 ANTRU의 트랩도어 베이시스(
Figure 112020085447116-pat00021
)를 생성할 수 있다.
[수학식 3]
Figure 112020085447116-pat00022
여기서 g, f는 짧은 벡터, F, G는 행렬, q는 소수이다.
NTRU 식으로 불리는 것은 다음과 같은 수학식 4와 같다.
[수학식 4]
Figure 112020085447116-pat00023
여기서 A는 다항식의 역 행렬 변환(anti-circulant matrix transform)을 나타낸다.
이러한 프레임 워크를 d≥2 경우를 일반화할 수 있다. 이를 위하여, 먼저 SMNTRU ∈ Rd×(d-1)에서 작은 계수를 갖는 원소를 샘플링할 수 있고, 다음의 수학식 5를 만족하는 벡터 hMNTRU =(h1, … , hd)∈ Rq d-1를 구성할 수 있다.
[수학식 5]
Figure 112020085447116-pat00024
이를 기초로 n차원의 MNTRU 격자를 다음과 같은 수학식 6과 같이 정의할 수 있다.
[수학식 6]
Figure 112020085447116-pat00025
여기서 h =(h1,… ,hd-1)은 deti/det1에 의해 결정될 수 있고, mod q는 deti가 SMNTRU의 (d-1)×(d-1) 서브매트릭스의 디터미네이트이다.
이러한 내용을 기초로, 본 개시의 트랩도어는 수학식 7과 같이 계산될 수 있다.
[수학식 7]
Figure 112020085447116-pat00026
여기서, F는
Figure 112020085447116-pat00027
로 MNTRU 식이다.
이하에서는 상술한 트랩도어를 생성할 수 있는 격자 구조를 도 5를 참조하여 설명한다.
도 5는 본 개시의 랜덤 행렬을 구조를 도시한 도면이다.
도 5를 참조하면, 본 개시에 따른 래티스 구조에서는 제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)이 사용된다.
제1 랜덤 행렬(S)은 열의 개수가 d-k(즉, d-1)이고, 행의 개수(d)가 1이고, 제2 랜덤 행렬(A)은 열의 개수가 d 이고, 행의 개수(k)가 1이다. 여기서 열(d)의 개수는 2보다 큰 소정의 정수일 수 있으며, 종래 기술과 달리 전체 차원을 2의 거듭제곱이 아닌 다른 정수로 설정될 수 있는바, 파라미터 유연성이 높아질 수 있다.
제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)은 도 5에 표시된 관계를 만족할 수 있다.
본 개시에 의한 래티스에 기반한 신원 기반 암호화가 수행되는 환경은 도 6에 도시되어 있다.
도 6은 본 개시의 일 실시 예에 따른 네트워크 시스템의 구조를 설명하기 위한 도면이다.
도 6을 참조하면, 신원 기반 암호화에 필요한 마스터 비밀키, 마스터 공개키, 그리고 신원에 기반한 사용자 비밀키는 키 생성 서버(20)에 의해서 생성되며, 신원 정보는 사용자 단말기(10)에 입력되어 데이터 통신망(30)을 거쳐서 키 생성 서버(20)로 전송되어 사용자 비밀키 생성에 사용될 수 있다.
네트워크 시스템(600)은 사용자 단말기 및 키 생성 서버(20)를 포함할 수 있으며, 각 구성들은 데이터 통신망(30)를 통해 서로 연결될 수 있다.
데이터 통신망(30)은 다양한 형태의 유무선 통신 네트워크, 방송 통신 네트워크, 광통신 네트워크, 클라우드 네트워크 등으로 구현될 수 있으며, 각 장치들은 별도의 매개체 없이 와이파이, 블루투스, NFC(Near Field Communication) 등과 같은 방식으로 연결될 수도 있다.
도 6에서는 사용자 단말기가 하나인 것으로 도시하였으나, 복수개가 이용될 수 있다. 일 예로, 사용자 단말기(10)는 스마트폰, 태블릿, 게임 플레이어, PC, 랩톱 PC, 홈서버, 키오스크 등과 같은 다양한 형태의 장치로 구현될 수 있으며, 이밖에 IoT 기능이 적용된 가전 제품 형태로도 구현될 수 있다.
사용자는 자신이 사용하는 사용자 단말기(10)를 통해서 다양한 정보를 입력할 수 있다. 입력된 정보는 사용자 단말기(10) 자체에 저장될 수도 있지만, 저장 용량 및 보안 등을 이유로 외부 장치로 전송되어 저장될 수도 있다. 도 6에서 키 생성 서버(20)는 이러한 정보들을 저장하는 역할을 수행하고, 키 생성 서버(20)는 키 생성 서버(20)에 저장된 정보의 일부 또는 전부를 이용하는 역할을 수행할 수 있다.
사용자 단말기(10)는 키 생성 서버(20)로부터 암호화에 필요한 키 정보를 수신하고, 수신된 키 정보를 이용하여 메시지를 암호화할 수 있다. 예를 들어, 사용자 단말기(10)는 키 생성 서버(20)로부터 마스터 공개키를 수신할 수 있으며, 수신된 마스터 공개키를 이용하여 메시지를 암호화하여 암호문을 생성할 수 있다. 이때, 사용자 단말기(10)는 암호화에 필요한 작은 원소들, 함수처리 출력값도 수신하여 이용할 수도 있으며 자체적으로 생성하여 이용할 수도 있다.
그리고 사용자 단말기(10)는 암호문을 키 생성 서버(20)로 전송할 수 있다. 그리고 사용자 단말기(10)는 암호문에 대한 복호화를 수행할 수 있다. 예를 들어, 사용자 단말기(10)는 사용자 비밀키를 생성하고, 생성된 사용자 비밀키를 이용하여 암호문에 대한 복호화를 수행할 수 있다. 한편, 복호화 동작은 키 생성 서버(20) 측에서 수행할 수도 있다. 구체적인 암호화 및 복호화 동작은 후술한다.
키 생성 서버(20)는 래티스 및 신원 기반 암호화 방식에 이용되는 각종 키 값을 생성할 수 있다. 구체적으로 설명하면, 키 생성 서버(450)는 먼저 각종 파라미터 및 환(ring)을 설정하고, 설정된 파라미터와 링에 기초하여 마스터 공개키, 마스터 비밀키를 생성할 수 있다.
여기서 환(ring)은 다음과 같은 수학식으로 표현될 수 있다.
[수학식 1]
Figure 112020085447116-pat00028
여기서 R은 환, Z는 계수이다. 여기서 환은 기설정된 계수를 가지는 다항식의 집합으로, 원소들 사이에 덧셈과 곱셈이 정의되어 있으며 덧셈과 곱셈에 대해서 닫혀 있는 집합을 의미한다. 이러한 환은 링으로 지칭될 수 있다.
여기서, 환의 원소들의 N차 미만의 정수 계수 다항식이며, 집합에 속하는 원소 사이에 덧셈 연산과 곱셈 연산이 정의되어 있다. 이러한 환은 링으로 지칭될 수 있다. 예를 들어, 덧셈 연산은 다항식 간의 곱으로 정의될 수 있고, 곱셈 연산은 각 다항식을 곱한 다음에 해당 원소의 mod xN+1로 정의될 수 있다. 그러한 정의에 따르면 XN-1*x는 다항식의 곱으로는 xN이고, mod XN+1에 대해 XN=-1이므로 XN-1*x = -1 이될 수 있다.
[수학식 2]
Figure 112020085447116-pat00029
수학식 2에서 환은 N차 미만이면서 계수가 [0, q-1] 내의 정수만으로 구성된 다항식들의 집합을 의미한다. 해당 집합 위에서의 덧셈 연산과 곱셈 연산이 정의되어 있으며, 예를 들어, 곱셈 연산을 mod xN+1과 동시에 각 계수별로 mod q를 수행하는 것으로 정의될 수 있다.
본 개시에 따른 환은 2의 거듭제곱과 2이상의 정수 곱으로 표현되는 차원을 가지며, 이와 같은 차수 값에 대응디는 격자 트랩도어가 이용될 수 있다.
키 생성 서버(450)는 상술한 링의 설정에 기초하여 제1 랜덤 행렬과 제2 랜덤 행렬을 산출하고, 트랩 도어를 산출할 수 있다. 여기서 트랩도어는 자체적으로 수행하기 어려운 기능의 역을 계산할 수 있도록 하는 특별한 비밀 정보이다. 본 개시에서의 트랩도어는 도 5와 같은 결자 기반 암호 기법에 이용되며, 구체적인 산출 동작은 도 1을 참조하여 후술한다.
키 생성 서버(450)는 산출된 랜덤 행렬과 트랩 도어를 기초로 마스터 공개키, 마스터 비밀키를 산출할 수 있다. 구체적인 생성 동작에 대해서는 도 1을 참조하여 후술한다.
그리고 키 생성 서버(20)는 사용자 단말기(10)로부터 암호문을 수신하고, 암호문을 복호화하지 않고 암호문 상태로 저장할 수도 있다.
한편, 도 6에서는 키 생성 서버(20)가 암호화에 필요한 키들을 생성하고, 사용자 단말기(10)가 생성된 키 중 일부를 제공받아 암호화 동작을 수행하는 것으로 설명하였지만, 키 생성 동작, 암호화 동작, 복호화 동작은 환경에 따라 다양한 기기에서 수행될 수 있다.
도 1은 본 개시에 따른 마스터 공개키 및 마스터 비밀키를 생성하는 동작을 설명하기 위한 흐름도이다.
도 1을 참조하면, 제1 랜덤 행렬(S)을 산출한다(100). 예를 들어, 아래와 같은 수학식 3을 만족하는 원소 값들을 샘플링하여 제1 랜덤 행렬(S)을 산출할 수 있다.
[수학식 3]
Figure 112020085447116-pat00030
여기서,
Figure 112020085447116-pat00031
는 샘플링된 원소 값들이고, 모든
Figure 112020085447116-pat00032
값들은 Rq에서 선형 독립인 관계이다. 만약, 선형 독립인 관계가 아니면, 원소값들을 다시 샘플링할 수 있다.
그리고 제2 랜덤 행렬(A)을 산출한다(110). 구체적으로, 랜덤한 계수(r)를 샘플링하고, 제1 랜덤 행렬의 행 개수에 대응되는 행렬식(ai)과 샘플링된 랜덤한 계수(r)를 이용하여 아래의 수학식 4와 같이 제2 랜덤 행렬(A)를 산출할 수 있다.
[수학식 4]
Figure 112020085447116-pat00033
여기서 행렬식(ai)은
Figure 112020085447116-pat00034
이고, Mi는 행렬
Figure 112020085447116-pat00035
에서 i 번째 행렬을 제외한 d×d 행렬이다. 그리고 r은 랜덤 계수
Figure 112020085447116-pat00036
이다.
예를 들어, 랜덤한 계수(r)를 a1 -1으로 하면, 제2 랜덤 행렬(A)은 (1, A1, …, Ad-1)이 될 수 있다.
그리고 트랩 도어(T)를 산출한다(120). 예를 들어, 아래의 수학식 5와 같이 제1 랜덤행렬(s)과 새롭게 샘플링된
Figure 112020085447116-pat00037
를 이용하여 트랩 도어(T)를 산출할 수 있다.
[수학식 5]
Figure 112020085447116-pat00038
여기서 T는 트랩 도어,
Figure 112020085447116-pat00039
는 제1 랜덤 행렬(s)의 원소 값,
Figure 112020085447116-pat00040
는 아래의 수학식 6을 만족하도록 링에서 샘플링된 짧은 벡터이다. 그리고, "∥"은 연접을 의미한다.
[수학식 6]
Figure 112020085447116-pat00041
여기서, det는 행렬식(determinant) 연산이고,
Figure 112020085447116-pat00042
는 제1 랜덤 행렬(s)의 원소 값,
Figure 112020085447116-pat00043
는 샘플링된 짧은 벡터, q는 상수이다.
이하에서는 짧은 벡터(
Figure 112020085447116-pat00044
)를 샘플링하는 구체적인 방법에 대해서 이하에서 설명한다.
먼저,
Figure 112020085447116-pat00045
을 만족하는 αi를 계산할 수 있다. 여기서,
Figure 112020085447116-pat00046
로 가정하며,
Figure 112020085447116-pat00047
이다.
αi의 계산은 확장 유클리드 알고리즘(Extended Euclidean Algorithm)에 의해 실행될 수 있다. 그리고 전술한 산출 값들에 기초하여 Fi를 다음과 같이 산출할 수 있다.
[수학식 7]
Figure 112020085447116-pat00048
이렇게 하면, 다음과 같은 수학식 8의 관계가 성립된다.
[수학식 8]
Figure 112020085447116-pat00049
Figure 112020085447116-pat00050
를 이용하여
Figure 112020085447116-pat00051
를 축소한 다음에, 결과값(
Figure 112020085447116-pat00052
)을 출력할 수 있다.
이러한 축소는
Figure 112020085447116-pat00053
에서
Figure 112020085447116-pat00054
의 적당한 상수배를 빼주면서,
Figure 112020085447116-pat00055
방향 성분을 지우는 과정을 의미한다. 그러한 축소에 의해서 트랩 도어(T)의 크기를 작게 만드는 효과가 있다. 정수로 예를 들면, F = (2, 5), f = (1, 2)인 경우, [F, f]와 [F-2f, f]를 비교하면 같은 열 공간을 정의하지만 뒤의 축소된 행렬의 열의 크기가 작아질 수 있다.
그리고 마스터 비밀키 및 마스터 공개키를 설정한다(130). 구체적으로, 산출된 트랩 도어(T)를 마스터 비밀키로 설정하고, 마스터 공개키는 (A1, …, Ad-1)로 설정할 수 있다.
이와 같이 마스터 비밀키 및 마스터 공개키가 설정되면, 마스터 공개키를 해시 함수(hash Function)(
Figure 112020085447116-pat00056
)에 적용하여 공개할 수 있으며, 사용자별 사용자 비밀키를 생성할 수 있다. 사용자 비밀키를 생성하는 동작에 대해서는 도 2를 참조하여 이하에서 설명한다.
도 2는 본 개시에 따른 사용자 비밀키를 생성하는 동작을 설명하기 위한 흐름도이다.
도 2를 참조하면, 사용자는 사용자 단말기를 이용하여 신원 정보(id)를 입력한다(200), 여기서 신원 정보(id)는 지문 정보, 이메일 정보, 전화번호 등 사용자에게 유일하게 부여되는 정보일 수 있다. 이러한 신원 정보는 사용자 단말장치에서 서버로 전송되고, 서버는 수신된 신원 정보를 이용하여 사용자 비밀키 생성에 이용할 수 있다.
그리고 입력된 신원 정보(id)에 대해서 단 방향 함수 연산, 즉 해시 연산을 수행하여 출력 값(t)(
Figure 112020085447116-pat00057
)을 산출할 수 있다(210).
그리고 아래의 수학식 9를 만족하는 크기의 작은 해(
Figure 112020085447116-pat00058
)를 산출할 수 있다(220). 구체적인 산출 동작은 도 10을 참조하여 후술한다.
[수학식 9]
Figure 112020085447116-pat00059
이 과정의 안정성은 마스터 비밀키(T)가 없으면 수행되기 어렵다는 수학적 가정에 의해 확보된다.
그리고 앞서 산출된 작은 해(s)에 기초하여 아래의 수학식 10과 같이 사용자 비밀키(SKid)를 출력할 수 있다(230)
[수학식 10]
Figure 112020085447116-pat00060
여기서 skid는 사용자 비밀키, S1, …Sd-1은 산출된 작은 해(s)이다.
도 3은 본 개시에 따른 암호문을 생성하는 동작을 설명하기 위한 흐름도이다. 구체적으로 도 3은 마스터 공개키(mpk)에 기초하여 메시지(m)를 암호화하는 과정을 도시하고 있다.
도 3을 참조하면, 사용자는 사용자 단말기를 이용하여 신원 정보(id)를 입력한다(300), 여기서 신원 정보(id)는 지문 정보, 이메일 정보, 전화번호 등 사용자에게 유일하게 부여되는 정보일 수 있다. 여기서 신원 정보(id)는 상술한 바와 같이 다양한 정보가 이용될 수 있으나, 암호화 과정에서 이용하는 신원 정보와 앞선 도 2의 과정에서의 사용자 비밀키 생성 과정에서 이용되는 신원 정보는 동일할 수 있다.
그리고 입력된 신원 정보(id)에 대해서 단 방향 함수 연산, 즉 해시 연산을 수행하여 출력 값(t)(
Figure 112020085447116-pat00061
)을 산출할 수 있다(310).
그리고 크기가 작은 원소들(
Figure 112020085447116-pat00062
)을 샘플링할 수 있다(320). 이때, r은 a1 -1로 설정할 수 있다.
그리고 아래의 수학식 11과 같이 샘플링된 원소들 및 해시 출력값(t) 및 마스터 공개키(mpk)를 이용하여 메시지(m)에 대한 암호문(c)을 생성할 수 있다(330). 보다 구체적인 암호문 생성 동작은 도 11을 참조하여 후술한다.
[수학식 11]
Figure 112020085447116-pat00063
여기서, c는 암호문, m 메시지, r, e0, e1, 은 랜덤 값, t는 출력 값이고,
Figure 112020085447116-pat00064
는 * 값의 정수로의 내림 값을 의미한다.
이하에서는 도 4를 참조하여 복호화 동작을 설명한다.
도 4는 본 개시에 따른 메시지 복호 동작을 설명하기 위한 흐름도이다.
먼저, 암호문을 수신한다(400). 암호문(c)을 복호화하기 위해서는 전술한 바와 같이 사용자 비밀키(skid)를 보유하고 있어야 한다. 이러한 사용자 비밀키는 미리 생성하여 저장해놓을 수도 있으며, 암호문의 복호화 시점에 생성하여 이용할 수도 있다.
그리고 상술한 사용자 비밀키와 암호문을 이용하여 소정의 값을 산출한다(410).
[수학식 12]
Figure 112020085447116-pat00065
여기서 L은 소정의 값, c0는 암호문의 첫번째 원소 값, skid는 사용자 비밀키이다. 그리고 < 벡터 1, 벡터 2>은 벡터 1과 벡터 2의 내적(inner product) 연산을 의미한다.
그리고 계산 결과 L의 각 계수가 [q/4, 3q/4]에 존재하는지를 판단한다(420).
판단 결과, 계산 결과 L의 각 계수가 [q/4, 3q/4]에 존재하면 "1"을 출력하고(430), 그렇지 않으면 0을 출력하고(440), 메시지를 복구할 수 있다(440). 여기서 1, 2 는 다항식의 계수를 의미한다.
도 7은 본 개시의 일 실시 예에 따른 연산 장치의 구성을 나타낸 블럭도이다.
구체적으로, 도 6의 시스템에서 사용자 단말기 등과 같이 암호화를 수행하는 장치, 키 생성 서버 등과 같이 암호문 생성에 필요한 키를 생성하는 장치 및 암호문을 이용하는 장치 등을 연산 장치라고 지칭할 수 있다. 이러한 연산 장치는 PC(Personal computer), 노트북, 스마트폰, 태블릿, 서버 등 다양한 장치일 수 있다.
도 7을 참조하면, 연산 장치(700)는 통신 장치(710), 메모리(720), 디스플레이(730), 조작 입력 장치(740) 및 프로세서(750)를 포함할 수 있다.
통신 장치(710)는 연산 장치(700)를 외부 장치(미도시)와 연결하기 위해 형성되고, 근거리 통신망(LAN: Local Area Network) 및 인터넷망을 통해 외부 장치에 접속되는 형태뿐만 아니라, USB(Universal Serial Bus) 포트 또는 무선 통신(예를 들어, WiFi 802.11a/b/g/n, NFC, Bluetooth) 포트를 통하여 접속되는 형태도 가능하다. 이러한 통신 장치(710)는 송수신부(transceiver)로 지칭될 수도 있다.
통신 장치(710)는 암호문 생성에 필요한 각종 키들을 수신할 수 있으며, 자체적으로 생성한 키를 외부 장치에 전송할 수 있다. 여기서 키는 마스터 공개키, 마스터 비밀키, 사용자 비밀키 등일 수 있다.
그리고 통신 장치(710)는 외부 장치로부터 메시지를 수신할 수 있으며, 생성한 암호문을 외부 장치로 송신할 수 있다.
또한, 통신 장치(710)는 키 또는 암호문 생성에 필요한 각종 파라미터를 외부 장치로부터 수신할 수 있다. 한편, 구현시에 각종 파라미터는 후술하는 조작 입력 장치(740)를 통하여 사용자로부터 직접 입력받을 수 있다.
또한, 통신 장치(710)는 암호문을 수신할 수도 있다.
메모리(720)는 연산 장치(700)를 구동하기 위한 O/S나 각종 소프트웨어, 데이터 등을 저장하기 위한 구성요소이다. 메모리(720)는 RAM이나 ROM, 플래시 메모리, HDD, 외장 메모리, 메모리 카드 등과 같은 다양한 형태로 구현될 수 있으며, 어느 하나로 한정되는 것은 아니다.
메모리(720)는 신원 정보를 저장할 수 있다. 여기서 신원 정보는 주민등록번호, 이메일 주소, 전화번호, 지문 정보, 홍채 정보 등일 수 있으며, 사용자 비밀키를 생성할때나 암호문 생성시에 이용될 수 있다.
그리고 메모리(720)는 암호화할 메시지를 저장할 수 있다. 여기서 메시지는 사용자가 각종 인용한 각종 신용 정보, 개인 정보 등일 수 있으며, 연산 장치(700)에서 사용되는 위치 정보, 인터넷 사용 시간 정보 등 사용 이력 등과 관련된 정보일 수도 있다.
그리고 메모리(720)는 마스터 공개키를 저장할 수 있으며, 연산 장치(700)가 직접 마스터 공개키를 생성한 장치인 경우, 마스터 비밀키뿐만 아니라, 마스터 공개키 및 마스터 비밀키 생성에 필요한 각종 파라미터 등을 저장할 수 있다.
그리고 메모리(720)는 후술한 과정에서 생성된 암호문을 저장할 수 있다. 그리고 메모리(720)는 암호문의 생성 과정의 중간 데이터 등을 저장할 수 있다.
그리고 메모리(720)는 외부 장치에서 전송한 암호문을 저장할 수도 있다. 또한, 메모리(720)는 암호문에 대한 복호 결과인 메시지를 저장할 수 있다.
디스플레이(730)는 연산 장치(700)가 지원하는 기능을 선택받기 위한 사용자 인터페이스 창을 표시할 수 있다. 예를 들어, 디스플레이(730)는 연산 장치(700)가 제공하는 각종 기능을 선택받기 위한 사용자 인터페이스 창을 표시할 수 있다. 이러한 디스플레이(730)는 LCD(liquid crystal display), OLED(Organic Light Emitting Diodes) 등과 같은 모니터일 수 있으며, 후술할 조작 입력 장치(740)의 기능을 동시에 수행할 수 있는 터치 스크린으로 구현될 수도 있다.
디스플레이(730)는 마스터 비밀키 및 마스터 공개키 생성에 필요한 파라미터의 입력을 요청하는 메시지를 표시할 수 있다. 그리고 디스플레이(730)는 암호화 대상이 메시지를 선택을 요청하는 UI(User Interface)를 표시할 수 있다. 예를 들어, 래티스 기반 신원 기반 암호화에 이용할 신원 정보를 사용자로부터 선택받기 위한 UI를 표시할 수 있다.
한편, 구현시에 암호화 대상은 사용자가 직접 선택할 수도 있고, 자동으로 선택될 수 있다. 즉, 암호화가 필요한 개인 정보 등은 사용자가 직접 메시지를 선택하지 않더라도 자동으로 설정될 수 있다.
조작 입력 장치(740)는 사용자로부터 연산 장치(700)의 기능 선택 및 해당 기능에 대한 제어 명령을 입력받을 수 있다. 예를 들어, 조작 입력 장치(740)는 사용자로부터 마스터 비밀키 및 마스터 공개키 생성에 필요한 파라미터를 입력받을 수 있다. 또한, 조작 입력 장치(740)는 사용자로부터 암호화될 메시지를 설정받을 수 있다.
프로세서(750)는 연산 장치(700) 내의 각 구성을 제어한다. 이러한 프로세서(750)는 CPU(central processing unit), ASIC(application-specific integrated circuit)과 같은 단일 장치로 구성될 수 있으며, CPU, GPU(Graphics Processing Unit) 등의 복수의 장치로 구성될 수도 있다.
프로세서(750)는 전송하고자 하는 메시지가 입력되면 메모리(720)에 저장한다. 프로세서(750)는 메모리(720)에 저장된 각종 설정 값 및 프로그램을 이용하여, 메시지를 암호화할 수 있다. 이 경우, 공개키가 사용될 수 있다.
프로세서(750)는 암호화를 수행하는데 필요한 마스터 공개키를 자체적으로 생성하여 사용할 수도 있고, 외부 장치로부터 수신하여 사용할 수도 있다. 일 예로, 복호화를 수행하는 키 생성 서버(20)가 마스터 공개키를 다른 장치들에 배포할 수 있다.
자체적으로 마스터 공개키를 생성하는 경우, 프로세서(750)는 도 5를 만족하는 제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)을 생성하고, 제2 랜덤 행렬에 기초하여 마스터 공개키를 생성할 수 있다. 구체적인 키 생성 동작은 도 9와 관련하여 후술한다.
프로세서(750)는 마스터 공개키가 생성되면, 다른 장치들에 전송되도록 통신 장치(710)를 제어할 수 있다.
그리고 프로세서(750)는 메시지에 대한 암호문을 생성할 수 있다. 예를 들어, 프로세서(750)는 신원 정보를 입력받으면, 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성할 수 있다. 그리고 프로세서(750)는 작은 원소들을 랜덤하게 샘플링하고, 샘플링된 작은 원소들, 함수처리 출력 값, 마스터 공개 키를 이용하여 메시지에 대한 암호문을 생성할 수 있다. 보다 구체적인 프로세서(750)의 암호화 동작은 도 11을 참조하여 후술한다.
그리고 프로세서(750)는 암호문이 생성되면 메모리(720)에 저장하거나, 사용자 요청 또는 기 설정된 디폴트 명령에 따라 동형 암호문을 다른 장치에 전송하도록 통신 장치(710)를 제어할 수 있다.
그리고 프로세서(750)는 마스터 공개키 및 신원 정보에 기초하여 사용자 비밀키를 생성할 수 있다.
그리고 프로세서(750)는 암호문을 사용자 비밀키를 이용하여 복호할 수 있다. 복호 동작에 대해서는 도 12을 참조하여 후술한다.
이상과 같이 본 개시에 따른 연산 장치는 2의 거듭제곱과 2 이상의 정수 곱으로 표현되는 차원을 갖는 링을 이용하여 암호화 처리를 수행하는바, 보안성 증대를 위하여 차원을 2배로 증가할 필요 없이 2의 거듭제곱과 정수의 곱을 표현되는 차원을 이용하는 것이 가능한바 키 생성에 필요한 계산량이나 계산시간을 줄일 수 있다.
한편, 도 7을 도시하고 설명함에 있어서, 하나의 장치에서 암호화 동작 및 복호화 동작 모두를 수행하는 것으로 도시하고 설명하였지만, 구현시에 하나의 장치에서 하나의 동작 예를 들어, 키 생성 동작, 암호화 동작, 복호화 동작 중 하나만을 수행할 수도 있다.
도 8은 본 개시의 일 실시 예에 따른 암호화 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 먼저 신원 정보를 입력받을 수 있다(S810). 예를 들어, 주민등록번호, 이메일 주소, 전화번호, 지문 정보 또는 홍채 정보 등의 신원 정보를 입력받을 수 있다. 구현시에 이러한 신원 정보는 미리 저장되어 있을 수 있다.
작은 원소들을 랜덤하게 샘플링할 수 있다(S820). 예를 들어, 크기가 작은 원소
Figure 112020085447116-pat00066
를 샘플링할 수 있으며, 여기서 r은 a1 -1로 설정될 수 있다.
그리고 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성할 수 있다(S830). 여기서 함수 처리는 해시 처리일 수 있으며, 신원 정보를 해시 처리한 함수 처리 출력 값(t)를 출력할 수 있다.
그리고 샘플링된 작은 원소들, 상기 함수처리 출력 값 및 마스터 공개키를 이용하여 메시지에 대한 암호문을 생성할 수 있다(S840). 여기서 마스터 공개키는 2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 키이며, 암호문은 수학식 11과 같은 방식으로 연산될 수 있다.
이상과 같은 암호화 방법은 보안성 증대를 위하여 차원을 2배로 증가할 필요 없이 2의 거듭제곱과 정수의 곱을 표현되는 차원을 이용하는 것이 가능한바 키 생성에 필요한 계산량이나 계산시간을 줄일 수 있다.
한편, 상술한 다양한 실시 예에 따른 암호화 방법은 각 단계들을 수행하기 위한 프로그램 코드 형태로 구현되어, 기록 매체에 저장되고 배포될 수도 있다. 이 경우, 기록 매체가 탑재된 장치는 상술한 암호화 방법 등의 동작들을 수행할 수 있다.
이러한 기록 매체는, ROM, RAM, 메모리 칩, 메모리 카드, 외장형 하드, 하드, CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 다양한 유형의 컴퓨터 판독 가능 매체가 될 수 있다.
도 9는 본 개시의 일 실시 예에 따른 키 생성 알고리즘을 설명하기 위한 도면이다.
도 9를 참조하면, 3개의 파라미터(n, q, d)를 입력받을 수 있다. 여기서 n은 차원을 구성하는 2의 거듭제곱의 제곱 값이고, d는 정수이다. 따라서, 해당 파라미터에 의해 생성되는 링의 차원은 2n*d일 수 있다. 그리고, q는 소수값이다.
그리고 입력된 파라미터 및 도시된 바와 같은 알고리즘을 이용하여 트랩 도어(T)를 산출할 수 있다. 예를 들어, 링에서 상호 선형 독립인 원소들(
Figure 112020085447116-pat00067
)을 샘플링하여, 열의 개수가 상기 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬(S)을 산출하고, 열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출할 수 있다.
이때, 제2 랜덤 행렬(A)은, 행렬
Figure 112020085447116-pat00068
에서 i번째 행을 제외한 d×d 행렬(Mi)을 산출하고,
Figure 112020085447116-pat00069
를 행렬식(ai)으로 설정하여
Figure 112020085447116-pat00070
를 산출할 수 있다.
그리고,
Figure 112020085447116-pat00071
관계를 만족하는 벡터(
Figure 112020085447116-pat00072
)를 샘플링하고,
Figure 112020085447116-pat00073
를 트랩 도어(T)로 산출할 수 있다. 이때, 벡터(
Figure 112020085447116-pat00074
)를 샘플링 시에 원소들(
Figure 112020085447116-pat00075
)을 이용하여 상기 벡터의 원소들을 축소한 후에 결과 값 벡터를 출력할 수 있다. 예를 들어, 확장 유클리드 알고리즘(Extended Euclidean Algorithm)을 이용하여 벡터의 원소들(
Figure 112020085447116-pat00076
)에서 상기 원소들(
Figure 112020085447116-pat00077
)의 상수배를 빼어서 원소 방향 성분을 제거하여 축소할 수 있다.
트랩 도어가 산출되면, 트랩 도어(T)를 마스터 비밀키(MSK)로 설정하고, 제 랜덤 행렬 산출시 이용된 h 값(
Figure 112020085447116-pat00078
)을 마스터 공개키(MPK)로 설정할 수 있다.
이하에서는 이와 같은 과정을 통하여 생성한 마스터 비밀키와 마스터 공개키를 이용하여 사용자 개인키를 만드는 동작에 대해서 도 10을 참조하여 이하에서 설명한다.
도 10은 본 개시의 일 실시 예에 따른 추출(extract) 알고리즘을 설명하기 위한 도면이다.
도 10을 참조하면, 사용자 정보(id), 마스터 비밀키(T), 마스터 공개키(h), 처리함수(예를 들어, 해시 함수 H)를 입력받을 수 있다.
예를 들어, 입력된 사용자 정보가 기존에 사용된 것과 동일하면 기존 사용자 정보에 대응되는 기생성한 사용자 비밀키를 출력할 수 있다.
만약, 입력된 사용자 정보가 기존과 다르면, 사용자 정보를 함수 처리 출력하고, 함수 처리 출력된 사용자 정보를 이용하여 t값을 산출할 수 있다.
그리고 도시된 바와 같이 표준 편차(σ) 선택되고, GaussianSampler에 의하여 c를 산출하고, 제2 랜덤 행렬과의 곱이 해시 값이 되는 크기가 작은 해(s=(s0, s1, …, sd-1)를 산출하고, 산출된 작은 해 중 s0을 제외한 나머지 해(s1, …, sd-1)를 사용자 비밀키로 출력할 수 있다.
도 11은 본 개시의 일 실시 예에 따른 암호화(encrypt) 알고리즘을 설명하기 위한 도면이다.
도 11을 참조하면, 사용자 정보(id), 메시지(μ), 마스터 공개키(h), 처리함수(예를 들어, 해시 함수 H)를 입력받을 수 있다.
먼저, 크기가 작은 원소를 샘플링하여 r, ei 다항식을 샘플링할 수 있다.
그리고 일회용 키(ephemeral key)(k)를 산출할 수 있고, 사용자 정보를 처리함수에 넣어 함수 처리 값(t)를 산출할 수 있다.
그러한 과정을 걸쳐 에러 값을 갖는 다항식의 계수를 산출할 수 있고, 상술한 값을 이용하여 메시지에 대한 암호문(C=(c, c'))을 생성할 수 있다.
도 12는 본 개시의 일 실시 예에 따른 복호화(Decrypt) 알고리즘을 설명하기 위한 도면이다.
도 12를 참조하면, 암호문(C), 사용자 비밀키(skid), 처리함수(예를 들어, 해시 함수)를 입력받을 수 있다.
먼저, 사용자 비밀키를 이용하여 원소 값들(s')을 산출하고, 암호문과 산출된 원소 값을 이용하여 w 값을 산출할 수 있다. w 값의 연산은 아래와 같은 수학식 13와 같을 수 있다.
[수학식 13]
Figure 112020085447116-pat00079
여기서, c는 암호문, skid는 사용자 비밀키이다.
w 값이 산출되면, 임시 키(k)를 산출하고, 임시키를 함수 처리한 것과 암호문을 이용하여 메시지를 복호할 수 있다.
이상 첨부 도면을 참고하여 본 개시에 대해서 설명하였지만 본 개시의 권리범위는 후술하는 특허청구범위에 의해 결정되며 전술한 실시 예 및/또는 도면에 제한되는 것으로 해석되어서는 안 된다. 그리고 특허청구범위에 기재된 개시의, 당업자에게 자명한 개량, 변경 및 수정도 본 개시의 권리범위에 포함된다는 점이 명백하게 이해되어야 한다.
10: 사용자 단말기 20: 키 생성 서버
30: 통신망 700: 연산 장치
710: 통신 장치 720: 메모리
730: 디스플레이 740: 조작 입력 장치
750: 프로세서

Claims (15)

  1. 래티스 및 신원 기반 암호화 방법에 있어서,
    신원 정보를 입력받는 단계;
    작은 원소들을 랜덤하게 샘플링하는 단계;
    상기 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하는 단계; 및
    상기 샘플링된 작은 원소들, 상기 함수처리 출력 값 및 마스터 공개키를 이용하여 메시지에 대한 암호문을 생성하는 단계;를 포함하고,
    상기 마스터 공개키는,
    2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 암호화 방법.
  2. 제1항에 있어서,
    상기 래티스 및 신원 기반 암호화 방법에 사용되는 트랩 도어(T)를 산출하는 단계; 및
    상기 산출된 트랩 도어(T)를 마스터 비밀키로 설정하는 단계;를 더 포함하는 암호화 방법.
  3. 제2항에 있어서,
    상기 링에서 상호 선형 독립인 원소들(
    Figure 112020085447116-pat00080
    )을 샘플링하여, 열의 개수가 상기 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬(S)을 산출하는 단계; 및
    열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출하는 단계; 및
    상기 제2 랜덤 행렬(A)에 기초하여 상기 마스터 공개키를 산출하는 단계;를 더 포함하는 암호화 방법.
  4. 제3항에 있어서,
    상기 제2 랜덤 행렬을 산출하는 단계는,
    행렬
    Figure 112020085447116-pat00081
    에서 i번째 행을 제외한 d×d 행렬(Mi)을 산출하고,
    Figure 112020085447116-pat00082
    를 행렬식(ai)으로 설정하고,
    Figure 112020085447116-pat00083
    를 제2 랜덤 행렬로 산출하는 암호화 방법.
  5. 제4항에 있어서,
    상기 트랩 도어(T)를 산출하는 단계는,
    Figure 112020085447116-pat00084
    관계를 만족하는 벡터(
    Figure 112020085447116-pat00085
    )를 샘플링하는 단계를 포함하고,
    Figure 112020085447116-pat00086
    를 트랩 도어(T)로 산출하는 암호화 방법.
  6. 제5항에 있어서,
    상기 벡터(
    Figure 112020085447116-pat00087
    )를 샘플링하는 단계는,
    상기 원소들(
    Figure 112020085447116-pat00088
    )을 이용하여 상기 벡터의 원소들을 축소시킨 후에 결과 값 벡터를 출력하는 암호화 방법.
  7. 제6항에 있어서,
    상기 벡터(
    Figure 112022501413518-pat00089
    )를 샘플링하는 단계는,
    상기 벡터의 원소들(
    Figure 112022501413518-pat00090
    )에서 원소들(
    Figure 112022501413518-pat00091
    )의 상수배를 빼어서 원소 방향 성분을 제거하여 축소시키는 암호화 방법.
  8. 제6항에 있어서,
    상기 벡터(
    Figure 112020085447116-pat00092
    )를 샘플링하는 단계는,
    확장 유클리드 알고리즘(Extended Euclidean Algorithm)을 이용하여 상기 벡터의 원소들을 축소하는 암호화 방법.
  9. 제3항에 있어서,
    상기 함수처리 출력 값에 대해서 상기 제2 랜덤 행렬(A)과의 곱이 해시 값이 되는 크기가 작은 해를 산출하는 단계; 및
    상기 산출된 작은 해를 이용하여 사용자 비밀키를 설정하는 단계;를 더 포함하는 암호화 방법.
  10. 제9항에 있어서,
    상기 사용자 비밀키를 이용하여, 상기 암호문에서 메시지를 복호하는 단계;를 더 포함하는 암호화 방법.
  11. 제1항에 있어서,
    상기 신원 정보는,
    주민등록번호, 이메일 주소, 전화번호, 지문 정보 또는 홍채 정보 적어도 하나인 암호화 방법.
  12. 연산 장치에 있어서,
    적어도 하나의 인스트럭션(instruction) 및 신원 정보를 저장하는 메모리; 및
    상기 적어도 하나의 인스트럭션을 실행하는 프로세서;를 포함하고,
    상기 프로세서는,
    작은 원소들을 랜덤하게 샘플링하고,
    상기 저장된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하고,
    2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 마스터 공개키, 상기 샘플링된 작은 원소들 및 상기 함수처리 출력 값을 이용하여 메시지에 대한 암호문을 생성하는 연산 장치.
  13. 제12항에 있어서,
    상기 프로세서는,
    상기 링에서 상호 선형 독립인 원소들(
    Figure 112022012332582-pat00093
    )을 샘플링하여, 열의 개수가 상기 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬(S)을 산출하고,
    열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출하고,
    상기 제2 랜덤 행렬(A)에 기초하여 상기 마스터 공개키를 산출하고,
    래티스 및 신원 기반 암호화 방법에 사용되는 트랩 도어(T)를 산출하고, 상기 산출된 트랩 도어(T)를 마스터 비밀키로 설정하는 연산 장치.
  14. 제13항에 있어서,
    상기 프로세서는,
    기설정된 관계를 만족하는 벡터를 샘플링하되, 상기 벡터의 원소들을 축소한 결과값 벡터로 트랩 도어를 산출하는 연산 장치.
  15. 래티스 및 신원 기반 암호화 방법을 실행하기 위한 프로그램을 포함하는 컴퓨터 판독가능 기록매체에 있어서,
    상기 암호화 방법은,
    신원 정보를 입력받는 단계;
    작은 원소들을 랜덤하게 샘플링하는 단계;
    상기 입력된 신원 정보를 함수 처리하여 함수처리 출력 값을 생성하는 단계; 및
    상기 샘플링된 작은 원소들, 상기 함수처리 출력 값 및 마스터 공개키를 이용하여 메시지에 대한 암호문을 생성하는 단계;를 포함하고,
    상기 마스터 공개키는,
    2의 거듭제곱과 3 이상의 정수 곱으로 표현되는 차원(d)을 갖는 링을 이용하여 산출된 컴퓨터 판독가능 기록매체.
KR1020200101937A 2019-11-28 2020-08-13 래티스를 기반으로 하는 신원 기반 암호화 방법 KR102418016B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP20851405.9A EP3854024B1 (en) 2019-11-28 2020-11-20 Identity-based encryption method based on lattices
PCT/KR2020/016488 WO2021107515A1 (en) 2019-11-28 2020-11-20 Identity-based encryption method based on lattices
US17/269,239 US20220021535A1 (en) 2019-11-28 2020-11-20 Identity-based encryption method based on lattices
US18/590,797 US20240205007A1 (en) 2019-11-28 2024-02-28 Identity-based encryption method based on lattices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190155732 2019-11-28
KR1020190155732 2019-11-28

Publications (2)

Publication Number Publication Date
KR20210066695A KR20210066695A (ko) 2021-06-07
KR102418016B1 true KR102418016B1 (ko) 2022-07-07

Family

ID=76374475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200101937A KR102418016B1 (ko) 2019-11-28 2020-08-13 래티스를 기반으로 하는 신원 기반 암호화 방법

Country Status (3)

Country Link
US (1) US20220021535A1 (ko)
EP (1) EP3854024B1 (ko)
KR (1) KR102418016B1 (ko)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI502947B (zh) * 2012-04-12 2015-10-01 Jintai Ding New cryptographic system and method based on mismatching
KR101621388B1 (ko) * 2014-01-03 2016-05-17 고려대학교 산학협력단 래티스에서의 아이디 기반 브로드캐스트 방법
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
US10742413B2 (en) * 2017-04-25 2020-08-11 International Business Machines Corporation Flexible verifiable encryption from lattices
US10924287B2 (en) * 2017-06-23 2021-02-16 Onboard Security, Inc. Digital signature technique
EP3921974A4 (en) * 2019-02-08 2022-04-06 Visa International Service Association MORE EFFICIENT POST QUANTUM SIGNATURES
US11522718B2 (en) * 2019-11-28 2022-12-06 Crypto Lab Inc. Methods of generating encryption key and digital signature based on lattices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Leo Ducas 외 2명, Efficient Identity-Based Encryption over LTRU Lattices, ASIACRYPT 2014, PART II, LNCS 8874 (2014.)*

Also Published As

Publication number Publication date
KR20210066695A (ko) 2021-06-07
US20220021535A1 (en) 2022-01-20
EP3854024A4 (en) 2022-05-18
EP3854024B1 (en) 2024-05-01
EP3854024A1 (en) 2021-07-28

Similar Documents

Publication Publication Date Title
US11101976B2 (en) Terminal device performing homomorphic encryption, server device processing ciphertext and methods thereof
CN110419194B (zh) 密钥交换设备和方法
US11323255B2 (en) Methods and systems for encryption and homomorphic encryption systems using Geometric Algebra and Hensel codes
KR102339833B1 (ko) 다변수 패킹을 이용하는 연산 장치 및 방법
KR102349855B1 (ko) 공간 복잡도를 고려한 동형 암호화 또는 복호화 방법
US20200266974A1 (en) Apparatus for performing threshold design on secret key and method thereof
JP7183242B2 (ja) 格子ベースの暗号鍵生成方法及び電子署名方法
US20200169384A1 (en) Calculation device for encryption using public key and encryption method thereof
US11799628B2 (en) Apparatus and method for processing non-polynomial operation on encrypted messages
US20240205007A1 (en) Identity-based encryption method based on lattices
KR102443255B1 (ko) 래티스를 기반으로 하는 암호키 생성 방법 및 전자서명 방법
KR20220079522A (ko) 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들
KR102418016B1 (ko) 래티스를 기반으로 하는 신원 기반 암호화 방법
US11757618B2 (en) Apparatus for processing non-polynomial operation on homomorphic encrypted messages and methods thereof
KR102160294B1 (ko) 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
KR20230003954A (ko) 영지식 증명을 위한 암호문 처리 방법 및 장치
KR102393941B1 (ko) 근사 암호화된 암호문에 대한 인코딩 또는 디코딩
KR20230049052A (ko) 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치
KR102257779B1 (ko) 다자간 계산을 위한 유사 보간
US20240163076A1 (en) Apparatus for calculating matrix multiplication of homomorphic encryption and method thereof
KR20180046720A (ko) 키 생성 방법 및 장치, 암호화 장치 및 방법
KR20240102803A (ko) 동형 암호문의 선형변환 장치 및 방법
KR20240108784A (ko) 동형 암호문 처리 방법 및 전자 장치
KR20240070324A (ko) 암호문을 처리하는 장치 및 방법
Mohamed et al. Cloud Computing Security Framework based on Elliptical Curve

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right