메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

[웹 애플리케이션 보안] 소프트웨어 보안의 역사

한빛미디어

|

2021-02-25

|

by 앤드루 호프먼

13,949

 
정찰, 공격, 방어 세 단계로 배우는 웹 애플리케이션 보안의 모든 것
『웹 애플리케이션 보안』 중
 

1.1 해킹의 기원
지난 20년간 해커는 그 어느 때보다 악명을 떨쳤다. 분야 배경지식이 없는 사람이라도 해킹이 인터넷과 밀접하게 관련이 있으며, 대부분의 해커가 지난 20년 사이에 출현했다는 것을 쉽게 알 수 있다. 그러나 이는 단편적인 사실에 불과하다. 월드 와이드 웹World Wide Web(WWW)이 떠오르면서 해커의 수가 폭증한 것은 사실이지만 20세기 중반에도 해커는 존재했다. ‘해킹’을 무엇이라고 정의하느냐에 따라 시기는 그 이전이 될 수도 있다. 전문가들은 1900년대 초에 일어난 중요한 사건이 현재의 해킹과 상당한 유사성을 보인다는 점을 근거로 현대적 해커의 등장 시기를 100년 전으로 본다.
예를 들어 1910~1920년대에는 해킹으로 분류할 수 있을 법한 사고들이 개별적으로 일어났다. 모스 부호Morse code 변조라든지 전파 방해 같은 것이 주를 이뤘다. 이러한 사건들이 일어난 것은 사실이지만 일반적이지 않다. 그리고 이러한 기술을 악용한 결과로 방해를 받은 큰 규모의 작업을 특정하기는 어렵다.
필자는 사학자가 아니라 아키텍처와 코드 수준의 보안 이슈로부터 해답을 찾는 보안 전문가다. 보안 일을 하기 전에는 여러 해에 걸쳐 소프트웨어 엔지니어로 일하면서 다양한 언어와 프레임워크로 웹 애플리케이션을 작성했다. 요즘도 보안 자동화 소프트웨어를 작성하며 취미로 다양한 프로젝트에 기여한다. 구체적이거나 대안적인 역사 이야기를 늘어놓을 생각은 없다. 이 글은 여러 연구 결과를 엮어 과거에 일어난 사건들을 통해 현대에 적용할 수 있는 배울 점을 찾는 데 주력한다.
이 글은 완전한 역사 개론이 아니라 굵직한 사건을 되짚어 보는 것이 목적이므로 1930년대 초에서 시작한다. 그럼 오늘날의 해커와 엔지니어의 관계를 이해하는 데 도움이 될 만한 역사적 사건들을 살펴보자.
· · ·
1.2 에니그마(1930년경)
에니그마Enigma machine는 전파를 통해 송수신되는 텍스트 메시지를 암호화 및 복호화하기 위해 전기로 작동하는 회전자rotor를 사용했다(그림 1-1). 이 장치는 독일에서 만들었으며 제2차 세계대전에서 가장 중요한 기술적 개발이었다.
그림 1-1 에니그마
에니그마는 커다란 사각형 타자기처럼 생겼다. 자판을 누르면 회전자가 이동해 무작위로 선택된 것처럼 보이는 문자를 기록하고 이것을 근처의 모든 에니그마에 전송한다. 하지만 이 문자들은 사실 무작위가 아니라 회전자의 회전과 구성 옵션의 수에 따라 정의되며 언제든 수정할 수 있었다. 특정 구성을 가진 에니그마는 똑같이 구성한 다른 기계에서 보낸 메시지를 ‘해독’할 수 있었다. 감청을 피해 중요한 메시지를 보낼 수 있다는 점에서 에니그마는 매우 귀중했다.
이 기계에 사용된 회전식 암호화 메커니즘을 발명한 사람이 누군지는 확실하지 않지만 이 기술은 독일의 히프리르마시넨Chiffriermaschinen AG(암호 기계 주식회사)의 세르비우스Scherbius와 리처드Richard 두 사람에 의해 유명해졌다. 이 회사는 1920년대에 독일 전역에서 이 기술을 시연했으며 1928년 독일군은 일급 기밀 메시지 전송의 보안을 위해 이 기술을 도입했다.
장거리 메시지 전송에서 감청을 피할 수 있는 능력은 이전에는 불가능했던 급진적 개발이었다. 오늘날의 소프트웨어 세계에서도 메시지의 감청은 해커가 애용하는 기술이며 이를 중간자 공격man-in-the-middle attack이라고 부른다. 현재의 소프트웨어도 그러한 공격을 방지하기 위해 백 년 전의 에니그마가 사용한 것과 비슷하지만 훨씬 더 강력한 기법을 사용한다.
에니그마에 사용된 기술은 당시로써는 믿을 수 없을 만큼 놀라운 것이었지만 결점이 없는 것은 아니었다. 송신자와 동일한 구성을 갖추면 감청과 해독이 가능했다. 구성 로그(오늘날의 용어로 개인 키private key에 해당)만 빼돌릴 수 있으면 에니그마의 전체 네트워크를 무용지물로 만들 수 있었다.
에니그마를 사용해 메시지를 전송하는 측에서는 구성 설정을 정기적으로 변경했다. 에니그마의 구성을 변경하는 것은 시간이 많이 소요되는 작업이었다. 먼저 구성 로그를 인편으로 전달해야 했다. 원격에서 안전하게 공유하는 방법이 없었기 때문이다. 두 대의 기계와 조작자 사이에 구성 로그를 공유하는 것은 그리 힘들지 않았을 수도 있다. 그렇지만 규모가 큰 네트워크(20대의 기계로 이뤄진 네트워크를 생각해보자)에서는 여러 명의 전달자messenger가 구성 로그를 전달해야 하므로 구성 로그를 도둑맞는다든지 심지어 빼돌리거나 팔아넘길 위험까지 있다.
구성 로그를 공유하는 것의 두 번째 문제점은 다른 에니그마에서 보낸 새로운 메시지를 읽고 복호화하기 위해서는 수작업으로 기계를 조정하는 과정이 필요하다는 점이었다. 구성 변경이 필요할 때를 대비해 전문적인 훈련을 받은 인원이 대기해야 했다. 아직 소프트웨어의 시대가 도래하지 않았으므로 이러한 구성을 조정하려면 하드웨어의 교체와 전기 배선의 물리적 변경이 필요했다. 조정 작업자는 전자회로에 대한 배경지식을 갖춰야 했는데 1900년대 초에 이런 사람을 구하기는 매우 힘들었다.
이와 같이 기계를 업데이트하는 작업이 어렵고 시간이 많이 필요해서 업데이트는 통상 월 단위로 이뤄졌고 일간 업데이트는 필수적인mission-critical 통신 회선에 대해서만 이뤄졌다. 키가 누설되기라도 하면 그달의 모든 전송을 악의적인 행위자(오늘날의 해커)가 감청할 수 있는 것이었다.
에니그마에서 사용한 방식과 같이 암호학적인 키 하나를 사용해 암호화와 복호화를 수행하는 방식을 현재는 대칭 키symmetric key 알고리즘이라고 부른다. 이러한 암호화군family of encryption은 현재도 소프트웨어에서 전송 데이터 보호를 위해 여전히 사용하지만 에니그마를 통해 유명해진 전통적인 모델에 비해서는 많이 개선됐다.
소프트웨어의 키는 좀 더 복잡하다. 현대적인 키 생성 알고리즘은 매우 복잡한 키를 생산하므로 가능한 모든 조합을 시도(브루트 포싱brute forcing 또는 브루트 포스 공격brute force attack)하는 데에는 가장 빠른 하드웨어로도 수백만 년이 걸린다. 게다가 과거의 에니그마와 달리 소프트웨어 키는 자주 변경할 수 있다.
어떻게 사용하는가에 따라 키를 사용자 세션마다(로그인할 때마다) 생성하거나, 네트워크 요청 때마다 생성하거나, 정해진 시간 간격에 따라 생성할 수도 있다. 이러한 암호화 유형을 소프트웨어에 사용하면 키가 누설될 경우 최소 한 번의 네트워크 요청이 노출될 수 있으며(요청 때 마다 재생성하는 경우) 최악의 경우 여러 시간 동안 노출될 수 있다(로그인별, 즉 세션별로 재 생성하는 경우).
현대 암호학의 역사를 따라가다 보면 1930년대 제2차 세계대전을 만나게 된다. 에니그마가 원격 통신 보호의 중요한 이정표라는 점에는 이견이 없을 것이다. 그로부터 우리는 에니그마가 소프트웨어 보안 분야에서 핵심적인 개발이었다는 결론을 내릴 수 있다.
에니그마는 나중에 ‘해커’라고 불리게 된 사람들에게도 중요한 기술 개발이었다. 제2차 세계대전 중 추축국이 에니그마를 도입함에 따라 연합국에서는 암호화를 깨뜨리는 기술을 개발해야 한다는 압력이 극도로 높아졌다. 아이젠하워 장군은 나치에 맞서 승리하려면 에니그마가 필수라고 주장했다.
1932년 9월 폴란드 수학자 마리안 레예프스키Marian Rejewski는 에니그마를 입수했다. 때마침 프랑스의 스파이 한스 틸로 슈미트Hans-Thilo Schmidt는 1932년 9월과 10월의 구성을 마리안에게 제공할 수 있었다. 그 덕분에 마리안은 메시지를 감청하기 위해 에니그마 암호화의 미스터리를 분석하기 시작했다.
마리안은 이 기계의 기계적, 수학적 작동 원리를 알아내려고 시도했다. 마리안은 기계의 특정 구성을 바꾸는 것이 어떻게 암호화된 메시지를 완전히 다르게 출력하게 만드는 결과를 일으키는지 알고자 했다.
그는 기계의 작동 원리를 바탕으로 기계를 어떻게 구성했을 때 어떤 출력이 나오는지 여러 가지 가정을 세워 암호 해독을 시도했다. 암호화된 메시지의 패턴을 분석하면서 마리안과 그의 두 동료(예지 루지츠키Jerzy Różycki와 헨리크 지갈스키Henryk Zygalski)는 마침내 시스템의 역공학reverse engineering에 성공했다. 에니그마 회전자 메커니즘과 기판의 구성에 대한 깊은 이해를 바탕으로 어떤 구성이 어떤 암호 패턴을 만들어내는지 예측하는 데 성공했던 것이다. 그 후 수차례 시도 끝에 필요한 정확성을 갖도록 기판을 재구성해 암호화된 전파를 읽을 수 있게 되었다. 1933년에 이르러서는 매일 구성이 바뀌는 에니그마 트래픽까지 감청·해독하게 됐다.
감청과 암호 스킴의 역공학을 통해 타인이 생성한 가치 있는 데이터에 액세스했다는 점에서 마리안의 팀이 했던 일은 현대의 해커가 하는 일과 크게 다르지 않다. 이러한 이유로 마리안 레예 프스키의 팀을 세계 최초의 해커 집단으로 볼 수 있다.
그 후 독일군은 문자를 암호화하는 데 사용하는 회전자의 개수를 늘리는 방법으로 에니그마의 암호화 복잡도를 계속 높였다. 결국 마리안의 팀이 적절한 시간 내에 역공학으로 구성을 알아내는 데 한계에 부딪혔다. 이는 해커와 수비자의 끝없는 경쟁 관계를 보여준다는 점에서 중요한 대목이다.
이러한 관계는 지금도 계속된다. 해커는 창의력을 발휘해 소프트웨어 시스템에 침입하는 기법을 계속 발전시킨다. 영민한 엔지니어들도 혁신적인 해커에 대항하는 새로운 기법을 지속적으로 개발한다.
1.3 에니그마 코드 크래킹 자동화(1940년경)
영국의 수학자 앨런 튜링Alan Turing은 튜링 테스트Turing test를 고안한 사람으로 알려져 있다. 튜링 테스트는 기계가 생성한 대화를 평가하기 위해 개발됐는데 실제 사람의 대화와 구분하기가 얼마나 어려운지를 기준으로 삼았다. 이 테스트는 AI 분야의 기초를 이루는 철학으로 간주된다.
튜링은 AI 분야의 업적으로 잘 알려지기는 했지만 암호학과 자동화 분야의 선구자이기도 했다. 제2차 세계대전 이전까지 그의 연구는 AI보다 암호학에 초점이 맞춰져 있었다. 그는 1938년 9월부터 정부 부호 및 암호 연구소Government Code and Cypher School(GC&CS)에서 파트 타임으로 일했다. GC&CS는 영국군이 세운 연구 및 첩보 기관으로 잉글랜드 블레츨리 파크Bletchley Park에 있었다.
튜링은 에니그마를 분석하는 연구를 주로 수행했다. 블레츨리 파크에서 에니그마의 암호화를 연구하던 당시 그를 이끌어준 사람은 암호학자로서 많은 경험을 쌓은 딜리 녹스Dilly Knox였다.
폴란드의 수학자들이 했던 것과 마찬가지로 두 사람은 한층 강력해진 에니그마의 암호화를 깰 방법을 찾고자 했다. 폴란드 암호 해독국Polish Cipher Bureau과의 공조를 통해 마리안의 팀에서 거의 십 년 전에 수행한 모든 연구 자료를 얻은 두 사람은 에니그마를 깊이 이해했다. 회전자와 배선 의 관계를 이해했으며 장치 구성과 암호화 출력 사이의 관계를 알게 되었다(그림 1-2 ).
그림 1-2 에니그마의 전송 설정을 바꾸는 데 사용된 에니그마 회전자 쌍. 디지털 암호의 기본 키를 변경하는 것에 해당 하는 역할을 한다.
마리안의 팀은 암호화 패턴을 찾아내어 기계의 구성에 따라 어떤 암호가 출력될지 추측할 수 있었다. 그러나 회전자의 수가 늘어나는 것에 대응할 수 없었다. 잠재적인 조합을 모두 시도하는 데 시간이 너무 오래 걸리는 바람에 그 사이에 새로운 구성이 적용되어 버렸던 것이다. 이에 튜링과 녹스는 확장이 가능하면서도 새로운 암호 유형을 깨뜨리는 데 사용할 수 있는 새로운 해법을 찾고자 했다. 그들은 특수한 문제만 푸는 것이 아닌 범용 솔루션을 원했다.
1.3.1 봄브
봄브Bombe는 에니그마의 회전자 위치에 대해 자동으로 역공학을 시도하는 전기 장치였다. 암호화 기계로 작성한 메시지를 분석의 기초로 사용했다(그림 1-3 ).
그림 1-3 제2차 세계대전에 사용된 블레츨리 파크 봄브의 초기 모델(많은 수의 회전자를 사용해 에니그마의 구성을 빠르게 해독했다)
최초의 봄브는 마리안의 작업을 자동화할 목적으로 폴란드에서 만들었다. 안타깝게도 이 장치는 에니그마의 구성을 알아낼 목적으로 매우 특수한 하드웨어를 갖게 설계됐다. 특히 세 개 이 상의 회전자를 갖춘 기계에 대해서는 효과가 없었다. 폴란드 봄브는 복잡한 에니그마의 개발에 대항할 수 있는 확장성을 갖추지 못했기 때문에 폴란드 암호학자들은 전시에 독일군이 사용한 메시지의 암호를 풀기 위해 결국 수작업으로 되돌아가야 했다.
튜링은 범용성을 갖도록 제작하지 않은 것이 폴란드 봄브의 실패 원인이라고 믿었다. 튜링은 회전자의 수와 관계없이 어떠한 에니그마 구성에 대해서도 해독이 가능한 기계를 개발하기 위해 ‘암호화된 메시지를 해독하는 알고리즘을 올바로 설계하려면 메시지에 어떤 단어 또는 구가 있는지와 그 위치부터 알아야 한다’는 단순한 가정을 세웠다.
독일군은 매우 엄격한 통신 표준을 갖고 있었는데 이는 튜링에게 다행스러운 일이었다. 상세한 일기예보를 암호화한 에니그마 전파가 매일 송신됐다. 이는 독일군이 기상 조건을 대외비로 각 급 부대에 전파하기 위해서였다. 독일군은 튜링의 팀이 이 일기예보의 목적과 위치를 역공학에 사용하게 될 줄은 몰랐다.
올바로 구성한 에니그마를 통해 전송된 입력(일기예보)을 알면 알고리즘을 통해 출력을 알아내기는 꽤 쉬웠다. 튜링은 새로 알아낸 이 정보를 사용해 크랙crack하려는 에니그마의 회전자 개수와 관계없이 작동할 수 있는 봄브 구성을 결정했다.
튜링은 독일군의 에니그마로 암호화한 메시지를 해독하는 데 필요한 구성을 정확히 알아내는 봄브의 제작비 예산을 청구했다. 예산이 승인되자 튜링은 분당 120회 회전하는 108개의 드럼을 갖춘 봄브를 설계했다. 이 기계는 2만 가지에 가까운 에니그마 구성을 20분 만에 시도할 수 있었다. 구성이 바뀐다 하더라도 재빨리 알아낼 수 있게 된 것이다. 이제 에니그마 암호화는 안전한 통신 수단이 되지 못했다.
튜링의 역공학 전략을 알려진 평문 공격known plaintext attack(KPA)라고 부른다. 이것은 이전의 입출력 데이터가 있을 경우 더욱 효율적인 알고리즘이다. 현대의 해커도 저장되어 있거나 소프트웨어에서 사용하는 데이터의 암호화를 깨뜨리는 데 비슷한 기법을 사용한다. 튜링이 제작한 기계는 최초의 자동화된 해킹 도구로서 역사적인 중요성이 있다.
1.4 전화 프리킹(1950년경)
이후 해킹의 연대표에서 에니그마와 2차 세계대전 당시 암호학 전투만큼 중요한 사건이 있다. 바로 전화의 등장이다. 전화 덕분에 사람들은 서로 멀리 떨어진 곳에서 빠른 속도로 서로 통신할 수 있게 되었다. 전화망이 확대됨에 따라 큰 규모에서의 운영을 위해 자동화가 필요해졌다.
1950년대에 AT&T 같은 전화 회사는 회선 연결, 즉 라우팅routing을 자동으로 수행하는 새로운 전화를 구현했다. 이것은 전화기에서 생성하는 오디오 신호를 기반으로 했다. 전화의 숫자판을 누르면 특정 오디오 주파수가 생성되고, 이것은 전화선을 타고 전송되어, 교환국에 있는 기계에 의해 변환되었다. 교환기는 이러한 소리를 숫자로 변환함으로써 호출call1을 올바른 수신자에게 라우팅했다.
이 시스템을 톤 다이얼링tone dialing이라 하며 이 기술 없이 전화망을 확대하기란 불가능했다. 톤 다이얼링은 전화망을 운영하는 부담을 크게 줄여주었다. 교환원은 모든 전화 연결을 일일이 수작업으로 연결하는 업무에서 벗어나 동시에 수백 건의 전화를 관리하면서 전화망에 이상이 생기지 않는지 지켜보는 역할을 맡게 됐다.
새로운 전화 교환 시스템이 오디오 톤의 해석을 기초로 구현되었으며 쉽게 조작할 수 있음을 깨닫는 데에는 그리 오래 걸리지 않았다. 수화기 옆에서 원래 것과 똑같은 주파수의 소리를 내기만 하면 장치가 원래 의도된 기능을 벗어나 작동하게 되었다. 이 기술을 취미 삼아 실험하던 사람들이 나중에 프리커phreaker라는 이름으로 불리게 되었다. 프리커는 전화망을 고장내거나 조작하는 것을 전문으로 하는 초기 해커를 의미한다. 프리킹phreaking이라는 단어가 어디에서 나왔는지는 여러 가지 추측이 있다. 그중에는 ‘phone’과 ‘freaking’이라는 단어에서 유래했다는 설이 있다.
좀 더 그럴듯한 다른 이야기도 있다. 당시 전화에서 사용하던 오디오 신호 처리 용어인 ‘오디오 주파수audio frequency’에서 프리킹이라는 단어가 유래했다는 것이다. AT&T의 톤 다이얼링 시스템의 출시와 프리킹이라는 용어가 출현한 시기가 매우 가깝다는 점이 신빙성을 더한다. 톤 다이얼링이 나오기 전까지는 전화 호출을 위해 교환원이 두 회선을 연결해야 했기 때문에 호출을 변조하기가 훨씬 어려웠다.
초기 여러 프리킹 사건 중 가장 악명 높았던 사건은 2,600Hz 톤을 발견해 이를 악용한 사건이다. AT&T 내부에서는 통화가 끝났음을 의미하는 신호로 2,600Hz 오디오 주파수를 사용했다. 이 주파수는 톤 다이얼링 시스템에 내장된 ‘관리 명령admin command’이었던 셈이다. 2,600Hz 톤을 발생시키면 전화 교환 시스템이 멈춰버려서 전화가 계속 연결되어 있음을 알 수 없게 되었다(통화가 끝난 것으로 기록되지만 여전히 통화 가능한 상태). 이 방법을 이용하면 전화 요금을 내지 않고도 값비싼 국제전화를 마음껏 할 수 있었다.
2,600Hz 톤의 발견과 관련해서는 보통 두 사건을 거론한다. 첫째, 조 인그레시아Joe Engressia라는 소년이 2,600Hz의 피치로 휘파람을 불 수 있었고 친구와 통화 중 휘파람을 불면 다이얼링이 되지 않는다는 것을 자랑삼아 시연하고 했다. 비록 우연이기는 했지만 그를 최초의 전화 프리커로 보는 견해도 있다.

1 옮긴이_
‘call’을 ‘전화’로 번역해도 어색하지 않지만, 기술적인 설명이므로 ‘호출’로 옮겼다.
나중에 조 인그레시아의 친구 존 드레이퍼John Draper는 시리얼 상자에 들어있는 호루라기가 2,600Hz 톤을 흉내 낼 수 있다는 사실을 발견했다. 호루라기를 주의 깊게 사용하면 똑같은 기법으로 장거리 전화를 무료로 사용할 수 있었다. 이 기법은 서구 전역으로 퍼져나갔고 결국 버튼을 누를 때의 특정 오디오 주파수와 일치하는 것을 생성하는 하드웨어가 만들어지기에 이르렀다.
이 하드웨어 장치의 초기작을 블루 박스blue box라고 불렀다. 블루 박스는 완벽에 가까운 2,600Hz 신호를 재생해 이 장치를 가진 사람은 누구나 전화 교환 시스템의 버그를 이용해 전화를 공짜로 쓸 수 있었다. 블루 박스는 자동화된 프리킹 하드웨어의 시작에 불과했다. 나중에 만들어진 프리커 장치는 유료 전화를 조작하고, 2,600Hz 신호를 사용하지 않고도 청구 사이클이 시작되는 것을 방해하고, 군용 통신 신호를 에뮬레이션emulation하고, 심지어 가짜 호출자 ID까지 만들었다.
이런 일들이 벌어질 수 있었던 것을 근거로 당시 전화망을 설계한 아키텍트들은 오로지 평범한 이용자가 원하는 것에 집중했다는 것을 짐작할 수 있다. 현대의 소프트웨어 세계에서 이것을 최선의 시나리오 설계라고 부른다. 이런 설계는 치명적 결함을 일으켰지만 이를 통해 중요한 교훈을 얻을 수 있다. 복잡한 시스템을 설계할 때는 항상 최악의 시나리오부터 먼저 고려해야 한다는 것이다.
톤 다이얼링 시스템의 약점에 대한 지식이 더 널리 알려짐에 따라 전화 회사들은 수익이 감소되는 것을 막고 프리커로부터 전화의 무결성integrity을 지키기 위해 대응책을 개발하는 데 예산을 배정하게 되었다.
1.5 프리킹 방지 기술(1960년경)
1960년대 전화기에는 이중 톤 다중 주파수dual-tone multi-frequency(DTMF) 신호라는 신기술이 탑재됐다. DTMF는 벨 시스템Bell System에서 개발한 오디오 기반 신호 처리 언어로 ‘터치 톤스Touch Tones’라는 등록 상표로 널리 알려졌다. DTMF는 우리에게도 친숙한 4행 3열의 숫자로 구성된 전화 다이얼 배열과 근본적으로 결부되었다. DTMF 전화기의 숫자 키를 누르면 두 가지의 매 우 고유한 오디오 신호가 발생하는데 이는 기존의 단일 톤 다이얼링 시스템에서 한 가지 주파수만 내는 것과 다른 점이었다.
다음 표는 ‘터치 톤’ 또는 소리(Hz)를 나타낸다.
DTMF의 개발은 프리커가 톤 다이얼링 시스템을 악용하는 것이 역공학의 용이성에 힘입은 것 이라는 사실에 착안했다. 벨 시스템은 DTMF 시스템이 전혀 다른 두 가지 톤을 동시에 내므로 악의적 사용자가 이용하기 훨씬 어려울 것으로 믿었다.
DTMF 톤은 사람의 목소리나 호루라기를 사용해 쉽게 복제할 수 없었으므로 이전에 비해 기술이 상당히 안전해졌다고 할 수 있다. DTMF는 성공적 보안 개발을 통해 당대의 해커에 해당하는 프리커와의 전투를 승리로 이끈 좋은 예다.
DTMF 톤을 발생시키는 원리는 꽤 단순했다. 각 키 뒤에는 두 가지 주파수를 내는 내부 스피 커에 신호를 보내는 스위치가 있었다. 한 가지 주파수는 키의 행에 따라 다른 주파수는 열에 따라 다른 소리를 냈다. 이중 톤dual-tone이라는 단어를 사용한 이유다.
DTMF는 국제전기통신연합International Telecommunication Union(ITU)에서 표준으로 채택했으며 나중에 전화뿐 아니라 케이블 TV(광고 시간을 지정하는 용도)에도 사용됐다.
DTMF는 적절한 계획을 세우면 악용을 더 어렵게 만들도록 시스템을 엔지니어링할 수 있음을 보여준다는 점에서 중요한 기술 개발이었다. DTMF 톤도 결국 복제되긴 했지만 상당한 노력 이 필요했다. 결국 교환국에서는 입력을 아날로그가 아닌 디지털로 전환해 프리킹이 거의 불가능해졌다.
1.6 컴퓨터 해킹의 태동(1980년경)
1976년 애플은 애플 1 개인용 컴퓨터personal computer를 출시했다. 이 컴퓨터는 사서 바로 사용할 수 있는 것이 아니라 직접 부품을 구해 메인보드에 연결해야 했다. 겨우 몇백 대가 만들어져서 팔렸다.
1982년 코모도어 인터내셔널Commodore International에서 경쟁 제품을 출시했다. 그것은 코모도어 64로 구입해서 바로 사용할 수 있게 구성된 개인용 컴퓨터였다. 자체 키보드가 있었고 오디오를 지원하며 컬러 디스플레이까지 갖추고 있었다.
코모도어 64는 1990년대 초까지 한 달에 거의 50만 대씩 팔렸다. 이 시점 이후로 개인용 컴퓨터의 판매는 수십 년 동안 지속적으로 늘었다. 컴퓨터는 가정과 직장에서 보편적으로 사용하는 도구로 자리잡아 재무, 인사, 회계, 영업 등 여러 분야의 반복 업무를 처리하는 데 사용됐다.
1983년 미국의 컴퓨터 과학자 프레드 코헨Fred Cohen은 최초의 컴퓨터 바이러스computer virus를 창조했다. 바이러스는 자신을 복제할 수 있고 플로피 디스크floppy disk를 통해 다른 개인용 컴퓨터로 쉽게 확산될 수 있었다. 그는 정당한 프로그램에 바이러스를 숨길 수 있었으므로 소스 코드에 액세스할 수 없는 사람은 그 사실을 알 수 없었다. 나중에 소프트웨어 보안의 선구자로 평가되는 코헨은 알고리즘을 가지고 유효한 소프트웨어에서 바이러스를 탐지하는 것이 거의 불가능함을 시연했다.
몇 년이 지난 후 1988년 또 다른 미국인 컴퓨터 과학자 로버트 모리스Robert Morris는 최초로 연구실 바깥으로 바이러스를 퍼뜨려 컴퓨터를 감염시켰다. 이 바이러스는 모리스 웜Morris Worm으로 알려졌는데 컴퓨터 바이러스의 자가 복제를 설명하는 ‘웜worm’이라는 용어가 이때 처음으로 사용됐다. 모리스 웜은 하루 만에 네트워크에 연결된 15,000대의 컴퓨터에 퍼졌다.
사상 최초로 미국 정부는 해킹을 공식적으로 규제할 것을 검토하기 시작했다. 미국 회계감사원US Government Accountability Office은 바이러스로 인한 피해가 1천만 달러에 달하는 것으로 추산했다.
모리스는 보호 관찰 3년, 사회봉사 400시간, 10,050달러의 벌금형을 받았다. 그는 미국 최초로 유죄 판결을 받은 해커가 되었다.
요즘 들어 해커 대부분은 바이러스로 운영체제를 감염시키기보다는 웹 브라우저를 대상으로 삼는다. 현대적 브라우저는 극도로 견고한 샌드박싱sandboxing을 제공하고 있어 사용자 허가 없이 브라우저 바깥에서 코드를 실행해 호스트 운영체제를 건드리기는 어렵다.
오늘날 해커가 웹 브라우저를 통해 액세스할 수 있는 사용자와 데이터를 주 대상으로 삼는다고는 해도 OS를 대상으로 하는 해커와 많은 유사성이 있다. 확장성(한 타깃에서 다른 타깃으로 이동)과 위장술(악성코드를 정당한 코드 사이에 숨김)은 웹 브라우저를 공격할 때 그대로 적용된다.
현재의 공격은 이메일, 소셜 미디어, 인스턴트 메시징 등을 통해 규모가 커졌다. 일부 해커는 단 한 곳의 악의적 웹사이트를 홍보하기 위해 정당한 네트워크나 진짜 웹사이트를 만들기도 한다.
악성코드는 전혀 문제가 없어 보이는 인터페이스 뒤에 숨겨져 있을 때가 많다. 피싱 공격(자격 증명credential 훔치기)은 소셜 미디어나 은행 사이트와 외형과 느낌look and feel이 거의 똑같은 웹사이트를 통해 일어난다. 해커들은 브라우저 플러그인을 통해 데이터를 훔치며 자기들이 소유하지 않은 웹사이트에 악성코드를 심는 방법까지 알아내곤 한다.
1.7 월드 와이드 웹의 부흥(2000년경)
1990년대에 만들어진 월드 와이드 웹은 1990년대 말부터 2000년대 초에 폭발적인 인기를 얻었다.
1990년대의 웹은 HTML로 작성된 문서를 공유하는 용도로만 사용됐다. 웹사이트는 사용자 경험을 신경 쓰지 않았으며 서버에 데이터를 입력해서 웹사이트의 흐름을 수정할 권한은 극소 수의 사용자에게만 주어졌다. [그림 1-4]는 1997년 애플 웹사이트(apple.com)의 모습으로 순수하게 정보성 데이터만으로 구성된 것을 볼 수 있다.
2000년대 초를 인터넷의 새로운 시대로 본다. 그 이유는 사용자가 제출한 데이터를 웹사이 트에 저장하고 사용자 입력을 바탕으로 기능을 수정하기 시작했기 때문이다. 이는 나중에 웹 2.0Web 2.0으로 일컬어진 핵심적인 발전이었다. 웹 2.0 웹사이트에서는 사용자가 하이퍼텍스트 전송 프로토콜(HTTP)을 통해 웹 서버에 입력을 제출할 수 있고, 입력을 저장해뒀다가 요청이 있을 때 제공하는 방식으로 사용자가 서로 정보를 공유하고 협력할 수 있었다.
이러한 웹사이트 구축의 새로운 관념은 웹 2.0을 지원하는 블로그, 위키피디아, 미디어 공유 사이트 등 현재의 소셜 미디어에 해당하는 것에 생명을 불어넣었다.
그림 1-4 1997년 7월의 애플 웹사이트이다. 데이터는 순수한 정보성이고 사용자의 가입, 로그인, 댓글 기능이 없으며 한 세션의 어떠한 데이터도 다른 세션까지 지속되지 않았다.
이와 같은 웹 관념의 급진적 변화는 웹을 문서 공유 플랫폼에서 애플리케이션 배포 플랫폼으로 변화하게 만드는 원인이 됐다. [그림 1-5]는 2007년의 애플 스토어 화면으로 이곳에서 물건을 살 수 있다. 오른쪽 상단에 계정 링크가 있는 것으로 보아 이 웹사이트가 사용자 계정과 데이터 지속성을 제공함을 알 수 있다. 계정 링크는 2000년대에도 애플 웹사이트에 존재했지만 아래쪽이 아닌 사용자 인터페이스user interface(UI)의 최상단으로 올라온 것은 2007년이다. 그전까지는 시험적으로 사용했거나 활용도가 높지 않았던 것으로 보인다.
그림 1-5 2007년 10월의 애플 스토어 화면. 스토어에 상품이 있어 온라인으로 구입할 수 있다.
이것은 웹사이트의 아키텍처 설계 방향의 큰 변화이며 해커가 웹 애플리케이션을 타깃으로 삼는 방식에도 큰 변화를 가져왔다. 그전까지는 서버와 네트워크를 보호하는 데 노력이 집중됐다. 해커가 10년 동안 노린 주요 공격 벡터였기 때문이다. 애플리케이션에 가까운 웹사이트가 부상하면서 사용자는 해커의 완벽한 타깃이 됐다.
해커가 활동하기에 더할 나위 없이 좋은 환경이었다. 사용자는 웹을 통해 중요 기능에 액세스하게 될 참이었다. 군용 통신, 은행 송금 그 외 많은 일이 결국 웹 애플리케이션(데스크톱 애플리케이션처럼 작동하는 웹사이트)으로 바뀔 것이었다. 안타깝게도 공격 대상에 오른 사용자를 보호하기에 보안 통제는 충분치 않았다. 해킹이나 인터넷의 메커니즘에 대한 교육이 부족했다. 2000년대의 초기 인터넷 사용자 중 인터넷의 작동 원리까지 이해하는 사람은 드물었다.
2000년대 초 발생한 최초의 대규모 DoS 공격으로 야후, 아마존, 이베이 등 유명 사이트가 다운됐다. 2002년에는 브라우저를 위한 마이크로소프트 ActiveX 플러그인에서 악의적 의도를 가진 웹사이트에 의해 원격 파일 업로드와 다운로드가 호출될 수 있는 취약점이 발견됐다.
2000년대 중반까지 해커들은 웹사이트 피싱을 이용해 자격 증명을 훔쳤다. 당시 이러한 웹사이트 사용자를 보호할 적절한 통제가 이뤄지지 않았다.
이 시기에 해커의 코드를 정당한 웹사이트 내 사용자 브라우저 세션에서 실행할 수 있게 해주는 사이트 간 스크립팅 취약점이 웹에 만연했다. 브라우저 벤더가 그러한 공격에 대비한 방어를 구축하기 전이었다. 2000년대 해킹 시도의 상당수는 웹 기술이 단일 사용자(웹사이트 소유자)를 위해 설계된 것에 따른 결과였다. 이러한 기술을 다수의 사용자 사이에 데이터를 공유하는 시스템 구축에 사용할 경우 큰 문제를 일으켰다.
1.8 현대의 해커(2015년 이후)
지금까지 논의한 해킹은 이제부터 설명할 내용을 위한 기초 작업이다. 1930년대 에니그마의 개발과 암호 분석을 통해 보안의 중요성과 함께 보안을 깨뜨리려는 노력에 대한 통찰을 얻었다.
1940년대 보안 자동화의 초기 사례도 살펴봤다. 이 사례는 공격자와 수비자 사이에 계속되는 전투에 의한 것이었다. 에니그마의 기술이 발전함에 따라 수작업의 암호 분석 기법으로는 깨뜨릴 수 없게 됐다. 앨런 튜링은 향상된 보안을 무너뜨리기 위해 자동화를 구축했다.
1950~1960년대의 해커는 요즘의 팅커러tinkerer2와 비슷한 점이 많았다. 기술을 설계할 때 악의적인 사용자를 고려하지 않은 대가가 얼마나 큰지도 살펴봤다. 큰 규모로 넓은 사용자 기반에 배치할 기술을 설계할 때는 반드시 최악의 시나리오를 고려해야 한다.
1980년대에는 개인용 컴퓨터가 인기를 끌었다. 현대에 주목을 받는 유형의 해커가 이 시기에 등장했다. 이 해커들은 소프트웨어의 힘을 이용하고 정당한 애플리케이션에 바이러스를 숨겼으며 네트워크를 통해 바이러스를 급속도로 전파시켰다.
마지막으로 월드 와이드 웹에 웹 2.0 기술이 급격히 확산됨에 따라 우리가 인터넷을 대하는 방식이 바뀌었다. 문서를 공유하는 매체였던 인터넷이 애플리케이션을 공유하는 매체로 탈바꿈했다. 그 결과 네트워크나 서버가 아니라 사용자를 노리는 새로운 유형의 익스플로잇이 등장했다. 이것은 근본적인 변화이며 오늘날에도 해커는 데스크톱 소프트웨어와 운영체제가 아니라 브라우저를 통해 웹 애플리케이션을 노린다는 점에서 여전히 유효하다.

2 옮긴이_
코딩 교육 전문가인 미첼 레스닉(Mitchel Resnick) MIT 석좌교수와 MIT 미디어랩 에릭 로젠바움(Eric Rosenbaum) 등은 학교 등에서 이뤄지는 메이킹(making) 활동이 일정한 지침에 따라 이뤄지는 것의 교육적 한계를 지적하고 놀이와 같이 실험적이고 반복적인 활동을 통해 목표를 지속적으로 재평가하고 새로운 방식과 가능성을 탐구하는 접근 방식으로 팅커링(tinkering)을 제시했다. 팅커링 활동을 하는 사람을 팅커러라고 한다.
이 책을 쓰기 시작한 2019년으로 넘어가보자. 웹에는 수십억 달러 규모 회사의 웹사이트가 수 천 개 존재한다. 모든 매출이 웹사이트를 통해 발생하는 회사도 많다. 구글, 페이스북, 야후, 레딧Reddit, 트위터와 같은 회사들이 그렇다.
유튜브에서는 사용자가 서로 교류할 수 있으며 자체적인 애플리케이션을 제공한다(그림 1-6). 댓글, 영상 업로드, 이미지 업로드를 모두 지원한다. 이러한 업로드 기능에서 업로더는 누구에게 콘텐츠를 보여줄 것인지에 대한 퍼미션permission을 다양하게 설정할 수 있다.
호스팅되는 데이터의 상당량이 세션 간에 지속성을 가지며 변경된 기능은 알림을 통해 실시간으로 사용자에게 전달된다. 또한 중요 기능의 상당수가 서버가 아니라 클라이언트(브라우저)에서 실행된다.
그림 1-6 현재 구글 소유인 유튜브는 웹 2.0의 환상적인 예다.
전통적인 데스크톱 소프트웨어 회사들은 이제 제품 라인업을 웹으로 옮기려 한다. 이것을 클라우드라고 부른다. 간단히 말하면 서버들의 복잡한 네트워크라고 할 수 있다. 그 예로 어도비Adobe는 크리에이티브 클라우드 구독자에게 포토샵과 같은 어도비 도구를 웹을 통해 제공한다. 마이크로소프트 오피스는 이제 워드와 엑셀을 웹 애플리케이션으로 제공한다.
웹 애플리케이션에서 더 많은 매출이 발생하는 만큼 중요성은 그 어느 때보다 높아졌다. 오늘날 웹에 존재하는 애플리케이션들은 익스플로잇의 대상이 되기 충분할 만큼 무르익었으며, 공격자가 익스플로잇에서 기대할 수 있는 보상은 매우 높아졌다.
해커와 보안을 중시하는 엔지니어 모두에게 최고의 시대임에 분명하다. 양쪽 모두 수요가 높지만 법적 관점에서는 서로 반대편에 있다.
브라우저는 10년 전에 비해 훨씬 발전했다. 이러한 진보에는 새로운 보안 기능도 포함된다. 인터넷에 액세스하는 네트워킹 프로토콜도 그만큼 발전했다.
현대적인 브라우저는 동일 출처 정책(SOP)라는 보안 사양에 의해 서로 다른 출처(웹사이트)를 엄격하게 격리한다. 이는 두 웹사이트가 동시에 열려있거나 한 곳이 다른 곳에 iframe으로 임베드되어 있다 하더라도 한 웹사이트가 다른 웹사이트에 액세스할 수 없음을 의미한다.
또한 콘텐츠 보안 정책Content Security Policy(CSP)이라는 새로운 보안 구성도 적용된다. CSP에서는 웹사이트 개발자가 스크립트를 HTML에서 인라인으로 실행할 수 있는지와 같은 것에 대해 여러 보안 수준을 지정할 수 있다. 이것은 웹 개발자가 일반적인 위협으로부터 애플리케이션을 보호하는 데 도움이 된다.
웹 트래픽 전송의 주된 프로토콜인 HTTP도 보안 측면에서 많은 개선이 있었다. HTTP는 네트워크를 통해 전송되는 데이터에 대한 엄격한 암호화를 강제하는 SSL과 TLS3 같은 프로토콜을 적용해 중간자 공격을 성공적으로 수행하기가 매우 어려워졌다.
이와 같이 브라우저 보안이 향상된 결과로 요즘 들어 해커들이 성공한 공격은 웹 애플리케이션에서 실행되는 로직을 대상으로 한 것이 대부분이다. 브라우저 자체를 공격하는 것보다 애플리케이션 코드의 버그를 악용해 웹사이트를 뚫기가 훨씬 쉽다. 지금의 웹 애플리케이션은 규모가 전보다 몇 배는 더 커지고 과거에 비해 훨씬 복잡해졌는데 이는 해커에게 유리하게 작용한다.
현재 잘 알려진 애플리케이션은 수백 개의 오픈 소스 의존성이 있고 다른 웹사이트 및 여러 종류의 복수 데이터베이스와 통합된다. 또한 단일 지역이 아닌 여러 지역의 웹 서버에서 서비스하는 경우가 많다. 이런 웹사이트는 익스플로잇 성공 확률이 높으며 이 책에서도 이러한 유형의 웹 애플리케이션을 주로 다룬다
요약하면 현대의 웹 애플리케이션은 과거에 비해 더 크고 복잡하다. 이제 여러분은 해커의 입장에 서서 애플리케이션 코드에 존재하는 논리적 버그를 익스플로잇하여 웹 애플리케이션에 침투하는 것에 집중한다. 이러한 버그는 웹 애플리케이션의 사용자 상호작용 기능이 발전함에 따른 부작용으로 발생하곤 한다.
지난 10년간 해커들은 서버, 네트워크, 브라우저를 공격하는 데 집중했다. 요즘 해커는 웹 애플리케이션 코드의 취약점을 익스플로잇하여 침입하는 데 대부분의 시간을 투자한다.
1.9 마치며
소프트웨어 보안과 보안을 우회하려는 해커의 기원을 찾아 한 세기를 거슬러 올라가보았다. 현대의 소프트웨어는 과거의 기술에서 얻은 경험을 교훈 삼아 구축되며 소프트웨어 보안도 이러한 점은 마찬가지다.
과거의 해커들은 요즘과 달리 애플리케이션을 타깃으로 삼았다. 애플리케이션 스택 일부의 보안이 더욱 강력해지면서 해커는 새롭게 떠오르는 기술을 타깃으로 삼고 있다. 새로운 기술들의 보안 수준은 균일하지 않으며 엔지니어들은 시행착오를 겪으면서 적절한 보안 통제를 구현해 나간다.
단순한 웹사이트의 보안에 구멍이 많았던 것처럼(특히 서버와 네트워크 수준) 현대 웹 애플리케이션은 해커에게 새로운 공격 영역이 되어 익스플로잇이 일어나고 있다. 이 글에서 간략히 다룬 역사가 중요한 이유는 오늘날 보안에서 웹 애플리케이션에 대해 우려하는 부분 역시 되풀이 되어 일어나는 과정의 일면임을 드러내기 때문이다. 미래의 웹 애플리케이션은 더 안전해지겠지만 해커는 또 다른 공격면(아마도 RTC나 웹 소켓 등)을 찾아낼 것이다.
『웹 애플리케이션 보안』은 현대 웹 애플리케이션의 공격과 방어를 다룬다. 그러나 그것이 이 책에서 배우는 전부는 아니다. 궁극적으로 보안 전문가로서 보안 문제를 해결하는 자신만의 방법을 찾는 기술이 중요하다. 이후의 내용을 읽고 보안과 관련해 비판적 사고와 문제해결 능력을 키울 수 있다면 새롭거나 평범하지 않은 익스플로잇이 나타났을 때나 과거에 접하지 못한 보안 메커니즘으로 앞이 막혔을 때 동료들보다 한발 앞서 나갈 수 있을 것이다.
· · ·
댓글 입력
자료실

최근 본 상품0