KR20210081471A - 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템 - Google Patents

프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템 Download PDF

Info

Publication number
KR20210081471A
KR20210081471A KR1020190172720A KR20190172720A KR20210081471A KR 20210081471 A KR20210081471 A KR 20210081471A KR 1020190172720 A KR1020190172720 A KR 1020190172720A KR 20190172720 A KR20190172720 A KR 20190172720A KR 20210081471 A KR20210081471 A KR 20210081471A
Authority
KR
South Korea
Prior art keywords
message
coefficient
reference value
count
multiplication
Prior art date
Application number
KR1020190172720A
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 삼성전자주식회사
Priority to KR1020190172720A priority Critical patent/KR20210081471A/ko
Priority to US16/990,073 priority patent/US11496295B2/en
Priority to SG10202008862SA priority patent/SG10202008862SA/en
Priority to DE102020126668.5A priority patent/DE102020126668A1/de
Priority to CN202011087792.2A priority patent/CN113098680A/zh
Publication of KR20210081471A publication Critical patent/KR20210081471A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3026Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
    • 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/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/0852Quantum cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Landscapes

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

Abstract

본 발명의 실시 예에 따른 프로세서에 의해 실행 가능한 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체에 있어서, 프로세서는: 제 1 암호문, 제 2 암호문, 및 개인 키에 기초하여 메시지를 계산하는 단계; 메시지의 계수와 소수에 기반한 기준 값을 비교하는 단계; 메시지의 계수와 기준 값 간의 비교 결과에 따라 수정 메시지의 계수를 결정하는 단계; 및 수정 메시지를 복호화하는 단계를 실행한다.

Description

프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템{NON-TRANSITORY COMPUTER-READABLE MEDIUM STORING PROGRAM CODE, DECRYPTION DEVICE, AND COMMUNICATION SYSTEM INCLUDING ENCRYPTION DEVICE AND DECRYPTION DEVICE}
본 발명은 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템에 관한 것이다.
RSA(Rivest, Shamir, Adleman) 알고리즘과 같은 공개 키 암호 알고리즘은 인수분해(factorization) 또는 이산 대수(discrete logarithm) 문제의 어려움에 기반하고 있다. 그러나, 양자 계산을 수행하는 양자 컴퓨터를 이용한 쇼어(Shor) 알고리즘으로 인하여, 공개 키 암호 알고리즘의 안전성이 문제되고 있다. 미국 표준기술연구원(NIST)은 양자 컴퓨팅 환경에서도 안전한 공개 키 암호 알고리즘의 표준화를 수행하고 있으며 포스트 양자 암호(Post Quantum Cryptography)가 주목받고 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템을 제공할 수 있다.
본 발명의 실시 예에 따른 프로세서에 의해 실행 가능한 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체에 있어서, 프로세서는: 제 1 암호문, 제 2 암호문, 및 개인 키에 기초하여 메시지를 계산하는 단계; 메시지의 계수와 소수에 기반한 기준 값을 비교하는 단계; 메시지의 계수와 기준 값 간의 비교 결과에 따라 수정 메시지의 계수를 결정하는 단계; 및 수정 메시지를 복호화하는 단계를 실행한다.
본 발명의 다른 실시 예에 따른 복호화 장치는 제 1 암호문과 제 2 암호문을 수신하고 그리고 제 1 암호문, 제 2 암호문, 및 개인 키에 기초하여 메시지를 계산하도록 구성되는 계산기; 메시지의 계수와 소수에 기반한 기준 값을 비교하도록 구성되는 비교기; 메시지의 계수와 기준 값 간의 비교 결과에 따라 수정 메시지의 계수를 결정하도록 구성되는 결정기; 및 수정 메시지를 복호화하도록 구성되는 연산기를 포함한다.
본 발명의 또 다른 실시 예에 따른 통신 시스템은 제 1 정규 분포에 기초하여 개인 키를 샘플링하고, 다항식 링으로부터 제 1 공개 키를 샘플링하고, 그리고 개인 키와 제 1 공개 키에 기초하여 제 2 공개 키를 계산하도록 구성되는 복호화 장치; 및 복호화 장치로부터 제 1 공개 키와 제 2 공개 키를 수신하고, 제 1 공개 키에 기초하여 제 1 암호문을 계산하고, 제 2 공개 키와 평문 메시지에 기초하여 제 2 암호문을 계산하고, 그리고 제 1 암호문과 제 2 암호문을 복호화 장치로 전송하도록 구성되는 암호화 장치를 포함하되, 복호화 장치는: 제 1 암호문, 제 2 암호문, 및 개인 키에 기초하여 전송 메시지를 계산하고, 전송 메시지의 계수와 소수에 기반한 기준 값의 비교 결과에 따라 수정 전송 메시지의 계수를 결정하고, 그리고 수정 전송 메시지를 복호화하도록 더 구성된다.
본 발명의 실시 예에 따른 통신 시스템의 복호화 장치는 암호화 장치로부터 전송되는 암호문들(c0, c1)로부터 계산된 전송 메시지(ψ)의 계수를 결정하고 그리고 전송 메시지(ψ) 대신에 결정된 계수를 갖는 수정 전송 메시지(ψ´)를 복호화하므로, 전송 메시지(ψ)의 복호화 오류로 인해 암호화 장치에서 사용되는 에러들(u, g, h)의 크기들이 제한되는 문제점을 해소할 수 있다.
도 1은 본 발명의 실시 예에 따른 통신 시스템의 블록도를 예시적으로 도시한다.
도 2는 도 1의 통신 시스템의 동작 방법의 순서도를 예시적으로 도시한다.
도 3은 도 2의 S180 단계의 세부 단계들을 좀 더 상세하게 도시한다.
도 4는 본 발명의 실시 예에 따라 도 1의 통신 시스템의 블록도를 좀 더 상세하게 도시한다.
도 5는 본 발명의 다른 실시 예에 따라 도 1의 통신 시스템의 블록도를 좀 더 상세하게 도시한다.
도 6은 도 5의 키 생성 회로의 블록도를 예시적으로 도시한다.
도 7은 도 5의 복호화 회로의 블록도를 예시적으로 도시한다.
도 8은 도 5의 암호화 회로의 블록도를 예시적으로 도시한다.
도 9는 본 발명의 실시 예에 따른 암복호화 장치의 블록도를 예시적으로 도시한다.
도 10은 본 발명의 다른 실시 예에 따른 암복호화 장치의 블록도를 예시적으로 도시한다.
도 11은 본 발명의 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다.
도 12는 본 발명의 실시 예에 따른 통신 시스템을 예시적으로 도시한다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 쉽게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 통신 시스템의 블록도를 예시적으로 도시한다. 통신 시스템(1000)에서 사용되는 암호 알고리즘은 공개 키 암호 알고리즘에 기반할 수 있다. 공개 키 암호 알고리즘은 암호화와 복호화에 동일한 키를 사용하지 않고 암호화에는 공개 키를 복호화에는 개인(비밀) 키를 사용하는 비대칭 암호 알고리즘일 수 있다. 본 발명의 실시 예에 따른 통신 시스템(1000)은 양자 컴퓨터 환경에서도 안전성을 보장할 수 있는 포스트 양자 암호로서 격자 기반 LWE(Learning With Errors) 암호 알고리즘의 한 종류인 RLWE(Ring Learning With Errors) 암호 알고리즘을 이용할 수 있다. RLWE 암호 알고리즘은 향상된 안전성에 더해 데이터에 대한 검색 또는 분석이 가능한 동형 암호(homomorphic encryption)도 지원할 수 있다. 동형 암호는 복호화 없이도 암호화된 데이터에 대한 연산을 실행할 수 있는 암호 기술이다. 데이터에 대해 연산이 실행되면 연산 결과가 생성될 수 있고 그 다음 연산 결과가 암호화되면 제 1 결과가 생성될 수 있다. 암호화된 데이터에 대해 동일한 연산이 실행되면 제 2 결과가 생성될 수 있다. 동형 암호에 따르면, 제 1 결과와 제 2 결과가 서로 동일할 수 있다. 유사하게, 데이터에 대해 연산이 실행되면 제 3 결과가 생성될 수 있다. 암호화된 데이터에 대해 동일한 연산이 실행되면 연산 결과가 생성될 수 있고 그 다음 연산 결과가 복호화되면 제 4 결과가 생성될 수 있다. 동형 암호에 따르면, 제 3 결과와 제 4 결과가 서로 동일할 수 있다.
통신 시스템(1000)은 복호화 장치(1100) 및 암호화 장치(1200)를 포함할 수 있다. 복호화 장치(1100) 및 암호화 장치(1200)는 본 발명의 실시 예에 따른 암호 알고리즘에 기반하여 서로 통신할 수 있다. 통신 시스템(1000)의 RLWE 암호 알고리즘은 키 생성, 암호화, 및 복호화를 포함할 수 있다. 키 생성과 복호화는 복호화 장치(1100)에 의해 실행(수행)될 수 있고 그리고 암호화는 암호화 장치(1200)에 의해 실행될 수 있다.
복호화 장치(1100)는 정규 분포(χ)로부터 개인 키(s)를 샘플링할 수 있다. 예를 들어, 정규 분포(χ)는 이산 가우시안(Gaussian) 에러 분포일 수 있다. 예를 들어, 정규 분포(χ)의 표준편차(σ)는 2 미만일 수 있으나, 상술한 수치로 본 발명의 범위가 한정되지 않는다. 복호화 장치(1100)는 정규 분포(χ)로부터 에러(e)를 샘플링할 수 있다. 에러(e)는 공개 키(a0)를 생성하는데 사용될 수 있다. 에러는 노이즈(noise)로도 지칭될 수 있다.
f(x) = xn + 1, n = 2k, n은 보안 변수(security parameter), k는 자연수, R = Z[x] / f(x), 그리고 Rq = Zq[x] / f(x)인 것으로 가정한다. f(x)는 기준 다항식으로도 지칭될 수 있다. R은 f(x)를 법으로 하는 정수 다항식들의 링(ring of integer polynomials modulo f(x))일 수 있다. 예를 들어, 링(R)의 원소들은 n 미만(less than)의 차수(degree)를 갖는 정수 다항식들에 의해 표현될 수 있다. Rq은 f(x) 및 q를 모두 법으로 하는 정수 다항식들의 링(ring of integer polynomials modulo both f(x) and q)일 수 있다. 여기서, q는 q ≡ 1 mod 2n을 만족하는 소수일 수 있고 그리고 ≡는 합동(congruent)을 의미할 수 있다. 예를 들어, 링(Rq)의 원소들은 n 미만(less than)의 차수(degree)와 q 미만의 계수들(coefficients)을 갖는 정수 다항식들에 의해 표현될 수 있다.
복호화 장치(1100)는 링(Rq)으로부터 공개 키(a1)를 샘플링하고 생성할 수 있다. 복호화 장치(1100)는 공개 키(a1) 및 에러(e)에 기초하여 공개 키(a0)를 계산하고 생성할 수 있다. 예를 들어, 복호화 장치(1100)는 공개 키(a1)와 개인 키(s)를 곱하고, 변수(t)와 에러(e)를 곱하고, 그리고 두 곱셈 결과들을 더하여 공개 키(a0)를 계산할 수 있다. 예를 들어, a0 = -(a1s + te)일 수 있다. 복호화 장치(1100)는 덧셈 결과의 부호를 반전시키거나 덧셈 결과에 대한 곱셈 연산 또는 뺄셈 연산 등을 더 실행할 수 있다. 변수(t)는 사전에 결정되는 정수일 수 있고 후술하는 메시지(m)의 공간(space)을 정의하는데 사용될 수 있다.
암호화 장치(1200)는 정규 분포(χ)로부터 에러들(u, g, h)을 샘플링할 수 있다. 암호화 장치(1200)는 공개 키(a0), 에러들(u, g), 변수(t), 및 메시지(m)에 기초하여 암호문(c0)을 계산하고 생성할 수 있다. 메시지는 데이터, 평문(plain text), 평문 메시지 등으로도 지칭될 수 있다. 메시지(m)의 공간은 링(Rq)이거나 링(Rt)일 수 있다. 이하, 메시지(m)의 공간은 링(Rt)인 것으로 가정하지만, 본 발명의 범위는 이에 한정되지 않는다. Rt = Zt[x] / f(x)일 수 있다. t와 q는 상대적으로 소수일 수 있고 예를 들어 변수(t)는 2일 수 있으나 상술한 예시로 본 발명의 범위가 한정되지 않는다. Rt는 f(x) 및 t를 모두 법으로 하는 정수 다항식들의 링일 수 있다. 예를 들어, 메시지(m)는 n 미만의 차수와 t 미만의 계수들을 갖는 정수 다항식들에 의해 표현될 수 있다. 암호화 장치(1200)는 복호화 장치(1100)로 전송하려는 데이터를 인코딩하여 메시지(m)를 생성할 수 있다. 여기서, 데이터는 암호화 장치(1200) 내부에서 생성되거나 혹은 외부 장치로부터 수신된 것일 수 있다. 복호화 장치(1100)는 데이터를 n 비트 메시지(m)로 인코딩할 수 있고 n 비트 메시지(m)는 링(Rt)의 원소에 해당하는 정수 다항식들을 나타낼 수 있다. n = 8이고 8 비트 메시지(m)가 01011001이면, m = x6 + x4 + x3+ 1일 수 있다.
예를 들어, 암호화 장치(1200)는 공개 키(a0)와 에러(u)를 곱하고, 변수(t)와 에러(g)를 곱하고, 그리고 두 곱셈 결과들과 메시지(m)를 더하여 암호문(c0)을 계산할 수 있다. 예를 들어, c0 = a0u + tg + m일 수 있다. 암호화 장치(1200)는 공개 키(a1), 에러들(u, h), 및 변수(t)에 기초하여 암호문(c1)을 계산하고 생성할 수 있다. 예를 들어, 암호화 장치(1200)는 공개 키(a1)와 에러(u)를 곱하고, 변수(t)와 에러(h)를 곱하고, 그리고 두 곱셈 결과들을 더하여 암호문(c1)을 계산할 수 있다. 예를 들어, c1 = a1u + th일 수 있다.
복호화 장치(1100)는 암호문들(c0, c1)과 개인 키(s)에 기초하여 메시지(ψ)를 계산하고 생성할 수 있다. 암호화 장치(1200)의 메시지(m)와 구별되도록, 메시지(ψ)는 암호화 장치(1200)로부터 전송된 암호문들(c0, c1)로부터 계산되므로 전송 메시지(ψ)로 지칭될 수 있다. 예를 들어, 복호화 장치(1100)는 암호문(c1)과 개인 키(s)를 곱하고 그리고 곱셈 결과와 암호문(c0)을 더하여 전송 메시지(ψ)를 계산할 수 있다. 여기서, 개인 키(s)는 키 생성의 개인 키(s)와 동일하다.
암호화 장치(1200)의 평문 메시지(m)를 얻기 위해서는 전송 메시지(ψ)가 복호화되어야 한다. 복호화 장치(1100)가 아닌 종래 복호화 장치도 전송 메시지(ψ)를 복호화할 수 있다. 다만, 암호화 장치(1200)에 의해 사용된 에러들(u, g, h)의 크기들에 따라 종래 복호화 장치에서는 복호화 연산의 오류가 발생할 수 있고 종래 복호화 장치에서는 평문 메시지(m)와 다른 메시지가 계산될 수 있다. 특히 에러들(u, g, h)의 크기들이 특정 수준(특정 값)을 초과하면, 종래 복호화 장치에서는 평문 메시지(m)와 다른 메시지가 계산 혹은 복원될 수 있다. 암호화 장치(1200)에서 에러들(u, g, h)은 공격자가 쉽게 평문 메시지(m)를 얻을 수 없도록 하기 위해 사용된다. 즉, RLWE 암호 알고리즘은 공격자가 쉽게 평문 메시지(m)를 얻을 수 없도록 의도적으로 에러들(u, g, h)을 더하는 방식을 사용한다. 그러므로, 에러들(u, g, h)의 크기들에 따라 종래 복호화 장치에서 발생할 수 있는 복호화 연산의 오류로 인하여 암호화 장치(1200)가 사용할 수 있는 에러들(u, g, h)의 크기가 제한된다면, 암호 알고리즘의 안전성이 취약해지는 문제점이 발생하게 된다.
상술한 문제점을 해소하기 위해, 본 발명의 실시 예에 따른 복호화 장치(1100)는 전송 메시지(ψ)를 그대로 복호화하지 않는다. 대신에, 복호화 장치(1100)는 전송 메시지(ψ)를 수정(modify)하거나, 변경(change)하거나, 또는 조정(tuning)함으로써 수정(modified) 전송 메시지(ψ´)를 계산 및 생성할 수 있다. 좀 더 구체적으로, 복호화 장치(1100)는 전송 메시지(ψ)의 계수의 크기에 따라 수정 전송 메시지(ψ´)의 계수를 결정할 수 있다. 전송 메시지(ψ)는 다항식의 차원에 따른 다수의 계수들을 포함할 수 있으므로 복호화 장치(1100)는 수정 전송 메시지(ψ´)의 계수들 각각을 결정할 수 있다. 복호화 장치(1100) 결정 함수(ζ)를 이용하여 수정 전송 메시지(ψ´)의 계수를 결정할 수 있다. 도 1을 참조하면, 전송 메시지(ψ)의 계수는 coef(ψ)로 표현될 수 있고 수정 전송 메시지(ψ´)의 계수, 즉 결정 함수(ζ)에 의해 결정된 계수는 coef(ψ´)로 표현될 수 있다. 수정 전송 메시지(ψ´)는 수정 메시지(ψ´)로도 지칭될 수 있다.
예를 들어, coef(ψ)가 기준 값(q/2)보다 크고(>; 또는 이상(≥))이고 coef(ψ)가 짝수이면, 복호화 장치(1100)는 coef(ψ)를 1로 수정하여 coef(ψ´)를 1로 결정할 수 있다(coef(ψ´) = 1). coef(ψ)가 기준 값(q/2)보다 크고(>; 또는 이상(≥))이고 coef(ψ)가 홀수이면, 복호화 장치(1100)는 coef(ψ)를 0으로 수정하여 coef(ψ´)를 1로 결정할 수 있다(coef(ψ´) = 0). coef(ψ)가 기준 값(q/2)보다 작으면(<; 또는 이하이면(≤)), 복호화 장치(1100)는 coef(ψ)를 그대로 유지하고 coef(ψ´)를 coef(ψ)로 결정할 수 있다. 예를 들어, 복호화 장치(1100)는 소수(q)에 대한 나눗셈 연산 그리고 제수가 2인 나눗셈 연산의 결과에 대한 반올림(round) 연산, 내림(floor) 연산, 및 올림(ceil) 연산 중 하나의 연산을 실행함으로써 기준 값(q/2)을 계산할 수 있다. 물론, 기준 값은 q/2로 한정되지 않는다. 복호화 장치(1100)는 소수(q)에 대해 제수가 2가 아닌 임의의 자연수인 나눗셈 연산 그리고 나눗셈 연산의 결과에 대한 반올림 연산, 내림 연산, 및 올림 연산 중 하나의 연산을 실행함으로써 기준 값을 계산할 수도 있다.
예를 들어, 전송 메시지(ψ)는 기준 값(q/2)보다 큰(또는, 기준 값(q/2)과 같은) 계수를 가질 수 있으나, 수정 전송 메시지(ψ´)는 기준 값(q/2)보다 큰(또는, 기준 값(q/2)과 같은) 계수를 가지지 않는다. 경우에 따라, 전송 메시지(ψ)의 모든 계수들이 기준 값(q/2)보다 작으면, 수정 전송 메시지(ψ´)는 전송 메시지(ψ)와 동일할 수도 있다.
복호화 장치(1100)는 전송 메시지(ψ) 대신에 결정 함수(ζ)에 의해 결정된 계수를 갖는 수정 전송 메시지(ψ´)를 복호화할 수 있다. 예를 들어, 복호화 장치(1100)는 수정 전송 메시지(ψ´)에 대한 모듈로 연산을 실행하여 복호화 메시지(m´´)를 계산할 수 있고(즉, ψ´ mod t) 그리고 평문 메시지(m)를 복원할 수 있다. 예를 들어, 복호화의 모듈로 연산의 제수(divisor)는 변수(t)일 수 있다. 예를 들어, 변수(t)는 2일 수 있으나 이에 한정되지 않는다. 여기서, 변수(t)는 키 생성의 변수(t)와 동일하다. 복호화 장치(1100)는 전송 메시지(ψ)의 계수를 결정하고 그리고 전송 메시지(ψ) 대신에 결정된 계수를 갖는 수정 전송 메시지(ψ´)를 복호화하므로, 전송 메시지(ψ)의 복호화 오류로 인해 암호화 장치(1200)에서 사용되는 에러들(u, g, h)의 크기들이 제한되는 문제점을 해소할 수 있다.
이하, 전송 메시지(ψ)를 복호화하는 종래 복호화 장치와 수정 전송 메시지(ψ´)를 복호화하는 복호화 장치(1100)의 동작 예시들이 설명된다. 다만, 후술하는 수치들로 본 발명의 범위가 한정되지 않는다. n은 8이고, q는 257이고, 그리고 t는 2인 것으로 가정한다. 평문 메시지(m)는 {degree(7)}[1. 0. 0. 0. 0. 1. 1. 1.]인 것으로 가정한다(즉, m = x7 + x2 + x1 + 1). 복호화 장치(1100)는 {degree(7)}[161. -207. -91. -170. 100. -76. -49. -185.]인 공개 키(a0)(즉, a0 = 161x7 - 207x6 - 91x5 - 170x4 + 100x3 - 76x2 - 49x1 - 185) 그리고 {degree(7)}[77. -118. -150. 173. 167. 133. 5. -183.]인 공개 키(a1)(즉, a1 = 77x7 - 118x6 - 150x5 + 173x4 + 167x3 + 133x2 + 5x1 - 183)를 생성하는 것으로 가정한다. 암호화 장치(1200)는 상술한 공개 키들(a0, a1)로부터 {degree(7)}[-25. 125. 234. 89. -48. -44. -3. -67.]인 암호문(c0)(즉, c0 = -25x7 + 125x6 + 234x5 + 89x4 - 48x3 - 44x2 - 3x1 - 67) 그리고 {degree(7)}[216. -136. 178. 5. -39. -13. 21. -176.]인 암호문(c1)(즉, c1 = 216x7 - 136x6 + 178x5 + 5x4 - 39x3 - 13x2 + 21x1 - 176)을 생성하는 것으로 가정한다. 복호화 장치(1100)는 상술한 암호문들(c0, c1)로부터 {degree(7)}[-11. 253. 2. -2. 0. -5. -3. -254.]인 전송 메시지(ψ)(즉, ψ = -11x7 + 253x6 + 2x5 - 2x4 - 5x2 - 3x1 - 254)를 계산하는 것으로 가정한다.
종래 복호화 장치는 전송 메시지(ψ)를 복호화할 것이고 전송 메시지(ψ)에 대해 제수가 변수(t)인 모듈로 연산을 실행할 수 있다. 종래 복호화 장치는 복호화 결과로서 degree(7)}[1. 1. 0. 0. 0. 1. 1. 0.]인 복호화 메시지(m´)(즉, m´ = x7 + x6 + x2 + x1)를 계산할 수 있다. 종래 복호화 장치의 복호화 메시지(m´)는 평문 메시지(m)와 상이하다.
반면에, 복호화 장치(1100)는 전송 메시지(ψ)를 수정하여 수정 전송 메시지(ψ´)를 계산할 수 있다. 복호화 장치(1100)는 수정 전송 메시지(ψ´)의 계수들 각각을 결정할 수 있고 그리고 {degree(7)}[-11. 0. 2. -2. 0. -5. -3. 1.]인 수정 전송 메시지(ψ´)(즉, ø´ = -11x7 + 2x5 - 2x4 - 5x2 - 3x1 + 1)를 계산할 수 있다. 전송 메시지(ψ)와 수정 전송 메시지(ψ´)를 동시에 참조하면, 복호화 장치(1100)는 결정 함수(ζ)에 따라, 기준 값(257/2)보다 작은 x7, x5, x4, x3, x2, x1의 계수들(-11, 2, -2, 0, -5, -3)을 유지할 수 있고, 기준 값(257/2)보다 크고 홀수인 x6의 계수 253을 0으로 수정할 수 있고, 그리고 기준 값(257/2)보다 크고 짝수인 x0의 계수 -254를 1로 수정할 수 있다. 복호화 장치(1100)는 수정 전송 메시지(ψ´)에 대해 제수가 변수(t)인 모듈로 연산을 실행할 수 있다. 복호화 장치(1100)는 복호화 결과로서 degree(7)}[1. 0. 0. 0. 0. 1. 1. 1.]인 복호화 메시지(m´´)(즉, m´´ = x7 + x2 + x1 + 1)를 계산할 수 있다. 복호화 장치(1100)의 복호화 메시지(m´´)는 평문 메시지(m)와 동일하다. 즉, 종래 복호화 장치는 평문 메시지(m)와 상이한 복호화 메시지(m´)를 계산하지만 복호화 장치(1100)는 에러들(u, g, h)의 크기들에 관계없이 평문 메시지(m)와 동일한 복호화 메시지(m´´)를 계산할 수 있다.
도 2는 도 1의 통신 시스템의 동작 방법의 순서도를 예시적으로 도시한다. 복호화 장치(1100)에 의해 수행되는 S110 단계 및 S120 단계는 RLWE 암호 알고리즘의 키 생성에 해당할 수 있고, 암호화 장치(1200)에 의해 수행되는 S140 단계 및 S150 단계는 RLWE 암호 알고리즘의 암호화에 해당할 수 있고, 그리고 복호화 장치(1100)에 의해 수행되는 S170 단계 내지 S190 단계는 RLWE 암호 알고리즘의 복호화에 해당할 수 있다.
S110 단계에서, 복호화 장치(1100)는 정규 분포(χ)로부터 개인 키(s)를 샘플링할 수 있고, 링(Rq)으로부터 공개 키(a1)를 샘플링할 수 있고, 그리고 정규 분포(χ)로부터 에러(e)를 샘플링할 수 있다. 전술한대로, f(x)는 n차 정수 다항식이다. 예를 들어, 개인 키(s), 공개 키(a1), 및 에러(e) 각각은 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. S120 단계에서, 복호화 장치(1100)는 개인 키(s) 및 공개 키(a1)에 기초하여 공개 키(a0)를 계산할 수 있다. 복호화 장치(1100)는 개인 키(s) 및 공개 키(a1)의 곱셈 결과에 에러(e)를 더함으로써 공개 키(a0)를 계산할 수 있다. 예를 들어, 공개 키(a0)는 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. S130 단계에서, 복호화 장치(1100)는 공개 키들(pk = (a0, a1))을 암호화 장치(1200)로 전송(제공 또는 출력)할 수 있다. 암호화 장치(1200)는 복호화 장치(1100)로부터 공개 키들(pk = (a0, a1))을 수신할 수 있다.
S140 단계에서, 암호화 장치(1200)는 정규 분포(χ)로부터 에러들(u, g, h)을 샘플링할 수 있다. 복호화 장치(1100)에 의해 사용되는 정규 분포(χ)와 암호화 장치(1200)에 의해 사용되는 정규 분포(χ)는 서로 상이할 수 있다. 예를 들어, 에러들(u, g, h) 각각은 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. S150 단계에서, 암호화 장치(1200)는 암호문들(c0, c1)을 계산할 수 있다. 암호화 장치(1200)는 공개 키(a0)와 평문 메시지(m)에 기초하여 암호문(c0)을 계산할 수 있다. 예를 들어, 평문 메시지(m)는 n-1차 정수 다항식이고 변수(t)보다 작은 계수들을 가질 수 있다. 다른 예를 들어, 평문 메시지(m)는 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. 암호화 장치(1200)는 공개 키(a0)와 에러(u)의 곱셈 결과, 변수(t)와 에러(g)의 곱셈 결과, 그리고 평문 메시지(m)를 더함으로써 암호문(c0)을 계산할 수 있다. 암호화 장치(1200)는 공개 키(a1)에 기초하여 암호문(c1)을 계산할 수 있다. 암호화 장치(1200)는 공개 키(a1)와 에러(u)의 곱셈 결과와 변수(t)와 에러(h)의 곱셈 결과를 더함으로써 암호문(c1)을 계산할 수 있다. 예를 들어, 암호문들(c0, c1) 각각은 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. S160 단계에서, 암호화 장치(1200)는 암호문들(ct = (c0, c1))을 복호화 장치(1100)로 전송할 수 있다. 복호화 장치(1100)는 암호화 장치(1200)로부터 암호문들(ct = (c0, c1))을 수신할 수 있다.
S170 단계에서, 복호화 장치(1100)는 암호문들(c0, c1)과 개인 키(s)에 기초하여 전송 메시지(ψ)를 계산할 수 있다. 복호화 장치(1100)는 암호문(c1)과 개인 키(s)의 곱셈 결과 및 암호문(c0)을 더함으로써 전송 메시지(ψ)를 계산할 수 있다. 예를 들어, 전송 메시지(ψ)는 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. S180 단계에서, 복호화 장치(1100)는 전송 메시지(ψ)를 수정하여 수정 전송 메시지(ψ´)를 계산할 수 있다. 예를 들어, 수정 전송 메시지(ψ´)는 n-1차 정수 다항식이고 소수(q)보다 작은 계수들을 가질 수 있다. 복호화 장치(1100)는 전송 메시지(ψ)의 계수와 소수(q)에 기반한 기준 값(q/2)의 비교 결과에 따라 수정 전송 메시지(ψ´)의 계수를 결정할 수 있다. S190 단계에서, 복호화 장치(1100)는 수정 전송 메시지(ψ´)를 복호화할 수 있고 복호화 메시지(m´´)를 계산할 수 있다. 예를 들어, 복호화 장치(1100)는 수정 전송 메시지(ψ´)에 대해 제수가 변수(t)인 모듈로 연산을 실행할 수 있다.
도 3은 도 2의 S180 단계의 세부 단계들을 좀 더 상세하게 도시한다. S181 단계에서, 복호화 장치(1100)는 전송 메시지(ψ)의 계수인 coef(ψ)가 기준 값(q/2) 초과(>; 또는 이상(≥))인지 여부를 판별할 수 있다. 전술한대로, 복호화 장치(1100)는 소수(q)에 대한 나눗셈 연산 그리고 제수가 2인 나눗셈 연산의 결과에 대한 반올림 연산, 내림 연산, 및 올림 연산 중 하나의 연산을 실행할 수 있고 그리고 나눗셈 연산과 반올림 연산, 내림 연산, 및 올림 연산 중 하나의 연산의 실행 결과를 기준 값으로 계산할 수 있다. 예를 들어, 복호화 장치(1100)는 coef(ψ)와 기준 값(q/2)을 비교할 수 있다.
coef(ψ) > q/2 이거나 coef(ψ) ≥ q/2이면, S182 단계에서, 복호화 장치(1100)는 coef(ψ)가 짝수인지 혹은 홀수인지 여부를 확인할 수 있다. 예를 들어, 복호화 장치(1100)는 coef(ψ)에 대해 제수가 2인 나눗셈 연산을 실행하고 나머지를 확인할 수 있다. 복호화 장치(1100)는 coef(ψ)를 2로 나누고 나머지를 확인할 수 있다. 여기서, 2는 전술한 변수(t)에 기인한 것이다. coef(ψ)가 홀수이면, S183 단계에서, 복호화 장치(1100)는 수정 전송 메시지(ψ´)의 계수인 coef(ψ´)를 0으로 결정하고 coef(ψ)를 0으로 수정할 수 있다. coef(ψ)가 짝수이면, S184 단계에서, 복호화 장치(1100)는 coef(ψ´)를 1로 결정하고 coef(ψ)를 1로 수정할 수 있다. coef(ψ) < q/2 이거나 coef(ψ) ≤ q/2이면, S185 단계에서, 복호화 장치(1100)는 coef(ψ´)를 coef(ψ)로 결정하고 coef(ψ)를 유지할 수 있다.
도 3을 참조하여 전술한 S181 단계 내지 S185 단계들은 변수(t)가 2인 경우에 관한 것이다. 예를 들어, 변수(t)는 2 이상일 수 있다. 도 3의 도시와 달리, S182 단계에서, 복호화 장치(1100)는 coef(ψ)를 변수(t)로 나누고 나머지를 확인할 수 있다. 도 3의 도시와 달리, S183 단계 및 S184 단계에서, 나머지에 따라 복호화 장치(1100)는 coef(ψ´)를 복수의 값들 중 하나의 값으로 결정하고 coef(ψ)를 해당 값으로 수정할 수 있다. 복수의 값들은 나머지가 가질 수 있는 값들일 수 있다. 정리하면, coef(ψ)가 기준 값(q/2) 미만 또는 이하이면, coef(ψ´)는 coef(ψ)일 수 있다. coef(ψ)가 기준 값(q/2) 초과 또는 이상이면, coef(ψ´)는 coef(ψ)를 변수(t)로 나누었을 때의 나머지가 가질 수 있는 값들 중 어느 하나로 수정될 수 있다.
도 4는 본 발명의 실시 예에 따라 도 1의 통신 시스템의 블록도를 좀 더 상세하게 도시한다. 통신 시스템(1000a)은 도 1의 통신 시스템(1000)의 일 예시일 수 있다. 복호화 장치(1100a)는 도 1의 복호화 장치(1100)의 일 예시일 수 있다. 암호화 장치(1200a)는 도 1의 암호화 장치(1200)의 일 예시일 수 있다.
복호화 장치(1100a)는 내부 버스를 통해 서로 통신하는 프로세서(1110), 메모리(1120), 및 인터페이스 회로(1130)를 포함할 수 있다. 프로세서(1110)는 하드웨어 장치로서 메모리(1120)에 저장된 복호화 프로그램 코드를 실행할 수 있다. 예를 들어, 프로세서(1110)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), 및 NPU(neural processing unit) 등의 동종 또는 이종의 다수의 코어들 그리고 다수의 코어들에 의해 공유되는 캐시 메모리 등을 포함할 수 있다. 프로세서(1110)는 복호화 프로그램 코드의 명령어들에 대한 페치(fetch), 실행, 데이터 요청, 데이터 저장 등과 같은 프로세싱 연산들, 산술 연산들 등을 실행할 수 있다. 예를 들어, 프로세서(1110)는 메모리(1120)와 인터페이스 회로(1130)를 제어할 수 있다. 프로세서(1110)의 개수는 하나 이상일 수 있다.
메모리(1120)는 프로세서(1110)에 의해 실행 가능한 복호화 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 즉 하드웨어 장치일 수 있다. 예를 들어, 메모리(1120)는 DRAM(dynamic random access memory) 장치, SRAM(static random access memory) 장치, TRAM(thyristor random access memory) 장치, 낸드 플래시 메모리(nand flash memory) 장치, 노어 플래시 메모리(nor flash memory) 장치, RRAM(resistive random access memory) 장치, FRAM(ferroelectric random access memory) 장치, PRAM(phase change random access memory) 장치, MRAM(magnetic random access memory) 장치 등의 다양한 메모리 장치들을 이용하여 구현될 수 있다. 메모리(1120)의 개수는 하나 이상일 수 있다. 또한, 메모리(1120)는 복호화 장치(1100)와 통신 가능한 외부 장치로서도 구현될 수도 있다.
메모리(1120)에 저장되고 프로세서(1110)에 의해 실행되는 복호화 프로그램 코드는 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 키 생성 및 복호화에 관한 명령어들을 포함할 수 있다. 예를 들어, 프로세서(1110)는 메모리(1120)에 저장된 복호화 프로그램 코드를 실행함으로써, 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 키 생성 및 복호화를 수행할 수 있고 S110 단계, S120 단계, S170 단계, S181 단계 내지 S185 단계를 포함하는 S180 단계, S190 단계를 수행할 수 있다. 또한, 프로세서(1110)는 상술한 단계들을 수행하면서, 정규 분포(χ), k, n, q, t, 공개 키들(a0, a1), 개인 키(s), 에러(e), 암호문들(c0, c1), 전송 메시지(ψ), 수정 전송 메시지(ψ´), 그리고 상술한 단계들의 중간 연산 결과(들)를 생성하고 메모리(1120)에 저장할 수 있다.
인터페이스 회로(1130)는 하드웨어 장치로서 다양한 유선 혹은 무선의 규약들에 따라 암호화 장치(1200)의 인터페이스 회로(1230)와 통신할 수 있다. 인터페이스 회로(1130)는 프로세서(1110)의 요청에 따라, 프로세서(1110)에 의해 생성되고 메모리(1120)에 저장된 공개 키들(a0, a1)을 암호화 장치(1200)의 인터페이스 회로(1230)로 전송할 수 있다. 인터페이스 회로(1130)는 암호화 장치(1200)의 인터페이스 회로(1230)로부터 전송되는 암호문들(c0, c1)을 수신할 수 있고 그리고 암호문들(c0, c1)을 메모리(1120) 또는 프로세서(1110)로 제공할 수 있다.
암호화 장치(1200a)는 내부 버스를 통해 서로 통신하는 프로세서(1210), 메모리(1220), 및 인터페이스 회로(1230)를 포함할 수 있다. 프로세서(1210)는 하드웨어 장치로서 메모리(1220)에 저장된 암호화 프로그램 코드를 실행할 수 있다. 예를 들어, 프로세서(1210)는 프로세서(1110)와 유사하게 구현될 수 있다. 프로세서(1210)는 암호화 프로그램 코드의 명령어들에 대한 페치, 실행, 데이터 요청, 데이터 저장 등과 같은 프로세싱 연산들, 산술 연산들 등을 실행할 수 있다. 예를 들어, 프로세서(1210)는 메모리(1220)와 인터페이스 회로(1230)를 제어할 수 있다. 프로세서(1210)의 개수는 하나 이상일 수 있다.
메모리(1220)는 프로세서(1210)에 의해 실행 가능한 암호화 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 즉 하드웨어 장치일 수 있다. 예를 들어, 메모리(1220)는 메모리(1120)와 유사하게 구현될 수 있다. 메모리(1220)의 개수는 하나 이상일 수 있다. 또한, 메모리(1220)는 암호화 장치(1200)와 통신 가능한 외부 장치로서도 구현될 수도 있다.
메모리(1220)에 저장되고 프로세서(1210)에 의해 실행되는 복호화 프로그램 코드는 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 암호화에 관한 명령어들을 포함할 수 있다. 예를 들어, 프로세서(1210)는 메모리(1220)에 저장된 암호화 프로그램 코드를 실행함으로써, 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 암호화를 수행할 수 있고 S140 단계 및 S150 단계를 수행할 수 있다. 또한, 프로세서(1210)는 상술한 단계들을 수행하면서, 정규 분포(χ), k, n, q, t, 공개 키들(a0, a1), 에러들(u, g, h), 암호문들(c0, c1), 그리고 상술한 단계들의 중간 연산 결과(들)를 생성하고 메모리(1220)에 저장할 수 있다.
인터페이스 회로(1230)는 하드웨어 장치로서 다양한 유선 혹은 무선의 규약들에 따라 복호화 장치(1100)의 인터페이스 회로(1130)와 통신할 수 있다. 인터페이스 회로(1230)는 프로세서(1210)의 요청에 따라, 프로세서(1210)에 의해 생성되고 메모리(1220)에 저장된 암호문들(c0, c1)을 복호화 장치(1100)의 인터페이스 회로(1130)로 전송할 수 있다. 인터페이스 회로(1230)는 복호화 장치(1100)의 인터페이스 회로(1130)로부터 전송되는 공개 키들(a0, a1)을 수신할 수 있고 그리고 공개 키들(a0, a1)을 메모리(1220) 또는 프로세서(1210)로 제공할 수 있다.
도 5는 본 발명의 다른 실시 예에 따라 도 1의 통신 시스템의 블록도를 좀 더 상세하게 도시한다. 통신 시스템(1000b)은 도 1의 통신 시스템(1000)의 일 예시일 수 있다. 복호화 장치(1100b)는 도 1의 복호화 장치(1100)의 일 예시일 수 있다. 암호화 장치(1200b)는 도 1의 암호화 장치(1200)의 일 예시일 수 있다. 통신 시스템(1000b)와 통신 시스템(1000a) 간의 차이점이 주로 설명될 것이다. 통신 시스템(1000a)은 하드웨어 방식과 소프트웨어 방식으로 구현되는 통신 시스템(1000)의 예시일 수 있다. 반면에, 통신 시스템(1000b)은 하드웨어 방식으로 구현되는 통신 시스템(1000)의 예시일 수 있다.
복호화 장치(1100b)는 내부 버스를 통해 서로 통신하는 키 생성 회로(1140), 복호화 회로(1150), 및 인터페이스 회로(1130)를 포함할 수 있다. 키 생성 회로(1140)는 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 키 생성을 수행할 수 있고 S110 단계 및 S120 단계를 수행할 수 있다. 키 생성 회로(1140)는 상술한 단계들을 수행하면서, 정규 분포(χ), k, n, q, t, 공개 키들(a0, a1), 개인 키(s), 에러(e), 그리고 상술한 단계들의 중간 연산 결과(들)를 생성 및 저장할 수 있다. 예를 들어, 저장 위치는 키 생성 회로(1140)의 내부 메모리 혹은 복호화 장치(1100b)의 메모리일 수 있다. 복호화 회로(1150)는 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 복호화를 수행할 수 있고 S170 단계, S181 단계 내지 S185 단계를 포함하는 S180 단계, S190 단계를 수행할 수 있다. 복호화 회로(1150)는 상술한 단계들을 수행하면서, 암호문들(c0, c1), 전송 메시지(ψ), 수정 전송 메시지(ψ´), 그리고 상술한 단계들의 중간 연산 결과(들)를 생성 및 저장할 수 있다. 예를 들어, 저장 위치는 복호화 회로(1150)의 내부 메모리 혹은 복호화 장치(1100b)의 메모리일 수 있다. 예를 들어, 복호화 장치(1100b)는 도 4의 프로세서(1110) 및 메모리(1120)를 더 포함할 수도 있다. 복호화 장치(1100b)의 인터페이스 회로(1130)는 도 4의 인터페이스 회로(1130)와 유사하게 구현될 수 있다. 키 생성 회로(1140), 복호화 회로(1150), 및 인터페이스 회로(1130)각각은 상술한 동작들을 수행하기 위한 아날로그 회로(들), 디지털 회로(들), 논리 회로(들) 등을 포함할 수 있다.
암호화 장치(1200b)는 내부 버스를 통해 서로 통신하는 암호화 회로(1240) 및 인터페이스 회로(1230)를 포함할 수 있다. 암호화 회로(1240)는 도 1 내지 도 3에서 전술한 RLWE 암호 알고리즘의 암호화를 수행할 수 있고 S140 단계 및 S150 단계를 수행할 수 있다. 암호화 회로(1240)는 상술한 단계들을 수행하면서, 정규 분포(χ), k, n, q, t, 공개 키들(a0, a1), 에러들(u, g, h), 암호문들(c0, c1), 그리고 상술한 단계들의 중간 연산 결과(들)를 생성 및 저장할 수 있다. 예를 들어, 저장 위치는 암호화 회로(1240)의 내부 메모리 혹은 암호화 장치(1200b)의 메모리일 수 있다. 예를 들어, 암호화 장치(1200b)는 도 4의 프로세서(1210) 및 메모리(1220)를 더 포함할 수도 있다. 암호화 장치(1200b)의 인터페이스 회로(1230)는 도 4의 인터페이스 회로(1230)와 유사하게 구현될 수 있다. 암호화 회로(1240) 및 인터페이스 회로(1230) 각각은 상술한 동작들을 수행하기 위한 아날로그 회로(들), 디지털 회로(들), 논리 회로(들) 등을 포함할 수 있다.
도 6은 도 5의 키 생성 회로의 블록도를 예시적으로 도시한다. 키 생성 회로(1140)는 샘플러(1141), 곱셈기(1142), 곱셈기(1143), 및 덧셈기(1144)를 포함할 수 있다. 샘플러(1141)는 정규 분포(χ)를 생성하고 정규 분포(χ)로부터 개인 키(s)와 에러(e)를 샘플링할 수 있다. 또한, 샘플러(1141)는 링(Rq)으로부터 공개 키(a1)를 샘플링할 수 있다. 곱셈기(1142)는 변수(t)와 에러(e)를 곱하고 곱셈 결과(te)를 덧셈기(1144)로 제공할 수 있다. 곱셈기(1142)는 공개 키(a1)와 개인 키(s)를 곱하고 곱셈 결과(a1s)를 덧셈기(1144)로 제공할 수 있다. 덧셈기(1144)는 두 곱셈 결과들(te, a1s)을 더할 수 있고 공개 키(a0)를 계산할 수 있다. 도시되진 않았으나, 덧셈기(1144)는 덧셈 결과의 부호를 반전시키거나 덧셈 결과에 대한 곱셈 연산 또는 뺄셈 연산 등을 실행하는 내부 회로를 더 포함할 수 있다. 키 생성 회로(1140)는 공개 키들(a0, a1)을 인터페이스 회로(1130) 또는 복호화 장치(1100b)의 메모리로 제공할 수 있다. 키 생성 회로(1140)는 개인 키(s)를 복호화 회로(1150)로 제공할 수 있다. 구현 방식에 관계없이, 개인 키(s)는 복호화 장치(1100)의 외부로 제공되지 않는다.
도 7은 도 5의 복호화 회로의 블록도를 예시적으로 도시한다. 복호화 회로(1150)는 곱셈기(1152)와 덧셈기(1153)를 포함하는 계산기(1151), 비교기(1154), 결정기(1155), 및 연산기(1156)를 포함할 수 있다. 곱셈기(1152)는 암호문(c1)과 개인 키(s)를 곱하고 그리고 곱셈 결과(c1s)를 덧셈기(1153)로 제공할 수 있다. 덧셈기(1153)는 곱셈 결과(c1s)와 암호문(c0)을 더할 수 있고 전송 메시지(ψ)를 계산할 수 있다. 비교기(1154)는 전송 메시지(ψ)와 기준 값(q/2)를 비교할 수 있고 비교 결과(CR)를 결정기(1155)로 제공할 수 있다. 결정기(1155)는 비교 결과(CR)에 기초하여 수정 전송 메시지(ψ´)의 계수를 결정할 수 있고 수정 전송 메시지(ψ´)를 연산기(1156)로 제공할 수 있다. 연산기(1156)는 수정 전송 메시지(ψ´)에 대한 복호화 연산(예를 들어, 제수가 변수(t)인 모듈로 연산)을 실행할 수 있고 복호화 메시지(m´´)를 생성할 수 있다.
결정기(1155)는 확인기(1155_1), 멀티플렉서(1155_2), 및 멀티플렉서(1155_3)를 포함할 수 있다. 확인기(1155_1)는 coef(ψ)가 짝수인지 혹은 홀수인지를 확인할 수 있다. 예를 들어, 확인기(1155_1)는 coef(ψ)에 대해 제수가 변수(t)인 나눗셈 연산을 실행하고 나머지를 확인할 수 있다. 확인기(1155_1)는 확인 결과(혹은 나머지)를 멀티플렉서(1155_2)로 제공할 수 있다. 멀티플렉서(1155_2)는 확인 결과에 따라 다수의 값들(0, 1) 중 하나의 값을 선택하고 선택된 값을 멀티플렉서(1155_3)로 제공할 수 있다. 멀티플렉서(1155_2)는 coef(ψ)가 짝수임을 나타내는 확인 결과에 기초하여 1을 선택할 수 있다. 멀티플렉서(1155_2)는 coef(ψ)가 홀수임을 나타내는 확인 결과에 기초하여 0을 선택할 수 있다. 도 7은 변수(t)가 2인 경우에 관한 것이며, 2 이상인 변수(t)의 값에 따라 멀티플렉서(1155_2)가 선택할 수 있는 다수의 값들의 개수도 2 이상일 수 있다. 멀티플렉서(1155_3)는 비교 결과(CR)에 기초하여 coef(ψ) 및 멀티플렉서(1155_2)에 의해 선택된 값(0/1) 중 하나의 값을 선택하고 선택된 값을 coef(ψ´)으로서 출력할 수 있다. 멀티플렉서(1155_3)는 coef(ψ) < q/2 이거나 coef(ψ) ≤ q/2임을 나타내는 비교 결과(CR)에 기초하여 coef(ψ)를 선택할 수 있다. 멀티플렉서(1155_3)는 coef(ψ) > q/2 이거나 coef(ψ) ≥ q/2임을 나타내는 비교 결과(CR)에 기초하여 멀티플렉서(1155_2)에 의해 선택된 값(0/1)을 선택할 수 있다.
도 8은 도 5의 암호화 회로의 블록도를 예시적으로 도시한다. 암호화 회로(1240)는 샘플러(1241), 곱셈기(1242), 곱셈기(1243), 인코더(1244), 덧셈기(1245), 곱셈기(1246), 곱셈기(1247), 및 덧셈기(1248)를 포함할 수 있다. 샘플러(1241)는 정규 분포(χ)를 생성하고 정규 분포(χ)로부터 에러들(u, g, h)을 샘플링할 수 있다. 샘플러(1241)는 에러(u)를 곱셈기들(1242, 1246)로, 에러(g)를 곱셈기(1243)로, 그리고 에러(h)를 곱셈기(1247)로 제공할 수 있다. 곱셈기(1242)는 공개 키(a0)와 에러(u)를 곱하고 곱셈 결과(a0u)를 덧셈기(1245)로 제공할 수 있다. 곱셈기(1243)는 변수(t)와 에러(g)를 곱하고 곱셈 결과(tg)를 덧셈기(1245)로 제공할 수 있다. 인코더(1244)는 암호화 장치(1200b)의 데이터를 인코딩하고 메시지(m)를 생성할 수 있다. 예를 들어, 인코더(1244)는 데이터를 인코딩하여 링(Rt = Zt[x] / f(x))에 속하는 n 비트 메시지(m)를 생성할 수 있다. 덧셈기(1245)는 두 곱셈 결과들(a0u, tg)과 메시지(m)를 더하여 암호문(c0)을 생성할 수 있다. 곱셈기(1246)는 공개 키(a1)와 에러(u)를 곱하고 곱셈 결과(a1u)를 덧셈기(1248)로 제공할 수 있다. 곱셈기(1246)는 변수(t)와 에러(h)를 곱하고 곱셈 결과(th)를 덧셈기(1248)로 제공할 수 있다. 덧셈기(1248)는 두 곱셈 결과들(a1u, th)을 더하여 암호문(c1)을 생성할 수 있다.
도 9는 본 발명의 실시 예에 따른 암복호화 장치의 블록도를 예시적으로 도시한다. 암복호화 장치(2000a)는 다른 전자 장치(미도시)와 통신할 수 있고 도 1 내지 도 8을 참조하여 설명된 RLWE의 키 생성, 암호화, 및 복호화를 모두 수행할 수 있다. 암복호화 장치(2000a)는 내부 버스를 통해 서로 통신하는 프로세서(2110), 메모리(2120), 및 인터페이스 회로(2130)를 포함할 수 있다. 예를 들어, 프로세서(2110)는 프로세서(2110)는 프로세서들(1110, 1210)과 유사하게 구현되고 메모리(2120)에 저장된 암호화 프로그램 코드 및 복호화 프로그램 코드를 모두 실행할 수 있다. 메모리(2120)는 메모리들(1120, 1220)과 유사하게 구현되고 프로세서(2110)에 의해 실행 가능한 암호화 프로그램 코드 및 복호화 프로그램 코드를 저장할 수 있다. 인터페이스 회로(2130)는 인터페이스 회로들(1130, 1230)과 유사하게 구현되고 다른 전자 장치로 공개 키들(a0, a1)을 전송하거나, 다른 전자 장치로부터 공개 키들(a0, a1)을 수신하거나, 다른 전자 장치로 암호문들(c0, c1)을 전송하거나, 또는 다른 전자 장치로부터 암호문들(c0, c1)을 수신할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 암복호화 장치의 블록도를 예시적으로 도시한다. 암복호화 장치(2000b)는 내부 버스를 통해 서로 통신하는 인터페이스 회로(2130), 키 생성 회로(2140), 복호화 회로(2150), 및 암호화 회로(2160)를 포함할 수 있다. 인터페이스 회로(2130)는 도 9의 인터페이스 회로(2130)와 실질적으로 동일할 수 있다. 키 생성 회로(2140)는 도 5의 키 생성 회로(1140)와 실질적으로 동일할 수 있다. 복호화 회로(2150)는 도 5의 복호화 회로(1150)와 실질적으로 동일할 수 있다. 암호화 회로(2160)는 도 5의 암호화 회로(1240)와 실질적으로 동일할 수 있다.
도 11은 본 발명의 실시 예에 따른 전자 장치의 블록도를 예시적으로 도시한다. 전자 장치(3000)는 도 1 내지 도 10에서 전술한 복호화 장치들(1100, 1100a, 1100b), 암호화 장치들(1200, 1200a, 1200b), 또는 암복호화 장치들(2000a, 2000b) 각각의 구현 예시일 수 있다. 전자 장치(3000)는 컴퓨팅 시스템, 메모리 시스템, 전자 시스템, 통신 시스템 등으로도 지칭될 수 있다. 예를 들어, 전자 장치(3000)는 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 모바일 장치, 스마트폰, PDA(Personal Digital Assistant), PMP(Portable Media Player), 웨어러블(Wearable) 장치, 비디오 게임기(Video Game Console), 워크스테이션, 서버(Server), MIPI 연합(Mobile Industry Processor Interface Alliance)에 의해 제안된 인터페이스 규약을 이용하거나 지원할 수 있는 데이터 처리 장치, 가전 기기, 블랙박스, 드론, IoT(Internet of Things) 장치, 스마트 카드, 보안 장치 등일 수 있다. 전자 장치(3000)는 시스템 온 칩(3100)을 포함할 수 있다. 시스템 온 칩(3100)은 프로세서(3110), 암호화기/복호화기(3120), 및 메모리(3130)를 포함할 수 있다. 프로세서(3110)는 전술한 프로세서들(1110, 1210, 2110) 중 어느 하나의 예시일 수 있다. 암호화기/복호화기(3120)는 키 생성 회로들(1140, 2140), 복호화 회로들(1150, 2150), 암호화 회로들(1240, 2160) 중 적어도 일부 또는 전부를 포함할 수 있다. 전술한대로, RLWE 암호 알고리즘이 하드웨어 방식과 소프트웨어 방식의 조합으로 구현되는 경우, 시스템 온 칩(3100)은 암호화기/복호화기(3120)를 포함하지 않을 수도 있다. 메모리(3130)는 전술한 메모리들(1120, 1220, 2120) 중 어느 하나의 예시일 수 있다.
전자 장치(3000)는 디스플레이(3220), 및 이미지 센서(3230)를 포함할 수 있다. 시스템 온 칩(3100)은 DigRF 마스터(3141), DSI(Display Serial Interface) 호스트(3150), CSI(Camera Serial Interface) 호스트(3160), 및 물리 계층(3142)을 더 포함할 수 있다. DSI 호스트(3150)는 DSI에 따라 디스플레이(3220)의 DSI 장치(3225)와 통신할 수 있다. DSI 호스트(3150)에는 시리얼라이저(SER)가 구현될 수 있고, DSI 장치(3225)에는 디시리얼라이저(DES)가 구현될 수 있다. CSI 호스트(3160)는 CSI에 따라 이미지 센서(3230)의 CSI 장치(3235)와 통신할 수 있다. CSI 호스트(3160)에는 디시리얼라이저(DES)가 구현될 수 있고, CSI 장치(3235)에는 시리얼라이저(SER)가 구현될 수 있다. 전자 장치(3000)는 시스템 온 칩(3100)과 통신하는 RF(Radio Frequency) 칩(3240)을 더 포함할 수 있다. RF 칩(3240)은 물리 계층(3242), DigRF 슬레이브(3244), 및 안테나(3246)를 포함할 수 있다. 예를 들어, 물리 계층(3242)과 물리 계층(3140)은 MIPI 연합에 의해 제안된 DigRF 인터페이스에 의해 서로 데이터를 교환할 수 있다. 전자 장치(3000)는 워킹 메모리(3250) 및 임베디드/카드 저장 장치(3255)를 더 포함할 수 있다. 워킹 메모리(3250) 및 임베디드/카드 저장 장치(3255)는 시스템 온 칩(3100)에 관한 데이터를 저장하거나 출력할 수 있다. 임베디드 저장 장치(3255)는 전자 장치(3000) 내에 내장될 수 있고 그리고 카드 저장 장치(3255)는 착탈식(removable) 장치로서 전자 장치(3000)에 장착될 수 있다. 전자 장치(3000)는 Wimax(World Interoperability for Microwave Access, 3260), WLAN(Wireless Local Area Network, 3262), UWB(Ultra Wideband, 3264) 등과 같은 통신 모듈을 통해 외부 장치/시스템과 통신할 수 있다. 전자 장치(3000)는 스피커(3270), 마이크(3275), GPS(Global Positioning System) 장치(3280), 및 브릿지(Bridge) 칩(3290)을 더 포함할 수 있다.
도 12는 본 발명의 실시 예에 따른 통신 시스템을 예시적으로 도시한다. 도 1에서 전술한 통신 시스템(1000)은 통신 시스템(4000)의 일부에 해당할 수 있다. 통신 시스템(4000)은 IoT 통신 시스템 혹은 M2M(Machine to Machine) 통신 시스템의 일 예시에 해당할 수 있다. 통신 시스템(4000)은 어플리케이션 계층(4100), 네트워크 계층(4200), 및 인식(perception) 계층(4300)을 포함할 수 있다. 인식 계층(4300)은 종단(edge) 장치들(4310~4340)을 포함할 수 있다. 예를 들어, 종단 장치들(4310~4340)은 통신 시스템(4000)의 주변 환경과 상호 작용하는 센서, 작동기(actuator) 등을 포함할 수 있다. 네트워크 계층(4200)은 게이트웨이들(4210, 4220)을 포함할 수 있고 그리고 어플리케이션 계층(4100)과 조율하여(in coordinate with) 네트워크를 통해 인식 계층(4300)의 종단 장치들(4310~4340)을 검색하고, 발견하고, 그리고 연결할 수 있다. 게이트웨이들(4210, 4220)은 종단 장치들(4310~4340)과 서버(4110) 간의 데이터 양방향 전송을 수행할 수 있다. 어플리케이션 계층(4100)은 사용자를 위한 서비스 및 기능을 갖춘 서버(4110; 혹은 클라우드 장치)를 포함할 수 있다. 예를 들어, 서버(4110)는 게이트웨이들(4210, 4220)을 통해 종단 장치들(4310~4340)의 데이터를 수집, 관리, 또는 분석할 수 있고 그리고 게이트웨이들(4210, 4220)과 종단 장치들(4310~4340)을 제어할 수 있다. 구성 요소들(4110, 4210~4220, 4310~4340)의 개수는 도 12에서 도시된 바로 한정되지 않으며 다양한 유선 혹은 무선 네트워크 방식을 통해 서로 통신할 수 있다. 예를 들어, 구성 요소들(4110, 4210~4220, 4310~4340) 각각은 도 1 내지 도 11에서 전술한 구성 요소들(1100, 1100a, 1100b, 1200, 1200a, 1200b, 2000a, 2000b, 3000) 중 어느 하나일 수 있다.
위에서 설명한 내용은 본 발명을 실시하기 위한 구체적인 예들이다. 본 발명에는 위에서 설명한 실시 예들뿐만 아니라, 단순하게 설계 변경하거나 쉽게 변경할 수 있는 실시 예들도 포함될 것이다. 또한, 본 발명에는 상술한 실시 예들을 이용하여 앞으로 쉽게 변형하여 실시할 수 있는 기술들도 포함될 것이다.

Claims (20)

  1. 프로세서에 의해 실행 가능한 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체에 있어서, 상기 프로세서는:
    제 1 암호문, 제 2 암호문, 및 개인 키에 기초하여 메시지를 계산하는 단계;
    상기 메시지의 계수와 소수에 기반한 기준 값을 비교하는 단계;
    상기 메시지의 상기 계수와 상기 기준 값 간의 비교 결과에 따라 수정 메시지의 계수를 결정하는 단계; 및
    상기 수정 메시지를 복호화하는 단계를 실행하는 비일시적 컴퓨터 판독가능 매체.
  2. 제 1 항에 있어서,
    상기 수정 메시지의 상기 계수를 결정하는 단계는:
    상기 메시지의 상기 계수가 상기 기준 값보다 크면 복수의 값들 중 하나의 값을 상기 수정 메시지의 상기 계수로 결정하는 단계; 및
    상기 메시지의 상기 계수가 상기 기준 값보다 작으면 상기 메시지의 상기 계수를 그대로 상기 수정 메시지의 상기 계수로 결정하는 단계를 포함하는 비일시적 컴퓨터 판독가능 매체.
  3. 제 1 항에 있어서,
    상기 수정 메시지의 상기 계수를 결정하는 단계는:
    상기 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 메시지의 상기 계수가 짝수이면, 제 1 값을 상기 수정 메시지의 상기 계수로 결정하는 단계;
    상기 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 메시지의 상기 계수가 홀수이면, 제 2 값을 상기 수정 메시지의 상기 계수로 결정하는 단계; 및
    상기 메시지의 상기 계수가 상기 기준 값보다 작으면 상기 메시지의 상기 계수를 그대로 상기 수정 메시지의 상기 계수로 결정하는 단계를 포함하는 비일시적 컴퓨터 판독가능 매체.
  4. 제 1 항에 있어서,
    상기 기준 값은 상기 소수에 대한 나눗셈 연산 그리고 제수가 2인 상기 나눗셈 연산의 결과에 대한 반올림(round) 연산, 내림(floor) 연산, 및 올림(ceil) 연산 중 하나의 연산에 의해 계산되는 비일시적 컴퓨터 판독가능 매체.
  5. 제 1 항에 있어서,
    상기 메시지를 계산하는 단계는:
    상기 제 2 암호문과 상기 개인 키에 대한 곱셈 연산을 실행하는 단계; 및
    상기 곱셈 연산의 곱셈 결과와 상기 제 1 암호문에 대한 덧셈 연산을 실행하는 단계를 포함하는 비일시적 컴퓨터 판독가능 매체.
  6. 제 1 항에 있어서,
    상기 수정 메시지를 복호화하는 단계는 상기 수정 메시지에 대한 모듈로 연산을 실행하는 단계를 포함하는 비일시적 컴퓨터 판독가능 매체.
  7. 제 6 항에 있어서,
    상기 모듈로 연산의 제수(divisor)는 2인 비일시적 컴퓨터 판독가능 매체.
  8. 제 1 암호문과 제 2 암호문을 수신하고 그리고 상기 제 1 암호문, 상기 제 2 암호문, 및 개인 키에 기초하여 메시지를 계산하도록 구성되는 계산기;
    상기 메시지의 계수와 소수에 기반한 기준 값을 비교하도록 구성되는 비교기;
    상기 메시지의 상기 계수와 상기 기준 값 간의 비교 결과에 따라 수정 메시지의 계수를 결정하도록 구성되는 결정기; 및
    상기 수정 메시지를 복호화하도록 구성되는 연산기를 포함하는 복호화 장치.
  9. 제 8 항에 있어서,
    상기 결정기는:
    상기 메시지의 상기 계수가 상기 기준 값보다 크면 복수의 값들 중 하나의 값을 상기 수정 메시지의 상기 계수로 결정하고, 그리고
    상기 메시지의 상기 계수가 상기 기준 값보다 작으면 상기 메시지의 상기 계수를 그대로 상기 수정 메시지의 상기 계수로 결정하도록 더 구성되는 복호화 장치.
  10. 제 8 항에 있어서,
    상기 결정기는:
    상기 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 메시지의 상기 계수가 짝수이면, 제 1 값을 상기 수정 메시지의 상기 계수로 결정하고,
    상기 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 메시지의 상기 계수가 홀수이면, 제 2 값을 상기 수정 메시지의 상기 계수로 결정하고, 그리고
    상기 메시지의 상기 계수가 상기 기준 값보다 작으면 상기 메시지의 상기 계수를 그대로 상기 수정 메시지의 상기 계수로 결정하도록 더 구성되는 복호화 장치.
  11. 제 8 항에 있어서,
    상기 기준 값은 상기 소수에 대한 나눗셈 연산 그리고 제수가 2인 상기 나눗셈 연산의 결과에 대한 반올림(round) 연산, 내림(floor) 연산, 및 올림(ceil) 연산 중 하나의 연산에 의해 계산되는 복호화 장치.
  12. 제 8 항에 있어서,
    상기 계산기는:
    상기 제 2 암호문과 상기 개인 키에 대한 곱셈 연산을 실행하고, 그리고
    상기 곱셈 연산의 곱셈 결과와 상기 제 1 암호문에 대한 덧셈 연산을 실행하도록 더 구성되는 복호화 장치.
  13. 제 8 항에 있어서,
    상기 연산기는 상기 수정 메시지에 대한 모듈로 연산을 실행하도록 더 구성되는 복호화 장치.
  14. 제 13 항에 있어서,
    상기 모듈로 연산의 제수(divisor)는 2인 복호화 장치.
  15. 제 1 정규 분포에 기초하여 개인 키를 샘플링하고, 다항식 링으로부터 제 1 공개 키를 샘플링하고, 그리고 상기 개인 키와 상기 제 1 공개 키에 기초하여 제 2 공개 키를 계산하도록 구성되는 복호화 장치; 및
    상기 복호화 장치로부터 상기 제 1 공개 키와 상기 제 2 공개 키를 수신하고, 상기 제 1 공개 키에 기초하여 제 1 암호문을 계산하고, 상기 제 2 공개 키와 평문 메시지에 기초하여 제 2 암호문을 계산하고, 그리고 상기 제 1 암호문과 상기 제 2 암호문을 상기 복호화 장치로 전송하도록 구성되는 암호화 장치를 포함하되,
    상기 복호화 장치는:
    상기 제 1 암호문, 상기 제 2 암호문, 및 상기 개인 키에 기초하여 전송 메시지를 계산하고,
    상기 전송 메시지의 계수와 소수에 기반한 기준 값의 비교 결과에 따라 수정 전송 메시지의 계수를 결정하고, 그리고
    상기 수정 전송 메시지를 복호화하도록 더 구성되는 통신 시스템.
  16. 제 15 항에 있어서,
    상기 복호화 장치는:
    상기 전송 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 전송 메시지의 상기 계수가 짝수이면, 제 1 값을 상기 수정 전송 메시지의 상기 계수로 결정하고,
    상기 전송 메시지의 상기 계수가 상기 기준 값보다 크고 그리고 상기 전송 메시지의 상기 계수가 홀수이면, 제 2 값을 상기 수정 전송 메시지의 상기 계수로 결정하고, 그리고
    상기 전송 메시지의 상기 계수가 상기 기준 값보다 작으면 상기 메시지의 상기 계수를 그대로 상기 수정 전송 메시지의 상기 계수로 결정하도록 더 구성되는 통신 시스템.
  17. 제 15 항에 있어서,
    상기 복호화 장치는 상기 개인 키와 상기 제 1 공개 키에 대한 제 1 곱셈 연산을 실행하고 그리고 상기 제 1 곱셈 연산의 결과와 상기 제 1 정규 분포로부터 샘플링된 제 1 에러에 대한 제 1 덧셈 연산을 실행함으로써 상기 제 2 공개 키를 계산하도록 더 구성되는 통신 시스템.
  18. 제 17 항에 있어서,
    상기 암호화 장치는:
    상기 제 1 공개 키와 제 2 정규 분포로부터 샘플링된 제 2 에러에 대한 제 2 곱셈 연산을 실행하고, 상기 제 2 정규 분포로부터 샘플링된 제 3 에러와 변수에 대한 제 3 곱셈 연산을 실행하고, 그리고 상기 제 2 및 제 3 곱셈 연산들의 곱셈 결과들에 대한 제 2 덧셈 연산을 실행함으로써 상기 제 1 암호문을 계산하고, 그리고
    상기 제 2 공개 키와 상기 제 2 에러에 대한 제 4 곱셈 연산을 실행하고, 상기 제 2 정규 분포로부터 샘플링된 제 4 에러와 상기 변수에 대한 제 5 곱셈 연산을 실행하고, 그리고 상기 제 4 및 제 5 곱셈 연산들의 곱셈 결과들 및 상기 평문 메시지에 대한 제 3 덧셈 연산을 실행함으로써 상기 제 2 암호문을 계산하도록 더 구성되는 통신 시스템.
  19. 제 18 항에 있어서,
    상기 복호화 장치는 상기 제 1 암호문과 상기 개인 키에 대한 제 6 곱셈 연산을 실행하고 그리고 상기 제 6 곱셈 연산의 곱셈 결과와 상기 제 2 암호문에 대한 제 4 덧셈 연산을 실행함으로써 상기 전송 메시지를 계산하도록 더 구성되는 통신 시스템.
  20. 제 15 항에 있어서,
    상기 복호화 장치는 상기 수정 전송 메시지에 대한 모듈로 연산을 실행함으로써 상기 평문 메시지를 복원하는 통신 시스템.
KR1020190172720A 2019-12-23 2019-12-23 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템 KR20210081471A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190172720A KR20210081471A (ko) 2019-12-23 2019-12-23 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템
US16/990,073 US11496295B2 (en) 2019-12-23 2020-08-11 Non-transitory computer-readable medium storing program code, decryption device, and communication system including encryption device and decryption device
SG10202008862SA SG10202008862SA (en) 2019-12-23 2020-09-10 Non-transitory computer-readable medium storing program code, decryption device, and communication system including encryption device and decryption device
DE102020126668.5A DE102020126668A1 (de) 2019-12-23 2020-10-12 Nichtflüchtiges, computerlesbares Medium, auf dem Programmcode gespeichert ist, Entschlüsselungsvorrichtung sowie Kommunikationssystem umfassend eine Verschlüsselungsvorrichtung und eine Entschlüsselungsvorrichtung
CN202011087792.2A CN113098680A (zh) 2019-12-23 2020-10-12 非暂时性计算机可读介质、解密设备及通信系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190172720A KR20210081471A (ko) 2019-12-23 2019-12-23 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템

Publications (1)

Publication Number Publication Date
KR20210081471A true KR20210081471A (ko) 2021-07-02

Family

ID=76439065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190172720A KR20210081471A (ko) 2019-12-23 2019-12-23 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템

Country Status (4)

Country Link
US (1) US11496295B2 (ko)
KR (1) KR20210081471A (ko)
CN (1) CN113098680A (ko)
SG (1) SG10202008862SA (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220255730A1 (en) * 2021-02-10 2022-08-11 Kabushiki Kaisha Toshiba Secure computing method, secure computing system, and secure computing management device

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11700110B2 (en) * 2020-09-16 2023-07-11 The Johns Hopkins University Approximate algebraic operations for homomorphic encryption
US20230087297A1 (en) * 2021-09-17 2023-03-23 Intel Corporation Modulus reduction for cryptography
CN116755649B (zh) * 2023-08-15 2023-10-31 南京功夫豆信息科技有限公司 一种基于物联网的智慧打印设备数据管理系统及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9083526B2 (en) * 2011-04-29 2015-07-14 International Business Machines Corporation Fully homomorphic encryption
CN102546129A (zh) * 2012-02-06 2012-07-04 北京新岸线无线技术有限公司 一种信道状态信息的发送、接收方法和装置
US9306738B2 (en) 2012-12-21 2016-04-05 Microsoft Technology Licensing, Llc Managed secure computations on encrypted data
CA2984390A1 (en) * 2016-11-07 2018-05-07 Infosec Global Inc. Elliptic curve isogeny-based cryptographic scheme
KR101905689B1 (ko) * 2016-11-18 2018-12-05 서울대학교산학협력단 공개키를 이용하여 암호화하는 연산 장치 및 그 암호화 방법
CN106953722B (zh) * 2017-05-09 2017-11-07 深圳市全同态科技有限公司 一种全同态加密的密文查询方法和系统
US10541805B2 (en) 2017-06-26 2020-01-21 Microsoft Technology Licensing, Llc Variable relinearization in homomorphic encryption
US10749665B2 (en) 2017-06-29 2020-08-18 Microsoft Technology Licensing, Llc High-precision rational number arithmetic in homomorphic encryption
DE102017117907B4 (de) 2017-08-07 2023-04-27 Infineon Technologies Ag Durchführen einer kryptografischen Operation
US11153077B2 (en) * 2018-12-14 2021-10-19 Westinghouse Air Brake Technologies Corporation Secure vehicle to vehicle communication
GB201721021D0 (en) * 2017-12-15 2018-01-31 Nchain Holdings Ltd Computer-implemented methods and systems
KR101965628B1 (ko) 2017-12-15 2019-04-04 서울대학교산학협력단 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들
KR102027508B1 (ko) 2017-12-29 2019-10-01 서울대학교산학협력단 Module-Wavy와 Module-LWR에 기반한 공개키 암호 키 생성 및 암복호화 방법
US11245516B2 (en) * 2019-04-24 2022-02-08 Veridify Security Inc. Shared secret data production with use of concealed cloaking elements
CN110309674B (zh) * 2019-07-04 2021-10-01 浙江理工大学 一种基于全同态加密的排序方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220255730A1 (en) * 2021-02-10 2022-08-11 Kabushiki Kaisha Toshiba Secure computing method, secure computing system, and secure computing management device
US11870893B2 (en) * 2021-02-10 2024-01-09 Kabushiki Kaisha Toshiba Secure computing method, secure computing system, and secure computing management device

Also Published As

Publication number Publication date
US11496295B2 (en) 2022-11-08
CN113098680A (zh) 2021-07-09
SG10202008862SA (en) 2021-07-29
US20210194680A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
KR20210081471A (ko) 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템
KR101866935B1 (ko) 연관된 개인 키 부분을 사용하는 보다 빠른 공개 키 암호화를 위한 시스템들 및 방법들
CN106487503B (zh) 基于剪裁的霍普菲尔德神经网络的多元公钥密码系统和方法
US20200374103A1 (en) Apparatus for processing modular multiply operation and methods thereof
KR102297536B1 (ko) 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
US9460315B2 (en) Order-preserving encryption system, device, method, and program
CN111555880B (zh) 数据碰撞方法、装置、存储介质及电子设备
KR20200087061A (ko) 근사 암호화된 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법
CN114175572A (zh) 利用拟群运算对加密数据实行相等和小于运算的系统和方法
US11799628B2 (en) Apparatus and method for processing non-polynomial operation on encrypted messages
JP2021086158A (ja) 格子ベースの暗号鍵生成方法及び電子署名方法
GB2574613A (en) Device, system, and method of generating and handling cryptographic parameters
KR102304992B1 (ko) 동형 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
KR102522708B1 (ko) 동형 암호문에 대한 통계 연산 수행하는 장치 및 방법
KR102475273B1 (ko) 동형 암호 시스템에 대한 시뮬레이션 장치 및 방법
KR102203238B1 (ko) 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법
KR20200087708A (ko) 근사 계산에 대한 계산 검증
CN108075889B (zh) 一种降低加解密运算时间复杂度的数据传输方法及系统
KR102257779B1 (ko) 다자간 계산을 위한 유사 보간
KR102498133B1 (ko) 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법
KR102393941B1 (ko) 근사 암호화된 암호문에 대한 인코딩 또는 디코딩
KR20190041900A (ko) 암호화 장치 및 복호화 장치, 이들의 동작방법
KR102418016B1 (ko) 래티스를 기반으로 하는 신원 기반 암호화 방법
US20240039695A1 (en) Electronic apparatus for generating homomorphic encrypted message and method therefor
US20230421352A1 (en) Apparatus for processing homomorphic encrypted messages and method thereof

Legal Events

Date Code Title Description
A201 Request for examination