전문가칼럼

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

아듀 보안과 해킹

전문가칼럼
DBMS별 분류
Etc
작성자
dataonair
작성일
2002-08-01 00:00
조회
10052





아듀 보안과 해킹

김성우 shinalx@kuee.korea.ac.kr


이번에는 잠깐의 이별 을 알리는 말로 컬럼 을 시작하려 한다. 2000년 3월 ‘음성 보안’을 시작으로 한 보안 과 해킹 테크니컬 컬럼이 어언 2 년을 넘겼다. 기억하건데 근래 7~8년간 아마 가장 장수했던 컬 럼이 아닌가 생각된다. 그러나 보 안과 해킹이라는 주제가 가진 한 계성 때문에, 그리고 필자의 기력 쇄진으로 인해 보안과 해킹 컬럼 에 포즈(Pause) 버튼을 눌러야 할 것 같다. 간단히 몇 줄로 작별 인사를 할까 했지만, 그동안 필자 의 컬럼을 아껴준 독자들에 대한 예의가 아닌 듯 싶었다. 간략히 그 간의 보안과 해킹 컬럼의 에피소 드와 흐름을 짚어보고 최근과 가 까운 미래의 프로그래밍 이슈로 그 아쉬움을 마무리하고자 한다.

2000년 1월, 겨울 마소로부터 보안과 해킹을 주제 로 컬럼을 써보지 않겠느냐고 제 의를 받았을 때‘그래 진짜로 동 작하는 해킹을 알려주마’라는 사 명감으로 눈에서 불이 나올 정도 였다. 당시 동작하지 않는 예전 소스와 유닉스 계열의 소스가 태 반인 해킹 책들이 워낙 짜증을 불 러일으키던 차였기 때문이었다. 범죄로의 오용에 대한 의견은 일 부 부작용이 있겠지만, 개방하고 열어 놓음으로써 양성화시키자는 취지를 밝힌바 있다(2000년 9월, 전사 비루스의 최후). 그러나 손쉽게 접근할 수 있었던 자 살 사이트가 실제 사람들의 자살을 모의하고 실행하게 만드는 것을 보며 양성화가 어려운 이유도 있음을 알게 되었다. 이러 한 연유로 2001년 여름부터는 실제 해킹보다 그 근원 원리와 생각하는 절차를 설명하려 애를 썼다. 해킹이라는 주제의 한 계에 부딪히는 순간이다.


알고리즘 해킹과 프로그램 해킹

해킹을 분류할 수 있는 여러 가지 방법이 있지만, 프로그래머 의 관점에서 볼 때 알고리즘 해킹과 프로그램 해킹으로 분류 가 꽤 쓸만한 듯 하다. 암호화, 복호화, 인증, 서명, 해싱 등의 암호로 요약되는 알 고리즘 해킹은 수학자들의 영역에 속하기 때문에 아무래도 이 영역에서는 프로그래머들의 입지가 그리 크지는 못하다. 아무 리 잘해봐야 수학자들보다 잘할 수 없으니 말이다. 프로그램 해킹은 프로그램이 내부에서 프로그램이 어떻게 흘러가지는 지, 즉 IP(Instruction Pointer)가 어떻게 흐르는지 그림이 그 려지면 해킹을 하는 일은 어렵지 않다. 그 흐름을 어디선가 끊 고 우리쪽으로 돌리면 되기 때문이다(2001년 2월 특집). 한 편 알고리즘은 프로그램 위에서 동작하기 때문에 프로그램 단 에서 해킹이 가능하다면 알고리즘 단까지 갈 필요가 없으니 프로그램 해킹이 우선한다는 것을 기억해 두자.

사실 프로그램 해킹은 프로그래머로서 어느 경지에 이르면 자연스러운 것이다. 2002년 여름 현재 마소에서‘운영체제 오디세이 2002’를 연재하고 있는 안윤호 씨를 집 근처에 바 래다 준 적이 있다. 당시 필자가 보안과 해킹 컬럼을 연재중이 라고 소개를 하자 그는 이렇게 말했다.

“해킹은 커널 레벨에 내려가면 자연스레 알게 되는 것이지”

극단적 근원 추구는 극단적 허무주의로

몇 년간 보안과 해킹에 대해 공부, 고민 그리고 정리를 하다 보니 자연스레 해킹이란‘근원으로 돌아가라(2001년 9월, 근 원으로)’라는 사상적 배경의 산물이라는 데까지 이르게 된 것 은 어쩌면 당연한 일이었는지 모른다. 이 근원으로 돌아가라 는 사상은 너무 광범위하고 적용 범위가 넓어 당시에는 어떤 결과를 낳을지 많은 부분을 예측하지 못하였는데, 긍정적인 면 못지않게 부작용이 있음을 고백하는 바이다. 실제로 필자 는‘근원으로’라는 사상에 적응하고 올바르게 생각하는 데 적 지 않은 진통이 따랐고, 지금도 혼란스러운 부분이 많다.

너무 근원을 추구해 버리면 하단의 것들이 하찮게 느껴지기 때문에 사소한 일들에 대한 기억력이 감소하게 되고 관심도 가지 않게 된다. 근원 단의 패러다임을 흔들만한 이슈가 생겨 야 흥미를 느끼게 되고 기술 발전트리 하단의 사건 사고 그 리고 변화에 대해서는 감흥을 느끼기 힘들다. 이는 대부분의 사고, 사건이 의미 없는 것으로 여겨지는 허무주의라는 형태 로 나타날 수 있다. 극단적 근원 추구는 극단적 허무주의를 초 래할 수 있는데 허무주의는 슬럼프의 원흉이다! 마지막으로 필자가 생각하는 과거로부터의 프로그래밍 환 경 변화와 현재 그리고 가까운 미래의 프로그래밍 흐름을 제 시하고자 한다.


학습 방법의 변화

처음 마소를 읽기 시작했던 8년 전에 비하면 참으로 변한 것 이 많은데, 가장 두드러진 것 중에 하나는 학습 방법의 변화이 다. 예전엔 C만 제대로 알아도 웬만한 프로그램을 작성할 수 있었다. C로 데이터베이스, 사용자 인터페이스, 통신 루틴을 직접 구현하고 심지어 OS까지 건드려가며 그럴 듯한 프로그 램을 만들 수 있었다. 그러나 지금은 제 구실을 할만한 작은 프로그램을 짜려고 해도 알아야 할 것이 너무 많다. OS, 프로 그래밍 언어, 네트워크, 데이터베이스, 알고리즘, 그리고 근간 에는 소프트웨어 공학까지 철저히 공부할 것을 요구하고 있 다. 간단한 프로그램을 하나 짜려고 해도 미리 익혀야 할 것이 너무 많아서 점점 프로그래머들의 현장 투입기간이 늘어날 것 이 짐짓 걱정되었다. 전산 전공의 학부도 5~6년제로 바꾼다 해도 그리 이상하게 생각하지 않겠다고 여겨질 정도니 말이 다. 그러나 이는 기우였다.

IT 출판업계가 불황이긴 해도 역시나 프로그래밍 서적을 출판하는 출판사는 세기 힘들만큼 여럿이고 덕분에 한 주제에 대해서 여러 서적을 선택할 수 있는 다양성이 보장되고 있다. 인터넷 서점에서는 서평과 판매지수가 있어 가장 좋은 책을 고르는 데 큰 도움을 주고 있다. 인터넷의 수많은 프로그래밍 사이트의 FAQ와 동호회 역시 시행착오를 없애는 데 일조하 고 있다. 시행착오율이 0%에 가까워져 가는 것이다. 또한 인구 대비 보급율 세계 1위의 초고속망 덕분에 유수의 프로그래밍 관련 강좌를 방안에서 원할 때마다 들을 수 있다. 이 곳의 강사들도 여럿이어서 가장 뛰어난 강의를 선택할 수 있으니 어려운 기술도 최고의 기술자들에게 초고속으로 배울 수 있다. 조는 학생을 깨우거나 주의를 집중시킬 목적의 오프 라인 교육의 잡담 등이 빠지기 때문에 평균 2~3배의 동일 시 간 대비 학습 압축율을 자랑한다. C로 간단한 프로그램을 짜는 데 1년이 걸렸고 C++로 객체 지향을 이해하는 데 2년이나 걸렸던 것을 후배들은 1/10 의 기간 안에 습득할 수 있는 환경이 미래가 아닌 바로 지금이 다. 이같이 기술이 어려워지는 것 못지않게 학습 환경이 좋아 지고 있기 때문에 전산 전공의 학부가 5~6년제로 늘어날 일 은 당분간 없을 것이다.


닷넷, 누가 살아남을까

워낙 민감하기도 하고 언론들도 직접적인 언급을 자제하고 있 는 터라 궁금한 독자들이 많을 텐데, 대세는 아직 관망세인 듯 싶다. 그 첫 번째 증거는 서적에서 찾아볼 수 있다. 마이크로 소프트 프레스(MS Press)에서 닷넷 관련 서적이 상당수 번 역되어 나왔지만, 번역서는 국내 필진이 직접 쓴 책에 비해 전 달력이 많이 떨어지기 때문에 붐을 조성하기에는 역시나 부족 했다. 예전 비주얼 스튜디오 5, 6 버전이 그렇게 붐을 일으키 고 인기를 끌었던 것은 이상엽, 김용성, 전병선, 김태영 등의 저자들이 쓴 슈퍼 베스트셀러의 덕이 크다. 그러나 아직 닷넷 관련한 국내 저자 중 슈퍼 베스트라 불릴만한 책이 아직 없고 몇몇 비주얼 스튜디오 5, 6 버전의 베스트셀러의 닷넷 버전책 도 한결같이 별 인기를 끌지 못하고 있다.

닷넷 자체에 의문표를 나타내는 측도 설득력이 있다. 비주얼 C++를 사용하던 프로그래머들이 가장 걸고 넘어지는 부 분은 닷넷의 성능(퍼포먼스)이다. ‘C로 쓴 알고리즘’의 저자 이자 마소에서 COM/DCOM 컬럼을 연재한 바 있는 알고리 즘의 대가 이재규 씨는 다음과 같은 의견을 제시했다.

“동일한 알고리즘의 경우 닷넷의 성능이 확연히 떨어지기 때문에 성능을 요 구하는 애플리케이션의 경우 기존 Win32 프로그램이 계속 우위를 보일 것 같습니다.”

반면 하반기부터 닷넷쪽으로 분위기가 반전될 것이라는 의 견도 적지 않은데, 마이크로소프트 아시아 MVP이자 컴퓨팅 존의 운영자인 류한석 씨는 다음과 같이 매우 설득력 있는 의 견을 제시했다.

“IT 환경의 흐름을 보면 스크립트 언어와 컴파일 언어가 번갈아 가며 대세를 이루었습니다. 2~3년전부터 최근까지 ASP, PHP 등의 웹 스크립트 언어가 대세여서 이 사이의 프로젝트로 프로그래밍을 시작한 사람들은 컴파일 버튼 도 안 눌러본 웹 프로그래머가 대부분입니다. 실제로 최근 절정기를 맞았던 스크립트 언어에서 자연스레 컴파일 언어에 대한 요구가 일어나고 있는데 그 대안이 닷넷이 될 것입니다. 닷넷은 스크립트 언어의 간편함을 유지하면서 컴 파일 언어의 단점인 배포의 문제를 닷넷 프레임워크 레벨에서 해결해 줌으로 써 컴파일 언어의 성능도 얻을 수 있을 테니까요.”“C#과 VB.NET의 경우 결과물 코드가 같기 때문에 퍼포먼스의 경우 같습니 다. 이런 상황에서는 문법 싸움이 됩니다. 누구의 문법이 더 쉬우냐 그것이죠. C#과 VB.NET의 경우 문법이 어떤 게 더 쉬울까요 그것은 물어 보나 VB.NET이죠.”

C++는 높은 퍼포먼스 때문에 알고리즘과 수학 실시간 애 플리케이션 개발 등의 높은 퍼포먼스를 요구하는 그 나름대로 의 영역을 계속 차지할 것이다. C# 역시 나름대로의 영역을 구축중인데, 자바와 비슷한 C#의 문법은 자바 프로그래머들 에게는 매우 친숙하고 매력적인 것이어서 MS의 개발 언어 솔 루션를 접하고자 하는 자바 프로그래머들을 흡수하는 효과를 지닌다. IT 교육센터의 줄어드는 자바 강좌가 닷넷으로 대체 되고 커리큘럼에 C#이 강화되고 있는데, 대표적인 프로그래 머 전문 교육기관인 비트교육센터의 경우 올 초 세 개이던 자 바 강좌가 한 개로 축소되고 닷넷 강좌가 두 개 신설된 것이 그 좋은 예라 하겠다.

기나긴()여정을 정리하며

가장 많은 질문은 필자가 소개했던 API 훅킹이 제대로 동작 하지 않는다는 것인데, 마소 99년 11, 12월의 기사와 필자의 책에 소개했던 매트 피에트렉(Matt Pietrek)의 방법은 윈도 우 98 위에서 밖에 제대로 동작하지 않음을 밝히는 바이다. 윈도우 2000 이상에서는 제프리 리히터(Jeffrey Richter)가 그의 저서「Applications for Windows 4th Ed.」에서 공개한 방법을 사용하기 바란다. 근간에 번역본이 나왔으니 참고하기 바란다.

오타표에 대한 질문도 많은데 개인적으로 너무나 마음이 아픈 부분이다. 교정을 본다고 나름대로 많이 보았는데 그래도 적지 않은 오타가 있었다. 필자의 모든 홈페 이지가 문을 닫은 상태여서 오타표를 올리지 못하고 있었던 데다가 동시에 오타표를 백업해 두었던 노트북마저 고장이 나버려 그나마 오타표 자체도 사라진 상태였는데 다행히 최근에 노트북의 데이터를 살려 오타표를 복구해 놓았다. 아마도 필 자와 관련된 서버와 컴퓨터가 모두 해킹을 당한 것이 아닌가 하는 생각이 강하게 들어 함부로 홈페이지도 만들지 못하는 상황이다(필자는 www.virii.pe.kr, www.virii.co.kr라는 환 상적인 도메인도 구해 놨지만, 이 해킹 공포 덕분에 간단한 엑 셀 파일 하나 올릴 웹 서버도 찾지 못하고 있다.

누가 이런 도 메인에 자료를 올릴 수 있도록 서버의 공간을 할애해 줄 무모 한 운영자가 있겠는가). 오타표가 필요한 분은 필자에게 메일 로 연락해 주기 바란다. 그동안 필자의 보안과 해킹 컬럼을 아 껴 주었던 독자들에게 감사를 전하며 다른 글과 모습으로 뵙 게 될 날을 기대한다


정리 : 박은정


제공 : DB포탈사이트 DBguide.net p1.gif