KR20220009643A - 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법 - Google Patents

스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법 Download PDF

Info

Publication number
KR20220009643A
KR20220009643A KR1020200088104A KR20200088104A KR20220009643A KR 20220009643 A KR20220009643 A KR 20220009643A KR 1020200088104 A KR1020200088104 A KR 1020200088104A KR 20200088104 A KR20200088104 A KR 20200088104A KR 20220009643 A KR20220009643 A KR 20220009643A
Authority
KR
South Korea
Prior art keywords
client
homomorphic
encryption
data
host
Prior art date
Application number
KR1020200088104A
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 KR1020200088104A priority Critical patent/KR20220009643A/ko
Priority to US17/167,203 priority patent/US11632232B2/en
Priority to EP21157866.1A priority patent/EP3940676A1/en
Priority to CN202110397779.5A priority patent/CN113946840A/zh
Publication of KR20220009643A publication Critical patent/KR20220009643A/ko

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/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/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/0827Key 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) involving distinctive intermediate devices or communication paths
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 일 실시예에 따른 클라이언트는, 클라이언트-사이드 호스트 및 클라이언트-사이드 스토리지 디바이스를 포함하고, 상기 클라이언트-사이드 스토리지 디바이스는 스토리지 컨트롤러 및 스토리지 메모리를 포함하고, 상기 스토리지 컨트롤러는, 호스트 인터페이스, 상기 스토리지 메모리에 대한 독출 동작 및 기입 동작을 제어하는 제어부, 및 상기 클라이언트-사이드 호스트로부터 독출 요청이 있는 경우 상기 스토리지 메모리로부터 독출 된 제1 평문 데이터를 동형 암호화하여 생성된 제1 동형 암호문 데이터를 상기 호스트 인터페이스를 통하여 상기 클라이언트-사이드 호스트로 제공하고, 상기 클라이언트-사이드 호스트로부터 기입 요청이 있는 경우 상기 호스트 인터페이스로부터 수신된 제2 동형 암호문 데이터를 동형 복호화하여 생성된 제2 평문 데이터를 상기 스토리지 메모리에 기입하는 동형 암복호화 가속기를 포함한다.

Description

스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법{STORAGE CONTROLLER, AND CLIENT AND SERVER INCLUDING THE SAME, METHOD OF OPERATING THE SAME}
본 발명은 동형 암호 기술에 관한 것으로서, 더욱 상세하게는 동형 암호 기술을 수행하는 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법에 관한 것이다.
동형 암호 기술은 암호화된 상태에서 연산, 탐색 및 분석 등의 작업을 지원하는 암호화 기술로서, 현대에 이르러 개인 정보의 유출이 문제됨에 따라 그 중요성이 더욱 강조되고 있다.
다만, 동형 암호 기술에 따라 암호화된 암호문 데이터의 크기는 암호화 이전의 평문 데이터의 크기의 수십 배에 이르고, 동형 암호 기술이 지원하는 연산 등의 계산 복잡도 또한 매우 높다. 나아가, 동형 암호 기술을 적용하여 평문 데이터 또는 암호문 데이터를 암복호화 하기 위해 평문 데이터 또는 암호문 데이터가 이동되는 과정에서 보안 문제도 있다.
본 발명의 일 목적은 동형 암호 기술에 따른 암복호화 과정에서 보안을 강화시키는 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법을 제공하는 것이다.
본 발명의 다른 목적은 크기가 증가한 암호문 데이터의 이동 횟수를 최소화하여 암호문 데이터의 전송의 부담을 감소시키는 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 클라이언트는, 클라이언트-사이드 호스트 및 클라이언트-사이드 스토리지 디바이스를 포함하고, 상기 클라이언트-사이드 스토리지 디바이스는 스토리지 컨트롤러 및 스토리지 메모리를 포함하고, 상기 스토리지 컨트롤러는, 호스트 인터페이스, 제어부 및 동형 암복호화 가속기를 포함한다. 상기 제어부는 상기 스토리지 메모리에 대한 독출 동작 및 기입 동작을 제어할 수 있다. 상기 동형 암복호화 가속기는 상기 클라이언트-사이드 호스트로부터 독출 요청이 있는 경우 상기 스토리지 메모리로부터 독출 된 제1 평문 데이터를 동형 암호화하여 생성된 제1 동형 암호문 데이터를 상기 호스트 인터페이스를 통하여 상기 클라이언트-사이드 호스트로 제공하고, 상기 클라이언트-사이드 호스트로부터 기입 요청이 있는 경우 상기 호스트 인터페이스로부터 수신된 제2 동형 암호문 데이터를 동형 복호화하여 생성된 제2 평문 데이터를 상기 스토리지 메모리에 기입할 수 있다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 컨트롤러는, 호스트 인터페이스, 스토리지 메모리에 대한 독출 동작 및 기입 동작을 제어하는 제어부, 및 클라이언트-사이드 호스트로부터 독출 요청이 있는 경우 상기 스토리지 메모리로부터 독출 된 제1 평문 데이터를 동형 암호화하여 생성된 제1 동형 암호문 데이터를 상기 호스트 인터페이스를 통하여 상기 클라이언트-사이드 호스트로 제공하고, 상기 클라이언트-사이드 호스트로부터 기입 요청이 있는 경우 상기 호스트 인터페이스로부터 수신된 제2 동형 암호문 데이터를 동형 복호화하여 생성된 제2 평문 데이터를 상기 스토리지 메모리에 기입하는 동형 암복호화 가속기를 포함한다.
상기 일 목적을 달성하기 위해 본 발명의 일 실시예에 따른 스토리지 컨트롤러의 동작 방법은 호스트로부터 요청을 수신하는 단계, 및 상기 호스트로부터의 요청이 스토리지 메모리에 저장된 데이터를 서버로 전송하기 위한 목적의 독출 요청인 경우 동형 암호화를 수행하기 위한 제1 경로를 통해 상기 스토리지 메모리로부터 데이터를 독출하고, 상기 호스트로부터의 요청이 상기 데이터를 상기 서버로 전송하기 위한 목적의 독출 요청이 아닌 경우 상기 동형 암호화를 수행하지 않는 제2 경로를 통해 상기 스토리지 메모리로부터 상기 데이터를 독출하는 단계를 포함한다.
본 발명의 실시예들에 포함되는 스토리지 컨트롤러, 및 이를 포함하는 클라이언트 및 서버는 상기 동형 암복호화 또는 상기 동형 연산을 수행한다. 이 경우 상기 동형 암호 기술을 수행함에 있어서 필수적으로 요구되는 공개키, 비밀키 및 기타 파라미터들이 클라이언트-사이드 스토리지 장치의 외부로 유출되지 않으므로, 상기 동형 암호 기술을 수행하는 시스템의 보안을 강화시킬 수 있다. 그리고 크기가 증가한 상기 동형 암호문 데이터의 전송 횟수를 최소화하여 상기 동형 암호문 데이터의 전송에 따른 부담을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.
도 2는 도 1의 클라이언트-사이드 스토리지 장치의 일 실시예를 나타내는 블록도이다.
도 3은 도 2의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 4는 도 3의 제어부가 데이터의 전송 경로를 제어하는 과정을 설명하기 위한 도면이다.
도 5는 도 2 내지 도 4의 동형 암복호화 가속기의 일 실시예를 나타내는 블록도이다.
도 6은 도 5의 난수 생성기의 일 실시예를 나타내는 블록도이다.
도 7은 도 5의 암호화 회로의 일 실시예를 나타내는 블록도이다.
도 8은 도 5의 복호화 회로의 일 실시예를 나타내는 블록도이다.
도 9는 도 1의 서버-사이드 스토리지 장치의 일 실시예를 나타내는 블록도이다.
도 10은 도 9의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 11은 도 10의 동형 연산 가속기의 일 실시예를 나타내는 블록도이다.
도 12는 도 1의 클라이언트-사이드 스토리지에 포함되는 스토리지 컨트롤러의 동작 방법의 일 실시예를 나타내는 흐름도이다.
도 13은 본 발명의 실시예들에 따른 동형 암복호화 장치를 포함하는 클라이언트 또는 서버를 나타내는 블록도이다.
도 14는 본 발명의 실시예들에 따른 스토리지 컨트롤러를 포함하는 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.
도 1을 참조하면, 시스템(1000)은 클라이언트(300), 서버(500) 및 네트워크(700)를 포함한다. 시스템(1000)은 동형 암호 기술을 수행한다.
상기 동형 암호 기술은 평문들을 연산하여 암호화를 수행한 값과 상기 평문들 각각에 대하여 암호화를 수행하여 상기 연산을 수행한 값이 동일한 결과값을 나타내도록 지원하는 암호 기술을 말한다. 보다 구체적으로, 상기 동형 암호 기술은 하기 수학식 1을 만족하는 암호 기술을 말한다.
[수학식 1]
OP(E(PD)) = E(OP(PD))
여기서, 상기 PD는 상기 평문을 데이터화한 평문 데이터이고, 상기 E()는 상기 암호화를 수행하는 함수이고, 상기 OP()는 상기 연산을 수행하는 함수이다. 특히, 상기 연산이 덧셈 또는 곱셈에 해당하는 경우 상기 동형 암호 기술은 하기 수학식 2 또는 수학식 3을 만족할 수 있다.
[수학식 2]
E(PD1) + E(PD2) = E(PD1 + PD2)
[수학식 3]
E(PD1) * E(PD2) = E(PD1 * PD2)
클라이언트(300) 및 서버(500)는 네트워크(700)를 통하여 서로 통신한다. 클라이언트(300)는 서버(500)로 데이터를 요청하거나 또는 전송할 수 있고, 서버(500) 또한 클라이언트(300)에 대하여 데이터를 요청하거나 또는 전송할 수 있다.
일 실시예에서, 클라이언트(300) 및 서버(500)가 네트워크(700)를 통하여 전송하는 데이터는 동형 암호 기술을 적용하여 암호화된 동형 암호문 데이터이다. 보다 구체적으로, 클라이언트(300)는 평문 데이터를 동형 암호화하여 동형 암호문 데이터를 생성하고, 상기 동형 암호문 데이터를 서버(500)로 전송할 수 있다. 서버(500)는 클라이언트(300)로부터 상기 동형 암호문 데이터를 수신하여 저장한 후 상기 동형 암호문 데이터에 대하여 동형 연산을 수행할 수 있다. 서버(500)는 클라이언트(300)로 상기 동형 연산이 수행된 동형 암호문 데이터를 전송할 수 있고, 클라이언트(300)는 전송된 동형 암호문 데이터를 동형 복호화하여 평문 데이터를 생성할 수 있다.
클라이언트(300)는 클라이언트-사이드 스토리지 장치(330), 클라이언트-사이드 호스트(350) 및 클라이언트-사이드 디램(Dynamic Random Access Memory)(DRAM)(370)을 포함한다. 클라이언트-사이드 스토리지 장치(330)는 스토리지 컨트롤러(storage controller)(SCON)(3000) 및 스토리지 메모리(storage memory)(SMEM)(3500)를 포함한다.
클라이언트-사이드 호스트(350)는 클라이언트-사이드 스토리지 장치(330)를 제어하며, 스토리지 컨트롤러(3000)는 클라이언트-사이드 호스트(350)의 제어 하에 클라이언트-사이드 디램(370) 및 스토리지 메모리(3500)를 제어한다.
서버(500)는 서버-사이드 스토리지 장치(530), 서버-사이드 호스트(550) 및 서버-사이드 디램(570)을 포함한다. 서버-사이드 스토리지 장치(530)는 스토리지 컨트롤러(SCON)(5000) 및 스토리지 메모리(SMEM)(5500)를 포함한다.
서버-사이드 호스트(550)는 서버-사이드 스토리지 장치(530)를 제어하며, 스토리지 컨트롤러(5000)는 서버-사이드 호스트(550)의 제어 하에 서버-사이드 디램(570) 및 스토리지 메모리(5500)를 제어한다.
한편 상기 동형 암호 기술은 수학적으로 증명 가능한 보안성을 가진다. 일 실시예에서, 상기 동형 암호 기술에 따른 암복호화 및 동형 연산은 격자 문제(lattice problem)에 기반하여 유한환(finite ring)을 기초로 정의될 수 있다. 이 경우, 상기 동형 암호 기술을 효율적으로 해결하는 알고리즘이 현재까지 알려진 바 없으므로 상기 동형 암호 기술에 따라 상기 평문 데이터를 동형 암호화하여 동형 암호문 데이터를 생성하면 동형 암호문 데이터의 보안성은 보장된다.
그러나 클라이언트(300)가 상기 동형 암호 기술에 따른 동형 암복호화를 수행함에 있어서 필수적으로 요구되는 공개키, 비밀키 및 기타 파라미터들은 클라이언트(300)에 포함되는 클라이언트-사이드 스토리지 장치(330)뿐만 아니라 클라이언트-사이드 호스트(350) 및 클라이언트-사이드 디램(370)에도 일시적으로나마 저장될 수 있다. 이 경우, 동형 암호 기술의 상기 보안성은 상기 동형 암호 기술 자체가 아닌 구현상의 문제에 따라 훼손될 수 있다. 이러한 문제는 서버(500)가 상기 동형 암호문 데이터에 대하여 동형 연산을 수행하는 과정에서도 동일하게 발생할 수 있다.
본 발명의 실시예들에 따른 클라이언트(300) 및 서버(500)는 상기 동형 암호 기술을 구현한 스토리지 컨트롤러(3000 및5000) 내부에서 상기 동형 암복호화 또는 상기 동형 연산을 수행한다. 이 경우 상기 동형 암호 기술을 수행함에 있어서 필수적으로 요구되는 상기 공개키, 상기 비밀키 및 상기 기타 파라미터들이 클라이언트-사이드 스토리지 장치(330)의 외부로 유출되지 않으므로, 상기 동형 암호 기술을 수행하는 시스템(1000)의 보안을 강화시킬 수 있다. 이하에서 보다 구체적으로 설명하기로 한다.
도 2는 도 1의 클라이언트-사이드 스토리지 장치의 일 실시예를 나타내는 블록도이다.
도 2를 참조하면, 클라이언트-사이드 스토리지 장치(330)는 스토리지 컨트롤러(storage controller)(SCON)(3000), 스토리지 메모리(storage memory)(SMEM)(3500) 및 커넥터(3700)를 포함한다.
스토리지 컨트롤러(3000)는 클라이언트-사이드 호스트(350)의 제어 하에 클라이언트-사이드 스토리지 장치(330)를 전반적으로 제어한다.
일 실시예에서, 스토리지 컨트롤러(300)는 스토리지 메모리(3500) 또는 클라이언트-사이드 디램(370)에 대한 독출 동작 및 기입 동작을 제어한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 다른 실시예에서, 스토리지 컨트롤러(300)는 동형 암복호화, 메모리 오류 제어, 랜더마이저, 독출 레벨 컨트롤 및 기타 신호 처리 동작을 제어할 수 있다.
상기 메모리 오류 제어 동작은 스토리지 메모리(3500)에 저장되는 데이터의 프로그램 오류, 프로그램/소거 오류, 플로팅 게이트에 저장된 전하가 누설되어 발생하는 오류 및 독출 오류 등을 제어하는 동작을 말한다. 상기 랜더마이저는 스토리지 메모리(3500)에 저장되는 데이터가 규칙적인 패턴을 나타내거나 또는 특정 데이터가 연속적인 패턴을 나타내는 경우 백 패턴 디펜던시(back pattern dependency) 또는 커플링(coupling) 현상으로 인한 신뢰성 저하를 완화시키는 동작을 말한다. 상기 독출 레벨 컨트롤은 스토리지 메모리(3500)에 저장되는 데이터의 독출 방식에 따라 발생하는 오류를 제어하는 동작을 말한다. 상기 기타 신호 처리 동작은 스토리지 메모리(3500)의 신뢰성 향상을 위한 코디드 모듈레이션(coded modulation)을 포함할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 상기 동형 암복호화 동작에 대하여는 후술하기로 한다.
일 실시예에서, 스토리지 컨트롤러(3000)는 상기 클라이언트-사이드 호스트(350)로부터 독출 요청이 있는 경우 스토리지 메모리(3500) 또는 클라이언트-사이드 디램(370)으로부터 독출 요청된 데이터를 독출하고, 상기 클라이언트-사이드 호스트로부터 기입 요청이 있는 경우 스토리지 메모리(3500) 또는 클라이언트-사이드 디램(370)에 기입 요청된 데이터를 기입할 수 있다.
일 실시예에서, 스토리지 컨트롤러(3000)는 커넥터(3700)를 통하여 상기 클라이언트-사이드 호스트와 연결될 수 있다.
스토리지 메모리(3500) 또는 클라이언트-사이드 디램(370)은 스토리지 컨트롤러(3000)의 제어 하에 클라이언트-사이드 호스트로부터 전송되는 기입 데이터를 저장한다.
일 실시예에서, 스토리지 메모리(3500)는 복수의 비휘발성 메모리들을 포함할 수 있다. 예를 들어, 상기 복수의 비휘발성 메모리들 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리를 포함할 수 있다.
일 실시예에서, 클라이언트-사이드 디램(370)은 휘발성 메모리로서 복수의 디램들을 포함할 수 있다.
스토리지 컨트롤러(3000)는 동형 암복호화 가속기(homomorphic endecryption accelerator)(3200)를 더 포함한다. 동형 암복호화 가속기(3200)는 평문 데이터를 동형 암호화하여 동형 암호문 데이터를 생성하고, 동형 암호문 데이터를 복호화하여 평문 데이터를 생성할 수 있다. 이하에서 보다 구체적으로 설명하기로 한다.
도 3은 도 2의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 2 및 도 3을 참조하면, 스토리지 컨트롤러(3000)는 스토리지 인터페이스(3100), 동형 암복호화 가속기(homomorphic endecryption accelerator)(3200), 호스트 인터페이스(3300), 프로세서(Central Processing Unit)(CPU)(3400), 디램 컨트롤러(3500), 에스램(static random access memory)(SRAM)(3600) 및 메인 버스(3700)를 포함한다.
스토리지 인터페이스(3100)는 스토리지 컨트롤러(3000)와 스토리지 메모리(3500) 간의 통신을 수행한다. 호스트 인터페이스(3300)는 스토리지 컨트롤러(3000)와 클라이언트-사이드 호스트(350) 간의 통신을 수행한다. 메인 버스(3600)는 스토리지 컨트롤러(3000)에 포함되는 각 구성요소들(3100, 3200, 3300, 3400, 3500 및 3600) 간의 통신을 수행한다.
동형 암복호화 가속기(3200)는 평문 데이터를 동형 암호화하여 동형 암호문 데이터를 생성하거나 또는 동형 암호문 데이터를 동형 복호화하여 평문 데이터를 생성할 수 있다. 도 3에서 동형 암복호화 가속기(3200)는 호스트 인터페이스(3300)와 별개의 모듈로서 도시되어 있으나, 본 발명의 범위는 이에 한정되지 않는다. 일 실시예에서, 동형 암복호화 가속기(3200)는 호스트 인터페이스(3300)의 내부에 구현될 수도 있다.
프로세서(3400)는 스토리지 메모리(3500)에 대한 독출 동작 및 기입 동작을 제어하며, 도 2를 참조하여 상술한 메모리 오류 제어, 랜더마이저, 독출 레벨 컨트롤 및 기타 신호 처리 동작 등을 수행할 수도 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 도 2에 도시되지는 않았으나, 상기 메모리 오류 제어, 랜더마이저, 독출 레벨 컨트롤 및 기타 신호 처리 동작 등은 프로세서(3400)와 구별되는 별도의 모듈로 구현되어 수행될 수도 있다.
일 실시예에서, 프로세서(3400)는 상기 독출 동작 및 상기 기입 동작의 수행 과정에서 스토리지 메모리(3500)와 클라이언트-사이드 호스트(350) 간의 전송되는 데이터의 전송 경로를 제어할 수 있다. 이하에서 보다 구체적으로 설명하기로 한다.
도 4는 도 3의 프로세서가 데이터의 전송 경로를 제어하는 과정을 설명하기 위한 도면이다.
도 4에서, 스토리지 컨트롤러(3000)의각 구성요소들(3100, 3200, 3300, 3400, 3500, 3600 및 3700)이 도시된다. 각 구성요소들(3100, 3200, 3300, 3400, 3500, 3600 및 3700)은 예시적인 것으로서 본 발명의 범위는 이에 한정되지 않는다. 각 구성요소들(3100, 3200, 3300, 3400, 3500, 3600 및 3700)은 도 3에 도시된 구성요소들과 동일한 구성요소들이나, 설명의 편의를 위해 위치를 변경하여 도시된다. 그리고 경로 A(PATHA)와 경로 B(PATHB)가 도시된다.
도 2 내지 도 4를 참조하면, 경로 A 및 경로 B는 스토리지 메모리(3500)와 클라이언트-사이드 호스트(350) 간의 전송되는 데이터의 전송 경로들을 나타낸다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 경로 A는 스토리지 인터페이스(3100), 에스램(3600), 디램 컨트롤러(3500), 프로세서(3400) 및 호스트 인터페이스(3300)를 통과한다. 경로 B는 경로 A 상에 위치하는 구성요소들(3100, 3300, 3400, 3500 및 3600)뿐만 아니라 동형 암복호화 가속기(3200)를 더 통과한다. 즉, 경로 A는 동형 암복호화 가속기(3200)를 통과하지 않는 전송 경로이고, 경로 B는 동형 암복호화 가속기(3200)를 통과하는 전송 경로일 수 있다.
일 실시예에서, 경로 A는 스토리지 메모리(3500)로부터 전송된 데이터가 클라이언트-사이드 호스트(350)로 전송되지 않은 채로 스토리지 컨트롤러(3000)에 머무는 경우를 포함할 수 있다. 그리고 클라이언트-사이드 호스트(350)로부터 전송된 데이터가 스토리지 메모리(3500)로 전송되지 않은 채로 스토리지 컨트롤러(3000)에 머무는 경우 또한 포함할 수 있다.
일 실시예에서, 경로 B는 클라이언트-사이드 호스트(350)가 스토리지 메모리(3500)에 저장된 데이터를 클라이언트-사이드 스토리지 장치(300)의 외부로 전송하기 위한 목적으로 스토리지 컨트롤러(3000)에 독출 요청하는 경우 생성되는 경로일 수 있다. 반대 해석상, 경로 A는 클라이언트-사이드 호스트(350)가 스토리지 메모리(3500)에 저장된 데이터를 클라이언트-사이드 스토리지 장치(300)의 외부로 전송하기 위한 목적이 아닌 기타의 목적으로 스토리지 컨트롤러(3000)에 독출 요청하는 경우 생성되는 경로일 수 있다.
일 실시예에서, 경로 B는 클라이언트-사이드 호스트(350)가 클라이언트-사이드 스토리지 장치(300)의 외부로부터 수신한 데이터를 스토리지 메모리(3500)에 기입하기 위한 목적으로 스토리지 컨트롤러(3000)에 기입 요청하는 경우 생성되는 경로일 수 있다. 반대 해석상, 경로 A는 클라이언트-사이드 호스트(350)가 클라이언트 사이드 스토리지 장치(300)의 외부로부터 수신한 데이터를 스토리지 메모리(3500)에기입하기 위한 목적이 아닌 기타의 목적으로 스토리지 컨트롤러(3000)에 기입 요청하는 경우 생성되는 경로일 수 있다.
일 실시예에서, 경로 B가 구성요소들(3100, 3200, 3300, 3400, 3500 및 3600) 중 동형 암호 가속기(3200)를 통과하는 순서는 스토리지 컨트롤러(3000)와 클라이언트-사이드 호스트(350) 간의 통신을 수행하는 호스트 인터페이스(3300) 직전일 수 있다. 즉, 상기 경로 B 상에서 동형 암호 가속기(3200)는 구성요소들(3100, 3200, 3300, 3400, 3500 및 3600) 중 호스트 인터페이스(3300)와 가장 근접하여 위치하는 구성요소가 된다.
도 5는 도 2 내지 도 4의 동형 암복호화 가속기의 일 실시예를 나타내는 블록도이다.
도 5를 참조하면, 동형 암복호화 가속기(homomorphic endecryption accelerator)(3200)는 암호화 회로(encryption circuit)(EC)(3210), 키생성 회로(key generation circuit)(KGC)(3230), 복호화 회로(decryption circuit)(DC)(3250) 및 파라미터 생성 회로(parameter generation circuit)(PGC)(3270)를 포함한다.
암호화 회로(3210)는 외부로부터 평문 데이터(PDIN)를 수신하고, 키생성 회로(3230)로부터 공개키(PUBK)를 수신하며, 파라미터 생성 회로(3270)로부터 파라미터(PARAM)를 수신한다. 암호화 회로(3210)는 공개키(PUBK) 및 파라미터(PARAM)에 기초하여 평문 데이터(PDIN)를 동형 암호화하고 동형 암호문 데이터(CDOUT)를 생성한다.
키생성 회로(3230)는 동형 암호화 과정에서 사용되는 공개키(PUBK) 및 동형 복호화 과정에서 사용되는 비밀키(SECK)를 생성한다.
복호화 회로(3250)는 외부로부터 동형 암호문 데이터(CDIN)를 수신하고, 키생성 회로(3230)로부터 비밀키(SECK)를 수신한다. 복호화 회로(3250)는 비밀키(SECK)에 기초하여 동형 암호문 데이터(CDIN)를 동형 복호화하고 평문 데이터(PDOUT)를 생성한다.
파라미터 생성 회로(3270)는 동형 암호화 및 동형 복호화 과정에서 사용되는 파라미터(PARAM)를 생성한다. 일 실시예에서, 상기 동형 암호화 과정에서 사용되는 파라미터(PARAM)와 상기 동형 복호화 과정에서 사용되는 파라미터(PARAM)는 다를 수 있다. 일 실시예에서, 파라미터(PARAM)의 개수는 복수 개일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시예에서, 파라미터(PARAM)는 동형 암복호화 가속기(3200)가 채택하는 동형 암호 스킴의 종류별로 생성될 수 있다. 상기 동형 암호 스킴은 다양한 관점에서 분류될 수 있다. 예를 들어, 상기 동형 암호 스킴은 암호문들 간의 일부 연산만을 지원하는 부분 동형 암호(partial homomorphic encryption), 상기 암호문들 간의 제한된 횟수의 연산을 지원하는 제한 동형 암호(somewhat homomorphic encryption), 및 상기 암호문들 간의 제한되지 않은 횟수의 연산을 지원하는 완전 동형 암호(fully homomorphic encryption) 중 어느 하나일 수 있다. 그러나 다른 실시예에 따라, 상기 동형 암호 스킴은 숫자 연산 동형 암호(digitwise homomorphic encryption) 및 비트 연산 동형 암호(bitwise homomorphic encryption) 중 어느 하나일 수 있다.
일 실시예에서, 파라미터(PARAM)는 인코딩, 디코딩, 다중 메시지 패킹, 동형 암호화, 동형 복호화 및 키 생성에 관한 파라미터를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 다른 실시예에서, 파라미터(PARAM)는 자릿수 조정 또는 키 스위칭에 관한 파라미터를 더 포함할 수 있다.
파라미터 생성 회로(3270)는 난수 생성기(random number generator)(RNG)(3275)를 포함할 수 있다. 이하에서 보다 구체적으로 설명하기로 한다.
도 6은 도 5의 난수 생성기의 일 실시예를 나타내는 블록도이다.
도 6을 참조하면, 난수 생성기(3275)는 선형 피드백 쉬프트 레지스터(linear feedback shift register)(LFSR), 난수 생성기(LFSR RNG)(3271) 및 난수 제공부(3273)를 포함한다.
일 실시예에서, LFSR 난수 생성기(3271)는 쉬프트 레지스터 및 XOR 로직 게이트를 포함할 수 있다.
LFSR 난수 생성기(3271)는 0부터 232의 값들을 표현하는 32 비트의 출력 신호(LOUT)를 생성하여 난수 제공부(3273)로 전달한다.
일 실시예에서, LFSR 난수 생성기(3271)는FTP(File Transfer Protocol) 접속 소요시간, 프로세서들 간 통신(inter processor communication)(IPC) 소요시간, 외부 온도, 인터페이스(즉, 도 3에 도시된 호스트 인터페이스(3300) 또는 스토리지 인터페이스(3100))의 링크업 소요시간 중 적어도 하나에 기초하여 출력 신호(LOUT)를 생성할 수 있다.
난수 제공부(3273)는 출력 신호(LOUT)에 기초하여 미리 설정된 난수를 생성한다.
일 실시예에서, 난수 제공부(3273)는 -1, 0 또는 1 중 어느 하나의 값을 상기 난수로서 생성할 수 있다.
일 실시예에서, 난수 제공부(3273)는 출력 신호(LOUT)가 0 이상 1/3*232 미만의 값인 경우 '-1'을, 출력 신호(LOUT)가 1/3*232 이상 2/3*232 미만의 값인 경우 '0'을, 출력 신호(LOUT)가 2/3*232 이상 3/3*232 미만의 값인 경우 '1'을 출력할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
일 실시예에서, 난수 제공부(3273)는 기준 룩업 테이블(reference lookup table)(RLUT)(3275)을 포함할 수 있다.
도 7은 도 5의 암호화 회로의 일 실시예를 나타내는 블록도이다.
도 7을 참조하면, 암호화 회로(3210)는 다항 곱셈기들(polynomial multiplicators)(PM1 및 PM2)(3213-1 및 3213-2), 다항 덧셈기들(polynomial adders)(PA1, PA2 및 PA3))(3217-1, 3217-2 및 33217-3) 및 인코더(encoder)(ENC)(3211)를 포함한다.
암호화 회로(3210)는 평문 데이터(PDIN), 공개키(PUBK), 파라미터(PARAM)를 수신한다. 일 실시예에서, 공개키(PUBK)는 복수 개일 수 있고, 제1 공개키(PK1) 및 제2 공개키(PK2)를 포함할 수 있다. 일 실시예에서, 파라미터(PARAM)는 다항 곱셈기들(3213-1 및 3213-2), 다항 덧셈기들(3217-1 및 3217-2 및 33217-3)에 입력될 수 있다. 그러나 본 발명의 범위는 이에 한정되지 않는다.
다항 곱셈기(3213-1)는 제1 공개키(PK1) 및 파라미터(PARAM)를 수신하여 다항 곱셈 연산을 수행한 결과를 다항 덧셈기(3217-1)로 제공한다. 다항 곱셈기(3213-2)는 제2 공개키(PK2) 및 파라미터(PARAM)를 수신하여 다항 곱셈 연산을 수행한 결과를 다항 덧셈기(3217-2)로 제공한다.
다항 덧셈기(3217-1)는 다항 곱셈기(3213-1)가 수행한 결과 데이터 및 파라미터(PARAM)를 수신하여 덧셈 연산을 수행한 결과를 제1 동형 암호문 데이터(CT1)로서 제공한다.
다항 덧셈기(3217-2)는 다항 곱셈기(3213-2)가 수행한 결과 데이터 및 파라미터(PARAM)를 수신하여 다항 덧셈 연산을 수행한 결과를 다항 덧셈기(3217-3)로 제공한다.
인코더(3211)는 평문 데이터(PDIN)를 수신하여 인코딩하고 인코딩의 결과 데이터를 다항 덧셈기(3217-3)로 제공한다.
다항 덧셈기(3217-3)는 다항 덧셈기(3217-2) 및 인코더(3211) 각각이 수행한 연산의 결과를 수신하여 다항 덧셈 연산을 수행한 결과를 제2 동형 암호문 데이터(CT2)로서 제공한다.
즉, 제1 동형 암호문 데이터(CT1) 및 제2 동형 암호문 데이터(CT2)는 하기 수학식 4 및 수학식 5에 따라 생성될 수 있다.
[수학식 4]
CT1 = PK1 * PARAM1 + PARAM2
[수학식 5]
CT2 = PK2 * PARAM1 + PARAM3 + INC( PDIN )
여기서, 상기 INC()는 인코딩 함수이다. 상기 PARAM1, 상기 PARAM2 및 상기 PARAM3는 파라미터(PARAM)에 포함되는 난수이다.
도 8은 도 5의 복호화 회로의 일 실시예를 나타내는 블록도이다.
도 8을 참조하면, 복호화 회로(3250)는 다항 곱셈기(polynomial multiplicator)(PM3)(3251), 다항 덧셈기(polynomial adder)(PA4)(3253) 및 디코더(decoder)(DEC)(3255)를 포함한다.
복호화 회로(3250)는 동형 암호문 데이터(CDIN) 및 비밀키(SECK)를 수신한다. 일 실시예에서 동형 암호문 데이터(CDIN)는 복수 개일 수 있고, 제1 동형 암호문 데이터(CT1) 및 제2 동형 암호문 데이터(CT2)를 포함할 수 있다.
다항 곱셈기(3251)는 제1 동형 암호문 데이터(CT1) 및 비밀키(SECK)를 수신하여 다항 곱셈 연산을 수행한 결과를 다항 덧셈기(3253)로 제공한다.
다항 덧셈기(3253)는 제2 동형 암호문 데이터(CT2) 및 다항 곱셈기(3251)가 수행한 연산의 결과를 수신하여 다항 덧셈 연산을 수행한 결과를 디코더(3255)로 제공한다.
디코더(3255)는 다항 덧셈기(3253)가 수행한 연산의 결과를 수신하여 디코딩하고 디코딩의 결과 데이터를 평문 데이터(PDOUT)로서 제공한다.
즉, 평문 데이터(PDOUT)는 하기 수학식 6에 따라 생성될 수 있다.
[수학식 6]
PDOUT = DEC( CT1*SECK + CT2 )
여기서, 상기 DEC()는 디코딩 함수이다.
도 9는 도 1의 서버-사이드 스토리지 장치의 일 실시예를 나타내는 블록도이다.
도 9를 참조하면, 서버-사이드 스토리지 장치(530)는 스토리지 컨트롤러(storage controller)(SCON)(5000), 스토리지 메모리(storage memory)(SMEM)(5500) 및 커넥터(5700)를 포함한다.
스토리지 컨트롤러(5000)는 서버-사이드 호스트(550)의 제어 하에 서버-사이드 스토리지 장치(530)를 전반적으로 제어한다.
일 실시예에서, 스토리지 컨트롤러(5000)는 스토리지 메모리(5500) 또는 서버-사이드 디램(570)에 대한 독출 동작 및 기입 동작을 제어한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 다른 실시예에서, 스토리지 컨트롤러(500)는 동형 연산을 제어할 수 있다. 보다 구체적으로, 스토리지 컨트롤러(500)는 NTT(Number Theory Transform), INTT(Inverse Number Theory Transform), 매트릭스 벡터 곱셈, 모듈러 다항 곱셈 및 모듈러 다항 덧셈 동작을 제어할 수 있다.
일 실시예에서, 상기 NTT 동작은 동형 곱셈의 대상이 되는 동형 암호문 데이터들 각각에 대하여 수행되는 동작일 수 있다.
상기 매트릭스 벡터 곱셈은 상기 NTT 동작의 결과 데이터들에 대하여 점별 곱셈(point-wise multiplication)하기 위해 수행되는 동작일 수 있다. 상기 INTT 동작은 상기 점별 곱셈을 수행한 결과에 대하여 수행될 수 있다. 상기 모듈러 다항 곱셈은 동형 곱셈의 대상이 되는 동형 암호문 데이터들 각각에 대하여 수행되는 동작일 수 있다. 상기 모듈러 다항 덧셈은 동형 덧셈의 대상이 되는 동형 암호문 데이터들 각각에 대하여 수행되는 동작일 수 있다.
일 실시예에서, 스토리지 컨트롤러(5000)는 서버-사이드 호스트(550)로부터 독출 요청이 있는 경우 스토리지 메모리(5500) 또는 서버-사이드 디램(570)으로부터 독출 요청된 데이터를 독출하고, 상기 서버-사이드 호스트로부터 기입 요청이 있는 경우 스토리지 메모리(5500) 또는 서버-사이드 디램(570)에 기입 요청된 데이터를 기입할 수 있다.
일 실시예에서, 스토리지 컨트롤러(5000)는 커넥터(5700)를 통하여 상기 서버-사이드 호스트와 연결될 수 있다.
스토리지 메모리(5500) 또는 서버-사이드 디램(570)은 스토리지 컨트롤러(5000)의 제어 하에 서버-사이드 호스트로부터 전송되는 기입 데이터를 저장한다.
스토리지 컨트롤러(5000)는 동형 연산 가속기(homomorphic operation accelerator)(5200)를 더 포함한다. 동형 연산 가속기(5200)는 동형 암호문 데이터들 간의 동형 연산을 수행하고 상기 연산의 수행 결과로서 연산된 동형 암호문 데이터를 생성할 수 있다. 이하에서, 보다 구체적으로 설명하기로 한다.
도 10은 도 9의 스토리지 컨트롤러의 일 실시예를 나타내는 블록도이다.
도 9 및 도 10을 참조하면, 스토리지 컨트롤러(5000)는 스토리지 인터페이스(5100), 동형 연산 가속기(homomorphic operation accelerator)(5200), 호스트 인터페이스(5300), 프로세서(Central Processing Unit)(CPU)(5400), 디램 컨트롤러(5500), 에스램(5500) 및 메인 버스(5700)를 포함한다.
스토리지 인터페이스(5100)는 스토리지 컨트롤러(5000)와 스토리지 메모리(5500) 간의 통신을 수행한다. 호스트인터페이스(5300)는 스토리지 컨트롤러(5000)와 서버-사이드 호스트(550) 간의 통신을 수행한다. 메인 버스(5600)는 스토리지 컨트롤러(5000)에 포함되는 각 구성요소들(5100, 5200, 5300, 5400, 5500 및 5600) 간의 통신을 수행한다.
동형 연산 가속기(5200)는 동형 암호문 데이터들을 수신한다. 동형 연산 가속기(5200)는 수신된 동형 암호문 데이터들 간의 동형 연산을 수행하고 상기 연산의 수행 결과로서 연산된 동형 암호문 데이터를 생성할 수 있다.
일 실시예에서, 동형 연산 가속기(5200)는 암호문 연산 레벨을 더 수신할 수 있다. 상기 암호문 연산 레벨은 부트스트래핑 과정 없이 상기 동형 암호문 데이터들 간의 곱셈 연산을 수행할 수 있는 최대 횟수를 나타낸다.
프로세서(5400)는 스토리지 메모리(5500)에 대한 독출 동작 및 기입 동작을 제어하며, 도 9를 참조하여 상술한 NTT, INTT, 매트릭스 벡터 곱셈, 모듈러 다항 곱셈 및 모듈러 다항 덧셈 동작 등을 수행할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 도 10에 도시되지는 않았으나, 상기 NTT, 상기 INTT, 상기 매트릭스 벡터 곱셈, 상기 모듈러 다항 곱셈 및 상기 모듈러 다항 덧셈 동작 등은 프로세서(5400)와 구별되는 별도의 모듈로 구현되어 수행될 수도 있다.
도 11은 도 10의 동형 연산 가속기의 일 실시예를 나타내는 블록도이다.
도 11을 참조하면, 동형 연산 가속기(5200)는 전용 프로세서(dedicated central processing unit)(dedicated CPU)(5210), 전용 메모리(dedicated SRAM)(5220), NTT 회로(5230), INTT 회로(5240), 매트릭스 벡터 곱셈 회로(5250), 모듈러 다항 곱셈 회로(5260) 및 모듈러 다항 덧셈 회로(5270)를 포함한다.
전용 프로세서(5210)는 동형 연산 가속기(5200)의 구성요소들(5210, 5220, 5230, 5240, 5250, 5260 및 5270)을 전반적으로 제어한다. 전용 프로세서(5210)는 스토리지 컨트롤러(5000)에 포함되는 프로세서(5400)와 별도로 동형 연산 가속기(5200) 내부에 구비될 수 있다. 일 실시예에서, 전용 프로세서(5210)는 디지털 신호 처리기(Digital Signal Processor)(DSP)일 수 있다. 전용 프로세서(5210)는 부동 소수점(Floating-point) 연산을 높은 수준으로 병렬 처리할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 전용 프로세서(5210)는 마이크로 처리기(Micro Processor), 어플리케이션 프로세서(Application Processor) 또는 ARM 프로세서 중 어느 하나일 수도 있다.
전용 메모리(5220)는 NTT 회로(5230), INTT 회로(5240), 매트릭스 벡터 곱셈 회로(5250), 모듈러 다항 곱셈 회로(5260) 및 모듈러 다항 덧셈 회로(5270)의 동작에 따른 결과 데이터들을 일시적으로 저장할 수 있다.
NTT 회로(5230), INTT 회로(5240), 매트릭스 벡터 곱셈 회로(5250), 모듈러 다항 곱셈 회로(5260) 및 모듈러 다항 덧셈 회로(5270)는 동형 암호문 데이터들 간의 동형 연산을 수행하거나 또는 상기 동형 연산을 수행하기 위해 중간 단계에서 요구되는 연산을 수행할 수 있다.
도 12는 도 1의 클라이언트-사이드 스토리지에 포함되는 스토리지 컨트롤러의 동작 방법의 일 실시예를 나타내는 흐름도이다.
도 1 및 도 12를 참조하면, 호스트(350)로부터 요청을 수신한다(S1000).
호스트(350)로부터 수신되는 요청은 독출 요청 또는 기입 요청 중 어느 하나일 수 있다. 그러나 본 발명의 범위는 이에 한정되지 않는다. 일 실시예에서, 호스트(350)로부터 수신되는 요청은 스토리지 메모리(3500)에 저장되는 데이터의 프로그램 오류, 프로그램/소거 오류, 플로팅 게이트에 저장된 전하가 누설되어 발생하는 오류 및 독출 오류 등을 제어하는 요청일 수도 있다. 상기 메모리 오류 제어 동작은 스토리지 메모리(3500)에 저장되는 데이터의 프로그램 오류, 프로그램/소거 오류, 플로팅 게이트에 저장된 전하가 누설되어 발생하는 오류 및 독출 오류 등을 제어하는 동작을 말한다. 상기 랜더마이저는 스토리지 메모리(3500)에 저장되는 데이터가 규칙적인 패턴을 나타내거나 또는 특정 데이터가 연속적인 패턴을 나타내는 경우 백 패턴 디펜던시(back pattern dependency) 또는 커플링(coupling) 현상으로 인한 신뢰성 저하를 완화시키는 동작을 말한다. 상기 독출 레벨 컨트롤은 스토리지 메모리(3500)에 저장되는 데이터의 독출 방식에 따라 발생하는 오류를 제어하는 동작을 말한다. 상기 기타 신호 처리 동작은 스토리지 메모리(3500)의 신뢰성 향상을 위한 코디드 모듈레이션(coded modulation)을 포함할 수 있다.
호스트(350)로부터의 요청이 스토리지 메모리에 저장된 데이터를 서버로 전송하기 위한 목적의 독출 요청인 경우 동형 암호화를 수행하기 위한 제1 경로를 통해 스토리지 메모리(3500)로부터 상기 데이터를 독출하고, 호스트(350)로부터의 요청이 데이터를 서버로 전송하기 위한 목적의 독출 요청이 아닌 경우 동형 암호화를 수행하지 않는 제2 경로를 통해 스토리지 메모리(3500)로부터 데이터를 독출한다(S2000).
일 실시예에서, 제2 경로는 스토리지 메모리(3500)로부터 전송된 데이터가 클라이언트-사이드 호스트(350)로 전송되지 않은 채로 스토리지 컨트롤러(3000)에 머무는 경우를 포함할 수 있다. 그리고 클라이언트-사이드 호스트(350)로부터 전송된 데이터가 스토리지 메모리(3500)로 전송되지 않은 채로 스토리지 컨트롤러(3000)에 머무는 경우 또한 포함할 수 있다.
일 실시예에서, 제1 경로는 호스트(350)가 스토리지 메모리(3500)에 저장된 데이터를 스토리지 장치(300)의 외부로 전송하기 위한 목적으로 스토리지 컨트롤러(3000)에 독출 요청하는 경우 생성되는 경로일 수 있다. 반대 해석상, 제2 경로는 호스트(350)가 스토리지 메모리(3500)에 저장된 데이터를 스토리지 장치(300)의 외부로 전송하기 위한 목적이 아닌 기타의 목적으로 스토리지 컨트롤러(3000)에 독출 요청하는 경우 생성되는 경로일 수 있다.
일 실시예에서, 제1 경로는 호스트(350)가 클라이언트 사이드 스토리지 장치(300)의 외부로부터 수신한 데이터를 스토리지 메모리(3500)에 기입하기 위한 목적으로 스토리지 컨트롤러(3000)에 기입 요청하는 경우 생성되는 경로일 수 있다. 반대 해석상, 제2 경로는 호스트(350)가 클라이언트 사이드 스토리지 장치(300)의 외부로부터 수신한 데이터를 스토리지 메모리(3500)에 기입하기 위한 목적이 아닌 기타의 목적으로 스토리지 컨트롤러(3000)에 기입 요청하는 경우 생성되는 경로일 수 있다.
일 실시예에서, 제1 경로가 각 구성요소들(3100, 3200, 3300, 3400, 3500 및 3600)을 중 동형 암호 가속기(3200)를 통과하는 순서는 스토리지 컨트롤러(3000)와 클라이언트사이드 호스트(350) 간의 통신을 수행하는 호스트 인터페이스(3300) 직전일 수 있다. 상술한바와 같이 동형 암호문 데이터의 크기는 암호화 이전의 평문 데이터와 비교하여 수십 배에 이르는 크기를 가지므로, 스토리지 컨트롤러(3000)가 동형 암호 가속기(3200)가 수행하는 동형 암복호화가 아닌 기타의 기능들을 수행하는 경우, 상기 동형 암호문 데이터의 상태가 아닌 상기 평문 데이터의 상태로 상기 기타의 기능들을 수행하게 함으로써 스토리지 컨트롤러(3000) 내부에서 데이터의 전송에 소모되는 비용을 감소시킬 수 있다.
도 13은 본 발명의 실시예들에 따른 동형 암복호화 장치를 포함하는 클라이언트 또는 서버를 나타내는 블록도이다.
도 13을 참조하면, 클라이언트 또는 서버(7000)는 프로세서(7100), 요청 관리 회로(request management circuit)(7200), 메모리 장치(memory device)(7300), 통신(connectivity)부(7400), 사용자 인터페이스(7500), 및 파워 서플라이(7600)를 포함한다. 클라이언트 또는 서버(7000)는 임의의 모바일 시스템 또는 컴퓨팅 시스템일 수 있다.
프로세서(7100)는 클라이언트 또는 서버(7000)의 전반적인 동작을 제어하며, 운영 체제, 애플리케이션 등을 실행하고, 특정 계산들 또는 태스크들과 같은 다양한 컴퓨팅 기능들을 실행할 수 있다.
통신부(7400)는 외부 장치와 통신을 수행할 수 있다. 일 실시예에서, 통신부(7400)는 WiFi, WiFi Direct, 이더넷(Ethernet), 블루투스(Bluetooth), BLE(Bluetooth Low Energy), SPP(Serial Port Profile), 지그비(Zigbee), 적외선 통신, Radio Control, UWM(Ultra-Wide Band), Wireless USB, NFC(Near Field Communication) 중 하나 이상의 통신을 수행하도록 구성될 수 있다. 메모리 장치(7300)는 메모리 컨트롤러 및 비휘발성 메모리를 포함할 수 있다. 일 실시예에서, 상기 메모리 컨트롤러는 도 1 내지 도 4, 도 9 및 도 10에 도시된 스토리지 컨트롤러(3000 또는 5000)일 수 있고, 상기 비휘발성 메모리는 도 1, 도 2 및 도 8에 도시된 스토리지 메모리(3500 또는 5500)일 수 있다. 일 실시예에서, 상기 비휘발성 메모리는 EEPROM, 플래시 메모리, MRAM(Magnetic RAM), 스핀전달토크MRAM(Spin-Transfer Torque MRAM), FeRAM(Ferroelectiric RAM), PRAM(Phase change RAM), RRAM(Resistive RAM), 나노튜브 RRAM(nanotube RRAM), 폴리머 RAM(Polymer RAM), 나노 부유 게이트 메모리(Nano Floating Gate Memory), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Electronics Memory Device) 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
사용자 인터페이스(7500)는 키패드, 버튼, 마이크, 터치 스크린 등과 같은 하나 이상의 입력 장치, 및/또는 스피커, 디스플레이 장치 등과 같은 하나 이상의 출력 장치를 포함할 수 있다. 일 실시예에서, 사용자는 사용자 인터페이스(7500)를 통해 평문을 입력 또는 확인할 수 있다.
파워 서플라이(7600)는 클라이언트 또는 서버(7000)의 동작 전압을 공급할 수 있다.
도 14는 본 발명의 실시예들에 따른 스토리지 컨트롤러를 포함하는 시스템을 나타내는 블록도이다.
도 14를 참조하면, 동형 암호 시스템(9000)은 동형 암호 처리 서버(9100), 데이터 베이스(9300), 통신 네트워크(9500), 및 클라이언트들(9700-1, 9700-2, 9700-3)을 포함한다.
동형 암호 처리 서버(9100) 및 클라이언트들(9700-1, 9700-2, 9700-3)은 도 2 및 도 3에 도시된 동형 암복호화 가속기 또는 도 8 및 도 9에 도시된 동형 연산 가속기 중 적어도 하나를 포함할 수 있다.
클라이언트들(9700-1, 9700-2, 9700-3)은 통신 기능을 가지는 컴퓨팅 장치 또는 통신 단말기로서, 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, 모바일 인터넷 장치(mobile internet device)(MID), 인터넷 태블릿, IoT(Internet of Things) 장치, 또는 웨어러블 컴퓨터일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
통신 네트워크(9500)는 근거리 통신망(LAN: Local Area Network), 광역 통신망(WAN: Wide Area Network), 인터넷 (WWW: World Wide Web), 유무선 데이터 통신망, 전화망, 유무선 텔레비전 통신망 등을 포함한다. 상기 무선 통신망은3G, 4G, 5G, 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution), WIMAX(World Interoperability for Microwave Access), 와이파이(Wi-Fi), 블루투스 통신, 적외선 통신, 초음파 통신, 가시광 통신(VLC: Visible Light Communication), 및 라이파이(LiFi) 중 어느 하나일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.
이상 설명한 바와 같이, 본 발명의 실시예들에 따른 스토리지 컨트롤러, 및 이를 포함하는 클라이언트 및 서버는 상기 동형 암복호화 또는 상기 동형 연산을 수행한다. 이 경우 상기 동형 암호 기술을 수행함에 있어서 필수적으로 요구되는 공개키, 비밀키 및 기타 파라미터들이 클라이언트-사이드 스토리지 장치의 외부로 유출되지 않으므로, 상기 동형 암호 기술을 수행하는 시스템의 보안을 강화시킬 수 있다. 그리고 크기가 증가한 상기 동형 암호문 데이터의 전송 횟수를 최소화하여 상기 동형 암호문 데이터의 전송에 따른 부담을 감소시킬 수 있다.
본 발명의 실시예들에 따른 스토리지 컨트롤러, 및 이를 포함하는 클라이언트 및 서버는 동형 암호 기술이 적용되는 여러 응용분야에서 폭 넓게 적용될 수 있을 것이다. 또한, 본 발명은 동형 암호 기술이 적용되는 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular phone), 스마트폰(smart phone), MP3 플레이어, 피디에이(Personal Digital Assistants; PDA), 피엠피(Portable Multimedia Player; PMP), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(internet of things;) 기기, IoE(internet of everything:) 기기, e-북(e-book), VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 전자시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 클라이언트-사이드 호스트 및 클라이언트-사이드 스토리지 디바이스를 포함하고,
    상기 클라이언트-사이드 스토리지 디바이스는 스토리지 컨트롤러 및 스토리지 메모리를 포함하고,
    상기 스토리지 컨트롤러는,
    호스트 인터페이스;
    상기 스토리지 메모리에 대한 독출 동작 및 기입 동작을 제어하는 제어부; 및
    상기 클라이언트-사이드 호스트로부터 독출 요청이 있는 경우 상기 스토리지 메모리로부터 독출된 제1 평문 데이터를 동형 암호화하여 생성된 제1 동형 암호문 데이터를 상기 호스트 인터페이스를 통하여 상기 클라이언트-사이드 호스트로 제공하고, 상기 클라이언트-사이드 호스트로부터 기입 요청이 있는 경우 상기 호스트 인터페이스로부터 수신된 제2 동형 암호문 데이터를 동형 복호화하여 생성된 제2 평문 데이터를 상기 스토리지 메모리에 기입하는 동형 암복호화 가속기를 포함하는 것을 특징으로 하는 클라이언트.
  2. 제1 항에 있어서,
    상기 클라이언트-사이드 호스트로부터의 독출 요청이 상기 스토리지 메모리에 저장된 데이터를 서버로 전송하기 위한 목적의 독출 요청인 경우 상기 동형 암호화를 수행하기 위한 제1 경로를 통해 상기 스토리지 메모리로부터 상기 데이터를 독출하고, 상기 클라이언트-사이드 호스트로부터의 독출 요청이 상기 데이터를 상기 서버로 전송하기 위한 목적의 독출 요청이 아닌 경우 상기 동형 암호화를 수행하지 않는 제2 경로를 통해 상기 스토리지 메모리로부터 상기 데이터를 독출하는 단계를 포함하는 것을 특징으로 하는 클라이언트.
  3. 제2 항에 있어서,
    상기 제1 경로는 상기 동형 암복호화 가속기를 통과하는 전송 경로이고, 상기 제2 경로는 상기 동형 암복호화 가속기를 통과하지 않는 전송 경로인 것을 특징으로 하는 클라이언트.
  4. 제2 항에 있어서,
    상기 동형 암호 가속기는 상기 클라이언트에 포함되는 구성요소들 중 상기 호스트 인터페이스와 가장 근접하여 위치하는 구성요소인 것을 특징으로 하는 클라이언트.
  5. 제1 항에 있어서,
    상기 동형 암복호화 가속기는, 암호화 회로, 복호화 회로, 키생성 회로 및 파라미터 생성 회로를 포함하는 것을 특징으로 하는 클라이언트.
  6. 제5 항에 있어서,
    상기 암호화 회로는 상기 제1 평문 데이터를 수신하고, 상기 키생성 회로로부터 공개키를 수신하며, 상기 파라미터 생성 회로로부터 파라미터를 수신하는 것을 특징으로 하는 클라이언트.
  7. 제5 항에 있어서,
    상기 복호화 회로는, 상기 제2 동형 암호문 데이터를 수신하고, 상기 키생성 회로로부터 비밀키를 수신하는 것을 특징으로 하는 클라이언트.
  8. 제5 항에 있어서,
    상기 파라미터 생성 회로는, 상기 동형 암호화 및 상기 동형 복호화 과정에서 사용되는 파라미터를 생성하는 것을 특징으로 하는 클라이언트.
  9. 제8 항에 있어서,
    상기 파라미터는 동형 암호 스킴의 종류별로 생성되는 것을 특징으로 하는 클라이언트.
  10. 제9 항에 있어서,
    상기 동형 암호 스킴은 부분 동형 암호, 제한 동형 암호 및 완전 동형 암호 중 어느 하나인 것을 특징으로 하는 클라이언트.
KR1020200088104A 2020-07-16 2020-07-16 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법 KR20220009643A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200088104A KR20220009643A (ko) 2020-07-16 2020-07-16 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법
US17/167,203 US11632232B2 (en) 2020-07-16 2021-02-04 Storage controller, system including the same, and method of operating the same
EP21157866.1A EP3940676A1 (en) 2020-07-16 2021-02-18 Storage controller, and system including the same
CN202110397779.5A CN113946840A (zh) 2020-07-16 2021-04-14 存储控制器、客户系统以及操作存储控制器的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200088104A KR20220009643A (ko) 2020-07-16 2020-07-16 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220009643A true KR20220009643A (ko) 2022-01-25

Family

ID=74668700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200088104A KR20220009643A (ko) 2020-07-16 2020-07-16 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법

Country Status (4)

Country Link
US (1) US11632232B2 (ko)
EP (1) EP3940676A1 (ko)
KR (1) KR20220009643A (ko)
CN (1) CN113946840A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102471210B1 (ko) * 2022-03-07 2022-11-29 주식회사 비트코인그룹 블록체인과 동형암호를 기반으로 하는 데이터 분석 서비스 중개 시스템 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4332748A1 (en) * 2022-09-02 2024-03-06 Samsung Electronics Co., Ltd. Systems and methods for integrating fully homomorphic encryption (fhe) with a storage device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285972B2 (en) * 2005-10-26 2012-10-09 Analog Devices, Inc. Lookup table addressing system and method
US9083526B2 (en) 2011-04-29 2015-07-14 International Business Machines Corporation Fully homomorphic encryption
KR101341709B1 (ko) 2011-07-11 2013-12-13 주식회사 디에스글로벌이엔씨 분절거더를 이용한 교량용 프리스트레스트 거더의 제작 방법 및 이에 의해 시공된 프리스트레스트 거더
US9760737B2 (en) 2015-06-12 2017-09-12 Qualcomm Incorporated Techniques for integrated circuit data path confidentiality and extensions thereof
US10255454B2 (en) 2016-02-17 2019-04-09 Microsoft Technology Licensing, Llc Controlling security in relational databases
KR101832861B1 (ko) 2016-09-26 2018-04-13 연세대학교 산학협력단 패스워드 평가 방법 및 장치
CN106452723B (zh) 2016-12-13 2017-05-31 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法
JP6522263B2 (ja) * 2017-01-18 2019-05-29 三菱電機株式会社 準同型演算装置、暗号システム及び準同型演算プログラム
CA3034597C (en) 2017-04-11 2021-10-12 The Governing Council Of The University Of Toronto A homomorphic processing unit (hpu) for accelerating secure computations under homomorphic encryption
US10778409B2 (en) 2017-12-15 2020-09-15 Crypto Lab Inc. Terminal device performing homomorphic encryption, server device processing ciphertext and methods thereof
US11087223B2 (en) 2018-07-11 2021-08-10 International Business Machines Corporation Learning and inferring insights from encrypted data
US11575500B2 (en) 2018-07-25 2023-02-07 Sap Se Encrypted protection system for a trained neural network
KR102040120B1 (ko) 2018-07-27 2019-11-05 주식회사 크립토랩 근사 암호화된 암호문에 대한 연산을 수행하는 장치 및 방법
FR3097353B1 (fr) * 2019-06-12 2021-07-02 Commissariat Energie Atomique Méthode d’apprentissage collaboratif d’un réseau de neurones artificiels sans divulgation des données d’apprentissage
US20200142735A1 (en) * 2019-09-28 2020-05-07 Intel Corporation Methods and apparatus to offload and onload workloads in an edge environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102471210B1 (ko) * 2022-03-07 2022-11-29 주식회사 비트코인그룹 블록체인과 동형암호를 기반으로 하는 데이터 분석 서비스 중개 시스템 및 방법

Also Published As

Publication number Publication date
CN113946840A (zh) 2022-01-18
US11632232B2 (en) 2023-04-18
US20220021515A1 (en) 2022-01-20
EP3940676A1 (en) 2022-01-19

Similar Documents

Publication Publication Date Title
KR101965628B1 (ko) 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들
US10515567B2 (en) Cryptographic machines with N-state lab-transformed switching devices
US20060093136A1 (en) Implementation of a switch-box using a subfield method
KR102339833B1 (ko) 다변수 패킹을 이용하는 연산 장치 및 방법
US20060023875A1 (en) Enhanced stream cipher combining function
KR20160024965A (ko) 평문 데이터를 암호화하기 위한 방법 및 장치
US11632232B2 (en) Storage controller, system including the same, and method of operating the same
Ramalingam et al. Chaos triggered image encryption-a reconfigurable security solution
KR20200087061A (ko) 근사 암호화된 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법
Hamdi et al. Hybrid encryption algorithm (HEA) based on chaotic system
Faragallah An efficient block encryption cipher based on chaotic maps for secure multimedia applications
JP7170878B2 (ja) 暗号文に対する非多項式演算を行う装置及び方法
KR20200046481A (ko) 난수 생성기, 이를 포함하는 암호화 장치 및 이의 동작 방법
Shi et al. A novel memristor-based chaotic image encryption algorithm with Hash process and S-box
KR20190020988A (ko) 컴퓨터 실행 가능한 경량 화이트박스 암호화 방법 및 장치
CN109923829B (zh) 对秘密值达成一致
US9509495B2 (en) Data protection method and apparatus
KR20220079522A (ko) 기하 대수 및 헨젤 코드들을 이용한 암호화를 위한 방법들 및 시스템들과 동형 암호화 시스템들
Kanda et al. Hardware architecture design of AES cryptosystem with 163-bit elliptic curve
KR102304992B1 (ko) 동형 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법
Naji Elliptic curve video encryption in mobile phone based on multi-keys and chaotic map
US20160315761A1 (en) Operator lifting in cryptographic algorithm
CN115134070A (zh) 一种分组密码算法实现的方法、装置和设备
KR20230095750A (ko) 일방향 함수를 이용한 암호 운영모드 기반의 화이트박스 암호화 방법 및 장치
KR101971001B1 (ko) 화이트박스 암호가 적용된 블록 암호 기반의 난수 생성 방법 및 장치