KR101950913B1 - 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램 - Google Patents

가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램 Download PDF

Info

Publication number
KR101950913B1
KR101950913B1 KR1020170100952A KR20170100952A KR101950913B1 KR 101950913 B1 KR101950913 B1 KR 101950913B1 KR 1020170100952 A KR1020170100952 A KR 1020170100952A KR 20170100952 A KR20170100952 A KR 20170100952A KR 101950913 B1 KR101950913 B1 KR 101950913B1
Authority
KR
South Korea
Prior art keywords
code
virtual
virtual code
search
actual
Prior art date
Application number
KR1020170100952A
Other languages
English (en)
Other versions
KR20190016698A (ko
Inventor
유창훈
Original Assignee
주식회사 센스톤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 센스톤 filed Critical 주식회사 센스톤
Priority to KR1020170100952A priority Critical patent/KR101950913B1/ko
Priority to PCT/KR2017/008631 priority patent/WO2019031627A1/ko
Priority to CN202210569661.0A priority patent/CN114819951A/zh
Priority to CN201710805548.7A priority patent/CN109389395B/zh
Priority to JP2017181114A priority patent/JP6469796B1/ja
Priority to US15/801,905 priority patent/US10754942B2/en
Priority to SG10201806382WA priority patent/SG10201806382WA/en
Priority to SG10201709085WA priority patent/SG10201709085WA/en
Priority to EP18152461.2A priority patent/EP3441900B1/en
Priority to EP20160583.9A priority patent/EP3680793B1/en
Priority to EP21192289.3A priority patent/EP3929778B1/en
Priority to JP2019005590A priority patent/JP6612997B2/ja
Publication of KR20190016698A publication Critical patent/KR20190016698A/ko
Application granted granted Critical
Publication of KR101950913B1 publication Critical patent/KR101950913B1/ko
Priority to JP2019199345A priority patent/JP7236369B2/ja
Priority to US16/928,687 priority patent/US11354401B2/en
Priority to US17/738,751 priority patent/US11609983B2/en
Priority to US18/168,184 priority patent/US20230185897A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/385Payment protocols; Details thereof using an alias or single-use codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1016Devices or methods for securing the PIN and other transaction-data, e.g. by encryption
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/12Card verification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0838Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords

Abstract

본 발명은 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램에 관한 것이다.
본 발명의 일실시예에 따른 가상코드제공방법은, 가상코드검증수단이 가상코드생성수단으로부터 가상코드를 수신하는 단계(S200; 가상코드 수신단계); 상기 가상코드검증수단이 상기 가상코드에 포함된 복수의 세부코드를 추출하는 단계(S400); 및 상기 가상코드검증수단이 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 단계(S600; 실제코드 탐색단계);를 포함한다.

Description

가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램 {SYSTEM, METHOD AND PROGRAM FOR PROVIDING VIRTUAL CODE, VRITUAL CODE GENERATOR AND VRITUAL CODE VERIFICATION DEVICE}
본 발명은 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램에 관한 것으로, 보다 자세하게는 각 시점마다 중복되지 않게 생성되는 가상코드를 생성하고 이를 기반으로 실제코드를 탐색하는 시스템, 방법 및 프로그램과 각 시점마다 중복되지 않은 가상코드를 생성하는 장치 및 이를 기반으로 실제코드를 탐색하는 장치에 관한 것이다.
코드 형태데이터는 많은 영역에서 이용되고 있다. 결제 시에 이용되는 카드번호, 계좌번호뿐만 아니라 사용자 식별을 위한 IPIN번호, 주민등록번호 등이 코드형태 데이터이다.
그러나 이러한 코드데이터를 이용하는 과정에서 유출되는 사고가 많이 발생한다. 카드번호의 경우, 카드표면에 실제카드번호가 그대로 기재되어 있어서 타인에게 시각적으로 유출되며, 마그네틱을 이용한 결제 시에 카드번호가 그대로 POS장치로 전달되면서 유출된다.
실제코드가 그대로 유출되지 않도록 하기 위해 가상코드를 이용하고자 하는 시도가 많았으나, 가상코드에 대응되는 실제코드를 탐색하기 위해 사용자를 식별하기 위한 데이터가 필요하였다. 예를 들어, OTP(One Time Password)의 경우, 시간마다 코드가 변경되어 생성되지만, 사용자에게 부여된 알고리즘 판단을 위해 로그인 절차가 필요하여 다양한 영역에 적용되기 어렵다.
따라서, 실제코드에 대응되는 사용자나 장치에 대한 식별정보를 제공하지 않으면서 실시간으로 변동되는 가상코드를 기반으로 실제코드를 탐색할 수 있는 발명이 필요하다.
한국등록특허 10-1316466호 (2013.10.01)
본 발명은 가상코드생성수단 식별을 위한 별도 절차 없이 가상코드를 기반으로 실제코드를 탐색할 수 있는, 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램을 제공하고자 한다.
또한, 본 발명은 모든 가상코드생성수단에서 전체 주기 내에 중복 생성되지 않으면서 단위카운트 간격으로 신규 생성되는 가상코드를 제공하는. 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램을 제공하고자 한다.
본 발명이 해결하고자 하는 과제들은 이상에서 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일실시예에 따른 가상코드제공방법은, 가상코드검증수단이 가상코드생성수단으로부터 가상코드를 수신하되, 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것인, 가상코드 수신단계; 상기 가상코드검증수단이 상기 가상코드에 포함된 복수의 세부코드를 추출하는 단계; 및 상기 가상코드검증수단이 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 실제코드 탐색단계;를 포함하고, 상기 가상코드검증수단과 상기 가상코드생성수단은 동일한 가상코드생성함수를 포함하는 것이며, 상기 세부코드는, 저장위치탐색의 시작지점을 설정하는 제1코드; 및 특정한 탐색방식에 따라, 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하고, 상기 제1코드 및 상기 제2코드는 단위카운트마다 변경되며, 상기 가상코드검증수단은, 단위카운트마다 생성되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고, 단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며, 상기 단위카운트는 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것이다.
또한, 다른 일실시예로, 상기 가상코드생성함수는, M개 문자로 N자리의 상기 제1코드 또는 상기 제2코드를 생성하는 경우, 상이한 MN개의 코드를 단위카운트마다 순차적으로 변경되는 제1코드 또는 제2코드로 제공하는 제1함수 또는 제2함수를 포함한다.
또한, 다른 일실시예로, 상기 제2코드는, 상기 실제코드를 신규생성한 시점으로부터 경과된 단위카운트를 기반으로 생성되는 것이다.
또한, 다른 일실시예로, 상기 실제코드탐색단계는, 상기 저장위치탐색알고리즘이 k(k는 MN)개의 코드가 나열된 트랙 상을 k각형이 각 코드가 배치된 지점에 꼭지점이 대응되면서 구름이동하는 것인 경우, 상기 가상코드생성수단으로부터 수신된 상기 가상코드 내 제1코드에 대응하는 트랙 상의 지점으로 k각형을 구름이동하는 단계; 상기 제1코드에 대응하는 위치를 탐색시작지점으로 설정하고, 상기 제2코드에 적용된 탐색방식에 따라 제2코드를 기반으로 k각형의 배치상태에서의 저장위치를 탐색하되, 상기 저장위치는 상기 k각형의 각각의 꼭지점에 매칭되는 것인, 저장위치탐색단계; 및 상기 저장위치에 포함된 실제코드를 추출하는 단계;를 포함한다.
또한, 다른 일실시예로, 특정한 가상코드생성수단으로부터 특정한 카운트에 신규로 실제코드 생성이 요청되면, 상기 특정한 카운트에 k각형의 특정한 꼭지점에 대응되는 저장위치에 실제코드를 저장하되, 상기 특정한 꼭지점은 상기 특정한 카운트에 트랙 상에 접한 것인, 실제코드 저장단계;를 더 포함한다.
또한, 다른 일실시예로, 상기 가상코드생성함수는, 복수의 세부코드를 배열하는 규칙에 해당하는 세부코드결합함수를 포함하는 것이다.
또한, 다른 일실시예로, 상기 가상코드는 상기 가상코드생성수단이 포함된 그룹을 판단하는 고정코드를 더 포함하고, 상기 세부코드생성함수는, M개의 문자를 오름차순으로 나열하는 특정한 나열규칙이 적용된 것이며, 상기 문자는 대문자알파벳, 소문자알파벳, 숫자 및 특수문자 중 적어도 하나를 포함하는 것이다.
또한, 다른 일실시예로, 상기 가상코드는 상기 가상코드생성수단이 포함된 그룹을 판단하는 고정코드를 더 포함하고, 상기 세부코드추출단계는, 상기 가상코드 내에서 상기 고정코드를 추출하고, 상기 고정코드를 기반으로 상기 가상코드생성수단의 그룹을 판단하여, 상기 그룹에 대한 상기 가상코드생성함수 또는 상기 저장위치탐색알고리즘을 결정하는 것을 특징으로 한다.
또한, 다른 일실시예로, 상기 가상코드는 특정한 자릿수의 보안코드를 더 포함하고, 상기 가상코드검증수단이 상기 가상코드생성수단으로부터 수신한 수신보안코드와 상기 가상코드검증수단 내에서 생성된 생성보안코드의 일치여부를 판단하여 가상코드를 검증하는 단계;를 더 포함한다.
또한, 다른 일실시예로, 상기 보안코드는 가상코드생성수단의 고유식별값 및 생성시간데이터를 함수값으로 하여 생성되는 것이고, 상기 가상코드검증수단은 가상코드생성수단에 대한 실제코드 생성 시에 상기 고유식별값을 수신하여 저장하는 것을 특징으로 한다.
또한, 다른 일실시예로, 상기 가상코드검증수단이 상기 제1코드 또는 상기 제2코드를 상기 제1함수 또는 제2함수의 역함수를 적용하여 정상적으로 생성된 가상코드에 해당하는지 검증하는 단계;를 더 포함한다.
또한, 다른 일실시예로, 상기 가상코드생성수단으로부터 수신된 제1수신코드와 상기 가상코드검증수단에서 생성된 제1함수에 따라 생성된 제1생성코드를 비교하는 단계; 상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위 내에 포함되면 상기 제1수신코드를 상기 시작지점으로 하는 제1코드로 설정하는 단계; 및 상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위를 벗어나면 비정상코드로 판단하는 단계;를 더 포함한다.
본 발명의 다른 일실시예에 따른 가상코드제공프로그램은, 하드웨어와 결합되어 상기 언급된 가상코드제공방법을 실행하며, 매체에 저장된다.
본 발명의 또 다른 일실시예에 따른 가상코드생성장치는, 하나 이상의 세부코드를 생성하는 세부코드생성부; 상기 하나 이상의 세부코드를 조합하여 가상코드로 생성하는 가상코드생성부; 및 상기 가상코드를 가상코드검증장치로 제공하기 위해 외부로 출력하는 가상코드제공부;를 포함하고, 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이고, 상기 세부코드는, 상기 가상코드검증장치에서 저장위치의 탐색시작지점을 설정하는 제1코드; 및 특정한 탐색방식에 따라, 가상코드검증장치에서 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하는 것이고, 상기 제1코드 및 상기 제2코드는 단위카운트마다 변경되며, 상기 가상코드검증장치는, 단위카운트마다 생성되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고, 단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 탐색시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며, 상기 단위카운트는, 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것이다.
본 발명의 또 다른 일실시예에 따른 가상코드검증장치는, 가상코드생성장치로부터 가상코드를 수신하는 수신부; 상기 가상코드에 포함된 복수의 세부코드를 추출하는 세부코드추출부; 및 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 실제코드 탐색부;를 포함하고, 상기 가상코드검증장치와 상기 가상코드생성장치는 동일한 가상코드생성함수를 포함하는 것이며, 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이고, 상기 세부코드는, 실제코드탐색부에서 저장위치탐색의 탐색시작지점을 설정하는 제1코드; 및 특정한 탐색방식에 따라, 실제코드탐색부에서 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하는 것이고, 상기 실제코드탐색부는, 상기 가상코드생성장치에서 단위카운트마다 변경되어 제공되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고, 단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 탐색시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며, 상기 단위카운트는, 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것이다.
상기와 같은 본 발명에 따르면, 아래와 같은 다양한 효과들을 가진다.
첫째, 단위카운트마다 가상코드가 신규로 생성되며, 중복되는 가상코드가 정해진 전 주기 내에 등장하지 않으므로, 가상코드 유출 시에도 실제코드가 유출되지 않는 효과를 제공한다.
둘째, 가상코드생성장치와 실제코드를 이용하는 장치(예를 들어, 금융사서버, IOT디바이스 등)에만 가상코드생성 및 실제코드 탐색을 위한 알고리즘이 추가되면 되므로, 기존에 실제코드를 이용하는 프로세스를 그대로 유지할 수 있다. 예를 들어, 스마트카드 또는 앱카드에 중복생성되지 않는 가상카드번호를 생성하여 제공되는 경우, POS장치와 PG사서버는 그대로 유지되어 가상카드번호를 카드사서버로 전달하고, 카드사버서가 가상카드번호에 상응하는 실제카드번호를 탐색하여 결제를 진행할 수 있다. 이를 통해, 보안성을 높이기 위해 기존프로세스 내에서 변경되어야 하는 부분을 최소화할 수 있고, 사용자는 보안성 향상을 위한 별도 단계를 수행하지 않아도 된다.
셋째, 가상코드생성함수를 구현하는 방식이 매우 다양하여, 그룹별, 적용분야별로 상이한 가상코드생성함수를 적용할 수 있다.
도 1은 본 발명의 일실시예에 따른 가상코드제공시스템의 구성도이다.
도 2는 본 발명의 일실시예에 따른 가상코드생성장치의 구성도이다.
도 3 내지 도 4는 본 발명의 실시예들에 따른 가상코드검증장치의 구성도이다.
도 5는 본 발명의 일실시예에 따른 가상코드제공방법의 순서도이다.
도 6은 본 발명의 일실시예에 따라 k각형의 구름이동을 통해 실제코드 저장위치를 탐색하는 저장위치탐색알고리즘에 대한 예시도면이다.
도 7은 본 발명의 일실시예에 따른 k각형 구름이동에 따른 실제코드 탐색과정을 포함하는 가상코드제공방법의 순서도이다.
도 8은 본 발명의 일실시예에 따른 실제코드를 발급하여 저장위치에 저장하는 과정을 더 포함하는 가상코드제공방법의 순서도이다.
도 9는 본 발명의 일실시예에 따른 가상코드검증과정을 더 포함하는 가상코드제공방법의 순서도이다.
도 10은 본 발명의 일실시예에 따른 가상코드의 비정상코드 여부 판단과정을 더 포함하는 가상코드제공방법의 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
본 명세서에서 '문자'는 코드를 구성하는 구성요소로서, 대문자알파벳, 소문자알파벳, 숫자 및 특수문자 등의 전부 또는 일부를 포함한다.
본 명세서에서 '코드'는 문자가 나열된 문자열을 의미한다.
본 명세서에서 '실제코드'는 실제로 사용되는 코드를 의미한다. 예를 들어, 코드가 카드번호인 경우, 실제코드는 카드사에서 특정한 사용자의 카드에 발급되는 실제카드번호가 될 수 있다.
본 명세서에서 '가상코드'는 실제코드에 연결되도록 임시적으로 생성되는 코드를 의미한다.
본 명세서에서 '세부코드'는 가상코드에 포함되는 일부코드를 의미한다. 즉, 가상코드가 별도로 생성된 복수의 코드를 결합하여 생성되는 경우, 세부코드는 별도로 생성되어 가상코드를 구성하는 개별 코드를 의미한다.
본 명세서에서 '단위카운트'는 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것으로 정의된 단위이다. 예를 들어, 1카운트는 특정한 시간간격(예를 들어, 1.5초)으로 설정되어 사용될 수 있다.
본 명세서에서 '가상코드생성함수'는 가상코드를 생성하는데 이용되는 함수를 의미한다.
본 명세서에서 '스마트카드'는 카드번호를 변경하여 출력할 수 있는 카드를 의미한다.
본 명세서에서 '구름이동'은 대상체가 회전하면서 병진운동을 하는 것을 의미한다. 즉, '구름이동'은 회전운동과 병진운동을 함께 수행하면서 이동하는 것으로서, 회전하는 대상체의 각 지점이 이동하는 축 상에 차례대로 접하면서 이동하는 것을 의미한다.
이하, 도면을 참조하여, 본 발명의 실시예들에 따른 가상코드제공시스템, 가상코드생성장치(100), 가상코드검증장치(200), 가상코드제공방법 및 가상코드제공프로그램에 대해 상세히 설명한다.
도 1은 본 발명의 일실시예에 따른 가상코드제공시스템의 구성도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 가상코드제공시스템은, 가상코드생성수단(10) 및 가상코드검증수단(20);을 포함한다.
가상코드생성수단(10)은 가상코드검증수단(20)이 실제코드를 탐색할 수 있는 정보를 포함하는 가상코드를 생성하는 역할을 수행한다. 즉, 가상코드생성수단(10)은 가상코드생성함수에 따라 가상코드를 생성한다. 이 때, 가상코드검증수단(20)에서 가상코드를 기반으로 실제코드를 탐색하므로, 가상코드생성수단(10)은 실제코드를 저장하지 않을 수 있다. 이를 통해 가상코드생성수단(10)의 해킹 등을 통해 실제코드가 유출되는 것을 방지할 수 있다. 가상코드생성함수에 대한 구체적인 설명은 후술한다.
가상코드검증수단(20)은 가상코드생성수단(10)으로부터 제공되는 가상코드를 기반으로 실제코드를 탐색하는 역할을 수행한다. 가상코드검증수단(20)은 가상코드생성수단(10)으로부터 수신된 가상코드로부터 실제코드를 탐색하기 위해 가상코드생성수단(10)과 동일한 가상코드생성함수를 저장한다. 가상코드검증수단(20)이 가상코드를 기반으로 실제코드를 탐색하는 방식에 대한 구체적인 설명은 후술한다.
또한, 가상코드검증수단(20)은 가상코드가 가상코드생성수단(10)에서 정상적으로 생성된 코드인지 여부를 검증하는 역할을 수행한다. 가상코드검증수단(20)이 가상코드의 정상여부를 판단하는 방식에 대한 구체적인 설명은 후술한다.
가상코드검증수단(20)은 가상코드생성수단(10)으로부터 다양한 방식을 통해 가상코드를 전달받을 수 있다. 일실시예로, 가상코드검증수단(20)은 무선통신을 통해 가상코드생성수단(10)으로부터 가상코드를 수신할 수 있다. 또한, 다른 일실시예로, 가상코드검증수단(20)은 가상코드생성수단(10)에 의해 생성되어 사용자에게 제공된 가상코드를 사용자로부터 직접 입력받을 수 있다.
또한, 다른 일실시예로, 가상코드검증수단(20)은 가상코드생성수단(10)으로부터 가상코드를 수신한 다른 서버로부터 전달받을 수 있다. 예를 들어, 가상코드생성수단(10)이 결제카드이고 가상코드가 실제카드번호를 대체하는 가상카드번호이며 가상코드검증수단(20)이 가상코드생성함수를 포함하는 카드사서버인 경우, 가상코드생성수단(10)인 카드로 POS에서 결제를 수행하면, 가상코드검증수단(20)은 POS로부터 가상카드번호를 전달받은 PG사서버로부터 가상카드번호(즉, 가상코드)를 전달받는다. 즉, 가상코드검증수단(20)(즉, 카드사서버)은 기존의 결제프로세스를 이용하여 가상코드생성수단(10)으로부터 실제카드번호 대신 가상카드번호를 수신할 수 있다.
또한, 일실시예로, 상기 가상코드검증수단(20)과 상기 가상코드생성수단(10)은 동일한 가상코드생성함수를 포함한다. 가상코드검증수단(20)과 가상코드생성수단(10)이 동일한 가상코드생성함수를 포함함에 따라 가상코드검증수단(20)은 가상코드생성수단(10)에서 생성된 가상코드 내의 복수의 세부코드를 제대로 추출해낼 수 있다. 또한, 가상코드검증수단(20)은 수신된 가상코드가 정상적인 가상코드생성수단(10)에서 생성되어 수신된 것인지 검증할 수 있다. 즉, 가상코드검증수단(20)이 가상코드생성수단(10)과 동일한 조건에서 코드(즉, 가상코드 또는 특정한 세부코드) 생성을 수행한 후 가상코드생성수단(10)에서 수신된 코드(즉, 가상코드 또는 특정한 세부코드)를 비교하여 봄에 따라 검증을 수행할 수 있다.
도 2는 본 발명의 다른 일실시예에 따른 가상코드생성장치(100)의 구성도이다.
도 2를 참조하면, 본 발명의 다른 일실시예에 따른 가상코드생성장치(100)는, 세부코드생성부(110); 가상코드생성부(120); 및 가상코드제공부(130);를 포함한다.
본 발명의 실시예들에 따른 가상코드생성장치(100)는 가상코드생성수단(10)에 해당하는 프로그램이 내장(Embeded)되거나 가상코드생성수단(10)에 해당하는 프로그램이 설치된 장치일 수 있다. 예를 들어, 가상코드가 가상카드번호인 경우, 가상코드생성장치(100)는 가상코드생성수단(10)에 해당하는 프로그램이 내장된 스마트카드일 수 있다. 또한, 예를 들어, 가상코드가 가상카드번호인 경우, 가상코드생성장치(100)는 가상코드생성수단(10)에 해당하는 앱카드 어플리케이션이 설치된 이동단말기일 수 있다. 또한, 예를 들어, 가상코드가 사물인터넷(Internet of Things; IOT) 디바이스에 대한 가상인증키인 경우, 가상코드생성장치(100)는 가상코드생성수단(10)에 해당하는 프로그램이 내장된 제어장치(예를 들어, 리모컨)일 수 있다. 가상코드생성장치(100)는 상기 기재된 예시 이외에 다른 장치(예를 들어, 다른 디바이스 또는 서버)로 가상코드를 생성하여 전송하여야 하는 다양한 경우에 적용될 수 있다.
가상코드생성부(120)는 하나 이상의 세부코드를 조합하여 가상코드로 생성하는 역할을 수행한다. 일실시예로, 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이다. 가상코드생성함수는 복수의 세부코드를 조합하는 규칙(즉, 세부코드결합함수)을 포함한다.
복수의 세부코드를 결합하여 하나의 가상코드를 생성하는 방식으로는 다양한 방식이 적용될 수 있다. 상기 세부코드결합함수의 일 예로, 가상코드생성부(120)는 N자리의 제1코드와 N자리의 제2코드를 번갈아 배치하는 방식으로 가상코드를 생성할 수 있다. 또한, 다른 일 예로, 세부코드결합함수는 제1코드 뒤에 제2코드를 결합하는 함수일 수 있다. 가상함수에 포함되는 세부코드가 늘어남에 따라 세부코드결합함수도 다양하게 생성될 수 있다.
세부코드생성부(110)는 하나 이상의 세부코드를 생성하는 역할을 수행한다. 가상코드생성함수는 각각의 세부코드생성함수를 포함한다. 예를 들어, 가상코드생성함수는 복수의 세부코드생성함수를 이용하여 복수의 세부코드를 생성하고, 복수의 세부코드를 결합하는 세부코드결합함수를 이용하여 가상코드를 생성한다.
일실시예로, 세부코드생성부(110)는 세부코드생성함수로 제1함수와 제2함수를 포함하여, 제1코드 및 제2코드를 생성한다. 제1코드와 제2코드는 가상코드검증수단(20) 내에서 실제코드의 저장위치를 탐색하기 위한 상관관계를 가지나, 가상코드생성장치(100)는 보안성을 높이기 위해 제1코드를 생성하는 제1함수와 제2코드를 생성하는 제2함수를 세부코드생성함수로 포함할 뿐, 제1코드와 제2코드의 상관관계에 대한 데이터를 포함하지 않을 수 있다.
또한, 다른 일실시예로, 가상코드는 그룹을 구별하기 위한 변경되지 않는 고정코드를 복수의 세부코드와 함께 포함할 수 있다. 가상코드검증수단(20)은 여러 그룹에 각각 대응되는 여러 가상코드생성함수를 포함할 수 있고, 가상코드생성장치(100)로부터 가상코드가 수신되면 해당 가상코드생성장치(100)가 속하는 그룹의 가상코드생성함수를 기반으로 실제코드 탐색을 수행하여야 한다. 고정코드가 포함되지 않고 전체 코드가 단위카운트가 경과될 때마다 신규생성되는 세부코드만을 포함하게 되면, 별도의 정보없이 가상코드생성장치(100)가 속하는 그룹을 판단할 수 없다. 따라서, 가상코드생성장치(100)는 그룹을 식별하기 위한 변경이 되지 않는 고정코드를 포함한다.
예를 들어, 실제코드가 실제카드번호이고, 특정 카드사의 카드유형별로 가상코드생성함수가 부여되는 경우, 가상코드생성장치(100)는 카드번호 중에서 카드사 및 카드유형을 나타내는 앞의 6자리를 고정코드로 사용하여, 가상코드검증수단(20)은 가상코드생성장치(100)와 동일한 가상코드생성함수가 적용되는 특정 카드사의 특정 카드유형을 식별할 수 있다.
또한, 예를 들어, 주민등록번호가 실제코드이고 동일한 생년월일을 가지는 사람들을 동일 그룹으로 판단하는 경우, 가상코드생성장치(100)는 주민등록번호의 전체 13자리 중에서 생년월일에 해당하는 6자리는 고정코드로 설정하고, 나머지 7자리를 가상코드생성함수를 기반으로 단위카운트마다 신규 생성할 수 있다. 가상코드검증수단(20)은 가상코드를 수신하여 고정코드 6자리를 기반으로 그룹을 판단한다.
또한, 일실시예로, 가상코드는 보안코드를 더 포함한다. 예를 들어, 가상코드는 복수의 세부코드와 보안코드를 포함한다. 상기 보안코드는 특정한 보안코드생성함수를 기반으로 생성되는 코드로서, 정상적인 가상코드인지 여부를 검증하기 위해 이용된다. 상기 보안코드생성함수는 시간데이터와 가상코드생성수단 고유값을 함수값으로 사용하여 특정한 자릿수의 보안코드를 생성한다.
보안코드를 활용하여 가상코드의 정상여부를 판단하는 과정의 일 예는 다음과 같다. 가상코드검증수단(20)은 실제코드 발급시에 가상코드생성장치(100)의 고유값(예를 들어, 스마트카드 내의 칩고유값 또는 앱카드가 설치된 스마트폰의 고유값 등)을 수신하여 실제코드의 저장위치에 함께 저장하거나 실제코드 저장위치에 연결된 별도의 저장공간에 저장할 수 있다. 가상코드생성장치(100)가 보안코드가 결합된 가상코드를 생성하여 가상코드검증수단(20)에 제공하면, 가상코드검증수단(20)은 세부코드를 기반으로 가상코드가 생성된 시간데이터를 획득하고, 내부에 저장된 특정한 가상코드생성장치(100)의 고유값을 추출하여 시간데이터와 함께 보안코드생성함수에 적용하여 보안코드를 산출한다. 가상코드검증수단(20)은 가상코드생성장치(100)에서 수신한 보안코드(즉, 수신보안코드)와 내부에 저장된 보안코드생성함수로 산출한 보안코드(즉, 생성보안코드)가 일치하는 지 판단한다. 가상코드검증수단(20)는 수신보안코드와 생성보안코드가 일치하면 정상적인 가상코드로 판단하여 실제코드를 제공한다.
예를 들어, 실제코드가 카드에 포함된 번호(예를 들어, 카드번호, 유효기간 및 카드보안번호)인 경우(즉, 가상코드생성장치가 스마트카드인 경우), 보안코드는 카드보안번호로 생성될 수 있다. 즉, 가상코드생성장치(100)는 보안코드생성함수를 이용하여 카드보안번호에 해당하는 3자리 또는 4자리를 보안코드로 생성하고, 카드 사용 시에 카드보안번호로 보안코드를 입력하면 가상코드검증수단(20)은 보안코드를 검증하는 과정을 수행한다.
또한, 다른 예로, 보안코드생성함수는 각 카운트마다 다른 l자리(l은 자연수)의 코드를 생성하여 함수값으로 함께 적용할 수 있다. 즉, 보안코드생성함수는 l자리의 랜덤코드생성함수를 포함할 수 있다.
또한, 일실시예로, 가상코드가 제1코드 및 제2코드의 특정한 규칙에 따른 조합으로 생성되는 경우, 제1코드와 제2코드는 실제코드가 저장된 저장위치를 탐색하기 위한 각각의 역할을 수행할 수 있다. 예를 들어, 제1코드는 저장위치탐색의 시작지점을 설정하고, 제2코드는 특정한 탐색방식에 따라 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정한다. 즉, 가상코드생성장치(100)로부터 단위카운트마다 정상적으로 생성된 가상코드가 제공되면, 가상코드검증수단(20)은 제1코드에 대응하는 탐색시작지점으로부터 제2코드에 상응하는 탐색경로에 따라 이동한 지점을 실제코드의 저장위치로 판단한다. 가상코드를 구성하는 제1코드와 제2코드를 기반으로 저장위치를 탐색하는 구체적인 방식은 후술한다.
세부코드생성부(110)가 세부코드를 생성하는 방식의 일실시예로, 세부코드생성부(110)는 단위카운트마다 새로운 세부코드를 생성하고, 이에 따라 가상코드생성장치(100)는 단위카운트마다 새로운 가상코드를 생성한다. 단위카운트마다 신규로 생성되는 가상코드는 중복되어 생성되지 않는다. 구체적으로, 세부코드생성부(110)는, 단위카운드마다 신규생성되는 가상코드가 특정한 사용자 또는 특정한 가상코드생성장치(100)에게 정해진 기간동안 중복생성되지 않을 뿐만 아니라, 특정한 그룹에 속한 사용자간에도 중복생성되지 않도록 설정된다.
가상코드의 중복생성을 방지하는 구체적인 일실시예로, M개 문자로 N자리의 상기 제1코드 또는 상기 제2코드를 생성하는 경우, 가상코드생성함수에 포함되는 세부코드생성함수는 MN개의 코드를 제1코드 또는 제2코드로 생성할 수 있고, 각각의 코드를 세부코드생성함수가 구동되는 초기시점으로부터 각 카운트마다 매칭한다. 예를 들어, 단위카운트를 1초로 설정하는 경우, 세부코드생성함수가 최초 구동된 시점에서부터 매 초에 상이한 MN개의 코드를 매칭한다. 그리고, 특정한 세부코드생성함수를 이용하는 주기 또는 가상코드생성장치(100)의 사용주기(예를 들어, 가상카드번호를 생성하는 스마트카드의 유효기간)를 MN 카운트에 해당하는 시간길이(예를 들어, 1카운트가 1초인 경우, MN 초)보다 짧은 시간길이로 설정하면 제1코드 또는 제2코드는 사용주기 동안에 동일한 코드가 중복 생성되지 않는다. 즉, 시간이 흐름에 따라 카운트가 증가할 때, 사용자가 특정시점에 가상코드생성장치(100)에 가상코드생성요청을 하는 경우, 가상코드생성장치(100)는 특정시점에 대응되는 카운트에 매칭된 코드값을 제1코드 또는 제2코드로 생성할 수 있다.
가상코드의 중복생성을 방지하는 구체적인 다른 일실시예로, 가상코드생성장치(100)의 사용주기가 경과되면, 제1코드 또는 제2코드를 생성하는 함수(즉, 제1함수 또는 제2함수)를 변경하거나 제1코드와 제2코드의 매칭관계를 변경하여 이전 사용주기와 상이한 가상코드가 생성되도록 한다. 가상코드가 제1함수에 의해 생성되는 제1코드와 제2함수에 의해 생성되는 제2코드가 결합되는 경우, 제1코드생성함수 또는 제2코드생성함수가 변경되면, 가상코드생성장치(100)는 제1코드 또는 제2코드가 등장하는 순서가 이전 사용주기와 달라짐에 따라 이전주기와 상이한 가상코드를 생성하는 가상코드생성함수를 신규 사용주기에 적용할 수 있다. 또한, 가상코드생성장치(100)는 이전 사용주기에서 사용된 가상코드와 동일한 코드가 신규 사용주기 내 각 카운트의 가상코드로 등장하지 않도록(즉, 제1함수에 따라 생성되는 제1코드와 제2함수에 따라 생성되는 제2코드의 매칭관계가 신규 사용주기의 모든 카운트에서 이전 사용주기 내에 포함된 매칭관계 중에 포함되지 않도록) 제1함수와 제2함수를 선택할 수 있다. 즉, MN 개의 코드를 1회씩 적용할 수 있는 사용주기를 경과한 후 가상코드생성함수 조절 또는 갱신을 통해 이전 사용주기와 겹치는 가상코드가 생성되지 않는 신규 사용주기의 가상코드생성함수를 적용할 수 있다.
이 때, 가상코드생성수단(10) 및 가상코드검증수단(20)은 가상코드생성함수를 갱신하는 규칙을 저장할 수 있다. 즉, 가상코드생성수단(10) 및 가상코드검증수단(20)은 복수의 제1함수와 제2함수를 각 사용주기에 적용하는 순서 또는 규칙을 저장할 수 있다.
또한, 가상코드의 중복생성을 방지하는 구체적인 다른 일실시예로, 동일한 그룹에 속한 사용자 간에도 동일한 가상코드가 동일시점에 생성되지 않도록, 가상코드에 포함되는 제1코드 또는 제2코드 중 어느 하나는 적어도 가상코드생성장치(100)마다 동일시점에 항상 상이하게 존재하는 값(즉, 장치식별값)을 반영하여 생성될 수 있다. 일실시예로, 장치식별값은 특정한 세부코드생성함수가 적용되는 그룹에 특정한 가상코드생성장치(100)가 포함된 시점(예를 들어, 가상코드검증수단(20) 내에 특정한 세부코드생성함수가 구동된 최초시점으로부터 특정시간이 경과한 후 특정한 가상코드생성장치(100)에 상기 세부코드생성함수가 적용되기 시작한 시점)으로부터 현재까지 경과된 시간(또는 카운트수)일 수 있다. 하나의 그룹 내에 복수의 가상코드생성장치(100)가 포함되는 경우, 가상코드생성장치(100)를 해당 그룹에 속하도록 설정하는 카운트를 동일하지 않게 하면(즉, 가상코드생성장치(100)가 해당 그룹에 동시에 속할 수 없게 하면), 가상코드생성장치(100)가 그룹에 속하게 된 시점(또는 카운트)로부터 특정시점까지의 경과된 시간은 각 가상코드생성장치(100)마다 상이하게 된다. 따라서, 세부코드생성함수 중 적어도 어느 하나는 가상코드생성장치(100)가 그룹에 속하게 된 시점(또는 카운트)로부터 특정시점까지의 경과된 시간을 장치식별값으로 이용하여, 각 시점마다 각각의 가상코드생성장치(100)에서 생성되는 가상코드가 상이하도록 할 수 있다. 이를 통해, 가상코드검증수단(20)이 사용자를 구별하기 위한 데이터를 별도로 수신하지 않고 가상코드를 수신하는 것만으로 가상코드생성장치(100)의 구별이 가능하도록 할 수 있다.
예를 들어, 가상코드생성장치(100)가 출력되는 카드번호를 변경할 수 있는 카드(예를 들어, 스마트카드 또는 앱카드 등)인 경우, 특정한 카드사의 특정한 카드유형이 하나의 그룹으로 설정되고, 카드사서버 내의 특정한 가상코드검증수단(20)이 해당 그룹에 대해 구동된다. 제1사용자가 가상코드검증수단(20) 구동 시로부터 A시간만큼 경과된 시점에 제1가상코드생성장치(100)(즉, 제1사용자의 가상코드생성장치(100))에 카드발급을 요청하고 제2사용자가 가상코드검증수단(20) 구동 시로부터 B(B는 A보다 큰 값)시간만큼 경과된 시점에 제2가상코드생성장치(100)(즉, 제2가상코드생성장치(100))에 카드발급을 요청하면, 제1가상코드생성장치(100) 및 제2가상코드생성장치(100)는 제1사용자와 제2사용자로부터 가상코드 생성이 요청된 C(C는 B보다 큰 값)시간에 카드발급 시점으로부터 경과된 시간길이가 항상 상이하게 된다. 따라서, 세부코드생성함수는 각 가상코드생성장치(100)에 카드가 발급된 시점으로부터 경과된 시간길이를 변수로 적용함에 따라 동일시점에 동일한 가상카드번호가 생성되지 않도록 할 수 있다.
또한, 특정한 가상코드생성장치(100)가 특정한 그룹에 속하게 된 시점으로부터 경과된 시간길이는 시간이 흐름에 따라 계속 증가하게 되므로, 특정한 가상코드생성장치(100)에서 생성되는 세부코드(예를 들어, 제2코드)는 동일한 값이 생성되지 않고 계속 다른 값이 생성된다.
또한, 가상코드의 중복생성을 방지하는 구체적인 또 다른 일실시예로, 전체주기에서 사용자에 무관하게 중복된 가상코드가 발생되지 않도록, 제1코드는 가상코드검증수단(20) 내에서 제1함수가 구동되는 초기시점으로부터 각 카운트마다 매칭된 코드 중에서 가상코드 생성요청이 된 시점(또는 카운트)에 대응되는 코드값으로 설정하고, 제2코드는 가상코드생성장치(100)마다 동일시점에 항상 상이하게 존재하는 값(즉, 장치식별값)을 반영하여 생성되는 코드값으로 설정하고, 가상코드를 상기 제1코드와 제2코드가 결합된 코드값으로 이용할 수 있다. 제1코드는 각 카운트마다 상이한 코드값이 되고 제2코드는 동일시점에 가상코드생성장치(100)마다 상이한 코드값을 가지게 되어서, 제1코드와 제2코드가 결합된 가상코드는 모든 가상코드생성장치(100)와 모든 시점에 상이한 코드값이 출력되게 된다.
또한, 다른 일실시예로, 상기 가상코드생성함수(또는 세부코드생성함수)는, M개의 문자를 오름차순으로 나열하는 다수의 나열규칙 중 어느 하나가 적용된다. 즉, 가상코드생성장치(100)(즉, 가상코드생성수단(10))는 가상코드생성함수 내에 포함되는 세부코드생성함수에 M개 문자를 오름차순으로 나열하는 규칙을 다양하게 적용하여 할 수 있다. 예를 들어, 알파벳 대문자를 오름차순으로 나열하는 나열규칙은, 일반적인 순서인 A, B, C,…, Z 순서가 될 수 있고, A, C, B,…, Z 순서가 될 수도 있다. 가상코드생성함수에서 나열규칙이 달라짐에 따라 가상코드생성함수가 구동되는 초기시점부터 각 카운트에 차례대로 코드가 매칭되는 순서가 달라지게 된다. 가상코드검증수단(20)은 동일한 나열규칙에 따라 생성된 코드가 각 카운트에 매칭되어 있거나, 동일한 나열규칙 자체를 가상코드생성함수에 포함하여 저장할 수 있다. 따라서, 각 그룹별 가상코드생성함수가 상이한 세부코드결합함수를 포함하거나 상이한 문자 나열규칙을 포함하여, 각 그룹별로 상이한 가상코드생성함수를 가지도록 할 수 있다.
가상코드제공부(130)는 상기 가상코드를 가상코드검증장치(200)로 제공하기 위해 외부로 출력하는 역할을 수행한다. 가상코드제공부(130)는 가상코드를 외부로 제공할 수 있는 다양한 구성을 포함할 수 있다. 가상코드제공부(130)는 무선통신모듈; 근거리통신모듈; IC칩; 자장발생부; 디스플레이부 등의 전부 또는 일부를 포함한다.
무선 인터넷 모듈은 무선 인터넷 접속을 위한 모듈을 말하는 것으로, 이동 단말기(100)에 내장되거나 외장될 수 있다. 무선 인터넷 기술로는 WLAN(Wireless LAN)(Wi-Fi), Wibro(Wireless broadband), Wimax(World Interoperability for Microwave Access), HSDPA(High Speed Downlink Packet Access), LTE(long term evolution), LTE-A(Long Term Evolution-Advanced) 등이 이용될 수 있다.
근거리 통신 모듈은 근거리 통신을 위한 모듈을 말한다. 근거리 통신(short range communication) 기술로 블루투스(Bluetooth), BLE(Bluetooth Low Energy), 비콘(Beacon), RFID(Radio Frequency Identification), NFC(Near Field Communication), 적외선 통신(Infrared Data Association; IrDA), UWB(Ultra Wideband), ZigBee 등이 이용될 수 있다.
가상코드제공부(130)는, 가상코드생성장치(100)가 POS장치에 가상코드(즉, 가상카드번호)를 전달하는 카드에 해당하는 경우, 자장발생부 또는 IC칩을 포함할 수 있다. 자장발생부는 카드데이터를 자기신호 형태로 출력하여 카드리더기에 전달하는 기능을 수행한다. 자장발생부는 전류 흐름을 통해 자기장을 형성하여 카드정보 자기신호를 출력하는 자기셀을 하나 이상 포함할 수 있다. 자장발생부는 카드의 PCB판의 특정한 긴 변에 인접하게 상기 긴 변을 따라 PCB판의 상면 또는 하면에 노출되도록 구비될 수 있다.
IC칩은 PCB판 내에 실장되어 IC방식의 카드리더기의 단자와 접촉하여 데이터교환을 수행하도록 할 수 있다. 즉, IC칩은 가상코드생성부(120)에서 생성된 가상코드를 IC방식의 카드리더기로 전달한다.
디스플레이부는 액정 디스플레이(liquid crystal display), 박막 트랜지스터 액정 디스플레이(thin film transistor-liquid crystal display), 유기 발광 다이오드(organic light-emitting diode), 플렉시블 디스플레이(flexible display), 전자종이(E-paper) 중에서 적어도 하나를 포함할 수도 있다.
디스플레이부는 가상코드생성부(120)에서 생성한 가상코드를 시각적으로 외부에 출력한다. 이를 통해, 가상코드생성장치(100)의 사용자는 실시간으로 생성된 가상코드를 시각적으로 확인할 수 있고, 가상코드검증수단(20)에 시각적으로 확인한 가상코드를 직접 입력할 수 있다.
또한, 사용자는 디스플레이부에 표시된 가상코드를 문자메시지 등의 다양한 경로를 통해 가상코드를 전달할 수 있다. 실제코드를 전송하는 것이 아니라 가상코드검증수단(20)에서 실제코드를 탐색할 수 있는 가상코드(구체적으로, 계속적으로 변경생성되는 코드)를 전달하는 것이므로, 사용자가 문자메시지 등을 통해 코드 전송 시 실제코드 유출을 우려하지 않도록 할 수 있다.
도 3은 본 발명의 일실시예에 따른 가상코드검증장치(200)의 구성도이다.
도 3을 참조하면, 본 발명의 또 다른 일실시예에 따른 가상코드검증장치(200)는, 가상코드수신부(210); 세부코드추출부(220); 및 실제코드탐색부(230);를 포함한다. 가상코드검증장치(200)는 전자장치일 수도 있고, 서버장치일 수도 있다. 예를 들어, 가상코드검증장치(200)는 실제코드를 대체하는 가상코드를 생성하여 전송하는 제어장치(즉, 가상코드생성장치(100))와 연결되는 IOT디바이스가 해당될 수 있다. IOT디바이스는 가상코드를 기반으로 실제코드의 저장위치를 탐색하고, 특정한 저장위치에서 실제코드가 추출되면 구동될 수 있다.
또한, 예를 들어, 가상코드검증장치(200)는 특정한 사용자가 보유한 특정 카드사의 특정한 유형의 카드에 대한 가상카드번호를 수신한 후 실제카드번호를 탐색하여 결제를 진행하는 카드사서버일 수 있다. 구체적으로, 카드 결제의 경우, 가상코드검증장치(200)는 POS장치 및 PG사 서버를 통해 가상코드생성장치(100)에서 생성한 가상코드를 수신한다.
가상코드수신부(210)는 가상코드생성장치(100)로부터 가상코드를 수신하는 역할을 수행한다. 일실시예로, 가상코드수신부(210)는 무선통신부(예를 들어, 무선통신모듈 또는 근거리통신모듈)를 포함하여, 가상코드생성장치(100)로부터 무선통신을 통해 가상코드를 수신할 수 있다. 또한, 다른 일실시예로, 가상코드수신부(210)는 다른 서버와의 통신을 통해 가상코드생성장치(100)에서 생성된 가상코드를 전달받을 수 있다.
또한, 다른 일실시예로, 가상코드수신부(210)는 사용자입력부일 수 있다. 즉, 가상코드수신부(210)는 가상코드생성장치(100)에서 시각적으로 출력된 가상코드를 사용자로부터 직접 입력받을 수 있다. 예를 들어, 가상코드생성장치(100)가 가상카드번호를 생성하여 카드표면 상에 출력하는 장치(예를 들어, 스마트카드)인 경우, 사용자는 가상코드생성장치(100)에 시각적으로 표시된 가상코드를 확인하여 가상코드검증장치(200)의 사용자입력부에 직접 입력할 수 있다.
구체적으로, 가상코드생성장치(100)는 카드번호 16자리 중에서 변경 가능한 자릿수(예를 들어, 카드사 및 카드유형을 판단하는 앞의 6자리 및 마지막 digit을 제외한 자리)에 디스플레이부를 구비하고, 가상코드가 생성되면 변경가능한 코드의 자리에 문자를 출력한다. 사용자는 변경되지 않는 코드와 변경되는 코드 전체를 가상코드로 하여 가상코드검증장치(200)의 사용자입력부(즉, 가상코드수신부(210))에 입력할 수 있다.
세부코드추출부(220)는 상기 가상코드에 포함된 복수의 세부코드를 추출한다. 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이다. 가상코드검증장치(200)의 세부코드추출부(220)는 특정그룹의 가상코드생성장치(100)와 동일한 세부코드결합함수를 포함하여, 세부코드추출부(220)는 세부코드결합함수를 적용하여 가상코드에서 복수의 세부코드를 추출할 수 있다. 예를 들어, 가상코드생성장치(100)에서 두 개의 세부코드(즉, 제1코드 및 제2코드)가 결합된 가상코드를 생성하는 경우, 세부코드추출부(220)는 가상코드의 문자배열에서 세부코드결합함수를 적용하여 제1코드 및 제2코드를 분리해낼 수 있다.
실제코드탐색부(230)는 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색한다. 실제코드탐색부(230)가 각각의 세부코드를 기반으로 실제코드 저장위치를 탐색하는 방식으로는 다양한 방식이 적용될 수 있다. 실제코드탐색부(230)가 복수의 세부코드를 기반으로 저장위치를 탐색하기 위해 세부코드 간에는 상관관계를 포함할 수 있다.
가상코드가 제1코드 및 제2코드로 구성되는 경우, 세부코드 간에 상관관계를 가지는 일실시예로, 실제코드탐색부(230)는 제1코드에 대응하는 탐색시작지점을 결정하고, 상기 탐색시작지점으로부터 제2코드에 상응하는 탐색경로에 따라 이동한 지점을 실제코드의 저장위치로 찾을 수 있다. 즉, 상기 세부코드는, 저장위치탐색의 시작지점을 설정하는 제1코드 및 특정한 탐색방식에 따라, 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드를 포함할 수 있다.
또한, 다른 일실시예로, 가상코드생성수단(10)(또는 가상코드생성장치(100))가 단위카운트마다 신규 가상코드를 제공함에 따라, 가상코드검증장치(200)는 저장위치 탐색을 위한 제1코드와 제2코드가 단위카운트의 경과시마다 변경된다. 가상코드검증장치(200)는 각 카운트마다 변경되는 제1코드 및 제2코드를 기반으로 탐색시작지점과 탐색경로를 설정하여 실제코드의 저장위치를 탐색할 수 있다.
또한, 다른 일실시예로, 실제코드탐색부(230)는 상관관계를 가지는 복수의 세부코드를 이용하여 실제코드의 저장위치를 찾기 위해, 저장위치탐색알고리즘을 포함할 수 있다. 저장위치탐색알고리즘은 가상코드에 포함되는 각각의 세부코드 적용 시에 저장위치 탐색이 가능하도록 하는 알고리즘이다. 예를 들어, 가상코드로부터 저장위치의 탐색시작지점을 결정하는 제1코드와 탐색시작지점으로부터의 저장위치 방향을 제시하는 제2코드를 포함하는 경우, 저장위치탐색알고리즘은 제1코드에 대응되는 지점에서 제2코드에 대응되는 방향을 지시할 때, 해당 위치에 실제코드가 매칭되는 저장위치가 배치되도록 조절하는 알고리즘이다. 저장위치탐색알고리즘을 이용함에 따라, 가상코드검증장치(200)는 가상코드에 포함된 제1코드와 제2코드가 변경되어도 실제코드 저장위치 또는 저장위치에 매칭된 지점을 찾을 수 있다. 저장위치탐색알고리즘은 다양한 방식이 적용될 수 있으며, 구체적인 예시는 후술한다. 다만, 저장위치탐색알고리즘은 후술되는 예시에 한정되지 않는다.
예를 들어, 후술되는 바와 같이, 도 6을 참조하면, 저장위치탐색알고리즘이 제1코드에 해당하는 MN개의 코드가 나열된 트랙을 따라 구름이동하는 k각형(k는 MN)이며, k각형의 꼭지점이 제1코드 트랙 상에 코드가 배치되는 지점에 대응되면서 이동하는 경우, k각형의 각 꼭지점이 실제코드 저장위치와 매칭되고, 제1코드 트랙(즉, 제1트랙)과 k각형이 대응되는 지점이 제1코드에 대응하는 저장위치 탐색시작지점이 될 수 있다. 이 때, 실제코드탐색부(230)는 세부코드추출부(220)에서 추출된 제1코드에 대응되는 지점에 k각형의 꼭지점이 접하도록 k각형을 구름이동를 적용할 수 있다. 이를 통해, 실제코드탐색부(230)는 k각형이 접한 제1트랙 상의 위치에서 제2코드에 상응하는 각도(예를 들어, k각형의 꼭지점을 향하도록 180도를 MN개로 분할한 특정한 각도)로 지시함에 따라, 가상코드에 대응하는 실제코드가 저장된 저장위치인 k각형의 꼭지점을 탐색할 수 있다.
구체적으로, 도 6에서와 같이, 가상코드검증장치(200)는 제1코드에 대응하는 지점으로 k각형을 구름이동(즉, k각형의 각 꼭지점과 트랙 상의 각 지점이 차례대로 접하도록 하면서 이동)시킨다. 그 후, 가상코드검증장치(200)는 제2코드에 상응하는 각도 방향을 지시하여 저장위치에 상응하는 꼭지점을 탐색한다. 예를 들어, 가상코드생성수단B는 실제코드를 발급받은 후 2카운트가 경과하였으므로 가상코드생성수단B는 2카운트를 함수값으로 적용한 제2코드를 생성하여 가상코드검증수단으로 제공한다. 가상코드검증수단은 k각형과 트랙이 접하는 지점에서 각 꼭기점을 향하는 각도에 각 카운트마다 제2함수에 의해 생성되는 제2코드를 매칭하여 저장(즉, n카운트가 적용된 제2코드를 k각형의 n카운트만큼 구름이동함에 따라 구름이동된 n번째 꼭지점을 향하는 각도로 매칭하여 저장)하므로, 가상코드검증수단은 제2코드에 상응하는 각도를 제1코드 대응지점에 적용하여 실제코드 저장위치에 대응하는 k각형의 꼭지점을 탐색한다.
또한, 다른 일실시예로, 도 4에서와 같이, 상기 가상코드검증장치(200)는, 가상코드검증부(240);를 더 포함한다. 가상코드검증부(240)는 가상코드검증장치(200)가 수신한 가상코드의 진위여부를 판단하는 역할을 수행한다.
도 5는 본 발명의 일실시예에 따른 가상코드제공방법의 순서도이다.
도 5를 참조하면, 본 발명의 일실시예에 따른 가상코드제공방법은, 가상코드검증수단(20)이 가상코드생성수단(10)으로부터 가상코드를 수신하는 단계(S200; 가상코드 수신단계); 상기 가상코드검증수단(20)이 상기 가상코드에 포함된 복수의 세부코드를 추출하는 단계(S400); 및 상기 가상코드검증수단(20)이 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 단계(S1000; 실제코드 탐색단계);를 포함한다. 이하, 각 단계에 대한 상세한 설명을 기재한다. 다만, 가상코드생성장치(100) 및 가상코드검증장치(200)에 대한 설명 과정에서 상술된 내용에 대한 구체적인 개시는 생략한다.
가상코드검증수단(20)이 가상코드생성수단(10)으로부터 가상코드를 수신한다(S200; 가상코드 수신단계). 가상코드는 가상코드생성장치(100)(또는 가상코드생성수단(10))에서 생성되어 가상코드검증수단(20)으로 제공된다.
가상코드생성수단(10)에서 생성되는 가상코드는 복수의 세부코드로 구성될 수 있다. 일실시예로, 가상코드는 제1코드와 제2코드의 결합으로 생성될 수 있다. 제1코드 및 제2코드는 가상코드검증수단(20)에서 실제코드의 위치를 탐색하는데 각각 이용된다. 예를 들어, 제1코드는 가상코드검증수단(20)에서 실제코드 저장위치탐색의 시작지점을 설정하는 코드이고, 제2코드는 특정한 탐색방식에 따라 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 코드일 수 있다.
상기 탐색방식은 저장위치탐색알고리즘에 의해 결정될 수 있다. 탐색방식 결정에 대한 상세한 설명은 후술되는 실제코드탐색단계(S1000)에서 상세히 기술한다.
또한, 다른 일실시예로, 상기 가상코드생성함수는, M개 문자로 N자리의 상기 제1코드 또는 상기 제2코드를 생성하는 경우, 상이한 MN개의 코드를 단위카운트마다 순차적으로 변경되는 제1코드 또는 제2코드로 제공하는 제1함수 또는 제2함수를 포함한다. 즉, 제1함수 또는 제2함수는 MN개의 코드를 카운트 증가에 따라 겹치지 않게 생성하는 함수로서, 특정한 시점에 대응하는 카운트에 MN개의 코드 중에 특정한 하나를 제1코드 또는 제2코드로 생성한다. 이를 통해, 가상코드생성수단(10)은 MN카운트(즉, MN개의 카운트에 대응하는 시간길이) 내에 동일한 제1코드 또는 제2코드를 중복 생성하지 않고 단위카운트마다 새로운 세부코드(즉, 제1코드 또는 제2코드)를 생성하여, 단위카운트마다 새로운 가상코드를 생성한다.
구체적으로, 가상코드생성함수는, M개 문자로 N자리의 상기 제1코드 또는 상기 제2코드를 생성함에 따라 MN개의 코드를 제1코드 또는 제2코드로 이용하는 경우, 각각의 코드를 세부코드생성함수가 구동되는 초기시점으로부터 각 카운트마다 매칭한다. 예를 들어, 단위카운트를 1초로 설정하는 경우, 세부코드생성함수가 최초 구동된 시점에서부터 매 초에 상이한 MN개의 코드를 매칭한다. 그리고, 특정한 세부코드생성함수를 이용하는 주기 또는 가상코드생성장치(100)의 사용주기(예를 들어, 가상카드번호를 생성하는 스마트카드의 유효기간)를 MN 카운트에 해당하는 시간길이(예를 들어, 1카운트가 1초인 경우, MN 초)보다 짧은 시간길이로 설정하면 제1코드 또는 제2코드는 사용주기 동안에 동일한 코드가 중복 생성되지 않는다. 즉, 시간이 흐름에 따라 카운트가 증가할 때, 사용자가 특정시점에 가상코드생성수단(10)에 가상코드생성요청을 하는 경우, 가상코드생성장치(100)는 특정시점에 대응되는 카운트에 매칭된 코드값을 제1코드 또는 제2코드로 생성할 수 있다.
또한, 다른 일실시예로, 동일한 그룹에 속한 사용자 간에도 동일한 가상코드가 동일시점에 생성되지 않도록, 가상코드에 포함되는 제1코드 또는 제2코드 중 적어도 어느 하나는 각 가상코드생성수단(10)에서 동일시점에 항상 상이하게 존재하는 값(즉, 장치식별값)을 반영하여 생성될 수 있다. 즉, 특정한 시점에 하나의 그룹에 속하는 복수의 가상코드생성수단(10)에서 가상코드 발급이 요청되는 경우, 각 가상코드생성수단(10)이 상이한 가상코드를 생성하도록 각 시점에 각 가상코드생성수단(10)에 상이하게 부여되는 값을 반영하여 상이한 제1코드 또는 제2코드를 생성한다.
일 예로, 장치식별값은 특정한 세부코드생성함수가 적용되는 그룹에 특정한 가상코드생성수단(10)이 포함된 시작시점(예를 들어, 가상코드검증수단(20) 내에 특정한 세부코드생성함수가 구동된 최초시점으로부터 특정시간이 경과한 후 특정한 가상코드생성장치(100)에 상기 세부코드생성함수가 적용되기 시작한 시점)으로부터 현재까지 경과된 시간(또는 카운트수)일 수 있다. 하나의 그룹 내에 복수의 가상코드생성수단(10)이 포함되는 경우, 가상코드생성수단(10)을 해당 그룹에 속하도록 설정하는 카운트를 동일하지 않게 하면(즉, 가상코드생성수단(10)이 해당 그룹에 동일시점에 등록될 수 없게 하면), 가상코드생성수단(10)이 그룹에 속하게 된 시점(또는 카운트)로부터 특정시점까지의 경과된 시간은 각 가상코드생성장치(100)마다 상이하게 된다. 예를 들어, 복수의 가상코드생성수단(10)에서 동시에 그룹참여요청이 수신되는 경우(예를 들어, 동시에 특정한 카드사의 특정 카드유형의 발급요청이 수신되는 경우), 가상코드검증수단(20)은 복수의 가상코드생성수단(10)으로부터 동시에 수신된 그룹참여요청을 미리 정해진 조건에 따라 순서를 부여하여 다른 카운트에 요청이 들어온 것으로 처리할 수 있다.
예를 들어, 가상코드가 제1코드와 제2코드의 결합으로부터 생성되는 경우, 가상코드생성함수는 실제코드를 신규생성한 시점으로부터 경과된 단위카운트를 기반으로 제2코드를 생성하도록 할 수 있다.
따라서, 세부코드생성함수 중 적어도 어느 하나는 가상코드생성장치(100)가 그룹에 속하게 된 시점(또는 카운트)으로부터 특정시점까지의 경과된 시간을 장치식별값으로 이용하여, 각 시점마다 각각의 가상코드생성장치(100)에서 생성되는 가상코드가 항상 상이하도록 할 수 있다. 이를 통해, 가상코드검증수단(20)이 사용자를 구별하기 위한 데이터를 별도로 수신하지 않고 가상코드를 수신하는 것만으로 가상코드생성수단(10)의 구별이 가능하도록 할 수 있다.
또한, 특정한 가상코드생성장치(100)가 특정한 그룹에 속하게 된 시점으로부터 경과된 시간길이는 시간이 흐름에 따라 계속 증가하게 되므로, 특정한 가상코드생성장치(100)에서 생성되는 세부코드(예를 들어, 제2코드)는 동일한 값이 생성되지 않고 계속 다른 값이 생성된다.
또한, 또 다른 일실시예로, 전체주기에서 사용자에 무관하게 중복된 가상코드가 발생되지 않도록, 제1코드는 제1함수가 구동되는 초기시점으로부터 각 카운트마다 매칭된 코드 중에서 가상코드 생성요청된 시점(또는 카운트)에 대응되는 코드값으로 설정하고, 제2코드는 가상코드생성장치(100)마다 동일시점에 항상 상이하게 존재하는 값(즉, 장치식별값)을 반영하여 생성되는 코드값으로 설정하고, 가상코드를 상기 제1코드와 제2코드가 결합된 코드값으로 이용할 수 있다. 제1코드는 각 카운트마다 상이한 코드값이 되고 제2코드는 동일시점에 가상코드생성장치(100)마다 상이한 코드값을 가지게 되어서, 제1코드와 제2코드가 결합된 가상코드는 가상코드생성장치(100)와 시점에 상관없이 상이한 코드값이 출력되게 된다.
또한, 다른 일실시예로, 상기 가상코드생성함수는, 복수의 세부코드를 배열하는 규칙에 해당하는 세부코드결합함수를 포함한다. 즉, 가상코드생성함수는 복수의 세부코드에 포함된 문자를 나열 또는 배치하는 특정한 규칙을 가지고 있을 수 있다. 이에 따라, 동일한 가상코드생성함수를 포함하는 가상코드생성수단(10)과 가상코드검증수단(20)의 경우, 가상코드생성수단(10)이 복수의 세부코드에 포함된 문자를 세부코드결합함수에 따라 배열하고, 가상코드검증수단(20)이 동일한 세부코드결합함수를 이용하여 가상코드에서 개별 세부코드를 분리할 수 있다.
또한, 다른 일실시예로, 상기 가상코드생성함수는, M개의 문자를 오름차순으로 나열하는 다수의 나열규칙 중 어느 하나가 적용될 수 있다. 즉, 가상코드생성함수는 M개의 문자를 오름차순으로 나열하는 다양한 나열규칙이 적용될 수 있고, 적용되는 나열규칙에 따라 상이한 가상코드생성함수로 분류될 수 있다.
가상코드검증수단(20)은 가상코드생성수단(10)이 생성한 가상코드를 다양한 방식으로 수신한다. 즉, 상술된 가상코드생성장치(100)의 다양한 가상코드제공방식이 적용될 수 있다.
가상코드검증수단(20)이 상기 가상코드에 포함된 복수의 세부코드를 추출한다(S400). 가상코드검증수단(20)은 가상코드생성수단(10)이 포함하는 가상코드생성함수를 포함함에 따라, 복수의 세부코드를 결합하였던 규칙(즉, 세부코드결합함수)을 동일하게 적용하여 복수의 세부코드를 추출한다. 즉, 세부코드결합함수는 복수의 세부코드를 배열하는 규칙에 해당하는 것으로, 가상코드생성함수 내에 포함된다.
또한, 다른 일실시예로, 가상코드가 가상코드생성수단(10)이 포함된 그룹을 결정하는 고정코드를 포함하는 경우, 상기 세부코드추출단계(S400)는 상기 가상코드 내에서 상기 고정코드를 추출하고, 상기 고정코드를 기반으로 상기 가상코드생성수단의 그룹을 판단하여, 상기 그룹에 대한 상기 가상코드생성함수 또는 상기 저장위치탐색알고리즘을 결정한다. 즉, 각 그룹별로 가상코드생성함수 또는 저장위치탐색알고리즘을 상이하게 적용하는 경우, 가상코드검증수단(20)는 가상코드 내의 고정코드를 기반으로 그룹을 구별한다.
또한, 고정코드를 이용하여 가상코드생성함수를 결정하는 과정은, 복수의 세부코드를 추출하는 과정 이전에 수행될 수 있다. 고정코드에 의해 가상코드생성함수가 결정되어야 가상코드생성함수 내에 포함된 세부코드결합함수가 결정되어 복수의 세부코드를 추출할 수 있다.
이를 위해, 가상코드검증수단(20)이 별도의 함수 없이도 용이하게 분리해내도록, 고정코드는 가상코드 내에 고정된 위치(예를 들어, 가상코드의 제일 앞의 특정 개수의 자리)에 결합될 수 있다.
가상코드검증수단(20)이 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색한다(S1000; 실제코드 탐색단계). 복수의 세부코드는 상호간에 상관관계를 가지고 있고, 가상코드검증수단(20)은 세부코드 간의 상관관계를 기반으로 실제코드 저장위치를 탐색한다.
또한, 일실시예로, 가상코드 내의 복수의 세부코드는 단위카운트마다 생성되는 코드가 변경(예를 들어, 가상코드가 2개의 세부코드로 이루어지는 경우, 제1코드 및 제2코드는 단위카운트마다 변경)될 수 있고, 가상코드검증수단(20)은 단위카운트마다 가상코드가 변경되어도 실제코드 저장위치를 탐색할 수 있도록 실제코드 저장위치에 매칭된 지점을 변경된 제1코드 및 제2코드에 부합하는 위치로 단위카운트마다 조절한다.
가상코드를 구성하는 세부코드 간의 상관관계에 관한 일실시예로, 가상코드가 제1코드와 제2코드의 결합으로 이루어지는 경우, 가상코드검증수단(20)은 제1코드를 탐색시작지점(즉, 실제코드 저장위치의 탐색을 시작하는 지점)으로 설정하고, 제2코드를 상기 탐색시작지점으로부터 저장위치로 이동하는 경로로 적용하여 저장위치를 탐색할 수 있다. 즉, 단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 가상코드검증수단(20)은 제1코드에 대응하는 시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 탐색지점을 실제코드의 저장위치 또는 저장위치에 매칭된 지점(예를 들어, 별도 서버에 탐색지점에 매칭되어 있는 저장공간)으로 판단한다.
일실시예로, 제2코드가 제1코드에 상응하는 탐색시작지점으로부터의 저장위치까지의 경로에 대한 정보를 모두 포함하는 경우, 가상코드검증수단(20)은 제1코드에 상응하는 탐색시작지점으로부터 제2코드에 상응하는 탐색경로에 따라 실제코드 저장위치 또는 저장위치에 매칭된 지점을 찾을 수 있다.
다른 일실시예로, 가상코드검증수단(20)은 단위카운트마다 실제코드의 저장위치를 가상코드에 부합하게 조절하는 저장위치탐색알고리즘을 포함할 수 있다. 즉, 상기 가상코드검증수단(20)은, 단위카운트마다 실제코드 저장위치에 매칭된 지점으로의 탐색경로를 조절하는 저장위치탐색알고리즘을 포함한다. 상기 제1코드 및 상기 제2코드는 단위카운트마다 변경되는 경우, 가상코드검증수단(20)은 변경되는 제1코드 및 제2코드에 부합하게 저장위치탐색알고리즘을 조절할 수 있다. 상기 저장위치탐색알고리즘은 다양한 형태로 구현될 수 있다.
일실시예로, 도 7에서와 같이, 저장위치탐색알고리즘이 k(k는 MN)개의 코드가 나열된 트랙 상을 k각형이 각 코드가 배치된 지점에 꼭지점이 대응되면서 구름이동하는 것일 수 있다. 이 때, 상기 실제코드탐색단계(S1000)는, 가상코드검증수단(20)이 상기 가상코드생성수단(10)으로부터 수신된 상기 가상코드 내 제1코드에 대응하는 트랙 상의 지점으로 k각형을 구름이동하는 단계(S1010); 상기 제1코드에 대응하는 위치를 시작지점으로 설정하고, 상기 제2코드에 적용된 탐색방식에 따라 제2코드를 기반으로 k각형의 배치상태에서의 저장위치 또는 상기 저장위치가 매칭된 지점을 탐색하는 단계(S1020; 저장위치탐색단계); 및 상기 저장위치에 포함된 실제코드를 추출하는 단계(S1030);를 포함한다.
가상코드검증수단(20)은, 도 6에서와 같이, 가상코드생성수단(10)으로부터 수신된 상기 가상코드 내 제1코드에 대응하는 트랙 상의 지점으로 k각형을 구름이동한다(S1010). 저장위치탐색알고리즘은 제1코드에 해당하는 MN개의 코드가 나열된 트랙을 따라 구름이동하는 k각형(k는 MN)이며, k각형의 꼭지점이 제1코드 트랙 상에 코드가 배치되는 지점에 대응되면서 이동한다. 이 때, 가상코드검증수단(20)은 제1코드에 대응되는 지점에 k각형의 꼭지점이 접하도록 k각형을 구름이동(또는 구름이동)을 적용할 수 있다.
가상코드검증수단(20)은, 도 6에서와 같이, 상기 제1코드에 대응하는 위치가 시작지점으로 설정하고, 상기 제2코드에 적용된 탐색방식에 따라 제2코드를 기반으로 k각형의 배치상태에서의 저장위치 또는 저장위치에 매칭된 지점(즉, k각형의 특정한 꼭지점)을 탐색한다(S1020; 저장위치탐색단계). 상기 저장위치는 상기 k각형의 각각의 꼭지점에 매칭된다. 제1코드 트랙(즉, 제1트랙)과 k각형이 대응되는 지점이 제1코드에 대응하는 저장위치 탐색시작지점이 된다. 가상코드검증수단(20)은 탐색시작지점에서 제2코드를 기반으로 저장위치의 매칭지점을 탐색한다.
제2코드를 기반으로 k각형에서 저장위치를 탐색하는 방식으로는 다양한 방식이 적용될 수 있다. 일 예로, 가상코드검증수단(20)은 k각형이 접한 제1트랙 상의 위치에서 제2코드에 상응하는 각도(예를 들어, k각형의 꼭지점을 향하도록 180도를 MN개로 분할한 특정한 각도)로 지시함에 따라, 가상코드에 대응하는 실제코드가 저장된 저장위치인 k각형의 꼭지점을 탐색할 수 있다.
또한, 다른 예로, k각형이 제1트랙 상의 제1코드에 대응하는 지점에 접한 상태에서, 가상코드검증수단(20)은 k각형의 중심과 제1트랙 상의 접점을 기준으로, 전체 중심각(즉, 360도)을 MN개로 분할하고, 각각의 각도를 MN개의 제2코드에 매칭한다. 이 때, k각형의 중심과 제1트랙 상의 접점을 이은 선으로부터 특정개수의 단위각도(즉, 360도/MN)를 이동한 선의 방향은 k각형의 특정한 꼭지점이 된다. 따라서, 특정한 각도에 대응하는 제2코드가 수신되면, 가상코드검증수단(20)은 해당 각도 방향에 위치한 꼭지점을 탐색할 수 있다.
또한, 다른 예로, 제2코드의 특정 자리를 각도산출 방향을 결정하는 것으로 사용할 수 있다. 즉, N개(N은 자연수)의 문자를 이용하여 제2코드를 생성하는 경우, 1개의 자리(Digit)로 각도 측정방향을 결정할 수 있다. 예를 들어, 가상코드검증수단(20)은 k각형의 중심과 제1트랙 상의 접점을 기준으로, 전체 중심각(즉, 360도)을 분할하여 각각의 각도에 제2코드를 매칭하는 경우, k각형의 중심과 제1트랙 상의 접점을 이은 선으로부터 좌측방향으로 측정되는 각도인지 우측방향으로 측정되는 각도인지를 1개의 자리(Digit)의 값으로 결정할 수 있다.
일 예로, 저장위치탐색알고리즘은, k각형 상의 각 꼭지점에 각도 측정방향에 따라 다른 2개의 제2코드가 하나의 꼭지점에 배정할 수 있다. 즉, 하나의 꼭지점에 내각으로 도달 시와 외각으로 도달 시에 다른 제2코드와 매칭되고, 다른 실제코드가 연결될 수 있다. 다른 일 예로, 저장위치탐색알고리즘은, N개(N은 자연수)의 문자를 이용하여 제2코드를 생성하는 경우에 N-1개로 전체각도(예를 들어, 중심각을 기준으로 분할하는 경우 360도)의 반에 대해 매칭하고 1개 자리를 이용하여 각 꼭지점에 도달하기 위한 각도 적용방향을 결정할 수 있다.
제2코드를 기반으로 k각형에서 저장위치를 탐색하는 방식은 이에 한정되지 아니하고, 제2코드에 상응하는 k각형 상의 지점과 제1트랙 상의 접점 사이를 특정한 비율로 나누는 지점을 저장위치로 탐색하는 방식 등의 다양한 방식이 적용될 수 있다.
그 후, 가상코드검증수단(20)은 상기 저장위치에 포함된 실제코드를 추출한다(S1030). 즉, 가상코드검증수단(20)은 k각형의 꼭지점에 대응되는 저장위치를 찾아서, 저장위치 내의 실제코드를 추출한다.
또한, 도 8에서와 같이, 다른 일실시예로, 특정한 가상코드생성수단(10)으로부터 특정한 카운트에 신규로 실제코드 생성이 요청되면, 상기 특정한 카운트에 k각형의 특정한 꼭지점에 대응되는 저장위치에 실제코드를 저장하는 단계;를 더 포함한다(S100; 실제코드 저장단계). 상기 특정한 꼭지점은 상기 특정한 카운트에 트랙 상에 접한 것이다. 가상코드검증수단(20)이 가상코드생성함수 및 저장위치탐색알고리즘을 구동한 후 특정한 시점(또는 카운트)가 경과하였을 때, 가상코드검증수단(20)은 특정한 가상코드생성수단(10)으로부터 신규 실제코드 발급(즉, 특정한 그룹에 대한 포함요청)을 수신함에 따라 제1트랙 상에 접한 k각형의 꼭지점에 매칭된 저장위치에 신규생성한 실제코드를 저장한다. 구체적으로, 가상코드검증수단(20)에서 가상코드생성함수 및 저장위치탐색알고리즘이 구동됨에 따라 각 카운트마다 하나의 코드씩 k각형과 트랙이 접하는 위치가 이동하도록 k각형이 구름이동하게 되고, 특정한 카운트에 신규 실제코드 발급이 요청되면 특정한 카운트에 트랙에 접하고 있는 꼭지점이 실제코드가 저장되는 k각형 상의 지점으로 결정된다.
예를 들어, 도 6에서와 같이, 가상코드검증수단은 A시점에 가상코드생성수단A에 대해 실제코드를 발급함에 따라 A시점에 트랙에 접하였던 k각형의 꼭지점에 가상코드생성수단A의 실제코드를 저장한다. 그 후, 카운트가 경과함에 따라 k각형은 트랙을 따라 구름이동을 수행한다. k각형의 회전에 의해 가상코드생성수단 A의 실제코드가 저장된 저장위치가 회전하게 된다.
즉, 트랙과 접하는 k각형의 꼭지점에 실제코드가 저장된 후 n카운트가 경과된 만큼 k각형이 회전하여, 경과된 n카운트 개수만큼 실제코드가 저장된 지점이 회전된다. 따라서, 제2코드가 실제코드가 발급된 카운트(즉, 시점)로부터 경과된 단위카운트 개수를 반영하여 산출되면, 가상코드검증수단(20)은 제2코드를 통해 가상코드가 생성된 시점에 실제코드가 저장된 k각형 상의 지점을 산출할 수 있다.
구체적으로, 제1코드가 가상코드검증수단(20) 내에서 특정한 가상코드생성함수 및 저장위치탐색알고리즘이 구동된 최초시점으로부터 경과된 카운트 개수에 대응하는 코드값이고 제2코드가 특정한 가상코드생성수단(10)에 대해 실제코드를 발급한 후 경과된 카운트 개수에 대응하는 코드값인 경우, 가상코드검증수단(20)은 제1코드를 통해 가상코드생성수단(10)에서 가상코드 생성을 요청한 시점(예를 들어, C시점)을 파악하고, 제2코드를 통해 해당 시점의 k각형 배치상태에서 실제코드가 저장된 k각형 상의 꼭지점을 파악한다. 즉, 제1코드는 k각형의 특정한 꼭지점을 탐색할 수 있는 k각형 배치상태가 되도록 하는 트랙상의 지점을 결정하는데 이용되고, 제2코드는 제1코드에 대응하는 트랙상 지점에 k각형이 배치된 후에 실제코드 저장위치에 매칭된 k각형 상의 꼭지점을 탐색하는데 이용된다. 이를 통해, 가상코드생성수단(10)에서 가상코드를 생성한 후 가상코드검증수단(20)으로 제공되는데 지연시간(delay time)이 있더라도, 가상코드검증수단(20)은 가상코드에 대응하는 실제코드를 정확히 탐색할 수 있다.
또한, 다른 일실시예로, 도 9에서와 같이, 상기 가상코드검증수단(20)이 상기 제1코드 또는 상기 제2코드를 상기 제1함수 또는 제2함수의 역함수를 적용하여 정상적으로 생성된 가상코드에 해당하는지 검증하는 단계(S500);를 더 포함한다. 예를 들어, 제1코드가 가상코드검증수단(20) 내에서 특정한 가상코드생성함수 및 저장위치탐색알고리즘이 구동된 최초시점으로부터 경과된 카운트 개수에 대응하는 코드값이고 제2코드가 특정한 가상코드생성수단(10)에 대해 실제코드를 발급한 후 경과된 카운트 개수에 대응하는 코드값인 경우, 가상코드검증수단(20)은 실제코드를 저장위치에 저장할 때 가상코드생성함수 구동 후 실제코드 발급 시까지 경과된 시간(Ts)를 함께 저장한다. 가상코드검증수단(20)은 가상코드 내 제1코드에 제1함수의 역함수를 적용하여 가상코드생성함수 구동 시로부터 가상코드 생성시점까지의 경과시간(T1)을 산출하고, 가상코드 내 제2코드에 제2함수의 역함수를 적용하여 실제코드 발급 시로부터 가상코드 생성시점까지의 경과시간(T2)를 산출한다. 그 후, 가상코드검증수단(20)은 T1과 T2의 차이가 Ts에 해당하는지 여부를 판단하여 가상코드를 검증한다.
또한, 다른 일실시예로, 도 10에서와 같이, 상기 가상코드생성수단(10)으로부터 수신된 제1수신코드와 상기 가상코드검증수단(20)에서 생성된 제1함수에 따라 생성된 제1생성코드를 비교하는 단계(S600); 상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위 내에 포함되면 상기 제1수신코드를 상기 시작지점으로 하는 제1코드로 설정하는 단계(S700); 및 상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위를 벗어나면 비정상코드로 판단하는 단계(S800);를 더 포함한다. 가상코드생성수단(10) 및 가상코드검증수단(20)은 시간이 흐름에 따라 동일한 단위카운트가 경과된다. 그러나 가상코드생성수단(10)과 가상코드검증수단(20)에 포함된 타이머(Timer) 사이에 오차가 존재하여 동일시점에 경과된 카운트 개수의 상이할 수 있다. 따라서, 타이머에 의한 오차는 해소하면서 정상적인 가상코드가 아닌 비정상코드를 판별하기 위한 과정이 필요하다. 이를 위해, 가상코드검증수단(20)은 내부에서 제1함수에 의해 특정한 카운트에서 생성한 제1코드인 제1생성코드와 가상코드생성수단(10)으로부터 수신된 가상코드 내의 제1코드인 제1수신코드를 비교하고(S600), 제1생성코드와 제1수신코드 사이에 차이나는 카운트 개수가 오차허용범위 내에 해당하면 정상코드로 판단한 후 제1수신코드를 기준으로 실제코드 탐색과정을 수행하고(S700), 제1생성코드와 제1수신코드 사이에 차이나는 카운트 개수가 오차허용범위를 넘어서면 비정상코드로 판단한다(S800).
또한, 다른 일실시예로, 상기 가상코드는 특정한 자릿수의 보안코드를 더 포함하는 경우, 상기 가상코드검증수단이 상기 가상코드생성수단으로부터 수신한 수신보안코드와 상기 가상코드검증수단 내에서 생성된 생성보안코드의 일치여부를 판단하여 가상코드를 검증하는 단계;를 더 포함한다.
이상에서 전술한 본 발명의 일 실시예에 따른 가상코드제공방법은, 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다.
상기 전술한 프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.
상기 저장되는 매체는, 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상기 저장되는 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있지만, 이에 제한되지 않는다. 즉, 상기 프로그램은 상기 컴퓨터가 접속할 수 있는 다양한 서버 상의 다양한 기록매체 또는 사용자의 상기 컴퓨터상의 다양한 기록매체에 저장될 수 있다. 또한, 상기 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장될 수 있다.
상기와 같은 본 발명에 따르면, 아래와 같은 다양한 효과들을 가진다.
첫째, 단위카운트마다 가상코드가 신규로 생성되며, 중복되는 가상코드가 정해진 전 주기 내에 등장하지 않으므로, 가상코드 유출 시에도 실제코드가 유출되지 않는 효과를 제공한다.
둘째, 가상코드생성장치와 실제코드를 이용하는 장치(예를 들어, 금융사서버, IOT디바이스 등)에만 가상코드생성 및 실제코드 탐색을 위한 알고리즘이 추가되면 되므로, 기존에 실제코드를 이용하는 프로세스를 그대로 유지할 수 있다. 예를 들어, 스마트카드 또는 앱카드에 중복생성되지 않는 가상카드번호를 생성하여 제공되는 경우, POS장치와 PG사서버는 그대로 유지되어 가상카드번호를 카드사서버로 전달하고, 카드사버서가 가상카드번호에 상응하는 실제카드번호를 탐색하여 결제를 진행할 수 있다. 이를 통해, 보안성을 높이기 위해 기존프로세스 내에서 변경되어야 하는 부분을 최소화할 수 있고, 사용자는 보안성 향상을 위한 별도 단계를 수행하지 않아도 된다.
셋째, 가상코드생성함수를 구현하는 방식이 매우 다양하여, 그룹별, 적용분야별로 상이한 가상코드생성함수를 적용할 수 있다.
이상, 첨부된 도면을 참조로 하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.

Claims (15)

  1. 가상코드검증수단이 가상코드생성수단으로부터 가상코드를 수신하되, 상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것인, 가상코드 수신단계;
    상기 가상코드검증수단이 상기 가상코드에 포함된 복수의 세부코드를 추출하는 단계; 및
    상기 가상코드검증수단이 복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 실제코드탐색단계;를 포함하고,
    상기 가상코드검증수단과 상기 가상코드생성수단은 동일한 가상코드생성함수를 포함하는 것이며,
    상기 세부코드는,
    저장위치탐색의 시작지점을 설정하는 제1코드; 및
    특정한 탐색방식에 따라, 상기 시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하고,
    상기 제1코드 및 상기 제2코드는 단위카운트마다 변경되며,
    상기 가상코드검증수단은,
    단위카운트마다 생성되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고,
    단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며,
    상기 단위카운트는,
    특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것인, 가상코드제공방법.
  2. 제1항에 있어서,
    상기 가상코드생성함수는,
    M(M은 자연수)개 문자로 N(N은 자연수)자리의 상기 제1코드 또는 상기 제2코드를 생성하는 경우,
    상이한 MN개의 코드를 단위카운트마다 순차적으로 변경되는 제1코드 또는 제2코드로 제공하는 제1함수 또는 제2함수를 포함하는, 가상코드제공방법.
  3. 제2항에 있어서,
    상기 제2코드는,
    상기 가상코드생성수단에 대한 상기 실제코드를 신규생성한 시점으로부터 경과된 단위카운트를 기반으로 생성되는 것인, 가상코드제공방법.
  4. 제1항에 있어서,
    상기 실제코드탐색단계는,
    상기 저장위치탐색알고리즘이 k(k는 MN)개의 코드가 나열된 트랙 상을 k각형이 각 코드가 배치된 지점에 꼭지점이 대응되면서 구름이동하는 것인 경우,
    상기 가상코드생성수단으로부터 수신된 상기 가상코드 내 제1코드에 대응하는 트랙 상의 지점으로 k각형을 구름이동하는 단계;
    상기 제1코드에 대응하는 위치를 탐색시작지점으로 설정하고, 상기 제2코드에 적용된 탐색방식에 따라 제2코드를 기반으로 k각형의 배치상태에서의 저장위치를 탐색하되, 상기 저장위치는 상기 k각형의 각각의 꼭지점에 매칭되는 것인, 저장위치탐색단계; 및
    상기 저장위치에 포함된 실제코드를 추출하는 단계;를 포함하는, 가상코드제공방법.
  5. 제4항에 있어서,
    특정한 가상코드생성수단으로부터 특정한 카운트에 신규로 실제코드 생성이 요청되면, 상기 특정한 카운트에 k각형의 특정한 꼭지점에 대응되는 저장위치에 실제코드를 저장하되, 상기 특정한 꼭지점은 상기 특정한 카운트에 트랙 상에 접한 것인, 실제코드 저장단계;를 더 포함하는, 가상코드제공방법.
  6. 제1항에 있어서,
    상기 가상코드생성함수는,
    복수의 세부코드를 배열하는 규칙에 해당하는 세부코드결합함수를 포함하는 것인, 가상코드제공방법.
  7. 제1항에 있어서,
    상기 가상코드생성함수는 각각의 세부코드를 생성하는 복수의 세부코드생성함수를 포함하고,
    상기 세부코드생성함수는,
    M개의 문자를 오름차순으로 나열하는 특정한 나열규칙이 적용된 것이며,
    상기 문자는 대문자알파벳, 소문자알파벳, 숫자 및 특수문자 중 적어도 하나를 포함하는 것인, 가상코드제공방법.
  8. 제1항에 있어서,
    상기 가상코드는 상기 가상코드생성수단이 포함된 그룹을 판단하는 고정코드를 더 포함하고,
    상기 세부코드추출단계는,
    상기 가상코드 내에서 상기 고정코드를 추출하고,
    상기 고정코드를 기반으로 상기 가상코드생성수단의 그룹을 판단하여, 상기 그룹에 대한 상기 가상코드생성함수 또는 상기 저장위치탐색알고리즘을 결정하는 것을 특징으로 하는, 가상코드제공방법.
  9. 제1항에 있어서,
    상기 가상코드는 특정한 자릿수의 보안코드를 더 포함하고,
    상기 가상코드검증수단이 상기 가상코드생성수단으로부터 수신한 수신보안코드와 상기 가상코드검증수단 내에서 생성된 생성보안코드의 일치여부를 판단하여 가상코드를 검증하는 단계;를 더 포함하는, 가상코드제공방법.
  10. 제9항에 있어서,
    상기 보안코드는 가상코드생성수단의 고유식별값 및 생성시간데이터를 함수값으로 하여 생성되는 것이고,
    상기 가상코드검증수단은 가상코드생성수단에 대한 실제코드 생성 시에 상기 고유식별값을 수신하여 저장하는 것을 특징으로 하는, 가상코드제공방법.
  11. 제2항에 있어서,
    상기 가상코드검증수단이 상기 제1코드 또는 상기 제2코드를 상기 제1함수 또는 상기 제2함수의 역함수를 적용하여 정상적으로 생성된 가상코드에 해당하는지 검증하는 단계;를 더 포함하는, 가상코드제공방법.
  12. 제1항에 있어서,
    상기 가상코드생성수단으로부터 수신된 제1수신코드와 상기 가상코드검증수단에서 생성된 제1함수에 따라 생성된 제1생성코드를 비교하는 단계;
    상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위 내에 포함되면 상기 제1수신코드를 상기 시작지점으로 하는 제1코드로 설정하는 단계; 및
    상기 제1수신코드가 상기 제1생성코드로부터 오차허용범위를 벗어나면 비정상코드로 판단하는 단계;를 더 포함하는, 가상코드제공방법.
  13. 하드웨어인 컴퓨터와 결합되어, 제1항 내지 제12항 중 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된, 가상코드제공프로그램
  14. 하나 이상의 세부코드를 생성하는 세부코드생성부;
    상기 하나 이상의 세부코드를 조합하여 가상코드로 생성하는 가상코드생성부; 및
    상기 가상코드를 가상코드검증장치로 제공하기 위해 외부로 출력하는 가상코드제공부;를 포함하고,
    상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이고,
    상기 세부코드는,
    상기 가상코드검증장치에서 저장위치의 탐색시작지점을 설정하는 제1코드; 및
    특정한 탐색방식에 따라, 가상코드검증장치에서 상기 탐색시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하는 것이고,
    상기 제1코드 및 상기 제2코드는 단위카운트마다 변경되며,
    상기 가상코드검증장치는,
    단위카운트마다 생성되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고,
    단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 탐색시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며,
    상기 단위카운트는,
    특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것인, 가상코드생성장치.
  15. 가상코드를 기반으로 실제코드를 탐색하는 가상코드검증장치에 있어서,
    가상코드생성장치로부터 가상코드를 수신하는 수신부;
    상기 가상코드에 포함된 복수의 세부코드를 추출하는 세부코드추출부; 및
    복수의 세부코드를 기반으로 실제코드의 저장위치를 탐색하는 실제코드 탐색부;를 포함하고,
    상기 가상코드검증장치와 상기 가상코드생성장치는 동일한 가상코드생성함수를 포함하는 것이며,
    상기 가상코드는 복수의 세부코드를 특정한 규칙에 따라 결합하여 생성되는 것이고,
    상기 세부코드는,
    실제코드탐색부에서 저장위치탐색의 탐색시작지점을 설정하는 제1코드; 및
    특정한 탐색방식에 따라, 실제코드탐색부에서 상기 탐색시작지점으로부터 상기 저장위치로의 탐색경로를 설정하는 제2코드;를 포함하는 것이고,
    상기 실제코드탐색부는,
    상기 가상코드생성장치에서 단위카운트마다 변경되어 제공되는 상기 제1코드 및 상기 제2코드에 부합하도록 실제코드의 저장위치를 조절하는 저장위치탐색알고리즘을 포함하고,
    단위카운트마다 정상적으로 생성된 가상코드가 수신되면, 상기 제1코드에 대응하는 상기 탐색시작지점으로부터 상기 제2코드에 상응하는 탐색경로에 따라 이동한 지점이 상기 저장위치로 산출되는 것을 특징으로 하며,
    상기 단위카운트는, 특정한 시간간격으로 설정되어, 상기 시간간격이 경과됨에 따라 변경되는 것인, 가상코드검증장치.
KR1020170100952A 2017-08-09 2017-08-09 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램 KR101950913B1 (ko)

Priority Applications (16)

Application Number Priority Date Filing Date Title
KR1020170100952A KR101950913B1 (ko) 2017-08-09 2017-08-09 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
PCT/KR2017/008631 WO2019031627A1 (ko) 2017-08-09 2017-08-09 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
CN202210569661.0A CN114819951A (zh) 2017-08-09 2017-09-08 虚拟代码提供系统、生成装置、验证装置、提供方法及提供程序
CN201710805548.7A CN109389395B (zh) 2017-08-09 2017-09-08 虚拟代码提供系统、生成装置、验证装置、提供方法
JP2017181114A JP6469796B1 (ja) 2017-08-09 2017-09-21 仮想コード提供システム、仮想コード生成装置、仮想コード検証装置、仮想コード提供方法及び仮想コード提供プログラム
US15/801,905 US10754942B2 (en) 2017-08-09 2017-11-02 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
SG10201709085WA SG10201709085WA (en) 2017-08-09 2017-11-03 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
SG10201806382WA SG10201806382WA (en) 2017-08-09 2017-11-03 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
EP18152461.2A EP3441900B1 (en) 2017-08-09 2018-01-19 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
EP20160583.9A EP3680793B1 (en) 2017-08-09 2018-01-19 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
EP21192289.3A EP3929778B1 (en) 2017-08-09 2018-01-19 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
JP2019005590A JP6612997B2 (ja) 2017-08-09 2019-01-16 仮想コード提供システム、仮想コード生成装置、仮想コード検証装置、仮想コード提供方法及び仮想コード提供プログラム
JP2019199345A JP7236369B2 (ja) 2017-08-09 2019-10-31 仮想コード提供システム、仮想コード生成装置、仮想コード検証装置、仮想コード提供方法及び仮想コード提供プログラム
US16/928,687 US11354401B2 (en) 2017-08-09 2020-07-14 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
US17/738,751 US11609983B2 (en) 2017-08-09 2022-05-06 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device
US18/168,184 US20230185897A1 (en) 2017-08-09 2023-02-13 System, method, and program for providing virtual code, virtual code generating device, and virtual code verifying device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170100952A KR101950913B1 (ko) 2017-08-09 2017-08-09 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020190017818A Division KR102099973B1 (ko) 2019-02-15 2019-02-15 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램

Publications (2)

Publication Number Publication Date
KR20190016698A KR20190016698A (ko) 2019-02-19
KR101950913B1 true KR101950913B1 (ko) 2019-02-21

Family

ID=61131936

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170100952A KR101950913B1 (ko) 2017-08-09 2017-08-09 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램

Country Status (7)

Country Link
US (4) US10754942B2 (ko)
EP (3) EP3929778B1 (ko)
JP (3) JP6469796B1 (ko)
KR (1) KR101950913B1 (ko)
CN (2) CN114819951A (ko)
SG (2) SG10201806382WA (ko)
WO (1) WO2019031627A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019031627A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
KR102005554B1 (ko) * 2018-08-09 2019-07-30 주식회사 센스톤 공카드를 이용한 금융거래제공방법 및 시스템
KR102243532B1 (ko) * 2019-02-08 2021-04-22 주식회사 센스톤 칩 고유값 기반의 가상코드를 이용하여 장치를 식별하는 방법, 프로그램 및 장치
US11138488B2 (en) * 2019-06-26 2021-10-05 Bank Of America Corporation Organic light emitting diode (“OLED”) single-use payment instrument
JP7297107B2 (ja) * 2020-02-24 2023-06-23 センストーン インコーポレイテッド 仮想コードを用いたユーザ設定情報認証方法、プログラム及び装置
KR102479729B1 (ko) * 2020-02-24 2022-12-20 주식회사 센스톤 가상코드를 이용한 사용자 설정 정보 인증 방법, 프로그램 및 장치
KR102479731B1 (ko) * 2020-02-24 2022-12-20 주식회사 센스톤 가상인증코드 기반의 절차 승인 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101499535B1 (ko) 2013-05-29 2015-03-06 주식회사 엘지씨엔에스 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778184A (ja) * 1993-06-24 1995-03-20 Kanebo Ltd データ検索方法
JP2000214944A (ja) 1999-01-26 2000-08-04 Toshiba Corp コンピュ―タシステム及びそのパスワ―ド管理方法
EP1028401A3 (en) * 1999-02-12 2003-06-25 Citibank, N.A. Method and system for performing a bankcard transaction
CN1142653C (zh) 2000-04-28 2004-03-17 杨宏伟 动态口令认证系统及方法
DE60207980T2 (de) * 2002-03-25 2006-08-10 Tds Todos Data System Ab System und Verfahren zur Benutzerauthentifizierung in einem digitalen Kommunikationssystem
JP2006195837A (ja) * 2005-01-14 2006-07-27 Ntt Business Information Service Inc 電子商取引仲介システム及び電子商取引システム
US8762263B2 (en) * 2005-09-06 2014-06-24 Visa U.S.A. Inc. System and method for secured account numbers in proximity devices
JP3996939B2 (ja) 2006-03-30 2007-10-24 株式会社シー・エス・イー オフラインユーザ認証システム、その方法、およびそのプログラム
KR20090102752A (ko) * 2006-11-16 2009-09-30 네트 1 유이피에스 테크놀로지스, 인코포레이티드 비밀 금융거래
US7848980B2 (en) * 2006-12-26 2010-12-07 Visa U.S.A. Inc. Mobile payment system and method using alias
US7841539B2 (en) * 2007-02-15 2010-11-30 Alfred Hewton Smart card with random temporary account number generation
JP5147258B2 (ja) * 2007-02-21 2013-02-20 株式会社野村総合研究所 決済システムおよび決済方法
US8494959B2 (en) 2007-08-17 2013-07-23 Emc Corporation Payment card with dynamic account number
JP4973997B2 (ja) * 2007-08-23 2012-07-11 日本電気株式会社 ソースコード検証処理時間計算装置及び方法
GB2468817A (en) * 2008-01-15 2010-09-22 Visa Usa Inc System and method for data completion including push identifier
JP5224481B2 (ja) 2008-07-10 2013-07-03 独立行政法人産業技術総合研究所 パスワード認証方法
WO2010126509A2 (en) * 2009-04-30 2010-11-04 Donald Michael Cardina Systems and methods for randomized mobile payment
EP2296311A1 (en) 2009-09-10 2011-03-16 Gemalto SA Method for ciphering messages exchanged between two entities
JP5400097B2 (ja) * 2011-06-30 2014-01-29 楽天株式会社 クレジットカード情報処理システム、クレジットカード情報処理方法、注文情報受付装置、クレジットカード決済装置、プログラム及び情報記録媒体
US20140040139A1 (en) * 2011-12-19 2014-02-06 Sequent Software, Inc. System and method for dynamic temporary payment authorization in a portable communication device
CN104603809B (zh) * 2012-04-16 2019-07-05 盐技术股份有限公司 在移动设备上使用虚拟卡促进交易的系统和方法
CN102984127B (zh) 2012-11-05 2015-06-03 武汉大学 一种以用户为中心的移动互联网身份管理及认证方法
KR20140060849A (ko) * 2012-11-12 2014-05-21 주식회사 케이티 카드 결제 시스템 및 방법
KR101316466B1 (ko) 2012-11-20 2013-10-08 신한카드 주식회사 다이나믹 트랙 2 정보를 이용한 모바일 결제 시스템 및 방법
KR101354388B1 (ko) * 2012-12-12 2014-01-23 신한카드 주식회사 일회성 카드번호 생성방법
KR101416542B1 (ko) * 2012-12-24 2014-07-09 주식회사 로웸 패스코드 관리 방법 및 장치
KR20150020927A (ko) * 2013-08-19 2015-02-27 김창훈 이동통신단말기를 이용한 카드 결제 시스템 및 방법
US9652770B1 (en) * 2014-04-30 2017-05-16 Wells Fargo Bank, N.A. Mobile wallet using tokenized card systems and methods
US9979546B2 (en) * 2014-05-30 2018-05-22 Blackberry Limited Controlling access to a resource via a computing device
KR101670543B1 (ko) * 2014-07-08 2016-10-28 이도훈 순차 지문 입력을 이용하는 pos 시스템 및 그 구동 방법
US20160027000A1 (en) * 2014-07-23 2016-01-28 Bank Of America Corporation Mobile one-time bank card number generator for digital wallet
KR101621254B1 (ko) * 2014-08-27 2016-05-31 유한회사 실릭스 오티피 기반의 가상 번호 결제 방법, 컴퓨터 판독가능한 기록매체 및 시스템
KR20160048600A (ko) * 2014-10-25 2016-05-04 홍승은 모바일 교차 인증 시스템 및 방법
KR102334894B1 (ko) 2014-12-24 2021-12-03 십일번가 주식회사 웹 기반 인증 결제 장치, 웹 기반 인증 결제 방법, 웹 기반 인증 결제 시스템 및 컴퓨터 프로그램이 기록된 기록매체
US11042850B2 (en) * 2014-12-31 2021-06-22 Fiserv, Inc. Card account identifiers associated with conditions for temporary use
DE102015202935A1 (de) * 2015-02-18 2016-08-18 Robert Bosch Gmbh Verfahren zum Manipulationsschutz
WO2017111271A1 (en) * 2015-12-23 2017-06-29 Lg Electronics Inc. Mobile device and operating method hereof
CN105933119B (zh) 2015-12-24 2019-01-29 中国银联股份有限公司 一种认证方法及设备
KR101618692B1 (ko) 2016-01-06 2016-05-09 주식회사 센스톤 보안성이 강화된 사용자 인증방법
WO2019031627A1 (ko) * 2017-08-09 2019-02-14 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101499535B1 (ko) 2013-05-29 2015-03-06 주식회사 엘지씨엔에스 컴퓨터 실행 가능한 하이브리드 어플리케이션 수행 방법, 이를 수행하는 컴퓨터 실행 장치 및 이를 저장한 기록 매체

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
'국내 기술로 신용카드 부정사용 무력화...16자리 카드번호 실시간 변경해 원천 차단', 전자신문(2018.03.13. 게재)
서승현. '통합인증센터를 활용한 일회용 가상카드번호 생성 및 결제서비스 프로토콜'. 정보보호학회논문지. 한국정보보호학회. 2010년, 제20권 제3호, pp.9-21

Also Published As

Publication number Publication date
CN109389395B (zh) 2022-06-21
WO2019031627A1 (ko) 2019-02-14
EP3929778B1 (en) 2023-03-22
SG10201806382WA (en) 2019-03-28
EP3441900A1 (en) 2019-02-13
CN114819951A (zh) 2022-07-29
SG10201709085WA (en) 2019-03-28
JP2019082712A (ja) 2019-05-30
JP6612997B2 (ja) 2019-11-27
CN109389395A (zh) 2019-02-26
US20190050556A1 (en) 2019-02-14
JP2020035473A (ja) 2020-03-05
US11354401B2 (en) 2022-06-07
JP7236369B2 (ja) 2023-03-09
EP3441900B1 (en) 2020-07-29
US11609983B2 (en) 2023-03-21
EP3680793B1 (en) 2021-11-17
EP3680793A1 (en) 2020-07-15
US10754942B2 (en) 2020-08-25
JP2019032501A (ja) 2019-02-28
EP3929778A1 (en) 2021-12-29
US20230185897A1 (en) 2023-06-15
US20200342090A1 (en) 2020-10-29
JP6469796B1 (ja) 2019-02-13
US20220261474A1 (en) 2022-08-18
KR20190016698A (ko) 2019-02-19

Similar Documents

Publication Publication Date Title
KR101950913B1 (ko) 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
KR102143425B1 (ko) 구체 기반의 가상코드 검증 방법 및 시스템
KR101978812B1 (ko) 가상카드번호 기반의 금융거래제공시스템, 가상카드번호생성장치, 가상카드번호검증장치, 가상카드번호 기반의 금융거래제공방법 및 가상카드번호 기반의 금융거래제공프로그램
KR20190018463A (ko) 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
KR20190089818A (ko) 가상토큰 기반의 결제제공시스템, 가상토큰생성장치, 가상토큰검증서버, 가상토큰 기반의 결제제공방법 및 가상토큰 기반의 결제제공프로그램
KR102329227B1 (ko) 가상코드를 기반으로 한 실제코드 검색방법 및 프로그램
KR102177461B1 (ko) 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant