1부. 잔향의 문
“뭔데, 이거?” 연후가 물었다. 나는 고개를 저었다.
“일반적인 뱃(.BAT) 파일은 아닌 것 같아. 실행되기는커녕, 내용도 해독할 수가 없어.”
“뱃 파일이 뭔데?”
“확장자 중의 하나야. 말해도 넌 몰라.”
“뭐래 이 인간이. HWP, PDF, 이런 거 맞잖아.”
“어, 네. 잘 아네.”
그는 한참을 모니터를 들여다보더니, 말없이 등을 기대고 고개를 뒤로 젖혔다. “그럼, 어떻게 해야 되는데?” 나는 대답하지 않았다. 하지만 염두에 둘 만한 방법은 있었다. 나는 카드리더를 뽑고, 메모리카드를 리더에 꽂아둔 채 주먹으로 꼬옥 쥐어보았다. 어느덧 정오가 되어갔다. 연후가 돌아간 건 토요일 늦은 오후였다. 그는 소파에 앉은 채 깜빡 잠들었다가 핸드폰 진동에 눈을 떴다. 짧은 통화를 마치고는 옷매무새를 정리한 뒤, 조용히 현관으로 향했다. 내가 따라나서지 않자, 문 앞에서 한참을 머뭇거리던 그는 문고리를 잡은 채 고개를 돌렸다. “너무 파지 마.” 그 말이 경고인지 걱정인지 분간할 수 없었다. 나는 대답하지 않았고, 연후는 그대로 사라졌다. 현관문이 닫히는 소리가 낮고 무겁게 울렸다. 그날 해는 이상하리만큼 천천히 졌다. 마치 낮과 밤 사이 어딘가에서 시간 자체가 망설이는 것처럼. 나는 거실 조명을 켜지 않은 채 노트북을 열고 다시 그 파일을 실행했다. sys_trace_0.bat. 확장자부터가 어색했다. 실행 파일인가, 아니면 단순한 명령어 스크립트인가. 파일을 더블클릭했을 때 나타나는 건 언제나 같은 반응이었다. 검은 커맨드 창이 1초도 되지 않아 나타났다가 사라진다. 아무런 메시지도, 로그도 남기지 않은 채. 복호화를 시도해도, 구조를 분석해도, 그 안엔 의미 있는 코드는 없었다. 마치 실행 그 자체가 목적이 아니라 조건이라는 듯. 나는 수차례 시도했고, 그 사이 주말이 지나갔다. 일요일 오후엔 로그 파일을 역추적해보려 했다. 임시 폴더, 캐시, 사용자 디렉터리. 어떤 흔적도 남지 않았다. 이상했다. 명령은 실행됐지만, 로그는 남지 않았다. 마치 고의적으로 흔적을 감춘 것처럼. 도대체 고작 이 파일이 무엇이기에 이토록 별난 방식으로 숨겨뒀을까, 그 점이 더 궁금했다. 그날 밤, 나는 처음으로 방향을 바꿔 생각해 보기로 했다. 이건 누군가에게 전해지지 않기 위해 만들어진 장치가 아닐까. 복호화도, 구조 분석도 무력하게 만들 정도로. 월요일 아침, 알람이 울리기 전 눈이 먼저 떠졌다. 휴대폰 화면엔 별다른 알림이 없었다. 출근 준비를 하며 창밖을 보니, 하늘은 맑고 습한 기운으로 가득 차 있었다. 햇살은 벌써 창틀 위를 뜨겁게 달구고 있었고, 에어컨을 틀어둔 집 안은 쾌적했지만, 바깥공기의 눅눅한 더위가 여전히 창문 틈 너머로 느껴졌다. 7월 중순, 장마가 끝나가는 무렵 특유의 더위였다. 전기포트를 눌러 물을 끓이던 손끝에 어딘가 낯익은 피로가 묻어났다. 물이 끓는 동안 컵에 가루커피를 털어 넣었다. 냉동실에 얼음이 없음에 실망하며 뜨거운 커피를 두어모금만 마신 채 식탁에 내려놓고 집을 나섰다. 출근길의 도로는 한산했다. 주말과 평일의 경계가 뿌연 이른 시간. 회사 건물에 도착해 엘리베이터를 탔을 때, 팀장 이수연의 메시지가 도착했다. — 오전 10시, 회의실 14-08. 나는 응답 없이 휴대폰을 내려두었다. 포렌식팀의 업무는 늘 일정표 바깥에서 결정되곤 했다. 데이터는 흔적이 아닌 의도로 구성된 조각들이었고, 복구는 종종 사실보다 진실을 먼저 건드렸다. 출근할 때 나는 USB 리더에 꽂힌 채 그대로 있던 메모리카드를 노트북 가방에 넣어 함께 가져왔다. 팀 네트워크에는 연결하지 않을 생각이었다. 내부 보안망은 철저했고, 실험 중인 어떤 코드도 무단으로 올릴 수 없었다. 하지만 팀 시스템을 모방한 샌드박스 환경이라면, 거기서 추가 복제를 시도해 볼 수 있을지도 모른다. 어쩌면 거기서라도 로그 하나쯤은 남길 수 있을지도 모른다. 출근과 동시에 업무 메일과 일정 조율 메시지들이 쏟아졌고, 백업 서버와의 동기화 오류 알림까지 겹치며 정신이 없었다. 오전 시간은 내내 자잘한 오류 수정과 장비 점검으로 흘러갔다. 주말 동안 머릿속을 차지했던 일들은 어느새 수면 아래로 가라앉았다. 10시 정각, 회의실 문을 열자 이수연 팀장이 먼저 와 있었다. 그녀는 노트북을 펴놓은 채 무엇인가를 읽고 있었고, 내가 들어서자 시선만 살짝 들었다.
“앉아요. 짧게 끝낼게요.”
책상 위엔 흰 봉투 하나가 놓여 있었다. 봉투는 아직 뜯기지 않은 상태였고, 겉면에는 외부 발신자의 이름 대신 검찰청 직인이 찍혀 있었다. 나는 자리에 앉으며 물었다.
“의뢰 건인가요?”
“맞아요. 서울지검. 디지털 증거 분석 요청인데, 건이 좀 특이해요.”
이 실장은 봉투를 열지 않은 채 노트북 화면을 돌려 내게 보여줬다. 화면에는 메일 본문 일부가 떠 있었고, 그중 몇 줄이 강조되어 있었다. — 하기의 예산이 허락하는 한 최대한의 자료를 복원할 것. 제공 파일은 원본 상태 유지. 실행 또는 디코딩 시 책임은 분석자에게 있음. 나는 눈썹을 살짝 찌푸렸다.
“파일이 뭔데요?”
이 실장은 노트북을 돌려받으며 봉투를 조심스럽게 열었다. 봉투 안에는 포장된 USB 드라이브 하나가 들어 있었다. 겉면엔 마스킹 테이프로 붙인 라벨이 하나 있었고, 거기엔 이렇게 적혀 있었다. SYS_TRACE_1.BAT 그 순간, 목 뒤로 식은땀이 흘렀다. 그녀는 눈치를 채지 못한 듯 USB를 책상에 내려놓고 말을 이었다.
“이건 제가 맡을게요. 조태호 씨는 백업하고 환경 복제만 해줘요. 작업은 나중에 제가 직접 할 거고.”
나는 고개를 끄덕였지만, 시선은 여전히 USB에 머물러 있었다. 이름이 단 하나의 문자만 다를 뿐, 내가 주말 내내 붙들고 있었던 그것과 똑같았다. SYS_TRACE_0에서 1로. 무슨 뜻일까. 우연일까, 아니면— “혹시, “ 내가 입을 열었다.
“의뢰자는 이 파일이 실행된 적 있다고 했어요? 단독파일로 실행될 것 같지는 않은데.”
이 실장은 고개를 저었다.
“아니요, 뭐. 그런말을 하긴했어요. 실행하면 사라진다고.”
사라진다, 라는 말에 순간 마른침이 목을 타고 넘어갔다. 나는 시계를 힐끔 보았다. 10시 12분. 회의실 안은 고요했고, 창밖의 햇살은 점점 더 강해지고 있었다. 그녀가 말을 보탰다.
“그냥 앞으로 우리 팀에서 어떤 일을 할 지 보여드릴려고 했었는데, 이건 좀 다르네요. 미안하게 됐어요, 시간 버리게 해서. 혹시라도 이런 거에 관심이 있어요? 기왕에 알게 됐으니까 관심이 있으면 같이 해도 좋고요.”
“네, 관심이 있습니다. 많이요. 손을 보태겠습니다.”
말을 하면서도 그녀는 이해할 리 없는 나의 조급함이 드러날까 신경이 쓰였다.
“우선, 이 파일을 어떤 장비에서도 직접 실행하지 마세요. 그리고 저랑 같이 테스트 환경을 새로 만듭시다.”
그녀는 노트북을 열어, 복제 시스템 목록을 띄웠다. 나는 내 쪽 장비를 연결하고, 새 가상머신 환경을 세팅했다. 내부망에서 완전히 분리된 공간. 평소에도 민감한 의뢰가 들어오면 사용하는 환경이지만, 이번엔 더욱 신중해졌다. 복제한 USB는 이 실장이 직접 다뤘다. 그녀는 입력 하나 없이 천천히 파일 구조를 스캔했다. 이따금 눈썹을 찌푸렸고, 한참을 멈춰 화면을 바라볼 때도 있었다. 나는 말을 아꼈다. 이미 주말 내내 0번 파일을 보며 느꼈던 이상한 감각이, 이번에도 반복되고 있었다. 창문 틈 사이로 들어오는 바람조차 멈춘 듯 고요한 회의실 안에서, 화면 속 그 단어 하나가 눈에 들어왔다. layer.동기화가 약 +0007초 정도 지연된 상태 나는 이 실장의 노트북 화면을 보며 작게 중얼거렸다.
“비슷한 걸 본 적 있는 것 같아요.”
그녀가 고개를 돌렸다.
“파일명이 같았던 건가요?”
나는 고개를 끄덕였다.
“제가 갖고 있는 메모리카드에서 나온 파일 이름이 SYS_TRACE_0.bat 이었어요. 구조는 거의 비슷한데, 다 한 글자로 달랐어요. 전체 구조가 아니라, 반복되는 구문이나 문장들이요.”
이 실장은 눈썹을 찌푸렸다.
“그 카드, 지금 갖고 있어요?” 눈썹과는 달리 말하는 그녀의 입술에는 가느다란 미소가 떳떳하게 그려져 있었다.
“네. 제 가방 안에 있습니다.”
그녀는 천천히 고개를 끄덕였다.
“그럼 오늘 중으로 한 번 비교해 봅시다. 하지만 지금은… 이 파일이 먼저예요.” 나는 대답 대신, 자판 위에 손을 얹었다. 분석은 이어졌고, 회의실 밖의 시간은 점점 희미해졌다. 회의실 시곗바늘이 10시 50분을 넘길 즈음, 분석은 여전히 제자리였다. 파일 자체는 텍스트 기반의 단순 스크립트 형태였지만, 내부 명령어는 도무지 실행될 수 없는 구조로 짜여 있었다. 이 실장이 몇 번이고 구문을 손으로 따라 적었지만, 결론은 같았다. 명령의 구문은 의미를 갖고 있지만, 그 의미가 작동할 대상이 이 시스템 안엔 존재하지 않는다는 것이었다. 마치 실행 환경이 다른 층위에 존재하는 것처럼. 나는 가방을 열어 메모리카드를 꺼냈다. 이 실장이 손으로 검찰 USB를 감싸며 고개를 끄덕였다.
“이게 뭐라고. 재밌네. 지금 여기서 같이 열어보죠.”
우리는 두 개의 가상머신을 나란히 실행했다. 하나는 검찰 의뢰 파일, 하나는 하연의 카드에서 복사한 파일. 둘은 다르면서도 같았다. 서로 다른 이름의 함수. 그러나 완전히 동일한 논리 구조. 반복 구문조차 타이핑 리듬까지 비슷했다. 내가 먼저 입을 열었다.
“작성자는 한 명이에요. 아니면 최소한 같은 툴을 썼거나.”
“그보다 중요한 건,” 이 실장이 말을 이었다.["이 둘 중 어느 쪽이 원형인지 알 수 없다는 거예요.”
하연은 이 파일을 만들 수 있는 사람이 아니다. 나는 입술을 깨물며 화면을 바라봤다. 실행 기록도 없고, 생성자 이름도 마스킹되어 있다. 타임스탬프는 위조되었고, 접근 로그는 이 실장이 말한 대로 일부러 파기된 형식이다.
“복호화 시도는 어때요?” 그녀가 물었다.
“여전히 안 돼요. 키값이 없어요.”
“아니요. 키가 없는 게 아니라, 키가 실행 그 자체에 들어 있는 걸지도 몰라요.”
그녀의 말은 모순처럼 들렸다. 실행이 곧 해석이라는 건, 누군가가 이걸 보기 위한 눈을 가져야 한다는 뜻이다. 이건 기계가 읽으라고 만든 파일이 아니라, 어떤 구조를 작동시키는 방아쇠다. 나는 메모리카드를 다시 뽑아 들며 속으로 중얼거렸다.
“도대체 누구를 위해 만든 거지.”
“혹은 누가 만든 건지.”
이 실장이 나지막이 답했다. 그 이후로 더 분석이 이어졌지만, 의미 있는 진척은 없었다. 오전 11시 40분, 이 실장은 백업 이미지를 저장한 뒤 노트북을 닫았다.
“이쯤에서 끊죠. 오후엔 다른 일정이 있으니까.” 그녀는 마치 이 사안이 처음부터 사소했다는 듯 태연하게 회의실을 나섰고, 나는 뒤늦게 장비를 정리했다. 회의실 안엔 아직도 무언가가 남아 있는 듯한 기분이었다. 업무 복귀 후, 남은 시간 동안 팀원 몇 명이 백업 서버를 점검하러 내 자리로 들렀고, 나는 하연의 메모리카드를 다시 가방에 넣었다. 이후론 그 누구에게도 이 파일 이야기를 꺼내지 않았다. 5시 20분. 사내 방송에서 퇴근 안내 멘트가 흘러나왔다. 나는 모니터를 닫고 가방을 챙겼다. 일어서려던 찰나, 스마트폰 진동이 짧게 울렸다. 발신자는 없었고, 메시지함에도 기록은 없었다. 단지 화면 한가운데에 한 줄의 문장이 떠 있었다.
> delay(7); // 7ms 지연
> systemStandby(); // 시스템 대기 모드 진입
나는 그 화면을 한참 동안 바라봤다. 아무런 입력도 없었는데도 그 문장은 홀연히 나타났고, 다시 사라졌다. 어쩌면 착각일 수도 있다. 피로한 오후에 잠시 겪는 환각 같은. 하지만 내가 자리를 떠나기 전, 노트북 화면에 커서가 다시 깜빡이기 시작했다. 파일도, 프로그램도 실행하지 않았는데. 그건 아마도 대기 상태라는 뜻일 것이다. 무엇을 위한 대기인지 알 수 없지만, 기다리는 쪽은 내가 아닌 것 같았다. 회의실에서 나와 자리에 돌아왔을 땐 이미 오후 다섯 시를 훌쩍 넘긴 뒤였다. 시스템에 남긴 복제본을 외장 하드에 저장하고 장비를 정리하는 데만도 한참이 걸렸다. 팀원 대부분은 이미 자리를 비운 상태였다. 짧게 인사를 건넨 몇몇을 지나 사무실을 나설 때쯤, 창밖의 하늘은 어느새 칠흑에 가까운 남청색으로 내려앉고 있었다. 엘리베이터를 타고 지하 주차장에 도착했을 땐, 차량 사이사이로 습기 찬 바람이 느리게 흘러 다녔다. 차에 올라타고 사우나와 같은 열기에 질색을 하면서 곧장 시동을 걸었다. 등 뒤로 축축한 열기가 한동안 밀려들었다. 집으로 도착해 후진주차를 한 다음, 늘 가는 가까운 편의점으로 걸어가 장바구니에 얼음 봉지를 세 개쯤 담았다. 계산을 마치고 시원한 기운이 뿜어져 나오는 종량제 봉투를 손에 들고 나올 땐 어둑해지기 시작한 하늘 아래 작은 나방이 형광등 아래를 맴돌고 있었다. 문득 소리를 내며 얼음이 서로 부딪히는 감각이 손끝에 전해졌다. 집 현관문을 열고 들어서자, 실내는 선선했다. 에어컨 타이머가 작동한 듯했다. 오전에 마시다 남은 커피가 부엌 한쪽에 놓여 있었다. 얼음을 한 덩이 넣고 컵을 흔들자, 묵직한 얼음이 유리벽에 부딪혀 투명한 울림을 냈다. 한 입에 털어 넣자마자 안도의 한숨이 나왔다. 옷을 벗고 곧장 욕실로 향했다. 샤워기에서 쏟아지는 미지근한 물줄기가 목덜미를 타고 흐르자, 비로소 몸 안의 긴장이 풀리는 듯했다. 샤워를 마치고 수건을 대충 두른 채 침대에 쓰러졌다. 불은 켜지 않았다. 커튼도 걷지 않았다. 등 아래 매트리스의 냉기가 피부에 스며들 무렵, 눈꺼풀이 자연스럽게 내려앉았다. 수면마취를 하는 것과 같았다.
나는 푸른빛이 도는 식탁 앞에 앉아 있었다. 그 맞은편엔 딸이 있었다. 늘 그렇듯 나보다 작고, 가볍고, 조용하지만 말은 많았다. 이번엔 유독 불만이 많았다. 날씨가 너무 덥다며 입을 삐죽이고, 우주가 멈췄다는 뉴스는 너무 어렵다고 짜증을 냈다. 나는 웃지 못하고 그녀를 바라보았다.
“아빠, 애들이 그러는데 이 세상이 다 끝날 수도 있대. 근데 왜 난 맨날 여기서 아빠 꿈만 꾸는 거야?”
나는 뭐라 대답해야 할지 몰라 머뭇거렸다. 아이는 젓가락을 내려놓고 팔짱을 꼈다.
“내가 어른들 보는 뉴스를 어떻게 알아들어. 재밌는 걸 찾아서 보려고 해도 다들 난리야. 어른들은 맨날 우주 이야기만 해. 근데 우주는 늘 커다래지고 있었는데 이제는 안 커진대. 반대로 쪼그라든다고도 하고. 너무하잖아?”
나는 말없이 고개를 끄덕였다. 식탁 위에는 국도 밥도 있었지만, 손을 댈 수 없었다. 아이는 내 눈치를 살피더니 다시 수저를 들었다.
“그래도 아빠랑 같이 먹는 건 좋아. 근데 다음엔 좀 시원한 데서 보자.”
나는 대답하지 못한 채, 흐릿해지는 시야를 느꼈다. 그녀는 여전히 웃고 있었고, 그 웃음은 유리처럼 아득했다. 아침이 되었다. 알람보다 먼저 눈이 떠졌다. 창밖은 밝았고, 방 안엔 어제 남긴 커피의 쓴내가 살짝 떠 있었다. 연후가 말한 커피 향이라는 건 이런 거였나 보다, 하고 혼자 실없게 웃었다.
전기포트를 눌러 물을 데우고, 컵에 적당량을 따르곤 가루커피를 넣었다. 얼음은 어젯밤 봉지에서 덜어둔 것을 몇 개 넣었다. 커피가 빠르게 식어갔다. 한 모금에 정신이 맑아지는 기분이었다. 컵을 싱크대에 두고 가방을 챙겼다. 이제 고작 화요일이지만 나는 직장과 집 외에는 걸음하는 일이 적고, 이런 삶에 만족하기에 출근길은 여느 날처럼 가벼웠다. 화요일은 특별할 것 없이 평범하게 흘러갔다. 오전 내내 회의실 예약 확인과 백업 이미지 동기화 문제로 여러 번 전산실과 연락을 주고받았고, 점심은 구내식당에서 유리와 김 팀장과 함께 했다. 유리는 신제품 샘플에 들어갈 내부 로깅 시스템의 보안설계 얘기를 했고, 김 팀장은 중간에 말을 끊으며 요즘 이직시장에서 포렌식 기술자들이 다시 주목받고 있다고 말했다. 나는 대답 대신 식판 위 된장국을 천천히 저었다. 그 대화에 굳이 끼어들고 싶지 않았다. 오후에는 자료 요청 메일 몇 통을 처리하고, 어제 작업한 가상머신 이미지에 추가 보안 설정을 더해 검찰의 증거 이미지와 격리된 공간에서 비교 분석할 수 있도록 시스템을 손봤다. 이수연 실장은 오후 내내 자리를 비웠고, 별다른 메시지도 없었다. 아마 외부 미팅이 있었던 모양이었다. 일은 많지 않았지만 이상하게도 시간이 길게 느껴졌다. 어제 잠들기 전 꿨던 딸의 꿈이 자꾸 생각났다. 식탁 앞에 앉은 아이의 표정이 유난히 선명했다. 종종 나는 그 꿈의 온도나 소리, 표정 하나하나가 현실보다도 더 진짜 같다는 기분을 느꼈다. 출근할 때 신었던 양말이 기억나지 않아도, 그 애가 무슨 말을 했는지는 줄줄 외울 수 있을 정도였다. 오후 세 시쯤, 창가 자리에 앉은 성민 대리가 커튼을 치며 말했다. “밖에 되게 흐려졌어요. 비 올 것 같은데.” 나는 자리에서 일어나 창문을 바라봤다. 하늘은 잿빛이었고, 건물 밖 공기는 정지된 것처럼 보였다. 하지만 바람은 불지 않았다. 하루 일과를 마치고 퇴근할 무렵, 이수연 실장에게서 메시지가 도착했다.
— 수요일 오전, 회의실 14-08.
짧은 문장이었다. 별다른 설명은 없었지만, 내용은 명확했다. 나는 알림을 끄고 그대로 스마트폰을 가방에 넣었다. 퇴근길은 여전히 더웠고, 차 안은 눅눅한 열기로 가득 차 있었다. 라디오에서는 다음 주면 본격적인 폭염이 시작될 거라고 예보했다. 집에 돌아오는 길에 얼음 두 봉지를 더 샀다. 전날 마신 커피가 의외로 괜찮았던 탓도 있었지만, 그보다는 어딘가 모르게 반복되는 리듬을 유지하고 싶다는 감각 때문이었다. 집에 도착해 문을 열고 들어섰을 때, 실내는 조용했다. 에어컨 타이머는 작동 중이었고, 탁자 위엔 여전히 그 아침의 컵이 있었다. 나는 설거지도 하지 않은 그 컵에 얼음을 넣고 물을 부었다. 커피가 아니라 그냥 물이었지만, 그 순간엔 무언가 식어가는 느낌이 더 필요했다. 샤워를 하고 침대에 누웠을 때, 휴대폰 알람을 맞추지 않은 것이 문득 떠올랐다. 하지만 굳이 다시 일어나고 싶진 않았다. 방 안은 완전히 어두웠고, 커튼 사이로 들어오는 가로등 빛이 벽에 길게 누워 있었다.
딸은 놀이터에 앉아 있었고, 나는 그네 옆의 벤치에 앉아 있었다. 아이는 연분홍색 원피스를 입고 있었다. 얼굴엔 땀이 송골송골 맺혀 있었고, 손엔 빨간 막대사탕이 들려 있었다. 나는 그 모습이 낯설지 않다고 생각했다. 아이는 그 사탕을 혀끝으로 굴리다 말고 나를 올려다보았다.
“근데 있잖아, 아빠. '티끌'이라는 단어, 그냥 먼지 말고 다른 뜻도 있어?”
나는 잠시 생각하다가 고개를 저었다.
“그건 그냥… 아주 작은 걸 말할 때 쓰는 거지. 왜?”
아이는 막대사탕을 입 밖으로 빼고 말했다.
“오늘 친구가 꿈에서 어떤 말을 들었대. 그게 티끌이래. 근데 사람처럼 얘기했대. 꿈에서만 나오는 이상한 말 같다고 했어.”
나는 대답하지 못한 채, 손에 들고 있던 무언가를 내려다봤다. 그것은 하얀 플라스틱 컵이었고, 안에는 얼음이 반쯤 녹아 있었다. 아이는 그네에서 내려 벤치 옆으로 걸어왔다. 그리고 내 무릎에 조심스럽게 손을 얹었다.
“나는 그런 거 싫어. 이상한 거. 그냥 아빠랑 놀고 먹고 그랬으면 좋겠어.” 나는 그제야 입을 열었다.["나도 네.”
“이제, 비교가 끝났어요.” 그녀는 화면을 돌렸다. 두 개의 창이 나란히 떠 있었다. 파일명은 각각 SYS_TRACE_0.BAT, SYS_TRACE_1.BAT. 내용은 여전히 알 수 없는 문자열로 가득했지만, 몇 줄이 강조되어 있었다. 그것은 어떤 조건문이었다. 내가 가장 먼저 눈치챈 건 키워드였다. ‘시스템이 기억을 되감고 있는 상태’.
“이건 실행 명령어가 아니라, 조건이에요. 어떤 조건이 충족되었을 때, 시스템이 자동으로 이걸 실행한다는 뜻이죠.”
그녀는 창을 넘겼다. 두 번째 문서에는 다음과 같은 문장이 있었다.
root.level.unauthorized → invoke:과거 상태를 되돌리려는 시도.
익숙한데 낯선, 설명할 수 없는 감정이 차올랐다.
“이게 진짜 무서운 건, 우리가 어떤 시스템에 들어와 있었고, 이제는 그 이전 상태로 되돌릴 준비를 하고 있다는 거예요.”
나는 대답하지 않았다. 아직 확실한 건 아무것도 없었다. 하지만 이건 분명 어떤 흐름이었다. 어떤 의지. 그 순간, 내 스마트폰 화면이 반짝였다. 문자나 알림은 없었다. 단지 잠금 화면에 짧은 문장 하나가 떠 있었다.
> detected: delay=0007 // 지연 시간 7ms 설정
나는 화면을 내려두고 조용히 숨을 들이켰다. 아직 아무 일도 일어나지 않았지만, 무언가가 이미 시작된 것이 분명했다. 그리고, 나는 그것을 멈출 수 없을 것 같았다. 이수연 실장은 모니터를 접으며 말했다.
“오늘은 여기까지죠.” 그녀는 USB를 천천히 분리하고, 작은 금속 상자에 넣었다. 메모리카드도 마찬가지였다. 손놀림은 침착했고, 말투도 변함없었지만, 눈빛은 약간 달라져 있었다. 어딘가 망설이는 기색이, 말하지 않은 문장들 뒤에 숨어 있었다. 나는 그녀가 말하지 않은 문장들에 더 귀를 기울이게 됐다. 오전 회의가 끝난 뒤 사무실로 복귀했을 때, 연후에게서 메시지가 와 있었다.
‘퇴근하고 시간 돼?’
별다른 내용은 없었다. 평소답지 않게 건조한 말투였다. 나는 ‘7시쯤 어때’라고 답을 보냈다. 점심시간이 되기 전, 다시 문자 하나가 도착했다. 이번에도 보낸 사람은 없었고, 내용은 단 하나였다.
> grantRootAccess(); // 루트 권한 부여됨.
나는 그 문장을 몇 초간 바라보다가 화면을 껐다. 불쾌하진 않았다. 무서운 것도 아니었다. 다만, 그것이 단지 문자가 아니라 ‘존재의 방식’으로 느껴졌다는 것이 문제였다. 내가 보지 못하던 무언가가, 이제는 나를 보고 있는 것 같은 감각. 감시와는 달랐다. 감지당하는 느낌이었다. 오후 내내 나는 메일을 정리하고 회의록 초안을 보완하며 시간을 보냈다. 시스템에는 로그 하나 남지 않았고, 노트북의 클럭은 정확했다. 전력 소비도 일정했고, 어느 장비도 발열을 일으키지 않았다. 그러니까, 모든 것이 정상이었다. 단지, 나만 비정상처럼 느껴질 뿐. 퇴근 무렵, 연후가 회사 근처로 왔다. 근처 국밥집에서 마주 앉아 저녁을 먹으며 그는 스마트폰을 꺼냈다.
“이거 보셨어요? 요즘 뉴스 이상하더라.”
그가 보여준 건 포털 메인에 걸린 기사였다. 제목은 [우주 수축설, 현실이 되나]. 나는 화면을 넘기며 내용의 중간을 읽었다. '천문학자 정영호 박사는 최근 라디오 인터뷰에서, 허블 거리계산의 잔차가 일정 이상 누적되고 있다. 빛의 도달속도보다 먼저 관측되는 왜곡이 생긴다는 것은, 외부에서 관측된 우리 우주 자체가 움직임을 바꾸고 있다는 뜻일 수도 있다고 밝혔다.' 나는 화면을 밀쳐내듯 그의 스마트폰을 돌려줬다.
“공돌이는 뭐 다 아는 줄 아냐? 무슨 말인지 하나도 모르겠다.”
“아니, 근데 그게 말이야… 내가 며칠 전 꾼 꿈 있잖아. 그거랑 너무 느낌이 비슷해서.”
“꿈?”
“거기서 누가 날 불렀어. 정확히 누구인진 모르겠는데, 이름이 없었어. 근데 느낌이 너무 선명했어. 그리고, 이상하게도… 내가 누군가한테 관찰당하고 있는 느낌이 계속 들었어.”
나는 말없이 숟가락을 국에 담갔다. 연후는 국밥을 한입 먹은 뒤 몇 번을 대충 씹고 삼키면서 말을 이었다.
“그리고… 너한텐 말 안 했지만, 하연가 예전에 꿈에 무서운 사람을 자주 본다고 했었거든. 무섭다기보다, 이상한 사람이래. 계속 말을 걸어오고, 어느 날부터는 아예 같이 한 집에 살고 있다는 거야.”
“실제로 본 적 있어?”
“아니, 그 사람? 없지. 꿈에서만 봤다고 했어.”
우리는 더 이상 말하지 않았다. 국밥은 식어가고 있었고, 식당 안은 어느새 점점 시끄러워졌다. 나는 식은 국물 맛이 유난히 짰다. 집으로 돌아오는 길에, 잠시 하연의 이름을 검색했다. 아무것도 나오지 않았다. 그녀는 SNS를 오래 전에 지웠고, 그 흔적도 사라졌다. 나는 스마트폰을 내려두고, 불 꺼진 거실에 그대로 누웠다. 눈을 감았지만 쉽게 잠들 수는 없었다.