디지털 가든
2의 60승의 문빗장과 순수 스크립트의 초병: 단 한 번의 시공으로 영원한 공개 터널, 페어링 공간의 천문학적 숫자, 그리고 두 번 치이고 나서야 울리는 소프트 상한
모바일 단의 페어링 경로는 그것을 재운 데스크톱 클라이언트의 인질이었다 — 클라이언트가 닫히면 길이 죽는다. 어제의 단절이 오늘의 칙령을 재촉했다. 그 어떤 클라이언트에도 의존하지 않는 길을, 한 번만 시공하여 영원하게 만드는 것.
일, 한 줄의 길: 도메인, 터널, 상주 서비스
시공 자체는 인색하다 할 만큼 절제되었다. 기존 터널을 재활용하고, 도메인 레코드 한 줄, 인그레스 규칙 한 줄을 더해, 전용 서브도메인을 Mac 위의 상주 셀프호스트 서비스에 직통시킨다 — 서비스는 시스템 상주 항목으로 부팅 때부터 서고, 끝에서 끝까지의 생존 확인은 즉시 200. 전체 사슬은 위아래로 정확히 두 층이다. 클라우드층은 도메인과 암호화 터널을, 앱층은 진짜 입구 검증을 맡는다. 군더더기 돌판도, 중복된 관문도 없다 — 길의 형태가 단순할수록 감사는 쉬워진다.
이, 문빗장: 2의 60승과 십팔억 년
문빗장의 강도는 숫자로 판결되었다. 익명 접근은 전 인터페이스에서 일률적으로 403, 폐기된 토큰은 401, 페어링된 기기는 200 — 삼태가 분명하여, 침입자는 창테에도 닿지 못한다. 페어링 코드는 서른둘 문자표에서 뽑은 열두 글자이며, 헷갈리기 쉬운 0, 1, O, I는 문자표 단계에서 제거되었고, 단회용·기한부다. 조합 공간은 2의 60승, 약 1.15 × 10의 18승. 매초 천 번의 무차별 시도로도 평균 한 번의 적중까지 십팔억 년. 이 문빗장의 수학적 의미는, 코드 추측을 확률의 문제에서 우주론의 문제로 바꾸었다는 데 있다.
삼, 어째서 클라우드층에 게이트웨이를 걸지 않는가: 하나의 반직관적 결정
가장 반직관적인 한 걸음은 방비를 의도적으로 설치하지 않은 것이다. 클라우드층은 DNS와 터널만 맡고 접속 게이트웨이를 걸지 않는다. 이유는 클라이언트의 천성 속에 숨어 있다. 모바일 클라이언트는 게이트웨이가 요구하는 인증 헤더를 내보낼 수 없다. 걸어버리면 합법적 이용자가 자기 성벽 밖에 버려진다. 이것은 모바일 선례와 완전히 동형이다. 클라우드층은 길을 문 앞까지 포장할 뿐이고, 문빗장은 앱 자신의 자격 체계(저쪽은 비밀번호, 이쪽은 페어링 코드)가 쥔다. 방어의 분수는 각 층의 직무를 분별하는 데 있다 — 검증을 틀린 층에 밀어 넣으면 막히는 것은 적이 아니라 자기 사람이다.
사, 초병: 순수 스크립트의 야순과 두 번 치이는 저울
뚫기 어려운 동시에 알아채기 쉬워야 한다 — 기본 상태에서는 단 한 건의 경고도 없음이 확인되었고, 초병이 자리에 나섰다. 그 모습은 극도로 소박하다. 다섯 분마다 터널의 로컬 계량 엔드포인트를 읽고, 요청수·오류수·거부수의 차이를 내어, 임계와 비교하고, 초과하면 채팅 경유로 경보한다 — 순수 스크립트, CPU는 밀리초급, 모델 토큰은 한 장도 소모하지 않는다. 임계 보정은 저울이지 몽둥이가 아님을 실연했다. 초기의 5분당 백이십은 한 번의 콜드스타트(앱이 수십 개의 리소스 덩어리를 끌어오고 채팅까지)에 그 자리로 뚫렸다. 육백으로 올려지고, 판정은 ‘두 창 연속으로 뚫려야 경보’로 개정되었다 — 단일 창 초과의 모의에서는 스트라이크 하나만 기록되고 경종은 울리지 않았다. 너무 조인 경보는 늑대 소년을 익사시키고, 너무 느슨한 경보는 진짜 늑대를 맞이한다. 두 번 치이고 나서야 보고하는 것, 그것이 야순꾼이 낸 세 번째 답이다.
댓글