KR102526144B1 - 동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법 - Google Patents

동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR102526144B1
KR102526144B1 KR1020220102557A KR20220102557A KR102526144B1 KR 102526144 B1 KR102526144 B1 KR 102526144B1 KR 1020220102557 A KR1020220102557 A KR 1020220102557A KR 20220102557 A KR20220102557 A KR 20220102557A KR 102526144 B1 KR102526144 B1 KR 102526144B1
Authority
KR
South Korea
Prior art keywords
key
rotation operation
hierarchical
galois
server
Prior art date
Application number
KR1020220102557A
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 EP23151723.6A priority Critical patent/EP4228198A1/en
Priority to US18/105,117 priority patent/US20230254112A1/en
Priority to CN202310108205.0A priority patent/CN116582238A/zh
Application granted granted Critical
Publication of KR102526144B1 publication Critical patent/KR102526144B1/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)
    • 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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES 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/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/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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 일 실시 예에 따른 완전 동형 암호에서 회전 연산키를 생성하는 클라이언트-서버 모델은, 클라이언트가 비밀키를 이용하여 생성한 공개키와 계층적 갈루아키를 서버에 전송하고, 서버가 공개키에 계층적 갈루아키를 이용해 회전연산을 수행하여 하나 이상의 회전 연산키를 직접 생성함으로써, 클라이언트의 계산 부담 및 통신 비용을 감소시키는 동시에 서버에서 필요한 경우 회전 연산키를 스스로 생성할 수 있다.

Description

동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법{ELECTRONIC DEVICE THAT DELEGATES THE GENERATION OF HOMOMORPHIC ROTATION KEY TO SERVER AND METHOD OF OPERATION THEREOF}
동형 암호 기술에 연관되며, 보다 구체적으로는 동형 암호에서 회전 연산을 수행하기 위한 동형 회전키를 생성하는 방법에 연관된다.
동형암호 (同形暗號, Homomorphic Encryption, HE)는 데이터를 암호화된 상태에서 연산할 수 있는 암호화 방법이다. 암호문들을 이용한 연산의 결과는 새로운 암호문이 되며, 이를 복호화하여 얻은 평문은 암호화하기 전 원래 데이터의 연산 결과와 같다. 동형암호는 개인정보를 안전하게 보호한 채로 외부매체에 저장하거나 계산하는 목적으로 사용할 수 있다. 예를 들어, 동형암호를 이용하면 데이터를 암호화한 채로 상업용 클라우드 서비스에 외주를 맡겨 암호화된 채로 데이터 처리를 할 수 있다.
동형암호에서는 여러 개의 데이터를 하나의 암호문에 암호화를 수행하고, 서로 다른 두 암호문을 연산할 때는 대응하는 위치의 데이터 간에 연산이 이루어진다. 암호문 내의 다른 위치에 있는 데이터를 암호화된 상태에서 연산해야 할 경우 연산이 가능하도록 위치를 이동해야 하는 경우가 발생한다. 암호화된 상태에서 암호문 내의 데이터의 위치를 바꾸는 연산은 암호화된 상태에서의 순환 이동 연산인 동형 회전 연산밖에 없고, 동형 회전 연산은 동형암호를 사용하는데 있어서 필수 연산에 해당한다.
도 1은 종래 동형 암호 연산을 수행하는 클라이언트-서버 모델의 네트워크 환경이다. 도 1을 참조하면, 종래 동형 암호 연산을 수행하는 클라이언트(1)-서버(2) 모델에서, 동형 암호에 따라 암호문을 생성하는 클라이언트(1)는 서버(2)에 암호문에 대한 동형 암호 연산을 수행하도록 요청하기 위해, 필요한 연산키를 생성하여 전송할 수 있다. 예를 들어, 클라이언트(1)는 자신의 비밀키를 이용하여 동형 암호에 따른 회전 연산을 수행하기 위한 회전 연산키를 생성하여 서버(2)에 전송함으로써, 서버(2)에서 암호문에 대한 회전 연산을 수행할 수 있다. 동형 암호에 필요한 연산키는 클라이언트(1)의 비밀키로부터 생성할 수 있으므로, 비밀키를 모르는 다른 전자 장치, 예를 들어 서버(2)에서는 생성할 수 없다.
동형암호에서 회전 연산을 수행하기 위한 동형 회전키는 크기가 수백 MB를 차지하는 경우가 많고, 그 종류 또한 100개 이상으로 다양하기 때문에 클라이언트 장치에서 모든 회전 연산키를 생성하여 서버에 전송하는 경우 발생하는 비용이 상당하다.
본 개시의 실시 예들에 따르면, 클라이언트의 비밀키가 아닌 공개키를 이용한 동형 암호 연산을 위한 연산키를 생성하는 방법을 새롭게 제시하여, 클라이언트가 서버에 동형 암호 연산을 위한 일부 연산키를 생성하는 권한을 위임하는 클라이언트-서버 모델이 제공될 수 있다.
실시 예들에 따르면, 클라이언트로부터 일부 연산키에 대한 생성 권한을 위임받아 동형 암호 연산을 수행하는 동안 필요한 연산키를 클라이언트의 공개키를 이용하여 직접 생성하여 클라이언트의 암호문에 대한 동형 암호 연산을 수행하는 서버가 제공될 수 있다.
실시 예의 일 측면에 따른 전자 장치는, 보안 프로토콜을 이용한 통신을 지원하는 통신 인터페이스, 개인 정보 데이터를 포함하는 메모리 및 상기 통신 인터페이스 및 상기 메모리와 작동적으로 연결되는 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 동형 암호에 따라 상기 개인 정보 데이터를 암호화한 암호문을 생성하고, 상기 전자 장치에 대한 비밀키를 이용하여 공개키 및 하나 이상의 연산키를 생성하고, 상기 통신 인터페이스를 통해 상기 암호문, 상기 공개키 및 상기 하나 이상의 연산키를 서버에 전송하고, 및 상기 서버로부터 상기 암호문에 대한 동형 암호 연산에 기반하여 획득한 서비스 정보를 수신하고, 상기 하나 이상의 연산키는 상기 동형 암호 연산에 필요한 전체 연산키 중 일부에 대응할 수 있다.
일 실시 예에서, 상기 하나 이상의 연산키는 동형 암호 회전 연산을 위한 계층적 갈루아키를 포함하고, 상기 계층적 갈루아키는 동형 암호 회전 연산을 위한 복수 개의 회전 연산키를 생성케할 수 있다.
일 실시 예에서, 상기 복수 개의 회전 연산키는 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행하여 생성되도록 할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, k 단계 이동에 대응하여 상기 계층적 갈루아키를 생성하고, 상기 복수 개의 회전 연산키는 상기 k 단계 이동의 배수에 대응하여 생성되도록 할 수 있다.
일 실시 예에서, 상기 서버로부터 동형 암호 연산을 위한 상기 k 단계 이동 요청을 수신하는 것에 응답하여, 상기 k 단계 이동에 대응하는 상기 마스터 키를 생성할 수 있다.
일 실시 예에서, 상기 하나 이상의 연산키는 곱셈키, 켤레복소키 및 하나 이상의 계층적 갈루아키를 포함할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는 서로 상이한 단계 이동에 대응하여 상기 하나 이상의 계층적 갈루아키를 생성할 수 있다.
일 실시 예에서, 상기 개인 정보 데이터는 상기 전자 장치에 의해 수집된 사용자 생체 데이터, 사진, 동영상, 로그 데이터 중 적어도 하나를 포함할 수 있다.
일 실시 예에서, 상기 서버는 신경망 네트워크 서비스, 서비스형 AI, 또는 검색 서비스를 제공하기 위해 상기 암호문에 대한 동형 암호 연산을 수행한 결과에 따라 상기 서비스 정보를 획득할 수 있다.
실시 예의 다른 일 측면에 따른 서버는, 보안 프로토콜을 이용한 통신을 지원하는 통신 인터페이스 및 상기 통신 인터페이스와 작동적으로 연결되는 적어도 하나의 프로세서를 포함하고, 상기 통신 인터페이스는 전자 장치로부터 암호문, 공개키, 및 계층적 갈루아키를 수신하고, 상기 적어도 하나의 프로세서는 상기 암호문에 대한 동형암호 연산을 위한 데이터 이동 요청에 응답하여, 상기 공개키 및 상기 계층적 갈루아키를 이용하여 회전 연산키를 생성하고, 및 상기 적어도 하나의 프로세서가 상기 회전 연산키를 이용하여 상기 암호문에 대한 회전 연산을 수행할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 수행하여 상기 회전 연산키를 생성할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, 상기 계층적 갈루아키를 이용하여 k 단계 이동에 대응한 회전 연산키를 생성할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행함으로써 k 단계 이동의 배수에 대응한 복수 개의 회전 연산키를 생성할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, 상기 계층적 갈루아키를 수신하기 전에 상기 전자 장치에 k 단계 이동에 대응한 회전 연산키를 생성하기 위한 계층적 갈루아키를 요청할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서는, 신경망 네트워크 서비스, 서비스형 AI, 또는 검색 서비스를 제공하기 위해 상기 암호문에 대한 동형 암호 연산을 수행한 결과에 따라 서비스 정보를 획득하여 상기 전자 장치에 전송할 수 있다.
일 실시 예에서, 메모리를 더 포함하고, 상기 회전 연산키를 상기 메모리에 저장하고, 상기 적어도 하나의 프로세서가 상기 암호문에 대한 k 단계 이동에 대한 재요청에 응답하여, 상기 메모리에 저장된 상기 회전 연산키를 이용하여 회전 연산을 수행할 수 있다.
일 실시 예에서, 상기 적어도 하나의 프로세서가 상기 메모리에 저장된 상기 회전 연산키를 삭제할 수 있다.
실시 예의 또 다른 일 측면에 따른 서버 시스템에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장한 비-일시적 컴퓨터 판독가능한 저장매체는, 상기 하나 이상의 프로그램은, 서버 시스템이 전자 장치로부터 암호문, 공개키 및 하나 이상의 연산키를 수신하고, 상기 암호문에 대한 동형 회전 연산의 요청에 응답하여, 프로세서에 의해, 상기 공개키 및 상기 하나 이상의 연산키를 이용하여 회전 연산키를 생성하고, 상기 프로세서에 의해, 상기 회전 연산키를 이용하여 상기 암호문에 대한 회전 연산을 수행하는 명령어를 포함할 수 있다.
일 실시 예에서, 상기 프로세서에 의해, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 수행하여 상기 회전 연산키를 생성할 수 있다.
일 실시 예에서, 상기 프로세서에 의해, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행함으로써 복수 개의 회전 연산키를 생성할 수 있다.
본 개시의 실시 예들에 따르면, 클라이언트 장치는 복수 개의 동형 회전키를 직접 생성하여 동형 연산을 수행하는 서버에 전송할 필요가 없이 계층적 갈루아키만을 생성하여 서버에 복수 개의 동형 회전키를 생성하는 권한을 위임함으로써, 클라이언트 장치-서버 간의 연산량이 적정하게 분배되고, 통신 비용을 현저하게 줄일 수 있다.
본 개시의 실시 예들에 따르면, 서버가 동형 암호 연산에 필요한 동형 회전키를 필요한 시점에 직접 생성할 수 있으므로 다양한 단계 이동에 대응하는 동형 회전키를 삭제하거나 메모리에 저장하는 관리가 가능하다.
도 1은 종래 동형 암호 연산을 수행하는 클라이언트-서버 모델의 네트워크 환경이다.
도 2는 일 실시 예에 따른 일부 연산키 생성 권한을 서버에 위임한 클라이언트-서버 모델의 네트워크 환경이다.
도 3은 일 실시 예에 따른 암호화된 데이터의 구성요소별 k 단계 회전 연산을 나타낸다.
도 4는 일 실시 예에 따른 연산키 생성 권한을 위임받은 서버에서 동형 회전 연산키를 생성하는 방법의 일 예시이다.
도 5는 일시 예에 따른 클라이언트의 구성요소를 포함하는 블록도이다.
도 6은 일 실시 예에 따른 클라이언트가 서버에 동형 암호 연산을 포함하는 서비스를 요청하는 방법의 순서도이다.
도 7은 일 실시 예에 따른 서버의 구성요소를 포함하는 블록도이다.
도 8은 일 실시 예에 따른 서버에서 일부 연산키를 생성하여 동형 암호 연산을 수행하는 방법의 순서도이다.
도 9는 일 실시 예에 따른 연산 서버와 연산키 생성 서버를 포함하는 클라이언트-서버 모델의 네트워크 환경이다.
이하에서, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 이러한 실시 예들에 의해 권리 범위가 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는, 연관되는 기술 분야에서 일반적이고 보편적인 것으로 선택되었으나, 기술의 발달 및/또는 변화, 관례 기술자의 선호 등에 따라 다른 용어가 있을 수 있다. 따라서, 아래 설명에 사용되는 용어는 기술적 사상을 한정하는 것으로 이해되어서는 안 되며, 실시 예들을 설명하기 위한 예시적 용어로 이해되어야 한다.
또한 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
도 2는 일 실시 예에 따른 일부 연산키 생성 권한을 서버(200)에 위임한 클라이언트(100)-서버(200) 모델(10)의 네트워크 환경이다.
클라이언트(100)는 동형 암호 연산을 수행하고자 하는 데이터를 포함하고, 서버(200)는 클라이언트(100)의 데이터에 대한 동형 암호 연산을 수행할 수 있다. 클라이언트(100)는 데이터를 동형 암호에 따라 암호화하고, 동형 암호 연산을 서버에 요청하기 위해 암호화된 데이터를 서버(200)에 전송할 수 있다. 클라이언트(100)는 동형 암호 연산에 필요한 전체 연산키 중 일부만 생성하여 서버(200)에 전송하고, 서버(200)에 나머지 연산키를 생성할 수 있는 권한을 위임할 수 있다. 일 실시 예에서, 클라이언트(100)는 암호문과 함께 다른 연산키를 생성케 할 수 있는 하나 이상의 연산키를 전송함으로써 일부 연산키 생성 권한을 위임할 수 있다. 하나 이상의 연산키는 일종의 공개키로, 클라이언트(100)는 하나 이상의 공개키로써, 공개키, 일부 연산키(예, 곱셈키, 켤레복소키(conjugation) 등), 다른 연산키(예, 회전 연산키)를 생성케 하는 연산키(예, 계층적 갈루아키)를 서버(200)에 전송할 수 있다. 예를 들어, 클라이언트(100)는 일부 연산키로 곱셈키 및 켤레복소키를 서버(200)에 전송할 수 있고, 다른 연산키를 생성케 하는 연산키로써 계층적 갈루아키를 서버(200)에 전송할 수 있다.
클라이언트(100)는 자신의 비밀키를 이용하여 공개키와 하나 이상의 연산키를 생성할 수 있다. 본 개시의 다양한 실시 예에서, 클라이언트(100)는 동형 암호 연산에 필요한 모든 연산키를 생성하여 서버(200)에 전송하지 않을 수 있다. 특히, 동형 암호 회전 연산에 필요한 복수 개의 회전 연산키는 서버(200)에서 필요한 시점에 필요한 회전 연산키를 직접 생성하여 사용하도록 하기 위해, 클라이언트(100)에서는 계층적 갈루아키만 생성하여 서버(200)에 전송함으로써, 회전 연산키 생성 권한을 서버(200)에 위임할 수 있다.
계층적 갈루아키(Hierarchical Galois Key)는 동형 암호문의 회전 연산(rotation operation)을 위한 연산키(Evaluation Key)를 생성할 수 있는 일종의 공개키(public key)이다. 계층적 갈루아키는 하나 이상의 갈루아키를 포함할 수 있다. 하나 이상의 갈루아키를 포함하는 계층적 갈루아키는 설명의 편의를 위해 계층적 갈루아키, 또는 계층적 갈루아키 세트라 할 수 있다. 예를 들어, 계층적 갈루아키는 k 단계 이동에 대응한 갈루아키를 포함할 수 있다. 일종의 공개키이기 때문에 계층적 갈루아키를 수신한 다른 전자 장치(예, 서버)는 계층적 갈루아키를 이용하여 회전 연산을 위한 연산키를 생성할 수 있다.
다양한 실시 예에서, 서버(200)는 k 단계 이동에 대응한 갈루아키를 이용하여 k의 배수에 대응한 단계 이동이 가능한 복수 개의 회전 연산키를 생성할 수 있다. 예를 들어, 계층적 갈루아키가 k=1인 갈루아키인 경우, 13 단계 이동을 위한 회전 연산키를 생성하기 위해서는 k=1인 갈루아키를 13번 이용하여 회전 연산키를 생성할 수 있다. 또 다른 예로써, 계층적 갈루아키 세트가 k={1, -1, 2, -2, 4, -4, 8, -8}인 갈루아키를 포함한다고 할 때, 13 단계 이동을 위한 회전 연산키를 생성하기 위해서는 k=8인 갈루아키, k=4인 갈루아키, k=1인 갈루아키를 순차로 이용함으로써, 회전 연산키를 생성할 수 있다.
다양한 실시 예에서, 클라이언트(100)는 하나 이상의 갈루아키를 포함하는 계층적 갈루아키 세트를 생성하여, 서버(200)에 전송할 수 있다. 또는 서버(200)가 먼저 클라이언트(100)에 필요한 계층적 갈루아키 세트를 요청할 수 있다.
서버(200)는 클라이언트(100)의 비밀키 없이도 다른 연산키를 생성케하는 연산키(공개키)를 이용함으로써, 동형 암호 연산에 필요한 연산키를 직접 생성할 수 있다.
서버(200)는 암호화된 데이터에 대한 동형 암호 연산을 수행한 연산 결과를 기반으로 한 서비스 정보를 클라이언트(100)에 제공할 수 있다. 서버(200)는 클라이언트(100)로부터 수신한 암호문, 공개키, 일부 연산키를 이용하여 암호문에 대한 동형 연산을 수행할 수 있다. 서버(200)는 필요한 경우 클라이언트(100)로부터 수신한 일부 연산키를 이용하여 다른 연산키를 생성할 수 있다. 다양한 실시 예에서, 서버(200)는 계층적 갈루아키를 수신하여 암호문에 대한 회전 이동 요청이 발생하는 것에 응답하여, 공개키와 계층적 갈루아키를 이용하여 회전 연산키를 생성할 수 있다. 서버(200)는 공개키에 계층적 갈루아키를 이용하여 회전 연산을 수행함으로써 회전 연산키를 생성할 수 있다.
다양한 실시 예에서 클라이언트(100)는 사용자의 다양한 전자 장치가 될 수 있다. 예를 들어, 클라이언트(100)는 사용자 PC, 모바일 장치, IoT 장치, 자동차, 가전제품, 센서 등이 될 수 있다. 다양한 실시 예에서 서버(200)는 동형 암호에 따른 연산을 수행하는 다양한 종류의 서버일 수 있다. 예를 들어, 검색 서버, 서비스형 AI(AI as a Service, AIaaS), Secure AIaaS, 클라우드 서버 등이 될 수 있다.
클라이언트(100)는 개인 정보 데이터에 관하여 서버(200)에 동형 암호 연산을 활용한 서비스를 요청할 수 있다. 개인 정보 데이터는 클라이언트(100)에 의해 수집, 생성 또는 수정될 수 있다. 다양한 실시 예에서, 개인 정보 데이터는 사용자에 의해 개인 정보 보호가 요청된 데이터가 될 수 있고, 또는 데이터 종류 그 자체에 의해 개인 정보 데이터로 관리될 수 있다. 예를 들어, 개인 정보 데이터는 사용자 생체 데이터, 사진, 동영상, 로그 데이터 등이 될 수 있다. 다양한 실시 예에서, 서비스는 신경망 네트워크, 게놈 분석, 서비스형 AI, 검색 등 데이터 처리를 통해 제공될 수 있다. 또한, 다양한 실시 예에서 서버(200)는 상기 다양한 서비스를 제공하기 위해 동형 암호 연산을 수행할 수 있다.
동형 암호에서 연산은 연산키가 필요하고, 종래 동형 암호 연산을 수행하는 클라이언트(1)-서버(2) 모델에서는 데이터를 암호화한 클라이언트(1)가 비밀키를 이용하여 연산키를 생성할 수 밖에 없다. 예를 들어, 클라이언트(1)는 데이터를 암호화하고, 비밀키를 이용하여 일종의 공개키인 곱셈키를 생성하여 서버(2)에 암호문과 함께 곱셈키를 전송하면, 서버(2)는 곱셈키를 이용하여 암호문에 대한 동형 암호 연산을 수행할 수 있다. 그러나, 클라이언트(1)가 동형 암호에 필요한 모든 연산키를 생성하고, 이를 서버(2)에 전달하는 것은 계산 부담 및 통신 비용의 문제가 발생한다. 본 개시의 다양한 실시 예에서는, 클라이언트(100)는 동형 암호에 필요한 전체 연산키 중 일부만을 생성하고, 나머지 연산키를 서버(200)에서 생성하도록 하기 위해 서버(200)에 다른 연산키를 생성케하는 연산키(공개키)를 전송할 수 있다.
일 실시 예에 따른 클라이언트(100)-서버(200) 모델(10)은 동형 암호에 따른 암호문에 대한 다양한 산술 연산을 수행하기 위한 완전 동형 암호화 방법으로 BFV(Brakerski JFan-Vercauteran)와 CKKS(Cheon-Kim-Kim-Song)가 있다. 두 가지 방식은 암호화된 메시지 벡터에 대해 구성요소별로 연산을 수행할 수 있다. 예를 들어, 곱셈연산의 경우 구성요소별 곱셈을 한 값이 전체 메시지 벡터 값이 된다. 컨볼루션 신경망의 부트스트래핑, 매트릭스 곱셈 및 컨볼루션과 같은 고급 연산을 위해서는 암호화된 메시지 벡터의 구성요소의 이동이 선행되어야 하는데, BFV 및 CKKS에서는 이를 위해 회전 연산을 지원한다. 동형 암호문에 대한 회전 연산을 위해서도 역시 회전 연산키가 필요하다. 도 1을 참조하면, 종래 클라이언트(1)는 비밀키를 이용하여 회전 연산키를 생성하여, 서버(2)에 전송함으로써 서버(2)에서 암호문에 대한 회전 연산을 수행하였다. 다만, 심층 컨볼루션 신경망과 같은 많은 순환 시프트에 대한 회전 이동이 필요한 고급 연산에서는 필요한 전체 회전 연산키의 크기만 수백 기가바이트가 될 수 있다. 예를 들어, CIFAR-10 데이터 세트에 대한 표준 ResNet-20 네트워크와 ImageNet 데이터 세트에 대한 ResNet-18 네트워크를 다항식 모듈도 N = 216과 N = 217을 각각 갖는 CKKS 체계의 사전 훈련된 매개 변수로 구현하는 경우, 서버는 265개와 617개의 회전 연산키를 필요로 하며, 이는 각각 105GB, 197.6GB의 메모리를 차지한다. 이러한 비용 부담은 비밀키를 이용하여 회전 연산키를 생성하는 종래 클라이언트(1)-서버(2) 모델에서 동형 연산을 수행하기에 사실상 불가능할 정도의 문제를 야기할 수 있다.
본 개시의 다양한 실시 예들에 따른, 일부 연산키 생성 권한을 서버(200)에 위임한 클라이언트(100)-서버(200) 모델은 클라이언트(100)에서 계층적 갈루아키만을 생성하여 서버(200)에 전송하면, 서버(200)에서 회전 연산이 필요한 시점에 계층적 갈루아키를 이용하여 복수 개의 회전 연산키를 직접 생성할 수 있다. 클라이언트(100)는 비밀키를 이용하여 일종의 공개키인 계층적 갈루아키를 생성할 수 있고, 서버(200)는 클라이언트(100)로부터 수신한 공개키와 계층적 갈루아키를 이용하여 필요한 회전 연산키를 직접 생성하여 사용할 수 있다.
도 3은 일 실시 예에 따른 암호화된 데이터의 구성요소별 k 단계 회전 연산을 나타낸다.
동형 암호 연산 중 암호문을 생성한 전자 장치에서 자신의 비밀키를 이용하여 생성해야 하는 연산키를 필요로 하는 연산은 곱셈 연산, 켤레복소수 연산, 회전 연산이 있다. 하나의 암호문에 대해, 곱셈 연산키와 켤레복소수 연산키는 단일키이지만, 회전 연산은 회전 정도에 따라 복수 개의 연산키가 필요하다.
완전 동형 암호화 체계에서, 암호화된 메시지 벡터에 대해 구성요소별로 연산을 수행하기 위해 선행되는 회전 연산은 메시지 벡터의 주기적 이동(cyclic shifts)이라 설명할 수 있다. 도 3을 참조하면, 암호화된 데이터(301, 302)는 복수 개의 메시지 벡터(v0, v1, ..., vn-1)로 표현할 수 있다. 암호화된 데이터(301)의 메시지 벡터에 대한 k 단계 이동에 대응하는 회전 연산을 수행한 결과는 데이터(302)와 같다. 암호화된 데이터에 대해 회전 연산을 수행하면, 구성요소에 해당하는 벡터 각각의 위치가 k 만큼 이동할 수 있다. 설명을 위해, k는 임의의 수라 정의할 수 있고, 회전 연산을 필요로 하는 고급 연산에 의해 k 값이 정해질 수 있다. 다시 말해, 주기적 이동의 정도에 대응하여 k 값이 결정될 수 있다.
회전 연산키는 회전 이동마다 다른 회전 연산키가 필요하고, 이는 다양한 k 값에 대응하는 수많은 회전 연산키가 필요하다는 것을 의미한다. 회전 연산키는 다른 연산키와 동일하게 동형 암호문을 생성하는 클라이언트에서 비밀키를 이용하여 생성할 수 있다. 본 개시의 다양한 실시 예에서는, 클라이언트(100)에서 생성한 공개키들만을 이용하여 클라이언트(100)의 비밀키 없이 회전 연산키를 생성할 수 있다. 다양한 실시 예에서, 클라이언트(100)의 비밀키를 모르는 서버(200)가 일종의 공개키인 k 단계 이동에 대응하는 계층적 갈루아키를 이용하여 k 단계 이동을 위한 회전 연산키를 생성할 수 있다.
도 4는 일 실시 예에 따른 연산키 생성 권한을 위임받은 서버(200)에서 동형 회전 연산키를 생성하는 방법의 일 예시이다.
일 실시 예에서, 동형 암호 연산키 관리 시스템(100)은 클라이언트(200)로부터 수신한 하나 이상의 공개키를 이용하여 복수 개의 동형 회전 연산키를 생성할 수 있다. 하나 이상의 공개키는 클라이언트(200)의 비밀키를 이용하여 생성된 공개키, 하나 이상의 계층적 갈루아키를 포함할 수 있다. 동형 암호 연산을 위한 공개키는 다항식으로 표현할 수 있다.
S401 단계에서, 동형 암호 연산키 관리 시스템(100)은 클라이언트(200)로부터 하나 이상의 공개키(예, 공개키(pk), 계층적 갈루아키(Galois key)를 수신할 수 있다.
공개키(pk)는 비밀키 s, 유한개의 다항식 집합에서 균일하게 임의로 추출한 다항식 a, 작은 에러 e, 큰 상수 C로 정의할 수 있다.
계층적 갈루아키(Galois key)는 일종의 공개키로 k 단계 이동에 대응하여, 비밀키 s, 유한개의 다항식 집합에서 균일하게 임의로 추출한 다항식 a, 작은 에러 e, 큰 상수 C로 정의할 수 있다.
S402 단계에서, 동형 암호 연산키 관리 시스템(100)은 공개키(pk)를 일부 변형하여 pk'를 생성하고, 변형된 공캐기(pk')에 계층적 갈루아키(Galois key)를 이용하여 회전 연산을 수행함으로써 k=1인 회전 연산키(rk1)를 생성할 수 있다.
S403 단계에서, 동형 암호 연산키 관리 시스템(100)은 S502 단계에서 생성한 회전 연산키(rk1)에 계층적 갈루아키(Galois key)를 이용하여 회전 연산을 수행함으로써 k=2인 회전 연산키(rk2)를 생성할 수 있다.
동형 암호 연산키 관리 시스템(100)은 계층적 갈루아키(Galois key)를 이용하여 회전 연산을 반복 수행함으로써 복수 개의 회전 연산키를 생성할 수 있고, 계층적 갈루아키(Galois key)가 k 단계 이동에 대응된 것이라면, 생성되는 복수 개의 회전 연산키는 k 단계 이동의 배수에 대응할 수 있다.
도 5는 일시 예에 따른 클라이언트(100)의 구성요소를 포함하는 블록도이다.
일 실시 예에 따른 클라이언트(100)는 전자 장치(100)로서, 프로세서(110), 메모리(120), 통신 인터페이스(130) 및 버스(140)을 포함할 수 있다.
프로세서(110)는 일종의 중앙처리장치로서, 메모리(120)에 저장된 하나 이상의 명령어를 실행하여 전자 장치(100)의 동작을 제어할 수 있다. 프로세서(110)는 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 프로세서(110)는 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 이에 한정되는 것은 아니다. 프로세서(110)는 하나 이상의 프로세서를 포함할 수 있다. 프로세서(110)는 적어도 하나의 코어를 포함할 수 있다.
프로세서(110)는 동형 암호에 따라 메모리(120)에 저장된 개인 정보 데이터를 암호화한 암호문을 생성할 수 있다. 프로세서(110)는 전자 장치(100)의 비밀키를 이용하여 공개키 및 하나 이상의 연산키를 생성할 수 있다. 하나 이상의 연산키는 동형 암호 연산을 위한 전체 연산키 중 일부 연산키에 대응될 수 있고, 다른 연산키를 생성케하는 연산키를 포함할 수 있다. 일 실시 예에서, 하나 이상의 연산키는 곱셈키, 켤레복소키 및 동형 암호 회전 연산을 위한 계층적 갈루아키를 포함할 수 있고, 계층적 갈루아키는 동형 암호 회전 연산을 위한 복수 개의 회전 연산키를 생성케 할 수 있다.
일 실시 예에서, 프로세서(110)는 다음과 같은 방법으로 계층적 갈루아키를 생성할 수 있다.
프로세서(110)는 서로 다른 소수들의 집합
Figure 112022085781704-pat00001
,
Figure 112022085781704-pat00002
을 정의할 수 있다. 이들 집합은 모두 RNS(Residue Number System) 시스템의 변수(basis)들로 사용될 수 있다. 프로세서(110)는 또 다른 소수들의 집합
Figure 112022085781704-pat00003
을 마스터 특별 소수들로 정의할 수 있다.
Figure 112022085781704-pat00004
이라 할 때, 설명의 편의를 위해
Figure 112022085781704-pat00005
라고 이름을 순서대로 다시 명명할 수 있다.
분해수(decomposition number,
Figure 112022085781704-pat00006
)는
Figure 112022085781704-pat00007
이고, 프로세서(110)는 소수를 묶에 곱한 값을
Figure 112022085781704-pat00008
으로 정의할 수 있다. 프로세서(110)는
Figure 112022085781704-pat00009
를 정의하고,
Figure 112022085781704-pat00010
를 만족하도록 할 수 있다.
마스터 분해수(master decomposition number,
Figure 112022085781704-pat00011
)는
Figure 112022085781704-pat00012
이고, 소수를 묶어서 곱한 값을
Figure 112022085781704-pat00013
으로 정의할 수 있다. 프로세서(110)는
Figure 112022085781704-pat00014
를 정의하고,
Figure 112022085781704-pat00015
를 만족하도록 할 수 있다.
프로세서(110)는 비밀키 다항식 s 에 대해 k 만큼의 회전키인
Figure 112022085781704-pat00016
이며,
Figure 112022085781704-pat00017
의 꼴이며,
Figure 112022085781704-pat00018
Figure 112022085781704-pat00019
에서 균일한 분포에서 추출하고
Figure 112022085781704-pat00020
가 되도록 할 수 있다. 프로세서(110)는
Figure 112022085781704-pat00021
에 대한 계층적 갈루아키를 각각 생성할 수 있다. 상기 k 값은 예시로서, 중복을 허용하는 조합의 합으로
Figure 112022085781704-pat00022
에서
Figure 112022085781704-pat00023
의 값이 나오도록 하는 값으로 정해질 수 있다. 계층적 갈루아키는
Figure 112022085781704-pat00024
의 꼴로
Figure 112022085781704-pat00025
Figure 112022085781704-pat00026
에서 균일하게 추출한 원소이고,
Figure 112022085781704-pat00027
가 되도록 정의할 수 있다.
프로세서(110)는 공개키에 계층적 갈루아키를 이용하여 회전 연산을 반복 수행하여 복수 개의 회전 연산키를 생성할 수 있다. 계층적 갈루아키는 k 단계 이동에 대응하여 생성될 수 있고, 서버(200)의 요청에 의해 프로세서(110)가 생성할 수 있다. 프로세서(110)는 k 단계 이동에 대응하는 계층적 갈루아키를 이용하여 k 단계 이동의 배수에 대응한 복수 개의 회전 연산키를 생성할 수 있다. 프로세서(110)는 서로 상이한 단계 이동에 대응한 하나 이상의 계층적 갈루아키를 생성할 수 있다. 하나 이상의 계층적 갈루아키는 각각 다른 단계 이동에 대응한 복수 개의 회전 연산키를 생성케 할 수 있다. 다양한 실시 예에서, 계층적 갈루아키 세트가 k={1, -1, 2, -2, 4, -4, 8, -8}인 갈루아키를 포함하는 경우, 프로세서(110)는 서로 상이한 k 단계 갈루아키를 조합하여 회전 연산키를 생성할 수 있다. 예를 들어, 프로세서(110)는 10 단계 이동을 위한 회전 연산키를 생성하기 위해 k=8 갈루아키와 k=2 갈루아키를 순차로 이용할 수 있다.
메모리(120)는 내장 메모리 및/또는 외장 메모리를 포함할 수 있으며, DRAM, SRAM, 또는 SDRAM 등과 같은 휘발성 메모리, OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, NAND 플래시 메모리, 또는 NOR 플래시 메모리 등과 같은 비휘발성 메모리, SSD, CF(compact flash) 카드, SD 카드, Micro-SD 카드, Mini-SD 카드, Xd 카드, 또는 메모리 스틱(memory stick) 등과 같은 플래시 드라이브, 또는 HDD와 같은 저장 장치를 포함할 수 있다. 메모리(120)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
일 실시 예에서, 메모리(120)는 전자 장치(100)의 개인 정보 데이터, 비밀키, 공개키, 및 계층적 갈루아키를 저장할 수 있다. 개인 정보 데이터는 전자 장치(100)에 의해 수집된 사용자 생체 데이터, 사진, 동영상, 또는 로그 데이터를 포함할 수 있다.
통신 인터페이스(130)는 유선 또는 무선 통신을 제공하기 위한 하나 이상의 통신 인터페이스를 포함할 수 있다. 다양한 실시 예에서, 통신 인터페이스(130)는 보안 프로토콜을 이용하여 키 및 토큰을 보안 채널 또는 인증 채널을 통해 송수신할 수 있다. 예를 들어, 통신 인터페이스(130)는 TLS(Transport Layer Security)또는 IPSec(Internet Protocol Security)를 이용할 수 있다. 통신 인터페이스(130)는서버(200)와 통신하는 중에 키의 노출이나 키의 오염으로 인한 외부 공격자의 서비스 거부 공격, 재생 공격(replay attack)을 방어할 수 있다.
버스(140)는 프로세서(110), 메모리(120) 및 통신 인터페이스(130)를 연결하는 논리적/물리적 경로이다. 예를 들어, 프로세서(110)는 버스(130)를 통해 메모리(120)에 대한 읽기/쓰기(read/write)를 수행할 수 있다.
도 6은 일 실시 예에 따른 클라이언트(100)가 서버(200)에 동형 암호 연산을 포함하는 서비스를 요청하는 방법의 순서도이다.
S601 단계에서, 일 실시 예에 따른 전자 장치(예, 클라이언트(100))는 서버(200)에 동형암호 연산을 이용한 서비스를 요청할 수 있다. 서비스는 동형암호에 따른 암호문에 대한 연산처리를 포함할 수 있고, 예를 들어, 신경망 네트워크를 이용하여 동형 암호문을 처리한 결과를 서비스 정보로 제공할 수 있다. 전자 장치(100)는 메모리(120)에 저장된 개인 정보 데이터를 동형 암호에 따라 암호화하여 생성한 암호문에 대해 서버(200)에 동형암호 연산을 이용한 서비스를 요청할 수 있다.
S602 단계에서, 클라이언트(100)는 비밀키를 이용해 하나 이상의 공개키를 생성할 수 있다. 하나 이상의 공개키는 연산키를 포함할 수 있다. 예를 들어, 곱셈키, 켤레복소키를 포함할 수 있다. 하나 이상의 공개키는 동형 암호 연산에 필요한 전체 연산키 중 일부 연산키에 대응될 수 있다. 하나 이상의 공개키는 다른 연산키(예, 회전 연산키)를 생성케할 수 있는 연산키(예, 계층적 갈루아키)를 포함할 수 있다. 일 실시 예에서, 클라이언트(100)는 동형 암호의 회전 연산을 수행하기 위한 회전 연산키를 생성할 수 있는 계층적 갈루아키(공개키)를 생성할 수 있다. 클라이언트(100)는 k 단계 이동에 대한 계층적 갈루아키를 생성할 수 있고, k 단계 이동에 대한 계층적 갈루아키를 이용하면 비밀키없이 k 단계 이동의 배수에 대응한 복수 개의 회전 연산키를 생성할 수 있다. 계층적 갈루아키는 하나 이상의 갈루아키를 포함할 수 있고, 복수 개의 k 값에 대응하는 갈루아키를 포함하는 세트일 수 있다.
S603 단계에서, 클라이언트(100)는 동형 암호에 따른 암호문 및 하나 이상의 공개키를 서버(200)에 전송할 수 있다. 하나 이상의 공개키는, 연산키 및 다른 연산키를 생성케할 수 있는 연산키를 포함할 수 있다. 예를 들어, 하나 이상의 공개키는 곱셈키, 켤레복소키, 계층적 갈루아키를 포함할 수 있다.
S604 단계에서, 클라이언트(100)는 서버(200)로부터 암호문에 대한 동형 암호 연산을 처리한 결과를 포함하는 서비스 정보를 수신할 수 있다. 서버(200)는 암호문에 대한 서비스 요청을 처리할 수 있고, 이때 동형 암호 연산을 수행할 수 있다. 서버(200)는 암호문에 대한 동형 연산 중 필요한 경우, 클라이언트(100)로부터 수신한 공개키를 이용하여 필요한 연산키를 직접 생성하여 사용할 수 있다. 예를 들어, 서버(200)는 신경망 네트워크를 이용하여 암호문에 대한 연산 처리를 한 결과를 서비스 정보로 클라이언트(100)에 전송할 수 있다.
도 7은 일 실시 예에 따른 서버(200)의 구성요소를 포함하는 블록도이다.
일 실시 예에 따른 서버(200)는 프로세서(210), 메모리(220), 통신 인터페이스(230) 및 버스(240)을 포함할 수 있다.
프로세서(210)는 일종의 중앙처리장치로서, 메모리(220)에 저장된 하나 이상의 명령어를 실행하여 서버(200)의 동작을 제어할 수 있다. 프로세서(210)는 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 프로세서(210)는 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 이에 한정되는 것은 아니다. 프로세서(210)는 하나 이상의 프로세서를 포함할 수 있다. 프로세서(210)는 적어도 하나의 코어를 포함할 수 있다.
프로세서(210)는 클라이언트(100)로부터 수신한 암호문에 대한 동형 암호 연산을 위한 데이터 이동 요청에 응답하여, 클라이언트(100)의 공개키와 계층적 갈루아키를 이용하여 회전 연산키를 생성하고, 회전 연산키를 이용하여 암호문에 대한 회전 연산을 수행할 수 있다. 프로세서(210)는 클라이언트(100)의 공개키에 계층적 갈루아키를 이용하여 회전 연산을 수행함으로써 클라이언트(100)의 비밀키 없이 회전 연산키를 생성할 수 있다. 계층적 갈루아키는 k 단계 이동에 대응하여 생성될 수 있고, 프로세서(210)는 k 단계 이동에 대응한 계층적 갈루아키를 이용하여 회전 연산을 반복 수행함을써 k 단계 이동의 배수에 대응한 복수 개의 회전 연산키를 생성할 수 있다. 프로세서(210)는 클라이언트(100)로부터 계층적 갈루아키를 수신하기 전에 먼저, 동형 암호 연산에 필요한 단계 이동에 대응한 계층적 갈루아키를 요청할 수 있다. 즉, 서버(200)는 k 값 세트를 특정하여 계층적 갈루아키 세트를 클라이언트(100)에 요청할 수 있다.
일 실시 예에서, 프로세서(210)는 다음과 같은 방법으로 계층적 갈루아키를 이용하여 하나 이상의 회전 연산키를 생성할 수 있다.
프로세서(210)는
Figure 112022085781704-pat00028
의 회전키를 생성할 수 있을 때,
Figure 112022085781704-pat00029
이고, 각각의
Figure 112022085781704-pat00030
들은 계층적 갈루아키가 존재하는 값들이라 정의할 수 있다. 프로세서(210)는 먼저 암호화키(공개키)에서
Figure 112022085781704-pat00031
의 계층적 갈루아키를 사용하여
Figure 112022085781704-pat00032
의 회전 연산키를 생성할 수 있다. 프로세서(210)는
Figure 112022085781704-pat00033
에 대해
Figure 112022085781704-pat00034
로 회전 연산을 수행하여
Figure 112022085781704-pat00035
를 생성하고, 이와 같은 방법으로
Figure 112022085781704-pat00036
에 대해서 수행한다. 그 결과,
Figure 112022085781704-pat00037
가 생성되고,
Figure 112022085781704-pat00038
의 회전 연산키가 생성된다. 또한, 프로세서(210)는
Figure 112022085781704-pat00039
에 대한 회전 연산키인
Figure 112022085781704-pat00040
로부터
Figure 112022085781704-pat00041
에 대한 회전 연산키인
Figure 112022085781704-pat00042
를 생성할 수 있다.
프로세서(210)는
Figure 112022085781704-pat00043
이라는 암호문에
Figure 112022085781704-pat00044
를 사용하여
Figure 112022085781704-pat00045
만큼 회전 연산을 적용하여
Figure 112022085781704-pat00046
를 생성하고, 이를
Figure 112022085781704-pat00047
에 대해 모두 수행할 수 있다. 그 결과,
Figure 112022085781704-pat00048
가 생성되어
Figure 112022085781704-pat00049
의 회전 연산키가 될 수 있다. 프로세서(210)는 상기 과정을
Figure 112022085781704-pat00050
에 대해 모두 수행하여
Figure 112022085781704-pat00051
에 대한 회전 연산키를 생성할 수 있다.
프로세서(210)는 신경망 네트워크 서비스, 서비스형 AI, 또는 검색 서비스를 제공할 수 있다. 프로세서(210)는 상기 서비스를 처리하기 위한 수단으로 동형 암호 연산을 처리할 수 있다.
메모리(220)는 내장 메모리 및/또는 외장 메모리를 포함할 수 있으며, DRAM, SRAM, 또는 SDRAM 등과 같은 휘발성 메모리, OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, NAND 플래시 메모리, 또는 NOR 플래시 메모리 등과 같은 비휘발성 메모리, SSD, CF(compact flash) 카드, SD 카드, Micro-SD 카드, Mini-SD 카드, Xd 카드, 또는 메모리 스틱(memory stick) 등과 같은 플래시 드라이브, 또는 HDD와 같은 저장 장치를 포함할 수 있다. 메모리(220)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 이에 한정되는 것은 아니다.
일 실시 예에서, 메모리(220)는 클라이언트(100)의 암호문, 하나 이상의 공개키 및 직접 생성한 연산키를 포함할 수 있다. 예를 들어, 메모리(220)는 클라이언트(100)의 암호문, 암호문에 대한 공개키, 곱셈키, 켤레복소키, 계층적 갈루아키 세트, 및 계층적 갈루아키 세트로부터 생성된 복수 개의 회전 연산키를 포함할 수 있다.
통신 인터페이스(230)는 유선 또는 무선 통신을 제공하기 위한 하나 이상의 통신 인터페이스를 포함할 수 있다. 다양한 실시 예에서, 통신 인터페이스(230)는 보안 프로토콜을 이용하여 키 및 토큰을 보안 채널 또는 인증 채널을 통해 송수신할 수 있다. 예를 들어, 통신 인터페이스(130)는 TLS(Transport Layer Security)또는 IPSec(Internet Protocol Security)를 이용할 수 있다. 통신 인터페이스(230)는클라이언트(100)와 통신하는 중에 키의 노출이나 키의 오염으로 인한 외부 공격자의 서비스 거부 공격, 재생 공격(replay attack)을 방어할 수 있다.
버스(240)는 프로세서(210), 메모리(220) 및 통신 인터페이스(230)를 연결하는 논리적/물리적 경로이다. 예를 들어, 프로세서(210)는 버스(230)를 통해 메모리(220)에 대한 읽기/쓰기(read/write)를 수행할 수 있다.
도 8은 일 실시 예에 따른 서버(200)에서 일부 연산키를 생성하여 동형 암호 연산을 수행하는 방법의 순서도이다.
S801 단계에서, 서버(200)는 클라이언트(100)로부터 서비스 요청을 수신할 수 있다. 서비스는 클라이언트(100)가 생성한 동형 암호문에 대한 동형 암호 연산을 처리하는 과정을 포함할 수 있다. 예를 들어, 서비스는 신경망 네트워크를 이용하는 연산일 수 있다.
S802 단계에서, 서버(200)는 클라이언트(100)로부터 동형 암호에 따라 암호화된 암호문, 하나 이상의 공개키를 수신할 수 있다. 하나 이상의 공개키는 연산키(예, 곱셈키, 켤레복소키) 및 다른 연산키(예, 회전 연산)를 생성케 할 수 있는 연산키(계층적 갈루아키)를 포함할 수 있고, 예를 들어 계층적 갈루아키를 포함할 수 있다. 계층적 갈루아키는 동형 암호 회전 연산에 필요한 회전 연산키를 복수 개 생성케한다.
S803 단계에서, 서버(200)는 암호문에 대한 동형 회전 연산 요청에 응답하여 하나 이상의 공개키를 이용해 회전 연산키를 생성할 수 있다. 서버(200)는 공개키에 계층적 갈루아키를 이용하여 회전 연산을 수행함으로써 회전 연산키를 생성할 수 있다. 예를 들어, 계층적 갈루아키가 k 단계 이동에 대응되는 것일 때, 서버(200)가 공개키에 계층적 갈루아키를 이용하여 회전 연산을 수행하면 k 단계 이동을 위한 회전 연산키가 생성된다. 서버(200)는 공개키에 계층적 갈루아키를 이용하여 회전 연산을 반복 수행하면, k 배수에 대응하는 단계 이동을 위한 회전 연산키를 생성할 수 있다. 서버(200)는 회전 연산 요청의 단계 정도에 따라 필요한 회전 연산키를 생성할 수 있다. 회전 연산 요청은 암호문에 대한 다른 연산을 수행하기 위해 각 구성요소의 자리 이동이 필요한 다양한 경우 발생할 수 있다.
S804 단계에서, 서버(200)는 회전 연산키를 이용하여 암호문에 대한 회전 연산을 수행할 수 있다. 예를 들어, k 단계 이동을 위한 회전 연산키인 경우 암호문에 대한 k 단계 이동의 회전 연산을 수행할 수 있다.
S805 단계에서, 서버(200)는 S804 단계의 회전 연산을 포함한 암호문에 대한 연산 결과에 기반한 서비스 정보를 클라이언트(100)에 전송할 수 있다. 서비스 정보는 예를 들어, 검색 결과일 수 있다.
도 9는 일 실시 예에 따른 연산 서버(200a)와 연산키 생성 서버(200b)를 포함하는 클라이언트(100)-서버(200) 모델의 네트워크 환경이다.
일 실시 예에 따른 클라이언트(100)는 서버(200)에 동형 암호문과 회전 연산키를 생성하기 위한 공개키 및 계층적 갈루아키를 전송할 수 있다. 서버(200)는 서비스 연산을 처리하는 연산 서버(200a)와 동형 암호 연산을 수행하기 위한 연산키를 생성하는 연산키 생성 서버(200b)를 포함할 수 있다. 클라이언트(100)는 연산 서버(200a)에는 암호문만 전송하고, 연산키 생성 서버(200b)에 공개키와 계층적 갈루아키를 전송할 수 있다.
연산 서버(200a)는 암호문에 대한 회전 연산이 요청되는 경우, 연산키 생성 서버(200b)에 필요한 단계 이동에 대응하는 회전 연산키를 요청할 수 있다. 연산키 생성 서버(200b)는 클라이언트(100)에 대한 연산키 요청에 응답하여, 클라이언트(100)가 전송한 공개키와 계층적 갈루아키를 이용하여 회전 연산키를 생성하여 연산 서버(200a)에 전송할 수 있다. 도 9에서 클라이언트(100)는 1개만 도시하였으나, 서버(200)에 서비스를 요청하는 클라이언트(100)는 복수 개일 수 있으며, 서버(200)가 제공하는 서비스 종류 또한 다양할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 클라이언트
200: 서버
200a: 연산 서버
200b: 연산키 생성 서버

Claims (20)

  1. 전자 장치에 있어서,
    보안 프로토콜을 이용한 통신을 지원하는 통신 인터페이스;
    개인 정보 데이터를 포함하는 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 작동적으로 연결되는 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는, 동형 암호에 따라 상기 개인 정보 데이터를 암호화한 암호문을 생성하고, 상기 전자 장치에 대한 비밀키를 이용하여 공개키 및 하나 이상의 연산키를 생성하고,
    상기 통신 인터페이스를 통해 상기 암호문, 상기 공개키 및 상기 하나 이상의 연산키를 서버에 전송하고, 및
    상기 서버로부터 상기 암호문에 대한 동형 암호 연산에 기반하여 획득한 서비스 정보를 수신하고,
    상기 하나 이상의 연산키는 상기 동형 암호 연산에 필요한 전체 연산키 중 일부에 대응하고, 나머지 연산키는 상기 서버가 상기 공개키 및 상기 하나 이상의 연산키를 이용하여 생성한 회전 연산키를 포함하는, 전자 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 연산키는 동형 암호 회전 연산을 위한 계층적 갈루아키를 포함하고, 상기 계층적 갈루아키는 동형 암호 회전 연산을 위한 복수 개의 회전 연산키를 생성케하는 전자 장치.
  3. 제2항에 있어서,
    상기 복수 개의 회전 연산키는 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행하여 생성되도록 하는 전자 장치.
  4. 제3항에 있어서,
    상기 적어도 하나의 프로세서는, k 단계 이동에 대응하여 상기 계층적 갈루아키를 생성하고, 상기 복수 개의 회전 연산키는 상기 k 단계 이동의 배수에 대응하여 생성되도록 하는 전자 장치.
  5. 제4항에 있어서,
    상기 서버로부터 동형 암호 연산을 위한 상기 k 단계 이동 요청을 수신하는 것에 응답하여, 상기 k 단계 이동에 대응하는 상기 계층적 갈루아 키를 생성하는 전자 장치.
  6. 제1항에 있어서,
    상기 하나 이상의 연산키는 곱셈키, 켤레복소키 및 하나 이상의 계층적 갈루아키를 포함하도록 하는 전자 장치.
  7. 제6항에 있어서,
    상기 적어도 하나의 프로세서는 서로 상이한 단계 이동에 대응하여 상기 하나 이상의 계층적 갈루아키를 생성하는 전자 장치.
  8. 제1항에 있어서,
    상기 개인 정보 데이터는 상기 전자 장치에 의해 수집된 사용자 생체 데이터, 사진, 동영상, 로그 데이터 중 적어도 하나를 포함하는 전자 장치.
  9. 제1항에 있어서,
    상기 서버는 신경망 네트워크 서비스, 서비스형 AI, 또는 검색 서비스를 제공하기 위해 상기 암호문에 대한 동형 암호 연산을 수행한 결과에 따라 상기 서비스 정보를 획득하도록 하는 전자 장치.
  10. 서버에 있어서,
    보안 프로토콜을 이용한 통신을 지원하는 통신 인터페이스; 및
    상기 통신 인터페이스와 작동적으로 연결되는 적어도 하나의 프로세서를 포함하고,
    상기 통신 인터페이스는 전자 장치로부터 암호문, 공개키, 및 계층적 갈루아키를 수신하고,
    상기 적어도 하나의 프로세서는 상기 암호문에 대한 동형암호 연산을 위한 데이터 이동 요청에 응답하여, 상기 공개키 및 상기 계층적 갈루아키를 이용하여 회전 연산키를 생성하고, 및
    상기 적어도 하나의 프로세서가 상기 회전 연산키를 이용하여 상기 암호문에 대한 회전 연산을 수행하는 서버.
  11. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 수행하여 상기 회전 연산키를 생성하는 서버.
  12. 제11항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 계층적 갈루아키를 이용하여 k 단계 이동에 대응한 회전 연산키를 생성하는 서버.
  13. 제12항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행함으로써 k 단계 이동의 배수에 대응한 복수 개의 회전 연산키를 생성하는 서버.
  14. 제11항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 계층적 갈루아키를 수신하기 전에 상기 전자 장치에 k 단계 이동에 대응한 회전 연산키를 생성하기 위한 계층적 갈루아키를 요청하는 서버.
  15. 제10항에 있어서,
    상기 적어도 하나의 프로세서는, 신경망 네트워크 서비스, 서비스형 AI, 또는 검색 서비스를 제공하기 위해 상기 암호문에 대한 동형 암호 연산을 수행한 결과에 따라 서비스 정보를 획득하여 상기 전자 장치에 전송하는 서버.
  16. 제10항에 있어서,
    메모리를 더 포함하고, 상기 회전 연산키를 상기 메모리에 저장하고,
    상기 적어도 하나의 프로세서가 상기 암호문에 대한 k 단계 이동에 대한 재요청에 응답하여, 상기 메모리에 저장된 상기 회전 연산키를 이용하여 회전 연산을 수행하는 서버.
  17. 제16항에 있어서,
    상기 적어도 하나의 프로세서가 상기 메모리에 저장된 상기 회전 연산키를 삭제하는 서버.
  18. 서버 시스템에 의해 실행되도록 구성되는 하나 이상의 프로그램을 저장한 비-일시적 컴퓨터 판독가능한 저장매체로서,
    상기 하나 이상의 프로그램은, 서버 시스템이:
    전자 장치로부터 암호문, 공개키 및 하나 이상의 연산키를 수신하고,
    상기 암호문에 대한 동형 회전 연산의 요청에 응답하여, 프로세서에 의해, 상기 공개키 및 상기 하나 이상의 연산키를 이용하여 회전 연산키를 생성하고,
    상기 프로세서에 의해, 상기 회전 연산키를 이용하여 상기 암호문에 대한 회전 연산을 수행하는 명령어를 포함하는 비-일시적 컴퓨터 판독가능한 저장매체.
  19. 제18항에 있어서,
    상기 하나 이상의 연산키는 계층적 갈루아키를 포함하고,
    상기 프로세서에 의해, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 수행하여 상기 회전 연산키를 생성하는 비-일시적 컴퓨터 판독가능한 저장매체.
  20. 제19항에 있어서,
    상기 프로세서에 의해, 상기 공개키에 상기 계층적 갈루아키를 이용하여 회전 연산을 반복 수행함으로써 복수 개의 회전 연산키를 생성하는 비-일시적 컴퓨터 판독가능한 저장매체.
KR1020220102557A 2022-02-10 2022-08-17 동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법 KR102526144B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP23151723.6A EP4228198A1 (en) 2022-02-10 2023-01-16 Electronic device for delegating generation of homomorphic rotation key to server and method of operating the same
US18/105,117 US20230254112A1 (en) 2022-02-10 2023-02-02 Electronic device for delegating generation of homomorphic rotation key to server and method of operating the same
CN202310108205.0A CN116582238A (zh) 2022-02-10 2023-02-10 用于生成同态旋转操作密钥的方法、电子装置及服务器

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220017596 2022-02-10
KR1020220017596 2022-02-10

Publications (1)

Publication Number Publication Date
KR102526144B1 true KR102526144B1 (ko) 2023-04-26

Family

ID=86099403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220102557A KR102526144B1 (ko) 2022-02-10 2022-08-17 동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102526144B1 (ko)

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Jeongeun Park, Homomorphic Encryption for Multiple Users With Less Communications, IEEE Access (2021.10.11.)* *
Kyooyung Han 외 1명, Better Bootstrapping for Approximate Homomorphic Encryption, Crytology ePrint Archive, Paper 2019/668 (2019.)* *
Li Duan 외 4명, A Comprehensive Security Framework for Publish/Subscribe-Based IoT Services Communicatin, IEEE Access (2019.03.08.)* *
Ruiyu Zhu 외 2명, Practical MPC-FHE with Applications in Secure Multi-Party Neural Network Evaluation, Crytology ePrint Archive, Paper 2020/550 (2020.06.27.)* *

Similar Documents

Publication Publication Date Title
CN109144961B (zh) 授权文件共享方法及装置
US9813241B2 (en) Encrypted file storage
JP2021022945A (ja) 要求によって供給される鍵を用いたデータセキュリティ
CN112434336A (zh) 基于区块链的电子病历共享方法、装置、系统及存储介质
KR101648364B1 (ko) 대칭키 암호화와 비대칭키 이중 암호화를 복합적으로 적용한 암/복호화 속도개선 방법
US10476663B1 (en) Layered encryption of short-lived data
EP3891924A1 (en) Data transmission
CN116635847A (zh) 实现弹性确定性加密
CN110610102A (zh) 一种数据访问方法、装置及系统
Nalinipriya et al. Extensive medical data storage with prominent symmetric algorithms on cloud-a protected framework
JP6401875B2 (ja) データ処理システム
JP2023526793A (ja) 暗号化されたオブジェクトの作成者の識別
KR102526144B1 (ko) 동형 회전키 생성을 서버에 위임하는 전자 장치 및 그 동작 방법
EP4228198A1 (en) Electronic device for delegating generation of homomorphic rotation key to server and method of operating the same
KR102526112B1 (ko) 동형 암호 연산을 위한 키 관리 시스템 및 그 동작 방법
US20220014365A1 (en) Distributing encrypted data objects with encryption information as metadata
KR102199464B1 (ko) 컨소시엄 블록체인 참가 노드 간의 인증 방안
US20230254125A1 (en) Key management system for homomorphic encryption operation and method of operating the same
CN114788221A (zh) 带访问控制谓词的包装密钥
CN114095192A (zh) 数据云服务方法及通信装置
Thota et al. Split key management framework for Open Stack Swift object storage cloud
CN116582238A (zh) 用于生成同态旋转操作密钥的方法、电子装置及服务器
Díaz et al. Secure data access in Hadoop using elliptic curve cryptography
KR102629617B1 (ko) 속성 기반 접근 제어를 지원하는 실시간 IoT 데이터 공유 시스템 및 그 방법
KR102398380B1 (ko) 키 교환 방법 및 시스템

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant