믿는 도끼가 발등 찍는, SSL 암호화 통신

암호화

무지무지 위험하지만 “이거 혹시나 터지면 싹 다 한 방에 훅 간다!” 모두 다 알고 또 떠는 무시무시한 위험과 “이 험한 세상, 이것 하나만큼은 안전하겠지?” 믿어 의심치 않지만 실은 은근한 보이지 않는 위험, 둘 중 어떤 위험이 더 위험할까? 후자다. 어떤 위험이든 그 뇌관은 우리의 관심권 밖으로 벗어나 모두들 안심하는 순간, 딱! 불 붙는다.

대규모 통신보안 사고가 번거로울 정도로 하도 자주 일어나다 보니 그쪽에 관심이 집중된다. 따라서 통신보안 대책으로 제시되는 것들에 대한 관심 또한 높다. 지나치게! 개중 대표적인 것이 작년 한창 뜨거웠던 ‘종단간 암호화 (End-to-End Encryption)’ 그리고 ‘SSL (Secure Socket Layer)’ 암호화 통신이다. “이건 SSL이니까 안전해!” 란 말도 요즘 아주 흔히 듣곤 한다. 이런 처방들이 대개 그러하듯, 아주 틀린 말은 아니다. SSL은 애초에 전자상거래 등의 보안을 위해 개발된 것이기에 기본적인 안전성을 확실히 보장한다. 단, ‘전송계층(Transport Layer)’까지의 안전을 보장한다. 전송계층? 그게 뭔데?

어째 좀 싫더라도 ‘네트워크’에 대해 아주 약간만 알아보자. 왠지 어려워 보이지만 그렇게까지 어렵지는 않다. 일상적 상식 수준의 내용이니 알아 둬서 나쁠 것도 없다. 자, 네트워크란 무엇인가? 최대한 쉽고 간단하게..

일정한 전기 신호의 흐름 체계, 즉 네트워크는 논리적으로 7개의 계층으로 이루어진다. 그중에서 정보보안 측면으로 볼 때 가장 중요한 레이어는 주고 받은 패킷 신호를 데이터 형태로 서로 변환하는 일을 맡는 4계층 ‘Transport’ 레이어, 그리고 사용자로부터 데이터를 입력 받고 또 출력함으로써 응용 서비스를 제공하는 7계층 ‘Application’ 레이어다.

일반적인 네트워크 보안장비들, 그림에 나오듯 IPS나 IDS(가 뭔데? 이런 건 그냥 대충 넘어가도 된다.) 그리고 방화벽 등은 주로 4계층 ‘Transport’ 레이어에 속한 상태로 활약한다. 이 4계층 레이어는 매우 중요한 일을 맡고 있다. 바로 데이터를 패킷으로, 패킷을 데이터로 변환하는 일, 네트워크의 핵심 기능이다. 아니 아니, 패킷이 뭔데?

어떤 데이터든 네트워크를 통해 서로 공유하기 위해서는 네트워크의 기본 전송 단위인 ‘패킷’으로 잘게 쪼개서 전달한다. 무슨 데이터든지 얼마나 큰 데이터든지 간에 패킷 단위로 분할해 배달하는 것이다. 패킷의 앞부분에 할당되는 패킷 헤더에는 송신과 수신 주소와 수신 후 해당 패킷을 어떻게 처리할지 등을 지시하는 조작 정보 등이 기록된다. 헤더에 기록된 정보에 따라 패킷이 네트워크를 통해 이리저리 오가다가 수신자 컴퓨터에 딱 도착하면? 역시 패킷 헤더에 기록된 정보에 따라 패킷들끼리 연결해 하나로 합쳐 다시 데이터로 복원된다. 단순한 네트워크 보안장비들은 이 헤더만은 검사해 위험성 유무를 판단한다.


말하자면 이런 식이다. 네트워크 망에는 동일한 규격의 패킷들이 막 돌아다니다가 하나씩 목적지에 도착해 모든 조각의 배달이 완료되면? 원래 모양대로 데이터 형태로 다시 합치되는 것. 자, 네트워크 설명은 여기까지, 여기서 더 나가면 쉽고 간단하지 않게 되니 이 정도만 알아도 나머지 내용에 대한 이해에는 문제 없을 듯싶다.

그렇다면, 어째서 SSL이 ‘보이지 않는 위험’인가?
위에 언급한 4계층 ‘Transport’ 레이어에 해당하는 보안 장비들은 주로 ‘시그니처’에 기반해 위험성 유무를 판단한다. 그건 또 뭔 소리냐? 길고 복잡한 이야기지만 단순화해 말하자면, 위험한지 또는 안전한지를 결정하는 목록을 기준으로 패킷을 검사하는 것이다. 그렇게 판단했을 때 패킷의 상태가 정상적이면? 그냥 통과해버린다. 그래서 SSL이 위험한 것이다. 왜?
데이터 안에 뭐가 들었는지 내용물을 검사할 수 없기 때문에!

최근 보안 사고는 대부분, 아니 거의 전부(!) 웹 환경에서 발생한다. 그중에서도 웹 애플리케이션 영역, 위에 그린 네트워크 계층도의 7계층 ‘Application’ 레이어에서 주로 발생한다. SSL 암호화 통신 데이터는 바로 그 지점까지 아무런 제지를 받지 않고 그냥 쑤욱! 들어와버리는 것이다. 아니 도대체 왜? IPS/IDS 그리고 네트워크 방화벽이 변명하길, “앗! 미안해요, 근데 전 그게 뭔지 몰랐어요,,” 즉, 보이지 않는 위험이다.

그럼에도 SSL이 기본적으로 보장하는 보안성 때문에, 그리고 하도 관심이 집중되다 보니 그 부작용으로서 과장된 사회적 여론에 힘입어 SSL 사용률은 점차 증가하고 있다. “이것만 쓰면 원천적으로 안전하대! 통신 자체를 암호화해버리는 거라니깐!” 굳게 믿으며 매년 증가율 신기록을 세우고 있다. 현재 전세계 트래픽 물량 최고 웹사이트 10개 중에 8개가 SSL 트래픽을 사용하고 있으며, 전체 웹을 따져도 (사실 전체 웹을 따진다는 건 아예 불가능한 일이긴 하지만, 아무튼) 사용률 또한 해마다 30% 넘게 성장하고 있다. 특히 기업과 기관들은 일반적인 정보보안 요구에 따라 7할에 육박하는 SSL 사용률을 보이고 있으며 이 또한 매년 증가하고 있다.

그.러.나. 해커들은 뭘 노린다? 그렇다. 사람들이 안심하는 지점을 노린다.

생각해 보자. 전통적인(?) 공격 및 침투는 일단 어렵다. 창과 방패는 경쟁적으로 진화하는 법이니, 보안도 어렵지만 해킹도 어렵다. 이것도 뚫어야 하고 저것도 깨야 하고 무지무지 복잡한 일에 매우 열정적으로 도전하고 차례차례 성공해야만 겨우 이룰 수 있는 실로 영광스러운 업적이다. 하지만 다들 안심하고 있는 SSL 통신을 공격 및 침투 루트로 사용한다면? 앞뒤 포차 다 떼고 그냥 본진으로 쑤욱! 들어갈 수 있는 것이다. 그러니 이 좋은 걸 안 노리면 바보지. 미국의 정보기술 연구소 ‘가트너(Gartner)’사는 향후 2년 이내 SSL의 허점을 노린 공격이 전체 정보보안 공격 시도의 50%에 이를 것이라고 예측한다. 타당한 예측이라고 본다.

그럼, 보이지 않으니 아예 막을 수 없나? 물론 가능하다. 암호화된 데이터라서 못 보는 거니까 반대로 복호화해서 내용을 살피면 된다. 하지만 이는 성능 문제와 직결되니 또 문제다. SSL 트래픽을 복호화해서 내용물을 보려 들면, 암복호화 기술의 수준 그리고 전체 시스템과의 설계 적절성 등에 따라서 성능 저하 문제가 아주 심각한 수준으로 발생할 위험도 있다. 복호화 부담이 커지면 아예 뻗어버리기도 한다. 그렇다면 현장에서 아예 못 쓰는 거지. 자, 그럼 어떻게 해야 하나?


SSL이란 결국 암호화 기술이고, 복호화 검사 또한 암호화 기술이다. 오늘날 가장 중요한 보안은? 그렇다, 지금껏 누차 주장했듯 데이터 암호화 그리고 웹 애플리케이션 보안이다. 그 두 가지 기술이 제대로 융합되어야만 암호화 통신 정보보안 문제와 암복호화로 인한 성능 저하 문제를 모두 해결할 수 있는 것이다. 그 외에도 SSL 통신과 기존 통신의 데이터를 분류해 따로 정책을 적용하는 등의 설계 문제도 수반되어야 하지만, 역시나 가장 중요한 핵심은 데이터 암호화 기술과 웹 애플리케이션 보안 기술의 적절한 융합이다.

왜 이런 이야기를 이리도 길게 하고 있나? ‘SSL’을 키워드 삼아 검색해 보자.

“OO사는 통신 정보를 암호화할 수 있는 SSL을 통해 외부 해킹을 원천적으로 차단하는 데 성공”한 게 아니다! SSL은 지금도 위험하고 앞으로는 더, 어쩌면 가장 위험해질 거라니깐,, “본 사이트는 SSL 통신을 사용하기 때문에 안전”한 게 아니다! 그 사이트 통해 뭐든지 수상한 걸 내려받으면 아무 검사 없이 쑤욱! 들어와버린다고,,

물론 SSL은 안전성이 충분히 검증된 ‘통신 방식’이다. 하지만 ‘통신 방식’만이 문제가 아니라는 아주 간단한 이야기를 참 길게도 썼는데 딱 두 줄로 정리하면,

SSL은 안전하지만, 안전하지 않다. 어떤 방법론이든 너무 맹목적으로 믿지는 말자.
안전한 인터넷은, 데이터 암호화 기술 그리고 웹 애플리케이션 보안 기술의 조화다.