GAN을 사용하여 개인키를 공유하는 방법

Yujeong Lee
CURG
Published in
10 min readNov 21, 2020

이유정 Sogang Univ. BaSE LAB, CURG
lkitty0302@gmail.com

이번 포스팅에서 소개할 논문은 GAN-based key secret-sharing scheme in Blockchain이다. 블록체인에서 개인키를 분실하면 계정의 자산은 물론, 계정의 권한까지 잃게 된다. 따라서 블록체인에서는 개인키 분실 문제를 해결하기 위해 생체 인증, 비밀키 복구 방법 등 개인키 분실 문제를 해결하기 위해 다양한 연구를 진행하고 있다. 본 논문에서는 비밀 공유 기법과 GAN을 사용하여 개인키를 공유하는 방법을 제안한다. 비밀 공유란 비밀키를 분산하여 n명의 사람들이 나누어 가지고 있으며, 이 중 k명 이상이 모여 각자의 비밀키 조각으로 본래의 비밀키를 알 수 있는 것이다. 샤미르 비밀 공유에 대한 자세한 내용은 블록체인 파트의 Sharmir’s Secret Sharing (SSS): Triple S에 숨겨진 암호학 살펴보기 포스트에 잘 설명되어 있다.

GAN(Generative Adversarial Network)

GAN네트워크는 생성 알고리즘(generator)과 판별 알고리즘(discriminator)이 서로 적대적 관계로 구성되어 생성 알고리즘은 실제 데이터와 유사한 데이터를 만들어 판별 알고리즘을 속이고, 판별 알고리즘은 생성 알고리즘으로부터 받은 데이터가 가짜로 인식되도록 한다. 두 네트워크가 데이터를 생성하고 판별하는 과정을 반복하여 진짜 같은 가짜 데이터를 만드는 것이 목표이다. 판별 알고리즘에서는 데이터의 진위여부를 0~1사이로 변환하여 표시한다. 입력 데이터가 실제 데이터와 일치할 경우 1을 반환하고, 입력 데이터가 실제 데이터와 다를 경우 0을 반환한다.

위 수식 1은 GAN을 Minimax 문제로 정의한 것이다. x는 실제 데이터를 의미하며, 실제 데이터를 넣을 때 판별기는 1에 가까운 결과를, z는 생성 알고리즘이 만든 데이터를 의미하며 이 때 판별 알고리즘은 0에 가까운 결과를 출력한다. 따라서 위 수식에서 ①은 실제 데이터를 입력하는 경우로 판별 알고리즘은 1을 반환하고, log함수에 의해 최종적으로 0이 된다. ②에서는 생성기가 생성한 데이터로 판별 알고리즘에서는 0을 반환하고, (1–0)으로 log함수에 의해 결과적으로 0이 되어 판별 알고리즘의 입장에서는 max값을 가진다.

그림 1. 개인키 공유를 위한 GAN 네트워크 구조

그림 1은 본 논문에서 제안하는 GAN 네트워크 구조를 간단하게 표현한 그림이다. Noise 데이터를 생성 알고리즘에 입력값으로 넣어 샘플 데이터를 생성하고, 생성된 샘플 데이터와 실제 데이터를 판별 알고리즘을 통해 진짜 데이터인지 가짜 데이터인지 판별한다.

Generative Adversarial Secret Key Sharing Network 구조

그림 2. Generative adversarial secret key sharing network

본 논문에서 제안하는 GAN 네트워크 구조는 그림 2와 같다. x_i는 white noise이며, y’_i는 생성 알고리즘에 의해 생성된 이미지, y_i는 원본 이미지의 조각이다. 생성 알고리즘에 의해 생성된 이미지와 원본 이미지를 판별 알고리즘의 입력데이터로 넣어 학습시킨다.

그림 3. Generator network

그림 3은 generator network의 구조를 나타낸다. n은 참가자 수 이며, k는 임계치로 k개 이상의 조각이 모여야 비밀키 이미지를 복구할 수 있다. Input layer는 참가자 수 n개로 구성되며 hidden layer는 k개로 구성된다.

그림 4. Discriminator network

그림 4는 discriminator network의 구조를 나타낸다. 총 5개 계층의 CNN(convolutional network) 으로, 각 계층은 64*64*3, 32*32*128, 16*16*256, 8*8*512, 4*4*1024로 구성되어 있다. 각 계층의 필터 크기는 2*2이다.

비밀(이미지) 공유와 복구 알고리즘

본 파트에서는 위 파트에서 소개한 GAN 네트워크를 사용한 비밀공유 알고리즘과 복구 알고리즘을 소개한다. 본 논문에서는 개인키를 이미지로 만든 후 이미지를 조각내고 학습시킨 후 입력데이터(noise)와 가중 벡터를 참가자들에게 나눠주고, 참가자들은 입력 데이터와 가중벡터를 임계치 k개 이상을 모아 복구할 수 있다.

그림 5. GAN 네트워크를 활용한 공유 알고리즘

그림 5는 본 논문에서 제안하는 공유 알고리즘을 나타낸다. 먼저 Algorithm 1은 생성기와 판별기를 통해 공유하는 알고리즘이다. 입력 데이터는 Y로 원본 이미지이다. 원본 이미지를 임계값 k개로 분할하여 DNA 인코딩을 진행한다. 그리고 인코딩 된 y_i값과 noise z로 GAN network를 학습시킨다. 학습이 완료된 후 S_i 를 참가자들에게 공유한다. S_i는 x_i와 가중벡터 w_ij로 구성되어 있다.

그림 6. 이미지 분할 방법

원본 이미지를 조각내는 방법은 그림 6과 같다. 영역 기반 분할 방법을 사용하며 y_i와 y_j는 서로 겹치지 않게 분할된다. 그림 (a)는 1회 분할한 경우, (b)는 2회, (c)는 3회 분할한 경우를 나타낸다.

그림 7. GAN 네트워크를 활용한 복구 알고리즘

그림 7은 GAN 네트워크를 활용한 복구 알고리즘이다. Algorithm 2는 S_i를 가지고 있는 참가자들이 원본 이미지를 복구하는 알고리즘이다. 입력데이터는 S_i이며, Algorithm 1에서 학습이 완료된 GAN 네트워크에 최소 k개의 S_i로 y’_i~k를 생성하고 DNA 디코딩을 진행한다. 이미 학습된 GAN네트워크에 noise x_i와 가중벡터 w_ij로 원본 이미지와 비슷한 Y’를 생성하여 원래 이미지를 복구할 수 있다.

Y : 원본 이미지
Y’ : 생성된 이미지
y_i : 원본 이미지 Y 조각
y’_i : 생성된 이미지 Y’ 조각
x_i : white noise
w_ij : 가중벡터
k : 이미지 복구를 위한 임계치
n : 참가자 수

실험 결과

본 논문에서 제안한 방법을 통해 실제로 이미지가 잘 복원되는지 실험을 진행하였다. 실험은 Intel Core i7 6700HQ, 4-core, 8GB 램, Ubuntu 16 환경에서 진행된다. 또한 (k, n)을 (3, 4)로 설정하였다.

네트워크 학습 환경은 epoch 500, Adam 0.5, batch size는 20, learning rate는 0.0001로 설정하고 진행하였다.

그림 8. 서브 이미지 생성 결과

그림 8은 위에서 소개한 알고리즘으로 이미지를 분할한 결과이다. (a), (f), (k), (p)는 실제 원본 이미지이며 원본 이미지 옆 4개의 이미지는Algorithm 1에따라 원본 이미지를 분할하여 GAN 네트워크를 학습시킨 후 x_i와 w_ij를 하나씩 학습된 네트워크에 넣어 이미지를 생성한 결과이다. 그림 8의 결과로 하나의 S_i로 원본 이미지(비밀키)를 복구할 수 없으며 원본 이미지를 조각내어 받은 S_i로는 원본 이미지를 유추할 수 없다는 것을 확인할 수 있다.

그림 9. 복원 결과

그림 9는 이미 학습된 GAN에 S_i로 이미지를 복원한 결과이다. n을 4로 k를 3으로 설정하고 실험을 진행했다는 것을 기억하자. (a), (e), (i), (m)은 원본 이미지이며 각 원본이미지 옆 이미지는 복원에 사용한 S_i의 개수에 따른 결과이다. 아무 정보도 보이지 않는 (b), (f), (j), (m)은 S_i 2개((S_2, S_4)로 이미지를 복원한 결과이며 (c), (g), (k), (o)는 3개의 S_i(S_1, S_2, S_4)로 이미지를 복원한 결과이다. 임계값 k가 3으로 3개의 S_i로 복원하는 경우 원본 이미지가 생성되어야 한다. 실험 결과 약간의 noise는 있지만 원본 이미지나 글자를 알아보는데 전혀 문제가 없음을 확인할 수 있다. (d), (h), (l), (p)는 4개의 S_i 즉 모든 S_i를 사용하여 이미지를 생성한 결과이다. 3개의 S_i로 이미지를 생성한 결과보다 선명하게 생성된 이미지를 확인할 수 있다. 본 실험을 통해 S_i가 임계치 k의 개수보다 적은 경우 원본 이미지를 복구할 수 없으며, 임계치 k개 이상의 S_i가 모일 경우에만 이미지가 복원되며 논문에서 제안한 방법으로 비밀공유가 가능하다는 것을 확인할 수 있다.

표 1. 다른 메소드와 엔트로피 비교

위 표1은 이미지 엔트로피를 나타낸 결과이다. 이미지 엔트로피란 이미지의 불확실성을 나타내며 8에 가까운 값일수록 이미지가 랜덤하다고 할 수 있다. 본 논문에서 제시한 방법은 다른 방법들 보다 8에 가까운 결과가 나왔으며 이는 생성된 이미지로 원본 이미지를 추측하기 힘들다는 의미가 된다.

표 2. PNSR 비교

위 표 2는 복원을 위해 생성된 이미지의 PSNR을 나타낸다. PSNR이란 최대 신호 대 잡음비로 주로 영상이나 이미지의 화질 손실 정보를 평가한다. 본 논문에서 제안한 알고리즘이 다른 알고리즘 보다 수치가 높은 것을 확인할 수 있다. PSNR은 수치가 높을수록 손실이 적은, 좋은 화질이라고 평가한다. 따라서 본 논문에서 제안한 알고리즘이 다른 연구에 비해 성능이 좋다고 할 수 있다.

결론

본 논문에서는 GAN네트워크를 이미지 조각을 사용하여 학습시킨 후 noise값과 가중벡터를 시용자들에게 나눠준 후 임계값 만큼의 데이터가 모이면 원본 이미지를 생성할 수 있는 알고리즘을 제안했다. 제안한 알고리즘으로 실험 한 결과 임계치 만큼의 데이터가 있어야 원본 이미지를 복구할 수 있으며, 임계치 보다 적은 데이터로 복구를 시도 할 경우 원본은 알 수 없는 데이터로 생성되어 비밀공유의 조건을 만족하는 결과를 보였다. 본 논문을 보면서 텍스트로 이루어진 데이터를 이미지로 변환하여 접근했다는 점과 GAN 네트워크를 새로운 이미지 생성이 아닌 이미지 복원의 수단으로 사용했다는 점이 신선했다. 하지만 학습된 네트워크를 실수로 삭제하거나 분실하는 경우 개인키를 복구할 수 없기 때문에 키 복구를 위해 학습된 네트워크도 잘 관리해야한다는 단점이 있다.

REFERENCE

[1] https://ieeexplore.ieee.org/document/8966602
[2] https://arxiv.org/pdf/1406.2661.pdf

--

--