‘연구’에 관한 글모음

원격으로 컴퓨터에 접속할 필요가 있을 경우 가장 많이 쓰이는 것이 SSH일 것이다. 예전에 쓰이던 rlogin이나 telnet과는 달리, 암호나 전송 내용을 드러내지 않을 수 있어서 이제는 거의 필수 도구로 자리잡았다. 특히 OpenSSH는 무려 80%가 넘는 점유율을 보이고 있어서, SSH를 쓴다고 하면 OpenSSH가 설치되어 있다고 보아도 무방할 정도이다. 그런데 이런 중요한 소프트웨어에서 암호화된 메시지가 드러날 수도 있는 문제점이 발견되었다. 게다가 대부분의 보안 결함처럼 단순히 소프트웨어의 버그로 인한 것이 아니라, 표준으로 나와 있는 RFC 자체에 문제가 있는 것이어서 더욱 심각하다.

다행인 것은 실제로 피해를 입을 확률이 낮다는 것이다. 지난주 18일에 발표된 논문(PDF)에 따르면 32비트 분량의 메시지를 해독할 확률이 약 26만분의 일이다. 그렇지만 SSH가 안전하다고 철석같이 믿고서 매우 중요한 메시지를 주고받는데에 사용한다면, 이번에 발견된 보안 결함에 대한 대비책을 세울 필요가 있다.

공격 원리는 비교적 간단하다. 가장 많이 쓰이는 모드인 CBC의 경우, SSH는 일단 메시지 길이를 받은 후, 해당 길이만큼을 네트워크로부터 받아들여 복호화를 하는데, 메시지 길이 조차도 암호화되어 있어 그걸 먼저 복호화해야만 한다. 복호화한 메시지에 오류가 있다면 SSH는 에러를 내고 연결을 끊어버린다. 다시 말하면, 일부러 오류가 있는 메시지를 보내는 경우 SSH가 몇 바이트를 읽고서 연결을 끊는지를 보면 암호화된 메시지 길이 값을 알 수 있다는 것이다.

그렇다면 메시지 길이 대신에 공격자가 복호화하고 싶은 내용을 보내면 어떻게 될까? SSH는 그 내용이 무엇이건 그걸 숫자로 간주, 그 값만큼 메시지를 읽어들일 것이고, 애시당초 메시지 길이가 아닌 값이므로 메시지 복호화 후 에러를 낼 것이 거의 확실하다. 일단 에러가 발생해서 연결이 끊기면 공격자는 그때까지 보낸 메시지 길이를 확인하여 자신이 복호화하고 싶었던 내용을 알아낼 수 있는 것이다.

OpenSSH 5.2에서는 이 문제가 해결되었으므로, 32비트조차도 절대로 남에게 넘겨줄 수 없다면 OpenSSH를 업그레이드하는 것이 최선이다.

Communicating in Science

이공계쪽에서 논문을 읽거나 발표를 듣다보면 저자나 발표자에 따라 머리에 쏙쏙 들어오기도 하고 뭔 소린지 전혀 감을 잡을 수 없기도 합니다. 이는 내용이 어렵거나 복잡해서라기보다는 말하는 사람이 청중의 기대와 상관없이 자기 기준대로 발표하기 때문인 경우가 많습니다. 그나마 논문의 경우는 여러번 주의깊게 읽다보면 간신히 이해되기도 하지만, 발표를 듣는 경우 일단 한번 흐름을 놓치면 그 이후의 내용을 전혀 쫓아갈 수 없는 경우가 대부분이라 정말 난감합니다.

이 책은 이공계 분야에서 글을 쓰거나 발표를 할 때 간과하기 쉬운 것들을 잘 지적해주고 있습니다. 나온지 좀 오래된 책이다보니 종이에 직접 논문을 쓰고 OHP로 발표를 하는 등 요즘 추세와는 맞지 않는 내용이 있긴 합니다만, 그래도 여전히 새겨들을만한 내용이 많이 있습니다. 특히 영어가 모국어가 아닌 사람 입장에서 글을 쓰거나 말을 할 때에는 나 말고 다른 사람들은 모두 영어에 능통하다고 생각하기 쉬운데, 이 책에서는 영어가 외국어인 청중이나 독자를 위해 어떤 배려를 해야하는지에 한 장을 할애해서 설명하고 있습니다. 저 역시 외국인 청중, 독자입장으로서 공감되는 부분이 많더군요. 글쓴이가 영국 사람이다보니 미국 영어를 무시하는 경향이 종종 보입니다만, 제삼자 입장에서는 그것도 재미로 봐줄만 합니다.

무엇보다 이 책의 장점은 짧다는 것! 크기도 작고 70쪽 정도에 불과하기 때문에 부담없이 읽을 수 있습니다. 마치 이공계쪽 글쓰기의 The Elements of Style처럼 느껴질 정도입니다. 하지만 이 책 자체는 그만큼 매끄럽게 쓰여진 편이 아니라는 점이 아쉽습니다. 각 절이 유기적으로 연결되지 못하고 따로 노는 느낌이랄까요? 그래도 하나하나가 꼭 필요한 조언들이므로 틈날때마다 관심있는 주제를 펼쳐서 읽는 것도 괜찮을 겁니다. 이공계쪽에 종사하시면서 영어로 논문을 쓰거나 발표할 일이 많으신 분들이라면 한번쯤 읽어볼만한 책입니다.

Telecosm

몇년 전에 나온 “예언서”입니다. 쉽게 구할 수 있는 페이퍼백으로 나온 건 2002년인데, 원래 처음 나온 건 아마 2000년일 겁니다. 그당시의 엄청난(!) 네트워크 발전 속도를 보면서, 앞으로는 네트워크 용량이 무궁무진한 시대가 올테고 그러면 세상이 이렇게 변할 것이다라고 설을 푸는 책이지요. 이런 종류의 책은 그때그때 읽어줘야하지만, 이렇게 얼마 지나서 과연 그 “예언”들이 얼마나 맞고 얼마나 틀렸는지, 왜 글쓴이는 그때 그런 틀린 예언을 할 수밖에 없었는지, 과연 내가 그때로 돌아간다면 맞는 예언을 할 수 있었을 것인지 등등을 곱씹어보는 것도 재미있습니다.

2000년이면 IT 붐이 최고조에 이를 때이고, 우후죽순처럼 생겨나는 초고속 인터넷과 무선망을 보면서 정말 네트워크 용량이 껌값이 되는 날이 올 거라고 생각한 것도 무리는 아닙니다. 거기에 자바와 네트워크 컴퓨터(NC) 진영에서 쏟아내는 장미빛 미래에 도취되지 않았을 사람이 몇이나 될까요. 하지만 글쓴이는 좀 도가 지나쳤던 걸로 보입니다(George Gilder의 자바 찬양은 요새 짬짬이 보고 있는 Joel on Software에서도 한번 비꼬고 있더군요). 아직까지도 인터넷에서 DVD 수준의 동영상 보기가 요원하고, 설령 광케이블이 엄청나게 많이 묻혀 대역폭을 왕창 올려준다고 해도 지금의 TCP로는 그 성능을 십분 끌어내기가 어려운 상황인걸요. 아마도 먼저 낸 책인 Microcosm의 성공에 어울릴만한 다른 방향의 주제를 잡아보고자 시도한게 좀 무리하게 된 것이 아닐까 합니다. 그러나 과거를 설명하는 부분은 제법 볼만합니다. 네트워크 업계의 발전사가 아주 잘 정리되어 있거든요. 단순히 기술적인 내용만이 아니라 회사들간의 이권 다툼으로 인해 기술의 향방이 좌지우지되는 뒷얘기까지도 다루고 있어서 흥미진진합니다. 예언은 적당히 무시해가며 보시길.

참고로 원서를 보시면 영어가 제법 어렵습니다. 원래 예언가들이 그렇듯이 글을 쉽게 쓰는 사람이 절대 아닙니다. 온갖 어려운 단어로 가득찬 비유를 잔뜩 섞어서 쓰기 때문에 매 문장의 뜻을 완전히 이해하고 넘어가기는 정말 힘듭니다. 대신 영어 단어 공부는 제대로 할 수 있을겁니다. :)

그간 학교를 옮기면서 이사하고 짐 정리하느라 다른 일을 전혀 하질 못했네요. 이제는 어느정도 적응이 되어서 이전의 생활 패턴으로 돌아가고 있습니다.

지난 주에 있었던 ACM SIGCOMM 컨퍼런스에서는 굵직한 일이 두 가지나 있었더군요. 저도 참석하고 싶었으나 새 학기 시작과 겹치는 바람에… T.T

첫째는 컴퓨터 분야의 노벨상으로 불리는 Turing Award가 처음으로 네트워크 분야에 수여됐다는 겁니다. 인터넷을 설계하고 발전시킨 공로로 Vinton Cerf와 Robert Kahn이 공동 수상했는데요, 공동 수상이라 그런지 수상 연설도 기존의 강연 방식이 아니라 좌담 형식으로 진행되어 아주 재미있었습니다. 좌담 동영상을 리얼 오디오 형식으로 제공하고 있으니 인터넷의 역사와 향후 전망에 대해 관심있으신 분들은 받아보시면 좋을 겁니다.

두번째는 Turing Award보다는 조용하게 발표되었지만 앞으로 인터넷에 미칠 영향은 더욱 클 것으로 보이는 지니(GENI)입니다. 인터넷이 처음 계획했던 것보다 훨씬 널리 쓰이면서 보안이나 이동 통신 등과 관련되어 모자란 기능들이 자꾸 지적되고 있는데요, 이러한 점들을 고치려면 인터넷을 보완하는 것만으로는 한계가 있다고 판단되어 보다 새로운 아키텍쳐를 고안하고자 하는 움직임입니다. NSF의 공식 문서는 이게 뭔지 감을 잡기에는 상당히 모호한 편이고, 와이어드의 최근 기사에서 비교적 요약을 잘 해 놨더군요. 일단은 Planet Lab처럼 인터넷 위에서 가상 네트워크를 구성할 수 있게 할 모양인데, 인터넷 자체를 바꿔보려는 시도인만큼 PlanetLab처럼 IP 계층을 제공하기보다는 그 하위 계층을 제공하도록 할 것 같습니다. Slashdot의 관련 글타래에서는 반대 의견들이 많이 보이는데요, 이에 관해서는 글타래 중간쯤 카네기 멜론 대학의 David Andersen 교수의 답글에 잘 설명되어 있습니다.

그동안 IPv6을 포함해서 인터넷에 새로운 기능을 부가하고자 하는 시도가 많이 있었으나 아직 그다지 성공적으로 퍼진 것이 없는데요, 이번 시도는 부디 좋은 결과를 낼 수 있었으면 합니다.

커널 수준에서 HTTP 요청에 대한 인증 과정을 거치게 함으로써 웹서버에 대한 분산 서비스 거부 공격을 막는 방법이 올해 NSDI(Symposium on Networked Systems Design and Implementation)에서 발표되었습니다. 동작 방식은 이렇습니다. 평상시에는 여느 웹서버와 다름없이 동작하다가, 일단 HTTP 요청이 급증하게 되면 인증 모드로 전환합니다. 인증 모드에서는 모든 HTTP 요청을 커널에서 가로채서 웹서버의 응답대신 사람인가를 확인할 수 있는 문제를 보냅니다. 현재는 문제로 CAPTCHA를 쓰고 있습니다. 만일 문제를 제대로 풀면 쿠키를 설정해서, 이후로는 커널의 인증 과정 없이 바로 웹서버로 요청이 갈 수 있도록 하고, 풀지 못하면 해당 IP를 “좀비”로 등록합니다. 시간이 가면서 HTTP 요청이 새로운 IP에서 오는 것이 아니라 기존 IP에서만 반복해서 들어오게 되면, 문제를 내던 모드에서 벗어나서 “좀비”들만을 무조건 막아버리는 모드로 전환하게 됩니다.

사실 CAPTCHA 자체도 시각 장애인들에게 불리한 요소가 있고, 커널이 HTTP 요청까지 직접 담당하게 하는 것이 기존 네트워크의 계층 구조를 위반한다는 문제가 있긴 하지만, 그래도 지금까지 나온 분산 서비스 공격에 대한 대처 방안들 중에서는 가장 현실성있는 제안인 것 같습니다. 전문은 PDF로 받아 볼 수 있습니다.

네트워크상의 병목을 찾아내는 새로운 방법을 제안하는 논문을 마쳤습니다. 아이디어를 낸 것이 작년 여름이니 거의 일년이 걸렸네요. 주요 실험이 끝난 것은 작년 말이었는데, 그 후로 계속 내용을 보강하고 보다 일반적인 환경에서 테스트한 결과를 추가하고 하느라 이제서야 끝났습니다.

네트워크 병목은 둘 이상의 네트워크상의 데이터 전송을 위한 연결이 같은 회선을 지나가면서 그 부분의 대역폭때문에 전체 전송률이 제한받는 것을 말합니다. 그동안의 방식은 두 전송이 같은 곳에서 시작하거나(웹서버처럼 여러 브라우저로 파일을 보내는 경우) 같은 곳에서 끝나는 경우(여러 곳으로부터 파일을 다운받은 경우)에만 적용이 가능했는데, 이번에 고안한 방법은 신호처리 기법중의 하나인 웨이블릿을 사용해서 불필요한 신호를 걸러냄으로써 시작과 끝이 모두 다른 경우에도 적용할 수 있도록 일반화한 것입니다. 이 방법을 활용하면 네트워크 상황에 따라 파일 전송 경로를 적절히 변경할 수 있기 때문에 최근 늘어난 P2P 시스템들의 성능을 최대로 끌어올릴 수 있습니다.

논문은 8월 말부터 열리는 ACM SICOMMM 2004에서 발표할 예정이며, ACM 디지털 라이브러리에서 받아볼 수 있습니다.