‘종단간암호화’는 안전하지만 ‘패킷감청’은 두렵다?

종단간암호화

Column 009

카카오톡 관련 논란이 한창 뜨거웠다. 기사들이 막 쏟아졌다. 읽다 보면 기분이 아주 묘해진다. 개중에서도 가장 묘하다 싶은 기사 일부를 옮기면,

패킷 감청을 통해 메신저 메시지 실시간 감청이 가능하다. IP를 주소 삼아서 파일을 잘게 자른 형태의 데이터 조각들이 오가는데, 그 조각들을 하나로 모으면 파일이 완성되는 것이 패킷 감청의 원리다. 그렇게 추출한 데이터가 암호화 되어 있다면, 암호를 풀 암호키를 찾아내면 되는 것이다.
일반적으로 암호화는 RSA나 SHA 등 전세계 표준 알고리즘 형태를 취한다. 형식이 일정하기 때문에 해커들은 암호키를 생성해 침투하는 경우가 많다. 4자리 비밀번호 창에 0~9까지 마구잡이로 넣다 보면 우연히 비밀번호를 맞히게 되는 것과 같은 이치다. 사람이 일일이 작성해 넣는 것이 아니라 기계가 자동으로 맞히기 때문에 시간도 그리 오래 걸리지 않는다.”

카카오톡 사태 관련 후일담 기사의 일부다. 기사 작성자의 기분 문제를 고려해 원문을 그대로 옮기지는 않고 일부러 좀 바꿨지만 내용은 동일.
그냥 대충 쭉 읽으면 말이 되는 것 같다. 뭔가 아주 위험해 보인다. 하지만 아주 약간만 집중해 보면 이건, 말도 글도 아니다. 첫 문장부터,


“패킷 감청을 통해 메시지 실시간 감청이 가능하다.”

결론만 말하자면, 복호화를 거치지 않는 한 ‘패킷 감청을 통해 메신저 메시지 실시간 감청’은 불가능하다.
말이 길어지니까 아래 “1. 통신구간 암호화의 안전성”으로 따로 분리함.


“IP를 주소 삼아서 파일을 잘게 자른 형태의 데이터 조각들이 오가는데, 그 조각들을 하나로 모으면 파일이 완성되는 것이 패킷 감청의 원리다.”

패킷 감청의 원리라기보다는 그냥 패킷의 원리다.


“그렇게 추출한 데이터가 암호화 되어 있다면, 암호를 풀 암호키를 찾아내면 되는 것이다.”

말은 쉽다. 어떤 느낌이냐면, “세계의 왕이 되려면 세계를 정복하면 되는 것이다.”


“일반적으로 암호화는 RSA나 SHA 등 전세계 표준 알고리즘 형태를 취한다.”

틀린 말은 아니다. 단지 ‘전세계 표준 알고리즘’ 형태가 많고 다양해 상황에 따라 선택적으로 사용하므로 ‘RSA나 SHA 등’ 식으로 단순화할 문제가 아닐 뿐.


“형식이 일정하기 때문에 해커들은 암호키를 생성해 침투하는 경우가 많다.”

여기서부터 본격적으로 이상해진다. ‘암호화’와 ‘패스워드’를 헷갈리기 시작,,
어느 나라의 어느 해커가 암호화된 암호문을 복호화하기 위해 암호키를 생성해 침투(!)하는가? 게다가 그런 경우가 ‘많다’? 누군지 어디 한 번 데려와 보세요.


“4자리 비밀번호 창에 0~9까지 마구잡이로 넣다 보면 우연히 비밀번호를 맞히게 되는 것과 같은 이치다.”

맙소사, 진짜로 ‘암호화’와 ‘패스워드’를 헷갈린 것이었군,,


“사람이 일일이 작성해 넣는 것이 아니라 기계가 자동으로 맞히기 때문에 시간도 그리 오래 걸리지 않는다.”

‘암호화’와 ‘패스워드’의 혼동은 좀 한심해서 길게 말할 주제인가? 싶긴 하나

그래도 워낙 중요하고 또 뜻밖에 매우 흔한 오해이므로 아래 “2. ‘암호화’와 ‘패스워드’의 혼동”으로 따로 분리함

1. 통신구간 암호화의 안전성

대부분의 메신저는 기본적으로 통신구간 암호화를 적용한다. 속도와 효율 문제 때문에 메시지 암호화는 주로 AES 대칭키 방식을 쓰고, AES 대칭키 방식의 허점을 보완하기 위해 RSA와 디피-헬만(Diffie-Hellman) 방식을 각 클라이언트에 추가로 적용해 암호화 키를 분배한다. 분배한 대칭키는 세션이 유지되는 동안 사용하고, 접속 종료 후 재접속 시 다시 재생성되고 재분배된다.

요즘 한창 뜨거운 이름 ‘텔레그램’도 256bit AES 방식으로 패킷을 암호화하고, RSA 2048 그리고 디피-헬만 방식을 통해 암호화 키를 분배한다. 카카오톡 또한 물론 설계는 다르겠지만 아마도 텔레그램의 방식과 대동소이한, 암호 알고리즘 표준을 따르고 있을 것이다.

왜? 앞서 말했듯 대부분의 메신저는 기본적으로 통신구간 암호화를 적용하는데 그게 서로 별 차이 없이 거의 비슷한 방식, 세계적 표준에 준하는 방식이기 때문이다. 아니, 암호화 체계란 원래 표준을 따라야 하는 것이다. 안 따르는 게 이상한 일이다.

암호문

이 과정이 중간에 서버를 두지 않고 단말기에서 단말기로 직접 전송되는 것이 요즘 한창 요란한 ‘종단간 암호화(End-to-End Encryption)’ 방식이다.

텔레그램의 ‘비밀대화’가 그러하다. 중간에 서버를 두는 경우에도 통신구간에서는 암호문으로 이동하기 때문에, 통신 도중에 패킷을 탈취하더라도 그 메시지는 암호문이다.

간단히 말해, ‘패킷 감청’을 통해 패킷 탈취는 가능하다. 하지만 적절한 ‘통신구간 암호화’를 적용했다면 그게 무슨 내용인지는 알 수 없다.

적절한 암호화를 적용한다면 통신구간 상의 메시지 내용은 알 수 없다는 ‘합의’가 있다. 합의인 까닭은, 기술 발전에 따라 암호화는 언제든 깨질 수 있기 때문인데, 현재로서는 “양자컴퓨터 상용화 전까지는 현재 암호화 방식은 수학적으로 안전하다고 본다”는 전세계적 합의가 있는 것이다. 엄밀히 말하자면, 적절한 키 길이의 알고리즘을 사용하고, 키를 잘 보관하면 키 길이에 부합하는 기간만큼 안전하다는 합의다. 컴퓨팅 파워가 강해져 안전성을 위협하면 그만큼 키 길이를 늘여 보강하는 방식. 이를 부정한다면 통신 암호화 전반에 대한 대화가 애초에 불가능해진다. 아예 논쟁의 바탕이 사라지는 것이다.

요즘 자주 듣는 “종단간 암호화라서 안전하다”는 말도 위 ‘합의’에 따른다. 따라서 해당 문장은 “패킷 감청을 통해 메신저 메시지를 읽을 수 있다”는 문장과 서로 모순이라 나란히 병치될 수 없는데도, 심지어 한 페이지 내에서 같이 놓이는 경우가 흔하다. 예를 들어 “텔레그램은 종단간 암호화 방식이라서 안전하다. 하지만 카카오톡은 패킷 감청을 통해 해석이 가능하므로 위험하다.” 이것은 논리적으로 절대 성립하지 않는데도 아주 흔히 볼 수 있다. 볼 때마다 기분이 아주 묘하다,,

정리하자면, 적절한 암호화 과정를 거치는 통신이라면 패킷 감청에 대해 안전하다.

“암호 해독에 상금 2억원이나 걸었지만 풀어낸 사람이 없었다” 등 요즘 한창 회자되는 이야기는 사실 별 의미 없다. 그 정도의 안전성은 웬만한 상용 암호화 제품은 다들 갖추고 있으니 결국 흔한 마케팅 스토리일 뿐.

그리고 따지자면 상용 메신저 중에서 ‘쓰리마(Threema)’와 ‘시처(Sicher)’가 굳이 비밀대화가 아니더라도 모든 대화에서 종단간 암호화를 적용하니 가장 안전하다고 볼 수 있지만, 실은 그게 왜 그리 큰 문제인지 잘 모르겠다,,

잠깐 요즘 가장 뜨거운 주제를 대략 살펴보면,
암호문 2
암호문이 통신구간 중간에 서버를 통과하며 누구든 읽을 수 있는 평문으로 복호화되어 서버에 저장되고 다시 암호화되어 암호문 형태로 통신구간을 지나간다.
요즘 가장 핫한 이슈. 이 경우에도 통신구간에서는 안전하다. 서버에 저장된 평문의 유출이 문제일 뿐.
암호문3
사생활 보호에 집중해 설계한다면 결국 이런 방식을 취해야 할 것이다. 서버에는 평문이 아니라 암호문을 저장하고 암호화/복호화 키는 사용자에게 할당하는 방식.
사실 이게 논쟁의 핵심일 텐데 실제로 벌어지는 논쟁은 과녁을 살짝 빗나간 듯싶다.

2. ‘암호화’와 ‘패스워드’의 혼동

위 “기계가 자동으로 맞히기 때문에 시간도 그리 오래 걸리지 않는” 작업이란 결국 비밀번호 입력창에 임의의 문자열을 반복 입력해 패스워드를 알아내는 ‘브루트포스 어택, BruteForce Attack’의 자동화를 말하는 것. 카카오톡 논란과 아예 동떨어진 이야기이긴 하나 그래도 답하자면, 브루트포스 어택을 방지하기 위해 비밀번호 입력 횟수를 제한하는 임계치 적용이 일반화되고 있으므로 그리 걱정할 문제는 아니니 안심해도 좋다..고 답하는 친절함을.

도대체 왜! 전혀 다른 개념인 ‘암호화’와 ‘패스워드’를 헷갈리는 오해가 발생한 걸까? 단순히 생각해 보면 ‘password’를 흔히 ‘암호’라 번역하기 때문일 거 같은데, 거듭 말하는 바 이 오해 상당히 위험하다.

말하자면, “데이터베이스를 암호화한다”는 말이 “데이터베이스를 사용하기 위해서는 비밀번호를 입력해야 한다”는 말과 같은 뜻이라는 소리인데, 만약 정말 그렇다면 지식정보사회 같은 건, 없다.

위 통신구간 암호화의 안정성 문제로 다시 돌아가, 메신저 클라이언트 그리고 서버가 서로 통신하는 통신구간을 오가는 패킷은 ‘암호화’되어 있다. 그 패킷을 긁어 모아 ‘패스워드’를 입력한다고 해서 암호문이 평문이 되는 게 아니라는 뜻이다.

쓰다 보니, 사실 “가장 큰 위험”은 따로 있다. 모바일 메신저가 어떤 기술적 방식을 쓰든 말든 스마트폰 미러링 등 단말기 해킹에는 완전 속수무책인데, 매우 흔히 벌어지는 일이다. 그리 어려운 작업도 아니라, 요즘은 동네 심부름센터에서도 주로 치정문제로 돈 몇 푼 받고 단말기 해킹하다가 걸리는 사건도 속속 터지니 어쩌면 가장 위험한 구멍은 아예 다른 곳에 따로 뚫려 있는 게 현실이다. 그러니 어둠의 세계에서 암약하시는 분들은 어쩌면 ‘이미 잘해먹고 있는데 왜 긁어 부스럼을 만들어 공작을 어렵게 만드나?’ 불만일지도 모른다.

한창 뜨거운 보안 이슈들을 살펴보면 기술적 방식의 문제가 아닌 경우가 많다. 예컨대, (잠깐 요란했던) 지메일이 털렸다는 건 “안전하다길래 믿었던 HTTPS 방식마저 불안”한 게 아니라 “당신 PC가 홀라당 털렸다”고 보거나 “당신의 패스워드가 혹시 ‘123456’ 아닙니까?” 물어야 한다. (실제로 ‘123456’은 가장 흔한 패스워드 1위!) 그런데도 사회는 “지메일 시스템도 안전하지 않다”며 들끓으니 사실 좀 당황스럽다. 정보보안 제1책은 다름아닌 ‘패스워드 계몽’이라는 말이 괜히 나온 것이 아니다.

다시 암호화 주제로 돌아와 괜히 길다 싶은 글 짧게 정리하자면,

메신저 통신 암호화는 아주 기본적인 조치라서 ‘했다/안했다’가 중요한 게 아니라 ‘누가 키를 가지고 있느냐’가 중요하다. 종단간 암호화가 강조되는 까닭 또한 메신저 대화 참여자들만이 복호화 키를 가지고 있기 때문인 것. 그것이 한창 뜨거웠던 카카오톡 논쟁의 진짜 핵심이다.