KR20200127201A - 컴퓨터 간의 데이터 통신을 보안하기 위한 시스템 및 방법 - Google Patents

컴퓨터 간의 데이터 통신을 보안하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200127201A
KR20200127201A KR1020207027231A KR20207027231A KR20200127201A KR 20200127201 A KR20200127201 A KR 20200127201A KR 1020207027231 A KR1020207027231 A KR 1020207027231A KR 20207027231 A KR20207027231 A KR 20207027231A KR 20200127201 A KR20200127201 A KR 20200127201A
Authority
KR
South Korea
Prior art keywords
computer
data
key
token
encrypted
Prior art date
Application number
KR1020207027231A
Other languages
English (en)
Inventor
무티타 돈솜사쿤키즈
디수안 네트시리닌쿨
수완 분프램
죽크릿 유엔
주그크리 나 아유타야 프랄라카웡
Original Assignee
닛토덴코 가부시키가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 닛토덴코 가부시키가이샤 filed Critical 닛토덴코 가부시키가이샤
Publication of KR20200127201A publication Critical patent/KR20200127201A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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)
    • H04L9/0825Key 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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • 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/045Network 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 hybrid encryption, i.e. combination of symmetric and asymmetric encryption
    • 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/14Session management
    • H04L67/141Setup of application sessions
    • 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)
    • H04L9/0827Key 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) involving distinctive intermediate devices or communication paths
    • 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/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/88Medical equipments

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Power Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

본 개시의 측면은 일반적으로 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이의 데이터 통신을 보안하기 위한 컴퓨터 시스템(100) 및 방법(200)에 관한 것이다. 방법(200)은: 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 의해, 제1 컴퓨터(110)로부터 제2 컴퓨터(120)로 제1 데이터를 통신하기 위한 제1 데이터 통신 명령을 협력적으로 실행(202)하는 단계; 제1 컴퓨터(110)에 의해 제1 세션 키를 생성(204)하는 단계; 제1 컴퓨터(110)에 의해, 제1 세션 키를 사용하여 제1 데이터를 암호화(206)하는 단계; 제1 컴퓨터(110)에 의해 제1 공개 키를 사용하여 제1 세션 키를 암호화하는 단계(208) - 제1 공개 키는 제2 컴퓨터(120)에 대해 생성된 제1 개인 키와 쌍을 이룸 -; 암호화된 제1 데이터 및 제1 세션 키를 제1 컴퓨터(110)로부터 제2 컴퓨터(120)로 전송(210)하는 단계; 제2 컴퓨터(120)에 의해, 제1 개인 키를 사용하여 암호화된 제1 세션 키를 복호화(212)하는 단계; 제2 컴퓨터(120)에 의해, 복호화된 제1 세션 키를 사용하여 암호화된 제1 데이터를 복호화(214)하는 단계; 및 제2 컴퓨터(120)에 의해, 제1 데이터 통신 명령에 기초하여 복호화된 제1 데이터를 처리하는 단계(216)를 포함한다.

Description

컴퓨터 간의 데이터 통신을 보안하기 위한 시스템 및 방법
본 개시는 일반적으로 컴퓨터 사이의 데이터 통신을 보안하기 위한 시스템 및 방법에 관한 것이다. 보다 구체적으로, 본 개시는 암호화 및 복호화를 위한 다양한 보안 키(security key)를 사용하여, 로컬 클라이언트 컴퓨터(local client computer)와 원격 컴퓨터 서버(remote computer server), 예를 들어 클라우드 기반 서버 또는 플랫폼 사이의 데이터 통신을 보안하기 위한 시스템 및 방법의 다양한 실시예를 설명한다.
본 개시 내용은 2018 년 3 월 2 일에 출원된 싱가포르 특허 출원 번호 10201801747W의 이익을 주장하여, 전체가 여기에 참조로 포함된다.
많은 경우에, 컴퓨터 간의 데이터 통신은 암호화되지 않으며, 특히 데이터 통신에 기밀(confidential)/민감한 정보(sensitive information)가 포함된 경우 메시지 가로 채기(man-in-the-middle) 공격과 같은 보안 위험이 발생할 수 있다.
이 현대적인 환경에서, 개인 및 기업을 포함한 사용자가 데이터 저장 또는 정보 공유와 같은 다양한 목적으로 클라우드 기반 플랫폼을 사용하는 것이 일반적이다. 클라우드 컴퓨팅 서비스에 대한 증가하는 요구를 충족하기 위해 다양한 클라우드 컴퓨팅 플랫폼이 등장했다.
클라우드 컴퓨팅 서비스는 크게 높은 수준과 낮은 수준의 서비스로 나눌 수 있다. 높은 수준의 서비스는 일반적으로 기업이나 조직에 적합하다. 일반적으로 최종 사용자 응용 프로그램에 대한 사용자 지정에는 제한이 있으며 상위 수준 서비스는 하위 수준 서비스와의 직접적인 상호 작용 또는 액세스를 허용하지 않는다. 하위 수준 서비스는 일반적으로 다른 소스에서 직접 추출한 원시 데이터를 제공한다. 기업은 일반적으로 기밀/독점 정보의 저장, 액세스 및 처리를 포함한 다양한 기능을 수행하는 컴퓨터 시스템을 가지고 있다. 기밀 정보에는 의료 또는 개인 정보가 포함될 수 있다. 미국의 의료보험의 휴대성 및 책임에 관한 법률(Health Insurance Portability and Accountability Act)(HIPAA) 및 유럽의 일반 개인정보 보호법(General Data Protection Regulation)(GDPR)과 같이 부정 사용(fraud usage)을 방지하기 위해 의료 정보를 보호하기 위해 여러 정부 정책 및 규정이 마련되어 있다. 이러한 규정은 제3 자 출처에 제공되는 의료 정보에 특정 보안 요구 사항을 부과한다.
기업은 기존의 비즈니스 환경을 넘어 진화함에 따라 점점 더 클라우드 컴퓨팅 서비스를 사용하고 있다. 일부 비즈니스는 의료 및/또는 개인 데이터와 같은 민감한 정보에 액세스 하려는 다른 당사자와 협력해야 할 수 있다. 일부 당사자는 보험 정책을 위해 정보를 사용하는 것과 같은 합법적인 의도를 가질 수 있지만, 불신하거나 악의적인 의도를 가진 당사자가 있을 수 있다. 이러한 당사자는 클라우드 컴퓨팅 서비스를 통해 정보를 통신하는 동안 민감한 정보에 대한 액세스를 시도할 수 있다. 따라서 보호를 위해 통신 또는 다른 당사자에게 배포하기 전에 데이터/정보의 일부 암호화가 필요하다.
생명 징후(vital sign), 개인 데이터 및 기타 민감한 정보를 기반으로 한 의료 정보, 측정 또는 원시 데이터와 같은 기밀/민감한 정보의 보호는 이러한 기밀/민감한 정보가 알 수 없는 사용자의 무단 액세스의 가능성이 있으므로 중요하다. 키 기반 암호화 프로세스와 같은 기술은 사용자 요구를 충족시키기 위해 클라우드 컴퓨팅 서비스를 사용하여 전달되는 데이터를 보안하는 데 사용될 수 있다. 그러나 이러한 암호화 접근 방식은 암호화된 데이터가 데이터를 읽는 시점에서 일반적으로 복호화될 때 필요한 보호를 충족하지 못하는 경우가 많다. 암호화된 데이터를 전송하고 알 수 없는 수신자가 이를 복호화하도록 하는 것은 여전히 가능하다.
미국 특허 제9,166,782호는 소스 컴퓨터와 대상 컴퓨터 간의 통신을 암호화하는 방법을 설명한다. 그러나 이 방법에는 컴퓨터에 보안 키를 제공하는 제3자 키 저장소 서버가 포함된다. 또한 컴퓨터 간에 암호화된 통신을 달성하기 위해 컴퓨터는 개인 키를 키 저장소 서버에 보관해야 한다. 암호화할 모든 통신에는 키 저장소 서버와 원본 및 대상 컴퓨터 간에 작업이 필요하기 때문에 이 방법은 복잡해 보인다.
따라서, 앞서 언급한 문제점 및/또는 단점 중 하나 이상을 해결하거나 완화하기 위해, 컴퓨터 간의 데이터 통신을 보안하기 위한 개선된 시스템 및 방법을 제공할 필요가 있다.
본 발명의 일 측면에 따르면, 제1 컴퓨터(first computer)와 제2 컴퓨터(second computer) 사이의 데이터 통신을 보안하기 위한 명령을 포함하는 컴퓨터 시스템(computer system), 방법 및 비 일시적 컴퓨터 판독 가능 저장 매체가 있다. 시스템은 서로 통신 가능하게 연결된 제1 컴퓨터 및 제2 컴퓨터를 포함한다. 제1 및 제2 컴퓨터는 방법을 수행하도록 구성된다. 이 방법은: 제1 및 제2 컴퓨터에 의해, 제1 컴퓨터로부터 제2 컴퓨터로 제1 데이터를 통신하기 위한 제1 데이터 통신 명령을 협력적으로 수행하는 단계; 제1 컴퓨터에 의해, 제1 세션 키(first session key)를 생성하는 단계; 제1 컴퓨터에 의해, 제1 세션 키를 사용하여 제1 데이터를 암호화하는 단계; 제1 컴퓨터에 의해, 제1 공개 키(first public key)를 사용하여 제1 세션 키를 암호화하는 단계 - 제1 공개 키는 제1 개인 키(first private key)와 쌍을 이루고, 제1 공개-개인 키 쌍(first public-private key pair)은 제2 컴퓨터에 대해 생성됨 -; 암호화된 제1 데이터 및 암호화된 제1 세션 키를 제1 컴퓨터에서 제2 컴퓨터로 전송하는 단계; 제2 컴퓨터에 의해, 제1 개인 키를 사용하여 암호화된 제1 세션 키를 복호화하는 단계; 제2 컴퓨터에 의해, 복호화된 제1 세션 키를 사용하여 암호화된 제1 데이터를 복호화하는 단계; 및 제2 컴퓨터에 의해, 제1 데이터 통신 명령에 기초하여 복호화된 제1 데이터를 처리하는 단계를 포함한다.
따라서, 본 개시에 따른 컴퓨터들 간의 데이터 통신을 보안하기 위한 시스템 및 방법이 본 명세서에 개시된다. 본 개시의 다양한 특징, 측면 및 이점은 첨부 도면과 함께 비 제한적인 예에 의해서만 본 개시의 실시예에 대한 다음의 상세한 설명으로부터 더욱 명백해질 것이다.
도 1a는 제1 컴퓨터와 제2 컴퓨터 간의 데이터 통신을 보안하기 위한 컴퓨터 시스템의 개략적인 도시이다.
도 1b는 제1 컴퓨터가 로컬 클라이언트 컴퓨터이고 제2 컴퓨터가 원격 컴퓨터 서버 인 컴퓨터 간의 데이터 통신을 보안하기 위한 컴퓨터 시스템의 개략적인 도시이다.
도 1c는 제1 컴퓨터가 원격 컴퓨터 서버이고 제2 컴퓨터가 로컬 클라이언트 컴퓨터 인 컴퓨터 간의 데이터 통신을 보안하기 위한 컴퓨터 시스템의 개략적인 도시이다.
도 2a는 특히 제1 컴퓨터에서 제2 컴퓨터로 데이터를 통신하기 위한, 제1 및 제2 컴퓨터 사이의 데이터 통신을 보안하기 위한 방법의 흐름도 예시이다.
도 2b는 특히 제2 컴퓨터에서 제1 컴퓨터로 데이터를 통신하기 위한, 제1 및 제2 컴퓨터 사이의 데이터 통신을 보안하기 위한 방법의 흐름도 예시이다.
도 3a는 제2 컴퓨터가 비대칭 키 쌍을 생성하기 위해 제1 및 제2 컴퓨터에 의해 수행되는 토큰 생성 프로세스의 흐름도 예시이다.
도 3b는 제1 컴퓨터가 비대칭 키 쌍을 생성하기 위해 제1 및 제2 컴퓨터에 의해 수행되는 토큰 생성 프로세스의 흐름도 예시이다.
도 4a ~ 도 4d는 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버가 수행하는 토큰 생성 프로세스의 개략적인 도시이다.
도 5는 HTTPS 프로토콜을 통해 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버 간에 보안 세션을 설정하는 방법을 개략적인 도시이다.
도 6a는 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버 사이의 데이터 통신을 보안하고 원격 컴퓨터 서버에 제1 데이터를 저장하는 방법의 개략적인 도시이다.
도 6b는 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버 사이의 데이터 통신을 보안하고 원격 컴퓨터 서버에서 제2 데이터를 검색하는 방법을 개략적인 도시이다.
도 7a 및 도 7b는 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버 사이의 데이터 통신을 보안하고 제1 데이터를 인증하는 방법의 개략도이다.
도 8a 내지 도 8c는 토큰 생성 프로세스를 수행하는 것을 포함하여 로컬 클라이언트 컴퓨터와 원격 컴퓨터 서버 사이의 데이터 통신을 보안하는 방법의 개략도이다.
도 9a는 로컬 클라이언트 컴퓨터에 전달되는 토큰 생성 프로세스의 응답의 도시이다.
도 9b 및 도 9c는 로컬 클라이언트 컴퓨터에서 원격 컴퓨터 서버로 전달되는 암호화 및 복호화된 데이터의 도시이다.
도 9d는 일회용 클라이언트 개인 키와 일회용 서버 공개 키의 도시이다.
도 10은 컴퓨터의 기술 아키텍처에 대한 블록 다이어그램 도시이다.
간결함과 명료 함을 위해, 본 개시의 실시예의 설명은 도면에 따른 컴퓨터 간의 데이터 통신을 보호하기위한 시스템 및 방법에 관한 것이다. 본 개시 내용의 측면이 본원에 제공된 실시 측면과 관련하여 설명될 것이지만, 이들은 본 개시를 이들 실시예로 제한하려는 것이 아님을 이해할 것이다. 반대로, 본 개시 내용은 첨부된 청구 범위에 의해 정의된 바와 같은 본 개시 내용의 범위 내에 포함되는 본 명세서에 기재된 실시예에 대한 대안, 수정 및 등가물을 포함하도록 의도된다. 또한, 이하의 상세한 설명에서는 본 개시 내용에 대한 완전한 이해를 제공하기 위해 구체적인 세부 사항을 설명한다. 그러나, 당업자는 본 개시가 특정 세부 사항없이 및/또는 특정 실시예의 측면의 조합으로부터 발생하는 다중 세부 사항없이 실시될 수 있음을 인식할 것이다. 많은 경우, 잘 알려진 시스템, 방법, 절차 및 구성 요소는 본 개시 내용의 실시예의 측면을 불필요하게 모호하게 하지 않도록 상세하게 설명되지 않았다.
본 개시 내용의 실시 측면에서, 주어진 요소의 묘사 또는 특정 도면에서 특정 요소 번호의 고려 또는 사용 또는 대응하는 설명 자료에서 이에 대한 참조는 다른 도면 또는 그와 관련된 설명 자료에서 식별된 동일하거나, 동등하거나, 유사한 요소 또는 요소 번호를 포함할 수 있다.
"실시예/예", "다른 실시예/예", "일부 실시예/예", "일부 다른 실시예/예" 등에 대한 참조는 그렇게 설명된 실시예(들)/예(들)가 특정 특징, 구조, 특성, 속성, 요소 또는 제한을 포함하지만 모든 실시예/예가 반드시 특정 특징, 구조, 특성, 속성, 요소 또는 제한을 포함하는 것은 아니다. 또한, "실시예/예에서" 또는 "다른 실시예/예에서"라는 문구의 반복적인 사용은 반드시 동일한 실시예/예를 지칭하는 것은 아니다.
용어 "포함하는", "포함하는", "갖는" 등은 실시예에 나열된 것 이외의 다른 특징/요소/단계의 존재를 배제하지 않는다. 서로 다른 실시예에서 특정 특징/요소/단계의 언급은 이러한 특징/요소/단계의 조합이 실시예에서 사용될 수 없음을 나타내지 않는다.
여기에 사용된 바와 같이, 용어 "하나(a)" 및 "한(an)"은 하나 이상의 것으로 정의된다. 도면 또는 연관 텍스트에서 "/"의 사용은 달리 표시되지 않는 한 "및/또는"을 의미하는 것으로 이해된다. 알려진 수학적 정의에 따라, 용어 "집합"은 수학적으로 적어도 하나의 관계 수(cardinality)를 나타내는 요소의 비어 있지 않은 유한 조직으로 정의된다(예를 들어, 여기에서 정의된 집합은 단위, 단일 요소 또는 단일 요소 집합, 또는 다중 요소 집합에 대응할 수 있다).
여기에 사용된 바와 같이, 용어 "구성 요소", "모듈", "시스템", "인터페이스" 등은 일반적으로 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어 또는 실행중인 소프트웨어와 같은 컴퓨터 관련 엔티티를 의미한다. 예를 들어, 구성 요소 또는 모듈은 프로세서, 프로세서, 개체, 실행 파일, 실행 스레드, 프로그램 및/또는 컴퓨터에서 실행되는 프로세스 일 수 있지만 이에 제한되지는 않는다. 예를 들어, 제어기(controller)에서 실행되는 애플리케이션과 제어기는 모두 구성 요소/모듈 일 수 있다. 하나 이상의 구성 요소/모듈이 프로세스 및/또는 실행 스레드 내에 상주할 수 있다. 구성 요소/모듈은 하나의 컴퓨터에 국한되거나 여러 컴퓨터에 분산될 수 있다.
본 발명의 대표적인 또는 예시적인 실시예에서, 도 1a에 도시된 바와 같이 통신 네트워크(communication network)(130)를 통해 서로 통신적으로 연결된 제1 컴퓨터(first computer)(110) 및 제2 컴퓨터(second computer)(120)를 포함하는 컴퓨터 시스템(computer system)(100)이 있다. 컴퓨터 시스템(100)은 암호화 및 복호화를 위한 보안 키(security key)(140)를 사용함으로써 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이의 데이터 통신을 보호하도록 구성된다. 제1 컴퓨터(110) 및 제2 컴퓨터(120)는 통신 네트워크(130)를 통해 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이에서 통신되는 데이터를 암호화 및 복호화하기 위해 보안 키(140)를 사용하는 것을 포함하는 데이터 통신 명령을 협력적으로 실행하도록 구성된다.
제1 컴퓨터(110) 및 제2 컴퓨터(120) 각각은 데이터를 저장하기 위해 각각 제1 데이터베이스(first database)(112) 및 제2 데이터베이스(second database)(122)를 포함하거나 이에 통신적으로 연결된다. 데이터베이스(112 및 122)는 각각 제1 컴퓨터(110) 및 제2 컴퓨터(120) 상에 국부적으로 상주할 수 있거나, 대안적으로 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 통신적으로 연결된 각각의 원격 또는 클라우드 서버 상에 상주할 수 있다. 데이터베이스(112, 122)는 데이터를 저장하기 위한 플래시 저장 메모리, 하드 드라이브, 임시 저장 위치 등을 가질 수 있다. 추가로, 데이터베이스(112 및 122)는 당업자에 의해 용이하게 이해되는 바와 같이 그 위에 저장된 데이터를 보안하고 보호하기 위한 다양한 보안 수단으로 구현될 수 있다.
통신 네트워크(130)는 제1 컴퓨터(110) 및 제2 컴퓨터(120)를 포함하는 다양한 엔티티들 사이에서 콘텐츠, 통지 및/또는 메시지가 통신되는 매체 또는 환경이다.
통신 네트워크(130)의 일부 비 제한적인 예는 가상 사설망(VPN), 와이파이(wireless fidelity)(Wi-Fi) 네트워크, 라이파이(light fidelity)(Li-Fi) 네트워크, 근거리 통신망(LAN), 광역 네트워크(WAN), 대도시 지역 네트워크(MAN), 위성 네트워크, 인터넷, 광섬유 네트워크, 동축 케이블 네트워크, 적외선(IR) 네트워크, 무선 주파수(RF) 네트워크 및 이들의 조합을 포함한다. 통신망(communication network)(130)에 대한 연결은, 전송 제어 프로토콜/인터넷 프로토콜(Transmission Control Protocol/Internet Protoco)(TCP/IP), 사용자 데이터 그램 프로토콜(User Datagram Protocol)(UDP), 2 세대 ~ 5 세대(2G ~ 5G), LTE(Long Term Evolution), 장거리(Long Range)(LoRa) 및 이들의 조합 등 다양한 유무선 통신 프로토콜에 따라 이루어질 수 있다. 제1 컴퓨터(110) 및 제2 컴퓨터(120) 각각은 통신 네트워크(130)를 통해 데이터를 통신 및 송수신하기 위한 데이터 통신 또는 트랜시버 모듈(transceiver module)을 포함한다. 트랜시버 모듈의 일부 비 제한적인 예에는 안테나 모듈, 무선 주파수 트랜시버 모듈, 무선 트랜시버 모듈, 블루투스 트랜시버 모듈, 이더넷 포트, 범용 직렬 버스(USB) 포트 또는 이들의 조합이 포함된다.
암호화 및 복호화를 위해 컴퓨터 시스템(100)에서 사용되는 보안 키(140)는 대칭 키와 비대칭 키로 구분될 수 있다. 대칭 키(Symmetric key)는 양 당사자가 소유한 하나의 대칭 키로 만 실행되는 대칭 암호화에 사용된다. 대칭 키는 데이터를 암호화하고 복호화하는 데 적용된다. 비대칭 키(Asymmetric key)는 비대칭 암호화 또는 공개 키 암호화를 위한 키 쌍(pairs of key)이다. 각 비대칭 키 쌍은 공개 키(public key)와 개인 키(private key)로 구성된다. 사용자의 공개 키는 기밀/민감한 데이터(confidential/sensitive data)를 사용자에게 전달하고 통신할 데이터를 암호화하려는 다른 사용자가 사용할 수 있다. 공개 키를 사용하여 암호화된 데이터는 동일한 공개-개인 키 쌍(public-private key pai)의 개인 키를 사용해야 만 복호화할 수 있다. 각각의 암호화/복호화/대칭/비대칭 키는 숫자, 단어, 영숫자 문자열 또는 임의의 문자열 일 수 있다.
세션 키(session key)와 같은 대칭 키는 고급 암호 표준(Advanced Encryption Standard)(AES), 투피쉬(Twofish), 서펀트(Serpent), 블로우피쉬(Blowfish), RC4(Rivest Cipher 4), 데이터 암호화 규격(Data Encryption Standard)(DES) 및 3중 대칭키 암호(Triple DES)(3DES) 등 및 이들의 임의의 조합과 같은 대칭 암호화 알고리즘(symmetric encryption algorithm)을 사용하여 생성된다. 비대칭 공개-개인 키 쌍(asymmetric public-private key pair)은 RSA(Rivest-Shamir-Adleman) 알고리즘, 디피 헬먼 키 교환 방법(Diffie-Hellman Key Exchange method), 타원 곡선 암호(Elliptic-Curve Cryptography)(ECC) 접근 방식, ElGamal 알고리즘(ElGamal algorithm) 및 디지털 서명 알고리즘(Digital Signature Algorithm)(DSA) 등 및 이들의 임의의 조합과 같은 비대칭 암호화 알고리즘을 사용하여 생성된다. 당업자는 대칭 및 비대칭 키를 생성하기 위한 다른 알고리즘, 방법 또는 접근 방식이 있을 수 있음을 이해할 것이다. 또한, 각 비대칭 키 쌍(key pair)은 신뢰할 수 있는 보안 조직의 인증을 받았으며 키 쌍과 연결된 디지털 인증서가 있다. 디지털 인증서에는 디지털 인증서를 발급한 신뢰할 수 있는 조직 또는 인증 기관(CA)의 이름, 비대칭 키 쌍이 생성된 사용자의 식별 세부 정보, 동일한 키 쌍에 있는 사용자의 공개 키와 같은 정보가 포함된다. 디지털 인증서는 일반적으로 암호화의 공개 키 인증서에 대한 X.509 표준에 따라 발급된다. X.509 인증서는 인터넷 액세스를 위한 보안 프로토콜 인 HTTPS(Hyper Text Transfer Protocol Secure)의 기반 인 전송 계층 보안(Transport Layer Security)(TLS)/보안 소켓 계층(Secure Sockets Layer)(SSL)을 포함한 많은 인터넷 프로토콜에서 사용된다.
도 2a를 참조하면, 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이의 데이터 통신을 보호하기 위한 방법(200)이 도시되어 있다. 방법(200)은 방법(200)의 다양한 동작 또는 단계를 수행하기 위한 다양한 모듈/구성 요소를 각각 포함하는 제1 컴퓨터(110) 및 제2 컴퓨터(120)상에서 구현되고 수행된다. 방법(200)은 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 의해 제1 컴퓨터(110)에서 제2 컴퓨터(120)로 제1 데이터를 통신하기 위한 제1 데이터 통신 명령을 협력적으로 실행하는 단계(202)를 포함한다.
방법(200)은 제1 컴퓨터(110)에 의해 제1 세션 키를 생성하는 단계(204)를 더 포함한다. 제1 세션 키는 암호화 및 암호 복호화에 사용되는 대칭 키이다. 방법(200)은 제1 컴퓨터(110)에 의해 제1 세션 키를 사용하여 제1 데이터를 암호화하는 단계(206)를 더 포함하며, 여기서 제1 데이터는 제1 컴퓨터(110)에서 제2 컴퓨터(120)로 통신될 데이터/정보를 포함한다. 방법(200)은 제1 컴퓨터(110)에 의해 제1 공개 키 - 제1 공개 키는 제1 개인 키와 쌍을 이룸 - 를 사용하여 제1 세션 키를 암호화하는 단계(208)를 더 포함한다. 제1 공개-개인 키 쌍은 제2 컴퓨터(120)에 대해 생성되는 비대칭 키 쌍(asymmetric key pair)이다.
방법(200)은 암호화된 제1 데이터 및 암호화된 제1 세션 키를 제1 컴퓨터(110)에서 제2 컴퓨터(120)로 전송하는 단계(210)를 더 포함한다. 방법(200)은 제1 세션 키가 동일한 제1 비대칭 공개-개인 키 쌍의 제1 공개 키를 사용하여 암호화되었기 때문에, 제2 컴퓨터(120)에 의해, 제1 개인 키를 사용하여 암호화된제1 세션 키를 복호화하는 단계(212)를 더 포함한다. 방법(200)은 제2 컴퓨터(120)에 의해, 복호화된 제1 세션 키를 사용하여 암호화된 제1 데이터를 단계(214)를 더 포함한다. 방법(200)은 제2 컴퓨터(120)에 의해, 제1 데이터 통신 명령에 기초하여 복호화된 제1 데이터를 처리하는 단계(216)를 더 포함한다. 예를 들어, 제2 컴퓨터(120)는 제1 데이터에 액세스 할 권한이 있는 제1 컴퓨터(110) 또는 다른 컴퓨터에 의해 안전한 데이터 저장 및 후속 검색을 위해 제2 데이터베이스(122) 상에 복호화된 제1 데이터를 저장한다. 제1 데이터가 제1 컴퓨터(110)로부터 유래되었기 때문에, 사용자가 다른 컴퓨터의 사용자에게 제1 데이터에 대한 액세스를 공유하기를 원하는 경우 제1 데이터에 대한 접근 권한은 제1 컴퓨터(110)의 사용자 또는 관리자에 의해 다른 컴포스터(composter)에게 주어질 수 있다. 어떤 상황에서, 제2 컴퓨터(120)의 사용자 또는 관리자는 특정 당사자가 제1 데이터에 대한 액세스를 요청하는 경우와 같이 다른 사용자에게 권한을 부여할 수 있다.
일부 실시예에서, 제1 공개-개인 키 쌍은 만료 조건(expiry condition)을 가지며, 따라서 제1 공개-개인 키 쌍은 만료 조건이 충족되기 전에 암호화 및 복호화에 유효하다. 일 예에서, 만료 조건은 미리 정의된 유효 기간, 예를 들어 제1 공개-개인 키 쌍의 생성부터 시작하는 기간 또는 미리 정의된 만료 날짜 및 시간이다. 제1 공개-개인 키 쌍은 미리 정의된 유효 기간 또는 미리 정의된 만료 날짜 및 시간 후에 자동으로 만료되며 미리 정의된 유효 기간 또는 미리 정의된 만료 날짜 및 시간 이후에는 암호화 및 복호화에 유효하지 않다. 미리 정의된 유효 기간은 적어도 2 시간이지만, 임의의 수, 분, 일 등으로 변경하기 위해 제1 컴퓨터(110) 및/또는 제2 컴퓨터(120)에 의해 구성 가능하거나 정의될 수 있다. 다른 예에서, 만료 조건은 미리 정의된 사용 횟수 후에 자동으로 만료되는 제1 공개-개인 키 쌍의 미리 정의된 사용 횟수이다. 미리 정의된 사용 횟수는 제1 컴퓨터(110) 및/또는 제2 컴퓨터(120)에 의해 구성되거나 정의될 수 있다. 제1 공개-개인 키 쌍은 단일 사용 또는 일회용으로 구성될 수 있다. 즉, 제1 공개-개인 키 쌍은 일회용 후에 자동으로 만료된다. 만료 조건은 위 조건 중 하나 이상의 조합 일 수 있다. 예를 들어, 제1 공개-개인 키 쌍의 미리 정의된 사용 횟수는 미리 정의된 유효 기간 동안에 만 유효하다.
전술한 방법(200)은 제1 데이터를 제2 컴퓨터(120)에 저장하기 위한 것과 같이 제1 컴퓨터(110)에서 제2 컴퓨터(120) 로 데이터 통신을 보안하는 것과 관련된다. 일부 실시예에서, 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이에 데이터 교환이 있다. 구체적으로, 제2 컴퓨터(120)는 도 2b에 도시된 바와 같이 방법(250)을 통해 암호화된 데이터를 제1 컴퓨터(110)에 반환할 수 있다. 방법(200)은 방법(250)을 수행하는 단계를 더 포함한다. 방법(200)의 다양한 측면은 방법(250)에 유사하게 또는 유사하게 적용되고 그 반대도 마찬가지이며, 그러한 측면은 간결함을 위해 방법(250)의 설명에서 생략된다는 것이 이해될 것이다.
도 2b를 참조하면, 방법(250)은 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 의해, 제2 컴퓨터(120)로부터 제2 데이터를 검색하기 위한 제1 컴퓨터(110)에 의한 요청과 같이, 제2 컴퓨터(120)에서 제1 컴퓨터(110)로 제2 데이터를 통신하기 위한 제2 데이터 통신 명령을 협력적으로 실행하는 단계(252)를 포함한다.
방법(250)은 제2 컴퓨터(120)에 의해 제2 세션 키를 생성하는 단계(254)를 더 포함한다. 제2 세션 키는 암호화 및 복호화에 사용되는 대칭 키이다. 방법(250)은 제2 컴퓨터(120)에 의해, 제2 세션 키를 사용하여 제2 데이터를 암호화하는 단계(256)를 더 포함하고, 여기서 제2 데이터는 제2 컴퓨터(120)로부터 제1 컴퓨터(110)로 통신 될 데이터/정보를 포함한다. 방법(250)은 제2 컴퓨터(120)에 의해, 제2 공개 키를 사용하여 제2 세션 키를 암호화하는 단계(258)를 더 포함하고, 제2 공개 키는 제2 개인 키와 쌍을 이룬다. 제2 공개-개인 키 쌍은 제1 컴퓨터(110)에 대해 생성되는 비대칭 키 쌍이다.
방법(250)은 암호화된 제2 데이터 및 암호화된 제2 세션 키를 제2 컴퓨터(120)에서 제1 컴퓨터(110)로 전송하는 단계(260)를 더 포함한다. 방법(250)은 제1 컴퓨터(110)에 의해, 제2 개인 키를 사용하여 암호화된 제2 세션 키를 복호화하는 단계(262)를 더 포함한다. 방법(250)은 제1 컴퓨터(110)에 의해, 복호화된 제2 세션 키를 사용하여 암호화된 제2 데이터를 복호화하는 단계(264)를 더 포함한다. 방법(250)은 제1 컴퓨터(110)에 의해, 제2 데이터 통신 명령에 기초하여 복호화된 제2 데이터를 처리하는 단계(266)를 더 포함한다. 예를 들어, 제1 컴퓨터(110)는 상기 복호화에 응답하여 복호화된 제2 데이터를 추출하고 복호화된 제2 데이터를 제1 데이터베이스(112)에 저장한다.
일부 실시예에서 그리고 제1 공개-개인 키 쌍처럼, 제2 공개-개인 키 쌍에는 만료 조건이 있으므로 제2 공개-개인 키 쌍은 만료 조건이 충족되기 전에 암호화 및 복호화에 유효하다. 전술한 제1 공개-개인 키 쌍의 만료 조건은 제2 공개-개인 키 쌍에 비슷하게 또는 유사하게 적용된다는 것을 이해할 것이다.
제1 컴퓨터(110) 및 제2 컴퓨터(120)에 대해 생성된 관련된 제1 세션 키, 제2 세션 키, 제1 공개-개인 키 쌍 및 제2 공개-개인 키 쌍을 사용함으로써 위에서 설명된 방법(200 및 250)은 제1 컴퓨터(110)와 제2 컴퓨터(120) 사이의 보안적인 데이터 통신과 관련된다. 특히, 제1 공개-개인 키 쌍 및 제2 공개-개인 키 쌍은 각각 제2 컴퓨터(120) 및 제1 컴퓨터(110)에 대해 생성된다. 그러나, 상기 보안 데이터 통신은 제1 컴퓨터(110)에 대해 생성된 제1 공개-개인 키 쌍 및 제2 컴퓨터(120)에 대해 생성된 제2 공개-개인 키 쌍을 사용할 수 있다는 것이 이해될 것이다.
일부 실시예에서, 제1/제2 공개-개인 키 쌍은 제2 컴퓨터(120)에 의해 생성된다. 도 3a를 참조하면, 방법(200)은 제1 데이터 통신 명령을 실행하기 전에 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 의해 토큰 생성 프로세스(token generation process)(300)를 협력적으로 수행하는 단계를 더 포함한다. 이는 제1 컴퓨터(110)가 제1 데이터를 제2 컴퓨터(120)에 처음으로 통신하고 있고, 제1/제2 공개-개인 키 쌍이 이전에 생성되지 않은 경우 발생할 수 있다. 토큰 생성 프로세스(300)는 제1 컴퓨터(110)에 의해 토큰 세션 키를 생성하는 단계(302)를 포함한다. 토큰 세션 키는 암호화 및 복호화 모두에 사용되는 대칭 키이며 미리 정의된 유효 기간과 같은 만료 조건이 있을 수 있다.
토큰 생성 프로세스(300)는 제1 컴퓨터(110)에 의해, 토큰 세션 키를 사용하여 토큰 요청(token request)을 암호화하는 단계(304)를 더 포함하고, 토큰 요청은 제2 컴퓨터(120)로부터 적어도 제1/제2 공개-개인 키 쌍을 요청하기 위한 것이다. 토큰 생성 프로세스(300)는 토큰 세션 키 및 암호화된 토큰 요청을 제1 컴퓨터(110)에서 제2 컴퓨터(120)로 전송하는 단계(306)를 더 포함한다. 토큰 생성 프로세스(300)는 제2 컴퓨터(120)에 의해, 토큰 세션 키를 사용하여 암호화된 토큰 요청을 복호화하는 단계(308)를 더 포함한다. 토큰 생성 프로세스(300)는 제2 컴퓨터(120)에 의해, 각각 제2 컴퓨터(120)/제1 컴퓨터(110)에 대한 제1/제2 공개-개인 키 쌍을 생성하는 단계(310)를 더 포함한다. 토큰 생성 프로세스(300)는 제2 컴퓨터(120)에 의해, 토큰 세션 키를 사용하여 제1 공개 키/제2 개인 키를 암호화하는 단계(312)를 더 포함한다. 토큰 생성 프로세스(300)는 암호화된 제1 공개 키/제2 개인 키를 제2 컴퓨터(120)에서 제1 컴퓨터(110)로 전송하는 단계(314)를 더 포함한다. 토큰 생성 프로세스(300)는 제1 컴퓨터(110)에 의해, 토큰 세션 키를 사용하여 암호화된 제1 공개 키/제2 개인 키를 복호화하는 단계(316)를 더 포함한다. 따라서, 제1 컴퓨터(110)는 제1 세션 키를 암호화하기 위해 제1 공개 키를 사용하고 제2 세션 키를 복호화하기 위해 제2 개인 키를 사용할 수 있다. 따라서, 토큰 생성 프로세스(300)는 제2 컴퓨터(120)가 제1 공개-개인 키 쌍 및/또는 제2 공개-개인 키 쌍을 생성할 수 있게 한다.
일부 실시예에서, 제1/제2 공개-개인 키 쌍은 제1 컴퓨터(110)에 의해 생성된다. 도 3b를 참조하면, 방법(200)은 제1 컴퓨터(110) 및 제2 컴퓨터(120)에 의해, 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스(350)를 협력적으로 수행하는 단계를 더 포함한다. 토큰 생성 프로세스(300)의 다양한 측면은 토큰 생성 프로세스(350)에 유사하게 또는 유사하게 적용되고 그 반대의 경우도 마찬가지이며, 이러한 측면은 간결함을 위해 토큰 생성 프로세스(350)의 설명에서 생략된다는 것을 이해할 것이다.
토큰 생성 프로세스(350)는 제1 컴퓨터(110)에 의해 토큰 세션 키를 생성하는 단계(352)를 포함한다. 토큰 생성 프로세스(350)는 제1 컴퓨터(110)에 의해, 제2 컴퓨터(120)/제1 컴퓨터(110) 각각에 대한 제1/제2 공개-개인 키 쌍을 각각 생성하는 단계(354)를 더 포함한다. 토큰 생성 프로세스(350)는 제1 컴퓨터(110)에 의해, 토큰 세션 키를 사용하여 제1 개인 키/제2 공개 키를 암호화하는 단계(356)를 더 포함한다. 토큰 생성 프로세스(350)는 토큰 세션 키 및 암호화된 제1 개인 키/제2 공개 키를 제1 컴퓨터(110)에서 제2 컴퓨터(120)로 전송하는 단계(358)를 더 포함한다. 토큰 생성 프로세스(350)는 제2 컴퓨터(120)에 의해, 토큰 세션 키를 사용하여 암호화된 제1 개인 키/제2 공개 키를 복호화하는 단계(360)를 더 포함한다. 그리하여, 제2 컴퓨터(120)는 제1 세션 키를 복호화하기 위해 제1 개인 키를 사용하고 제2 세션 키를 암호화하기 위해 제2 공개 키를 사용할 수 있다. 따라서, 토큰 생성 프로세스(350)는 제1 컴퓨터(110)가 제1 공개-개인 키 쌍 및/또는 제2 공개-개인 키 쌍을 생성할 수 있게 한다.
도 1b에 도시된 바와 같은 일부 실시 측면에서, 제1 컴퓨터(110)는 로컬 클라이언트 컴퓨터(local client computer)(150)이고 제2 컴퓨터(120)는 원격 컴퓨터 서버(remote computer server)(160)이다. 도 1c에 도시된 바와 같은 일부 다른 실시예에서, 제1 컴퓨터(110)는 원격 컴퓨터 서버(160)이고 제2 컴퓨터(120)는 로컬 클라이언트 컴퓨터(150)이다.
로컬 클라이언트 컴퓨터(150)는 개인 또는 비즈니스 최종 사용자에 의해 작동되는 컴퓨터 또는 컴퓨팅 장치이다. 로컬 클라이언트 컴퓨터(150)의 일부 비 제한적인 예는 데스크탑 장치, 모바일 장치, 태블릿 장치, 랩톱 컴퓨터, 웨어러블 장치 및 프로세서, 마이크로 프로세서, 중앙 처리 장치 또는 제어기를 가질 수 있는 임의의 다른 전자 장치를 포함한다. 로컬 클라이언트 컴퓨터(150)는 데이터를 저장하기 위해 원격 컴퓨터 서버(160)로 데이터를 전송하기 위해 통신 네트워크(130)를 통해 원격 컴퓨터 서버(160)와 통신할 수 있다. 로컬 클라이언트 컴퓨터(150)는 데이터를 저장하기 위한 로컬 데이터베이스(152)를 포함하거나 이에 통신적으로 연결되고, 원격 컴퓨터 서버(160)는 데이터를 저장하기 위한 서버 데이터베이스(162)를 포함하거나 이에 통신적으로 연결된다. 원격 컴퓨터 서버(160)는 로컬 클라이언트 컴퓨터(150)로부터 멀리 떨어진, 즉 로컬 클라이언트 컴퓨터(150)의 동일한 로컬 네트워크를 공유하지 않는 컴퓨터 서버이다. 여기에서 사용되는 컴퓨터 서버는 서버 프로그램이 실행되는 물리적 또는 클라우드 데이터 처리 시스템이다. 서버는 하드웨어 나 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 서버에는 컴퓨터, 랩톱, 미니 컴퓨터, 메인 프레임 컴퓨터, 컴퓨터 판독 가능 코드를 실행할 수 있는 일시적이지 않고 유형의 모든 장치, 클라우드 기반 서버, 분산 서버 네트워크 및 컴퓨터 시스템 네트워크가 포함된다.
많은 실시예에서, 원격 컴퓨터 서버(160)는 하나 이상의 로컬 클라이언트 컴퓨터(150)와 통신할 수 있는 클라우드 기반 서버이거나 이를 포함한다. 구체적으로, 클라우드 기반 서버는 로컬 클라이언트 컴퓨터(150)의 최종 사용자를 위한 웹 서비스를 제공한다. 클라우드 기반 서버는 오픈 소스 서버, 엔터프라이즈 서버, 엔터프라이즈-엔터프라이즈 서버, 엔터프라이즈-오픈 소스 서버 또는 최종 사용자가 다른 위치에서 데이터를 전송, 전송 및 저장하는 데 적합한 기타 서버 환경을 가질 수 있다.
토큰 생성 프로세스(400)에 의해 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160) 각각에 대해 비대칭 공개-개인 키 쌍이 생성된다. 비대칭 공개-개인 키 쌍은 원격 컴퓨터 서버(160) 또는 로컬 클라이언트 컴퓨터(150)에 의해 생성될 수 있다. 로컬 클라이언트 컴퓨터(150)에 대해 생성된 공개-개인 키 쌍을 클라이언트 공개-개인 키 쌍(154)이라고 하며, 원격 컴퓨터 서버(160)를 위해 생성된 공개-개인 키 쌍은 서버 공개-개인 키 쌍(164)으로 지칭된다. 클라이언트 공개-개인 키 쌍(154)은 클라이언트 공개 키(154-1) 및 클라이언트 개인 키(154-2)로 구성된다. 서버 공개-개인 키 쌍(164)은 서버 공개 키(164-1) 및 서버 개인 키(164-2)로 구성된다. 클라이언트 공개-개인 키 쌍(154) 및 서버 공개-개인 키 쌍(164) 각각은 본 명세서의 다양한 실시예에서 설명된 제1 공개-개인 키 쌍 또는 제2 공개-개인 키 쌍일 수 있다.
토큰 생성 프로세스(400)는 데이터의 암호화/복호화를 수행하기 전에 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)에 의해 협력적으로 수행된다. 구체적으로, 토큰 생성 프로세스(400)는 제1 데이터 통신 명령을 실행하는 단계(202) 이전 및 제2 데이터 통신 명령을 실행하는 단계(252) 이전에 수행된다. 토큰 생성 프로세스(400)는 인터넷상의 인증 및 승인을 위한 OAuth 2.0 표준 프로토콜의 사용을 통해 발생할 수 있다. 토큰 생성 프로세스(400)의 다양한 단계는 로컬 클라이언트 컴퓨터(150)에서 실행되는 적어도 하나의 클라이언트 애플리케이션을 사용하여 수행된다. 일 실시예에서, 클라이언트 애플리케이션은 로컬 클라이언트 컴퓨터(150)에 미리 설치된다. 다른 구체 예에서, 클라이언트 애플리케이션은 미리 설치되어 있지 않지만, 클라이언트는 iOS, Android 등과 같은 로컬 클라이언트 컴퓨터(150)의 운영 체제를 통해 클라이언트 애플리케이션을 요청하고 이후에 클라이언트 애플리케이션을 다운로드하여 설치할 수 있다.
일부 실시예에서, 토큰 생성 프로세스(400)는 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)에 의해 협력적으로 수행되고, 비대칭 공개-개인 키 쌍은 원격 컴퓨터 서버(160)에 의해 생성된다. 토큰 생성 프로세스(400)는 도 4a 내지 도 4c를 참조하여 후술되는 바와 같이 적어도 3 개의 HTTPS 세션을 포함한다.
도 4a를 참조한 제1 HTTPS 세션에서, 단계 402에서, 로컬 클라이언트 컴퓨터(150)는 대칭 키인 토큰 세션 키를 생성한다. 단계 404에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 원격 컴퓨터 서버(160)로 전송한다. 단계 406에서, 로컬 클라이언트 컴퓨터(150)는 클라이언트 애플리케이션의 내장된 브라우저에서 로그인 페이지를 렌더링 하기 위한 로그인 요청인 토큰 세션 키를 사용하여 로그인 요청을 암호화한다. 단계 408에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 로그인 요청을 원격 컴퓨터 서버(160)로 전송한다. 단계 410에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 암호화된 로그인 요청을 복호화하고 로그인 요청을 추가로 처리한다. 단계 412에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 클라이언트 로그인 페이지를 암호화한다. 단계 414에서, 원격 컴퓨터 서버(160)는 암호화된 클라이언트 로그인 페이지를 로컬 클라이언트 컴퓨터(150)로 전송한다. 단계 416에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 암호화된 클라이언트 로그인 페이지를 복호화한다. 단계 418에서, 로컬 클라이언트 컴퓨터(150)는 내장된 브라우저에 복호화된 클라이언트 로그인 페이지를 표시한다.
일부 실시예에서, 제1 HTTPS 세션에는 암호화가 없다. 구체적으로, 로컬 클라이언트 컴퓨터(150)는 브라우저에서 로그인 페이지를 렌더링 하기 위해 암호화되지 않은 로그인 요청을 원격 컴퓨터 서버(160)로 전송한다. 원격 컴퓨터 서버(160)는 로그인 요청을 수신하고 처리한다. 원격 컴퓨터 서버(160)는 임베디드 브라우저에 디스플레이하기 위해 암호화되지 않은 클라이언트 로그인 페이지를 로컬 클라이언트 컴퓨터(150)로 전송한다.
도 4b를 참조하는 제2 HTTPS 세션에서, 단계 420에서, 사용자 또는 클라이언트는 클라이언트 로그인 페이지에서 사용자 이름 및/또는 암호를 포함한 클라이언트 로그인 세부 정보를 입력한다. 각 사용자 이름과 암호는 숫자, 알파벳, 텍스트 및 문자 등의 조합 또는 문자열 일 수 있다. 단계 422에서, 로컬 클라이언트 컴퓨터(150)는 인증을 위해 클라이언트 로그인 세부 사항을 원격 컴퓨터 서버(160)에 전송한다. 단계 424에서, 원격 컴퓨터 서버(160)는 클라이언트 로그인 세부 사항을 인증하고 메시지 인증 코드(MAC)를 생성한다. MAC은 태그라고도 하며 클라이언트 로그인 세부 정보와 같은 메시지를 인증하기 위한 짧은 정보이므로 메시지의 데이터 무결성과 신뢰성을 보호한다. 단계 426에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 MAC을 암호화한다. 단계 428에서, 원격 컴퓨터 서버(160)는 암호화된 MAC을 로컬 클라이언트 컴퓨터(150)로 전송한다. 단계 430에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 암호화된 MAC을 복호화한다. 또는 MAC이 암호화되지 않을 수 있다. MAC은 클라이언트가 브라우저에 성공적으로 로그인 할 수 있도록 승인하고 클라이언트는 클라이언트가 설정할 수 있는 미리 정의된 시간 동안 로그인 상태를 유지할 수 있다. 클라이언트는 이제 브라우저를 사용하여 원격 컴퓨터 서버(160)로부터 공개-개인 키 쌍을 요청할 수 있다.
도 4c를 참조하는 제3 HTTPS 세션에서, 단계 432에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 공개-개인 키 쌍에 대한 토큰 요청을 시작한다. 단계 434에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 토큰 요청을 암호화한다. 단계 436에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 토큰 요청을 원격 컴퓨터 서버(160)로 전송한다. 438 단계에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 암호화된 토큰 요청을 복호화하고 토큰 요청을 추가로 처리한다. 단계 440에서, 원격 컴퓨터 서버(160)는 로컬 클라이언트 컴퓨터(150)를 위한 클라이언트 공개-개인 키 쌍(154) 및 원격 컴퓨터 서버(160)를 위한 서버 공개-개인 키 쌍(164)을 포함하는 2 개의 공개-개인 키 쌍을 생성한다. 선택적으로 단계 440에서, 원격 컴퓨터 서버(160)는 로컬 클라이언트 컴퓨터(150)에 대한 클라이언트 토큰을 추가로 생성한다. 클라이언트 토큰은 원격 컴퓨터 서버(160)가 로컬 클라이언트 컴퓨터(150)에 대해 생성 된 클라이언트 공개-개인 키 쌍(154)을 식별 할 수 있도록 하는 것과 같이 클라이언트 및/또는 로컬 클라이언트 컴퓨터(150)를 식별하는 역할을 할 수 있다.
단계 442에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 클라이언트 개인 키(154-2), 서버 공개 키(164-1) 및 클라이언트 토큰을 암호화한다. 단계 444에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 로컬 클라이언트 컴퓨터(150)에 의한 후속 복호화를 위해 암호화된 클라이언트 개인 키(154-2), 암호화된 서버 공개 키(164-1) 및 암호화된 클라이언트 토큰을 로컬 클라이언트 컴퓨터(150)로 전송한다. 이들은 당업자에 의해 쉽게 이해되는 바와 같이 직렬, 병렬, 블록 또는 파티션으로 전송될 수 있다. 단계 446에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 암호화된 클라이언트 개인 키(154-2), 암호화된 서버 공개 키(164-1) 및 암호화된 클라이언트 토큰을 복호화한다. 단계 448에서, 로컬 클라이언트 컴퓨터(150)는 상기 복호화에 응답하여 클라이언트 개인 키(154-2), 서버 공개 키(164-1) 및 클라이언트 토큰을 추출하고 이를 로컬 데이터베이스(152)에 저장한다. 클라이언트 공개-개인 키 쌍(154), 서버 공개-개인 키 쌍(164) 및 클라이언트 토큰은 제1 및 제2 공개-개인 키 쌍에 대해 위에서 설명된 것과 같이 로컬 클라이언트 컴퓨터(150) 및/또는 원격 컴퓨터 서버(160)에 의해 구성 가능한 만료 조건을 가질 수 있다. 예를 들어 만료 조건은 토큰 세션 키의 미리 정의된 유효 기간에 해당하는 미리 정의된 유효 기간이다. 따라서 토큰 세션 키가 만료된 후에 만료 조건이 충족된다.
일부 실시예에서, 비대칭 공개-개인 키 쌍은 원격 컴퓨터 서버(160) 대신에 로컬 클라이언트 컴퓨터(150)에 의해 생성된다. 이것은 도 4d를 참조하여 토큰 생성 프로세스(450)로 설명된다. 토큰 생성 프로세스(450)는 하나 이상의 HTTPS 세션을 통해 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)에 의해 협력적으로 수행된다. 토큰 생성 프로세스(400)의 다양한 측면은 토큰 생성 프로세스(450)에 비슷하게 또는 유사하게 적용되고 그 반대의 경우도 마찬가지이며, 이러한 측면은 간결함을 위해 토큰 생성 프로세스(450)의 설명에서 생략됨을 이해할 것이다.
단계 452에서, 로컬 클라이언트 컴퓨터(150)는 대칭 키인 토큰 세션 키를 생성한다. 단계 454에서, 로컬 클라이언트 컴퓨터(150)는 로컬 클라이언트 컴퓨터(150)를 위한 클라이언트 공개-개인 키 쌍(154) 및 원격 컴퓨터 서버(160)를 위한 서버 공개-개인 키 쌍(164)을 포함하는 2 개의 공개-개인 키 쌍을 생성한다. 선택적으로 단계 454에서, 로컬 클라이언트 컴퓨터(150)는 로컬 클라이언트 컴퓨터(150)에 대한 클라이언트 토큰을 추가로 생성한다. 클라이언트 토큰은 원격 컴퓨터 서버(160)가 로컬 클라이언트 컴퓨터(150)에 대해 생성된 클라이언트 공개-개인 키 쌍(154)을 식별할 수 있도록 하는 것과 같이 클라이언트 및/또는 로컬 클라이언트 컴퓨터(150)를 식별하는 역할을 할 수 있다.
단계 456에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 클라이언트 공개 키(154-1), 서버 개인 키(164-2) 및 클라이언트 토큰을 암호화한다. 단계 458에서, 로컬 클라이언트 컴퓨터(150)는 토큰 세션 키를 사용하여 토큰 세션 키, 암호화된 클라이언트 공개 키(154-1), 암호화된 서버 개인 키(164-2) 및 암호화된 클라이언트 토큰을 원격 컴퓨터 서버(160)에 의한 후속 복호화을 위해 원격 컴퓨터 서버(160)로 전송한다. 이들은 당업자에 의해 쉽게 이해되는 바와 같이 직렬, 병렬, 블록 또는 파티션으로 전송될 수 있다. 일 구체 예에서, 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이에 활성 통신 링크 또는 활성 HTTPS 세션이있을 때 키가 생성되어 원격 컴퓨터 서버(160)로 전송된다. 다른 구체 예에서, 키는 인터넷 연결의 부족으로 인해 로컬 클라이언트 컴퓨터(150)가 원격 컴퓨터 서버(160)로부터 통신적으로 연결 해제되는 오프라인 모드에서 생성된다. 키는 로컬 클라이언트 컴퓨터(150)의 로컬 데이터베이스(152)에 저장될 수 있고 이어서 원격 컴퓨터 서버(160)와의 활성 통신 링크를 설정한 후에 원격 컴퓨터 서버(160)로 전송될 수 있다.
단계 460에서, 원격 컴퓨터 서버(160)는 토큰 세션 키를 사용하여 암호화된 클라이언트 공개 키(154-1), 암호화된 서버 개인 키(164-2) 및 암호화된 클라이언트 토큰을 복호화한다. 단계 462에서, 원격 컴퓨터 서버(160)는 상기 복호화에 응답하여 클라이언트 공개 키(154-1), 서버 개인 키(164-2) 및 클라이언트 토큰을 추출하여 서버 데이터베이스(162)에 저장한다.
위에서 설명한 HTTPS 세션과 같은 세션 기반 암호화에서, HTTPS 프로토콜을 통해 보안 세션을 제공하고 설정하기위한 프로세스, 기능 또는 방법(500)이 있다. 도 5를 참조하면, 단계 502에서, 사용자 또는 클라이언트는 원격 컴퓨터 서버(160)에 대한 TLS/SSL 연결을 요청하는 명령을 클라이언트 애플리케이션을 통해 제공한다. 단계 504에서, 원격 컴퓨터 서버(160)는 서버 공개 키(164-1)와 연관될 수 있는 TLS/SSL 인증서를 검색하거나 생성하기 위해 일련의 프로그래밍 기능과 함께 응용프로그램 인터페이스(application programming interface)(API)를 사용할 수 있다. 단계 506에서, 원격 컴퓨터 서버(160)는 TLS/SSL 인증서 및 서버 공개 키(164-1)를 로컬 클라이언트 컴퓨터(150)로 전송한다. 단계 508에서, 로컬 클라이언트 컴퓨터(150)는 TLS/SSL 인증서 및 서버 공개 키(164-1)를 검증하고 인증한다. 단계 510에서, 로컬 클라이언트 컴퓨터(150)는 단계(204)의 제1 세션 키 및 단계(254)의 제2 세션 키와 같은 세션 키 또는 대칭 키를 생성한다. 512 단계에서, 로컬 클라이언트 컴퓨터(150)는 서버 공개 키(164-1)를 사용하여 세션 키를 암호화한다. 단계 514에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 세션 키를 원격 컴퓨터 서버(160)로 전송한다. 단계 516에서, 원격 컴퓨터 서버(160)는 서버 개인 키(164-2)를 사용하여 암호화된 세션 키를 복호화한다. 단계 518에서, 원격 컴퓨터 서버(160)는 세션 키의 상기 복호화의 완료를 확인하기 위해 메시지를 로컬 클라이언트 컴퓨터(150)에 전송한다. 단계 520에서, 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)는 현재 그들 사이에서 공유되는 세션 키를 사용하여 후속적으로 통신하고 데이터를 교환할 수 있다.
도 6a를 참조하는 일부 실시 측면에서, HTTPS 프로토콜을 통해 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 데이터 통신을 보호하기위한 프로세스, 기능 또는 방법(600)이 있다. 방법(600)의 다양한 단계는 로컬 클라이언트 컴퓨터(150)에 설치되고 실행되는 클라이언트 애플리케이션을 사용하여 수행된다.
방법(600)의 단계(602)에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)에 제1 데이터를 저장하기 위해 원격 컴퓨터 서버(160)와 협력하여 제1 데이터 통신 명령을 실행한다. 제1 데이터는 다양한 피험자/환자에 대해 수행된 의료 절차로부터 수집된 측정 데이터를 포함할 수 있다. 측정 데이터는 일련의 심박수 데이터 세트, 일련의 혈압 데이터 세트, 일련의 맥압 데이터 세트 중 적어도 하나를 포함할 수 있다. 예를 들면, 측정 데이터는 제1 기간에 수집된 제1 일련의 심박수 데이터 및 제2 기간에 수집된 제2 일련의 심박수 데이터를 포함하는 복수의 일련의 심박수 데이터를 포함한다.
단계 604에서, 로컬 클라이언트 컴퓨터(150)는 로컬 데이터베이스(152)에 저장된 측정 데이터를 검색한다. 단계 606에서, 로컬 클라이언트 컴퓨터(150)는 런 랭스 부호화(Run-Length Encoding)(RLE), 허프만 코딩(Huffman Coding), LZ77, LZ78 등과 같은 데이터 압축 알고리즘 및 이들의 임의의 조합을 사용하여 측정 데이터를 압축한다. 또는, 측정 데이터는 압축되지 않았지만 압축 가능할 수 있다. 단계 608에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 생성한다. 단계 610에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 사용하여 측정 데이터를 암호화한다. 단계 612에서, 로컬 클라이언트 컴퓨터(150)는 토큰 생성 프로세스(400/450)에서 생성된 서버 공개 키(164-1)를 사용하여 제1 세션 키를 암호화한다. 단계 614에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 측정 데이터 및 암호화된 제1 세션 키를 원격 컴퓨터 서버(160)로 전송한다.
따라서, 방법 600의 위 단계에서, 로컬 클라이언트 컴퓨터(150)는 임의의 주어진 시간에 HTTPS 프로토콜을 통해 원격 컴퓨터 서버(160)에 제1 및 제2 시리즈의 심박수 데이터와 같은 측정 데이터를 전송할 수 있다. 단계 616에서, 원격 컴퓨터 서버(160)는 서버 개인 키(164-2)를 사용하여 암호화된 제1 세션 키를 복호화하고 복호화된 제1 세션 키를 추출한다. 단계 618에서, 원격 컴퓨터 서버(160)는 복호화된 제1 세션 키를 이용하여 암호화된 측정 데이터를 복호화하고 복호화된 측정 데이터를 추출한다. 단계 620에서, 측정 데이터는 압축될 수 있고 원격 컴퓨터 서버(160)는 압축된 측정 데이터를 원래의 압축되지 않은 상태로 압축 해제한다. 또는, 측정 데이터는 원래 압축되지 않았을 수 있다. 단계 622에서, 원격 컴퓨터 서버(160)는 제1 데이터 통신 명령에 기초하여 측정 데이터를 서버 데이터베이스(162)에 저장한다.
단계 624에서, 원격 컴퓨터 서버(160)는 세분화된 데이터를 생성하기 위해 측정 데이터를 결합 및/또는 조작하기 위해 알고리즘 세트를 사용한다. 단계 626에서, 원격 컴퓨터 서버(160)는 측정 데이터와 함께 세분화된 데이터를 서버 데이터베이스(162)에 저장한다. 당업자가 쉽게 이해할 수 있는 바와 같이, 그 안의 각 데이터 요소가 클라우드 컴퓨팅을 위한 자체 액세스 제어 정책을 갖도록 세분화된 데이터가 생성될 수 있다. 어떤 상황에서, 원격 컴퓨터 서버(160)는 클라이언트가 클라우드 컴퓨팅 서비스에 대한 유료 가입을 통해 가입하는 클라우드 컴퓨팅 서비스를 운영한다. 원격 컴퓨터 서버(160)는 가입비가 적시에 지불되면 세분화된 것을 생성한다. 반대로 구독료를 적시에 지불하지 않으면, 원격 컴퓨터 오버(160)는 단계 624에서 세분화된 데이터를 생성하는 알고리즘 세트를 제한하는 것과 같이 클라우드 컴퓨터 서비스를 종료하거나 제한할 수 있지만, 이는 서버 데이터베이스(162) 상의 측정 데이터를 저장하는 방법(600)의 프로세스 흐름을 최적화할 수 있다. 단계 628에서, 원격 컴퓨터 서버(160)는 측정 데이터/세분화된 데이터를 서버 데이터베이스(162)에 저장하는 단계(622)의 완료를 확인하기 위해 메시지를 로컬 클라이언트 컴퓨터(150)에 전송한다.
도 6b를 참조하는 일부 실시 측면에서, HTTPS 프로토콜을 통해 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 데이터 통신을 보호하기위한 프로세스, 기능 또는 방법(650)이 있다. 방법(650)의 다양한 단계는 로컬 클라이언트 컴퓨터(150)에 설치되고 실행되는 클라이언트 애플리케이션을 사용하여 수행된다. 방법(650)의 단계 652에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 제2 데이터를 검색하기 위해 원격 컴퓨터 서버(160)와 협력하여 제2 데이터 통신 명령을 실행한다. 제2 데이터는 방법(600)에서 전술한 바와 같이 서버 데이터베이스(162)에 저장된 이력 측정 데이터 및/또는 이력 세분화된 데이터를 포함할 수 있다.
단계 654에서, 원격 컴퓨터 서버(160)는 서버 데이터베이스(162)에 저장된 이력 측정/세분화된 데이터를 검색한다. 단계 656에서, 원격 컴퓨터 서버(160)는 전술한 데이터 압축 알고리즘을 사용하여 이력 측정/세분화된 데이터를 압축한다. 또는 기록 측정/세분화된 데이터는 압축되지 않지만 압축 가능할 수 있다. 단계 658에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 생성한다. 단계 660에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 사용하여 이력 측정/세분화된 데이터를 암호화한다. 단계 662에서, 원격 컴퓨터 서버(160)는 토큰 생성 프로세스(400/450)에서 생성된 클라이언트 공개 키(154-1)를 사용하여 제2 세션 키를 암호화한다. 제2 데이터 통신 명령은 로컬 클라이언트 컴퓨터(150) 및/또는 로컬 클라이언트 컴퓨터(150)에 대해 생성된 클라이언트 공개 키(154-1)를 식별하기 위해 원격 컴퓨터 서버(160)에 이를 사용하는 클라이언트를 식별하는 클라이언트 토큰을 포함할 수 있다. 단계 664에서, 원격 컴퓨터 서버(160)는 암호화된 이력 측정/세분화된 데이터 및 암호화된 제2 세션 키를 로컬 클라이언트 컴퓨터(150)로 전송한다.
단계 666에서, 로컬 클라이언트 컴퓨터(150)는 토큰 생성 프로세스(token generation process)(400/450)에서 생성된 클라이언트 개인 키(154-2)를 사용하여 암호화된 제2 세션 키를 복호화하고 복호화된 제2 세션 키를 추출한다. 단계 668에서, 로컬 클라이언트 컴퓨터(150)는 복호화된 제2 세션 키를 이용하여 암호화된 이력 측정/세분화된 데이터를 복호화하고 복호화된 이력 측정/세분화된 데이터를 추출한다. 단계 670에서, 이력 측정/세분화된 데이터는 압축될 수 있고 로컬 클라이언트 컴퓨터(150)는 압축된 이력 측정/세분화된 데이터를 원래의 비 압축 상태로 압축 해제한다. 또는, 과거 측정/세분화된 데이터는 원래 압축되지 않았을 수 있다. 단계 672에서, 로컬 클라이언트 컴퓨터(150)는 제2 데이터 통신 명령에 기초하여 이력 측정/세분화된 데이터를 로컬 데이터베이스(152)에 저장한다. 단계 674에서, 로컬 클라이언트 컴퓨터(150)는 클라이언트 애플리케이션에 이력 측정/세분화된 데이터를 표시한다. 일 구체 예에서, 로컬 클라이언트 컴퓨터(150)는 히스토리 측정 데이터만을 수신하고 알고리즘 세트를 사용하여 히스토리 측정 데이터를 결합 및/또는 조작하여 세분화된 데이터를 생성할 수 있다.
따라서, 방법(650)의 위 단계에서, 로컬 클라이언트 컴퓨터(150)는 HTTPS 프로토콜을 통해 원격 컴퓨터 서버(160)로부터 임의의 주어진 시간에 이력 측정/세분화된 데이터를 검색할 수 있다. 일 구체 예에서, 제2 데이터 통신 명령은 하나 이상의 과거 측정/세분화된 데이터 세트를 검색하기 위한 단일 요청이다. 클라이언트가 기록 측정/세분화된 데이터의 다른 세트 또는 추가 세트를 검색하려는 경우 추가 제2 데이터 통신 명령이 실행된다. 따라서, 당업자는 원격 컴퓨터 서버(160)로부터 하나 이상의 패킷 또는 이력 측정/세분화된 데이터 세트를 검색하기 위해 제2 데이터 통신 명령이 반복될 수 있음을 쉽게 이해할 것이다.
도 7a 및 도 7b를 참조하는 일부 실시 측면에서, HTTPS 프로토콜을 통해 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 데이터 통신을 보안하기 위한 프로세스, 기능 또는 방법(700)이 있다. 방법(700)의 다양한 단계는 로컬 클라이언트 컴퓨터(150)에 설치되고 실행되는 클라이언트 애플리케이션을 사용하여 수행된다.
도 7a를 참조하여 방법(700)의 단계(702)에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)가 제1 데이터를 인증하기 위해 원격 컴퓨터 서버(160)와 협력하여 제1 데이터 통신 명령을 실행한다. 제1 데이터는 로컬 클라이언트 컴퓨터(150)의 클라이언트 또는 사용자의 사용자 이름 및/또는 비밀번호를 포함할 수 있는 인증 데이터/정보를 포함한다. 인증 데이터는 로컬 클라이언트 컴퓨터(150) 및/또는 클라이언트 애플리케이션의 다른 모듈 상의 다른 애플리케이션에 액세스하기 위해 필요할 수 있다. 따라서, 제1 데이터 통신 명령은 인증 요청으로 지칭될 수 있다.
단계 704에서, 로컬 클라이언트 컴퓨터(150)는 인증 데이터를 획득한다. 인증 데이터는 로컬 데이터베이스(152)로부터 검색되거나 클라이언트에 의해 제공될 수 있다. 단계 706에서, 로컬 클라이언트 컴퓨터(150)는 데이터 압축 알고리즘을 사용하여 인증 데이터를 압축한다. 또는 인증 데이터가 압축되지 않았지만 압축 가능할 수 있다. 단계 708에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 생성한다. 단계 710에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 사용하여 인증 데이터를 암호화한다. 단계 712에서, 로컬 클라이언트 컴퓨터(150)는 토큰 생성 프로세스(400/450)에서 생성된 서버 공개 키(164-1)를 사용하여 제1 세션 키를 암호화한다. 단계 714에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 인증 데이터 및 암호화된 제1 세션 키를 원격 컴퓨터 서버(160)로 전송한다.
단계 716에서, 원격 컴퓨터 서버(160)는 서버 개인 키(164-2)를 사용하여 암호화된 제1 세션 키를 복호화하고 복호화된 제1 세션 키를 추출한다. 단계 718에서, 원격 컴퓨터 서버(160)는 복호화된 제1 세션 키를 이용하여 암호화된 인증 데이터를 복호화하고 복호화된 인증 데이터를 추출한다. 단계 720에서, 인증 데이터는 압축될 수 있고 원격 컴퓨터 서버(160)는 압축된 인증 데이터를 원래의 압축되지 않은 상태로 압축 해제한다. 또는 인증 데이터가 원래 압축 해제되었을 수 있다. 단계 722에서, 원격 컴퓨터 서버(160)는 제1 데이터 통신 명령에 기초하여 인증 데이터를 처리한다. 구체적으로 특별히, 원격 컴퓨터 서버(160)는 검증 프로세스(validation process)를 통해 인증 데이터를 인증한다. 검증 프로세스는 클라이언트로부터 미리 획득되고 서버 데이터베이스(162)에 저장된 참조 인증 데이터와 인증 데이터를 비교하는 단계를 포함한다. 단계 724에서, 원격 컴퓨터 서버(160)는 인증 데이터의 성공적인 인증에 응답하여 MAC을 생성한다.
도 7b를 참조하여 단계 726에서, 원격 컴퓨터 서버(160)는 MAC을 로컬 클라이언트 컴퓨터(150)로 전송하기 위해 로컬 클라이언트 컴퓨터(150)와 협력하여 제2 데이터 통신 명령을 실행한다. 728 단계에서, 원격 컴퓨터 서버(160)는 데이터 압축 알고리즘을 사용하여 MAC을 압축한다. 또는, MAC은 압축되지 않았지만 압축할 수 있다. 단계 730에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 생성한다. 단계 732에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 사용하여 MAC을 암호화한다. 단계 734에서, 원격 컴퓨터 서버(160)는 토큰 생성 프로세스(400/450)에서 생성된 클라이언트 공개 키(154-1)를 사용하여 제2 세션 키를 암호화한다. 단계 736에서, 원격 컴퓨터 서버(160)는 암호화된 MAC 및 암호화된 제2 세션 키를 로컬 클라이언트 컴퓨터(150)로 전송한다.
단계 738에서, 로컬 클라이언트 컴퓨터(150)는 토큰 생성 프로세스(400/450)에서 생성된 클라이언트 개인 키(154-2)를 사용하여 암호화된 제2 세션 키를 복호화하고 복호화된 제2 세션 키를 추출한다. 단계 740에서, 로컬 클라이언트 컴퓨터(150)는 복호화된 제2 세션 키를 이용하여 암호화된 MAC을 복호화하고 복호화된 MAC을 추출한다. 단계 742에서, MAC은 압축될 수 있고 로컬 클라이언트 컴퓨터(150)는 압축된 MAC을 원래의 압축되지 않은 상태로 압축 해제한다. 또는 MAC이 원래 압축 해제되었을 수 있다. 단계 744에서, 로컬 클라이언트 컴퓨터(150)는 제2 데이터 통신 명령에 기초하여 MAC을 처리한다. 예를 들어, MAC은 클라이언트가 로컬 클라이언트 컴퓨터(150)상의 다른 애플리케이션 및/또는 클라이언트 애플리케이션의 다른 모듈에 성공적으로 액세스 할 수 있게 한다.
도 8a 내지 도 8c를 참조하는 일부 실시 측면에서, HTTPS 프로토콜을 통해 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 데이터 통신을 보호하기 위한 프로세스, 기능 또는 방법(800 및 850)이 있다. 방법(800 및 850)의 다양한 단계는 로컬 클라이언트 컴퓨터(150)에 설치되고 실행되는 클라이언트 애플리케이션을 사용하여 수행된다. 방법(800)은 제1 데이터를 저장하기 위해 원격 컴퓨터 서버(160)에 통신하기 위해 수행될 수 있고, 방법(850)은 원격 컴퓨터 서버(160)로부터 제2 데이터를 검색하기 위해 수행될 수 있다. 제1 데이터는 현재 데이터 세트를 포함할 수 있고 제2 데이터는 과거 데이터 세트를 포함할 수 있다.
현재 데이터 세트는 이전에 원격 컴퓨터 서버(160)로 전송되지 않은 최근 수집된 새로운 개인/의료 데이터를 포함할 수 있다. 현재 데이터 세트는 문서 형식, 데이터 형식, 데이터 레코드, 원시 데이터 또는 기타 적절한 형식일 수 있다. 현재 데이터 세트는 로컬 데이터베이스(152)에 저장되고 그로부터 검색될 수 있다. 과거 데이터 세트는 서버 데이터베이스(162)에 저장하기 위해 이미 원격 컴퓨터 서버(160)로 전송된 이전에 수집된 과거 데이터/정보를 포함할 수 있다. 과거의 데이터 세트는 클라이언트 애플리케이션에서의 시각화를 위해 원격 컴퓨터 서버(160)로부터 다시 검색될 수 있다.
현재 데이터 세트 및 과거 데이터 세트 각각은 준수 데이터 세트(compliant set of data) 및/또는 비준수 데이터 세트(non-compliant set of data)를 포함할 수 있다. 준수 데이터 세트는 개인 데이터 세트, 세분화된 데이터 세트, 또는 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)가 액세스 권한을 부여받기 전에 승인될 규정 또는 정책을 요구할 수 있는 기타 데이터를 포함할 수 있다. 준수 데이터는 고객 계정 또는 고객 프로필에 대한 정보(예를 들어, 고객의 키, 몸무게 및 나이)를 포함할 수 있다. 비준수 데이터 세트는 측정 데이터 세트, 원시 데이터 세트, 세분화된 데이터 세트 또는 액세스 권한이 부여되기 전에 일반적으로 검사가 필요하지 않은 기타 데이터로 구성될 수 있다. 세분화된 데이터 세트는 로컬 클라이언트 컴퓨터(150) 및/또는 원격 컴퓨터 서버(160)에서 구현된 알고리즘 세트에 기초하여 생성될 수 있다. 세분화된 데이터 세트는 활동 데이터, 수면 데이터, 스트레스 데이터 또는 피험자/환자의 생체 인식과 관련된 임의의 유사한 형태의 데이터를 포함할 수 있다. 세분화된 데이터는 심박수, 심박수 변동성, 혈압, 맥압, 센서 등에 의해 측정된 임의의 관련 데이터 및 이들의 임의의 조합과 같은(그러나 이에 제한되지 않음) 측정 데이터 또는 원시 데이터를 기반으로 생성될 수 있다.
원격 컴퓨터 서버(160)는 준수/비준수 데이터를 로컬 클라이언트 컴퓨터(150)에 전달하기 위해 프로그래밍 기능 세트와 함께 API를 사용할 수 있다. 프로그래밍 함수는 Java, JavaScript, Python 및 HTML(Hypertext Markup Language)과 같은 다양한 프로그래밍 언어를 기반으로 할 수 있다. 도 8a를 참조하여 방법(800)의 단계(802)에서, 로컬 클라이언트 컴퓨터(150)는 제1 클라이언트 공개-개인 키 쌍(154a) 및 제1 서버 공개-개인 키 쌍(164a)을 생성하기 위해 원격 컴퓨터 서버(160)와 협력하여 제1 토큰 생성 프로세스(400/450)를 수행한다. 단계 804에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 제1 서버 공개 키(164a-1) 및 제1 클라이언트 개인 키(154a-2)를 수신한다. 단계 806에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)에 제1 데이터 또는 현재 데이터 세트를 저장하기 위해 원격 컴퓨터 서버(160)와 협력하여 제1 데이터 통신 명령을 실행한다. 단계 808에서, 로컬 클라이언트 컴퓨터(150)는 로컬 데이터베이스(152)에 저장된 현재 데이터 세트를 검색한다. 현재 데이터 세트는 상기 실시예에서 설명된 바와 같이 압축될 수 있다. 단계 810에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 생성한다. 단계 812에서, 로컬 클라이언트 컴퓨터(150)는 제1 세션 키를 사용하여 현재 데이터 세트를 암호화한다. 단계 814에서, 로컬 클라이언트 컴퓨터(150)는 제1 서버 공개 키(164a-1)를 사용하여 제1 세션 키를 암호화한다. 단계 816에서, 로컬 클라이언트 컴퓨터(150)는 암호화된 현재 데이터 세트 및 암호화된 제1 세션 키를 원격 컴퓨터 서버(160)로 전송한다.
일부 실시예에서, 현재 데이터 세트는 준수 데이터와 비준수 데이터로 구성된다. 일 구체 예에서, 현재 데이터 세트는 제1 세션 키를 사용하여 암호화된다. 즉, 준수 데이터와 비준수 데이터는 동일한 제1 세션 키를 사용하여 암호화된다. 다른 실시예에서, 준수 데이터 및 비준수 데이터는 다른 세션 키를 사용하여 암호화된다. 로컬 클라이언트 컴퓨터(150)는 준수 데이터를 암호화하기 위한 제1 세션 키 A 및 비준수 데이터를 암호화하기 위한 제1 세션 키 B를 생성할 것이다.
제1 클라이언트 공개-개인 키 쌍(154a) 및 제1 서버 공개-개인 키 쌍(154b)은 단일 사용에 대해서만 유효한 만료 조건을 가질 수 있다. 일회용 만료 조건은 새로운 클라이언트 계정/프로필 정보를 저장하거나 원격 컴퓨터 서버(160)상의 데이터에 액세스하기 위한 승인을 요청하는 것과 같은 일시적 또는 일회용 상황에 적합할 수 있다.
단계 818에서, 원격 컴퓨터 서버(160)는 제1 서버 개인 키(164a-2)를 사용하여 암호화된 제1 세션 키를 복호화하고 복호화된 제1 세션 키를 추출한다. 단계 820에서, 원격 컴퓨터 서버(160)는 복호화된 제1 세션 키를 사용하여 암호화된 현재 데이터 세트를 복호화하고 복호화된 현재 데이터 세트를 추출한다. 단계 822에서, 원격 컴퓨터 서버(160)는 제1 데이터 통신 명령에 기초하여 현재 데이터 세트를 서버 데이터베이스(162)에 저장한다.
클라이언트는 이후에 방법(850)을 사용하여 원격 컴퓨터 서버(160)로부터 현재 데이터 세트 및/또는 과거 데이터 세트를 검색하기를 원할 수 있다. 도 8b를 참조하면, 단계 852에서, 로컬 클라이언트 컴퓨터(150)는 현재 데이터 세트 및/또는 과거 데이터 세트에 액세스 하기 위한 승인을 요청하기 위해 원격 컴퓨터 서버(160)와 협력하여 제2 데이터 통신 명령을 실행한다. 현재 데이터 세트 및/또는 과거 데이터 세트는 준수/비준수 데이터를 포함할 수 있다. 단계 854에서, 원격 컴퓨터 서버(160)는 클라이언트가 준수/비준수 데이터에 대한 액세스가 승인되었는지 여부를 결정하는 클라이언트 인증 레벨을 결정한다.
단계 856에서, 원격 컴퓨터 서버(160)는 요청된 데이터의 전부 또는 일부에 대한 클라이언트 액세스 레벨을 한정하기 위해 포함된 클라이언트 자격 증명 세트를 확인한다. 준수/비준수 데이터의 처리 및 보급의 일부로, 원격 컴퓨터 서버(160)는 클라이언트 신용에 따라 어떤 데이터 필드, 데이터 기록, 원시 데이터, 세분화된 데이터, 처리된 데이터 또는 클라이언트가 인증을 요청하거나 획득할 수 있는 임의의 상기 데이터의 일부를 결정하기 위해 결정 및/또는 검토할 수 있다. 그 후에 클라이언트는 준수/비준수 데이터의 전체 또는 일부를 보거나 액세스 할 수 있다. 추가로, 원격 컴퓨터 서버(160)는 클라이언트가 미리 정의된 시간 기간 내에 준수/비준수 데이터에 액세스 할 수 있는 권한만 부여할 수 있다. 이것은 원격 컴퓨터 서버(160)가 불필요한 데이터가 서버 데이터베이스(162)의 활성 저장 위치에 배치되는 것을 모니터링하고 방지하는 것을 허용한다; 불필요한 데이터는 서버 데이터베이스(162)의 휴면 저장 위치에 저장될 수 있다.
단계 858에서, 원격 컴퓨터 서버(160)는 단계(856)로부터의 클라이언트의 성공적인 인증에 응답하여 MAC을 생성한다. MAC이 압축될 수 있다. 단계 860에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 생성한다. 단계 862에서, 원격 컴퓨터 서버(160)는 제2 세션 키를 사용하여 MAC을 암호화한다. 단계 864에서 원격 컴퓨터 서버(160)는 제1 클라이언트 공개 키(154a-1)를 이용하여 제2 세션 키를 암호화한다. 단계 866에서, 원격 컴퓨터 서버(160)는 암호화된 MAC 및 암호화된 제2 세션 키를 로컬 클라이언트 컴퓨터(150)로 전송한다. 단계 868에서, 로컬 클라이언트 컴퓨터(150)는 제1 클라이언트 개인 키(154a-2)를 사용하여 암호화된 제2 세션 키를 복호화하고 복호화된 제2 세션 키를 추출한다. 단계 870에서, 로컬 클라이언트 컴퓨터(150)는 복호화된 제2 세션 키를 이용하여 암호화된 MAC을 복호화하고 복호화된 MAC을 추출한다. 단계 872에서, 로컬 클라이언트 컴퓨터(150)는 제2 데이터 통신 명령에 기초하여 MAC을 처리한다. 예를 들어, MAC을 통해 클라이언트는 준수/비준수 데이터에 대한 액세스를 요청할 수 있다.
또한 도 8c를 참조하면, 단계 874에서, 로컬 클라이언트 컴퓨터(150)는 제2 클라이언트 공개-개인 키 쌍(154b), 제2 서버 공개-개인 키 쌍(164b) 및 클라이언트 토큰을 생성하기 위해 원격 컴퓨터 서버(160)와 협력하여 제2 토큰 생성 프로세스(400/450)를 수행한다. 제2 클라이언트 공개-개인 키 쌍(154b), 제2 서버 공개-개인 키 쌍(164b) 및 클라이언트 토큰은 클라이언트가 준수/비준수 데이터에 액세스하기 위해 필요하다. 준수/비준수 데이터에 액세스하는 기간은 데이터의 양 및/또는 중요도에 따라 미리 설정할 수 있다. 제2 클라이언트 공개-개인 키 쌍(154b), 제2 서버 공개-개인 키 쌍(164b) 및 클라이언트 토큰은 미리 정의된 기간 동안 만 유효한 만료 조건을 가질 수 있다. 미리 정의된 시간은 2 시간이 될 수 있으며 알 수 없는 사용자 또는 클라이언트가 준수/비준수 데이터에 액세스하는 것을 방지하는 데 도움이 될 수 있다. 단계 876에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 제2 서버 공개 키(164b-1), 제2 클라이언트 개인 키(154b-2) 및 클라이언트 토큰을 수신한다.
단계 878에서, 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 준수/비준수 데이터에 액세스하고 검색하기 위해 원격 컴퓨터 서버(160)와 협력하여 제3 데이터 통신 명령을 실행한다. 제3 데이터 통신 명령은 로컬 클라이언트 컴퓨터(150/클라이언트)를 식별하기 위한 클라이언트 토큰을 포함할 수 있으며, 및 클라이언트 토큰은 클라이언트가 규정 준수/비준수 데이터에 액세스하고 검색하기 위해 로그 아웃 된 후 미리 정의된 유효 기간 동안 활성 상태로 유지될 수 있다. 원격 컴퓨터 서버(160)는 클라이언트 토큰의 만료시 로컬 클라이언트 컴퓨터(150)에 타임 아웃 또는 로그 아웃 메시지를 전송할 수 있다.
단계 880에서, 원격 컴퓨터 서버(160)는 서버 데이터베이스(162)에 저장된 준수/비준수 데이터를 쿼리하고 검색한다. 단계 882에서 원격 컴퓨터 서버(160)는 제3 세션 키를 생성한다. 단계 884에서, 원격 컴퓨터 서버(160)는 제3 세션 키를 사용하여 준수/비준수 데이터를 암호화한다. 단계 886에서 원격 컴퓨터 서버(160)는 제2 클라이언트 공개 키(154b-1)를 이용하여 제3 세션 키를 암호화한다. 단계 888에서, 원격 컴퓨터 서버(160)는 암호화된 준수/비준수 데이터 및 암호화된 제3 세션 키를 로컬 클라이언트 컴퓨터(150)로 전송한다.
일 구체 예에서, 준수 데이터와 비준수 데이터는 동일한 세 번째 세션 키를 사용하여 암호화된다. 다른 실시예에서, 준수 데이터 및 비준수 데이터는 다른 세션 키를 사용하여 암호화된다. 원격 컴퓨터 서버(160)는 준수 데이터를 암호화하기 위한 제3 세션 키 A 및 비준수 데이터를 암호화하기 위한 제3 세션 키 B를 생성할 것이다. 단계 890에서, 로컬 클라이언트 컴퓨터(150)는 생성된 제2 클라이언트 개인 키(154b-2)를 이용하여 암호화된 제3 세션 키를 복호화하고 복호화된 제3 세션 키를 추출한다. 단계 892에서, 로컬 클라이언트 컴퓨터(150)는 복호화된 제3 세션 키를 사용하여 암호화된 준수/비준수 데이터를 복호화하고 복호화된 준수/비준수 데이터를 추출한다. 단계 894에서, 로컬 클라이언트 컴퓨터(150)는 제3 데이터 통신 명령에 기초하여 준수/비준수 데이터를 로컬 데이터베이스(152)에 저장한다.
일 구체 예에서, 로컬 클라이언트 컴퓨터(150)는 클라이언트 애플리케이션에서 시각화를 위해 준수/비준수 데이터를 표시한다. 다른 실시예에서, 로컬 클라이언트 컴퓨터(150)는 준수/비준수 데이터를 다른 클라이언트 컴퓨터/장치에 배포한다. 로컬 클라이언트 컴퓨터(150)는 암호화된 준수/비준수 데이터를 다른 클라이언트 컴퓨터/장치에 전달하기 전에 준수/비준수 데이터를 암호화하기 위한 배포 세션 키 세트를 생성할 수 있다. 준수/비준수 데이터는 준수/비준수 데이터의 하나 이상의 파티션으로 분할될 수 있다. 파티션은 로컬 데이터베이스(152)의 별도의 저장 위치에 저장될 수 있다. 파티션은 동일한 배포 세션 키로 암호화되거나 각 파티션이 자체 배포 세션 키로 암호화될 수 있다. 준수/비준수 데이터 또는 그 파티션을 암호화하는 데 사용되는 배포 세션 키는 수신된 데이터를 복호화하기 위해 다른 클라이언트 컴퓨터/장치에도 전달된다.
본 명세서에 설명된 다양한 실시예는 암호화 및 복호화를 위해 보안 키(140)를 사용함으로써 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 데이터 통신을 보호하는 것과 관련된다. 보안 키(140)는 토큰 생성 프로세스(400/450)에 의해 생성된 클라이언트 공개-개인 키 쌍(154) 및 서버 공개-개인 키 쌍(164)을 포함한다. 도 9a는 원격 컴퓨터 서버(160)로부터 로컬 클라이언트 컴퓨터(150)로 전달되는 토큰 생성 프로세스(400)로부터의 OAuth 2.0 응답(900)을 도시한다. 응답(900)은 클라이언트 개인 키(154-2)의 텍스트 문자열(902) 및 서버 공개 키(164-1)의 텍스트 문자열(904)을 보여준다. 도 9B는 로컬 클라이언트 컴퓨터(150)로부터 원격 컴퓨터 서버(160)로 전달되는 암호화된 비준수 데이터의 암호 텍스트(906)를 도시한다. 여기서 데이터는 세션 키를 사용하여 암호화된다. 도 9c는 세션 키를 사용하여 복호화된 비준수 데이터의 평문(plain text)(908)을 도시한다.
일부 실시예에서, 클라이언트 공개-개인 키 쌍(154) 및 서버 공개-개인 키 쌍(164)은 일회용 만료 조건을 갖는다. 만료 조건은 미리 정의된 유효 기간 동안 단일 사용이 수행되어야 하는 미리 정의된 유효 기간을 추가로 포함할 수 있다. 클라이언트 공개-개인 키 쌍(154) 및 서버 공개-개인 키 쌍(164)은 사용되지 않은 경우에도 미리 정의된 유효 기간 후에 자동으로 만료된다. 도 9d는 단일 사용 클라이언트 개인 키(154-2)의 텍스트 문자열(910) 및 단일 사용 서버 공개 키(164-1)의 텍스트 문자열(912)을 도시한다. 일회용 키는 클라이언트 애플리케이션의 내장된 브라우저 또는 별도의 인터넷 브라우저가 클라이언트 프로파일 보기 및 편집과 같은 다양한 기능을 수행하기 위해 로그인 페이지를 검색하는 경우와 같은 일회용 상황에 적합할 수 있다. 클라이언트는 브라우저를 사용하여 데이터 통신 명령을 실행하고 관련 일회용 키를 사용하여 데이터를 암호화/복호화한다. 하나의 예에서, 일회용 서버 공개 키(164-1)는 원격 컴퓨터 서버(160)로 전송될 인증 데이터를 암호화하기 위해 로컬 클라이언트 컴퓨터(150)에 의해 사용된다. 인증 데이터에는 사용자 이름 및/또는 암호 또는 암호 변경 명령이 포함된다. 또 다른 예로, 일회용 클라이언트 공개 키(154-1)는 원격 컴퓨터 서버(160)에 의해 사용되어 로컬 클라이언트 컴퓨터(150)로 전송되고 브라우저에 표시될 프로필 페이지를 암호화한다.
본 명세서에 설명된 다양한 실시예는 유리하게 사용자 또는 클라이언트가 보안 키(140)를 사용하여 로컬 클라이언트 컴퓨터(150)와 원격 컴퓨터 서버(160) 사이의 보안 데이터 통신을 수행하도록 허용하고, 원격 컴퓨터 서버(160)에 의해 생성되는 클라이언트 공개-개인 키 쌍(154) 및 서버 공개 개인 키 쌍(164)을 포함한다. 따라서 데이터 통신 프로세스를 복잡하게 만드는 보안 키를 제공하기 위해 타사 서버가 필요하지 않는다. 로컬 클라이언트 컴퓨터(150)는 원격 컴퓨터 서버(160)로부터 보안 키(140)를 요청하고 필요할 때마다 원격 컴퓨터 서버(160)와 보안 데이터 통신을 시작할 수 있다. 데이터 통신은 새로운 데이터를 저장하거나 보안 키(140)를 사용하여 암호화된 과거 데이터를 검색하기 위한 것일 수 있다.
의료/개인 정보의 예에서, 일부 데이터는 모든 인스턴스에서 기밀로 간주되고 클라이언트 그룹에서만 액세스 할 수 있는 반면 일부 다른 데이터는 선택한 클라이언트에서만 액세스 할 수 있다. 따라서, 서로 다른 클래스의 데이터는 서로 다른 클라이언트 선택에 의해서만 액세스 될 수 있다. 데이터를 암호화하기 위해 클라이언트 특정 공개 키(154-1)를 사용하고 암호화된 데이터를 복호화하기 위해 대응하는 클라이언트 특정 개인 키(154-2)를 사용함으로써, 다른 클라이언트는 다른 클래스의 데이터에 액세스 할 수 있다. 이것은 유리하게는 선택된 클라이언트 만이 관련 규정/정책 내에서 유지하면서 의료/개인 정보에 대한 특정 변경과 같은 목적으로 선택된 데이터 클래스에 액세스 할 수 있도록 한다. 이를 통해 허용되지 않는 데이터에 대한 부정 접근을 방지하여 의료/개인 정보에 대한 잘못된 집단 분석을 초래할 수 있는 민감한 의료/개인 정보의 변경을 방지한다.
도 10은 본 개시 내용의 실시예들에 따른 컴퓨터(1000)의 기술 아키텍처를 예시하는 블록도이다. 컴퓨터(1000)의 일부 비 제한적인 예는 제1 컴퓨터(110), 제2 컴퓨터(120), 로컬 클라이언트 컴퓨터(150) 및 원격 컴퓨터 서버(160)이다. 컴퓨터(1000)는 프로세서/중앙 처리 장치(CPU)(1002), 메모리 장치(1004), 데이터베이스(1006), 데이터 통신 모듈(1008) 및 보안 모듈(1010)을 포함한다.
프로세서(1002)는 메모리 장치(1004)로부터 액세스하는 명령어, 코드, 컴퓨터 프로그램 및/또는 스크립트를 실행한다. 프로세서(1002)는 그러한 동작 또는 단계를 실행하기 위한 적절한 로직, 회로, 및/또는 인터페이스를 포함한다. 프로세서(1002)의 일부 비 제한적인 예는 주문형 집적 회로(ASIC) 프로세서, 감소된 명령 세트 컴퓨팅(RISC) 프로세서, 복잡한 명령 세트 컴퓨팅(CISC) 프로세서, 필드 프로그래밍 가능 게이트 어레이(FPGA) 등을 포함한다. 하나의 프로세서(1002)만이 도시되지만, 다수의 프로세서(1002)가 존재할 수 있다. 따라서, 명령어는 프로세서(1002)에 의해 실행되는 것으로 논의될 수 있지만, 명령어는 동시에, 직렬로 실행될 수 있거나, 그렇지 않으면 하나 또는 다수의 프로세서(1002)에 의해 실행될 수 있다(예를 들어, 멀티 코어 구성에서).
메모리 장치(1004)는 저장 장치(플래시 메모리, 디스크 드라이브 또는 메모리 카드와 같은), 읽기 전용 메모리(ROM) 및 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 메모리 장치(1004)는 본 발명의 다양한 실시예에 따른 방법의 다양한 동작 또는 단계를 수행하기 위해 프로세서(1002)에 의해 동작하는 비 일시적 명령어를 저장한다. 메모리 장치(1004)는 컴퓨터 판독 가능 저장 매체 및/또는 비 일시적 컴퓨터 판독 가능 매체로 지칭될 수 있다. 비 일시적 컴퓨터 판독 가능 매체는 모든 컴퓨터 판독 가능 매체를 포함하며, 유일한 예외는 일시적 전파 신호 자체이다.
데이터베이스(1006)는 데이터를 저장 및/또는 검색하기에 적합한 임의의 컴퓨터 작동 하드웨어이다. 데이터베이스(1006)의 일부 비 제한적인 예는 데이터베이스(112, 122, 152 및 162)이다. 데이터베이스(1006)는 복수 배열 독립 디스크(Redundant Array of Independent Disks)(RAID) 구성의 하드 디스크 및/또는 솔리드 스테이트 디스크와 같은 다중 저장 유닛을 포함할 수 있다. 데이터베이스(1006)는 스토리지 전용 네트워크(Storage Area Network)(SAN) 및/또는 네트워크 결합 스토리지(Network Attached Storage)(NAS) 시스템을 포함할 수 있지만 이에 제한되지는 않는다. 데이터 통신 모듈(1008)은 다른 컴퓨터(1000)와 통신하도록 구성된다. 예를 들어, 로컬 클라이언트 컴퓨터(150)의 데이터 통신 모듈(1008)은 원격 컴퓨터 서버(160)의 데이터 통신 모듈(1008)과 통신하거나 데이터를 교환할 수 있다.
보안 모듈(1010)은 여기에 설명된 다양한 대칭/비대칭 암호화 알고리즘에 따라 보안 키(140)를 생성하도록 구성된다. 또한, 보안 모듈(1010)은 보안 키(140)를 사용하여 데이터의 암호화 및 복호화를 수행하도록 구성된다. 보안 키(140)의 일부 비 제한적인 예는 세션 키, 제1 공개-개인 키 쌍, 제2 공개-개인 키 쌍, 클라이언트 공개-개인 키 쌍(154) 및 서버 공개-개인 키 쌍(164)이다. 보안 모듈(security module)(1010)은 데이터 암호화를 위한 세션 키를 생성하고 토큰 생성 프로세스(400/450)를 통해 공개-개인 키 쌍을 생성한다.
전술한 상세한 설명에서, 컴퓨터 간의 데이터 통신을 보호하기 위한 시스템 및 방법에 관한 본 개시의 실시예가 제공된 도면을 참조하여 설명된다. 본 명세서의 다양한 실시예의 설명은 본 개시 내용의 특정 또는 특정 표현을 언급하거나 이에 제한되는 것으로 의도되지 않고, 단지 본 개시 내용의 비 제한적인 예를 예시하기 위한 것이다. 본 개시는 종래 기술과 관련된 언급된 문제 및 문제 중 적어도 하나를 해결하는 역할을 한다. 본 개시 내용의 일부 실시예 만이 여기에 개시되었지만, 본 개시의 범위를 벗어나지 않고 개시된 실시예에 대해 다양한 변경 및/또는 수정이 이루어질 수 있다는 것이 본 개시의 관점에서 당업자에게 명백할 것이다. 따라서, 본 개시 내용의 범위 및 하기 청구 범위의 범위는 여기에 설명된 실시예로 제한되지 않는다.

Claims (35)

  1. 제1 컴퓨터와 제2 컴퓨터 사이의 데이터 통신을 보안하기 위한 방법으로서, 상기 제1 및 상기 제2 컴퓨터에 의해 수행되는 방법은:
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 컴퓨터로부터 상기 제2 컴퓨터로 제1 데이터를 통신하기 위한 제1 데이터 통신 명령을 협력적으로 실행하는 단계;
    상기 제1 컴퓨터에 의해, 제1 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 제1 세션 키를 사용하여 상기 제1 데이터를 암호화하는 단계;
    상기 제1 컴퓨터에 의해, 제1 공개 키를 사용하여 상기 제1 세션 키를 암호화하는 단계 - 상기 제1 공개 키는 제1 개인 키와 쌍을 이루고, 상기 제1 공개-개인 키 쌍은 상기 제2 컴퓨터에 대해 생성됨 -;
    상기 암호화된 제1 데이터 및 상기 암호화된 제1 세션 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 제1 개인 키를 사용하여 상기 암호화된 제1 세션 키를 복호화하는 단계;
    상기 제2 컴퓨터에 의해, 상기 복호화된 제1 세션 키를 사용하여 상기 암호화된 제1 데이터를 복호화하는 단계; 및
    상기 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령에 기초하여 상기 복호화된 제1 데이터를 처리하는 단계
    를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 수행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 토큰 요청을 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 토큰 요청을 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 토큰 요청을 복호화하는 단계;
    상기 제2 컴퓨터에 대해 및 상기 제2 컴퓨터에 의해 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 공개 키를 암호화하는 단계;
    상기 암호화된 제1 공개 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 공개 키를 복호화하는 단계
    를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 수행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 대해 제1 컴퓨터에 의해 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 개인 키를 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 제1 개인 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 개인 키를 복호화하는 단계
    를 포함하는
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 공개-개인 키 쌍은 만료 조건을 가지며, 상기 만료 조건이 충족되기 전에 제1 공개-개인 키 쌍이 암호화 및 복호화에 유효한
    방법.
  5. 제4항에 있어서,
    상기 만료 조건은 미리 정의된 유효 기간 인
    방법.
  6. 제4항 또는 제5항에 있어서,
    상기 만료 조건은 미리 정의된 사용 횟수 인
    방법.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서,
    상기 만료 조건은 상기 토큰 세션 키의 만료 이후에 충족되는
    방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 로컬 클라이언트 컴퓨터이고 및 상기 제2 컴퓨터는 원격 컴퓨터 서버 인
    방법.
  9. 제8항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버 상에 상기 제1 데이터를 저장하는 것과 관련된
    방법.
     
  10. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 원격 컴퓨터 서버이고 및 제2 컴퓨터는 로컬 클라이언트 컴퓨터 인
    방법.
  11. 제10항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버로부터 상기 제1 데이터를 검색하는 것과 관련된
    방법.
  12. 제1항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제2 컴퓨터로부터 상기 제1 컴퓨터로 제2 데이터를 통신하기 위한 제2 데이터 통신 명령을 협력적으로 실행하는 단계;
    상기 제2 컴퓨터에 의해 제2 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 의해, 상기 제2 세션 키를 사용하여 상기 제2 데이터를 암호화하는 단계;
    상기 제2 컴퓨터에 의해, 제2 공개 키를 사용하여 상기 제2 세션 키를 암호화하는 단계 - 상기 제2 공개 키는 제2 개인 키와 쌍을 이루고, 상기 제2 공개-개인 키 쌍은 상기 제1 컴퓨터에 대해 생성됨 -;
    상기 암호화된 제2 데이터 및 상기 암호화된 제2 세션 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 제2 개인 키를 사용하여 상기 암호화된 제2 세션 키를 복호화하는 단계;
    상기 제1 컴퓨터에 의해, 상기 복호화된 제2 세션 키를 사용하여 상기 암호화된 제2 데이터를 복호화하는 단계; 및
    상기 제1 컴퓨터에 의해, 상기 제2 데이터 통신 명령에 기초하여 상기 복호화된 제2 데이터를 처리하는 단계
    를 더 포함하는
    방법.
  13. 제12항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 토큰 요청을 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 토큰 요청을 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 토큰 요청을 복호화하는 단계;
    상기 제2 컴퓨터에 대해 및 제2 컴퓨터에 의해 상기 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 대해 상기 제2 컴퓨터에 의해 상기 상기 제2 공개-개인 키 쌍을 생성하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 공개 키 및 상기 제2 개인 키를 암호화하는 단계;
    상기 암호화된 제1 공개 키 및 상기 암호화된 제2 개인 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 공개 키와 상기 암호화된 제2 개인 키를 복호화하는 단계
    를 포함하는
    방법.
  14. 제12항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 대해 상기 제1 컴퓨터에 의해 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 대해 및 상기 제1 컴퓨터에 의해 상기 제2 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 개인 키 및 상기 제2 공개 키를 암호화하는 단계;
    상기 토큰 세션 키, 상기 암호화된 제1 개인 키 및 상기 암호화된 제2 공개 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 개인 키와 상기 암호화된 제2 공개 키를 복호화하는 단계
    를 포함하는
    방법.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 제1 및 제2 공개-개인 키 쌍 각각은 만료 조건을 가지며, 상기 각각의 만료 조건이 충족되기 전에 상기 제1 및 제2 공개-개인 키 쌍 각각이 암호화 및 복호화에 유효한
    방법.
  16. 제15항에 있어서,
    상기 만료 조건은 미리 정의된 유효 기간 인
    방법.
  17. 제15항 또는 제16항에 있어서,
    상기 만료 조건은 미리 정의된 사용 횟수 인
    방법.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    상기 만료 조건은 상기 토큰 세션 키의 만료 이후에 충족되는
    방법.
  19. 제12항 내지 제18항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 로컬 클라이언트 컴퓨터이고 및 상기 제2 컴퓨터는 원격 컴퓨터 서버 인
    방법.
  20. 제19항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버 상에 상기 제1 데이터를 저장하는 것과 관련되고, 및
    상기 제2 데이터 통신 명령은 상기 원격 컴퓨터 서버로부터 상기 제2 데이터를 검색하는 것과 관련된
    방법.
  21. 제19항에 있어서,
    상기 제1 데이터는 상기 로컬 클라이언트 컴퓨터 사용자의 인증 데이터를 포함하고, 및
    상기 제2 데이터는 상기 원격 컴퓨터 서버에 의한 상기 인증 데이터의 성공적인 인증에 응답하여 상기 원격 컴퓨터 서버에 의해 생성된 메시지 인증 코드(MAC)를 포함하는
    방법.
  22. 제1항 내지 제21항 중 어느 한 항에 있어서,
    상기 제1 데이터는 의료 정보와 관련된 측정 데이터를 포함하는
    방법.
  23. 서로 통신적으로 연결된 제1 컴퓨터와 제2 컴퓨터를 포함하는 컴퓨터 시스템에 있어서,
    상기 제1 및 제2 컴퓨터 간의 데이터 통신을 보안하도록 구성된 컴퓨터 시스템,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 컴퓨터로부터 상기 제2 컴퓨터로 제1 데이터를 통신하기 위한 제1 데이터 통신 명령을 협력적으로 수행하는 단계;
    상기 제1 컴퓨터에 의해, 제1 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 제1 세션 키를 사용하여 상기 제1 데이터를 암호화하는 단계;
    상기 제1 컴퓨터에 의해, 제1 공개 키를 사용하여 상기 제1 세션 키를 암호화하는 단계 - 상기 제1 공개 키는 제1 개인 키와 쌍을 이루고, 상기 제1 공개-개인 키 쌍은 상기 제2 컴퓨터에 대해 생성됨 -;
    상기 암호화된 제1 데이터 및 상기 암호화된 제1 세션 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 제1 개인 키를 사용하여 상기 암호화된 제1 세션 키를 복호화하는 단계;
    상기 제2 컴퓨터에 의해, 상기 복호화된 제1 세션 키를 사용하여 상기 암호화된 제1 데이터를 복호화하는 단계; 및
    상기 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령에 기초하여 상기 복호화된 제1 데이터를 처리하는 단계를 포함하는 단계를 수행하도록 구성된
    상기 제1 및 제2 컴퓨터
    를 포함하는
    장치
  24. 제23항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 토큰 요청을 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 토큰 요청을 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 토큰 요청을 복호화하는 단계;
    상기 제2 컴퓨터에 대해 및 제2 컴퓨터에 의해 상기 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 공개 키를 암호화하는 단계;
    상기 암호화된 제1 공개 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 공개 키를 복호화하는 단계
    를 포함하는
    장치.
  25. 제23항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 수행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 대해 제1 컴퓨터에 의해 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 개인 키를 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 제1 개인 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 개인 키를 복호화하는 단계
    를 포함하는
    장치.
  26. 제23항 내지 제25항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 로컬 클라이언트 컴퓨터이고 상기 제2 컴퓨터는 원격 컴퓨터 서버인
    장치.
  27. 제26항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버 상에 상기 제1 데이터를 저장하는 것과 관련된
    장치.
  28. 제23항 내지 제26항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 원격 컴퓨터 서버이고 상기 제2 컴퓨터는 로컬 클라이언트 컴퓨터인
    장치.
  29. 제28항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버로부터 상기 제1 데이터를 검색하는 것과 관련된
    장치.
  30. 제23항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제2 컴퓨터로부터 상기 제1 컴퓨터로 제2 데이터를 통신하기 위한 제2 데이터 통신 명령을 협력적으로 실행하는 단계;
    상기 제2 컴퓨터에 의해 제2 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 의해, 상기 제2 세션 키를 사용하여 상기 제2 데이터를 암호화하는 단계;
    상기 제2 컴퓨터에 의해, 제2 공개 키를 사용하여 상기 제2 세션 키를 암호화하는 단계 - 상기 제2 공개 키는 제2 개인 키와 쌍을 이루고, 상기 제2 공개-개인 키 쌍은 상기 제1 컴퓨터에 대해 생성됨 -;
    상기 암호화된 제2 데이터 및 상기 암호화된 제2 세션 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 제2 개인 키를 사용하여 상기 암호화된 제2 세션 키를 복호화하는 단계;
    상기 제1 컴퓨터에 의해, 상기 복호화된 제2 세션 키를 사용하여 상기 암호화된 제2 데이터를 복호화하는 단계; 및
    상기 제1 컴퓨터에 의해, 상기 제2 데이터 통신 명령에 기초하여 상기 복호화된 제2 데이터를 처리하는 단계
    를 더 포함하는
    장치.
  31. 제30항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 토큰 요청을 암호화하는 단계;
    상기 토큰 세션 키 및 상기 암호화된 토큰 요청을 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 토큰 요청을 복호화하는 단계;
    상기 제2 컴퓨터에 대해 및 제2 컴퓨터에 의해 상기 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 대해 상기 제2 컴퓨터에 의해 상기 상기 제2 공개-개인 키 쌍을 생성하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 공개 키 및 상기 제2 개인 키를 암호화하는 단계;
    상기 암호화된 제1 공개 키 및 상기 암호화된 제2 개인 키를 상기 제2 컴퓨터에서 상기 제1 컴퓨터로 전송하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 공개 키와 상기 암호화된 제2 개인 키를 복호화하는 단계
    를 포함하는
    장치.
  32. 제30항에 있어서,
    상기 제1 및 제2 컴퓨터에 의해, 상기 제1 데이터 통신 명령을 실행하기 전에 토큰 생성 프로세스를 협력적으로 수행하는 단계를 더 포함하고,
    상기 토큰 생성 프로세스는:
    상기 제1 컴퓨터에 의해 토큰 세션 키를 생성하는 단계;
    상기 제2 컴퓨터에 대해 상기 제1 컴퓨터에 의해 상기 제1 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 대해 및 상기 제1 컴퓨터에 의해 상기 제2 공개-개인 키 쌍을 생성하는 단계;
    상기 제1 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 제1 개인 키 및 상기 제2 공개 키를 암호화하는 단계;
    상기 토큰 세션 키, 상기 암호화된 제1 개인 키 및 상기 암호화된 제2 공개 키를 상기 제1 컴퓨터에서 상기 제2 컴퓨터로 전송하는 단계;
    상기 제2 컴퓨터에 의해, 상기 토큰 세션 키를 사용하여 상기 암호화된 제1 개인 키와 상기 암호화된 제2 공개 키를 복호화하는 단계
    를 포함하는
    장치.
  33. 제30항 내지 제32항 중 어느 한 항에 있어서,
    상기 제1 컴퓨터는 로컬 클라이언트 컴퓨터이고 및 상기 제2 컴퓨터는 원격 컴퓨터 서버 인
    장치.
  34. 제33항에 있어서,
    상기 제1 데이터 통신 명령은 상기 원격 컴퓨터 서버 상에 상기 제1 데이터를 저장하는 것과 관련되고, 및
    상기 제2 데이터 통신 명령은 상기 원격 컴퓨터 서버로부터 상기 제2 데이터를 검색하는 것과 관련된
    장치.
  35. 제33항에 있어서,
    상기 제1 데이터는 상기 로컬 클라이언트 컴퓨터 사용자의 인증 데이터를 포함하고, 및
    상기 제2 데이터는 상기 원격 컴퓨터 서버에 의한 상기 인증 데이터의 성공적인 인증에 응답하여 상기 원격 컴퓨터 서버에 의해 생성된 메시지 인증 코드(MAC)를 포함하는
    장치.
KR1020207027231A 2018-03-02 2019-02-28 컴퓨터 간의 데이터 통신을 보안하기 위한 시스템 및 방법 KR20200127201A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SG10201801747W 2018-03-02
SG10201801747W 2018-03-02
PCT/SG2019/050114 WO2019168477A1 (en) 2018-03-02 2019-02-28 System and method for securing data communication between computers

Publications (1)

Publication Number Publication Date
KR20200127201A true KR20200127201A (ko) 2020-11-10

Family

ID=67808799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207027231A KR20200127201A (ko) 2018-03-02 2019-02-28 컴퓨터 간의 데이터 통신을 보안하기 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US11310038B2 (ko)
EP (1) EP3759867A4 (ko)
JP (1) JP7314156B2 (ko)
KR (1) KR20200127201A (ko)
CN (1) CN112075051A (ko)
AU (1) AU2019228421A1 (ko)
SG (1) SG11202008452PA (ko)
WO (1) WO2019168477A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11202101351VA (en) * 2018-08-13 2021-03-30 Visa Int Service Ass Token keys to generate cryptograms for token interactions
US11463258B2 (en) 2020-03-13 2022-10-04 Ebay Inc. Secure token refresh
US11343079B2 (en) * 2020-07-21 2022-05-24 Servicenow, Inc. Secure application deployment
US11153080B1 (en) * 2020-07-29 2021-10-19 John A. Nix Network securing device data using two post-quantum cryptography key encapsulation mechanisms
US11444753B1 (en) * 2021-03-09 2022-09-13 ISARA Corporation Protocol key negotiation
CN116112152B (zh) * 2023-04-11 2023-06-02 广东徐工汉云工业互联网有限公司 跨企业网络的数据共享安全加密方法和装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2452699A (en) * 1998-01-09 1999-07-26 Cybersafe Corporation Client side public key authentication method and apparatus with short-lived certificates
US6980659B1 (en) * 2000-06-02 2005-12-27 Brig Barnum Elliott Methods and systems for supplying encryption keys
PT1348279E (pt) * 2000-11-28 2005-06-30 Nagravision Sa Certificacao das transaccoes
US20040266533A1 (en) * 2003-04-16 2004-12-30 Gentles Thomas A Gaming software distribution network in a gaming system environment
JP5013728B2 (ja) * 2006-03-20 2012-08-29 キヤノン株式会社 システム及びその処理方法、並びに通信装置及び処理方法
US8165301B1 (en) 2006-04-04 2012-04-24 Bitmicro Networks, Inc. Input-output device and storage controller handshake protocol using key exchange for data security
KR101609580B1 (ko) * 2010-02-10 2016-04-07 삼성전자주식회사 무선 통신 시스템 및 그의 사용자 단말기와 이동성 관리 엔티티 간 연결 방법
US9055520B2 (en) * 2012-12-19 2015-06-09 Cisco Technology, Inc. Systems, methods and media for mobile management entity (MME) selection by Evolved Node B (eNodeB)
UA116025C2 (uk) * 2013-07-04 2018-01-25 Нек Корпорейшн Система, спосіб і пристрій зв'язку
WO2015003753A1 (en) * 2013-07-12 2015-01-15 Nokia Solutions And Networks Oy Redirection of m2m devices
US11349675B2 (en) * 2013-10-18 2022-05-31 Alcatel-Lucent Usa Inc. Tamper-resistant and scalable mutual authentication for machine-to-machine devices
US9942043B2 (en) * 2014-04-23 2018-04-10 Visa International Service Association Token security on a communication device
US10050955B2 (en) * 2014-10-24 2018-08-14 Netflix, Inc. Efficient start-up for secured connections and related services
US10462109B2 (en) * 2016-06-12 2019-10-29 Apple Inc. Secure transfer of a data object between user devices
CN106506470B (zh) * 2016-10-31 2018-07-27 大唐高鸿信安(浙江)信息科技有限公司 网络数据安全传输方法

Also Published As

Publication number Publication date
AU2019228421A1 (en) 2020-09-24
CN112075051A (zh) 2020-12-11
WO2019168477A9 (en) 2020-04-09
EP3759867A4 (en) 2021-11-03
SG11202008452PA (en) 2020-09-29
WO2019168477A1 (en) 2019-09-06
EP3759867A1 (en) 2021-01-06
US11310038B2 (en) 2022-04-19
JP7314156B2 (ja) 2023-07-25
US20210058242A1 (en) 2021-02-25
JP2021516491A (ja) 2021-07-01

Similar Documents

Publication Publication Date Title
US11671425B2 (en) Cross-region requests
US11310038B2 (en) System and method for securing data communication between computers
US9866568B2 (en) Systems and methods for detecting and reacting to malicious activity in computer networks
US11329962B2 (en) Pluggable cipher suite negotiation
CN105103119B (zh) 数据安全服务系统
US9973481B1 (en) Envelope-based encryption method
US9191394B2 (en) Protecting user credentials from a computing device
US9852300B2 (en) Secure audit logging
US10182044B1 (en) Personalizing global session identifiers
US9900160B1 (en) Asymmetric session credentials
US8438622B2 (en) Methods and apparatus for authorizing access to data
US8745394B1 (en) Methods and systems for secure electronic communication
US10148438B2 (en) Methods and apparatus for protecting sensitive data in distributed applications
US20130061298A1 (en) Authenticating session passwords
JP7023294B2 (ja) 一致コホートの作成およびブロックチェーンを使用した保護データの交換
US9887993B2 (en) Methods and systems for securing proofs of knowledge for privacy
US10277569B1 (en) Cross-region cache of regional sessions
CN110708291B (zh) 分布式网络中数据授权访问方法、装置、介质及电子设备
Junghanns et al. Engineering of secure multi-cloud storage
US9053297B1 (en) Filtering communications
US20140337926A1 (en) Systems and methods for on-demand provisioning of user access to network-based computer applications and programs
CN116601916A (zh) 作为用于密钥散列消息认证码用户认证和授权的密钥材料的基于属性的加密密钥
JP7384487B2 (ja) 暗号認証システム、ユーザ端末、サービスサーバ、及びプログラム
CN115514584A (zh) 服务器以及金融相关服务器的可信安全认证方法
Rostrom Framework to Secure Cloud-based Medical Image Storage and Management System Communications

Legal Events

Date Code Title Description
A201 Request for examination