KR20180048423A - 비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법 - Google Patents

비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법 Download PDF

Info

Publication number
KR20180048423A
KR20180048423A KR1020170145411A KR20170145411A KR20180048423A KR 20180048423 A KR20180048423 A KR 20180048423A KR 1020170145411 A KR1020170145411 A KR 1020170145411A KR 20170145411 A KR20170145411 A KR 20170145411A KR 20180048423 A KR20180048423 A KR 20180048423A
Authority
KR
South Korea
Prior art keywords
software component
user terminal
input data
user
data
Prior art date
Application number
KR1020170145411A
Other languages
English (en)
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 KR20180048423A publication Critical patent/KR20180048423A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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
    • G06F21/36User authentication by graphic or iconic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • 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/2103Challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Virology (AREA)
  • Telephonic Communication Services (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 사용자 단말(UT)에서의 민감한 작업을 안전하게 수행하는 방법에 관한 것으로, 이 방법은:
보안 프로세서(ASRV, SE)에서 사용자 단말로, 부당한 조작(tampering)과 역공학(reverse-engineering)에 대응해 보호되어 있고 민감한 작업을 수행하는 소프트웨어 컴포넌트(GC) 및 소프트웨어 컴포넌트의 입력 데이터(SGi, RNi, INi, INj)를 전송하는 단계로서, 소프트웨어 컴포넌트는 두 개의 무작위 선택된 유효 값들(RNiV1, RNiV2)을 포함하는 제1 입력 데이터(RNi), 및 무효 값들을 수신하도록 구성된 제1 입력을 포함하고, 수신된 입력 데이터는 제1 입력 데이터의 유효 값들을 포함하는, 상기 전송 단계;
수신된 입력 데이터에서 제1 입력 데이터의 유효 값들 중 하나를 임의로 선택하는 단계; 및,
수신된 입력 데이터를 소프트웨어 컴포넌트의 입력들에 적용하고 선택된 유효 값을 소프트웨어 컴포넌트의 제1 입력에 적용하여 소프트웨어 컴포넌트를 실행하는 단계로서, 상기 소프트웨어 컴포넌트의 실행은 선택된 유효 값에 따른 출력 데이터(PXi)를 제공하는, 상기 실행 단계;를 포함한다.

Description

비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법{METHOD FOR SECURING A TRANSACTION PERFORMED FROM A NON-SECURE TERMINAL}
본 발명은 비보안 단말로부터 사용자를 안전하게 인증하고 그러한 비보안 단말 및 원격 서버를 수반하는 보안 트랜잭션을 상기 사용자 인증에 기반하여 실행하기 위한 방법 및 장치에 관한 것이다.
스마트폰, 개인용 컴퓨터, 디지털 태블릿 등과 같은 이동 단말 또는 사물 인터넷(IoT)에 속한 장치를 포함하는 기타 연결된 장치로부터 개시된 트랜잭션(예를 들어, 전자 상거래 트랜잭션 또는 자금 이체)를 실행하는 것이 바람직할 것이다(청구된 방법은 인간을 필요로 하기 때문에, 사물 인터넷이 적절하다는 것은 확실하지 않음). 그러나, 이는 특히 "악성 소프트웨어" 또는 "맬웨어"가 해당 단말의 프로세서(CPU)에 의해서 실행될 수 있기 때문에 보안 문제를 야기한다. 맬웨어는 프로세서가 액세스할 수 있는 메모리의 전부 또는 일부에 액세스할 수 있으므로, 해당 단말에서 실행되는 모든 트랜잭션을 감시하고 네트워크를 통해 전송되도록 이러한 트랜잭션들 동안에 조작되는 모든 비밀 데이터를 복구하도록 악의적으로 구성될 수 있다 .
이러한 트랜잭션의 보안을 보장하기 위해, UICC(Universal Integrated Circuit Card) 카드의 프로세서, 예를 들어, 일반적으로 휴대 전화가 장착하고 있는 SIM(가입자 식별 모듈) 카드의 프로세서와 같은 전용 보안 요소에 암호화 컴퓨팅을 위임하는 것이 이미 제안되어있다. 하나 이상의 결제 애플리케이션을 실행할 수 있으려면, 보안 프로세서가 이러한 결제 애플리케이션과 동일한 수의 비밀 암호 키를 저장할 수 있어야 한다. 그러나 보안 프로세서의 메모리에 애플리케이션을 로딩하는 연산은 매우 안전해야 하는 복잡한 연산이다. 특히, TSM(Trusted Service Manager)와 같은 외부 관리자가 개입될 수 있다. SIM 카드는 휴대 전화 사업자가 발행하므로, 후자는 그러한 애플리케이션을 상기 SIM 카드에 설치하는 것을 거부할 수 있다. 또한, 전화의 도난 또는 전화 유지 관리 중에, SIM 카드의 프로세서는 그의 메모리에 저장된 비밀 키를 발견하고자 하는 해커에 의해 해킹될 수 있다.
또한, SIM 카드의 프로세서에 설치된 보안 기능에 액세스하는 것은 일반적으로 단말의 메인 프로세서에 연결된 키패드 또는 터치 감지 표면에 의해 비밀 코드(PIN 코드)를 입력하는 것을 수반한다. 통상적 구성에서, 사용자가 입력한 비밀 코드는 반드시 메인 프로세서를 통과해야 한다. 따라서 메인 프로세서에서 실행되는 맬웨어는 이러한 비밀 코드에 액세스할 수 있다.
본 출원인에 의해 출원된 특허 출원 WO2012/107698은 트랜잭션을 수행하기 위한 보안 요소로서 단말의 그래픽 프로세서를 사용하는 방법을 개시한다. 이 방법은 단말의 그래픽 프로세서와 인증 서버 사이의 보안 통신 링크를 확립하고 키들이 랜덤하게 배열된 가상 키패드를 디스플레이하는 단계를 포함한다. 키패드의 이미지는 시각적인 암호화를 사용하여, 키의 기호들이 이해될 수 없는 상보적인 프레임들을 연속적으로 디스플레이함으로써 디스플레이되며, 이러한 상보적인 프레임들은 사용자의 망막의 잔상 덕분에 사용자의 시각 시스템에 의해 이해 가능한 이미지로 결합된다. 이러한 방식으로, 단말의 메인 프로세서상에서 실행되는 악의적인 프로그램이 비밀 코드의 입력 중에 사용자에 의해 터치된 키의 위치에 액세스할 수 있는 경우에도, 일련의 스크린 샷을 찍음으로써, 어떠한 기호들이 터치된 키들에 대응하는지를 결정할 수 없다.
그러나, 이러한 방법을 사용하려면 시장에 나와있는 모든 기존 스마트폰과 같은 모든 휴대용 장치에서 가용하지 못한 상당한 컴퓨팅 자원들이 필요하다.
웹 사이트에 연결된 단말을 사용하여 수행된 트랜잭션을 보호하기 위해, 트랜잭션의 유효성을 검사해야 할 때마다 사용자에게 전송되는 일회용 비밀 코드를 사용하는 것이 제안되었다. 제 1 방식에 따르면, 이러한 일회용 비밀 코드는, 별개의 통신 채널을 통해, 예를 들어, 전화 링크 또는 SMS(Short Message Service)를 통해 사용자에게 전송되며, 사용자는 수신된 비밀 코드를 단말에 입력하여 해당 트랜잭션의 유효성을 검사해야 한다. 다른 공지된 방식은 패스워드 또는 바이오 메트릭 데이터와 같은 인증사항에 의한 사용자의 인증 후에 단일 사용 비밀 코드를 생성하는, 추가적인 하드웨어 장치를 사용자들 각각에 제공한다. 이러한 방식에는 트랜잭션의 유효성을 검사해야 할 때 사용자가 항상 전화 또는 모바일 또는 무선 네트워크 커버리지를 근처에 가져야 하거나 또는 상기 하드웨어 장치를 가져야 한다는 부담이 있다. 이러한 추가 하드웨어 장치가 필요한 방식은 은행 기관에도 비용이 들게 한다. 또한, SMS로 전송된 비밀 코드를 사용하는 방식은 이러한 비밀 코드가 항시적으로 성공적인 공격을 받았기 때문에 충분한 보안 수준을 제공하지 못한다.
그러므로, 트랜잭션, 예를 들어, 지불 트랜잭션, 또는 사용자 인증, 또는 보다 일반적으로는 탬퍼링(tampering)으로부터 보호를 요구하는 동작과 같은, 비보안 단말을 사용하여 수행되는 민감한 동작을 보호하기 위한 방법을 제안하는 것이 바람직할 수 있다. 또한, 사용자에 의해 입력되는 비밀 데이터 및 이러한 비보안 단말을 통해 전달되는 트랜잭션 데이터를 보호하는 것이 바람직할 수 있다. 또한, 본 제안된 방법을 낮은 컴퓨팅 능력을 가진 단말들을 포함하여 모든 기존 단말들과 양립되도록 하는 것이 바람직할 수 있다.
비보안(non-secure) 사용자 단말을 사용하여 민감성 연산(sensitive operation)을 안전하게 수행하기 위한 방법이 개시되며, 상기 방법은 비보안 사용자 단말이, 보안 프로세서로부터, 탬퍼링(tampering) 및 리버스-엔지니어링(reverse engineering)으로부터 보호되는 소프트웨어 컴포넌트 및 상기 소프트웨어 컴포넌트의 입력 데이터들을 수신하는 단계로서, 상기 소프트웨어 컴포넌트는 제 1 입력 데이터를 수신하도록 구성된 제 1 입력부를 포함하며, 상기 제 1 입력 데이터는 2 개의 랜덤하게 선택된 유효 값들 및 무효 값들(invalid values)을 가지며, 상기 수신된 입력 데이터들은 상기 제 1 입력 데이터의 상기 2 개의 랜덤하게 선택된 유효 값들을 포함하는, 상기 수신하는 단계; 상기 비보안 사용자 단말이, 상기 수신된 입력 데이터들 중 상기 제 1 입력 데이터의 상기 2 개의 랜덤하게 선택된 유효 값들 중 하나를 랜덤하게 선택하는 단계; 및 상기 비보안 사용자 단말이, 상기 수신된 입력 데이터들을 상기 소프트웨어 컴포넌트의 입력부들에 인가하고 상기 선택된 하나의 유효 값을 상기 소프트웨어 컴포넌트의 상기 제 1 입력부에 인가함으로써, 상기 소프트웨어 컴포넌트를 실행시키는 단계를 포함하며, 상기 소프트웨어 컴포넌트가 실행됨으로써 상기 선택된 하나의 유효 값에 기초하는 출력 데이터가 제공되는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 출력 데이터는 상기 출력 데이터의 2 진 상태들에 각각 대응하는 2 개의 랜덤하게 선택된 유효 값들, 및 무효 값들을 갖는 특징으로 한다.
일 실시형태에 따라서, 상기 방법은, 상기 보안 프로세서에 의해 상기 소프트웨어 컴포넌트를 생성하는 단계; 상기 소프트웨어 컴포넌트를 상기 사용자 단말로 전송할 경우에, 상기 보안 프로세서가 상기 소프트웨어 컴포넌트를 유효하게 설정하는 단계; 제 1 기간이 만료된 후에, 또는 상기 보안 프로세서가 상기 비보안 사용자 단말로부터 상기 소프트웨어 컴포넌트의 실행 보고를 수신한 후에, 상기 보안 프로세서가 상기 소프트웨어 컴포넌트를 무효로 설정하는 단계를 더 포함하며, 상기 무효로 설정된 소프트웨어 컴포넌트와 관련된 실행 보고는 상기 보안 프로세서에 의해서 거부되는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 소프트웨어 컴포넌트는, 상기 랜덤 선택에 응답하여, 12.5 % 내지 87.5 %의 확률 또는 50 %로 설정된 확률로, 상기 2 개의 2 진 상태들 중 하나로 상기 출력 데이터를 제공하도록 구성된 것을 특징으로 한다.
일 실시형태에 따라서, 상기 소프트웨어 컴포넌트는 디스플레이 스크린에 의해 디스플레이될 이미지 프레임의 일부분을 생성하도록 구성되며, 상기 출력 데이터는 상기 이미지 프레임의 상기 일부분에서, 2 개의 다른 2 진 상태들 중 하나로 존재하게 되는 확률이 100 %보다 낮게 픽셀 값을 규정하며, 상기 소프트웨어 컴포넌트는 상기 디스플레이 스크린에 의해 디스플레이된 이미지 프레임들의 디스플레이 리프레시 레이트(refresh rate)에 대응하는 레이트로 이미지 프레임을 생성하도록 다수 회 실행되는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 소프트웨어 컴포넌트는 상기 2 개의 다른 2 진 상태들 중 하나로 존재하게 되는 확률이 100 %보다 낮은 픽셀들을 포함하는 이미지 프레임의 암호화된 부분들을 생성하도록 구성되며, 상기 방법은, 프레임 디스플레이 리프레시 레이트에 대응하는 레이트로 상기 사용자 단말에 의해 상기 소프트웨어 컴포넌트를 실행하는 단계; 상기 보안 프로세서로부터 상기 사용자 단말로 전송된 암호해독 마스크를 사용하여, 상기 이미지 프레임의 상기 생성된 암호화된 부분들 각각을 상기 사용자 단말이 암호해독하는 단계; 상기 사용자 단말이 상기 이미지 프레임의 암호해독된 부분들 각각을 이미지 프레임 배경 내에 삽입하여, 상기 디스플레이 리프레시 레이트로 이미지 프레임을 생성하는 단계; 및 상기 생성된 이미지 프레임들을 디스플레이하는 단계로서, 상기 디스플레이된 이미지 프레임들은 상기 디스플레이된 이미지 프레임들 내에서 가시적일 확률이 100 % 미만인 픽셀들로 형성된 머신-인식불가 정보(machine-unintelligble information)를 포함하며, 상기 머신-인식불가 정보는 인간 사용자에게는 인식가능한, 상기 디스플레이하는 단계를 더 포함하는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 방법은 상기 디스플레이된 머신-인식불가 정보에 대하여 인간 사용자로부터 응답정보를 취득하는 단계; 상기 응답정보를 상기 보안 요소에 송신하는 단계; 및 상기 응답정보가 상기 머신-인식불가 정보 및 상기 인간 사용자와 상기 보안 요소에 의해 공유된 비밀 정보에 대응될 때 상기 보안 요소가 상기 사용자를 인증하는 단계를 더 포함하는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 소프트웨어 컴포넌트는 회로 입력부들, 회로 출력부들, 논리 게이트들 및 와이어들(wires)을 포함하는 가블드 회로(garbled circuit)로서 인코딩되며, 각각의 논리 게이트는 2 개의 입력부들 및 1 개의 출력부를 가지며, 각각의 와이어는 상기 회로 입력부들 중 하나 또는 상기 논리 게이트들의 출력부들 중 하나에 접속된 제 1 단부, 및 상기 논리 게이트들의 입력부들 중 하나 또는 상기 회로 출력부들 중 하나에 접속된 제 2 단부를 가지며, 상기 가블드 회로는 상기 와이어들 각각의 각 이진 상태에 대한 유효 데이터를 선택하고, 상기 가블드 회로의 일 논리 게이트에 대해, 해당 논리 게이트의 각 입력부의 각 유효 데이터, 해당 논리 게이트의 출력부의 각 유효 데이터, 및 해당 논리 게이트에 의해 수행된 논리 연산의 함수로서 진리 테이블 값들을 컴퓨팅함으로써 생성되는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 가블드 회로는 XOR 논리 게이트를 포함하며, 상기 XOR 논리 게이트는 상기 XOR 논리 게이트의 2 개의 입력 데이터들의 동일한 순위(rank)의 비트들에 적용되는 배타적 OR(XOR) 연산을 수행하는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 가블드 회로는 상기 제 1 입력 데이터의 상기 선택된 값을 상기 수신된 입력 데이터들 내에 제공된 제 2 입력 데이터와 결합하는 제 1 논리 게이트, 및 제 2 논리 게이트들의 세트를 포함하고, 상기 가블드 회로가 실행됨으로써, 상기 랜덤 선택에 응답하여, 2 개의 다른 2 진 상태들 중 하나로 있게 될 확률이 100 %보다 낮은 제 1 데이터가, 상기 제 1 논리 게이트의 출력부에서 제공되며, 상기 제 1 데이터는 상기 제 2 논리 게이트들의 세트의 각 논리 게이트의 제 1 입력부에 제공되고, 상기 제 2 논리 게이트들의 세트의 각 논리 게이트의 제 2 입력부는 상기 수신된 입력 데이터들 내에 제공된 입력 데이터를 수신하고, 상기 제 2 논리 게이트들의 출력부들 각각은 픽셀들의 세트의 픽셀 값들을 제공하고, 상기 픽셀들의 세트가 100 %보다 낮은 확률로 상기 생성된 이미지 프레임들에서 상기 인간 사용자에게 인식될 수 있도록 하는 디스플레이 리프레시 레이트로 상기 사용자 단말에 의해 상기 가블드 회로가 실행되는 것을 특징으로 한다.
실시형태들은 또한 사용자 단말에 관한 것이며, 상기 사용자 단말은 탬퍼링(tampering) 및 리버스-엔지니어링(reverse engineering)으로부터 보호되고 민감성 연산을 수행하는 소프트웨어 컴포넌트, 및 상기 소프트웨어 컴포넌트의 입력 데이터들을 수신하도록 구성되며, 상기 소프트웨어 컴포넌트는 제 1 입력 데이터를 수신하도록 구성된 제 1 입력부를 포함하며, 상기 제 1 입력 데이터는 2 개의 랜덤하게 선택된 유효 값들 및 무효 값들(invalid values)을 가지며, 상기 수신된 입력 데이터들은 상기 제 1 입력 데이터의 상기 2 개의 랜덤하게 선택된 유효 값들을 포함하며, 상기 사용자 단말은 상기 수신된 입력 데이터들 중 상기 제 1 입력 데이터의 상기 2 개의 랜덤하게 선택된 유효 값들 중 하나를 랜덤하게 선택하도록 구성되며, 상기 사용자 단말은 상기 선택된 하나의 유효 값을 포함하여 상기 수신된 입력 데이터들을 상기 소프트웨어 컴포넌트의 입력부들에 인가함으로써, 상기 소프트웨어 컴포넌트를 실행시키도록 구성되며, 상기 소프트웨어 컴포넌트가 실행됨으로써 상기 선택된 하나의 유효 값에 기초하는 출력 데이터가 제공되는 것을 특징으로 한다.
일 실시형태에 따라서, 상기 사용자 단말은 전술한 방법에서 사용자 단말에 의해 수행되는 단계들을 실행하도록 구성된 것을 특징으로 한다.
일 실시형태에 따라서, 상기 보안 프로세서는 상기 사용자 단말의 메인 프로세서에 연결된 보안 요소인 것을 특징으로 한다.
일 실시형태에 따라서, 상기 보안 프로세서는 데이터 전송 네트워크를 통해 상기 사용자 단말에 연결된 원격 인증 서버에 속하는 것을 특징으로 한다.
실시형태들은 또한 전술한 방법에서 보안 프로세서에 의해 수행되는 단계들을 실행하도록 구성된 보안 요소에 관한 것이며, 상기 보안 요소는 상기 사용자 단말의 메인 프로세서에 접속되는 것을 특징으로 한다.
실시형태들은 또한 전술한 방법에서 보안 프로세서에 의해 수행되는 단계들을 실행하도록 구성된 인증 서버에 관한 것이며, 상기 인증 서버는 데이터 전송 네트워크를 통해 상기 사용자 단말에 링크되는 것을 특징으로 한다.
실시형태들은 또한 컴퓨터 메모리 내에 로딩 가능한 컴퓨터 프로그램 제품에 관한 것이며, 이 제품은, 컴퓨터에 의해 실행될 때, 전술한 사용자 단말에 의해 수행되는 단계들을 수행하도록 상기 컴퓨터를 구성하는 프로그램 코드들을 포함하는 것을 특징으로 한다.
방법 및/또는 장치의 예들은 다음의 도면들 및 설명을 참조하여 더 잘 이해될 수 있다. 비제한적이면서 비포괄적인 설명은 다음 도면들과 함께 설명된다.
도 1은 원격 서버들과 트랜잭션을 수행하는 사용자 단말들의 블록도이다.
도 2는 사용자 단말의 블록도이다.
도 3은 일 실시예에 따른, 사용자 단말, 인증 서버 및 애플리케이션 서버에 의해 수행되는 초기화 단계들의 순차도이다.
도 4는 일 실시예에 따른 인증 단계들을 나타내는 순차도이다.
도 5는 일 실시예에 따른, 인증 서버에 의해 관리되는 데이터베이스의 블록도이다.
도 6a 및 도 6b는 일 실시예에 따른, 각각 사용자 단말에 의해 디스플레이되는 이미지 프레임 및 사용자 단말의 사용자에 의해 관찰될 수 있는 대응하는 결과 이미지를 도시한다.
도 7은 일 실시예에 따른, 사용자 단말에 의해 중첩되어 디스플레이되는 이미지 프레임의 부분, 사용자 단말에 의해 디스플레이되는 결과적인 이미지 프레임의 대응하는 부분, 및 사용자 단말의 사용자에 의해 관찰될 수 있는 결과 이미지의 대응하는 부분에 대한 2 개의 층들을 예시한다.
도 8은 일 실시예에 따른, 사용자 단말에 의해 실행되는 애플리케이션의 블록도이다.
도 9는 일 실시예에 따른, 사용자 단말의 소프트웨어에 의해 구현된 회로의 블록도이다.
도 10은 일 실시예에 따른, 사용자 단말에서 구현되는 회로를 기술하는 데이터베이스의 블록도이다.
도 11은 일 실시예에 따른, 도 6a의 이미지 프레임을 디스플레이하기 위해 애플리케이션 프로그램에 의해 수행되는 프로세싱을 나타내는 블록도이다.
도 12는 다른 실시예에 따른, 도 9의 회로의 일부의 블록도이다.
도 13은 다른 실시예에 따른 인증 단계들을 도시한 순차도이다.
도면들에서, 달리 언급하지 않는 한, 동일한 참조 부호들은 상이한 도면 전체에서 동일한 부분들을 나타낼 수 있다.
다음에서, 용어 "보안"은 당업자에게 그 보통의 의미에 따라 사용되며, 상이한 실시예들에서, 암호화와 같은 기법 또는 정보를 공중으로부터 보호하거나 정보를 권한이 없는 액세스 또는 동작으로부터 보호하는데 사용되는 다른 유형의 소프트웨어 또는 하드웨어 제어 기법으로부터 기인되는 보안을 포함한다. "보안 통신" 및 "보안 통신 링크"라는 표현은 공개/개인 키 쌍을 사용하거나 또는 통신 지점들 간에 공유되는 키들과 함께 대칭 키 암호화를 사용하여 암호화된 통신을 의미한다. "보안형 통신"은 가상 사설망 및 통신 지점들 간에 인증되고 암호화된 통신을 설정하는 데 사용되는 다른 방법과 기법들을 수반할 수도 있다.
도 1은 통신 네트워크(NT)를 통해 원격 서비스 제공자 서버들 또는 애플리케이션 서버들(SSRV)과 트랜잭션을 수행할 수 있는 사용자 단말들(UT)을 도시한다. 다음에서 "사용자 단말"은 동의어들이며 애플리케이션 서버 및 서비스 공급자 서버와 같은 하나 이상의 원격 서버와 통신할 수 있는 모든 장치를 나타낸다. 따라서, 사용자 단말은 예를 들어, 휴대 전화, 스마트폰, 개인용 컴퓨터, 디지털 태블릿 또는 통신 및 디스플레이 능력을 포함하는 임의의 장치일 수 있다. 이러한 통신 및 디스플레이 기능은 두 개 또는 여러 개의 장치에 의해 제공될 수 있다(단, 이러한 장치들이 안전하게 연결 및/또는 링크되어 있어야 함). 통신 네트워크는 IP(인터넷 프로토콜) 네트워크, 예를 들어, 인터넷, 모바일 또는 셀룰러 네트워크, 무선 네트워크, 및 사용자 단말과 원격 서버 간의 통신 링크를 확립하는데 사용될 수 있는 임의의 종류의 네트워크를 포함할 수 있다.
일 실시예에 따르면, 인증 서버(ASRV)는 2-인자 인증 방식에 기초하여, 애플리케이션 또는 서비스 제공자 서버(SSRV) 및 사용자 단말(UT)을 수반하는 트랜잭션 동안 사용자를 인증하는 방법을 구현하도록 구성된다.
도 2는 네트워크(NT)와 같은 전송 네트워크를 통해 인증 서버(ASRV)와 같은 원격 서버와 통신하기 위한 통신 회로(NIT)를 포함하는 종래의 사용자 단말(UT)을 도시한다. 사용자 단말(UT)은 셀룰러 폰, 스마트폰 또는 PDA(Personal Digital Assistant) 또는 인터넷 네트워크와 같은 네트워크에 접속되는 통신 회로들을 포함하는 디지털 태블릿 또는 퍼스널 컴퓨터와 같은 임의의 다른 장치 일 수 있다. 사용자 단말(UT)은 통신 회로(NIT)에 접속되어 이를 제어하는 메인 프로세서(HP)(또한, 중앙 처리 장치(CPU로 지칭됨), 디스플레이 스크린(DSP), 상기 메인 프로세서(HP)에 접속되고 상기 디스플레이 스크린(DSP)을 제어하는 그래픽 프로세서(GP), 및 상기 메인 프로세서(HP)에 연결된 제어 장치(CM)를 포함한다. 상기 제어 장치는 키보드 또는 키패드, 또는 터치 감지 표면을 포함할 수 있으며, 이러한 터치 감지 표면은 디스플레이 스크린(DSP) 상에 배치되며 투명하다. 제어 장치(CM)는 마우스, 펜슬 또는 펜과 같은 포인팅 장치를 더 포함할 수 있다.
사용자 단말(UT)은 스마트 카드(UICC) 내에 내장되거나 독립형이 될 수 있는 보안 프로세서와 같은 보안 요소(SE)를 더 포함할 수 있다. 보안 프로세서(SE)는 예를 들어, 셀룰러 네트워크로의 액세스를 제공하는 SIM("가입자 식별 모듈") 카드 또는 USIM("범용 가입자 식별 모듈")일 수 있다. 보안 프로세서(SE)는 비접촉식 판독기와 통신하기 위한 NFC(Near Field Communication) 회로를 포함할 수 있다. NFC 회로는 SIM 카드(SIM-NFC) 또는 UICC 또는 SoC(System on Chip) 회로 또는 "SD 카드"와 같은 외부 메모리 카드에 내장될 수 있다. 통신 회로(NIT)는 셀룰러 네트워크로의 액세스 및/또는 셀룰러 네트워크를 통한 인터넷 네트워크로의 액세스를 제공하는 이동 전화통신 회로, 및/또는 무선 통신 회로(Wi-Fi, 블루투스(Bluetooth) 또는 임의의 다른 무선 주파수 또는 무선 통신 방법), 및/또는 인터넷과 같은 데이터 전송 네트워크에 링크될 수 있는 임의의 다른 유선 또는 무선 연결 회로를 포함할 수 있다.
도 3은 트랜잭션의 유효성을 검사하기 위해 사용자를 인증하는데 사용될 사용자 단말(UT)을 등록하기 위한 등록 단계들 S1 내지 S14을 도시한다. 단계 S1 내지 단계 S7은 한 번만 수행될 수 있다. 단계 S1에서, 사용자는 사용자 단말(OT)을 서비스 제공자의 서비스 제공자 서버(SSRV), 예를 들어, 서비스 제공자의 웹 사이트에 접속시키고, 사용자 식별자(UID) 및 이에 대응하는 암호(UPW)와 같은 인증정보를 서비스 제공자 서버(SSRV)에 제공한다. 단계 S2에서, 사용자 인증 정보(UID, UPW)는 단말(OT)에 의해 서비스 제공자 서버(SSRV)로 송신된다. 단계 S3에서, 서비스 제공자 서버(SSRV)는 수신된 인증정보(UID, UPW)의 일치성을 검사하고, 그들이 유효한 등록된 사용자에 대응하는 경우, 서비스 제공자 서버(SSRV)는 사용자 식별자(UID) 및 서비스 제공자 서버(SSRV)와 관련된 서비스 식별자(SID)를 포함하는 등록 요청(RGRQ)을 인증 서버(ASRV)에 전송한다(단계 S4). 해커가 전송된 데이터를 검색할 수 없도록 서비스 제공자 서버(SSRV)와 인증 서버(ASRV) 간의 통신 링크가 보호된다. 인증 서버(ASRV)가 수행하는 다음 단계들은 인증 서버(ASRV)의 보안 프로세서 또는 이의 보안 도메인 내에서 실행된다. 또한, 단말(OT)과 서비스 제공자 서버(SSRV) 간의 링크 및 사용자 단말(UT)과 인증 서버(ASRV) 간의 링크는 보안 링크일 필요는 없다.
단계 S4 및 단계 S5에서, 인증 서버(ASRV)는 등록 요청(RGRQ)에 응답하여 단회 사용 링크 토큰(LTK)(단계 S2에서 식별된 사용자의 등록에 전용됨)을 생성하여 이를 서비스 제공자 서버(SSRV)에 전송한다. 이러한 단회 사용 링크 토큰(LTK)은 수신된 사용자 식별자(UID)와 서비스 식별자(SID) 간의 링크를 설정한다. 상기 단회 사용 링크 토큰(LTK)은 수 시간과 수 분 간의 값으로 고정될 수 있는 시간-제한적 유효성을 갖는다. 단계 S6에서, 서비스 제공자 서버(SSRV)는 단회 사용 링크 토큰(LTK)을 수신하여 이를 단말(OT)에 송신한다. 단계 S7에서, 단말(OT)은 단회 사용 링크 토큰(LTK)을 디스플레이한다.
단계 S8 내지 단계 S13가 연속적으로 수행된다. 단계 S8에서, 사용자는 인증을 위해서 사용될 사용자 단말(UT)에서의 사용자 인증에 전용되거나 이를 수반하고 인증 서버(ASRV)를 수반하는 애플리케이션(APP)을 다운로드 및/또는 설치 및/또는 런칭한다. 사용자 단말(UT)은 단말(OT) 또는 다른 단말(이동 전화, 스마트폰, 스마트 워치, 퍼스널 컴퓨터, 결제 단말 및 디지털 태블릿, 또는 통신 및 인간 대 기계 인터페이스 능력을 갖는 임의의 장치)일 수 있다. 단계 S9 내지 단계 S13는 애플리케이션(APP)의 제 1 실행 시에 수행된다. 단계 S9에서, 애플리케이션(APP)은 사용자 단말(UT)의 고유 디바이스 식별자(DID)를 생성한다. 이어서, 사용자는 패스워드(PC)를 선택하고, 단계 S6 및 단계 S7에서 수신되고 디스플레이된 단회 사용 링크 토큰(LTK)을 입력하도록 요청을 받는다. 단계 S10 및 단계 S11에서, 사용자는 패스워드(PC) 및 단회 사용 링크 토큰(LTK)을 입력한다. 상기 단회 사용 링크 토큰(LTK)은 QR 코드와 같은 광학 코드의 형태로 디스플레이될 수 있고, 사용자 단말(UT)의 카메라를 사용하여 애플리케이션(APP)에 의해 단말(OT)의 디스플레이 스크린 상에 캡처될 수 있다. 단계 S12에서, 애플리케이션(APP)은 장치 식별자(DID), 패스워드(PC) 및 단회 사용 링크 토큰(LTK)을 포함하는 등록 메시지(ERP)를 인증 서버(ASRV)로 송신한다. 단계 S13에서, 인증 서버(ASRV)는 수신된 단회 사용 링크 토큰(LTK)의 유효성을 검사한다. 상기 단회 사용 링크 토큰은 그의 유효 기간이 경과된 경우에 유효하지 않거나, 이미 장치를 식별하기 위해 한 번 또는 미리 정해진 횟수만큼 사용된 경우에도 유효하지 않다고 간주될 수 있다. 단회 사용 링크 토큰이 유효하면, 인증 서버(ASRV)는 단계 S14에서 사용자 데이터베이스(UDB) 내에 상기 장치 식별자(DID)와 패스워드(PC)를 저장한다. 단계 S15에서, 인증 서버(ASRV)는 등록 요청(RGRQ)에 응답하여 메시지(RP)를 서비스 제공자 서버(SSRV)에 전송한다. 응답 메시지(RP)는 단계 S13에서 수행된 단회 사용 링크 토큰의 유효성 검사에 따른 등록 상태 및 사용자 식별자(UID)를 포함한다.
단계 S13에서 수행된 검사가 성공하면, 사용자 단말(UT)은 인증 서버(ASRV)에 의해 규칙적으로 등록되며, 이로써, 이러한 등록은 해당 사용자와 관련된 두 번째 인증 요소로서 사용될 수 있고, 이와 관련하여, 상기 서비스 제공자 서버(SSRV)에 의한 사용자 인증이 사용자에 대한 첫 번째 인증 요소로서 고려될 수 있다.
도 4는 애플리케이션(APP)에 의해 수행된 트랜잭션 동안 사용자를 인증하기 위해서 또는 사용자의 인증을 요구하는, 이러한 애플리케이션의 동작을 실행하기 위해서 연속적으로 수행되는 인증 단계들 S21 내지 S32을 도시한다. 인증 프로세스 동안, 사용자 단말(UT)은 예를 들어, 별도의 예비 프로세스에서 수행될 수 있는, 도 3의 단계들 S1 내지 S15를 실행함으로써, 인증 서버(ASRV)에 의해 미리 등록된다. 단계 S21에서, 서비스 제공자 서버(SSRV)는 인증 서버(ASRV)에 인증 요청(ARQ)을 송신한다. 인증 요청(ARQ)은 서비스 식별자(SID), 트랜잭션과 관련된 사용자의 식별자(UID), 및 선택사양적으로, 사용자에게 디스플레이되고 사용자에 의해 검증될 트랜잭션과 관련된 정보(예를 들어, 지불 금액)를 제공하는 메시지(MSG)를 포함한다. 인증 요청(ARQ)은 또한 인증 결과가 인증 서버(ASRV)에 의해 전송되어야 하는 어드레스(SURL)를 포함할 수 있다.
단계 S22에서, 인증 서버(ASRV)는 인증 요청(ARQ)을 수신하고 고유 트랜잭션 식별자(TID)를 생성한다. 인증 서버(ASRV)는 또한 데이터베이스(UDB)에서 사용자 식별자(UID)에 대응하는 장치 식별자(DID)를 검색하고, 바람직하게는, 일회용의 트랜잭션 검증 코드(transaction validation code)(CC) 및 데이터베이스(UDB)에서 발견된 장치 식별자들(DID)에 대응하는 사용자 단말들(UT) 각각에 대한 개별 전용 소프트웨어 컴포넌트(GC)를 생성한다. 소프트웨어 컴포넌트(GC)는 트랜잭션 검증 코드(CC)를 디스플레이하도록 설계되었으므로, 해당 소프트웨어 컴포넌트는 이러한 트랜잭션 검증 코드에만 특정된다. 단계 S23에서, 인증 서버(ASRV)는 구조 및 콘텐츠 데이터(GCD)를 사용자 단말(UT)에 전송하며, 상기 구조 및 콘텐츠 데이터(GCD)는 상기 소프트웨어 컴포넌트(GC)를 규정하고, 암호화된 형태의 소프트웨어 컴포넌트의 입력 데이터, 상기 소프트웨어 컴포넌트 회로에 의해 생성된 이미지 프레임 부분들에 적용될 최종 마스크(IMSK), 및 상기 소프트웨어 컴포넌트를 실행하는데 사용되는 암호 데이터(GCK)를 포함한다. 단계 S24에서, 인증 서버(ASRV)는 사용자 식별자(UID) 및 트랜잭션 식별자(TID)를 포함하는 확인 응답 메시지(ACK)를 서비스 제공자 서버(SSRV)에 전송한다. 단계 S25에서, 사용자 단말(UT)에 의해 실행되는 애플리케이션(APP)은 단계 S23에서 송신된 소프트웨어 컴포넌트(GC)에 관한 데이터(GCD, IMSK, GCK)를 수신하고, 인증 서버(ASRV)에 확인 응답 메시지(AKM)를 전송한다. 애플리케이션(APP)이 현재 사용자 단말(UT) 상에서 실행되지 않는 경우, 소프트웨어 컴포넌트와 관련된 데이터의 수신은 해당 애플리케이션(APP)의 실행을 트리거할 수 있다. 단계 S26에서, 인증 서버(ASRV)는 소프트웨어 컴포넌트(GC)를 실행하도록 하는 요청(RGC)을 사용자 단말(UT)에 전송한다. 단계 S27에서, 상기 요청(RGC)의 수신은 소프트웨어 컴포넌트(GC)의 애플리케이션(APP)에 의한 실행을 트리거하며, 이로써 예를 들어, 키들을 갖는 키패드, 메시지(MSG) 및 두 개 이상의 자릿수를 갖는, 일회용 트랜잭션 검증 코드(CC)를 보여주는 이미지 프레임들(image frames)을 디스플레이한다.
일 실시예에 따르면, 키패드의 키들은 디스플레이된 프레임들에서 랜덤하게 선택된 레이아웃으로 배열되고, 키들의 기호들(labels)의 일부 및 트랜잭션 검증 코드의 일부만이 각 프레임에서 디스플레이되고, 이로써, 키 기호들 및 트랜잭션 검증 코드는 인간 시각 시스템의 지속성으로 인해서 인간 시각 시스템에서만 이해될 수 있으며, 디스플레이 스크린(DSP)에 대한 스크린 샷으로는 이해될 수 없다. 일 실시예에 따르면, 트랜잭션 검증 코드(CC)는 메시지(MSG) 상에 중첩되고(또는 그 반대로도 됨), 이로써, 트랜잭션 검증 디스플레이를 방해하지 않고서 메시지가 변경될 수 없다.
단계 S28에서, 사용자 단말(UT)의 사용자는 패스워드(PC) 및 디스플레이된 트랜잭션 검증 코드(CC)를 입력한다. 스마트폰의 예에서, 사용자는 디스플레이된 키패드를 사용하고 디스플레이된 키패드의 키들의 대응하는 위치들(POSi)을 터치한다. 단계 S29에서, 애플리케이션(APP)은 장치 식별자(DID)과 함께 사용자에 의해 선택된 위치들(POSi)의 시퀀스를 인증 서버(ASRV)에 전송한다. 단계 S30에서, 인증 서버(ASRV)는 사용자에 의해 타이핑된 위치들(POSi)에 대응하는 코드(CC1) 및 패스워드(PC1)를 결정한다. 인증 서버(ASRV)에 의해 생성된 소프트웨어 컴포넌트(GC)에 의해 상기 위치들(POSi)을 입력하기 위해 사용된 키패드가 디스플레이되었기 때문에, 인증 서버(ASRV)는 디스플레이된 키패드 레이아웃을 알고, 따라서, 이러한 위치들(POSi)에 대응하는 키 기호들, 및 이로써, 사용자가 타이핑한 패스워드 및 트랜잭션 검증 코드의 값들을 결정할 수 있다. 단계 S31에서, 인증 서버(ASRV)는 장치 식별자(DID)와 연계되어 데이터베이스(UDB)에 저장된 패스워드 및 트랜잭션 검증 코드(PC, CC)와, 상기 입력된 패스워드(PC1) 및 트랜잭션 검증 코드(CC1) 간의 일치성을 검사한다. 보안상의 이유로, 데이터베이스(UDB)는 단계 S10에서 입력된 패스워드(PC)의 명확한 값 대신에, 해시 값(HPC)만을 저장할 수 있고, 패스워드(PC)의 비교 연산은 타이핑된 패스워드(PC1)에 해시 함수를 적용하고, 데이터베이스(UDB)에 저장된 패스워드(PC)의 해시 값(HPC)을 상기 해시 함수 적용 결과와 비교함으로써 수행될 수 있다. 단계 S32에서, 인증 서버(ASRV)는 어드레스(SURL)를 사용하여, 서비스 제공자 서버(SSRV)에, 사용자 식별자(UID) 및 단계 S31에서 수행된 비교 결과를 포함하는 인증 응답을 송신한다. 이러한 방식으로, 사용자 식별자(UID)에 대응하는 사용자는 인증되고, 타이핑된 패스워드(PC1) 및 트랜잭션 검증 코드(CC1)가 데이터베이스(UDB)에 저장된 패스워드(PC), 및 단계 S23에서 인증 서버(ASRV)에 의해 사용자 단말(UT)로 송신된, 소프트웨어 컴포넌트(GC)에 대응하는 트랜잭션 검증 코드(CC)와 일치할 때만, 트랜잭션 식별자(TID)가 유효하게 될 수 있다.
일 실시예에서, 단계 S10에서 패스워드(PC)의 입력은, 사용자로부터 두 개의 패스워드를 획득하기 위해서, 두 개의 상이한 소프트웨어 컴포넌트를 사용하여 단계 S27 내지 단계 S30를 두 번 실행함으로써 수행된다. 단계 S27 내지 단계 S30 각각의 실행 후에, 트랜잭션 검증 코드(CC1)가 검사되고, 사용자에 의해 입력된 패스워드(PC1)는, 상기 사용자에 의해 입력된 트랜잭션 검증 코드(CC1)가 하나의 소프트웨어 컴포넌트(GC)를 실행하는 사용자 단말(UT)에 의해서 디스플레이된 트랜잭션 검증 코드(CC)와 동일한 경우에만, 인증 서버(ASRV)에 의해 유효화된다. 각각이 유효화된 패스워드(PC1)를 제공하는, 단계 S27 내지 단계 S30의 2 번의 연속적인 실행 후에, 단계 S27 내지 단계 S30의 제 1 실행 및 제 2 실행 동안에 입력된 유효화된 패스워드들(PC1)이 비교되고, 이들이 서로 동일하면, 패스워드(PC1)를 데이터베이스(UDB)에 저장하여 이를 사용자 단말(UT)에 할당한다. 또한, 단계 S11 내지 단계 S15는 사용자가 입력한 패스워드(PC1)가 데이터베이스(UDB)에 저장되면 오직 1회 실행된다. 이러한 방식으로, 사용자에 의해 타이핑된 위치들(POSi)만이 사용자 단말(UT)로부터 인증 서버(ASRV)로 송신된다. 따라서, 인증 서버(ASRV)와 사용자 단말(UT) 간의 중간자 공격 또는 사용자 단말(UT)에 설치된 악성 코드는 소프트웨어 컴포넌트를 실행하지 않고서는 상기 타이핑된 코드들(PC 및 CC)을 발견할 수 없다. 이러한 공격의 경우에는, 공격을 수행하는 해커는 (S29 단계에서와 같이) 인증 서버(ARRV)에 메시지(ARP)를 보내야한다. 따라서 인증 서버(ASRV)는 동일한 트랜잭션에 대한 또는 동일한 사용자 단말(UT)로부터의 2 개의 메시지들(ARP)을 수신할 수 있으며, 일 메시지(ARP)는 인증된 사용자로부터 유래하며, 다른 메시지는 해커로부터 유래된 것이다. 이러한 경우에, 인증 서버(ASRV)는 트랜잭션을 무효화하거나 플래그를 발생시키거나 이러한 이벤트와 관련된 다른 특정 조치를 수행하고자 할 수 있다.
일 실시예에 따르면, 메시지(ARP)는 다른 전송 채널에 의해 사용자에 의해 인증 서버(ASRV)로 전송된다(단계 S29).
도 5는 데이터베이스(UDB)의 상이한 테이블들(DEV, LNK, SVC, TT, GCP)을 보여준다. 테이블(DEV)은 각각의 등록된 사용자 장치 또는 사용자 단말(UT)에 대한 하나의 기록정보를 포함하며, 각각의 기록정보는 장치 식별자(DID), 단계 S10에서 사용자에 의해 입력된 패스워드(PC) 또는 이의 해시 값(HPC) 및 대응하는 사용자 식별자(UID)를 포함한다. 테이블(SVC)은 등록된 각 서비스 공급자에 대한 하나의 기록정보를 포함하며, 테이블(SVC)의 각 기록정보는 서비스 식별자(SID) 및 서비스 이름을 포함한다. 테이블(LNK)은 단계 S4에서 생성된 각 단회 사용 링크 토큰에 대한 하나의 기록정보를 포함하고, 각 기록정보는 단계 S4에서 단회 사용 링크 토큰(LTK)로 생성된 링크 식별자(LID), 단계 S3에서 단회 사용 링크 토큰을 요청하는 서비스 제공자 서버(SSRV)의 서비스 식별자(SID), 단계 S2에서 단회 사용 링크 토큰 요청(RGRQ)을 트리거한 사용자의 사용자 식별자(UID), 단회 사용 링크 토큰 값(LTK) 및 단회 사용 링크 토큰의 유효 기간을 포함한다. 테이블(TT)은 각 현 트랜잭션에 대한 일 기록정보를 포함하며, 각 기록정보는 트랜잭션 식별자(TID), 장치 식별자(DID), 서비스 식별자(SID), 장치 식별자(DID)를 갖는 사용자 단말에 의해 실행되고 애플리케이션(APP)에 의해 트리거되는 소프트웨어 컴포넌트에 의해 디스플레이될 메시지(MSG), 단계 S21에서 제공된 어드레스(SURL), 트랜잭션 식별자(TID)에 대해 생성된 소프트웨어 컴포넌트를 식별하는 소프트웨어 컴포넌트 식별자(GCID), 및 일회용 트랜잭션 검증 코드(CC)를 포함한다. 테이블(GCP)은 인증 서버(ASRV)에 의해 생성된 각각의 소프트웨어 컴포넌트에 대한 하나의 기록정보를 포함하며, 각 기록정보는 해당 소프트웨어 컴포넌트를 식별하는 식별자(GCID), 단계 S22에서 소프트웨어 컴포넌트가 생성된 사용자 단말(UT)의 장치 식별자(DID), 및 해당 소프트웨어 컴포넌트가 생성된 트랜잭션의 식별자(TID)를 포함한다. 해당 소프트웨어 컴포넌트는 일 트랜잭션에 전용되며, 이로써, 오직 한 명의 사용자 인증을 위해서만 생성되고 실행되기 때문에, 이미 종료된 트랜잭션에 해당하는 기록정보는 테이블(GCP)로부터 삭제될 수 있으며, 하지만, 이들은 통계적 목적으로 유지되거나 각 트랜잭션의 유일성을 보장하기 위해서 유지될 수도 있다. 다른 실시예에 따르면, 각각의 소프트웨어 컴포넌트는 미리 규정된 수의 인증 또는 사전 규정된 기간 동안 사용될 수 있다.
단계 S13에서 수신된 단회 사용 링크 토큰을 검사하는 동작은 수신된 단회 사용 링크 토큰(LTK)을, 단계 S4에서 테이블(LNK) 내로 저장된 단회 사용 링크 토큰과 비교함으로써 수행될 수 있다. 해당 수신된 단회 사용 링크 토큰은 단계 S12에서 인증 서버(ASRV)에 의해 수신된 장치 식별자(DID)에 대응하는 장치를 갖는 사용자 식별자(UID)와 연관되어서 그리고 테이블(DEV)에 따라서, 테이블(LNK)의 기록정보에서 검색되어야 한다. 그렇지 않은 경우에, 수신된 단회 사용 링크 토큰은 유효하지 않은 것으로 간주되고 사용자 단말(UT)은 테이블(DEV)에 등록되지 않는다.
도 6a는 사용자 단말이 소프트웨어 컴포넌트(GC)를 실행할 때 사용자 단말(UT)에 의해 디스플레이되는 이미지 프레임(FRM)의 예를 도시한다. 이미지 프레임(FRM)은 메시지(MSG) 및 메시지(MSG) 상에 중첩된 일회용 트랜잭션 검증 코드(CC)를 디스플레이하는 배너 프레임(banner frame)(BNF)을 포함한다. 이미지 프레임(FRM)은 예를 들어, 12 키 키패드를 나타내는 키패드 이미지 프레임(KYPF)을 더 포함하며, 키패드의 각각의 키는 사용자에게 해당 키의 기능을 나타내는 기호 (KYL)와 함께 디스플레이된다. 키패드는 소거 키 "C" 및 검증 키 "V", 및 한 자리수에 대응하며 이미지 프레임(FRM)을 생성하는 소프트웨어 컴포넌트(GC)에 특정된 레이아웃을 갖는 1O 개의 키를 포함한다. 이미지 프레임(FRM)은 사용자가 키들(KY) 중 새로운 키를 터치할 때마다 도트가 디스플레이되는 디스플레이 존(FBD)을 더 포함할 수 있다. 도 6a의 예에서, 디스플레이 존(FBD)은 3 개의 키가 이미 사용자에 의해 타이핑되었음을 나타낸다.
도 6a의 예에서, 키패드는 각각이 3 개의 키들로 이루어진 4 개의 라인들을 포함하며, 키패드의 첫 번째 라인은 숫자들 "9", "3" 및 "6"를 (좌측에서 우측으로) 포함하고, 두 번째 라인은 숫자들 "2", "0" 및 "1"을 포함하고, 세 번째 라인은 숫자들 "4", "7" 및 "8"을 포함하고, 네 번째 라인은 검증 키 "V", 숫자 "5" 및 소거 키 "C"를 포함한다. 각 숫자(digit) 키의 기호(KYL)는 디스플레이될 키 기호 (KYL)에 따라서, 가시적이거나 가시적이지 않는 다수의 세그먼트들(SG)(예를 들어, 7 개의 세그먼트들)로 디스플레이된다. 일 실시예에 따르면, 키패드 레이아웃이 사용자 단말(UT)의 스크린 샷 기능을 사용함으로써 획득되는 것을 방지하기 위해, 각 키(KY) 내의 가시적인 세그먼트들 중 일부만이 소프트웨어 컴포넌트(GC)에 의해 생성된 각각의 이미지 프레임에서 디스플레이된다. 이러한 목적을 위해, 디스플레이될 각각의 가시적인 세그먼트는 100 %보다 낮은 확률, 예를 들어, 50 %의 확률로 소프트웨어 컴포넌트(GC)에 의해 생성된 이미지 프레임(FRM)에 존재한다. 인간의 시각적 시스템의 지속성 특성 때문에, 인간의 시각적 시스템은 사용자 단말(UT)에 의해 연속적으로 디스플레이된 이미지 프레임들을 결합할 수 있다. 따라서, 디스플레이된 키 기호들(KYL)을 사용자가 알 수 있게 되지만, 스크린 샷 기능을 이용하여서는 캡쳐될 수 없다. 도 6b는 이미지 프레임들이 인간의 시각적 시스템에 의해 인지될 수 있기 때문에, 소프트웨어 컴포넌트(GC)에 의해 생성된 이미지 프레임들(FRM)이 충분히 높은 주파수(30 Hz 이상), 예를 들어, 60 Hz로 디스플레이되며 이로써 프트웨어 컴포넌트(GC)에 의해 생성된 새로운 프레임이 매 16.6 ms마다 디스플레이되도록 되어 생성된 디스플레이된 이미지(IMG)를 예시한다. 도 6b의 예에 도시된 바와 같이, 키 기호들(KYL)의 디스플레이될 가시적인 세그먼트들이 100 %보다 낮은 확률로 이미지 프레임들(FRM)에 삽입될 때 이러한 키 기호들(KYL)은 사용자에게 회색으로 보인다.
도 7의 상단 도면은 소프트웨어 컴포넌트(GC)에 의해 생성되고 사용자 단말(UT)에 의해 디스플레이된 배너 프레임(BNF)의 2 개의 중첩된 층들의 일 예를 도시한다. 도 7의 중앙 도면은 생성되고 디스플레이되는 배너 프레임을 보여준다. 도 7의 하단 도면은 사용자가 인식할 수 있는 배너(BN)을 보여준다. 배너 프레임(BNF)의 첫 번째 층(도 7의 상단에서 좌측)은 디스플레이될 메시지(MSG) "Order: transfer xx € to yyyy"를 포함한다. 두 번째 층(도 7의 상단 우측)은 사용자에 의해 사용자 단말(UT)에 입력될 트랜잭션 검증 코드(CC)에 대응하는 2 자리 숫자를 포함한다. 트랜잭션 검증 코드(CC)의 각 디지트 또는 자리수는 디스플레이될 디지트의 함수로서 디스플레이되거나 디스플레이되지 않는 몇몇 세그먼트들(SG)(예를 들어, 7 개의 세그먼트들)을 사용하여 디스플레이된다. 사용자 단말(UT)의 스크린 샷 기능을 사용하여 트랜잭션 검증 코드(CC)가 획득되는 것을 방지하기 위해, 가시적인(visible) 세그먼트들(SG) 중 일부만이 소프트웨어 컴포넌트(GC)에 의해 생성된 각각의 이미지 프레임(FRM)에서 디스플레이되며, 이로써 디스플레이될 각 가시적인 세그먼트(SG)는 100 %보다 낮은 확률, 예를 들어, 50 %의 확률로 소프트웨어 컴포넌트(GC)에 의해 생성된 이미지 프레임(FRM)에서 존재한다. 이러한 첫 번째 및 두 번째 층의 픽셀들은 XOR 연산에 의해 함께 결합될 수 있다. 따라서, 도 7의 중앙 부분에 도시된 바와 같이 생성된 배너 프레임(BNF)에서, 메시지(MSG) 및 트랜잭션 검증 코드(CC)의 세그먼트에 속하는 픽셀들은, 이러한 메시지 및 세그먼트가 배경색과 다른 색으로 디스플레이될 때에, 배경 색을 바탕으로 표시된다.
도 7의 하부 도면은, 이미지 프레임들이 인간 시각 시스템에 의해 인지될 수 있기 때문에, 소프트웨어 컴포넌트에 의해 생성된 이미지 프레임(FRM)이 충분히 높은 주파수(30 Hz 초과)로, 예를 들어 60 Hz로, 디스플레이되며 이로써 16.6 ms마다 새로운 프레임(FRM)이 디스플레이되어서 생성되는, 디스플레이된 배너(BN)를 도시한다. 디스플레이될 가시적 세그먼트들이 100 %보다 낮은 확률로 배너 프레임(BNF)에 삽입될 때, 트랜잭션 검증 코드(CC)의 두 자리수 기호(DL)가 (도 7의 예에서) 회색으로 사용자에게 표시된다.
일 실시예에 따르면, 디스플레이될 각 디지트(KYL, DL)의 가시적인 세그먼트 및 비가시적인 세그먼트는 디스플레이된 디지트들은 인간의 시각 시스템의 지속성으로 인하여 인간의 시각 시스템이 이해할 수 있도록 각각의 확률로 이미지 프레임들(FRM)에서 나타난다. 예를 들어, 생성된 소프트웨어 컴포넌트(GC)는 0 내지 15 %의 확률로 비가시적인 세그먼트를 디스플레이하고, 50 내지 100 %의 확률로 가시적인 세그먼트를 디스플레이하도록 구성된다. 키 기호(KYL) 및 트랜잭션 검증 코드(CC)의 디지트를 형성하는 가시적인 세그먼트들은 50 내지 100 % 사이의 각각의 확률로 디스플레이될 수 있고, 키 기호(KYL) 및 트랜잭션 검증 코드(CC)의 디지트를 형성하는 비시적인 세그먼트들은 0 내지 15 % 사이의 각각의 확률로 디스플레이될 수 있다. 키 기호들 및 트랜잭션 검증 코드(CC)의 디지트들을 형성하는 세그먼트들의 디스플레이 확률은, 디스플레이된 디지트들의 기호들이 인간 시각 시스템에 의해 이해할 수 있게 유지되도록, 프레임 디스플레이 주파수의 함수로서 조정될 수 있다. 세그먼트들 또는 픽셀들이 이미지 프레임의 배경색으로 각기 디스플레이되거나 배경색과 다른 색상으로 디스플레이될 때 이러한 세그먼트들 또는 픽셀들은 이미지 프레임(FRM)에서 가시적이거나 가시적이지 않는다. 배경색은 고려된 세그먼트 (SG) 주위의 픽셀들의 컬러에 의해 규정되며, 이미지 프레임(FRM) 내에서의 해당 세그먼트 위치의 함수로서 변할 수 있다.
디스플레이된 키패드(KYPF)는 검증 키 "V"를 가질 필요가 없으며, 사용자가 패스워드(PC)의 마지막 숫자와 타이핑될 트랜잭션 검증 코드(CC)를 입력할 때 타이핑된 코드들에 대한 검증이 수행된다. 예를 들어, 패스워드(PC)가 4 자릿수이고 트랜잭션 검증 코드(CC)가 2 자릿수인 경우, 사용자가 6 자리를 입력하면, 소프트웨어 컴포넌트(GC)의 실행이 종료될 수 있다. 소거 키 "C"는 마지막으로 타이핑된 숫자 또는 이전에 타이핑한 모든 숫자를 삭제하도록 다루어질 수 있다. 소거 키 "C"의 효과는 디스플레이 영역(FBD) 내의 하나 또는 모든 도트를 소거함으로써 사용자에게 보여질 수 있다.
도 8은 일 실시예에 따른 애플리케이션(APP)의 기능적 아키텍처를 도시한다. 애플리케이션(APP)은 관리 모듈(MGM), 초기화 모듈(INM), 인증 모듈(AUTM), 링크 모듈(LKM), 소프트웨어 컴포넌트 실행 모듈(GCM)을 포함한다. 관리 모듈(MGM)은 다른 모듈들(INIM, RGM, LKM, GCM)을 제어하고, 통신 모듈(NIT)을 통한 애플리케이션(APP)과 인증 서버(ASRV) 사이의 통신을 제어한다. 초기화 모듈(INM)은 단계 S9를 수행한다. 링크 모듈(LKM)은 단계 S11 및 단계 S12를 수행한다. 이러한 목적을 위해, 링크 모듈은 사용자 단말(UT)의 이미지 센서(IMS)에 접속되어 사용자 단말(UT)에 의해 수신되고 사용자 단말(OT)에 의해 디스플레이될 단회 사용 링크 토큰(LTK)에 대응하는 광학 코드를 획득할 수 있다. 인증 모듈(AUTM)은 단계 S25 내지 단계 S29를 수행하여, 단계 S23에서 수신된 인증 요청을 처리하고, 소프트웨어 컴포넌트(GC)의 실행을 트리거하고, 사용자에 의해 입력된 위치들(POSi)을 수신하여 전송한다. 인증 모듈(AUTM)은 사용자 단말(UT)의 키패드 또는 터치 감지 표면 (TSIN)에 연결된다. 소프트웨어 컴포넌트 실행 모듈(GCM)은 단계 S27를 수행하여 적절한 리프레시 레이트로 이미지 프레임(FRM)을 생성하고 디스플레이하고, 소프트웨어 컴포넌트 실행 모듈(GCM)은 소프트웨어 컴포넌트(GC)에 적용될 입력 값들을 각 프레임에서 선택하고 소프트웨어 컴포넌트를 실행한다. 소프트웨어 컴포넌트 실행 모듈(GCM)은 사용자 단말(UT)의 디스플레이 스크린(DSP) 상에 디스플레이되는 이미지 프레임(FRM)을 생성한다.
도 9는 일 실시예에 따른 소프트웨어 컴포넌트(GC)의 예를 도시한다. 소프트웨어 컴포넌트(GC)는 가블드 회로(garbled circuit)로 암호화된 소프트웨어 구현 불(Boolean) 회로이다. 소프트웨어 컴포넌트(GC)는 2 개의 회로 층(L1, L2) 및 2 개의 상호 접속 매트릭스들(XM1, XM2)을 포함한다. 제 1 상호 접속 매트릭스(XM1)는 소프트웨어 컴포넌트(GC)의 입력 데이터들(INi, INj, SGi, RNi)을 수신한다. 제 1 층(L1)은 논리 게이트들(AGi)을 포함하며, 각 논리 게이트는 제 1 상호 접속 매트릭스(XM1)로부터 2 개의 입력 값들(SGi, RNi)을 수신하고 제 2 상호 접속 매트릭스(XM2)에 하나의 출력 값(Di)을 제공한다. 제 2 층(L2)은 논리 게이트들(XGi, XGj)을 포함하며, 각 논리 게이트는 제 2 상호 접속 매트릭스(XM2)로부터 2 개의 입력 값들을 수신하고, 픽셀 값을 나타내는 하나의 출력 값(PXi, PXj)을 제공한다. 제 1 층(L1)의 논리 게이트들(AGi) 각각은 제 1 상호 접속 매트릭스(XM1)에 의해 선택된 소프트웨어 컴포넌트(GC)의 입력 값들(SGi, RNi)을 수신한다. 다른 층(L2의) 논리 게이트들(XGi) 각각은 소프트웨어 컴포넌트의 하나의 입력 값(INi) 및 이전 층(L1)에 속하는 하나의 논리 게이트(AGi)에 의해 제공되는 하나의 출력 값을 수신하며, 이러한 입력 값들은 제 2 상호 접속 매트릭스(XM2)에 의해 선택된다. 제 2 층(L2)의 각각의 논리 게이트(XGj)는 소프트웨어 컴포넌트의 2 개의 입력 값(INj1, INj2)을 수신하며, 이들 입력 값은 제 1 상호 접속 및 제 2 상호 접속 매트릭스(XM1 및/또는 XM2)에 의해 선택된다. 소프트웨어 컴포넌트의 이러한 구조는, 동일한 회로 층들(L1, L2) 내의 모든 논리 게이트들이 동시에 처리될 수 있기 때문에, 병렬 처리를 가능하게한다.
일 실시예에 따르면, 도 6a에 도시된 바와 같은 이미지 프레임들(FRM)을 생성하기 위해, 소프트웨어 컴포넌트(GC)는 이미지 프레임들(FRM) 내에서 가시적이거나 비가시적 일 수 있는 세그먼트들(SG) 각각에 대한 하나의 회로(SGCi) 및 예를 들어, 세그먼트들(SG) 주변 또는 배너 프레임(BNF) 내의, 세그먼트 픽셀(PXi)과 구별된되는 각 픽셀(PXj)에 대한 하나의 회로(FPCj)를 포함한다. 따라서, 도 6a의 예에서, 디스플레이될 이미지 프레임들(FRM)은 키패드(KYP)를 위한 70 개의 세그먼트(10 개의 키 기호 디지트 x 디지트 당 7 개의 세그먼트) + 트랜잭션 검증 코드(CC)를 위한 14 개의 세그먼트(2 개의 디지트 x 디지트 당 7 개의 세그먼트)를 포함하며, 따라서 소프트웨어 컴포넌트는 84 개의 회로들(SGCi)을 포함한다. 각 회로(SGCi)는 회로 층(L1) 내에서 하나의 논리 게이트(AGi)를 포함하며, 회로 층(L2) 내에서는 이미지 프레임들(FRM) 내에서 디스플레이되는 바와 같은 세그먼트(SG)를 형성하는 픽셀들(PXi1, PXi2, ... PXip)의 수와 동일한 개수의 논리 게이트들(XGi)을 포함한다.
논리 게이트(AGi)는 예를 들어, 50 %의 확률로 각각의 가시적인 세그먼트를 디스플레이하고 가시적일 확률이 0 %인 각각의 비가시적인 세그먼트를 디스플레이하도록 AND, OR, NAND, NOR와 같은 논리 연산을 수행한다. 논리 게이트들(XGi) 각각은 소프트웨어 컴포넌트의 입력부(INi)와 함께 논리 XOR 연산을 수행한다. 논리 게이트(AGi)는 하나의 세그먼트 입력 값(SGi) 및 이에 대응하는 랜덤 입력 값(RNi)을 수신한다. 논리 게이트(AGi)의 출력부(Di)는 회로(SGCi)의 모든 게이트들(XGi)의 입력부에 접속된다. 각각의 논리 게이트(XGi)는 입력 값들(INi1 내지 INip) 중 하나를 수신하고, 하나의 픽셀 값(PXi1 내지 PXip)을 회로(GC)의 출력부에 제공한다.
회로들(FPCj)의 각각은 소프트웨어 컴포넌트(GC)에 의해 제어되고 이미지 프레임들(FRM) 내의 세그먼트 픽셀과 구별되는 픽셀(PXj)마다 논리 XOR 연산을 수행하는 하나의 논리 게이트(XGj)를 포함한다. 논리 게이트들(XGj) 각각은 소프트웨어 컴포넌트(GC)의 두 개의 입력 값들(INj1, INj2)을 수신하고 하나의 픽셀 값(PXj)을 제공한다. 논리 게이트들(XGj) 각각은 제 1 층(L1) 또는 제 2 층(L2)에 위치할 수 있다. 입력 값들(INi, INj)의 수는 소프트웨어 컴포넌트(GC)에 의해 제어되는 픽셀들(PXi, PXj)의 개수의 제곱근에 근사한 값으로 제한될 수 있다.
회로들(SGCi)은 50 %의 확률의 키 기호들(KYL) 및 트랜잭션 검증 코드(SG)의 디지트들의 가시적인 세그먼트들을 디스플레이하고 0 %의 확률의 키 기호들(KYL) 및 트랜잭션 검증 코드(SG)의 디지트들의 비가적인 세그먼트들을 디스플레이하도록 구성된다. 이러한 소프트웨어 컴포넌트(GC)의 구조는 디스플레이될 디지트들의 가시적인 세그먼트들 및 비가시적인 세그먼트들에 다른 디스플레이 확률들을 적용하도록 구성될 수도 있다. 물론, 디지트들은 알파벳 문자 또는 보다 일반적으로 ASCII 문자를 포함한 심볼들과 같은, 숫자 이외의 다른 기호들을 디스플레이하도록 제어 및/또는 (예를 들어, 더 많은 세그먼트둘로) 배열될 수 있다.
도 9의 소프트웨어 컴포넌트의 예에서, 논리 게이트들(XGi)의 수 + 논리 게이트들(XGj)의 수 * 2보다 적은 개수의 입력부들(INi, INj)이 존재하도록, 하나의 입력부(INi 또는 INj)가 다수의 논리 게이트들(XGi, XGj)에 접속될 수 있다.
제 2 상호 접속 매트릭스(XM2)는 소프트웨어 컴포넌트에 의해 생성된 어느 픽셀이 세그먼트(SG)에 속하는지를 규정한다. 일 실시예에 따르면, 각 세그먼트(SG)의 위치, 배향 및 형상은 소프트웨어 컴포넌트들 간에, 사용자 단말의 디스플레이 해상도에 따라서, 하나 또는 수 개의 픽셀만큼 변한다. 이러한 구성은 디스플레이된 기호들의 기계 광학 인식을 수행하는 것을 더 어렵게 만든다.
본 명세서에서 사용되는 "세그먼트"라는 용어는 세그먼트 입력 값들(SGi) 중 동일한 하나에 의해 제어되는 픽셀들의 세트를 말한다는 것을 알 수 있다. 세그먼트를 형성하는 픽셀들의 세트는 반드시 인접하는 픽셀들로 형성될 필요는 없지만, 키 기호(KYL)를 형성하는 세그먼트들로서 인접하는 픽셀들의 그룹들을 포함할 수 있다. 또한, 세그먼트를 형성하는 픽셀들은 하나의 디스플레이된 이미지 프레임(FRM)에서 모두 가시적이거나 모두 비가시적이다.
도 10은 일 실시예에 따른, 소프트웨어 컴포넌트가 가블드 회로로서 설계될 때, 소프트웨어 컴포넌트를 규정하는 구조 및 콘텐츠 데이터(GCD)(단계 S23에서 송신됨)를 도시한다. 상기 구조 및 콘텐츠 데이터(GCD)는 다음을 포함한다:
고유 소프트웨어 컴포넌트 식별자(GCID),
입력 값들(INi, INj)의 수 n, 출력 값들의 m의 수, 세그먼트 입력 값들(SGi)또는 랜덤 입력 값들 RNi의 수 s, 논리 게이트들(AGi, XGi, XGj)의 수 g, 논리 게이트들(AGi)의 수 k, 회로 내의 와이어들의 수 w, 및 회로(GC) 내의 회로 층(L1, L2)의 수 l을 포함하는, 수 세트(number set)(DIM),
소프트웨어 컴포넌트의 실행을 위해 특정된 바와 같은, 예를 들어, 1에서 n까지 번호가 매겨진, 회로(GC)의 입력들(INi, INj)의 모든 값들을, 포함하는 입력 데이터 테이블(INLB),
소프트웨어 컴포넌트의 실행을 위해 특정된 바와 같은, 예를 들어, 1에서 s까지 번호가 매겨진, 소프트웨어 컴포넌트(GC)의 세그먼트 입력들(SGi)의 모든 값을 포함하는, 세그먼트 테이블(SGLB),
1에서 s까지 번호가 매겨진 랜덤 값들(RNi)을 포함하는 랜덤 데이터 테이블 (RNLB),
소프트웨어 컴포넌트(GC)의 2 개의 입력 와이어 번호들(IN1, IN2), 출력 와이어 번호(ON), 및 각 논리 게이트(AG, XG)의 타입 식별자(GTYP)를 규정하는 게이트 와이어 테이블(GTW)로서, 여기서 회로의 게이트들은 1 내지 g로서 번호가 매겨지는, 게이트 와이어 테이블(GTW), 및
소프트웨어 컴포넌트(GC)의 각각의 논리 게이트(AG)에 대한 4 개의 값(OV00, OV01, OV10, OV11)을 포함하는 게이트 진리 테이블.
도 9의 예에서, 타입 식별자(GTYP)는 해당 논리 게이트가 XOR 연산 또는 AND, OR, NOR, NAND와 같은 다른 논리 연산을 수행하는 것을 특정한다.
일 실시예에 따르면, 이진 논리 상태 0 또는 1을 각각 나타내는 논리 게이트들(AGi, XGi, XGj)의 입력 값들(INi, SGi, RNi, INj) 및 출력 값들(Di, PXi, PXj)은 수 개의 비트, 예를 들어, 64 또는 128 비트에 의해서 규정된다. 이러한 방식으로, 가블드 회로(GC) 내의 각각의 입력부 및 출력부는 오직 2 개의 유효 값들을 가지며, 이러한 값들의 비트 크기를 고려할 때, 다른 모든 가능한 값들은 무효하다. 소프트웨어 컴포넌트(GC)가 생성될 때, 소프트웨어 컴포넌트의 각각의 입력부(SGi, RNi, INi, INj)의 2 개의 유효 값들은, 이러한 2 개의 유효 값들의 최하위 비트가 서로 상이한 경우에 랜덤하게 선택되고, 이러한 최하위 비트들은, 상기 논리 게이트들 중 출력 값을 컴퓨팅할 때, 해당 논리 게이트의 진리 테이블에서 하나의 값을 선택하는데 사용된다.
각각의 논리 게이트(AGi)의 진리 테이블(GTT)[i])은 4 개의 값들(OV00, OV01, OV10, OV11)을 포함하며, 이들 각각은 해당 논리 게이트의 입력 값들에 대응하는 2 진 입력 값들의 조합(0,0),(0,1),(1,0),(1,1)에 대응한다. 소프트웨어 컴포넌트의 토폴로지는, 소프트웨어 컴포넌트의 각 와이어에 번호를 매김으로써, 즉 소프트웨어 컴포넌트의 각 입력 와이어에 1 내지 (n + 2s)의 번호를 매기고 로직 게이트들의 각 출력에 (n + 2s + 1) 내지 (n + 2s + g)의 번호를 매김으로써, 그리고, 해당 논리 게이트의 2 개의 입력부들로의 두 개의 와이어 번호들(IN1, IN2) 및 해당 논리 게이트의 출력부로의 하나의 와이어 번호(ON)를 포함하는 테이블(GTW)의 일 기록정보를 각각의 논리 게이트(AGi, XGi, XGj)와 연관시킴으로써, 테이블(GTW)에서 규정될 수 있다. 소프트웨어 컴포넌트(GC)의 출력부들의 와이어들에는 (n + 2s + g - m + 1) 내지 (n + 2s + g)의 번호가 매겨진다.
일 실시예에 따르면, 테이블(RNLB)은 각각의 랜덤 입력 값(RNi)의 논리 상태 0 및 1에 각각 대응하는 양 유효 값들(RNV1, RNV2)을 포함한다. 각 유효 값(RNV1, RNV2)은 각각 논리 상태 0 및 1에 대응하는 랜덤 값(RNi)의 2 개의 유효 값들 중 하나 또는 다른 하나와 동일한 확률로 동일할 수 있다.
XOR 게이트들(XGi, XGj)은 테이블(GTT)에서 인코딩된 진리 테이블를 사용하거나, 해당 논리 게이트의 입력 값들에서의 동일한 순위의 각 비트 쌍에 XOR 연산을 적용함으로써 실행될 수 있다. 후자의 경우, 테이블(GTW)의 필드(GTYP)는 해당 논리 게이트가 XOR 게이트인지 또는 다른 게이트인지를 규정하고, 테이블(GTT)은 각 논리 게이트(AGi)를 위해서만 하나의 기록정보를 포함한다.
일 실시예에 따르면, 테이블들(INLB, SGLB, RNLB, GTT) 내의 각각의 값은 128 비트 워드로 인코딩되고, 테이블(GTW)의 각 기록정보는 64 비트 워드로 인코딩되고, 와이어 번호들(IN1, IN2, ON)은 21 비트 워드로 인코딩된다. 테이블(GTW)은 예를 들어, gzip 압축 방식을 사용하여 압축된 형태로 인증 서버(ASRV)에서 사용자 단말(UT)로 전송될 수 있다.
일 실시예에 따르면, 인덱스 i의 테이블 기록정보들(GTW[i] 및 GTT[i])이 동일한 논리 게이트를 참조하는 경우, 게이트 테이블들(GTW 및 GTT) 내에서의 논리 게이트들의 순서는 랜덤하게 규정될 수 있다.
도 11은 일 실시예에 따른, 소프트웨어 컴포넌트를 실행하고 이미지 프레임들(FRM)을 생성하도록 구성된 소프트웨어 컴포넌트 실행 모듈(GCM)을 도시한다. 소프트웨어 컴포넌트 실행 모듈(GCM)은 새로운 이미지 프레임이 생성될 때마다, 즉 30Hz 이상의 프레임 리프레시 레이트로 소프트웨어 컴포넌트를 실행한다. 이러한 목적을 위해서, 소프트웨어 컴포넌트 실행 모듈(GCM)은 새로운 이미지 프레임이 생성되어야 할 때마다, 예를 들어, 상승 에지를 갖는 동기화 신호(SNC)에 의해 활성화될 수 있다. 소프트웨어 컴포넌트 실행 모듈(GCM)은 스위칭 모듈(SWC), 소프트웨어 컴포넌트 인터프리터(GCI), XOR 마스킹 회로(XRG) 및 픽셀 맵핑 모듈(MPF)을 포함한다. 스위칭 모듈(SWC)은 동기화 신호(SNC) 및 실행될 소프트웨어 컴포넌트(GC)를 규정하는 구조 및 콘텐츠 데이터(GCD)를 수신하고, 입력 데이터 구조(GCDI) 내로 소프트웨어 컴포넌트(GC)의 다음 실행에 의해 처리될 데이터를 로딩한다. 따라서, 스위칭 모듈(SWC)은 입력 데이터 구조(GCDI)를 변형시키지 않고서 데이터들(DIM, INLB, SGLB, NBGL, GTW, GTT 및 GCK)을 전송한다.
일 실시예에 따르면, 스위칭 모듈(SWC)은 각 입력 랜덤 값(RNi)의 2 개의 유효 값(RNiV1, RNiV2) 중 하나 또는 다른 하나를 선택하도록 스위칭 동작(SWi)을 수행한다. 각 스위칭 기능(SWi)은 난수 생성 함수(RNG)에 의해 생성된, s 비트를 갖는 난수(RNB)의 각 비트(RNBi)에 의해서 제어되며, 여기서 s는 소프트웨어 컴포넌트(GC)에 입력될 랜덤 값들(RNi)의 개수이거나 또는 디스플레이될 모든 디지트들의 세그먼트들(SGi)의 총 개수이다. 각각의 스위칭 연산(SWi)은 랜덤 값(RNi) 각각에 대해, 입력 데이터 구조(GCDI) 내에 저장된 랜덤하게 선택된 값(RNiVk)을 제공한다. 랜덤 값들(RNi)의 2 개의 유효 값들(RNiV1, RNiV2) 중 하나를 선택함으로써(디스플레이될 가시적인 세그먼트(SG)는 상태 1로 설정된 입력 데이터(SGi)에 대응함), 대응하는 AND 게이트(AGi)의 출력은 선택된 랜덤 값(RNiVk)의 논리 상태에 따라 0 또는 1 중 하나를 나타내도록 설정된다. 결과적으로, 가시적인 세그먼트들(SGi)은 랜덤 입력 값(RNi)이 논리 상태 1로 설정될 확률과 동일한 확률로 각 프레임(FRM)에서 나타난다. 난수(RNB)가 참(true) 난수라면, 이러한 확률은 50 %와 동일하다.
소프트웨어 컴포넌트 인터프리터 모듈 또는 해석 모듈(GCI)은 입력 데이터 구조(GCDI) 내의 데이터에 의해 규정된 바와 같은, 제 1 회로 층(L1)의 논리 게이트들 각각 및 제 2 회로 층(L2)의 논리 게이트들 각각을 연속적으로 실행하도록 구성된 전용 해석 모듈이다. 이를 위해, 이러한 소프트웨어 컴포넌트 해석 모듈(GCI)은 소프트웨어 컴포넌트(GC)의 각 와이어의 값을 수신하는 와이어 테이블(wire table)을 사용할 수 있으며, 이러한 값은 해당 와이어 값의 와이어 번호에 대응하는 인덱스로 상기 와이어 테이블 내에 기록된다. 와이어 테이블에는 먼저 소프트웨어 컴포넌트의 입력 값들(INi, INj, SGi, RNiVk)로 로딩되며, 이러한 입력 값들은 이러한 입력 값들에 할당된 와이어 번호들에 대응하는 인덱스들(1 내지 n + 2s)로 해당 와이어 테이블에 기록된다. 이어서, 각 실행된 논리 게이트의 컴퓨팅된 출력 값이 해당 출력 값의 와이어 번호에 대응하는 인덱스로 와이어 테이블 내에 기록된다. 소프트웨어 컴포넌트 실행이 끝나면, 와이어 테이블은 (n + 2s + g - m + 1) 내지 (n + 2s + g)의 인덱스로 된 소프트웨어 컴포넌트의 출력 값들을 포함한다.
각 논리 게이트의 출력 값은 다음과 같이 2 개의 입력 값들 각각의 최하위 비트의 함수로서, 해당 논리 게이트의 양 입력 값들 및 해당 논리 게이트의 진리 테이블에서 선택된 하나의 값에 적용되는 비가역 함수를 적용함으로써 컴퓨팅될 수 있다:
OV = PF1(IN1, IN2, G) (1)
여기서, IN1 및 IN2는 해당 논리 게이트의 입력 값들을 나타내며, G = GTT[IN1{0}//IN2{0}]이며, IN1{0} 및 IN2{0}은 각기 입력 값들 IN1 및 IN2의 최하위 비트를 나타내고, 연산자 "//"는 비트 병합(concatenation) 연산자를 나타내며, GTT는 해당 논리 게이트의 4 요소 진리 테이블을 나타내고, PF1은 비가역 함수를 나타낸다.
일 실시예에 따르면, 비가역 함수(PF1)는 소프트웨어 컴포넌트에 할당된 암호화 키를 사용하여 AES(Advanced Encryption Standard)와 같은 암호화 함수를 사용할 수 있다. 이 경우, 암호 키(GCK)는 소프트웨어 컴포넌트(GC)의 구조 및 콘텐츠 데이터(GCD)에 저장될 수 있다. 예를 들어, 논리 게이트의 출력 값(OV)은 다음과 같이 컴퓨팅될 수 있다 :
OV = AES(GCK, K)
Figure pat00001
K
Figure pat00002
G (2)
여기서, K = CF(IN1,IN2)
Figure pat00003
T이며, "
Figure pat00004
"는 배타적 OR(XOR) 연산자를 나타내며, T는 논리 게이트에 할당된 번호, 예를 들어, 해당 논리 게이트의 번호를 나타내며, 입력 값들 IN1 및 IN2에 의존할 수 있으며, CF는 결합 함수를 나타내고, AES(GCK, K)는 암호화 키(GCK)를 사용하여 AES 암호화 알고리즘에 의해 K의 암호화된 값을 나타낸다. 상기 결합 함수는 배타적 논리합 연산이거나 다음과 같은 형태의 연산일 수 있다:
CF(IN1,IN2) = SH(IN1,a)
Figure pat00005
SH(IN2,b) (3)
여기서, SH(X,a)는 비트들의 수 "a"만큼의 X의 좌측 시프트 연산을 나타낸다.
소프트웨어 컴포넌트 해석 모듈(GCI)에 의해 제공된 소프트웨어 컴포넌트(GC)의 각 출력 데이터의 최하위 비트는 픽셀 값(PXi, PXj)로서 간주된다. XOR 마스킹 모듈(XRG)은 각 픽셀 값(PXi)(소프트웨어 컴포넌트에 의해 제공된 각 출력 값의 최하위 비트)를 해당 구조 및 콘텐츠 데이터(GCD) 내에 제공된 이미지 마스크 (IMSK)에 속하는 각각의 마스크 비트 값(MKi)과 결합시킨다. 사용된 결합 연산은 XOR 연산(XRi)일 수 있다. 소프트웨어 컴포넌트의 출력 값들의 최하위 비트를 포함하는 소프트웨어 컴포넌트의 출력 값들이 랜덤하게 선택되기 때문에, 소프트웨어 컴포넌트의 출력 값(PXi, PXj)의 각각의 최하위 비트는 화이트 노이즈(white noise)를 나타낸다. 따라서, 소프트웨어 컴포넌트에 의해 생성된 이미지 부분들은 암호화된 형태로 존재하며, 이미지 마스크(IMSK)를 사용하여 암호해독된다.
이미지 마스크(IMSK)는 메시지(MSG)를 포함하며, 이로써, 소프트웨어 컴포넌트(GC)에 의해 제공된 픽셀(PXj)과 결합될 때, 메시지(MSG)는 이해될 수 있고 트랜잭션 검증 코드(CC)의 세그먼트(SG)와 결합된다. 이미지 마스크(IMSK)는 또한 2 진 상태 0으로 고정된 세그먼트 입력 값(SGi)(비가시적이 되게 구성된 세그먼트)에 대응하는 디지트 세그먼트(SG)의 픽셀들(PXi)을 가시화하도록 구성될 수 있다. 이러한 방식으로, 세그먼트는 생성된 이미지 프레임들(FRM)에서 항상(100 % 확률로) 가시적이다. 세그먼트를 항상 가시적으로 또는 비가시적으로 구성하는 또 다른 방법은 송신된 구조 및 콘텐츠 데이터(GCD) 내의 관련 세그먼트 입력 값(SGi)에 대응하는 2 개의 랜덤 값들(RNiV1, RNiV2)에 동일한 값을 부여하는 것이다.
일 실시예에 따르면, 이미지 마스크(IMSK)는 더 높은 보안 수준을 위해 다른 통신 채널을 이용하여 단계 S23에서 사용자 단말(UT)로 전송된다.
제 1 및 제 2 상호 접속 매트릭스들(XM1, XM2)은 입력 값들(INj)에 대응하는 픽셀들(PXj)과 세그먼트 입력 값들(SGi)에 대응하는 픽셀들(PXi)이 이미지 프레임(FRM) 내에서 디스플레이되는 위치를 규정한다. 입력 값들(INi, INj)은 소프트웨어 컴포넌트(GC)의 출력에서의 대응하는 픽셀(PXi, PXj)이 가시적인지 비가시적인지를, 이미지 마스크(IMSK)와 관련하여 규정하고, 픽셀들(PXi)의 가시성(visibility)은 대응하는 랜덤 입력 값(RNi)에 또한 의존한다. 입력 값들(INi, INj)의 각각의 2 진 상태들은 소프트웨어 컴포넌트가 생성될 때 랜덤하게 선택될 수 있고, 이어서, 이미지 마스크(IMSK)가 입력 값들(INi, INj)의 선택된 2 진 상태, 제 1 및 제 2 상호 접속 매트릭스들(XM1, XM2) 및 디스플레이될 이미지 프레임(FRM)의 함수로서 생성되어서, 해당 이미지 프레임 내에서의 가시적 픽셀 및 비가시적 픽셀을 규정한다.
매핑 모듈(MPF)은 XOR 마스킹 모듈(XRG)에 의해 제공된 픽셀 값들(PXi')의 그룹들을, 적절한 위치에서, 배경 이미지 프레임(BCKF)에 삽입하여, 디스플레이될 이미지 프레임들(FRM) 중 하나를 생성한다. 특히, XOR 마스킹 모듈(XRG)은 도 7에 도시된 바와 같은 배너 프레임(BNF)을 형성하는 픽셀들(PXi')의 그룹 및 이미지 프레임(FRM) 내에 디스플레이될 하나의 키패드 프레임(KYPF)의 키 기호들(KYL) 각각을 형성하는 픽셀들(PXi')의 그룹들을 제공한다. 매핑 모듈(MPF)은 이들 픽셀 그룹을, 각각의 미리 규정된 위치들에서, 배경 이미지 프레임(BCKF) 내에 삽입하여, 도 6a에 도시된 바와 같은 이미지 프레임들(FRM) 중 하나를 생성하다. 일 실시예에서, XOR 마스킹 모듈(XRG)은 직접적으로 디스플레이 가능한 이미지 프레임을 출력한다. 이러한 경우에, 매핑 모듈은 필수적인 구성요소가 아니다.
소프트웨어 컴포넌트의 구조 및 콘텐츠 데이터(GCD) 내의 랜덤 값들(RNi)의 2 개의 유효 값들의 전송은, 매우 낮은 비용으로 소프트웨어 컴포넌트를 실행하여 출력 데이터 내에서의 무작위성(randomness)을 도입하는 것을 가능하게 한다. 그렇지 않다면, 무작위 출력 데이터를 생성하는 소프트웨어 컴포넌트는 소프트웨어 컴포넌트 내에 난수 생성기를 도입해야 하며, 이는 가블드 회로에 복잡성을 추가하지 않고서는 구현될 수 없음이 자명하며, 따라서, 소프트웨어 컴포넌트를 규정하는 구조 및 콘텐츠 데이터(GCD)의 크기를 증가시킬 수 밖에 없다. 또한, 랜덤 입력(RNi)의 2 개의 유효 값(RNiV1, RNiV2)의 전송은 패스워드(PC) 및 트랜잭션 검증 코드(CC)의 도입의 보안 수준을 감소시키지 않는데, 그 이유는 각각의 랜덤 입력 값(RNiV1, RNiV2)과 이의 이진 값 0 또는 1 간의 대응이 쉽게 설정될 수 없기 때문이다.
일 실시예에 따르면, 사용자 단말(UT)이 새로운 인증을 수행해야 할 때마다, 단계 S27에서, 상이한 키 레이아웃을 갖는 키패드(KYP)를 디스플레이하고 상이한 트랜잭션 검증 코드(CC)를 디스플레이하는 새로운 소프트웨어 컴포넌트(GC)가 실행된다.
일 실시예에 따르면, 사용자 단말이 새로운 인증을 수행할 필요가 있을 때마다, (단계 S23에서) 하나의 소프트웨어 컴포넌트(GC)를 전송하는 것을 피하기 위해, (구조 및 콘텐츠 데이터(GCD)에 의해 규정된) 다수의 대안적 소프트웨어 컴포넌트들이 사용자 단말(UT) 내로 한 번에 다운로드될 수 있고, 이로써, 사용자 단말(UT)은 새로운 인증을 수행해야 할 때마다 이전에 실행되지 않은 소프트웨어 컴포넌트를 선택한다. 예를 들어, 다수의 소프트웨어 컴포넌트는 애플리케이션(APP)이 다운로드되어 사용자 단말(UT)에 설치될 때에, 애플리케이션(APP)과 함께 다운로드된다. 그런 다음, 하나 또는 여러 개의 소프트웨어 컴포넌트가 사용되는 경우에, 소프트웨어 컴포넌트의 새로운 세트가, 예를 들어, 해당 사용자 단말이 효율적인 네트워크 접속 능력을 갖는 경우에, 인증 서버(ASRV)로부터 해당 사용자 단말(UT)로 다운로드될 수 있다.
일 실시예에 따르면, 다수의 대안적 소프트웨어 컴포넌트가 암호화된 형태로 사용자 단말(UT)에 저장되고, 사용자 단말(UT)이 새로운 소프트웨어 컴포넌트를 실행해야 할 때마다, 인증 서버(ASRV)는 대응하는 암호해독 키를 사용자 단말에 전송한다.
일 실시예에 따르면, 소프트웨어 컴포넌트 각각의 일부만이 사용자 단말(UT)로 다운로드된다. 각 소프트웨어 컴포넌트의 다운로드된 부분에는, 소프트웨어 컴포넌트가 가블드 회로인 경우에, 테이블(RNLB)이 있거나 없는 데이터들(GCID, DIM, NBGL, GTW)가 포함될 수 있다. 사용자 단말(UT)이 새로운 인증을 수행해야 할 때마다, 인증 서버(ASRV)는 단계 S23에서 데이터들(INLB, SGLB, GCK 및 IMSK)만을 해당 사용자 단말에 전송한다. 그런 다음, 사용자 단말(UT)은 인증을 위해서 사용된 소프트웨어 컴포넌트의 식별자(GCID)를 예를 들어, 단계 S25 또는 단계 S29에서, 인증 서버(ASRV)에 전송한다. 인증 서버가 해당 사용자 단말(UT)로부터 소프트웨어 컴포넌트 식별자(GCID)를 수신하면, 인증 서버(ASRV)는 해당 데이터베이스(UDB) 내에서, 상기 수신된 소프트웨어 컴포넌트 식별자가 이전에 사용자 단말(UT)에 전송된 후속 미실행된 또는 유효한 소프트웨어 컴포넌트에 대응하는지를 검사한다. 상기 수신된 소프트웨어 컴포넌트 식별자가 이전에 사용자 단말(UT)로 전송된 후속 미실행된 또는 유효한 소프트웨어 컴포넌트에 대응하지 않으면, 인증 서버(ASRV)는 사용자 인증 및 이에 대응하는 트랜잭션을 무효화한다. 인증 서버(ASRV)는 (동일한 소트트웨어 컴포넌트 식별자(GCID)에 대응하는) 동일한 소프트웨어 컴포넌트로 수행된 이전 트랜잭션을 무효화할 수도 있다.
일 실시예에 따르면, 인증 서버(ASRV)는 자신이 사용자 단말에 대해 생성한 각각의 소프트웨어 컴포넌트에 (예를 들어, 도 5의 테이블(GCP) 내의) 유효성 표시자(vaildity indicator)를 할당할 수 있다. 인증 서버(ASRV)는 단계 S23에서 해당 소프트웨어 컴포넌트를 사용자 단말로 전송할 때 상기 유효성 표시자를 유효하다고 설정하고, 단계 S29에서 해당 메시지(ARP)를 수신하면 상기 유효성 표시자를 무효하다고 설정할 수 있다. 또한, 인증 서버(ASRV)는 생성된 각 소프트웨어 컴포넌트에 유효 기간(validity period)을 할당할 수 있으며, 이러한 유효 기간이 만료되면 해당 소프트웨어 컴포넌트가 무효하다고 설정된다. 인증 서버(ASRV)는 무효하다고 설정된 소프트웨어 컴포넌트에 대응하는 경우에는 단계 S29에서 전송된 메시지(ARP)를 거부하도록 구성될 수 있다.
일 실시예에 따르면, 몇몇 유효한 소프트웨어 컴포넌트들이 사용자 단말(UT)에 저장된다. 소프트웨어 컴포넌트를 실행하기 전에, 사용자 단말은 단계 S27에서 실행될, 저장된 유효한 소프트웨어 컴포넌트 중 하나를 선택한다. 저장된 유효한 소프트웨어 컴포넌트들 각각은 저장된 유효한 소프트웨어 컴포넌트들의 리스트에서 순위를 가질 수 있다. 사용자 단말에 의해 실행되는 유효한 소프트웨어 컴포넌트는 임의로 선택되거나, 저장된 유효한 소프트웨어 컴포넌트들 리스트에서 그 순위에 따라 선택될 수 있다. 이를 위해서, 실행될 유효한 소프트웨어 컴포넌트의 순위가 인증 서버(ASRV) 및 사용자 단말 양자가 알 수 있는 값으로 미리 규정될 수 있다. 예를 들어, 단계 S25에서(단계 S27에서 소프트웨어 컴포넌트의 실행 전에), 실행될 유효한 소프트웨어 컴포넌트의 순위 값이 인증 서버(ASRV)에 의해 사용자 단말(UT)에 전송될 수 있다.
실행될 유효한 소프트웨어 컴포넌트가 사용자 단말에 의해 랜덤하게 선택되면, 인증 서버(ASRV)는 단계 S29에서 사용자 단말로부터 인증 서버로 전송된 데이터(POSi)로부터, 그리고, 단계 S29에서 전송된 데이터에 대응하는 소프트웨어 컴포넌트를 실행할 때까지, 해당 사용자 단말에 다운로드된 유효한 소프트웨어 컴포넌트들을 순서대로 실행함으로써, 해당 사용자 단말에 의해 실행된 최종 소프트웨어 컴포넌트를 결정할 수 있다. 도 4의 인증 절차에서, 인증 서버(ASRV)는, 전송된 위치들(POSi)이 저장된 데이터들(CC, PC)에 대응할 때까지, 단계들 S30 및 S31에서 유효한 소프트웨어 컴포넌트들을 차례로 실행한다. 전송된 위치들(POSi)이 사용자 단말 내의 유효한 소프트웨어 컴포넌트 각각과 관련하여 해당 저장된 데이터들(PC, CC)에 대응하지 않는다면, 해당 사용자는 인증되지 않는다. 이러한 실시예는, 해커가 해당 사용자 단말에 전송된 최종 소프트웨어 컴포넌트를 실행함으로써 디스플레이된 이미지를 더 이상 결정할 수 없도록 할 수 있기 때문에, 보안 수준을 더 높일 수 있다. 이러한 실시예에서, 해커는 또한 어느 소프트웨어 컴포넌트가 사용자 단말에 의해 실행되었는지를 결정해야만 한다.
보안상의 이유로 동일한 소프트웨어 컴포넌트의 두 번째 실행을 방지하기로 결정할 수 있다. 이러한 목적을 위해, 유효한 소프트웨어 컴포넌트는 이러한 유효한 소프트웨어 컴포넌트가 사용자 단말(UT)에 의해 실행된 후에는 무효한 것으로 설정될 수 있다. 더 높은 보안 레벨에 대해, 사용자 단말에 저장된 소프트웨어 컴포넌트들의 세트의 모든 유효한 소프트웨어 컴포넌트들은, 이러한 유효한 소프트웨어 컴포넌트들 중 하나가 사용자 단말에 의해 실행된 후에는, 모두 무효하다고 설정될 수도 있다.
인증 서버(ASRV)가 위치 데이터(POSi)가 유효하지 않은 소프트웨어 컴포넌트로부터 얻어지는 것으로 결정하면, 인증 서버는 해당 사용자 단말의 사용자의 인증을 거부한다.
소프트웨어 컴포넌트 세트의 소프트웨어 컴포넌트들의 각각의 일부 데이터만이 사용자 단말(UT)로 다운로드될 수 있다. 이 경우, 사용자 단말(UT)이 사용자 인증을 수행해야 할 때마다, 인증 서버(ASRV)는 단계 S23에서 하나 또는 다수의 소프트웨어 컴포넌트의 이미 저장된 데이터 부분과 상보적인 데이터 부분을 사용자 단말에 전송하며, 이로써, 사용자 단말은 단계 S27에서 이들 여러 소프트웨어 컴포넌트 중 임의의 하나를 실행할 수 있다. 소프트웨어 컴포넌트에 의해 제공되는 출력 데이터를 암호해독하는데 사용되는 출력 마스크(IMSK)는 단계 S23에서 사용자 단말로 전송된 상보적인 데이터 부분일 수 있다.
도 12는 다른 실시예에 따른 소프트웨어 컴포넌트(GC)의 일부를 도시한다. 도 12에 개시된 회로 부분은 도 9의 회로에서 하나의 논리 게이트(AGi)를 대체하도록 구성된다. 도 12의 예에서, 회로 부분은 3 개의 AND 게이트(AGi1, AGi2 및 AGi3) 및 2 개의 OR 게이트(OGi1, OGi2)를 포함한다. 이러한 회로 부분은 100 %보다 낮은 확률로 디스플레이될 이미지 프레임(FRM)의 각 세그먼트에 대해 하나의 세그먼트 입력(SGi) 및 하나의 랜덤 입력(RNi)을 갖는 대신에, 일 세그먼트에 대해서, 3 개의 세그먼트 입력(SGi1, SGi2, SGi3) 및 이에 대응하는 3 개의 랜덤 입력(RNi1, RNi2, RNi3)을 갖는다. AND 게이트들(AGi1, AGi2, AGi3) 각각은 하나의 각각의 세그먼트 입력(SGi1, SGi2, SGi3)을 하나의 각각의 랜덤 입력(RNi1, RNi2, RNi3)과 결합시킨다. AND 게이트들(AGi1 및 AGi2)의 출력부들은 OR 게이트(OGi1)의 입력부에 접속되고, 게이트들(AGi3 및 OGi1)의 출력부들은 OR 게이트(OGi2)의 입력부들에 접속된다. OR 게이트(OGi2)의 출력(Di)은 입력들(SGi1, SGi2, SGi3)에 의해 제어되는 세그먼트를 형성하는 픽셀들의 수와 동일한 수의 게이트들(XGi)에 연결된다. 이러한 방식으로, 모든 세그먼트 입력들(SGi1, SGi2, SGi3)이 이진 상태 0으로 설정될 때, OR 게이트(OGi2)의 출력부(Di)는 0 %의 확률로 2 진 상태 1로 설정된다. 이러한 세그먼트 입력들(SGi1, SGi2, SGi3) 중 하나만이 이진 상태 1로 설정될 때, 게이트(OGi2)의 출력(Di)은 확률 50 %로 이진 상태 1로 설정된다. 세그먼트 입력(SGi1, SGi2, SGi3) 중 2 개만이 2 진 상태 1로 설정될 때, 게이트(OGi2)의 출력 (Di)은 확률 75 %로 2 진 상태 1로 설정되고, 3 개의 세그먼트 입력들(SGi1, SGi2, SGi3) 모두가 2 진 상태 1로 설정되면, OR 게이트(OGi2)의 출력(Di)은 87.5 %의 확률로 2 진 상태 1로 설정된다. 대응하는 입력 값들(INi1 내지 INip) 및 이에 대응하는 이미지 마스크(IMSK)의 마스크 비트 값들(MKi1 내지 MKip) 및 세그먼트 입력 값들(SGi1, SGi2, SGi3)에 따라서, 0%, 12.5%, 25%, 50%, 75%, 82.5% 또는 100%로 고정된 확률로 세그먼트(SGi)를 디스플레이할 수 있다. 일 실시예에 따르면, 가시적 세그먼트들(SG)은 12.5%, 25%, 50%, 75%; 82.5% 또는 100%로 랜덤하게 설정된 확률로 이미지 프레임들(FRM)에서 디스플레이된다.
이들 확률 또는 다른 확률들은 3 개의 세그먼트 입력 값들(SGi1, SGi2, SGi3) 및 3 개의 랜덤 입력 값들(RNi1, RNi2, RNi3)을 결합하는 논리 게이트들의 다른 조합들을 사용하여 얻을 수 있다.
물론, 하나의 세그먼트에 대한 입력의 수를 증가시키고, 따라서 제 1 회로 층(L1)의 AND 게이트들의 수를 증가시키고 후속하는 회로 층들에서의 결합 OR 게이트들의 수를 증가시킴으로써, 소프트웨어 컴포넌트에 의해 다른 확률 값들이 달성될 수 있다.
일 실시예에 따르면, 가시적인 세그먼트들은 사용자의 경험 레벨의 함수로서 감소하는 확률로 디스플레이된다. 애플리케이션(APP)의 첫 번째 설치로부터 수행된 최초 인증 시에, 가시적인 세그먼트들(SG)은 높은 확률로, 예를 들어 75 % 내지 100 %의 확률로, 이미지 프레임(FRM)에서 디스플레이될 수 있다. 사용자의 경험 수준이 증가함에 따라, 이러한 확률은 점진적으로 감소되고 예를 들어, 12.5 퍼센트 내지 50 퍼센트에서 랜덤하게 선택된 값들로 마지막으로 설정될 수 있다.
가블드 회로를 사용하는 실시예에서, 단계 S22에서 인증 서버(ASRV)에 의해 수행되는 소프트웨어 컴포넌트의 생성은, 소프트웨어 컴포넌트의 논리 게이트들의 입력 비트들 및 출력 비트들의 이진 상태들 0 및 1을 나타내는 랜덤 값들을 생성하는 단계를 포함하며, 논리 게이트 출력들의 일부는 가블드 회로의 출력들에 대응한다. 이러한 소프트웨어 컴포넌트의 생성은 제 1 및 제 2 상호 접속 매트릭스들(XM1, XM2)을 랜덤하게 선택하는 단계, 즉 소프트웨어 컴포넌트의 입력부들과 소프트웨어 컴포넌트의 논리 게이트들의 입력부들 간의 링크들 및 일부 논리 게이트의 출력들과 다른 논리 게이트들의 입력부들 간의 링크들(테이블(GTW)의 규정)을 랜덤하게 선택하는 단계를 포함한다. 이러한 소프트웨어 컴포넌트의 생성은 소프트웨어 컴포넌트의 논리 게이트들의 진리 테이블들(GTT)을 규정하는 단계 및 암호화 키를 사용하여 이들 진리 테이블의 각 값을 암호화하는 단계를 더 포함한다. 일례에 따르면, 소프트웨어 컴포넌트(GC)의 논리 게이트의 진리 테이블의 각 4 개의 값 G(=GTT[IN1{0}//IN2{0}]는 다음과 같이 컴퓨팅될 수 있다:
G = PF2(IN1, IN2, OV) (4)
이는 입력 값들(IN1, IN2) 및 출력 값(OV)의 유효 값들의 각 가능한 결합에 대해서, 입력 값들(IN1, IN2) 및 출력 값(OV)의 유효 값들에 대응하는 2 진 상태들을 고려하고, 논리 게이트에 의해 수행된 논리 연산을 고려하고, PF2가 비가역 함수임을 고려한 것이다. 등식(2)에 의해 규정된 예에 따르면, 논리 게이트의 진리 테이블의 각 4 개의 값들 G는 다음과 같이 컴퓨팅될 수 있다 :
G = AES(GCK, K)
Figure pat00006
K
Figure pat00007
OV (5)
여기서, K = CF(IN1,IN2)
Figure pat00008
.
결과적으로, 입력 및 출력 값들의 이진 상태 및 소프트웨어 컴포넌트의 논리 게이트들의 함수를 결정하는 것은 매우 어렵다. 결과적으로, 소프트웨어 컴포넌트(GC)의 함수도 쉽게 결정될 수 없다. 또한, 소프트웨어 컴포넌트는 상당한 개수의 무효 값들 중에서 회로의 각 입력부의 두 개의 유효한 값들만을 처리할 수 있다. 따라서, 소프트웨어 컴포넌트의 입력부들에 임의의 값을 적용할 수 없다. 가블드 회로에 대한 세부 사항은, 다음 문헌을 참조하면 된다: "Foundations of Garbled Circuits", Mihir Bellare, Viet Tung Hoang, Phillip Rogaway, dated October 1, 2012.
사용자 단말(UT)에 의해 실행되는 해커 또는 악성 프로그램은 단계 S10에서 사용자에 의해 입력된 패스워드(PC)를 획득할 수 있다. 그러나, 타이핑된 위치들(POSi)이, 단계 23에서 사용자 단말(UT)에 전송된 소프트웨어 컴포넌트(GC)의 실행에 의해서 디스플레이된 키패드(KYP) 및 트랜잭션 검증 코드(CC)와 대응해야 하기 때문에, 해커가 단계 S21 내지 단계 S32에서 인증에 성공하기에는 상기 패스워드만으로 충분하지 않다. 해커 또는 멀웨어는 디스플레이된 이미지 프레임(FRM)을 분석하거나 소프트웨어 컴포넌트를 실행 또는 분석함으로써 키패드 키 레이아웃을 얻는 데 매우 짧은 시간이 걸린다.
인증 서버(ASRV)가 소프트웨어 컴포넌트(GC)를 생성할 때, 소프트웨어 컴포넌트의 와이어 값들의 대응하는 이진 상태를 규정하기 위해서 해당 소프트웨어 컴포넌트의 와이어의 값들에서의 다른 비트 랭크를 사용하고자 할 수 있다.
로직 게이트(AGi)의 입력 값들에서의 선택된 비트 순위에서의 비트는 논리 게이트의 진리 테이블(GTT) 내에서 데이터를 선택하기 위해 사용되며, 소프트웨어 컴포넌트(GC)의 출력 값들(PXi)에서의 선택된 비트 순위에서의 비트는 추출되어 XOR 마스킹 모듈(XRG)에 적용된다.
본 명세서에서 설명된 예시들은 다양한 실시예들의 구조에 대한 일반적인 이해를 제공하기 위한 것이다. 이러한 예시는 본 명세서에서 설명된 구조 또는 방법을 이용하는 장치, 프로세서 및 시스템의 요소들 및 특징들 모두에 대한 완전한 설명을 제공하지는 않는다. 많은 다른 실시예들 또는 이들의 조합이 개시된 실시예들을 조합함으로써 본 개시를 검토하면 당업자에게 명백할 수 있다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예들이 본 개시로부터 이용되고 파생될 수 있다.
본 명세서에 개시된 방법들은 사용자 단말(UT)의 메인 프로세서(HP)(CPU) 및/또는 적어도 부분적으로 사용자 단말(UT)의 그래픽 프로세서(GP)에 의해 실행 가능한 소프트웨어 프로그램들 의해 부분적으로 또는 전체적으로 구현될 수 있다.
또한, 본 명세서에 개시된 방법들은 랜덤하게 선택된 레이아웃을 갖는 키패드 및 트랜잭션 검증 코드와 같은 민감한 정보를 디스플레이하는 것으로 제한되지 않는다. 실제로, 이러한 디스플레이의 목적은 사용자가 인증 서버(ASRV)와 공유되는 비밀 데이터를 알고, 인간에 의해서만 인식 가능한 방식으로 사용자 단말에 의해 제공된 정보를 인지하는 것을 확인하는 것이다. 다른 실시예들에서는 대안적인 시도 요청-응답(challenge-response) 방식이 구현될 수 있다. 일 실시예에 따르면, 디스플레이된 메시지(MSG)는 디스플레이된 트랜잭션 검증 코드(CC)의 디지트들의 합산 또는 승산과 같은 결합을 사용자가 입력하도록 요청할 수 있다.
이에 더하여, 또는 다른 실시예들에서, 생성된 프레임들은 이전에 생성된 프레임과의 차이를 포함할 수 있다.
다른 실시예에 따르면, 그래픽 프로세서에서/에 의해서, 그래픽 프로세서의 픽셀 휘도, 가산 또는 감산 픽셀 컬러, 픽셀 리프레시 레이트, 또는 픽셀 플리커링 파라미터를 설정함으로써, 세그먼트들의 플리커링 또는 깜박임이 직접적으로 제어될 수 있다.
시도 요청(challenge)이 디스플레이 스크린 상에 이를 디스플레이하는 것이 아닌 다른 수단을 사용하여 사용자에게 전송될 수 있다. 예를 들어, 시도 요청은 2010년 4월 29일자에, Yusuf Adriansyah에 위해 공개된 "Simple Audio Cryptography"에서 기술된 바와 같은 오디오 암호화 알고리즘을 사용하여 오디오 수단을 통해 사용자에게 전송될 수 있다. 이러한 알고리즘에 따르면, 최초 오디오 시퀀스가 분해에 의해서 생성된 모든 소스 오디오 시퀀스들을 동시에 재생해야만 복원될 수 있으며, 이로써, 소스 오디오 시퀀스들 중 어느 하나라도 누락된 경우에는 최초 오디오 시퀀스를 복원하는 것이 매우 어렵게 되도록, 해당 최초 오디오 시퀀스가 이러한 최초의 오디오 시퀀스와 동일한 길이를 갖는 다수의 소스 오디오 시퀀스들로 분해된다. 2 개의 소스 오디오 시퀀스들이 동시에 재생될 수 있는데, 예를 들어, 일 소스 오디오 시퀀스는 사용자 단말(UT)에 의해서 재생되고, 다른 소스 오디오 시퀀스는 소스 오디오 시퀀스를 저장하는 메모리 및 상기 저장된 소스 오디오 시퀀스를 듣기 위한 사용자 단말의 마이크로폰 없이 상기 저장된 소스 오디오 시퀀스를 재생하는 헤드폰을 갖는 휴대용 장치와 같은 다른 수단을 통해 재생될 수 있다. 사용자가 2 개의 소스 오디오 시퀀스들을 동시에 재생함으로써 이해가능한 오디오 메시지를 듣는 경우, 이는 휴대용 장치에 의해 재생되는 소스 오디오 시퀀스가 단말에 의해서 재생되는 소스 오디오 시퀀스를 보완한다는 것을 의미한다.
다른 실시예에 따르면, 사용자는 그의 지문을 단계 S10에서 기록한다. 단계 S27에서, 소프트웨어 컴포넌트(GC)는 사용자에게 하나 또는 두 개의 특정 지문, 예를 들어, 엄지 지문 및 약지 지문을 입력할 것을 요구하는 메시지를 디스플레이한다. 이 메시지는 키 기호들(KYL) 및 트랜잭션 검증 코드(CC)를 나타내는 디지트들로서, 세그먼트들을 사용하여 디스플레이된다. 단계 S28에서, 사용자는 요구된 지문을 입력하고, 검증 단계들 S30 및 S31에서, 인증 서버(ASRV)는 입력된 지문을 단계 S10 후에 자신이 저장한 것과 비교한다. 여기서, 공유된 비밀 데이터는 지문이며, 사용자에 의해 인지될 정보는 요청된 손가락을 특정하는 것이다.
또한, 본 명세서에서 개시된 방법은 트랜잭션의 유효성을 고려하여 사용자를 인증하는 것에 국한되지 않는다. 본 명세서에서 개시된 방법은 사용자로부터 또는 사용자에게 민감한 정보 또는 비밀 정보를 수신하거나 전송하는데 적용되거나, 보다 일반적으로는, 사용자 단말(스마트폰, 접속 장치,...)에서와 같은 비보안 환경에서 보안 민감성 연산을 안전하기 수행하기 위해서 적용될 수 있다.
또한, 본 명세서에서 개시된 방법들은 단일 사용자 단말을 사용하여 이미지 프레임들을 디스플레이하고 비밀 데이터들(PC, CC)을 도입하는 것을 포함하는 방법으로 제한되지 않는다. 본 명세서에 개시된 방법들은 다른 접속된 장치 상에서 사용자를 안전하게 인증하기 위해 적용될 수 있는데, 이 경우에 프레임 이미지들은 사용자 단말 상에 또는 스마트 워치, 가상 현실 안경 또는 렌즈와 같은 원격 디스플레이 상에 디스플레이되거나, 또는 표면 상에 투영되거나, 또는 3D 이미지의 형태로 디스플레이되거나, 또는 디스플레이 기능 등을 갖는 임의의 IoT(Internet of Things) 장치 상에 디스플레이될 수 있다. 이와 유사하게, 비밀 데이터는 사용자 단말에 연결된 다른 장치에 입력되거나 음성 또는 제스처를 사용하여 입력될 수 있다. 따라서, "사용자 단말"이라는 용어는 디스플레이가 없는 단말, IoT 디바이스, 스마트 홈 단말 및 사용자가 데이터를 입력할 수 있는 임의의 입력 단말을 포함하는 단일 장치 또는 장치들의 세트를 지칭할 수 있다.
사용자 단말(UT)은 음성 또는 제스처에 의해 제어될 수 있다. 음성 명령이 명령으로 변환될 수 있다. 각각의 인식된 명령은 위치들(POSi) 중 하나와 등가적이다. 키패드는 제스처를 요구하는 하는 것, 기하학적 도면을 따라가는 것 또는 점들 간의 링크를 추적하는 것과 같은 임의의 다른 표현들로 대체될 수 있다. 또한, 입력 단말은 사용자가 공중에서 3D 제스처에 의해 상호 작용할 수 있는 3D 입력 단말 일 수 있다. 따라서, 위치들(POSi)은 공간에서의 3D 좌표 위치일 수 있다.
다른 실시예들에서, 디스플레이는 예를 들어, ATM, 자동 판매기, TV, 공중 디스플레이, 프로젝션 디스플레이, 가상 디스플레이, 3D 디스플레이 또는 홀로그램을 포함하는 임의의 디스플레이일 수 있다. 다른 실시예들에서, 단말은 예를 들어, 터치 스크린, 게임 액세서리, 제스처 획득 시스템, 음성 또는 사운드 명령 시스템을 포함하는 임의의 입력 장치일 수 있다.
다른 실시예들에서, 이미지 프레임들(FRM)은 이미지 마스크(IMSK)를 적용하지 않고 생성되고, 두 개의 디스플레이 디바이스를 사용하여 이미지 마스크(IMSK)와는 별개로 디스플레이되고, 이 두 개의 디스플레이 디바이스 중 하나는 투명하고, 예를 들어, 아이 렌즈의 형태로 된 디스플레이 디바이스이며, 디스플레이된 이미지들은 디스플레이된 이미지 마스크(IMSK)와 중첩될 때 사용자에게 이해될 수 있으며, 이미지 마스크의 디스플레이된 백색 픽셀들은 투명하고 이미지 마스크의 디스플레이된 블랙 픽셀은 불투명하다.
또한, 탬퍼링 및 리버스-엔지니어링으로부터 보호된 소프트웨어 컴포넌트의 실행 시에 랜덤화를 도입하는, 본 명세서에서 개시된 방법은, 이미지 또는 이미지 프레임에서 깜박이는 픽셀을 생성하는 것으로 제한되지 않는다. 보다 일반적으로, 본 방법은 리버스 엔지니어링 및 탬퍼링으로부터 보호되는 민감한 소프트웨어 기능에서 랜덤 상태가 요구되고, 이러한 민감한 소프트웨어 기능은 입력 데이터를 수신하고 출력 데이터를 제공하는 임의의 애플리케이션에서 사용될 수 있다. 예를 들어, 이러한 방법들은 키 도난에 노출된 암호화 키 또는 암호 암호해독 키를 사용하지 않고 데이터 보호하는 기법에 적용될 수 있다. 이러한 예에서, 소프트웨어 컴포넌트는 보호된 데이터의 일부를 랜덤 입력 데이터 세트의 함수로서 제공하며, 각각의 랜덤 입력 데이터는 가능한 두 개의 값을 갖는다. 이러한 소프트웨어 컴포넌트에 적용되는 랜덤 입력 값들의 각 결합은 보호된 데이터의 각 부분을 컴퓨팅하는 데 사용된다. 랜덤 입력 값들의 조합 수가 소프트웨어 컴포넌트를 실행함으로써 컴퓨팅될 수 있는 데이터 부분들의 수를 규정한다. 예를 들어, 보호될 데이터는 이미지일 수 있고, 그러한 이미지의 데이터 부분들은 이미지의 픽셀 값들 또는 이미지 픽셀들의 컬러 성분 값일 수 있으며, 이러한 소프트웨어 컴포넌트의 실행은 픽셀 값 또는 이의 일부 및 해당 이미지 내에서의 픽셀 위치를 제공한다("Secure Image Datasets in Cloud Computing", X. Arogya Presskila, P .Sobana Sumi, in International Journal of Advanced Research in Computer Science and Software Engineering, Vol. 4, Issue 3, March 2014 참조). 입력 값들의 일 조합에 적용되는 소프트웨어 컴포넌트의 일 실행에 의해 각각 컴퓨팅되는, 보호될 데이터 부분들은 목표 크기를 가질 수 있다. 예를 들어, 소프트웨어 컴포넌트는 일 실행에 의해 가우스 곡선의 포인트, 또는 히스토그램을 컴퓨팅하는데 사용되는 값을 제공하도록 구성될 수 있으며, 이러한 데이터 부분 값은 해당 소프트웨어 컴포넌트에 의해 컴퓨팅된 가장 높은 값에 대응하거나, 히스토그램에서 가장 많이 발생하는 횟수를 갖는 값에 대응한다. 이러한 보호된 데이터의 일부만이, 소프트웨어 컴포넌트의 입력 데이터의 2 개의 대안적 값들 중 일부만이 제공될 때에만, 액세스될 수 있으며, 해당 소프트웨어 컴포넌트의 다른 입력 데이터에 대해서는 오직 하나의 값만 제공된다.
또한, 본 명세서에 개시된 방법들은 인증 서버를 포함하는 구현예로 제한되지 않는다. 다른 구현예들은 도 2에 도시된 보안 프로세서(SE) 또는 사용자 단말의 메인 프로세서(HP) 내의 보안 도메인과 같은 사용자 단말 내의 보안 요소를 포함할 수 있다. 본 명세서에 개시된 방법들에서, 인증 서버(ASRV)에 의해 수행되는 모든 동작은 이러한 보안 요소에 의해 수행될 수 있다. 도 13은 사용자 단말(UT) 및 사용자 단말(UT)의 메인 프로세서(HP)에 링크된 보안 요소(SE)에 의해 수행되는 인증 단계들 S41 내지 S44을 예시하고, 이러한 단계들을 통해서 보안 요소는 사용자를 인증할 수 있다. 단계 S41에서, 사용자 단말(UT)은 보안 요소(SE)에 명령(CMD)을 전송하는데, 이 명령은 보안 요소에 의해 실행되기 전에 사용자의 인증을 요구한다. 이어서, 보안 요소(SE) 및 사용자 단말(UT)은 이전에 개시된 바와 같은, 단계들 S22, S23 및 S25 내지 S30를 수행한다. 보안 요소(SE)는 인증 서버(ASRV) 대신에 단계들 S22, S23, S26 및 S30을 수행한다. 이어서, 보안 요소(SE)는 단계들 S42 내지 S44를 수행한다. 단계 S42에서, 보안 요소(SE)는 사용자에 의해 입력된 패스워드(PC1)와 트랜잭션 검증 코드(CC1)를, 보안 요소(SE)에 의해 안전하게 저장된 대응하는 패스워드 및 검증 코드 값들(PC 및 CC)과 비교한다. 사용자에 의해 입력된 패스워드(PC1) 및 트랜잭션 검증 코드(CC1)가 보안 요소(SE)에 의해 저장된 값들(PC 및 CC)과 일치하면, 보안 요소(SE)는 단계 S43을 수행하며, 이 단계에서, 보안 요소는 단계 S41에서 요구된 명령(CMD)을 실행한다. 단계 S44에서, 보안 요소(SE)는 상기 명령(CMD)의 실행 보고사항(RS)을 전송한다.
또한, 본 명세서에서 개시된 방법들은 사용자에 의한 패스워드(PC, PC1)의 도입에 기초한 사용자의 인증에 제한되지 않는다. 단순화된 인증 방법에서, 사용자는 디스플레이된 트랜잭션 검증 코드(CC)를 도입하기만 하면 된다.
또한, 본 명세서에서 개시된 방법들은 단지 설명의 명료성을 위해 위에서 제시한 바와 같은, 단지 2 개의 입력들 및 1 개의 출력을 갖는 논리 게이트들을 포함하는 가블드 회로로 제한되지 않는다. 3 개 이상의 입력 및 하나 이상의 출력을 갖거나 또는 3 개 이상의 유효 상태를 갖는 데이터를 수신하는 다른 유형의 논리 게이트들이 5 개 이상의 라인을 갖는 진리 테이블들을 사용하여 구현될 수 있다. 따라서, 입력(RNi)의 가능한 값들(RNiV1 및 RNiV2)을 전송하고 이들 중 하나를 선택함으로써 획득되는 랜덤도는 또한, 가블드 회로의 입력의 3 개 이상의 유효 값들을 전송하고 이들 중 하나의 값을 랜덤하게 선택함으로써 얻어질 수 있다.
또한, 본 명세서에서 개시된 방법은 가블드 회로에 의한 소프트웨어 컴포넌트의 구현으로 제한되지 않는다. 난독화된 프로그램을 포함시키는 것과 같이, 소프트웨어 컴포넌트를 다르게 구현하는 방식은, 사용자 단말(UT)의 메인 프로세서에 로딩된 프로그램의 일부를 은폐시키거나/시키고 이러한 프로그램의 민감한 부분이 비인가된 사람에게 알려지거나 이러한 사람에 의해서 수정되는 것을 방지하기 위해 사용될 수 있다. 프로그램을 난독화하는 방법은 예를 들어, 다음과 같은 문헌들에 개시되어 있다: "Obfuscating Circuits via Composite-Order Graded Encoding" Benny Applebaumy, Zvika Brakerskiz, IACR-TCC 12/01/2015, and "How to Obfuscate Programs Directly", Joe Zimmerman, IACR, 30/09/2014.
보다 일반적으로, 가블드 회로의 개념은 C 또는 C ++와 같은 언어로 작성된 프로그램을 VHDL 또는 Verilog와 같은 회로 설계 언어로 변환하여, 논리 게이트들을 포함하는 논리 또는 불 회로를 획득함으로써 수행될 수 있다.
또한, 본 명세서에 개시된 방법들은 난독화 또는 가블드 회로 방법을 사용하여 생성되는 것과 같은, 탬퍼링 및 리버스-엔지니어링으로부터 보호된 소프트웨어 컴포넌트의 사용으로 제한되지 않는다. 이러한 응용의 예로서, 본 명세서에 개시된 방법들은 데이터 프라이버시 보호, 비디오 게임(예를 들어, 이용 가능한 가상 생명 관리) 또는 의학적 눈 테스트와 같은, 높은 보안 레벨을 필요로 하지 않는 동작을 수행하는데 사용될 수 있다.
또한, 본 명세서에 개시된 방법들은 소프트웨어 컴포넌트의 출력 값들을 암호해독하기 위해 이미지 마스크(IMSK)와 같은 마스크를 사용하는 구현으로 제한되지 않는다. 다른 구현예들은 소프트웨어 컴포넌트를 생성 및 실행하여서 디스플레이될 픽셀 값들을 직접적으로 출력할 수 있다. 또한, 메시지(MSG)는 출력된 픽셀 값들에서 직접적으로 제공될 수 있다. 또한, 이미지 마스크(IMSK)는 소프트웨어 컴포넌트 또는 소프트웨어 컴포넌트의 구조 및 콘텐츠 데이터와는 별도로, 예를 들어, 상이한 전송 수단을 통해, 선택사양적으로, 소프트웨어 컴포넌트의 실행 후에, 전체적으로 또는 부분적으로 전송될 수 있다.
또한, 본 명세서에서 개시된 방법들은 하드웨어 키패드만을 포함하는 사용자 단말(UT)로 구현될 수 있으며, 이 경우에 디스플레이된 프레임들(FRM)은 단지 다른 키 기호들을 물리적 키패드에 할당하기 위해 디스플레이된다. 따라서, 사용자는 위치(POSi)를 입력하기 위해 디스플레이 스크린의 위치를 터치하는 대신에, 디스플레이된 프레임(FRM)에 디스플레이된 할당된 기호들에 대응하는, 키패드의 하드웨어 키들을 활성화시킨다.
본 명세서에서 표준 디스플레이 스크린을 위해서 사용되는 픽셀이라는 용어는 2D 디스플레이에 대한 2D 좌표, 또는 3D 또는 스테레오 디스플레이용 또는 프로젝션 디스플레이용 3D 좌표로서 이해될 수 있다.
또한, 본 개시 및 설명들은 제한적이라기보다는 예시적인 것으로 간주되어야하며, 첨부된 청구 범위는 본 설명의 진정한 사상 및 범위 내에 있는, 그러한 모든 수정 실시예들, 개선된 실시예들 및 다른 실시예들 또는 이들의 조합을 포함하도록 의도된다. 그러므로, 이하의 청구 범위는 해당 청구 범위 및 이의 등가 범위 중 가장 넓은 허용 가능한 해석 범위에 의해 결정되며, 전술한 설명에 의해 제한되거나 한정되지 말아야 한다.

Claims (17)

  1. 비보안(non-secure) 사용자 단말을 사용하여 보안 민감성 연산을 안전하게 수행하는 방법으로서,
    비보안 사용자 단말에 의해, 보안 프로세서로부터, 탬퍼링(tampering) 및 리버스-엔지니어링(reverse engineering)으로부터 보호되고 상기 민감성 연산을 수행하는 소프트웨어 컴포넌트 및 상기 소프트웨어 컴포넌트의 입력 데이터들을 수신하는 단계로서, 상기 소프트웨어 컴포넌트는, 2개의 랜덤하게 선택된 유효 값들 및 무효 값들(invalid values)을 가지는 제 1 입력 데이터를 수신하도록 구성된 제 1 입력부를 포함하고, 상기 수신된 입력 데이터들은 상기 제 1 입력 데이터의 유효 값들을 포함하는, 상기 수신하는 단계;
    비보안 사용자 단말에 의해, 상기 수신된 입력 데이터들 중 제 1 입력 데이터의 유효 값들 중 하나를 랜덤하게 선택하는 단계; 및
    비보안 사용자 단말에 의해, 상기 수신된 입력 데이터들을 상기 소프트웨어 컴포넌트의 입력부들에 인가하고 상기 선택된 유효 값을 상기 소프트웨어 컴포넌트의 제 1 입력부에 인가함으로써, 상기 소프트웨어 컴포넌트를 실행시키는 단계;를 포함하며,
    상기 소프트웨어 컴포넌트가 실행됨으로써 상기 선택된 유효 값에 기초하는 출력 데이터가 제공되는, 연산 수행 방법.
  2. 제 1 항에 있어서,
    상기 출력 데이터는 상기 출력 데이터의 2진 상태들에 각각 대응하는 2개의 랜덤하게 선택된 유효 값들, 및 무효 값들을 갖는, 연산 수행 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 보안 프로세서에 의해 상기 소프트웨어 컴포넌트를 생성하는 단계;
    상기 소프트웨어 컴포넌트를 사용자 단말로 전송할 경우에, 상기 보안 프로세서에 의해, 소프트웨어 컴포넌트를 유효하게 설정하는 단계; 및,
    제 1 기간이 만료된 후에, 또는 상기 보안 프로세서에 의해 비보안 사용자 단말로부터 소프트웨어 컴포넌트의 실행 보고를 수신한 후에, 상기 보안 프로세서가 소프트웨어 컴포넌트를 무효로 설정하는 단계;를 더 포함하며,
    상기 무효로 설정되는 소프트웨어 컴포넌트와 관련된 실행 보고는 상기 보안 프로세서에 의해 거부되는, 연산 수행 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 소프트웨어 컴포넌트는, 상기 랜덤 선택에 응답하여, 12.5% 내지 87.5%의 확률, 또는 50%로 설정된 확률로, 상기 2개의 2진 상태들 중 하나로 출력 데이터를 제공하도록 구성되는, 연산 수행 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 소프트웨어 컴포넌트는 디스플레이 스크린에 의해 디스플레이될 이미지 프레임의 일부분을 생성하도록 형성되고,
    상기 출력 데이터는 상기 이미지 프레임의 일부분에서, 2개의 다른 2진 상태들 중 하나로 존재하게 되는 확률이 100%보다 낮게 픽셀 값을 규정하며,
    상기 소프트웨어 컴포넌트는 상기 디스플레이 스크린에 의해 디스플레이되는 이미지 프레임들의 디스플레이 리프레시 레이트(refresh rate)에 대응하는 레이트로 이미지 프레임을 생성하도록 다수 회 실행되는, 연산 수행 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    상기 소프트웨어 컴포넌트는 상기 2개의 다른 2진 상태들 중 하나로 존재하게 되는 확률이 100%보다 낮은 픽셀들을 포함하는 이미지 프레임의 암호화된 부분들을 생성하도록 구성되며,
    상기 방법은,
    사용자 단말에 의해, 프레임 디스플레이 리프레시 레이트에 대응하는 레이트로 상기 소프트웨어 컴포넌트를 실행하는 단계;
    사용자 단말에 의해, 상기 보안 프로세서로부터 사용자 단말로 전송된 암호해독 마스크를 사용하여, 각각의 생성된 암호화된 이미지 프레임 부분을 암호해독하는 단계;
    상기 디스플레이 리프레시 레이트로 이미지 프레임을 생성하도록, 사용자 단말에 의해, 각각의 암호해독된 이미지 프레임 부분을 이미지 프레임 배경 내에 삽입하는 단계; 및
    상기 생성된 이미지 프레임들을 디스플레이하는 단계로서, 디스플레이되는 이미지 프레임들은 상기 디스플레이되는 이미지 프레임들 내에서 가시적일(visible) 확률이 100% 미만인 픽셀들로 형성된 머신에 의해 인식불가한 정보(machine-unintelligble information)를 포함하고, 상기 머신에 의해 인식불가한 정보는 사용자에게는 인식가능한, 상기 디스플레이 단계;를 더 포함하는, 연산 수행 방법.
  7. 제 6 항에 있어서,
    디스플레이된 머신-인식불가 정보에 대하여 사용자로부터 응답을 취득하는 단계;
    상기 응답을 보안 요소에 송신하는 단계; 및
    상기 응답이, 상기 정보, 및 사용자와 보안 요소에 의해 공유된 비밀 정보에 대응될 때, 상기 보안 요소에 의해 상기 사용자를 인증하는 단계;를 더 포함하는, 연산 수행 방법.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 소프트웨어 컴포넌트는 회로 입력부들, 회로 출력부들, 논리 게이트들 및 와이어들(wires)을 포함하는 가블드 회로(garbled circuit)로서 인코딩되며,
    각각의 논리 게이트는 2개의 입력부 및 1개의 출력부를 가지고, 각각의 와이어는 상기 회로 입력부들 중 하나 또는 논리 게이트들의 출력부들 중 하나에 접속된 제 1 단부, 및 상기 논리 게이트들의 입력부들 중 하나 또는 회로 출력부들 중 하나에 접속된 제 2 단부를 가지며,
    상기 가블드 회로는, 각각의 와이어의 각 이진 상태에 대한 유효 데이터를 선택하고, 상기 가블드 회로의 일 논리 게이트에 대해, 논리 게이트의 각 입력부의 각 유효 데이터, 논리 게이트의 출력부의 각 유효 데이터, 및 논리 게이트에 의해 수행되는 논리 연산의 함수로서 진리 테이블 값들을 컴퓨팅함으로써 생성되는, 연산 수행 방법.
  9. 제 8 항에 있어서,
    상기 가블드 회로는 XOR 논리 게이트를 포함하고, 상기 XOR 논리 게이트는 2개의 입력 데이터의 동일한 순위(rank)의 비트들에 적용되는 배타적 OR 연산을 수행하는, 연산 수행 방법.
  10. 제 9 항에 있어서,
    상기 가블드 회로는 상기 제 1 입력 데이터의 선택된 값을 상기 수신된 입력 데이터들 내에 제공된 제 2 입력 데이터와 결합하는 제 1 논리 게이트, 및 한 세트의 제 2 논리 게이트들을 포함하고,
    상기 가블드 회로가 실행됨으로써, 상기 랜덤 선택에 응답하여, 2개의 다른 2진 상태들 중 하나로 있게 될 확률이 100%보다 낮은 제 1 데이터가, 제 1 논리 게이트의 출력부에서 제공되고, 상기 제 1 데이터는 제 2 논리 게이트들의 각 논리 게이트의 제 1 입력부에 제공되고, 상기 제 2 논리 게이트들의 각 논리 게이트의 제 2 입력부는 상기 수신된 입력 데이터들 내에 제공된 입력 데이터를 수신하고, 상기 제 2 논리 게이트들의 각각의 출력부는 한 세트의 픽셀들의 픽셀 값을 제공하고,
    상기 가블드 회로는, 상기 픽셀 세트가 100%보다 낮은 확률로 상기 생성된 이미지 프레임들에서 사용자에게 인식될 수 있도록 하는 디스플레이 리프레시 레이트로, 사용자 단말에 의해 실행되는, 연산 수행 방법.
  11. 사용자 단말로서,
    탬퍼링 및 리버스-엔지니어링으로부터 보호되고 민감성 연산을 수행하는 소프트웨어 컴포넌트, 및 상기 소프트웨어 컴포넌트의 입력 데이터들을 수신하도록 구성되며,
    상기 소프트웨어 컴포넌트는, 2개의 랜덤하게 선택된 유효 값들 및 무효 값들을 가지는 제 1 입력 데이터를 수신하도록 구성된 제 1 입력부를 포함하고, 상기 수신된 입력 데이터들은 상기 제 1 입력 데이터의 유효 값들을 포함하며,
    상기 사용자 단말은, 상기 수신된 입력 데이터들 중 제 1 입력 데이터의 유효 값들 중 하나를 랜덤하게 선택하도록 구성되며,
    상기 사용자 단말은, 상기 제 1 입력 데이터의 선택된 유효 값을 포함하는 수신된 입력 데이터들을 상기 소프트웨어 컴포넌트의 입력부들에 인가함으로써, 상기 소프트웨어 컴포넌트를 실행시키도록 구성되며,
    상기 소프트웨어 컴포넌트가 실행됨으로써 상기 선택된 유효 값에 기초하는 출력 데이터가 제공되는, 사용자 단말.
  12. 제 11 항에 있어서,
    제 2 항 내지 제 10 항 중 어느 한 항의 방법에서 사용자 단말에 의해 수행되는 단계들을 실행하도록 구성되는, 사용자 단말.
  13. 제 11 항 또는 제 12 항에 있어서,
    보안 프로세서는 사용자 단말의 메인 프로세서에 연결된 보안 요소인, 사용자 단말.
  14. 제 11 항 또는 제 12 항에 있어서,
    보안 프로세서는 데이터 전송 네트워크를 통해 사용자 단말에 연결된 원격 인증 서버에 속하는, 사용자 단말.
  15. 제 1 항 내지 제 9 항 중 어느 한 항의 방법에서 보안 프로세서에 의해 수행되는 단계들을 실행하도록 구성된 보안 요소로서,
    상기 보안 요소는 사용자 단말의 메인 프로세서에 접속되는, 보안 요소.
  16. 제 1 항 내지 제 9 항 중 어느 한 항의 방법에서 보안 프로세서에 의해 수행되는 단계들을 실행하도록 구성된 인증 서버로서,
    상기 인증 서버는 데이터 전송 네트워크를 통해 사용자 단말에 링크되는, 인증 서버.
  17. 컴퓨터 메모리 내에 로딩 가능한 컴퓨터 프로그램 제품으로서,
    컴퓨터에 의해 실행될 때, 제 11 항 내지 제 14 항 중 어느 한 항의 사용자 단말에 의해 수행되는 단계들을 수행하도록 상기 컴퓨터를 구성하는 프로그램 코드들을 포함하는, 컴퓨터 프로그램 제품.
KR1020170145411A 2016-11-02 2017-11-02 비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법 KR20180048423A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP16196945.6 2016-11-02
EP16196945.6A EP3319000A1 (en) 2016-11-02 2016-11-02 Method for securing a transaction performed from a non-secure terminal

Publications (1)

Publication Number Publication Date
KR20180048423A true KR20180048423A (ko) 2018-05-10

Family

ID=57240922

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170145411A KR20180048423A (ko) 2016-11-02 2017-11-02 비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법

Country Status (3)

Country Link
EP (1) EP3319000A1 (ko)
KR (1) KR20180048423A (ko)
CN (1) CN108021813A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111327643B (zh) * 2020-05-15 2020-09-01 支付宝(杭州)信息技术有限公司 一种多方数据共享方法和装置
CN114648842B (zh) * 2022-02-11 2024-01-19 中金金融认证中心有限公司 一种用于获取支付终端的pin码的方法及相关产品

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101047A1 (en) * 2004-07-29 2006-05-11 Rice John R Method and system for fortifying software
GB2426837A (en) * 2005-06-01 2006-12-06 Hewlett Packard Development Co Checking the integrity of a software component
CN100465882C (zh) * 2005-07-29 2009-03-04 国际商业机器公司 为全球应用创建文化敏感控件的方法和系统
US8010782B2 (en) * 2008-01-18 2011-08-30 Sap Ag Method and system for mediated secure computation
CN101662469B (zh) * 2009-09-25 2012-10-10 浙江维尔生物识别技术股份有限公司 基于USBKey网上银行交易信息认证的方法和系统
CN101661599B (zh) * 2009-09-25 2012-08-22 浙江维尔生物识别技术股份有限公司 一种对设备系统自带的软件进行合法性认证的方法
US8209743B1 (en) * 2010-03-09 2012-06-26 Facebook, Inc. CAPTCHA image scramble
FR2971599B1 (fr) * 2011-02-11 2013-03-15 Jean Luc Leleu Procede de transaction securisee a partir d'un terminal non securise
KR20140068867A (ko) * 2011-07-08 2014-06-09 오픈픽 아이엔씨. 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법
EP4131113A1 (en) * 2012-02-29 2023-02-08 Apple Inc. Method, device and secure element for conducting a secured financial transaction on a device
US8954736B2 (en) * 2012-10-04 2015-02-10 Google Inc. Limiting the functionality of a software program based on a security model
WO2014201059A1 (en) * 2013-06-10 2014-12-18 Certimix, Llc Secure storing and offline transfering of digitally transferable assets
US9704156B2 (en) * 2014-01-23 2017-07-11 Mastercard International Incorporated Mobile secure element based shared cardholder verification
US9076231B1 (en) * 2014-02-18 2015-07-07 Charles Hill Techniques for displaying content on a display to reduce screenshot quality

Also Published As

Publication number Publication date
EP3319000A1 (en) 2018-05-09
CN108021813A (zh) 2018-05-11

Similar Documents

Publication Publication Date Title
US10565357B2 (en) Method for securely transmitting a secret data to a user of a terminal
US20160253510A1 (en) Method for security authentication and apparatus therefor
US20190258829A1 (en) Securely performing a sensitive operation using a non-secure terminal
KR20180048423A (ko) 비-보안 단말에서 수행되는 트랜잭션을 안전하게 보호하는 방법
KR20180048424A (ko) 비-보호 단말에 의해 사용자를 인증하는 방법
KR20180048426A (ko) 단말의 사용자에게 비밀 데이터를 안전하게 전송하는 방법
KR20180048425A (ko) 단말의 사용자에게 비밀 데이터를 안전하게 전송하는 방법
EP3594838A1 (en) Method for recovering a secret key securely stored in a secure element
EP3319002B1 (en) Method for securely performing a sensitive operation using a non-secure terminal
EP3528161A1 (en) Method for signing a transaction
EP3319269A1 (en) Method for securely performing a sensitive operation using a non-secure terminal
KR20090013616A (ko) 서버 인증 코드를 이용한 서버 인증 시스템 및 방법