Encryption 함수 Enc와 Decryption 함수 Dec을 갖는 Symmetric Cipher Model을 상정한다. SCM = [Enc, Dec]
Secret Key K를 통해 message M을 암호화 하면 ciphertext C를 얻을 수 있다. Enc(M, K) = C
Secret Key K를 안다면, C를 decode해 Message를 다시 복원할 수 있다. Dec(C, K) = M
공격자가 Ciphertext C를 Brute-Force 한 방식으로 decode해가며 Key와 Message를 알아내려 한다고 가정하자.
Key가 현실의 Password 같은 Low-Entropy Distribution(일반적으로 Password를 Uniform Random하게 추출하지 않는다)에서 나왔다면, 가능하다고 생각되는 Key들을 모두 시도해 Message의 후보군을 구성할 수 있다.
이 때, Message가 어떤 분포를 따른다면(특징이 있다면), 분포를 벗어나는 대부분의 경우를 제외하고, Plausible한 Message를 후보군에서 뽑아내기 쉬울 것이다.
ex) ASCII로 인코딩(8bit를 사용하는 ASCII)된 16자리의 신용카드번호의 예시를 보자. 각 자리는 0~9의 digit이 나와야 하므로 의 비율로 숫자로 구성된 Message가 된다. 또한 신용카드 번호는 Validation 규칙이 있으므로 그 중에서도 Valid한 후보는 더 적어져, Attacker가 공격에 성공할 확률이 높아진다.
위와 같은 한계점을 극복하고자, Decrypt해서 얻어낸 Message의 후보들이 모두 '그럴싸'하도록 하는 Framework를 똑똑하신 선생님들께서 만드셨고 이를 Honey Encryption(이하 HE)이라고 한다.
Honey Encryption의 Honey는 Invalid한 Key로도 만들어지는 Valid한 Message들을 비유하며 사용되었다. 공격자는 달콤한 꿀을 바른 Fake Message에 속게 되는 것이다.
이 재미있는 Framework가 어떻게 만들어지는지, paper를 읽고 노력해서(...) 읽고 이해한 바를 적어보았다.
앞에서 언급했듯, DTE는 Message의 분포 을 모사해야 한다. 그래야 공격자가 brute-force를 통해 얻은 다양한 Message 후보들(다양한 Seed를 DTE에 넣어서 얻은 Message들)을 보고도 무엇이 진짜인지 알 수가 없기 때문이다. DTE는 과 비슷한 를 구성하기 위해,
예시를 만들어 다시 풀어보자면
M = {A, B, C}이고, P(A) = 0.25, P(B) = 0.5, P(C) = 0.25라고 하자. 2 bit Seed를 사용한다면, S = {00, 01, 10, 11}이 된다. 확률의 크기에 비례해서 Seed를 할당하면, A는 00, B는 01, 10, C는 11을 할당받을 것이다. B의 경우는 Seed가 01이 될 수도 10이 될 수도 있다.
위 논문들에서 다루었듯, RSA Scheme이나 신용카드 등 다양한 영역에서 활용이 가능하다. Password에 기반한 Encryption System의 단점을 보완하기 위해 나온 만큼 확장성이 좋다. 사람이 주고받는 Text Message까지 활용 가능성이 있다.
대표적인 Challenge로는 Text Message에 HE를 적용했을 때, Grammar가 맞는 Honey들이 많게끔 하는 것은 가능했으나, Context 정보에 있어서는 정확하지 않은 문장들이 많아 복잡도를 줄였다.
결국 핵심은 각 Scheme 별로 Specific하게 DTE를 Design해야 한다는 것이고, DTE를 Design하기 위해서는 Message의 분포에 대한 좋은 정보를 가지고 있어야 한다는 것이다.
기회가 된다면, 나도 주제를 잡아 간단히 구현해보면 좋지 않을까? 미래의 나의 의지력과 이번 학기 과제 및 공부들의 험난함에 Dependent하다.