퇴마록 세계편 2권 16화 – 아라크노이드 1 : 거미의 탄생

랜덤 이미지

퇴마록 세계편 2권 16화 – 아라크노이드 1 : 거미의 탄생


거미의 탄생

네트워크는 항상 사람들로 붐빈다. BBS와 연결되는 전화선과 모뎀들, 그리고 인터넷이나 LAN에 연결된 회선들까지도 겉으로 보면 별것 아니지만, 실상 그 안에는 전자와 파동들이 엄청난 속 도로 헤매고 있다. 그리고 가시화되지 않은 작은 세계의 안에도 나름대로의 질서가 있고 법칙이 적용되어 엄청난 작업들을 거 의 오차 없이 수행해 가고 있다.

인터넷에 접속하는 것이 자신의 3대 습관(잠, 밥, 그리고 접 속)이라고 자처하는 전산과 대학원생 미셸은 며칠간 시험에 시 달리다가 묘한 아이디어를 얻었다. 아침에 잠을 깨어 나오는데 문 앞에 서 있는 나무에 거미 한 마리가 밤새 줄을 쳐 놓았던 것 이다. 거미줄무늬는 사람의 지문과 같아서 똑같은 것이 하나도 없다고 어디선가 들은 기억에 이끌려, 미셸은 거미줄을 물끄러 미 들여다보고 있었다.

거미줄은 정말 완벽한 균형미를 보여 주고 있었다. 날줄과 씨 줄이 절묘하게 배합되어 불어오는 바람에 하늘거리는 유연함과, 언제라도 제물이 오면 옭아맬 준비가 되어 있는 긴장감. 미셸은 거미줄의 모양을 보고 있다가 자연스럽게 거미줄의 형태가 네트 워크를 구성하는 회선과 닮았다는 생각을 했고 곧이어 어떠한 프로그램의 알고리즘을 머리에 떠올렸다. 아주 재미있고 기발한 프로그램을.

미셸은 그날부터 작업에 몰두했다. 시험이 끝나지도 않았고, 제출해야 할 리포트도 여러 개 남아 있었지만 더 재미있는 작업 이 있었으므로 다른 데 신경을 쓸 시간이 시험공부에 쓸 시간 조차도 없었다. 과거에 미셸은 라이프 게임에 심취했던 적이 있었다. 어떤 형태의 패턴을 심고 환경을 설정해 주는 것이다. 그러면 꿈틀꿈틀 자라나거나 소멸해 버리는, 또는 자기와 같은 형태의 것을 계속 만들어 내는 데 성공하기도 한다. 모니터상의 작은 문양들을 보면서 창조주가 된 듯한 알 수 없는 희열을 느꼈다.

그 아이디어를 프로그램에 심고 싶었다. 그러나 ‘거미’와 비슷 한 형태의 프로그램을 만들기 위해서는 퍼스널 컴퓨터 정도로는 만족할 수 없었다. 모든 퍼스널 컴퓨터에 이식이 가능하고 무엇보다 넓디넓은 네트워크를 배경으로 해야 했다. 네트워크상에서 도 자생할 수 있는 프로그램을 만들기 위해서는 하드웨어에 대 한 자세한 이해가 필요했다. 다행히 네트워크 노드의 대부분은 유닉스를 운영 체제로 하고 있었다. 또 퍼스컴들은 숨은 명령어 몇 개로 간단히 유틸리티를 만들면 되는 것이었고, 퍼스컴이라 봐야 기종이 몇 가지나 되겠는가? 미셸은 한때 아르바이트로 네 트워크 회사에서 일해 본 적도 있었고, 유닉스 체제에 대해서도 잘 알고 있었다. 즉, 미셸이 만드는 프로그램의 기본 골격은 운 영 체제상에서 각 주변 기기 및 외부 장치에 거미줄같이 얽혀지 는 구조를 스스로 키워 나갈 수 있는, 거미줄처럼 여러 곳을 얽 어서 전체 구조를 이루고 있는 프로그램이었다.

미셸은 프로그램의 이름을 ‘아라크노이드’라 붙였다. 왜냐 하면 그 프로그램이 거미의 생활 양태와 거미줄의 모양을 이용 한 것이기 때문이었다. 간단히 설명하자면, 프로그램은 각각의 DNA라 할 수 있는 기본 코드를 갖는다. 기본 코드는 주 시스템 에서 만들어지는데, 주변 기기 및 네트워크의 여러 기기들의 특 성을 스스로 파악하는 긴 코드를 자동 생성한다. 이 코드는 ‘엄마 거미’라고 이름 붙인 것으로, 일단 ‘유’ 격인 DNA의 기본 코드를 생성한 뒤에는 증거를 남기지 않기 위해 스스로 소멸한다. 그다음, 거미줄의 씨줄 격인 네트워크를 통하여 기본 코드가 각 네트워크의 하드 디스크로 우르르 쏟아져 들어간다. 그리고 주변 시스템을 통해 통신을 타고 ‘엄마 거미’로 다시 커 가는 것 이다. 그렇게 단순히 생장해 나가는 것만으로는 의미가 없기 때 문에, 작동을 하는 것도 있어야 했다. 그러려면 시스템 차원의 제어가 필요했다.

미셸은 없는 솜씨를 발휘하여 그림을 몇 개 그렸다. 거미줄과 흉악하게 생긴 거미 몇 마리…………. 원래는 좀 예쁘게 그릴 생각이 었으나 그려 놓고 보니 솜씨가 없어서인지 을씨년스럽고 그로테 스크한 그림이 되고 말았다. 하긴 아무 시스템에나 그림이 뜨려 면 그림 자체가 흑백이어야 했으니 어쩔 수 없었지만 그런 것이야 아무렴 어떤가?

프로그램을 작성할 때는 게임처럼 생각하고 만들었는데, 만들 다 보니 바이러스의 형태를 띠게 되어서 약간은 찝찝했다. 완성 을 해도 퍼뜨릴 수는 없는 것 아닌가. 적어도 맨 처음에는 이 프 로그램을 장착시킬 네트워크가 있어야 한다. 그러나 순수하게 새로운 것을 만들겠다는 의욕이 미셸으로 하여금 몇 날 며칠 밤 을 꼬박 새우게 만들었다. 그사이에 어떤 일이 일어났는지 아는 사람은 하나도 없었다. 미셸은 밤잠을 잊고 작업에 몰두하다가 가끔씩 쓰러져 잠이 들곤 했고, 그럴 때면 어김없이 이상한 꿈을 꾸었다. 어떤 사람이 나타났는데 잠에서 깨어나면 그 꿈의 내용 을 기억하지 못했다. 그렇게 잠을 깬 다음에는 전날 그를 괴롭히 던 ‘아라크노이드’ 코드의 여러 가지 문제들에 대한 해결점을 찾을 수 있었다.


시스템 네트워크 담당자인 알렉은 친구인 미셸이 불쑥 나타나 종이 한 장을 휙 하고 내밀자 다소 놀라서 미셸의 얼굴을 쳐다보 았다. 미셸의 얼굴은 수척했고 여러 날 햇빛을 보지 못한 것처럼 비쩍 말라 있었다. 미셸이 입을 열었다.

“이걸 돌릴 수 있게 해 줘. 시스템의 일부만 이용해서………. 확인해 보고 싶어.”

알렉은 종이쪽지를 쳐다보았다. 거기에는 급히 갈겨쓴 듯한 필체로 이상한 코드에 대한 기능 설명이 씌어 있었다. 코드의 제 목은 범용 컴퓨터에 올리기 쉽도록 영어로 되어 있었고 이름은 ‘아라크노이드’였다.


(program Arachnoid’]

• 종류: 바이러스성 코드

• 기능

1. 메인 프레임의 시스템 커널 영역에 주 프로그램 ‘엄마 거미’ 장착.

2. ‘엄마 거미’는 시스템의 상태를 파악하여 각각의 ‘유충’ 코드를 스스로 작성.

3. 네트워크에 연결된 모든 주변 시스템에 ‘유’ 코드를 퍼뜨림.

4. ‘엄마 거미’는 스스로 파괴됨.

5. 각 ‘유충’ 코드는 네트워크의 횡적인 연결을 이용하여 점 차 ‘엄마 거미’로 성장.

6. 반복.

• 특징

1. 각 ‘유충’ 코드는 시스템상에 있는 모든 주변 기기의 기억 장치에 중복하여 데이터를 저장함. 각 데이터가 파괴되었 을 때에는 다른 곳에 있던 데이터를 찾아서 다른 주변 기 기나 하드 디스크의 파일에 재저장-복구함.

2. 각 데이터의 크기가 커지면 주변 기기별로 ‘유충’을 만듦. 이는 시스템의 커널 코드와 오퍼레이팅 시스템의 주기적 관찰로 시스템의 완벽한 통제가 된 이후에야 독립된 ‘유 충’으로 성장됨.

3. 이 코드의 목적은 소프트웨어가 독립적 유기체의 역할을 할 수 있는가의 테스트임. 그 결과를 알기 위해 각 ‘엄마 거미’가 자폭하거나 ‘엄마 거미’에 의해 유충들이 파괴될 때 특정한 그림을 내보냄.

이상 programmer 쟝 쉥 미셸.


알렉은 어안이 벙벙해져서 물었다.

“이게 뭐냐? 이걸 시스템에 올려 달라고?”

“응, 오류는 없을 거야. 하지만 정말로 이 프로그램이 돌아가 는지 확인해 보고 싶어.”

미셸의 눈은 흐릿했고 충혈되어 있었다. 그러나 그보다는 신들린 듯한 눈빛에 알렉은 알 수 없는 전율을 느꼈다.

“안돼! 이건 바이러스성 코드잖아? 이런 걸 시스템에 올릴 수는 없어!”

“그러니 시스템의 일부만 이용하여 해 보자는 것 아냐?”

“그러다 네트워크가 마비되면 어쩌구! 그럴 수는 없다구!”

“며칠 후에 네트워크 정비 기간이 있어. 그때 시험하면 되잖 아. 내가 책임지고 거미를 죽일게.”

“정비라 해도 일부의 정비일 뿐이야. 이 내용대로면 프로그램 이 네트워크상의 모뎀들을 타고 퍼질 텐데 어떻게 다 죽인………… 아니, 지운단 말야? 이게 말이 되는 코드라고 생각하니?”

“왜 말이 안 된다는 거야?”

“여기에는 결정적 오류가 있어. 다른 것들도 많이 있지만, 일 단은 이 뭐야….. 아라크노이드? 흠, 이 거미 코드는 맨 처음 슈 퍼 유저 레벨에서 커널에 인스톨해야 돼. 분명 엄마 거미는 휘하 의 주변 기기들을 지배하는 오퍼레이팅 시스템의 커널 루틴상에 설치되어야 한다는 거야. 누가 그렇게 하겠어? 자칫 시스템을 말아먹을지도 모르는데.”

“그러니 부탁하는 것 아냐.”

“안 돼. 그리고 실현 불가능한 부분이 많아. 이대로라면 엄마 거미 자체가 엄청난 데이터를 쌓아야 하는데, 그걸 버텨 낼 만한 오퍼레이팅 부분의 용량을 확보하기 위해선 페이징 속도가 빠른 컴퓨터가 있어야 하잖아. 그런 컴퓨터는 거의 없어. 엄마 거미가 되기 전에 시스템이 다운되기 때문에 유충이 엄마 거미로 부화하지 못한다구.”

“아니, 그걸 막기 위해서 데이터 분리법을 쓸 거야.”

“그러면 네트워크 로드가 엄청나게 커질 텐데? 프로토콜의 싱 크로가 안 될지도 몰라!”

“그것도 다 생각해뒀어!”

미셸은 알렉에게 코드에 대해서 장황하게 설명하기 시작했다. 분명 코드 자체는 독창성이 있는 프로그램이었다. 그러나 원리 가 너무 복잡했고 시스템의 부담이 과중했다. 그리고 이 코드는 맨 처음, ‘엄마 거미’의 상태에서 출발해야만 한다는 단점이 있 었다. 미셸은 열을 올리면서 아라크노이드에 대해 설명을 했지 만, 알렉은 잘 알아들을 수도 없었고 머리까지 지끈지끈 아파서 미셸의 말을 한쪽 귀로 흘려 버렸다. 그러는 그들의 뒤로 레오라 는 오퍼레이터가 들어섰다.

“무슨 일인지 좀 끼어도 될까? 재미있는 이야기가 들리는데?”

알렉은 미셸의 요구를 끝까지 거부했다. 그럴 수밖에 없었다. 분명 바이러스성 코드임이 분명한 프로그램을, 그것도 시스템 커널 영역에 올린다는 것은 말도 안 되는 일이었다. 미셸은 열을 올리면서 이건 단순한 프로그래밍이 아니라 생명 창조라고까지 할 수 있는 중요한 일이라고 악을 써 댔으나, 알렉은 이제 미셸 을 완전 미친놈 취급을 하면서 밖으로 내몰아 버렸다.

완전히 얼이 빠져 있는 미셸에게 레오가 다가섰다.

“알렉을 이해하라구. 이 큰 네트워크에서야 어쩔 수 없잖아? 나도 호기심이 당기는데…………. 그러면 내 사설 BBS가 있으니 거 기서 테스트해 보자구.”

“그래도 돼?”

“음. 어차피 좀 있으면 닫아 버릴 엉터리 비비야. 가입자는 내 친구뿐이고. 그러니 미리 양해를 얻고 시작하면 돼. 조건이 있 어. 그 ‘엄마 거미’에다 모니터링 루틴과 에디트 트레일 루틴을 넣어야 해. ‘유충’의 상태를 보려면 말야.”

테스트하기에는 좋은 여건이었다. 미셸로서는 수락하지 않을 이유가 없었다. 둘은 어두워진 밤거리를 걸어서 레오의 집으로 갔다. 미셸의 눈에 파란 불꽃이 섬광처럼 이는 것을 레오는 눈치 채지 못했다.

랜덤 이미지