KR20190004328A - 민감한 데이터의 보안 수집 - Google Patents

민감한 데이터의 보안 수집 Download PDF

Info

Publication number
KR20190004328A
KR20190004328A KR1020187035019A KR20187035019A KR20190004328A KR 20190004328 A KR20190004328 A KR 20190004328A KR 1020187035019 A KR1020187035019 A KR 1020187035019A KR 20187035019 A KR20187035019 A KR 20187035019A KR 20190004328 A KR20190004328 A KR 20190004328A
Authority
KR
South Korea
Prior art keywords
identifier
current value
information
data string
bit string
Prior art date
Application number
KR1020187035019A
Other languages
English (en)
Other versions
KR102180658B1 (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 차터 커뮤니케이션즈 오퍼레이팅, 엘엘씨
Publication of KR20190004328A publication Critical patent/KR20190004328A/ko
Application granted granted Critical
Publication of KR102180658B1 publication Critical patent/KR102180658B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6263Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0489Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/18Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

민감한 정보를 안전하게 수집하는 방법에 있어서, 사용자 인터페이스를 통해 이루어지는 제1 키 엔트리가 검출된다. 또한, 정보는 원격 서버로부터 보안 통신 채널을 통해 수신되고, 여기서 정보는 적어도 제1 계층 식별자의 현재 값을 포함한다. 제1 계층 식별자의 현재 값을 이용하여, 제1 키 엔트리에 대응되는 비트 스트링이 결정된다. 비트 스트링을 이용하여, 데이터 스트링의 적어도 일 부분이 생성된다. 데이터 스트링은 로컬 메모리에 저장되거나 네트워크를 통해 다른 디바이스로 전송된다.

Description

민감한 데이터의 보안 수집
관련 어플리케이션에 대한 상호-참조
본 출원은 2016년 5월 27일자로 출원된 "민감한 데이터의 안전한 수집"이라는 명칭의 미국 가출원 제62/342,490호 및 2016년 5월 27일자로 출원된 "민감한 데이터의 안전한 전송"이라는 명칭의 미국 가출원 제62/342,491호의 이익을 주장하며, 그 개시 내용의 전체가 본원에 참고로 인용되어있다.
기술 분야
본 개시는 데이터 보안에 관한 것이다. 특히, 본 개시는 민감한(예를 들어, 기밀) 또는 잠재적으로 민감한 데이터를 안전하게 수집, 전송 및/또는 저장하기 위한 시스템 및 방법에 관한 것이다.
현재 통신되거나/또는 저장된 데이터에 대한 무단 액세스를 방지하기 위해 다양한 인코딩 기술들이 고안되었다. 그러나, 이러한 기술들은 다양한 단점들과 관련되어 있다. 예를 들어, 이러한 기술은 일반적으로 엔드-투-엔드(end-to-end)와 같은 방식에서 민감한 데이터를 보호하거나 난독화하지 않는다(예를 들어, 정보가 키패드를 사용하여 개인에 의해 수동으로 입력되는 순간부터). 또한, 코드가 하나의 전송과 관련하여 "크랙"되면, 코드는 장래의 전송 및/또는 다른 당사자들 또는 디바이스들 간의 전송과 관련하여 손상될 수도 있는 일반적인 접근법을 사용한다. 또한 일부는 다른 엔티티들(예를 들어, 다른 회사들, 사람들, 디바이스들 등)에 보안 레벨을 맞춤화하는 유연성을 제공하지 않거나, 또는 정확하거나 집중적인 방법으로 보안 위협(예를 들어, 데이터 유출)에 대응할 수 있는 유연성을 제공하지 못한다.
일 실시 예에서, 복수의 키들이 구비된 사용자 인터페이스, 통신 인터페이스, 메모리, 및 하나 이상의 프로세서들을 갖는 전자 디바이스에서 구현되는 방법은 상기 하나 이상의 프로세서에 의해 사용자 인터페이스를 통해 이루어진 제1 키 엔트리를 검출하는 단계를 포함한다. 본 방법은 또한, 통신 인터페이스 및 보안 통신 채널을 통해 하나 이상의 프로세서들에 의해 원격 서버로부터 제1 정보를 수신하는 단계를 포함한다. 제1 정보는 적어도 제1 계층 식별자의 제1 현재 값을 포함한다. 본 방법은 또한 하나 이상의 프로세서들에 의해 제1 계층 식별자의 제1 현재 값을 이용하여 제1 키 엔트리에 대응되는 제1 비트 스트링을 결정하는 단계; 하나 이상의 프로세서들에 의해 제1 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계와, 상기 하나 이상의 프로세서에 의해, 데이터 스트링이 (i) 메모리에 저장, 및 (ii) 네트워크를 통해 다른 디바이스로 전송되는 것 중 하나 또는 모두를 야기하는 단계를 포함한다.
다른 실시 예에서, 전자 디바이스는 복수의 키들을 포함하는 사용자 인터페이스를 포함한다. 전자 디바이스는 또한 통신 인터페이스, 메모리, 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 사용자 인터페이스를 통해 이루어진 제1 키 엔트리를 검출하고, 통신 인터페이스 및 보안 통신 채널을 통해 원격 서버로부터 제1 정보를 수신하도록 구성된다. 제1 정보는 제1 계층 식별자의 적어도 제1 현재 값을 포함한다. 하나 이상의 프로세서들은 또한 제1 계층 식별자의 제1 현재 값을 이용하여 제1 키 엔트리에 대응되는 제1 비트 스트링을 결정하고, 제1 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하고, 데이터 스트링이 (i) 메모리에 저장, 및 (ii) 네트워크를 통해 다른 장치로 전송되는 것 중 하나 또는 모두를 야기하도록 구성된다.
도 1은 일 실시 예에 따라, 본 개시의 양태들이 구현될 수 있는 예시적인 시스템의 블록도이다.
도 2는 일 실시 예에 따라, 예시적인 소스 디바이스의 블록도이다.
도 3은 일 실시 예 및 시나리오에 따라, 키 엔트리 정보(key entry information)를 난독화하는 데 사용될 수 있는 예시적인 매핑(mapping)을 나타낸다.
도 4는 일 실시 예 및 시나리오에 따라, 키 엔트리 정보를 난독화하는 데 사용될 수있는 맵핑 계층들의 예시적인 세트를 나타낸다.
도 5는 일 실시 예에 따라, 데이터 스트링(data string)이 인코딩될 수 있는 데이터 스트링에 대한 예시적인 통신 경로를 도시한다.
도 6은 일 실시 예 및 시나리오에 따라, 인증 코드를 선택하기 위해 사용자에게 제공될 수 있는 예시적인 사용자 인터페이스를 나타낸다.
도 7은 일 실시 예 및 시나리오에 따라, 소매 신용 카드 또는 직불 카드 거래를 수행할 때 본 개시의 양태들이 구현될 수 있는 예시적인 환경을 나타낸다.
도 8은 일 실시 예에 따라, 민감한 정보를 안전하게 수집하기 위한 예시적인 방법의 흐름도이다.
도 9는 일 실시 예에 따라, 복수의 디바이스들을 포함하는 통신 경로를 따라 데이터 스트링의 안전한 통신을 제공하기 위한 예시적인 방법 예 방법의 흐름도이다.
도 10은 일 실시 예에 따라, 안전하게 전송된 데이터 스트링을 디코딩하는 예시적인 방법의 흐름도이다.
본 개시의 다양한 양태들은 거래 과정에서 민감하거나 잠재적으로 민감한 데이터(예를 들어, 신용 카드 또는 다른 금융 정보, 건강 정보, 패스워드, 사회 보장 번호 등)를 난독화하기 위한 시스템 및 방법을 제공한다. 본 명세서에서 사용된 "거래(transaction)"는 정보를 입력, 수집 및/또는 통신하는 것을 포함하는 모든 상호 작용 또는 작동을 의미할 수 있다. 따라서, 예를 들면, 하나의 거래는 소매업의 직원이 키패드(예를 들어, 스마트 폰 또는 태블릿 터치 스크린, 또는 하드웨어 키패드 등) 상에 고객의 신용 카드 번호를 입력하고 신용 카드 번호에 대응하는 인코딩된 정보를 지불 제공자에게 전송하는 것을 포함할 수 있다(또는 인코딩된 정보를 로컬 데이터베이스에 저장하는 것 등). 다른 예로서, 거래는 환자가 키보드를 통해 의료 조사 또는 설문지에 대한 응답을 입력하고, 환자의 답변에 해당하는 인코딩된 정보를 원격 서버에 전송하는 것을 포함할 수 있다. 또 다른 예로서, 거래는 회사의 관리직원이 기밀 회계 기록을 회사 내의 다른 직원 또는 부서에 보내는 것과 관련될 수 있다. 물론, 민감한 또는 잠재적으로 민감한 정보를 포함하는 수많은 다른 유형의 거래들도 가능하다.
본 개시의 일부 양태들은 다양한 엔티티들을 조정 몸체(coordinating body)로 사전-등록(pre-registering)것을 요구할 수 다. 본 명세서에 사용된 바와 같이, "엔티티(entity)"는 회사 또는 기관(예를 들어, 소매 업체, 병원, 은행, 신용 카드 회사, 정부 기관 등), 부서, 사람(예를 들어, 특정 고객, 특정 직원 또는 에이전트 등), 특정 신용 카드 또는 직불 카드, 소프트웨어 어플리케이션, 라우터, 네트워크 스위치, 방화벽 등과 같은 거래에 직접 또는 미약하게 관련될 수 있는 물리적 또는 가상의 것일 수 있다. 특정 엔티티가 등록되면, 중앙 서버는 레지스트리에서 해당 엔티티와 연관된 식별자, 또는 다수의 식별자들을 유지 관리할 수 있다. 이하에서 더 상세히 설명되는 바와 같이, 각 식별자의 값은 특정 인코딩/디코딩 방식에 대응될 수 있다. 예를 들어, 하나의 인코딩 방식은 데이터 스트링을 32 비트 블록으로 파싱(parsing)하고, 미리 결정된 매핑(mapping)을 사용하여 각 32-비트 블록을 새로운 32-비트 블록으로 인코딩함으로써 데이터 스트링을 인코딩할 수 있다. 다른 인코딩 방식은 데이터 스트링을 8 비트의 블록으로 파싱하고, 미리 결정된 매핑을 사용하여 각각의 8-비트 블럭을 새로운 16-비트 블럭으로 인코딩함으로써 데이터 스트링을 인코딩할 수 있다. 각각의 인코딩 방식은 비트 시퀀스들의 전체 미리 결정된 매핑을 수행할 수 있거나, 또는 (예를 들어, 인코딩된 비트 시퀀스를 더 랜덤화하기 위해 현재 시간을 사용함으로써) 더 복잡할 수 있다. 권한이 없는 당사자가 식별자를 발견할 위험을 줄이기 위해, 중앙 서버는 레지스트리에 저장된 식별자의 값을 수시로 변경할 수 있다(주기적으로, 및/또는 요청 시).
본 개시의 일부 양태들은 전자 디바이스의 물리적 또는 가상 키패드 인터페이스를 사용하여 데이터가 수동으로 입력되는 순간 민감한 데이터가 난독화될 수 있게 한다. 일반적으로, 이것은 각 키 엔트리를 가상 공간 내의 좌표(coordinate)에 매핑함으로써 달성될 수 있다. 가상 공간은 키 엔트리들의 알려진 표현들(예를 들어, ASCII 심볼들)을, 다른 것보다, 보다 쉽게 좌표하고, 그 후 저장되고, 더 처리되어 전송될 수 있다. 가상 공간 좌표에 각각의 키 엔트리들을 맵핑하는 것은, 임의의 주어진 시간에, 어떤 식으로든 거래와 관련된(예를 들어, 회사, 에이전트/직원, 키패드 디바이스 등) 등록된 엔티티의 식별자의 현재 값에 의해 지시될 수 있다. 일부 실시 예들 및 시나리오들에서, 다수의 매핑 계층들에 대응하는 다수의 식별자들(예를 들어, 2, 5, 10, 100 등)은 사용자의 키 엔트리 정보를 더 난독화시키기 위해 사용될 수 있다. 식별자는 다수의 엔티티들의 식별자들(예를 들어, 회사에 대한 식별자, 정보를 입력하는 에이전트에 대한 식별자 등) 및/또는 단일 엔티티의 다수의 식별자들을 포함할 수 있다. 전자 디바이스는, 예를 들어, 보안 통신 채널(예를 들어, 최신 기술의 암호화 및 인증 기술을 사용하여)을 통해 필요에 따라 중앙 서버로부터 적절한 식별자(들)를 요청할 수 있다. 전술한 바와 같이, 중앙 서버는 원하는 기준으로 각각의 식별자를 변경/업데이트할 수 있다. 예를 들어, 여러 식별자들이 사용되는 경우, 이러한 식별자들 중 하나 이상은 대응하는 매핑(들)이 하나의 키 엔트리에서 다음 키 엔트리로 변하는 충분한 빈도로 변경될 수 있다.
보다 일반적으로, 거래 동안 통신되는 데이터 스트링을 인코딩하기 위해 다수의 인코더 스테이지들이 순차적으로 적용될 수 있다. 키 엔트리 정보의 난독화에 관한 상기 설명에서, 예를 들어, 각각의 "계층"(즉, 가상 좌표들의 다른 세트로의 각각의 맵핑)은 특정 인코딩 스테이지에 대응될 수 있다. 그러나, 일부 실시 예들 및 시나리오들에서, 적어도 몇몇 인코딩 스테이지들은 통신 경로 내의 다른 디바이스들에 의해 적용된다. 예를 들어, 네 개의 인코딩 스테이지들의 제1 세트는 정보를 입력하기 위해 초기에 사용된 전자 디바이스에 의해 순차적으로 적용될 수 있으며, 다섯 번째 인코딩 스테이지는 통신 경로의 라우터에 의해 적용될 수 있고(예를 들어, 라우터에 대한 식별자를 사용하여), 여섯 번째 인코딩 스테이지는 통신 경로의 라우터의 네트워크 서버 다운스트림에 의해 적용될 수 있다(예를 들어, 서버에 의해 구현되는 방화벽에 대한 식별자를 사용하여).
시퀀스의 각 인코딩 스테이지는 특정 출력 블록 크기에 대응될 수 있다. 예를 들어, 출력 블록 크기가 16인 인코딩 스테이지는 입력 데이터 스트링을 각각 16 비트의 입력 블록들로 파싱한 다음, 이들 입력 블록들을 인코딩하여 16-비트 출력 블록들을 생성할 수 있다. 일반적으로, 상이한 인코딩 스테이지들은 상이한 출력 블록 크기들을 가질 수 있고, 입력 블록 크기는 출력 블록 크기와 일치할 필요는 없다(그러나 같을 수도 있음). 그러나, 잠재적인 충돌(즉, 두 개의 서로 다른 비트 시퀀스들이 동일한 출력 비트 시퀀스에 매핑되는 시나리오)을 피하기 위해 출력 블록 크기는 입력 블록 크기만큼 커야 한다.
데이터 스트링을 디코딩하기 위해 (예를 들어, 통신을 수신하는 엔티티의 전자 디바이스에서), 각각의 인코딩 스테이지의 역 동작이 적용된다. 더욱이, 데이터 스트링을 적절하게 디코딩하기 위해, 디코딩 스테이지들은 대응하는 인코딩 스테이지에 대해 역순으로 적용된다. 예를 들면, 최종 인코딩 스테이지의 역 동작이 첫 번째 디코딩 스테이지로서 사용되고, 첫 번째 인코딩 스테이지의 역 동작이 최종 디코딩 스테이지로서 사용된다. 가상 공간으로 키 엔트리들을 매핑하는 것에 포함된 인코딩 프로세스가 초기 단계로서 조정되면, 인코딩된 데이터 스트링의 수신기는 원래의 입력/유형화된 데이터에 도달하기 위해 최종 디코딩 스테이지에서 그 인코딩 프로세스를 반대로 할 수 있다.
적절한 디코딩 동작들을 결정하기 위해, 인코딩된 데이터 스트링을 수신하는 전자 디바이스는 보안 통신 채널(예를 들어, 최첨단 암호화 및 인증 기술을 사용하여)을 통해 중앙 서버로부터 적절한 식별자 값들을 요청하거나 그렇지 않으면 획득할 수 있다. 중앙 서버는 또한 상이한 디코딩 동작들이 일어날 시퀀스에 관한 수신 디바이스 정보를 보낼 수 있다. 다른 실시 예들에서, 수신 디바이스는 시퀀스를 선험적으로 알고, 중앙 서버로부터 현재 식별자 값들만을 획득한다.
본 개시의 이들 및 다른 양태들는 다음의 설명으로부터 명백해질 것이다.
I. 예시적인 시스템
본 발명의 다양한 양태들을 구현할 수 있는 예시적인 구성 요소들이 먼저 도 1 및 도 2와 관련하여 설명될 것이다. 먼저 도 1을 참조하면, 예시적인 시스템(100)은 민감한 또는 잠재적으로 민감한 정보가 네트워크(106)를 통해 소스 디바이스(102)로부터 목적지 디바이스(104)로 송신되는 시나리오에 대응된다. 일반적으로, 소스 디바이스(102)는 데이터 입력을 가능하게 하고 데이터를 송신할 수 있는 임의의 적합한 유형의 전자 디바이스일 수 있으며(예를 들어, 전용 키패드 디바이스, 스마트 폰, 태블릿, 랩톱 컴퓨터, 데스크톱 컴퓨터 등), 목적지 디바이스(104)는 데이터를 수신할 수 있고 데이터 저장, 처리 및/또는 포워딩/전송을 가능하게 하는 임의의 적합한 유형의 전자 디바이스일 수 있으며(예를 들어, 서버), 그리고 네트워크(106)는 하나 이상의 근거리 통신망(LAN)들, 하나 이상의 광역 통신망(WAN)들 등과 같은 임의의 적합한 통신 네트워크 또는 통신 네트워크들의 조합일 수 있다. 환경(100)은 또한 다양한 엔티티들의 레지스트리(112)를 유지하는 중앙 서버(110)를 포함한다. 레지스트리(112)는 예를 들어 중앙 서버(110)의 하나 이상의 영구 메모리들에 저장된 데이터베이스를 포함할 수 있다.
도 2는 일 실시 예에 따라, 도 1의 소스 디바이스(102)의 보다 상세하지만 여전히 단순화된 블록도이다. 소스 디바이스(102)는 전용 디바이스(예를 들어, 전용 태블릿 또는 하드웨어 키패드 디바이스) 또는 범용 디바이스(예를 들어, 랩탑, 데스크탑, 스마트 폰, 태블릿 등) 일 수 있다. 도 2에 도시된 바와 같이, 소스 디바이스(102)는 프로세서(120), 메모리(122), 사용자 인터페이스(124) 및 통신 인터페이스(126)를 포함한다. 도 2는 102로 표시된 단일 박스 내의 이들 구성 요소들 각각을 도시하고 있지만, 구성 요소들은 다수의 하우징들 및/또는 디바이스들로 분산될 수 있다.
프로세서(120)는 단일 프로세서이거나 다중 프로세서들을 포함할 수 있으며(예를 들어, CPU 및 GPU), 후술하는 소스 디바이스(102)의 다양한 동작들을 수행하기 위해 명령(예를 들어, 메모리(122)에 저장된)을 실행할 수 있다. 예를 들어, 프로세서(120)는 인코딩 모듈(128)을 실행하여 이하에서 설명되는 다양한 인코딩 동작들을 수행할 수 있다. 메모리(122)는 판독-전용 메모리(ROM)와 같은 하나 이상의 영구 메모리들, 및 랜덤 액세스 메모리(RAM)와 같은 하나 이상의 비-영구 메모리들을 포함할 수 있다.
사용자 인터페이스(124)는 물리적 또는 가상 키패드(130)를 제공한다. 예를 들어, 사용자 인터페이스(124)는 키 엔트리들을 감지하는데 필요한 임의의 하부 하드웨어 및/또는 펌웨어(예를 들어, 접촉, 스위치 등)뿐만 아니라 다수의 물리적 키들을 갖는 하드웨어 키패드를 포함할 수 있다. 대안적으로, 사용자 인터페이스(124)는 임의의 지원 하드웨어 및/또는 펌웨어(예를 들어, 터치 센서 집적 회로)와 함께 터치 스크린 디스플레이를 포함할 수 있고, 키패드(130)는 터치 스크린 상에 표시된 가상 키패드일 수 있다. 키들은 숫자, 문자, 특수 문자(예를 들어, 물결, 마침표, 쉼표, 앰퍼샌드 등) 및/또는 기타 기호들에 대응될 수 있다. 키패드(130)는 예를 들어 QWERTY 키보드와 유사한 키들을 포함할 수 있다.
일부 실시 예들에서, 사용자 인터페이스(124)는 또한 디스플레이 스크린 및/또는 하나 이상의 다른 출력 구성 요소들(예를 들어, 오디오)을 포함한다. 출력 구성 요소(들)는 키패드(130)와 통합될 수도 있고 통합되지 않을 수도 있다. 예를 들어, 사용자 인터페이스(124)가 터치 스크린을 포함한다면, 예를 들어, 터치 스크린은 키패드(130) 및 사용자에게 출력될 임의의 정보를 표시할 수 있다(예를 들어, 키패드(130)를 사용하여 정보를 입력하기 위한 명령, 메시지가 성공적으로 전송되었다는 확인 등). 일반적으로, 프로세서(120)는 키패드(130)를 통해 생성된 사용자 입력을 검출하고 이에 반응하여, 사용자 인터페이스(124)를 통해 사용자에게 출력되는 정보(만약 있다면)를 생성할 수 있다.
통신 인터페이스(126)는 하나 이상의 통신 프로토콜을 지원하는 하드웨어 및/또는 펌웨어를 포함한다(예를 들어, 이더넷 포트, 무선 근거리 네트워크 카드 및/또는 하나 이상의 다른 통신 포트들). 일부 실시 예들에서, 통신 인터페이스(126)는 덜 안전한 프로토콜들뿐만 아니라 매우 안전한 통신 프로토콜들(예를 들어, 핸드 쉐이킹, 인증, 암호화/해독 등)을 지원하도록 특별히 구성된 하나 이상의 인터페이스를 포함한다. 예를 들어, 통신 인터페이스(126)는 전용 보안 채널을 통해 중앙 서버(110)와 통신하기 위한 제1 포트, 및 범용의 덜 안전한 채널 상에서 목적지 디바이스(104)와 통신하기 위한 제2 포트를 포함할 수 있다. 대안으로, 단일 포트가 두 유형들의 통신 모두에 사용될 수 있지만, 후자보다 전자의 경우 더 안전한 암호화 및/또는 인증 프로토콜을 사용한다.
시스템(100) 및 소스 디바이스(102)의 동작은, 다양한 실시 예들에 따라, 이하의 섹션들에서보다 상세히 논의될 것이다. 이하의 설명은 때때로 시스템(100) 및 소스 디바이스(102)의 구성 요소들을 언급하지만, 본 명세서에서 설명된 본 발명의 다양한 양태들은 대신 다른 유형의 시스템, 디바이스 및/또는 구성 요소들로 구현될 수 있음을 이해해야 한다.
II. 등록
일부 실시 예들에서, 다수의 상이한 엔티티들이 데이터 보안 서비스에 사전-등록될 수 있다. 위에서 언급된 것처럼, "엔티티"는 거래에 직접적으로 또는 간접적으로 관련될 수 있는 물리적 또는 가상의 것일 수 있다(예를 들어, 회사, 기관, 부서 또는 기타 조직, 사람, 신용 카드 또는 직불 카드, 소프트웨어 어플리케이션, 라우터, 네트워크 스위치 또는 기타 네트워크 디바이스, 방화벽 등). 데이터 보안 서비스는 특정 회사에 의해 제공될 수 있으며, 특정 엔티티를 등록하기 위한 프로세스는 그 엔티티가 존재한다고 주장된 것을 검증 또는 인증하고 엔티티에 식별자를 할당하는 것을 포함할 수 있다. 식별자는, 예를 들어, 도 1의 중앙 서버(110)의 레지스트리(112)에 저장될 수 있다.
일부 실시 예들 및 시나리오들에서, 식별자들은 데이터 보안 서비스에 의해 전적으로 할당된다(예를 들어, 중앙 서버(110)에 의해). 대안적으로, 매우 높은 빈도로 변경되지 않는 일부 식별자들의 경우(예를 들어, 신원 도용 혐의로 1 년에 한 번), 상기 식별자들은 등록 프로세스를 거치는 사람에 의해 수동으로 선택될 수 있다. 예를 들어, 사람은 자신에 대한 또는 그나 그녀가 소유한 신용 또는 직불 카드에 대한 식별자(또는 식별자들의 세트)를 선택할 수 있다. 일부 실시 예들에서, 사람은 대신에 이미지의 시퀀스를 선택할 수 있고, 중앙 서버(110)는 이미지 시퀀스를 식별자(들)와 연관시킬 수 있다. 이미지 시퀀스는 전체 식별자(들)보다 기억하기 쉽기 때문에 인증 목적으로 유용할 수 있다(아래에서 자세히 설명).
보안은 레지스트리에 저장된 식별자들의 값들을 자동으로(및/또는 요청에 따라) 수시로 변경함으로써 증가될 수 있다. 이러한 방식으로, 보안 레벨은 보호되는 데이터의 민감도 또는 위험 수준에 맞게 조정될 수 있다. 예를 들어, 금융 기관 또는 "높은 보안" 네트워크 스위치와 연관된 식별자는 2 분마다(또는 인코딩 디바이스가 식별자를 요청할 때마다) 변경될 수있는 반면, 특정 개인 또는 범용 라우터와 연관된 식별자는 월별 또는 연간 기준으로(또는 요청 등에 의해서만) 변경될 수 있다. 식별자는 다른 트리거들(예를 들어, 보안 위반)를 기반으로 업데이트될 수도 있으므로, 보안 위협의 성격에 따라 보안 위협에 대한 대응을 협소하게 조정할 수 있다. 예를 들어, 중앙 서버는 그 소매업 자와의 사기 거래가 특정 고객의 이름에서 발생하면 온라인 소매업자의 그 고객과 관련된 식별자를 업데이트할 수 있고 소매업자가 그 기밀 기록의 광범위한 위반을 의심하는 경우 소매업자 자체와 관련된 식별자를 업데이트할 수 있다. 식별자들이 수동으로 변경되는 실시 예들 및 시나리오들에서, 그들은, 예를 들어, 보안 관리 인터페이스(예를 들어, 중앙 서버(110)에 연결된 컴퓨터 단말기에 의해 제공되거나, 보안 통신 채널을 통해 다른 사람들이 이용 가능하게 하는)를 사용하여 변경 될 수 있다.
일부 실시 예들 및 시나리오들에서, 식별자들이 변경되는 빈도 및/또는 각각의 변경과 관련된 분산 및/또는 랜덤화의 양은 대응하는 엔티티(예를 들어, 특정 회사)와 연관된 현재 보안 레벨에 의해 지시될 수 있다. 예를 들어, 엔티티의 식별자는 "노란색" 보안 레벨이 엔티티와 연관된 경우 매월, 보안 레벨이 "주황색"으로 변경된 경우(예를 들어, 증가된 해킹 활동의 일반적인 보고에 응답하여) 매일, 그리고 보안 레벨이 "빨간색"으로 변경되면(예를 들어, 해당 엔티티와 관련된 특정 보안 침해에 대한 확인된 보고에 응답하여) 매 5 분마다 업데이트될 수 있다.
III. 안전한 데이터 엔트리
전술한 바와 같이, 본 발명의 일 양태에서, 키패드 상에 입력된 정보는-그리고 그러한 정보의 표준 표현(ASCII 코드 등)에 대응되는 데이터는-수집, 저장 또는 전송되지 않는다. 예를 들어, 도 1 및 도 2를 참조하면, 사용자는 키패드(130)에 일련의 키 엔트리들을 함으로써 번호 및/또는 문자를 입력할 수 있으며, 소스 디바이스(102)는 키 엔트리들을 직접 인코딩하여 임의의 저장 및/또는 전송된 정보는 적절한 시간-의존 디코딩 동작 및 이들의 적절한 시퀀스에 대한 지식이 없이는 원래의 키 엔트리들로 추적되거나 맵핑될 수 없다.
도 3은, 일 실시 예 및 시나리오에 따라, 소스 디바이스(102)가 키 엔트리 정보를 난독 화하는데 사용할 수 있는 예시적인 맵핑(140)을 도시한다. 맵핑(140)에서, 키들(142)로 만들어진 사용자 엔트리들은 가상 공간 좌표들(144)에 맵핑된다. 키들(142)은 예를 들어도 2의 키패드(130)의 키들일 수 있다. 맵핑(140)은 특정 식별자의 특정 값에 대응된다. 식별자는 소스 디바이스(102), 키패드(130) 상에 정보를 입력하는 에이전트 또는 다른 사용자, 소스 디바이스(102)와 연관된 회사, 또는 임의의 다른 적합한 엔티티와 연관된 것일 수 있고(레지스트리(112)에서), 식별자 값은 중앙 서버(110)에 의해 소스 디바이스(102)에 제공될 수 있다. 식별자 값을 수신하면(예를 들어, 통신 인터페이스(126) 및 보안 통신 채널을 통해), 소스 디바이스(102)의 프로세서(120)는 인코딩 모듈(128)을 이용하여 매핑(140)을 결정할 수 있다.
도 3에 도시된 바와 같이, 예시적인 맵핑(140)에서, "0"의 사용자 입력(예컨대, 누름, 접촉 등)은 좌표 [2,0]에 맵핑되고, "1"의 사용자 입력은 좌표 [2,3], "Enter" 키의 사용자 입력은 좌표 [2,1]에 매핑된다. 특정 키 엔트리를 검출하면, 인코딩 모듈(128)은 맵핑(140)으로부터 결과되는 대응하는 좌표들을 나타내는 비트 스트링을 생성할 수 있다. 사용자가 "421" 다음에 "Enter"키를 입력하고, 4 비트가 각각의 좌표 쌍을 나타내는데 사용되면, 인코딩 모듈(128)은 가상 공간 좌표 시퀀스 [0,1], [0,3], [2,0], [2,1]를 나타내기 위해 비트 스트링 0001 0011 1000 1001을 생성할 수 있다. 그러나, 전술한 바와 같이, 중앙 서버(110)는 몇몇 시나리오에서 매우 높은 빈도로 식별자를 변경할 수 있다. 예를 들어, 소스 디바이스(102)는 각각의 키 엔트리 직후에 중앙 서버(110)로부터 식별자를 요청할 수 있고, 맵핑(140)은 상기 예시적인 시퀀스에서 각 키 엔트리에 대한 새로운 맵핑으로 변경될 수 있다. 따라서, 예를 들어, "4"의 엔트리가 맵핑(140) 하에서 [0,1]로 맵핑될 수 있고, 후속 키 누름에 적용되는 맵핑 하에서 [1,2] (또는 다른 좌표)로 맵핑될 수 있다.
도 3은 가상 공간의 크기가 키패드의 크기와 대략 1:1로 매칭되는 예를 도시하지만 (이산 값의 수의 관점에서), 다른 실시 예에서는 가상 공간이 훨씬 더 클 수 있다. 예를 들어, 키들(142) 각각은 256x256인 가상 그리드의 상이한 좌표로 맵핑될 수 있으며, 맵핑은 각각의 식별자 값에 대해 변경된다. 예를 들어, "0"의 키 엔트리는 첫 번째 식별자/매핑을 위한 가상 공간 좌표 [163,24]로 맵핑되고, 다음 식별자/맵핑을 위한 가상 공간 좌표 [212,148]로 맵핑될 수 있다. 일반적으로, 보다 큰 가상 공간은 결과 좌표들의 보다 긴 비트 표현을 필요로 하지만, 권한이 없는 관찰자의 관점으로부터 향상된 랜덤화를 제공할 수 있다.
또한, 소스 디바이스(102)는 입력된 정보를 추가로 난독화 및 보호하기 위해 추가 매핑 계층들을 구현할 수 있다. 도 4는 일 실시 예 및 시나리오에 따라, 매핑 계층들의 하나의 그러한 세트(200)를 도시한다. 이 예시적인 실시 예에서, 세트(200)는 세 개의 매핑 계층들(202-1, 202-2 및 202-3)을 포함하며, 첫 번째 맵핑 계층(202-1)은 도 3의 맵핑 (140)을 적용하고, 후속하는 맵핑 계층들(202-2 및 202-3)은 상이한 맵핑들을 적용한다. 전술한 바와 같이, 맵핑 계층(202-1)은 대신에 키 엔트리를 보다 큰 가상 공간(예를 들어, 8x8, 16x16, 256x256 등)에 매핑할 수 있다. 유사하게, 맵핑 계층(202-2)은 대신에 계층(202-1)의 좌표를 보다 큰 가상 공간에 맵핑할 수 있고, 및/또는 맵핑 계층(202-3)은 계층(202-2)의 좌표를 보다 큰 가상 공간에 맵핑할 수 있다.
도 4는 3 개의 계층들(202-1 내지 202-3)을 도시하지만, 다른 실시 예들은 임의의 다른 적절한 수의 계층들(예를 들어, 2, 5, 10, 100 등)을 사용할 수 있다. 일반적으로, 더 높은 수준의 보안이 필요한 경우 더 많은 계층들을 사용할 수 있다. 예를 들어, 금융 기관을 포함하는 거래는 계층들(202)과 유사한 50 개의 계층들을 사용할 수 있지만, 일반적으로 덜 민감한 정보를 포함하는 거래는 3 개의 계층들만 포함할 수 있다. 일부 실시 예들에서, 소스 디바이스(102)는 얼마나 많은 매핑/인코딩의 계층들이 적용될 것인지를 선험적으로 알고 있다. 대안 적으로, 중앙 서버(110)는 계층들의 수를 소스 디바이스(102)에 알릴 수 있다(예를 들어, 식별자(들)을 송신하는 데 사용된 동일한 보안 통신 채널을 통해 송신된 표시를 통해 명시적으로, 또는 실별자들의 필요한 수만을 송신함으로써 암시적으로, 등). 이 후자의 실시 예에서, 계층들의 수는 때때로 변경될 수 있다(예를 들어, 후속하는 키 엔트리들 사이에서도).
IV. 통신 경로에서 데이터 스트링 인코딩
이전 섹션에서는 단일 소스 디바이스 내에서 매핑/인코딩의 하나 이상의 계층들 또는 스테이지들을 설명한다. 그러나, 보다 일반적으로는 상이한 인코딩 스테이지들이 통신 경로의 상이한 디바이스들에 의해 구현될 수 있다. 예를 들어, 데이터 스트링은 소스 디바이스(102)에서 하나 이상의 인코딩 스테이지들(예를 들어, 도 4의 계층들(202-1 내지 202-3)에 대응하는 스테이지들)에 의해 인코딩될 수 있고, 이어서 네트워크(106)에서 하나 이상의 네트워크 디바이스들 각각에서 하나 이상의 인코딩 스테이지들에 의해 인코딩될 수 있다. 또한, 이전 섹션은 키패드(예를 들어, 키패드(130)) 상의 사용자 엔트리들에 대응되는 정보의 인코딩을 기술하고 있지만, 데이터 스트링은 대신에 사실상 임의의 다른 유형의 정보에 대응할 수도 있고 또는 그에 기초할 수도 있다. 예를 들어, 인코딩되고 전송될 데이터 스트링은 소스 디바이스에서 실행되는 소프트웨어 어플리케이션에 의해 자동으로 생성되거나 소스 디바이스의 로컬 메모리로부터 검색되는 데이터를 포함할 수 있다.
도 5는, 일 실시 예 및 시나리오에 따라, 데이터 스트링이 본 명세서에 기술된 기술을 사용하여 인코딩될 수 있는 데이터 스트링에 대한 예시적인 통신 경로(250)를 도시한다. 통신 경로(250)는 소스 디바이스(252), 제1 네트워크 디바이스(254), 제2 네트워크 디바이스(256) 및 목적지 디바이스(260)를 포함한다. 예를 들어, 소스 디바이스(252)는 도 1의 소스 디바이스(102)와 유사할 수 있고, 네트워크 디바이스들(254 및 256)은 도 1의 네트워크(106) 내의 디바이스들일 수 있고, 목적지 디바이스(250)는 도 1의 목적지 디바이스와 유사할 수 있다. 예를 들어, 소스 디바이스(252)는 가상 키패드를 갖는 태블릿 디바이스일 수 있고, 네트워크 디바이스(254)는 라우터일 수 있고, 네트워크 디바이스(256)는 네트워크 스위치일 수 있고, 목적지 디바이스(260)는 엔터프라이즈 서버일 수 있다.
도 5에 도시된 바와 같이, 소스 디바이스(252)는 다섯 개의 인코딩 스테이지들(262-1 내지 262-5)을 포함하고, 네트워크 디바이스(254)는 두 개의 인코딩 스테이지들(264-1 및 264-2)을 포함하고, 제2 네트워크 디바이스(256)는 하나의 인코딩 스테이지(266)를 포함한다. 각 인코딩 스테이지는 각각의 디바이스의 메모리에 저장된 인코딩 모듈 명령을 실행할 때 각각의 디바이스의 하나 이상의 프로세서들에 의해 구현될 수 있다. 다른 실시 예들에서, 통신 경로(250)는 도 5에 도시된 것보다 많거나 적은 디바이스들을 포함할 수 있고, 및/또는 다양한 디바이스들의 일부 또는 전부는 더 많거나 더 적은 인코딩 스테이지들을 포함할 수 있다. 예를 들어, 소스 디바이스(252)는 수십 또는 수백 개의 인코딩 스테이지들(262)을 포함할 수 있고, 및/또는 통신 경로(250)는 임의의 인코딩 스테이지들을 포함하지 않는 다수의 추가 네트워크 디바이스들을 포함할 수 있다.
인코딩되는 데이터 스트링이 키패드 엔트리들에 기초하는 실시 예 및 시나리오에서, 제1 인코딩 스테이지(262-1)는 이전 섹션에서 설명된 방식으로 키 엔트리들을 비트 시퀀스로 맵핑할 수 있다(즉, 도 4의 계층(202-1)과 같은 제1 계층의 가상 공간 좌표를 나타내는 비트 시퀀스들). 각각의 가상 공간 좌표를 나타 내기 위해 사용되는 비트들의 수는 인코딩 스테이지(262-1)에 대한 출력 블록 크기로서 보여질 수 있다. 전술한 설명 및 이하의 설명으로부터, 당업자는 도 4의 계층들(202-1 내지 202-3)이 도 5의 인코딩 스테이지들(262-1 내지 262-3)의 동작의 하나의 특정 실시 예로서 간주될 수 있음을 인식할 것이다. 데이터 스트링이 키패드 엔트리들에 기초하지 않은 실시 예들 또는 시나리오들에서(예를 들어, 메모리로부터 검색된 데이터 등), 인코딩 스테이지(262-1)는 후속 인코딩 스테이지들(예를 들어, 262-2, 262-3, 등)과 유사한 방식으로 동작할 수 있다.
인코딩 스테이지들(262-2 내지 262-5, 264-1, 264-2 및 266) 각각은 이전 인코딩 스테이지의 출력에서 동작하며, 입력 블록 크기(통신 경로(250)에서의 l-번째의 인코딩 스테이지에 대한 X l ) 및 출력 블록 크기(통신 경로(250)에서의 l-번째 인코딩 스테이지에 대한 Y 1 )를 지시하는 특정 인코딩 알고리즘 또는 매핑과 관련될 수 있다. 특히, 각각의 인코딩 스테이지는 그 입력을 X 1 비트의 블록들로 파싱할 수 있고, 적절한 인코딩 알고리즘을 적용하여 대응하는 Y 1 비트의 블록들을 생성할 수 있다. 일반적으로, 특정 인코딩 스테이지에 대한 출력 블록 크기는 그 스테이지에 대한 입력 블록 크기와 동일하거나 더 클 수 있다(충돌을 방지하기 위해, 바람직하게는 더 작지는 않음).
인코딩 스테이지들(262-1 내지 262-5, 264-1, 264-2 및 266)각각에 의해 사용되는 특정 인코딩 알고리즘은 각각의 식별자의 현재 값에 의해 지시될 수 있으며, 여기서 식별자는 위에서 언급된 것처럼 특정 등록된 엔티티와 연관된다. 예를 들어, 인코딩 스테이지(262-1)에 대한 식별자는 소스 디바이스(252)와 연관될 수 있고, 인코딩 스테이지(262-2)에 대한 식별자는 특정 회사(예를 들어, 소스 디바이스(252)를 소유, 유지 및/또는 사용하거나, 그렇지 않으면 데이터 스트링의 전송을 필요로 하는 거래와 관련된 것)와 연관될 수 있으며, 인코딩 스테이지(262-3)에 대한 식별자는 회사의 특정 부서와 연관될 수 있으며, 인코딩 스테이지(262-4)에 대한 식별자는 소스 디바이스(252)를 사용하는 특정 에이전트/직원과 연관될 수 있으며, 인코딩 스테이지(262-5)에 대한 식별자는 소스 디바이스(252)에서 실행중인 특정 소프트웨어 어플리케이션과 연관될 수 있다. 이 예를 계속하면, 인코딩 스테이지(264-1)에 대한 식별자는 네트워크 디바이스(예를 들어, 라우터)(254)와 연관될 수 있고, 인코딩 스테이지(264-2)에 대한 식별자는 네트워크 디바이스(254)에 의해 구현되는 방화벽과 연관될 수 있고, 인코딩 스테이지(266)에 대한 식별자는 네트워크 디바이스(예를 들어, 네트워크 스위치)(256)와 연관될 수 있다.
디바이스들(252, 254 및 256) 각각은 인코딩 직전에 보안 통신 채널을 통해 중앙 서버(예를 들어, 도 1의 중앙 서버(110))에 요청을 전송함으로써 그 각각의 인코딩 스테이지 식별자(들)의 현재 값을 얻을 수 있다. 대안적으로, 식별자 값들은 주기적으로 요청될 수 있거나, 중앙 서버는 보안 통신 채널을 통해 디바이스들(252, 254 및 256)의 일부 또는 전부에 적절한 식별자들의 현재 값을 푸싱할 수 있다(예를 들어, 주기적으로). 중앙 서버와 각 디바이스 사이의 보안 통신 채널은 예를 들어 당 업계에 공지된 강력한 인증/검증 및 암호화 기술을 사용할 수 있다. 일부 실시 예들에서, 하나 이상의 디바이스들(252, 254, 256)은 하나 이상의 인터벌들에서 전송된 데이터 스트링에 타임 스탬프 정보를 부가하여, 다양한 식별자 값들이 "현재"였던 시간(들)을 목적지 디바이스(260)에 알릴 수 있다. 이 정보는, 후술될 바와 같이, 목적지 디바이스(260)가 수신된 데이터 스트링을 적절히 디코딩하게 할 수 있다. 또한, 일부 실시 예들에서, 현재 시간 또는 다른 정보는 데이터 스트링을 추가로 인코딩 또는 랜덤화하기 위해 하나 이상의 디바이스들(252, 254 및 256)에 의해 사용될 수 있다.
디바이스들(252, 254 및 256) 각각은 디바이스가 현재 식별자 값에 기초하여 디바이스에 의해 구현되는 각각의 인코딩 스테이지에서 사용하기 위한 적절한 인코딩 알고리즘을 결정할 수 있게 하는 규칙 세트를 저장할 수 있다. 일부 실시 예들에서, 입력 블록 크기(X 1 ) 및 출력 블록 크기(Y 1 )는 현재 식별자 값에 기초하여 특정 인코딩 스테이지에 대해 변경될 수 있다. 다른 실시 예들에서, 입력 및/또는 출력 블록 크기는 일정하고, 식별자 값은 각각의 인코딩 스테이지에 대해 사용하기 위한 현재의 알고리즘(예를 들어, 맵핑)만을 지시한다. 그러나, 바람직하게는, 허가되지 않은 관찰자의 관점에서 랜덤화를 증가시키기 위해, 입력 및/또는 출력 블록 크기가 식별자 값과 함께 변경될 수 있다. 또한, 통신 경로(250) 내의 인코딩 스테이지들의 출력 블록 크기들(Y 1 ) 중 적어도 일부는 바람직하게는 비인증 디코딩의 어려움을 증가시키기 위해 상이하다. 특정 예로서, 하나의 전송(또는 그 일부분)에서, Y1 = 8(즉, 인코딩 스테이지(262-1)는 8 비트의 출력 블록 사이즈를 갖는다), Y2 = 16, Y3 = 4, Y4 = 4, Y5 = 32 등이다.
각각의 인코딩 스테이지에 대해, 대응하는 식별자는 특정 데이터 스트링의 전송 동안 일정하거나, 전송 중에 변할 수 있다. 예를 들어, 인코딩 스테이지(262-3)는 금융 서비스 회사, 또는 매우 높은 보안 레벨을 요구하는 다른 회사와 연관된 식별자의 값에 기초하여 구성될 수 있으며, 식별자 값(따라서, 인코딩 동작)은 단일 데이터 스트링을 전송하는 과정에서도 변할 수 있다.
V. 데이터 스트링 디코딩
일 실시 예에서, 상기 기술들 중 임의의 것을 사용하여 인코딩된 데이터 스트링을 수신하는 디바이스(예를 들어, 도 1의 목적지 디바이스(104) 또는 도 5의 목적지 디바이스(260))는 각각의 인코딩 스테이지에 대응하는 상이한 디코딩 스테이지를 구현함으로써 데이터 스트링을 디코딩한다. 특히, 데이터 스트링을 적절하게 디코딩하기 위해, 수신 디바이스는 상응하는 인코딩 스테이지가 적용된 순서의 역순으로 디코딩 스테이지를 구현한다. 도 5를 참조하면, 예를 들어, 목적지 디바이스(260)(예를 들어, 디바이스(260) 내의 하나 이상의 프로세서들, 디바이스(260)의 메모리에 저장된 디코딩 모듈의 명령들을 실행하는 것)는 인코딩 스테이지(266)의 역인 디코딩 스테이지를 먼저 구현할 수 있으며, 인코딩 스테이지(264-2)의 역인 디코딩 스테이지를 두 번째로 구현하고, 인코딩 스테이지(264-1)의 역인 디코딩 스테이지를 세 번째로 구현하고, 인코딩 스테이지(262-5)의 역인 디코딩 스테이지를 네 번째로 구현하는 등 인코딩 스테이지(262-1)의 역인 디코딩 스테이지가 마지막으로 구현될 때까지 실행된다(예를 들어, 사용자에 의해 만들어진 키 엔트리들 또는 원래의 데이터 스트링을 결정하기 위해).
각 디코딩 스테이지에서 적용할 적절한 알고리즘을 결정하기 위해, 일 실시 예에서, 목적지 디바이스(260)는 보안 통신 채널을 통해 중앙 서버로부터 대응하는 인코딩 스테이지에 사용된 식별자 값을 얻을 수 있다(예를 들어, 이들 디바이스들이 인코딩 목적을 위해 식별자 값을 획득할 때 디바이스들(252, 254 및/또는 256)에 의해 사용된 것과 유사한 인증 및/또는 암호화 기술을 사용하여 중앙 서버(110)로부터). 식별자 값들은 예를 들어, 데이터 스티링을 수신할 때 목적지 디바이스(260)에 의해 요청되거나, 주기적으로 또는 다른 기반으로 목적지 디바이스(260)에 의해 요청(또는 푸시)될 수 있다.
일부 실시 예들에서, 목적지 디바이스(260)에 의해 획득된 식별자 값은 데이터 스트링이 인코딩된 이후에 값이 변경되지 않았다는 가정하에 단지 가장 최근의 값일 수 있다. 다른 실시 예들에서, 특히 식별자 값들이 높은 빈도로 변할 수 있는 특정 상황에서(예를 들어, 각각의 사용자 키 엔트리 사이에서), 하나 이상의 디바이스들(252, 254 및 256)은 데이터 스트링 전송 내에 또는 데이터 스트링의 전송과 함께 하나 이상의 타임 스탬프들을 포함할 수 있다. 목적지 디바이스(260)는 타임 스탬프 정보를 중앙 서버로 전송하여, 중앙 서버가 식별자 값이 인코딩 스테이지들로 전송된 시간에 대응하는 식별자 값들을 목적지 디바이스(260)에 전송할 수 있다. 이를 위해, 중앙 서버는 각각의 식별자 값에 대한 히스토리 (예를 들어, 그 값이 현재 있었던 시간과 함께 과거 값들의 리스트)를 저장할 수 있다.
목적지 디바이스(260)는 디바이스(260)가 수신된 식별자 값들에 기초하여 사용될 적절한 디코딩 알고리즘을 결정할 수 있게 하는 규칙 세트를 저장할 수 있다. l-번째 인코딩 스테이지에 의해 수행된 인코딩을 풀기(ungo) 위해, 예를 들어, 목적지 디바이스(260)의 대응하는 디코딩 스테이지는 데이터 스트링(또는 이전의 디코딩 스테이지로부터의 부분적으로 디코딩된 데이터 스트링)을 블록 크기(Y1)(즉, l-번째 인코딩 스테이지에 대한 출력 블록 크기)로 파싱하고, 각 블록을 출력 블록 크기(X 1 )(즉, 적절한 매핑을 사용하는 l-번째 인코딩 스테이지에 대한 입력 블록 크기)로 디코딩할 수 있다.
실시 예에서, 목적지 디바이스(260)가 수신된 데이터 스트링을 적절하게 그리고 전체적으로 디코딩하기 위해, 디바이스(260)는 인코딩 스테이지들에 대응하는 디코딩 스테이지들을 수행하는 시퀀스를 알고 있거나 습득해야 한다(대응하는 인코딩 스테이지들이 적용된 순서의 역). 일 실시 예에서, 중앙 서버는 정확한 시퀀스를 나타내는 정보를 목적지 디바이스(260)에 전송한다. 다른 실시 예들에서, 목적지 디바이스(260)는 정확한 시퀀스가 무엇인지를 선험적으로 알고, 중앙 서버로부터 적절한 식별자 값만을 획득하면 된다. 그러한 일 실시 예에서, 통신 경로(예를 들어, 통신 경로(250))는 "신뢰되는 시스템"으로 간주될 수 있고, 디코딩 스테이지들의 정확한 시퀀스는 일종의 인증으로서 작용할 수 있다. 즉, 목적지 디바이스(260)가 적절한 순서로 디코딩 스테이지들을 구현하고, 중앙 서버로부터의 적절한 식별자 값들을 사용하면, 데이터 스트링의 디코딩 실패는 데이터 스트링이 "승인된" 통신 경로를 따라 전송되지 않았음을 나타낼 수 있다.
일부 시나리오들에서, 목적지 디바이스(260)는 데이터 스트링을 완전히 디코딩할 수 없으며, 따라서 인코딩 스테이지들의 일부 또는 전부에 대응하는 디코딩 스테이지들을 수행하지 않을 수 있다. 예를 들어, 목적지 디바이스(260)와 관련된 수신자는 쉽게 확인된 포맷(예를 들어, ASCII 표현)으로 카드 번호를 저장하기보다는 지불 카드 산업 데이터 보안 표준(Payment Card Industry Data Security Standard, PCI DSS) 준수 의무의 트리거링을 피하기 위해 고객 신용 카드 번호의 적어도 부분적으로 인코딩된 버전을 저장하기를 원할 수 있다.
VI. 인증
주어진 거래에 대한 인증을 요구함으로써 추가적인 보안 계층이 제공될 수 있다. 예를 들어, 신용 카드나 직불 카드를 사용한 구매는 카드 사용자가 구매를 인증한 후에 지불 프로세서에 의해서만 승인될 수 있다. 설명을 쉽게하기 위해, 이하의 논의는 주로 신용 또는 직불 카드 보유자가 인증을 제공하기 위해 사전-등록하는 실시 예 또는 시나리오를 참조한다. 그러나, 다른 실시 예들 및/또는 시나리오들에서, 프로세스는 다른 개인 및/또는 다른 유형의 거래에 사용될 수 있다. 예를 들어, 회사의 에이전트는 고객들을 위하여 수행된 거래에 대한 인증/확인을 제공하거나 순수한 내부 거래(예를 들어, 기업 데이터베이스에서 정보를 검색하거나 수정하기 위한 특정 요청을 승인하기 위해) 등을 위해 사전-등록할 수 있다.
사용자 인증을 제공하기 위해, 사람은 자신 및/또는 자신의 카드를 중앙 서버(예를 들어, 도 1의 중앙 서버(110))에 사전 등록할 수 있다. 등록 프로세스는 섹션 II에서 위에서 설명한 것과 유사할 수 있으며, 예를 들어 식별자는 등록된 각 개인 및/또는 카드에 할당된다.
일 실시 예에서, 사람은 자신의 개인(또는 카드) 식별자를 선택할 수 있다. 식별자는 기억하기 어려운 숫자들 및/또는 다른 문자들의 긴 스티링일 수 있기 때문에, 개인에게는 제한된 이미지들의 세트 중에서 이미지들의 특정 시퀀스를 선택할 수 있는 옵션이 주어질 수 있다. 단지 몇 가지 예들을 제공하기 위해, 등록자는 네 개의 플레잉 카드 컬러들/수트들의 임의의 특정 시퀀스(예를 들어, 검은색 다이아몬드, 붉은 색 스페이드, 붉은 색 하트, 붉은 색 다이아몬드)를 선택할 수 있고, 또는 세 개의 플레잉 카트 색상들/수트들/랭킹들의 특정 시퀀스(예를 들어, 세 개의 붉은 색 클럽들, 검정색 킹 하트들, 블랙 잭 다이아몬드들)를 선택할 수 있다.
본질적으로 랜덤/비 관련 이미지들(302)을 갖는 예시적인 사용자 인터페이스(300)를 도시하는 다른 예가 도 6에 제공된다. 도 6은 스마트 폰 디스플레이 스크린 상에 제공되는 사용자 인터페이스(300)를 도시하지만, 다른 실시 예들 또는 시나리오들에서는 다른 디바이스들이 사용될 수 있다. 더욱이, 도 6은 선택이 이루어질 수 있는 총 12개의 이미지들을 도시하지만, 다른 수의 이미지들(예를 들어, 10, 20, 100 등)이 가능하다. 이미지들(302) 각각은 선택된 이미지 시퀀스가 특정 순서로 다수의 캐릭터 스트링들로 구성된 식별자에 대응하도록 특정 캐릭터 스트링에 대응할 수 있다. 도 6에서, 예를 들면, 지구본 이미지가 "3a7e16"에 대응하고, 자동차 이미지가 "4b4a22"에 대응하고, 집 이미지가 "9u3c59"에 대응한다면, 시퀀스 "지구본, 자동차, 집"은 식별자 "3a7e164b4a229u3c59"에 대응된다.
일부 실시 예들에서, 선택된 이미지 시퀀스는 다수의 식별자들에 대응한다. 예를 들어, 시퀀스는 등록자 본인을 위한 제1 식별자와 등록자의 신용 카드 또는 직불 카드를 위한 제2 식별자의 연속에 대응될 수 있다. 다른 예로서, 단일 이미지 시퀀스는 식별자 값들의 미리-결정된 시퀀스에 대응될 수 있고, 중앙 서버에 의한 식별자의 각 업데이트는 식별자 값이 시퀀스 내의 다음 값으로 진행하도록 한다. 식별자 값들의 시퀀스는 예를 들어, 중앙 서버의 테이블에 저장될 수 있거나, 수학적 기능 등에 기초할 수 있다. 이러한 방식으로, 식별자를 수시로 변경하는 것의 보안 이점들 중 적어도 일부는 개인이 식별자가 업데이트될 때마다 새로운 이미지 시퀀스를 기억할 필요 없이 유지될 수 있다.
이미지 시퀀스는 중앙 서버에 의해 제공된 사용자 인터페이스에 액세스함으로써 선택될 수 있다. 일 실시 예에서, 등록자는 데이터 보안 서비스를 제공하는 회사의 에이전트를 호출할 수 있고, 에이전트는 보안 관리 인터페이스에 액세스하여 선택을 할 수 있다. 예를 들어, 에이전트가 이미지 옵션들을 등록자에게 알린 다음, 등록자가 에이전트에게 선택을 알리는 대로 선택을 입력할 수 있다. 다른 실시 예에서, 등록자는 자신의 선택을 하기 위해 보안 통신 채널을 통해 중앙 서버에 원격으로 액세스할 수 있다. 이 실시 예에서, 중앙 서버는 등록자에게 선택될 수 있는 이미지들의 집합을 전송할 수 있고(예를 들어, 등록자의 스마트 폰, 태블릿, 랩탑 또는 데스크탑 컴퓨터에서 실행되는 전용 소프트웨어 어플리케이션 또는 웹 브라우저의 사용자 인터페이스를 통한 디스플레이를 위해), 등록자의 선택은 중앙 서버로 다시 전송될 수 있다. 등록자는 예를 들어, 도 6의 사용자 인터페이스(300)와 유사한 사용자 인터페이스를 통해 선택을 할 수 있다. 다른 실시 예들에서, 등록자는 이미지 시퀀스를 전혀 선택하지 않고, 오히려 그 자신의 랜덤하게 할당된 식별자에 대응하는 이미지들의 시퀀스를 통지 받는다.
일부 실시 예들에서, 등록자는 또한 인증 요청이 이루어지는 방식(들)을 선택할 수 있다. 예를 들어, 등록자에게는 전화 인증, 전자 메일 인증, SMS 문자 메시지 인증 및/또는 다른 유형의 인증에 대한 옵션이 제공될 수 있다.
이미지 시퀀스가 특정 등록자(또는 자신의 카드)에 대해 설정되고, 등록자에 대해 인증의 적절한 방법(들)이 설정되면, 이미지 시퀀스를 사용하여 향후 거래를 인증할 수 있다. 예를 들어, 도 5의 통신 경로(250)를 참조하면, 목적지 디바이스(260)는 인코딩된 데이터 스트링을 수신하고(예를 들어 섹션 III 또는 섹션 IV에서 전술한 바와 같이), 데이터 스트링을 디코딩하고(예를 들어, 섹션 V에서 전술한 바와 같이), 디코딩된 데이터로부터 특정 사람 또는 그 사람의 신용 카드 또는 직불 카드가 수행되는 거래와 관련되는지를 결정할 수 있다. 목적지 디바이스(260) 또는 디바이스(260)와 연관된 에이전트는 적절한 메커니즘(들)(예를 들어, 전화 호출, SMS 텍스트 메시지 등)을 통해 사람의 이미지 시퀀스를 요청할 수 있다. 대안적으로, 목적지 디바이스(260)는 인증이 필요하다는 것을 중앙 서버에 알리기 위해 보안 통신 채널을 사용할 수 있고, 중앙 서버는 적절한 메커니즘(들)을 통해 이미지 시퀀스를 요청할 수 있고, 올바른 응답이 수신되었는지 여부에 관하여 목적지 디바이스(250)에 알린다.
일부 실시 예 및 시나리오 (예를 들어, 전화를 통해 인증이 요구되는 경우)에서, 사용자는 이미지 시퀀스를 에이전트에 기술함으로써 거래를 인증할 수 있고(예를 들어, "지구본, 자동차, 집"이라고 말함), 에이전트는 정보를 입력하거나, 또는 에이전트가 적절한 순서를 알게 되면 거래를 직접 승인할 수 있다. 다른 실시 예들 및 시나리오들에서(예를 들어, 인증이 사용자의 전자 디바이스 상에서 실행되는 전용 소프트웨어 어플리케이션 또는 웹 브라우저를 통해 요구되는 경우), 사용자는 정확한 이미지 시퀀스의 디스크립터들(descriptors)을 타이핑하거나 복수의 이미지들 중에서 올바른 시퀀스를 선택함으로써 거래를 인증할 수 있다(예를 들어, 도 6의 사용자 인터페이스(300)와 유사한 사용자 인터페이스를 통해). 올바른 이미지 시퀀스가 제공되면, 거래가 승인될 수 있다. 일부 실시 예들에서, 부정확한 이미지 시퀀스가 제공되면(또는 임계 횟수의 시도들이 제공되면), 중앙 서버는 부정확 한 엔트리 또는 엔트리들을 의심되는 보안 위반으로 간주한다. 예를 들어, 중앙 서버는 거래를 알려진대로 행하는 사람과 관련된 식별자를 업데이트하고 및/또는 그 사람의 신용 카드 또는 직불 카드와 관련된 식별자를 업데이트할 수 있다.
일부 실시 예들에서, 이미지 시퀀스에 대응하는 식별자(들)는 섹션 III 또는 IV에서 상기 논의된 인코딩 프로세스에서 또한 사용된다. 예를 들어, 도 5의 인코딩 스테이지들(262-1 내지 262-5) 중 하나는 이미지 시퀀스에 대응하는 식별자의 값에 기초하여 인코딩 알고리즘을 선택할 수 있다. 일부 이러한 실시 예들에서, 이는 중앙 서버가 거래를 수행하는 사람 또는 거래를 수행하는 데 사용되는 카드를 알아내어, 적절한 식별자가 검색되어 소스 디바이스(252)로 전송되도록 요구할 수 있다. 이러한 실시 예의 일례는 특정 사용 케이스/시나리오와 관련하여 섹션 VII에서 설명된다.
VII. 예시적인 사용 케이스
도 7은 일 실시 예 및 시나리오에 따라, 소매 신용 또는 직불 카드 거래를 수행 할 때 본 개시의 양태들이 구현될 수 있는 예시적인 환경(400)을 도시한다. 이것은 단지 하나의 사용 사례를 나타내며, 다른 유형의 거래 및 다른 환경들/시스템들과 관련된 사용 케이스도 가능하다는 것을 이해해야 한다.
도 7의 예시적인 시나리오에서, 소비자는 소매점에서 상품을 구매하는데 사용되는 신용 카드 또는 직불 카드(402)를 보유한다. 소매점에는 거래/구매가 이루어질 때 구매 정보(예를 들어, 소비자 카드 번호)를 입력하기 위한 가상 키패드를 포함하는 사용자 인터페이스를 제공하는 태블릿 디바이스(404)가 위치한다. 대안 적으로, 디바이스(404)는 하드웨어 키패드를 갖는 전용 또는 범용 디바이스일 수 있다. 신용 또는 직불 카드 번호, 지불 금액 등을 포함하는 거래에 대한 지불 정보는 지불 제공자(406)(예를 들어, 지불 제공자(406)의 하나 이상의 서버들)로 전송될 수 있고, 이는 지불 정보를 지불 네트워크(410)(예를 들어, 지불 네트워크(410)의 하나 이상의 서버들)에 전송하여 적절한 금액을 신용 카드 잔액에 추가하거나 직불 카드 등과 관련된 계좌 잔고로부터 적절한 금액을 공제한다. 지불 네트워크 (410)는 예를 들어 은행일 수 있다.
거래에 대한 지불 정보 중 적어도 일부를 난독화시키기 위해, 상술한 하나 이상의 기술들이 사용될 수 있다. 이를 위해, 예시적인 환경(400)은 각각의 보안 통신 채널들을 통해 태블릿 디바이스(404) 및 지불 제공자(406)와 통신할 수 있는 중앙 서버(412)(예를 들어, 도 1의 중앙 서버(110)와 유사 함)를 포함한다. 또한, 태블릿 디바이스(404)는 섹션 II에서 상술한 방식으로 중앙 서버(412)에 사전-등록될 수 있다. 소매점 자체, 상점의 직원/에이전트, 하나 이상의 네트워크 디바이스들(예를 들어, 라우터들) 및/또는 어플리케이션들 또는 태블릿 디바이스(404)와 지불 제공자(406) 사이의 통신 경로의 노드들(예를 들어, 방화벽들) 등과 같은 소매 거래들과 관련된 다른 엔티티들은 또한, 또는 대신에, 사전-등록될 수 있다.
여기에 설명된 예시 시나리오에서, 카드(402)는 또한 중앙 서버(412)에 사전 등록된다. 예를 들어, 카드(402) 소지자는, 섹션 VI에서 상기 논의된 바와 같이, 특정 이미지 시퀀스를 선택함으로써 부분적으로 카드(402)를 등록할 수 있다.
동작 시에, 카드(402)의 소지자는 그의 카드를 상점 직원에게 제시하여("카드 제시"거래), 그 직원이 테블릿(404)의 가상 키패드 상에 카드 번호를 입력할 수 있게 하거나, 또는 전화를 통해 상점 직원에게 카드 번호를 제공할 수 있다("카드 비 제시"거래). 대안적으로, 카드 소지자는 태블릿(404)을 사용하여 카드 번호를 입력할 수 있다.
일 실시 예에서, 카드 번호의 보안 인코딩된 버전 만이 거래 내의 임의의 지점에서 디지털 형태로 제시된다. 예를 들어, 도 3 및 도 4와 관련하여 상술한 기술들은 키 엔트리들을 가상 공간 좌표들에 맵핑하는데 사용될 수 있으며, 각 맵핑은 보안 통신 채널을 통해 중앙 서버(412)로부터 수신된 각각의 식별자 값의 값에 의존한다. 또한, 태블릿 디바이스(404)와 지불 제공자(406) 사이의 통신 경로 내의 하나 이상의 다른 디바이스들(도 7에 도시되지 않음)은, 도 5와 관련하여 전술한 바와 같이, 각각 하나 이상의 인코딩 스테이지들을 추가할 수 있다.
일부 실시 예들에서, 카드(402)와 관련된 식별자의 현재 값은 하나의 인코딩 스테이지에 사용된다. 예를 들어, 카드(402)의 소지자는 자신의 이름을 상점 직원에게 제공할 수 있고, 직원은 태블릿 디바이스(404) 또는 다른 디바이스를 사용하여 카드 소지자의 이름을 중앙 서버(412)에 전송할 수 있다. 중앙 서버(412)는 카드 소지자의 등록시 합의된 보안 질의로 응답할 수 있다. 그 후, 직원은 카드 소지자로부터 보안 질의 응답을 획득하고 중앙 서버(412)에 응답을 제공할 수 있다. 중앙 서버(412)는 카드 소지자의 응답을 사용하여 카드(402)를 식별하고, 그 후 카드(402)에 대응하는 식별자의 현재 값을 태블릿 디바이스(404)로 전송할 수 있다. 그 다음, 태블릿 디바이스(404)는 상술한 바와 같이 인코딩 스테이지들 중 하나에서 적절한 인코딩을 결정하기 위해 식별자 값을 사용할 수 있다. 다른 실시 예들에서, 다른 기술들이 카드(402)의 아이덴티티를 중앙 서버(412)에 알리기 위해 사용될 수 있다.
태블릿 디바이스(404) 및 통신 경로 내의 임의의 다른 인코딩 디바이스들이 지불 정보에 대응하는 데이터 스트링을 인코딩 한 후에, 인코딩된 데이터 스트링은 지불 제공자(406)에서 수신된다. 섹션 V에서 전술한 바와 같이, 지불 제공자(406)는 보안 통신 채널을 통해 중앙 서버(412)로부터 적절한 식별자 값을 획득할 수 있고, 올바른 순서로 각각의 인코딩 스테이지들을 역전시킴으로써 이들 값을 사용하여 데이터 스트링을 디코딩할 수 있다. 거래를 인증하기 위해, 지불 제공자(406) 또는 중앙 서버(412)는 카드(402)에 대한 식별자에 대응하는 이미지 시퀀스를 요구하기 위해 카드 소지자의 선호된 인증 방법을 사용할 수 있다(예를 들어, 섹션 VI에서 전술한 기술들 중 임의의 것에 따라). 카드 소지자가 적절한 시퀀스를 제공하면, 지불 제공자(406)는 거래를 승인하고, 또 다른 보안 통신 채널을 통해 결제 네트워크(410)로 지불 정보를 전송할 수 있다. 지불 정보가 태블릿 디바이스(402)(또는 소매 업체의 다른 디바이스)에 저장되지 않으므로, 소매 업체는 PCI DSS 의무를 준수하지 않아도 된다.
VIII. 예시적 방법들
도 8은 일 실시 예에 따라, 민감한 정보를 안전하게 수집하기 위한 예시적인 방법(500)의 흐름도이다. 방법(500)은, 예를 들어 전자 디바이스의 메모리(예를 들어, 도 2의 메모리(122))에 저장된 명령들을 실행할 때 전자 디바이스의 하나 이상의 프로세서들(예를 들어, 도 2의 프로세서(120) 또는 도 5의 소스 디바이스(252) 또는 도 7의 태블릿 디바이스(404)의 하나 이상의 프로세서들)에 의해 구현될 수 있다.
방법(500)에서, 제1 키 엔트리가 검출된다(블록(502)). 키 엔트리는 전자 디바이스의 사용자 인터페이스를 통해 이루어지는 것으로서, 사용자 인터페이스는 복수의 키들을 포함한다. 키 엔트리는 신용 또는 직불 카드 번호, 다른 금융 정보, 개인 건강 정보, 사회 보장 번호 등과 같은 민감한 정보를 수동으로 입력하는 과정 중에 이루어질 수있다. 일부 실시 예에서, 사용자 인터페이스(예를 들어, 도 2의 사용자 인터페이스 (124))는 하드웨어 키패드를 포함하고, 복수의 키들의 각각의 키는 하드웨어 키패드 상의 상이한 키이고, 블록(502)은 복수의 키들 중 어느 것이 터치되거나 눌려 졌는지를 검출하는 단계를 포함한다. 전자 디바이스는 예를 들어, 전용 하드웨어 키패드 디바이스일 수 있다. 다른 실시 예들에서, 사용자 인터페이스는 전자 디바이스의 터치 스크린 디스플레이 상에 제공된 가상 키패드를 포함하고, 복수의 키들의 각각의 키는 가상 키패드 상의 상이한 키이고, 블록(502)은 터치 스크린 디스플레이의 어느 영역이 터치되었는지를 검출하는 단계를 포함한다. 전자 디바이스는 예를 들어, 스마트 폰, 태블릿, 랩탑 컴퓨터 또는 데스크탑 컴퓨터일 수 있다.
또한 방법(500)에서, 정보는 원격 서버로부터 수신된다(블록(504)). 정보는 전자 디바이스의 통신 인터페이스(예를 들어, 도 2의 통신 인터페이스(126))를 통해 원격 서버로부터 수신되고, 그리고 원격 서버에 대한 보안 통신 채널을 통해 수신된다(예를 들어, 전자 디바이스에 의해 만들어진 요청에 응답하여). 원격 서버는, 예를 들어, 도 1의 중앙 서버(110) 또는 도 7의 중앙 서버(412)와 유사한 서버일 수 있다. 블록(504)은 블록(502) 이전, 동시에, 및/또는 후에 발생할 수 있다.
블록(504)에서 수신된 정보는 적어도 제1 계층 식별자의 현재 값을 포함한다. 제1 계층 식별자는, 예를 들어, 원격 서버에 의해 관리 유지되는 레지스트리 내의 엔티티와 관련된 식별자일 수 있다. 예를 들어, 엔티티는 방법(500)을 구현하는 전자 디바이스, 전자 디바이스와 연관된 조직(예를 들어, 회사, 부서, 제조자 등), 전자 디바이스를 통해 이루어지는 거래와 관련된 사람 등일 수있다. 일부 실시 예들에서, 블록(504)에서 수신된 정보는 또한 하나 이상의 추가 계층 식별자들의 현재 값을 포함한다. 정보는 원격 서버로부터의 단일 전송 또는 다중 전송들을 통해 수신될 수 있다.
제1 키 엔트리에 대응되는 비트 스트링은 제1 계층 식별자의 현재 값을 이용하여 결정될 수 있다(블록(506)). 예를 들어, 전자 디바이스는 블록(502)에서 검출된 키 엔트리를 인코딩할 때 사용할 적절한 인코딩/매핑을 결정하기 위해 현재 값을 사용할 수 있다. 예를 들어, 하나의 인코딩/매핑 하에서, "5"의 키 엔트리는 비트 스트링 01 11(예를 들어, 가상 공간 좌표 [1,3])에 매핑 될 수 있고, "g"의 키 엔트리는 비트 스티링 100 001(예를 들어, 가상 공간 좌표 [4,1])에 매핑될 수 있다.
데이터 스트링의 적어도 제1 부분은 블록(506)에서 결정된 비트 스트링을 사용하여 생성될 수 있다(블록(508)). 전체 데이터 스트링은 전체 카드 번호, 암호, 메시지 또는 키패드에 입력된 다른 종류의 정보와 일치할 수 있다. 전자 디바이스가 단일 매핑 계층만을 이용한다면(예를 들어, 도 3에 도시된 바와 같이), 블록(506)은 블록(506)에서 결정된 비트 스트링으로부터 직접 데이터 스트링 또는 데이터 스트링 부분을 생성하는 단계를 포함할 수 있다. 역으로, 전자 디바이스가 다수의 맵핑 계층들을 사용하고(예를 들어, 도 4에 도시된 바와 같이), 블록(504)에서 수신된 정보가 적어도 하나의 추가 계층 식별자에 대한 현재 값을 포함하면, 블록(506)은 추가 동작들을 포함할 수 있다. 예를 들어, 블록(506)에서 결정된 비트 스트링의 적어도 일부는 수신된 정보에 포함된 제2 계층 식별자의 현재 값에 따라 인코딩될 수 있다. 더 많은 인코딩 계층들이 존재하는 경우, 각 계층에 의해 출력된 비트 스트링은 후속 계층에 대한 식별자의 현재 값에 대응하는 인코딩 알고리즘을 사용하여 그 후속 계층에서 인코딩될 수 있다. 데이터 스트링 또는 데이터 스트링 부분은 최종 인코딩 계층의 출력과 동일할 수 있다.
일부 실시 예에서, 전자 디바이스는 보안 통신 채널을 통해 원격 서버로부터 인가될 인코딩 계층들의 수를 나타내는 데이터를 수신한다(예를 들어, 블록(504)에서 수신된 다른 정보와 함께). 데이터는 명시적으로 또는 암시 적으로 계층들의 수를 나타낼 수 있다(예를 들어, 식별자 값의 필요한 수만 올바른 순서로 전송하여 암시적으로). 다른 실시 예에서, 전자 디바이스는 계층들의 정확한 수를 선험적으로 알고 있다.
블록(508)에서 적어도 부분적으로 생성된 데이터 스트링은 전자 디바이스의 로컬 메모리(예를 들어,도 2의 메모리(122))에 저장되고, 및/또는 네트워크를 통해 다른 디바이스로 전송되도록 할 수 있다(블록(510)). 전송되면, 목적지 디바이스는 예를 들어 목적지 디바이스(104) 또는 목적지 디바이스(260)와 유사할 수 있고, 네트워크는 네트워크(106)와 유사할 수 있다. 블록(510)은, 예를 들어, 데이터 스트링을 직접 저장 및/또는 전송하거나, 또는 다른 디바이스 또는 유닛이 저장 및/또는 전송을 수행하게 하는 제어 신호 또는 메시지를 전송함으로써 수행될 수 있다.
블록들(502 내지 508)은 하나 이상의 후속 키 엔트리들에 대해 반복될 수 있다. 식별자 값들이 빈번하게 변경되지 않는 일부 실시 예들에서, 블록(504)은 이러한 후속 반복들을 위해 생략될 수 있다. 그러나, 다른 실시 예들에서, 블록(504)은 일부 또는 모든 키 엔트리들 사이에서 업데이트된 식별자 값을 획득하기 위해 후속 반복의 각각(또는 적어도 일부)에서 반복된다. 예를 들어, 원격 서버는 각 키 엔트리에 대해 제1 계층 식별자(또는, 필요하다면 다수의 계층 식별자들 각각에 대해)의 새로운 값을 제공할 수 있다. 어느 경우든, 블록(510)에서 저장 및/또는 전송되도록 야기되는 데이터 스트링은 각각이 검출된 키 엔트리들 중 상이한 하나에 대응하는 다수의 스트링 세그먼트들/부분들을 포함할 수 있다.
도 9는 일 실시 예에 따라, 복수의 디바이스들를 포함하는 통신 경로를 따라 데이터 스트링의 보안 통신을 제공하기 위한 예시적인 방법(520)의 흐름도이다. 데이터 스트링 자체는, 예를 들어, 하나 이상의 수동 키 엔트리들의 인코딩된 버전 일 수도 있고, 코딩되지 않은 또는 부분적으로 코딩된 데이터(예를 들어, 주민등록번호, 개인 건강 보고서 등의 ASCII 표현)일 수도 있다. 방법(520)은, 예를 들어, 서버의 메모리에 저장된 명령들을 실행할 때 서버(예를 들어, 도 1의 중앙 서버(110) 또는 도 7의 중앙 서버(412))의 하나 이상의 프로세서들에 의해 구현될 수 있다.
방법(520)에서, 제1 엔티티(예를 들어, 사람, 회사, 부서, 데이터 엔트리 디바이스 등), 및 제1 엔티티와 관련된 제1 식별자가 서버의 영구 메모리에 저장된 레지스트리 데이터베이스에 추가된다(블록(522)). 제2 엔티티(예를 들어, 회사, 부서, 네트워크 디바이스 등) 및 제2 엔티티와 연관된 제2 식별자는 또한 레지스트리 데이터베이스에 추가된다(블록(524)). 엔티티들은, 예를 들어, 섹션 II에서 위에서 설명된 것과 같은 등록 프로세스 후에 추가될 수 있다.
제1 식별자의 현재 값은, 데이터 스트링의 제1 인코딩을 가능하게하기 위해, 제1 보안 통신 채널을 통해 통신 경로 내의 디바이스들의 제1 디바이스에 제공된다(블록(526)). 이 값은, 예를 들어, 제1 디바이스로부터 수신된 요청에 응답하여 제공될 수 있다. 제1 디바이스는 어떤식으로 제1 엔티티와 연관될 수 있다. 예를 들어, 제1 엔티티는 제1 디바이스 자체일 수 있거나, 제1 디바이스를 소유, 제어 및/또는 사용하는 개인 또는 조직(예를 들어, 회사, 부서 등)일 수 있다. 데이터 스트링의 제1 인코딩은 데이터 스트링 내의 복수의 비트 시퀀스들을, 각각 제1 블록 크기(예를 들어, 비트 수)를 갖는, 제1 복수의 인코딩된 비트 시퀀스들로서 인코딩 한다.
제2 식별자의 현재 값은, 데이터 스트링의 제2 인코딩을 가능하게 하기 위해, 제2 보안 통신 채널을 통해 통신 경로 내의 디바이스들의 제2 디바이스에 제공된다(블록(528)). 이 값은, 예를 들어, 제2 디바이스로부터 수신된 요청에 응답하여 제공될 수 있다. 제2 디바이스는 통신 경로에서 제1 디바이스의 다운스트림이고, 어떤 방식으로 제2 엔티티와 연관될 수 있다. 예를 들어, 제2 엔티티는 제2 디바이스(예를 들어, 라우터 또는 네트워크 스위치와 같은 네트워크 디바이스) 그 자체일 수도 있고, 제2 디바이스에 의해 구현되는 방화벽일 수도 있다. 데이터 스트링의 제2 인코딩은 제2 복수의 인코딩된 비트 시퀀스들로서의 제1 복수의 인코딩된 비트 시퀀스들을 인코딩한다. 제2 복수의 인코딩된 비트 시퀀스들 각각은 제1 복수의 인코딩된 비트 시퀀스들에 대한 제1 블록 크기와 다를 수 있는 제2 블록 크기를 갖는다.
제1 식별자의 현재 값 및 제2 식별자의 현재 값은 데이터 스트링의 디코딩을 가능하게 하기 위해 제3 보안 통신 채널을 통해 통신 경로 내의 디바이스들의 제3 디바이스에 제공된다(블록(530)). 제3 디바이스는 통신 경로의 제2 디바이스의 다운스트림이다. 예를 들어, 제3 디바이스는 데이터 스트링의 임시 또는 최종 목적지가 될 수 있다.
일부 시나리오들에서, 방법(520)은 또한 후속 데이터 스트링의 인코딩 및 디코딩과 관련된 블록들을 포함한다. 예를 들어, 방법(520)은, 후속 데이터 스트링이 인코딩되고 전송될 때 나중에 제1 및 제2 식별자에 새로운 값이 제공되는 블록들을 포함할 수 있다. 초기 데이터 스트링 전송 이후에 경과된 시간 및 각 식별자 값이 서버에 의해 업데이트되는 빈도에 따라, 새로운 값들 중 하나 또는 모두가 이전 데이터 스트링에 대해 제공된 값과 다를 수 있다(블록들(256 및 258)에서).
일부 실시 예들 및/또는 시나리오들에서, 방법 (520)은 서버가 제1 디바이스(예를 들어, 소스 디바이스)에 제1 식별자 및 제2 식별자 양자의 현재 값들을 제공하여, 제1 디바이스가, 인코딩 단계를 두 디바이스들에 배포하는 대신, 두 식별자 값들에 의해 지정된 인코딩 스테이지들을 수행하는 것을 가능하게 한다. 또 다른 실시 예들 및/또는 시나리오들에서, 제1 및 제2(및 가능하게는 다른) 디바이스들은 모두 인코딩 스테이지들을 구현하고, 이들 디바이스들 중 적어도 하나는 다중 인코딩 스테이지들을 구현한다.
도 10은 일 실시 예에 따라, 안전하게 전송된 데이터 스트링을 디코딩하는 예시적인 방법(540)의 흐름도이다. 방법(540)은, 예를 들어 전자 디바이스의 메모리에 저장된 명령들을 실행할 때, 전자 디바이스의 하나 이상의 프로세서들(예를 들어, 도 1의 목적지 디바이스(104)의 하나 이상의 프로세서들 또는 도 5의 목적지 디바이스(260))에 의해 구현될 수 있다.
방법(540)에서, 인코딩된 데이터 스트링이 획득된다(블록(542)). 하나의 시나리오에서, 인코딩된 데이터 스트링은 소스 디바이스로부터 인코딩된 데이터 스트링을 수신함으로써 획득된다(예를 들어, 데이터 스트링이 방법(500)을 사용하여 인코딩된 후에). 다른 시나리오에서, 인코딩된 데이터 스트링은 전자 디바이스의 로컬 메모리로부터 인코딩된 데이터 스트링을 검색함으로써 획득된다. 인코딩된 데이터 스트링은 민감하거나 잠재적으로 민감한 정보(예를 들어, 신용 카드 또는 직불 카드 번호 또는 기타 금융 정보, 개인 건강 정보, 사회 보장 번호 등)를 나타낼 수 있다.
N 개의 식별자들(N=1) 의 현재 값들은 전자 디바이스의 통신 인터페이스 및 보안 통신 채널을 통해 원격 서버로부터 수신된다(블록(544)). 블록(544)은 블록(542) 이전, 동시에, 및/또는 후에 발생할 수 있다. N 개의 식별자들 각각은 복수의 엔티티들 중 각각의 하나와 연관되고, 이들 엔티티들 각각은 인코딩된 데이터 스트링의 통신과 연관된다. 예를 들어, 하나의 엔티티는 데이터 스트링에 대응하는 정보를 수동으로 입력하는데 사용된 키패드 디바이스일 수 있고, 하나는 데이터 스트링에 관련된 거래에 연관된 사람 또는 조직일 수 있고, 하나는 데이터 스트링의 통신 경로 내의 네트워크 디바이스 또는 방화벽일 수 있다. 또한, 엔티티들 각각은 N 개의 디코딩 동작들 각각에 대응하며, N 개의 디코딩 동작들 각각은 각각의 블록 크기(예를 들어, 비트 수)를 갖는 비트들의 블록들에 대해 동작한다. N 개의 디코딩 동작 중 일부 또는 전부는 상이한 블록 크기들을 사용할 수 있다.
N 개의 디코딩 동작들이 인코딩된 데이터 스트링에 적용되는 시퀀스가 결정된다(블록(546)). 일 실시 예에서, 원격 서버는 정확한 시퀀스를 나타내는 데이터를 제공한다. 다른 실시 예에서, 방법(540)을 구현하는 전자 디바이스는 정확한 시퀀스를 선험적으로 알고, 로컬 메모리에 저장된 규칙들 또는 명령들을 액세스함으로써 정확한 시퀀스를 결정한다.
디코딩된 데이터 스트링은 블록(546)에서 결정된 시퀀스에 따라 인코딩된 데이터 스트링에 대해 N 개의 디코딩 동작들을 수행함으로써 생성된다(블록(548)). 블록(548)은, N개의 디코딩 동작들 각각에 대해, 인코딩된 데이터 스트링(또는 N 개의 디코딩 동작들 중 이전의 것에 기인하여 부분적으로 디코딩된 데이터 스트링의)의 적어도 일부를 각각의 블록 크기(즉, 특정 디코딩 동작에 대응하는 크기)를 갖는 블록들로 파싱하는 단계, 각각의 블록 크기를 갖는 블록들 각각을 개별적으로 디코딩하는 단계, 제1 N-1 디코딩 동작들에 대해, 개별적으로 디코딩된 블록들의 스트링을 N 개의 디코딩 동작들 중 다음의 것으로 전달하는 단계를 포함할 수 있다.
디코딩된 데이터 스트링은 전자 디바이스의 로컬 메모리에 저장되고 및/또는 다른 디바이스로 전송되도록 야기된다(블록(550)). 블록(550)은 디코딩된 데이터 스트링을 직접 저장 및/또는 전송하거나, 예를 들어 저장 및/또는 전송을 수행하는 다른 디바이스 또는 유닛에 제어 신호 또는 메시지를 전송함으로써 수행될 수 있다.
IX. 본 발명의 양태
전술한 내용은 본 발명의 수많은 다른 양태들 및 실시 예들에 대한 상세한 설명을 제시하지만, 특허의 범위는 이 특허의 말미에 기재된 청구항의 단어에 의해 정의됨을 알아야 한다. 상세한 설명은, 모든 가능한 실시 예들을 기술하는 것이 불가능하지는 않지만 이는 실용적이지 않기 때문에, 단지 예시적인 것으로 해석되어야 하고 모든 가능한 실시 예들을 기술하지는 않는다. 현재의 기술 또는 이 특허의 출원일 이후에 개발된 기술을 사용하여 다수의 대안적인 실시 예들이 구현될 수 있으며, 이는 여전히 청구 범위 내에 있다. 제한이 아닌 예로써, 본 명세서의 개시 내용은 적어도 다음 양태들을 고려한다:
제1 양태 : 복수의 키들이 구비된 사용자 인터페이스, 통신 인터페이스, 메모리, 및 하나 이상의 프로세서들을 갖는 전자 디바이스에서 구현되는 방법으로서, (i) 하나 이상의 프로세서들에 의해, 사용자 인터페이스를 통해 이루어진 제1 키 엔트리를 검출하는 단계, (ii) 하나 이상의 프로세서들에 의해 통신 인터페이스 및 보안 통신 채널을 통해 원격 서버로부터 제1 정보를 수신하는 단계로서, 제1 정보는 적어도 제1 식별자의 제1 현재 값을 포함하는, 제1 정보를 수신하는 단계, (iii) 하나 이상의 프로세서들에 의해 상기 제1 계층 식별자의 제1 현재 값을 사용하여 제1 키 엔트리에 대응하는 제1 비트 스트링을 결정하는 단계; (iv) 상기 하나 이상의 프로세서들에 의해 상기 제1 비트 스트링을 사용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계; 및 (v) 상기 하나 이상의 프로세서들에 의해, 상기 데이터 스트링을 (a) 상기 메모리에 저장 및 (b) 네트워크를 통해 다른 디바이스로 전송되는 것 중 하나 또는 둘 모두가 되도록 하는 단계를 포함한다.
양태 2. 양태 1의 방법에 있어서, 사용자 인터페이스는 하드웨어 키패드를 포함하고, 복수의 키들의 각각의 키는 하드웨어 키패드 상의 상이한 키이고, 제1 키 엔트리를 검출하는 단계는 복수의 키들이 터치되거나 또는 눌려지는 것을 검출하는 단계를 포함한다.
양태 3. 양태 1의 방법에 있어서, 사용자 인터페이스는 전자 디바이스의 터치스크린 디스플레이 상에 존재하는 가상의 키패드를 포함하고, 복수의 키들의 각각의 키는 가상의 키패드 상의 상이한 키이고, 제1 키 엔트리를 검출하는 단계는 터치스크린 디스플레이의 영역이 터치되는 것을 검출하는 단계를 포함한다.
양태 4. 양태 1 내지 3 중 어느 하나의 방법에 있어서, 원격 서버로부터 제1 정보를 요청하는 단계를 더 포함하고, 제1 정보를 수신하는 단계를 제1 정보를 요청하는 단계에 대한 응답이다.
양태 5. 양태 4의 방법에 있어서, 제1 정보를 요청하는 단계는 (i) 제1 키 엔트리를 검출하는 단계에 대한 응답이거나, 또는 (ii) 제1 키 엔트리를 검출하는 단계에 앞선다.
양태 6. 양태 1 내지 5 중 어느 하나의 방법에 있어서, 제1 계층 식별자는 원격 서버에 의해 관리되는 레지스트리 내의 엔티티와 연관된다.
양태 7. 양태 6의 방법에 있어서, 엔티티는 (i) 전자 디바이스; (ii) 전자 디바이스와 연관된 조직; 또는 (iii) 전자 디바이스를 통해 이루어지는 거래와 관련된 사람 중 하나이다.
양태 8. 양태 1 내지 7 중 어느 하나의 방법에 있어서, 제1 정보는 제2 식별자의 제1 현재 값을 더 포함하고, 제1 비트 스트링을 사용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계는, (i) 제2 계층 식별자의 제1 현재 값을 사용하여 제1 비트 스트링의 적어도 일부를 인코딩하여 제2 비트 스트링을 생성하는 단계; 및 (ii) 제2 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계를 포함한다.
양태 9. 양태 8의 방법에 있어서, 통신 인터페이스 및 보안 통신 채널을 통해 전자 디바이스에 의해 적용될 인코딩 계층들의 수를 지시하는 데이터를 수신하는 단계를 더 포함한다.
양태 10. 양태 1 내지 양태 9 중 어느 하나의 방법에 있어서, (i) 하나 이상의 프로세서들에 의해, 사용자 인터페이스를 통해 이루어진 제2 키 엔트리를 검출하는 단계; (ii) 통신 인터페이스 및 보안 통신 채널을 통해 하나 이상의 프로세서들에 의해 원격 서버로부터 적어도 제1 계층 식별자의 제2 현재 값을 포함하는 제2 정보를 수신하는 단계; (iii) 하나 이상의 프로세서들에 의해 제1 계층 식별자의 제2 현재 값을 사용하여 제2 키 엔트리에 대응하는 제2 비트 스트링을 결정하는 단계; 및 (iv) 하나 이상의 프로세서들에 의해 제2 비트 스트링을 사용하여 데이터 스트링의 적어도 제2 부분을 생성하는 단계를 더 포함한다.
양태 11. 양태 10의 방법에 있어서, 제1 키 엔트리와 제2 키 엔트리 사이에 사용자 인터페이스를 통해 키 엔트리가 이루어지지 않는다.
양태 12. 양태 10의 방법에 있어서, (i) 제1 계층 식별자의 제1 현재 값은 제1 시간에 원격 서버에 의해 유지되는 레지스트리 내의 엔티티와 연관되고; 및 (ii) 제1 계층 식별자의 제2 현재 값은 제1 시간 이후의 제2 시간에 레지스트리 내의 엔티티와 연관된다.
양태 13. 양태 12의 방법에 있어서, 제1 엔티티는 (i) 전자 디바이스; (ii) 전자 디바이스와 연관된 조직; 또는 (iii) 전자 디바이스를 통해 이루어지는 거래와 연관된 사람 중 하나이다.
양태 14. 양태 10의 방법에 있어서, (i) 제1 정보는 제2 계층 식별자의 제1 현재 값을 더 포함하며; (ii) 제2 정보는 제2 계층 식별자의 제2 현재 값을 더 포함하고; (iii) 제1 비트 스트링을 사용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계는 (a) 제2 계층 식별자의 제1 현재 값을 사용하여 제1 비트 스트링의 적어도 일부를 인코딩하여 제3 비트 열을 생성하는 단계, 및 (b) 제3 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계를 포함하며; 그리고 (iv) 제2 비트 스트링을 이용하여 데이터 스트링의 적어도 제2 부분을 생성하는 단계는 (a) 제2 계층 식별자의 제2 현재 값을 이용하여 제2 비트 스트링의 적어도 일부를 인코딩하여 제4 비트 열을 생성하는 단계, 및 (b) 제4 비트 스트링을 이용하여 데이터 스트링의 적어도 제2 부분을 생성하는 단계를 포함한다.
양태 15. 양태 14의 방법에 있어서, (i) 원격 서버로부터 상기 제1 정보를 요청하는 단계; 및 (ii) 원격 서버로부터 상기 제2 정보를 요청하는 단계를 더 포함하고, 제1 정보를 수신하는 단계는 제1 정보를 요청한 단계에 대한 응답이고, 제2 정보를 수신하는 단계는 제2 정보를 요청하는 단계에 대한 응답이다.
양태 16. 전자 디바이스는 (i) 복수의 키들을 포함하는 사용자 인터페이스; (ii) 통신 인터페이스; (iii) 메모리; 및 (iv) 하나 이상의 프로세서들을 포함하고, 상기 프로세서들은 (a) 사용자 인터페이스를 통해 이루어진 제1 키 엔트리를 검출하고, (b) 원격 서버로부터 통신 인터페이스 및 보안 통신 채널을 통해 제1 계층 식별자의 적어도 제1 현재 값을 포함하는 제1 정보를 수신하고, (c) 제1 계층 식별자의 제1 현재 값을 사용하여 제1 키 엔트리에 대응하는 제1 비트 스트링을 결정하고, (d) 제1 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하며, (e) 데이터 스트링을 상기 메모리에 저장하고 및/또는 네트워크를 통해 다른 디바이스로 전송하게 하도록 구성된다.
양태 17. 양태 16의 전자 디바이스에 있어서, (i) 사용자 인터페이스는 물리적 키패드를 포함하고; (ii) 복수의 키들의 각각의 키는 하드웨어 키패드 상의 상이한 키이고; 및 (iii) 하나 이상의 프로세서들은 적어도 복수의 키들 중 어느 것이 터치되었는지 또는 누름인지를 검출함으로써 제1 키 엔트리를 검출하도록 구성된다.
양태 18. 양태 16의 전자 디바이스에 있어서, (i) 사용자 인터페이스는 전자 디바이스의 터치스크린 디스플레이 상에 제시된 가상 키패드를 포함하고; (ii) 복수의 키들의 각각의 키는 가상 키패드 상의 상이한 키이고; 및 (iii) 하나 이상의 프로세서들은 적어도 터치스크린 디스플레이의 어느 영역이 터치되었는지를 검출함으로써 제1 키 엔트리를 검출하도록 구성된다.
양태 19. 양태 16 내지 18의 어느 하나에 따른 전자 디바이스에 있어서, 제1 정보는 제2 계층 식별자의 제1 현재 값을 더 포함하고, 하나 이상의 프로세서들은 제1 비트 스트링을 사용하여 적어도 (i) 제2 계층 식별자의 제1 현재 값을 사용하여 제1 비트 스트링의 적어도 일부를 인코딩하여 제2 비트 열을 생성하고; 및 (ii) 제2 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성함으로써 데이터 스트링의 적어도 제1 부분을 생성하도록 구성된다.
양태 20. 양태 16 내지 양지 18 중 어느 하나의 전자 디바이스에 있어서, 하나 이상의 프로세서들은 (i) 사용자 인터페이스를 통해 이루어진 제2 키 엔트리를 검출하고; (ⅱ) 통신 인터페이스 및 보안 통신 채널을 통해 원격 서버로부터 제1 계층 식별자의 적어도 제2 현재 값을 포함하는 제2 정보를 수신하고; (iii) 제1 계층 식별자의 제2 현재 값을 사용하여 제2 키 엔트리에 대응하는 제2 비트 스트링을 결정하고; 및 (iv) 제2 비트 스트링을 이용하여, 데이터 스트링의 적어도 제2 부분을 생성하도록 더 구성된다.
양태 21. 복수의 디바이스들을 포함하는 통신 경로를 따라 데이터 스트링의 보안 통신을 제공하는, 하나 이상의 프로세서들 및 레지스트리 데이터베이스를 저장하는 메모리를 포함하는 서버에서 구현되는 방법에 있어서, (i) 레지스트리 데이터베이스에 제1 엔티티 및 제1 엔티티와 연관된 제1 식별자를 부가하는 단계; (ii) 레지스트리 데이터베이스에 제2 엔티티 및 제2 엔티티와 연관된 제2 식별자를 부가하는 단계; (ⅲ) 제1 보안 통신 채널을 통해, 데이터 스트링의 제1 인코딩을 가능하게 하기 위해 복수의 디바이스들 중 제1 디바이스에 제1 식별자의 제1 현재 값을 제공하는 단계로서, 제1 디바이스는 제1 엔티티와 연관되고, 데이터 스트링의 제1 인코딩은 제1 복수의 인코딩된 비트 시퀀스들로서 데이터 스트링의 복수의 비트 시퀀스들을 인코딩하는, 제1 식별자의 제1 현재 값을 제공하는 단계; (iv) 제2 보안 통신 채널을 통해, 데이터 스트링의 제2 인코딩을 가능하게 하기 위해 제2 식별자의 제1 현재 값을 상기 복수의 디바이스들 중 제2 디바이스에 제공하는 단계로서, 제2 디바이스는 제2 엔티티와 연관되고, 통신 경로의 제1 디바이스의 다운스트림이며, 데이터 스트링의 제2 인코딩은 제2 복수의 인코딩된 비트 시퀀스들로서 제1 복수의 인코딩된 비트 시퀀스들을 인코딩하는, 상기 제2 식별자의 제1 현재 값을 제공하는 단계; 및 (v) 제3 보안 통신 채널을 통해, 데이터 스트링의 디코딩을 가능하게 하기 위해 제1 식별자의 제1 현재 값 및 제2 식별자의 제1 현재 값을 복수의 디바이스들 중 제3 디바이스에 제공하는 단계로서, 제3 디바이스는 통신 경로의 제2 디바이스의 다운스트림인, 상기 제1 식별자의 제1 현재 값 및 제2 식별자의 제1 현재 값을 제공하는 단계를 포함한다.
양태 22. 양태 21의 방법에 있어서, 제1 복수의 인코딩된 비트 시퀀스들 각각은 제1 블록 크기를 갖고, 제2 복수의 인코딩된 비트 시퀀스들 각각은 제1 블록 크기와 상이한 제2 블록 크기를 갖는다.
양태 23. 양태 21 또는 22의 방법에 있어서, 제1 엔티티는 (i) 제1 디바이스; (ii) 사람; 또는 (iii) 조직 중 하나이다.
양태 24. 양태 21 내지 23 중 어느 하나의 방법에 있어서, 제2 디바이스는 네트워크 디바이스이고, 제2 엔티티는 (i) 네트워크 디바이스; 또는 (ii) 제2 디바이스에 의해 구현된 방화벽 중 하나이다.
양태 25. 양태 21 내지 24 중 어느 하나의 방법에 있어서, (i) 제1 보안 통신 채널을 통해, 후속 데이터 스트링의 제1 인코딩을 가능하게 하기 위해 제1 식별자의 제2 현재 값을 제1 디바이스에 제공하는 단계로서, 후속 데이터 스트링의 제1 인코딩은 제3 복수의 인코딩된 비트 시퀀스들로서 후속 데이터 스트링의 복수의 비트 시퀀스들을 인코딩하는, 상기 제1 식별자의 제2 현재 값을 제1 디바이스에 제공하는 단계; (ⅱ) 제2 보안 통신 채널을 통해, 후속 데이터 스트링의 제2 인코딩을 가능하게 하기 위해 제2 식별자의 제2 현재 값을 제2 디바이스에 제공하는 단계로서, 후속 데이터 스트링의 제2 인코딩은 제4 인코딩된 비트 시퀀스들로서 재3 복수의 인코딩된 비트 시퀀스들을 인코딩하는, 상기 제2 식별자의 제2 현재 값을 제2 디바이스에 제공하는 단계; 및 (ⅲ) 제3 보안 통신 채널을 통해, 제1 식별자의 제2 현재 값 및 제2 식별자의 제2 현재 값을 제3 디바이스에 제공하여 후속 데이터 스트링의 디코딩을 가능하게 하는 단계를 더 포함하고, (ⅰ) 제1 식별자의 제2 현재 값이 제1 식별자의 제1 현재 값과 다른 것, 또는 (ⅱ) 제2 식별자의 제2 현재 값이 제2 식별자의 제1 현재 값과 다른 것 중 하나 또는 모두에 해당한다.
양태 26. 양태 21 내지 25 중 어느 하나의 방법에 있어서, (i) 1 식별자의 제1 현재 값을 제1 디바이스에 제공하는 것은 제1 디바이스로부터 요청을 수신하는 것에 대한 응답; (ii) 제2 식별자의 제1 현재 값을 제2 디바이스에 제공하는 것은 제2 디바이스로부터 요청을 수신하는 것에 응답 중 하나 또는 둘 모두에 해당한다.
양태 27. 데이터 스트링의 보안 통신을 제공하는, 하나 이상의 프로세서들 및 레지스트리 데이터베이스를 저장하는 메모리를 포함하는 서버에서 구현되는 방법에 있어서, (i) 레지스트리 데이터베이스에 제1 엔티티 및 제1 엔티티와 연관된 제1 식별자를 부가하는 단계; (ii) 레지스트리 데이터베이스에 제2 엔티티 및 제2 엔티티와 연관된 제2 식별자를 부가하는 단계; (iii) 제1 엔티티 및 제2 엔티티와 연관된 소스 디바이스에, 제1 보안 통신 채널을 통해, (a) 제1 복수의 인코딩된 비트 시퀀스들로서 데이터 스트링의 복수의 비트 시퀀스들를 인코딩하는 데이터 스트링의 제1 인코딩을 가능하게 하기 위해 제1 식별자의 제1 현재 값, 및 (b) 제2 복수의 인코딩된 비트 시퀀스들로서 제1 복수의 인코딩된 비트 시퀀스들을 인코딩하는 데이터 스트링의 제2 인코딩을 가능하게 하기 위해 상기 제2 식별자의 제1 현재 값 모두를 제공하는 단계; 및 (iv) 제2 보안 통신 채널을 통해, 데이터 스트링의 디코딩을 가능하게 하기 위해 목적지 디바이스에 제1 식별자의 제1 현재 값 및 제2 식별자의 제1 현재 값을 제공하는 단계를 포함한다.
양태 28. 양태 27의 방법에 있어서, 제1 복수의 인코딩된 비트 시퀀스들은 제1 블록 크기를 갖고, 제2 복수의 인코딩된 비트 시퀀스들은 제1 블록 크기와 상이한 제2 블록 크기를 갖는다.
양태 29. 양태 27 또는 양태 28의 방법에 있어서, 제1 엔티티 및 제2 엔티티는, (i) 소스 디바이스; (ii) 사람; 또는 (iii) 조직 중 다른 하나이다.
양태 30. 양태 27 내지 양태 29 중 어느 하나의 방법에 있어서, (i) 제1 보안 통신 채널을 통해, 소스 디바이스에, (a) 제1 인코딩은 제3 복수의 인코딩된 비트 시퀀스로서 후속 데이터 스트링의 복수의 비트 시퀀스들을 인코딩하는 후속 데이터 스트링의 제1 인코딩을 가능하게 하기 위해 제1 식별자의 제2 현재 값, 및 (b) 제4 복수의 인코딩된 비트 시퀀스들로서 제3 복수의 인코딩된 비트 시퀀스들을 인코딩하는 후속 데이터 스트링의 제2 인코딩을 가능하게 하기 위해 제2 식별자의 제2 현재 값 모두를 제공하는 단계; 및 (ⅱ) 제3 보안 통신 채널을 통해, 제1 식별자의 제2 현재 값 및 제2 식별자의 제2 현재 값을 제3 디바이스에 제공하여 후속 데이터 스트링의 디코딩을 가능하게 하는 단계를 더 포함하고, 제1 식별자의 제2 현재 값은 제1 식별자의 제1 현재 값과 상이하고 및/또는 제2 식별자의 제2 현재 값은 제2 식별자의 제1 현재 값과 상이하다.
양태 31. 양태 27 내지 30 중 어느 하나의 방법에 있어서, 제1 디바이스에 (i)제1 식별자의 제1 현재 값, 및 (ii) 제2 식별자의 제1 현재 값 중 한 또는 모두를 제공하는 단계는 제1 디바이스로부터 요청을 수신한 것에 대한 응답이다.
양태 32. 하나 이상의 프로세서들, 통신 인터페이스, 및 메모리를 갖는 전자 디바이스에서 구현되는 방법에 있어서, (i) 상기 하나 이상의 프로세서들에 의해 인코딩된 데이터 스트링을 획득하는 단계; (ii) 상기 통신 인터페이스 및 보안 통신 채널을 통해, 상기 하나 이상의 프로세서들에 의해 원격 서버로부터 N 개의 식별자들의 현재 값들을 수신하는 단계로서, 상기 N 개의 식별자들 각각은 (a) 각각이 상기 인코딩된 데이터 스트링의 통신과 연관된 복수의 엔티티들의 각각의 하나와 연관되며, 그리고 (b) N 개의 디코딩 동작들 각각의 하나에 대응되고, 상기 N 개의 디코딩 동작들 각각은 각각의 블록 크기를 갖는 비트들의 블록들 상에서 동작하고, N은 1보다 큰 정수인, 상기 N 개의 식별자들의 현재 값들을 수신하는 단계; (iii) 상기 하나 이상의 프로세서들에 의해, 상기 N 개의 디코딩 동작들이 상기 인코딩된 데이터 스트링에 적용될 시퀀스를 결정하는 단계; (iv) 상기 하나 이상의 프로세서들에 의해, 상기 결정된 시퀀스에 따라 상기 인코딩된 데이터 스트링에 대해 상기 N 개의 디코딩 동작들을 수행함으로써 디코딩된 데이터 스트링을 생성하는 단계로서, 상기 N 개의 디코딩 동작들을 수행하는 단계는, 상기 N 개의 디코딩 동작들의 각각의 디코딩 동작에 대해, (a) 상기 인코딩된 데이터 스트링의 적어도 일부, 또는 상기 N 개의 디코딩 동작들 중 이전의 것으로부터 부분적으로 디코딩된 데이터 스트링의 적어도 일부를 상기 각각의 블록 크기를 갖는 블록들로 파싱하는 단계, (b) 상기 각각의 블록 크기를 갖는 상기 블록들 각각을 개별적으로 디코딩하는 단계, 및 (c) 상기 제1 N-1 디코딩 동작들에 대해, 상기 개별적으로 디코딩된 블록들의 스트링을 상기 N 개의 디코딩 동작들의 다음 하나에 전달하는 단계를 포함하는, 상기 디코딩된 데이터 스트링을 생성하는 단계; 및 (v) 상기 하나 이상의 프로세서들에 의해, 상기 디코딩된 데이터 스트링이 (i) 상기 메모리에 저장 및 (ii) 다른 디바이스로 전송되는 것 중 하나 또는 둘 모두가 되게 하는 단계를 포함한다.
양태 33. 양태 32의 방법에 있어서, 인코딩된 데이터 스트링을 획득하는 단계는 네트워크를 통해 다른 전자 디바이스로부터 인코딩된 데이터 스트링을 수신하는 단계를 포함한다.
양태 34. 양태 32의 방법에 있어서, 인코딩된 데이터 스트링을 획득하는 단계는 전자 디바이스의 메모리로부터 인코딩된 데이터 스트링을 검색하는 단계를 포함한다.
양태 35. 양태 32 내지 34 중 어느 하나의 방법에 있어서, N개의 디코딩 동작들이 인코딩된 데이터 스트링에 적용될 시퀀스를 결정하는 단계는 통신 인터페이스 및 보안 통신 채널을 통해 시퀀스의 지시를 수신하는 단계를 포함한다.
양태 36. 양태 32 내지 양태 35 중 어느 하나의 방법에 있어서, 복수의 엔티티들은 (i) 인코딩된 데이터 스트링에 대응하는 정보가 수동으로 입력된 다른 전자 디바이스; (ii) 사람; (iii) 조직 (iv) 네트워크 디바이스; 또는 (v) 방화벽 중 두 개 이상을 포함한다.
양태 37. 서버에 있어서, 레지스트리 데이터베이스를 저장하는 제1 메모리; 명령을 저장하는 제2 메모리; 및 하나 이상의 프로세서들로서, 제1 엔티티 및 상기 제1 엔티티와 연관된 제1 식별자를 상기 레지스트리 데이터베이스에 추가하고, 제2 엔티티 및 상기 제2 엔티티와 연관된 제2 식별자를 상기 레지스트리 데이터베이스에 추가하고, 제1 보안 통신 채널을 통해, 데이터 스트링의 제1 인코딩을 가능하게 하기 위해 상기 제1 식별자의 제1 현재 값을 상기 데이터 스트링에 대한 통신 경로의 복수의 디바이스들 중 제1 디바이스에 제공하고, 여기서 상기 제1 디바이스는 상기 제1 엔티티와 연관되며, 상기 데이터 스트링의 상기 제1 인코딩은 제1 복수의 인코딩된 비트 시퀀스로서 상기 데이터 스트링의 복수의 비트 시퀀스들을 인코딩하고, 제2 보안 통신 채널을 통해, 상기 데이터 스트링의 제2 인코딩을 가능하게 하기 위해 상기 제2 식별자의 제1 현재 값을 제공하며, 상기 제2 식별자의 제1 현재 값을 상기 복수의 디바이스들 중 제2 디바이스에 제공하고, 상기 제2 디바이스는 상기 제2 엔티티와 연관되며 상기 통신 경로의 상기 제1 디바이스의 다운스트림이고, 상기 데이터 스트링의 상기 제2 인코딩은 제2 복수의 인코딩된 비트 시퀀스로서 상기 제1 복수의 인코딩된 비트 시퀀스들을 인코딩하고, 및 제3 보안 통신 채널을 통해, 상기 데이터 스트링의 디코딩을 가능하게 하기 위해 상기 제1 식별자의 상기 제1 현재 값 및 상기 제2 식별자의 상기 제1 현재 값을 상기 복수의 디바이스들 중 상기 통신 경로의 상기 제2 디바이스의 다운스트림인 제3 디바이스에 제공하기 위한 명령을 실행하도록 구성된, 상기 하나 이상의 프로세서들을 포함한다.
양태 38. 양태 37의 서버에 있어서, 제1 복수의 인코딩된 비트 시퀀스들 각각은 제1 블록 크기를 갖고, 제2 복수의 인코딩된 비트 시퀀스들 각각은 제1 블록 크기와 상이한 제2 블록 크기를 갖는다.
양태 39. 양태 37 또는 38의 서버에 있어서, 제1 엔티티는 (i) 제1 디바이스; (ii) 사람; 또는 (iii) 조직 중 하나이다.
양태 40. 양태 37 내지 40 중 어느 하나의 서버에 있어서, 제2 디바이스는 네트워크 디바이스이고, 제2 엔티티는 (i) 네트워크 디바이스; 또는 (ii) 제2 디바이스에 의해 구현된 방화벽 중 하나이다.
X. 기타 고려 사항
여기에 설명된 예시적인 방법들의 다양한 동작들은 관련 동작들을 수행하도록 (예를 들어, 소프트웨어 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서들에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되든 이러한 프로세서들은 하나 이상의 동작들 또는 기능들을 수행하도록 작동하는 프로세서-구현 모듈을 구성할 수 있다. 본 명세서에서 언급된 모듈은, 일부 실시 예에서, 프로세서-구현 모듈을 포함할 수 있다.
유사하게, 여기서 설명된 방법 또는 루틴은 적어도 부분적으로 프로세서-구현될 수 있다. 예를 들어, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서들 또는 프로세서-구현 하드웨어 모듈에 의해 수행될 수 있다. 특정 동작들의 성능은 단일 시스템 내에 있을뿐만 아니라 여러 시스템에 배치된 하나 이상의 프로세서들 간에 분산될 수 있다. 일 실시 예에서, 프로세서 또는 프로세서들은 단일 위치(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜)에 위치될 수 있는 반면, 다른 실시 예들에서는 프로세서들은 다수의 위치들에 걸쳐 분산될 수 있다.
특정 동작들의 성능은 단일 머신 내에 있을뿐만 아니라 다수의 머신들에 배치된 하나 이상의 프로세서들 사이에 분산될 수 있다. 일부 예시적인 실시 예들에서, 하나 이상의 프로세서들 또는 프로세서-구현 모듈들은 단일 지리적 위치(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내)에 위치할 수 있다. 다른 예시적인 실시 예들에서, 하나 이상의 프로세서들 또는 프로세서-구현 모듈들은 다수의 지리적 위치들에 걸쳐 분산될 수 있다.
달리 명시적으로 언급되지 않는 한, 본 명세서에서 "처리(processing)", "컴퓨팅(computing)", "계산(calculating)", "결정(determining)", "제시(presenting)", "표시(displaying)" 등과 같은 용어를 사용한 설명은 하나 이상의 메모리들(예를 들어, 휘발성 메모리, 비-휘발성 메모리, 또는 이들의 조합), 레지스터들 또는 정보를 수신, 저장, 전송 또는 표시하는 다른 기계 구성 요소들 내의 물리(예를 들어, 전자, 자기 또는 광학)량으로 표현된 데이터를 조작하거나 변환하는 기계(예를 들어, 컴퓨터)의 동작 또는 프로세스를 지칭할 수 있다.
본 명세서에 사용된 바와 같이, "일 실시 예"또는 "실시 예"에 대한 임의의 참조는 실시 예와 관련하여 설명된 특정 요소, 특징, 구조 또는 특성이 적어도 하나의 실시 예에 포함됨을 의미한다. 명세서의 다양한 곳에서 "일 실시 예에서"라는 문구가 반드시 동일한 실시 예를 지칭하는 것은 아니다.
본 명세서에 사용된 바와 같이, 용어 "포함한다(comprises)", "포함하는(comprising)", "포함한다(include)", "포함하는(including)", "가지고 있다(has)", "가지고 있는(having)" 또는 임의의 다른 변형은 비-독점적인 포함을 포함하도록 의도된다. 예를 들어, 요소들의 리스트를 포함하는 프로세스, 방법, 물품 또는 디바이스는 반드시 그 요소들에만 한정되는 것이 아니라 명시적으로 열거되지 않거나 그러한 프로세스, 방법, 물품 또는 디바이스에 내재된 다른 요소들을 포함할 수 있다. 또한, 반대로 명시적으로 언급되지 않는 한, "또는"은 배타적인 또는 포함하지 않는 것을 의미한다. 예를 들어 조건 A 또는 B는 다음 중 하나에 의해 충족된다: A는 참(또는 존재)이고 B는 거짓(또는 존재하지 않음), A는 거짓(또는 존재하지 않음), B는 참(또는 존재) , A와 B는 모두 참(또는 존재).
또한, 단수 표현("a" 또는 "an")의 사용은 본 명세서의 실시 예의 요소들 및 구성 요소들을 설명하기 위해 사용된다. 이것은 단지 편의를 위해 설명의 일반적인 의미를 부여하기 위해 수행된다. 이 설명 및 하기의 청구 범위는 하나 또는 적어도 하나를 포함하도록 읽혀져야 하며, 단수는 그것이 다르게 의미되는 것이 명백하지 않는 한 복수를 포함한다. 이 상세한 설명은, 모든 가능한 실시 예들을 설명하는 것이 불가능하지는 않더라도 이는 비실용적 일 수 있으므로, 모든 가능한 실시 예들을 설명하는 것이 아니라 예시로서 해석되어야 한다. 본 출원의 출원일 이후에 개발된 현재의 기술 또는 기술을 사용하여 다수의 다른 실시 예들을 구현할 수 있다.
"수단(means for)" 또는 "단계(step for)"와 같은 언어가 청구항(들)에 명시적으로 기재된 것과 같이, 전통적인 수단-플러스-기능 언어가 명시적으로 언급되지 않는 한 이 특허 출원의 마지막에 있는 특허 청구는 35 U.S.C. §112(f)에 의거하여 해석되지 않는다.

Claims (20)

  1. 복수의 키들이 구비된 사용자 인터페이스, 통신 인터페이스, 메모리 및 하나 이상의 프로세서들을 갖는 전자 디바이스에서 구현되는 방법에 있어서,
    상기 사용자 인터페이스를 통해 이루어지는 제1 키 엔트리를 상기 하나 이상의 프로세서들에 의해 검출하는 단계;
    원격 서버로부터 제1 계층 식별자의 적어도 제1 현재 값을 포함하는 제1 정보를 상기 통신 인터페이스 및 보안 통신 채널을 통해 상기 하나 이상의 프로세서들에 의해 수신하는 단계;
    상기 제1 키 엔트리에 대응되는 제1 비트 스트링을 상기 하나 이상의 프로세서들에 의해 및 상기 제1 계층 식별자의 상기 제1 현재 값을 사용하여 결정하는 단계;
    상기 제1 비트 스트링을 사용하여 데이터 스트링의 적어도 제1 부분을 상기 하나 이상의 프로세서들에 의해 생성하는 단계; 및
    상기 데이터 스트링이 (i) 상기 메모리에 저장, 및 (ii) 네트워크를 통해 다른 디바이스로 전송되는 것 중 하나 또는 모두를 상기 하나 이상의 프로세서들에 의해 야기시키는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 사용자 인터페이스는 하드웨어 키패드를 포함하고, 상기 복수의 키들의 각각의 키는 상기 하드웨어 키패드 상의 상이한 키이고, 상기 제1 키 엔트리를 검출하는 단계는 상기 복수의 키들 중 어느 것이 터치되거나 눌려졌는지를 검출하는 단계를 포함하는 것을 특징으로 하는 방법.
  3. 청구항 1에 있어서, 상기 사용자 인터페이스는 상기 전자 디바이스의 터치스크린 디스플레이 상에 제시되는 가상 키패드를 포함하고, 상기 복수의 키들의 각각의 키는 상기 가상 키패드 상의 상이한 키이고, 상기 제1 키 엔트리를 검출하는 단계는 상기 터치스크린 디스플레이의 어느 영역이 터치되었는지를 검출하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 청구항 1에 있어서, 원격 서버로부터 상기 제1 정보를 요청하는 단계를 더 포함하고, 상기 제1 정보를 수신하는 단계는 상기 제1 정보를 요청하는 단계에 대한 응답인 것을 특징으로 하는 방법.
  5. 청구항 4에 있어서, 상기 제1 정보를 요청하는 단계는 (i) 상기 제1 키 엔트리를 검출하는 단계에 대한 응답이거나, 또는 (ii) 상기 제1 키 엔트리를 검출하는 단계에 앞서는 것을 특징으로 하는 방법.
  6. 청구항 1에 있어서, 상기 제1 계층 식별자는 상기 원격 서버에 의해 유지 관리되는 레지스트리 내의 엔티티와 연관되는 것을 특징으로 하는 방법.
  7. 청구항 6에 있어서, 상기 엔티티는,
    상기 전자 디바이스;
    상기 전자 디바이스와 연관된 조직; 또는
    상기 전자 디바이스를 통해 이루어지는 거래와 연관된 사람 중 하나인 것을 특징으로 하는 방법.
  8. 청구항 1에 있어서, 상기 제1 정보는 제2 계층 식별자의 제1 현재 값을 더 포함하고, 상기 제1 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하는 단계는,
    상기 제2 계층 식별자의 상기 제1 현재 값을 이용하여 상기 제1 비트 스트링의 적어도 일 부분을 인코딩하여 제2 비트 스트링을 생성하는 단계; 및
    상기 제2 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제1 부분을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 청구항 8에 있어서,
    상기 통신 인터페이스 및 보안 통신 채널을 통해, 상기 전자 디바이스에 의해 적용될 다수의 인코딩 계층들을 나타내는 데이터를 수신하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  10. 청구항 1에 있어서,
    상기 사용자 인터페이스를 통해 이루어진 제2 키 엔트리를 상기 하나 이상의 프로세서들에 의해 검출하는 단계;
    상기 원격 서버로부터 상기 제1 계층 식별자의 적어도 제2 현재 값을 포함하는 제2 정보를 상기 통신 인터페이스 및 상기 보안 통신 채널을 통해 상기 하나 이상의 프로세서들에 의해 수신하는 단계;
    상기 제2 키 엔트리에 대응되는 제2 비트 스트링을 상기 하나 이상의 프로세서들에 의해 및 상기 제1 계층 식별자의 상기 제2 현재 값을 이용하여 결정하는 단계; 및
    상기 데이터 스트링의 적어도 제2 부분을 상기 하나 이상의 프로세서들에 의해 및 상기 제2 비트 스트링을 이용하여 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 청구항 10에 있어서, 상기 제1 키 엔트리와 상기 제2 키 엔트리 사이에 상기 사용자 인터페이스를 통해 키 엔트리가 행해지지 않은 것을 특징으로 하는 방법.
  12. 청구항 10에 있어서,
    상기 제1 계층 식별자의 상기 제1 현재 값은 제1 시간에 상기 원격 서버에 의해 유지 관리되는 레지스트리 내의 엔티티와 연관되며; 및
    상기 제1 계층 식별자의 상기 제2 현재 값은 상기 제1 시간보다 늦은 제2 시간에 상기 레지스트리 내의 상기 엔티티와 연관되는 것을 특징으로 하는 방법.
  13. 청구항 12에 있어서, 상기 엔티티는,
    상기 전자 디바이스;
    상기 전자 디바이스와 연관된 조직; 또는
    상기 전다 디바이스를 통해 이루어지는 거래와 연관된 사람 중 하나인 것을 특징으로 하는 방법.
  14. 청구항 10에 있어서,
    상기 제1 정보는 제2 계층 식별자의 제1 현재 값을 더 포함하고;
    상기 제2 정보는 상기 제2 계층 식별자의 제2 현재 값을 더 포함하고;
    상기 제1 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제1 부분을 생성하는 단계는,
    상기 제2 계층 식별자의 상기 제1 현재 값을 이용하여 상기 제1 비트 스트링의 적어도 일 부분을 인코딩하여 제3 비트 스트링을 생성하는 단계와,
    상기 제3 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제1 부분을 생성하는 단계를 포함하고; 및
    상기 제2 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제2 부분을 생성하는 단계는,
    상기 제2 계층 식별자의 상기 제2 현재 값을 이용하여 상기 제2 비트 스트링의 적어도 일 부분을 인코딩하여 제4 비트 스트링을 생성하는 단계, 및
    상기 제4 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제2 부분을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 청구항 14에 있어서,
    상기 원격 서버로부터 상기 제1 정보를 요청하는 단계; 및
    상기 원격 서버로부터 상기 제2 정보를 요청하는 단계를 더 포함하고,
    상기 제1 정보를 수신하는 단계는 상기 제1 정보를 요청하는 단계에 대한 응답이고,
    상기 제2 정보를 수신하는 단계는 상기 제2 정보를 요청하는 단계에 대한 응답인 것을 특징으로 하는 방법.
  16. 전자 디바이스에 있어서,
    복수의 키들을 포함하는 사용자 인터페이스;
    통신 인터페이스;
    메모리; 및
    하나 이상의 프로세서들로서,
    상기 사용자 인터페이스를 통해 이루어진 제1 키 엔트리를 검출하고,
    상기 통신 인터페이스 및 보안 통신 채널을 통해 제1 계층 식별자의 적어도 제1 현재 값을 포함하는 제1 정보를 수신하고,
    상기 제1 계층 식별자의 상기 제1 현재 값을 이용하여 상기 제1 키 엔트리에 대응되는 제1 비트 스트링을 결정하고,
    상기 제1 비트 스트링을 이용하여 데이터 스트링의 적어도 제1 부분을 생성하고,
    상기 데이터 스트링이 (i) 상기 메모리에 저장, 및 (ii) 네트워크를 통해 다른 디바이스로 전송되는 것 중 하나 또는 모두를 야기하도록 구성된, 상기 하나 이상의 프로세서들을 포함하는 전자 디바이스.
  17. 청구항 16에 있어서,
    상기 사용자 인터페이스는 물리적 키패드를 포함하고;
    상기 복수의 키들의 각각의 키는 상기 하드웨어 키패드 상의 상이한 키이고; 및
    상기 하나 이상의 프로세서들은 적어도 상기 복수의 키들 중 어느 것이 터치되거나 눌려졌는지를 검출함으로써 상기 제1 키 엔트리를 검출하도록 구성된 것을 특징으로 하는 전자 디바이스.
  18. 청구항 16에 있어서,
    상기 사용자 인터페이스는 상기 전자 디바이스의 터치스크린 디스플레이 상에 제시되는 가상 키패드를 포함하고;
    상기 복수의 키들의 각각의 키는 상기 가상 키패드 상의 상이한 키이고; 및
    상기 하나 이상의 프로세서들은 적어도 터치스크린 디스플레이의 어느 영역이 터치되었는지를 검출함으로써 상기 제1 키 엔트리를 검출하도록 구성된 것을 특징으로 하는 전자 디바이스.
  19. 청구항 16에 있어서, 상기 제1 정보는 제2 계층 식별자의 제1 현재 값을 더 포함하고, 상기 하나 이상의 프로세서들은 상기 제1 비트 스트링을 이용하여
    적어도 상기 제2 계층 식별자의 상기 제1 현재 값을 이용하여 상기 제1 비트 스트링의 적어도 일 부분을 인코딩하여 제2 비트 스트링을 생성하고; 및
    상기 제2 비트 스트링을 이용하여 상기 데이터 스트링의 적어도 상기 제1 부분을 생성함으로써, 상기 데이터 스트링의 적어도 상기 제1 부분을 생성하도록 구성된 것을 특징으로 하는 전자 디바이스.
  20. 청구항 16에 있어서, 상기 하나 이상의 프로세서들은,
    상기 사용자 인터페이스를 통해 이루어진 제2 키 엔트리를 검출하고;
    상기 통신 인터페이스 및 상기 보안 통신 채널을 통해 상기 원격 서버로부터 상기 제1 계층 식별자의 적어도 제2 현재 값을 포함하는 제2 정보를 수신하고;
    상기 제1 계층 식별자의 상기 제2 현재 값을 이용하여 상기 제2 키 엔트리에 대응되는 제2 비트 스트링을 결정하고; 및
    상기 제2 비트 스트링을 이용하여, 상기 데이터 스트링의 적어도 제2 부분을 생성하도록 구성된 것을 특징으로 하는 전자 디바이스.
KR1020187035019A 2016-05-27 2016-10-07 민감한 데이터의 보안 수집 KR102180658B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662342491P 2016-05-27 2016-05-27
US201662342490P 2016-05-27 2016-05-27
US62/342,490 2016-05-27
US62/342,491 2016-05-27
PCT/US2016/055971 WO2017204845A1 (en) 2016-05-27 2016-10-07 Secure collection of sensitive data

Publications (2)

Publication Number Publication Date
KR20190004328A true KR20190004328A (ko) 2019-01-11
KR102180658B1 KR102180658B1 (ko) 2020-11-19

Family

ID=57190236

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187035008A KR102180508B1 (ko) 2016-05-27 2016-10-07 민감한 데이터의 보안 전송
KR1020187035019A KR102180658B1 (ko) 2016-05-27 2016-10-07 민감한 데이터의 보안 수집

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020187035008A KR102180508B1 (ko) 2016-05-27 2016-10-07 민감한 데이터의 보안 전송

Country Status (7)

Country Link
US (2) US9749302B1 (ko)
EP (2) EP3465524B1 (ko)
KR (2) KR102180508B1 (ko)
CN (2) CN109416722B (ko)
CA (2) CA3024139C (ko)
ES (2) ES2809489T3 (ko)
WO (2) WO2017204845A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289384B2 (en) 2014-09-12 2019-05-14 Oracle International Corporation Methods, systems, and computer readable media for processing data containing type-length-value (TLV) elements
EP3182666B1 (en) * 2015-12-16 2023-01-25 Materna Virtual Solution GmbH Secure transmission of local private encoding data
US10193802B2 (en) 2016-09-13 2019-01-29 Oracle International Corporation Methods, systems, and computer readable media for processing messages using stateful and stateless decode strategies
US10341411B2 (en) * 2017-03-29 2019-07-02 Oracle International Corporation Methods, systems, and computer readable media for providing message encode/decode as a service
TWI726236B (zh) * 2018-09-05 2021-05-01 林保成 個人雲系統及其相關本地化方法
US10984137B2 (en) 2019-02-15 2021-04-20 Charter Communications Operating, Llc Secure data at rest
US11176262B2 (en) 2019-02-15 2021-11-16 Charter Communications Operating, Llc Secure cloaking of data
US11561997B2 (en) 2019-03-13 2023-01-24 Oracle International Corporation Methods, systems, and computer readable media for data translation using a representational state transfer (REST) application programming interface (API)
CN110084065B (zh) * 2019-04-29 2021-07-30 北京口袋时尚科技有限公司 数据脱敏方法及装置
WO2020256705A1 (en) * 2019-06-18 2020-12-24 Visa International Service Association Cross-border quick response (qr) payment flow for encrypted primary account number (pan) payment flow
US11095691B2 (en) 2019-06-26 2021-08-17 Oracle International Corporation Methods, systems, and computer readable media for establishing a communication session between a public switched telephone network (PSTN) endpoint and a web real time communications (WebRTC) endpoint
US11880472B2 (en) * 2021-01-14 2024-01-23 Bank Of America Corporation Generating and disseminating mock data for circumventing data security breaches
WO2024160258A1 (en) * 2023-02-01 2024-08-08 Lemon Inc. Methods for improving latency and data consistency in large databases for bidirectional lookup

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012000092A1 (en) * 2010-06-28 2012-01-05 Lionstone Capital Corporation Seamless end-to-end data obfuscation and encryption
US20150007265A1 (en) * 2013-06-27 2015-01-01 Selim Aissi Secure data transmission and verification with untrusted computing devices

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6970886B1 (en) * 2000-05-25 2005-11-29 Digimarc Corporation Consumer driven methods for associating content indentifiers with related web addresses
US8819141B2 (en) * 2003-05-16 2014-08-26 Syniverse Icx Corporation Centralized mobile and wireless messaging opt-out registry system and method
US8464311B2 (en) * 2004-10-28 2013-06-11 International Business Machines Corporation Method and system for implementing privacy notice, consent, and preference with a privacy proxy
CN101064595B (zh) * 2006-04-27 2011-07-27 联想(北京)有限公司 一种计算机网络安全输入认证系统和方法
CN101335746A (zh) * 2007-06-29 2008-12-31 国际商业机器公司 保护软件系统的完整性的安全设备和方法及其系统
CN101808077B (zh) * 2009-02-13 2013-05-08 普天信息技术研究院有限公司 信息安全输入处理系统和方法以及智能卡
US8826455B2 (en) * 2009-02-17 2014-09-02 International Business Machines Corporation Method and apparatus for automated assignment of access permissions to users
US20120254386A1 (en) * 2011-04-01 2012-10-04 Verisign, Inc. Transfer of DNSSEC Domains
US9224000B1 (en) * 2011-06-14 2015-12-29 Ionic Security, Inc. Systems and methods for providing information security using context-based keys
CN102867159B (zh) * 2011-07-05 2015-04-01 腾讯科技(深圳)有限公司 通过软键盘实现密码输入的方法、系统、客户端及服务器
US9077687B2 (en) * 2012-05-10 2015-07-07 Centurylink Intellectual Property Llc System and method for secure machine-to-machine communications
US20140177825A1 (en) * 2012-12-20 2014-06-26 Protegrity Corporation Asymmetric Tokenization
CN103607402B (zh) * 2013-11-26 2016-11-23 广州博冠信息科技有限公司 一种网络游戏数据加密以及解密方法和设备
CN104834840B (zh) * 2014-07-03 2018-05-08 中国人民解放军92728部队 基于映射漂移技术的密码保护方法
US9390282B2 (en) 2014-09-03 2016-07-12 Microsoft Technology Licensing, Llc Outsourcing document-transformation tasks while protecting sensitive information
US9973475B2 (en) 2014-10-22 2018-05-15 Protegrity Corporation Data computation in a multi-domain cloud environment
CN104821879B (zh) * 2015-04-08 2018-04-10 中国南方电网有限责任公司电网技术研究中心 一种电力系统数据调动中的加密方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012000092A1 (en) * 2010-06-28 2012-01-05 Lionstone Capital Corporation Seamless end-to-end data obfuscation and encryption
US20150007265A1 (en) * 2013-06-27 2015-01-01 Selim Aissi Secure data transmission and verification with untrusted computing devices

Also Published As

Publication number Publication date
CN109478221A (zh) 2019-03-15
EP3465523B1 (en) 2020-04-29
EP3465523A1 (en) 2019-04-10
KR20190004327A (ko) 2019-01-11
EP3465524A1 (en) 2019-04-10
US9749302B1 (en) 2017-08-29
KR102180508B1 (ko) 2020-11-18
WO2017204846A1 (en) 2017-11-30
CA3024139C (en) 2021-07-13
CN109416722B (zh) 2021-11-19
CA3024139A1 (en) 2017-11-30
WO2017204845A1 (en) 2017-11-30
EP3465524B1 (en) 2020-05-06
ES2808209T3 (es) 2021-02-25
CA3024362C (en) 2021-06-15
KR102180658B1 (ko) 2020-11-19
US9639714B1 (en) 2017-05-02
ES2809489T3 (es) 2021-03-04
CN109416722A (zh) 2019-03-01
CN109478221B (zh) 2022-03-15
CA3024362A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
KR102180658B1 (ko) 민감한 데이터의 보안 수집
CN107925581B (zh) 生物体认证系统以及认证服务器
US8365988B1 (en) Dynamic credit card security code via mobile device
US10915897B2 (en) Token management for enhanced omni-channel payments experience and analytics
US7702918B2 (en) Distributed network system using biometric authentication access
US20140211944A1 (en) System and method of protecting, storing and decrypting keys over a computerized network
US20090013402A1 (en) Method and system for providing a secure login solution using one-time passwords
US20140258718A1 (en) Method and system for secure transmission of biometric data
US11824850B2 (en) Systems and methods for securing login access
CN106572076A (zh) 一种Web服务访问方法、一种客户端、一种服务端
JP6518378B1 (ja) 認証システム、認証方法、及び、認証プログラム
JP2004341832A (ja) 個人情報管理方法及びシステム、開示用識別子発行装置、個人情報開示装置
JP4641121B2 (ja) ログインパスワードの生成登録方法
WO2011058629A1 (ja) 情報管理システム
CN118827206A (zh) 一种基于区块链的身份认证方法及装置
CN116263918A (zh) 免密登录数据处理方法以及免密登录数据处理系统
KR20210000238A (ko) 준마스터키를 이용해 마스터패스워드에 대한 Readability Test 해킹을 방어하는 방법
PH12015000069A1 (en) System, method and computer program product for securely managing sensitive information

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right