brunch
연재 중 티끌 21화

티끌

2부. 흔들리는 계단

by 융 Jung

8월 16일, 화요일. 출근길, 자동차 안의 라디오는 아침 뉴스 대신 로컬 FM에서 흘러나오는 재즈 연주를 틀고 있었고, 그것은 어제의 감정 잔재들을 억누르는 데 꽤 도움이 되었다. 전날 밤, 나는 그 아이에게 미안하다는 말을 했다. 하지만 그것으로 충분할 리 없다는 걸 잘 알고 있었다.

사무실 건물 지하 주차장에 차를 대고 올라오며, 나는 뭔가 어색한 감정을 느꼈다. 주차장 조명은 평소보다 어두웠고, 복도 센서등도 반쯤 꺼진 상태였다. 엘리베이터 앞엔 아무도 없었고, 버튼이 켜진 걸 보고 순간 멈칫했다.

14층. 익숙한 사무실. 그런데 문을 열고 들어서자 공기감이 달랐다. 에어컨은 켜져 있었지만, 어딘가 사람 냄새가 나지 않았다. 책상 위엔 출근기록 시스템이 떠 있었고, 나는 평소처럼 RFID 카드를 대며 로그인을 시도했다. 삐— 익숙한 인식음 대신, 화면에 에러 메시지가 떴다.

사용자 인증 실패: 중복 로그인 감지됨

‘중복 로그인?’ 나는 재시도 버튼을 눌렀다. 같은 메시지. 커피를 들고 들어오던 후배가 나를 힐끔 보더니 말했다.

“아, 태호 선배. 방금까지 누가 선배 아이디로 로그인돼 있었어요. 컴퓨터 껐다가 다시 켜면 풀려요.”

나는 어색하게 웃으며 고개를 끄덕였다. 그러나 속은 싸늘했다. 내 아이디로 누군가가 먼저 로그인을 했다고? 누가? 언제?

노트북을 열고 복원 로그 서버에 접속했다. 로그인 기록, 세션 이력, 인증 토큰을 모두 조회했다. 시스템상으로는 충돌 없음. 그런데 의심스러운 항목 하나.

[백엔드 서버 접근 기록: 08:13:06 / 사용자: taeho / IP: ::1]

루프백 주소. 즉, 물리적 장치 내부에서 발생한 접근. 외부 해킹이 아니라 내부에서, 나 자신이 접속한 기록으로 인식되고 있었다. 하지만 나는 8시 13분엔 아직 차 안에 있었다. 차 안에서 블루투스가 자동 연결되어 로그된 걸까? 아니면, 더 복잡한 구조 안에 내가 이미 포함되어 있었던 걸까.

화면을 내려보니, 해당 시간대에 접근한 파일 하나가 로그에 남아 있었다.

/mnt/log/restore/candidate/mote.user_45.cfg

그 이름을 보는 순간, 손끝이 얼어붙었다. mote.user_45. 이미 몇 차례 꿈과 현실을 넘나들며 마주한 존재. 그 설정 파일이 왜, 출근도 하지 않은 시간에 내 계정으로 열렸단 말인가.

나는 의자에 몸을 깊숙이 묻었다. 에어컨 바람은 차갑고 귓등을 스치는데, 등은 식은땀으로 젖어들고 있었다. 누군가가 나보다 먼저, 나로 로그인하고 있었다. 그리고 그 ‘누군가’는 시스템이 보기엔 분명히 나였다.

점심시간이 가까워졌지만, 입맛이 없었다. 회사 식당에서 메뉴를 확인하다가 그냥 편의점 삼각김밥 하나로 때우기로 했다. 건물 1층으로 내려가며 나는 휴대폰을 꺼내 하연에게 전화를 걸었다. 이번엔 단순한 메시지로는 부족했다. 목소리를 듣고 싶었다. 신호가 두 번 울리고 그녀가 받았다.
“무슨 일인데?”
“오늘… 조금 이른 시간에 가도 될까? 지금, 설명하고 싶은 게 생겼어.”
하연은 조용히 있다가 대답했다. “네. 올 때 조심하고.”
간단한 통화였지만, 이상하게도 그 짧은 문장들에 무언의 신뢰가 담겨 있었다. 나는 삼각김밥을 계산하고 돌아오며 생각했다. 하연은 이미 알고 있는 걸까? 혹은 그녀도 또 다른 ‘티끌’을 본 걸까?
사무실로 돌아온 나는 복구한 이미지를 다시 불러올 수 없다는 걸 확인했다. 로그 파일 자체는 사라지지 않았지만, 이미지가 남아있던 세션은 이미 시스템상 '제거 완료' 상태로 표기돼 있었다. 마치 일정 시간 이후 자동 삭제되는 휘발성 로그처럼.
퇴근까지 남은 시간 동안, 나는 일하는 척하면서 계속 메모장을 켜두고 생각을 정리했다. 무언가가 연결되고 있다는 느낌. 과거, 꿈, 데이터, 죽은 줄로만 알았던 하나 그리고 기억조차 희미해져버린 내 딸의 존재까지. 내가 보고 있는 건 단순한 오류인가, 아니면 이 시뮬레이션이 스스로 드러내기 시작한 균열인가?

8월 17일, 수요일. 하연의 집 앞에 도착한 건 저녁 아홉 시 무렵이었다. 초인종을 누르자 바로 문이 열렸다. 그녀는 여느 때처럼 화장기 없는 얼굴로 나를 맞았다. 거실에는 따뜻한 조명이 켜져 있었고, 커튼은 닫혀 있었다. 말없이 그녀는 손짓으로 나를 안으로 들였다.

나는 하연의 물음에 아무런 대답도 하지 못한 채, USB를 노트북에서 뽑아 들고 잠시 멍하니 앉아 있었다. 마치 방금 본 그 아이의 모습이 내 뇌 속 깊이 침투해 움직임을 멈추게 한 듯했다. 물속에 있었지만 분명히 숨을 쉬고 있었고, 눈을 감고 있지만 무언가를 ‘보다’ 하는 감각이 전해졌다. 기억이 아니라 존재, 존재가 아니라 어떤 신호처럼. 마치… 그 자체가 시스템의 에러 로그처럼.

정신을 차리고 일어났을 때, 하연은 여전히 조용히 앉아 있었다. 그녀는 뭔가를 정리하려는 듯 자꾸 손끝을 만지작거렸다. 내가 말을 꺼냈다.

“하연. 이 영상을… 혹시 다른 기기에 옮겨두신 적 있으세요?”

“아니요. 복사도 안 되고, 메일 첨부도 안 되고… 백업 시도하면 파일이 사라지거나 기기가 꺼져요.”

나는 고개를 끄덕였다. 이건 단순한 영상 파일이 아닌 셈이다. 메타데이터도, 확장자도 없으며 외부 전송이 되지 않는. 마치 시스템 내부에서만 존재 가능한 일시적 캐시처럼.

“제 직장 상사에게 이걸 보여드리면 어떨까요? 이수연 실장이라고 유능한 분이에요.”

그녀는 잠시 생각에 잠겼다가 고개를 저었다.

“아니요. 지금은 아니에요. 그분이 대단하다는 건 들어서 알지만… 아직은 조금 더 지켜보고 싶어요.”

그녀의 말엔 망설임보다는 분명한 판단이 실려 있었다. 나는 더 묻지 않았다.

“알겠습니다. 그럼 이건 제 USB 안에만 복사해서 두고, 원본은 이대로 유지하죠.”

그녀가 고개를 끄덕였다.

대화를 마친 후, 나는 노트북을 닫고 USB를 주머니에 넣었다. 하연은 다시 스마트폰을 손에 쥐고 있었다. 꺼져 있는 화면 위에 손끝을 얹은 채, 마치 그 속에서 무언가가 다시 떠오르길 기다리는 사람처럼. 문을 나서기 직전, 그녀가 말했다.

“조태호 씨.”

“네?”

“가끔 이런 생각 들어요. 내가 뭘 잘못 눌러서, 다른 세상의 문을 연 건 아닐까 하고요.”

돌아오는 길, 나는 괜히 휴대폰을 꺼내 카메라를 켰다. 렌즈에 비친 내 얼굴은 평소와 다르지 않았다. 하지만, 내 안의 무엇이 변하고 있었다.

집으로 돌아가는 길, 차창 밖에는 가로등 불빛이 비에 젖은 아스팔트 위로 퍼져나가고 있었다. 라디오에서는 누군가의 사연이 흐르고 있었지만, 나는 하나도 귀에 들어오지 않았다.

USB는 여전히 내 주머니에 있었다. 그 안에 담긴 것이 단순한 데이터일까, 아니면 시스템이 만들어낸 일종의 ‘단서’일까. 아니, 그보다 그 아이는… 왜 자꾸 나타나는 걸까.

한참을 그렇게 달리다가, 나는 차를 잠시 갓길에 세웠다. 핸들에 손을 올린 채, 천천히 숨을 들이마셨다. 반복적으로 떠오르는 그 장면이 머릿속에서 멈추지 않았다.

“정말 존재했던 걸까.”

나는 혼잣말을 했다. 그렇지만 점점 더 확신이 들고 있었다. 이건 꿈이 아니고, 기억도 아니었다. 시스템 오류라기엔 너무 구체적이고, 신호라기엔 너무 절실했다.

사무실로 돌아가자, 건물은 조용했다. 야근조조차 없는 시간이었다. 보안 게이트에 카드를 찍고, 엘리베이터를 타고 14층으로 올라섰다. 익숙한 냄새. 전등 아래로 길게 뻗은 복도.

자리로 돌아와 컴퓨터를 켰다. 어둠 속에서 모니터만이 빛을 뿜었다. 나는 하연의 폰에서 복사해온 세션 로그를 다시 확인했다.

[TTKL_05_0413AM] / DREAM_RECALL / ORIGIN_UNVERIFIED

확실한 건, 이 태그는 시스템 내부에서 생성된 것이 아니다. 포렌식툴에서도 태그 자동생성 기능은 존재하지 않는다. 누군가가, 혹은 ‘무언가’가 의도적으로 이 메타데이터를 삽입했다는 의미였다.

로그를 열자, 미세하게 끊기는 오디오 프레임이 반복되었다. 그리고, 그 속에서 소리가 들렸다.

“아빠.”

나는 그 자리에서 얼어붙었다. 전에도 들었던 목소리, 그러나 이번엔 명확했다. 아이가 내 이름을 부른 것도, 무언가를 알려주려는 듯한 억양도 그대로였다.

이어지는 영상은 없었다. 단지, 그 한마디. 그 짧은 오디오 샘플만이 존재했다. 나는 손끝을 들어 그 프레임을 다시 재생했다.

“아빠.”

소리는 바뀌지 않았다. 그러나 두 번째로 들었을 때는 조금 달랐다. 첫 번째는 ‘부름’이었다면, 두 번째는… ‘확신’이었다. 마치, 내가 들어줄 것을 이미 알고 있다는 듯이.

나는 USB를 조심스레 뽑아 작은 금고 안에 넣었다. 아직은, 아직은 아무에게도 보여주고 싶지 않았다. 심지어 수연 실장에게조차도.

8월 18일, 목요일. 새벽 세 시 반. 침대에 누운 지 몇 시간이나 지났지만, 눈꺼풀은 조금도 무거워지지 않았다. 꿈을 꾸지도 않았고, 핸드폰을 보지도 않았다. 단지 멍하니, 창문 틈으로 들어오는 가로등 불빛을 바라보고 있었다.

낮에 들었던 그 목소리가 귓가에서 맴돌았다. '아빠.' 짧은 두 글자가 뇌 속 깊은 어딘가를 건드린 듯했다. 그 아이는 분명 현실의 누구도 아니었고, 그렇다고 상상 속의 존재만도 아니었다.

시계를 다시 보니 03:47. 나는 결국 자리에서 일어나 주방으로 향했다. 물을 한 잔 마시고, 냉장고 문을 열었다 닫았다. 다시 거실로 돌아와 소파에 앉았다.

하연은 잘 자고 있을까. 아니, 그녀는 과연 잠을 잘 수 있었을까. 같은 장면을 본 사람이라면, 그리고 같은 목소리를 들은 사람이라면… 단순히 '괜찮다'고 말하긴 어려울 것이다.

무의식적으로 리모컨을 집어 들고 TV를 켰다. 광고 채널 하나가 무한 반복되고 있었다. 액자처럼 멈춰 있는 영상 속에서, 여자가 웃고 있었다. 그리고 갑자기, 장면이 바뀌었다.

지직— 하는 노이즈와 함께 화면이 검게 변했다. 이건 방송 사고인가? 리모컨을 눌러도 채널은 바뀌지 않았다. 오히려 볼륨만 서서히 줄어들었다.

순간 나는 소름이 끼쳤다. 이건 누군가 조작하고 있는 것이다. 아니면… 시스템의 또 다른 결함?

그때, TV 화면 한가운데 글자가 떴다.

[Memory Conflict Detected. Rollback Recommended.]

문장은 단순했지만, 의미는 불길했다. 나는 리모컨을 던지듯 내려놓고 자리에서 일어났다. 모든 것이 연결되어 있는 듯한 기분. 누군가 나를 보고 있다는, 아주 오래전부터.

나는 거실의 전등을 모두 끄고 노트북 앞에 다시 앉았다. 어둠 속에서 모니터 불빛만이 유일한 조명처럼 방을 채웠다. 손끝은 마우스를 움직였지만, 눈은 여전히 TV 쪽을 향하고 있었다.

[Memory Conflict Detected.] 단순한 경고일 수 있었다. 하지만 지금까지 겪어온 일련의 사건들과 연결지어 생각하면, 이건 분명 시스템이 보내는 신호였다.

나는 다시 USB를 꽂고 로그 파일을 열었다. 이번에는 복원 모드 대신 수동 탐색으로 전환해, 해당 시각대의 전후 데이터를 정밀히 들여다보았다. 예상대로였다.

[Session Link: TTKL_04_PRESET] / [Layer: Overlap Enabled]

이전에 본 적 없던 키워드였다. Layer. 오버랩. 마치 현실과 현실 아닌 것 사이에 또 다른 층위가 있다는 뜻처럼 보였다.

내가 포렌식으로 복원했던 데이터들은 대부분 삭제된 영상, 조작 흔적, 혹은 단순 로그였다. 그런데 이건 달랐다. 시스템이 내부적으로 생성하고, 스스로 접근 권한을 부여한 듯한 구조였다.

그리고, 다시 들렸다.

“아빠…”

이번엔 오디오 트랙이 아니었다. 내 이어폰은 연결되어 있지 않았고, 노트북 스피커는 음소거 상태였다. 그럼에도 불구하고 분명히 들렸다. 귀로 들었다기보단, 머릿속 어딘가에서 울린 것처럼.

나는 곧바로 볼륨과 프로세스를 확인했지만, 아무 소리도 재생되고 있지 않았다. 기록도 없었다.

갑자기, 커서가 스스로 움직였다. 내 손은 마우스에서 떨어져 있었는데, 화면 안의 커서가 천천히 로그 파일을 닫고, 새 창을 열었다. 그리고 한 문장이 입력되기 시작했다.

[Don’t rewind. Remember forward.]

순간 나는 숨을 멈췄다. 누군가가 시스템에 침투했다는 건가? 아니면, 이건 시스템 그 자체가… 살아 있다는 뜻인가?

나는 조용히 노트북을 덮고, 두 손으로 얼굴을 감쌌다. 마치 오랜 시간 동안 숨겨왔던 것이, 이제야 의식 위로 떠오른 기분이었다. 무서운 건 그것이 낯설어서가 아니라, 어쩌면… 이미 알고 있었던 것이라는 사실 때문이었다.

이제는 확신할 수 있었다. 내가 보고 듣는 모든 것, 그것은 단순한 우연이나 환각이 아니었다. 그 아이는 존재하고 있었다. 최소한, 이 시스템 어딘가에는.

다음날 출근길, 유난히 도로가 막혀 있었다. 라디오에서는 지방 어딘가에서 발생한 대규모 정전 소식을 전하고 있었고, 교통 상황은 평소보다 더 엉망이었다.

운전대를 잡은 채, 나는 문득 ‘오버랩’이라는 단어를 떠올렸다. 층위, 중첩, 그리고 경계. 만약 지금의 세계와 내가 본 로그 속 세계가 겹쳐진 것이라면, 그 경계는 어떻게 규정되어야 할까?

사무실에 도착하자, 수연 실장이 나를 기다리고 있었다. 평소와 다름없이 조용한 얼굴이었지만, 무언가를 이미 알고 있다는 듯한 눈빛이었다.

“오늘 저녁, 시간 괜찮으세요?”

“네. 무슨 일 있으신가요?”

“공식적인 보고는 아니고요. 그냥… 공유하고 싶은 데이터가 있어서요.”

나는 고개를 끄덕였다. 실장은 잠시 다른 팀원들에게 눈길을 준 뒤, 회의실 쪽으로 먼저 걸어갔다. 따라 들어간 회의실 안에는 그녀 혼자뿐이었다.

실장은 조용히 커피를 한 모금 마시고, 태블릿을 꺼내 테이블 위에 올려놓았다. 화면에는 익숙한 인터페이스가 떠 있었다. 우리가 사용하는 복원 툴의 알파 버전이었다.

“이거요… 하연 폰에서 추출한 로그와 유사한 구조예요. 그런데, 내부 해시값이 달라요. 마치, 다른 세션에서 생성된 것처럼요.”

“그게 무슨 의미인가요?”

“동일한 대상, 다른 출처. 그리고… 더 중요한 건, 이 파일의 타임스탬프예요.”

실장은 화면을 가리켰다. 시간: 2024년 12월 3일. 아직 오지 않은 날짜였다.

“이게 가능한 건가요? 복원된 로그가 미래의 타임스탬프를 가질 수 있어요?”

“기존 알고리즘으로는 불가능해요. 그래서 전… 이게 단순히 데이터가 아니라, 어떤 종류의 '예고'일 수도 있다고 생각해요.”

그 말에 나는 잠시 말을 잇지 못했다. 예고. 미래의 단서. 시뮬레이션이 오류를 수정하기 위해 자체적으로 생성하는 ‘예측 복원’이라면… 가능성은 있다.

나는 화면 속 타임스탬프를 한참이나 바라봤다. 2024년 12월 3일. 지금으로부터 넉 달 이상 남은 미래. 하지만 이 로그는 분명 오늘 복원된 것이었다.

“혹시, 이 파일의 생성 경로를 알 수 있을까요?”

“로그상 경로는 있어요. 그런데 실제 경로와 다릅니다. 마치 가상의 드라이브에서 복사된 것처럼요.”

“가상 드라이브요?”

“정확히는… 존재하지 않는 장치입니다. 물리적으로 연결되지 않았고, OS에서도 인식되지 않아요. 단지 기록에만 남아 있을 뿐.”

수연 실장은 조용히 숨을 내쉬었다. 그리고 한 장의 스크린샷을 보여주었다. 폴더명은 `복원 지점 복귀 시도_log`. 그 아래에 `predicted_session`이라는 하위 항목이 있었다.

“이게 시스템 내부에서 생성된 백업이라면, 사용자가 직접 접근할 수는 없겠죠.”

“그렇죠. 그리고 저 타임스탬프… 단순 오류일 수도 있지만, 전 그렇게 보지 않아요.”

그녀의 말에는 단호함이 있었다. 나는 입술을 다물고 태블릿을 응시했다. 하나씩 연결되는 조각들. 과거, 꿈, 복원, 그리고 미래.

회의실을 나와 자리로 돌아오는 길. 복도에 낯익은 뒷모습이 보였다. 하연이었다. 그녀도 어딘가 보고를 마치고 돌아가는 길인 듯했다.

“하연.”

그녀가 뒤돌아보았다. 어제보다 조금 창백한 얼굴이었지만, 눈빛은 흔들리지 않았다.

“혹시… 오늘 저녁에 시간 괜찮으세요?”

“네. 괜찮아요.”

우리는 간단히 약속을 정하고 헤어졌다. 엘리베이터 안에서, 나는 잠시 눈을 감았다. 스스로도 알 수 없는 불안이 자꾸 목덜미를 스쳤다. 모든 게 너무 빠르게, 그리고 너무 정확하게 다가오고 있었다.

keyword
일요일 연재
이전 20화티끌