“뭐? 디피-헬먼 성이 무너진다고?”
별 뜻 없이 가벼운 기사 한 줄이지만 그 내용에 해당하는 업계에는 청천벽력 같을 때가 있다. 대개 외국 기사 번역한 기사인데, 깜짝 놀라 원문 찾아 짧은 영어로 열심히 번역해 보면 이런, 완전 다른 내용이다. 그저 기자, 아니 번역자가 보다 성실해 주길 바랄 따름,,
“암호 알고리즘 ‘디피-헬먼’을 깰 수 있는 백도어 개발”이란 기사가 떴다. 이게 만약 사실이라면 보안 업계 전체에 엄청난 충격이다. 지진 나서 원전 터진 바닷가에 서서 쓰나미 밀려오는 걸 바라보는 공포와 마찬가지. 기사 내용을 보자.
“펜실베니아 대학 보안연구원들이 3천 개의 CPU와 2개월 간의 연구 끝에 마침내 디피-헬먼 (Diffie-Hellman) 알고리즘을 깰 수 있는 백도어를 찾아냈다. 이전에는 큰 소수를 사용하기 때문에 뚫리지 않는다고 생각했지만 연구원들은 특별한 소수를 찾아냈다. 1,024bit 키에 탐지될 수 없는 백도어를 삽입함으로써 해커들은 암호화된 통신으로 전송되는 메시지를 복호화할 수 있게 된 것이다.”
일단, 이게 무슨 말인지, 어렵다,, 그러니 “디피-헬먼 알고리즘”이 뭔지부터 알아보자.
디피-헬먼 키 교환 (Diffie-Hellman key exchange)
‘디피-헬먼 키 교환’이란 암호 키를 교환하는 방법이다. 암호화되어 있지 않아서 노출 위험이 있는 통신망에서도 두 사람이 공통의 비밀 키를 공유할 수 있게끔 만들어진 암호학적 통신 방법으로서, “이산대수(Discrete logarithm)를 계산하는 일은 어렵다(Computationally infeasible)”는 사실에 기반한 방법이다.
역시, 말이 좀 어렵다,, 보다 간단히 예를 통해 알아보자.
갑과 을이 공개된 통신망에서 비밀 대화를 하려고 한다. 그런데 병이 중간에서 몰래 둘 사이를 오가는 메시지를 빼돌려 훔쳐보고 있다고 치자.
그럼 갑과 을은 어떻게 해야 비밀을 유지할 수 있을까?
갑이 소수 P, 그리고 정수 G를 선택해 을에게 보낸다. 병도 본다.
갑은 정수 a를 선택한다. 이건 갑만 알고 을도 모르고 병도 모른다.
을도 정수 b를 선택한다. 이건 을만 알고 갑도 모르고 병도 모른다.
갑은 일정한 값(G의 a승을 P로 나눈 나머지) A를 계산한다.
을도 일정한 값(G의 b승을 P로 나눈 나머지) B를 계산한다.
갑과 을은 A과 B를 서로에게 전송한다. 병도 값을 볼 수는 있다.
갑은 B를 받아 값(B의 a승을 P로 나눈 나머지)을 계산한다.
을도 A를 받아 값(A의 b승을 P로 나눈 나머지)을 계산한다.
갑이 계산한 값과 을이 계산한 값은 수학적으로 일치하고, 이게 암호 키다.
갑과 을은 공통의 암호 키를 가졌지만, 병이 얻은 정보로는 키를 알 수 없다.
뭔 소린가,, 기술자가 아니라면 이걸 굳이 이해할 필요는 없을 듯싶다. 뜻만 알면 간단하니, 같은 내용을 그림을 통해 보자. 물감을 섞어 비밀 물감을 만드는 방법이다.
역시 애매하다 싶지만,, 어쨌든 이것이 ‘디피-헬먼’이라는 공개된 통신망에서 비밀대화를 하기 위한 방법이다. 가장 중요한 것은 계산이 어려운 이산대수, 즉 소수 P와 정수 G를 적절하게 골라야 도청에 대해 안전한데, 현재 “충분히 안전하다”고 판단되는 값의 기준이 1,024bit인 것이다.
그런데 그게 깨진다고? 그게 깨지면 보안이고 뭐고 싹 다 사라지는 건데? 위 기사의 원문을 살펴보자. 내용을 간단히 요약하면,
“특별한 형태의 소수를 만들면, 이산대수 문제가 쪼끔 쉬워진다.”
그럼 그렇지 역시나, 아무 일도 일어나지 않은 것은 아니지만 그렇다고 뭐 그리 엄청난 일이 일어난 것도 아니다.
기사의 연구팀은 2015년에 논문을 썼다. 논문의 핵심은, 특별한 형태의 소수(prime number)를 만들기만 하면 이산대수 문제가 “조금 더 쉬워진다”는 내용이었다. 당시엔 1,024bit 크기의 특별한 소수를 생성하는 실험은 하지 못하고 그저 추정만 했다. 그러다가 위 기사에 나오듯 3천 개의 CPU를 동원해 그러한 소수를 만드는데 성공한 것.
연구팀이 지적하는 바 방향도 다르다. 연구팀은 디피-헬먼 방법론을 사용할 때 표준(대개 NIST나 NSA가 정하는 표준)으로 정해져 있는 소수를 사용하게 되는데, 그 소수들이 앞서 말한 특별한 형태의 소수인지 아닌지 누가 알겠냐? 믿을 수 있나?
의문이다. 그러니 원문 기사 제목도 알고리즘이 아닌 NSA를 의심하는 듯한 거대음모론 뉘앙스다.
그럼 문제의 특별한 형태의 소수를 사용하면 어떻게 되는가? 이산대수 문제가 10,000배쯤 쉬워진다. 10,000배라니, 어마어마하다. 그러나, 10,000을 2^14 정도와 어림하면, 1,024bit의 이산대수 문제가 (1024 – 14) bit의 이산대수 문제 정도로 쉬워지는 거라, 결국 아주 약간 쉬워지는 것. 그러나,
어쨌든 쉬워지긴 쉬워지는 거니까 아니라고 우길 수는 없다. 위험은 위험이니 대책은 있어야 한다. 그럼 대책은 뭔가?
어이없게도,, 1,024bit 안 쓰고 2,048bit 쓰면 된다. 그럼 제아무리 특별한 형태의 소수를 총동원한다더라도 이산대수 문제는 충분하고도 남아 철철 넘칠 만치 어려워지니까 아무 문제 없다.
‘실용주의 암호화’의 필요
그런데, 도대체 왜 이런 사실과 다른 허황된 기사가 자꾸 뜨는 걸까. 우선, 정보보안에 대한 삽화적 이해가 해롭다. 삽화적 이해란, 질병이 있으니 치료제가 있다, 성이 있으니 성벽을 기어오른다 식으로 공격과 방어 상황이 마치 한 장의 그림처럼 그려지는 직관적인 이해를 말함이다. 덕분에 호황 누리는 제품들도 있지만,, 진짜로 유의미한 정보보안 기술은 그런 삽화적 이해보다 훨씬 더 어렵고 복잡하다.
그럼 그런 단순한 삽화적 이해의 까닭은 뭘까. 너무 어렵고 복잡하기 때문이다. 정보보안 기술, 특히 정보보안의 핵심인 암호화와 관련된 지식을 배우는 것은 매우 어렵다. 활자화된 지식 체계도 제대로 갖춰져 있지 않아서 여러 권의 책을 동시에 읽어야만 핵심 원리를 겨우 이해할 수 있다. 게다가 대부분의 책이 매우 두껍고 현장에서는 쓸 일이 없는 쓸데없는 이야기도 너무 많이 들어 있다. 그러니 여기저기 흩어져 있는 지식을 유기적으로 연결하는 일을 독자가 직접 해야만 하는데 이는 아주 어려운 일이다. 하지만 기술을 제대로 이해하기 위해서는 그 높은 진입 장벽을 넘을 수밖에 없다. 그러다 보니 제대로 된 기술자의 수도 적다.
그러나, 달리 생각해 보자. 암호 기술 자체를 원론적으로 이해하는 것과 실제 기업 현장에서의 충분한 보안을 위해 암호 기술을 이해하는 것은 전혀 다른 차원의 문제다. 다시 말해, IT 보안에 대한 통찰을 얻기 위해서는 컴퓨팅(Computing)과 네트워킹(Networking) 지식 위에 보안 지식을 쌓아야 한다. 컴퓨팅과 네트워킹이라는 주제에 완전히 통달하는 것은 매우 어려운 일이지만, 충분한 보안성을 달성하기 위한 수준에서 컴퓨팅과 네트워킹의 원리를 이해하는 것은 상대적으로 쉬운 일일 것이다.
마찬가지로, 암호 기술 자체는 어렵지만 안전한 시스템을 만들기 위해 암호 기술을 어떻게 활용할 것인지를 배우는 일은 그리 어렵지 않다. 그리고 기업 현장에서는 그 정도 수준의 이해로도 충분하다. 결국 노리는 바 목적은 암호 제작이 아닌 ‘보안’이기 때문이다. 실용적으로 암호 기술을 이해하려는 목적은 안전한 시스템을 설계하고 구현하기 위함이지 완전히 새로운 암호 알고리즘을 만드는 일이 아니다.
이를 기존 학술적 암호화 이론과 비교하기 위해 ‘실용주의 암호화’라 칭하겠다. 실용주의 암호화가 절실하다. 안전한 시스템 설계 및 구현에 있어 가장 중요한 기술이기 때문이다.
그게 안 되니, 이런 겉핥기 기사가 사람을 놀래키고 그런다. 이걸 굳이 삽화적으로 그려 보자면, 성이 있으니 성벽을 기어오르는데 이 사다리를 쓰면 아주 약간 성공 가능성이 높아진다?
그럼 적을 막기 위해 막 싸움을 벌여야 하는 게 아니라 멀찌감치서 ‘성벽 높이 2배’ 버튼만 누르면 된다는 소리다. 즉, 1,024bit 안 쓰고 2,048bit 쓰면 된다.
괜히 깜짝 놀랐네. -_-