디자인으로 QR 코드를 안전하게 만들기: 최초 스캔 신뢰 모델 (TOFS)
Source: Dev.to
작성자 Colten Jacob, 2026년 1월
QR 코드는 조용히 현대 컴퓨팅에서 가장 강력한 인터페이스 중 하나가 되었습니다. 하나의 정사각형만으로 결제를 시작하고, 메뉴를 열고, 계정에 로그인하고, 웹사이트로 리디렉션할 수 있습니다. 이제 수십억 명이 매일 QR 코드를 스캔합니다—대부분 공공 장소에서, 생각 없이 스캔합니다.
그 편리함에는 심각한 결함이 있습니다: QR 코드는 적대적인 환경을 위해 설계되지 않았습니다. QR 코드는 공장과 재고 관리 시스템을 위해 고안되었으며, 누구든지 몇 초 만에 스티커를 교체할 수 있는 공공 벽, 카페, 결제 단말기 등을 위해 설계되지 않았습니다. 그 결과 QR 기반 피싱, 결제 리디렉션, 사기가 급증하고 있습니다.
이 글에서는 간단하지만 강력한 해결책을 제안합니다: Trust‑On‑First‑Scan (TOFS) — 사용성을 해치지 않으면서 QR 스캔에 지속적인 신뢰와 변조 감지를 제공하는 모델입니다.
QR 코드의 핵심 문제
-
QR 코드는 라벨이 아니다.
그것은 명령이다. -
스캔하면, 휴대폰이 포함된 내용을 실행한다:
- URL 열기
- 결제 시작
- 앱 실행
- 파일 다운로드
대부분의 스캐너는 이를 즉시 수행하여 사용자가 다음을 알 수 없게 만든다:
- QR 코드가 변경되었는지,
- 목적지가 바뀌었는지, 또는
- 스티커가 교체되었는지.
이는 보안 엔지니어가 대체 공격이라고 부르는 상황을 가능하게 한다: 공격자는 웹사이트를 해킹할 필요 없이 QR 코드를 교체하기만 하면 된다.
일반적인 대상은 다음과 같다:
- 주차 미터기
- 레스토랑 메뉴
- UPI 포스터
- 이벤트 티켓
- 건물 입구
겉보기에는 완벽하게 정상적인 QR 코드 하나만으로도 금전을 전송하거나, 자격 증명을 탈취하거나, 악성코드를 전달할 수 있다.
기존 방어책이 해결하지 못하는 이유
We already have:
- HTTPS
- Google Safe Browsing
- 안티바이러스
- 앱 샌드박싱
But QR attacks slip between the cracks because most QR fraud uses:
- 실제 브라우저
- 실제 결제 앱
- 실제 웹 페이지
…just the wrong destination. Nothing is technically “malware.” It’s a trust problem, not a code problem.
입증된 보안 아이디어 차용
컴퓨터 보안 분야에는 Trust‑On‑First‑Use (TOFU) 라는 잘 알려진 패턴이 있습니다:
- SSH가 이를 사용합니다.
- 블루투스 페어링이 이를 사용합니다.
- 일부 인증서 시스템이 이를 사용합니다.
아이디어는 간단합니다: 무언가에 처음 연결할 때 확인하고, 이후에는 변경을 의심스러운 것으로 간주합니다.
QR 코드는 동등한 개념이 없으며, 바로 Trust‑On‑First‑Scan (TOFS) 가 이를 제공합니다.
Source: …
Trust‑On‑First‑Scan이란?
TOFS는 QR 스캔을 위한 경량 신뢰 프레임워크입니다. 네 부분으로 구성됩니다:
- 첫 스캔 확인
- 목적지 지문화
- 로컬 신뢰 저장
- 만료 및 불일치 감지
함께 QR 코드를 변조 방지하게 합니다.
TOFS 작동 방식
1. 첫 스캔 = 명시적 신뢰
QR을 처음 스캔하면, 전화기는 즉시 열지 않습니다. 대신 다음을 표시합니다:
- 전체 도메인
- 열릴 앱 (브라우저, UPI 등)
- 프로토콜 (https, upi 등)
사용자는 “신뢰하고 열기” 를 탭합니다. 이것이 사용자가 생각해야 하는 유일한 순간입니다.
2. 지문이 생성됨
스캐너는 다음으로부터 암호학적 지문을 생성합니다:
- QR 내용
- 최종 해결된 목적지(리다이렉트 후)
- 대상 애플리케이션
이 지문은 해당 QR이 실제로 어디로 연결되는지를 고유하게 나타냅니다.
3. 지문이 로컬에 저장됨
전화기는 다음을 저장합니다:
- 지문
- 도메인
- 타임스탬프
- 만료일
이것이 해당 QR 코드의 신뢰된 정체성이 됩니다.
4. 이후 스캔은 자동
-
지문이 일치하면: QR이 즉시 열리며, 프롬프트 없이 마찰이 없습니다.
-
무언가가 변경되면: 전화기가 경고합니다:
“이 QR 코드는 변경되었습니다. 목적지가 이전에 신뢰한 것과 다릅니다.”
이는 스티커 교체, 리다이렉트 결제 QR, 해킹된 메뉴 링크 등을 방지합니다.
Why expiry matters
Public QR codes change over time:
- Cafés change menus.
- Parking operators change vendors.
- Websites get sold.
- Domains get hijacked.
TOFS includes expiry policies, e.g.:
- café QR: 30 days
- parking QR: 7 days
- bank poster: 180 days
When expired, the QR simply requires re‑confirmation, preventing stale trust from becoming a vulnerability.
왜 이것이 OS에 포함되어야 하는가
Standalone QR‑scanner 앱만으로는 해결되지 않는다. 사람들은 다음을 사용해 스캔한다:
- 카메라 앱
- Google Lens
- 결제 앱
따라서 TOFS는 시스템 QR 프레임워크(Android, iOS, UPI QR 핸들러 등)에 존재해야 하며, HTTPS 경고나 다운로드 프롬프트와 마찬가지이다. 이것은 플랫폼‑레벨 안전 레이어이며 기존 보안을 대체하는 것이 아니다.
TOFS가 대체하지 않는 것
- Safe Browsing
- 안티바이러스
- UPI 검증
- TLS
그것들은 추가한다: QR이 무엇이어야 했는지에 대한 기억을. 방화벽은 나쁜 사이트를 차단하고; TOFS는 잘못된 사이트를 차단한다.
왜 이것이 실용적인가
TOFS가 요구하는 것은:
- 새로운 QR 형식 없음
- 새로운 하드웨어 없음
- 네트워크 호출 없음
- 클라우드 스토리지 없음
모든 것이 로컬에 있습니다: 해시, 타임스탬프, 경고 화면. 이것이 대규모 배포를 가능하게 합니다.
최종 생각
QR 코드는 사용성 전쟁에서 승리했습니다. 그들은 손쉬운 사용 덕분에 어디에나 있습니다. 하지만 기억 없는 손쉬움은 위험합니다. Trust‑On‑First‑Scan은 QR 코드에 그들이 항상 부족했던 시간에 걸친 정체성 감각을 부여합니다. 이 단 하나의 변화가 QR 코드를 무작위 명령에서 검증 가능한 도구로 바꾸며—이것이 전 세계 인터페이스를 안전하게 만드는 방법입니다.
