개념, 원리, 탄생배경, 보안, 주의사항까지 전부 알아보자
식당 예약, 쇼핑 결제, 출입 등록, 심지어 명함까지!
QR코드는 스캔 한 번으로 우리의 일상을 간편하게 만들어줍니다.
하지만 간편하게 누구나 사용할 수 있다는 이유로 QR코드가 다양한 범죄에 악용되기도 합니다.
중국에서 주차 위반 고지서를 위장한 QR코드가 차 앞유리에 붙어 있었습니다.
차주는 이를 스캔했지만, 곧 악성 앱 설치를 유도당하거나 금융 정보가 도용되는 피해를 입었습니다.
한 시민이 공유 자전거를 사용하기 위해 QR코드를 스캔했습니다.
그러나 이 QR코드는 범죄자가 몰래 붙여 둔 가짜 QR코드로, 결제 금액은 사기범 계좌로 흘러갔습니다.
공격자는 믿을 만한 기관을 사칭해 이메일과 PDF 문서에 QR코드를 삽입합니다.
사용자가 이를 스캔하면 처음에는 정상적인 사이트로 연결되는 듯하지만, 곧 가짜 로그인 페이지로 이동됩니다.
입력된 아이디와 비밀번호는 범죄자의 손에 넘어갑니다.
이처럼 QR코드를 악용한 사기 수법이 늘어나면서, 우리나라에서는 QR코드와 피싱(Phishing)을 결합한 '큐싱(QRishing)'이라는 신조어까지 등장했습니다.
바코드의 탄생은 1940년대 미국 슈퍼마켓에서 시작되었습니다.
당시 계산대 직원들은 상품 가격을 하나하나 수동으로 입력해야 했습니다.
이로 인해 계산 실수가 잦았고, 직원들은 건초염과 같은 직업병에 시달리기도 했습니다.
이 문제를 해결하기 위해 바코드가 개발되었습니다.
바코드는 검정색과 흰색 선으로 이루어져 있습니다.
검정색은 빛을 흡수하고, 흰색은 빛을 반사합니다.
적외선 센서를 바코드에 비추면 반사된 빛의 양을 계산해 이를 디지털 신호로 변환할 수 있었습니다.
하지만 바코드는 1차원 정보만 담을 수 있었습니다.
최대 20자 정도의 영어와 숫자만 저장 가능하며,
한자나 일본어 같은 복잡한 언어는 표현할 수 없었습니다.
이 한계를 극복하기 위해 일본 덴소 웨이브의 하라 마사히로는 2차원 코드를 개발했습니다.
QR코드는 가로와 세로로 데이터를 저장할 수 있어 바코드보다 훨씬 많은 정보를 담을 수 있었습니다.
예를 들어, 숫자로는 약 7,000자를 저장할 수 있습니다.
하라 마사히로는 더 많은 사람이 사용할 때 기술의 가치가 빛난다며 QR코드를 무료로 공개했습니다.
특허권을 행사하지 않은 덕분에 QR코드는 공공 기술로 자리 잡았고,
오늘날 누구나 무료로 사용할 수 있게 되었습니다.
QR은 Quick Response의 약자로, 빠르게 정보를 인식하는 데 초점을 맞춘 기술입니다.
하지만 기본 QR코드는 보안 기능이 거의 없는 상태로 설계되었습니다.
보안을 강화한 QR코드도 개발되었으나, 특허 비용으로 인해 널리 사용되지 못했습니다.
결국, 무료로 제공되는 기본 QR코드가 우리 생활에 가장 널리 퍼지게 되었습니다.
직접 QR코드를 만들어 보며 원리를 이해해 보겠습니다.
네이버에서 제공하는 QR코드 생성 사이트를 이용하면 손쉽게 원하는 링크를 담은 QR코드를 만들 수 있습니다.
제가 생성한 QR코드는 퉁퉁코딩 유튜브 영상 링크를 담고 있습니다.
스캔하면 즉시 유튜브 영상 페이지로 이동하며, QR코드 하나를 만드는 데 약 2분 정도 소요되었습니다.
QR코드는 검정색과 흰색의 작은 셀(cell) 로 이루어져 있습니다.
QR코드의 각 셀은 검정색과 흰색 셀의 대비를 광학 센서로 읽혀 0과 1의 디지털 데이터로 변환됩니다.
한 셀의 일정 비율 이상이 검정색이면 되기 때문에 셀을 원형이나 다른 모양으로 변경해도 인식이 가능합니다.
Quiet Zone은 QR코드 주변의 일정한 단색 영역으로, 스캐너가 QR코드를 올바르게 인식하는 데 필수적입니다. 이 구역 외부에는 디자인을 추가할 수 있습니다.
QR코드의 세 모서리에 위치하며, QR코드를 어느 방향에서 스캔하더라도 빠르게 인식이 가능하도록 돕습니다.
이 패턴은 검정색과 흰색 셀의 비율이 1:1:3:1:1로 구성되며, 자연에서 흔하지 않은 비율을 사용해 다른 그림과 혼동되지 않도록 설계되었습니다.
QR코드의 오른쪽 하단에 나타나는 작은 패턴으로, QR코드가 왜곡되거나 구부러졌을 때 데이터를 정확히 읽을 수 있도록 보정합니다.
정보의 양이 많아져 QR코드가 복잡해질수록 여러 개의 정렬 패턴이 사용될 수 있습니다.
QR코드의 수평 및 수직 축에 교대로 배열된 검정색과 흰색 셀로 이루어져 있습니다.
각 셀의 위치를 정확히 계산하고 데이터의 손실 없이 안정적으로 읽을 수 있도록 돕습니다.
QR코드는 다양한 버전과 포맷을 가지고 있습니다.
이 버전과 포맷은 QR코드에 포함된 정보를 해석하고 저장 용량을 결정하는 데 필요한 요소들입니다.
QR코드의 영역은 크게 두 가지로 나뉩니다.
QR코드에 입력된 데이터를 저장합니다.
QR코드가 손상되거나 일부가 가려져도 데이터를 복원할 수 있도록 추가 정보를 포함합니다.
QR코드는 오류 정정 기술을 사용해 데이터 손실에 대비합니다.
QR코드의 데이터 중 약 절반이 오류 정정을 위한 추가 정보로 구성됩니다.
예를 들어, QR코드가 30% 정도 손상되더라도 저장된 정보를 복원할 수 있습니다.
로고를 QR코드 중앙에 삽입할 수 있는 것도 이 오류 정정 기술 덕분입니다.
다섯 자리 숫자가 있다고 가정해 봅시다.
앞 세 자리는 원래 정보를 저장합니다.
네 번째와 다섯 번째 숫자는 오류 정정을 위한 정보입니다.
네 번째 숫자는 첫 번째와 두 번째 숫자의 합입니다.
다섯 번째 숫자는 두 번째와 세 번째 숫자의 합입니다.
만약 원래 정보에 오류가 생기더라도, 오류 정정 정보를 비교하여 데이터를 복원할 수 있습니다.
원격 로그인을 위한 QR코드는 일회용 인증 키를 사용하고, 유효 기간을 짧게 설정합니다.
이벤트나 티켓용 QR코드는 사용 기간이 끝난 즉시 폐기해 악용을 방지합니다.
위치 검증 기술을 활용해 생성된 위치와 스캔 위치가 일치할 때만 작동하도록 설정합니다.
QR코드 스캔 후 바로 URL로 연결하지 않고, 추가 인증 절차를 포함합니다.
암호화된 QR코드를 사용해 지정된 앱에서만 작동하도록 설정합니다.
QR코드가 공식 출처에서 제공된 것인지 확인합니다.
스캔한 URL이 HTTPS로 시작하는지, 신뢰할 수 있는 도메인인지 확인합니다.
QR코드를 통해 비밀번호, 금융 정보 등을 요구하는 경우 사기 가능성을 의심해야 합니다.
QR코드 스캔 후 앱 설치를 요구한다면, 반드시 공식 앱 스토어에서 제공된 앱인지 확인하세요.
https://youtu.be/6B5sJVvux58?si=vkqRN8MbXxjWf7VB