dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-04] QR코드 #5

Open mingnuj opened 8 months ago

mingnuj commented 8 months ago

집에 가만히 앉아서.. 첫 주제는 무엇으로 할 지 고민하다가 냉장고에 붙여 둔 사진들이 눈에 띄었습니다. 조금씩 모으다 보니 또 자석을 사러 가야 할 정도로 많이 모였는데, 문득 GIF로 다운 받을 때 쓰이는 QR 코드 원리가 궁금해졌으니 시작은 QR 코드에 대해서 적어보겠습니다.

QR 코드란?

QR역사_이미지

Quick Response code의 약자로, 한국어로는 정보무늬라는 표현이 있다. 컴퓨터로 만든 흑백의 격자무늬 코드로, 정보를 나타내는 매트릭스 형식의 이차원 코드이다. 1994년 일본의 대형 자동차 부품 업체인 덴소 웨이브의 하라 마사히로에 의해 발명 되었다. 그러나 특허권은 행사하지 않겠다고 선언했다. 위 이미지는 네이버 QR코드로 만든 덴소 웨이브 QR코드 역사 페이지의 QR코드이다.

QR코드는 2차원 정보를 저장하므로 더 많은 정보를 다양한 형태로 저장이 가능하다는 장점이 있다. 또한, 인식률과 복원율이 뛰어나다.

작동 방식

작동 순서

  1. QR 코드 인식

    • 스마트폰 카메라 혹은 레이저 스캐너가 QR 코드 이미지를 캡쳐한다. 즉시 QR 코드 이미지 패턴과 모듈을 분석하고 식별한다. 자세한 내용은 아래 코드 패턴에서 기술한다.
    • QR코드 스캐너의 작동 원리: 스캐너가 적외선을 쏘면 검은 부분(cell)은 빛을 흡수하고, 흰색 부분은 빛을 반사하는데, 센서가 반사된 빛을 감지, 이후 아래 3가지 단계를 거쳐서 인식 됨
  2. 이미지 처리

    • 스캔한 이미지를 정제하여 QR 코드의 흑백 패턴에서 정보를 추출한다.
  3. 디코딩 및 오류 수정

    • 소프트웨어가 오류 수정 알고리즘을 적용하여 코드의 왜곡 및 손상된 부분을 수정한다. 수정한 데이터에서 인코딩 된 정보가 바이너리 데이터에서 추출된다.
  4. 작업 수행

    • 모든 정보가 디코딩 되면 해당 코드에 저장된 데이터에 따라 작업을 수행한다.

코드 패턴

image

  1. 위치 지정 패턴(Positioning Pattern)

    • QR 코드의 세 모서리에 있는 큰 사각형의 패턴
    • 내부의 작은 사각형은 QR코드 리더 또는 스마트폰 카메라의 기준점으로 설계되었다.
    • 이러한 고유한 패턴은 리더가 QR 코드의 크기, 방향 및 위치를 식별하는 데 도움이 된다.
  2. 타이밍 패턴(Timing Pattern)

    • 고유한 격자를 디자인하는 흑백 모듈이 번갈아 가며 나타나는 세로 및 가로 선으로 정의된다.
    • 타이밍 패턴은 코드 영역 내에서 개별 모델의 크기와 정렬을 설정한다.
    • QR코드 리더기는 타이밍 패턴에 의존하여 주어진 데이터를 올바르게 읽고 해석한다.
  3. 정렬 패턴(Alignment patterns)

    • 대부분의 경우 정렬 패턴은 QR 코드 내부의 작은 정사각형 패턴이다.
    • 오류 수정을 돕고 다양한 각도에서 스캔할 때에도 정확한 스캔을 보장하므로 배치가 중요하다.
    • 정렬 패턴은 왼쪽 상단에 있는 위치 지정 패턴에서 대각선 아래에 배치된다.
  4. 형식 정보(Format information)

    • 형식 정보는 QR코드 내의 지정된 영역을 의미한다.
    • 이 영역은 QR코드 자체의 형식과 관련된 데이터를 저장하는 역할을 한다.
    • 코드 리더와 스마트폰은 디코딩 과정에서 이 정보를 활용하여 코드를 정확하게 디코딩한다.
  5. 버전 정보(Version information)

    • 버전 정보는 QR 코드의 크기와 데이터 용량을 나타내며, 이는 코드의 가독성에 영향을 줄 수 있다.
    • 다 정확하게 말하면 버전 정보는 코드 그리드에서 열과 행의 수를 지정한다.

Error Correction Code

앞서 코드 패턴 중 정렬 퍁턴(alignment parttern)에서 오류 수정을 돕고, 각도에 따라서도 정확한 스캔을 보장하지만 코드 오염에 대해서는 복원해주지 않는다. 이를 위한 오류 정정 부호 기술 (ECC, Error Correction Code)이 구현된다. 원래 보내려 했던 정보에 약속된 수학 규칙에 따라 추가적인 데이터를 보내서 에러가 발생 시 오류를 정정하는 기술이다.

QR 코드 유형

고정형 QR 코드

고정형 QR코드, 또는 정적(Static) QR코드는 생성된 후 데이터를 패턴에 직접 저장할 수 있으므로 수정할 수 없다. 따라서 프로세스에서 실수가 발생하면 새로운 QR 코드를 생성해야 하지만 정적 QR 코드는 만료되지 않으므로 ID 번호, 액세스 코드 또는 일상적인 Wi-Fi 비밀번호와 같은 고정 정보에 이상적이라는 큰 장점이 있다.

변동형 QR 코드

정적(Static) QR코드와 달리 변동형 QR코드, 또는 동적(Dynamic) QR코드는 데이터 저장 방식이 더 발전하고 다양하다. 정적 QR 코드가 코드 패턴에 데이터를 잠그는 반면, 동적 QR 코드 소프트웨어는 짧은 URL 랜딩 페이지에 데이터를 저장한다. 또한 오디오 및 비디오 파일을 포함하여 더 다양한 미디어 유형을 허용한다. 스캔에 사용된 시간, 위치, 디바이스 등의 스캔 지표를 수집할 수 있는 기능을 제공하여 필요한 경우 데이터를 조정할 수 있다.

마치며

QR 코드 스타일이나 다양한 정보는 NordVPN 사이트에 더 많이 있습니다. 코드 자체는 해킹할 수 없다고 하지만 아무데서나 QR 코드를 찍었다가 악성 웹사이트로 넘어가는 일은 없는게 좋겠죠. 항상 조심 하는게 좋을것 같습니다.

출처

neolgu commented 8 months ago

왜 미래에 살고 계세요....

Kjm04175 commented 8 months ago

11월 7일은 조금 멀군요

mingnuj commented 8 months ago

@neolgu @Kjm04175 아이고 여러분 감사합니다 시정했습니다

chouung commented 8 months ago

QR코드 생성 기능은 라이브러리 가져다가 사용하고 있는데.... 이렇게나 고도의 기술력이 필요한 것이었군요..

fxzyk commented 8 months ago

오호 흥미롭네여 잘읽었슴당 큐알코드위에 스티커로 악성 큐알코드 붙인경우들이 많다고하니 찍기전에 손톱으로 긁어봅시다 !

snaag commented 8 months ago

@fxzyk 헐 👀👀👀👀..........!!!!!