KR20220134572A - 엔드포인트 인스턴스들 간의 안전한 개인 키 분산 - Google Patents

엔드포인트 인스턴스들 간의 안전한 개인 키 분산 Download PDF

Info

Publication number
KR20220134572A
KR20220134572A KR1020227028316A KR20227028316A KR20220134572A KR 20220134572 A KR20220134572 A KR 20220134572A KR 1020227028316 A KR1020227028316 A KR 1020227028316A KR 20227028316 A KR20227028316 A KR 20227028316A KR 20220134572 A KR20220134572 A KR 20220134572A
Authority
KR
South Korea
Prior art keywords
instance
signing key
key
authentication
private
Prior art date
Application number
KR1020227028316A
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 KR20220134572A publication Critical patent/KR20220134572A/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
    • 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/083Key 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 central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • H04L9/3073Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Storage Device Security (AREA)
  • Small-Scale Networks (AREA)
  • Maintenance And Inspection Apparatuses For Elevators (AREA)
  • Transmitters (AREA)

Abstract

인증 인스턴스들 간에 개인 서명 키를 분산하기 위한 방법, 컴퓨터 프로그램 제품, 및 시스템이 제공된다. 상기 방법은 구성 파일에 복수의 인증 인스턴스들을 등록하는 단계 상기 인증 인스턴스들 각각에 의해 호스트 인스턴스 키 쌍들을 생성하는 단계를 포함한다. 상기 방법은 또한 상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계 및 상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스로 선택하는 단계를 포함한다. 상기 방법은 상기 서명 키 리더 인스턴스에 의해, 서명 키 쌍을 생성하는 단계를 포함한다. 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함한다. 상기 방법은 또한 상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계 및 암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계를 포함한다. 상기 방법은 또한 상기 요청하는 인증 인스턴스에 의해 생성된 상기 개인 호스트 키를 사용하여 상기 암호화된 개인 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 암호 해독하는 단계를 포함한다.

Description

엔드포인트 인스턴스들 간의 안전한 개인 키 분산
[0001] 본 발명은 개인 키 분산(private key distribution)에 관한 것으로, 보다 구체적으로, 액세스 토큰들을 생성하고 검증하는 데 사용되는 엔드포인트 인스턴스들(endpoint instances) 사이에 개인 키 분산을 제공하는 것에 관한 것이다.
[0002] 웹(Web) 애플리케이션 프로그래밍 인터페이스(Application Programming Interfaces: API)는 서비스들 및 자원들에 대한 액세스 권한을 제공하기 전에 사용자에게 인증 요건들을 부과할 수 있다. 웹 API들은 인증 엔드포인트들(authorization endpoints)을 사용하여 인증된 자격 증명들(verified credentials)이 있는 사용자들을 위해 액세스 토큰들(access tokens)을 생성할 수 있다. 각 후속 요청에서, 사용자는 웹 API에 의해서 제공되는 경로들(routes), 서비스들, 및 자원들에 대한 액세스를 얻기 위해 액세스 토큰을 제공할 수 있다. 이들 액세스 토큰들은 자바스크립트 객체 표기(JavaScript Object Notation: JSON) 웹 토큰(JWT) 포맷일 수 있다. JWT는 헤더, 페이로드, 및 서명(a header, a payload, and a signature)을 포함할 수 있다. 헤더는 사용 중인 토큰 유형과 그 것의 콘텐츠들을 보호하는 데 사용되는 암호화 알고리즘들에 관한 메타데이터를 포함한다. 페이로드는, 허용되어야 하는 권한들에 대한 설명서들(statements)인, 클레임들 세트(a set of claims)를 포함할 수 있다. 서명은 토큰이 신뢰할 수 있는지 확인하고 변조되지 않았음을 보장하는 데 사용할 수 있다.
[0003] 서비스 클러스터(A service cluster)는 서버 애플리케이션들을 지원하고 단일 시스템으로 작동하는 컴퓨터들 그룹이다. 웹 API는 서비스 클러스터 내에 배치되어 클러스터 내의 다양한 컴퓨터들 간에 트래픽을 분산할 수 있다. 트래픽 분산은 로드 밸런싱을 지원하고, 고-가용성(high-availability)을 제공하며, 기존 서버 구현들에 비해 더 짧은 대기 시간(lower latency)을 제공할 수 있다.
[0004] 본 발명의 실시 예들은 인증 인스턴스들(authorization instances) 간에 개인 서명 키(a private signature key)를 분산하기 위한 컴퓨터-구현 방법을 포함한다. 상기 컴퓨터-구현 방법은 구성 파일(a configuration file)에 복수의 인증 인스턴스들을 등록하는 단계(registering)를 포함한다. 상기 인증 인스턴스들은 공통 서비스(a common service)에 참여한다. 상기 공통 서비스는 액세스 토큰 생성과 검증이다. 상기 컴퓨터-구현 방법은 또한 상기 인증 인스턴스들 각각에 의해 호스트 인스턴스 키 쌍들(host instance key pairs)을 생성하는 단계를 더 포함한다. 상기 호스트 인스턴스 키 쌍들 각각은 공개 호스트 키 및 개인 호스트 키(a public host key and a private host key)를 포함한다. 상기 컴퓨터-구현 방법은 또한 상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계 및 상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스(a signature key leader instance)로 선택하는 단계(electing)를 포함한다. 상기 컴퓨터-구현 방법은 상기 서명 키 리더 인스턴스에 의해, 서명 키 쌍을 생성하는 단계를 포함한다. 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함한다. 상기 컴퓨터-구현 방법은 또한 상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계 및 암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계를 포함한다. 상기 암호화된 개인 서명 키는 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 암호화된다. 상기 컴퓨터-구현 방법은 또한 상기 요청하는 인증 인스턴스에 의해 생성된 상기 개인 호스트 키를 사용하여 상기 암호화된 개인 서명 키를 암호 해독하는 단계를 더 포함한다.
[0005] 본 발명의 다른 실시 예들은 인증 인스턴스들(authorization instances) 간에 개인 서명 키(a private signature key)를 분산하기 위한 컴퓨터 프로그램 제품을 포함하고, 상기 컴퓨터 프로그램 제품은 컴퓨터-판독 가능 스토리지 매체를 포함하며, 컴퓨터-판독 가능 스토리지 매체는 그 위에 구현된 프로그램 명령을 갖고, 상기 프로그램 명령은 프로세서에 의해 실행 가능하며, 상기 프로세서가 방법을 수행하도록 한다. 상기 방법은 구성 파일(a configuration file)에 복수의 인증 인스턴스들을 등록하는 단계(registering)를 포함한다. 상기 인증 인스턴스들은 공통 서비스(a common service)에 참여한다. 상기 공통 서비스는 액세스 토큰 생성과 검증이다. 상기 방법은 또한 상기 인증 인스턴스들 각각에 대해 호스트 인스턴스 키 쌍들(host instance key pairs)을 생성하는 단계를 포함한다. 상기 호스트 인스턴스 키 쌍들 각각은 공개 호스트 키 및 개인 호스트 키(a public host key and a private host key)를 포함한다. 상기 방법은 또한 상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계 및 상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스(a signature key leader instance)로 선택하는 단계(electing)를 포함한다. 상기 방법은, 상기 서명 키 리더 인스턴스에 의해, 서명 키 쌍을 생성하는 단계를 포함한다. 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함한다. 상기 방법은 또한 상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계 및 암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계를 포함한다. 상기 암호화된 개인 서명 키는 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 암호화된다. 상기 방법은 또한 상기 요청하는 인증 인스턴스에 의해 생성된 상기 개인 호스트 키를 사용하여 상기 암호화된 개인 서명 키를 암호 해독하는 단계를 더 포함한다.
[0006] 추가 실시예들은 위에서 설명된 방법을 수행하도록 구성된 인증 인스턴스들 간에 개인 서명 키를 분산하기 위한 개인 키 분산 시스템에 관한 것이다. 본 요약은 본 발명 내용의 모든 특징, 모든 구현 및/또는 모든 실시예를 설명하기 위한 것은 아니다.
[0007] 본 발명의 실시예들의 이들 및 다른 특징들, 측면들, 및 이점들은 다음의 설명, 첨부된 청구범위들, 및 첨부 도면들을 참조하여 더 잘 이해될 것이다:
[0008] 도 1은 본 발명 내용의 실시예들에 따른, 개인 키 분산 시스템을 나타내는 블록도이다.
[0009] 도 2는 본 발명 내용의 실시예들에 따른, 인증 인스턴스들 사이의 개인 키 분산을 도시하는 데이터 플로차트이다.
[0010] 도 3은 본 발명 내용의 실시예들에 따른, 개인 키 분산 프로세스의 플로차트이다.
[0011] 도 4는 본 발명 내용의 실시예들에 따른, 개인 키 요청 프로세스의 플로차트이다.
[0012] 도 5는 본 발명내용의 실시예에 따라, 본 명세서에 설명된, 방법들, 도구들, 및 모듈들, 및 모든 관련 기능들 중 하나 혹은 그 이상을 구현하는 데 사용될 수 있는 예시적인 컴퓨터 시스템을 도시하는 고-수준 블록도이다.
[0013] 도 6은 본 발명 내용의 실시예들에 따른, 클라우드 컴퓨팅 환경을 도시한다.
[0014] 도 7은 본 발명 내용의 실시예들에 따른, 추상화 모델 층들을 도시한다.
[0015] 본 발명 내용은 다양한 수정들 및 대안적 형태들이 가능하지만, 이들의 구체적인 사항들은 도면들에 도시되었고, 상세하게 설명될 것이다. 하지만, 설명된 특정 실시예들을 제한하려는 의도가 아님을, 이해해야 한다. 반대로, 의도는 본 발명의 범위 내에 속하는 모든 수정들, 균등물들 및 대안들을 포함하는 것이다. 동일한 참조 번호들은 첨부 도면들에서 동일한 부분들을 지정하는 데 사용된다.
[0016] 본 발명은 개인 키 분산에 관한 것으로, 보다 구체적으로, 액세스 토큰들을 생성하고 검증하는 데 사용되는 엔드포인트 인스턴스들 간의 개인 키 분산을 제공하는 것에 관한 것이다. 본 발명 내용이 반드시 그러한 애플리케이션들로 제한되는 것은 아니지만, 본 발명 내용의 다양한 실시 예들은 이러한 맥락을 사용하는 다양한 예들의 논의를 통해 인식될 수 있다.
[0017] 웹 API는 하나 혹은 그 이상의 공개적으로 노출된 엔드포인트들(exposed endpoints)로 구성되는 프로그램 인터페이스(a programmatic interface)이다. 상기 노출된 엔드포인트들은 웹 API에 의해서 사용될 수 있고 이에 의해 두 개의 시스템들이 서로 통신할 수 있다. 상기 엔드포인트들은 자원 또는 서비스에 액세스하는 방법을 알려준다. 만일 어느 시스템이 다른 시스템의 자원에 액세스하려면, 그 시스템은 웹 API에 의해서 제공되는 지정된 엔드포인트를 통과해야 한다.
[0018] 웹 API는 인증 엔드포인트들을 사용하여 액세스 토큰들을 생성하고 그것들을 웹 API에 대한 액세스 권한이 부여된 시스템들에 배포할 수 있다. 시스템은 웹 API에서 제공하는 자원들 및 서비스들에 대한 액세스를 허용하기 위해 후속 요청들에서 이러한 액세스 토큰들을 사용할 수 있다. 액세스 토큰들은 일반적으로, JWT의 진정성(the authenticity)를 확인하는 디지털 서명들을 갖는, JWT 형식으로 제공된다. 이들 서명들은 비대칭 암호화를 사용하여 암호화할 수 있다.
[0019] 비대칭 암호화는 키 쌍들을 사용하는 암호화 시스템이다. 키 쌍들에는 공개 키와 개인 키가 포함된다. 공개 키들은 널리 전파될 수 있으며(disseminated), 개인 키들은 키 소유자만 보관한다. 이러한 암호화 시스템에서, 모든 개인이나 시스템은 공개 키를 사용하여 메시지를 암호화할 수 있지만, 암호화된 메시지는 소유자의 개인 키로만 암호 해독될 수 있다. 키 쌍들을 사용하여 디지털 서명을 생성할 수도 있다. 디지털 서명은 문서 또는 소프트웨어의 진정성을 결정하는 데 사용되는 한 세트의 알고리즘들 및 암호화 보호일 수 있다.
[0020] 엔드포인트들은 서비스 클러스터 내에서 작동하여 웹 API로 들어오는 인터넷 트래픽을 분산할 수 있다. 서비스 클러스터는 인스턴스들 간의 로드 밸런싱을 제공하고 웹 API와 애플리케이션들 간의 지연 시간을 낮출 수 있다. 추가적으로, 웹 API는 서비스 클러스터들에서 제공하는 중복성으로 인해 가용성이 더 높다. 만일 어느 인스턴스가 오프라인이 되거나 종료된다면, 다른 인스턴스가 계속해서 요청된 작업을 수행할 수 있다.
[0021] 서비스 클러스터가 인증 엔드포인트로서 사용되는 경우, 동일 작업을 수행하기 위해 여러 인증 인스턴스들이 생성된다. 이들 인증 인스턴스들은, 애플리케이션과 웹 API 간의 지연 시간을 낮추는 데 도움을 주기 위해, 로컬로, 지역적으로 또는 전역으로(locally, regionally, or globally) 분산될 수 있다. 인증 인스턴스가 작동하려면, 적절한 자격 증명들을 사용하여 애플리케이션들에 JWT 액세스 토큰들을 제공할 수 있어야 한다. 이들 액세스 토큰들은 액세스 토큰들의 유효성을 검증하는(validate) 서명들을 포함한다. 서명들은 서명 키 쌍을 사용하여 암호화되어 액세스 토큰에 대한 보안을 제공하고 유효성을 보장한다. 개인 서명 키를 포함하는, 구성 파일이, 서비스 클러스터 내의 각 인증 인스턴스에 배포된다. 인증 인스턴스들은 개인 서명 키를 사용하여 액세스 토큰의 서명 부분을 인증된 애플리케이션에 제공하기 전에 암호화할 수 있다.
[0022] 그러나, 인증 인스턴스 보안에 관한 문제들은 여전히 남아 있는데, 이는 개인 서명 키들이 구성 파일로 각 인증 인스턴스에 배포되기 때문이다. 이들 구성 파일들은 영구 저장소에 저장된다. 공격자가 인증 인스턴스를 손상시켜 시스템의 영구 저장소에 액세스할 수 있다. 일단 손상되면, 공격자는 구성 파일을 복사하고 개인 서명 키를 추출할 수 있다. 그런 다음, 공격자는 개인 서명 키를 사용하여 액세스 토큰들을 생성하고 웹 API에 의해서 제공되는 자원들에 액세스할 수 있다.
[0023] 본 발명의 실시예들은 인증 인스턴스들 사이에 개인 서명 키들을 분산하기 위한 개인 키 분산 시스템을 사용함으로써 앞서 언급된 문제 및 다른 문제들을 극복할 수 있다. 개인 키 분산 시스템은 공통 서비스(a common service)에 참여하는 복수의 인증 인스턴스들을 포함한다. 인증 인스턴스들에 의해 수행되는 공통 서비스는 액세스 토큰들을 생성하고 인증된 애플리케이션들에 제공하는 것이다. 각 인증 인스턴스는 호스트 인스턴스 키 쌍들을 생성하도록 구성된다. 하나의 인증 인스턴스가 서명 키 쌍을 생성하도록 구성된 서명 키 리더 인스턴스로 선택된다. 서명 키 리더 인스턴스는 요청이 있을 때 인증 인스턴스들 각각에 개인 서명 키를 배포하도록 추가로 구성된다. 서명 키 리더 인스턴스는 또한 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 개인 서명 키를 암호화하도록 구성된다.
[0024] 보다 구체적으로, 여기에 설명된 개인 키 분산 시스템은 개인 서명 키를 생성 및 배포하기 위해 인증 인스턴스들로부터 서명 키 리더 인스턴스를 선택한다. 인증 인스턴스는 서명 키 리더 인스턴스로부터 개인 서명 키를 요청할 수 있다. 요청을 받으면, 서명 키 리더 인스턴스는 요청의 유효성을 검증하고 개인 서명 키를 암호화한 후 요청하는 인증 인스턴스로 전송할 수 있다. 개인 서명 키의 암호화 및 암호 해독에 사용되는 호스트 인스턴스 키 쌍들은 각 인증 인스턴스에 특정되어 있다. 따라서, 요청하는 인증 인스턴스만 개인 서명 키를 암호 해독할 수 있다. 따라서, 개인 키 분산 시스템은 개인 서명 키를 배포하는 데 구성 파일을 사용하지 않는다.
[0025] 추가적으로, 또는 대안적으로, 일단 인증 인스턴스가 개인 서명 키를 획득하면, 개인 서명 키는 영구 저장소가 아닌 메모리에 저장된다. 만일 인증 인스턴스가 종료되고 그리고 다시 시작되면, 인증 인스턴스는 새로운 호스트 인스턴스 키 쌍을 생성하고 공유 데이터베이스에 공개 호스트 키를 제공해야 한다. 그런 다음 인증 인스턴스는 서명 키 리더 인스턴스로부터 개인 서명 키를 요청할 수 있는데, 종료 시 개인 서명 키가 손실되었기 때문이다.
[0026] 일부 실시예들에서, 서명 키 리더 인스턴스는 개인 서명 키를 전송하기 전에 요청하는 인증 인스턴스의 유효성을 검증하기 위해 추가 확인 단계를 취한다. 요청하는 인증 인스턴스는 공유 데이터베이스에 새로운 공개 서명 키가 저장되어 있음을 검출하고 서명 키 리더 인스턴스로부터 대응하는 개인 서명 키를 요청할 수 있다. 요청이 있을 때, 서명 키 리더 인스턴스는 요청의 소스 인터넷 프로토콜(IP) 주소를 검사함으로써 요청의 유효성을 검증할 수 있다. 만일 IP 주소가 요청하는 인증 인스턴스의 알려진 IP 주소와 일치하면, 서명 키 리더 인스턴스는 개인 서명 키를 암호화하는 단계 및 암호화된 키를 요청하는 인증 인스턴스에 전송하는 단계를 진행할 수 있다.
[0027] 추가적으로, 또는 대안적으로, 서명 키 리더 인스턴스는 인증 인스턴스의 초기화 동안 사용된 구성 파일로부터 요청하는 인증 인스턴스와 관련된 등록을 검색할 수 있다. 상기 등록은 실제 인증 인스턴스의 IP 주소를 포함할 수 있다. 그런 다음 서명 키 리더는 상기 등록의 IP 주소를 요청에서 제공된 IP 주소와 비교할 수 있다. 이것은 공격자들이 자신의 주소를 위장(spoofing)하여 합법적인 인증 인스턴스인 것처럼 보이게 하는 것을 방지하는 데 도움이 될 수 있다.
[0028] 추가적으로, 또는 대안적으로, 서명 키 리더 인스턴스는 인증 인스턴스들의 초기화 동안 업데이트된 구성 파일로부터 요청하는 인증 인스턴스들과 관련된 등록을 검색할 수 있다. 상기 등록에 위치한 호스트 이름을 사용하여, 서명 키 리더 인스턴스는 요청하는 인증 인스턴스의 호스트 이름을 사용할 수 있고 암호화된 개인 서명 키를 전송할 수 있다. 호스트 이름으로의 전송은 추가 보안 층을 제공하는데, 그 결과 공격자가 전체 시스템을 손상시키려면 그 전에 공유 데이터베이스와 구성 파일을 모두 손상시켜야 한다.
[0029] 본 발명의 실시예들은 비활성 서명 키 리더 인스턴스의 검출을 포함한다. 서명 키 리더 인스턴스는 공유 데이터베이스에 저장된 키 리더 로그에 연속적인 간격으로(on a continuous interval) 쓸 수 있다. 만일 서명 키 리더 인스턴스가 키 리더 로그에 더 이상 응답하지 않거나 더 이상 쓰지 않는다는 것을 인증 인스턴스가 검출하면, 새로운 서명 키 리더 인스턴스가 선택될 수 있다. 일부 실시예들에서, 새로운 서명 키 리더 인스턴스가 선택될 때 서명 키 쌍의 롤오버(a rollover)가 수행된다. 따라서, 이전 서명 키 리더에 의해 사용된 서명 키 쌍은 더 이상 유효하지 않으며, 인증 인스턴스들은 새로운 서명 키 리더 인스턴스로부터 새로운 개인 서명 키를 요청해야 한다.
[0030] 이제 도 1을 참조하면, 본 발명내용의 실시예들에 따른, 개인 키 분산 시스템(100)을 예시하는 블록도가 도시되어 있다. 개인 키 분산 시스템(100)은 엔드포인트(110), 공유 데이터베이스(130), 네트워크(140) 및 구성 파일(150)을 포함한다. 엔드포인트(110)는 인증 인스턴스(120-1, 120-2, 120-N)(총칭하여 "인증 인스턴스 120)를 포함하며, 여기서 N은 가능한 인증 인스턴스들(120)의 모든 수를 나타내는 가변 정수이다.
[0031] 엔드포인트(110)는, 본 발명의 실시예들에 따라, 서버-측 웹 API와 다른 외부 시스템들 사이의 통신 채널로서 작동하도록 구성된 개인 키 분산 시스템의 컴포넌트이다. 이들 외부 시스템들에는 클라이언트들, 애플리케이션들, 웹 브라우저들, 기타 웹 API들이 포함되지만, 이에 제한되지 않는다.
[0032] 일부 실시예들에서, 엔드포인트(110)는 서비스 클러스터 내에서 동작한다. 클러스터는 공통 서비스를 달성하기 위해 그룹화된 여러 서버들로 구성되며 단일 컴퓨터로 간주될 수 있다. 이들 서버들, 또는 노드들은, 클러스터의 노드들인, 네트워크 자원들 세트를 사용자들에게 제공할 수 있다. 클러스터들은 확장성을 개선하고 고가용성을 제공할 수 있는 특징들을 제공한다. 확장성을 위해, 클러스터의 서비스 노드는 클러스터의 처리 능력을 높이는 머신들을 동적으로 추가할 수 있다. 고가용성을 위해, 만일 클러스터의 노드에 장애가 발생하면, 이 노드에서 실행 중인 서비스는 다른 서비스 노드들이 떠맡을 수 있는데, 이렇게 하여서 클러스터의 고가용성을 향상시킬 수 있다.
[0033] 클러스터의 노드들은 노드 인스턴스들로서 정의될 수 있다. 노드 인스턴스는, 노드의 실체화(an instantiation), 또는 실제 발생을 나타내는 모델 엘리멘트이다. 노드 인스턴스들은 기존 노드들에 기초한다. 노드 인스턴스들은 시스템 환경에서 특정의 정의된 노드(a specific and defined node)를 나타낸다. 이들 인스턴스들은 런타임에 존재하는 자원들을 나타내기 위해 배치될 수 있다. 예를 들어, 노드 인스턴스는 웹 서버, 데이터 서버, 인증 서버 등을 나타낼 수 있다.
[0034] 인증 인스턴스들(120)은, 본 발명의 실시예들에 따라, 웹 API를 위한 서버 인스턴스로서 동작하도록 구성된 엔드포인트(110)의 컴포넌트이다. 인증 인스턴스들(120)은 인증 서버들, 애플리케이션 서버들, 웹 서버들, 자원 서버들 등으로 동작할 수 있다. 일부 실시예들에서, 인증 인스턴스들(120)은 인증된 자격 증명들(authorized credentials)을 가진 클라이언트들에 액세스 토큰들을 제공하고 인증 서버로서 동작한다. 액세스 토큰들은 클라이언트에 부여된 권한들(the granted permissions)을 나타내는 문자열들(strings)이다. 이들 액세스 토큰은 JWT 포맷으로 제공될 수 있다. 일부 실시예들에서, 인증 인스턴스는 디지털 서명 동작들을 수행하도록 구성된 자원 서버로서 동작한다.
[0035] JWT 포맷은 헤더, 페이로드 및 서명을 포함한다. 헤더에는 액세스 토큰 유형에 대한 메타데이터와 콘텐츠들을 보호하는 데 사용되는 암호화 알고리즘들이 포함된다. 이들 암호화 알고리즘들은 일반적으로 키-해시 메시지 인증 코드(keyed-hash message authentication code: HMAC) 알고리즘들이다. HMAC 알고리즘들에는 SHA-2(Secure Hash Algorithm 2), RSA(Rivest-Shamir-Adleman) 및 JWA(JSON 웹 알고리즘)가 포함되지만, 이에 제한되지 않는다. RSA 알고리즘들을 추가로 사용하여 JWT의 서명 부분을 암호화할 수 있다.
[0036] 페이로드에는 클레임들 세트가 포함된다. JWT 스펙은 액세스 토큰들에 일반적으로 포함되는 표준 필드들을 정의한다. 추가적으로, API-별 사용자 맞춤 클레임들(custom claims)도 포함될 수 있다. 서명은 액세스 토큰을 안전하게 검증하는 데 사용된다. 서명은 Base64url 인코딩을 사용하여 헤더와 페이로드를 인코딩하고 마침표 구분 기호(a period separator)로 둘을 연결(concatenating)함으로써 계산될 수 있다. 헤더 및 개인 서명 키(125)에 명시된 알고리즘을 사용하여 서명을 암호화할 수 있다.
[0037] 인증 인스턴스들(120)은 호스트 인스턴스 키 쌍을 생성하도록 추가로 구성된다. 호스트 인스턴스 키 쌍은 개인 호스트 키(127)와 공개 호스트 키(128)를 포함한다. 공개 호스트 키(128)는 저장을 위해 공유 데이터베이스(130)로 전송될 수 있다. 호스트 인스턴스 키 쌍들은 각 인증 인스턴스(120)에 고유하며, 개인 호스트 키(127)는 메모리에 저장될 수 있다. 호스트 인스턴스 키 쌍들은 비대칭 암호화에 사용되는 키 쌍들이다. 공개 호스트 인스턴스 키(128)는 메시지(예를 들어, 개인 서명 키 125)를 암호화하는데 사용될 수 있고, 개인 호스트 인스턴스 키(127)는 메시지를 암호 해독하는데 사용될 수 있다.
[0038] 인증 인스턴스들(120)은 서명 키 리더 인스턴스(a signature key leader instance)를 선택하도록 추가로 구성된다. 서명 키 리더 인스턴스는 서명 키 쌍 인스턴스를 생성하도록 추가로 구성된 인증 인스턴스들(120) 중 하나이다. 서명 키 쌍은 개인 서명 키(125)와 공개 서명 키(126)를 포함한다. 서명 키 쌍은 호스트 인스턴스 키 쌍들로부터 고유하며 클라이언트들을 위해 생성된 액세스 토큰들을 암호화하는 데 사용된다. 개인 서명 키(125)는 액세스 토큰의 서명을 암호화하는 데 사용될 수 있고, 공개 서명 키(126)는 액세스 토큰의 유효성을 검증하는 데 사용될 수 있다.
[0039] 서명 키 리더 인스턴스는 요청하는 인증 인스턴스(120)에 대응하는 공개 호스트 키(128)를 사용하여 개인 서명 키(125)를 암호화하도록 추가로 구성된다. 예를 들어, 인증 인스턴스(120)는 서명 키 리더 인스턴스로부터 개인 서명 키(125)를 요청할 수 있다. 요청을 받은 후, 서명 키 리더 인스턴스는 공유 데이터베이스에 저장된 요청 인증 인스턴스(120)의 공개 호스트 키(128)를 검색할 수 있다. 공개 호스트 키(128)를 사용하여, 서명 키 리더 인스턴스는 개인 서명 키를 요청하는 인증 인스턴스(120)에 전송하기 전에 개인 서명 키(125)를 암호화할 수 있다.
[0040] 일부 실시예들에서, 서명 키 리더 인스턴스는 주기적으로(over an interval) 공유 데이터베이스(130)에 저장된 키 리더 로그(129)를 업데이트한다. 예를 들어, 서명 키 리더 인스턴스는 30초마다, 1분마다, 2분마다 키 리더 로그(the key leader log)(129)를 업데이트할 수 있다. 인증 인스턴스들(120)은 서명 키 리더 인스턴스가 활성이고 개인 서명 키들을 제공하는데 이용가능한지를 결정하기 위해 키 리더 로그를 읽을 수 있다.
[0041] 공유 데이터베이스(130)는, 본 발명의 실시예들에 따라, 개인 키 분산 시스템(100)에 관한 정보를 저장하도록 구성된 개인 키 분산 시스템(100)의 컴포넌트이다. 도 1에서 데이터베이스로서 도시되었지만, 공유 데이터베이스(130)는 매핑, 테이블, 저널, 메타데이터 등이 될 수 있다. 공유 데이터베이스(130)는 인증 인스턴스들(120)에 의해 생성된 호스트 인스턴스 키 쌍들(127)로부터 공개 호스트 인스턴스 키들을 저장할 수 있다. 추가적으로, 공유 데이터베이스(130)는 서명 키 리더 인스턴스에 의해 생성된 공개 서명 키 및 키 리더 로그를 저장할 수 있다.
[0042] 개인 키 분산 시스템(100)의 네트워크(140) 컴포넌트는 클라이언트와 엔드포인트(110) 사이의 직접적인 고속 데이터 전송 및 통신을 용이하게 하도록 구성된다. 네트워크(140)의 예들은 LAN(Local Area Network), WAN(Wide Area Network), SAN(Storage Area Network), 인트라넷, 또는 이들의 모든 조합을 포함한다.
[0043] 일부 실시예들에서, 네트워크(140)는 인터넷이다. 인터넷은 전송 제어 프로토콜(TCP), 사용자 데이터그램 프로토콜(UDP) 및 TCP/IP 인터넷 프로토콜 제품군의 인터넷 프로토콜(IP)과 같은 공통 통신 프로토콜들을 사용하는 상호 연결된 컴퓨터 네트워크들 및 장치들의 글로벌 시스템을 포함한다.
[0044] 구성 파일(150)은, 본 발명의 실시예들에 따라, 인증 인스턴스들(120)에 관한 정보를 저장 및 제공하도록 구성된 개인 키 분산 시스템(100)의 컴포넌트이다. 구성 파일(150)은 개인 키 분산 시스템(100)에서 초기화된 인증 인스턴스들(120) 각각에 대한 등록들(registrations)을 저장할 수 있다. 일부 실시예들에서, 상기 등록은 인증 인스턴스들의 등록이 변경될 수 없도록 소스 코드로 하드코딩 된다(hardcoded).
[0045] 도 1은 개인 키 분산 시스템(100)의 주요 대표 컴포넌트들을 나타내기 위한 것임에 유의한다. 하지만, 일부 실시예들에서, 개별 컴포넌트들은 도 1에 도시된 것보다 더 복잡하거나 또는 덜 복잡할 수 있고, 도 1에 도시된 것과 다른 컴포넌트들이 존재할 수 있으며, 그러한 컴포넌트들의 수, 유형 및 구성이 다양할 수 있다.
[0046] 도 2는 본 발명의 실시예들에 따른, 인증 인스턴스들 사이의 개인 키 분산을 예시하는 데이터 플로차트(200)이다. 데이터 플로차트(200)를 예시하기 위해, 도 2는 도 1의 개인 키 분산 시스템(100)의 맥락 내에서 설명되지만, 이에 제한되지 않는다.
[0047] 동작(210)에서, 인증 인스턴스들(120)은 초기화되고 공통 서비스(a common service)를 수행하도록 구성된다. 초기화 동안, 구성 파일(150)은 개인 키 분산 시스템(100)에 의해 초기화된 각 인증 인스턴스(120)에 대한 등록들을 저장할 수 있다. 상기 등록은 인증 인스턴스(120)의 IP 주소를 포함할 수 있고 인증 인스턴스(120)에 대한 검증 수단으로 작동할 수 있다. 일부 실시예들에서, 상기 등록은 인증 인스턴스들(120)을 초기화하는 소스 코드로 하드코딩 된다.
[0048] 동작(220)에서, 인증 인스턴스들(120) 각각은 호스트 인스턴스 키 쌍을 생성할 수 있다. 호스트 인스턴스 키 쌍들은 개인 호스트 키(127)와 공개 호스트 키(128)를 포함한다. 인증 인스턴스들(120)은 그들의 공개 호스트 키(128)를 공유 데이터베이스(130)로 전송할 수 있다(222). 서명 키 리더 인스턴스가 선택되지 않았음을 검출하고, 인증 인스턴스들은 초기화된 인증 인스턴스들로부터 서명 키 리더 인스턴스를 선택할 수 있다. 인증 인스턴스(120)는 키 리더 로그(129)에 엔트리(226)를 만드는 제1 인증 인스턴스(120)가 됨으로써 서명 키 리더 인스턴스로서 선택될 수 있다.
[0049] 동작(230)에서, 서명 키 리더 인스턴스는 서명 키 쌍을 생성한다. 서명 키 쌍은 개인 서명 키(125)와 공개 서명 키(126)를 포함한다. 일단 생성되면, 서명 키 리더 인스턴스는 공개 서명 키(126)를 공유 데이터베이스(130)로 전송(232)할 수 있다. 공개 서명 키(126)가 공유 데이터베이스(130)에 저장되었다는 것을 검출하고, 인증 인스턴스들은 서명 키 리더 인스턴스로부터 개인 서명 키를 개별적으로 요청(234)한다.
[0050] 동작(240)에서, 서명 키 리더 인스턴스는 요청 인증 인스턴스(120)에 의해 전송된 요청(234)에 대한 유효성 체크를 수행한다. 이것은 요청의 IP 주소가 공통 서비스에 있는 것으로 알려진 인증 인스턴스(120)의 IP 주소와 일치하는지 확인하는 단계를 포함할 수 있다. 상기 유효성 체크는 전송된 요청 인증 인스턴스에 대한 콜백(a callback) 형태로 올 수도 있다. 서명 키 리더 인스턴스는 오케이 응답으로 상기 요청에 응답할 수 있다. 서명 키 리더 인스턴스는 구성 파일(150)에서 요청하는 인증 인스턴스(120)에 대한 호스트 이름을 검색하고 호스트 이름을 사용하여 암호화된 개인 서명 키로 콜백을 수행할 수 있다. 유효한 요청으로 확인되면, 서명 키 리더 인스턴스는 요청하는 승인 인스턴스(120)와 관련된 공개 호스트 키(128)를 요청(242)한다. 공유 데이터베이스(130)는 요청하는 인증 인스턴스(120)에 대응하는 공개 호스트 키(128)를 서명 키 리더 인스턴스로 다시 전송(244)할 수 있다.
[0051] 동작(250)에서, 서명 키 리더는 공유 데이터베이스(130)로부터 획득된 공개 호스트 키(128)를 사용하여 개인 서명 키(125)를 암호화하고 암호화된 개인 서명 키를 요청하는 인증 인스턴스(120)에 전송(252)한다. 동작(260)에서, 요청 인증 인스턴스(120)는 자신의 개인 호스트 키(127)를 사용하여 암호화된 개인 서명 키(125)를 암호 해독할 수 있다.
[0052] 도 3은 본 발명의 실시예들에 따른, 인증 인스턴스들 사이에 개인 서명 키를 배포하기 위한 프로세스(300)를 예시하는 플로차트이다. 프로세스(300)는 하드웨어, 펌웨어, 적어도 하나의 프로세서 상에서 실행되는 소프트웨어, 또는 이들의 모든 조합에 의해 수행될 수 있다. 예를 들어, 프로세스(300)의 단계 중 일부 또는 전부는 하나 혹은 그 이상의 컴퓨팅 디바이스들(예를 들어, 도 5의 컴퓨터 시스템 500)에 의해 수행될 수 있다. 프로세스(300)를 예시하기 위해, 그러나 실시예들을 제한하지 않고, 도 3은 도 1의 개인 키 분산 시스템(100)의 맥락 내에서 설명된다.
[0053] 프로세스(300)는 공통 서비스를 수행하도록 구성된 각 인증 인스턴스들(120)에 대한 등록들을 구성 파일(150)에 추가함으로써 시작된다. 이것은 단계(310)에 도시되어 있다. 상기 등록은 인증 인스턴스들(120) 각각에 할당된 인스턴스 식별(an instance identification) 및 인증 인스턴스들(120)의 IP 주소를 포함할 수 있다. 인스턴스 식별 및/또는 IP 주소는 후속 요청들에서 인증 인스턴스들(120)을 확인하는 데 사용될 수 있다.
[0054] 각각의 인증 인스턴스(120)는 호스트 인스턴스 키 쌍을 생성한다. 이것은 단계(320)에 도시되어 있다. 호스트 인스턴스 키 쌍은 공통 서비스에서 사용되는 개인 서명 키(126)를 암호화 및 암호 해독하는 데 사용될 수 있다. 호스트 인스턴스 키 쌍들은 비대칭 암호화 키 기술들에 사용할 수 있다. 이러한 핵심 기술들에는 RSA(Rivest-Shamir-Adleman), Diffie-Hellman, ECDH(Elliptic-curve Diffie-Hellman), SRP(Secure Remote Password Protocol), PSK(사전 공유 키), 디지털 서명 알고리즘(DSA), 타원 곡선 DSA(ECDSA), RC4, 트리플 데이터 암호화 알고리즘(Triple DES), 고급 암호화 표준(AES), 국제 데이터 암호화 알고리즘(IDEA), 데이터 암호화 표준(DES), 카멜리아, 해시 기반 MD5 및 SHA(Secure Hash Algorithms) 해시 함수 등이 포함되지만, 이에 제한되지 않는다.
[0055] 추가적으로, 상기 호스트 인스턴스 키 쌍은 비대칭 키 알고리즘들을 사용하는 프로토콜들에서도 사용될 수 있다. 이 프로토콜들에는, 보안/다목적 인터넷 메일 확장(S/MIME), GNU 개인 정보 보호(GPG), 인터넷 키 교환, Z 및 실시간 전송 프로토콜(ZRTP), TLS(전송 층 보안) 및 SILC(보안 인터넷 라이브 회의 프로토콜)이 포함되지만, 이에 제한되지 않는다.
[0056] 공개 호스트 인스턴스 키(128)는 공유 데이터베이스(130)에 저장된다. 이것은 단계(330)에 도시되어 있다. 각각의 인증 인스턴스(120)는 그들의 공개 호스트 인스턴스 키(128)를 공유 데이터베이스(130)로 전송한다. 이것은 개인 키 분산 시스템(100)의 다른 컴포넌트가 공개 호스트 인스턴스 키(128)를 검색하고 대응하는 인증 인스턴스(120)만이 해독할 수 있는 메시지를 암호화하는 것을 허용한다. 개인 호스트 인스턴스 키들(127)은 인증 인스턴스들(120)의 메모리에 저장된다. 인증 인스턴스(120)가 종료, 충돌 또는 재시작된다면, 인증 인스턴스(120)는 새로운 호스트 인스턴스 키 쌍을 재생성하고 그들의 공개 호스트 키(128)를 공유 드라이브에 재전송할 필요가 있을 것이다.
[0057] 공통 서비스를 수행하는 인증 인스턴스들(120) 중에서 서명 키 리더 인스턴스가 선택된다. 이것은 단계(340)에 도시되어 있다. 서명 키 리더 인스턴스는 제1 인증 인스턴스(120)가 키 리더 로그(129)에 입력할 때 선택될 수 있다. 서명 키 리더 인스턴스로 작동하는 동안, 인증 인스턴스(120)는 주기적으로 키 리더 로그를 업데이트할 수 있다. 예를 들어, 서명 키 리더 인스턴스는 다른 인증 인스턴스들(120)에 서명 키 리더 인스턴스가 선택되었고 개인 서명 키(125)를 다른 인증 인스턴스들(120)에 제공할 수 있음을 알리기 위해 매분 키 리더 로그(129)를 업데이트할 수 있다.
[0058] 일부 실시예들에서, 서명 키 리더 인스턴스는 초기에 미리 결정된 인증 인스턴스(120)이다. 예를 들어, 구성 파일(150)에 등록된 제1 인증 인스턴스(120)는 제1 서명 키 리더 인스턴스로 선택될 수 있다. 서명 키 리더 인스턴스(120)가 오프라인이 되면, 다른 인증 인스턴스(120)가 서명 키 리더 인스턴스로서 선택될 수 있다.
[0059] 일부 실시예들에서, 서명 키 리더 인스턴스가 키 리더 로그(129)를 업데이트하는 것을 중단할 때 다른 인증 인스턴스(120)가 서명 키 리더 인스턴스로서 선택된다. 예를 들어, 서명키 리더 인스턴스가 3분 이상 서명키 로그(129)를 업데이트하지 않으면, 서명 키 로그(129)에 쓰기 위해 제1 인증 인스턴스(120)는 새로운 서명 키 리더 인스턴스로 선택된다. 서명 키 리더 로그(129)는 새로운 서명 키 리더 인스턴스가 선택되었음을 통지하는 방식으로 다른 인증 인스턴스들(120)에 의해 읽혀 질 수 있다.
[0060] 서명 키 리더 인스턴스는 서명 키 쌍을 생성한다. 이것은 단계(350)에 도시되어 있다. 서명 키 쌍은 개인 서명 키(125)와 공개 서명 키(126)를 포함한다. 인증 인스턴스들(120)은 클라이언트에 대한 액세스 토큰들을 생성할 때 서명을 암호화하기 위해 동일한 개인 서명 키(125)를 사용할 수 있다. 하나의 개인 서명 키(125)를 가짐으로써, 개인 키 분산 시스템(100)은 다수의 서명 키 쌍들을 사용할 때 발생할 수 있는 오버헤드를 최소화한다.
[0061] 서명 키 쌍은 다양한 디지털 서명 알고리즘들에서 사용될 수 있다. 이들 알고리즘들에는 RSA 확률적 서명 방식(Probabilistic Signature Scheme)(RSA-PSS), ECDSA, 에드워드-커브 디지털 서명 앨고리즘(Edwards-curve Digital Signature Algorithm)(EdDSA), ElGamal 서명 방식, Rabin 서명 알고리즘 및 Aggregate 서명이 포함되지만, 이에 제한되지 않는다.
[0062] 공개 서명 키(126)는 공유 데이터베이스(130)에 저장된다. 이것은 단계(360)에서 예시된다. 서명 키 리더 인스턴스는 생성된 공개 서명 키(126)를 공유 데이터베이스(130)로 전송한다. 이를 통해 웹 API 및 애플리케이션이 공개 서명 키(126)를 검색하고 개인 서명 키를 사용하여 서명된 액세스 토큰들을 확인할 수 있다. 만일 서명 키 리더 인스턴스가 종료되거나 다시 시작된다면, 공개 서명 키(126)를 저장하기 전에, 다른 인증 인스턴스(120)가 선택되고 새로운 서명 키 쌍을 생성하며 공유 데이터베이스(130)에 새로운 공개 서명 키(126)를 저장하는 프로세스를 반복해야 한다.
[0063] 서명 키 리더는 암호화된 개인 서명 키를 요청하는 인증 인스턴스(120)에 전송한다. 이것은 단계(370)에 도시되어 있다. 서명 키 리더 인스턴스는 각각의 대응하는 인증 인스턴스(120)에 대한 개인 서명 키를 암호화하기 위해 공유 데이터베이스(130)에 저장된 공개 호스트 키들(128)을 이용할 수 있다. 개인 서명 키(125)에 대한 요청을 수신하면, 서명 키 리더 인스턴스는 암호화된 개인 서명 키(125)를 요청하는 인증 인스턴스(120)에 전송할 수 있다. 요청 인증 인스턴스(120)에 대응하는 공개 호스트 인스턴스 키(128)로 개인 서명 키(125)를 암호화함으로써, 요청 인증 인스턴스(120)만이 개인 서명 키(126)를 암호 해독할 수 있다.
[0064] 도 4는 본 발명의 실시예들에 따라, 암호화된 개인 서명 키를 인증 인스턴스로 전송하기 위한 프로세스(400)를 예시하는 플로차트(예를 들어, 도 3의 프로세스(300)의 단계(370))이다. 프로세스(400)는 하드웨어, 펌웨어, 적어도 하나의 프로세서 상에서 실행되는 소프트웨어, 또는 이들의 모든 조합에 의해 수행될 수 있다. 예를 들어, 프로세스(400)의 어느하나 또는 모든 단계들은 하나 혹은 그 이상의 컴퓨팅 디바이스들(예를 들어, 도 5의 컴퓨터 시스템(500))에 의해 수행될 수 있다. 프로세스(400)를 예시하기 위해, 도 4는 도 1의 개인 키 분산 시스템(100)의 맥락 내에서 설명되지만, 이는 그러나 실시예들을 제한하지 않는다.
[0065] 인증 인스턴스(120)는 공유 데이터베이스(130)에 저장된 공개 서명 키(126)를 검출한다. 이것은 단계(410)에서 예시된다. 공유 데이터베이스에서 검출된 공개 서명 키(126)는 개인 서명 키(125)가 서명 키 리더 인스턴스로부터 요청될 수 있다는 것을 인가 인스턴스(120)에 표시할 수 있다.
[0066] 일부 실시예들에서, 인증 인스턴스(120)는 공유 데이터베이스(130)에 저장된 새로운 공개 서명 키(126)를 검출한다. 이것은 공개 서명 키(126)를 검사함으로써 또는 새로운 공개 서명 키(126)가 전송되었다는 키 리더 로그(129)에 기록된 표시에 의해 검출될 수 있다. 관리자에 의해 미리 결정된 시간이 지나면 서명 키 리더 인스턴스에 의해, 종종 키 롤오버라고 하는, 새로운 서명 키 쌍이 생성될 수 있다. 예를 들어, 키 롤오버는 매주, 매월, 6주마다 등으로 발생할 수 있다. 일부 실시예들에서, 새로운 서명 키 리더 인스턴스가 선택될 때 키 롤오버가 발생한다.
[0067] 인증 인스턴스(120)는 서명 키 리더 인스턴스로부터 개인 서명 키(125)를 요청한다. 이것은 단계(420)에 도시되어 있다. 상기 인증 인스턴스는 요청하는 인증 인스턴스(120)의 IP 주소를 포함하는 서명 키 리더 인스턴스에 요청 명령을 전송할 수 있다.
[0068] 요청을 수신하면, 서명 키 리더 인스턴스는 상기 요청의 유효성을 검증한다. 이것은 단계(430)에 도시되어 있다. 일부 실시예들에서, 서명 키 리더 인스턴스는 인증 인스턴스들(120)의 초기화 동안 사용된 구성 파일(150)로부터 요청 인증 인스턴스(120)와 관련된 등록을 검색한다. 상기 등록은 인증 인스턴스(120) 식별 및 그들의 IP 주소를 포함할 수 있다. 서명 키 리더 인스턴스는 상기 요청의 소스 IP 주소가 상기 등록에 위치한 요청 인증 인스턴스의 저장된 IP 주소와 일치하는지 확인할 수 있다.
[0069] 일부 실시예들에서, 서명 키 리더 인스턴스는 인증 인스턴스들(120)의 초기화 동안 사용된 구성 파일(150)로부터 요청 인증 인스턴스(120)와 관련된 등록을 검색한다. 서명 키 리더 인스턴스는 상기 등록에서 발견된 호스트 이름을 찾아낼 수 있다(locate). 서명 키 리더 인스턴스는 암호화된 개인 서명 키를 요청하는 인증 인스턴스의 호스트 이름으로 전송할 수 있다.
[0070] 요청하는 인증 인스턴스(120)에 의한 요청이 유효한지 아닌지에 대한 결정이 내려진다. 이것은 단계(440)에 도시되어 있다. 만일 서명 키 리더 인스턴스가 상기 요청의 유효성이 검증될 수 없다고 결정하면, 상기 요청은 거부된다. 이것은 단계(450)에 도시되어 있다. 그러나, 만일 서명 키 리더 인스턴스가 상기 요청의 유효성을 검증할 수 있다면, 프로세스(400)는 단계(460)으로 진행한다.
[0071] 개인 서명 키 리더 인스턴스는 요청하는 인증 인스턴스(120)에 대응하는 공개 호스트 키(128)를 공유 데이터베이스로부터 검색한다. 이것은 단계(460)에 도시되어 있다. 공개 호스트 키(128)는 개인 서명 키를 암호화하기 위해 서명 키 리더 인스턴스에 의해 사용될 수 있다. 이것은 단계(470)에 도시되어 있다. 일단 암호화되면, 암호화된 개인 서명 키는 요청하는 인증 인스턴스(120)로 전송될 수 있다. 이것은 단계(480)에 도시되어 있다.
[0072] 이제 도 5를 참조하면, 예시적인 컴퓨터 시스템(500)(예를 들어, 개인 키 분산 시스템(100))의 고수준 블록도가 도시되어 있으며, 컴퓨터 시스템(500)은, 본 발명의 실시예들에 따라, 여기서 설명된 방법들, 도구들, 모듈들, 및 모든 관련 기능들 중 하나 또는 그 이상을 구현(예를 들어,상기 컴퓨터의 하나 또는 그 이상의 프로세서 회로들 또는 컴퓨터 프로세서들을 사용하여)하는 데 사용될 수 있다. 일부 실시예들에서, 컴퓨터 시스템(500)의 주요 컴포넌트들은 하나 또는 그 이상의 프로세서들(502), 메모리(504), 터미널 인터페이스(512), I/O(입/출력) 디바이스 인터페이스(514), 스토리지 인터페이스(516), 및 네트워크 인터페이스(518)를 포함할 수 있고, 이들은 모두는 메모리 버스(503), I/O 버스(508), 및 I/O 버스 인터페이스(510)를 통해 컴포넌트간 통신을 위해 직접 또는 간접적으로 통신 가능하게 결합될 수 있다.
[0073] 컴퓨터 시스템(500)은 하나 또는 그 이상의 범용 프로그램가능 중앙 처리 유닛들(CPU들)(502-1, 502-2, 502-3, 502-N)를 포함할 수 있으며, 이들을 여기서는 일반적으로 프로세서(502)라고 한다. 일부 실시예들에서, 컴퓨터 시스템(500)은 비교적 큰 시스템의 전형적인 다수의 프로세서들을 포함할 수 있다; 그러나, 다른 실시예들에서, 컴퓨터 시스템(500)은 대안으로 단일 CPU 시스템일 수 있다. 각 프로세서(502)는 메모리(504)에 저장된 명령들을 실행할 수 있고 하나 또는 그 이상의 레벨들의 온-보드 캐시를 포함할 수 있다.
[0074] 메모리(504)는 랜덤 액세스 메모리(RAM)(522) 또는 캐시 메모리(524)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 컴퓨터 시스템(500)은 다른 착탈식/비-착탈식, 휘발성/비휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예로서, 스토리지 시스템(526)은 "하드 드라이브"와 같은 비-착탈식, 비휘발성 자기 매체로부터 읽기 및 자기 매체로 쓰기를 위해 제공될 수 있다. 도시되지는 않았지만, 착탈식 비휘발성 자기 디스크(예: "플로피 디스크")에서 읽고 자기 디스크에 쓰기 위한 자기 디스크 드라이브 또는 CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은 착탈식 비휘발성 광학 디스크에서 읽거나 광학 디스크에 쓰기 위한 광학 디스크 드라이브 디스크가 제공될 수 있다. 또한, 메모리(504)는 플래시 메모리, 예를 들어, 플래시 메모리 스틱 드라이브 또는 플래시 드라이브를 포함할 수 있다. 메모리 디바이스들은 하나 또는 그 이상의 데이터 매체 인터페이스에 의해 메모리 버스(503)에 연결될 수 있다. 메모리(504)는 다양한 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들의 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0075] 메모리 버스(503)는, 프로세서(502), 메모리(504), 및 I/O 버스 인터페이스(510) 사이에 직접적인 통신 경로를 제공하는 단일 버스 구조로서 도 5에 도시되어 있지만, 메모리 버스(503)는, 일부 실시예들에서, 다수의 다양한 버스들 또는 통신 경로들을 포함할 수 있으며, 이들은 계층, 스타 또는 웹 구성들에서 포인트-투-포인트 링크들(point-to-point links in hierarchical, star or web configurations), 다수의 계층 버스들, 병렬 및 중복 경로들, 또는 기타 적절한 유형의 구성과 같은, 다양한 형태들 중 어느 하나로 구성될 수 있다. 또한, I/O 버스 인터페이스(510) 및 I/O 버스(508)가 단일 개별 유닛들으로 도시되어 있지만, 컴퓨터 시스템(500)은, 일부 실시예들에서, 다수의 I/O 버스 인터페이스 유닛들, 다수의 I/O 버스들 또는 이들 둘 모두를 포함할 수 있다. 또한, 다양한 I/O 디바이스들로 실행되는 다양한 통신 경로들로부터 I/O 버스(508)를 분리하는, 다수의 I/O 인터페이스 유닛들이 도시되어 있지만, 다른 실시예들에서 I/O 디바이스들의 일부 또는 전부는 하나 또는 그 이상의 시스템 I/O 버스들에 직접 연결될 수 있다.
[0076] 일부 실시예들에서, 컴퓨터 시스템(500)은 직접적인 사용자 인터페이스가 거의 또는 전혀 없지만 다른 컴퓨터 시스템들(클라이언트들)로부터 요청들을 수신하는 다수-사용자 메인프레임 컴퓨터 시스템, 단일 사용자 시스템, 또는 서버 컴퓨터 또는 유사한 디바이스일 수 있다. 또한, 일부 실시예들에서, 컴퓨터 시스템(500)은 데스크탑 컴퓨터, 휴대용 컴퓨터, 랩탑 또는 노트북 컴퓨터, 태블릿 컴퓨터, 포켓 컴퓨터, 전화, 스마트폰, 네트워크 스위치들 또는 라우터들, 또는 모든 다른 적절한 유형의 전자 디바이스로서 구현될 수 있다.
[0077] 도 5는 예시적인 컴퓨터 시스템(500)의 대표적인 주요 컴포넌트들을 묘사하도록 의도된 것임을 유의해야 한다. 그러나, 일부 실시예들에서, 개별 컴포넌트들은 도 5에 도시된 것보다 더 큰 복잡성을 갖거나 더 적은 복잡성을 가질 수 있고, 도 5에서 도시된 것 이외의 컴포넌트들 또는 이에 추가된 컴포넌트들이 존재할 수 있으며, 그러한 컴포넌트들의 수, 유형 및 구성은 다를 수 있다.
[0078] 하나 또는 그 이상의 프로그램/유틸리티(528)는, 각각 프로그램 모듈(530)의 적어도 하나의 세트를 갖고, 메모리(504)에 저장될 수 있다. 프로그램/유틸리티(528)는 하이퍼바이저(또한 가상 머신 모니터라고도 함), 하나 또는 그 이상의 운영 체제들, 하나 또는 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들 및 프로그램 데이터 이들의 일부 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램(528) 및/또는 프로그램 모듈(530)은 일반적으로 다양한 실시예들의 기능들 또는 방법들을 수행한다.
[0079] 본 발명은 클라우드 컴퓨팅에 관해서 상세한 설명들을 포함하지만, 여기서 설명된 그러한 기술적 사상들의 구현은 클라우드 컴퓨팅 환경에만 한정되는 것은 아님을 이해하여야 한다. 오히려, 본 발명의 실시 예들은 지금 알려져 있거나 또는 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0080] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성(characteristics), 적어도 3가지 서비스 모델(service models), 및 적어도 4가지 배치 모델(deployment models)을 포함할 수 있다.
[0081] 클라우드 컴퓨팅 특성들은 다음과 같다:
[0082] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
[0083] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0084] 자원 풀링(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0085] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
[0086] 측정 가능 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0087] 서비스 모델들(Service Models)은 다음과 같다:
[0088] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0089] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0090] 하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0091] 배치 모델들(Deployment Models)은 다음과 같다:
[0092] 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0093] 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0094] 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0095] 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0096] 클라우드 컴퓨팅 환경은 무국적(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0097] 이제 도 6을 참조하면, 예시적인 클라우드 컴퓨팅 환경(600)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(600)은 예를 들어 개인 휴대 정보 단말기(PDA) 또는 휴대폰(620-1), 데스크탑 컴퓨터(620-2), 랩탑 컴퓨터(620-3), 및/또는 자동차용 컴퓨터 시스템(620-4)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(610)을 포함한다. 노드들(610)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(600)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 6에 도시된 컴퓨팅 디바이스들(620-1 내지 620-4)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(610)과 클라우드 컴퓨팅 환경(600)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0098] 이제 도 7을 참조하면, 클라우드 컴퓨팅 환경(600) (도 6)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 7에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0099] 하드웨어 및 소프트웨어 층(710)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(711); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(712); 서버들(713); 블레이드 서버들(714); 스토리지 디바이스들(715); 그리고 네트워크 및 네트워킹 컴포넌트들(716)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(717) 및 데이터베이스 소프트웨어(718)를 포함한다.
[0100] 가상화 층(720)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(721); 가상 스토리지(722); 가상 사설 네트워크를 포함하는, 가상 네트워크들(723); 가상 애플리케이션들 및 운영 체제들(724); 및 가상 클라이언트들(725).
[0101] 한 예에서, 관리 층(730)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(731)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(732)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(733)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(734)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(735)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0102] 워크로드 층(740)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한: 맵핑 및 네비게이션(741); 소프트웨어 개발 및 라이프사이클 관리(742); 가상 교실 교육 전달(743); 데이터 분석 처리(744); 트랜잭션 처리(745); 및 정밀 집단 분석(precision cohort analytics)(746).
[0103] 본 발명의 실시 예들은 통합의 모든 기술적 세부 수준에서 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0104] 상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0105] 본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0106] 본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0107] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0108] 이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0109] 상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치들, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0110] 도면들의 플로차트 및 블록도는 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 플로차트 또는 블록도들의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 혹은 그 이상의 실행 가능한 명령들을 포함하는, 모듈, 세그먼트, 또는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록들은 한 단계로서 달성되거나, 동시에 실행되거나, 실질적으로 동시에 실행되거나, 부분적으로 혹은 전체적으로 일시적으로 중복 방식으로 실행될 수 있거나, 또는 상기 블록들은, 관련된 기능에 따라, 때때로 역순으로 실행될 수 있다. 또한 블록도들 및/또는 플로차트의 각 블록, 및 블록도들 및/또는 플로차트 그림의 블록들의 조합들은, 특정 기능들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합들을 수행하거나 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
[0111] 본 발명의 다양한 실시예들에 대한 설명은 예시의 목적으로 제시되었지만, 개시된 실시예들이 전부라거나 이들에 제한되도록 의도된 것은 아니다. 기술된 실시예들의 범위 및 정신을 벗어나지 않으면서 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 여기에 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하거나 당업자가 여기에 개시된 실시예들을 이해할 수 있도록 선택되었다.

Claims (20)

  1. 인증 인스턴스들(authorization instances) 간에 개인 서명 키(a private signature key)를 분산하기 위한 컴퓨터-구현 방법에 있어서, 상기 컴퓨터-구현 방법은:
    구성 파일(a configuration file)에 복수의 인증 인스턴스들을 등록하는 단계(registering) - 상기 복수의 인증 인스턴스들을 등록하는 단계는 상기 구성 파일에 등록을 제공함으로써 등록하며, 상기 인증 인스턴스들은 공통 서비스(a common service)에 참여함-;
    상기 인증 인스턴스들 각각에 대해 호스트 인스턴스 키 쌍들(host instance key pairs)을 생성하는 단계- 상기 호스트 인스턴스 키 쌍들 각각은 공개 호스트 키 및 개인 호스트 키(a public host key and a private host key)를 포함함 -;
    상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계;
    상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스(a signature key leader instance)로 선택하는 단계(electing);
    상기 서명 키 리더 인스턴스에 의해, 서명 키 쌍을 생성하는 단계 - 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함함-;
    상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계;
    암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계 - 상기 개인 서명 키는 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 암호화됨 -; 및
    상기 요청하는 인증 인스턴스에 의해 생성된 상기 개인 호스트 키를 사용하여 상기 암호화된 개인 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 암호 해독하는 단계를 포함하는
    컴퓨터-구현 방법.
  2. 제1항에 있어서, 상기 암호화된 개인 서명 키를 전송하는 단계는:
    상기 공유 데이터베이스에 저장된 공개 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 검출하는 단계(detecting);
    상기 서명 키 리더 인스턴스로부터 개인 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 요청하는 단계;
    상기 요청의 소스 IP 주소를 검사함에 의해서 상기 서명 키 리더 인스턴스에 대해 행해진 상기 요청의 유효성을 검증하는 단계(validating);
    상기 요청의 유효성을 검증하는 것에 기초하여, 상기 공유 데이터베이스로부터 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를, 검색하는 단계(retrieving);
    상기 공개 호스트 키를 사용하여 상기 개인 서명 키를 암호화하는 단계; 및
    상기 암호화된 개인 서명 키를 상기 요청하는 인증 인스턴스에 전송하는 단계를 포함하는
    컴퓨터-구현 방법.
  3. 제2항에 있어서, 상기 요청의 유효성을 검증하는 단계는:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스와 관련된 등록(a registration)을 검색하는 단계; 및
    상기 요청의 소스 IP 주소가 상기 등록에 위치한 상기 요청하는 인증 인스턴스의 저장된 IP 주소와 일치하는지를 확인하는 단계(verifying)를 포함하는
    컴퓨터-구현 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 방법은:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스에 대한 등록을 검색하는 단계 - 상기 등록은 상기 요청하는 인증 인스턴스의 호스트 이름(a hostname)을 포함함 -;
    요청하는 인증 인스턴스의 호스트 이름에서 콜백(a callback)을 통해 상기 암호화된 개인 서명 키를 제공하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  5. 제1항 내지 제4항의 항들 중 어느 한 항에 있어서, 상기 방법은:
    상기 서명 키 리더 인스턴스가 더 이상 응답하지 않음을 검출하는 단계; 및
    상기 인증 인스턴스들로부터 새로운 서명 키 리더 인스턴스를 선택하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  6. 제1항 내지 제5항의 항들 중 어느 한 항에 있어서, 상기 방법은:
    새로운 서명 키 쌍을 생성하기 위해 상기 서명 키 쌍의 롤오버(a rollover)를 수행하는 단계; 및
    새로운 공개 서명 키를 상기 공유 데이터베이스에 추가하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  7. 제1항 내지 제6항의 항들 중 어느 한 항에 있어서, 상기 서명 키 쌍은 상기 서명 키 리더 인스턴스의 메모리에 저장되는
    컴퓨터 구현 방법.
  8. 비-일시적 컴퓨터-판독 가능 스토리지 매체에 있어서, 상기 비-일시적 컴퓨터-판독 가능 스토리지 매체는 그 위에 저장된 명령을 갖고, 상기 명령은 컴퓨터 시스템이 컴퓨터 구현 방법을 수행하도록 제어하며, 상기 컴퓨터 구현 방법은:
    구성 파일(a configuration file)에 복수의 인증 인스턴스들을 등록하는 단계(registering) - 상기 복수의 인증 인스턴스들을 등록하는 단계는 상기 구성 파일에 등록을 제공함으로써 등록하며, 상기 인증 인스턴스들은 공통 서비스(a common service)에 참여함-;
    상기 인증 인스턴스들 각각에 대해 호스트 인스턴스 키 쌍들(host instance key pairs)을 생성하는 단계- 상기 호스트 인스턴스 키 쌍들 각각은 공개 호스트 키 및 개인 호스트 키(a public host key and a private host key)를 포함함 -;
    상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계;
    상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스(a signature key leader instance)로 선택하는 단계(electing);
    상기 서명 키 리더 인스턴스에 의해 서명 키 쌍을 생성하는 단계 - 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함함-;
    상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계; 및
    암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계를 포함하고, 상기 개인 서명 키는 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 암호화되어 상기 암호화된 개인 서명 키를 생성하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  9. 제8항에 있어서, 상기 암호화된 개인 서명 키를 전송하는 단계는 상기 컴퓨터 시스템이:
    상기 공유 데이터베이스에 저장된 공개 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 검출하는 단계(detecting);
    상기 서명 키 리더 인스턴스로부터 개인 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 요청하는 단계;
    상기 요청의 소스 IP 주소를 검사함에 의해서 상기 서명 키 리더 인스턴스에 대해 행해진 상기 요청의 유효성을 검증하는 단계(validating);
    상기 요청의 유효성을 검증하는 것에 기초하여, 상기 공유 데이터베이스로부터 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를, 검색하는 단계(retrieving);
    상기 공개 호스트 키를 사용하여 상기 개인 서명 키를 암호화하는 단계; 및
    상기 암호화된 개인 서명 키를 상기 요청하는 인증 인스턴스에 전송하는 단계를 수행하도록 하는 명령들을 포함하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  10. 제9항에 있어서, 상기 요청의 유효성을 검증하는 단계는 상기 컴퓨터 시스템이:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스와 관련된 등록(a registration)을 검색하는 단계; 및
    상기 요청의 소스 IP 주소가 상기 등록에 위치한 상기 요청하는 인증 인스턴스의 저장된 IP 주소와 일치하는지를 확인하는 단계(verifying)를 수행하도록 하는 명령들을 포함하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  11. 제8항 내지 10항의 항들 중 어느 한 항에 있어서, 상기 비-일시적 컴퓨터-판독 가능 스토리지 매체는 상기 컴퓨터 시스템이:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스에 대한 등록을 검색하는 단계 - 상기 등록은 상기 요청하는 인증 인스턴스의 호스트 이름(a hostname)을 포함함 -;
    요청하는 인증 인스턴스의 호스트 이름에서 콜백(a callback)을 통해 상기 암호화된 개인 서명 키를 제공하는 단계를 수행하도록 하는 명령들을 더 포함하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  12. 제8항 내지 11항의 항들 중 어느 한 항에 있어서, 상기 비-일시적 컴퓨터-판독 가능 스토리지 매체는 상기 컴퓨터 시스템이:
    상기 서명 키 리더 인스턴스가 더 이상 응답하지 않음을 검출하는 단계; 및
    상기 인증 인스턴스들로부터 새로운 서명 키 리더 인스턴스를 선택하는 단계를 수행하도록 하는 명령들을 더 포함하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  13. 제8항 내지 12항의 항들 중 어느 한 항에 있어서, 상기 비-일시적 컴퓨터-판독 가능 스토리지 매체는 상기 컴퓨터 시스템이:
    새로운 서명 키 쌍을 생성하기 위해 상기 서명 키 쌍의 롤오버(a rollover)를 수행하는 단계; 및
    새로운 공개 서명 키를 상기 공유 데이터베이스에 추가하는 단계를 수행하도록 하는 명령들을 더 포함하는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  14. 제8항 내지 12항의 항들 중 어느 한 항에 있어서,
    상기 서명 키 쌍은 상기 서명 키 리더 인스턴스의 메모리에 저장되는
    비-일시적 컴퓨터-판독 가능 스토리지 매체.
  15. 인증 인스턴스들 사이에 개인 서명 키를 분산하기 위한 컴퓨터 시스템에 있어서, 상기 컴퓨터 시스템은:
    데이터 처리 컴포넌트;
    물리적 메모리; 및
    로컬 데이터 스토리지를 포함하고, 상기 로컬 데이터 스토리지는 그 위에 저장된 컴퓨터 실행 가능한 프로그램 코드를 가지며, 상기 프로그램 코드는 데이터 처리 컴포넌트에 의해 실행될 때 상기 데이터 처리 컴포넌트가 방법을 수행하도록 하고, 상기 방법은:
    구성 파일(a configuration file)에 복수의 인증 인스턴스들을 등록하는 단계(registering) - 상기 복수의 인증 인스턴스들을 등록하는 단계는 상기 구성 파일에 등록을 제공함으로써 등록하며, 상기 인증 인스턴스들은 공통 서비스(a common service)에 참여함-;
    상기 인증 인스턴스들 각각에 대해 호스트 인스턴스 키 쌍들(host instance key pairs)을 생성하는 단계- 상기 호스트 인스턴스 키 쌍들 각각은 공개 호스트 키 및 개인 호스트 키(a public host key and a private host key)를 포함함 -;
    상기 공개 호스트 키들을 공유 데이터베이스에 저장하는 단계;
    상기 인증 인스턴스들 중 하나를 서명 키 리더 인스턴스(a signature key leader instance)로 선택하는 단계(electing);
    상기 서명 키 리더 인스턴스에 의해 서명 키 쌍을 생성하는 단계 - 상기 서명 키 쌍은 공개 서명 키 및 개인 서명 키를 포함함-;
    상기 공개 서명 키를 상기 공유 데이터베이스에 저장하는 단계; 및
    암호화된 개인 서명 키를 상기 인증 인스턴스들 중 요청하는 인증 인스턴스에 전송하는 단계를 포함하고, 상기 개인 서명 키는 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를 사용하여 암호화되어 상기 암호화된 개인 서명 키를 생성하는
    컴퓨터 시스템.
  16. 제15항에 있어서, 상기 암호화된 개인 서명 키를 전송하는 단계는 상기 데이터 처리 컴포넌트가:
    상기 공유 데이터베이스에 저장된 공개 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 검출하는 단계(detecting);
    상기 서명 키 리더 인스턴스로부터 개인 서명 키를, 상기 요청하는 인증 인스턴스에 의해, 요청하는 단계;
    상기 요청의 소스 IP 주소를 검사함에 의해서 상기 서명 키 리더 인스턴스에 대해 행해진 상기 요청의 유효성을 검증하는 단계(validating);
    상기 요청의 유효성을 검증하는 것에 기초하여, 상기 공유 데이터베이스로부터 상기 요청하는 인증 인스턴스에 대응하는 공개 호스트 키를, 검색하는 단계(retrieving);
    상기 공개 호스트 키를 사용하여 상기 개인 서명 키를 암호화하는 단계; 및
    상기 암호화된 개인 서명 키를 상기 요청하는 인증 인스턴스에 전송하는 단계를 수행하도록 하는 프로그램 코드를 포함하는
    컴퓨터 시스템.
  17. 제16항에 있어서, 상기 요청의 유효성을 검증하는 단계는 상기 데이터 처리 컴포넌트가:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스와 관련된 등록(a registration)을 검색하는 단계; 및
    상기 요청의 소스 IP 주소가 상기 등록에 위치한 상기 요청하는 인증 인스턴스의 저장된 IP 주소와 일치하는지를 확인하는 단계(verifying)를 수행하도록 하는 프로그램 코드를 포함하는
    컴퓨터 시스템.
  18. 제15항 내지 제17항의 항들 중 어느 한 항에 있어서, 상기 컴퓨터 시스템은 상기 데이터 처리 컴포넌트가:
    상기 구성 파일로부터 상기 요청하는 인증 인스턴스에 대한 등록을 검색하는 단계 - 상기 등록은 상기 요청하는 인증 인스턴스의 호스트 이름(a hostname)을 포함함 -;
    요청하는 인증 인스턴스의 호스트 이름에서 콜백(a callback)을 통해 상기 암호화된 개인 서명 키를 제공하는 단계를 수행하도록 하는 프로그램 코드를 더 포함하는
    컴퓨터 시스템.
  19. 제15항 내지 제18항의 항들 중 어느 한 항에 있어서, 상기 컴퓨터 시스템은 상기 데이터 처리 컴포넌트가:
    상기 서명 키 리더 인스턴스가 더 이상 응답하지 않음을 검출하는 단계; 및
    상기 인증 인스턴스들로부터 새로운 서명 키 리더 인스턴스를 선택하는 단계를 수행하도록 하는 프로그램 코드를 더 포함하는
    컴퓨터 시스템.
  20. 제15항 내지 제19항의 항들 중 어느 한 항에 있어서, 상기 컴퓨터 시스템은 상기 데이터 처리 컴포넌트가:
    새로운 서명 키 쌍을 생성하기 위해 상기 서명 키 쌍의 롤오버(a rollover)를 수행하는 단계; 및
    새로운 공개 서명 키를 상기 공유 데이터베이스에 추가하는 단계를 수행하도록 하는 프로그램 코드를 더 포함하는
    컴퓨터 시스템.
KR1020227028316A 2020-03-13 2021-02-10 엔드포인트 인스턴스들 간의 안전한 개인 키 분산 KR20220134572A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/818,534 2020-03-13
US16/818,534 US11121864B1 (en) 2020-03-13 2020-03-13 Secure private key distribution between endpoint instances
PCT/IB2021/051090 WO2021181176A1 (en) 2020-03-13 2021-02-10 Secure private key distribution between endpoint instances

Publications (1)

Publication Number Publication Date
KR20220134572A true KR20220134572A (ko) 2022-10-05

Family

ID=77665439

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227028316A KR20220134572A (ko) 2020-03-13 2021-02-10 엔드포인트 인스턴스들 간의 안전한 개인 키 분산

Country Status (10)

Country Link
US (1) US11121864B1 (ko)
JP (1) JP2023516130A (ko)
KR (1) KR20220134572A (ko)
CN (1) CN115280718B (ko)
AU (1) AU2021235526B2 (ko)
CA (1) CA3166663A1 (ko)
DE (1) DE112021000340T5 (ko)
GB (1) GB2608570B (ko)
IL (1) IL295069A (ko)
WO (1) WO2021181176A1 (ko)

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2417901C (en) * 2000-08-04 2013-01-22 First Data Corporation Entity authentication in electronic communications by providing verification status of device
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
US7523490B2 (en) * 2002-05-15 2009-04-21 Microsoft Corporation Session key security protocol
FR2842680A1 (fr) * 2002-07-19 2004-01-23 France Telecom Procede de signature de liste et application au vote electronique
WO2005062919A2 (en) 2003-12-22 2005-07-14 Wachovia Corporation Public key encryption for groups
US8464347B2 (en) * 2008-03-28 2013-06-11 Panasonic Corporation Software updating apparatus, software updating system, alteration verification method and alteration verification program
EP2442253A1 (en) * 2010-10-12 2012-04-18 Research In Motion Limited A method for securing credentials in a remote repository
CN103460195B (zh) * 2011-02-11 2016-04-13 西门子医疗保健诊断公司 用于安全软件更新的系统和方法
US10333903B1 (en) 2015-06-16 2019-06-25 Amazon Technologies, Inc. Provisioning network keys to devices to allow them to provide their identity
CN110050437B (zh) * 2016-09-06 2020-10-23 华为技术有限公司 分布式证书注册的装置和方法
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10581595B2 (en) 2017-03-01 2020-03-03 International Business Machines Corporation Generating public/private key pairs to deploy public keys at computing devices to verify digital signatures
JP6910894B2 (ja) 2017-09-01 2021-07-28 キヤノン株式会社 情報処理装置、制御方法、およびプログラム
US10924289B2 (en) * 2018-07-13 2021-02-16 Visa International Service Association Public-private key pair account login and key manager
US11223485B2 (en) * 2018-07-17 2022-01-11 Huawei Technologies Co., Ltd. Verifiable encryption based on trusted execution environment
CN109600224A (zh) 2018-11-06 2019-04-09 卓望数码技术(深圳)有限公司 一种sm2密钥生成、签名方法、终端、服务器和存储介质
SG11201908946PA (en) 2019-03-26 2019-10-30 Alibaba Group Holding Ltd Program execution and data proof scheme using multiple key pair signatures

Also Published As

Publication number Publication date
AU2021235526B2 (en) 2023-07-13
JP2023516130A (ja) 2023-04-18
CA3166663A1 (en) 2021-09-16
GB2608570B (en) 2023-09-13
GB2608570A (en) 2023-01-04
AU2021235526A1 (en) 2022-08-25
WO2021181176A1 (en) 2021-09-16
CN115280718A (zh) 2022-11-01
US20210288790A1 (en) 2021-09-16
DE112021000340T5 (de) 2022-10-20
CN115280718B (zh) 2023-10-24
IL295069A (en) 2022-09-01
GB202215019D0 (en) 2022-11-23
US11121864B1 (en) 2021-09-14

Similar Documents

Publication Publication Date Title
US10560476B2 (en) Secure data storage system
US9836308B2 (en) Hardware security module access management in a cloud computing environment
US10938572B2 (en) Revocable biometric-based keys for digital signing
US11121876B2 (en) Distributed access control
US10931453B2 (en) Distributed encryption keys for tokens in a cloud environment
JP2021500782A (ja) セキュアな環境内のツール用のセキュアなアクセス管理方法、コンピュータ・プログラム、およびシステム
US11856090B2 (en) Data protection optimization
US20200296089A1 (en) Validating containers on a microservice framework
US11019033B1 (en) Trust domain secure enclaves in cloud infrastructure
US9906370B2 (en) Trust relationship management amongst racks in a data center
US10715318B2 (en) Lightweight cryptographic service for simplified key life-cycle management
US11032708B2 (en) Securing public WLAN hotspot network access
US10972455B2 (en) Secure authentication in TLS sessions
US10554626B2 (en) Filtering of authenticated synthetic transactions
US10621319B2 (en) Digital certificate containing multimedia content
US11606205B2 (en) Causal total order broadcast protocols using trusted execution environments
AU2021235526B2 (en) Secure private key distribution between endpoint instances
US11271968B2 (en) Zero round trip time transmission for anticipatory request messages
US11153299B2 (en) Secure data transport using trusted identities
US20220311616A1 (en) Connection resilient multi-factor authentication
US20230246818A1 (en) Secure data migration
US11809568B2 (en) Hypervisor having local keystore

Legal Events

Date Code Title Description
A201 Request for examination