KR20230049052A - 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치 - Google Patents

격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치 Download PDF

Info

Publication number
KR20230049052A
KR20230049052A KR1020220127407A KR20220127407A KR20230049052A KR 20230049052 A KR20230049052 A KR 20230049052A KR 1020220127407 A KR1020220127407 A KR 1020220127407A KR 20220127407 A KR20220127407 A KR 20220127407A KR 20230049052 A KR20230049052 A KR 20230049052A
Authority
KR
South Korea
Prior art keywords
random matrix
random
element values
generated
generating
Prior art date
Application number
KR1020220127407A
Other languages
English (en)
Inventor
신준범
홍동연
성효은
Original Assignee
주식회사 크립토랩
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 크립토랩 filed Critical 주식회사 크립토랩
Publication of KR20230049052A publication Critical patent/KR20230049052A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

암호화 방법이 개시된다. 본 암호화 방법은 링(ring)에서 상호 선형 독립인 원소를 샘플링하여, 열의 개수가 링의 차원보다 1 작고, 행의 개수는 차원 수인 제1 랜덤 행렬을 산출하는 단계, 열의 개수가 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬을 산출하는 단계, 제2 랜덤 행렬에 기초하여 트랩 도어를 산출하는 단계, 및 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 저장하는 단계를 포함한다.

Description

격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치{METHOD FOR GENERATING SECRET KEY OF LATTICE ELECTRONIC SIGNATURE AND APPARATUS THEREOF}
본 개시는 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치에 관한 것으로, 보다 구체적으로 작은 저장 공간을 갖는 장치에서도 격자전자서명의 비밀 키 저장이 가능한 비밀 키 생성 방법 및 이를 이용한 장치에 관한 것이다.
전자적 메시지(데이터)를 전송하고 수신하는 과정에서 중간에 메시지를 제3자가 탈취하더라도 내용을 알 수 없도록 암호화하는 방법이 널리 알려져있다. 암호화 방식은 크게 대칭키 암호화 방식과 비대칭키 암호화 방식으로 나뉜다.
대칭키 암호화 방식은 암호화하는 키와 복호화하는 키가 동일한 방식이며, 비대칭키 암호화 방식은 암호화하는 키와 복호화하는 키가 다른 방식이다. 비대칭키암호화 방식에서는 통상 수신자의 공개키로 메시지를 암호화하고, 수신자는 수신자의 비밀키로 암호화된 메시지를 복호화한다.
비대칭키 암호화 방식에서는, 메시지의 무결성을 증명하기 위해 메시지에 대해서 전자서명을 수행하는데, 전자서명은 통상 메시지를 해쉬한 값(무결성 확인 값)을 발신자의 비밀키로 암호화함으로써 수행된었다.
암호화된 메시지와 전자서명 정보를 수신한 수신자는, 수신자의 비밀키로 복호화를 수행해서 메시지를 획득하고, 전자서명 정보를 발신자의 공개키로 복호화하여 메시지 무결성 확인 값을 획득하였다. 수신자는 획득한 메시지에 대해서 해쉬를 해서 산출된 출력값이 무결성 확인 결과와 동일한지를 판단함으로써 해당 메시지가 위변조되지 않았는지 여부를 확인할 수 있다.
종래에는 RSA 방식이나 Elgamal 방식 등이 비대칭 암호화 키 생성에 많이 사용되고 있는데, 양자 컴퓨팅 기술의 발전으로 종래 암호 방식은 쉽게 무력화될 가능성이 높아지고 있다.
이에 따라 최근에는 PQC(Post Quantum Cryptography) 전자 서명 알고리즘이 제안되고 있다. 그러나 이러한 PQC 전자 서명 알고리즘의 경우, 고전적인 전자 서명 알고리즘 대비 개인 키 크기가 크다는 단점이 있었다.
본 개시는 이상과 같은 문제점을 해결하기 위하여 고안된 것으로, 작은 저장 공간을 갖는 장치에서도 격자전자서명의 비밀 키 저장이 가능한 비밀 키 생성 방법 및 이를 이용한 장치를 제공하는 데 있다.
이상과 같은 목적을 달성하기 위하여, 본 개시의 일 실시 예에 따른 암호화 방법은 링(ring)에서 상호 선형 독립인 원소를 샘플링하여, 열의 개수가 상기 링의 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬을 산출하는 단계, 열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬을 산출하는 단계, 상기 제2 랜덤 행렬에 기초하여 트랩 도어를 산출하는 단계, 및 상기 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 저장하는 단계를 포함한다.
이 경우, 상기 제1 랜덤 행렬을 산출하는 단계는, 랜덤 씨드를 생성하는 단계, 상기 생성된 랜덤 씨드를 이용하여 상기 제1 랜덤 행렬의 원소 개수 이상의 원소 값을 생성하는 단계, 상기 생성된 원소 값을 이용하여 상기 제1 랜덤행렬을 산출하는 단계, 및 상기 생성된 원소 값 중 상기 제1 랜덤행렬에 반영 여부에 기초하여 벡터 정보를 생성하는 단계를 포함할 수 있다.
이 경우, 상기 제1 랜덤 행렬을 산출하는 단계는, 상기 생성된 원소 값들이 기설정된 분포를 갖는지 검사하는 단계, 및 상기 생성된 원소 값들이 기설정된 분포를 갖지 않으면, 상기 랜덤 씨드를 생성하는 단계, 상기 원소 값을 생성하는 단계를 반복하는 단계를 더 포함할 수 있다.
한편, 상기 원소 값을 생성하는 단계는, 상기 제1 랜덤 행렬의 행 개수 및 상기 제1 랜덤 행렬의 열 개수의 곱한 값에 기설정된 수를 더한 개수만큼의 원소 값을 생성할 수 있다.
한편, 상기 벡터 정보를 생성하는 단계는, 상기 생성된 원소 값 각각의 상기 제1 랜덤 행렬의 반영 여부를 벡터 값으로 갖는 벡터 정보를 생성할 수 있다.
한편, 상기 벡터 정보를 생성하는 단계는, 상기 생성된 원소 값 중 상기 제1 랜덤 행렬에 반영된 원소 번호 또는 상기 제1 랜덤 행렬에 반영되지 않는 원소 번호에 대한 정보를 갖는 벡터 정보를 생성할 수 있다.
한편, 본 암호화 방법은 상기 트랩 도어를 이용하여 메시지에 대한 암호문을 생성하는 단계를 더 포함할 수 있다.
한편, 본 암호화 방법은 상기 저장된 랜덤 씨드 및 벡터 정보를 이용하여 상기 제1 랜덤 행렬을 복원하는 단계, 및 상기 복원된 제1 랜덤 행렬을 이용하여 암호문을 메시지로 복호하는 단계를 더 포함할 수 있다.
한편, 상기 복원하는 단계는, 상기 저장된 랜덤 씨드를 이용하여 기설정된 개수의 원소 값을 생성하는 단계, 상기 벡터 정보를 이용하여 상기 생성된 기설정된 개수의 원소 값 중 랜덤 행렬에 이용할 원소 값을 선택하여 상기 제1 랜덤 행렬을 복원하는 단계를 포함할 수 있다.
한편, 본 개시의 일 실시 예에 따른 전자 장치는 적어도 하나의 인스트럭션(instruction)을 저장하는 메모리, 및 상기 적어도 하나의 인스트럭션을 실행하는 프로세서를 포함하고, 상기 프로세서는 링(ring)에서 상호 선형 독립인 원소를 샘플링하여, 열의 개수가 상기 링의 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬을 산출하고, 열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬을 산출하고, 상기 제2 랜덤 행렬에 기초하여 트랩 도어를 산출하고, 상기 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 상기 메모리에 저장한다.
이 경우, 상기 프로세서는 랜덤 씨드를 생성하고, 상기 생성된 랜덤 씨드를 이용하여 상기 제1 랜덤 행렬의 원소 개수 이상의 원소 값을 생성하고, 상기 생성된 원소 값을 이용하여 상기 제1 랜덤행렬을 산출하고, 상기 생성된 원소 값 중 상기 제1 랜덤행렬에 반영 여부에 기초하여 벡터 정보를 생성할 수 있다.
이 경우, 상기 프로세서는, 상기 생성된 원소 값들이 기설정된 분포를 갖는지 검사하고, 상기 생성된 원소 값들이 기설정된 분포를 갖지 않으면, 상기 랜덤 씨드의 생성 및 상기 원소 값의 생성을 반복 수행할 수 있다.
한편, 상기 프로세서는 상기 제1 랜덤 행렬의 행 개수 및 상기 제1 랜덤 행렬의 열 개수의 곱한 값에 기설정된 수를 더한 개수만큼의 원소 값을 생성할 수 있다.
한편, 상기 프로세서는, 상기 생성된 원소 값 각각의 상기 제1 랜덤 행렬의 반영 여부를 벡터 값으로 갖는 벡터 정보를 생성할 수 있다.
한편, 상기 프로세서는, 상기 생성된 원소 값 중 상기 제1 랜덤 행렬에 반영된 원소 번호 또는 상기 제1 랜덤 행렬에 반영되지 않는 원소 번호에 대한 정보를 갖는 벡터 정보를 생성할 수 있다.
한편, 상기 프로세서는, 상기 트랩 도어를 이용하여 메시지에 대한 암호문을 생성할 수 있다.
한편, 상기 프로세서는 상기 저장된 랜덤 씨드 및 벡터 정보를 이용하여 상기 제1 랜덤 행렬을 복원하고, 상기 복원된 제1 랜덤 행렬을 이용하여 암호문을 메시지로 복호할 수 있다.
이 경우, 상기 프로세서는 상기 저장된 랜덤 씨드를 이용하여 기설정된 개수의 원소 값을 생성하고, 상기 벡터 정보를 이용하여 상기 생성된 기설정된 개수의 원소 값 중 랜덤 행렬에 이용할 원소 값을 선택하여 상기 제1 랜덤 행렬을 복원할 수 있다.
이상과 같은 본 개시의 다양한 실시 예들에 따르면, 격자전자서명의 비밀 키를 그대로 저장하는 것이 아니라, 비밀 키 생성 과정에서 이용한 랜덤 씨드와 벡터 정보만을 저장하기 때문에 상대적으로 작은 정보만으로 비밀 키 정보를 저장할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 네트워크 시스템의 구조를 설명하기 위한 도면,
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타낸 블럭도,
도 3은 본 개시의 랜덤 행렬을 구조를 도시한 도면,
도 4는 본 개시의 일 실시 예에 따른 키 생성 동작을 설명하기 위한 흐름도,
도 5는 도 3의 제1 랜덤 행렬의 생성 동작을 설명하기 위한 흐름도,
도 6는 본 개시의 일 실시 예에 따른 키 생성 알고리즘은 설명하기 위한 도면이다.
이하에서는 첨부 도면을 참조하여 본 개시에 대해서 자세하게 설명한다. 본 개시에서 수행되는 정보(데이터) 전송 과정은 필요에 따라서 암호화/복호화가 적용될 수 있으며, 본 개시 및 특허청구범위에서 정보(데이터) 전송 과정을 설명하는 표현은 별도로 언급되지 않더라도 모두 암호화/복호화하는 경우도 포함하는 것으로 해석되어야 한다. 본 개시에서 "A로부터 B로 전송(전달)" 또는 "A가 B로부터 수신"과 같은 형태의 표현은 중간에 다른 매개체가 포함되어 전송(전달) 또는 수신되는 것도 포함하며, 반드시 A로부터 B까지 직접 전송(전달) 또는 수신되는 것만을 표현하는 것은 아니다.
본 개시의 설명에 있어서 각 단계의 순서는 선행 단계가 논리적 및 시간적으로 반드시 후행 단계에 앞서서 수행되어야 하는 경우가 아니라면 각 단계의 순서는 비제한적으로 이해되어야 한다. 즉, 위와 같은 예외적인 경우를 제외하고는 후행 단계로 설명된 과정이 선행단계로 설명된 과정보다 앞서서 수행되더라도 개시의 본질에는 영향이 없으며 권리범위 역시 단계의 순서에 관계없이 정의되어야 한다. 그리고 본 명세서에서 "A 또는 B"라고 기재한 것은 A와 B 중 어느 하나를 선택적으로 가리키는 것뿐만 아니라 A와 B 모두를 포함하는 것도 의미하는 것으로 정의된다. 또한, 본 개시에서 "포함"이라는 용어는 포함하는 것으로 나열된 요소 이외에 추가로 다른 구성요소를 더 포함하는 것도 포괄하는 의미를 가진다.
본 개시에서는 본 개시의 설명에 필요한 필수적인 구성요소만을 설명하며, 본 개시의 본질과 관계가 없는 구성요소는 언급하지 아니한다. 그리고 언급되는 구성요소만을 포함하는 배타적인 의미로 해석되어서는 안 되며 다른 구성요소도 포함할 수 있는 비배타적인 의미로 해석되어야 한다.
그리고 본 개시에서 "값"이라 함은 스칼라값뿐만 아니라 벡터도 포함하는 개념으로 정의된다. 그리고 본 개시에서 '산출한다', '계산한다' 등의 표현은 해당 산출 또는 계산의 결과물을 생성한다는 표현으로 대체될 수 있다.
후술하는 본 개시의 각 단계의 수학적 연산 및 산출은 해당 연산 또는 산출을 하기 위해 공지되어 있는 코딩 방법 및/또는 본 개시에 적합하게 고안된 코딩에 의해서 컴퓨터 연산으로 구현될 수 있다.
이하에서 설명하는 구체적인 수학식은 가능한 여러 대안 중에서 예시적으로 설명되는 것이며, 본 개시의 권리 범위가 본 개시에 언급된 수학식에 제한되는 것으로 해석되어서는 아니된다.
설명의 편의를 위해서, 본 개시에서는 다음과 같이 표기를 정하기로 한다.
a ← D : 분포(D)에 따라서 원소(a)를 선택함
s1, s2 ∈ R : S1, S2 : S1, S2 각각은 R 집합에 속하는 원소이다.
mod(q) : q 원소로 모듈(modular) 연산
Figure pat00001
: 내부 값을 반올림함
이하에서는 첨부된 도면을 이용하여 본 개시의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 개시의 일 실시 예에 따른 네트워크 시스템의 구조를 설명하기 위한 도면이다.
도 1을 참조하면, 격자 전자 서명에 필요한 마스터 비밀키, 마스터 공개키, 그리고 비밀 키(또는 개인 키)는 키 생성 서버(20)에 의해서 생성될 수 있다.
네트워크 시스템은 사용자 단말기 및 키 생성 서버(20)를 포함할 수 있으며, 각 구성들은 데이터 통신망(30)를 통해 서로 연결될 수 있다.
데이터 통신망(30)은 다양한 형태의 유무선 통신 네트워크, 방송 통신 네트워크, 광통신 네트워크, 클라우드 네트워크 등으로 구현될 수 있으며, 각 장치들은 별도의 매개체 없이 와이파이, 블루투스, NFC(Near Field Communication) 등과 같은 방식으로 연결될 수도 있다.
도 1에서는 사용자 단말기가 하나인 것으로 도시하였으나, 복수개가 이용될 수 있다. 일 예로, 사용자 단말기(10)는 스마트폰, 태블릿, 게임 플레이어, PC, 랩톱 PC, 홈서버, 키오스크 등과 같은 다양한 형태의 장치로 구현될 수 있으며, 이밖에 IoT 기능이 적용된 가전 제품 형태로도 구현될 수 있다.
사용자는 자신이 사용하는 사용자 단말기(10)를 통해서 다양한 정보를 입력할 수 있다. 입력된 정보는 사용자 단말기(10) 자체에 저장될 수도 있지만, 저장 용량 및 보안 등을 이유로 외부 장치로 전송되어 저장될 수도 있다. 도 1에서 키 생성 서버(20)는 이러한 정보들을 저장하는 역할을 수행하고, 키 생성 서버(20)는 키 생성 서버(20)에 저장된 정보의 일부 또는 전부를 이용하는 역할을 수행할 수 있다.
사용자 단말기(10)는 키 생성 서버(20)로부터 암호화에 필요한 키 정보를 수신하고, 수신된 키 정보를 이용하여 메시지를 암호화할 수 있다. 예를 들어, 사용자 단말기(10)는 키 생성 서버(20)로부터 마스터 공개키를 수신할 수 있으며, 수신된 마스터 공개키를 이용하여 메시지를 암호화하여 암호문을 생성할 수 있다. 이때, 사용자 단말기(10)는 암호화에 필요한 작은 원소들, 함수처리 출력값도 수신하여 이용할 수도 있으며 자체적으로 생성하여 이용할 수도 있다.
그리고 사용자 단말기(10)는 암호문을 키 생성 서버(20)로 전송할 수 있다. 그리고 사용자 단말기(10)는 암호문에 대한 복호화를 수행할 수 있다. 예를 들어, 사용자 단말기(10)는 비밀키를 생성하고, 생성된 사용자 비밀키를 이용하여 암호문에 대한 복호화를 수행할 수 있다. 한편, 복호화 동작은 키 생성 서버(20) 측에서 수행할 수도 있다. 구체적인 암호화 및 복호화 동작은 후술한다.
이와 같이 사용자 단말기(10)가 암호문에 대한 복호화를 수행하기 위해서는 비밀 키를 저장하고 있어야 한다. 그러나 PQC 전자서명 알고리즘의 경우, 고전적인 전자서명 알고리즘 대비 개인 키가 크다. 예를 들어, 고전적 전자서명 알고리즘 중 하나인 RSA는 개인 키의 크기가 512Byte인데 반해, PQC 전자서명 알고리즘 중 하나인 SIGNUM은 개인 키의 크기가 9KB이다.
특히, 개인 키는 안전한 공간에 저장되어야 하나. 일부 PUF(Physically Unclonable Functions) 기기의 경우, 저장 공간이 4KB 정도여서, 개인 키를 저장할 수 없었다.
이러한 점에서, 본 개시에서는 개인 키를 그대로 저장하는 것이 아니라, 개인 키 생성 과정에서 이용되는 랜덤 씨드(대략 128byte)와 벡터 정보(대략 350byte)만을 저장하고, 개인 키의 이용이 필요한 과정에서 저장된 랜덤 씨드와 벡터 정보를 이용하여 개인 키를 복원하여 이용한다. 이와 같은 방법을 이용하는 경우, 기존의 고전적 전자 서명 알고리즘의 개인 키의 저장 크기만으로 개인 키 저장이 가능하다. 본 개시에 따른 개인 키 저장 방식에 대해서는 도 4 및 도 5에서 자세히 설명한다.
키 생성 서버(20)는 격자 전자 서명 방식에 이용되는 각종 키 값을 생성할 수 있다. 구체적으로 설명하면, 키 생성 서버(450)는 먼저 각종 파라미터 및 환(ring)을 설정하고, 설정된 파라미터와 링에 기초하여 마스터 공개키, 마스터 비밀키를 생성할 수 있다.
여기서 환(ring)은 다음과 같은 수학식으로 표현될 수 있다.
[수학식 1]
Figure pat00002
여기서 R은 환, Z는 계수이다. 여기서 환은 기설정된 계수를 가지는 다항식의 집합으로, 원소들 사이에 덧셈과 곱셈이 정의되어 있으며 덧셈과 곱셈에 대해서 닫혀 있는 집합을 의미한다. 이러한 환은 링으로 지칭될 수 있다.
여기서, 환의 원소들의 N차 미만의 정수 계수 다항식이며, 집합에 속하는 원소 사이에 덧셈 연산과 곱셈 연산이 정의되어 있다. 이러한 환은 링으로 지칭될 수 있다. 예를 들어, 덧셈 연산은 다항식 간의 곱으로 정의될 수 있고, 곱셈 연산은 각 다항식을 곱한 다음에 해당 원소의 mod xN+1로 정의될 수 있다. 그러한 정의에 따르면 XN-1*x는 다항식의 곱으로는 xN이고, mod XN+1에 대해 XN=-1이므로 XN-1*x = -1 이될 수 있다.
[수학식 2]
Figure pat00003
수학식 2에서 환은 N차 미만이면서 계수가 [0, q-1] 내의 정수만으로 구성된 다항식들의 집합을 의미한다. 해당 집합 위에서의 덧셈 연산과 곱셈 연산이 정의되어 있으며, 예를 들어, 곱셈 연산을 mod xN+1과 동시에 각 계수별로 mod q를 수행하는 것으로 정의될 수 있다. 본 개시에 따른 환은 기설정된 크기의 차원을 가지며, 이와 같은 차수 값에 대응되는 격자 트랩 도어가 이용될 수 있다.
키 생성 서버(20)는 상술한 링의 설정에 기초하여 제1 랜덤 행렬과 제2 랜덤 행렬을 산출하고, 트랩 도어를 산출할 수 있다. 여기서, 제1 랜덤 행렬의 생성 과정에서 이용되는, 구체적으로, 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 이용할 수 있다. 그리고, 트랩 도어는 자체적으로 수행하기 어려운 기능의 역을 계산할 수 있도록 하는 특별한 비밀 정보이다. 본 개시에서의 트랩 도어는 도 3과 같은 격자 기반 암호 기법에 이용될 수 있다.
키 생성 서버(20)는 산출된 랜덤 행렬과 트랩 도어를 기초로 마스터 공개키, 마스터 비밀키를 산출할 수 있다. 구체적인 생성 동작에 대해서는 도 4를 참조하여 후술한다.
그리고 키 생성 서버(20)는 사용자 단말기(10)로부터 암호문을 수신하고, 암호문을 복호화하지 않고 암호문 상태로 저장할 수도 있다.
한편, 도 1에서는 키 생성 서버(20)가 암호화에 필요한 키들을 생성하고, 사용자 단말기(10)가 생성된 키 중 일부를 제공받아 암호화 동작을 수행하는 것으로 설명하였지만, 키 생성 동작, 암호화 동작, 복호화 동작은 환경에 따라 다양한 기기에서 수행될 수 있다.
도 2는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타낸 블럭도이다.
구체적으로, 도 1의 시스템에서 사용자 단말기 등과 같이 암호화를 수행하는 장치, 키 생성 서버 등과 같이 암호문 생성에 필요한 키를 생성하는 장치 및 암호문을 이용하는 장치 등을 전자 장치라고 지칭할 수 있다. 이러한 전자 장치는 PC(Personal computer), 노트북, 스마트폰, 태블릿, 서버 등 다양한 장치일 수 있다.
도 2를 참조하면, 전자 장치(100)는 통신 장치(110), 메모리(120), 디스플레이(130), 조작 입력 장치(140) 및 프로세서(150)를 포함할 수 있다.
통신 장치(110)는 전자 장치(100)를 외부 장치(미도시)와 연결하기 위해 형성되고, 근거리 통신망(LAN: Local Area Network) 및 인터넷망을 통해 외부 장치에 접속되는 형태뿐만 아니라, USB(Universal Serial Bus) 포트 또는 무선 통신(예를 들어, WiFi 802.11a/b/g/n, NFC, Bluetooth) 포트를 통하여 접속되는 형태도 가능하다. 이러한 통신 장치(110)는 송수신부(transceiver)로 지칭될 수도 있다.
통신 장치(110)는 암호문 생성에 필요한 각종 키들을 수신할 수 있으며, 자체적으로 생성한 키를 외부 장치에 전송할 수 있다. 여기서 키는 마스터 공개키, 마스터 비밀키, 사용자 비밀키(또는 개인 키) 등일 수 있다.
그리고 통신 장치(110)는 외부 장치로부터 메시지를 수신할 수 있으며, 생성한 암호문을 외부 장치로 송신할 수 있다.
또한, 통신 장치(110)는 키 또는 암호문 생성에 필요한 각종 파라미터를 외부 장치로부터 수신할 수 있다. 한편, 구현시에 각종 파라미터는 후술하는 조작 입력 장치(140)를 통하여 사용자로부터 직접 입력받을 수 있다.
또한, 통신 장치(110)는 암호문을 수신할 수도 있다.
메모리(120)는 전자 장치(100)를 구동하기 위한 O/S나 각종 소프트웨어, 데이터 등을 저장하기 위한 구성요소이다. 메모리(120)는 RAM이나 ROM, 플래시 메모리, HDD, 외장 메모리, 메모리 카드 등과 같은 다양한 형태로 구현될 수 있으며, 어느 하나로 한정되는 것은 아니다.
그리고 메모리(120)는 암호화할 메시지를 저장할 수 있다. 여기서 메시지는 사용자가 각종 인용한 각종 신용 정보, 개인 정보 등일 수 있으며, 전자 장치(100)에서 사용되는 위치 정보, 인터넷 사용 시간 정보 등 사용 이력 등과 관련된 정보일 수도 있다.
그리고 메모리(120)는 마스터 공개키를 저장할 수 있으며, 전자 장치(100)가 직접 마스터 공개키를 생성한 장치인 경우, 마스터 비밀키뿐만 아니라, 마스터 공개키 및 마스터 비밀키 생성에 필요한 각종 파라미터 등을 저장할 수 있다.
그리고 메모리(120)는 비밀 키(또는 개인 키, 사용자 비밀 키)를 저장할 수 있다. 이때, 메모리(120)는 비밀 키 그대로를 저장하는 형태뿐만 아니라, 본 개시에 따른 저장 방식이 랜덤 씨드 및 벡터 정보만을 저장할 수도 있다. 그리고 메모리(120)는 PUF를 가질 수 있으며, 상술한 랜덤 씨드와 벡터 정보는 PUF에 저장될 수 있다.
그리고 메모리(120)는 후술한 과정에서 생성된 암호문을 저장할 수 있다. 그리고 메모리(120)는 암호문의 생성 과정의 중간 데이터 등을 저장할 수 있다.
그리고 메모리(120)는 외부 장치에서 전송한 암호문을 저장할 수도 있다. 또한, 메모리(120)는 암호문에 대한 복호 결과인 메시지를 저장할 수 있다.
디스플레이(130)는 전자 장치(100)가 지원하는 기능을 선택받기 위한 사용자 인터페이스 창을 표시할 수 있다. 예를 들어, 디스플레이(130)는 전자 장치(100)가 제공하는 각종 기능을 선택받기 위한 사용자 인터페이스 창을 표시할 수 있다. 이러한 디스플레이(130)는 LCD(liquid crystal display), OLED(Organic Light Emitting Diodes) 등과 같은 모니터일 수 있으며, 후술할 조작 입력 장치(140)의 기능을 동시에 수행할 수 있는 터치 스크린으로 구현될 수도 있다.
디스플레이(130)는 마스터 비밀키 및 마스터 공개키 생성에 필요한 파라미터의 입력을 요청하는 메시지를 표시할 수 있다. 그리고 디스플레이(130)는 암호화 대상이 메시지를 선택을 요청하는 UI(User Interface)를 표시할 수 있다.
한편, 구현시에 암호화 대상은 사용자가 직접 선택할 수도 있고, 자동으로 선택될 수 있다. 즉, 암호화가 필요한 개인 정보 등은 사용자가 직접 메시지를 선택하지 않더라도 자동으로 설정될 수 있다.
조작 입력 장치(140)는 사용자로부터 전자 장치(100)의 기능 선택 및 해당 기능에 대한 제어 명령을 입력받을 수 있다. 예를 들어, 조작 입력 장치(140)는 사용자로부터 마스터 비밀키 및 마스터 공개키 생성에 필요한 파라미터를 입력받을 수 있다. 또한, 조작 입력 장치(140)는 사용자로부터 암호화될 메시지를 설정받을 수 있다.
프로세서(150)는 전자 장치(100) 내의 각 구성을 제어한다. 이러한 프로세서(150)는 CPU(central processing unit), ASIC(application-specific integrated circuit)과 같은 단일 장치로 구성될 수 있으며, CPU, GPU(Graphics Processing Unit) 등의 복수의 장치로 구성될 수도 있다.
프로세서(150)는 전송하고자 하는 메시지가 입력되면 메모리(120)에 저장한다. 프로세서(150)는 메모리(120)에 저장된 각종 설정 값 및 프로그램을 이용하여, 메시지를 암호화할 수 있다. 이 경우, 공개키가 사용될 수 있다.
프로세서(150)는 암호화를 수행하는데 필요한 마스터 공개키를 자체적으로 생성하여 사용할 수도 있고, 외부 장치로부터 수신하여 사용할 수도 있다. 일 예로, 복호화를 수행하는 키 생성 서버(20)가 마스터 공개키를 다른 장치들에 배포할 수 있다.
자체적으로 마스터 공개키를 생성하는 경우, 프로세서(150)는 도 3을 만족하는 제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)을 생성하고, 제2 랜덤 행렬에 기초하여 마스터 공개키를 생성할 수 있다. 구체적인 키 생성 동작은 도 6과 관련하여 후술한다.
프로세서(150)는 마스터 공개키가 생성되면, 다른 장치들에 전송되도록 통신 장치(110)를 제어할 수 있다.
그리고 프로세서(150)는 메시지에 대한 암호문을 생성할 수 있다.
그리고 프로세서(150)는 암호문이 생성되면 메모리(120)에 저장하거나, 사용자 요청 또는 기 설정된 디폴트 명령에 따라 생성된 암호문(및/또는 서명 결과)을 다른 장치에 전송하도록 통신 장치(110)를 제어할 수 있다.
그리고 프로세서(150)는 암호문을 비밀키를 이용하여 복호할 수 있다. 이때, 프로세서(150)는 비밀 키를 본 개시의 방식과 같이 랜덤 씨드와 벡터 정보로 저장하고 있는 경우, 랜덤수 생성기에 저장된 랜덤 씨드를 반영하여 복수의 원소 값을 생성하고, 생성된 복수의 원소 값 중 벡터 정보에 기초하여 사용할 원소 값을 선별하여 최종적으로 비밀 키를 복호할 수 있다. 여기서 랜덤수 생성기는 가우시안 랜덤 수 생성기(Gaussian Random Number Generator)가 이용될 수 있으나, 이에 한정되지 않는다.
이러한, 랜덤수 생성기는 연속적으로 복수의 원소 값을 산출하는 과정에서는 서로 다른 원소 값을 산출하나, 동일한 랜덤 씨드를 기초로 일정 개수의 원소 값을 생성하는 경우에는 동일한 원소 값을 산출할 수 있다. 예를 들어, 랜덤수 생성기는 랜덤 씨드 A로 3개의 원소 값 (137, 541, 931)를 생성할 수 있다. 이와 같이 산출되는 복수의 원소 값 각각은 서로 다른 값이 된다. 만약, 이후에 다시 랜덤 씨드 A로 3개의 원소 값을 생성한다면, 랜덤수 생성기는 동일하게 137, 541, 931을 생성할 수 있다. 한편, 이와 같은 수치 값은 설명을 용이하게 하기 위한 예시에 불과하다.
한편, 본 개시에서는 비밀 키의 보안성을 향상시키기 위하여, 벡터 정보를 추가로 이용한다. 구체적으로, 프로세서(150)는 상술한 원소 값 산출 과정에서 필요한 원소 값보다 일정개수 이상의 원소 값을 더 산출하고, 그 중에서 필요한 개수의 원소 값을 선택할 수 있다. 그리고, 프로세서(150)는 그 선택 방식을 벡터 정보로 저장한다.
예를 들어, 3개의 원소 값이 필요한 경우, 137, 541, 931, 2321, 110와 같이 5개의 원소 값을 생성기를 이용하여, 생성하고, 이중 비밀 키 생성에 이용한 원소 선택 방식에 대한 정보(예를 들어, [1, 1, 1, 0, 0]과 같은 벡터 값)를 저장할 수 있다. 여기서, 1은 해당 값을 이용하였다는 정보이고, 0은 해당 값을 이용하지 않았다는 정보이다. 한편, 구현시에는 이용한 원소의 번호, 또는 이용하지 않은 번호의 정보만으로 벡터 정보를 구성하는 것도 가능하다. 예시로, 상술한 경우, (1,2,3)의 값을 저장하거나, (4, 5) 값만을 저장하는 방식일 수 있다. 한편, 이상에서는 상술한 원소 값의 선택 방식에 대한 정보를 벡터 값 또는 벡터 정보라고 지지칭하였지만, 선택의 방식에 따라 다양한 방식이 이용될 수 있으며, 그 경우 상술한 벡터 정보는 다양하게 지칭될 수 있다.
한편, 구현시에는 랜덤 씨드와 벡터 정보를 모두 이용하지 않고, 랜덤 씨드만 이용하는 것도 가능하다. 그리고, 전자 장치(100)는 선택적으로 두가지 방식 중 하나로 동작하는 것이 가능하다.
예를 들어, 시큐리티 레벨이 높거나, 시스템의 저장 공간에 여유가 있는 경우에, 전자 장치(100)는 랜덤 씨드와 벡터 정보 모두를 이용하는 방식으로 개인 키를 저장하는 것으로 결정하고, 앞서 설명한 방식과 같이 랜덤 씨드와 벡터 정보를 모두 생성하고, 두 정보를 개인 키로서 저장할 수 있다.
한편, 시큐리티 레벨이 낮거나, 개인 키를 저장할 저장 공간이 매우 작은 경우, 전자 장치(100)는 랜덤 씨드만 이용하는 방식으로 개인 키를 저장하는 것으로 결정하고, 개인 키 생성(구체적으로, 제1 랜덤 행렬의 생성 과정) 과정에서, 생성된 랜덤 씨드로 필요한 개수만큼의 원소 값을 생성하고, 램덤 씨드 정보만을 개인 키로 저장할 수 있다. (이러한 동작은, 상술한 벡터 값 정보가 항상 [1, 1, 1] 이어서, 해당 벡터값 정보를 따로 저장하지 않는다고 표현할 수도 있음)
이상과 같이 본 개시에 따른 전자 장치는 비밀 키를 그대로 저장하는 것이 아니라, 비밀 키 생성에 이용되는 랜덤 씨드와 벡터 정보만을 저장하는바, 작은 저장 메모리를 갖는 전자 장치에서도 격자전자서명의 비밀키를 저장하는 것이 가능하다.
한편, 도 2를 도시하고 설명함에 있어서, 하나의 장치에서 암호화 동작 및 복호화 동작 모두를 수행하는 것으로 도시하고 설명하였지만, 구현시에 하나의 장치에서 하나의 동작 예를 들어, 키 생성 동작, 암호화 동작, 복호화 동작 중 하나만을 수행할 수도 있다.
도 3은 본 개시의 랜덤 행렬을 구조를 도시한 도면이다.
도 3을 참조하면, 본 개시에 따른 래티스 구조에서는 제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)이 사용된다.
제1 랜덤 행렬(S)은 열의 개수가 d-k(즉, d-1)이고, 행의 개수가 d이고, 제2 랜덤 행렬(A)은 열의 개수가 d 이고, 행의 개수(k)가 1이다. 여기서 열(d)의 개수는 2보다 큰 소정의 정수일 수 있으며, 링의 차원에 대응될 수 있다. 예를 들어, 링의 차원이 3이라면, 제1 랜덤 행렬은 3×2의 크기를 갖고, 제2 랜덤 행렬은 1×3의 크기를 가질 수 있다.
제1 랜덤 행렬(S)과 제2 랜덤 행렬(A)은 도 3에 표시된 관계를 만족할 수 있다.
도 4는 본 개시의 일 실시 예에 따른 키 생성 동작을 설명하기 위한 흐름도이다.
도 4를 참조하면, 제1 랜덤 행렬(S)을 산출한다(410). 예를 들어, 아래와 같은 수학식 3을 만족하는 원소 값들을 샘플링하여 제1 랜덤 행렬(S)을 산출할 수 있다.
[수학식 3]
Figure pat00004
여기서,
Figure pat00005
는 샘플링된 원소 값들이고, 모든
Figure pat00006
값들은 Rq에서 선형 독립인 관계이다. 만약, 선형 독립인 관계가 아니면, 원소 값들을 다시 샘플링할 수 있다. 제1 랜덤 행렬(S)를 생성하는 구체적인 방법에 대해서는 도 5에서 후술한다.
그리고 제2 랜덤 행렬(A)을 산출한다(420). 구체적으로, 랜덤한 계수(r)를 샘플링하고, 제1 랜덤 행렬의 행 개수에 대응되는 행렬식(ai)과 샘플링된 랜덤한 계수(r)를 이용하여 아래의 수학식 4와 같이 제2 랜덤 행렬(A)를 산출할 수 있다.
[수학식 4]
Figure pat00007
여기서 행렬식(ai)은
Figure pat00008
이고, Mi는 행렬
Figure pat00009
에서 i 번째 행렬을 제외한 d×d 행렬이다. 그리고 r은 랜덤 계수
Figure pat00010
이다.
예를 들어, 랜덤한 계수(r)를 a1 -1으로 하면, 제2 랜덤 행렬(A)은 (1, A1, …, Ad-1)이 될 수 있다.
그리고 트랩 도어(T)를 산출한다(120). 예를 들어, 아래의 수학식 5와 같이 제1 랜덤행렬(s)과 새롭게 샘플링된
Figure pat00011
를 이용하여 트랩 도어(T)를 산출할 수 있다.
[수학식 5]
Figure pat00012
여기서 T는 트랩 도어,
Figure pat00013
는 제1 랜덤 행렬(s)의 원소 값,
Figure pat00014
는 아래의 수학식 6을 만족하도록 링에서 샘플링된 짧은 벡터이다. 그리고, "∥"은 연접을 의미한다.
[수학식 6]
Figure pat00015
여기서, det는 행렬식(determinant) 연산이고,
Figure pat00016
는 제1 랜덤 행렬(s)의 원소 값,
Figure pat00017
는 샘플링된 짧은 벡터, q는 상수이다.
이하에서는 짧은 벡터(
Figure pat00018
)를 샘플링하는 구체적인 방법에 대해서 이하에서 설명한다.
먼저,
Figure pat00019
을 만족하는 αi를 계산할 수 있다. 여기서,
Figure pat00020
로 가정하며,
Figure pat00021
이다.
αi의 계산은 확장 유클리드 알고리즘(Extended Euclidean Algorithm)(또는 Babai' reduction)에 의해 실행될 수 있다. 그리고 전술한 산출 값들에 기초하여 Fi를 다음과 같이 산출할 수 있다.
[수학식 7]
Figure pat00022
이렇게 하면, 다음과 같은 수학식 8의 관계가 성립된다.
[수학식 8]
Figure pat00023
Figure pat00024
를 이용하여
Figure pat00025
를 축소한 다음에, 결과값(
Figure pat00026
)을 출력할 수 있다.
이러한 축소는
Figure pat00027
에서
Figure pat00028
의 적당한 상수배를 빼주면서,
Figure pat00029
방향 성분을 지우는 과정을 의미한다. 그러한 축소에 의해서 트랩 도어(T)의 크기를 작게 만드는 효과가 있다. 정수로 예를 들면, F = (2, 5), f = (1, 2)인 경우, [F, f]와 [F-2f, f]를 비교하면 같은 열 공간을 정의하지만 뒤의 축소된 행렬의 열의 크기가 작아질 수 있다.
이와 같이 트랩 도어가 산출되면, 해당 트랩 도어(T)를 마스터 비밀키로 이용할 수 있으며, 상술한 연산 과정에서 이용된 (A1, …, Ad-1)를 마스터 공개키로 이용할 수 있다.
이와 같이 마스터 비밀키 및 마스터 공개키가 설정되면, 마스터 공개키를 해시 함수(hash Function)(
Figure pat00030
)에 적용하여 공개할 수 있다.
도 5는 도 3의 제1 랜덤 행렬의 생성 동작을 설명하기 위한 흐름도이다.
도 5를 참조하면, 랜덤 씨드를 생성한다(S510).
그리고 생성된 랜덤 씨드를 이용하여 제1 랜덤 행렬의 원소 개수 이상의 원소 값을 생성한다(S520). 구체적으로, 제1 랜덤 행렬의 행 개수 및 제1 랜덤 행렬의 열 개수의 곱한 값에 기설정된 수를 더한 개수만큼의 원소 값을 생성할 수 있다. 예를 들어, d*(d-1)+2d(여기서, d는 차원 수)만큼의 원소 값을 생성할 수 있다.
생성된 원소 값들이 기설정된 분포를 갖는지 검사한다(S530). 앞선 과정에서 필요한 개수 이상의 원소 값을 생성하였는바, 제1 랜덤 행렬의 원소 수에 대응되는 원소들간에 기설정된 분포를 갖는다면, 기설정된 분포를 갖는다고 판단할 수 있다.
그리고 기설정된 분포를 갖는 경우, 생성된 원소 값을 이용하여 제1 랜덤행렬을 산출한다. 그리고 생성된 원소 값 중 제1 랜덤행렬에 반영 여부에 기초하여 벡터 정보를 생성한다. 구체적으로, 생성된 원소 값 각각의 제1 랜덤 행렬의 반영 여부를 벡터 값으로 갖는 벡터 정보를 생성할 수 있다.
이때, 기설정된 분포를 갖지 않는 원소는 해당 원소를 사용하지 않는다는 정보가 벡터 정보로 이용될 수 있다. 예를 들어, d 3이어서, 6개의 원소 생성이 필요한 경우, 앞선 예시와 같이 12(3*2+3*3)개의 원소가 생성될 수 있다. 생성된 12개 원소 값 중 6개의 원소들 간에 기설정된 분포(즉, 디스크리트 가우시안 분포)가 만족되면, 해당 6개의 원소를 제1 랜덤 행렬의 원소 값으로 결정하고, 다음과 같은 벡터 값[1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1]이 생성될 수 있다. 즉, 상술한 랜덤 씨드를 이용하여 생성한 원소 값 중 1, 3, 4, 6, 10, 12번째 원소를 사용하여 제1 랜덤 행렬을 생성하였다는 정보를 벡터 정보로 저장할 수 있다.
또는 생성된 원소 값 중 제1 랜덤 행렬에 반영된 원소 번호 또는 제1 랜덤 행렬에 반영되지 않는 원소 번호에 대한 정보를 갖는 벡터 정보를 생성할 수도 있다.
만약, 생성된 원소 값들이 기설정된 분포를 갖지 않으면, 랜덤 씨드를 생성하는 단계, 원소 값을 생성하는 단계를 반복한다. 예를 들어, 12개의 원소 값 중 디스크리트 가우시안 분포를 만족하는 6개의 원소 SET가 없는 경우, 상술한 동작을 반복할 수 있다.
도 6는 본 개시의 일 실시 예에 따른 키 생성 알고리즘은 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시 예에 따른 키 생성 알고리즘을 설명하기 위한 도면이다.
도 6을 참조하면, 3개의 파라미터(n, q, d)를 입력받을 수 있다. 여기서 n은 차원을 구성하는 2의 거듭제곱의 제곱 값이고, d는 정수이다. 따라서, 해당 파라미터에 의해 생성되는 링의 차원은 2n*d일 수 있다. 그리고, q는 소수값이다.
그리고 입력된 파라미터 및 도시된 바와 같은 알고리즘을 이용하여 트랩 도어(T)를 산출할 수 있다. 예를 들어, 링에서 상호 선형 독립인 원소들(
Figure pat00031
)을 샘플링하여, 열의 개수가 차원보다 1 작고, 행의 개수는 차원 수인 제1 랜덤 행렬(S)을 산출하고, 열의 개수가 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬(A)을 산출할 수 있다.
이때, 제2 랜덤 행렬(A)은, 행렬
Figure pat00032
에서 i번째 행을 제외한 d×d 행렬(Mi)을 산출하고,
Figure pat00033
를 행렬식(ai)으로 설정하여
Figure pat00034
를 산출할 수 있다.
그리고,
Figure pat00035
관계를 만족하는 벡터(
Figure pat00036
)를 샘플링하고,
Figure pat00037
를 트랩 도어(T)로 산출할 수 있다. 이때, 벡터(
Figure pat00038
)를 샘플링 시에 원소들(
Figure pat00039
)을 이용하여 벡터의 원소들을 축소한 후에 결과 값 벡터를 출력할 수 있다. 예를 들어, 확장 유클리드 알고리즘(Extended Euclidean Algorithm)을 이용하여 벡터의 원소들(
Figure pat00040
)에서 원소들(
Figure pat00041
)의 상수배를 빼어서 원소 방향 성분을 제거하여 축소할 수 있다.
트랩 도어가 산출되면, 트랩 도어(T)를 마스터 비밀키(MSK)로 설정하고, 제 랜덤 행렬 산출시 이용된 h 값(
Figure pat00042
)을 마스터 공개키(MPK)로 설정할 수 있다.
이와 같이 본 개시에 따른 본 개시에 따른 암호문 처리 방법은 격자전자서명의 비밀 키를 그대로 저장하는 것이 아니라, 비밀 키 생성 과정에서 이용한 랜덤 씨드와 벡터 정보만을 저장하기 때문에 상대적으로 작은 정보만으로 비밀 키 정보를 저장할 수 있다.
한편, 상술한 다양한 실시 예에 따른 암호문 처리 방법은 각 단계들을 수행하기 위한 프로그램 코드 형태로 구현되어, 기록 매체에 저장되고 배포될 수도 있다. 이 경우, 기록 매체가 탑재된 장치는 상술한 암호화 또는 암호문 처리 등의 동작들을 수행할 수 있다.
이러한 기록 매체는, ROM, RAM, 메모리 칩, 메모리 카드, 외장형 하드, 하드, CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 다양한 유형의 컴퓨터 판독 가능 매체가 될 수 있다.
이상 첨부 도면을 참고하여 본 개시에 대해서 설명하였지만 본 개시의 권리범위는 후술하는 특허청구범위에 의해 결정되며 전술한 실시 예 및/또는 도면에 제한되는 것으로 해석되어서는 안 된다. 그리고 특허청구범위에 기재된 개시의, 당업자에게 자명한 개량, 변경 및 수정도 본 개시의 권리범위에 포함된다는 점이 명백하게 이해되어야 한다.
10: 사용자 단말기 20: 키 생성 서버
30: 통신망 100: 전자 장치
110: 통신 장치 120: 메모리
130: 디스플레이 140: 조작 입력 장치
150: 프로세서

Claims (18)

  1. 링(ring)에서 상호 선형 독립인 원소를 샘플링하여, 열의 개수가 상기 링의 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬을 산출하는 단계;
    열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬을 산출하는 단계;
    상기 제2 랜덤 행렬에 기초하여 트랩 도어를 산출하는 단계; 및
    상기 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 저장하는 단계;를 포함하는 암호화 방법.
  2. 제1항에 있어서,
    상기 제1 랜덤 행렬을 산출하는 단계는,
    랜덤 씨드를 생성하는 단계;
    상기 생성된 랜덤 씨드를 이용하여 상기 제1 랜덤 행렬의 원소 개수 이상의 원소 값을 생성하는 단계;
    상기 생성된 원소 값을 이용하여 상기 제1 랜덤행렬을 산출하는 단계; 및
    상기 생성된 원소 값 중 상기 제1 랜덤행렬에 반영 여부에 기초하여 벡터 정보를 생성하는 단계;를 포함하는 암호화 방법.
  3. 제2항에 있어서,
    상기 제1 랜덤 행렬을 산출하는 단계는,
    상기 생성된 원소 값들이 기설정된 분포를 갖는지 검사하는 단계; 및
    상기 생성된 원소 값들이 기설정된 분포를 갖지 않으면, 상기 랜덤 씨드를 생성하는 단계, 상기 원소 값을 생성하는 단계를 반복하는 단계;를 더 포함하는 암호화 방법.
  4. 제2항에 있어서,
    상기 원소 값을 생성하는 단계는,
    상기 제1 랜덤 행렬의 행 개수 및 상기 제1 랜덤 행렬의 열 개수의 곱한 값에 기설정된 수를 더한 개수만큼의 원소 값을 생성하는 암호화 방법.
  5. 제2항에 있어서,
    상기 벡터 정보를 생성하는 단계는,
    상기 생성된 원소 값 각각의 상기 제1 랜덤 행렬의 반영 여부를 벡터 값으로 갖는 벡터 정보를 생성하는 암호화 방법.
  6. 제2항에 있어서,
    상기 벡터 정보를 생성하는 단계는,
    상기 생성된 원소 값 중 상기 제1 랜덤 행렬에 반영된 원소 번호 또는 상기 제1 랜덤 행렬에 반영되지 않는 원소 번호에 대한 정보를 갖는 벡터 정보를 생성하는 암호화 방법.
  7. 제1항에 있어서,
    상기 트랩 도어를 이용하여 메시지에 대한 암호문을 생성하는 단계;를 더 포함하는 암호화 방법.
  8. 제1항에 있어서,
    상기 저장된 랜덤 씨드 및 벡터 정보를 이용하여 상기 제1 랜덤 행렬을 복원하는 단계; 및
    상기 복원된 제1 랜덤 행렬을 이용하여 암호문을 메시지로 복호하는 단계;를 더 포함하는 암호화 방법.
  9. 제8항에 있어서,
    상기 복원하는 단계는,
    상기 저장된 랜덤 씨드를 이용하여 기설정된 개수의 원소 값을 생성하는 단계;
    상기 벡터 정보를 이용하여 상기 생성된 기설정된 개수의 원소 값 중 랜덤 행렬에 이용할 원소 값을 선택하여 상기 제1 랜덤 행렬을 복원하는 단계;를 포함하는 암호화 방법.
  10. 전자 장치에 있어서,
    적어도 하나의 인스트럭션(instruction)을 저장하는 메모리; 및
    상기 적어도 하나의 인스트럭션을 실행하는 프로세서;를 포함하고,
    상기 프로세서는,
    링(ring)에서 상호 선형 독립인 원소를 샘플링하여, 열의 개수가 상기 링의 차원보다 1 작고, 행의 개수는 상기 차원 수인 제1 랜덤 행렬을 산출하고,
    열의 개수가 상기 차원의 수와 같고, 행의 개수는 1인 제2 랜덤 행렬을 산출하고,
    상기 제2 랜덤 행렬에 기초하여 트랩 도어를 산출하고,
    상기 상호 선형 독립인 원소의 샘플링 과정에서 사용된 랜덤 씨드 및 벡터 정보를 비밀 키로 상기 메모리에 저장하는 전자 장치.
  11. 제10항에 있어서,
    상기 프로세서는,
    랜덤 씨드를 생성하고, 상기 생성된 랜덤 씨드를 이용하여 상기 제1 랜덤 행렬의 원소 개수 이상의 원소 값을 생성하고, 상기 생성된 원소 값을 이용하여 상기 제1 랜덤행렬을 산출하고, 상기 생성된 원소 값 중 상기 제1 랜덤행렬에 반영 여부에 기초하여 벡터 정보를 생성하는 전자 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 생성된 원소 값들이 기설정된 분포를 갖는지 검사하고, 상기 생성된 원소 값들이 기설정된 분포를 갖지 않으면, 상기 랜덤 씨드의 생성 및 상기 원소 값의 생성을 반복 수행하는 전자 장치.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 제1 랜덤 행렬의 행 개수 및 상기 제1 랜덤 행렬의 열 개수의 곱한 값에 기설정된 수를 더한 개수만큼의 원소 값을 생성하는 전자 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 생성된 원소 값 각각의 상기 제1 랜덤 행렬의 반영 여부를 벡터 값으로 갖는 벡터 정보를 생성하는 전자 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 생성된 원소 값 중 상기 제1 랜덤 행렬에 반영된 원소 번호 또는 상기 제1 랜덤 행렬에 반영되지 않는 원소 번호에 대한 정보를 갖는 벡터 정보를 생성하는 전자 장치.
  16. 제10항에 있어서,
    상기 프로세서는,
    상기 트랩 도어를 이용하여 메시지에 대한 암호문을 생성하는 전자 장치.
  17. 제10항에 있어서,
    상기 프로세서는,
    상기 저장된 랜덤 씨드 및 벡터 정보를 이용하여 상기 제1 랜덤 행렬을 복원하고, 상기 복원된 제1 랜덤 행렬을 이용하여 암호문을 메시지로 복호하는 전자 장치.
  18. 제17항에 있어서,
    상기 프로세서는,
    상기 저장된 랜덤 씨드를 이용하여 기설정된 개수의 원소 값을 생성하고, 상기 벡터 정보를 이용하여 상기 생성된 기설정된 개수의 원소 값 중 랜덤 행렬에 이용할 원소 값을 선택하여 상기 제1 랜덤 행렬을 복원하는 암호화 방법.
KR1020220127407A 2021-10-05 2022-10-05 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치 KR20230049052A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210131748 2021-10-05
KR1020210131748 2021-10-05

Publications (1)

Publication Number Publication Date
KR20230049052A true KR20230049052A (ko) 2023-04-12

Family

ID=85984241

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220127407A KR20230049052A (ko) 2021-10-05 2022-10-05 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치

Country Status (1)

Country Link
KR (1) KR20230049052A (ko)

Similar Documents

Publication Publication Date Title
KR102297536B1 (ko) 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
KR102393942B1 (ko) 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
KR102349855B1 (ko) 공간 복잡도를 고려한 동형 암호화 또는 복호화 방법
JP7183242B2 (ja) 格子ベースの暗号鍵生成方法及び電子署名方法
JP7170878B2 (ja) 暗号文に対する非多項式演算を行う装置及び方法
KR102443255B1 (ko) 래티스를 기반으로 하는 암호키 생성 방법 및 전자서명 방법
KR102203238B1 (ko) 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법
US11757618B2 (en) Apparatus for processing non-polynomial operation on homomorphic encrypted messages and methods thereof
KR102160294B1 (ko) 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
US11750367B2 (en) Simulation device and method for homomorphic cryptosystem
KR102382952B1 (ko) 근사 계산에 대한 계산 검증
KR20230049052A (ko) 격자전자서명의 비밀 키 생성 방법 및 이를 이용한 장치
KR20230003954A (ko) 영지식 증명을 위한 암호문 처리 방법 및 장치
KR20220163493A (ko) 동형 암호문에 대한 통계 연산 수행하는 장치 및 방법
KR102418016B1 (ko) 래티스를 기반으로 하는 신원 기반 암호화 방법
KR102393941B1 (ko) 근사 암호화된 암호문에 대한 인코딩 또는 디코딩
KR102257779B1 (ko) 다자간 계산을 위한 유사 보간
KR20240108784A (ko) 동형 암호문 처리 방법 및 전자 장치
KR20240070324A (ko) 암호문을 처리하는 장치 및 방법
KR20240014946A (ko) 동형 암호문을 생성하는 전자 장치 및 그 방법
KR20240048985A (ko) 투표 분석 정보를 포함하는 동형 암호문을 생성하는 방법 및 그 전자 장치
KR20230162524A (ko) 동형 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법
KR20240000079A (ko) 동형 암호문을 처리하는 장치 및 방법
KR20240102803A (ko) 동형 암호문의 선형변환 장치 및 방법