KR101237632B1 - 토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼 - Google Patents

토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼 Download PDF

Info

Publication number
KR101237632B1
KR101237632B1 KR1020107027652A KR20107027652A KR101237632B1 KR 101237632 B1 KR101237632 B1 KR 101237632B1 KR 1020107027652 A KR1020107027652 A KR 1020107027652A KR 20107027652 A KR20107027652 A KR 20107027652A KR 101237632 B1 KR101237632 B1 KR 101237632B1
Authority
KR
South Korea
Prior art keywords
verifier
token
puzzle
key
identifier
Prior art date
Application number
KR1020107027652A
Other languages
English (en)
Other versions
KR20110009222A (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 KR20110009222A publication Critical patent/KR20110009222A/ko
Application granted granted Critical
Publication of KR101237632B1 publication Critical patent/KR101237632B1/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
    • H04L63/0435Network 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 wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

토큰 및 검증자로 하여금 토큰 및 검증자 사이의 인증을 위한 보안 대칭 키에 동의하게 하는 퍼즐-기반 프로토콜이 제공된다. 토큰은 비밀 키 및 하나 이상의 퍼즐 발생 알고리즘을 저장한다. 검증자는 토큰과 연관된 복수의 퍼즐을 독립적으로 획득하고, 복수의 퍼즐 중 적어도 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 퍼즐 식별자를 획득하기 위해 하나의 퍼즐을 해석한다. 검증자는 퍼즐 비밀에 기초하여 검증자 키를 발생시킨다. 검증자는 퍼즐 식별자 및 인코딩된 버전의 검증자 키를 토큰에 전송한다. 토큰은 그의 퍼즐 발생 알고리즘 및 퍼즐 식별자를 이용하여 퍼즐 비밀을 재생시킨다. 토큰이 검증자 키를 알고 있다는 것을 나타내는 검증자에게 토큰은 인코딩된 응답을 전송한다. 토큰 및 검증자는 후속의 인증을 위해 대칭 키로서 검증자 키를 사용할 수도 있다.

Description

토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼{NETWORK HELPER FOR AUTHENTICATION BETWEEN A TOKEN AND VERIFIERS}
본 발명은 보안 인증에 관한 것으로, 더욱 상세히 설명하면 한정된 자원 디바이스의 인증에 관한 것이다.
전자 인증은 전형적으로 공개 키 (비대칭 키) 또는 대칭 키 암호 방법 각각에 기초하여 일부 형태의 디지털 서명 또는 메시지 인증 코드를 수반한다. 공개 키 및 대칭 키 방법은 상이한 특성을 가져서 상이한 상황에서 적용가능하다. 일반적으로 말하면, 공개 키 시스템은 키 관리 및 분배 면에서 많은 이점을 갖지만, 계산하기가 어렵고 발생된 디지털 서명이 대형화하기 쉽다. 대칭 키 방법은 매우 효율적이고 작은 아웃풋을 산출하지만 다수의 검증자에 의해 동시에 안전하게 사용될 수 없다는 결점을 갖는다.
대부분의 소형 인증 토큰은 한정된 계산 자원 및 작은 아웃풋에 대한 요구 양쪽에 의해, 대칭 키 암호 방식을 이용하도록 강요되어 왔다. 결국, 이것은 토큰이 오직 하나의 검증자만을 가진 인증에 사용될 수 있다는 것을 의미한다. 예를 들어, 2 개의 상이한 엔티티는 상이한 대칭 키를 갖는 양립되는 토큰을 발행할 수도 있지만, 그것은 대칭 키를 공유하는 것을 필요로 할 수 있고 검증자들이 서로 신뢰하지 않을 수도 있기 때문에 하나의 토큰으로 결합될 수는 없다. 미국 은행들이 이중-요소 인증 방법을 구현하겠다는 최근 발표로, 사용자들은 어디를 가든지 다수의 인증 토큰들을 갖고 다녀야 할 수도 있다.
공개 키 시스템에 기초한 인증 방법들이 제안되었지만, 그 방법들은 많은 토큰에 대해 이용가능한 것보다 더 큰 계산 자원을 요구한다는 하나의 결점이 있다. 즉, 토큰은 염가이기 쉽고 및/또는 한정된 처리 자원을 갖기 쉽다. 더욱 강력한 프로세서를 이러한 토큰들에 추가하는 것은 비용이 증가할 뿐만 아니라 배터리 수명이 짧아지게 된다. 공개 키 시스템을 사용하면, 긴 사이즈의 디지털 서명은 짧은 시퀀스의 디지트를 타이핑하거나 또는 판독하는 것과 비교해 볼 때 구현하는 것이 번거롭다는 또 다른 결점이 있다.
다른 형태의 인증 시스템은 인증을 중재하기 위해 신뢰하는 제 3 자를 이용한다. 이러한 시스템의 일 예는 MIT의 커베로스 (Kerberos) 이다. 그러나, 신뢰하는 제 3 자에 대한 의존성은 보안이 손상될 수도 있는 다른 지점을 추가하기 때문에, 은행과 같은 다수의 기관에 대한 딜-브레이커 (deal-breaker) 이다.
따라서, 단일 토큰이 다수의 검증자에 의해 사용될 수 있도록, 작고 효율적인 디지털 서명을 제공하는 공개 키 및 대칭 키 시스템들의 이점들을 결합한 방법이 요구된다.
토큰을 인증하기 위한 검증자의 동작 방법이 제공된다. 토큰으로부터 인증 요청 및 토큰 식별자가 수신된다. 토큰과 연관된 헬퍼에 대한 헬퍼 어드레스가 획득될 수도 있다. 네트워킹된 헬퍼로부터 토큰에 대응하는 복수의 퍼즐이 수신된다. 퍼즐은 퍼즐 식별자 및 퍼즐 비밀을 포함하여 인코딩된 메시지일 수도 있다. 복수의 퍼즐 중 하나의 퍼즐이 의사랜덤하게 선택되고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 해석된다. 예를 들어, 선택된 퍼즐은 퍼즐을 디코딩할 키를 발견하기 위해 무작위 공격 (brute force attack) 을 수행함으로써 해석될 수도 있다. 퍼즐 비밀에 기초하여 검증자 키가 발생된다. 검증자 키에 기초하여 챌린지 메시지가 발생된다. 퍼즐 식별자 및 챌린지 메시지가 토큰에 전송된다. 토큰이 검증자 키를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지가 수신되고, 토큰이 검증자 키를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다. 검증자 키가 저장되고, 토큰과 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 토큰 식별자와 연관된다.
일 실시예에서, 복수의 수신된 퍼즐의 서브세트가 의사랜덤하게 선택되고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 해석된다. 검증자 키는 정렬된 세트의 퍼즐 비밀에 기초할 수도 있다. 정렬된 세트의 퍼즐 비밀에 대응하는 정렬된 세트의 퍼즐 식별자가 챌린지 메시지와 함께 토큰에 전송된다.
다른 특징에 의하면, 검증자는 의사랜덤 논스 (nonce) 를 발생시키고, 토큰에 대응하는 다수의 퍼즐 중에서 상기 복수의 퍼즐을 획득하는데 사용되는 헬퍼에 의사랜덤 논스를 전송할 수도 있다.
일 구현에서, 로컬 카운터를 토큰에 의해 유지되는 카운터와 동기시켜 토큰과 검증자 사이에서 인증이 수행될 때마다 트래킹 (tracking) 할 수도 있고, 후속의 인증 챌린지 메시지는 현재의 카운터 값에 또한 기초한다. 그 결과, 토큰이 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지가 수신될 수도 있다. 토큰이 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다.
다른 구현에서, 타이머가 유지되어 타임스탬프를 발생시킬 수도 있고, 후속의 인증 챌린지 메시지는 현재의 타임스탬프에 또한 기초한다. 토큰이 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지가 수신된다. 토큰이 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다.
토큰을 인증하기 위한 검증자 디바이스는, 처리 회로에 연결된 제 1 및 제 2 통신 인터페이스를 포함한다. 제 1 통신 인터페이스는 네트워크에 대한, 고 대역폭을 갖는다. 제 2 통신 인터페이스는 토큰과 통신하기 위한, 저 대역폭을 갖는다. 처리 회로는 (a) 제 2 통신 인터페이스를 통해 토큰으로부터 인증 요청과 토큰 식별자를 수신하고; (b) 토큰과 연관된 헬퍼에 대한 헬퍼 어드레스를 획득하고; (c) 제 1 통신 인터페이스를 통해 헬퍼로부터 토큰에 대응하는 복수의 퍼즐을 획득하고; (d) 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 하나의 퍼즐을 해석하고; (e) 퍼즐 비밀에 기초하여 검증자 키를 발생시키고; (f) 검증자 키에 기초하여 챌린지 메시지를 발생시키며; (g) 제 2 통신 인터페이스를 통해 퍼즐 식별자 및 챌린지 메시지를 토큰에 전송하고; 및/또는 (h) 토큰이 검증자 키를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지를 수신하도록 구성된다. 토큰이 검증자 키를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자 디바이스가 토큰을 인증한다.
또한, 검증자 디바이스는 처리 회로에 연결되어 검증자 키를 저장하는 저장 디바이스를 포함할 수도 있다. 처리 회로는 토큰과 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 검증자 키를 상기 토큰 식별자와 연관시키도록 더 구성될 수도 있다.
일부 구현에서, 처리 회로는 (a) 복수의 수신된 퍼즐의 서브세트를 의사랜덤하게 선택하고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 복수의 수신된 퍼즐의 서브세트를 해석하고 (검증자 키는 정렬된 세트의 퍼즐 비밀에 또한 기초할 수도 있다); (b) 정렬된 세트의 퍼즐 비밀에 대응하는 정렬된 세트의 퍼즐 식별자를 챌린지 메시지와 함께 토큰에 전송하도록 더 구성될 수도 있다.
일 구현에서, 로컬 카운터가 토큰에 의해 유지되는 카운터와 동기되어 토큰과 검증자 사이에서 인증이 수행될 때마다 트래킹할 수도 있다. 후속의 인증 챌린지 메시지는 현재의 카운터 값에 또한 기초할 수도 있다. 그 결과, 토큰이 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지가 수신될 수도 있다. 토큰이 검증자 키 및 현재의 카운터 값을 독립적으로 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다.
다른 구현에서, 타이머가 타임스탬프를 발생시키기 위해 유지된다. 후속의 인증 챌린지 메시지는 현재의 타임스탬프에 또한 기초할 수도 있다. 그 결과, 토큰이 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지가 수신될 수도 있다. 토큰이 독립적으로 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다.
그 결과, 토큰을 인증하기 위한 검증자 디바이스가 제공되고, 상기 검증자 디바이스는 (a) 토큰으로부터 인증 요청 및 토큰 식별자를 수신하는 수단; (b) 토큰과 연관된 헬퍼에 대한 헬퍼 어드레스를 획득하는 수단; (c) 네트워킹된 헬퍼로부터 토큰에 대응하는 복수의 퍼즐을 획득하는 수단; (d) 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 하나의 퍼즐을 해석하는 수단; (e) 퍼즐 비밀에 기초하여 검증자 키를 발생시키는 수단; (f) 검증자 키에 기초하여 챌린지 메시지를 발생시키는 수단; (g) 퍼즐 식별자 및 챌린지 메시지를 토큰에 전송하는 수단; 및/또는 (h) 토큰이 검증자 키를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지를 수신하는 수단을 포함하고, 토큰이 검증자 키를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다. 게다가, 검증자 디바이스는 (i) 검증자 키를 저장하는 수단; (j) 토큰과 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 검증자 키를 토큰 식별자와 연관시키는 수단; (k) 복수의 수신된 퍼즐의 서브세트를 의사랜덤하게 선택하고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 복수의 수신된 퍼즐의 서브세트를 해석하는 수단 (검증자 키는 정렬된 세트의 퍼즐 비밀에 또한 기초한다); 및/또는 (l) 일 정렬된 세트의 퍼즐 비밀에 대응하는 일 정렬된 세트의 퍼즐 식별자를 챌린지 메시지와 함께 토큰에 전송하는 수단을 또한 포함할 수도 있다.
또한, 처리 디바이스는 처리 회로를 포함하여 제공되고, 처리 회로는 (a) 제 1 통신 인터페이스를 통해 토큰으로부터 인증 요청 및 토큰 식별자를 수신하고; (b) 제 2 통신 인터페이스를 통해 헬퍼로부터 토큰에 대응하는 복수의 퍼즐을 획득하고; (c) 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 하나의 퍼즐을 해석하고; (d) 퍼즐 비밀에 기초하여 검증자 키를 발생시키고; (e) 검증자 키에 기초하여 챌린지 메시지를 발생시키고; (f) 제 1 통신 인터페이스를 통해 퍼즐 식별자 및 챌린지 메시지를 토큰에 전송하며; 및/또는 (g) 토큰과 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 검증자 키를 토큰 식별자와 연관시키도록 구성된다.
검증자에 대하여 토큰을 인증하기 위한 하나 이상의 명령을 갖는 머신-판독가능한 매체로서, 하나 이상의 명령은, 프로세서에 의해 실행될 때, 프로세서로 하여금, (a) 네트워킹된 헬퍼로부터 토큰에 대응하는 복수의 퍼즐을 획득하게 하고; (b) 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 하나의 퍼즐을 해석하게 하고; (c) 퍼즐 비밀에 기초하여 검증자 키를 발생시키게 하고; (d) 검증자 키에 기초하여 챌린지 메시지를 발생시키게 하고; (e) 퍼즐 식별자 및 챌린지 메시지를 토큰에 전송하게 하고; (f) 토큰이 검증자 키를 알고 있다는 것을 증명하는 토큰으로부터의 응답 메시지를 수신하게 하며 (토큰이 검증자 키를 알고 있다는 것을 응답 메시지가 성공적으로 증명하는 경우 검증자가 토큰을 인증한다); 및/또는 (g) 토큰과 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 검증자 키를 토큰 식별자와 연관시키게 한다.
또한, 검증자에 대하여 토큰을 인증하기 위한 토큰의 동작 방법이 제공된다. 토큰은 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘이 프로비저닝 (provisioning) 된다. 토큰 식별자를 검증자에게 제공함으로써 토큰의 인증이 개시된다. 제 1 검증자 키에 기초하여 하나 이상의 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지가 검증자로부터 수신된다. 제 1 검증자 키는 하나 이상의 퍼즐 식별자에 의해 식별된 하나 이상의 퍼즐과 연관된 하나 이상의 퍼즐 비밀의 함수일 수도 있다. 토큰은 하나 이상의 퍼즐 발생 알고리즘, 수신된 하나 이상의 퍼즐 식별자, 및 비밀 키에 기초하여 하나 이상의 퍼즐 비밀을 독립적으로 획득한다. 하나 이상의 퍼즐 비밀에 기초하여 제 2 검증자 키가 발생된다. 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정하기 위해, 수신된 메시지 인증 코드가 토큰에 의해 검증된다. 제 2 검증자 키가 저장되고, 제 1 및 제 2 검증자 키가 동일한 경우 검증자와 연관시킨다. 토큰은 토큰이 제 1 검증자 키를 알고 있다는 것을 나타내는 제 2 검증자 키에 기초하여 검증자에 대하여 응답 메시지를 발생시킬 수도 있다. 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스가 토큰에 의해 검증자에게 제공될 수도 있다. 토큰은 복수의 정렬된 퍼즐 식별자를 상기 검증자로부터 수신할 수도 있고, 제 1 검증자 키는 복수의 정렬된 퍼즐 식별자와 연관된, 대응하는 복수의 정렬된 퍼즐 비밀의 함수이다. 하나 이상의 퍼즐 발생 알고리즘, 수신된 퍼즐 식별자, 및 비밀 키에 기초하여 복수의 정렬된 퍼즐 비밀이 획득될 수도 있다. 제 1 및 제 2 검증자 키는 복수의 정렬된 퍼즐 비밀에 또한 기초할 수도 있다. 이와 같이, 복수의 보안 검증자 키가 상이한 검증자에 의해 확립될 수도 있다. 토큰과 상이한 검증자 사이의 대칭 키 인증으로서 사용하기 위해 검증자 키 각각이, 대응하는 검증자와 연관될 수도 있다.
일 구현에서, 로컬 카운터는 검증자에 의해 유지되는 카운터와 동기되어 토큰과 검증자 사이에서 인증이 수행될 때마다 트래킹한다. 후속의 수신된 메시지 인증 코드는 현재의 카운터 값에 또한 기초할 수도 있다. 토큰이 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 증명하는 검증자에게 응답 메시지가 전송될 수도 있다.
다른 구현에서, 타이머가 타임스탬프를 발생시키도록 유지된다. 그 결과, 후속의 수신된 메시지 인증 코드는 현재의 타임스탬프에 또한 기초할 수도 있다. 토큰이 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 증명하는 검증자에게 응답 메시지가 전송될 수도 있다.
토큰이 제 1 통신 인터페이스 및 처리 회로를 포함하여 제공된다. 제 1 통신 인터페이스는 검증자와 통신하기 위한, 저 대역폭을 갖는다. 처리 회로는 (a) 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 수신하고; (b) 토큰 식별자를 검증자에게 제공함으로써 토큰의 인증을 개시하고; (c) 제 1 식별자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 검증자로부터 수신하고 (제 1 검증자 키는 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 제 1 퍼즐 비밀의 함수임); (d) 하나 이상의 퍼즐 발생 알고리즘, 수신된 퍼즐 식별자, 및 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하고; (e) 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키며; 및/또는 (f) 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 수신된 메시지 인증 코드를 검증하도록 구성된다. 처리 회로는 제 1 및 제 2 검증자 키가 동일한 경우 제 2 검증자 키를 검증자와 연관시킬 수도 있다. 토큰이 제 1 검증자 키를 알고 있다는 것을 나타내는 제 2 검증자 키에 기초하여 검증자에 대하여 응답 메시지가 발생될 수도 있다.
그 결과, 검증자로 인증하는 토큰이 제공되고, 상기 토큰은 (a) 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 토큰에 프로비저닝하는 수단; (b) 토큰 식별자를 검증자에게 제공함으로써 토큰의 인증을 개시하는 수단; (c) 제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 검증자로부터 수신하는 수단 (제 1 검증자 키는 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 제 1 퍼즐 비밀의 함수이다); (d) 하나 이상의 퍼즐 발생 알고리즘, 수신된 퍼즐 식별자, 및 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하는 수단; (e) 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키는 수단; (f) 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정하기 위해, 수신된 메시지 인증 코드를 검증하는 수단; (g) 제 2 검증자 키를 저장하고, 제 1 및 제 2 검증자 키가 동일한 경우 제 2 검증자 키를 검증자와 연관시키는 수단; 및/또는 (h) 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 토큰으로부터 검증자로 제공하는 수단을 포함한다.
또한, 처리 디바이스는 처리 회로를 포함하여 제공되고, 처리 회로는 (a) 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 수신하고: (b) 토큰 식별자를 검증자에게 제공함으로써 토큰의 인증을 개시하고; (c) 제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 검증자로부터 수신하고 (제 1 검증자 키는 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 제 1 퍼즐 비밀의 함수이다); (d) 하나 이상의 퍼즐 발생 알고리즘, 수신된 퍼즐 식별자, 및 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하고; (e) 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키고; (f) 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정하기 위해, 수신된 메시지 인증 코드를 검증하며; 및/또는 (g) 토큰이 제 1 검증자 키를 알고 있다는 것을 나타내는 제 2 검증자 키에 기초하여 검증자에 대하여 응답 메시지를 발생시키도록 구성된다.
검증자에 대하여 토큰을 인증하기 위한 하나 이상의 명령을 갖는 머신-판독가능한 매체가 제공되고, 하나 이상의 명령은, 프로세서에 의해 실행될 때, 프로세서로 하여금, (a) 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 토큰에 프로비저닝하도록 하고; (b) 토큰 식별자를 검증자에게 제공함으로써 토큰의 인증을 개시하도록 하고; (c) 제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 검증자로부터 수신하도록 하고 (제 1 검증자 키는 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 제 1 퍼즐 비밀의 함수이다); (d) 하나 이상의 퍼즐 발생 알고리즘, 수신된 퍼즐 식별자, 및 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하도록 하고; (e) 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키도록 하고; (f) 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정하기 위해, 수신된 메시지 인증 코드를 검증하도록 하며; 및/또는 (g) 제 2 검증자 키를 저장하고 제 1 및 제 2 검증자 키가 동일한 경우 제 2 검증자 키를 검증자와 연관시키도록 한다.
도 1 은 일 실시예에서 토큰은 어떻게 비밀 키가 프로비저닝될 수 있고 토큰과 연관된 퍼즐이 발생될 수 있는지를 예시한 블록도이다.
도 2 는 일 실시예에 따른 비밀 키를 발생시켜서 토큰에 분배하고 비밀 키와 연관된 복수의 퍼즐을 발생시키기 위한 프로비저닝 디바이스의 동작 방법을 예시한다.
도 3 은 토큰의 초기 인증 동안에 토큰, 검증자 디바이스, 및 헬퍼 디바이스가 어떻게 동작할 수 있는지를 예시한다.
도 4 는 헬퍼의 보조로 토큰과 검증자 사이의 초기 인증을 위한 방법을 예시한다.
도 5 는 토큰과 검증자 사이의 후속 인증을 수행하는 방법을 예시한다.
도 6 은 카운터를 사용하여 토큰과 검증자 사이의 인증을 수행하는 방법을 예시한다.
도 7 은 타이머를 사용하여 토큰과 검증자 사이의 인증을 수행하는 방법을 예시한다.
도 8 은 복수의 상이한 검증자가 인증하기 위해 토큰이 어떻게 복수의 검증자 키를 저장할 수 있는지를 예시하는 블록도이다.
도 9 는 복수의 상이한 검증자가 대칭 키를 사용하여 보안 인증을 수행하는 토큰의 동작 방법을 예시한다.
도 10 은 토큰을 인증하기 위해 헬퍼의 보조로 대칭 키를 확립하도록 구성된 검증자를 예시하는 블록도이다.
도 11 은 헬퍼의 보조로 토큰의 보안 인증을 수행하는 검증자의 동작 방법을 예시한다.
도 12 는 토큰을 인증하기 위한 대칭 키를 확립함에 있어서 검증자를 보조하도록 구성된 헬퍼를 예시하는 블록도이다.
도 13 은 토큰을 인증함에 있어서 검증자를 보조하는 헬퍼의 동작 방법을 예시한다.
이하 설명에서, 실시형태의 완전한 이해를 제공하기 위해 특정 상세가 주어진다. 그러나, 당업자는 실시형태가 이들 특정 상세 없이 실시될 수도 있음을 이해할 것이다. 예를 들어, 불필요한 상세로 실시형태를 모호하게 하지 않기 위해 회로는 블록도로 나타낼 수도 있고, 전혀 나타내지 않을 수도 있다. 다른 예시에서, 실시형태를 모호하게 하지 않기 위해 주지된 회로, 구조 및 기술은 상세하게 나타내지 않을 수도 있다.
또한, 실시형태는 플로차트, 흐름도, 구조도, 또는 블록도로서 나타내는 프로세스로서 기재될 수도 있는 것에 주목한다. 플로차트가 순차적인 프로세스로서 동작을 기재할 수 있더라도, 여러 동작이 병행하여 또는 동시에 수행될 수 있다. 또한, 동작의 순서는 재배열될 수도 있다. 프로세스는 그 동작이 완료될 때 종료된다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 경우, 그것의 종료는 호출 함수 또는 메인 함수로의 함수의 리턴에 대응한다.
또한, 저장 매체는, ROM (Read-Only Memory), RAM (Random Access Memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스, 및/또는 정보를 저장하는 다른 머신 판독가능한 매체를 포함하는, 데이터를 저장하는 하나 이상의 디바이스를 나타낼 수도 있다. 용어 "머신 판독가능한 매체" 는 휴대용 또는 고정형 저장 디바이스, 광학 저장 디바이스, 무선 채널, 및 명령(들) 및/또는 데이터를 저장하거나, 수용하거나 또는 운반하는 것이 가능한 다양한 다른 매체를 포함하지만 이에 한정되지 않는다.
또한, 실시형태는 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 그 조합에 의해 구현될 수도 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현되는 경우, 필요한 태스크를 수행하기 위한 프로그램 코드 또는 코드 세그먼트가 저장 매체 또는 다른 저장 수단과 같은 머신 판독가능한 매체에 저장될 수도 있다. 프로세서는 필요한 태스크를 수행할 수도 있다. 코드 세그먼트는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령, 데이터 구조, 또는 프로그램 스테이트먼트의 조합을 나타낼 수도 있다. 코드 세그먼트는 정보, 데이터, 아규먼트 (argument), 파라미터, 또는 메모리 콘텐츠를 패스 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 연결될 수도 있다. 정보, 아규먼트, 파라미터, 데이터 등은 그 중에서도 메모리 공유, 메시지 패싱, 토큰 패싱, 네트워크 송신을 포함하는 적절한 수단을 통해 패스, 포워딩, 또는 송신될 수도 있다.
용어 "토큰" 은 인증된 사용자와 연관되어 인증을 보조하는 한정된 처리 및/또는 통신 자원을 갖는 물리적 디바이스를 칭한다. 용어 "검증자" 는 토큰의 인증을 수행하는 디바이스, 엔티티, 및/또는 가상의 오브젝트 (예를 들어, 소프트웨어 애플리케이션 등) 를 칭한다. 용어 "헬퍼" 는 토큰을 인증함에 있어서 검증자를 보조하는 디바이스, 엔티티, 및/또는 가상의 오브젝트 (예를 들어, 소프트웨어 애플리케이션 등) 를 칭한다.
일 양태는 토큰과 검증자 사이의 인증을 위해 대칭 키를 설정하는 것을 용이하게 하는 네트워킹된 헬퍼를 제공한다. 검증자는 대칭 키를 획득함에 있어서 검증자를 보조하도록 헬퍼를 이용하지만 헬퍼 그 자체가 대칭 키를 획득할 수는 없다. 방법은 3 개의 단계: 프로비저닝, 초기 인증, 및 후속 인증을 포함할 수도 있다.
다른 양태는 토큰과 검증자로 하여금 토큰과 검증자 사이의 인증을 위한 보안 대칭 키에 동의하게 하는 퍼즐-기반 프로토콜을 제공한다.
프로비저닝 단계에서, 저 대역폭 인터페이스를 갖는 소형의 저전력 및 휴대용 토큰은, 연관된 사용자를 다수의 상이한 검증자가 인증하는데 사용될 수 있는 비밀 키가 제공된다. 또한, 프로비저닝 단계는 토큰에 할당된 비밀 키와 연관된 복수의 퍼즐을 발생시키는 단계와 퍼즐을 제 3 자 헬퍼에게 분배하는 단계를 포함할 수도 있다.
초기 인증 단계에서, 토큰 및 검증자가 공유 대칭 키를 결정할 수 있게 함으로써 토큰이 검증자에게 도입된다. 검증자가 토큰 식별자를 수신하여, 그것을 헬퍼로부터 토큰과 연관된 랜덤한 복수의 퍼즐을 획득하는데 사용할 수 있다. 그 다음에, 검증자는 연관된 퍼즐 비밀 및 퍼즐 식별자를 획득하기 위해 무작위로 복수의 퍼즐 중 적어도 하나를 해석하거나 해독한다. 검증자는 해석된 퍼즐로부터 획득된 퍼즐 비밀 및 다른 정보에 기초하여 적어도 부분적으로 검증자 키를 발생시킨다. 검증자는 퍼즐 식별자 및 검증자 키의 메시지 인증 코드를 토큰에 제공한다. 토큰은 수신된 퍼즐 식별자를 사용하여 연관된 퍼즐 비밀을 검색하고 로컬 버전의 검증자 키를 발생시킨다. 그 다음에, 토큰은 (퍼즐 식별자 및 로컬 검증자 키에 적어도 부분적으로 기초하여) 로컬 버전의 메시지 인증 코드를 발생시켜 그것이 수신된 메시지 인증 코드와 매칭하는지의 여부를 결정할 수 있다. 로컬 버전과 수신된 메시지 인증 코드가 매칭하면, 검증자 키가 토큰과 검증자 사이의 대칭 키로서 사용되어도 된다.
그 후, 후속 인증 단계에서, 짧은 전체의 대칭 키 기반 프로세스가 재인증하는데 사용될 수 있다. 예를 들어, 이전에 발생된 검증자 키 (초기 인증 단계 동안에 획득됨) 가 인증을 위해 토큰 및 검증자에 의해 사용될 수도 있다. 이러한 방식으로, 토큰, 검증자, 및 헬퍼는 대칭 키 및 공개 키 방법을 결합하여 검증자와 헬퍼 사이의 공개 키 디지털 서명의 구현을 분리시킨다. 헬퍼는 신뢰하는 제 3 자의 일부 기능을 수행하지만, 비밀 대칭 키를 알지는 못하며 헬퍼의 손상이 인증의 스푸핑을 허용하지 않는다. 이러한 인증 시스템은 전체 공개 키 기반 시스템의 기능성 대부분을 제공하지만, 사실상 토큰은 프로비저닝 후에 단지 소량의 처리 자원 및 대역폭만을 사용한다.
키의 프로비저닝 및 퍼즐 데이터베이스의 발생
도 1 은 일 실시예에서 토큰은 어떻게 비밀 키가 프로비저닝될 수 있고 토큰과 연관된 퍼즐이 발생될 수 있는지를 예시한 블록도이다. 프로비저닝 디바이스 (102) 는 토큰을 구성하기 위해 제조업자 또는 배급업자에 의해 조작될 수도 있다. 프로비저닝 디바이스 (102) 는 비밀 키를 발생시키는 의사랜덤 키 발생기 (106) 를 포함한다. 토큰 (110) 의 제조, 설정, 또는 초기화 동안, 프로비저닝 디바이스 (102) 는 비밀 키 (108) 를 발생시켜 토큰 (110) 에 분배할 수도 있고 그것은 키 저장 디바이스 (112) (예를 들어, 메모리) 내에 저장된다. 또한, 토큰 (110) 은 그의 비밀 키를 사용하여 퍼즐을 재생시키는데 사용할 수 있는 하나 이상의 퍼즐 발생 알고리즘을 저장할 수도 있다. 게다가, 비밀 키 (108) 는 퍼즐 발생기 (114) 를 시드 (seed) 하는데 사용된다. 퍼즐 발생기 (114) 는 비밀 키 (108) 를 사용하여 복수의 퍼즐 (예를 들어, 메시지) 을 발생시키고 그러한 퍼즐을 퍼즐 데이터베이스 (116) (제 3 자 헬퍼 등) 에 제공하도록 구성된다. 일 실시예에서, 퍼즐 각각은 퍼즐 비밀, 고유의 퍼즐 식별자를 포함할 수도 있다. 퍼즐은 퍼즐 데이터베이스 (116) 에 저장하기 전에 암호화될 수도 있다. 비밀 키 (108) 는 토큰 (110) 을 손상시키는데 사용될 수 없도록 프로비저닝 디바이스 (102) 에 의해 파괴될 수도 있다.
다른 구현에서는, 프로비저닝 디바이스 (102) 는 비밀 키를 발생시키지 않을 수도 있다. 그 대신에, 토큰 (110) 은 다른 수단에 의해 미리 비밀 키가 프로비저닝되고 비밀 키를 일시적으로 제공하기에 충분히 오래동안 제공 디바이스와 연결되어 토큰과 연관된 복수의 퍼즐을 발생시킨다.
도 2 는 일 실시예에 따른 비밀 키를 발생시켜서 토큰에 분배하고 비밀 키와 연관된 복수의 퍼즐을 발생시키기 위한 프로비저닝 디바이스의 동작 방법을 예시한다. 의사램덤 비밀 키가 획득된다 (202). 비밀 키는 토큰에 의해 제공되거나 또는 프로비저닝 디바이스에 의해 발생될 수도 있다. 예를 들어, 의사랜덤 발생기 (PRG) 는 개인 키 및 논스를 입력으로서 수신하고, 랜덤하게 보이는 비트의 임의의 긴 스트링으로서 의사랜덤 비밀 키를 발생시키는데 사용될 수도 있다. 많은 대안이 존재하지만, 비선형적 SOBER (NLS) 와 같은 보안 스트림 암호가 PRG 를 예를 들어 설명하는데 사용될 수도 있다.
비밀 키와 연관된 복수의 퍼즐 (예를 들어, 암호화된 메시지) 이 발생된다 (204). 비밀 키는 외부 토큰 디바이스에 제공된다 (206). 또한, 복수의 퍼즐은 그들이 저장되는 외부 헬퍼 디바이스에 전송된다 (208). 그 다음에, 비밀 키는 프로비저닝 디바이스에 의해 폐기된다 (210).
헬퍼에 발생 및 제공된 퍼즐의 수는 매우 많을 수도 있다 (예를 들어, 수천개, 수백만개 등). 프로비저닝 디바이스 (102) 는 토큰 (110) 에 제공된 비밀 키에 기초하여 알고리즘적으로 이들 퍼즐을 발생시킬 수도 있다. 따라서, 토큰 그 자체는 요구에 따라 특정 퍼즐을 복제할 수 있기 때문에, 퍼즐 모두를 저장할 필요가 없다. 그러나, 헬퍼는 비밀 키가 부여되지 않아서, 토큰과 연관된 모든 퍼즐을 저장할 필요가 있다. 이것이 일어날 수 있는 적어도 2 개의 별개의 방법이 존재한다.
퍼즐 데이터베이스 (116) 가 생성된 후에 헬퍼에게 전달된다. 일부 구현에서, 프로비저너 (provisioner) 및 헬퍼는 동일한 디바이스일 수도 있다. 다른 구현에서는, 퍼즐 데이터베이스를 포함하는 저장 매체 (예를 들어, 디스크) 가, 연관된 토큰과 함께 분배될 수도 있다. 그 다음에, 최종 사용자가 적절한 헬퍼를 선택하여 (저장 매체로부터의) 퍼즐 데이터베이스를 그 헬퍼에 분배할 수도 있다. 헬퍼는 퍼즐에 대한 요청을 검증자로부터 수신하면 어떤 퍼즐을 전송하는지를 식별할 수 있도록 사용자의 아이덴티티 및/또는 토큰 식별자 (수신된 퍼즐 데이터베이스에 대응) 를 알릴 수도 있다.
다양한 애플리케이션에서, 복수의 헬퍼는 토큰에 대한 퍼즐 데이터베이스를 수신할 수도 있어서, 리던던시 (redundancy) 및 크기조정을 제공할 수 있다. 헬퍼는 복수의 상이한 토큰에 대한 퍼즐 데이터베이스를 저장할 수도 있다.
퍼즐 발생
다수의 퍼즐을 생성함으로써, 각각의 적절한 양의 어려움은 검증자가 적절한 양의 계산 노력으로 퍼즐을 해석할 수 있게 한다. 퍼즐은 검증자에 의해 무작위 공격을 허용하기에 충분히 짧은 미지의 퍼즐 키 (PK) 로 인코딩된 메시지의 형태로 될 수도 있다.
퍼즐은 랜덤한 순서로 발생될 수도 있다. 각 퍼즐은 퍼즐 식별자 필드 (PID), 퍼즐 비밀 키 (PS), 및 퍼즐 메시지 인증 코드 (PM) 필드를 포함할 수도 있다. 퍼즐 식별자 (PID) 는 가능한 수의 퍼즐 범위 내에서 랜덤하게 생성될 수도 있다. 일 실시예에서, PID 는 32 비트일 수도 있다. 퍼즐 비밀 (PS) 은 전체 강도의 암호 키 (예를 들어, 128 비트) 일 수도 있다. 일 실시예에서, 토큰 비밀 키 (SL) 및/또는 퍼즐 식별자 (PID) (즉, PGF (SK, PID)) 에 기초하여 퍼즐 발생 함수 또는 알고리즘 (PGF) 에 의해 PS 가 (토큰 (302) 또는 프로비저닝 디바이스 (102) 내에서) 계산될 수도 있다. 퍼즐 메시지 인증 코드 (PM) 는 PS 및 PID (즉, PM (PS, PID)) 의 메시지 인증 코드로서 정의될 수도 있고, 검증자로 하여금 퍼즐을 언제 성공적으로 "크랙" 또는 해독하였는지를 알게 한다. 즉, 검증자는 퍼즐이 성공적으로 해석되었음을 나타내는 PID 또는 어떤 다른 플래그, 마커 (marker), 또는 비트 시퀀스를 식별함으로써 퍼즐이 성공적으로 해독되는지를 알 수 있다.
헬퍼로의 분배 전에, 퍼즐은 토큰 또는 프로비저닝 디바이스 중 하나에 의해 랜덤하게 발생된, 고유의 제한된 강도의 퍼즐 키 (PK) 를 사용하여 암호화될 수도 있다. 이러한 암호화의 강도, 및 얼마나 많은 퍼즐이 발생되는지는 오직 헬퍼 퍼즐 데이터베이스가 얼마나 손상될 것 같은지에 좌우된다. 해킹 또는 권한이 없는 액세스가 있을 것 같지 않다고 생각되면, 퍼즐 암호화가 전혀 없을 수 있고, 보다 적은 퍼즐이 잠재적 검증자마다 사용될 수도 있다.
퍼즐 시스템을 사용하는 것은 헬퍼가 손상될 경우에 어떤 추가의 보안을 제공한다. 이러한 보안은 특정 토큰에 사용된 퍼즐의 수 및 복잡성에 기초할 수도 있다. 예를 들어, 용이하게 해독가능한 다수의 퍼즐은 특정 토큰에 사용될 수도 있는데, 여기서 보안은 퍼즐, 또는 퍼즐들의 조합에 의해 제공되고, 검증자에 의해 선택된다. 일단 검증자가 (헬퍼로부터 수신된 다수의 퍼즐로부터) 하나 이상의 의사랜덤하게 선택된 퍼즐을 해독하거나 또는 해석하면, 선택된 퍼즐 각각에 대하여 PID 및 PS 를 획득할 수 있다. 검증자는 토큰에 전송된 PID (들) 에 대응하는 퍼즐 비밀 (PS) 에 기초하여 세션 키 또는 검증자 키 (VK) 를 발생시킬 수 있다. 검증자로부터 PID 를 수신하였으면, 토큰은 세션 키 또는 검증자 키 (VK) 를 또한 발생시킬 수도 있다. 따라서, 검증자 및 토큰 양쪽은 안전하게 공통의 대칭 키에 동의할 수 있다. 도청자 또는 손상된 헬퍼는 검증자에 의해 어떤 퍼즐 (들) 이 해석되었는지를 알지 못하기 때문에 세션 키 또는 검증자 키 (VK) 를 결정함에 있어서 더욱 어려운 태스크를 갖는다. 잘해야, 도청자 또는 헬퍼가 특정 토큰과 연관된 퍼즐 전체를 해석하려고 시도할 수도 있으나, 매우 많이 존재하기 때문에 (예를 들어, 수백만개), 이것은 계산적으로 비용이 훨씬 더 많이 든다.
초기 인증 단계
일단 토큰은 비밀 키가 프로비저닝되고 헬퍼 디바이스가 연관된 퍼즐을 획득하였으면, 헬퍼 디바이스의 보조로 토큰과 검증자 디바이스 사이에서 검증이 수행될 수도 있다. 토큰과 특정 검증자 사이의 초기 인증을 위한 프로세스는 아마도 종래의 공개 키 시스템보다 더, 검증자에 대해 계산적으로 집중한다. 따라서, 일 구현에서, 초기 인증 단계는 토큰이 검증자에게 "도입" 되는데 사용될 수도 있어, 토큰 및 검증자가, 공유된 대칭 키를 결정할 수 있게 한다. 그 후, 짧은 전체의 대칭 키 기반 프로세스가 후속 인증 (재인증) 에 사용될 수도 있다.
도 3 은 토큰 (302) 의 초기 인증 동안에 토큰 (302), 검증자 디바이스 (304) 및 헬퍼 디바이스 (306) 가 어떻게 동작할 수 있는지를 예시한다. 토큰 (302) 은 한정된 처리 회로 (308), 비밀 키 (SK), 토큰-ID, 검증자 키 (VK), 및 퍼즐 발생 알고리즘 또는 함수를 저장하기 위한 저장 디바이스 (310), 및 저 대역폭의 비보안 통신 인터페이스 (312) 를 포함하는 디바이스일 수도 있다. 저 대역폭 인터페이스는 USB, 블루투스, 근거리 통신 및 셀룰러/LDC 와 같은 것들을 통해 범위를 결정하는 숫자 키패드 및 8-디지트 디스플레이처럼 간단할 수도 있다.
검증자 (304) 는 토큰보다 상당히 더 많은 처리 자원을 갖는 처리 회로 (314), 검증자 키 및 연관된 토큰-ID 를 저장하는 저장 디바이스 (315), 및 고 대역폭의 보안 통신 인터페이스 (316) 를 포함하는 디바이스, 엔티티, 및/또는 가상 오브젝트일 수도 있다. 헬퍼 (306) 는 처리 회로 (318), 토큰 (302) 과 연관된 복수의 퍼즐을 저장하는 저장 디바이스 (320), 및 고-대역폭의 보안 통신 인터페이스 (322) 를 포함하는 디바이스, 엔티티, 및/또는 가상 오브젝트일 수도 있다.
사용자는 그/그녀 자신이 검증자 (304) 로 인증하기 위해 토큰 (302) 을 사용하려고 할 때, 토큰은 인증 요청 (토큰 ID 를 가짐) 을 검증자 (304) 에게 전송한다. 검증자 (304) 및 헬퍼 (306) 는 고 대역폭 네크워크 (예를 들어, 인터넷, 사설망 등) 에 연결되어 그것을 통해 통신하고 및/또는 데이터를 교환할 수 있다. 검증자 (304) 는 헬퍼 (306) 로부터 복수의 퍼즐 (토큰 ID 와 연관됨) 을 요청한다. 헬퍼 (306) 는 의사랜덤하게 선택된 일 세트의 퍼즐 (수신된 토큰 ID 와 연관됨) 을 검증자 (304) 에게 전송함으로써 응답한다. 일부 구현에서, 헬퍼 (306) 및 검증자 (304) 는 그들의 상호작용을 안전하게 하는 전송 계층 보안 (TLS) 프로토콜 또는 보안 인터넷 프로토콜 (IPsec) 과 같은 주지의 보안 프로토콜을 사용하여 개방형 인터넷에 걸쳐서 통신할 수도 있다.
그 다음에, 검증자 (304) 는 하나 이상의 수신된 퍼즐을 선택하여 무작위 공격에 의해 그것을 해독하거나 또는 크랙한다. 퍼즐의 해독 또는 크랙시, 검증자는 퍼즐로부터 퍼즐 비밀 (PS) 및 퍼즐 ID (PID) 를 획득한다. 검증자 키 (VKv) 는 퍼즐 비밀 (PS) 에 기초하여 검증자 (304) 에 의해 발생된다. 검증자 (304) 는 퍼즐 ID (PID) 및 검증자 키 (VKv) 의 메시지 인증 코드 (MAC) 를 토큰 (302) 에 전송한다. 토큰 (302) 은 수신된 PID 및 그의 미리 저장된 비밀 키 (SK) 및 퍼즐 발생 알고리즘을 사용하여 PID 에 대한 퍼즐 비밀을 획득한다. 그 다음에, 토큰 (302) 은 퍼즐 비밀을 사용하여 그 자신의 로컬 검증자 키 (VKt) 를 재생시킬 수 있다. 검증자 키들이 매칭 (VKt = VKv) 할 것이고, 그것은 검증자 키 (VK) 로 하여금 토큰 (302) 과 검증자 (304) 사이의 인증을 위해 대칭 키로서 사용되게 한다. 토큰 (302) 은 검증자 (304) 에 의한 미래의 인증을 위해 검증자 키 (VK) 를 저장할 수도 있다.
일부 구현에서, 검증자 (304) 가 복수의 퍼즐을 해석, 크랙, 또는 해독하여 복수의 퍼즐 비밀 및 퍼즐 식별자를 획득할 수도 있다는 것에 주목한다. 복수의 퍼즐 비밀에 기초하여 검증자 키 (VKv) 가 발생될 수도 있어서, 추가의 강도를 얻을 수 있다. 대응하는 퍼즐 식별자가 토큰 (302) 에 전송되어 그 다음에 그의 로컬 검증자 키 (VKt) 를 발생시키는데 사용할 수 있다.
도 4 는 헬퍼의 보조로 토큰과 검증자 사이의 초기 인증을 위한 방법을 예시한다. 토큰 (402) 은 비밀 키 (SK1) 가 프로비저닝된다. 사용자가 인증을 포함하는 보안 트랜잭션을 수행하기를 원하면, 토큰 식별자 (토큰 ID) 와 함께 인증 요청 (412) 을 전송함으로써 검증자 (404) 에 의한 인증을 개시하도록 토큰 (402) 이 사용될 수도 있다. 인증 헬퍼 (406) 가 토큰 (402) (또는 토큰의 사용자) 에 의해 식별될 수도 있고 또는 디폴트로서 식별될 수도 있다. 예를 들어, 토큰 (402) 또는 사용자 중 하나가 토큰에 대한 퍼즐이 저장되는 헬퍼 (406) 에 대한 접촉 정보를 검증자 (404) 에게 제공할 수도 있다.
검증자 (404) 가 헬퍼 (406) 와의 보안 및/또는 인증된 접속을 확립할 수도 있다. 또한, 검증자 (404) 가 제 1 랜덤 논스 (논스 1) 를 발생시킬 수도 있다 (414). 그 다음에, 토큰-ID 및 논스 1 이 헬퍼 (406) 에 전송된다.
토큰 (402) 용 퍼즐 데이터베이스 (410) 가 미리 프로비저닝된 헬퍼 (406) 는 토큰-ID 를 사용하여 퍼즐 데이터베이스 (410) 로부터 퍼즐을 선택한다. 일 구현에서, 헬퍼 (406) 는 제 1 논스 (논스 1) 를 사용하여 토큰 (402) 과 연관된 의사랜덤 선택 (세트) 의 N 개의 퍼즐 (여기서 N 은 2 와 수백만 사이의 정수임) 을 선택할 수도 있고 (418) 그것을 검증자에게 반환한다 (420). 논스 1 이 검증자 (404) 에 의해 제공되었을 경우, 헬퍼 (406) 는 수신된 논스 1의 영향 하에서 상기 세트의 퍼즐이 선택되었다는 증거를 제공할 수도 있다. 그 다음에, 검증자 (404) 와 검증자 (406) 사이의 접속이 폐쇄되거나 또는 종료될 수도 있다.
검증자 (404) 가 하나 이상의 수신된 퍼즐을 선택한다 (422). 일부 구현에서, 랜덤 시퀀스의 t 개의 퍼즐이 선택되는데, 여기서 t>=1 이고 t 는 수신된 모든 퍼즐의 서브세트이다. 검증자 키를 발생시키기 위해 어떤 t 개의 퍼즐이 사용될 것인지 또는 어떤 순서 (시퀀스) 로 그들이 조합되는지를 헬퍼 (406) 및 공격자는 알지 못하기 때문에, 헬퍼 (406) 가 손상된 경우, 사용되는 퍼즐이 많을수록, 더욱 더 보안성이 증가한다.
선택된 퍼즐이 암호화되는 곳에서는, 선택된 퍼즐 각각에 대하여 퍼즐 식별자 (PID) 및 퍼즐 비밀 (PS) 을 획득하기 위해 (예를 들어, 무작위 공격 기술을 사용하여) 검증자 (404) 에 의해 해석 (해독 또는 크랙) 될 수도 있다 (424).
식별자 (404) 가 퍼즐 비밀 (PS) 및, 가능하다면, 제 2 의사랜덤 논스 (논스 2) 에 기초하여 (426) 검증자 키 (VKver) 를 계산한다 (428). 예를 들어, 해시 함수 (H) (예를 들어, 보안 해시 알고리즘 (SHA-256) 등) 는 검증자 키 (VKver=H (논스 2, PS)) 를 발생시키는데 사용될 수도 있다. 일부 구현에서는, 퍼즐 비밀 (PS1, PS2, …, PSt) 이 검증자 키 (VKver=H (논스 2, PS1, …, PSt) 에 결합되도록 복수의 퍼즐이 추가의 보안을 위해 사용된다. 검증자 (406) 는 토큰 (402) 에 메시지를 전송하는데, 여기서 메시지는 제 2 논스 (논스 2) 및 t 개의 PID 의 정렬된 리스트를 포함할 수도 있다 (430). 또한, 검증자 (404) 는 입력으로서 비밀 검증자 키 (VKver) 및 상기 메시지를 취하는 메시지 인증 코드 (MAC) 를 전송할 수도 있고, 태그 MAC (VKver, 논스 2, PID) 을 출력한다 (430). 또한, 검증자 (404) 는 후속 인증에 사용하기 위해 이 사용자와 연관된 검증자 (VKver) 를 저장할 수도 있다 (432).
검증자 (404) 로부터 PID 및 MAC 의 수신시, 토큰 (402) 은 수신된 PID 에 기초하여, 해석된 퍼즐의 퍼즐 비밀 (PS) 을 재생시킨다 (434). 예를 들어, 토큰 (402) 이 그의 비밀 키 (SK1) 및 퍼즐 발생 알고리즘을 사용하여, 식별된 PID 에 대한 퍼즐 비밀 (PS) 을 획득할 수도 있다. 그 다음에, 토큰 (402) 이 퍼즐 비밀 (PS) 및 제 2 논스 (논스 2) 에 기초하여 로컬 검증자 키 (VKtoken) 를 발생시킨다 (436). 로컬 MAC (VKtoken, 논스 2, PID) 에 대한 수신된 메시지 인증 코드 MAC (VKver, 논스 2, PID) 을 검증한다 (438). MAC 이 동일하지 않으면 에러를 나타내서, 수신된 MAC (VKver, 논스 2, PID) 및/또는 메시지의 콘텐츠의 경감 (또는 우연한 손상) 을 나타낸다. 또한, 토큰 (402) 은 동일한 검증자 키 (VK) 가 이미 저장되어 있지 않은지를 검사하여, 반복 공격을 방지한다. 성공한 것으로 가정하면, 토큰 (402) 은 빈 슬롯에 VK 를 저장한다 (440). 즉, 토큰 (402) 은 슬롯 내에 (상이한 애플리케이션 또는 검증자를 위한) 검증자 키를 구성할 수도 있다. 사용자는 이후의 선택 또는 표시를 위해 검증자 키 (VK) 와 연관된, 슬롯 개수를 기록하거나, 또는 이름을 슬롯에 할당할 수도 있다.
토큰 (402) 은 (이하 설명하는 후속 인증 단계에서이긴 하지만) 그의 인증 응답을 발생시켜서 그것을 검증자 (442) 에게 전송한다 (442). 검증자 (404) 는 올바른 것이어야 할 응답을 수신하고, 사용할 준비가 된 계정을 표시한다
후속 인증 단계
일단 검증자 키 (VK) 가 토큰과 특정 검증자 사이에 설정되었으면, 검증자 키 (VK) 는 그들 사이에서 후속 인증 요청에 사용될 수도 있다. 검증자 키 (VK) 는 토큰과 검증자 사이에서 비밀로 하거나 보안을 유지한다. 검증자 키 (VK) 는 토큰과 검증자 사이에서 챌린지-응답 인증 프로세스에서의 대칭 키로서 사용될 수도 있다. 또한, 일부 구현에서, 대칭 키 (VK) 는 비밀 통신에 사용되어 2 개의 디바이스 사이의 메시지를 암호화할 수도 있다.
도 5 는 토큰과 검증자 사이의 후속 인증을 수행하는 방법을 예시한다. 보안된 검증자 키 (VK) (506 및 508) 는 토큰 (502) 과 검증자 (504) 사이에서 이미 확립되어 있을 수도 있다. 이러한 검증자 키 (VKa) 는 토큰 (502) 과 검증자 (504) 사이의 관계로 특정될 수도 있어 다른 검증자들에게 적용할 수 없다. 토큰 (502) 은 그의 토큰-ID 와 함께 인증 요청 (510) 을 검증자 (504) 에 전송한다 (이것은, 예를 들어, 은행원에게 업무를 수행하도록 요구하는 고객을 내포할 수도 있다). 검증자 (504) 는 토큰-ID 를 사용하여 토큰 (502) 에 대해 이미 확립된 검증자 키 (VKa) (508) 를 식별한다. 검증자 (504) 는 챌린지 및 MAC (VKa, 챌린지) 를 발생시킨다 (512). 챌린지는 비트 또는 심볼의 임의 또는 의사랜덤한 수, 스트링 및/또는 시퀀스일 수도 있다. 그 다음에, 챌린지 및 MAC (VKa, 챌린지) 은 토큰에 전송된다 (514). 수신된 챌린지, 및 그의 미리 저장된 검증자 키 (VK) (506) 를 사용하여, 토큰 (502) 이 MAC (VKa, 챌린지) 을 검증할 수도 있다 (516). 즉, 토큰 (502) 은 수신된 MAC (VKa, 챌린지) 이 로컬에서 계산된 MAC (VKa, 챌린지) 과 동일한지의 여부를 검증한다.
일 구현에서, 토큰 (502) 은 어떤 검증자가 인증 요청 (510) 을 전송하고 있는지를 알고 있을 수도 있다. 예를 들어, 사용자는 토큰 (502) 에 의해 사용되는 (특정 검증자와 연관된) 검증자 키 (VKa) (506) 를 식별할 수도 있다. 이러한 구현에서, 수신된 MAC (VKa, 챌린지) 을 검증할 때, 토큰 (502) 은 단순히, 사용한다고 했던 검증자 키 (VKa) (506) 를 사용한다.
다른 구현에서, 토큰 (502) 은 어떤 검증자와 통신하고 있는지를 알지 못할 수도 있다. 그러한 경우, 토큰은 단순히, 저장된 검증자 키 각각에 대한 수신된 MAC (VKa, 챌린지) 을 검증하려고 시도할 수도 있다. 저장된 검증자 키 중의 하나가 동일한 MAC 을 발생시키면, 올바른 검증자 키인 것으로 가정한다.
일단 검증자 키 (VKa) 가 인증되었으면, 토큰 (502) 은 응답 및 MAC (VKa, 응답) 을 검증자 (504) 에게 전송한다 (518). 응답이 비트 또는 심볼의 임의 또는 의사랜덤한 수, 스트링 및/또는 시퀀스일 수도 있다. 토큰과 검증자 사이의 메시지가 동일하지 않도록, 챌린지 및 응답이 서로 구별되도록 선택된다. 일반적으로, 보안을 위해, 응답은 처음에 발행된 것이지만 동일하지 않은 챌린지와 관련될 수도 있다. 예를 들어, 응답은 수신된 챌린지 스트링보다 더 큰 스트링일 수 있고; 이러한 경우에는 응답 그 자체가 송신될 필요는 없다. 그의 공지된 검증자 키 (VKa) (508) 및 수신된 응답을 사용함으로써, 수신된 MAC (VKa, 응답) 이 검증자 (504) 에 의해 검증될 수도 있다 (520). 수신된 MAC 이 검증자 (504) 에 의해 계산된 로컬 MAC 과 매칭되면, 인증이 완료된다. 그 다음에, 세션 키가 토큰 (502), 검증자 (504), 또는 양쪽에 의해 확립될 수도 있다 (522).
반복 공격을 방지하기 위하여, 도청자가 이미 사용된 세션 키를 재사용하려고 시도하는 곳에서는, 토큰이 보안 메커니즘을 구현할 수도 있다. 예를 들어, 다양한 토큰은 인증을 증명하는 시퀀스 카운터 또는 타임스탬프를 구현할 수도 있다. 검증자 키 (VK) 를 아는 자만이 예상할 수 있는 방법으로 상기 카운터 또는 타임스탬프를 변경한다. 따라서, 토큰 또는 세션 키로부터 이전의 MAC 응답을 획득했던 도청자는 그것을 재사용할 수 없다.
시퀀스 카운터에 의한 인증
도 6 은 카운터를 사용하여 토큰과 검증자 사이의 인증을 수행하는 방법을 예시한다. 검증자 키 (VKa) (606 및 608) 및 연관된 후속 카운터 (카운터_VKa) (610 및 612) 는 토큰 (602) 및 검증자 (604) 양쪽에 프로비저닝된다. 검증자 키 (VKa) (606 및 608) 및 후속 카운터 (카운터_VKa) (610 및 612) 는 토큰 (602) 과 검증자 (604) 사이에서 이미 배열 및/또는 동기되었을 수도 있다. 예를 들어, 검증자 키 (VKa) 가 토큰 (602) 과 검증자 (604) 사이에서 먼저 확립되면, 토큰 (602) 및 검증자 (604) 는 그들의 카운터 (610 및 612) 를 동기시킬 수도 있다. 카운터 (610 및 612) 는 권한이 없는 자가 토큰 (602) 및/또는 검증자 (604) 인 체하려고 시도하는 경우에 보안 수단으로서 사용된다. 카운터_VKa (610) (토큰 (602) 에서) 및 카운터_VKa (612) (검증자 (604) 에서) 는 권한이 없는 자가 토큰 (602) 및/또는 검증자 (604) 인 체하려고 시도하는 경우에 보안 수단으로서 사용된다.
토큰은 그의 토큰_ID 와 함께 인증 요청 (614) 을 전송함으로써 트랜잭션을 개시한다. 인증 요청의 수신시, 검증자 (604) 는 토큰_ID 를 사용하여 토큰 (602) 과 연관된 검증자 키 (VKa) (608) 를 식별한다. 그 다음에, 검증자 키 (VKa) (608) 에 대응하는 카운터_VKa (612) 를 선택한다. 카운터_VKa 는 고정 증분만큼 검증자 (604) 에서 증가되어 (616) 카운터_VKa' 를 획득한다. 챌린지는 검증자 키 (VKa), 카운터_VKa', 및 챌린지 (MAC (VKa, 카운터_VKa', 챌린지)) 의 메시지 인증 코드를 발생시킨다 (618). 이러한 챌린지 및 MAC (VKa, 카운터_VKa', 챌린지) 은 검증자로부터 토큰으로 전송된다 (620). 토큰 (602) 에 의해 저장된 검증자 키 (VKn) 각각에 대하여, a) 연관된 카운터_VKn 이 검색 (여기서 1≤n≤N, N 은 토큰에 의해 저장된 검증자 키의 전체 개수임) (622) 된 다음에, b) MAC (VKn, 카운터_VKn+i, 챌린지) 이 각각의 검증자 키 (VKn) 및 카운터_VKn 에 대해 계산 (여기서 예를 들어 1≤i≤5) 되고, c) 계산된 MAC 이 수신된 MAC 과 일치하면, 선택된 검증자 키 (즉, VKa) 가 올바른 것으로 가정한다. 일부 구현에서, 챌린지는 비트의 공지된 수, 스트링, 또는 시퀀스일 수도 있어서, 검증자 키 (VKn) 각각에 대한 MAC 이 더 빠른 응답을 위해 미리 계산되고 저장될 수도 있다.
일단 올바른 검증자 키 (VKa) 가 발견되면, 토큰 (602) 은 그의 카운터_VKa'=카운터_VKa+증분을 갱신한다 (628). 따라서, 토큰 (602) 및 검증자 (604) 양쪽은 동기된 카운터를 유지한다. 그 다음에, 토큰은 응답 및 MAC (VKa, 카운터_VKa', 응답) 을 계산하고 (630) 그것을 검증자에게 전송한다 (632).
검증자 (604) 는 그 자신의 VKa 및 카운터_VK' 뿐만 아니라 수신된 응답을 이용하여, 수신된 MAC (VKa, 카운터_VKa', 응답) 을 검증한다. 수신된 MAC 이 성공적으로 검증되면, 토큰 (602) 은 인증된 것으로 여겨진다. 토큰 (602) 및 검증자 (604) 양쪽이 세션 키=MAC (VK, 카운터_VKa', "K") 을 계산할 수도 있는데 (636 및 638), 여기서 "K" 는 토큰 (602) 및 검증자 (604) 양쪽에 의해 공지되거나 또는 결정가능한 비밀 키 또는 미리 준비된 값일 수도 있다.
토큰 (602) 이 공격자로부터 랜덤 챌린지를 수신하면, 대응하는 검증자 키 (VK) 를 발견할 수 없어, 에러, 및 검증 실패를 나타낸다는 것에 주목한다.
타임스탬프에 의한 인증
도 7 은 타이머를 사용하여 토큰과 검증자 사이의 인증을 수행하는 방법을 예시한다. 이러한 방법은 사용자가 토큰에 대한 검증자를 식별하게 함으로써 인증 프로토콜을 간이화하여, (검증자를 식별하는) 검증자 (704) 로부터의 챌린지에 대한 요구를 회피할 수 있다. 또한, 이러한 특징은 다른 프로토콜 (상기 설명한 카운터-기반 인증 프로토콜 등) 에서 구현되어 인증 단계의 수를 감소시킬 수도 있다. 이러한 방법은 토큰 (702) 및 검증자 (704) 가 적절한 정확성으로 동기된 타이머들 (Ttoken) (710) 및 (Tver) (712) (예를 들어, 조정된 세계시 (UTC)) 를 유지할 수 있는 것으로 가정한다. 예를 들어, 토큰 (702) 이 프로비저닝 동안 동기 또는 초기화된 타이머 (Ttoken) (710) 를 가질 수도 있다. 검증자 (704) 는 네트워크 접속을 가질 수도 있고 그것을 통해 그의 타이머 (Tver) (712) 가 동기 및/또는 유지된다. 토큰 (702) 이 검증자 (704) 를 식별하는 표시를 (사용자 또는 다른 것으로부터) 수신할 수도 있고 그에 의해 토큰이 인증된다 (714). 예를 들어, 사용자는 특정 검증자 (704) 와 미리 연관되었던 특정 이름 또는 검증자 키 (VKa) (706) 를 선택할 수도 있다. 이러한 방식으로, 토큰 (702) 은 검증자 (704) 와 미리 연관된 검증자 키 (VKa) (706) 를 획득할 수도 있다. 토큰은 응답 및 MAC (VKa, 타임스탬프, 응답) 을 발생시켜서 (716) 그것을 검증자에게 전송한다 (718). 응답에 사용된 타임스탬프는 타이머 (Ttoken) (710) 로부터 획득된다. 응답, MAC (VKa, 타임스탬프, 응답), 및 토큰_ID 는 토큰의 인증을 위해 검증자에게 전송된다 (718).
검증자는 검증자 키 (VKa) (708) (토큰_ID 에 대응) 를 검색하고 타이머 (Tver) (712) (타임스탬프를 획득하기 위함) 및 수신된 응답을 사용함으로써, 수신된 MAC (VKa, 타임스탬프, 응답) 을 검증하여 (720) 로컬 버전의 MAC 을 계산한다. 타임스탬프의 해상도는 타이머들 (Ttoken) (710) 과 (Tver) (712) 사이의 작은 변동 또는 시간의 지연을 수용하도록 조정할 수도 있고, MAC 은 토큰 (702) 에 의해 발생되고 시간은 검증자 (702) 에게 제공된다. 예를 들어, 타임스템프는 +/- 30 초 또는 어떤 다른 타임 윈도우의 해상도를 가질 수도 있다.
일부 구현에서, 토큰 (702) 및/또는 검증자 (704) 는 특정 트랜잭션 동안 세션 키로서 사용하기 위해 MAC (VK, 타임스탬프, 세션 키) 을 계산할 수도 있는데 (722 및 724), 여기서 세션 키는 토큰 (702) 및 검증자 (704) 양쪽에 의해 공지되거나 또는 결정가능한 비트의 의사랜덤한 또는 임의의 수, 스트링, 및/또는 시퀀스이다.
검증자 (704) 로부터 챌린지를 수신하지 않는 것에 의해, 토큰이 검증자가 진짜인지의 여부를 알지 못하는 것에 주목한다. 따라서, 신뢰하는 검증자에게 토큰을 제공하는 것을 사용자에게 의존할 수도 있다. 추가의 보안을 원하는 경우, 이러한 토큰 (702) 은 검증자로부터 챌린지를 요청할 수도 있어, 그에 의해 검증자가 유효한지 또는 진짜인지 (예를 들어, 검증자가 검증자 키 (VKa) 를 앎) 의 여부를 확인할 수 있다.
사용 개요
단일-요소 인증 시스템에서, 사용자는 그/그녀 자신이 검증자로 인증하기 위해 토큰을 사용할 수도 있다. 즉, 올바른 검증자 키를 갖는 토큰의 단순한 소유는 사용자를 인증하기에 충분하다. 그러나, 단일-요소 인증은 물리적 토큰에 대한 액세스를 얻은 누군가가, 계정 및/또는 검증자에 의해 보호된 정보에 대하여 권한이 없는 액세스를 얻을 수도 있다는 불편을 갖는다.
이중-요소 인증 시스템에서, 2 개의 보안 수단은 더 많은 보안을 달성하는데 사용된다. 하나의 이러한 요소는 사용자가 인증의 순간에 제공하는 보안 패스워드, 키, 식별자, 사진 증명서, 지문, 음성 샘플 등일 수도 있다. 두번째 요소는 인증의 순간에 또한 제공되는 올바른 검증자 키 (들) 를 저장하는 토큰일 수도 있다.
이하 설명되는 토큰과 검증자 사이의 인증 프로토콜은 수동적으로, 자동적으로, 또는 그 조합으로 수행될 수도 있다. 일부 실시예에서, 사용자는 토큰 및 검증자에 대한 중개자로서 작용할 수도 있다. 예를 들어, 챌린지 및 응답 (예를 들어, MAC) 은 사용자가 토큰 및/또는 검증자에 수동으로 기입할 수 있는 상대적으로 짧은 스트링의 숫자, 문자, 및/또는 심볼일 수도 있다. 다른 실시예에서, 토큰은 인터페이스 (예를 들어, 무선, 범용 직렬 버스, 음성 등) 에 의해 검증자와 직접 연결될 수도 있어서, 인증 메시지를 인터페이스 등을 통해 교환할 수 있다. 토큰 및 검증자가 서로 직접 통신하는 구현에서는, 추가의 보안을 위해, 인증 프로토콜이 더 긴 챌린지 및 응답, 더 많은 퍼즐 등을 이용할 수도 있다.
토큰의 실시예
도 8 은 복수의 상이한 검증자 (804, 806, 및 808) 가 인증하기 위해 토큰 (802) 이 어떻게 복수의 검증자 키를 저장할 수 있는지를 예시하는 블록도이다. 토큰 (802) 이 한정된 처리 자원 및 한정된 대역폭 통신 인터페이스를 가질 수도 있고, 도 1 내지 도 7 에 예시된 바와 같이 동작하도록 구성될 수도 있다. 이러한 공개 키 인증 시스템을 구현하기 위해 일부 종래 기술의 토큰은 상이한 검증자에 의한 인증을 위해 복수의 공개 키를 저장할 수도 있지만 상당한 처리 자원 및 통신 대역폭을 요구한다. 다른 토큰은 보안의 이유로 인해, 단지 하나의 검증자에 의해 이용될 수 있는 대칭 키를 저장할 수도 있다. 이러한 종래 기술의 토큰과 대비하여, 본 토큰 (802) 은 한정된 처리 자원 및 한정된 대역폭 인터페이스를 이용하면서, 복수의 대칭 키를 획득하여 안전하게 저장하도록 구성된다. 즉, 토큰 (802) 은 복수의 검증자 키 (즉, 대칭 키) 를 도 1 내지 도 7 에 예시된 방식으로 획득할 수도 있고, 그것으로 하여금 다수의 상이한 검증자에 의해 인증되도록 한다. 특히, 검증자 키는 토큰 (802) 및 검증자 (804, 806, 808) 에 의해 안전하게 발생되고 토큰 (802) 과 검증자 (804, 806, 808) 사이에서 전송 또는 송신되지 않는다. 보안 면에서 추가의 검증자 키 (즉, 대칭 키) 가 초기 배치 후에 토큰에 추가될 수도 있다.
도 9 는 복수의 상이한 검증자가 대칭 키를 사용하여 보안 인증을 수행하는 토큰의 동작 방법을 예시한다. 토큰은 프로비저닝 단계 동안 비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘이 프로비저닝된다 (902). 토큰은 그의 토큰 식별자를 검증자에 제공함으로써 검증자에 의한 인증을 개시한다 (초기 인증 단계) (904). 사용자 또는 토큰은 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 검증자에게 제공할 수도 있다.
챌린지 메시지는 제 1 검증자 키에 기초하여 하나 이상의 퍼즐 식별자 및 메시지 인증 코드를 포함하여 검증자로부터 수신되는데, 여기서 제 1 검증자 키는 하나 이상의 퍼즐 식별자에 의해 식별된 하나 이상의 퍼즐과 연관된 하나 이상의 퍼즐 비밀의 함수이다 (906). 토큰은 하나 이상의 퍼즐 발생 알고리즘, 수신된 하나 이상의 퍼즐 식별자 (들), 및 비밀 키에 기초하여 하나 이상의 퍼즐 비밀을 (독립적으로) 획득한다 (908). 예를 들어, 토큰은 비밀 키 및/또는 하나 이상의 토큰 식별자를 퍼즐 발생 알고리즘에 대한 입력으로서 사용하여 토큰 식별자에 대응하는 하나 이상의 퍼즐 및/또는 하나 이상의 퍼즐 비밀을 발생시킬 수도 있다. 제 2 검증자 키는 하나 이상의 퍼즐 비밀 (들) 에 기초하여 토큰에 의해 발생된다 (910). 수신된 메시지 인증 코드는 토큰에 의해 검증되어 제 1 검증자 키 및 제 2 검증자 키가 동일한지의 여부를 결정한다 (912). 토큰은 제 2 검증자 키에 기초하여 검증자에 대한 응답을 발생시킨다 (914). 메시지 인증 코드가 성공적으로 검증되면, 제 2 검증자 키가 토큰에 의해 저장되고 검증자와 연관된다 (916). 제 1 및 제 2 검증자 키가 토큰과 검증자 사이에서 후속 인증을 위한 대칭 키로서 사용된다. 마찬가지의 방식으로, 토큰은 다른 검증자에 의해 상이한 대칭 키를 설정할 수도 있다. 따라서, 단일 토큰은 상이한 검증자에 의해 사용되는 다수의 검증자 키 (즉, 대칭 키) 를 저장하는데 사용될 수도 있다. 토큰은 다른 검증자 키의 보안을 손상시키지 않고, 별개의 검증자들에 대한 추가의 검증자 키를 요구된 바와 같이 확립시킬 수도 있다.
검증자의 실시예
도 10 은 토큰을 인증하기 위해 헬퍼의 보조로 대칭 키를 확립하도록 구성된 검증자 (1002) 를 예시하는 블록도이다. 검증자 (1002) 는 상당한 처리 능력을 갖는 처리 회로 (1004), 토큰과 통신하는 저 대역폭 통신 인터페이스 (1006) (예를 들어, 키패드, 무선 트랜스폰더 등), 헬퍼와 통신하는 고 대역폭 통신 인터페이스 (1008), 및 헬퍼로부터 수신된 퍼즐 및 토큰과 연관된 검증자 키를 저장하는 저장 디바이스 (1010) 를 포함할 수도 있다. 검증자 (1002) 는 도 1 내지 도 7 에 예시된 바와 같이 동작하도록 구성될 수도 있다. 처리 회로 (1004) 는 저 대역폭 통신 인터페이스 (1006) 를 통해 토큰으로부터 토큰 식별자를 수신하고 고 대역폭 통신 인터페이스 (1008) 를 통해 헬퍼로부터 복수의 퍼즐을 요청도록 구성된다. 헬퍼에 대한 접촉 신호는 토큰, 토큰의 사용자, 또는 디폴트 위치 결정 (예를 들어, 인터넷 어드레스, URL (Uniform Resource Locator) 등) 에 의해 제공될 수도 있다. 그 다음에, 처리 회로 (1004) 는 수신된 퍼즐 중 하나를 랜덤하게 선택하고 무작위 공격에 의해 그것을 해석하거나 또는 해독한다. 이러한 무작위 공격에서, 처리 회로 (1004) 는 퍼즐을 성공적으로 해독하거나 디코딩한 것을 발견할 때까지 다양한 가능한 키를 시도할 수도 있다. 퍼즐이 암호화되는 키의 길이 (예를 들어, 32 비트, 64 비트, 128 비트 등) 는 검증자 (1002) 에게 공지될 수도있어서, 키에 대한 검색을 제한할 수 있다.
도 11 은 헬퍼의 보조로 토큰의 보안 인증을 수행하는 검증자의 동작 방법을 예시한다. 인증 요청이 토큰 식별자와 함께 (저 대역폭 인터페이스를 통해) 토큰으로부터 수신된다 (1102). 토큰과 연관된 헬퍼에 대한 헬퍼 어드레스는 검증자에 의해 획득된다 (1104). 그 다음에, 검증자는 헬퍼로부터 토큰에 대응하는 복수의 퍼즐 (예를 들어, 수천개, 수십만개, 또는 수백만개) 을 요청한다 (1106). 또한, 일부 구현에서, 검증자는 복수의 퍼즐이 헬퍼에 의해 의사랜덤하게 치우짐없이 선택되도록 제 1 의사랜덤 논스를 헬퍼에 전송할 수도 있다. 그 다음에, 검증자는 수신된 퍼즐 중 하나를 의사랜덤하게 선택하고 그것을 무작위 공격에 의해 해석하여, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득한다 (1108). 예를 들어, 검증자가 퍼즐이 인코딩된 키의 길이를 안다면, 퍼즐이 해석 (예를 들어, 메시지가 성공적으로 디코딩됨) 될 때까지 모든 가능한 키를 시도할 수 있다. 그 다음에, 검증자는 퍼즐 비밀을 사용하여 검증자 키를 발생시킨다 (1110). 챌린지 메시지 인증 코드는 검증자 키에 기초하여 검증자에 의해 발생된다 (1112). 퍼즐 식별자 및 챌린지 메시지는 토큰에 전송된다 (1114). 동일한 검증자 키를 알면 토큰으로부터 응답 메시지 인증 코드가 수신될 수도 있다 (1116). 미래의 인증을 위해 검증자 키가 검증자에 의해 저장되고 토큰과 연관된다 (1118).
일부 구현에서, 검증자 키를 발생시키는 (단지 하나의 퍼즐 대신에) 복수의 퍼즐을 사용함으로써 추가의 보안이 제공될 수도 있다. 검증자는 복수의 퍼즐을 의사랜덤하게 선택하고 해석할 수도 있어서, 복수의 퍼즐 비밀을 획득할 수 있다. 그 다음에, 복수의 퍼즐 비밀은 검증자 키를 발생시키기 위해 조합될 수도 있다.
헬퍼의 실시예
도 12 는 토큰을 인증하기 위한 대칭 키를 확립함에 있어서 검증자를 보조하도록 구성된 헬퍼 (1202) 를 예시하는 블록도이다. 헬퍼 (1202) 는 고 대역폭 통신 인터페이스 (1206) 및 저장 디바이스 (1208) 에 연결된 처리 회로 (1204) 를 포함하는 네트워킹된 디바이스일 수도 있다. 처리 회로 (1204) 는 퍼즐 프로비저너로부터 그의 인터페이스 (1206) 를 통해 복수의 퍼즐을 수신하고 그것을 저장 디바이스 (1208) 에 저장하도록 구성된다. 퍼즐은 퍼즐 프로비저너에 의해 식별된 특정 토큰과 연관된다. 또한, 처리 회로 (1204) 는 인터페이스 (1206) 를 통해 하나 이상의 검증자로부터 퍼즐에 대한 요청을 수신하도록 구성된다. 요청은 처리 회로 (1204) 가 검색하는데 사용되는 토큰 식별자를 포함하고 식별된 토큰과 연관된 복수의 퍼즐을 전송한다. 헬퍼 (1202) 가 토큰과 대칭 키를 확립함에 있어서 검증자를 보조할 수도 있더라도, 각각의 토큰을 해석할 필요가 있는 다수의 퍼즐 및 처리 자원으로 인해, 대칭 키를 결정하는 것을 금지한다.
도 13 은 토큰을 인증함에 있어서 검증자를 보조하는 (네트워크) 헬퍼의 동작 방법을 예시한다. 헬퍼는 토큰 프로비저너로부터 토큰 식별자와 연관된 복수의 (인코딩된 또는 인코딩되지 않은) 퍼즐 (예를 들어, 수천개, 수십만개, 및/또는 수백만개) 을 수신할 수도 있다 (1302). 헬퍼는 복수의 퍼즐을 저장한다 (1304). 헬퍼는 토큰 식별자와 연관된 퍼즐에 대한 검증자로부터의 후속 요청을 수신할 수도 있다 (1306). 이러한 요청은 대칭 키 (즉, 검증자 키) 가 검증자와 토큰 사이에서 확립되는 토큰과 검증자 사이에서 초기 인증 단계 동안에 발생할 수도 있다. 헬퍼는 토큰 식별자와 연관된 저장된 복수의 퍼즐의 서브세트를 (의사랜덤하게) 선택한다 (1308). 그 다음에, 선택된 퍼즐의 서브세트가 검증자에게 전송된다 (1310). 일부 구현에서, 헬퍼가, 요청하는 검증자로부터 논스 (예를 들어, 문자 또는 숫자의 스트링 등) 를 수신할 수도 있고 그것은 검증자에게 전송된 복수의 퍼즐을 의사랜덤하게 선택하는데 사용된다. 또한, 헬퍼는 복수의 퍼즐을 선택함에 있어서 논스가 사용되었다는 증거 (예를 들어, 메시지 인증 코드 등) 를 제공할 수도 있다. 이는 헬퍼가 퍼즐의 선택을 간섭하는 것을 방지한다.
토큰의 인증을 수행함에 있어서 헬퍼가 검증자를 보조할 수도 있더라도, 검증자인 체할 수 없게 해야 한다. 헬퍼 그 자체가 악의가 있는 경우, 일부의 퍼즐을 해독하는데 시간을 소비할 수도 있고, 단지 그 퍼즐들을 검증자에게 항상 운송하는 것만을 보증할 수도 있다. 그러나, 헬퍼에 의한 이러한 조작은 검증자로 하여금 검증자에게 전송된 퍼즐을 선택하는데 사용되었다는 것을 헬퍼가 증명한 의사랜덤 논스를 전송하게 함으로써 방지될 수도 있다. 또한, 헬퍼가 토큰과 검증자 사이의 키 확립 페이즈 (phase) 상에서 도청할 수 있는 경우, 토큰과 검증자 사이에 확립된 대칭 키를 또한 확인할 수도 있다. 그러나, 키 확립 페이즈 동안에 통신을 성공적으로 차단하는 것은 가능하지 않다.
헬퍼가 초기 키 확립을 차단하지 않고 그 대신에 일부 후속 인증을 차단하면, 토큰과 검증자 사이에 성립된 검증자 키 (대칭 치) 를 결국 발견하기에 충분한 정보를 얻을 수도 있다. 그러나, 이는 헬퍼가 토큰과 연관된 모든 퍼즐을 해석하는 것을 수반할 수 있어, 퍼즐 비밀의 상이한 조합을 시도할 수 있고 (여기서 검증자 키는 정렬된 퍼즐 비밀의 서브세트에 기초함), 검증자 키를 발생시키는데 사용될 수도 있었던 (헬퍼에 적발되지 않은) 논스를 발견할 수 있다. 따라서, 더 많은 보안을 획득하기 위해서, 검증자는 더 큰 세트의 퍼즐을 헬퍼로부터 요청하고 그것의 더 큰 서브세트를 사용하여 토큰과 함께 그 검증자 키를 확립할 수 있다.
도 1, 도 2, 도 3, 도 4, 도 5, 도 6, 도 7, 도 8, 도 9, 도 10, 도 11, 도 12, 및/또는 도 13 에 예시된 하나 이상의 컴포넌트, 단계, 및/또는 함수가 단일의 컴포넌트, 단계, 또는 함수로 재배열 및/또는 조합될 수도 있고 또는 토큰과 검증자 사이의 인증에 영향을 미치지 않고 수개의 컴포넌트, 단계, 또는 함수로 통합될 수도 있다. 또한, 추가의 엘리먼트, 컴포넌트, 단계, 및/또는 함수는 본 발명으로부터 일탈하지 않고 부가될 수도 있다. 도 1, 도 3, 도 8, 도 10 및/또는 도 12 에 예시된 장치, 디바이스, 및/또는 컴포넌트는 도 2, 도 4, 도 5, 도 6, 도 7, 도 9, 도 11 및/또는 도 13 에서 설명한 하나 이상의 방법, 특징, 또는 단계를 수행하도록 구성될 수도 있다. 여기에 설명한 신규한 알고리즘은 효과적으로 소프트웨어에서 구현될 수도 있고 및/또는 하드웨어에 편입될 수도 있다.
여기에 개시된 실시형태들과 관련하여 설명된 다양한 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계가 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수도 있다는 것을 당업자는 더 이해할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트, 블록, 모듈, 회로, 및 단계를 그들의 기능성과 관련하여 일반적으로 상술하였다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지의 여부는 전체 시스템에 부과된 설계 제약 및 특정한 애플리케이션에 의존한다.
실시형태들의 설명은 청구항의 범위를 제한하려는 것이 아니라, 예시하려는 것이다. 그러한 것으로서, 본 교시는 다른 형태의 장치에 용이하게 적용할 수 있고, 다수의 변형, 수정 및 변경이 당업자에게는 명백할 것이다.

Claims (57)

  1. 토큰을 인증하기 위한 검증자의 동작 방법으로서,
    토큰으로부터 인증 요청 및 토큰 식별자를 수신하는 단계;
    네트워킹된 헬퍼로부터 상기 토큰에 대응하는 복수의 퍼즐을 획득하는 단계;
    상기 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 하나의 퍼즐을 해석하는 단계;
    상기 퍼즐 비밀에 기초하여 검증자 키를 발생시키는 단계;
    상기 검증자 키에 기초하여 챌린지 메시지를 발생시키는 단계; 및
    상기 퍼즐 식별자 및 상기 챌린지 메시지를 상기 토큰에 전송하는 단계를 포함하는, 검증자의 동작 방법.
  2. 제 1 항에 있어서,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 단계를 더 포함하고,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자의 동작 방법.
  3. 제 1 항에 있어서,
    상기 검증자 키를 저장하는 단계; 및
    상기 토큰과 상기 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 상기 검증자 키를 상기 토큰 식별자와 연관시키는 단계를 더 포함하는, 검증자의 동작 방법.
  4. 제 1 항에 있어서,
    상기 토큰과 연관된 상기 헬퍼에 대한 헬퍼 어드레스를 획득하는 단계를 더 포함하는, 검증자의 동작 방법.
  5. 제 1 항에 있어서,
    상기 퍼즐은 퍼즐 식별자 및 퍼즐 비밀을 포함하는 인코딩된 메시지인, 검증자의 동작 방법.
  6. 제 1 항에 있어서,
    복수의 수신된 퍼즐의 서브세트를 의사랜덤하게 선택하고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 복수의 수신된 퍼즐의 서브세트를 해석하는 단계; 및
    정렬된 세트의 상기 퍼즐 비밀에 대응하는 정렬된 세트의 상기 퍼즐 식별자를 상기 챌린지 메시지와 함께 상기 토큰에 전송하는 단계를 더 포함하고,
    상기 검증자 키는 상기 정렬된 세트의 상기 퍼즐 비밀에 또한 기초하는, 검증자의 동작 방법.
  7. 제 1 항에 있어서,
    로컬 카운터를 상기 토큰에 의해 유지되는 카운터와 동기시켜 상기 토큰과 상기 검증자 사이에서 인증이 수행될 때마다 트래킹 (tracking) 하는 단계를 더 포함하고,
    후속의 인증 챌린지 메시지는 현재의 카운터 값에 또한 기초하는, 검증자의 동작 방법.
  8. 제 7 항에 있어서,
    상기 토큰이 상기 검증자 키 및 상기 현재의 카운터 값을 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 단계를 더 포함하고,
    상기 토큰이 상기 검증자 키 및 상기 현재의 카운터 값을 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자의 동작 방법.
  9. 제 1 항에 있어서,
    타임스탬프를 발생시키기 위해 타이머를 유지하는 단계를 더 포함하고,
    후속의 인증 챌린지 메시지는 현재의 타임스탬프에 또한 기초하는, 검증자의 동작 방법.
  10. 제 9 항에 있어서,
    상기 토큰이 상기 검증자 키 및 상기 현재의 타임스탬프를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 단계를 더 포함하고,
    상기 토큰이 상기 검증자 키 및 상기 현재의 타임스탬프를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자의 동작 방법.
  11. 제 1 항에 있어서,
    상기 선택된 퍼즐을 해석하는 단계는 상기 퍼즐을 디코딩할 키를 발견하기 위해 무작위 공격 (brute force attack) 을 수행하는 단계를 포함하는, 검증자의 동작 방법.
  12. 제 1 항에 있어서,
    상기 챌린지 메시지는 메시지 인증 코드인, 검증자의 동작 방법.
  13. 제 1 항에 있어서,
    의사랜덤 논스 (nonce) 를 발생시키는 단계; 및
    상기 토큰에 대응하는 다수의 퍼즐 중에서 상기 복수의 퍼즐을 획득하는데 사용되는 상기 헬퍼에 상기 의사랜덤 논스를 전송하는 단계를 더 포함하는, 검증자의 동작 방법.
  14. 토큰을 인증하기 위한 검증자 디바이스로서,
    네트워크에 대한, 고 대역폭을 갖는 제 1 통신 인터페이스;
    토큰과 통신하기 위한, 저 대역폭을 갖는 제 2 통신 인터페이스; 및
    상기 제 1 및 제 2 통신 인터페이스에 연결된 처리 회로를 포함하고,
    상기 처리 회로는,
    상기 제 2 통신 인터페이스를 통해 상기 토큰으로부터 인증 요청과 토큰 식별자를 수신하고;
    상기 제 1 통신 인터페이스를 통해 헬퍼로부터 상기 토큰에 대응하는 복수의 퍼즐을 획득하고;
    상기 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 하나의 퍼즐을 해석하고;
    상기 퍼즐 비밀에 기초하여 검증자 키를 발생시키고;
    상기 검증자 키에 기초하여 챌린지 메시지를 발생시키며;
    상기 제 2 통신 인터페이스를 통해 상기 퍼즐 식별자 및 상기 챌린지 메시지를 상기 토큰에 전송하도록 구성되는, 검증자 디바이스.
  15. 제 14 항에 있어서,
    상기 처리 회로는,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하도록 더 구성되고,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자 디바이스가 상기 토큰을 인증하는, 검증자 디바이스.
  16. 제 14 항에 있어서,
    상기 처리 회로에 연결되어 상기 검증자 키를 저장하는 저장 디바이스를 더 포함하고,
    상기 처리 회로는 상기 토큰과 상기 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 상기 검증자 키를 상기 토큰 식별자와 연관시키도록 더 구성되는, 검증자 디바이스.
  17. 제 14 항에 있어서,
    상기 처리 회로는 상기 토큰과 연관된 상기 헬퍼에 대한 헬퍼 어드레스를 획득하도록 더 구성되는, 검증자 디바이스.
  18. 제 14 항에 있어서,
    상기 처리 회로는,
    복수의 수신된 퍼즐의 서브세트를 의사랜덤하게 선택하고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 복수의 수신된 퍼즐의 서브세트를 해석하고;
    정렬된 세트의 상기 퍼즐 비밀에 대응하는 정렬된 세트의 상기 퍼즐 식별자를 상기 챌린지 메시지와 함께 상기 토큰에 전송하도록 더 구성되고,
    상기 검증자 키는 상기 정렬된 세트의 상기 퍼즐 비밀에 또한 기초하는, 검증자 디바이스.
  19. 제 14 항에 있어서,
    상기 처리 회로는,
    로컬 카운터를 상기 토큰에 의해 유지되는 카운터와 동기시켜 상기 토큰과 상기 검증자 사이에서 인증이 수행될 때마다 트래킹하고;
    상기 토큰이 상기 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하도록 더 구성되고,
    후속의 인증 챌린지 메시지는 상기 현재의 카운터 값에 또한 기초하고;
    상기 토큰이 상기 검증자 키 및 상기 현재의 카운터 값을 독립적으로 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자 디바이스.
  20. 제 14 항에 있어서,
    상기 처리 회로는,
    타임스탬프를 발생시키기 위해 타이머를 유지하고;
    상기 토큰이 상기 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하도록 더 구성되고,
    후속의 인증 챌린지 메시지는 상기 현재의 타임스탬프에 또한 기초하고;
    상기 토큰이 독립적으로 상기 검증자 키 및 상기 현재의 타임스탬프를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자 디바이스.
  21. 토큰을 인증하기 위한 검증자 디바이스로서,
    토큰으로부터 인증 요청 및 토큰 식별자를 수신하는 수단;
    네트워킹된 헬퍼로부터 상기 토큰에 대응하는 복수의 퍼즐을 획득하는 수단;
    상기 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 하나의 퍼즐을 해석하는 수단;
    상기 퍼즐 비밀에 기초하여 검증자 키를 발생시키는 수단;
    상기 검증자 키에 기초하여 챌린지 메시지를 발생시키는 수단; 및
    상기 퍼즐 식별자 및 상기 챌린지 메시지를 상기 토큰에 전송하는 수단을 포함하는, 검증자 디바이스.
  22. 제 21 항에 있어서,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 수단을 더 포함하고,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자 디바이스.
  23. 제 21 항에 있어서,
    상기 검증자 키를 저장하는 수단; 및
    상기 토큰과 상기 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 상기 검증자 키를 상기 토큰 식별자와 연관시키는 수단을 더 포함하는, 검증자 디바이스.
  24. 제 21 항에 있어서,
    상기 토큰과 연관된 상기 헬퍼에 대한 헬퍼 어드레스를 획득하는 수단을 더 포함하는, 검증자 디바이스.
  25. 제 21 항에 있어서,
    복수의 수신된 퍼즐의 서브세트를 의사랜덤하게 선택하고, 복수의 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 복수의 수신된 퍼즐의 서브세트를 해석하는 수단; 및
    정렬된 세트의 상기 퍼즐 비밀에 대응하는 정렬된 세트의 상기 퍼즐 식별자를 상기 챌린지 메시지와 함께 상기 토큰에 전송하는 수단을 더 포함하고,
    상기 검증자 키는 상기 정렬된 세트의 상기 퍼즐 비밀에 또한 기초하는, 검증자 디바이스.
  26. 제 21 항에 있어서,
    로컬 카운터를 상기 토큰에 의해 유지되는 카운터와 동기시켜 상기 토큰과 상기 검증자 사이에서 인증이 수행될 때마다 트래킹하는 수단; 및
    상기 토큰이 상기 검증자 키 및 현재의 카운터 값을 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 수단을 더 포함하고,
    후속의 인증 챌린지 메시지는 상기 현재의 카운터 값에 또한 기초하고,
    상기 토큰이 상기 검증자 키 및 상기 현재의 카운터 값을 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자 디바이스.
  27. 제 21 항에 있어서,
    타임스탬프를 발생시키기 위해 타이머를 유지하는 수단; 및
    상기 토큰이 상기 검증자 키 및 현재의 타임스탬프를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하는 수단을 더 포함하고,
    후속의 인증 챌린지 메시지는 상기 현재의 타임스탬프에 또한 기초하고,
    상기 토큰이 상기 검증자 키 및 상기 현재의 타임스탬프를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 검증자 디바이스.
  28. 처리 회로를 포함하고,
    상기 처리 회로는,
    제 1 통신 인터페이스를 통해 토큰으로부터 인증 요청 및 토큰 식별자를 수신하고;
    제 2 통신 인터페이스를 통해 헬퍼로부터 상기 토큰에 대응하는 복수의 퍼즐을 획득하고;
    상기 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 하나의 퍼즐을 해석하고;
    상기 퍼즐 비밀에 기초하여 검증자 키를 발생시키고;
    상기 검증자 키에 기초하여 챌린지 메시지를 발생시키며;
    상기 제 1 통신 인터페이스를 통해 상기 퍼즐 식별자 및 상기 챌린지 메시지를 상기 토큰에 전송하도록 구성되는, 처리 디바이스.
  29. 제 28 항에 있어서,
    상기 처리 회로에 연결되어 상기 검증자 키를 저장하는 저장 디바이스를 더 포함하고,
    상기 처리 회로는 상기 토큰과 상기 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 상기 검증자 키를 상기 토큰 식별자와 연관시키도록 더 구성되는, 처리 디바이스.
  30. 제 28 항에 있어서,
    상기 처리 회로는 상기 토큰과 연관된 상기 헬퍼에 대한 헬퍼 어드레스를 획득하도록 더 구성되는, 처리 디바이스.
  31. 검증자에 대하여 토큰을 인증하기 위한 하나 이상의 명령을 갖는 컴퓨터-판독가능한 매체로서,
    상기 하나 이상의 명령은,
    프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    토큰으로부터 인증 요청 및 토큰 식별자를 수신하게 하고;
    네트워킹된 헬퍼로부터 상기 토큰에 대응하는 복수의 퍼즐을 획득하게 하고;
    상기 복수의 퍼즐 중 하나의 퍼즐을 의사랜덤하게 선택하고, 퍼즐 비밀 및 대응하는 퍼즐 식별자를 획득하기 위해 상기 하나의 퍼즐을 해석하게 하고;
    상기 퍼즐 비밀에 기초하여 검증자 키를 발생시키게 하고;
    상기 검증자 키에 기초하여 챌린지 메시지를 발생시키게 하며;
    상기 퍼즐 식별자 및 상기 챌린지 메시지를 상기 토큰에 전송하게 하는, 컴퓨터-판독가능한 매체.
  32. 제 31 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 또한,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 증명하는 상기 토큰으로부터의 응답 메시지를 수신하게 하는 하나 이상의 명령을 포함하며,
    상기 토큰이 상기 검증자 키를 알고 있다는 것을 상기 응답 메시지가 성공적으로 증명하는 경우 상기 검증자가 상기 토큰을 인증하는, 컴퓨터-판독가능한 매체.
  33. 제 31 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 또한,
    상기 검증자 키를 저장하게 하고;
    상기 토큰과 상기 검증자 사이의 후속 인증에서 대칭 키로서 사용하기 위해 상기 검증자 키를 상기 토큰 식별자와 연관시키게 하는 하나 이상의 명령을 포함하는, 컴퓨터-판독가능한 매체.
  34. 검증자에 대하여 토큰을 인증하기 위한 상기 토큰의 동작 방법으로서,
    비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 토큰에 프로비저닝 (provisioning) 하는 단계;
    상기 토큰 식별자를 검증자에게 제공함으로써 상기 토큰의 인증을 개시하는 단계;
    제 1 검증자 키에 기초하여 하나 이상의 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 상기 검증자로부터 수신하는 단계;
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 하나 이상의 퍼즐 식별자, 및 상기 비밀 키에 기초하여 하나 이상의 퍼즐 비밀을 독립적으로 획득하는 단계;
    상기 하나 이상의 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키는 단계; 및
    상기 제 1 검증자 키 및 상기 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 상기 수신된 메시지 인증 코드를 검증하는 단계를 포함하고,
    상기 제 1 검증자 키는 상기 하나 이상의 퍼즐 식별자에 의해 식별된 하나 이상의 퍼즐과 연관된 상기 하나 이상의 퍼즐 비밀의 함수인, 토큰의 동작 방법.
  35. 제 34 항에 있어서,
    상기 제 2 검증자 키를 저장하고, 상기 제 1 및 제 2 검증자 키가 동일한 경우 상기 제 2 검증자 키를 상기 검증자와 연관시키는 단계를 더 포함하는, 토큰의 동작 방법.
  36. 제 34 항에 있어서,
    상기 토큰이 상기 제 1 검증자 키를 알고 있다는 것을 나타내는 상기 제 2 검증자 키에 기초하여 상기 검증자에 대하여 응답 메시지를 발생시키는 단계를 더 포함하는, 토큰의 동작 방법.
  37. 제 34 항에 있어서,
    상기 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 상기 토큰으로부터 상기 검증자로 제공하는 단계를 더 포함하는, 토큰의 동작 방법.
  38. 제 34 항에 있어서,
    복수의 정렬된 퍼즐 식별자를 상기 검증자로부터 수신하는 단계; 및
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 퍼즐 식별자, 및 상기 비밀 키에 기초하여 복수의 정렬된 퍼즐 비밀을 획득하는 단계를 더 포함하고,
    상기 제 1 검증자 키는 상기 복수의 정렬된 퍼즐 식별자와 연관된, 대응하는 복수의 정렬된 퍼즐 비밀의 함수이고,
    상기 제 1 및 제 2 검증자 키는 상기 복수의 정렬된 퍼즐 비밀에 또한 기초하는, 토큰의 동작 방법.
  39. 제 34 항에 있어서,
    로컬 카운터를 상기 검증자에 의해 유지되는 카운터와 동기시켜 상기 토큰과 상기 검증자 사이에서 인증이 수행될 때마다 트래킹하는 단계를 더 포함하고,
    후속의 수신된 메시지 인증 코드는 현재의 카운터 값에 또한 기초하는, 토큰의 동작 방법.
  40. 제 39 항에 있어서,
    상기 토큰이 상기 검증자 키 및 상기 현재의 카운터 값을 알고 있다는 것을 증명하는 상기 검증자에게 응답 메시지를 전송하는 단계를 더 포함하는, 토큰의 동작 방법.
  41. 제 34 항에 있어서,
    타임스탬프를 발생시키도록 타이머를 유지하는 단계를 더 포함하고,
    후속의 수신된 메시지 인증 코드는 현재의 타임스탬프에 또한 기초하는, 토큰의 동작 방법.
  42. 제 41 항에 있어서,
    상기 토큰이 상기 검증자 키 및 상기 현재의 타임스탬프를 알고 있다는 것을 증명하는 상기 검증자에게 응답 메시지를 전송하는 단계를 더 포함하는, 토큰의 동작 방법.
  43. 제 34 항에 있어서,
    상이한 검증자와 복수의 보안 검증자 키를 확립하는 단계; 및
    상기 검증자 키를 저장하고, 상기 토큰과 상기 상이한 검증자 사이의 대칭 키 인증으로서 사용하기 위해 상기 복수의 보안 검증자 키 각각을, 대응하는 검증자와 연관시키는 단계를 더 포함하는, 토큰의 동작 방법.
  44. 검증자와 통신하기 위한, 저 대역폭을 갖는 제 1 통신 인터페이스;
    상기 제 1 통신 인터페이스와 연결된 처리 회로를 포함하고,
    상기 처리 회로는,
    비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 수신하고;
    상기 토큰 식별자를 상기 검증자에게 제공함으로써 상기 토큰의 인증을 개시하고;
    제 1 식별자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 상기 검증자로부터 수신하고;
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 퍼즐 식별자, 및 상기 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하고;
    상기 제 1 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키며;
    상기 제 1 검증자 키 및 상기 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 상기 수신된 메시지 인증 코드를 검증하도록 구성되고,
    상기 제 1 검증자 키는 상기 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 상기 제 1 퍼즐 비밀의 함수인, 토큰.
  45. 제 44 항에 있어서,
    상기 처리 회로에 접속되고, 상기 제 2 검증자 키를 저장하도록 구성된 저장 디바이스를 더 포함하고,
    상기 처리 회로는 상기 제 1 및 제 2 검증자 키가 동일한 경우 상기 제 2 검증자 키를 상기 검증자와 연관시키도록 구성되는, 토큰.
  46. 제 44 항에 있어서,
    상기 처리 회로는,
    상이한 검증자와 복수의 보안 검증자 키를 확립시키고;
    상기 검증자 키를 저장하고, 상기 토큰과 상기 상이한 검증자 사이의 대칭 키 인증으로서 사용하기 위해 상기 검증자 키 각각을, 대응하는 검증자와 연관시키도록 더 구성되는, 토큰.
  47. 제 44 항에 있어서,
    상기 처리 회로는,
    상기 토큰이 상기 제 1 검증자 키를 알고 있다는 것을 나타내는 상기 제 2 검증자 키에 기초하여 상기 검증자에 대하여 응답 메시지를 발생시키도록 더 구성되는, 토큰.
  48. 제 44 항에 있어서,
    상기 처리 회로는,
    상기 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 상기 토큰으로부터 상기 검증자로 제공하도록 더 구성되는, 토큰.
  49. 검증자로 인증하는 토큰 디바이스로서,
    비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 토큰에 프로비저닝하는 수단;
    상기 토큰 식별자를 상기 검증자에게 제공함으로써 상기 토큰의 인증을 개시하는 수단;
    제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 상기 검증자로부터 수신하는 수단;
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 퍼즐 식별자, 및 상기 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하는 수단;
    상기 제 1 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키는 수단; 및
    상기 제 1 검증자 키 및 상기 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 상기 수신된 메시지 인증 코드를 검증하는 수단을 포함하고,
    상기 제 1 검증자 키는 상기 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 상기 제 1 퍼즐 비밀의 함수인, 토큰 디바이스.
  50. 제 49 항에 있어서,
    상기 제 2 검증자 키를 저장하고, 상기 제 1 및 제 2 검증자 키가 동일한 경우 상기 제 2 검증자 키를 상기 검증자와 연관시키는 수단을 더 포함하는, 토큰 디바이스.
  51. 제 49 항에 있어서,
    상기 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 상기 토큰으로부터 상기 검증자로 제공하는 수단을 더 포함하는, 토큰 디바이스.
  52. 처리 회로를 포함하고,
    상기 처리 회로는,
    비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 수신하고;
    상기 토큰 식별자를 검증자에게 제공함으로써 상기 토큰의 인증을 개시하고;
    제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 상기 검증자로부터 수신하는 단계;
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 퍼즐 식별자, 및 상기 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하고;
    상기 제 1 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키며;
    상기 제 1 검증자 키 및 상기 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 상기 수신된 메시지 인증 코드를 검증하도록 구성되고,
    상기 제 1 검증자 키는 상기 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 상기 제 1 퍼즐 비밀의 함수인, 처리 디바이스.
  53. 제 52 항에 있어서,
    상기 처리 회로는,
    상기 제 2 검증자 키를 저장하고, 상기 제 1 및 제 2 검증자 키가 동일한 경우 상기 제 2 검증자 키를 상기 검증자와 연관시키도록 더 구성되는, 처리 디바이스.
  54. 제 52 항에 있어서,
    상기 처리 회로는,
    상기 토큰이 상기 제 1 검증자 키를 알고 있다는 것을 나타내는 상기 제 2 검증자 키에 기초하여 상기 검증자에 대하여 응답 메시지를 발생시키도록 더 구성되는, 처리 디바이스.
  55. 검증자에 대하여 토큰을 인증하기 위한 하나 이상의 명령을 갖는 컴퓨터-판독가능한 매체로서,
    상기 하나 이상의 명령은,
    프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    비밀 키, 토큰 식별자, 및 하나 이상의 퍼즐 발생 알고리즘을 토큰에 프로비저닝하도록 하고;
    상기 토큰 식별자를 상기 검증자에게 제공함으로써 상기 토큰의 인증을 개시하도록 하고;
    제 1 검증자 키에 기초하여 퍼즐 식별자 및 메시지 인증 코드를 포함하는 챌린지 메시지를 상기 검증자로부터 수신하도록 하고;
    상기 하나 이상의 퍼즐 발생 알고리즘, 상기 수신된 퍼즐 식별자, 및 상기 비밀 키에 기초하여 제 1 퍼즐 비밀을 독립적으로 획득하도록 하고;
    상기 제 1 퍼즐 비밀에 기초하여 제 2 검증자 키를 발생시키도록 하며;
    상기 제 1 검증자 키 및 상기 제 2 검증자 키가 동일한지의 여부를 결정하기 위해 상기 수신된 메시지 인증 코드를 검증하도록 하고,
    상기 제 1 검증자 키는 상기 퍼즐 식별자에 의해 식별된 퍼즐과 연관된 상기 제 1 퍼즐 비밀의 함수인, 컴퓨터-판독가능한 매체.
  56. 제 55 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 또한,
    상기 제 2 검증자 키를 저장하고, 상기 제 1 및 제 2 검증자 키가 동일한 경우 상기 제 2 검증자 키를 상기 검증자와 연관시키도록 하는 하나 이상의 명령을 포함하는, 컴퓨터-판독가능한 매체.
  57. 제 55 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 또한,
    상기 토큰과 연관된 복수의 퍼즐을 저장하는 헬퍼에 대한 헬퍼 어드레스를 상기 토큰으로부터 상기 검증자로 제공하도록 하는 하나 이상의 명령을 포함하는, 컴퓨터-판독가능한 매체.
KR1020107027652A 2008-05-09 2009-05-06 토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼 KR101237632B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/118,593 2008-05-09
US12/118,593 US8793497B2 (en) 2008-05-09 2008-05-09 Puzzle-based authentication between a token and verifiers
PCT/US2009/043040 WO2009137621A1 (en) 2008-05-09 2009-05-06 Network helper for authentication between a token and verifiers

Publications (2)

Publication Number Publication Date
KR20110009222A KR20110009222A (ko) 2011-01-27
KR101237632B1 true KR101237632B1 (ko) 2013-02-27

Family

ID=40886762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107027652A KR101237632B1 (ko) 2008-05-09 2009-05-06 토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼

Country Status (8)

Country Link
US (1) US8793497B2 (ko)
EP (1) EP2289220B1 (ko)
JP (1) JP5345675B2 (ko)
KR (1) KR101237632B1 (ko)
CN (1) CN102017578B (ko)
AT (1) ATE542351T1 (ko)
TW (1) TW200952440A (ko)
WO (1) WO2009137621A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020199B2 (en) * 2001-02-14 2011-09-13 5th Fleet, L.L.C. Single sign-on system, method, and access device
EP2200253A1 (en) * 2008-12-19 2010-06-23 Gemalto SA Method of managing sensitive data in an electronic token
US8443431B2 (en) * 2009-10-30 2013-05-14 Alcatel Lucent Authenticator relocation method for WiMAX system
JP5585188B2 (ja) * 2010-04-30 2014-09-10 ソニー株式会社 バッテリモジュール、電動移動体、及びバッテリモジュールの放電制御方法
IL213662A0 (en) * 2011-06-20 2011-11-30 Eliphaz Hibshoosh Key generation using multiple sets of secret shares
GB201204202D0 (en) 2012-03-09 2012-04-25 Distributed Man Systems Ltd A scalable authentication system
US8826418B2 (en) * 2012-10-17 2014-09-02 International Business Machines Corporation Trust retention
CN105765595B (zh) * 2013-10-04 2020-07-14 迪科特公司 用于验证标识令牌的系统和方法
EP2924953B1 (en) * 2014-03-25 2017-03-22 Thorsten Sprenger Method and system for encrypted data synchronization for secure data management
JP6454917B2 (ja) * 2014-06-05 2019-01-23 Kddi株式会社 通信ネットワークシステム及びメッセージ検査方法
JP6199335B2 (ja) * 2014-06-05 2017-09-20 Kddi株式会社 通信ネットワークシステム及びメッセージ検査方法
JP6190404B2 (ja) * 2014-06-05 2017-08-30 Kddi株式会社 受信ノード、メッセージ受信方法およびコンピュータプログラム
GB2527285B (en) * 2014-06-11 2021-05-26 Advanced Risc Mach Ltd Resource access control using a validation token
JP6459014B2 (ja) 2015-03-31 2019-01-30 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd ジオフェンシング装置
EP3198581B1 (en) * 2015-03-31 2019-12-25 SZ DJI Technology Co., Ltd. Systems and methods for uav mutual authentication
JP6423521B2 (ja) 2015-03-31 2018-11-14 エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd 無人航空機を制御するシステム
US11308483B2 (en) 2015-08-25 2022-04-19 Paypal, Inc. Token service provider for electronic/mobile commerce transactions
SG10201908563TA (en) * 2015-08-25 2019-11-28 Paypal Inc Token service provider for electronic/mobile commerce transactions
CA3013180A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Blockchain-based exchange with tokenisation
GB2561729A (en) * 2016-02-23 2018-10-24 Nchain Holdings Ltd Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
EA201891830A1 (ru) 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Система и способ управления действиями, связанными с активами, посредством блокчейна
AU2017223133B2 (en) 2016-02-23 2022-09-08 nChain Holdings Limited Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys
CN109314636B (zh) 2016-02-23 2022-01-11 区块链控股有限公司 用于从区块链中安全提取数据的密码方法和系统
WO2017145019A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
EP3257002B1 (en) 2016-02-23 2020-03-11 Nchain Holdings Limited Agent-based turing complete transactions integrating feedback within a blockchain system
KR102437619B1 (ko) * 2016-04-01 2022-08-29 삼성전자주식회사 보안 키를 생성하기 위한 장치 및 방법
US11222136B2 (en) * 2016-07-25 2022-01-11 Robert Bosch Gmbh Method and system for dynamic searchable symmetric encryption with forward privacy and delegated verifiability
US11151547B2 (en) 2017-09-20 2021-10-19 Paypal, Inc. Using a consumer digital wallet as a payment method in a merchant digital wallet
KR102033226B1 (ko) * 2017-12-11 2019-10-16 건국대학교 산학협력단 홈 IoT 환경에서의 보안성 제공 장치 및 방법
US11075906B2 (en) * 2017-12-28 2021-07-27 Shoppertrak Rct Corporation Method and system for securing communications between a lead device and a secondary device
CN109315837A (zh) * 2018-09-21 2019-02-12 深圳市合元科技有限公司 一种电子烟控制方法及电子烟
EP3716570B1 (en) 2019-03-29 2022-07-27 Mitsubishi Electric R&D Centre Europe B.V. Computational puzzles against dos attacks
JP2020167509A (ja) * 2019-03-29 2020-10-08 コベルコ建機株式会社 情報処理システム、情報処理方法、およびプログラム
US11374917B2 (en) 2020-01-24 2022-06-28 Visa International Service Association Prevention of token authentication replay attacks system and method
EP3897017B1 (en) * 2020-04-17 2023-11-01 Secure Thingz Limited A provisioning control apparatus, system and method
CN112822016B (zh) * 2021-01-25 2023-04-28 厦门市易联众易惠科技有限公司 在区块链上进行数据授权的方法及区块链网络
CN117616718A (zh) * 2021-07-16 2024-02-27 高通股份有限公司 无线通信中的密钥验证
US11962703B2 (en) * 2022-02-08 2024-04-16 International Business Machines Corporation Cooperative session orchestration

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217269A1 (en) 2002-05-15 2003-11-20 Alexander Gantman System and method for managing sonic token verifiers
US20060046690A1 (en) 2004-09-02 2006-03-02 Rose Gregory G Pseudo-secret key generation in a communications system
US20070255960A1 (en) 2001-10-26 2007-11-01 Authenex, Inc. System and method for validating a network session

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6944765B1 (en) * 1999-12-21 2005-09-13 Qualcomm, Inc. Method of authentication anonymous users while reducing potential for “middleman” fraud
JP3534041B2 (ja) 2000-06-07 2004-06-07 日本電気株式会社 オフライン端末認証システム及びそれに用いるオフライン端末認証方法
GB2382281B (en) 2001-11-06 2005-03-30 British Telecomm Authentication of network users
US7395311B2 (en) * 2003-01-10 2008-07-01 Microsoft Corporation Performing generic challenges in a distributed system
US8321955B2 (en) * 2003-08-26 2012-11-27 Wu-Chang Feng Systems and methods for protecting against denial of service attacks
GB0324791D0 (en) * 2003-10-24 2003-11-26 Astrazeneca Ab Chemical process
JP5064003B2 (ja) 2005-12-20 2012-10-31 パナソニック株式会社 認証システム、及び認証装置
CN101513007B (zh) 2006-10-06 2012-01-25 Nec欧洲有限公司 在网络中挑选聚集节点的方法
US7937586B2 (en) * 2007-06-29 2011-05-03 Microsoft Corporation Defending against denial of service attacks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070255960A1 (en) 2001-10-26 2007-11-01 Authenex, Inc. System and method for validating a network session
US20030217269A1 (en) 2002-05-15 2003-11-20 Alexander Gantman System and method for managing sonic token verifiers
US20060046690A1 (en) 2004-09-02 2006-03-02 Rose Gregory G Pseudo-secret key generation in a communications system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Brent Waters et al., "New Client Puzzle Outsourcing Techniques for DoS Resistance," Proceedings of the 11th ACM conference on Computer and communications security, pp. 246-256. *

Also Published As

Publication number Publication date
TW200952440A (en) 2009-12-16
JP5345675B2 (ja) 2013-11-20
CN102017578A (zh) 2011-04-13
CN102017578B (zh) 2014-12-10
US8793497B2 (en) 2014-07-29
JP2011521548A (ja) 2011-07-21
KR20110009222A (ko) 2011-01-27
ATE542351T1 (de) 2012-02-15
WO2009137621A1 (en) 2009-11-12
EP2289220B1 (en) 2012-01-18
US20090282243A1 (en) 2009-11-12
EP2289220A1 (en) 2011-03-02

Similar Documents

Publication Publication Date Title
KR101237632B1 (ko) 토큰과 검증자 사이의 인증을 위한 네크워크 헬퍼
US8595501B2 (en) Network helper for authentication between a token and verifiers
US7607012B2 (en) Method for securing a communication
JP4617763B2 (ja) 機器認証システム、機器認証サーバ、端末機器、機器認証方法、および機器認証プログラム
US8621210B2 (en) Ad-hoc trust establishment using visual verification
US8719952B1 (en) Systems and methods using passwords for secure storage of private keys on mobile devices
US6993652B2 (en) Method and system for providing client privacy when requesting content from a public server
EP1610202B1 (en) Using a portable security token to facilitate public key certification for devices in a network
US8099607B2 (en) Asymmetric crypto-graphy with rolling key security
US8601267B2 (en) Establishing a secured communication session
CN110020524B (zh) 一种基于智能卡的双向认证方法
WO2006119184A2 (en) Protecting one-time-passwords against man-in-the-middle attacks
JP2005236850A (ja) データ通信装置および方法、並びにプログラム
KR100842267B1 (ko) 다중 인증 수단을 가지는 시스템의 통합 사용자 인증 서버,클라이언트 및 방법
TW200803392A (en) Method, device, server arrangement, system and computer program products for securely storing data in a portable device
EP3185504A1 (en) Security management system for securing a communication between a remote server and an electronic device
Chatterjee et al. A novel multi-server authentication scheme for e-commerce applications using smart card
JP2004274134A (ja) 通信方法並びにこの通信方法を用いた通信システム、サーバおよびクライアント
Chen et al. SSL/TLS session-aware user authentication using a gaa bootstrapped key
US20240171380A1 (en) Methods and devices for authentication
Bala et al. Analyzing Security of Single Sign on System through Advanced Encryption Standard
Kshemkalyani et al. Authentication in Distributed System

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 7