KR20240066048A - 신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들 - Google Patents

신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들 Download PDF

Info

Publication number
KR20240066048A
KR20240066048A KR1020230088540A KR20230088540A KR20240066048A KR 20240066048 A KR20240066048 A KR 20240066048A KR 1020230088540 A KR1020230088540 A KR 1020230088540A KR 20230088540 A KR20230088540 A KR 20230088540A KR 20240066048 A KR20240066048 A KR 20240066048A
Authority
KR
South Korea
Prior art keywords
neural network
network model
server
obtaining
communication interface
Prior art date
Application number
KR1020230088540A
Other languages
English (en)
Inventor
이시우
김정우
신준범
Original Assignee
주식회사 크립토랩
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 크립토랩 filed Critical 주식회사 크립토랩
Publication of KR20240066048A publication Critical patent/KR20240066048A/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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/096Transfer learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/098Distributed learning, e.g. federated learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Abstract

서버가 개시된다. 본 서버는 통신 인터페이스, 적어도 하나의 인스트럭션(instruction)이 저장된 메모리 및 통신 인터페이스 및 메모리와 연결되어 서버를 제어하는 프로세서를 포함하고, 프로세서는, 적어도 하나의 인스트럭션을 실행함으로써, 통신 인터페이스를 통해, 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하고, 동형 암호문에 기초하여 메모리에 저장된 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하고, 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 제3 신경망 모델을 전자 장치로 전송하도록 통신 인터페이스를 제어하고, 통신 인터페이스를 통해, 제3 신경망 모델이 복호화된 제4 신경망 모델을 전자 장치로부터 수신하고, 제4 신경망 모델에 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다.

Description

신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들 { SERVER, ELECTRONIC APPARATUS FOR ENHANCING SECURITY OF NEURAL NETWORK MODEL AND TRAINING DATA AND CONTROL METHOD THEREOF }
본 개시는 서버, 전자 장치 및 그 제어 방법들에 대한 것으로, 더욱 상세하게는 신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들에 대한 것이다.
최근 딥러닝이 발전하면서 고성능의 심층 신경망 모델을 만들기 위해 전이 학습(transfer learning)이 이용되고 있다. 전이 학습의 가장 대표적인 예는 대량의 데이터로 사전 학습(pre-trained)된 모델에서 분류 층(classification layer)의 파라미터만 미세 조정(fine-tuning)하는 방법이다. 이러한 방법은 모델의 전체 파라미터를 랜덤하게 초기화한 뒤 처음부터 훈련시키는 것보다 훨씬 더 빠르게 훈련을 완료할 수 있다.
다만, 전이 학습을 통해서 모델을 훈련시키는 과정에서, 학습 데이터가 서버로 제공되면 학습 데이터와 관련된 개인 정보가 침해될 우려가 있다. 이를 위해, 다자간 계산(multi party computation)을 이용하여 학습 데이터를 보호하면서 모델을 훈련시킬 수도 있으나, 다자간 계산은 통신에 소요되는 시간이 증가하는 단점이 있다.
또는, 신경망 모델을 클라이언트로 제공하고, 클라이언트가 학습 데이터를 이용하여 신경망 모델을 학습시킬 수도 있으나, 신경망 모델의 파라미터가 클라이언트에게 노출되는 문제가 있다. 이를 복수의 클라이언트로 확장한 연합 학습(federated learning, FL)의 경우에도 동일한 문제가 있다.
본 개시는 상술한 필요성에 따른 것으로, 본 개시의 목적은 신경망 모델 및 학습 데이터의 보안을 유지하며 학습 데이터에 기초하여 신경망 모델을 학습하기 위한 서버, 전자 장치 및 그 제어 방법들을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따르면, 서버는 통신 인터페이스, 적어도 하나의 인스트럭션(instruction)이 저장된 메모리 및 상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 서버를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 통신 인터페이스를 통해, 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하고, 상기 동형 암호문에 기초하여 상기 메모리에 저장된 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하고, 상기 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 상기 제3 신경망 모델을 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고, 상기 통신 인터페이스를 통해, 상기 제3 신경망 모델이 복호화된 제4 신경망 모델을 상기 전자 장치로부터 수신하고, 상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다.
또한, 상기 프로세서는 상기 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고, 상기 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 상기 복수의 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득할 수 있다.
그리고, 상기 최종 신경망 모델은 상기 학습 데이터에 기초하여 상기 제1 신경망 모델이 학습된 신경망 모델일 수 있다.
또한, 상기 프로세서는 상기 통신 인터페이스를 통해, 복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고, 상기 복수의 동형 암호문 각각에 기초하여 상기 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고, 상기 복수의 제2 신경망 모델 각각에 상기 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고, 상기 복수의 제3 신경망 모델을 각각 상기 복수의 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고, 상기 통신 인터페이스를 통해, 상기 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 상기 복수의 전자 장치로부터 각각 수신하고, 상기 복수의 제4 신경망 모델 각각에 상기 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고, 상기 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수 있다.
그리고, 상기 프로세서는 상기 통신 인터페이스를 통해 상기 복수의 전자 장치로부터 상기 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하고, 상기 수신된 정보에 기초하여 상기 복수의 제5 신경망 모델을 가중 평균할 수 있다.
또한, 상기 프로세서는 상기 통신 인터페이스를 통해, 연산키 및 상기 연산키에 대응되는 암호화키로 상기 학습 데이터가 동형 암호화된 상기 동형 암호문을 상기 전자 장치로부터 수신하고, 상기 동형 암호문 및 상기 연산키에 기초하여 상기 제1 신경망 모델을 학습하여 상기 제2 신경망 모델을 획득하고, 상기 제2 신경망 모델에 상기 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고, 상기 제3 신경망 모델을 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고, 상기 통신 인터페이스를 통해, 상기 연산키에 대응되는 복호화키에 기초하여 상기 제3 신경망 모델이 복호화된 상기 제4 신경망 모델을 상기 전자 장치로부터 수신하고, 상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득할 수 있다.
한편, 본 개시의 일 실시 예에 따르면, 통신 인터페이스, 적어도 하나의 인스트럭션(instruction)이 저장된 메모리 및 상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써, 상기 메모리에 저장된 학습 데이터를 동형 암호화하여 동형 암호문을 획득하고, 상기 동형 암호문을 서버로 전송하도록 상기 통신 인터페이스를 제어하고, 상기 통신 인터페이스를 통해, 상기 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고, 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 상기 복호화된 신경망 모델을 상기 서버로 전송하도록 상기 통신 인터페이스를 제어할 수 있다.
또한, 상기 프로세서는 동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고, 상기 암호화키에 기초하여 상기 학습 데이터를 동형 암호화하여 상기 동형 암호문을 획득하고, 상기 동형 암호문 및 상기 연산키를 서버로 전송하도록 상기 통신 인터페이스를 제어하고, 상기 통신 인터페이스를 통해, 상기 동형 암호문 및 상기 연산키에 기초하여 학습된 신경망 모델에 상기 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고, 상기 복호화키에 기초하여 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 상기 복호화된 신경망 모델을 상기 서버로 전송하도록 상기 통신 인터페이스를 제어할 수 있다.
한편, 본 개시의 일 실시 예에 따르면, 서버의 제어 방법은 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하는 단계, 상기 동형 암호문에 기초하여 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하는 단계, 상기 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하는 단계, 상기 제3 신경망 모델을 상기 전자 장치로 전송하는 단계, 상기 제3 신경망 모델이 복호화된 제4 신경망 모델을 상기 전자 장치로부터 수신하는 단계 및 상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득하는 단계를 포함한다.
또한, 상기 제3 신경망 모델을 획득하는 단계는 상기 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고, 상기 최종 신경망 모델을 획득하는 단계는 상기 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 상기 복수의 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득할 수 있다.
그리고, 상기 최종 신경망 모델은 상기 학습 데이터에 기초하여 상기 제1 신경망 모델이 학습된 신경망 모델일 수 있다.
또한, 상기 동형 암호문을 수신하는 단계는 복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고, 상기 제2 신경망 모델을 획득하는 단계는 상기 복수의 동형 암호문 각각에 기초하여 상기 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고, 상기 제3 신경망 모델을 획득하는 단계는 상기 복수의 제2 신경망 모델 각각에 상기 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고, 상기 전송하는 단계는 상기 복수의 제3 신경망 모델을 각각 상기 복수의 전자 장치로 전송하고, 상기 제4 신경망 모델을 수신하는 단계는 상기 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 상기 복수의 전자 장치로부터 각각 수신하고, 상기 최종 신경망 모델을 획득하는 단계는 상기 복수의 제4 신경망 모델 각각에 상기 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고, 상기 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수 있다.
그리고, 상기 복수의 전자 장치로부터 상기 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하는 단계를 더 포함하며, 상기 최종 신경망 모델을 획득하는 단계는 상기 수신된 정보에 기초하여 상기 복수의 제5 신경망 모델을 가중 평균할 수 있다.
또한, 상기 동형 암호문을 수신하는 단계는 연산키 및 상기 연산키에 대응되는 암호화키로 상기 학습 데이터가 동형 암호화된 상기 동형 암호문을 상기 전자 장치로부터 수신하고, 상기 제2 신경망 모델을 획득하는 단계는 상기 동형 암호문 및 상기 연산키에 기초하여 상기 제1 신경망 모델을 학습하여 상기 제2 신경망 모델을 획득하고, 상기 제3 신경망 모델을 획득하는 단계는 상기 제2 신경망 모델에 상기 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고, 상기 전송하는 단계는 상기 제3 신경망 모델을 상기 전자 장치로 전송하고, 상기 제4 신경망 모델을 수신하는 단계는 상기 연산키에 대응되는 복호화키에 기초하여 상기 제3 신경망 모델이 복호화된 상기 제4 신경망 모델을 상기 전자 장치로부터 수신하고, 상기 최종 신경망 모델을 획득하는 단계는 상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득할 수 있다.
한편, 본 개시의 일 실시 예에 따르면, 전자 장치의 제어 방법은 학습 데이터를 동형 암호화하여 동형 암호문을 획득하는 단계, 상기 동형 암호문을 서버로 전송하는 단계, 상기 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하는 단계, 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하는 단계 및 상기 복호화된 신경망 모델을 상기 서버로 전송하는 단계를 포함한다.
또한, 상기 획득하는 단계는 동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고, 상기 암호화키에 기초하여 상기 학습 데이터를 동형 암호화하여 상기 동형 암호문을 획득하고, 상기 동형 암호문을 전송하는 단계는 상기 동형 암호문 및 상기 연산키를 서버로 전송하고, 상기 수신하는 단계는 상기 동형 암호문 및 상기 연산키에 기초하여 학습된 신경망 모델에 상기 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고, 상기 복호화하는 단계는 상기 복호화키에 기초하여 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 상기 복호화된 신경망 모델을 전송하는 단계는 상기 복호화된 신경망 모델을 상기 서버로 전송할 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 서버 또는 전자 장치는 동형 암호를 이용하여 데이터를 제공하기 때문에 전이 학습 또는 연합 학습 과정에서 개인 정보를 보호할 수 있다.
도 1은 본 개시의 일 실시 예에 따른 전자 시스템을 설명하기 위한 블록도이다.
도 2는 동형 암호문의 생성 및 복호 동작을 설명하기 위한 도면이다.
도 3은 본 개시의 일 실시 예에 따른 서버의 구성을 나타내는 블럭도이다.
도 4는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 5 및 도 6은 본 개시의 일 실시 예에 따른 학습 데이터의 소유자의 수에 따른 동작을 설명하기 위한 도면들이다.
도 7은 본 개시의 일 실시 예에 따른 연산 방법을 설명하기 위한 도면이다.
도 8은 본 개시의 일 실시 예에 따른 서버의 제어 방법을 설명하기 위한 흐름도이다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
이하에서는 첨부 도면을 참조하여 본 개시에 대해서 자세하게 설명한다. 본 개시에서 수행되는 정보(데이터) 전송 과정은 필요에 따라서 암호화/복호화가 적용될 수 있으며, 본 개시 및 특허청구범위에서 정보(데이터) 전송 과정을 설명하는 표현은 별도로 언급되지 않더라도 모두 암호화/복호화하는 경우도 포함하는 것으로 해석되어야 한다. 본 개시에서 "A로부터 B로 전송(전달)" 또는 "A가 B로부터 수신"과 같은 형태의 표현은 중간에 다른 매개체가 포함되어 전송(전달) 또는 수신되는 것도 포함하며, 반드시 A로부터 B까지 직접 전송(전달) 또는 수신되는 것만을 표현하는 것은 아니다.
본 개시의 설명에 있어서 각 단계의 순서는 선행 단계가 논리적 및 시간적으로 반드시 후행 단계에 앞서서 수행되어야 하는 경우가 아니라면 각 단계의 순서는 비제한적으로 이해되어야 한다. 즉, 위와 같은 예외적인 경우를 제외하고는 후행 단계로 설명된 과정이 선행단계로 설명된 과정보다 앞서서 수행되더라도 개시의 본질에는 영향이 없으며 권리범위 역시 단계의 순서에 관계없이 정의되어야 한다. 그리고 본 개시에서 "A 또는 B"라고 기재한 것은 A와 B 중 어느 하나를 선택적으로 가리키는 것뿐만 아니라 A와 B 모두를 포함하는 것도 의미하는 것으로 정의된다. 또한, 본 개시에서 "포함"이라는 용어는 포함하는 것으로 나열된 요소 이외에 추가로 다른 구성요소를 더 포함하는 것도 포괄하는 의미를 가진다.
본 개시에서는 본 개시의 설명에 필요한 필수적인 구성요소만을 설명하며, 본 개시의 본질과 관계가 없는 구성요소는 언급하지 아니한다. 그리고 언급되는 구성요소만을 포함하는 배타적인 의미로 해석되어서는 안 되며 다른 구성요소도 포함할 수 있는 비배타적인 의미로 해석되어야 한다.
본 개시에서 "모듈" 혹은 "부"는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의 "모듈" 혹은 복수의 "부"는 특정한 하드웨어로 구현될 필요가 있는 "모듈" 혹은 "부"를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.
본 개시에서 "값"이라 함은 스칼라 값뿐만 아니라 벡터, 행렬, 다항식 등 수학식으로 표현될 수 있는 모든 값을 포함하는 광의의 개념으로 정의될 수 있다.
후술하는 본 개시의 각 단계의 수학적 연산 및 산출은 해당 연산 또는 산출을 하기 위해 공지되어 있는 코딩 방법 및/또는 본 개시에 적합하게 고안된 코딩에 의해서 컴퓨터 연산으로 구현될 수 있다.
이하에서 설명하는 구체적인 수학식은 가능한 여러 대안 중에서 예시적으로 설명되는 것이며, 본 개시의 권리 범위가 본 개시에 언급된 수학식에 제한되는 것으로 해석되어서는 아니된다.
설명의 편의를 위해서, 본 개시에서는 다음과 같이 표기를 정하기로 한다.
a ← D : 분포(D)에 따라서 원소(a)를 선택함
s1, s2 ∈ R : S1, S2 각각은 R 집합에 속하는 원소이다.
mod(q) : q 원소로 모듈(modular) 연산
「-」 : 내부 값을 반올림함
이하에서는 첨부된 도면을 이용하여 본 개시의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 개시의 일 실시 예에 따른 전자 시스템(1000)을 설명하기 위한 블록도이다. 도 1에 도시된 바와 같이, 전자 시스템(1000)는 서버(100) 및 전자 장치(200)를 포함한다.
서버(100)는 신경망 모델을 저장하는 장치로서, 전자 장치(200)로부터 학습 데이터를 수신하여 신경망 모델을 학습시킬 수 있다. 여기서, 학습 데이터는 전자 장치(200)에 의해 동형 암호화된 상태일 수 있다. 여기서, 학습은 신경망 모델의 훈련(training)을 의미한다. 여기서, 신경망 모델은 초기 모델일 수 있다.
서버(100)는 신경망 모델을 동형 암호화하여 신경망 모델에 대응되는 동형 암호문을 획득하고, 동형 암호문을 전자 장치(200)로 전송할 수도 있다. 이 경우, 신경망 모델의 학습은 전자 장치(200)에 의해 수행될 수 있다.
전자 장치(200)는 학습 데이터를 저장하는 장치로서, 가령 스마트폰, 태블릿, 스마트 워치, 노트북, PC, 홈 서버, 키오스크, IoT 기능이 적용된 가전 제품 등으로 구현될 수 있다.
전자 장치(200)는 학습 데이터를 동형 암호화하여 학습 데이터에 대응되는 동형 암호문을 획득하고, 동형 암호문을 서버(100)로 전송할 수 있다.
전자 장치(200)는 서버(100)로부터 신경망 모델이 동형 암호화된 동형 암호문을 수신하고, 학습 데이터에 기초하여 동형 암호문을 학습할 수도 있다.
이상과 같이, 서버(100) 및 전자 장치(200) 각각은 동형 암호화를 수행할 수 있는 장치이며, 신경망 모델 또는 학습 데이터를 동형 암호화하기 때문에 상대측으로 제공하더라도 보안이 유지될 수 있다.
다만, 이에 한정되는 것은 아니며, 서버(100)가 학습 데이터를 저장하고, 전자 장치(200)가 신경망 모델을 저장할 수도 있다.
이하에서는 설명의 편의를 위해, 먼저 동형 암호화에 대해 설명한다.
서버(100)의 프로세서 또는 전자 장치(200)의 프로세서(이하에서는 프로세서로 설명한다)는 메모리에 저장된 각종 파라미터 및 프로그램 등을 이용하여 데이터(가령, 신경망 모델, 학습 데이터 등, 이하에서는 메시지로 설명한다)를 동형 암호화할 수 있다. 가령, 프로세서는 기정의된 행렬을 이용하여 메시지를 다항식 형태로 변환하고(즉, 인코딩을 수행하고), 다항식 형태로 변환된 메시지를 기설정된 비밀 키로 암호화하여 동형 암호문을 생성할 수 있다.
프로세서는 동형 암호화를 수행하는 과정에서 산출되는 암호화 노이즈 즉, 에러를 암호문에 포함시킬 수 있다. 구체적으로, 프로세서에 의해 생성되는 동형 암호문은 추후에 비밀키를 이용하여 복호화하였을 때 메시지 및 에러 값을 포함하는 결과 값이 복원되는 형태로 생성될 수 있다.
예를 들어, 프로세서에 의해 생성되는 동형 암호문은 비밀키를 이용하여 복호화하였을 때 하기의 수학식 1을 만족하는 형태로 생성될 수 있다.
[수학식 1]
Dec(ct, sk) = <ct, sk> = M+e(mod q)
여기서 < , >는 내적 연산(usual inner product), ct는 암호문, sk는 비밀키, M은 평문 메시지, e는 암호화 에러 값, mod q는 암호문의 모듈러스(modulus)를 의미한다. q는 스케일링 팩터(scaling factor)(Δ)가 메시지에 곱해진 결과 값 M보다 크게 선택되어야 한다. 에러 값 e의 절대값이 M에 비해서 충분히 작다면, 암호문의 복호화 값 M+e은 유효숫자연산에서 원래의 메시지를 동일한 정밀도로 대체될 수 있는 값이다. 복호화된 데이터 중에서 에러는 최하위 비트(LSB) 측에 배치되고, M은 에러와 인접하게 차하위 비트 측에 배치될 수 있다.
메시지의 크기가 너무 작거나 너무 큰 경우, 스케일링 팩터를 이용하여 그 크기가 조절될 수도 있다. 스케일링 팩터를 사용하게 되면, 정수 형태의 메시지뿐만 아니라 실수 형태의 메시지까지도 암호화할 수 있게 되므로, 활용성이 크게 증대할 수 있다. 또한, 스케일링 팩터를 이용하여 메시지의 크기를 조절함으로써, 연산이 이루어지고 난 이후의 암호문에서 메시지들이 존재하는 영역 즉, 유효 영역의 크기도 조절될 수 있다.
실시 예에 따라, 암호문의 모듈러스 q는 다양한 형태로 설정되어 사용될 수 있다. 예를 들어, 암호문의 모듈러스는 스케일링 팩터 Δ의 지수승 q=ΔL 형태로 설정될 수 있다. Δ가 2라면, q=210 과 같은 값으로 설정될 수 있다.
한편, 암호화를 위해 공개키가 사용될 수 있는데, 프로세서는 암호화를 수행하는데 필요한 공개키를 생성할 수 있다. 다만, 이 예에 한정되는 것은 아니고, 공개키는 외부 장치로부터 수신될 수도 있다.
예를 들어, 프로세서는 Ring-LWE 기법을 이용하여 공개키를 생성할 수 있다. 구체적으로, 프로세서는 먼저 각종 파라미터 및 링(Ring)을 설정하여, 메모리에 저장할 수 있다. 파라미터의 예로는 평문 메시지 비트의 길이, 공개키 및 비밀키의 크기 등이 있을 수 있다.
그리고, 링은 하기의 수학식 2와 같이 표현될 수 있다.
[수학식 2]
여기서, R은 링, Zq는 계수, f(x)는 n차 다항식이다.
링이란 기설정된 계수를 가지는 다항식의 집합으로, 원소들 사이에 덧셈과 곱셈이 정의되어 있으며 덧셈과 곱셈에 대해서 닫혀 있는 집합을 의미한다. 이러한 링은 환으로 지칭될 수 있다.
일 예로, 링은 계수가 Zq인 n차 다항식의 집합을 의미한다. 구체적으로는, n이 Φ(N)일 때, N차 사이클로토믹 다항식(N-th cyclotomic polynomial)을 의미한다. (f(x))란 f(x)로 생성되는 Zq[x]의 이데알(ideal)을 나타낸다. Euler totient 함수 Φ(N)이란 N과 서로소이고 N보다 작은 자연수의 개수를 의미한다. ΦN(x)를 N차 사이클로토믹 다항식으로 정의하면, 링은 하기의 수학식 3과 같이 표현될 수 있다.
[수학식 3]
한편, 비밀키(sk)는 다음과 같이 표현될 수 있다.
구체적으로, 상기와 같은 수학식 3의 링은 평문 공간에서 복소수를 가질 수 있다. 한편, 동형 암호문에 대한 연산 속도를 향상하기 위하여, 상술한 링의 집합 중 평문 공간이 실수인 집합만이 이용될 수도 있다.
링이 설정되면, 프로세서는 링으로부터 비밀키(sk)를 산출할 수 있다.
[수학식 4]
여기서, s(x)는 작은 계수로 랜덤하게 생성한 다항식을 의미한다.
그리고, 프로세서는 링으로부터 제1 랜덤 다항식(a(x))을 산출할 수 있다. 제1 랜덤 다항식은 하기의 수학식 5와 같이 표현될 수 있다.
[수학식 5]
또한, 프로세서는 에러를 산출할 수 있다. 구체적으로, 프로세서는 이산 가우시안 분포 또는 그와 통계적 거리가 가까운 분포로부터 에러를 추출할 수 있다. 이러한 에러는 하기의 수학식 6과 같이 표현될 수 있다.
[수학식 6]
에러까지 산출되면, 프로세서는 제1 랜덤 다항식 및 비밀키에 에러를 모듈러 연산하여 제2 랜덤 다항식을 산출할 수 있다. 제2 랜덤 다항식은 하기의 수학식 7과 같이 표현될 수 있다.
[수학식 7]
최종적으로, 프로세서는 하기의 수학식 8과 같이, 제1 랜덤 다항식 및 제2 랜덤 다항식을 포함하는 형태로 공개키(pk)를 생성할 수 있다.
[수학식 8]
상술한 키 생성 방법은 일 예에 불과하므로, 반드시 이 예에 한정되는 것은 아니며, 이 밖에 다른 방법으로 공개키 및 비밀키가 생성될 수 있음은 물론이다.
한편, 프로세서는 공개키가 생성되면, 공개키를 외부 장치들에 전송할 수 있다.
프로세서는 메시지에 대한 동형 암호문을 생성할 수 있다. 구체적으로, 프로세서는 메시지 형태로 변환된 메시지에 공개키 와, 다음과 같은 수학식을 이용하여 암호문을 생성할 수 있다.
[수학식 9]
이때, 프로세서는 암호문의 길이를 스케일링 팩터의 크기에 대응되도록 생성할 수 있다. 한편, 프로세서는 동형 암호문에 대한 복호화가 필요한 경우, 동형 암호문에 비밀키를 적용하여 동형 암호문을 복호화하여 메시지를 생성할 수 있다. 이때, 생성된 메시지는 앞서 설명한 수학식 1에서 언급한 바와 같이 에러를 포함할 수 있다. 구체적인 복호화 과정 및 디코딩 동작은 도 2를 참조하여 후술한다.
프로세서는 암호문에 대한 연산을 수행할 수 있다. 구체적으로, 프로세서는 동형 암호문에 대해서 암호화된 상태를 유지한 상태에서 덧셈 또는 곱셈 등의 연산을 수행할 수 있다. 구체적으로, 프로세서는 연산에 사용될 동형 암호문 각각을 제1 함수 처리하고, 제1함수 처리된 동형 암호문 간에 덧셈 또는 곱셈 등의 연산을 수행하고, 연산 수행된 동형 암호문을 제1 함수에 역함수인 제2 함수 처리할 수 있다. 이러한 제1 함수 처리 및 제2 함수 처리는 후술한 재부팅 과정에서의 선형 변환 기술이 이용될 수 있다.
한편, 프로세서는 연산이 완료되면, 연산 결과 데이터로부터 유효 영역의 데이터를 검출할 수 있다. 구체적으로, 프로세서는 연산 결과 데이터를 라운딩 처리를 수행하여 유효 영역의 데이터를 검출할 수 있다. 라운딩 처리란 암호화된 상태에서 메시지의 반올림(round-off)을 진행하는 것을 의미하며, 다르게는 리스케일링(rescaling)이라고 할 수도 있다. 구체적으로는, 프로세서는 암호문 각각의 성분에 스케일링 인수의 역수인 Δ-1을 곱하고 반올림하여, 노이즈 영역을 제거한다. 노이즈 영역은 스케일링 팩터의 크기에 대응되도록 결정될 수 있다. 결과적으로 노이즈 영역이 제외된 유효 영역의 메시지를 검출할 수 있다. 암호화 상태에서 진행되므로 추가적인 에러가 발생하지만 크기는 충분히 작으므로 무시할 수 있다.
또한, 프로세서는 연산 결과 암호문 내의 근사 메시지 비중이 임계치를 초과하면, 암호문에 대한 재부팅 동작을 수행할 수 있다.
이상과 같이 본 개시에 따른 프로세서는 기존보다 크기가 절반 작은 행렬을 이용하여 디코딩 또는 인코딩 동작을 수행할 수 있는바, 보다 빠른 디코딩 동작 또는 인코딩 동작을 수행할 수 있다. 예를 들어, 다항수 차수가 17인 동형 암호에 대한 디코딩 시의 곱셈 횟수는 233번, 인코딩 시의 곱셈 횟수는 234번인데 본 개시에 따른 절반 크기의 행렬을 이용하면 대략 5000배 이상의 성능 향상이 가능하다.
한편, 이상에서는 하나의 장치에서 암호화 동작 즉 인코딩 및 암호화 동작 모두를 수행하는 것으로 도시하고 설명하였지만, 구현시에 하나의 장치에서 인코딩 동작만을 수행하고, 다른 장치에서 인코딩 결과를 수신하여 암호화를 수행할 수도 있다. 또한, 복호화 과정에서도 하나의 장치에서 복호화 동작 및 디코딩 동작 모두를 수행할 수도 있으며, 두 개의 장치에서 개별적으로 복호화 동작, 디코딩 동작을 수행할 수도 있다.
또한, 비대칭형 암호 방식(즉, 비밀 키 및 공개 키)을 이용하는 것으로 설명하였지만, 구현시에는 대칭형 암호 방식으로 암호화, 복호화 동작을 수행할 수도 있다.
도 2는 동형 암호문의 생성 및 복호 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 프로세서는 인코딩 모듈(451), 암호화 모듈(453), 복호화 모듈(455), 디코딩 모듈(457)을 포함할 수 있다.
인코딩 모듈(451)은 메시지를 입력받으면, 수신된 메시지를 다항식 형태로 변환하여 출력할 수 있다. 여기서 다항식 형태의 메시지를 출력한다는 것은 기설정된 형태의 다항식의 계수를 출력한다는 것을 의미하나, 구현시 다항식 자체를 출력할 수도 있다.
만약, 메시지에 대한 스케일링 팩터를 입력받으면, 인코딩 모듈(451)은 아래의 수학식 10과 같은 다항식을 출력할 수 있다.
[수학식 10]
여기서 로, 벡터 형태의 메시지일 수 있다. 그리고 m(x)는 다항식 형태의 메시지로, 예를 들어, m(X) = m0 + m1 X + … + mN-1 X N-1 형태로, mi ∈[0, q-1]인 정수이다. 이러한 값들은 계수의 벡터(m0, m1, …, mN-1)로 표현될 수 있다. 그리고 다항식 형태의 메시지는 다차 방정식이라 지칭될 수 있으며, 7차 내지 80 차 중 어느 하나의 차수를 가질 수 있다.
한편, 이상에서는 하나의 메시지만을 하나의 다항식으로 변환하였지만, 구현시에는 복수의 메시지는 하나의 다항식으로 변환할 수 있다. 이러한 동작을 패킹(packing)이라고 지칭할 수 있다.
동형 암호화에서 패킹을 이용하게 되면, 다수의 메시지를 하나의 암호문으로 암호화하는 것이 가능해진다. 이 경우, 각 암호문들 간의 연산을 수행하게 되면, 결과적으로 다수의 메시지에 대한 연산이 병렬적으로 처리되므로 연산 부담이 크게 줄어들게 된다.
예를 들어, 메시지가 복수의 메시지 벡터로 이루어지는 경우, 인코딩 모듈(451)은 복수의 메시지 벡터를 병렬적으로 암호화할 수 있는 형태의 다항식으로 변환한 후 동형 함호화를 수행할 수 있다.
구체적으로는, 인코딩 모듈(451)은 N차 사이클로토믹 다항식 (N-th cyclotomic polynomial) 가 복소수()내에서 서로 다른 개의 근 (primitive N-th roots of unity)을 가진다는 점을 이용한다. 복소수 개념을 도입함으로써 상술한 바와 같이 복수 개의 메시지를 동시에 동형 암호화하는 것이 가능하다.
다음으로, 기본 매장함수(canonical embedding function)를 변형하여 패킹 함수(σ)를 계산할 수 있다. 기본 매장함수는 다항식 의 근 중에서 복소수 켤레(complex conjugate) 관계가 아닌 개의 근 에서의 값들의 쌍 으로 대응시키는 함수이다. 이 함수가 동형함수(homomorphism)임은 이 분야에 평균적 지식을 가진 자라면 쉽게 증명할 수 있다.
기본 매장 함수를 행렬(C)로 표현하면 다음과 같다.
[수학식 11]
다항식 를 계수들의 열 벡터 로 표현하면, 이 다항식의 패킹 함수 와는 관계, 즉, 다음과 같은 관계를 가지게 된다.
[수학식 12]
이와 같이 기본 매장 함수를 산출한 상태에서, 인코딩 모듈(451)은 복수 개(예를 들어, n/2개)의 메시지 벡터 가 입력되면, 상술한 기본 매장 함수를 이용하여 메시지 벡터들을 다항식으로 변환할 수 있다.
[수학식 13]
수학식 13과 같은 방식으로 변환된 다항식 M(x)는 와 같은 관계를 만족한다.
한편, 상술한 기본 매장 함수의 원소들을 1부터 N까지로 표현하였지만, 집합을 로 표현할 수 있다. 이 경우, DFT, iDFT에 사용되는 행렬 U는 다음과 같이 표현할 수도 있다.
[수학식 14]
이 경우 DFT는 R[x]/(XN+1)의 원소인 다항식 m(x) 에서 N/2 의 개수를 갖는 복소수의 벡터 CN/2 로 정의될 수 있다.
만약, 1차원 벡터 를 m(X)의 계수들로 정의할 때, 아래와 같은 수학식 15를 이용하여 DFT의 결과인 N/2 크기의 복소수 벡터 z를 계산할 수 있다.
[수학식 15]
z ←
iDFT는 복소수 벡터 z 로부터 다항식 m(x) 의 계수를 담고 있는 벡터 =(m0, m1, ..., mN-1) 를 계산하는 방법이며, 다음과 같은 방법으로 계산할 수 있다.
[수학식 16]
CRT ←
Figure pat00036
(N×N)
여기서 는 U의 모든 원소를 컨주게이트한 행렬
[수학식 17]
←CRT-1
Figure pat00039
한편, 인코딩 과정 또는 디코딩 과정은 상술한 바와 같이 행렬의 크기만큼의 곱셈을 수행해야 하므로, 다항식의 차수가 N인 큰 동형암호 환경에서는 많은 수의 복소수 곱셈이 필요하다.
예를 들어, N=217을 사용하는 경우, 곱셈 횟수는 233(디코딩시) 또는 234(인코딩시)가 필요하다.
따라서, 행렬을 크기를 줄일 수 있다면, 인코딩 과정 또는 디코딩 과정에서의 곱셈횟수를 줄일 수 있게 된다. 따라서, 본 개시에서는 수학식 18과 같이 기본 매장 함수의 원소 절반만을 갖는 행렬을 이용하여 인코딩 또는 디코딩 동작을 수행한다.
[수학식 18]
이러한 행렬(UH)은 기본 매장 함수의 좌측 절반값만 갖는 행렬로, 기존 매장 함수의 행 개수가 갖고 열 개수가 절반이다.
이러한 행렬을 이용하는 경우의 함수 τ 및 τ-1은 다음과 같이 정의될 수 있다.
[수학식 19]
(
여기서, mi는 의 원소인 임의의 다항식 m(X)= m0 + m1 X +…. 의 계수이다.
[수학식 20]
여기서 이다.
수학식 19, 20과 같은 이유로, UH, UH -1를 τ 및 τ-1 계산시에 사용할 수 있다. 구체적으로, 기본 매장 함수(canonical embedding function)에 대응되는 행렬 내의 행렬 값은 수학식 21과 같이 표현될 수 있는데, 각 행렬 값은 기설정된 주기로 크기 절대값이 동일하다. 예를 들어, 5의 주기로 크기는 동일하고 부호 값이 변경되는 값을 갖게 된다. 이러한 점에서, 기본 매장 함수의 좌측 절반값만 갖는 행렬을 이용하여서 인코딩 또는 디코딩 동작을 수행할 수 있다.
아래의 수학식 21 내지 24의 사유로 DTF를 이용한 τ 및 τ-1 계산시에 FFT, iFFT 적용이 가능하다. 예를 들어, Cooley-Tukey FFT algorithm 방식을 이용하여 상술한 행렬의 계산을 이용할 수 있다.
[수학식 21]
Figure pat00045
[수학식 22]
Figure pat00046
[수학식 23]
Figure pat00047
(여기서, j는 홀수)
[수학식 24]
UH -1 =
그리고 이러한 행렬의 계산시에, DTF를 이용한 τ 및 τ-1 계산시에 FFT, iFFT 적용이 가능하다. 예를 들어, 기존의 행렬(U)을 이용할 때 복잡도가 O(N2)라면, 본 개시에 따른 행렬(UH)을 사용하는 경우, 복잡도가 O(NlogN)가 감소하며, N=217인 경우, 대략 5000배의 성능 향상이 발생할 수 있다.
이후에, 다항식으로 변환된 메시지에 스케일링 팩터를 적용할 수 있다. 이 경우, 변환된 다항식의 각 계수별로 스케일링 벡터를 곱하여 스케일링 팩터를 적용할 수 있다.
그리고 암호화 모듈(453)은 다항식 형태의 메시지를 수신하고, 수신한 메시지에 공개키를 반영하여 동형 암호문을 생성할 수 있다. 구체적으로, 아래와 같은 수학식 25를 이용하여 동형 암호문을 생성할 수 있다.
[수학식 25]
여기서, v는 Xenc에 따라서 선택된 원소이고, e0, e1 역시 Xerr에 따라 선택된 에러 값이다.
복호화 모듈(455)은 암호문과 비밀키를 입력받아, 암호문을 복호화하여 에러를 포함하는 메시지(이하, 근사 메시지)를 출력할 수 있다. 구체적으로, 복호화 모듈(455)은 입력된 암호문이 와 같은 경우, 와 같은 메시지를 출력할 수 있다.
한편, 복호화 모듈(455)에서 출력되는 메시지는 다항식 형태의 메시지인바, 디코딩 모듈(457)에서 복호화 모듈(455)에서 출력된 메시지와 스케일링 팩터에 기초하여 메시지를 최종 출력할 수 있다.
구체적으로, 복호화 모듈(455)은 다항식 메시지가 을 만족하는 경우, 와 같은 메시지를 출력할 수 있다. 이때, 복호화 모듈(455)은 상술한 바와 같은 기본 매장 함수의 원소 절반만을 갖는 수학식 15와 같은 행렬을 이용하여 DFT 연산을 수행할 수 있다.
한편, 도시된 예에서, 프로세서가 4개의 모듈 모두를 포함하는 것으로 도시하고 설명하였지만, 구현시에는 인코딩 모듈과 암호화 모듈만을 포함하거나, 복호화 모듈과 디코딩 모듈만을 포함할 수 있다. 또한, 구현시에는 4개의 모듈 중 어느 하나의 모듈만을 포함할 수도 있다.
도 3은 본 개시의 일 실시 예에 따른 서버(100)의 구성을 나타내는 블럭도이다.
서버(100)는 통신 인터페이스(110), 메모리(120) 및 프로세서(130)를 포함한다.
통신 인터페이스(110)는 회로(circuitry)를 포함한다. 통신 인터페이스(110)는 네트워크를 통해 외부 장치(예: 전자 장치(200) 등)와 통신하여 외부 장치로 각종 정보나 데이터를 송신하거나 외부 장치로부터 각종 정보나 데이터를 수신할 수 있다. 이러한 통신 인터페이스(110)는 송수신부(transceiver)로 지칭될 수도 있다.
예를 들어, 통신 인터페이스(110)는 이더넷 모듈과 같은 유선 랜 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(110)는 와이파이(예: WiFi 802.11a/b/g/n), 블루투스, 지그비, NFC, 적외선 통신 등의 무선 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(110)는 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution), 5G 등과 같은 셀룰러 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(110)는 HDMI(High-Definition Multimedia Interface), USB(Universal Serial Bus) 등과 같은 유선 통신 모듈을 포함할 수 있다.
이와 같이, 통신 인터페이스(110)는 다양한 유형의 통신 방식 중 적어도 하나를 이용하여 외부 장치와 통신할 수 있다.
메모리(120)는 본 개시의 다양한 실시 예에 따라 서버(100)가 동작하기 위해 필요한 데이터를 저장할 수 있다.
예를 들어, 메모리(120)는 서버(100)를 구동하기 위한 O/S, 각종 소프트웨어, 데이터 등을 저장할 수 있다. 또한, 메모리(120)에는 하나 이상의 인스트럭션(instruction)이 저장될 수 있다. 이러한 메모리(120)는 RAM, ROM, 플래시 메모리, HDD, 외장 메모리, 메모리 카드 등과 같은 다양한 형태로 구현될 수 있으며, 어느 하나로 한정되는 것은 아니다.
그리고, 메모리(120)에는 암호화(예: 동형 암호화)될 메시지가 저장될 수 있다. 예를 들어, 메시지는 신경망 모델일 수 있다.
그리고, 메모리(120)에는 공개키가 저장될 수 있다. 공개키가 서버(100)에 의해 생성되는 경우, 메모리(120)에는 공개키, 비밀키 뿐만 아니라, 공개키 및 비밀키의 생성에 필요한 각종 파라미터가 저장될 수 있다.
그리고, 메모리(120)는 서버(100)에서 생성된 동형 암호문을 저장할 수 있다. 또한, 메모리(120)는 동형 암호문의 생성 과정의 중간 데이터(예를 들어, 메시지 벡터, 다항식 형태의 메시지 등)를 저장할 수 있다.
그리고, 메모리(120)는 연산 결과 암호문을 저장할 수도 있다. 연산 결과 암호문은 동형 암호문에 대한 연산 과정을 통해 획득된 결과 값을 의미할 수 있다. 이러한 연산 과정은 서버(100) 또는 전자 장치(200)에 의해 수행될 수 있다.
프로세서(130)는 서버(100)의 각 구성과 연결되어 서버(100)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(130)는 통신 인터페이스(110) 및 메모리(120)와 연결되어 서버(100)를 제어할 수 있다. 이러한 프로세서(130)는 CPU(central processing unit), ASIC(application-specific integrated circuit)과 같은 단일 장치로 구성될 수 있으며, CPU, GPU(Graphics Processing Unit) 등의 복수의 장치로 구성될 수도 있다.
또한, 프로세서(130)는 메모리(120)에 저장된 하나 이상의 인스트럭션을 실행함으로써, 본 개시의 다양한 실시 예에 따른 서버(100)의 동작을 수행할 수 있다.
먼저, 전자 장치(200)가 학습 데이터를 동형 암호화하여 서버(100)로 제공하는 실시 예(이하 제1 실시 예)를 설명하고, 이후 서버(100)가 신경망 모델을 동형 암호화하여 전자 장치(200)로 제공하는 실시 예(이하 제2 실시 예)를 설명한다.
프로세서(130)는 통신 인터페이스(110)를 통해, 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치(200)로부터 수신하고, 동형 암호문에 기초하여 메모리(120)에 저장된 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득할 수 있다.
프로세서(130)는 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 제3 신경망 모델을 전자 장치(200)로 전송하도록 통신 인터페이스(110)를 제어할 수 있다. 예를 들어, 프로세서(130)는 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득할 수 있다. 가령, 복수의 랜덤값은 모든 값이 상이할 수도 있다. 이러한 동작을 통해 신경망 모델의 보안이 확보될 수 있다.
프로세서(130)는 통신 인터페이스(110)를 통해, 제3 신경망 모델이 복호화된 제4 신경망 모델을 전자 장치(200)로부터 수신하고, 제4 신경망 모델에 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다. 예를 들어, 프로세서(130)는 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다. 여기서, 복수의 랜덤값은 덧셈 연산에 이용된 값과 동일하다.
이러한 방식을 통해 획득된 최종 신경망 모델은 학습 데이터에 기초하여 제1 신경망 모델이 학습된 신경망 모델일 수 있다. 즉, 동형 암호화된 학습 데이터를 수신하더라도 신경망 모델의 학습이 가능하며, 서버(100)는 학습 데이터의 원본을 알 수 없기 때문에 학습 데이터의 보안이 확보될 수 있다.
이상에서는 설명의 편의를 위해, 하나의 전자 장치(200)로부터 동형 암호화된 학습 데이터를 수신하는 것으로 설명하였으나, 신경망 모델의 학습을 위해서는 복수의 학습 데이터가 필요할 수 있다.
이 경우, 프로세서(130)는 통신 인터페이스(110)를 통해, 복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고, 복수의 동형 암호문 각각에 기초하여 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고, 복수의 제2 신경망 모델 각각에 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고, 복수의 제3 신경망 모델을 각각 복수의 전자 장치로 전송하도록 통신 인터페이스(110)를 제어하고, 통신 인터페이스(110)를 통해, 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 복수의 전자 장치로부터 각각 수신하고, 복수의 제4 신경망 모델 각각에 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고, 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수 있다.
여기서, 프로세서(130)는 통신 인터페이스(110)를 통해 복수의 전자 장치로부터 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하고, 수신된 정보에 기초하여 복수의 제5 신경망 모델을 가중 평균할 수 있다. 예를 들어, 프로세서(130)는 복수의 전자 장치 중 제1 전자 장치의 제1 학습 데이터가 복수의 전자 장치 중 제2 전자 장치의 제1 학습 데이터보다 2배 많은 경우, 제1 학습 데이터를 통해 획득된 제1 신경망 모델의 가중치를 제2 학습 데이터를 통해 획득된 제2 신경망 모델의 가중치보다 2배로 결정한 후, 가중 평균할 수 있다.
이상에서는 설명의 편의를 위해, 연산키 등에 대한 설명을 생략하였으나, 이에 한정되는 것은 아니다.
예를 들어, 프로세서(130)는 통신 인터페이스(110)를 통해, 연산키 및 연산키에 대응되는 암호화키로 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치(200)로부터 수신하고, 동형 암호문 및 연산키에 기초하여 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하고, 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 제3 신경망 모델을 전자 장치(200)로 전송하도록 통신 인터페이스(110)를 제어하고, 통신 인터페이스(110)를 통해, 연산키에 대응되는 복호화키에 기초하여 제3 신경망 모델이 복호화된 제4 신경망 모델을 전자 장치(200)로부터 수신하고, 제4 신경망 모델에 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다.
한편, 제2 실시 예로서 동작하는 경우, 프로세서(130)는 메모리(120)에 저장된 신경망 모델을 동형 암호화하여 동형 암호문을 획득하고, 동형 암호문을 전자 장치(200)로 전송하도록 통신 인터페이스(110)를 제어하고, 통신 인터페이스(110)를 통해, 학습 데이터에 기초하여 학습된 동형 암호문을 전자 장치(200)로부터 수신하고, 학습된 동형 암호문을 복호화하여 최종 신경망 모델을 획득할 수도 있다.
도 4는 본 개시의 일 실시 예에 따른 전자 장치(200)의 구성을 나타내는 블럭도이다.
전자 장치(200)는 통신 인터페이스(210), 메모리(220) 및 프로세서(230)를 포함한다.
통신 인터페이스(210)는 회로(circuitry)를 포함한다. 통신 인터페이스(210)는 네트워크를 통해 외부 장치(예: 서버(100) 등)와 통신하여 외부 장치로 각종 정보나 데이터를 송신하거나 외부 장치로부터 각종 정보나 데이터를 수신할 수 있다. 이러한 통신 인터페이스(210)는 송수신부(transceiver)로 지칭될 수도 있다.
예를 들어, 통신 인터페이스(210)는 이더넷 모듈과 같은 유선 랜 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(210)는 와이파이(예: WiFi 802.11a/b/g/n), 블루투스, 지그비, NFC, 적외선 통신 등의 무선 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(210)는 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evolution), 5G 등과 같은 셀룰러 통신 모듈을 포함할 수 있다. 또한, 통신 인터페이스(210)는 HDMI(High-Definition Multimedia Interface), USB(Universal Serial Bus) 등과 같은 유선 통신 모듈을 포함할 수 있다.
이와 같이, 통신 인터페이스(210)는 다양한 유형의 통신 방식 중 적어도 하나를 이용하여 외부 장치와 통신할 수 있다.
메모리(220)는 본 개시의 다양한 실시 예에 따라 전자 장치(200)가 동작하기 위해 필요한 데이터를 저장할 수 있다.
예를 들어, 메모리(220)는 전자 장치(200)를 구동하기 위한 O/S, 각종 소프트웨어, 데이터 등을 저장할 수 있다. 또한, 메모리(220)에는 하나 이상의 인스트럭션(instruction)이 저장될 수 있다. 이러한 메모리(220)는 RAM, ROM, 플래시 메모리, HDD, 외장 메모리, 메모리 카드 등과 같은 다양한 형태로 구현될 수 있으며, 어느 하나로 한정되는 것은 아니다.
그리고, 메모리(220)에는 암호화(예: 동형 암호화)될 메시지가 저장될 수 있다. 예를 들어, 메시지는 학습 데이터일 수 있다.
그리고, 메모리(220)에는 공개키가 저장될 수 있다. 공개키가 전자 장치(200)에 의해 생성되는 경우, 메모리(220)에는 공개키, 비밀키 뿐만 아니라, 공개키 및 비밀키의 생성에 필요한 각종 파라미터가 저장될 수 있다.
그리고, 메모리(220)는 전자 장치(200)에서 생성된 동형 암호문을 저장할 수 있다. 또한, 메모리(220)는 동형 암호문의 생성 과정의 중간 데이터(예를 들어, 메시지 벡터, 다항식 형태의 메시지 등)를 저장할 수 있다.
그리고, 메모리(220)는 연산 결과 암호문을 저장할 수도 있다. 연산 결과 암호문은 동형 암호문에 대한 연산 과정을 통해 획득된 결과 값을 의미할 수 있다. 이러한 연산 과정은 서버(100) 또는 전자 장치(200)에 의해 수행될 수 있다.
프로세서(130)는 전자 장치(200)의 각 구성과 연결되어 전자 장치(200)의 전반적인 동작을 제어할 수 있다. 예를 들어, 프로세서(130)는 통신 인터페이스(210) 및 메모리(220)와 연결되어 전자 장치(200)를 제어할 수 있다. 이러한 프로세서(130)는 CPU(central processing unit), ASIC(application-specific integrated circuit)과 같은 단일 장치로 구성될 수 있으며, CPU, GPU(Graphics Processing Unit) 등의 복수의 장치로 구성될 수도 있다.
또한, 프로세서(130)는 메모리(220)에 저장된 하나 이상의 인스트럭션을 실행함으로써, 본 개시의 다양한 실시 예에 따른 전자 장치(200)의 동작을 수행할 수 있다.
제1 실시 예로서 동작하는 경우, 프로세서(230)는 메모리(220)에 저장된 학습 데이터를 동형 암호화하여 동형 암호문을 획득하고, 동형 암호문을 서버(100)로 전송하도록 통신 인터페이스(210)를 제어하고, 통신 인터페이스(210)를 통해, 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 서버(100)로부터 수신하고, 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 복호화된 신경망 모델을 서버(100)로 전송하도록 통신 인터페이스(210)를 제어할 수 있다. 학습 데이터는 동형 암호화되기 때문에 보안이 확보되고, 신경망 모델에는 랜덤값이 더해진 상태로 수신되기 때문에 보안이 확보될 수 있다.
이상에서는 설명의 편의를 위해, 연산키 등에 대한 설명을 생략하였으나, 이에 한정되는 것은 아니다.
예를 들어, 프로세서(230)는 동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고, 암호화키에 기초하여 학습 데이터를 동형 암호화하여 동형 암호문을 획득하고, 동형 암호문 및 연산키를 서버(100)로 전송하도록 통신 인터페이스(210)를 제어하고, 통신 인터페이스(210)를 통해, 동형 암호문 및 연산키에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 서버(100)로부터 수신하고, 복호화키에 기초하여 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 복호화된 신경망 모델을 서버(100)로 전송하도록 통신 인터페이스(210)를 제어할 수 있다.
제2 실시 예로서 동작하는 경우, 프로세서(230)는 통신 인터페이스(210)를 통해, 신경망 모델이 동형 암호화된 동형 암호문을 서버(100)로부터 수신하고, 메모리(220)에 저장된 학습 데이터에 기초하여 동형 암호문을 학습하고, 학습된 동형 암호문을 서버(100)로 전송하도록 통신 인터페이스(210)를 제어할 수 있다.
도 5 및 도 6은 본 개시의 일 실시 예에 따른 학습 데이터의 소유자의 수에 따른 동작을 설명하기 위한 도면들이다.
먼저, 전이 학습에 대해 간단히 설명하면, 전이 학습은 다중 클래스 분류 작업에 중점을 두며, 가장 일반적인 접근 방식을 채택할 수 있다. 사전 훈련된 모델을 기능 추출기로 사용하고 분류 계층을 미세 조정할 수 있다. Cross-Entropy Loss LCE를 최소화하기 위해 SGD(Stochastic Gradient Descent)로 레이어를 훈련할 수 있다. 가령, n, f, c는 각각 미니 배치 크기, 특징 수, 클래스 수일 수 있다(피쳐의 수는 사전 훈련된 특징 추출기의 출력 차원과 동일할 수 있다).
를 각각 입력 기능을 나타내는 행렬과 미니 배치 데이터의 원-핫 인코딩 레이블로 정의하고, 를 매개 변수 행렬로 정의할 수 있다. W의 마지막 열이 바이어스 열이고 X의 대응되는 열이 1로 채워져 있다고 가정할 수 있다. i번째 데이터가 k번째 클래스에 속할 확률은 다음과 같이 softmax 함수로 모델링될 수 있다.
[수학식 26]
여기서, 는 X의 i번째 로우이고, 로 나타내면, W에 대한 Cross-Entropy Loss LCE의 그래디언트 는 하기와 같다.
[수학식 27]
한편, HE(Homomorphic Encryption)는 복호화 없이 암호화된 데이터에 대한 계산을 지원할 수 있는 암호화 프리미티브일 수 있다. 특히, CKKS 방식은 동형 암호화 방식으로 암호화된 실수 벡터와 복소수 벡터에 대한 근사 산술 연산을 지원할 수 있다. 슬롯은 암호화된 값이 압축되는 암호문에 있는 벡터의 각 항목이고, 암호문의 블록은 여러 슬롯으로 구성될 수 있다.
이를 통해, HE는 SIMD(Single Instruction Multiple Data) 작업을 지원하여 여러 데이터에 대한 계산을 한 번에 실행할 수 있으며, 암호문을 통해 다음 작업이 가능할 수 있다.
Addition: 두 개의 암호문을 요소별로 덧셈.
Multiplication: 두 암호문의 요소별 곱셈.
암호문-암호문 곱셈은 Mult, 평문-암호문 곱셈은 CMult로 표시하고, x와 y가 암호화되었는지 여부에 관계없이 x와 y의 곱을 x ⊙ y로 표시한다. CKKS 방식은 준동형 암호화 방식이므로 제한된 승법 뎁스의 다변량 다항식을 계산할 수 있다. 임의의 복소수 상수를 곱하는 것도 뎁스를 소비할 수 있다.
Rotation: 메시지 및 그의 암호문 ct가 주어지면, 에 대해, 를 계산할 수 있고, 암호 해제는 일 수 있다.
Complex conjugation: 암호문의 요소별 복합 활용
Bootstrapping: 부트스트래핑은 임의 각도의 다변량 다항식을 계산할 수 있는 고유한 작업이며, 동형 암호의 모든 기본 연산 중 가장 비용이 많이 드는 계산이므로 부트스트래핑 연산의 수를 줄이기 위해서는 회로의 곱셈 뎁스를 줄이는 것이 중요할 수 있다.
도 5 및 도 6에서 신경망 모델의 소유자는 한 명일 수 있다. 여기서, 신경망 모델의 소유자는 Model Owner(MO)일 수 있다.
먼저, 도 5에 도시된 바와 같이, 학습 데이터의 소유자가 한 명일 수 있다(HETAL-SDO). 여기서, 학습 데이터의 소유자는 Data Owner(DO)일 수 있다.
이 경우, 서버(100)는 신경망 모델을 동형 암호화하여 전자 장치(200)로 제공하고, 전자 장치(200)가 학습 데이터에 기초하여 신경망 모델을 학습한 후, 학습된 신경망 모델을 서버(100)로 제공하고, 서버(100)가 복호화를 통해 최종 신경망 모델을 획득할 수 있다. 이는 하기와 같은 프로토콜로 표현할 수 있다.
또는, 전자 장치(200)는 학습 데이터를 동형 암호화하여 서버(100)로 제공하고, 서버(100)가 동형 암호화된 학습 데이터에 기초하여 신경망 모델을 학습한 후, 학습된 신경망 모델을 랜덤값으로 덧셈 연산하고, 덧셈 연산된 신경망 모델을 전자 장치(200)로 제공할 수 있다. 전자 장치(200)는 덧셈 연산된 신경망 모델을 복호화하고, 복호화된 신경망 모델을 서버(100)로 전송하고, 서버(100)는 복호화된 신경망 모델을 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수도 있다.
한편, 도 6에 도시된 바와 같이, 학습 데이터의 소유자가 복수일 수 있다(HETAL-FL). 즉, 연합 학습(federated learning, FL)이 수행될 수 있다.
이 경우, 서버(100)는 신경망 모델을 동형 암호화하여 복수의 전자 장치로 제공하고, 복수의 전자 장치 각각이 학습 데이터에 기초하여 신경망 모델을 학습한 후, 학습된 신경망 모델을 서버(100)로 제공하고, 서버(100)가 복수의 신경망 모델을 복호화하고, 복호화된 복수의 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수 있다. 이는 하기와 같은 프로토콜로 표현할 수 있다.
또는, 복수의 전자 장치 각각은 학습 데이터를 동형 암호화하여 서버(100)로 제공하고, 서버(100)가 복수의 동형 암호화된 학습 데이터에 기초하여 신경망 모델을 학습한 후, 복수의 학습된 신경망 모델을 랜덤값으로 덧셈 연산하고, 복수의 덧셈 연산된 신경망 모델 각각을 대응되는 전자 장치로 제공할 수 있다. 복수의 전자 장치 각각은 덧셈 연산된 신경망 모델을 복호화하고, 복호화된 신경망 모델을 서버(100)로 전송하고, 서버(100)는 복수의 복호화된 신경망 모델을 랜덤값을 뺄셈 연산하고, 복수의 뺄셈 연산된 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수도 있다.
이상과 같은 동작을 통해 CKKS 동형 암호 기법을 이용한 효율적인 동형 암호 기반 전이 학습 알고리즘(Homomorphic Encryption based Transfer Learning algorithm, HETAL)이 구현될 수 있다.
도 7은 본 개시의 일 실시 예에 따른 연산 방법을 설명하기 위한 도면이다.
softmax 근사 알고리즘, 형식의 행렬 곱셈을 계산하는 DiagABT 및 DiagATB라는 두 가지 새로운 암호화 행렬 곱셈 알고리즘에 대해 설명한다. 도 7은 DiagABT 알고리즘을 도시하였다.
Softmax approximation
지수 함수와 역함수를 개별적으로 근사화한 다음(AExp 및 AInv로 표시함), 이들을 결합하여 softmax의 최종 근사값인 ASoftmax를 다음과 같이 획득할 수 있다.
[수학식 28]
지수의 경우, 먼저 최소 제곱법에 의해 차수 d = 12 다항식으로 [-1, 1]에 대한 지수를 근사하고 관계 를 사용하여 근사 영역을 [-B,B]로 확대할 수 있다. 역을 근사화하기 위해 Goldschmidt의 알고리즘을 사용할 수 있고, n = 8(반복 횟수) 및 R = 104(스케일링 계수)를 이용할 수 있다. 마지막으로, 입력을 고정 상수 λ = 4로 나누는 Gumbel softmax 기술을 사용하여 지수의 범위를 줄이고 역 근사의 영역에 맞도록 만들 수 있다.
다만, 훈련이 진행됨에 따라 softmax의 입력 범위가 증가하고, 원래 매개 변수가 많은 epoch에 대해 훈련하기에 충분하지 않을 수 있어, 하기의 매개 변수 집합을 이용할 수도 있다.
d = 8. 이는 정확도 손실 없이 Mult 및 CMult의 수를 줄일 수 있음.
B = 8. 이는 원래 와 비교하여 곱셈 뎁스를 1만큼 줄일 수 있음.
R = , n = 20. 더 큰 근사 영역에 대해 R을 증가시켰고, R을 높이면 오류도 증가하므로 더 나은 정확도를 위해 더 큰 n을 선택함.
λ = 1. Gumbel softmax 기술을 사용하지 않음.
이러한 매개 변수를 사용하면 암호화되지 않은 학습에 비해 정확도 손실이 거의 없는 모델을 획득할 수 있다.
Encrypted matrix multiplication
먼저, 행렬을 암호문으로 인코딩하는 방법과 HETAL에서 로짓(logits) 및 그래디언트를 계산하기 위해 형식의 암호화된 행렬 곱셈을 수행하는 방법을 설명한다. 곱셈에 전치를 포함하는 것이 AB 형식의 행렬 곱셈을 직접 계산하는 것보다 더 효율적일 수 있다. 이는 훈련의 각 반복에 대해 전치를 수행해야 하기 때문에 비용이 많이 들고 추가 곱셈 뎁스를 소비하기 때문이다.
Encoding
행렬은 일반적으로 크기가 크며, 가령 단일 암호문의 슬롯 수보다 더 많은 항목이 있는 경우가 많을 수 있다. 즉, 이러한 큰 행렬을 인코딩하려면 여러 블록(암호문)이 필요하며, 이를 위해 먼저 행렬을 고정 모양 의 부분 행렬로 나누고 각 부분 행렬을 row-major 순서로 인코딩할 수 있다. 여기서, 각 부분 행렬은 단일 암호문에 해당하므로 각 부분 행렬의 항목 수가 단일 암호문의 슬롯 수와 동일할 수 있다(즉, ). 따라서, 모양 a × b의 행렬을 인코딩하려면 가 필요할 수 있다.
설명의 편의를 위해 모든 행렬이 하나의 암호문에 들어갈 만큼 충분히 작다고 가정하고, 필요한 경우 제로 패딩을 적용하여 행렬의 행과 열의 수가 2의 거듭제곱이라고 추가로 가정한다. 알고리즘은 큰 행렬(여러 암호문으로 구성됨)로 쉽게 확장할 수 있다.
의 연산
를 두 행렬로 가정하면, 덧셈, 곱셈, 회전과 같은 기본 HE 연산을 사용하여 를 연산해야 한다.
주어진 행렬 B에 대해 RotUp(B, k)를 B의 행을 위쪽 방향으로 k만큼 회전시켜 얻은 행렬 B'로 정의한다(가령, ).
B를 행 방향으로 인코딩할 때 인덱스 kb의 왼쪽 회전만 적용하면 B에서 RotUp(B, k)를 얻을 수 있다. 즉, RotUp(B, k) = Lrot(B, kb)일 수 있다.
다음으로, 행렬 X에 대해 SumCols(X)를 항목이 있는 행렬로 정의할 수 있다.
[수학식 29]
즉, SumCols(X)의 각 열은 X 열의 합이고, 이는 회전과 1 상수 곱셈으로 계산될 수 있다.
행렬 행렬로 정의할 수 있다. 여기서 B의 복사본은 수직 방향으로 타일링될 수 있고, 의 complexification 를 하기와 같이 정의할 수 있다.
[수학식 30]
(를 곱하는 것은 곱셈 뎁스를 소비하지 않는다.) 이를 사용하여 다음과 같이 를 계산할 수 있습니다. 는 가로 방향으로 복사본을 포함하는 행렬일 수 있다.
Proposition 1
이상과 같이 A 및 B를 정의하면, 하기에 의해 를 획득할 수 있다.
[수학식 31]
여기서, 는 하기에 따른 비대각선 마스킹 행렬일 수 있다.
[수학식 32]
는 마스킹 행렬의 complexified 버전일 수 있다.
[수학식 33]
도 7은 Proposition 1를 나타낸다. 회전 수는 행렬 곱셈의 병목 현상이며 타일링은 에서 로 줄이는 효과가 있다. 이는 또한 W의 행 수가 데이터 집합의 클래스 수와 같기 때문에 를 계산하는 경우에도 적합하며 일반적으로 또는 에 비해 작을 수 있다. 또한, complexification을 사용하면 에서 로 복잡도가 절반으로 더 줄어들 수 있다. 마지막으로, 대각선 마스크 으로 대체하여 추가 곱셈 뎁스 소비 없이 t ∈ R에 대한 를 계산하도록 알고리즘을 확장할 수 있다.
의 연산
로 가정하면, 를 유사하게 연산할 수 있다. 먼저 RotLeft(A, k)를 A의 열을 k만큼 왼쪽 방향으로 회전하여 얻은 행렬 A'로 정의한다(가령, ).
이것은 본질적으로 순열 φ와 동일한 작업일 수 있다. RotUp과 달리 곱셈 뎁스를 사용할 수 있다. SumCols와 마찬가지로 행렬 X에 대한 SumRows(X)를 하기와 같이 정의할 수 있다.
[수학식 34]
즉, SumRows(X)의 각 행은 X에 있는 행의 합이고, 이는 추가 뎁스 소비 없이 회전으로 수행될 수 있다.
의 경우와 마찬가지로 계산 복잡도를 줄이기 위해 타일링과 복잡화를 적용할 수 있다. A의 (c/s1) 복사본이 수평 방향으로 타일링되는 행렬에 대해 로 표시할 수 있다. 또한 의 complexification 를 하기와 같이 정의할 수 있다.
[수학식 35]
다만, RotLeft는 곱셈 뎁스를 소비하므로 의 레벨은 의 레벨보다 1만큼 작을 수 있다. 이는 의 수준이 B의 수준보다 작을 때 의 곱셈 뎁스를 1만큼 증가시킬 수 있다. 이 경우, 입력 데이터 행렬 X는 암호화되지 않은 상태로 유지되므로 그래디언트 의 계산은 뎁스 4 작업이 될 수 있다. 이러한 문제를 완화하기 위해, 결국 A가 아닌 B의 뎁스를 소비하는 알고리즘이 이용될 수 있다.
먼저, 를 k에 의한 행렬 A의 불완전한 왼쪽 회전으로 정의한다. 이는 일반적인 왼쪽 회전 Lrot(A, k)와 동일하며 뎁스를 소비하지 않는다. 다만, 결과의 마지막 k 열은 회전되며, 에 대해 하기와 같다.
[수학식 36]
그리고, 마지막 k 열에 대해서만 RotUp(-, 1)이 적용되는 행렬로 PRotUp(B, k)를 정의한다. 행렬의 관점에서 에 대해 하기를 획득할 수 있다.
[수학식 37]
곱셈 뎁스를 소비하는 single CMult 및 Lrot을 사용하여 이를 동형적으로 계산할 수 있다(분명히 B가 암호화되지 않은 경우 작업이 필요하지 않다).
이러한 새로운 연산 및 PRotUp을 사용하여 는 다음과 같이 표현될 수 있다.
Proposition 2
[수학식 38]
여기서,
이상과 같은 방식을 통한 HETAL-SDO 및 HETAL-FL의 학습 결과는 하기와 같다.
POSEIDON과의 비교는 하기와 같다.
행렬 곱셈 알고리즘과의 비교는 하기와 같다.
도 8은 본 개시의 일 실시 예에 따른 서버의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신한다(S810). 그리고, 동형 암호문에 기초하여 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득한다(S820). 그리고, 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득한다(S830). 그리고, 제3 신경망 모델을 전자 장치로 전송한다(S840). 그리고, 제3 신경망 모델이 복호화된 제4 신경망 모델을 전자 장치로부터 수신한다(S850). 그리고, 제4 신경망 모델에 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득한다(S860).
또한, 제3 신경망 모델을 획득하는 단계(S820)는 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 최종 신경망 모델을 획득하는 단계(S860)는 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다.
그리고, 최종 신경망 모델은 학습 데이터에 기초하여 제1 신경망 모델이 학습된 신경망 모델일 수 있다.
또한, 동형 암호문을 수신하는 단계(S810)는 복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고, 제2 신경망 모델을 획득하는 단계(S820)는 복수의 동형 암호문 각각에 기초하여 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고, 제3 신경망 모델을 획득하는 단계(S830)는 복수의 제2 신경망 모델 각각에 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고, 전송하는 단계(S840)는 복수의 제3 신경망 모델을 각각 복수의 전자 장치로 전송하고, 제4 신경망 모델을 수신하는 단계(S850)는 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 복수의 전자 장치로부터 각각 수신하고, 최종 신경망 모델을 획득하는 단계(S860)는 복수의 제4 신경망 모델 각각에 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고, 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득할 수 있다.
그리고, 복수의 전자 장치로부터 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하는 단계를 더 포함하며, 최종 신경망 모델을 획득하는 단계(S860)는 수신된 정보에 기초하여 복수의 제5 신경망 모델을 가중 평균할 수 있다.
또한, 동형 암호문을 수신하는 단계(S810)는 연산키 및 연산키에 대응되는 암호화키로 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하고, 제2 신경망 모델을 획득하는 단계(S820)는 동형 암호문 및 연산키에 기초하여 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하고, 제3 신경망 모델을 획득하는 단계(S830)는 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고, 전송하는 단계(S840)는 제3 신경망 모델을 전자 장치로 전송하고, 제4 신경망 모델을 수신하는 단계(S850)는 연산키에 대응되는 복호화키에 기초하여 제3 신경망 모델이 복호화된 제4 신경망 모델을 전자 장치로부터 수신하고, 최종 신경망 모델을 획득하는 단계(S860)는 제4 신경망 모델에 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득할 수 있다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
학습 데이터를 동형 암호화하여 동형 암호문을 획득한다(S910). 그리고, 동형 암호문을 서버로 전송한다(S920). 그리고, 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 서버로부터 수신한다(S930). 그리고, 랜덤값을 덧셈 연산한 신경망 모델을 복호화한다(S940). 그리고, 복호화된 신경망 모델을 서버로 전송한다(S950).
또한, 획득하는 단계(S910)는 동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고, 암호화키에 기초하여 학습 데이터를 동형 암호화하여 동형 암호문을 획득하고, 동형 암호문을 전송하는 단계(S920)는 동형 암호문 및 연산키를 서버로 전송하고, 수신하는 단계(S930)는 동형 암호문 및 연산키에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 서버로부터 수신하고, 복호화하는 단계(S940)는 복호화키에 기초하여 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고, 복호화된 신경망 모델을 전송하는 단계(S950)는 복호화된 신경망 모델을 서버로 전송할 수 있다.
한편, 상술한 다양한 실시 예에 따른 방법은 각 단계들을 수행하기 위한 프로그램 코드 형태로 구현되어, 기록 매체에 저장되고 배포될 수도 있다. 이 경우, 기록 매체가 탑재된 장치는 상술한 암호화 또는 암호문 처리 등의 동작들을 수행할 수 있다.
이러한 기록 매체는, ROM, RAM, 메모리 칩, 메모리 카드, 외장형 하드, 하드, CD, DVD, 자기 디스크 또는 자기 테이프 등과 같은 다양한 유형의 컴퓨터 판독 가능 매체가 될 수 있다.
이상 첨부 도면을 참고하여 본 개시에 대해서 설명하였지만 본 개시의 권리범위는 후술하는 특허청구범위에 의해 결정되며 전술한 실시 예 및/또는 도면에 제한되는 것으로 해석되어서는 안 된다. 그리고 특허청구범위에 기재된 개시의, 당업자에게 자명한 개량, 변경 및 수정도 본 개시의 권리범위에 포함된다는 점이 명백하게 이해되어야 한다.
1000 : 전자 시스템 100 : 서버
110 : 통신 인터페이스 120 : 메모리
130 : 프로세서 200 : 전자 장치
210 : 통신 인터페이스 220 : 메모리
230 : 프로세서

Claims (16)

  1. 서버에 있어서,
    통신 인터페이스;
    적어도 하나의 인스트럭션(instruction)이 저장된 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 서버를 제어하는 프로세서;를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써,
    상기 통신 인터페이스를 통해, 학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하고,
    상기 동형 암호문에 기초하여 상기 메모리에 저장된 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하고,
    상기 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하고,
    상기 제3 신경망 모델을 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고,
    상기 통신 인터페이스를 통해, 상기 제3 신경망 모델이 복호화된 제4 신경망 모델을 상기 전자 장치로부터 수신하고,
    상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득하는, 서버.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고,
    상기 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 상기 복수의 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득하는, 서버.
  3. 제1항에 있어서,
    상기 최종 신경망 모델은,
    상기 학습 데이터에 기초하여 상기 제1 신경망 모델이 학습된 신경망 모델인, 서버.
  4. 제1항에 있어서,
    상기 프로세서는,
    상기 통신 인터페이스를 통해, 복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고,
    상기 복수의 동형 암호문 각각에 기초하여 상기 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고,
    상기 복수의 제2 신경망 모델 각각에 상기 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고,
    상기 복수의 제3 신경망 모델을 각각 상기 복수의 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고,
    상기 통신 인터페이스를 통해, 상기 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 상기 복수의 전자 장치로부터 각각 수신하고,
    상기 복수의 제4 신경망 모델 각각에 상기 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고,
    상기 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득하는, 서버.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 통신 인터페이스를 통해 상기 복수의 전자 장치로부터 상기 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하고,
    상기 수신된 정보에 기초하여 상기 복수의 제5 신경망 모델을 가중 평균하는, 서버.
  6. 제1항에 있어서,
    상기 프로세서는,
    상기 통신 인터페이스를 통해, 연산키 및 상기 연산키에 대응되는 암호화키로 상기 학습 데이터가 동형 암호화된 상기 동형 암호문을 상기 전자 장치로부터 수신하고,
    상기 동형 암호문 및 상기 연산키에 기초하여 상기 제1 신경망 모델을 학습하여 상기 제2 신경망 모델을 획득하고,
    상기 제2 신경망 모델에 상기 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고,
    상기 제3 신경망 모델을 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하고,
    상기 통신 인터페이스를 통해, 상기 연산키에 대응되는 복호화키에 기초하여 상기 제3 신경망 모델이 복호화된 상기 제4 신경망 모델을 상기 전자 장치로부터 수신하고,
    상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득하는, 서버.
  7. 전자 장치에 있어서,
    통신 인터페이스;
    적어도 하나의 인스트럭션(instruction)이 저장된 메모리; 및
    상기 통신 인터페이스 및 상기 메모리와 연결되어 상기 전자 장치를 제어하는 프로세서;를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 인스트럭션을 실행함으로써,
    상기 메모리에 저장된 학습 데이터를 동형 암호화하여 동형 암호문을 획득하고,
    상기 동형 암호문을 서버로 전송하도록 상기 통신 인터페이스를 제어하고,
    상기 통신 인터페이스를 통해, 상기 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고,
    상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고,
    상기 복호화된 신경망 모델을 상기 서버로 전송하도록 상기 통신 인터페이스를 제어하는, 전자 장치.
  8. 제7항에 있어서,
    상기 프로세서는,
    동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고,
    상기 암호화키에 기초하여 상기 학습 데이터를 동형 암호화하여 상기 동형 암호문을 획득하고,
    상기 동형 암호문 및 상기 연산키를 서버로 전송하도록 상기 통신 인터페이스를 제어하고,
    상기 통신 인터페이스를 통해, 상기 동형 암호문 및 상기 연산키에 기초하여 학습된 신경망 모델에 상기 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고,
    상기 복호화키에 기초하여 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고,
    상기 복호화된 신경망 모델을 상기 서버로 전송하도록 상기 통신 인터페이스를 제어하는, 전자 장치.
  9. 서버의 제어 방법에 있어서,
    학습 데이터가 동형 암호화된 동형 암호문을 전자 장치로부터 수신하는 단계;
    상기 동형 암호문에 기초하여 제1 신경망 모델을 학습하여 제2 신경망 모델을 획득하는 단계;
    상기 제2 신경망 모델에 랜덤값을 덧셈 연산하여 제3 신경망 모델을 획득하는 단계;
    상기 제3 신경망 모델을 상기 전자 장치로 전송하는 단계;
    상기 제3 신경망 모델이 복호화된 제4 신경망 모델을 상기 전자 장치로부터 수신하는 단계; 및
    상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 최종 신경망 모델을 획득하는 단계;를 포함하는 제어 방법.
  10. 제9항에 있어서,
    상기 제3 신경망 모델을 획득하는 단계는,
    상기 제2 신경망 모델에 포함된 복수의 웨이트들에 각각 복수의 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고,
    상기 최종 신경망 모델을 획득하는 단계는,
    상기 제4 신경망 모델에 포함된 복수의 웨이트들에 각각 상기 복수의 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득하는, 제어 방법.
  11. 제9항에 있어서,
    상기 최종 신경망 모델은,
    상기 학습 데이터에 기초하여 상기 제1 신경망 모델이 학습된 신경망 모델인, 제어 방법.
  12. 제9항에 있어서,
    상기 동형 암호문을 수신하는 단계는,
    복수의 전자 장치로부터 각각 복수의 동형 암호문을 수신하고,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 복수의 동형 암호문 각각에 기초하여 상기 제1 신경망 모델을 학습하여 복수의 제2 신경망 모델을 획득하고,
    상기 제3 신경망 모델을 획득하는 단계는,
    상기 복수의 제2 신경망 모델 각각에 상기 랜덤값을 덧셈 연산하여 복수의 제3 신경망 모델을 획득하고,
    상기 전송하는 단계는,
    상기 복수의 제3 신경망 모델을 각각 상기 복수의 전자 장치로 전송하고,
    상기 제4 신경망 모델을 수신하는 단계는,
    상기 복수의 제3 신경망 모델이 각각 복호화된 복수의 제4 신경망 모델을 상기 복수의 전자 장치로부터 각각 수신하고,
    상기 최종 신경망 모델을 획득하는 단계는,
    상기 복수의 제4 신경망 모델 각각에 상기 랜덤값을 뺄셈 연산하여 복수의 제5 신경망 모델을 획득하고,
    상기 복수의 제5 신경망 모델을 가중 평균하여 최종 신경망 모델을 획득하는, 제어 방법.
  13. 제12항에 있어서,
    상기 복수의 전자 장치로부터 상기 복수의 전자 장치 각각의 학습 데이터의 개수에 대한 정보를 수신하는 단계;를 더 포함하며,
    상기 최종 신경망 모델을 획득하는 단계는,
    상기 수신된 정보에 기초하여 상기 복수의 제5 신경망 모델을 가중 평균하는, 제어 방법.
  14. 제9항에 있어서,
    상기 동형 암호문을 수신하는 단계는,
    연산키 및 상기 연산키에 대응되는 암호화키로 상기 학습 데이터가 동형 암호화된 상기 동형 암호문을 상기 전자 장치로부터 수신하고,
    상기 제2 신경망 모델을 획득하는 단계는,
    상기 동형 암호문 및 상기 연산키에 기초하여 상기 제1 신경망 모델을 학습하여 상기 제2 신경망 모델을 획득하고,
    상기 제3 신경망 모델을 획득하는 단계는,
    상기 제2 신경망 모델에 상기 랜덤값을 덧셈 연산하여 상기 제3 신경망 모델을 획득하고,
    상기 전송하는 단계는,
    상기 제3 신경망 모델을 상기 전자 장치로 전송하고,
    상기 제4 신경망 모델을 수신하는 단계는,
    상기 연산키에 대응되는 복호화키에 기초하여 상기 제3 신경망 모델이 복호화된 상기 제4 신경망 모델을 상기 전자 장치로부터 수신하고,
    상기 최종 신경망 모델을 획득하는 단계는,
    상기 제4 신경망 모델에 상기 랜덤값을 뺄셈 연산하여 상기 최종 신경망 모델을 획득하는, 제어 방법.
  15. 전자 장치의 제어 방법에 있어서,
    학습 데이터를 동형 암호화하여 동형 암호문을 획득하는 단계;
    상기 동형 암호문을 서버로 전송하는 단계;
    상기 동형 암호문에 기초하여 학습된 신경망 모델에 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하는 단계;
    상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하는 단계; 및
    상기 복호화된 신경망 모델을 상기 서버로 전송하는 단계;를 포함하는 제어 방법.
  16. 제15항에 있어서,
    상기 획득하는 단계는,
    동형 암호 알고리즘에 기초하여 암호화키, 복호화키 및 연산키를 획득하고,
    상기 암호화키에 기초하여 상기 학습 데이터를 동형 암호화하여 상기 동형 암호문을 획득하고,
    상기 동형 암호문을 전송하는 단계는,
    상기 동형 암호문 및 상기 연산키를 서버로 전송하고,
    상기 수신하는 단계는,
    상기 동형 암호문 및 상기 연산키에 기초하여 학습된 신경망 모델에 상기 랜덤값을 덧셈 연산한 신경망 모델을 상기 서버로부터 수신하고,
    상기 복호화하는 단계는,
    상기 복호화키에 기초하여 상기 랜덤값을 덧셈 연산한 신경망 모델을 복호화하고,
    상기 복호화된 신경망 모델을 전송하는 단계는,
    상기 복호화된 신경망 모델을 상기 서버로 전송하는, 제어 방법.
KR1020230088540A 2022-11-07 2023-07-07 신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들 KR20240066048A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220147375 2022-11-07
KR1020220147375 2022-11-07

Publications (1)

Publication Number Publication Date
KR20240066048A true KR20240066048A (ko) 2024-05-14

Family

ID=91076467

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230088540A KR20240066048A (ko) 2022-11-07 2023-07-07 신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들

Country Status (1)

Country Link
KR (1) KR20240066048A (ko)

Similar Documents

Publication Publication Date Title
JP6964688B2 (ja) 暗号文に対する近似演算を行う装置及び方法
EP3793127B1 (en) Terminal device performing homomorphic encryption, server device processing cipher text thereof, and methods thereof
US11239995B2 (en) Apparatus for processing approximately encrypted messages and methods thereof
KR102040106B1 (ko) 실수 평문에 대한 동형 암호화 방법
JP5564434B2 (ja) 確率的対称暗号化のための方法およびエンティティ
RU2752697C1 (ru) Криптографическое устройство с изменяемой конфигурацией
US11509454B2 (en) Apparatus for processing modular multiply operation and methods thereof
KR102339833B1 (ko) 다변수 패킹을 이용하는 연산 장치 및 방법
KR20200087061A (ko) 근사 암호화된 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법
KR20200115408A (ko) 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
US11799628B2 (en) Apparatus and method for processing non-polynomial operation on encrypted messages
Jang et al. Privacy-preserving deep sequential model with matrix homomorphic encryption
EP4072062A1 (en) Apparatus for processing non-polynomial operation on homomorphic encrypted messages and methods thereof
KR20240066048A (ko) 신경망 모델 및 학습 데이터의 보안을 강화하기 위한 서버, 전자 장치 및 그 제어 방법들
KR20230003954A (ko) 영지식 증명을 위한 암호문 처리 방법 및 장치
US20240185031A1 (en) Server, electronic apparatus for enhancing security of neural network model and training data and control method thereof
KR20200087708A (ko) 근사 계산에 대한 계산 검증
KR102393941B1 (ko) 근사 암호화된 암호문에 대한 인코딩 또는 디코딩
KR20200099957A (ko) 비밀 키에 대한 정족수 설계를 수행하는 장치 및 방법
KR102257779B1 (ko) 다자간 계산을 위한 유사 보간
EP3854024B1 (en) Identity-based encryption method based on lattices
US20240163076A1 (en) Apparatus for calculating matrix multiplication of homomorphic encryption and method thereof
KR20240048985A (ko) 투표 분석 정보를 포함하는 동형 암호문을 생성하는 방법 및 그 전자 장치
KR20230063302A (ko) 문자열 데이터를 동형 암호화하는 장치 및 방법
KR20240014946A (ko) 동형 암호문을 생성하는 전자 장치 및 그 방법