외부 서비스의 관리자 권한 회수 요청은 자동 절차라고 설명됐지만, 회수 대상에는 04:
증거분석관은 빠진 말을 듣는다 · 2026. 10. 31.
조회수 0
외부 서비스의 관리자 권한 회수 요청은 자동 절차라고 설명됐지만, 회수 대상에는 04:03 토큰의 보존 로그가 포함돼 있었다. 서진은 승인자의 이름을 확인하지 않은 채 회수 요청 자체를 보존했다. 자동이라는 말은 사람이 없다는 뜻이 아니었고, 사람의 책임을 없애는 표현도 아니었다.
여름은 문세림의 가족에게 전달할 설명서를 다시 읽었다. 약품은 창고의 냉장 보관함에서 이동했을 가능성이 있고, 배송 완료 사진은 그 뒤에 만들어졌을 가능성이 있다. 외부 정리 서비스가 토큰을 재발급한 흔적은 있지만, 지시자는 확정되지 않았다. 설명서는 사실과 가설을 색으로 나눴지만, 가족에게는 색보다 순서가 중요했다.
“언니가 어디에서 죽었는지도 아직 모르는 건가요?” 동생이 물었다.
“발견 장소는 창고입니다. 외상이 생긴 장소와 약품이 이동한 장소는 추가 확인이 필요합니다.”
“그럼 왜 배송 사진부터 말합니까?”
서진은 잠시 멈췄다. 사진은 사건의 질문을 만들었지만, 가족에게는 언니의 죽음보다 기록의 조작을 먼저 설명하는 셈이었다. 그녀는 설명서의 첫 문장을 바꿨다. ‘문세림 씨의 사망 원인과 장소는 법의학·물리 자료로 확인 중이며, 배송 기록은 그 시간선을 검증하는 자료입니다.’
동생은 그 문장을 읽고도 고개를 들지 않았다. “이렇게 쓰면 제가 무엇을 믿어야 하는지 모르겠어요.”
“지금 믿어 달라는 게 아니라, 확인된 것과 아직 모르는 것을 구분해 드리는 겁니다.”
그는 설명서를 받아 갔다. 회색실이 사건을 빨리 해결한다고 말하지 않았다는 사실은 위로가 아니었지만, 적어도 조기 결론을 가족에게 떠넘기지는 않았다.
오후에 민우는 외부 서비스의 권한 회수 요청을 확대 보존하자고 했다. 물류회사 법무 계정이 요청을 보냈고, 회수 승인에는 내부 관리자 두 명이 필요했다. 민우는 회사 서버 전체를 압수해야 한다고 주장했다. 여름은 개인정보와 보호 대상의 자료가 함께 들어갈 수 있다며 범위를 줄이자고 했다.
“범위를 줄이면 회수자가 기록을 지울 수 있습니다.”
“범위를 넓히면 관련 없는 사람이 수사 대상이 됩니다.”
서진은 두 사람의 말을 모두 회의록에 적었다. 그동안 팀은 속도와 동의의 우선순위를 암묵적으로 공유했지만, 이제는 서로 다른 규칙을 가지고 있다는 사실이 드러났다.
여름은 보존과 열람을 나누는 안을 제시했다. 회수 요청의 원본, 승인 시각, 권한 변경 이력은 즉시 보존한다. 계정 내부의 사람 자료는 외부 검토자가 먼저 분리한다. 그 뒤 범죄 관련성이 확인된 부분만 회색실이 열람한다. 민우는 여전히 불충분하다고 했지만, 서진은 그 안에 동의했다.
“외부 검토자가 누구인지 우리가 정하면 독립적이지 않잖아요.”
“그럼 양쪽 기관에서 한 명씩 지정합시다.” 여름이 답했다.
민우는 반대하려다 입을 다물었다. 회색실이 모든 권한을 가질 수 없다는 것을 인정하는 순간이었다.
송주혁은 회수 요청의 승인 계정 중 하나가 자신의 회사 계정이라는 사실을 확인했다. 그는 즉시 계정 전체를 열지 않고, 승인 시각과 권한 변경만 제공했다. 회수 요청은 23:18에 작성됐고, 승인자는 23:21에 접속했다. 그 시각 송주혁은 보호기관과 통화 중이었다는 통화 내역을 제출했다.
민우가 그를 보며 말했다. “당신이 아니라는 건 확인되지만, 회사 안의 다른 사람은 아닙니다.”
“그래서 그 사람을 찾으려고 제 계정 전체를 여는 건 거부합니다.”
“범행을 숨기고 있을 수도 있죠.”
“그 가능성을 확인할 독립 자료를 찾으세요.”
송주혁은 자신이 보호하려는 사람의 이름을 끝내 말하지 않았다. 그러나 관리자 계정이 회수 절차에 연결됐다는 사실을 숨기지 않았다. 그는 보호와 회사 책임을 같은 문장으로 섞지 않으려 했다.
서진은 그 자료를 분석하기 위해 능력 사용을 고려했다. 회수 요청을 보낸 사람의 원음 진술을 들으면 의식하지 않은 단어를 얻을 수 있을지도 몰랐다. 하지만 원본 진술의 보존 상태가 확인되지 않았고, 능력 사용은 다시 일상어를 잃게 만들 수 있었다. 그녀는 사용하지 않기로 하고, 담당자들의 접속 시각과 승인 순서를 먼저 대조했다.
민우가 물었다. “지금도 안 듣습니까?”
“원본이 아니면 발동 조건을 충족하지 않습니다. 원본이어도 독립 자료가 먼저입니다.”
“당신이 판단을 숨기는 것처럼 보일 수 있습니다.”
“그래서 미사용도 기록합니다.”
서진은 능력 사용표에 ‘미사용, 이유: 원본 보존 불확실·독립 자료 존재’라고 적었다. 여름은 그 문장을 고치지 않았다. 그녀는 서진의 판단을 대신 설명하지 않고 그대로 인용했다. 두 사람의 신뢰는 가까워진 말투가 아니라, 상대의 문장을 바꾸지 않는 방식으로 쌓였다.
외부 검토 결과, 회수 요청은 자동 정책이 아니라 관리자가 수동으로 재실행한 절차였다. 그러나 관리자의 이름은 서비스 계약 대행사 계정으로 가려져 있었다. 회수 요청이 범죄 은폐인지 계약 종료인지 판단할 수 없었고, 팀은 물류회사에 승인 사유를 묻는 서면 질의를 보냈다.
밤에 문세림의 가족이 다시 연락했다. 동생은 설명서의 가설 표시에 대해 질문했다. “제가 지금 공개를 요구하면, 원문을 볼 수 있습니까?”
서진은 여름에게 먼저 선택지를 확인했다. 원문 공개, 제한 메타데이터 유지, 법률기관과 공동 재검토. 동생은 고민 끝에 제한 메타데이터를 유지하고, 외상 시간선이 더 분명해질 때 다시 결정하겠다고 했다.
그 선택은 수사 속도를 늦췄지만, 가족이 공개를 강요받지 않았다는 기록을 남겼다. 서진은 당사자의 선택을 사건 해결의 보상으로 쓰지 않았다. 그것은 절차의 일부였다.
밤 열한 시, 회수 대상 로그의 보존 확인이 도착했다. 원본은 남았지만, 그 안에서 서비스 계정의 실제 사용자는 여전히 가려져 있었다. 민우는 그 빈칸을 채우기 위해 회사 서버 전체를 요구했고, 여름은 확장 조건을 달자고 했다. 두 사람의 충돌은 이제 개인 감정이 아니라 권한의 충돌이었다.
서진은 회의록의 마지막에 적었다. ‘분석권은 원본 보존과 분리한다. 외부 검토자 두 명이 권한 회수 로그를 확인한다. 능력 사용은 미사용 사유까지 공개한다. 정정 책임은 최초 가설을 쓴 사람의 이름으로 남긴다.’
팀은 해체되지 않았지만, 이전처럼 한 사람이 자료를 쥐고 결론을 밀어붙일 수 없게 됐다. 그 변화는 신뢰의 회복이 아니라, 신뢰가 없어도 오판을 줄이도록 만든 장치였다. 다음 날 아침, 외부 검토자 두 명이 회수 로그를 나눠 보았다. 한 명은 서비스 계약과 권한만, 다른 한 명은 토큰 버전과 접근 시각만 확인했다. 두 자료를 합치는 일은 여름의 승인 뒤에만 가능했다. 민우는 그 절차가 지나치게 느리다고 말했지만, 검토자들은 서로가 같은 결론을 향해 자료를 고르는 것을 막기 위해 일부러 나눈 것이라고 설명했다.
송주혁은 회의실에 들어와도 어느 쪽 자료를 볼지 선택하지 않았다. 그는 자신의 회사 계정이 두 번째 검토자에게 배정될 수 있다는 사실을 알고 있었지만, 사람 정보가 섞인 원본은 보호기관을 먼저 거쳐야 한다고 했다. 민우는 그 거부를 또 다른 지연으로 보았고, 서진은 거부와 지연을 같은 단어로 쓰지 않았다.
“지연에는 이유와 끝나는 시간이 있어야 합니다.” 여름이 말했다. “이번 거부는 보호기관 검토가 끝나는 시각을 함께 적습니다.”
송주혁은 그 조건에 서명했다. 보호를 무기한의 비밀로 만들지 않기 위해서였다. 아딜이 연락하지 않더라도, 물리 기록과 장비 흐름으로 사건을 계속할 수 있는지 외부 검토자가 판단하기로 했다.
민우는 팀 안에서 그동안 자신이 보존 요청을 넓히며 누구의 자료를 같이 가져왔는지 점검했다. 피해자 가족의 연락처, 배송기사의 수당 기록, 보호기관의 비공개 식별자. 그는 하나씩 삭제하지 않고, 접근 목록에서 분리해 별도 보관으로 옮겼다. 서진은 그 작업이 정리보다 책임에 가깝다는 것을 알았다.
“이 자료를 처음부터 분리했어야 합니다.” 민우가 말했다.
“지금 분리한 시각과 이유를 남기면 됩니다.” 서진이 답했다.
“처음에 못 했다는 건요?”
“그것도 정정 보고서에 들어갑니다.”
민우는 자기 이름으로 보고서를 작성했다. 여름은 문장을 고치지 않고, 공개 가능한 부분과 내부 검토만 필요한 부분을 나눴다. 서진은 능력 사용표의 미사용 기록을 첨부했다. 팀은 각자의 오류를 한 문서로 합쳐 서로의 책임을 희석하지 않았다.
오후 네 시, 회수 로그에서 수동 재실행 시각이 확인됐다. 관리자 계정은 04:04:02에 한 번, 04:06:11에 한 번 열렸다. 첫 번째는 취소 토큰 발급과 겹쳤고, 두 번째는 보존 요청 직전이었다. 두 시각의 사용자는 여전히 가려졌지만, 같은 권한이 반복됐다는 사실은 남았다.
서진은 사건표에 두 시각을 추가했다. 외부 서비스가 사건 기록을 정리했을 가능성은 높아졌지만, 그 서비스가 문세림의 사망을 계획했다는 증거는 없었다. 내부 물리 사건과 외부 기록 정리가 연결되는 지점은 바로 이 두 시각뿐이었다.
송주혁은 그 시각표를 보며 말했다. “이제는 제가 숨긴 사람을 찾지 않아도, 외부 서비스가 누구와 연결됐는지 볼 수 있겠군요.”
“네. 하지만 그 자료가 보호 대상의 신원을 드러내면, 접근은 다시 멈춥니다.”
그는 고개를 끄덕였다. 보호를 위해 닫은 문이 언젠가 열릴 수 있다는 사실과, 누구나 열 수 있는 문은 아니라는 사실을 동시에 받아들이는 표정이었다. 밤늦게 여름은 회의록을 닫으며 말했다. “팀이 서로 믿어서 규칙을 지키는 게 아니라, 믿지 못하는 순간에도 규칙이 남아야 합니다.”
서진은 그 문장을 그대로 인용했다. 회색실의 다음 질문은 이제 범인의 이름만이 아니라, 누가 어떤 권한으로 기록을 바꿀 수 있었는지였다. 회수 로그의 보존 시한은 다시 줄어들고 있었다. 민우는 보존 시각을 다시 확인하고 다음 요청을 준비했다. 아무도 아직 결론을 닫지 않았다. 서진은 회수 요청의 승인자와 계약 대행사의 권한을 별도 표에 옮겼다. 아직 범행을 확정할 수 없었지만, 자료가 사라질 수 있는 시간과 누가 그 위험을 통제했는지는 확인할 수 있었다. 팀은 그 확인부터 다시 시작했다.
이번 화가 재미있었나요?
좋아요와 평점은 언제든 변경할 수 있습니다.
독자 평점 아직 없음