2026-09-14
보딩패스 바코드가 실제로 말해 주는 것 — 나머지 사진은 손대지 않고 이것만 가리는 법
보딩패스(탑승권) 사진은 사람들이 가장 무심코 공유하는 여행 사진 중 하나입니다. “드디어 출발!” 게시물, 마중 나올 사람에게 보내는 스크린샷, 경비 정산 서류에 첨부하는 사본. 공유 전에 뭔가를 가린다면 보통 상단의 예약 확인번호나 이름입니다 — 잘라내거나, 이모지나 스티커로 덮거나, 살짝 블러 처리합니다. 바로 옆에 있는 바코드는 거의 항상 손대지 않은 채로 남습니다. 장식처럼 보이기 때문입니다. 하지만 그렇지 않습니다. 사람은 읽을 수 없지만 아무 폰 앱으로나 5초 만에 읽어낼 수 있는, 같은 정보의 두 번째 독립적인 사본입니다 — 그리고 실제 보안 연구가 이게 누군가에게 어떤 대가를 치르게 했는지 정확히 보여준 적이 있습니다.
그 바코드 안에는 실제로 무엇이 들어 있나
종이든 모바일이든 거의 모든 항공사 보딩패스는 같은 업계 표준을 따릅니다. IATA의 Bar Coded Boarding Pass(BCBP) 구현 가이드가 데이터 배치와 이를 담는 바코드 방식을 모두 고정해 둡니다 — 종이 탑승권에는 PDF417, 폰 화면에는 Aztec·QR·Data Matrix(작은 화면에는 PDF417의 넓은 띠보다 정사각형 코드가 더 잘 맞습니다). 이 고정된 배치 자체가 표준이 존재하는 이유입니다. 어느 항공사의 키오스크나 게이트 스캐너든 다른 항공사의 탑승권을 읽을 수 있는 건, 필드 위치가 항상 같기 때문입니다. 그 필드들은 인쇄된 부분에서 이미 눈으로 읽을 수 있는 것들 — 이름, 예약번호(PNR), 편명과 날짜, 좌석 — 에 더해, 실제 탑승권 다수에서는 인쇄면에는 전혀 나오지 않는 정보, 이를테면 마일리지(상용고객) 번호까지 포함하는 경우가 많습니다.
2015년, 실제로 벌어졌던 일
이건 10년 전에 이미 이론이 아니게 됐습니다. 2015년 보안 저널리스트 브라이언 크렙스(Brian Krebs)는 “What's in a Boarding Pass Barcode? A Lot”에서, 누군가 공개적으로 올린 보딩패스 사진을 무료 온라인 바코드 리더에 돌려 승객의 전체 이름과 PNR(항공사 예약번호)을 뽑아낸 독자의 사례를 소개했습니다 — 하필 이 두 가지가 항공사 셀프서비스 포털 상당수가 로그인 전체로 받아들이는 바로 그 정보였습니다. 크렙스의 취재에 따르면 이 독자는 그 계정 정보를 조회할 수 있었고, 더 나아가 항공편을 취소하거나 재예약하고 여정에 연결된 정보를 수정하는 것도 가능했습니다. 크렙스는 2년 뒤 “Why It's Still A Bad Idea to Post or Trash Your Airline Boarding Pass”라는 후속 기사를 냈는데, 이유는 근본적인 약점 — 상호운용성을 위해 설계됐을 뿐 비밀 유지를 위해 설계되지 않은 바코드 표준이, 그 바코드가 평문으로 담고 있는 바로 그 필드를 그대로 신뢰하는 로그인 시스템 위에 얹혀 있다는 점 — 이 그대로였기 때문입니다. 항공사와 소비자 보안 관련 필자들이 지금도 종이 탑승권을 그냥 버리지 말고 파쇄하라고 권하는 이유도 같습니다.
보딩패스 사진, 제대로 가리는 법
해법은 인쇄된 텍스트를 다르게 자르는 게 아니라 바코드 자체를 가리는 것입니다 — NearIMG의 가리기(블러/레닥트) 도구가 얼굴이나 번호판, 신분증 번호를 처리할 때와 똑같은 방식으로, 내 기기 안에서, 어디에도 업로드하지 않고:
- 사진을 가리기 도구에서 열고 바코드 전체 — 띠 모양이든 정사각형이든 — 위에 넉넉한 여백을 두고 박스를 드래그하세요. 여백 없이 모서리를 살짝 걸치면 리더가 나머지를 추론할 만큼의 패턴이 남을 수 있지만, 넉넉하게 잡는 데는 아무 비용도 들지 않습니다.
- 모드는 도구의 기본값인 단색 블록으로 두세요. 모자이크는 해당 영역을 삭제하는 대신 픽셀화할 뿐이고, 바코드는 평균화로도 보기만큼 완전히 파괴되지 않는, 짧고 구조가 뚜렷한 패턴의 전형입니다 — NearIMG 자체의 가리기 가이드가 짧고 구조적인 대상에는 ‘뭉개서 안 보이면 사라진 것’이라고 단정하지 말고 단색 커버를 쓰라고 안내하는 것과 같은 이유입니다.
- 인쇄된 이름과 PNR 텍스트도 같은 습관으로 함께 가리세요 — 드래그 한 번이 더 들 뿐이고, 그렇게 하지 않으면 사진을 얼핏 보는 사람이 여전히 직접 읽어낼 수 있는 필드입니다.
- 적용 후 저장하세요. 편집된 픽셀이 원본 해상도 그대로, 기기 내에서 그려집니다. 사진 한 장은 바로 다운로드되고, 여러 장은 ZIP으로 함께 묶여 내려받아집니다.
알아 둘 만한 부수 효과 하나 — NearIMG의 가리기 도구가 어떤 사진에나 똑같이 갖는 특성입니다. 다운로드되는 파일은 편집된 픽셀을 바탕으로 새로 인코딩되기 때문에, 원본 사진이 가지고 있던 카메라 메타데이터 — 폰이 게이트에서 GPS 좌표를 기록해 뒀다면 그것까지 — 도 함께 딸려 오지 않습니다. 바코드를 가리는 것과 그 메타데이터를 지우는 것은, 그게 도구를 연 목적이었든 아니든, 같은 저장 한 번에 함께 일어납니다.
반대의 경우: 바코드가 계속 작동해야 할 때
때로는 목적이 정반대입니다 — 짐을 대신 부쳐 줄 사람에게 실제 탑승권을 문자로 보내야 하거나, 오프라인 백업용 스크린샷을 남겨 두려는 경우로, 이때는 게이트에서 여전히 스캔이 돼야 합니다. BCBP 뒤에 있는 바코드 방식들은 바로 이런 현실적인 손상을 위한 오류 정정 기능을 내장하고 있습니다. QR코드만 놓고 보면, 이 포맷을 만들고 ISO/IEC 18004와 함께 관리하는 덴소 웨이브(DENSO WAVE)는 4단계 오류 정정 수준을 공식 문서로 밝히고 있으며, 코드 데이터의 약 7%, 15%, 25%, 30%가 손상되거나 가려져도 복원할 수 있다고 설명합니다. 이 여유분은 모서리가 살짝 찢어지거나 빛이 살짝 번진 정도를 위한 것이지, 강한 재압축이 이미지에 하는 일을 감당하기 위한 게 아닙니다. JPEG 압축은 용량을 줄이려고 날카롭고 대비가 큰 경계를 뭉개는 방식으로 작동하는데, 바코드의 모듈 경계야말로 정확히 그런 날카롭고 대비가 큰 경계 그 자체입니다. 세게 리사이즈하거나 다시 저장하면, 그 손상은 오류 정정 예산으로 메울 수 있는 흩어진 잡음이 아니라 코드가 의존하는 구조 자체가 사라지는 것에 가깝습니다. 현실적인 해법은 오류 정정이 알아서 해결해 주길 바라는 게 아니라, 애초에 세게 압축하지 않는 것입니다. 보딩패스 사진을 계속 스캔돼야 할 곳으로 보낸다면, NearIMG의 변환 도구로 저품질 JPEG 재저장 대신 무손실 PNG로 유지하고, 리사이즈를 하더라도 바코드의 가는 막대나 모듈이 화면에서 서로 뭉개질 만큼 작게는 줄이지 마세요.
이 방법의 정직한 한계
- 바코드를 자동으로 찾아 주지는 않습니다. NearIMG의 가리기 도구는 사진을 스캔해 바코드를 자동으로 찾지 않습니다 — 박스는 직접 그려야 하고, 여백까지 포함해 완전히 덮는 건 사용자 몫입니다.
- 바코드를 해독하지도 않습니다. 이건 바코드 리더가 아닙니다 — NearIMG는 실제로 내 탑승권에 무엇이 인코딩돼 있는지 읽거나 알려 주지 않습니다. 위에서 설명한 필드들은 IATA의 공개 규격과 크렙스의 취재에서 나온 것이지, 도구가 직접 확인한 내용이 아닙니다.
- 이미 올라간 사본까지는 손댈 수 없습니다. 보딩패스 사진이 이미 어딘가에 공개돼 있다면, 로컬에서 새로 가린 사본을 만든다고 해서 이미 나가 있는 그 사본이 바뀌지는 않습니다 — 이건 앞으로 공유할 사진만 보호합니다.
한 줄 요약
보딩패스 바코드는 장식이 아닙니다 — 바로 옆에 인쇄된 이름, 예약번호, 편명, 좌석과 같은 정보를 담은, 기계가 읽는 두 번째 독립 사본이며 인쇄면에는 전혀 나오지 않는 마일리지 번호까지 담고 있는 경우도 흔합니다. 항공사마다 이 배치가 이렇게나 일관된 건 IATA의 BCBP 규격 때문이고, 그 일관성이 실제로 누군가에게 불리하게 쓰인 적이 있다는 건 크렙스 온 시큐리티의 2015년과 2017년 취재가 보여 줍니다 — 그것도 무료 온라인 바코드 리더 하나면 충분했습니다. 옆에 있는 텍스트만 가리지 말고 바코드 자체를 가리세요 — 단색 블록, 넉넉한 여백, 사진이 이미 있는 그 기기 안에서. 그리고 다른 사람을 위해 실제 탑승권이 계속 스캔돼야 한다면, 내장 오류 정정이 메시지 앱의 재압축을 알아서 흡수해 주길 바라는 대신 무손실로 유지하세요.