KR102015201B1 - 보안 접속 및 관련 서비스를 위한 효율적인 개시 - Google Patents

보안 접속 및 관련 서비스를 위한 효율적인 개시 Download PDF

Info

Publication number
KR102015201B1
KR102015201B1 KR1020177013996A KR20177013996A KR102015201B1 KR 102015201 B1 KR102015201 B1 KR 102015201B1 KR 1020177013996 A KR1020177013996 A KR 1020177013996A KR 20177013996 A KR20177013996 A KR 20177013996A KR 102015201 B1 KR102015201 B1 KR 102015201B1
Authority
KR
South Korea
Prior art keywords
message
key
server machine
token
client machine
Prior art date
Application number
KR1020177013996A
Other languages
English (en)
Other versions
KR20170076742A (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 KR20170076742A publication Critical patent/KR20170076742A/ko
Application granted granted Critical
Publication of KR102015201B1 publication Critical patent/KR102015201B1/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/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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
    • 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/321Cryptographic 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 a third party or a trusted authority
    • H04L9/3213Cryptographic 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 a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • 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/3236Cryptographic 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 cryptographic hash functions
    • H04L9/3242Cryptographic 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 cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/3247Cryptographic 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 digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/069Authentication using certificates or pre-shared keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security
    • H04W12/082Access security using revocation of authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0846Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y04INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
    • Y04SSYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
    • Y04S40/00Systems for electrical power generation, transmission, distribution or end-user application management characterised by the use of communication or information technologies, or communication or information technology specific aspects supporting them
    • Y04S40/20Information technology specific aspects, e.g. CAD, simulation, modelling, system security

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)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 한 실시예는 보안 접속 및 관련 서비스에 대한 효율적인 개시를 위한 접근법을 포함한다. 클라이언트 머신은, 애플리케이션 프로그램을 통해, 보안 메시지를 서버 머신에 전송하라는 요청을 수신한다. 클라이언트 머신은, 사용자 인증 데이터, 엔티티 인증 데이터, 키 교환 데이터, 및 암호화된 메시지 데이터 중 적어도 2개를 포함하는 제1 메시지를 포함하는 복수의 메시지를 서버 머신에 전송한다. 클라이언트 머신은, 서버 머신과 교환된 메시지들을 암호화하고 인증하기 위한 제1 세트의 세션 키를 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 서버 머신으로부터 수신한다.

Description

보안 접속 및 관련 서비스를 위한 효율적인 개시{EFFICIENT START-UP FOR SECURED CONNECTIONS AND RELATED SERVICES}
관련 출원의 상호참조
본 출원은, 2014년 10월 24일 출원된 발명의 명칭이 "MESSAGE SECURITY LAYER FOR COMMUNICATIONS OVER A NETWORK"인 미국 가출원 제62/068,504호와, 2015년 10월 22일 발명의 명칭 "EFFICIENT START-UP FOR SECURED CONNECTIONS AND RELATED SERVICES"인 미국 특허 출원 제14/920,641호의 우선권을 주장한다. 이들 관련 출원들의 주제는 참조로 본 명세서에 포함된다.
발명의 분야
본 발명의 실시예는 대체로 컴퓨터 보안에 관한 것으로, 더 구체적으로, 보안 접속 및 관련 서비스에 대한 효율적인 개시(start-up)에 관한 것이다.
컴퓨터 네트워크 내의 머신들은, 통상적으로, 제3자가 교환된 메시지를 읽거나 무단변경하고, 신분 절도, 산업 스파이, 서비스 도용 또는 훼손 등의 불법적이거나 바람직하지 않은 활동에 잠재적으로 개입하는 것을 방지하기 위한 노력으로서, 이들 머신들이 서로 통신할 때 보안 메시지를 교환하는 다양한 기술을 채용한다. 컴퓨터 통신을 보안유지하기 위한 종래의 기술은 대개, 소정의 수신 메시지가 컴퓨터 네트워크 내의 적절한 머신으로부터 발생했고, 그 소정의 수신 메시지와 연관된 내용이 컴퓨터 네트워크 내의 적절한 머신에 의해 전송된 후에 무단변경되거나 방치되지 않도록 보장하는 메커니즘을 포함한다.
보안 메시지를 교환하기 위한 예시적인 접근법은 트랜스포트 계층 보안(TLS; Transport Layer Security) 및 선행자 보안 소켓 계층(SSL; Secure Sockets Layer)을 포함한다. TSL 및 SSL은, 웹 브라우징, 전자 메일, 인터넷 팩스, 인스턴트 메시징, 및 VoIP(Voice-over-IP)를 비롯한 다양한 목적을 위해 컴퓨터 네트워크에서 통신 보안을 제공하도록 설계된 암호 프로토콜(cryptographic protocol)이다. 일반적으로, TLS 및 SSL은, 다양한 온라인 서비스를 제공하는 서버 머신들과 이러한 온라인 서비스에 액세스하는 클라이언트 머신들 사이의 모든 통신을 보안유지하는데 이용될 수 있다. TLS 및 SSL 프로토콜은, 2개 이상의 상이한 머신들에서 실행되는 2개 이상의 통신 컴퓨터 애플리케이션들 사이의 메시지 교환 동안에 사생활보호 및 데이터 무결성을 제공한다.
이러한 한 기술은, 컴퓨터 네트워크 내의 하나의 머신으로부터 또 다른 머신으로 메시지를 전송하기 전에 메시지를 암호화하는 것을 포함한다. 전형적인 구현에서, 발신 머신은 컴퓨터 네트워크 내의 다른 컴퓨팅 머신에 보안 "인증서"를 전송한다. 보안 인증서는, 인증서를 전송하는 시스템이 메시지를 암호해독할 수 있도록 메시지를 암호화해야하는 방식을 설명하는 정보를 포함한다.
클라이언트와 서버 사이에 보안 통신을 확립하기 위한 전형적인 접근법은, 클라이언트가 보안 세션 요청을 서버에 발행하는 것으로 시작한다. 서버는, 서버의 공개 키를 포함하는 인증서를 클라이언트에 전송함으로써 응답한다. 그 다음, 클라이언트는 인증 기관과 연관된 하나 이상의 인증 서버에 인증 요청을 발행함으로써 인증서의 진위성을 확인한다. 인증 서버들 중 하나 이상은, 인증서가 유효한지 또는 폐기되었거나 기타의 방식으로 훼손되었는지를 나타내는 인증 응답을 클라이언트에 전송한다. 클라이언트가, 인증 응답으로부터, 인증서가 유효하다고 결정한다면, 클라이언트는 키를 생성하고 인증서를 이용하여 키를 암호화하고 암호화된 키를 서버에 전송한다. 그러면, 클라이언트와 서버는, 데이터 메시지가 키로 암호화되어 있는 페이로드 데이터라고도 하는 하나 이상의 데이터 메시지를 안전하게 교환할 수 있다.
상기 접근법에 대한 하나의 단점은, 임의의 실제 데이터 메시지가 안전하게 교환되기 전에 통상적으로 클라이언트, 서버, 및 인증 서버 사이에서 많은 수의 메시지가 전송된다는 것이다. 그 결과, 클라이언트와 서버가 실제로 데이터 메시지를 안전하게 교환할 수 있기 전까지 상당한 시간이 소요될 수 있다. 예를 들어, 임의의 데이터 메시지가 안전하게 교환될 수 있기 이전에 보안 통신을 확립하기 위해 11개 쌍까지의 메시지가 교환될 수 있다. 상기 접근법에 대한 또 다른 단점은, 클라이언트와 서버 사이에 보안 통신을 확립하는데 소요되는 시간과 대역폭이 클라이언트와 서버 사이에서 실제 데이터를 전송하는데 소요되는 시간과 대역폭에 비해 상대적으로 높을 수 있다는 것이다. 결과적으로 클라이언트와 서버 사이의 통신 채널의 전체 효율은 부정적인 영향을 받을 수 있다.
전술된 바와 같이, 본 기술분야에서 필요한 것은, 클라이언트와 서버 또는 컴퓨터 네트워크 내의 다른 세트의 네트워크 접속된 엔티티들 사이에서 보안 통신을 개시하기 위한 더욱 효율적인 방식이다.
본 발명의 한 실시예는, 보안 접속 및 관련 서비스에 대한 효율적인 개시를 위한 컴퓨터-구현된 방법을 개시한다. 이 방법은, 애플리케이션 프로그램을 통해, 보안 메시지를 서버 머신에 전송하라는 요청을 수신하는 단계를 포함한다. 이 방법은, 사용자 인증 데이터, 엔티티 인증 데이터, 키 교환 데이터, 및 암호화된 메시지 데이터 중 적어도 2개를 포함하는 제1 메시지를 포함하는 복수의 메시지를 서버 머신에 전송하는 단계를 더 포함한다. 이 방법은, 서버 머신과 교환된 메시지를 암호화하고 인증하기 위한 제1 세트의 세션 키를 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 서버 머신으로부터 수신하는 단계를 더 포함한다.
본 발명의 다른 실시예들은, 제한없이, 클라이언트 머신, 서버 머신, 또는 개시된 기술들의 하나 이상의 양태를 수행하기 위한 기타의 컴퓨팅 디바이스 뿐만 아니라, 개시된 기술들의 하나 이상의 양태를 수행하기 위한 명령어들을 포함하는 컴퓨터-판독가능한 매체를 포함한다.
개시된 접근법의 적어도 하나의 이점은, 클라이언트 머신이, 보안 세션, 인증 데이터, 및 심지어 페이로드 데이터에 대한 요청을 단일 메시지에서 서버에 전송한다는 것이다. 서버는, 마스터 토큰, 사용자 ID 토큰, 키 교환 데이터, 및 페이로드 데이터를 포함하는 메시지를 단일 메시지에서 전송함으로써 응답한다. 그 결과, 보안 통신 세션이 확립되고 데이터가 단일 쌍의 메시지를 통해 교환되어, 종래의 접근법에 비해 레이턴시 및 효율성이 향상된다.
본 발명의 전술된 피쳐들이 상세하게 이해될 수 있는 방식으로, 위에서 간략하게 요약된 본 발명의 더욱 구체적인 설명은 실시예들을 참조하여 이루어질 수 있고, 실시예들 중 일부는 첨부된 도면에 예시되어 있다. 그러나, 첨부된 도면은 단지 본 발명의 전형적인 실시예를 예시한 것이므로, 본 발명의 범위를 제한하는 것으로 간주되어서는 안 되며, 본 발명은 다른 동등한 효과의 실시예를 인정할 수 있다는 점에 유의해야 한다.
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성된 컴퓨터 시스템을 나타내는 블록도이다;
도 2는 본 발명의 하나 이상의 양태를 구현하도록 구성된 네트워킹된 컴퓨팅 시스템을 나타낸다;
도 3은 본 발명의 한 실시예에 따른 클라이언트 머신과 서버 머신 사이에 보안 통신을 확립하기 위한 방법 단계들의 흐름도를 개시한다;
도 4a 및 도 4b는 본 발명의 한 실시예에 따른 클라이언트 머신과 서버 머신 사이의 보안 통신을 갱신하기 위한 방법 단계들의 흐름도를 개시한다;
도 5는 본 발명의 하나 이상의 실시예에 따른 클라이언트 머신과 서버 머신 사이에서 보안 메시지를 교환하기 위한 일련의 방법 단계들을 개시한다.
이하의 설명에서, 본 발명의 더 철저한 이해를 제공하기 위하여 다양한 구체적인 상세사항이 개시된다. 그러나, 본 발명은 이들 구체적인 상세사항 중 하나 이상이 없이도 실시될 수 있다는 것은 본 기술분야의 통상의 기술자에게 명백할 것이다.
본 명세서에서는, 클라이언트 머신과 서버 머신 사이에서 교환되는 메시지를 인증 및 암호화하기 위한 기술이 설명된다. 이 기술을 여기서는 "메시지 보안 계층"(MSL; message security layer)이라고 한다. 한 실시예에서, (사용자 인증 및 엔티티 인증 등의) 복수 타입의 인증, 암호 키 교환, 및 페이로드 데이터는, 클라이언트 머신과 서버 머신 사이에서 교환되는 한 쌍의 메시지로 형성될 수 있다.
예를 들어, 전송 머신은, 엔티티 인증 데이터, 사용자 인증 데이터, 페이로드 데이터 및 키 요청을 단일 메시지에 포함할 수 있다. 이들 기술들은 이제 이하에서 더 상세히 설명된다.
시스템 개요
도 1은 본 발명의 하나 이상의 양태를 구현하도록 구성된 머신(100)을 나타내는 블록도이다. 머신(100)은, 개인용 컴퓨터, 비디오 게임 콘솔, PDA, 모바일 전화, 모바일 디바이스, 또는 본 발명의 하나 이상의 실시예를 실시하기에 적합한 기타 임의의 디바이스일 수 있다.
도시된 바와 같이, 머신(100)은, 제한없이, 중앙 처리 유닛(CPU)(102), 및 메모리 브릿지(105)를 포함할 수 있는 버스 경로를 통해 통신하는 시스템 메모리(104)를 포함한다. CPU(102)는 하나 이상의 처리 코어를 포함하고, 동작시, CPU(102)는, 다른 시스템 컴포넌트들의 동작을 제어 및 조율하는 머신(100)의 마스터 프로세서이다. 시스템 메모리(104)는, CPU(102)에 의한 이용을 위한 소프트웨어 애플리케이션 및 데이터를 저장한다. CPU(102)는 소프트웨어 애플리케이션 및 선택사항으로서 운영 체제를 실행한다. 예를 들어 노스 브릿지 칩(Northbridge chip)일 수 있는 메모리 브릿지(105)는, 버스 또는 기타의 통신 경로(예를 들어, HyperTransport 링크)를 통해 I/O(입력/출력) 브릿지(107)에 접속된다. 예를 들어 사우스 브릿지 칩(Southbridge chip)일 수 있는 I/O 브릿지(107)는, 하나 이상의 사용자 입력 디바이스(108)(예를 들어, 키보드, 마우스, 조이스틱, 디지타이저 태블릿, 터치 패드, 터치 스크린, 정지 또는 비디오 카메라, 움직임 센서, 및/또는 마이크로폰)을 포함하고, 입력을 메모리 브릿지(105)를 통해 CPU(102)에 포워딩한다.
디스플레이 프로세서(112)는 버스 또는 기타의 통신 경로(예를 들어, PCI 익스프레스, Accelerated Graphics Port, 또는 HyperTransport 링크)를 통해 메모리 브릿지(105)에 결합된다; 한 실시예에서, 디스플레이 프로세서(112)는 적어도 하나의 그래픽 처리 유닛(GPU) 및 그래픽 메모리를 포함하는 그래픽 서브시스템이다. 그래픽 메모리는, 출력 이미지의 각각의 픽셀에 대한 픽셀 데이터를 저장하는데 이용되는 디스플레이 메모리(예를 들어, 프레임 버퍼)를 포함한다. 그래픽 메모리는, GPU와 동일한 디바이스에 통합되거나, GPU와는 별개의 디바이스로서 접속되거나, 시스템 메모리(104) 내에 구현될 수 있다.
디스플레이 프로세서(112)는, 디스플레이 디바이스(110)(예를 들어, 스크린 또는 종래의 CRT, 플라즈마, OLED, SED 또는 LCD 기반의 모니터 또는 텔레비전)에 픽셀을 주기적으로 전달한다. 추가로, 디스플레이 프로세서(112)는, 컴퓨터 생성된 이미지를 사진 필름 상에서 재생하도록 구성된 필름 기록기에 픽셀을 출력할 수 있다. 디스플레이 프로세서(112)는 디스플레이 디바이스(110)에 아날로그 또는 디지털 신호를 제공할 수 있다.
시스템 디스크(114)는 I/O 브릿지(107)에도 접속되고, CPU(102) 및 디스플레이 프로세서(112)에 의한 이용을 위한 콘텐츠 및 애플리케이션 및 데이터를 저장하도록 구성될 수 있다. 시스템 디스크(114)는, 애플리케이션 및 데이터를 위한 비휘발성 저장 디바이스를 제공하며, 고정식 또는 착탈식 하드 디스크 드라이브, 플래시 메모리 디바이스, 및 CD-ROM, DVD-ROM, Blu-ray, HD-DVD 또는 기타의 자기, 광 또는 솔리드 스테이트 저장 디바이스를 포함할 수 있다.
스위치(116)는, I/O 브릿지(107)와, 네트워크 어댑터(118) 및 다양한 애드-인 카드(120 및 121) 등의 다른 컴포넌트들 사이의 접속을 제공한다. 네트워크 어댑터(118)는, 머신(100)이 전자 통신 네트워크를 통해 다른 시스템과 통신하는 것을 허용하고, 근거리 통신망 및 인터넷 등의 광역 통신망을 통한 유선 또는 무선 통신을 포함할 수 있다.
USB 또는 기타의 포트 접속, 필름 기록 디바이스 등을 포함한 다른 컴포넌트들(미도시)도 역시 I/O 브릿지(107)에 접속될 수 있다. 예를 들어, 오디오 프로세서는, CPU(102), 시스템 메모리(104), 또는 시스템 디스크(114)에 의해 제공된 명령어들 및/또는 데이터로부터 아날로그 또는 디지털 오디오 출력을 생성하는데 이용될 수 있다. 도 1의 다양한 컴포넌트들을 상호접속하는 통신 경로들은, PCI(Peripheral Component Interconnect), PCI-E(PCI Express), AGP(Accelerated Graphics Port), HyperTransport 또는 기타 임의의 버스 또는 포인트-투-포인트 통신 프로토콜(들) 등의 임의의 적절한 프로토콜을 이용하여 구현될 수 있고, 상이한 디바이스들 사이의 접속은, 본 기술분야에 공지된 바와 같이, 상이한 프로토콜들을 이용할 수 있다.
한 실시예에서, 디스플레이 프로세서(112)는, 예를 들어, 비디오 출력 회로를 포함하는 그래픽 및 비디오 처리에 최적화된 회로를 포함하고, 그래픽 처리 유닛(GPU)을 구성한다. 또 다른 실시예에서, 디스플레이 프로세서(112)는 범용 처리에 최적화된 회로를 포함한다. 역시 또 다른 실시예에서, 디스플레이 프로세서(112)는, 메모리 브릿지(105), CPU(102) 및 I/O 브릿지(107) 등의 하나 이상의 다른 시스템 요소와 통합되어 시스템 온 칩(SoC)을 형성할 수 있다. 역시 또 다른 실시예에서, 디스플레이 프로세서(112)는 생략되고 CPU(102)에 의해 실행되는 소프트웨어는 디스플레이 프로세서(112)의 기능을 수행한다.
픽셀 데이터는 CPU(102)로부터 직접 디스플레이 프로세서(112)에 제공될 수 있다. 본 발명의 일부 실시예에서, 장면을 나타내는 명령어 및/또는 데이터는, 네트워크 어댑터(118) 또는 시스템 디스크(114)를 통해, 각각 머신(100)과 유사한, 렌더 팜(render farm) 또는 서버 컴퓨터 세트에 제공된다. 렌더 팜은 제공된 명령어 및/또는 데이터를 이용하여 장면의 하나 이상의 렌더링된 이미지를 생성한다. 이들 렌더링된 이미지들은 컴퓨터-판독가능한 매체 상에 디지털 포멧으로 저장될 수 있으며, 선택사항으로서 디스플레이를 위해 머신(100)에 반환될 수 있다. 유사하게, 디스플레이 프로세서(112)에 의해 처리된 스테레오 이미지 쌍은, 디스플레이를 위해 다른 시스템에 출력되거나, 시스템 디스크(114)에 저장되거나, 디지털 포멧으로 컴퓨터-판독가능한 매체 상에 저장될 수 있다.
대안으로서, CPU(102)는, 스테레오 이미지 쌍들 사이의 오프셋을 조정 및/또는 특성규명하는 것을 포함한, 원하는 출력 이미지를 정의하는 데이터 및/또는 명령어를 디스플레이 프로세서(112)에 제공하며, 이로부터 디스플레이 프로세서(112)는 하나 이상의 출력 이미지의 픽셀 데이터를 생성한다. 원하는 출력 이미지를 정의하는 데이터 및/또는 명령어는, 시스템 메모리(104) 또는 디스플레이 프로세서(112) 내의 그래픽 메모리에 저장될 수 있다. 한 실시예에서, 디스플레이 프로세서(112)는, 지형, 조명 음영, 텍스쳐링, 움직임, 및/또는 장면에 대한 카메라 파라미터를 정의하는 데이터 및 명령어로부터 출력 이미지용 픽셀 데이터를 생성하기 위한 3D 렌더링 능력을 포함한다. 디스플레이 프로세서(112)는, 쉐이더 프로그램, 톤 맵핑 프로그램 등을 실행할 수 있는 하나 이상의 프로그램가능한 실행 유닛을 더 포함할 수 있다.
CPU(102), 렌더 팜, 및/또는 디스플레이 프로세서(112)는, 본 기술분야에 공지된 임의의 렌더링 또는 이미지 처리 기술을 포함한, 본 기술분야에 공지된 임의의 표면 또는 볼륨 렌더링 기술을 채용하여 제공된 데이터 및 명령어로부터 하나 이상의 렌더링된 이미지를 생성할 수 있다.
본 명세서에 도시된 시스템은 예시적인 것이며 변형 및 수정이 가능하다는 것을 이해할 것이다. 브릿지의 개수 및 배열을 포함한 접속 토폴로지는 원하다면 수정될 수 있다. 예를 들어, 일부 실시예에서, 시스템 메모리(104)는 브릿지를 통해서가 아니라 CPU(102)에 직접 접속되고, 다른 디바이스들은 메모리 브릿지(105) 및 CPU(102)를 통해 시스템 메모리(104)와 통신한다. 다른 대안적인 토폴로지들에서, 프로세서(112)는 메모리 브릿지(105)가 아니라, I/O 브릿지(107)에 또는 직접 CPU(102)에 접속된다. 역시 또 다른 실시예에서, I/O 브릿지(107) 및 메모리 브릿지(105)는 단일 칩에 통합될 수도 있다. 여기에 도시된 특정한 컴포넌트는 선택사항이다; 예를 들면, 임의의 개수의 애드-인 카드 또는 주변 디바이스가 지원될 수도 있다. 일부 실시예에서, 스위치(116)는 제거되고, 네트워크 어댑터(118) 및 애드-인 카드(120, 121)는 I/O 브릿지(107)에 직접 접속된다.
네트워크를 통한 클라이언트/서버 통신
도 2는 본 발명의 하나 이상의 양태를 구현하도록 구성된 컴퓨터 네트워크(200)를 나타낸다. 도시된 바와 같이, 컴퓨터 네트워크(200)는, 제한없이, 통신 네트워크(206)를 통해 서로 접속된 클라이언트 머신(202), 서버 머신(204) 및 사용자 서비스 시스템(250)을 포함한다. 통신 네트워크(206)는, LAN(근거리 통신망) 및 WAN(광역 통신망)을 포함한 그러나 이것으로 제한되지 않는 원격 위치한 머신들 사이의 통신을 가능하게 하는 임의의 적절한 환경일 수 있다.
클라이언트 머신(202)은 서버 머신(204)과 데이터를 교환하도록 구성된다. 일부 실시예에서, 클라이언트 머신(202) 및 서버 머신(204)은 또한, 사용자 서비스 시스템(250) 등의, 하나 이상의 사용자 서비스 시스템(250s)과 통신할 수 있다. 클라이언트 머신(202)은 서버 머신(204)에 메시지를 전송하도록 구성된다. 서버 머신(204)은 마찬가지로 클라이언트 머신(202)에 메시지를 전송하도록 구성된다. 클라이언트 머신(202)과 서버 머신(204) 사이에서 교환되는 메시지는, 메시지 데이터, 인증 정보, 인가 정보, 토큰, 키 교환 데이터, 인증된 데이터 및 암호화된 데이터 중 하나 이상을 포함한다. 일부 실시예에서, 클라이언트 머신(202) 및 서버 머신(204)은, 본 명세서에서 더 설명되는 바와 같이, 사용자 인증을 위해 사용자 서비스 시스템(250)과 통신할 수 있다.
클라이언트 머신(202)은, AES 모듈(210), MAC 모듈(212), 키 교환 모듈(214), 키 유도 모듈 (216), 베이스 인증 모듈(218), 사용자 인증 모듈(220), 및 애플리케이션 프로그램(226)을 포함한다. 서버 머신(204)은, AES 모듈(230), MAC 모듈(232), 키 교환 모듈(234), 키 유도 모듈 (236), 베이스 인증 모듈(238), 마스터 토큰 생성기(240), 사용자 ID 토큰 생성기(242), 서비스 토큰 생성기(244), 및 애플리케이션 프로그램(246)을 포함한다. 이들 다양한 모듈들 및 토큰 생성기들의 기능이 이제 더 상세히 설명된다.
AES(Advanced Encryption Standard) 모듈(210 및 230)은 클라이언트 머신(202)과 서버 머신(204) 사이에서 전송되는 데이터에 관해 대칭 키 암호 기술을 수행한다. 클라이언트 머신(202) 내의 AES 모듈(210)은 클라이언트 머신(202)으로부터 서버 머신(204)으로의 전송을 위해 데이터를 암호화하고, 서버 머신(204)으로부터 클라이언트 머신(202)에 의해 수신된 데이터를 암호해독한다. 마찬가지로, 서버 머신(204) 내의 AES 모듈(230)은 서버 머신(204)으로부터 클라이언트 머신(202)으로의 전송을 위해 데이터를 암호화하고, 클라이언트 머신(202)으로부터 서버 머신(204)에 의해 수신된 데이터를 암호해독한다.
AES 모듈(210 및 230)은 2개의 동작을 수행한다. 제1 동작은 하기 수학식 (1)에 따라 평문을 암호문으로 암호화한다:
[수학식 1]
ciphertext = encrypt (plaintext, aes_key, mode, initialization_vector)
여기서, plaintext는 암호화 이전의 암호화되지 않은 텍스트이고, aes_key 및 initialization_vector는 AES 유닛(210 또는 230)에 의해 Advanced Encryption Standard 표준에 따라 텍스트를 암호화하기 위해 채용되는 파라미터이고, ciphertext는 그 결과의 암호화된 텍스트이다. 일부 실시예에서, 초기화 벡터(initialization vector)는 알고리즘의 소정 암호 모드에는 필요하지 않다. Mode는 암호화 및 암호해독 동작을 위한 구성 파라미터이며, 여기서, 모드는, 제한없이, 전자 코드 북(ECB) 모드, 암호화-블록 체이닝(CBC) 모드, 및 카운터 모드를 포함한다.
제2 동작은 하기 수학식 (2)에 따라 암호문으로부터 평문을 암호해독한다 :
[수학식 2]
plaintext = decrypt (ciphertext, aes_key, mode, initialization_vector)
여기서, ciphertext는 암호해독 이전의 암호화된 텍스트이고, aes_key 및 initialization_vector는 AES 모듈(210 및 230)에 의해 Advanced Encryption Standard에 따라 텍스트를 암호해독하기 위해 채용되는 파라미터이고, plaintext는 그 결과의 암호해독된 텍스트이다. 일부 실시예에서, 초기화 벡터(initialization vector)는 알고리즘의 소정 암호 모드에는 필요하지 않다. Mode는 암호화 및 암호해독 동작에 대한 구성 파라미터이며, 여기서, 모드는, 제한없이, ECB 모드, CBC 모드, 및 카운터 모드를 포함한다.
다양한 실시예에서, AES 모듈(210 및 230)은, 소프트웨어, 하드웨어, 또는 하드웨어나 소프트웨어의 임의의 조합으로 구현될 수 있다. 특히, AES 모듈(210 및 230)은, 보안 목적을 위해 하드웨어 보안 모듈(HSM; hardware security module)로 또는 신뢰된 실행 환경(TEE; trusted execution environment) 내부에 구현될 수 있다. 일부 실시예에서, AES 이외의 대칭 키 암호 알고리즘이 이용될 수 있다. 이러한 경우에, AES 모듈(210 및 230)은, 제한없이, Blowfish, Twofish 및 TripleDES를 포함한, 대안적인 대칭 키 암호 알고리즘을 수행하는 모듈로 대체될 수 있다. 다양한 실시예에서, AES 모듈(210 및 230)은, 적어도 모드에 따라, 무상태성(stateless) 또는 상태성(stateful)일 수 있다.
메시지 인증 코드(MAC) 모듈(212, 232)은, 클라이언트 머신(202)과 서버 머신(204) 사이에서 전송되는 데이터와 연관된 인증 및 무결성 보호를 수행한다. 클라이언트 머신(202) 내의 MAC 모듈(212)은, 클라이언트 머신(202)으로부터 서버 머신(204)으로 전송하기 위한 데이터에 대응하는 MAC을 생성하고, 서버 머신(204)으로부터 클라이언트 머신(202)에 의해 수신된 대응하는 데이터와 대조하여 수신된 MAC을 검증한다. 마찬가지로, 서버 머신(204) 내의 MAC 모듈(232)은 서버 머신(204)으로부터 클라이언트 머신(202)으로 전송하기 위한 데이터에 대응하는 MAC을 생성하고, 클라이언트 머신(202)으로부터 서버 머신(204)에 의해 수신된 대응하는 데이터와 대조하여 수신된 MAC을 검증한다.
다양한 실시예에서, MAC 모듈(212 및 232)은, 제한없이, 키드-해시(keyed-hash) MAC(HMAC), 병렬화가능 MAC(PMAC), 또는 범용 해싱 MAC(UMAC)을 포함한, 임의의 기술적으로 실현가능한 메시지 인증 코드 기술을 채용할 수 있다. 단지 예로서, 본 명세서에서 설명된 MAC 모듈(212 및 232)은 HMAC을 채용한다.
MAC 모듈(212, 232)은 2개의 동작을 수행한다. 제1 동작은 하기의 수학식 (3)에 따라 특정한 데이터에 대응하는 MAC을 생성한다 :
[수학식 3]
mac = generate (data, mac_key, [hash_algorithm])
여기서, data는 MAC을 생성하기 위한 입력 데이터이고, mac_key는, MAC 모듈(212 및 232)에 의해 선택된 MAC 표준에 따라 MAC을 생성하기 위해 채용되는 파라미터이고, mac은 생성된 MAC이다. 전형적으로, 생성된 MAC은 대응하는 데이터와 함께 전송된다. hash_algorithm은 특정한 해시 알고리즘을 명시하는 소정 MAC 알고리즘에 필요한 파라미터이다. 예를 들어, MAC 모듈이 HMAC을 채용하는 경우, hash_algorithm의 값은, 제한없이, SHA-1, SHA-256 또는 SHA-3을 포함할 수 있다. MAC 모듈이 PMAC 또는 UMAC을 채용한다면, hash_algorithm은 생략될 수 있다.
제2 동작은, 하기의 수학식 (4)에 따라 주어진 세트의 데이터가 대응하는 MAC을 생성하는지를 검증한다 :
[수학식 4]
{T|F} = verify (data, mac, [hash algorithm])
여기서, data는 무결성에 대해 인증 및 검증되는 데이터이고, mac은 대응하는 MAC이며, {T|F}는 부울 값으로서, MAC 모듈(212 또는 232)이 데이터와 대조하여 MAC을 성공적으로 검증하면 참이고, 그렇지 않으면 거짓이다. 전술된 바와 같이, hash_algorithm은 특정한 해시 알고리즘을 명시하는 소정 MAC 알고리즘에 필요한 파라미터이다.
다양한 실시예에서, MAC 모듈(212 및 232)은, 소프트웨어, 하드웨어, 또는 하드웨어나 소프트웨어의 임의의 조합으로 구현될 수 있다. 특히, MAC 모듈(212 및 232)은 보안 목적으로 HSM 또는 TEE로 구현될 수 있다. MAC 모듈(212, 232)은 무상태(stateless)일 수 있다.
키 교환 모듈(214 및 234)은 클라이언트 머신(202)과 서버 머신(204) 사이에서 키를 교환하는데 이용된다. 다양한 실시예에서, 키 교환 모듈(214 및 234)은, 제한없이, Diffie-Hellman 또는 암호 키 랩핑( cryptographic key wrapping) 방법을 포함한, 임의의 기술적으로 실현가능한 키 교환 기술을 채용할 수 있다. 단지 예로서, 여기서 설명된 키 교환 모듈(214 및 234)은 Diffie-Hellman 키 교환을 채용한다.
Diffie-Hellman 실시예에서, 클라이언트 머신(202) 내의 키 교환 모듈(214)은 공개 값(public value) 'A'를 생성하여 서버 머신(204)에 전송하고, 클라이언트 머신(202)에 의해 보유된 개인 값(private value) 'a'와 서버 머신(204)으로부터 수신된 공개 값 'B'로부터 공유된 비밀 값을 계산한다. 마찬가지로, 서버 머신(204) 내의 키 교환 모듈(234)은 공개 값 'B'를 생성하여 클라이언트 머신(202)에 전송하고, 서버 머신(204)에 의해 보유된 개인 값 'b'와 클라이언트 머신(202)으로부터 수신된 공개 값 'A'로부터 공유된 비밀 값을 계산한다.
키 교환 모듈(214 및 234)의 Diffie-Hellman 실시예는 2개의 동작을 수행한다. 제1 동작은 하기의 수학식 (5) 및 (6)에 따라 개인 값들 a와 b에서 공개 값들 A와 B를 계산한다:
[수학식 5]
클라이언트 공개 키: A = generate (g, p) = ga mod p
[수학식 6]
서버 공개 키: B = generate (g, p) = gb mod p
여기서, A는 클라이언트 머신(202)의 공개 값, a는 클라이언트 머신(202)의 개인 값, B는 서버 머신(204)의 공개 값, b는 서버 머신(204)의 개인 값, g(생성자 값) 및 p(소수 값)는 키를 생성하기 위한 추가 파라미터이다.
공개 키를 계산 한 후, 키 교환 모듈(214)은 클라이언트 머신(202)에 대한 공개 값 'A'를 서버 머신(204)에 전송한다. 키 교환 모듈(234)은 서버 머신(204)에 대한 공개 값 'B'를 클라이언트 머신(202)에 전송한다. 한 실시예에서, 키 교환 모듈(214)은 'g' 및 'p' 값을 서버 머신(204)에 추가로 전송할 수 있다. 또 다른 실시예에서, 키 교환 모듈(214 및 234)은 'g' 및 'p' 값을 이전에 공유했거나, 기타의 방식으로 동의했을 수 있다.
Diffie-Hellman 실시예의 제2 동작은 하기의 수학식 (7) 및 (8)에 따라 공유된 비밀(ss) 값을 계산한다 :
[수학식 7]
클라이언트 공유된 비밀 : ss = calculate(B) = gab mod p = Ba mod p
[수학식 8]
서버 공유된 비밀: ss = calculate (A) = gab mod p = Ab mod p
클라이언트 머신(202) 및 서버 머신(204)은 공유된 비밀에 대해 동일한 값을 생성한다. 클라이언트 머신(202)은, 'g', 'p', 클라이언트 머신(202) 개인 값 'a', 및 서브 머신(204) 공개 값 'B'에 기초하여, 공유된 비밀의 값을 생성한다. 마찬가지로, 서버 머신(204)은, 'g', 'p', 서버 머신(204)의 개인 값 'b', 및 클라이언트 머신(202)의 공개 값 'A'에 기초하여, 공유된 비밀의 값을 생성한다.
전형적으로, 클라이언트 머신(202) 상의 키 교환 모듈(214)은 상태성(stateful)이고, 서버 머신(204) 상의 키 교환 모듈(234)은 무상태성(stateless)이다. 그러나, 일부 실시예에서, 키 교환 모듈(234)은 상태성일 수 있다. 특히, 키 교환 모듈(214)은, 적어도 대응하는 B 값이 서버 머신(204)에 의해 반환될 때까지 상태로서 'a'를 저장한다. 키 교환 모듈(234)은 'b' 값을 계산하지만, 'b'를 상태로서 유지할 필요는 없다. 오히려, 키 교환 모듈(234)은 전형적으로, 서버 머신(204)이 공유된 비밀 값을 계산하고 B 키를 클라이언트 머신(202)에 전송한 후에 'b'를 폐기한다.
키 유도 모듈(216 및 236)은 키 교환 모듈(214 및 234)에 의해 계산된 공유된 비밀 값으로부터 세션 키를 계산한다. 각각의 세트의 세션 키들은, 앞서 논의된, 2개의 키, 즉, HMAC 키와 AES 키를 포함한다. 세션 키는, 보안 통신에 참여하는 다양한 엔티티들에 의해 메시지를 암호화하고 인증하기 위해 채용된다. MSL 프로토콜을 이용하여 엔티티에 의해 생성된 각각의 메시지는, HMAC 키를 이용하여 생성된 HMAC에 의해 제공되는 인증/무결성 보호, 및 AES 키에 의해 제공되는 데이터 암호화 양쪽 모두를 포함할 수 있다. HMAC 키는 교환된 메시지에 대한 인증 및 무결성 보호를 제공하는 반면, AES 키는 메시지 내의 데이터를 암호화함으로써 사생활보호를 제공한다. 키 유도 모듈 (216 및 236)은 하기 수학식 (9)에 따라 세션 키를 계산한다 :
[수학식 9]
{k_sess_hmac | k_sess_aes} = key_derive (key_data)
여기서, Diffie-Hellman 실시예에서, key_data는 키 교환 모듈(214 및 234)에 의해 계산된 공유된 비밀이고, {k_sess_hmac | k_sess_aes}는 HMAC 세션 키와 AES 세션 키의 결합인 세션 키이다. key_derive 함수는, 임의의 기술적으로 실현가능한 키 유도 또는 생성 기술일 수 있다. 하나의 비제한적인 예에서, key_derive 함수는, 384 비트의 키 데이터를 생성하는 SHA-384에 기초할 수 있다. 이 예에서, AES 세션 키는, SHA-384 생성된 키 데이터의 최좌측 128 비트일 수 있는 반면, HMAC 세션 키는 SHA-384 키 데이터의 최우측 256 비트를 포함하는 256 비트 키일 수 있다.
다양한 실시예에서, 세션 키는, HMAC 키 및 AES 키 대신에 또는 이에 추가하여 다른 키를 포함할 수 있다.
키 교환 모듈(214 및 234)은 Diffie-Hellman 실시예에서 공개 값들을 교환할 수 있고, 대응하는 클라이언트 머신(202) 및 서버 머신(204)에 전용인 "공유된 비밀" 값을 계산할 수 있다.
베이스 인증 모듈(218, 238)은 2가지 상황에서 서버 머신(204)의 인증을 클라이언트 머신(202)에 제공한다. 제1 상황은, 세션 키의 확립 및 마스터 토큰의 교환 이전에 클라이언트 머신(202)과 서버 머신(204) 사이에서의 메시지의 초기 교환 동안이다. 제2 상황은, 예를 들어, 클라이언트 머신(202)으로부터 수신된 데이터를 암호해독하지 못하거나 클라이언트 머신(202)으로부터 수신된 인증 코드를 검증하지 못한 것에 의해 표시되는 바와 같이, 서버 머신(204)이 클라이언트 머신(202)으로부터 불량 메시지를 수신할 때이다. 즉, 베이스 인증 모듈(218, 238)은 초기 메시지 교환에 관한 인증을 제공하고, 메시지 오류가 검출된 경우 오류 복구 인증을 제공한다.
다양한 실시예에서, 베이스 인증 모듈(218 및 238)은, 제한없이, Rivest-Shamir-Adleman(RSA) 공개/개인 키, 타원-곡선 암호기술, 디지털 서명 알고리즘(DSA), 또는 Diffie-Hellman을 포함한, 임의의 기술적으로 실현가능한 인증 기술 또는 알고리즘을 채용할 수 있다. 단지 예로서, 여기서 설명된 베이스 인증 모듈(218 및 238)은 RSA 공개/개인 키를 채용한다.
서버 머신(204)이 실패를 검출할 때 또는 클라이언트 머신(202)과 초기 메시지를 교환할 때, 서버 머신(204) 상의 베이스 인증 모듈(238)은 하기 수학식 (10)에 따라 클라이언트 머신(202)에 전송할 서명을 생성한다:
[수학식 10]
sig = sign (data, RSA_privatekey, hash_algorithm)
여기서, data는 클라이언트 머신(202)으로의 전송을 위한 데이터이고, RSA_privatekey는 서버 머신(204)에 의해 보유된 개인 RSA 키이고, hash_algorithm은 본 명세서에 설명된 바와 같이 특정한 해시 기술을 식별하고, sig는 데이터와 함께 클라이언트 머신(202)에 전송하기 위한 서명이다.
클라이언트 머신(202)이 서버 머신(204)으로부터 메시지를 수신할 때, 클라이언트 머신(202) 상의 베이스 인증 모듈(218)은 하기 수학식 (11)에 따라 메시지를 검증한다 :
[수학식 11]
{T|F} = verify (sig, data, RSA_publickey, hash_algorithm)
여기서 sig는 서버에 의해 생성된 수신된 서명이고, data는 대응하는 수신된 데이터이며, RSA_publickey는 서버 머신(204)으로부터 이전에 수신된 또는 사전-준비된 공개 RSA 키이고, hash_algorithm은 특정한 해시 기술을 식별하며, {T|F}는 부울 값으로서, 베이스 인증 모듈(218)이 데이터와 대조하여 서명을 성공적으로 검증하면 참이고, 그렇지 않으면 거짓이다.
사용자 인증 모듈(220)은 선택사항으로서 클라이언트 머신(202)으로부터의 사용자 인증을 제공한다. 클라이언트 머신(202)의 사용자가, 예를 들어, 사용자 이름 및 패스워드를 입력하면, 사용자 인증 모듈(220) 또는 사용자 서비스 시스템(250)은 사용자가 유효한 로그인 크리덴셜(credential)을 입력했는지를 결정한다. 사용자 인증 모듈(220)은 국지적으로 저장된 패스워드 데이터를 질의함으로써 이러한 결정을 내리거나, 또는 사용자 서비스 시스템(250)에 질의할 수 있다. 사용자 인증 모듈(220)은 사용자 이름 및 패스워드를 서버 머신(204)에 전송할 수 있다. 선택사항으로서, 사용자 인증 모듈(220)은, 국지적 패스워드 데이터를 질의하거나 사용자 이름 및 패스워드를 사용자 서비스 시스템(250) 또는 서버 머신(204)에 전송하기 이전에 패스워드를 암호화 또는 해싱할 수 있다.
서버 머신(204) 상의 마스터 토큰 생성기(240)는 클라이언트 머신(202) 및 서버 머신(204)이 안전하게 메시지를 교환할 수 있게 하는 마스터 토큰을 생성한다. 마스터 토큰 생성기(240)는 하기 수학식 (12)에 따라 사전마스터 토큰(premaster token)을 생성한다:
[수학식 12]
pre_MT = issue (ID, k_sess, renew_time, exp_time, seq_num, MT_ser_num)
여기서, ID는 고유 식별자이고, k_sess는 키 유도 모듈 (236)에 의해 생성된 (앞서 HMAC 키 및 AES 키로서 설명된) 세션 키들의 세트이고, renew_time은, 갱신가능 플래그가 세트된 채 클라이언트로부터의 메시지가 수신될 때 서버가 마스터 토큰을 갱신하기 위해 선택할 수 있는 시간을 나타내고, exp_time은 현재의 마스터 토큰이 만료되는 시간이고, seq_num은 마스터 토큰이 갱신될 때 증분되는 도난-방지 시퀀스 번호이며, MT_ser_num은 토큰 바인딩 목적을 위한 마스터 토큰 일련 번호이고, pre_MT는 생성된 사전-마스터 토큰이다. ID는 클라이언트 ID 및 발행자 ID 중 하나 또는 양쪽 모두이며, 여기서, 클라이언트 ID는 클라이언트 머신(202)을 식별하고 발행자 ID는 마스터 토큰을 발행한 서버 머신(204)을 식별한다. 한 실시예에서, ID는 클라이언트 ID와 발행자 ID의 결합이다.
마스터 토큰 생성기(240)는 하기 수학식 (13)에 따라 최종 마스터 토큰을 생성한다 :
[수학식 13]
MT = encrypt (pre_MT, MT_key)
여기서, pre_MT는 사전-마스터 토큰이고, MT_key는 신뢰의 네트워크를 생성하기 위해 MT_key를 공유하는 서버 머신(204) 및 다른 서버들에게만 알려진 AES 키 등의 마스터 토큰 암호화 키이고, MT는 암호화된 마스터 토큰이다.
사용자 ID 토큰 생성기(242)는 사용자 인증을 검증하고 사용자 ID 토큰을 발행한다. 사용자 ID 토큰 생성기(242)는 하기 수학식 (14)를 이용하여 사용자 서비스 시스템(250)에 질의함으로써 사용자 인증을 검증할 수 있다 :
[수학식 14]
{T|F} = user_auth (user_auth_data)
여기서, user_auth_data는 사용자 서비스 시스템(250)에 의해 지원되는, 사용자 이름 및 패스워드 등의, 임의의 기술적으로 실현가능한 사용자 인증 데이터이고, {T|F}는 사용자 서비스 시스템(250)에 의해 반환되는 부울 값으로서, 사용자 인증 데이터가 유효하면 참이고, 그렇지 않으면 거짓이다.
사용자가 인증되면, 사용자 ID 토큰 생성기(242)는 하기 수학식 (15)에 따라 사전-사용자 ID 토큰을 생성한다 :
[수학식 15]
pre_UIDT = issue (MT_ser_num, UIDT_renew_time, UIDT_exp_time, UIDT_ser_num, user_data)
여기서, MT_ser_num은 마스터 토큰 일련 번호이고, UIDT_renew_time은 사용자 ID 갱신가능 메시지가 서버 머신(204)에 의해 전송되는 시간을 나타내고, exp_time은 현재의 사용자 ID 토큰 세션이 만료되는 시간이고, UIDT_ser_num은 바인딩 목적을 위한 사용자 ID 토큰 일련 번호이고, user_data는 암호화될 사용자 데이터이고, pre_UIDT는 생성된 사전-사용자 ID 토큰이다.
사용자 인증은 전형적으로 외부 사용자 서버 시스템(250)에 질의하는 것을 포함하기 때문에, UIDT_renew_time 및 UIDT_exp_time은 통상적으로 대응하는 마스터 토큰 renew_time 및 exp_time보다 길다. MT_ser_num은, 사용자 ID 토큰의 생성에서, 사용자 ID 토큰이 마스터 토큰에 바인드되도록 보장하기 위해 이용된다.
사용자 ID 토큰 생성기(242)는 하기 수학식 (16)에 따라 최종 사용자 ID 토큰을 생성한다:
[수학식 16]
UIDT = encrypt (pre_UIDT, UIDT_key)
여기서, pre_UIDT는 사전-사용자 ID 토큰이고, UIDT_key는, 서버 머신(204), 및 신뢰의 네트워크를 생성하기 위해 UIDT_key를 공유하는 다른 서버들에만 알려진 AES 키 등의 사용자 토큰 암호화 키이고, UIDT는 암호화된 사용자 ID 토큰이다.
서비스 토큰 생성기(244)는 다양한 서비스들에 의해 이용되는 서비스 토큰들을 생성 및 암호화하여 서버가 이러한 상태를 지속시킬 필요가 없도록 클라이언트가 저장한 토큰에 상태 정보를 지속시킨다. 다양한 실시예에서, 서비스 토큰은, 마스터 토큰 및 사용자 ID 토큰 양쪽 모두에, 마스터 토큰에만 바인딩되거나, 또는 어떠한 다른 토큰에도 바인딩되지 않을 수도 있다. 서비스 토큰 생성기(244)는 하기의 수학식 (17)에 따라 사전-서비스 토큰을 생성한다 :
[수학식 17]
pre_ST = (name, data, [MT_ser_num], [UIDT_ser_num])
여기서, name은 서비스 토큰의 이름이고 data는 대응하는 서비스로부터의 임의의 데이터이다. 즉, 이름과 데이터는, 본질적으로 HTTP 쿠키로 동작하는 키-값 쌍을 형성한다. 선택사항적 파라미터는, MT_ser_num(서비스 토큰이 마스터 토큰에 바인딩되는 경우) 및 UIDT_ser_num(서비스 토큰이 사용자 UD 토큰에 바인딩된 경우)을 포함한다. pre_ST는 사전-서비스 토큰이다.
서비스 토큰 생성기(244)는 하기 수학식 (18)에 따라 최종 서비스 토큰을 생성한다:
[수학식 18]
ST = encrypt (pre_ST, ST_key)
여기서, pre_ST는 사전-서비스 토큰이고, ST_key는, AES 키 등의, 서비스 토큰 암호화 키이고, ST는 암호화된 서비스 토큰이다. 일부 실시예들에서, 서비스 토큰은 암호화되지 않을 수도 있고, 이 경우, 서비스 토큰은 하기의 수학식 (19)에 의해 주어진다:
[수학식 19]
ST = pre_ST
클라이언트 머신(202) 상에 상주하는 애플리케이션 프로그램(226) 및 서버 머신(204) 상에 상주하는 애플리케이션 프로그램(246)은 도 2와 연계하여 여기서 설명된 다양한 모듈들 및 생성기들을 통해 서로 안전하게 통신한다. 한 예에서, 제한없이, 애플리케이션 프로그램(226 및 246)은 클라이언트 머신(202)과 서버 머신(204) 사이에서 미디어 콘텐츠를 안전하게 스트리밍하도록 구성될 수 있다.
적어도 하나의 실시예에서, 클라이언트 머신(202) 상에 상주하는 애플리케이션 프로그램(226)은 서버 머신(204) 상에 상주하는 애플리케이션 프로그램(246)과 보안 통신 채널을 확립하라는 요청을 전송할 수 있다. 애플리케이션 프로그램(226)은, 여기서 설명된 클라이언트 머신(202) 상에 존재하는 모듈들 및 생성기들 중 하나 이상에 이러한 요청을 전송할 수 있다. 이 요청에 응답하여, 클라이언트 머신(202) 상에 상주하는 모듈들 및 생성기들은 서버 머신(204) 상에 상주하는 모듈들 및 생성기들과 하나 이상의 메시지를 교환함으로써, 클라이언트 머신(202) 상에 상주하는 애플리케이션 프로그램(226)과 서버 머신(204) 상에 상주하는 애플리케이션 프로그램(246) 사이에 보안 통신 채널을 확립할 수 있다.
모듈들 및 토큰 생성기들이 특정한 순서로 설명되었지만, 이들 모듈들 및 토큰 생성기들에 의해 수행되는 동작들은 임의의 기술적으로 실행가능한 순서로 수행될 수 있다. 예를 들어, 사용자 인증 모듈(220)에 의해 수행되는 기능들은 베이스 인증 모듈(218 및 238)에 의해 수행되는 동작들 이전 또는 이후에 수행될 수 있다. 특히, 암호화를 지원하지 않는 초기화 방식이 암호화를 요구하는 사용자 인증 방식과 함께 이용된다면, 안전한 데이터 전송을 보장하기 위해 사용자 인증을 시작하기 전에 키 교환이 발생할 필요가 있다. 이러한 접근법은 추가적인 왕복 메시지 교환을 야기할 수 있다.
또 다른 예에서, 마스터 토큰 생성기(240), 사용자 ID 토큰 생성기(242), 및 서비스 토큰 생성기(244)는, 별개의 토큰 생성기로서, 3가지 토큰 타입 모두를 생성하는 단일 토큰 생성기로서, 또는 임의의 기술적으로 실현가능한 조합으로 구현될 수 있다.
보안 접속 및 관련 서비스를 위한 효율적인 개시
보안 통신 채널을 확립하기 위해, 클라이언트 머신(202)은 인증 데이터 및 키 요청을 포함하는 메시지를 서버 머신(204)에 전송한다. 한 실시예에서, 이 메시지는 페이로드 데이터를 포함할 수 있다. 서버 머신(204)은, 마스터 토큰을 포함하는 키 응답 데이터와 함께 사용자 ID 토큰을 전송함으로써 응답한다. 한 실시예에서, 이 메시지는 마찬가지로 페이로드 데이터를 포함할 수 있다. 그 결과, 보안 통신 채널이 확립되고 페이로드 데이터는 클라이언트 머신(202)과 서버 머신(204) 사이의 한 쌍의 메시지 교환을 통해 교환될 수 있다. 이 기술이 이제 설명된다.
도 3은 본 발명의 한 실시예에 따른 클라이언트 머신과 서버 머신 사이에 보안 통신을 확립하기 위한 방법 단계들의 흐름도를 개시한다. 방법 단계들이 도 1 내지 도 2의 시스템과 연관하여 설명되었지만, 본 기술분야의 통상의 기술자라면, 이 방법 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도시된 바와 같이, 방법(300)은 클라이언트 머신(202)이 엔티티 인증 데이터를 생성하는 단계 302에서 시작한다. 엔티티 인증 데이터는 메시지와 연관된 엔티티를 식별하고 인증하는데 이용되는 데이터를 포함한다. 엔티티 인증 데이터는 암호화되지 않을 수도 있고, 또는 엔티티 인증 데이터는 사전-공유 키(pre-shared key) 등의 임의의 기술적으로 실현가능한 접근법을 통해 암호화될 수 있다. 단계 304에서, 클라이언트 머신(202)은 사용자 인증 데이터를 생성한다. 사용자 인증 데이터는, 제한없이, 암호를 갖춘 사용자 이름, 해시된 암호를 갖춘 사용자 이름, 또는 http 쿠키와 연관된 정보를 포함한, 임의의 기술적으로 실현가능한 형식일 수 있다. 단계 306에서, 클라이언트 머신(202)은 보안 통신 채널이 요구되는 서버 머신(204)으로 향하는 키 요청을 생성한다. 단계 308에서, 클라이언트 머신(202)은, 엔티티 인증 데이터, 사용자 인증 데이터 및 키 요청을 포함하는 갱신가능한 MSL 메시지를 서버 머신(204)에 전송한다. 일부 실시예들에서, MSL 메시지는 페이로드 데이터를 포함할 수 있다.
단계 310에서, 서버 머신(204)은 엔티티 인증 데이터 및 사용자 인증 데이터를 인증한다. 단계 312에서, 서버 머신(204)은 MSL 메시지를 암호해독하여 키 요청 및 선택사항적인 페이로드 데이터를 복구한다. 단계 314에서, 서버 머신(204)은 새로운 사용자 ID 토큰을 생성한다. 서버 시스템은 또한, 새로운 마스터 토큰을 포함하는 키 응답 데이터를 생성한다. 일부 실시예에서, 키 응답 데이터는 또한, 세션 키를 포함한다. 단계 316에서, 서버 머신(204)은, 새로운 마스터 토큰을 포함한, 엔티티 인증 데이터 및 키 응답 데이터를 포함하는 MSL 메시지를 생성한다. 일부 실시예에서, MSL 메시지는 세션 키 및 페이로드 데이터 중 하나 또는 양쪽 모두를 포함할 수 있다. 단계 318에서, 서버 머신(204)은 MSL 메시지를 클라이언트 머신(202)에 전송한다. 그 다음, 방법(300)은 종료한다.
일단 클라이언트 머신(202)과 서버 머신(204) 사이에 보안 통신이 확립되고 나면, 마스터 토큰은 "갱신가능"이 되거나 또는 시간 경과와 함께 또는 명시된 양의 메시지의 교환 후에 만료될 수 있다. 그 다음, 보안 통신 채널 크리덴셜은 새로운 마스터 토큰과 사용자 ID 토큰을 요청함으로써 갱신될 수 있다. 한 실시예에서, 크리덴셜 갱신가능성은, 이전의 접근법들에 비해 스레딩 및 동기화 성능을 향상시키기 위하여 명시적인 "갱신가능" 플래그에 기초할 수 있다. 갱신가능한 윈도우에 대응하는 시간에 도달하면, 전송 디바이스는 갱신가능한 것으로 식별된 메시지 내에 현재의 마스터 토큰 및 키 요청 데이터를 포함할 수 있다. 이에 응답하여, 서버 머신(204)은 크리덴셜을 갱신할 것인지 및 언제 갱신할 것인지를 결정할 수 있다. 전형적으로, 서버 머신(204)은 재생가능한 것으로 식별된 메시지가 수신되는 시점에서 크리덴셜을 갱신할 수 있다. 서버 머신(204) 상에 상당한 계산 부하가 있는 경우 등의 일부 경우에, 서버 머신(204)은 크리덴셜 갱신을 나중의 시간까지 연기할 수 있다. 신뢰받는 서비스 네트워크에서 응답은 새로운 마스터 토큰을 포함하는 키 응답 데이터를 포함한다. 응답 또는 임의의 주어진 메시지의 인증은, 세션 키를 포함하는 현재의 마스터 토큰과 세션 키 자체의 이용의 조합을 통해 수행된다. 피어 투 피어 네트워크에서, 응답은 새로운 마스터 토큰을 포함하는 키 응답 데이터를 포함한다. 이 기술이 이제 설명된다.
도 4a 및 도 4b는 본 발명의 한 실시예에 따른 클라이언트 머신과 서버 머신 사이의 보안 통신을 갱신하기 위한 방법 단계들의 흐름도를 개시한다. 방법 단계들이 도 1 내지 도 2의 시스템과 연관하여 설명되었지만, 본 기술분야의 통상의 기술자라면, 이 방법 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도시된 바와 같이, 방법(400)은, 클라이언트 머신(202)은 현재의 마스터 토큰이 갱신가능하거나 만료되었다고 결정하는 단계 402에서 시작한다. 현재의 마스터 토큰은 시간의 경과 또는 명시된 양의 메시지 교환 후에 갱신되거나 만료될 수 있다. 단계 404에서, 클라이언트 머신(202)은 현재의 마스터 토큰 및 현재 사용자 ID 토큰을 회수한다. 단계 406에서, 클라이언트 머신(202)은 보안 통신 채널이 확립된 서버 머신(104)으로 향하는 키 요청을 생성한다. 단계 408에서, 클라이언트 머신(202)은, 현재의 마스터 토큰, 현재의 사용자 ID 토큰, 및 키 요청을 포함하는 갱신가능한 MSL 메시지를 서버 머신(204)에 전송한다. 일부 실시예들에서, MSL 메시지는 페이로드 데이터를 포함할 수 있다.
단계 410에서, 서버 머신(204)은 엔티티 인증 데이터 및 사용자 인증 데이터를 인증한다. 단계 412에서, 서버 머신(204)은 MSL 메시지를 암호해독하여 키 요청 및 선택사항적인 페이로드 데이터를 복구한다. 단계 414에서, 서버 머신(204)은 서버 머신(204)이 신뢰받는 서비스 네트워크를 통해 클라이언트 머신(202)과 통신하고 있는지를 결정한다. 서버 머신(204)이 신뢰받는 서비스 네트워크를 통해 클라이언트 머신(202)과 통신하고 있다면, 이 방법은 단계 416으로 진행하고, 여기서, 서버 머신(204)은 새로운 마스터 토큰을 포함하는 키 응답 데이터 및 새로운 사용자 ID 토큰을 생성한다. 단계 418에서, 서버 머신(204)은, 새로운 마스터 토큰을 포함한, 새로운 사용자 ID 토큰 및 키 응답 데이터를 포함하는 MSL 메시지를 생성한다. 일부 실시예에서, MSL 메시지는 세션 키 및 페이로드 데이터 중 하나 또는 양쪽 모두를 포함할 수 있다. 단계 420에서, 서버 머신(204)은 MSL 메시지를 클라이언트 머신(202)에 전송한다. 그 다음, 방법(400)은 종료한다.
단계 414로 돌아가서, 서버 머신(204)이 신뢰된 서비스 네트워크를 통해 클라이언트 머신(202)과 통신하지 않다면, 서버 머신(204)은 피어-투-피어 네트워크를 통해 클라이언트 머신(202)과 통신한다. 이러한 경우, 방법은 단계 422로 진행하여, 서버 머신(204)은 새로운 마스터 토큰을 포함하는 키 응답 데이터 및 새로운 사용자 ID 토큰을 생성한다. 단계 424에서, 서버 머신(204)은, 새로운 마스터 토큰을 포함한, 엔티티 인증 데이터 및 키 응답 데이터를 포함하는 MSL 메시지를 생성한다. 일부 실시예에서, MSL 메시지는 세션 키 및 페이로드 데이터 중 하나 또는 양쪽 모두를 포함할 수 있다. 단계 426에서, 서버 머신(204)은 MSL 메시지를 클라이언트 머신(202)에 전송한다. 그 다음, 방법(400)은 종료한다.
본 명세서에 설명된 기술들은 예시적이고, 변형 및 수정이 가능하다는 것을 이해할 것이다. 예를 들어, 기술들이 소정의 명시된 컴포넌트들과 함께 MSL 메시지들을 전송하는 것에 관해 기술되었지만, 인증 데이터, 키 데이터, 토큰 및 기타의 정보의 임의의 기술적으로 실현가능한 조합이 단일 MSL 메시지로 전송될 수 있다. 클라이언트 머신(202)과 서버 머신(204) 사이에서 보안 메시지를 교환하기 위한 특정한 실시예가 이제 설명된다.
도 5는 본 발명의 한 실시예에 따른 클라이언트 머신과 서버 머신 사이에서 보안 메시지를 교환하기 위한 방법 단계들의 흐름도를 개시한다. 방법 단계들이 도 1 내지 도 2의 시스템과 연관하여 설명되었지만, 본 기술분야의 통상의 기술자라면, 이 방법 단계들을 임의의 순서로 수행하도록 구성된 임의의 시스템이 본 발명의 범위 내에 있다는 것을 이해할 것이다.
도시된 바와 같이, 방법(500)은, 클라이언트 머신(202)이 키 교환 데이터, 엔티티 인증 데이터 및 페이로드 데이터를 생성하는 단계 502에서 시작한다. 일부 실시예에서, 클라이언트 머신(202)은 또한 사용자 인증 데이터를 생성한다. 단계 504에서, 클라이언트 머신(202)은, 키 교환 데이터, 엔티티 인증 데이터, 페이로드 데이터, 및 적용가능한 경우, 사용자 인증 데이터를, 클라이언트 머신(202)과 서버 머신(204) 사이에서 사전-공유되거나 사전-준비된 키들에 기초하여 MSL 메시지 내로 팩키징한다. 데이터를 MSL 메시지에 팩키징하는 것은 다음과 같은 것들을 포함한다:
(a) 사전-준비된 클라이언트 암호화 키를 이용한 MSL 메시지의 암호화; 및
(b) 사전-제공된 인증 키를 이용한 암호화된 MSL 메시지의 인증. 인증은, 제한없이, HMAC, RSA 서명 및 ECC 서명을 포함한, 임의의 기술적으로 실현가능한 접근법을 통해 달성될 수 있다. 단계 506에서, 클라이언트 머신(202)은, 암호화되고 인증된 MSL 메시지를 서버 머신(204)에 전송한다.
단계 508에서, 서버 머신(204)은 엔티티 인증 데이터를 인증한다. 일부 실시예에서, 서버 머신(204)은 또한, 사용자 인증 데이터를 인증한다. 단계 510에서, 서버 머신(204)은 사전-공유된 암호화 키를 이용하여 MSL 메시지를 암호해독한다. 단계 512에서, 서버 머신(204)은 키 교환 핸드쉐이크를 완료하여, 클라이언트로 반환될 키 교환 데이터를 생성하고, 세션 키를 생성한다. 단계 514에서, 서버 머신(204)은 마스터 토큰을 생성하고, 여기서, 마스터 토큰은 세션 키를 포함한다. 다양한 실시예들에서, 마스터 토큰은 또한, 제한없이, 클라이언트 머신(202) ID 및 마스터 토큰 발행자 ID 중 하나 또는 양쪽 모두와 연관된 식별자(ID), 마스터 토큰 갱신 시간, 마스터 토큰 만료 시간, 시퀀스 번호, 및 마스터 토큰 일련 번호를 포함할 수 있다. 단계 516에서, 서버 머신(204)은, 사용자 ID 토큰을 생성하고, 마스터 토큰 일련 번호를 이용하여 사용자 ID 토큰을 마스터 토큰에 바인딩한다. 다양한 실시예에서, 사용자 ID 토큰은, 마스터 토큰 일련 번호, 사용자 ID 만료 시간, 사용자 ID 갱신 시간, 사용자 ID 일련 번호, 및 사용자 데이터를 포함할 수 있다. 단계 518에서, 서버 머신(204)은 해독된 페이로드 데이터를 처리를 위해 애플리케이션 프로그램에 전달한다. 단계 520에서, 서버 머신(204)은, 마스터 토큰을 포함하는 키 교환 데이터를 포함하는 메시지를 클라이언트 머신에 전송한다. 메시지는 사용자 ID 토큰을 더 포함한다. 그 다음, 방법(500)은 종료한다.
일부 실시예에서, 서버 머신(204) 및 클라이언트 머신(202)은 사전-공유된 키를 교환하지 않았을 수도 있다. 이러한 실시예에서, 클라이언트 머신(202)은 키 교환 데이터를 생성할 수 있지만, 이 초기 단계에서 사용자 인증 데이터 또는 페이로드 데이터를 생성하지 않을 수도 있다. 클라이언트 머신(202)은 키 교환의 유일한 목적을 위해 키 교환 데이터를 MSL 메시지 내에 팩키징할 수 있다. 클라이언트 머신(202)은 MSL 메시지를 서버 머신(204)에 전송할 수 있다.
서버 머신(204)은 클라이언트에 반환할 키 교환 데이터를 생성함으로써 키 교환 핸드쉐이크를 완료하고, 세션 키를 생성할 수 있다. 서버 머신(204)은 마스터 토큰을 생성할 수 있고, 마스터 토큰은 세션 키를 포함한다. 서버 머신(204)은 마스터 토큰을 클라이언트 머신(202)에 반환할 수 있다.
그러면, 클라이언트 머신(202)은 사용자 인증 데이터 및 페이로드 데이터를 생성할 수 있다. 클라이언트 머신(202)은 마스터 토큰과 함께 페이로드 데이터를 팩키징할 수 있고 MSL 메시지를 생성할 수 있다. MSL 메시지 생성은 다음을 포함할 수 있다: (a) 키 교환 동안 생성된 암호화 키를 이용한 MSL 메시지의 암호화; 및 (b) 키 교환 동안 생성된 MAC 키를 이용한 암호화된 MSL 메시지의 인증. 클라이언트 머신(202)은, 암호화되고 인증된 MSL 메시지를 서버 머신(204)에 전송할 수 있다.
서버 머신(204)은 클라이언트로부터의 MSL 메시지를 인증 및 암호해독하는데 필요한 세션 키를 회수하기 위해 마스터 토큰을 암호해독할 수 있다. 서버 머신(204)은, 서버 머신(204)에 의해 회수되고 암호해독된 MAC 키를 이용하여 MSL 메시지를 인증할 수 있다. 서버 머신(204)은, 서버 머신(204)에 의해 회수되고 암호해독된 암호화 키를 이용하여 MSL 메시지를 암호해독할 수 있다. 서버 머신(204)은 사용자 ID 토큰을 생성하고, 마스터 토큰 일련 번호를 이용하여 사용자 ID 토큰을 마스터 토큰에 바인딩할 수 있다. 서버 머신(204)은 암호해독된 페이로드 데이터를 처리를 위해 애플리케이션 프로그램에 전달할 수 있다.
요컨대, 클라이언트 머신과 서버 머신 사이에 보안 통신 채널이 확립된다. 클라이언트 머신은, 인증 데이터, 키 세션에 대한 요청, 및 선택사항으로서, 페이로드 데이터를 단일 메시지로 서버에 전송한다. 서버는, 마스터 토큰, 사용자 ID 토큰, 세션 키, 및 선택사항으로서, 페이로드 데이터를 단일 메시지로 전송함으로써 응답한다. 보안 통신 채널을 갱신하기 위해, 클라이언트 머신은, 현재의 마스터 토큰 및 사용자 ID 토큰, 새로운 마스터 토큰에 대한 요청, 및 선택사항으로서 페이로드 데이터를 단일 메시지로 서버에 전송한다. 서버는, 새로운 마스터 토큰, 기타의 인증 데이터, 및 선택사항으로서 페이로드 데이터를 단일 메시지로 전송함으로써 응답한다.
개시된 접근법의 적어도 하나의 이점은, 보안 통신 세션이 확립되고 데이터가 단일 쌍의 메시지를 통해 교환되어, 종래의 접근법에 비해 개선된 레이턴시 및 효율로 이어진다는 것이다. 개시된 접근법의 또 다른 이점은, 크리덴셜이 갱신되고 새로운 마스터 토큰 및 세션 키가 수동 개입을 필요로 하지 않고 자동으로 발행된다는 것이다. 그 결과, 보안 통신은 종래의 방식에 비해 더 신뢰성있고 효율적이다.
다양한 실시예의 설명은 예시의 목적을 위해서 제시되었고, 철저히 남김없이 드러내거나 개시된 실시예로 제한하고자 하는 의도는 없다. 설명된 실시예들의 사상과 범위로부터 벗어나지 않고 많은 수정 및 변형이 본 기술분야의 통상의 기술자에게 명백할 것이다.
여기서 설명된 주제의 양태들은 다음과 같은 넘버링된 조항들에서 개시된다.
1. 명령어들을 포함하는 비일시적 컴퓨터-판독가능한 저장 매체를 포함하는 프로그램 제품으로서, 상기 명령어들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금: 클라이언트 머신을 식별하고 인증하는 엔티티 인증 데이터를 생성하는 단계; 상기 클라이언트 머신과 연관된 사용자를 식별하는 사용자 인증 데이터를 생성하는 단계; 상기 클라이언트 머신과 교환된 메시지들을 암호화하고 인증하기 위해 제1 복수의 세션 키들에 대한 제1 키 요청을 생성하는 단계; 및 상기 엔티티 인증 데이터, 상기 사용자 인증 데이터, 및 상기 제1 키 요청을 포함하는 제1 메시지를 서버 머신에 전송하는 단계를 수행하게 하는, 프로그램 제품.
2. 제1 조항에 있어서, 상기 제1 복수의 세션 키들을 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 상기 서버 머신으로부터 수신하는 단계를 더 포함하는, 프로그램 제품.
3. 제1 조항 또는 제2 조항에 있어서, 상기 제2 메시지는 상기 엔티티 인증 데이터를 더 포함하는, 프로그램 제품.
4. 제1 조항 내지 제3 조항 중 어느 하나에 있어서, 상기 제2 메시지는 제1 사용자 식별 토큰을 더 포함하는, 프로그램 제품.
5. 제1 조항 내지 제4 조항 중 어느 하나에 있어서, 상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계; 제2 복수의 세션 키들에 대한 제2 키 요청을 생성하는 단계; 및 상기 제1 마스터 토큰, 상기 제1 사용자 식별 토큰, 및 상기 제2 키 요청을 포함하는 제3 메시지를 상기 서버 머신에 전송하는 단계를 더 포함하는, 프로그램 제품.
6. 제1 조항 내지 제5 조항 중 어느 하나에 있어서, 상기 제3 메시지를 갱신가능한 것으로 식별하는 단계를 더 포함하는, 프로그램 제품.
7. 제1 조항 내지 제6 조항 중 어느 하나에 있어서, 상기 서버 머신으로부터, 상기 제2 복수의 세션 키들을 포함하는 제2 마스터 토큰을 포함하는 제4 메시지를 수신하는 단계를 더 포함하는, 프로그램 제품.
8. 제1 조항 내지 제7 조항 중 어느 하나에 있어서, 상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계는, 상기 제1 마스터 토큰의 수신에 후속하여 상기 클라이언트 머신과 상기 서버 머신 사이에서 임계 개수의 메시지가 교환되었다고 결정하는 단계를 포함하는, 프로그램 제품.
9. 제1 조항 내지 제8 조항 중 어느 하나에 있어서, 상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계는, 상기 제1 마스터 토큰의 수신에 후속하여 임계량의 시간이 경과했다고 결정하는 단계를 포함하는, 프로그램 제품.
10. 제1 조항 내지 제9 조항 중 어느 하나에 있어서, 상기 클라이언트 머신과 상기 서버 머신은 신뢰받는 서비스 네트워크를 통해 통신하는, 프로그램 제품.
11. 제1 조항 내지 제10 조항 중 어느 하나에 있어서, 상기 클라이언트 머신과 상기 서버 머신은 피어-투-피어 네트워크를 통해 통신하는, 프로그램 제품.
12. 제1 조항 내지 제11 조항 중 어느 하나에 있어서, 상기 제1 메시지는 페이로드 데이터를 더 포함하는, 프로그램 제품.
13. 서버 머신으로서, 프로세서; 및 상기 프로세서에 결합되고 베이스 인증 모듈; 키 유도 모듈; 및 키 교환 모듈을 포함하는 메모리를 포함하고, 상기 프로세서에 의해 실행될 때, 상기 베이스 인증 모듈은: 엔티티 인증 데이터, 사용자 인증 데이터, 및 제1 키 요청을 포함하는 제1 메시지를 클라이언트 머신으로부터 수신하고,상기 클라이언트 머신으로의 전송을 위한 개인 키를 포함하는 서명을 생성하도록 구성되고; 상기 프로세서에 의해 실행될 때, 상기 키 유도 모듈은: 상기 제1 키 요청에 응답하여 제1 세트의 세션 키를 생성하도록 구성되며;상기 프로세서에 의해 실행될 때, 상기 키 교환 모듈은: 상기 개인 키 및 상기 제1 세트의 세션 키들을 포함하는 제2 메시지를 상기 클라이언트 머신에 전송하도록 구성된, 서버 머신.
14. 제13 조항에 있어서, 상기 메모리는 마스터 토큰 생성기를 더 포함하고, 상기 프로세서에 의해 실행될 때, 상기 마스터 토큰 생성기는 제1 마스터 토큰을 생성하도록 구성되고, 상기 제2 메시지는 상기 제1 마스터 토큰을 더 포함하는, 서버 머신.
15. 제13 조항 또는 제14 조항에 있어서, 상기 메모리는 사용자 식별 토큰 생성기를 더 포함하고, 상기 프로세서에 의해 실행될 때, 상기 사용자 식별 토큰 생성기는 제1 사용자 식별 토큰을 생성하도록 구성되고,상기 제2 메시지는 상기 제1 사용자 식별 토큰을 더 포함하는, 서버 머신.
16. 컴퓨터 구현된 방법으로서, 애플리케이션 프로그램을 통해, 보안 메시지를 서버 머신에 전송하라는 요청을 수신하는 단계; 사용자 인증 데이터, 엔티티 인증 데이터, 키 교환 데이터, 및 암호화된 메시지 데이터 중 적어도 2개를 포함하는 제1 메시지를 포함하는 복수의 메시지를 상기 서버 머신에 전송하는 단계; 상기 서버 머신과 교환된 메시지를 암호화하고 인증하기 위한 제1 세트의 세션 키를 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 상기 서버 머신으로부터 수신하는 단계를 포함하는 방법.
17. 제16 조항에 있어서, 상기 복수의 메시지에 포함된 메시지가 갱신가능한 것으로 식별된다면, 시간 ―상기 시간 이후에, 상기 제1 마스터 토큰이 갱신됨― 을 정의하는 갱신 윈도우 내에 현재 시간이 속한다고 결정하는 단계를 더 포함하는 방법.
18. 제16 조항 또는 제17 조항에 있어서, 상기 복수의 메시지에 포함된 제2 메시지를 갱신가능한 것으로 식별하는 단계; 및 상기 제2 메시지를 상기 서버 머신에 전송하는 단계를 더 포함하는 방법.
19. 제16 조항 내지 제18 조항 중 어느 하나에 있어서, 상기 서버 머신과 교환된 메시지를 암호화 및 인증하기 위한 제2 세트의 세션 키를 포함하는 제2 마스터 토큰을 포함하는 갱신된 크리덴셜 세트를 상기 서버 머신으로부터 수신하는 단계를 더 포함하고, 상기 제2 마스터 토큰은 상기 제1 마스터 토큰 마스터 토큰을 대체하고 상기 제2 세트의 세션 키는 상기 제1 세트의 세션 키를 대체하는, 방법.
20. 제16 조항 내지 제19 조항 중 어느 하나에 있어서, 상기 복수의 메시지는, 상기 갱신된 크리덴셜 세트를 수신하기 전에 상기 제1 마스터 토큰과 연관되고 상기 서버 머신에 전송되는 하나 이상의 추가 메시지들을 포함하는, 방법.
본 실시예의 양태들은, 시스템, 방법 또는 컴퓨터 프로그램 제품으로서 구체화될 수 있다. 따라서, 본 개시내용의 양태들은, 완전히 하드웨어 실시예, (펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함한) 완전히 소프트웨어 실시예, 또는 여기서는 일반적으로 "회로", "모듈" 또는 "시스템"이라 부를 수 있는 소프트웨어 및 하드웨어 양태를 결합한 실시예의 형태를 취할 수 있다. 또한, 본 개시내용의 양태들은, 컴퓨터-판독가능한 프로그램 코드가 구현된 하나 이상의 컴퓨터-판독가능한 매체(들)로 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 이상의 컴퓨터-판독가능한 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터-판독가능한 매체는 컴퓨터-판독가능한 신호 매체 또는 컴퓨터-판독가능한 저장 매체일 수 있다. 컴퓨터-판독가능한 저장 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 이들의 임의의 적절한 조합일 수 있지만, 이것으로 제한되는 것은 아니다. 컴퓨터-판독가능한 저장 매체의 더 구체적인 예들(빠짐없는 열거된 목록은 아님)은, 하나 이상의 와이어를 갖는 전기적 접속, 휴대형 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능하고 프로그램가능한 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대형 컴팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 자기 저장 디바이스, 또는 이들의 임의의 적절한 조합을 포함할 것이다. 본 명세서의 정황에서, "컴퓨터-판독가능한 저장 매체"는, 명령어 실행 시스템, 장치, 또는 디바이스에 의해 사용되거나 이와 연계하여 사용되는 프로그램을 포함하거나 저장할 수 있는 임의의 유형의 매체(tangible medium)일 수 있다.
본 개시내용의 양태들이, 본 개시내용의 실시예들에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 플로차트 예시 및/또는 블록도를 참조하여 전술되었다. 플로차트 예시 및/또는 블록도의 각각의 블록, 및 플로차트 예시 및/또는 블록도 내의 블록들의 조합은 컴퓨터 프로그램 명령어들에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어는, 범용 컴퓨터, 특별 목적 컴퓨터, 또는 기타의 프로그램가능한 데이터 처리 장치의 프로세서에 제공되어, 컴퓨터 또는 기타의 프로그램가능한 데이터 처리 장치의 프로세서를 이용하여 실행되는 명령어들이 플로차트 및/또는 블록도의 블록이나 블록들에 명시된 기능/작용의 구현을 가능하게 하는 머신을 생성할 수 있다. 이러한 프로세서는, 제한 없이, 범용 프로세서, 특별-목적 프로세서, 주문형 프로세서, 또는 필드-프로그래머블 프로세서 또는 게이트 어레이일 수 있으나, 이것으로 제한되는 것은 아니다.
도면들 내의 플로차트 및 블록도는, 본 개시내용의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현들의 아키텍쳐, 기능, 및 동작을 예시한다. 이 점에서, 플로차트 또는 블록도 내의 각각의 블록은, 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능한 명령어들을 포함하는, 모듈, 세그먼트, 또는 코드의 일부를 나타낼 수 있다. 일부 대안적 구현예에서, 블록 내에 표기된 기능들은 도면들에 표기된 순서와는 다른 순서로 발생할 수 있다는 점에 유의해야 한다. 예를 들어, 연속적으로 도시된 2개의 블록은, 사실상, 포함된 기능에 따라, 실질적으로 동시에 실행되거나, 때때로 역순으로 실행될 수도 있다. 블록도 및/또는 흐름도의 각각의 블록과 블록도 및/또는 흐름도 내의 블록들의 조합은 명시된 기능이나 작용을 수행하는 특별 목적 하드웨어-기반의 시스템, 또는 특별 목적 하드웨어와 컴퓨터 명령어들의 조합에 의해 구현될 수 있다는 점에 역시 유의한다.
전술된 내용은 본 개시내용의 실시예들에 관한 것이지만, 본 개시내용의 기본 범위를 벗어나지 않고 본 발명의 다른 실시예 및 추가 실시예가 고안될 수 있으며, 그 범위는 이하의 청구항들에 의해 결정된다.

Claims (20)

  1. 명령어들을 포함하는 비일시적 컴퓨터-판독가능한 저장 매체로서, 상기 명령어들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    클라이언트 머신을 식별하고 인증하는 엔티티 인증 데이터를 생성하는 단계;
    상기 클라이언트 머신과 연관된 사용자를 식별하는 사용자 인증 데이터를 생성하는 단계;
    상기 클라이언트 머신과 교환된 메시지들을 암호화하고 인증하기 위해 제1 복수의 세션 키를 생성하기 위한 제1 키 요청을 생성하는 단계; 및
    상기 엔티티 인증 데이터, 상기 사용자 인증 데이터, 상기 제1 키 요청, 및 페이로드 데이터를 포함하는 제1 메시지를 서버 머신에 전송하는 단계
    를 수행하게 하고,
    상기 전송하는 단계 이전에, 상기 제1 메시지는 사전-준비된 암호화 키를 이용하여 암호화되고,
    상기 제1 복수의 세션 키는 상기 키 요청 및 상기 페이로드 데이터를 검색하기 위해 상기 제1 메시지를 암호해독하는 것, 상기 제1 메시지에 포함된 상기 엔티티 인증 데이터에 기초하여 상기 클라이언트 머신을 인증하는 것, 및 상기 제1 메시지에 포함된 사용자 인증된 데이터에 기초하여 상기 클라이언트 머신과 연관된 사용자를 인증하는 것에 기초하여 생성되는, 비일시적 컴퓨터-판독가능한 저장 매체.
  2. 제1항에 있어서, 상기 제1 복수의 세션 키를 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 상기 서버 머신으로부터 수신하는 단계를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  3. 제2항에 있어서, 상기 제2 메시지는 상기 엔티티 인증 데이터를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  4. 제2항에 있어서, 상기 제2 메시지는 제1 사용자 식별 토큰을 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  5. 제4항에 있어서,
    상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계;
    제2 복수의 세션 키에 대한 제2 키 요청을 생성하는 단계; 및
    상기 제1 마스터 토큰, 상기 제1 사용자 식별 토큰, 및 상기 제2 키 요청을 포함하는 제3 메시지를 상기 서버 머신에 전송하는 단계
    를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  6. 제5항에 있어서,
    상기 제3 메시지를 갱신가능한 것으로 식별하는 단계를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  7. 제5항에 있어서, 상기 서버 머신으로부터, 상기 제2 복수의 세션 키를 포함하는 제2 마스터 토큰을 포함하는 제4 메시지를 수신하는 단계를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  8. 제5항에 있어서, 상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계는, 상기 제1 마스터 토큰의 수신에 후속하여 상기 클라이언트 머신과 상기 서버 머신 사이에서 임계 개수의 메시지가 교환되었다고 결정하는 단계를 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  9. 제5항에 있어서, 상기 제1 마스터 토큰이 갱신가능하다고 결정하는 단계는, 상기 제1 마스터 토큰의 수신에 후속하여 임계량의 시간이 경과했다고 결정하는 단계를 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  10. 제2항에 있어서, 상기 클라이언트 머신과 상기 서버 머신은 신뢰받는 서비스 네트워크를 통해 통신하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  11. 제2항에 있어서, 상기 클라이언트 머신과 상기 서버 머신은 피어-투-피어 네트워크를 통해 통신하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  12. 제1항에 있어서, 상기 제1 메시지는 페이로드 데이터를 추가로 포함하는, 비일시적 컴퓨터-판독가능한 저장 매체.
  13. 서버 머신으로서,
    프로세서; 및
    상기 프로세서에 결합되고 베이스 인증 모듈; 키 유도 모듈; 및 키 교환 모듈을 포함하는 메모리
    를 포함하고, 상기 프로세서에 의해 실행될 때, 상기 베이스 인증 모듈은:
    엔티티 인증 데이터, 사용자 인증 데이터, 및 클라이언트 머신과 교환된 메시지들을 암호화하고 인증하기 위해 제1 복수의 세션 키를 생성하기 위한 제1 키 요청을 포함하는 제1 메시지를 상기 클라이언트 머신으로부터 수신하고 - 상기 제1 메시지는, 전송 전에, 사전 준비된 암호화 키를 이용하여 암호화됨 -,
    상기 키 요청 및 페이로드 데이터를 검색하기 위해 상기 제1 메시지를 암호해독하고,
    상기 제1 메시지에 포함된 상기 엔티티 인증 데이터에 기초하여 상기 클라이언트 머신을 인증하고,
    상기 제1 메시지에 포함된 사용자 인증된 데이터에 기초하여 상기 클라이언트 머신과 연관된 사용자를 인증하고,
    상기 클라이언트 머신으로의 전송을 위한 개인 키를 포함하는 서명을 생성하도록 구성되고;
    상기 프로세서에 의해 실행될 때, 상기 키 유도 모듈은:
    상기 제1 키 요청을 암호해독하는 것, 상기 클라이언트 머신을 인증하는 것, 및 상기 클라이언트 머신과 연관된 사용자를 인증하는 것에 응답하여, 상기 제1 복수의 세션 키를 생성하도록 구성되며;
    상기 프로세서에 의해 실행될 때, 상기 키 교환 모듈은:
    상기 개인 키 및 상기 제1 복수의 세션 키들을 포함하는 제2 메시지를 상기 클라이언트 머신에 전송하도록 구성된, 서버 머신.
  14. 제13항에 있어서,
    상기 메모리는 마스터 토큰 생성기를 추가로 포함하고, 상기 프로세서에 의해 실행될 때, 상기 마스터 토큰 생성기는 제1 마스터 토큰을 생성하도록 구성되고,
    상기 제2 메시지는 상기 제1 마스터 토큰을 추가로 포함하는, 서버 머신.
  15. 제13항에 있어서,
    상기 메모리는 사용자 식별 토큰 생성기를 추가로 포함하고, 상기 프로세서에 의해 실행될 때, 상기 사용자 식별 토큰 생성기는 제1 사용자 식별 토큰을 생성하도록 구성되고,
    상기 제2 메시지는 상기 제1 사용자 식별 토큰을 추가로 포함하는, 서버 머신.
  16. 컴퓨터에 의해 구현되는 방법으로서,
    애플리케이션 프로그램을 통해, 보안 메시지를 서버 머신에 전송하라는 요청을 수신하는 단계;
    상기 서버 머신과 교환된 메시지들을 암호화하고 인증하기 위한 제1 복수의 세션 키를 생성하기 위한 제1 키 요청, 및 사용자 인증 데이터, 엔티티 인증 데이터, 키 교환 데이터, 및 암호화된 메시지 데이터 중 적어도 하나를 포함하는 제1 메시지를 포함하는 복수의 메시지를 상기 서버 머신에 전송하는 단계 - 상기 전송하는 단계 이전에, 상기 제1 메시지는 사전-준비된 암호화 키를 이용하여 암호화됨 -; 및
    상기 제1 복수의 세션 키를 포함하는 제1 마스터 토큰을 포함하는 제2 메시지를 상기 서버 머신으로부터 수신하는 단계 - 상기 제1 복수의 세션 키는 상기 키 요청 및 페이로드 데이터를 검색하기 위해 상기 제1 메시지를 암호해독하는 것, 상기 제1 메시지에 포함된 상기 엔티티 인증 데이터에 기초하여 클라이언트 머신을 인증하는 것, 및 상기 제1 메시지에 포함된 사용자 인증된 데이터에 기초하여 상기 클라이언트 머신과 연관된 사용자를 인증하는 것에 기초하여 생성됨 -
    를 포함하는 방법.
  17. 제16항에 있어서, 상기 복수의 메시지에 포함된 메시지가 갱신가능한 것으로 식별되면, 시간 ―상기 시간 이후에, 상기 제1 마스터 토큰이 갱신됨― 을 정의하는 갱신 윈도우 내에 현재 시간이 속한다고 결정하는 단계를 추가로 포함하는 방법.
  18. 제17항에 있어서,
    상기 복수의 메시지에 포함된 제2 메시지를 갱신가능한 것으로 식별하는 단계; 및
    상기 제2 메시지를 상기 서버 머신에 전송하는 단계
    를 추가로 포함하는 방법.
  19. 제18항에 있어서, 상기 서버 머신과 교환된 메시지들을 암호화 및 인증하기 위한 제2 복수의 세션 키를 포함하는 제2 마스터 토큰을 포함하는 갱신된 크리덴셜(credential) 세트를 상기 서버 머신으로부터 수신하는 단계를 추가로 포함하고, 상기 제2 마스터 토큰은 상기 제1 마스터 토큰 마스터 토큰을 대체하고 상기 제2 복수의 세션 키는 상기 제1 복수의 세션 키를 대체하는, 방법.
  20. 제19항에 있어서, 상기 복수의 메시지는, 상기 갱신된 크리덴셜 세트를 수신하기 전에 상기 제1 마스터 토큰과 연관되고 상기 서버 머신에 전송되는 하나 이상의 추가 메시지들을 포함하는, 방법.
KR1020177013996A 2014-10-24 2015-10-23 보안 접속 및 관련 서비스를 위한 효율적인 개시 KR102015201B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462068504P 2014-10-24 2014-10-24
US62/068,504 2014-10-24
US14/920,641 2015-10-22
US14/920,641 US10050955B2 (en) 2014-10-24 2015-10-22 Efficient start-up for secured connections and related services
PCT/US2015/057213 WO2016065318A1 (en) 2014-10-24 2015-10-23 Efficient start-up for secured connections and related services

Publications (2)

Publication Number Publication Date
KR20170076742A KR20170076742A (ko) 2017-07-04
KR102015201B1 true KR102015201B1 (ko) 2019-10-21

Family

ID=54427886

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177013996A KR102015201B1 (ko) 2014-10-24 2015-10-23 보안 접속 및 관련 서비스를 위한 효율적인 개시

Country Status (7)

Country Link
US (1) US10050955B2 (ko)
EP (1) EP3210335B1 (ko)
KR (1) KR102015201B1 (ko)
CN (1) CN107005413B (ko)
AU (2) AU2015335689B2 (ko)
DK (1) DK3210335T3 (ko)
WO (1) WO2016065318A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9893883B1 (en) * 2015-06-26 2018-02-13 Juniper Networks, Inc. Decryption of secure sockets layer sessions having enabled perfect forward secrecy using a diffie-hellman key exchange
US10291651B1 (en) 2015-06-26 2019-05-14 Juniper Networks, Inc. Unified secure socket layer decryption
US10193698B1 (en) 2015-06-26 2019-01-29 Juniper Networks, Inc. Avoiding interdicted certificate cache poisoning for secure sockets layer forward proxy
US10504179B1 (en) 2015-12-08 2019-12-10 Fmr Llc Social aggregated fractional equity transaction partitioned acquisition apparatuses, methods and systems
US10644885B2 (en) * 2015-07-14 2020-05-05 Fmr Llc Firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
US10778439B2 (en) * 2015-07-14 2020-09-15 Fmr Llc Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
US10461940B2 (en) * 2017-03-10 2019-10-29 Fmr Llc Secure firmware transaction signing platform apparatuses, methods and systems
US10992469B2 (en) * 2015-07-14 2021-04-27 Fmr Llc Seed splitting and firmware extension for secure cryptocurrency key backup, restore, and transaction signing platform apparatuses, methods and systems
US10129228B1 (en) * 2016-03-30 2018-11-13 Amazon Technologies, Inc. Authenticated communication between devices
US20190268145A1 (en) * 2016-06-28 2019-08-29 Verimatrix Gmbh Systems and Methods for Authenticating Communications Using a Single Message Exchange and Symmetric Key
EP3299988B1 (en) * 2016-09-22 2021-03-10 MARICI Holdings The Netherlands B.V. Secure communication method and system
US10615970B1 (en) * 2017-02-10 2020-04-07 Wells Fargo Bank, N.A. Secure key exchange electronic transactions
US10615969B1 (en) 2017-02-10 2020-04-07 Wells Fargo Bank, N.A. Database encryption key management
US10868673B2 (en) 2017-09-25 2020-12-15 Sap Se Network access control based on distributed ledger
CN108092996B (zh) * 2018-01-29 2020-02-28 平安科技(深圳)有限公司 一种鉴权通道选取方法及终端设备
EP3759867A4 (en) * 2018-03-02 2021-11-03 Nitto Denko Corporation SYSTEM AND METHOD FOR SECURING DATA COMMUNICATION BETWEEN COMPUTERS
US10819689B2 (en) * 2018-05-03 2020-10-27 Honeywell International Inc. Systems and methods for encrypted vehicle data service exchanges
WO2019223851A1 (en) * 2018-05-21 2019-11-28 ComAp a.s. Method and system for creating a secure communication channel
KR102115828B1 (ko) * 2018-06-08 2020-05-27 금오공과대학교 산학협력단 블록체인을 기반으로 한 시험지 유출 방지 방법
US11138132B2 (en) * 2018-06-20 2021-10-05 Intel Corporation Technologies for secure I/O with accelerator devices
US11336430B2 (en) * 2018-09-07 2022-05-17 Sap Se Blockchain-incorporating distributed authentication system
CN109167802B (zh) * 2018-11-08 2021-07-13 金蝶软件(中国)有限公司 防止会话劫持的方法、服务器以及终端
EP3881517A4 (en) * 2018-11-15 2022-01-12 Visa International Service Association RISK-SENSITIVE COLLABORATIVE AUTHENTICATION
US11206131B1 (en) * 2019-05-17 2021-12-21 Wells Fargo Bank, N.A. Post quantum unique key per token system
WO2021102023A1 (en) * 2019-11-19 2021-05-27 Arris Enterprises Llc Transmission of secure information in a content distribution network
IL276868A (en) * 2020-08-23 2022-03-01 Google Llc Processing requests to control information stored on multiple servers
CN113542150B (zh) * 2021-07-14 2023-06-02 杭州海康威视数字技术股份有限公司 一种数据传输方法、装置及中心端网桥

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080212771A1 (en) * 2005-10-05 2008-09-04 Privasphere Ag Method and Devices For User Authentication
US20130268767A1 (en) * 2012-04-09 2013-10-10 Mcafee, Inc. Wireless token authentication
US20140019753A1 (en) * 2012-07-10 2014-01-16 John Houston Lowry Cloud key management

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290288B2 (en) * 1997-06-11 2007-10-30 Prism Technologies, L.L.C. Method and system for controlling access, by an authentication server, to protected computer resources provided via an internet protocol network
US6510236B1 (en) 1998-12-11 2003-01-21 International Business Machines Corporation Authentication framework for managing authentication requests from multiple authentication devices
US7523490B2 (en) 2002-05-15 2009-04-21 Microsoft Corporation Session key security protocol
US20040054898A1 (en) 2002-08-28 2004-03-18 International Business Machines Corporation Authenticating and communicating verifiable authorization between disparate network domains
US7706540B2 (en) * 2002-12-16 2010-04-27 Entriq, Inc. Content distribution using set of session keys
KR100523357B1 (ko) 2003-07-09 2005-10-25 한국전자통신연구원 이더넷 기반 수동형 광네트워크의 보안서비스 제공을 위한키관리 장치 및 방법
EP1719316B1 (en) * 2003-12-29 2012-05-23 Telefonaktiebolaget LM Ericsson (publ) Means and method for single sign-on access to a service network through an access network
US8621201B2 (en) 2005-06-29 2013-12-31 Telecom Italia S.P.A. Short authentication procedure in wireless data communications networks
CN101278538A (zh) * 2005-10-05 2008-10-01 普里瓦斯菲尔公司 用于用户认证的方法和设备
US20070130463A1 (en) * 2005-12-06 2007-06-07 Eric Chun Wah Law Single one-time password token with single PIN for access to multiple providers
US20080034216A1 (en) 2006-08-03 2008-02-07 Eric Chun Wah Law Mutual authentication and secure channel establishment between two parties using consecutive one-time passwords
CN101064695A (zh) * 2007-05-16 2007-10-31 杭州看吧科技有限公司 一种P2P(Peer to Peer)安全连接的方法
FR2916592B1 (fr) 2007-05-25 2017-04-14 Groupe Des Ecoles De Telecommunications(Get)-Ecole Nat Superieure Des Telecommunications(Enst) Procede de securisation d'echange d'information,dispositif, et produit programme d'ordinateur correspondant
CN101674304B (zh) * 2009-10-15 2013-07-10 浙江师范大学 一种网络身份认证系统及方法
US8607317B2 (en) * 2009-10-28 2013-12-10 Blackberry Limited Automatic user authentication and identification for mobile instant messaging application
EP2334008A1 (en) * 2009-12-10 2011-06-15 Tata Consultancy Services Limited A system and method for designing secure client-server communication protocols based on certificateless public key infrastructure
US8868923B1 (en) * 2010-07-28 2014-10-21 Sandia Corporation Multi-factor authentication
US8627422B2 (en) 2010-11-06 2014-01-07 Qualcomm Incorporated Authentication in secure user plane location (SUPL) systems
US8713589B2 (en) * 2010-12-23 2014-04-29 Microsoft Corporation Registration and network access control
US9094212B2 (en) * 2011-10-04 2015-07-28 Microsoft Technology Licensing, Llc Multi-server authentication token data exchange
US8924712B2 (en) * 2011-11-14 2014-12-30 Ca, Inc. Using QR codes for authenticating users to ATMs and other secure machines for cardless transactions
US9177169B2 (en) * 2012-02-13 2015-11-03 Wwpass Corporation Secure digital storage
US9537899B2 (en) 2012-02-29 2017-01-03 Microsoft Technology Licensing, Llc Dynamic selection of security protocol
WO2014198745A1 (en) * 2013-06-12 2014-12-18 Telecom Italia S.P.A. Mobile device authentication in heterogeneous communication networks scenario
CN103491084B (zh) * 2013-09-17 2016-06-15 天脉聚源(北京)传媒科技有限公司 一种客户端的认证处理方法及装置
US11349675B2 (en) * 2013-10-18 2022-05-31 Alcatel-Lucent Usa Inc. Tamper-resistant and scalable mutual authentication for machine-to-machine devices
CA2942765C (en) * 2014-03-16 2022-05-17 Ric B. Richardson Persistent authentication system incorporating one time pass codes
US11120436B2 (en) * 2015-07-17 2021-09-14 Mastercard International Incorporated Authentication system and method for server-based payments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080212771A1 (en) * 2005-10-05 2008-09-04 Privasphere Ag Method and Devices For User Authentication
US20130268767A1 (en) * 2012-04-09 2013-10-10 Mcafee, Inc. Wireless token authentication
US20140019753A1 (en) * 2012-07-10 2014-01-16 John Houston Lowry Cloud key management

Also Published As

Publication number Publication date
US10050955B2 (en) 2018-08-14
US20160119318A1 (en) 2016-04-28
CN107005413A (zh) 2017-08-01
CN107005413B (zh) 2021-03-12
AU2018204851A1 (en) 2018-07-19
AU2015335689A1 (en) 2017-05-11
WO2016065318A1 (en) 2016-04-28
DK3210335T3 (da) 2020-08-24
AU2015335689B2 (en) 2018-04-05
EP3210335A1 (en) 2017-08-30
KR20170076742A (ko) 2017-07-04
EP3210335B1 (en) 2020-06-24

Similar Documents

Publication Publication Date Title
KR102015201B1 (ko) 보안 접속 및 관련 서비스를 위한 효율적인 개시
US11533297B2 (en) Secure communication channel with token renewal mechanism
US10785019B2 (en) Data transmission method and apparatus
US11399019B2 (en) Failure recovery mechanism to re-establish secured communications
US9887838B2 (en) Method and device for secure communications over a network using a hardware security engine
US8130961B2 (en) Method and system for client-server mutual authentication using event-based OTP
US8670563B2 (en) System and method for designing secure client-server communication protocols based on certificateless public key infrastructure
JP2023501449A (ja) エフェメラル鍵を用いたトランスポート層セキュリティにおける前方秘匿性
JP5845393B2 (ja) 暗号通信装置および暗号通信システム
US20130191632A1 (en) System and method for securing private keys issued from distributed private key generator (d-pkg) nodes
CA2990656A1 (en) Mutual authentication of confidential communication
CN110635901B (zh) 用于物联网设备的本地蓝牙动态认证方法和系统
WO2016098303A1 (ja) 署名検証装置、署名生成装置、署名処理システム、署名検証方法及び署名生成方法
CN106941404B (zh) 密钥保护方法及装置
US12010216B2 (en) Computer-implemented system and method for highly secure, high speed encryption and transmission of data
US20200195446A1 (en) System and method for ensuring forward & backward secrecy using physically unclonable functions
CN110138772A (zh) 一种通信方法、装置、系统、设备和存储介质
US10291600B2 (en) Synchronizing secure session keys
JP6167990B2 (ja) 署名検証システム、検証装置、及び署名検証方法
TWI804179B (zh) 量子安全金鑰交換方案
CN117879920A (zh) 基于国密算法的消息加密方法、装置、电子设备和介质
KR20240135040A (ko) 매우 안전한, 데이터의 고속 암호화 및 전송을 위한 컴퓨터-구현 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant