논문리뷰 :
기존의 연구자들은 인공신경망이 암호학 분야에는 별로 적합하지 못할 것으로 여겨왔습니다. 그런데 이번에 구글의 Brain 팀에서 인공지능 기반의 암호화 알고리즘을 개발하였다는 소식을 "Learning to Protect Communications with Adversarial Neural Cryptography"라는 논문을 통해 발표하였습니다. 해당 논문을 간단히 요약하고, 리뷰하도록 하겠습니다.
암호학 분야에서 주로 사용하는 Alice, Bob은 통상적으로 안전한 커뮤니케이션을 주고받는 주체들로 표현됩니다. 그리고 이 사이에서 악의적인 의도를 가지고 메시지를 도청(eavesdropping)한 후 그 내용을 해독(Cracking)하는 일종의 공격자로써 Eve로 지칭합니다. 본 논문에서는 먼저 위에서 언급한 Alice, Bob, Eve를 각각 하나의 인공 신경망(Neural network)로 구현하였습니다.
Alice와 Bob은 통신을 수행하기 전에 사전 공유키(pre-shared secret key)를 가지고 시작합니다. 암호학에서는 이러한 경우를 대칭(Symmetric)키 암호화라고 부릅니다. (본 논문에서는 암호화는 우선 대칭키 암호화에 대해서 집중적으로 다룹니다.) 그리고 각각의 대상은 다음과 같은 목적을 가집니다.
- Alice : 엘리스는 자신의 평문(P)을 암호화 키(K)를 사용하여 다른 사람이 알아볼 수 없게 암호화한 C값을 전송한다.
- Bob : 밥은 전송받은 암호화문(C)를 사전에 부여받은 키(K)를 사용하여 복호화함으로써 평문을 얻어낸다.
- Eve : 이브 또한 암호문(C)를 얻을 수 있다. 그러나 이것을 해독하기 위한 키를 가지고 있지않으므로 추측해야한다.
여기에서 중요한 점은, 각각의 AI들은 '암호화'에 대한 개념에 대한 사전지식이 없으며, 각종 암호 알고리즘이나 기존 기술을 사용하지 않는다는 것입니다. 이들은 현재 머신러닝 분야에서 각광받고 있는 뉴럴 네트워크 방식을 사용합니다. 딥러닝에서는 손실함수(Loss Function) 또는 비용함수(Cost Function)이라고 부르는 개념을 씁니다. 관련 내용을 다른 블로그에서 인용합니다. (출처 : http://sanghyukchun.github.io/61/ )
우리가 목표로 하는 가장 좋은 결과와 지금 내가 선택한 결과와의 차이. 즉, 내 결과가 optimal한 결과보다 좋지 않으면 않을수록 cost function은 커지고, 당연히 optimal한 결과를 가지게 됐을 때 Cost function의 값이 가장 작아진다.
즉, 비용을 최소화하는 값 = 최적의 값으로 목표를 설정하고, 이를 만족시키는 값을 찾기위해 학습을 수행하는 과정을 거칩니다. 그렇다면 앨리스와 밥, 이브의 목표는 다음과 같이 설정할 수 있습니다.
- 이브 : 앨리스가 실제로 의도했던 원문(Plain text)와, 이브가 추측해서 해독한 결과물을 비교해서 몇 bit나 차이나는지 확인한다.
- 밥 : 앨리스가 전송한 암호문 C와 키K를 사용하여 원문을 복원해내는 것을 시도한다. 마찬가지로 정답과 몇 bit가 차이인지 확인.
- 앨리스 : 이브의 해독능력이 기준치 이상으로 높아지지 않도록 암호화강도를 조절함.
참고적으로, 암호학에서 생각하는 암호강도 측정에 대한 사전조건이 꽤나 까다롭기 때문에, 머신러닝의 학습방향을 모델링할 때 꽤나 고심한 것으로 보입니다. 논문에는 그들이 여러가지 변화요인들을 어떻게 통제하였으며, 어떠한 조건을 가정하였는지 상세히 기술되어 있습니다. (예를들어, 암호문의 무작위성(look random)은 고려하지 않았음. 앨리스와 밥은 암/복호화 방법을 공유해야 하므로 학습시 분리하지 않고 jointly learning 하였음.) 어쨌든 이러한 결과를 거쳐서 GANs( Generative Adversarial Networks)를 만들어냈습니다.
이제 Alice, Bob, Eve는 각각 독립적으로 자신을 초기화하고, 앨리스와 밥 사이에만 사전공유키가 부여됩니다. 이후 앨리스는 심층신경망의 첫번째 Layer에 P와 K를 입력합니다. 밥은 암호문 C와 K를 입력합니다. 이브는 단지 암호문만을 입력합니다. 이렇게 주입된 input은 수많은 convolutional layer들을 거치며 학습을 수행합니다. 심층신경망은 Accuracy를 높이는, 즉 비용함수를 최소화하는 목표에 조금 더 가까워지는 쪽으로 신경망을 학습시켜갑니다. 앨리스는 자신이 입력한 평문이 암호화되기를 바라는 것이고, 밥과 이브는 그 암호문을 원래의 평문으로 되돌리는 것을 목표로하는 것이며 그 결정적인 차이는 Key값을 아느냐, 모르느냐에 달려있어야 합니다. 그것이 이들이 실험목표로 세운 가설(Hypothesis)입니다. 그 결과는 다음과 같습니다.
위의 그래프는 Bob과 Eve가 각각 암호 복호화와 해독을 시도한 것에 대한 오류율을 보여줍니다. bit는 이진법(0 or 1)이므로 찍어서 맞출 확률은 50%겠죠? 위의 그래프는 16bit중 몇 bit를 틀렸는지를 보여주므로 8bit수준이라는 것은 찍어서 맞출확률 정도라는 것입니다. 처음에는 밥이나 이브 모두 상당히 좋지않은 상태로 시작합니다. 여기서 이브는 K값을 모르기 때문에, 사실상 찍어서 맞추는(Random Guessing)것과 다름 없습니다. 하지만 밥은 K를 알고있기 때문에 밥의 오차율을 낮게 만드는 것이 이 실험을 성공시킬 목적입니다. 위의 빨간색 선을 보면, 밥은 점차 자신의 정확도를 높혀가고 있고, 이브는 일정 수준 좋아지는 듯했다가 이내 한계를 맞이합니다. 이는 앨리스가 이브의 성공률은 떨어뜨리되 밥과의 성공률은 높이는 방향으로 학습이 계속 진행되기 때문입니다.
머신러닝이 원래 그렇듯이, 이 과정을 거칠때 내부에서 정확히 어떤일이 벌어지는지 알 수 없습니다. 단지 input에 대한 output의 정확도(Accuracy)를 높히는 방향으로 인공지능이 스스로 고안해낸 암호화 방법입니다. 논문 저자들 역시 이것이 정확히 어떤 방법으로 작동하는지 알지 못한다고 합니다. 그들이 확인한 몇가지 사실은 다음과 같습니다.
분명 Key 와 관련이 있다. 만약 평문을 그대로 유지한 채 키만 변경해보면 암호문 또한 적절히 바뀐다. 마찬가지로, Plain Text에도 dependent하다. 하지만, 단순히 배타적 논리합(Exclusive-OR)연산을 수행하는 것은 아니다. 왜냐하면 결과값이 단순히 0과 1로 모델링된 것이 아니라 부동소수점(Floating point) 형식으로 디자인되어있기 때문이다. 뿐만 아니라, 단 하나의 bit를 변경해도 결과물에 전체적으로 혼돈과 확산되는 효과가 있다.
(*이는 암호 알고리즘에 요구되는 성질임)
결론적으로, 논문 저자들은 이 실험에서 별다른 기존의 암호화 시스템이나 알고리즘을 사용하지 않고, 단지 인공신경망을 사용하여 상호간에 안전하게 메시지를 전달할 수 있음을 보였습니다. 결과적으로 보았을 때 메시지의 기밀성(confidentiality)를 지키는데 성공한 것입니다. 하지만 본 연구를 역으로 적용한다면, 기밀성을 지키는 측면이 아니라 공격자의 측면에서 해독정확도를 더욱 높이는 방식으로도 동일하게 사용할 수 있을지도 모릅니다. 인공지능이 해커의 편에 선다면, 막강한 적수가 되겠죠? 저자들은 만약 Attacker 모델을 강화학습(Reinforcement Learning)으로 구현한다면 사뭇 다른 결과물이 나올 것으로 예측하고 있습니다.
또한, 논문의 부록(Appendix)에는 비슷한 방법을 사용하여 비대칭키 암호화(Assymetric Encryption)을 수행하는 설계가 수록되어 있습니다. 이들은 향후에 스테가노그라피 방면으로도 연구를 수행할 것이라고 밝혔습니다. 뿐만 아니라 암호학의 난제로 여겨지는 의사난수 생성(Pseudo random number Generation)이나, 무결성 증명 쪽으로도 연구를 수행하고자 합니다.
개인적인 첨언 :
개인적으로 암호학과 머신러닝 분야에 모두 관심이 있던터라 언젠가 이런 연구가 나오겠지 했는데, 역시 Google Brain팀이 해냈다. 그런데 조금 꼼꼼하게 논문을 읽다보니, 역시나 아직 완벽한 결과가 나온 것은 아니지 싶다.
우선 이 논문에서 정확도를 산정한 방식은 상당히 제한적이다. 또한 Alice와 Bob이 인공지능(AI)인 것과 마찬가지로 공격자도 인공지능이라고 가정하였기 때문에, 공격자의 능력이 어느정도인지 가늠이 되지 않는다. 어쩌면 인공지능이 암호화한 내용을 사람이 더 쉽게 풀수 있을지도 모르는데 말이다. 그 부분에 대해서는 본 논문의 실험결과만 가지고서는 파악하기가 어려운 맹점이다.
또한, 결정적인 의문점은 어떻게 암호화가 진행되는지를 분석하지 못하는 상황에 있다. 이는 대부분의 딥 뉴럴 네트워크가 내부에서 어떻게 일을 처리하는지 그 과정을 확인하기 어려우므로 발생한 것인데, 사실 머신러닝 분야에서는 자연스러운 이야기이다. 하지만 암호학자들은 분명 의아해할 것이다. 왜냐하면 암호학의 근간을 이루는 일명 Kerckhoffs의 원리와 상반되기 때문이다. 통상적으로 암호체계의 안전성은 암호화 알고리즘이 공개된 상태에서 키의 비밀성에만 의존하도록 하는 것이 그동안의 평가방법이므로, 본 논문과 같은 변칙성(?) 방법에 대해서 논란의 여지가 있을듯하다. 어쨌거나 머신러닝에서는 Accuracy만 높으면 장땡이므로.. 모종의 성과를 이룬것임에는 틀림없다. 이들의 다음 연구도 기대된다.
참고문헌 :
Abadi, Martín, and David G. Andersen. "Learning to Protect Communications with Adversarial Neural Cryptography." arXiv preprint arXiv:1610.06918 (2016). |
http://arstechnica.co.uk/information-technology/2016/10/google-ai-neural-network-cryptography/
https://www.newscientist.com/article/2110522-googles-neural-networks-invent-their-own-encryption/
CPUU님의 창작활동을 응원하고 싶으세요?