QR코드 인증방식 원리

카테고리 : 소개/IT 상식

전자명부, 스마트폰 내장 운전면허증 등 다양한 용도의 인증수단이 존재합니다.

이곳에 대부분 공통적으로 쓰이는 방법중 QR코드/바코드 등의 인증방법이 사용됩니다.

 

이러한 인증방식이 적용되는 원리를 알아봅시다.

 

먼저, 저는 대략 2년전 제품을 만드려다가 준비중 계산상 이윤이 맞지 않아 접은 아이템이 있었는데 여기에 QR코드 인증방식을 사용한적 있습니다.

 

QR코드 인증방식을 일반인의 입장에서 이해할 수 있도록 설명해보겠습니다.

 

QR코드 인증방식을 이해하기 위해

  1. 쿼리스트링 (Query String)

위의 항목을 먼저 설명합니다.

 

 

쿼리스트링(Query String)이란?

이를 쉽게 먼저 설명하고 다음으로 넘어갑니다.

설명을 위해 가져온 한 유튜브 영상의 주소입니다.

여기에서 주소의 "?" 뒷부분이 쿼리스트링 부분입니다. 또한 "&"로 각각을 구분합니다.

 

이 주소로 다음의 정보를 알 수 있습니다. 이렇게 주소로 정보전달하는 방식이 쿼리스트링 방식입니다.

  • v : 0o6TvZRVLYo
  • feature : youtu.be

주소를 통해서(또는 HTTP의 POST 방식을 통해서도 정보전달이 가능하지만 쉽게 GET방식(주소를 이용하는 방식)을 다루겠습니다.)

 

유튜브에 v값이 무엇인지에 따라 영상이 달라지는것을 확인할 수 있습니다.

feature=youtu.be은 유튜브의 단축URL인 youtu.be에서 연결되었음을 나타내는 값입니다.


 

유튜브의 고유 ID값은 얼마나 많은 영상을 나타낼 수 있을까?

유튜브 영상에는 11자리의 고유 ID값이 있다. 예를 들어 https://www.youtube.com/watch?v=lQh78nQeGJg는 lQh78nQeGJg : 11글자 11자리인데 영상 번호가 모두 부여되어 더 이상 영상을 업로드할 수 없는 상황이 올..

hi098123.tistory.com


이렇게 정보를 전달하는 방식은 HTTP GET방식이며, 설명도 쉽고 적용도 쉽기때문에 많이 쓰입니다.

 

 

 

본론으로

QR코드 인증방식은 다음과 같이 작동합니다.

  1. 사용자가 서버에 QR코드 생성 요청
  2. 서버는 사용자의 정보를 포함하여 QR코드 세션을 생성
  3. ID정보를 랜덤한(예상이 불가한) 매칭 키를 이용해 인증 주소를 만들고 사용자에게 주소를 QR코드로 생성
  4. 관리자가 QR코드를 찍으면 앱 또는 인터넷을 통해 페이지가 열리고 인증이됩니다.
    다음의 확인사항이 있습니다.
    1. 인증제한시간 만료 여부
    2. 인증 관리자 여부(해당 인증을 처리할수 있는 사람인가?)

보통은 15초를 쓰는데 저도 만들때 30초는 길고 10초는 짧고 하다가 나온게 15초 였는데 다들 생각이 비슷한 것 같습니다.

QR코드를 찍으면 사용자의 정보와 관리자의 정보를 연결시켜 서버에 저장되는 방식입니다.

서버에는 정보가 저장되지만 사용자나 관리자에는 정보가 저장되지 않습니다.

 

 

 

예를 들어 설명하면..

  1. 사용자가 아래의 인증을 생성합니다.
    https://hi098123.tistory.com/12?auth=abc
    서버에서는 랜덤 해시값(시각/사용자 정보 포함)을 생성하여 인증하게됩니다.
  2. 관리자가 QR코드를 찍습니다.
  3. 서버에는 관리자가 abc를 찍었음이 전송됩니다.
  4. 서버에서는 abc와 일치하는 유저인 hi098123의 인증을 완료하고
    Key ID 인증 관리자 정보
    abc hi098123 null
    실제로는 abc가 아닌 900150983CD24FB0D6963F7D28E17F72 이렇게 길고 예상할 수 없는 값이 생성됩니다.
  5. 서버에서는 관리자 정보를 이용해 데이터를 수정하고, 인증이 되었음을 관리자에게 전송이됩니다.
    Key ID 인증 관리자 정보
    abc hi098123 관리자A
  6. 관리자는 전송받은 인증완료 신호를 이용해 인증되었음을 확인할 수 있습니다.

이 과정에서 관리자는 인증자의 정보를 알지 못합니다.

데이터 처리는 중재자인 서버에서 처리되기 때문에 실제 정보가 아닌 인증키(이름표 같은 느낌으로)로 매칭을 시키는 방식입니다.

 

 

QR인증 기능의 맹점

원격 인증이 가능합니다.

어떤 말이냐면 QR코드를 실시간으로 앱 화면을 전송하여 제3자가 해당 인증코드를 사용할 수 있습니다.

예매 시스템 인증같은경우 암표를 방지하고자 도입하나, 이러한 방식으로 거래를 하는경우 막을 방법이 없습니다.

화면 캡쳐 방지 기능을 넣으면 안되나요?
앱에서 원천적인 캡쳐/녹화 방지는 불가합니다. 모든 방법에 우회방법이 있기때문에 현재 스마트폰에서 절대로 가능할 수 없습니다.

 

저작권 보호안내
무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)

예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.

만약, 본문 공유를 원하신다면 링크 공유를 해주세요

저작권 정책 확인하기
링크 공유하기

 댓글