로컬 테스트가 끝내 재현하지 못하는 것 — 글로벌 ATM 종합관리시스템 설계 노트
로컬에서는 다 됐다
ATM 종합관리시스템을 로컬에 세우는 건 어렵지 않다. 시뮬레이터 하나 띄우고, 거래 메시지 주고받고, 상태를 대시보드에 뿌리면 화면이 그럴듯하게 돈다. 통합 테스트도 초록불이 뜬다.
문제는 그 초록불이 로컬에서는 존재하지 않는 축들을 통과한 적이 없다는 것이다. 그 축이 무엇인지 하나씩 적는다. 각 항목은 “로컬 테스트가 왜 이걸 못 잡는가”를 기준으로 골랐다.
① 장치 계층 — 두 세대의 표준이 동시에 살아 있다
ATM 은 현금 디스펜서, 카드 리더, 핀패드, 프린터, 센서가 붙은 복합 장비다. 애플리케이션이 이 장치들을 부르는 규격이 CEN 의 XFS(eXtensions for Financial Services) 다.
여기서 로컬 테스트가 만드는 첫 번째 착각이 나온다. 시뮬레이터는 보통 한 세대만 흉내낸다. 그런데 CEN-CENELEC 의 CWA 배포 목록을 보면 실제로는 두 계열이 나란히 게시되어 있다1.
- CWA 17852 — XFS4IoT Specifications. Release 2024-03, 2023-02, 2021-01 세 판본이 올라와 있고, 2024-03 판은 2025년 4월에 정정 재발행됐다2.
- XFS 3.x 계열(3.51, 3.40, 3.30 …)은 각자의 CWA 번호로 별도로 유지된다1.
CEN 문서는 두 계열의 기술적 관계를 “후속”이라고 명시하지 않는다. 벤더 쪽에서는 XFS4IoT 를 XFS 3.x 의 후계로 소개하지만, 그건 벤더 주장이다. 관리시스템 설계자 입장에서 확실한 사실은 하나다 — 현장 장비 모수에 두 세대가 섞여 있을 수 있고, 표준 문서상 둘 다 유효하다.
그래서 장치 추상화 계층을 “XFS 하나”로 잡으면, 글로벌로 나가는 순간 국가별·계약별로 장비 세대가 갈리면서 그 계층이 깨진다.
② 메시지 계층 — ISO 8583 은 아직 죽지 않았다
거래 메시지 쪽은 더 흔한 착각이 있다. “요즘은 ISO 20022 로 간다”는 것이다.
ISO 8583 의 정식 이름은 Financial transaction card-originated messages — Interchange message specifications 이고, 비트맵으로 데이터 요소 위치를 지정하는 오래된 형식이다. ISO 20022 는 UML 로 모델링하고 XML 로 표현하는 완전히 다른 체계다. 둘 사이에는 공통 구조가 없다.
중요한 건 카드 도메인의 전환이 의무가 아니라는 점이다. ISO 20022 를 카드 취득사–발급사 구간에 적용하는 규격이 ATICA(Acquirer-to-Issuer Card Messages)인데, 이 문서 자체가 ISO 8583 과의 공존(coexistence)을 명시적으로 다룬다3. 즉 표준을 만든 쪽에서부터 “당분간 둘 다 산다”를 전제하고 있다.
로컬 테스트는 대개 한쪽 포맷만 태운다. 실제 글로벌 시스템은 지역마다 다른 포맷을 물고 들어오고, 그 변환 계층이 손실 없이 왕복하는지가 진짜 문제가 된다. 금액·통화·응답코드가 두 체계 사이를 오갈 때 어디서 정보가 깎이는지는 로컬 픽스처로는 드러나지 않는다.
③ 키 관리 — 코드가 아니라 달력에 마감이 있다
로컬 테스트 환경은 대개 평문 키나 고정 테스트 키로 잘 돈다. 그래서 이 축은 통째로 안 보인다.
PCI SSC 는 2014년 12월 PCI PIN Security Requirements 에 요구사항 18-3(Key Blocks)을 도입했고, 이행을 3단계로 나눴다. Visa 가 공지한 개정 시행일은 다음과 같다4.
| 단계 | 적용 범위 | 시행일 | 종전 |
|---|---|---|---|
| Phase 1 | 서비스 제공자 내부 연결 및 키 저장(HSM 연결 앱·DB 포함) | 2019-06-01 | 연장 없음 |
| Phase 2 | 협회·네트워크와의 외부 연결 | 2023-01-01 | 2021-06-01 |
| Phase 3 | 가맹점 호스트, POS 단말, ATM | 2025-01-01 | 2023-06-01 |
ATM 이 걸리는 건 Phase 3 이고, 시행일은 이미 지났다. 관련 규격은 키 블록 형식을 정의한 ASC X9 TR-31, 비대칭 기법으로 대칭키를 원격 배포하는 ASC X9 TR-345, 그리고 그 근거가 되는 ANSI X9.24 Part 1(대칭 기법)·Part 2(비대칭 기법)다67.
여기서 로컬 테스트와 실제의 간극이 가장 크다. 키 블록 미준수는 기능 결함으로 나타나지 않는다. 코드는 잘 돌고 테스트는 통과한다. 다만 어느 날부터 호스트가 그 단말의 거래를 받지 않는다. 이건 버그 리포트가 아니라 규정 시계의 문제이고, 관리시스템은 “이 장비의 EPP 가 어떤 키 블록 방식을 쓰는가”를 자산 속성으로 들고 있어야 한다.
④ 위협 모델 — 로컬 테스트는 물리를 상상하지 못한다
보안 설계를 로컬에서 하면 위협 모델이 자연스럽게 소프트웨어 쪽으로 쏠린다. 악성코드, 권한 상승, 네트워크 침투. 그런데 실제 데이터는 그 반대를 가리킨다.
유럽 결제단말 범죄를 집계하는 EAST(European Association for Secure Transactions)의 2024년 보고를 보면8:
- ATM 악성코드·논리 공격은 7건 → 3건으로 57% 감소했고, 보고된 3건은 전부 블랙박스 공격이었으며 손실은 0이었다.
- 같은 기간 ATM 물리 공격은 4,637건 → 5,953건으로 28% 증가했고, 손실은 900만 유로 → 1,200만 유로로 33% 늘었다.
- 물리 공격 손실의 71%가 폭발물 공격이었고, 이 손실은 536만 유로 → 856만 유로로 60% 증가했다.
- 카드 트래핑 +66%(1,630→2,704), 현금 트래핑 +105%(4,795→9,811), TRF +367%(338→1,577), 릴레이 공격 +505%(63→381).
- 전체 손실은 1억 7,300만 유로 → 7,100만 유로로 59% 감소했는데, 남은 손실의 대부분(6,700만 유로)은 카드 스키밍에 따른 국제 발급사 손실이다.
EAST 는 논리 공격 발생이 워낙 적어 2025년부터는 논리 공격 보고를 중단할 가능성이 높다고 밝혔다8.
이 숫자가 관리시스템 설계에 주는 함의는 분명하다. 잡아야 할 신호가 “프로세스 화이트리스트 위반” 쪽이 아니라 함체 개방, 진동·충격, 디스펜서 물리 이상, 카드 리더 삽입물, 거래 패턴의 국지적 이상 쪽에 있다는 것이다. 그리고 이 신호들은 로컬 테스트에서 단 한 번도 발생하지 않는다. 발생시킬 방법이 없기 때문이다.
덧붙이면 EAST 는 물리 공격의 약 40%가 현금 손실로 이어지지 않지만, 장비와 건물 피해액이 성공한 공격의 현금 손실액을 넘는 경우가 잦다고 적었다8. 손실 지표를 현금 기준으로만 잡으면 실제 비용을 놓친다.
⑤ 시간·통화·로케일 — 조용히 틀리는 축
- 유지보수 창이 없다. 로컬에서는 아무 때나 재시작한다. 글로벌에서는 내 새벽이 누군가의 피크다. “심야 배포”라는 개념 자체가 성립하지 않는다.
- 통화 소수 자릿수가 다르다. ISO 4217 은 통화별 minor unit 을 정의하는데, 원화와 엔화는 0자리, 대부분의 통화는 2자리, 일부는 3자리다9. 금액을 정수 최소단위로 다룰지 소수로 다룰지를 통화별로 결정하지 않으면 반올림이 조용히 어긋난다. 로컬 테스트가 원화만 태우면 이 버그는 배포 후에 나온다.
- 지폐 액면이 카세트에 매핑된다. 통화가 바뀌면 액면 구성이 바뀌고, 카세트 수와 배분 전략이 바뀐다. “출금 금액 → 지폐 조합” 알고리즘은 통화별로 다른 문제다.
⑥ 관측성 — 원격 재부팅이 안 되는 자산
마지막이 가장 근본적이다. ATM 은 롤백이 안 되는 부분을 갖고 있다.
소프트웨어는 되돌릴 수 있다. 그러나 카세트에 낀 지폐, 열린 함체, 부서진 카드 리더는 사람이 현장에 가야 한다. 그래서 이 시스템의 최종 출력은 대시보드가 아니라 출동 작업지시다.
이 관점을 잡고 나면 설계 질문이 바뀐다. “이 이벤트를 어떻게 표시할까”가 아니라 “이 이벤트가 사람을 보낼 만한가, 보낸다면 무엇을 들고 가야 하는가”가 된다. 오탐 하나의 비용이 알림 하나가 아니라 왕복 출동 한 건이다.
그래서 로컬 테스트에 무엇을 넣어야 하나
로컬이 글로벌을 완전히 재현할 수는 없다. 다만 위 축들이 존재한다는 사실만이라도 테스트가 알게 만들 수는 있다.
- 장치 추상화를 XFS 세대별로 최소 두 개의 구현으로 갈라 테스트한다. 하나만 있으면 그 하나에 결합된다.
- 메시지 변환 계층에 8583 ↔ 20022 왕복 테스트를 넣는다. 왕복 후 동등성이 깨지는 필드를 명시적으로 목록화한다.
- 키 블록 방식을 장비 자산 속성으로 모델링하고, 규정 시행일을 데이터로 들고 있는다. 코드가 아니라 자산 대장의 문제다.
- 물리 이벤트(함체 개방, 진동, 디스펜서 이상)를 주입 가능한 형태로 만든다. 실제로 못 일으키니 주입이라도 해야 한다.
- 통화를 최소 3종(0자리·2자리·3자리) 태운다.
- 시간대를 UTC 고정이 아니라 지역별로 흔들어 태운다.
- 모든 알림에 “이게 출동을 유발하는가” 플래그를 붙이고, 오탐률을 출동 비용으로 환산해 본다.
근거의 한계
- EAST 통계는 유럽 데이터다. 한국·아시아·북미의 공격 구성은 다를 수 있고, 이 글의 물리 공격 우세 결론을 다른 지역에 그대로 옮길 수 없다.
- PCI 키 블록 시행일은 Visa 가 공지한 개정 일자를 인용했다4. 네트워크·지역·감독기관에 따라 별도 일정이나 추가 요건이 있을 수 있다.
- XFS4IoT 의 실제 현장 채택률에 대한 중립적 제3자 수치는 확인하지 못했다. 그래서 이 글은 “두 계열이 표준 문서상 병존한다”까지만 주장하고, 비율은 말하지 않는다.
- ATM 벤더별 XFS 확장 차이는 이 글에서 다루지 않았다. 공개된 1차 자료로 검증하기 어려운 영역이다.
- 이 글은 특정 제품이나 구현을 평가하지 않는다. 설계 시 고려 항목을 정리한 것이다.
References
-
CEN-CENELEC, CWA Download Area — Digital Society. https://www.cencenelec.eu/areas-of-work/cen-sectors/digital-society-cen/cwa-download-area/ (2026-09-09 조회) ↩ ↩2
-
CEN, CWA 17852 — Extensions for Financial Services (XFS) — XFS4IoT Specification, 2024-03 Release. https://www.cencenelec.eu/media/CEN-CENELEC/AreasOfWork/CEN%20sectors/Digital%20Society/CWA%20Download%20Area/XFS/CWA17852/cwa17852_2024-03-release_2025.pdf ↩
-
ISO 20022 Registration Authority, ATICA — Acquirer-to-Issuer Card Messages (ISO TC68/SC7/WG9 제출 문서). https://www.iso20022.org/submission-status/771/download ↩
-
Visa, Key Block Effective Dates Extended. https://usa.visa.com/dam/VCOM/global/support-legal/documents/key-block-effective-dates-extended.pdf ↩ ↩2
-
ASC X9, TR 34-2019 — Interoperable Method for Distribution of Symmetric Keys Using Asymmetric Techniques: Part 1. https://webstore.ansi.org/standards/ascx9/ascx9tr342019 ↩
-
ASC X9, ANSI X9.24-1-2017 — Retail Financial Services Symmetric Key Management Part 1: Using Symmetric Techniques. https://webstore.ansi.org/standards/ascx9/ansix9242017 ↩
-
ASC X9, ANSI X9.24 Part 2 — Using Asymmetric Techniques for the Distribution of Symmetric Keys. https://standards.globalspec.com/std/10186307/ansi-x9-24-pt-2 ↩
-
EAST, European Terminal Fraud attacks double (2025-04-14 보도자료, 2024년 European Payment Terminal Crime Report). https://www.association-secure-transactions.eu/european-terminal-fraud-attacks-double/ ↩ ↩2 ↩3
-
ISO, ISO 4217 — Currency codes. https://www.iso.org/iso-4217-currency-codes.html ↩