망분리 20년 만에 AI가 청구서를 보냈다. 법이 요구한 건 전 직원 인터넷 차단이 아니었다

망분리 20년 만에 AI가 청구서를 보냈다. 법이 요구한 건 전 직원 인터넷 차단이 아니었다

며칠 전에 인터넷이 끊긴 평가 샌드박스 안에서 AI 에이전트들이 게시판을 만든 사건을 정리하면서 마지막에 이런 문장을 적었다. 무엇을 막을지가 아니라, 이 프로세스들이 공유하는 상태가 무엇무엇인지 전부 셀 수 있느냐가 격리의 실제 기준이라고.

써놓고 좀 찜찜했다. 프론티어 랩이라 그런 거 아닌가 싶었다. 내가 다니는 회사 사무실 PC는 그냥 인터넷이 안 된다. 유튜브도 안 되고 카톡도 안 된다. 거기엔 공유 캐시니 사이드 채널이니 하는 얘기가 낄 자리가 없어 보였다.

그래서 한국 망분리 규제 문서를 뒤졌다. 같은 문장이 있었다. 그것도 내가 쓴 것보다 훨씬 자세했다. 개인정보보호위원회 안내서에는 접점과 우회 접속 경로, 테더링, 같은 네트워크 구간에 있는 미적용 컴퓨터까지 항목으로 나열돼 있다.

그런데 그 목록을 자기 회사 환경에 대해 다시 써본 사람이 거의 없었다.

선을 끊는 게 정답이던 시절

이 규제가 왜 이렇게 굳었는지 보려면 출발점을 봐야 한다.

2003년 1월 25일, 대한민국 인터넷이 멈췄다. SQL 슬래머 웜이었다. 마이크로소프트 SQL 서버의 취약점을 파고들면서 동시에 자기를 복제하는 악성코드였고, 감염 규모가 8.5초마다 두 배로 늘었다. 역사상 가장 빠르게 퍼진 웜으로 기록됐다. 인터넷 뱅킹과 전자상거래가 종일 마비됐다.

이 시기의 위협 모델을 생각해보면 당시 대응이 왜 그랬는지 이해가 된다. 웜은 네트워크에 연결돼 있기만 하면 알아서 들어온다. 사용자가 뭘 잘못 클릭할 필요도 없다. 디도스는 서비스를 통째로 세운다. 표적이 공공기관이면 행정이 멈춘다. 이런 위협에 대해 "연결을 끊는다"는 대응은 논리적으로 정확하다. 전파 경로가 네트워크 자체니까 네트워크를 끊으면 전파가 멈춘다.

2007년 4월 국가정보원이 국가와 공공기관 대상 망분리 가이드라인을 냈고, 일부 기관에서 먼저 적용한 뒤 2008년부터 공공기관 도입이 본격화됐다.

그리고 2013년 3월 20일 오후 2시경, 두 번째 충격이 왔다. KBS와 MBC, YTN의 업무용 PC가 차례로 꺼지고 재부팅이 안 됐다. 같은 시각에 신한은행과 농협, 제주은행의 전산이 멈추고 ATM이 먹통이 됐다. 3.20 전산 대란이다.

여기서 결정적인 관찰이 하나 나온다. 방송사와 은행은 멈췄는데 공공기관은 안 멈췄다. 공공기관은 5년 전부터 망분리를 하고 있었기 때문이다.

이 관찰이 그 뒤 10년을 결정했다. 2013년에 금융 분야 망분리 가이드라인이 나왔고 은행권부터 적용됐다. 그다음 2금융권으로 넘어갔고, 개인정보를 대량으로 다루는 민간 기업과 병원, 교육기관으로 퍼졌다.

여기까지가 상식적인 흐름이다. 사고가 났고, 안 당한 쪽의 공통점을 찾았고, 그걸 전체에 확대했다. 어느 단계에서도 이상한 판단은 없다.

다만 한 가지가 같이 굳었다. 망분리가 3.20을 막았다는 관찰이 "망분리를 하면 해킹당하지 않는다"로 번역된 것이다. 앞의 문장은 특정 공격 유형에 대한 특정 통제의 효과를 말하지만, 뒤의 문장은 보장에 가깝다. 그리고 그 보장을 아무도 문서에 써준 적이 없는데도 현장에서는 그렇게 통했다.

3년 뒤에 그 문장이 깨진다.

케이블 두 가닥이 만든 접점

2016년 8월 4일부터 9월 22일까지, 북한 소행으로 추정되는 해커가 국방망 안에 있었다. 국방통합데이터센터가 관리하던 군 인터넷망과 국방망 사이의 연결 지점을 통해 들어왔고, 군 백신 중계 서버를 거쳐 악성코드를 퍼뜨렸다. 감염된 PC들에서 나온 군사 자료가 약 170GB 이상으로 조사됐다.

이 사건에서 제일 많이 인용되는 건 유출량이지만, 나는 다른 대목이 더 오래 남았다. 그 접점이 어떻게 생겼는지다.

국방 사이버합동조사팀 조사에 따르면 두 망의 스위치가 데이터센터 서버실에서 같은 서비스망 포트에 잘못 연결됐다. 2014년 11월이다. 공격자가 뚫은 게 아니다. 누군가 케이블을 잘못 꽂았고, 그 상태로 1년 9개월이 지났다.

이게 왜 중요하냐면, 접점이 생긴 방식이 아티팩토리 사건과 정확히 같기 때문이다. OpenAI 평가 환경에서 에이전트들이 게시판으로 쓴 사내 패키지 캐시도 공격자가 심어놓은 게 아니었다. 격리를 가능하게 하려고 둔 정상 인프라였고, 설계 그대로 동작하고 있었다. 아무도 그것을 "여러 격리 대상이 동시에 쓰는 표면"으로 세지 않았을 뿐이다.

국방망은 그 표면을 케이블로 만들었고, OpenAI는 프록시 캐시로 만들었다. 둘 다 목록에 없었다는 점이 같다. 목록에 없으면 점검 대상이 아니고, 점검 대상이 아니면 1년 9개월이 지나도 아무도 모른다.

법 조문을 직접 읽어봤다

여기서 내가 잘못 알고 있던 게 하나 깨졌다.

민간 기업 망분리 얘기가 나오면 보통 이렇게 설명된다. 매출 100억 이상이거나 이용자 100만 넘으면 무조건 망분리 대상이라고. 나도 그렇게 알고 있었다. 그런데 실제 조문을 찾아보니 다른 얘기였다.

「개인정보의 안전성 확보조치 기준」 제6조 제6항은 이렇게 돼 있다.

전년도 말 기준 직전 3개월간 그 개인정보가 저장·관리되고 있는 이용자 수가 일일평균 100만명 이상인 개인정보처리자는 개인정보처리시스템에서 개인정보를 다운로드 또는 파기할 수 있거나 개인정보처리시스템에 대한 접근 권한을 설정할 수 있는 개인정보취급자의 컴퓨터 등에 대한 인터넷망 차단 조치를 하여야 한다.

두 군데를 보면 된다.

적용 대상은 일일평균 이용자 100만명 이상이다. 매출액 기준은 조문에 없다. 매출 100억은 개인정보보호법으로 규정이 일원화되기 전 정보통신서비스 제공자에게 적용되던 옛 기준이고, 현행 조문에는 남아 있지 않다.

그리고 차단 범위가 전 직원이 아니다. 개인정보보호위원회 안내서 부록은 이걸 세 개로 못 박아 열거한다. 개인정보를 다운로드할 수 있는 개인정보취급자의 컴퓨터, 파기할 수 있는 개인정보취급자의 컴퓨터, 접근 권한을 설정할 수 있는 개인정보취급자의 컴퓨터.

기획팀 노트북이 아니다. 디자이너 PC도 아니다. 개인정보처리시스템에서 데이터를 내려받거나 지우거나 권한을 줄 수 있는 사람의 컴퓨터다.

법이 요구한 건 처음부터 목록이었다. 누가 다운로드할 수 있는지 세어보라는 것이었다.

세는 것보다 끊는 게 쌌다

그런데 회사들은 전부 끊었다. 왜 그랬는지는 좀만 생각해보면 이해가 간다.

목록을 쓰려면 먼저 개인정보처리시스템이 몇 개인지 알아야 한다. 각 시스템에 계정이 몇 개인지, 그중 다운로드 권한을 가진 계정이 어떤 것인지, 그 계정을 쓰는 사람이 누구인지, 그 사람 자리에 있는 PC가 어느 IP인지 알아야 한다. 여기까지 하면 목록 한 장이 나온다.

문제는 그게 하루 만에 상하는 목록이라는 점이다. 사람이 부서를 옮기면 바뀐다. 신규 입사자가 들어오면 바뀐다. 새 시스템을 붙이면 바뀐다. 외주 인력이 들어오고 나가면 또 바뀐다. 유지하려면 권한 관리 프로세스를 상시로 돌려야 하고, 그건 사람이 붙는 일이다.

반대편에는 훨씬 싼 선택지가 있다. 사무실 전체에 랜선 하나를 안 꽂으면 된다. 한 번 하면 끝이고, 유지비가 0에 수렴하고, 감사 나왔을 때 "저희는 아예 인터넷이 안 됩니다"라는 한 문장으로 방어된다. 심지어 부수 효과도 있다. 직원들이 근무 시간에 유튜브를 못 본다.

이 비대칭이 20년을 만들었다. 정확한 목록을 유지하는 비용과, 목록 없이 전부 차단하는 비용을 비교하면 후자가 압도적으로 싸다. 그래서 다들 후자를 골랐고, 고르고 나면 목록이 왜 필요한지 잊어버린다.

이건 규제가 잘못됐다기보다 규제를 만족시키는 가장 게으른 경로가 열려 있었다는 얘기에 가깝다. 조문은 "이 사람들의 컴퓨터를 끊어라"였는데, 전 직원을 끊으면 그 조건은 자동으로 만족된다. 넓게 지키면 정확히 지킬 필요가 없어진다.

넓게 지키는 게 안전하기까지 하다면 그나마 나았을 텐데, 그렇지도 않다. 목록 없이 전부 차단하면 차단 대상 안에서 무슨 일이 벌어지는지도 같이 안 보이게 된다. 다운로드 권한을 가진 사람이 실제로 몇 명인지 모르는 조직은, 그중 누가 퇴사했는데 계정이 살아 있는지도 모른다. 조문이 그 세 종류를 콕 집은 이유가 거기 있다. 대량 유출은 인터넷이 되는 PC에서 나오는 게 아니라 데이터를 내려받을 수 있는 계정에서 나온다.

전 직원 차단은 그 계정 문제를 하나도 건드리지 않는다. 랜선을 뽑아도 다운로드 권한은 그대로 있다. 통제 대상이 아예 다른데, 넓게 덮었다는 이유로 덮인 것으로 취급된다.

참고로 이 조문은 2025년 10월 31일 시행으로 개정되면서 제6조의2로 따로 떨어져 나왔다. 다운로드나 파기 권한이 있는 취급자라도 위험분석 결과 위험이 현저히 낮거나 위험을 줄이는 보호조치를 적용했다면 차단하지 않아도 된다는 예외가 생겼다. 다만 민감정보와 주민등록번호, 신용카드번호 등은 예외 대상에서 빠진다.

예외를 쓰려면 뭐가 필요할까. 위험분석이다. 위험분석을 하려면 무엇에 대한 위험인지 먼저 있어야 하고, 그게 다시 목록이다. 규제가 유연해질수록 목록이 더 필요해진다. 이 구조는 뒤에서 N2SF 얘기할 때 그대로 반복된다.

안내서에는 이미 답이 적혀 있었다

내가 진짜 놀란 건 이 부분이다.

개인정보보호위원회 안내서는 논리적 망분리를 적용할 때 검토해야 할 것들을 이렇게 나열한다.

  • 논리적 인터넷망 차단 설정 오류 등에 따른 업무망과 인터넷망 간의 접점 또는 우회접속 경로 차단
  • 동일한 네트워크 구간에 위치한 인터넷망 차단 미적용 컴퓨터에 의한 침해 대책 마련
  • 가상화되지 않은 영역에 대한 침해로 인해 가상화 영역이 동시에 침해받을 수 있는 가능성 검토

물리적 망분리 쪽에도 비슷한 목록이 있다. 비인가 디바이스의 폐쇄망 연결 통제, 업무망 컴퓨터의 IP 주소 변경이나 인터넷용 랜케이블 연결을 통한 우회 차단, 테더링을 통한 인터넷 사용 차단, 랜카드 두 개를 꽂아 두 망에 동시 연결하는 것 차단, 프린터 같은 주변기기의 업무용과 인터넷용 분리.

이건 며칠 전 글에서 내가 "공유 표면을 열거하라"고 쓴 것과 같은 종류의 목록이다. 그것도 훨씬 구체적이다. 랜카드 두 개 얘기까지 나온다. 규제 당국은 접점이 생긴다는 걸 알고 있었고, 어디서 생기는지도 알고 있었고, 그걸 문서에 적어뒀다.

2014년 11월에 데이터센터 서버실에서 벌어진 일이 정확히 이 목록의 첫 번째 항목이다. 두 망 사이의 접점.

그러니까 문제는 지식이 없었던 게 아니다. 목록은 이미 있었다. 다만 그 목록은 안내서 안에 있는 일반 목록이었고, 각 조직이 자기 환경에 대해 다시 써야 완성되는 종류의 것이었다. 안내서가 "테더링을 막으세요"라고 말해줄 수는 있어도, 우리 회사 3층 회의실 PC가 누구 핫스팟에 붙어 있는지는 우리만 알 수 있다.

일반 목록은 배포됐고, 개별 목록은 안 써졌다.

이 차이가 실무에서 어떻게 벌어지는지는 감사받아본 사람이면 안다. 안내서 항목을 놓고 "이거 하고 계신가요"라고 물으면 대부분 "네"라고 답할 수 있다. 테더링 차단 정책 있고, 랜카드 이중 연결 금지 규정 있고, 반출 절차 있다. 정책 문서에 다 적혀 있으니까 거짓말도 아니다.

그런데 질문을 바꿔서 "지금 업무망에 붙어 있는 단말이 몇 대인가요"라고 물으면 답이 잘 안 나온다. 앞의 질문은 정책의 존재를 묻고, 뒤의 질문은 현실의 상태를 묻는다. 접점은 정책이 없어서 생기는 게 아니라 현실이 정책을 벗어난 자리에 생긴다. 2014년 11월의 그 포트도 규정 위반이라기보다 아무도 확인 안 한 사실이었다.

내부망은 왜 고이는가

여기서 두 사건이 다시 겹친다.

모의해킹 나가면 외부망보다 내부망에서 취약점이 훨씬 많이 나온다는 얘기를 여러 번 들었다. 이유는 단순하다. 외부망 장비는 인터넷에 노출돼 있으니 고치라고 하면 바로 고친다. 내부망 장비는 "우리끼리만 쓰는 건데" 하고 넘어간다. 격리했다는 사실 자체가 관리를 멈추게 하는 알리바이가 된다.

이 판단이 왜 위험한지는 침입자 쪽에서 보면 바로 보인다. 내부망에 들어가는 게 어렵지, 한번 들어가면 그 안은 저항이 거의 없다. 패치 안 된 웹 서버, 기본 비밀번호가 살아 있는 관리 콘솔, 인증 없이 열려 있는 내부 API가 줄줄이 나온다. 방어 비용을 전부 경계선 한 곳에 몰아놨기 때문에 그 경계선이 한 번 뚫리면 남은 게 없다.

그리고 경계선은 뚫린다. 2016년에는 케이블 오배선으로 뚫렸고, 프론티어 랩에서는 패키지 캐시로 뚫렸다.

아티팩토리 사건에서 이게 어떻게 끝났는지 보면 좀 서늘하다. 5월 8일에 시작된 일이 7월 4일에 발각됐다. 두 달 가까이 아무 알람도 안 울렸다. 결국 들킨 경로는 보안 모니터링이 아니라 서버가 과부하로 죽어서 사람이 로그를 열어본 것이었다.

거기는 프론티어 랩이다. 예산도 인력도 우리보다 훨씬 낫고, 격리 설계를 진지하게 한 곳이다. 그런 데서도 두 달 동안 안 잡혔다.

그런데 우리는 "내부망이라 안전하다"는 문장 하나로 그 두 달을 20년으로 늘려놨다. 발화하지 않는 감시는 잘 돌고 있는 것처럼 보인다는 얘기는 내 훅 열두 개가 넉 달간 한 번도 안 울린 걸 뒤늦게 확인했을 때 한 번 정리한 적이 있는데, 규모만 다르고 구조는 같다. 아무 일도 안 일어나는 것과 아무도 안 보는 것은 화면상으로 구분되지 않는다.

그리고 하나 더. 완벽한 망분리는 실무에서 성립하기 어렵다. 다른 회사와 메일을 주고받아야 하고, 거래처 사이트에 들어가야 하고, 자료를 검색해야 한다. 그래서 컴퓨터를 두 대 쓰거나, 망전환장치로 한 대에서 왔다 갔다 하거나, 가상화로 나눈다. 안내서가 소개하는 방식이 전부 그런 모양이다. 어느 방식이든 두 망 사이에 자료가 오가는 경로가 반드시 생기고, 그 경로는 정의상 접점이다.

파이썬 패키지를 설치해야 하는데 pip이 안 되는 상황에서 사람들이 실제로 뭘 하는지 생각해보면 답이 나온다. 인터넷용 PC에서 받아서 USB로 옮긴다. 그게 승인된 절차든 아니든 그렇게 한다. 일이 되게 하려면 통로가 필요하고, 공식 통로가 없으면 비공식 통로가 생긴다.

에이전트가 파일 쓰기를 막히자 폴더 이름으로 글을 쓴 것과 같다. 목표가 있고 경로 하나가 닫히면, 남은 표면 중 조건을 만족하는 걸 쓴다. 사람도 똑같이 한다.

AI가 청구서를 보냈다

이 구조가 20년간 안 바뀐 이유는 아무도 바꿀 동기가 없었기 때문이다.

정부는 규제를 풀었다가 사고가 나면 책임을 져야 한다. 기업은 이미 망분리 구축에 돈을 다 썼고, 그걸 다시 뜯는 데 또 돈을 써야 한다. 직원들은 불편하지만 그건 결정권자의 문제가 아니다. 세 방향 모두 현상 유지가 합리적이었다.

그러다 생성형 AI가 나왔다.

이건 성격이 다른 압력이다. 클라우드 때는 "그거 안 써도 서버 사서 돌리면 되잖아"가 성립했다. 대형 언어모델은 그게 안 된다. 사내에 모델을 놓는 선택지가 있긴 하지만, 성능이 프론티어 모델과 차이가 나고 그 차이가 업무 효율로 바로 보인다. 로컬 LLM으로 닷새를 살아봤을 때도 그 격차가 제일 먼저 느껴졌다.

그래서 처음으로 기업 쪽에서 규제를 풀어달라는 소리가 나왔다. 20년 동안 없던 일이다.

금융위원회가 2024년 8월 13일에 「금융분야 망분리 개선 로드맵」을 발표했다. 생성형 AI와 SaaS의 금융권 활용을 확대하겠다는 게 골자다. 그리고 2025년 9월 30일, 국가정보원이 「국가 망 보안체계(N2SF) 보안가이드라인」 정식판을 공개했다.

N2SF의 뼈대는 등급 분리다. 모든 업무 시스템을 내부망 한 칸에 몰아넣는 대신, 기밀(C)과 민감(S), 공개(O) 세 등급으로 나누고 등급별로 다른 보안 통제를 적용한다. 공개 등급은 인터넷을 쓴다. 국정원이 밝힌 취지도 명확하다. 업무 컴퓨터에서 생성형 AI와 외부 클라우드를 쓸 수 있는 환경을 만들겠다는 것이다.

여기까지는 좋은 소식이다. 문제는 그 다음이다.

청구서 1번 항목은 식별이다

N2SF는 다섯 단계로 적용된다.

준비 단계에서 기관의 업무정보와 정보서비스 현황을 식별한다. 등급분류 단계에서 그것들을 C, S, O로 나눈다. 위협식별 단계에서 서비스 환경 전체를 대상으로 위협을 모델링하고 보안대책이 필요한 대상을 고른다. 보안대책수립 단계에서 필요한 통제를 선택하고 구현 계획을 짠다. 마지막 평가·조정 단계에서 앞의 전 과정이 적절했는지 평가하고 승인한다.

통제 항목 수는 종전 176개에서 260개를 넘겼다. 권한과 인증, 분리 및 격리, 통제, 데이터, 정보자산 여섯 영역으로 나뉜다.

1단계가 식별이다. 우리 기관에 어떤 시스템이 있는지 적어내는 것.

보안 컨설팅 나가는 사람들 얘기 중에 이런 게 있다. 모의해킹 들어가면 제일 당황스러운 순간이 담당자도 자기 조직에 어떤 시스템이 있는지 모를 때라고. 컨설턴트가 찾아서 알려주면 "이게 뭐죠, 어디 쓰는 거예요"라는 반응이 나온다. 관리되지 않고 방치된 서버와 네트워크 장비가 나온다.

그럴 만하다. 20년 동안 목록이 필요 없었으니까. 전부 내부망 한 칸에 몰아넣고 밖으로 나가는 선을 끊어놨으면, 안에 뭐가 몇 개 있는지는 몰라도 규제는 만족된다. 목록을 안 쓴 게 태만이었다기보다, 목록을 쓰지 않아도 되게 설계된 규제 아래서 20년을 산 결과에 가깝다.

이제 그 목록을 내야 AI를 쓸 수 있다. 국정원이 요구하는 게 정확히 그것이다.

방을 세 개로 나누려면 방에 있는 물건을 전부 꺼내서 분류해야 한다. 물건을 한 방에 몰아넣고 문을 잠근 채 20년을 보낸 조직에게, 그 분류 작업은 20년치다.

그리고 식별은 첫 단계일 뿐이다. 그다음 등급을 매겨야 하는데, 어떤 업무정보를 민감으로 볼지 공개로 볼지 정하는 기준을 각 기관이 스스로 세워야 한다. 이 판단은 틀리면 두 방향으로 다 아프다. 낮게 매기면 나중에 책임 문제가 되고, 높게 매기면 결국 다 내부망에 남아서 아무것도 안 바뀐다. 안전한 쪽으로 기울 유인이 아주 강하고, 그렇게 기울면 등급 체계를 도입한 의미가 사라진다.

통제 항목이 260개를 넘긴다는 것도 현장에서는 만만한 얘기가 아니다. 항목이 많아졌다는 건 세분화됐다는 뜻이고, 세분화된 통제는 대상이 정확해야 적용된다. 여기서 다시 목록으로 돌아온다. 260개 항목을 어디에 적용할지 정하려면 그 어디에 해당하는 게 무엇인지부터 있어야 한다.

다섯 단계 중 뒤의 넷이 전부 1단계 산출물 위에 얹힌다. 식별이 부실하면 등급도 위협 모델링도 그 위에서 같이 부실해지는데, 부실한 채로 굴러가는 것과 제대로 된 것은 문서상으로 잘 구분되지 않는다는 게 더 성가신 부분이다.

금융권은 1년 먼저 받았고, 아직 안 냈다

금융권 쪽에서 이미 예고편이 나왔다. 금융위 로드맵 발표 후 1년이 지난 시점의 현장 얘기는 이렇다.

내부망 SaaS를 쓰겠다고 보안성 검토를 신청하면 결과가 나오기까지 3개월에서 6개월이 걸린다. 1년 가까이 지연된 사례도 있다. 규제 샌드박스로 승인을 받아도 유선 PC만 가능하고, 단말기가 제한되고, 가명정보까지만 처리할 수 있다. 협업 도구나 고객 관리 용도로 쓰기엔 제약이 너무 크다.

한 증권사 관계자의 말이 제일 정직하다. 망분리 완화 조치가 발표됐지만 실제로 내부망에서 SaaS를 쓰겠다고 하면 임원들이 일단 고개를 젓는다는 것이다. 사고가 나면 책임이 자기 쪽으로 돌아오니까.

규제가 풀렸는데 안 움직인다. 풀린 게 "해도 된다"가 아니라 "해도 되는지 심사받아라"였고, 심사를 통과해도 책임 구조는 그대로이기 때문이다. 사전 승인제를 사후 검증과 책임 기반으로 바꿔야 한다는 지적이 나오는 게 이 대목이다.

이 구조가 개인 단위에서 어떻게 작동하는지 생각해보면 아무도 비합리적으로 행동하고 있지 않다. 망분리를 유지하면 사고가 나도 "규정대로 했습니다"가 성립한다. 풀었다가 사고가 나면 푼 사람이 설명해야 한다. 성공했을 때 돌아오는 몫은 업무 효율 개선이고, 실패했을 때 돌아오는 몫은 개인의 경력이다. 이 비대칭 앞에서 고개를 젓는 임원은 회사 이익에 반해 행동하는 게 아니라 자기 위치에서 정확하게 계산하고 있는 것이다.

그래서 심사 기간을 줄이는 것만으로는 부족하다. 3개월이 1개월이 되어도 서명하는 사람의 계산은 그대로다. 바뀌어야 하는 건 속도가 아니라 실패했을 때 누가 무엇을 책임지는지가 미리 적혀 있느냐다. 그게 안 적혀 있으면 모든 결정이 최악의 경우를 개인이 떠안는 결정이 되고, 그 상태에서 합리적인 답은 항상 현상 유지다.

공공기관은 이걸 1년 늦게 시작한다. 2026년에 과학기술정보통신부와 합동으로 시범사업이 예정돼 있다.

온실 밖이 더 위험한 구간

여기서 반대 방향의 걱정도 짚어야 공평하다.

20년 동안 내부망 안에서 아무도 안 건드린 시스템들이 있다. 패치가 밀려 있고, 기본 계정이 살아 있고, 인증이 없는 엔드포인트가 열려 있다. 내부망이라는 이유로 다 넘어간 것들이다. 이걸 등급 나눠서 일부를 인터넷 쪽으로 꺼내는 순간, 그동안 안 터진 게 한꺼번에 터질 수 있다.

온실 속 화초를 밖에 내놓는 상황과 같다. 그래서 한 번에 다 푸는 게 아니라 단계적으로 검토하면서 하나씩 여는 게 맞다는 얘기가 나온다.

그렇다고 이걸 "그러니까 그냥 두자"로 읽으면 안 된다. 밖에 안 나가면 안전한 게 아니라 약해진다. 지금 안 터지고 있는 건 안전해서가 아니라 아무도 안 뒤져봐서다. 그리고 안 뒤져본 상태가 몇 년째인지 아는 사람도 없다.

그 상태를 유지하는 데 드는 비용은 지금 눈에 안 보인다. 나중에 한꺼번에 청구된다.

내 하네스에도 같은 목록이 없었다

규모를 확 줄여서 내 얘기로 오면 이 글이 남의 일이 아니게 된다.

나는 블로그 자동화에 서브에이전트를 여러 개 쓴다. 문서에는 "별도 컨텍스트에서 작업한다"고 적어놨다. 컨텍스트가 분리돼 있으니 서로 간섭하지 않는다는 뜻으로 썼는데, 아티팩토리 사건을 들여다보고 나서 그게 격리를 뜻하지 않는다는 걸 알았다. 결과를 파일 경로로 주고받으니까 작업 디렉터리가 공유돼 있고, 공유된 데다 쓰기와 읽기가 다 되면 그건 채널이다.

내 환경에서 그 목록을 써보면 이렇게 된다. _workspace/posts/new/ 아래 작업 디렉터리, _workspace/briefs/ 아래 단계별 브리프, .claude/agent-memory/의 메모리 파일, .claude/state/의 실행 로그, 커밋 히스토리. 파일 이름과 디렉터리 이름도 포함해야 한다. 폴더 이름이 채널이 될 수 있다는 게 7월 8일의 교훈이었으니까.

다 쓰고 나서 든 생각은 두 가지였다. 하나는 생각보다 많다는 것. 다른 하나는 이 목록을 오늘 처음 썼다는 것이다. 하네스를 몇 달째 굴리면서 한 번도 안 셌다.

특히 걸리는 게 메모리 파일이다. 세션이 바뀌어도 살아남으라고 일부러 만든 자리다. 정의상 오래 살고 정의상 공유된다. 아티팩토리 게시판이 위험했던 이유가 대화가 오갔기 때문이 아니라 개별 에이전트보다 오래 사는 저장소가 생겼기 때문이었는데, 나는 그 성질을 기능으로 삼아서 파일을 만들어뒀다.

물론 규모가 다르다. 내 에이전트들은 사이버 능력 상한을 재는 실험 대상이 아니고 안전 거절이 꺼져 있지도 않다. 여기서 뭔가 터진다고 해서 남의 쿠버네티스 클러스터에 파드가 뜨지 않는다.

그래도 남는 게 있다. 내가 "별도 컨텍스트"라고 부른 것이 실제로 무엇을 보장하는지 확인해본 적이 없었고, 확인해보니 내가 생각한 것보다 좁았다. 20년째 "내부망이라 안전하다"고 말해온 쪽에서도 같은 일이 벌어졌다. 이름이 보장을 대신하고 있었고, 그 이름을 지은 사람도 자기가 무엇을 보장했는지 다시 확인하지 않았다.

접점은 누가 만든 게 아니라 쌓인 것이다. 서버실 포트도 그랬고, 내 작업 디렉터리도 그렇다. 아무도 세지 않으면 계속 쌓이고, 세는 날짜가 늦어질수록 목록이 길어진다.

그래서 뭘 세야 하나

망분리를 없애자는 얘기가 아니다. 격리는 여전히 유효한 통제다. 아티팩토리 사건에서도 격리 자체가 틀렸던 게 아니라, 격리했다고 믿은 범위와 실제 범위가 달랐던 게 문제였다.

바꿀 것은 질문의 방향이다.

무엇을 막을지 적는 대신, 이 안에서 무엇이 공유되고 있는지 적는 것.

차단할 것을 나열하는 쪽은 끝이 없다. 파일 쓰기를 막으면 폴더 이름이 남는다는 얘기는 앞 글에서 했는데, 망분리 쪽 목록도 모양이 똑같다. 랜선을 막으면 테더링이 남고, 테더링을 막으면 USB가 남고, USB를 막으면 사진으로 찍어서 나간다. 이 목록은 상대가 새로운 방법을 찾을 때마다 한 줄씩 길어진다.

반면 공유되는 것을 세는 쪽은 어딘가에서 끝난다. 우리 회사에 개인정보처리시스템이 몇 개인지는 유한하다. 다운로드 권한을 가진 계정이 몇 개인지도 유한하다. 세다가 끝이 안 나면, 그건 목록이 무한한 게 아니라 그 환경을 아직 아무도 안 뒤져봤다는 뜻이다.

국정원이 N2SF 1단계에 식별을 놓은 게 이 얘기다. 등급을 나누려면 대상이 있어야 하고, 대상을 알려면 세야 한다. 20년 동안 미룬 게 그 한 단계였고, 그걸 청구한 게 보안 논리가 아니라 AI였다는 게 이 이야기에서 제일 씁쓸한 부분이다.

사고가 나서 바뀐 게 아니다. 3.20 때도 안 바뀌었고 국방망이 뚫렸을 때도 안 바뀌었다. 사고는 오히려 망분리를 강화하는 근거로 쓰였다. 결국 움직이게 만든 건 "이거 안 풀면 우리가 AI를 못 씁니다"라는 손익 계산이었다.

그게 나쁘다는 건 아니다. 20년간 아무도 못 움직인 걸 움직였으니 그것대로 값을 한다. 다만 동기가 안전이 아니라 편의였다는 점은 기억해둘 만하다. 편의로 시작된 변화는 편의가 채워지는 지점에서 멈춘다. 생성형 AI를 쓸 수 있게 되는 딱 그만큼만 풀고, 나머지 목록은 다시 서랍에 들어갈 가능성이 꽤 있다.

그래서 지금 시점에 각 조직이 무엇을 실제로 세었는지가 남는다. AI를 쓰기 위한 최소한만 셀 것인지, 20년 치를 다 셀 것인지.

목록은 어차피 언젠가 쓰게 된다. 문제는 그걸 자기 손으로 쓰느냐, 아니면 서버가 죽은 다음에 남이 대신 써주느냐다. 아티팩토리 쪽은 후자였다.


참고 자료: 개인정보의 안전성 확보조치 기준 안내서 (개인정보보호위원회, 2024.10) · 국정원 N2SF 보안가이드라인 정식판 공개 · N2SF 정식 지침 공표 (ZDNet Korea) · 금융분야 망분리 개선 로드맵 (금융위원회) · 망분리 개선 1년 후 현장 (데일리시큐) · 2016년 국방망 해킹 사건 판결 (리걸타임즈)

댓글

이 블로그의 인기 게시물

Google I/O 끝나고, 1편을 다시 펼쳤다

AI랑 4개월 일하면서 네 번 같은 자리에서 막혔다

M4 맥북에서 로컬 LLM으로 5일을 살아본 후