KR20190029509A - 사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법 - Google Patents

사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20190029509A
KR20190029509A KR1020187032660A KR20187032660A KR20190029509A KR 20190029509 A KR20190029509 A KR 20190029509A KR 1020187032660 A KR1020187032660 A KR 1020187032660A KR 20187032660 A KR20187032660 A KR 20187032660A KR 20190029509 A KR20190029509 A KR 20190029509A
Authority
KR
South Korea
Prior art keywords
data
data object
user
key
record locator
Prior art date
Application number
KR1020187032660A
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 KR20190029509A publication Critical patent/KR20190029509A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

제1 데이터 객체를 저장하는 방법은, 클라이언트 장치에서, 상기 제1 데이터 객체를 제1 오리지널 레코드 로케이터와 연관된 제1 프래그먼트 및 제2 오리지널 레코드 로케이터와 연관된 제2 프래그먼트로 분해하는 단계; 상기 제1 오리지널 레코드 로케이터를 난독화하여 제1 난독화된 레코드 로케이터를 생성하고, 상기 제2 오리지널 레코드 로케이터를 난독화하여 제2 난독화된 레코드 로케이터를 생성하는 단계; 상기 클라이언트 장치에서, 제1 암호화 키를 사용하여 상기 제1 프래그먼트를 암호화하고 제2 암호화 키를 사용하여 상기 제2 프래그먼트를 암호화하는 단계; 및 대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화된 프래그먼트를 복수의 저장 위치 중 적어도 제1 저장 위치에 저장하는 단계를 포함한다.

Description

사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법
본 명세서에 설명된 다양한 실시예는 일반적으로 정보를 전자적으로 관리하는 분야에 관한 것으로, 보다 상세하게는 사용자 프로필에 사용자 정보를 안전하게 저장하고 보호하는 것이다. 또한, 본 명세서에 설명된 다양한 실시예는 일반적으로 전자 데이터 보안 분야에 관한 것으로, 보다 상세하게는 클라이언트 종단점(endpoint)에서 및 전송 동안 데이터, 크리덴셜(credential) 및 암호화 키를 안전하게 저장, 관리 및 전송하는 것에 관한 것이다.
종이 없는 현대 사회의 비전은 인터넷과 같은 네트워크를 통해 점점 더 많은 통신, 서비스 및 거래가 디지털 방식으로 일어남에 따라 빠르게 현실화되고 있다. 이러한 문서를 안전하게 전송, 업데이트 및 액세스하는 전자적 방법이 증가함에 따라 서신, 금융 문서(financial document), 영수증, 계약서 및 기타 법적 문서의 종이 사본에 대한 필요성이 줄어들고 있다. 전자 전송, 및 문서 및 서신에 대한 액세스 외에도 정보를 전자적으로 제출하는 프로세스, 예를 들어, 온라인 쇼핑이나 대출 신청, 신용 카드, 건강 보험, 대학 입학 신청 또는 취업 지원서 등과 같은 프로세스가 또한 일상적이다.
그러나, 이러한 서식(form)에서 요구되는 정보의 대부분은 다른 서식에 공통적이지만, 사용자는 여전히 동일한 정보를 반복하여 서식 입력에 기입(populate)하는 것을 수동으로 반복한다. 이러한 전자 문서, 서식 및 신청서에 필요한 입력 정보를 수집, 조직, 업데이트, 이용 및 다시 적용하는데는 매우 어려움이 있다. 일부 신청서는 사용자의 이름, 주소 및 금융 정보와 같은 사용자에 대한 특정 기본 정보를 저장하도록 개발되었지만 이 저장된 정보를 조직, 액세스하여, 추가적인 온라인 활동에 적용하는 능력은 특히 대학 입학 신청서 및 가족법 신고서와 같은 서식을 완성하는 데 자세한 입력 정보 및/또는 계산이 필요할 때에는 매우 제한적이다.
사용자가 금융 정보, 예산, 예측, 균형 소비 계좌(balance spending account) 등을 추적할 수 있게 하는 일부 프로그램 또는 애플리케이션이 있다. 이러한 도구를 사용하면 시간을 절약하고 예산 책정 등에 효과적인 도구를 제공할 수 있지만, 이들 도구는 특정 형식(format)으로 또는 특정 서식 등에 따라 개인 정보, 금융 정보, 예측, 분류된 지출 등을 제공할 것을 사용자에 요구하는 수많은 상황을 다루지는 않는다.
예를 들어, 누군가 이혼할 때, 이들은 법원에 상세한 개인 및 금융 정보, 과거 레코드뿐만 아니라 예상되는 요구 사항을 제공해야 한다. 이 정보는 특정 서식을 사용하여 매우 특정한 주 위임 형식으로 제공되어야 하며, 이 정보는 오랜 시간 기간 동안 지속될 수 있는 이혼 프로세스 동안 다양한 시점에서 업데이트되어 법원에 제출되어야 한다. 예를 들어, 도 1은 캘리포니아주 이혼 절차에서 청구인과 피청구인이 채워야 하는 소득 및 지출 신고서(Income and Expense Declaration)의 한 페이지를 보여준다. 이와 같은 서식에 필요한 정보는 양이 많고 복잡하여 전형적으로 서식을 완성하는 사람, 예를 들어, 이혼 당사자 또는 대리인이 필요한 모든 정보를 획득하고 심지어 원하는 값을 획득하기 위해 정보를 계산하는 데 상당한 양의 시간을 소비할 것을 요구한다. 또 다른 예로서, 사용자가 자동차 대출 또는 담보 대출(mortgage)과 같은 대출을 하기를 원할 때 대출을 제공하는 조직은 종종 사용자에 특정 형식으로 조직된 특정 금융 레코드 및 정보를 제공하고 업데이트할 것을 요구한다.
현재 이용 가능한 개인 금융 소프트웨어 도구를 사용하여 잘 조직되고 금융 면에서 정통한 사용자조차도 이러한 서식을 완성하고 업데이트하는 것은 번거롭고, 시간 소모적이며, 혼란스럽고 실수하기 쉽다는 것을 발견한다. 적용 가능한 서식 및 기타 적용 가능한 항목(item)은 기본 금융 정보보다 훨씬 더 많은 것을 요구한다. 추가적으로, 신청자가 금융 보조, 대출 등을 받을 자격이 있는지 또는 이혼 또는 기타 법적 절차에서 유리한 결과를 받는지 여부에 서식이 분명히 상당한 영향을 미칠 수 있으므로 서식을 정확하게 완성해야 할 필요가 상당히 있다.
이러한 동일한 도전 과제는 대학에 입학 신청을 하거나 비용을 지불하는 것과 같은 다른 중요한 생애 이벤트에도 적용된다. 대학 입학 신청 프로세스는 학생들에게 매우 불안한 시간이며, 부모들에도 매우 종종 불안감을 안겨준다. 에세이, 성적 증명서, 추천서, 활동, 사진 등을 포함하지만 이들로 제한되지 않는 대학 입학 신청 및 금융 보조 신청을 완성하는 데 필요한 세부 정보가 많이 있다. 또한 대학 입학 신청서와 금융 보조 기회에는 많은 상이한 마감 기한이 있다. 제출된 모든 정보, 기한 및 신청서를 조직화된 상태에 유지하고 계속 최신으로 유지하는 것은 매우 어렵다.
또한, 전자 데이터의 보안은 사적인 개인 및 거의 모든 상상할 수 있는 기업 및 정부 기관에서 매우 중요하다. 엄청난 양의 전자 데이터는 지속적으로 생성, 저장 및 전송되고 있다. 게다가, 요즘에는 전자 데이터의 폭이 불가피하게 사적이고 민감한 정보로 확대되어 필연적으로 수많은 악의적인 행위자를 끌어들인다.
종래의 데이터 보안 솔루션은 비교적 정적이다. 예를 들어, 하나 이상의 데이터 보안 메커니즘(예를 들어, 패스워드 보호, 암호화 방식)이 특정 데이터 저장 위치에서 전개될 수 있다. 전체 데이터 저장 위치가 이미 손상되었을 수 있는 상당한 보안 침해(security breach)가 검출될 때까지 동일한 데이터 보안 메커니즘이 일반적으로 그대로 유지된다.
표준 관계형 데이터 모델에 기초하여 저장된 데이터는 특히 권한 없는 액세스에 취약하다. 개별 저장 위치에 저장된 개별 데이터 레코드(예를 들어, 이름, 주소, 사회 보장 번호, 신용 카드 번호 및 은행 계좌 번호)는 전형적으로 (예를 들어, 동일한 사용자와 연관된) 데이터 레코드들 사이의 논리적인 연결을 나타내는 공통 레코드 로케이터(common record locator)에 의해 동반된다. 예를 들어, 개별 데이터 레코드는 각각 동일한 사용자 식별 번호와 연관될 수 있다. 그리하여, 임의의 하나의 데이터 레코드에 권한 없이 액세스하는 것은 데이터 레코드의 나머지에 액세스할 수 하기에 충분한 정보(즉, 사용자 식별 번호)를 노출시킬 수 있다.
다수의 데이터 보안 방법이 이용 가능하지만, 단일 데이터 저장 위치에서 끊김 없이 통합되고 보완적인 데이터 보안 솔루션의 유연한 명부(roster)를 구현하는 것은 엄청난 도전이다. 예를 들어 보안 솔루션을 결합하면 일반적으로 데이터 보안이 향상되지만 서로 다른 솔루션 간의 비 호환성으로 인해 실제로 추가적인 보안 위험이 발생할 수 있다.
더욱이, 사용자가 데이터를 저장하고 검색할 수 있게 하려면, 그 사용자를 식별하고 그 사용자의 데이터를 임의의 다른 사용자에 의해 액세스되는 것을 방지하는 방식이 존재하여야 한다. 전통적으로 이것은 사용자가 로그인 프로세스를 통해 인증되고 권한 있는 "프론트-엔드(front-end)" 소프트웨어에 의해 수행된다.
종래의 로그인 프로세스는 다수의 문서화된 약점과 연관되어 있다. 예를 들어 많은 시스템에서 로그인 단계는 일반적으로 사용자 인터페이스(UI)의 일부이고 보안 거품과는 별도의 개체(entity)인 것으로 간주된다. 보안에서 제한된 배경을 갖는 사내 개발자가 맞춤 로그인 인증 및 권한 부여 시스템을 구축하려고 시도하는 경우 문제가 확대된다. 그리하여 악의적인 사용자가 로그인 프로세스를 성공적으로 완료하면 악의적인 사용자는 다른 사용자의 데이터에 액세스할 수 있다.
그러나, 오늘날 생성되는 많은 데이터는 클라이언트 종단점, 예를 들어, 컴퓨터, 랩탑, 스마트폰, 태블릿, 사물 인터넷 장치 등에서 생성 또는 액세스되는 것으로 인해 이러한 문제는 더욱 악화된다. 위에서 설명된 문제는 서버에서 저장되고 검색되는 데이터에 대해서는 해결될 수 있다 하더라도 종단점에서 데이터를 안전하게 보호하는데는 추가적인 문제가 있다. 따라서 위의 문제에 대한 임의의 솔루션은 클라이언트 종단점에서도 안전하게 보호되어야 한다는 사실을 고려해야 한다.
키 교환 방법론
두 장치 간에 신뢰성 있는 통신 링크를 수립하고 예를 들어 대칭 공유 비밀 키 또는 공개(public)/개인(private) 비대칭 키를 통해 전송된 데이터를 암호화/복호화하는데 현재의 사용 방법에는 많은 형태의 키 교환 방법론이 있다. 대칭 암호화는 AES, 블로우피쉬(Blowfish), DES 및 스킵잭(Skipjack)과 같은 임의의 수의 알고리즘을 통해 데이터를 암호화하고 복호화하는 데 동일한 키를 사용하며, 전형적으로 비대칭 암호화보다 더 빠르다. 이것은 자주 대량 데이터 암호화에 사용되거나 높은 데이터 처리 속도가 필요할 때 사용된다. 대조적으로, 비대칭 암호화는 한 쌍의 키, 즉 공개 키와 개인 키를 사용하고, 여기서 공개 키는 전형적으로 데이터를 암호화하는 데 사용되고 개인 키는 데이터를 복호화하는 데 사용된다. 비대칭 키 알고리즘은 대칭 키 알고리즘보다 1000배 더 느릴 수 있으므로 수많은 자원 역량을 요구할 수 있는 키 쌍을 연속적으로 교환하지 않는 초기 장치 인증 또는 키 관리에 더 일반적으로 적용된다.
암호화된 데이터 전송
대형 객체가 다수의 클라이언트 목적지로 암호화되어 송신될 필요가 있고 각각의 클라이언트가 고유하게 암호화된 사본을 가져야 하는 일반적인 시나리오에서, 전통적인 접근법은 각각의 클라이언트에 상이한 키를 사용하여 오리지널 객체(original object)를 암호화하는 것이다. N개의 클라이언트가 있고 각 객체를 암호화하는 데 시간 기간(T)이 소요되는 경우 총 암호화 시간은 N x T이다.
데이터 암호화 속도
현재, 성능(데이터가 암호화될 수 있는 속도)을 증가시키는데 몇 가지 접근법이 있다. 하나의 접근법은 하드웨어 기반 가속을 사용하는 것에 의한 것이다. 128 비트 및 256 비트 AES 암호는 AES-NI 하드웨어 암호화(인텔 및 AMD 프로세서에서 이용 가능)를 통해 4배 내지 8배 가속될 수 있다. 보안을 희생시키면서 키 크기를 줄일 수도 있다. 256 비트 키가 있는 AES는 128 비트 키가 있는 AES보다 약 40% 더 느리다. 또 다른 전술은 20%의 속도 향상을 생성할 수 있는 블로우피쉬와 같은 대안적인 암호화 알고리즘을 사용하는 것이다.
암호화 키 관리
암호화 키는 전형적으로 데이터를 암호화하거나 데이터를 암호화하는데 사용되는 다른 키를 암호화하는데 사용되며, 후자는 일반적으로 KEK(Key Encryption Key)라고 알려져 있다. 키를 관리하고 키에 액세스하는 자를 관리하는 것은 힘든 작업일 수 있다. 키 관리 소프트웨어(key management software: KMS)는 필요한 모든 키에 사용자 및 관리 액세스를 제공하여 이 작업을 보다 쉽게 수행하려고 시도한다. 또한 KMS는 백업 및 중복(redundancy) 서비스를 제공하여 치명적인 서버 오류가 발생한 경우 키 사본을 보호할 수 있다. KMS가 변함 없이 가동하지 않으면, 암호화된 데이터에 액세스하는 것이 가능하지 않기 때문에 교체 KMS가 신속하게 스핀업될 때 사용자 가동시간이 유지된다.
복합 보안 키
복합 보안 키의 개념은 널리 알려져 있고 많은 시나리오에서 사용된다. 예를 들어 앨리스(Alice)와 밥(Bob)이 파일을 잠금 해제(unlock)할 수 있는 복합 키를 사용하면 파일을 잠금 해제할 수 있는 능력을 이들 모두에 제공하지만 이들 둘 모두 다 동시에 파일을 잠금 해제해야만 파일을 잠금 해제할 수 있다. 밥 또는 앨리스 중 그 어느 혼자서는 파일을 독립적으로 잠금 해제할 수 없다. 이러한 복합 키는 전형적으로 정적이며, 변경이 필요할 때 관리자에 의해 재기록되어야 한다.
데이터 액세스 제한
데이터에 액세스하는 것이 제한될 필요가 있을 때, 일반적으로 사용되는 접근법은 사용자 레벨에서 액세스 권한을 구성하고 및/또는 다른 역할 및 이들에 할당된 허가권을 각각 갖는 사용자 그룹을 수립하는 것이다. 이것은 예를 들어 사용자 A가 사용자 B의 데이터에 액세스하지 못하는 것을 보장한다. 데이터베이스에 일반적으로 사용되는 또 다른 접근법은 데이터에 액세스하는 것을 허용하기 전에 임의의 수의 제한을 점검하는 데이터베이스 질의문(query statement)을 개발하는 것이다. 이러한 모든 솔루션의 문제는, 데이터 항목 레벨에서 세부적인 제어를 하는 쉬운 방식을 제공하지 않으며 이러한 제한 자체가 보편적으로 암호화되지 않는다는 것이다.
해킹
해커들은 발견되기 전에 시스템에서 평균 200일을 소비한다. 내부에 있는 동안 해커는 트래픽을 관찰하고 추가적인 크리덴셜, 사용자 이름, 패스워드 등을 찾는 다양한 시도를 한다. 액세스 로그 및 행동 분석은 검출 노력이 집중된 몇 가지 방식이다. 추가적으로 "꿀단지(honey pot)" 파일, 데이터베이스 또는 서버는 해커의 속도를 줄이기 위한 시도로 전략적으로 배치된다.
랜섬웨어
랜섬웨어는 네트워크 연결된 드라이브 및 클라우드 폴더에 있는 파일을 포함하여 이 컴퓨터에서 볼 수 있는 모든 파일에 적용되는 암호화 알고리즘을 실행하는 컴퓨터에 몰래 설치된 소프트웨어이다. 그 의도는, 피해자가 복호 키를 제공하는 몸값을 지불하지 않는 한, 영향을 받는 파일을 사용할 수 없게 하는 것이다. 랜섬웨어 소프트웨어 또는 많은 수의 파일 이름 바꾸기 활동으로 생성되는 것으로 알려진 확장명을 가진 파일이 등장하는 것과 같은 특성에 기초하여 공격의 초기 징후를 식별하려고 시도하는 제품이 있다. 또 다른 접근법은 사용자가 전자 메일(email)(가장 많은 공격 소스)의 첨부 파일(attachment)을 클릭하지 못하게 하는 클릭 차단 소프트웨어를 포함한다. 마지막으로 감염이 있는 징후일 수 있는 비정상적인 실행 프로세스를 모니터링하는 많은 멀웨어 솔루션이 있다.
랜섬웨어로부터 파일을 보호하기 위한 가장 효과적인 해결책은 모든 파일을 정기적으로 백업하여 며칠 동안의 백업이 존재하는 것을 보장하는 것이다. 자동 스케줄에 따라 백업을 실행하는 다양한 제품이 있다. 그러나 많은 백업 시스템은 백업용으로 장착된 드라이브를 사용한다. 랜섬웨어 바이러스가 파일을 볼 수 있으면 이 바이러스는 백업에 사용된 드라이브를 포함하여 모든 드라이브를 볼 수 있다. 적절한 액세스 크리덴셜 및 프로토콜을 설정하는 것과 같은 백업 드라이브를 보호하는 방식이 있다. 그 랜섬웨어는 계속적으로 진화하고 적응하기 때문에, 이러한 솔루션 중 많은 솔루션은 범죄자에 대해 근거를 상실하고 있다.
암호화된 데이터 서치
암호화된 데이터를 평가하여 서치할 수 있는 사전-색인(pre-indexing) 서치 필드 또는 동형 암호(homomorphic encryption)와 같은, 암호화된 데이터를 서치하기 위한 다수의 접근법이 존재한다. 가장 큰 도전은 허용 가능한 한도 내에서 성능을 유지하는 것이고 모든 방법은 서치 프로세스를 느리게 하거나 보안 취약점을 초래한다. 어느 경우에나 이들 방법은 표준을 거의 따르지 않는 구현에서 널리 변한다. 이러한 맞춤 구현은 제3자 서치 도구를 활용하기 어렵게 만든다.
데이터 암호화
데이터는 전통적으로 임의의 수의 상태에 있는 동안 암호화된다. 예를 들어 전체 하드 드라이브가 휴지 상태의 데이터(data-at-rest)에서 암호화될 수 있다. 또 다른 예에서, 동적 상태의 데이터는 보안 https 연결을 통해 이동하면서 암호화될 수 있다. 데이터베이스의 데이터는 또한 오리지널 테이블 형식(original table format)을 보존하면서 개별 필드의 데이터를 제 자리에서 암호화하는 방법을 사용하여 암호화될 수 있다. 다른 특별한(ad-hoc) 시나리오는 단일 데스크탑 폴더 또는 장착된 디스크 드라이브를 암호화하는 것을 포함한다.
이러한 모든 경우에서, 암호화될 데이터는 오리지널 풋프린트(original footprint)와는 많이 다른 형식으로 조직되지 않는다. 암호화된 데이터는 단지 오리지널 데이터를 제 자리에서 대체하거나, 또는 다른 매체로 복제된 경우 오리지널 데이터와 유사한 데이터 및 파일 계층 구조를 사용하여 저장소로 전송된다. 데이터 샤딩 및 소거 코딩 알고리즘(Data Sharding and Erasure Coding algorithm)의 경우와 같이 데이터 저장 형식을 재조직하는 다른 기술이 존재한다. 이들은 오리지널 데이터를 분배하며 이 데이터는 또한 암호화될 수 있다. 그러나 분배 및 저장 형식은 기본 알고리즘에 의해 부여된 엄격한 프로토콜을 따르는 것에 의해 더 높은 레벨의 기능을 적용하고 기존 레거시 형식 및/또는 제3자 솔루션과 통합하는 것을 어렵게 한다.
본 명세서는 정보에 액세스하는 것을 방지하고 보안 침해 동안 공개되는 정보의 양을 최소화하기 위해 사용자 프로필에 사용자의 정보를 안전하게 저장하기 위한 시스템 및 방법을 개시한다. 사용자에 속하는 정보는 전자 수단을 통해 하나 이상의 소스로부터 얻어지고, 이 정보는 필드 매핑 및 기타 기술을 사용하여 특정 카테고리로 분류되고 나서, 사용자 프로필로 조직되고 데이터베이스에 안전하게 저장한다. 수집 및 조직된 정보는 식별 및 연락처 정보, 금융 정보, 건강 정보, 교육 및 경력 정보, 가족 정보, 비즈니스 정보, 라이프스타일 정보 및 나열된 카테고리들 중 임의의 카테고리에 대한 이력 정보를 포함할 수 있다(그러나 이들로 국한되지 않는다). 사용자 프로필은 암호화되어 원격 서버의 클라우드 기반 시스템에 원격으로 저장될 수 있으며, 프로필의 일부는 별도의 암호화로 별도의 위치에 저장되어 정보의 하나의 부분에 권한 없이 액세스할 위험을 최소화할 수 있다. 또한 사용자 프로필의 데이터 필드는 별도의 암호화 키로 개별적으로 암호화되어 별도의 데이터 저장소, 데이터베이스 또는 별도의 데이터베이스 테이블에 별도로 저장되어 단일 암호화 키 또는 단일 데이터베이스 또는 데이터베이스 테이블에 권한 없이 액세스하는 것에 의해 공개될 수 있는 정보의 양을 최소화할 수 있다.
본 발명의 일 양태에서, 사용자 프로필로부터 사용자 정보를 안전하게 저장하는 시스템은, 복수의 필드 및 상기 복수의 필드에 대한 복수의 값을 포함하는 사용자 정보의 사용자 프로필을 생성하는 프로필 생성 유닛을 포함하고; 상기 사용자 프로필 내의 정보는 구획들로 분리되며; 상기 구획들은 별도의 데이터 저장소, 데이터베이스 또는 데이터베이스 테이블에 별도로 저장된다.
본 발명의 다른 양태에서, 사용자 프로필로부터 사용자 정보를 안전하게 저장하는 방법은, 복수의 필드 및 상기 복수의 필드에 대한 복수의 값을 포함하는 사용자 정보의 사용자 프로필을 생성하는 단계; 상기 사용자 프로필 내의 상기 정보를 별도의 구획들로 분리하는 단계; 및 상기 별도의 구획들을 별도의 데이터 저장소, 데이터베이스 또는 데이터베이스 테이블에 저장하는 단계를 포함한다.
또한, 본 명세서는 클라이언트 종단점으로 및 상기 클라이언트 종단점으로부터 데이터, 크리덴셜 및 암호화 키를 안전하게 저장, 전송 및 관리하기 위한 시스템 및 방법을 개시한다. 일 양태에 따르면, 제1 데이터 객체를 저장하기 위한 시스템은, 복수의 저장 위치; 하나 이상의 프로세서를 포함하는 보안 플랫폼; 및 하나 이상의 프로세서를 포함하는 클라이언트 장치를 포함하고, 상기 클라이언트 장치는, 상기 제1 데이터 객체를 제1 오리지널 레코드 로케이터와 연관된 제1 프래그먼트(fragment) 및 제2 오리지널 레코드 로케이터와 연관된 제2 프래그먼트로 분해하는 동작; 상기 제1 오리지널 레코드 로케이터를 난독화하여 제1 난독화된 레코드 로케이터를 생성하고, 상기 제2 오리지널 레코드 로케이터를 난독화하여 제2 난독화된 레코드 로케이터를 생성하는 동작; 제1 암호화 키를 사용하여 상기 제1 프래그먼트를 암호화하고, 제2 암호화 키를 사용하여 상기 제2 프래그먼트를 암호화하는 동작; 및 대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화된 프래그먼트를 상기 복수의 저장 위치 중 적어도 제1 저장 위치에 저장하는 동작을 수행하도록 구성된다.
첨부된 도면과 함께 취해진 바람직한 실시예에 대한 이하 상세한 설명으로부터 다른 특징 및 장점이 명백해질 것이다.
본 명세서에 개시된 다양한 실시예는 이하 도면을 참조하여 상세하게 설명된다. 도면은 단지 예시의 목적으로 제공된 것이며, 단지 전형적인 또는 예시적인 실시예를 도시한다. 이들 도면은 독자의 이해를 돕기 위해 제공된 것일 뿐, 실시예의 폭, 범위 또는 적용 가능성을 제한하는 것으로 고려되어서는 안 된다. 설명의 명료성 및 용이함을 위해, 이들 도면은 반드시 축척에 맞게 그려진 것이 아니라는 것을 알아야 한다.
도 1은 이혼 절차에 사용된 소득 및 지출 신고서 서식의 이미지;
도 2는 본 발명의 다양한 양태에 따라 다양한 양태에 따라 개인 정보를 획득하고, 분류하고, 전자 서식에 기입하기 위한 시스템을 나타내는 블록도;
도 3은 본 발명의 다양한 양태에 따라 개인 정보를 획득하고, 분류하고, 전자 서식에 기입하기 위한 시스템을 더 도시하는 다이어그램;
도 4는 본 발명의 다양한 양태에 따라 문서의 필드를 기입하는 것에 수반되는 동작을 도시한 도면;
도 5는 본 발명의 다양한 양태에 따라 본 발명의 시스템을 구현하기 위해 브라우저 확장을 나타내는 그래픽 사용자 인터페이스의 스크린 샷;
도 6은 본 발명의 다양한 양태에 따라 숫자를 식별하는 필드, 필드 이름 및 필드 값을 나열하는 데이터베이스 테이블의 이미지;
도 7은 본 발명의 다양한 양태에 따라 자동 완성을 위해 시스템에 저장된 서식의 데이터베이스 테이블의 이미지;
도 8은 본 발명의 다양한 양태에 따라 시스템에 저장된 각 서식 문서 상의 필드 이름 및 필드 값을 나열하는 데이터베이스 테이블의 이미지;
도 9a는 본 발명의 다양한 양태에 따라 사용자 정보를 미리 기입하기 위해 문서의 카테고리를 선택하기 위한 웹 인터페이스를 도시하는 그래픽 사용자 인터페이스의 스크린 샷;
도 9b는 본 발명의 다양한 양태에 따라 사용자 정보를 미리 기입하기 위해 특정 문서를 선택하기 위한 웹 인터페이스를 도시하는 그래픽 사용자 인터페이스의 스크린 샷;
도 10a는 본 발명의 다양한 양태에 따라 시스템 데이터베이스에 자동으로 식별되고 저장될 수 있는 고유한 필드 이름을 갖는 서식의 그래픽 사용자 인터페이스를 도시한 도면;
도 10b는 본 발명의 다양한 양태에 따라 필드에 기입된 시스템 데이터베이스에 저장된 고유한 필드의 값을 갖는, 도 10a의 서식의 그래픽 사용자 인터페이스를 도시한 도면;
도 11은 본 발명의 다양한 양태에 따라 도 10a 및 도 10b에 도시된 서식의 고유한 필드에 대한 필드 식별자, 필드 이름 및 필드 값을 저장하는 데이터베이스 테이블의 이미지;
도 12는 본 발명의 다양한 양태에 따라 개인 정보를 획득하고, 분류하고, 및 전자 서식에 기입하는 방법을 도시하는 흐름도;
도 13은 본 발명의 다양한 양태에 따라 일 실시예를 구현할 수 있는 컴퓨터/서버 시스템의 일 실시예를 나타내는 블록도;
도 14는 전체 내용이 본 명세서에 병합된 미국 출원 번호 14/863,294의 도 1을 재현한 도면;
도 15는 전체 내용이 본 명세서에 병합된 미국 출원 번호 14/970,466의 도 1을 재현한 도면;
도 16은 전체 내용이 본 명세서에 병합된 미국 가출원 번호 62/281,097의 도 1을 재현한 도면;
도 17은 미국 가출원 번호 62/281,097의 도 4를 재현한 도면;
도 18은 본 발명의 다양한 양태에 따라 키를 교환하는 방법을 도시하는 흐름도;
도 19는 본 발명의 다양한 양태에 따른 암호화된 데이터 전송 시퀀스를 나타내는 시퀀스 다이어그램;
도 20a는 본 발명의 다양한 양태에 따라 암호화 속도를 증가시키기 위해 데이터를 사전 슬라이싱(pre-slicing)하는 방법을 도시하는 흐름도;
도 20b는 본 발명의 다양한 양태에 따라 데이터 파일을 재결합하는 방법을 도시하는 흐름도;
도 21은 본 발명의 다양한 양태에 따라 암호화 키를 관리하는 방법을 도시하는 흐름도;
도 22는 본 발명의 다양한 양태에 따라 복합 키를 평가하는 방법을 도시하는 흐름도;
도 23은 본 발명의 다양한 양태에 따라 데이터에 액세스하는 것을 제한하는 방법을 도시하는 흐름도;
도 24는 본 발명의 다양한 양태에 따라 해킹 공격을 검출하고 응답하는 방법을 도시하는 흐름도;
도 25는 본 발명의 다양한 양태에 따라 랜섬웨어 공격을 검출하고 응답하는 방법을 도시하는 흐름도;
도 26은 본 발명의 다양한 양태에 따라 암호화된 데이터를 서치할 수 있는 방법을 나타내는 흐름도; 및
도 27은 본 발명의 다양한 양태에 따라 암호화된 데이터를 저장하기 위해 가상 암호화 컨테이너(virtual cryptological container)를 이용하는 방법을 도시하는 흐름도.
전술한 다양한 실시예는 전술한 도면 및 예시적인 실시예의 이하 상세한 설명을 참조하여 더욱 상세하게 설명된다.
본 명세서에 설명된 실시예는 온라인 쇼핑 체크아웃 서식; 대출 신청, 신용 카드 신청, 건강 보험 신청, 대학 입학 신청 또는 취업 지원서; 법적 절차(예를 들어, 이혼 또는 파산)에 필요한 정부 위임 문서; 및 기업 및 기업 소유자를 위해 또는 이에 의해 요구되는 서식과 같은 복잡한 전자 문서 및 온라인 서식을 자동적으로 완성, 업데이트, 및 제출하기 위해 정보를 수집, 조직 및 사용하는 것을 제공한다. 정보는 복수의 상이한 소스로부터 얻어지며, 필드 매핑 및 다른 정보 분류 기술을 통해 분류되어 정보 보관소(information vault)로 알려진 사용자와 관련된 정보의 조직화된 데이터베이스가 구축된다. 이 정보는 하나 이상의 사용자 데이터 저장소 또는 데이터베이스에서 암호화 및 해리(disassociation) 기술을 통해 안전하게 저장되어 정보의 보안을 보장한다. 서식 데이터베이스는 서식이나 문서를 완성하는 데 필요한 필드 정보뿐만 아니라 전자 서식과 문서를 저장하는 데 이용된다. 사용자는 서식 데이터베이스로부터 문서를 선택하거나 또는 웹 브라우저에서 디스플레이되는 온라인 서식을 기입하기 위한 브라우저 플러그인을 이용하여 정보에 액세스하여 온라인 서식이나 전자 문서의 필드에 자동으로 기입할 수 있다. 또한 시스템은 제3자 서비스 및 웹 사이트와 통합되어 사용자 데이터베이스와 보안 연결을 통해 제3자 사이트에 정보를 기입할 수 있으면서 사용자가 출원인의 매우 안전한 데이터베이스에 정보를 보유할 수 있게 한다.
본 명세서에서 설명된 기술은, 서식에 올바른 정보가 기입되는 것을 보장하기 위해 높은 정확도로 분류된, 예를 들어, 식별 정보, 금융 정보, 건강 정보, 연락처 정보, 및 이력 사용자 정보를 포함하는 사용자의 프로필을 사용자 데이터베이스가 구축하기 때문에, 임의의 유형의 컴퓨팅 장치 상의 임의의 유형의 서식을 신속하고 정확하게 완성, 업데이트 및 제출할 수 있는 능력을 제공한다. 사용자는 정보를 다운로드, 전송, 편집 또는 삭제하는 것에 대해 완전한 권한을 보유하며, 동일한 프로세스를 반복하지 않고 한 번만 정보를 입력하고 검증하면 된다.
본 명세서에 설명된 시스템 및 방법은 다양한 유형의 정보 수집, 관리 및 입력(entry)을 위해 개인, 그룹, 개체, 정부 또는 기업에 의해 이용될 수 있다. 개인 사용자는 데스크탑, 태블릿, 스마트 폰 등에서 온라인 서식을 기입하고 서식을 즉시 완성할 수 있다. 일 실시예에서, 시스템은 사용자가 서식 또는 다른 문서를 완성할 수 있게 하는 스마트 폰, 태블릿 또는 다른 휴대용 전자 장치 상에서 실행되는 모바일 애플리케이션으로서 제공될 수 있다. 소형 디스플레이 스크린 및 터치스크린 장치를 사용하여 정보를 입력하는 것이 어려울수록 휴대용 전자 장치로 정보를 쉽게 기입할 수 있는 능력이 특히 유리하다. 기업은 다양한 관할권에 있는 인적 자원 서식, 건물 허가 서식, 엘리베이터 라이센스 서식 등과 같은 서식을 완성하기 위해 정보를 조직하고 저장할 수 있다. 본 명세서에 제공된 예는 주로 개인 사용자를 위해 시스템 및 방법을 사용하는 것과 관련되지만, 장점과 응용은 또한 사용자, 개체, 정부 또는 임의의 크기 및 유형의 기업의 그룹으로 확장된다.
이러한 솔루션은, 사용자가 정보를 한 번 입력하면 이 정보가 정보 보관소에 저장되기 때문에 이후 사용자는 이 정보를 사용하여 정보를 영구적으로 공급하거나 동일한 반복 정보가 필요한 임의의 서식을 완성할 수 있기 때문에 고유하다. 비-제한적인 예로는 건강 관리를 위한 신규 환자 서식, 대학 입학 신청, 장학금 신청, 금융 보조 신청, 대출 신청, 의료 설문지, 취업 지원서, 보험 서식, 법적 신고 또는 소송 문서, 정부 혜택 또는 서비스 요청, 개인 건강 레코드, 전자 상거래 체크아웃 서식, 회원 신청서 등을 포함한다.
도 2는 본 발명의 일 실시예에 따라 정보를 획득하고, 분류하고, 전자 서식에 정보를 기입하기 위한 시스템(100)의 일 실시예를 도시한다. 정보는 기존 서식(102a), 제3자 애플리케이션 인터페이스(102b) 또는 수동 사용자 입력(102c)과 같은 하나 이상의 정보 소스(102a-c)로부터 얻어진다. 그 다음, 정보는 통신 인터페이스(104)로 전송되고, 여기서 정보는 서버(106)에 의해 분류되고, 하나 이상의 데이터 저장 장치, 위치 또는 시스템 데이터 저장소(108)에 사용자 정보의 사용자 프로필로서 저장된다. 통신 인터페이스(104)는 정보 소스(102)와 근거리 네트워크(LAN)에 있거나 인터넷 또는 다른 광역 네트워크(WAN)를 통해 연결되는 것을 통해 정보 소스(102)로부터 원격 위치에 있을 수 있다. 통신 인터페이스(104)는, 정보에 적용 가능한 필드 및 필드 값을 식별하기 위해 정보를 분류하는 분류 유닛(106a); 분류된 정보로 사용자 프로필을 생성하는 프로필 생성 유닛(106b); 및 상기 적어도 하나의 서식 필드와 분류된 정보를 매칭시킴으로써 데이터베이스 또는 전자 서식의 적어도 하나의 서식 필드를 기입하는 정보 기입 유닛(106c)을 포함하여, 수집된 정보를 처리하기 위해 서버(106) 내에 하나 이상의 정보 처리 유닛을 더 포함할 수 있다. 필드 비교 유닛(106d) 및 사용자 활동 수집 유닛(106e)(104)이 더 포함될 수 있으며, 그 기능은 이하에서 더 설명될 것이다. 전술한 유닛(104)들 중 임의의 유닛은 전체 시스템의 설계에 따라 별개의 서버들 내에 위치되거나 또는 단일 서버 내에 위치될 수 있다. 사용자는, 임의의 유형의 장치(110a-c)를 통해, 그 프로필의 정보를 사용하여 하나 이상의 서식(112)이 완성될 것을 요청할 수 있다. 랩탑 컴퓨터(110a), 데스크탑 컴퓨터(110b), 또는 태블릿 또는 스마트폰과 같은 휴대용 전자 장치(110c)를 포함하는 임의의 유형의 장치가 사용자에 의해 사용될 수 있다.
사용자는 장치(110)를 통해 통신 인터페이스(104)와 상호 작용하며 이미지 뷰어(112a), 인터넷 브라우저 애플리케이션(112b)에 디스플레이된 서식, 또는 휴대용 전자 장치(110c) 상에서 실행되는 애플리케이션(112c)을 통해 디스플레이되는 서식과 같은 하나 이상의 서식(112a-c)을 완성할 수 있다. 서식은 또한 HTML5-CSS3을 통해 직접 브라우저 윈도우에 디스플레이되거나 또는 서버(106)와 인터페이스하는 애플리케이션(112c)을 통해 또는 장치(110c) 상에 디스플레이되는 서버(106)에 의해 생성되는 하나 이상의 그래픽 사용자 인터페이스(GUI)(114)를 통해 브라우저 윈도우에 디스플레이될 수 있다. 본 명세서에서 드러나는 바와 같이 서식은 사용자 장치에서 직접 기입되거나 브라우저 확장을 통해, 추가 기능 브라우저 애플리케이션을 통해 기입되거나, 또는 제3자 서비스 또는 애플리케이션과 상호 작용하는 애플리케이션 프로그래밍 인터페이스(application programming interface: API)를 통해 기입될 수 있다.
도 3은 시스템의 일 구성의 보안 프로토콜을 예시하는 시스템 다이어그램을 도시한다. 사용자(116)는 인터넷(118)을 통해 통신 인터페이스(104)와 연결된 전술한 다양한 장치(110)를 통해 시스템에 액세스할 수 있다. 다양한 유형, 위치, 장치, 서버 등이 다양한 방화벽 사이에 분리된 상태로 사용되어 사용자 프로필 정보의 보호를 증가시켜 프라이버시 및 보안을 보장할 수 있다. 사용자는 초기 방화벽(120a)에 의해서도 보호되는 통신 인터페이스(104)의 공개-지향 홈 사이트(104a)로 간주되는 기본 정보를 보여주는 GUI를 초기에 제공받을 수 있다. 초기 방화벽(120a)은 시스템에 대한 전반적인 보안을 제공할 수 있고, 사용자 인터페이스에 대한 액세스 및 이 인터페이스의 경험 레벨(UI/UX)(104b)을 허용할 수 있다. UI/UX(104b)는 서식 및 애플리케이션 출력 데이터 저장소(108a)에 연결된 웹 및 인터페이스 서버(106f)를 포함한다. 제2 방화벽(120b)은 데이터 액세스 계층(104c)으로 알려진 통신 인터페이스의 제3 구획을 보호할 수 있다. 데이터 액세스 계층(104c)은 보안 클라이언트 데이터 요소 및 이력 아카이브 데이터 저장소(108b) 및 매핑된 입력 서식 데이터 저장소(108c)를 관리하도록 구성될 수 있는 데이터 저장소 서버(106h)에 연결된 비즈니스 레벨 로직 애플리케이션 서버(106g)를 포함할 수 있다. 별도의 ID 및 인증 서버(106i)는 또한 보안 클라이언트 ID 요소 데이터 저장소(108d)를 관리할 수 있는 식별 데이터 저장소 서버(106j)에 연결된 데이터 액세스 계층(104c) 내에 둘러싸일 수 있다.
도 4는 정보 기입 유닛(106c)과 같은 데이터 저장소 관리 소프트웨어를 통해 보안 클라이언트 ID 요소 데이터 저장소(108d) 및 보안 클라이언트 데이터 요소 데이터 저장소(108b)에 저장된 정보에 액세스함으로써 서식(404)의 필드(402)를 기입하는 단계의 일 실시예를 도시하며, 여기서 별도의 클라이언트 식별 데이터 저장소 및 클라이언트 정보 데이터 저장소는 전자 서식을 기입하는데 필요한 정보를 얻는 데 사용된다.
본 시스템 및 방법의 세부 사항은 특정 구성 요소 및 특징과 관련하여 본 명세서에서 더 제공된다.
I. 정보 및 서식 수집
정보는 사용자에 대한 완전한 정보 세트를 획득하기 위해 다수의 상이한 소스 및 다수의 상이한 형식으로 획득될 수 있다. 예를 들어, 사용자 정보는 다양한 카테고리(즉, 대출 신청, 온라인 쇼핑, 대학 입학 신청, 이혼 절차 등)에서 많은 서식이 요구하는 정보를 수집하도록 특별히 설계된 "마스터 서식(master form)"을 사용자에 완성하게 하여 얻어질 수 있다. 사용자 정보는 또한 금융 기관 데이터베이스, 전자 건강 레코드, (Mint.com
Figure pct00001
과 같은) 제3자 정보 수집 서비스와 같은 기존 전자 레코드 또는 비-전자 레코드로부터 수집되거나 또는 시스템의 웹 기반 사용자 인터페이스에서 사용자가 간단한 명령을 따르는 것에 의해 수집될 수 있다. 사용자는 관련 정보를 얻을 수 있도록 이러한 기존 전자 레코드들 중 하나 이상의 레코드에 액세스 권한을 허가할 필요가 있을 수 있고, 시스템은 특정 응용 프로그래밍 인터페이스(API)를 이용하여 제3자 사이트와 통신하며 필드 및 내용 정보를 얻을 수 있다. 기존의 전자 레코드의 경우, 정보를 실질적으로 추가적으로 분류할 필요가 없도록 정보는 특정 필드 이름 또는 식별자로 이미 예를 들어 데이터베이스에서 이미 분류되어 있을 가능성이 있으나; 이혼 서류 및 금융 스케줄과 같은 많은 서식이 복잡한 것으로 인해 시스템은 추가 계산을 오버레이하고 서식의 필요한 출력과 일치하도록 분류를 재조직할 수 있다. 비-전자 레코드의 경우 사용자는 비-전자 문서를 스캔하거나 사진으로 찍을 수 있으며, 이미지 처리 및 내용 추출 소프트웨어와 같은 다양한 기술을 통해 필드 및 필드 값을 추출하게 할 수 있다.
일 실시예에서, 정보는 사용자가 수동으로 전자 서식 또는 문서를 완성할 때 얻어질 수 있다. 예를 들어, 도 5에 도시된 바와 같이, 사용자가 인터넷 브라우저 애플리케이션에 디스플레이된 서식(112b)을 완성하면, 애플리케이션은, 서식(112b), 필드(504), 및 필드 내용(506)이 동일한 서식이나 다른 서식에 나중에 사용하기 위해 사용자의 데이터베이스에 캡처, 추출, 조직, 분류 및 업로드될 수 있도록 브라우저 확장(502)을 포함할 수 있다. 브라우저 확장(502)은 필드를 사용자 프로필에 복사하기 위한 복사 버튼(510)뿐만 아니라 사용자 프로필로부터 서식(112b)으로 데이터를 기입하기 위한 필드 기입 버튼(512)을 갖는 팝업 메뉴(508)를 제공할 수 있다. 수많은 페이지에 걸쳐 있는 완전한 서식에 대해서도 정보를 추출하고 기입할 수 있다. 빈 서식 및 문서 및 기타 사용자 정보를 시스템에 직접 업로드할 수도 있고, 여기서 서식, 문서 및 그 필드를 캡처하고 매핑하고 템플릿으로 저장할 수 있다. 예를 들어 신용 카드 애플리케이션 서식을 시스템에 업로드하고 문서 라이브러리 데이터 저장소에 저장하고, 서식 필드를 식별하여 수동으로 또는 자동 매핑 기술을 사용하여 데이터 저장소의 대응하는 사용자 필드에 매핑할 수 있다.
완성된 서식 및 문서는 또한 시스템에 직접 업로드될 수 있으며, 여기서 서식 또는 문서, 필드 및 필드 내용이 캡처 및 추출될 수 있다. 예를 들어 신용 카드 명세서 또는 담보 대출 명세서를 시스템에 업로드할 수 있고, 여기서 필드 및 필드 내용은 사용자 데이터 저장소에 추출되어 저장될 수 있으나, 문서 자체는 서식이 아니기 때문에 문서 자체는 아닐 수 있다. 그러나 신용 카드 신청서나 담보 대출 신청서가 업로드된 경우 사용자 및 다른 사용자가 나중에 서식을 채우는 것을 도와주기 위해 필드와 내용 외에도 문서 자체를 추출하여 저장할 수 있다.
도 6은 시스템에 입력되는 서식으로부터 수집된 필드 정보를 갖는 데이터 저장소 테이블(602)의 일 실시예를 도시한다. 정보는 작업 중인 서식으로부터 서버로 송신되기 때문에 이 정보는 이 테이블에 저장된다. 정보가 서버로부터 "가져와서" 서식에 적용될 때 이 정보는 이 테이블로부터 온다. 서식은 도 1에 도시된 것과 같은 서식일 수 있고, 서식 필드가 이미 입력된 값을 갖도록 사용자에 의해 완성되었을 수 있다. 도 6에 도시된 바와 같이, 서식 상의 각 필드(604)에는 다른 필드와 구별하기 위해 고유한 숫자 식별자(606)(customerFieldDefault_Id)가 제공된다. 오른쪽 두 열에 도시된 바와 같이 각 필드에는 필드 이름(608)(fieldName) 및 필드 값(610)(fieldValue)도 제공된다. 필드 이름은 웹 사이트에 있는 서식으로부터 추출될 수 있는 서식 자체에 인코딩된 이름이거나 또는 오리지널 서식을 만든 프로그래머에 초기하여 이미 필드 이름을 식별한 필드 이름 메타데이터가 있는 전자 서식에 있는 이름일 수 있다. (이용 가능한 경우) 필드 값은 분명히 필드의 내용에 대응한다. 필드 이름과 필드 값(이름-값 쌍이라고도 알려진) 간의 연관은 내용을 분류하고 사용자 프로필을 구축하는 데 중요하다.
도 7은 시스템에 저장된 문서(704)의 목록(list)을 저장하는 문서 라이브러리 테이블(702)을 도시한다. 문서 각각에는 문서 식별자(706)(document_id), 문서 제목(708), 및 연관된 데이터베이스 내 문서로의 경로(710)가 제공된다. 도 8은 도 7의 문서 라이브러리 테이블 내의 각 문서의 필드 이름(804)을 저장하는 데이터베이스 테이블(802)을 도시한다. 각 필드에 디폴트 값을 설정하는 옵션이 있다는 것이 주목된다. 예를 들어, 올해의 세금 서식에는 2013년 디폴트 신고 연도가 있을 수 있다. 공통필드이름(commonFieldName)(806)은 필드이름(fieldName)이 애매하거나 오리지널 서식 디자이너가 잘못 명명한 경우 사람이 읽을 수 있는 버전의 필드이름(804)이다. 공통필드이름(806)은 시스템이 일반적인 고객의 보관소에서 발견되는 필드 이름과 필드를 신속하게 일치시킬 수 있게 한다. 공통필드이름(806)은 사용자 프로필에서 발견되는 필드 이름과 필드를 보다 신뢰성 있고 결정론적으로 매핑하는 것을 제공한다.
고유한 필드 이름 및 값은 나중에 사용하기 위해 시스템에 저장되고 조직된다. 도 10a 및 도 10b는 필드 값이 고유한 33 디지트 코드가 될 것을 요구하는, "청구(billing)" 구획(1006)에서 고유한 청구 코드 필드(1004)를 갖는 온라인 서식(1002)을 도시한다. 사용자가 시스템에 코드를 이전에 입력하지 않은 경우(특정 서식을 위한 고유한 코드인 경우는 거의 발생하지 않음), 사용자는 도 10b에 도시된 바와 같이, 처음으로 서식(1002)을 완성할 때 필드(1004)에 필드 값(1008)을 수동으로 입력할 것을 요구받을 수 있다. 시스템은 필드(1004)에 있는 정보(및 이 필드에서 사용자에 의해 입력된 값(1008))를 시스템으로 가져와서 이를 도 11의 테이블로 도시된 데이터베이스 테이블(1100)로 나열한다. 도 11에 도시된 바와 같이, 이 필드에 대해 생성된 2개의 입력, 즉 필드 이름(1102)(디지트)에 대응하는 입력 및 필드 값(1104)(33 디지트 수)에 대응하는 입력이 있다. 일 실시예에서, 필드 옆에 있는 무선(radio) 버튼을 필드 및 필드 값과 연관시키기 위해 추가적인 라인 입력(도시되지 않음)이 생성된다. 이것은, 시스템이 필드 값을 채울 때 무선 버튼을 활성화/선택하는 것을 알기 때문에 서식을 나중에 기입하게 될 때 유용하다.
또 다른 실시예에서, 제3자 서비스 및 웹 사이트는 필드 이름 및 다른 문서 또는 서식-식별 정보와 같은, 시스템에 저장하기 위해 자기 자신의 사이트 상에서 호스트되는 서식들 및 문서들에 관한 정보를 제공할 수 있다. 따라서 사용자가 제3자 서비스를 사용하고 있으며 제3자 서비스의 서식 또는 문서를 완성할 필요가 있는 경우 사용자는 제3자 사이트에서 서식 또는 문서에 기입하기 위해 제3자 서비스가 사용자 데이터 저장소로부터 사용자 정보를 얻을 것을 요청할 수 있다. 제3자 서비스는 웹 사이트 또는 애플리케이션에서 맞춤 서식이나 문서를 유지할 수 있으며, 사용자는 서식이나 문서에 기입된 내용이 제3자 서비스가 필드 정보를 시스템에 제공하였으므로 각 필드에 필요한 내용에 정확히 대응하는 것을 보장할 수 있다. 추가적으로, 정보는 제3자 서비스의 데이터 저장소가 아닌 시스템 데이터 저장소에 저장되어서 제3자 서비스나 사이트로부터 정보가 도용될 가능성이 줄어들기 때문에 사용자에 추가적인 정보 보안이 제공된다.
또 다른 실시예에서, 제3자 서비스는 애플리케이션 또는 제3자 서버에 저장된 정보가 시스템과 공유되고 서식 및 다른 문서를 완성하는데 사용되도록 자신의 웹 사이트 또는 애플리케이션 내에 구현된 시스템을 통합할 수 있다. 유사하게, 통합을 통해 제3자 사이트에서 서식이나 문서를 완성하기 위해 제3자 사이트 또는 애플리케이션과 사용자 정보를 공유할 수 있다.
이 기술 분야에 통상의 지식을 가진 자에게는 명백한 바와 같이, 다른 정보 소스가 사용되거나 고려될 수 있다. 아래에서 더 설명되는 바와 같이, 정보 소스는 다양한 소스로부터 사용자의 정보를 수집하고, 필드를 기입하거나 임의의 유형 및 임의의 서식의 정보를 보충하는 데 사용될 수 있는 정보의 조직화된 목록으로 정보를 컴파일함으로써 각 사용자의 프로필을 구축하는 데 사용된다.
II. 정보 조직 및 저장
위에서 논의된 다양한 정보 소스로부터 얻어진 정보는 이상적으로는 사용자의 금융, 연락처 정보, 건강 정보 및 이력 정보에 대한 포괄적인 정보를 포함하는 개별 사용자의 사용자 프로필을 구축하는데 사용된다. 사용자 프로필은 사용자 이름, 생년월일, 나이, 현재 및 과거 주소, 전화 번호, 전자 메일 주소, 사회 보장 번호 또는 정부 식별 번호, 고용 정보(현재 및 과거), 급여, 신장, 체중, 인종, 은행 계좌 번호, 계좌 잔고, 사용자 이름, 패스워드, 교육 정보, 건강 위험, 알레르기, 약물 등을 포함할 수 있다. 이 목록은 결코 전부 다 나열한 것이 아니다. 사용자 프로필은 비상 시에 연락할 사람의 이름과 전화 번호, 성 이름 및 관계, 서비스 제공자 연락처 정보 및 메모, 비즈니스 연락처 정보, 비즈니스 전망, CRM 등과 같이 사용자와 직접 관련이 없는 정보를 더 포함할 수 있다. 사용자 프로필은 저장될 정보나 날짜에 선택된 다른 메타데이터를 저장할 수도 있다.
시스템에 액세스하는 것은 데스크탑 또는 랩탑과 같은 컴퓨팅 장치에서 실행되는 소프트웨어를 통해 또는 태블릿 또는 스마트 폰과 같은 휴대용 전자 장치에서 실행되는 애플리케이션을 통해 애플리케이션 인터페이스에 의해 제공될 수 있다. 추가적으로, 시스템은 예를 들어 클라우드 기반 네트워크의 보안 서버 설비에 모든 사용자 정보가 안전하게 저장되는 웹 기반 애플리케이션 인터페이스를 통해 액세스 가능할 수 있다.
일 실시예에서, 정보는 데이터 저장소 위치들 중 하나의 데이터 저장소 위치에 해킹이 일어날 위험을 최소화함으로써 강화된 보안을 제공하기 위해 고의로 분리된 적어도 2개 또는 3개의 별개의 데이터 저장소 위치에 저장될 수 있다. 데이터 저장소는, 예를 들어, 서식 및 문서 템플릿, 필드 정보 및 다른 서식 특성을 저장하는 문서 라이브러리 데이터 저장소; 예를 들어, 각각의 특정 사용자에 대한 필드 및 필드 값을 포함하는 정보를 저장하는 고객 개인 보관소 데이터 저장소; 예를 들어 (보안 목적을 위해 다른 정보와는 별도로) 사용자의 신원과 관련된 정보를 저장하는 사용자 신원 데이터 저장소; 및 완성된 필드 및 값으로 이전에 완성된 서식을 저장하는 고객 주문 및 완성된 문서 데이터 저장소로 분할될 수 있다.
바로 아래에서 설명되는 바와 같이, 정보는 서식의 적절한 필드에 정확하게 기입되거나 보충될 수 있도록 별개의 카테고리로 분류될 가능성이 있다. 나아가, 또한 아래에서 설명된 바와 같이 정보가 도난되지 않도록 또는 도난당한 경우에도 사용 가능하지 않도록 전문 전용 암호화 및 저장 기술을 통해 이러한 개인 정보의 재산이 도난될 위험을 줄일 수 있다.
필드 매핑
서식 내 어느 필드에 어느 정보가 속하는지를 식별하는 것은 서식을 기입하는데 가장 어려운 도전 중 하나이다. 많은 정보 필드는 이 특정 필드에 속하는 값을 쉽고 용이하게 식별할 수 있는 이름을 포함하지만, 일부 이름은 애매하게 명명되고, 일부 필드는 서로 다른 서식들 간에 약간 다른 이름을 갖고 있고, 일부 필드는 동일한 문서 내에서 동일한 이름을 갖고 있고, 일부 필드는 동일한 필드와 연관된 다수의 값을 갖는다.
이하 필드 매핑 기술을 구동할 때 정보를 채울 필요가 있는 적어도 3가지 기본 상황이 있다. 제1 상황에서, 문서 라이브러리는 사용자의 작업 영역에 복사하여 필요 시에 채울 수 있는 표준 문서 템플릿을 저장한다. 이 경우 문서 라이브러리는 문서에 채울 수 있는 필드와 가능한 디폴트 값을 "필드(Fields)" 테이블에 저장한다. 제2 상황에서는 각 사용자에게 고유한 필드와 값이 적용되어 공백 문서에 매핑된다. 이 고유한 사용자 정보 세트는 시간이 지남에 따라 큰 정보 보관소로 성장할 것이다. 제3 상황에서는 문서에 할당된 실제 필드와 값이 사용자에 의해 채워지고 저장되어 값이 완성된 문서에 잠기도록 한다. 이러한 문제를 해결하기 위한 몇 가지 기술은 아래에 설명된다.
제1 해결책은 문서의 필드를 스캐닝하고 "가장 적합한(best-fit)" 필드 이름에 대한 연관 및 추론을 포함한다. 일 실시예에서, 이것은 서식 라벨을 페이지 상의 필드 박스와 연관시키는 웹 사이트 필드 코드의 "~을 위한(for)" 속성을 이용함으로써 완성된다. 예를 들어 애매한 이름인 "box00455x"를 갖는 필드 상자는 "~을 위한 라벨(label for)"=제1 이름(firstname)"으로 인코딩되어 불분명한 이름과 필드를 "제1 이름(first name)"을 위한 라벨과 연관시킬 수 있다.
동일하거나 유사한 필드 이름을 갖는 문서 또는 서식에 다수의 필드가 있는 경우, 각 필드가 보이는 문서의 구획은 각 필드의 값이 상이해야 하는지를 식별하는 데 사용될 수 있다. 따라서 시스템 데이터 저장소는 "필드 구획(field section)" 입력을 각 필드를 위한 데이터 저장소에 카테고리로서 저장할 수 있어서, 동일한 이름을 갖는 필드들은 이들이 있는 구획이 어느 구획인지에 따라 명확해질 수 있다.
일부 경우에, 필드 이름은 완전히 랜덤할 수 있으며, 이것이 다른 필드 또는 특정 필드 값에 매핑되는 방식에 대한 지시를 제공하지 않을 수 있다. 필드 이름은 컴퓨터 및 특수 숫자 또는 문자 키 코드로 특정 코드를 판독하는 다른 시스템용으로 코딩될 수 있다. 예를 들어 "제1 이름" 필드는 "fn0045586"으로 명명될 수 있다. 문서 라이브러리에 저장된 PDF 문서의 경우 추가적인 "도움말(helper)" 속성이 "공통필드이름(commonFieldName)"이라고 불리우는 필드 레코드에 추가될 수 있다. 문서가 입력될 때, 잘못 명명된 필드는 쉽게 매핑되는 것으로 수동으로 변환될 수 있다. 이 "제1 이름" 예의 경우 시스템은 필드이름 레코드를 "fn0045586"으로 레코드하고 "공통필드이름"을 "제1 이름"으로 레코드할 수 있다. 사용자가 이 문서를 선택할 때 출원인의 스마트 기술이 공통필드이름을 인식하고 이를 "제1 이름"과 가장 일치하는 사용자의 필드 이름 중 하나의 필드 이름으로 쉽게 매핑한다.
사용자가 동일한 필드 이름과 연관된 다수의 값을 갖는 경우, 시스템은 사용자가 특정 필드에 입력할 값을 선택할 수 있는 드롭다운 메뉴 또는 다른 선택 방법을 제공하도록 구성될 수 있다. 대안적인 실시예에서, 이 필드는 가장 최근에 사용된 값 또는 가장 빈번히 사용된 값으로 채워진다.
또 다른 실시예에서, 상이한 서식은 동일한 사용자 필드 이름을 지칭하는 상이한 방식을 가질 수 있다. 하나의 문서는 하나의 방식으로 필드를 명명할 수 있는 반면, 다른 문서는 동일한 필드를 다른 방식으로 명명할 수 있다. 예를 들어, 제1 문서는 "제1 이름"이라고 불리우는 필드를 가질 수 있는 반면, 제2 문서는 "fname"이라는 필드를 가질 수 있지만, 제3 문서는 "제1이름"이라고 불리우는 필드를 갖고, 이들 필드 모두는 동일한 필드를 참조하고 동일한 값 또는 내용을 포함해야 한다. 이러한 연관이 가능하기 위해 시스템 데이터 저장소의 사용자 필드디폴트(FieldDefault) 테이블은 동의어인 다양한 필드 이름을 나열하는 "사용자 필드콜렉션(userFieldCollection)" 레코드를 갖는다.
예를 들어, 시간이 지남에 따라 데이터 저장소에 저장된 다수의 필드가 각각 동일한 값을 포함하는 일이 있을 수 있다. 예를 들어, 이 3개의 "제1 이름" 필드 각각은 모두 "아서(Arthur)" 값을 갖는다고 가정한다. 도 2의 필드 비교 유닛(106d)에 의해 실행되는 배경 프로세스는 데이터 저장소에서"아서" 값을 가진 다른 필드를 주기적으로 스캔하고 "사용자필드콜렉션" 테이블 내의 해당 필드들을 중복된 것으로 식별할 수 있다. 이 테이블은 공통 내용에 기초하여 동의어인 다양한 필드 이름을 캡처한다. 이들 필드 중 임의의 필드가 후속 서식에서 발견되면 적절한 "아서" 값이 사용된다.
제2 접근법에서, 시스템은 공통으로 그룹화된 필드 값으로 "사용자필드콜렉션" 테이블을 미리 설정할 수 있다. 예를 들어 "제1이름"이라고 불리우는 필드가 처음에 발견되면 "제1이름" 및 "제1 이름"이 테이블에 저장된다. "제1 이름"이라고 불리우는 후속 필드가 나타날 때 그 값은 이미 저장되어 "사용자필드콜렉션" 테이블을 통해 쉽게 찾아질 수 있다.
하나의 예에서, 공통적으로 라벨이 붙은 필드 이름, 예를 들어, "나의제1이름(myFirstName)"으로 명명된 필드 이름 및 "고객의제1이름(customerFirstName)"으로 명령된 다른 필드(다른 서식일 가능성이 있음)가 있을 때 문제가 발생한다. 이러한 필드 이름이 동일한 정보(사용자의 제1 이름)에 명확히 대응하기 때문에 "나의제1이름"을 "고객의제1이름"에 매핑하기 위해 기계 학습 분류 라이브러리를 적용하여 다른 사용자로부터 기존 매핑된 필드로부터 학습하고 나서 사용자 필드와 문서 필드 사이에 추천된 매핑을 할당할 수 있다.
신원 해리
사용자의 정보를 잠재적인 도난 및 오용으로부터 보호하기 위해, 시스템은 사용자의 식별 가능한 정보를 다른 정보로부터 해리시킨다. 예를 들어, 사용자 이름, 사회 보장 번호, 생일, 고용주 식별자 등은 신용 카드 번호, 은행 계좌, 교육, 등급(grade) 등과 같은 사용자의 다른 정보와는 별도의 데이터 저장소에 저장된다. 식별 가능한 정보는 각 신원 정보 필드가 데이터 저장소 내 자기 자신의 섬(island)에 효과적으로 저장되도록 동일한 사용자의 다른 식별 가능한 정보에 어떠한 논리적 연결도 없이 추가로 저장된다. 사용자 정보의 각 항목은 개별적으로 더 암호화되고 나서, 테이블의 임의의 색인, 조직 또는 그룹화 없이 다른 정보와 함께 익명으로 테이블에 저장되어, 테이블이 독자적으로 사용자에 대한 유용한 정보를 제공할 수 없게 한다.
암호화된 정보는 키로만 복호화될 수 있고, 선택적으로 일부 경우에는, 키는 다른 항목들을 잠금 해제하는데 오용될 수 없도록 각각의 별도의 정보 항목에 대해 키가 개별적으로 생성된다. 키는 별도의 데이터 저장소에 저장되며, 사용자가 올바른 패스워드로 로그인한 경우에만 키가 얻어질 수 있다. 따라서, 사용자의 신원을 구성하는 정보를 해리시킴으로써, 단순히 데이터베이스 및 내부에 나열된 테이블에 액세스하여 신원 도용을 수행하기에 충분한 사용자 정보를 결정하는 것은 불가능하다. 일례로서, 독자적으로 및 다른 정보(예를 들어, 사용자의 이름)와는 별도로 저장된 사용자의 사회 보장 번호(SSN)는 신원 도용을 영속하는 데에는 유용하지 않다. SSN이 인식할 수 없는 일련의 문자와 숫자로 더 암호화되면 시스템은 데이터 저장소에 저장된 정보를 안전하게 보호하는 두 가지 높은 보호 방법을 제공한다. 일 실시예에서, 3개의 별도의 데이터 저장소 위치가 정보를 얻는데 사용되며, 각각의 위치는 별도의 방화벽 뒤에 있을 수 있는 별도의 서버를 사용하여 네트워크에 연결될 수 있다. 제1 데이터 저장소는 사용자의 사용자 이름과 패스워드를 저장하도록 구성할 수 있다. 사용자 이름과 패스워드를 입력하는 것이 성공적이면 비밀 키가 생성되고 이 비밀 키는 제2 위치에 공급되고 제2 위치는 각 사용자의 비밀 키를 저장하는 용도로만 사용된다. 제3 위치는 실제 정보를 유지할 수 있으며 정보의 섬을 재-연관시키기 위해 암호화된 매핑을 통해 읽기 위해 제2 위치로부터 비밀 키로 잠금 해제되어야 한다.
자동 사용자 프로필 업데이트
이러한 유형의 해리, 즉 다수의 조각으로 날짜를 분해하는 것은 전술된 바와 같이 정보의 각 조각에 대해서도 발생할 수 있다. 다시 말해, 각 정보 조각은 다른 서브 조각과의 논리적 연결 없이 서브 조각들로 분할될 수 있고, 여기서 각 서브 조각은 고유한 키로 별도로 암호화되거나 별도의 위치에 저장된다. 시스템은 일 실시예에서, 사용자로부터의 특정 지시를 요구하지 않고 임의의 입력된 정보를 자동으로 분류하고 사용자의 프로필에 저장하도록 구성될 수 있다. 추가적으로 사용자의 정상적인 활동 동안 사용자 정보는 계속 획득되므로 새로이 입력된 정보는 기존 정보를 업데이트하는 작용을 하거나 또는 사용자가 서식을 채울 때 선택할 수 있는 동일한 정보 필드에 대한 값 목록에 추가될 수 있다.
사용자의 정보는 개인 정보 보관소로서 알려진 자기 자신의 데이터 저장소 위치에 저장될 수 있고, "고객필드디폴트(customerFieldDefault)"라고 불리우는 테이블 내에 저장될 수 있다. 고객필드디폴트 테이블은 대개 사용자에 대한 가장 현재의 정보를 포함할 수 있다.
사용자 정보 도출
일 실시예에서, 기존의 사용자 프로필 데이터는 추가적인 관련 정보를 도출하기 위해 분석될 수 있다. 추가적인 관련 정보는 기존 데이터를 비교하거나 계산하는 것에 의해, 예를 들어, 금융 데이터를 분석하여 정기 소득과 지출 예산을 결정하는 것에 의해 도출될 수 있다. 또한 추가적인 관련 정보는 사용자 프로필의 특정 측면에 대한 보다 완전한 그림을 사용자에게 제공하기 위해 외부 소스로부터 도출될 수 있다. 예를 들어 사용자가 차량 연도, 제조업체 및 모델을 포함하는 사용자 프로필에 자산 목록을 입력하면 시스템은 외부 데이터 저장소 또는 제3자 서비스로부터 차량의 예상 값을 얻을 수 있다. 다른 예로서, 사용자가 수집 가능한 예술 작품(artwork)의 제목을 입력하면, 시스템은 아티스트, 제작 연도 및 추정된 값과 같은 이 작품에 대한 추가적인 정보를 획득할 수 있다. 이 정보는 분실이 발생할 경우 이 물품의 보험금 신청서나 보험금 지급 청구서를 채우는데 사용될 수 있다.
사용자 정보 분석
일 실시예에서, 도 2의 사용자 활동 수집 유닛(106e)은 시스템을 사용할 때 사용자 활동(예를 들어, 정보 입력, 채워진 서식 등)을 모니터링하고, 활동 및 정보에 기초하여 미리 결정된 설명 코드를 생성, 수집하고, 별도의 데이터 저장소 위치에 저장한다. 코드는 사용자의 현재 생활 상태, 인구 통계 프로필, 선호도, 금융 잔액, 및 사용자 계정과 연관되지만 특정 정보를 수집, 공개 또는 손상시키지 않는 기타 파라미터에 대응할 수 있다. 이 코드는 이후 제3자 제품 및 서비스 제공을 이 사용자에 홍보하기 위한 타깃 마케팅 및 기타 전략을 결정하는 데 사용되며, 이는 이러한 제품 또는 서비스에 대한 필요와 욕구를 효과적으로 더 잘 타깃화할 수 있다. 코드는 또한 서식의 유형, 기타 관련 서식의 사용 등과 관련된 인자에 기초하여 사용자에게 코드가 적용될 가능성과 관련된 신뢰도 값을 가질 수 있다.
예를 들어, 대학 입학 신청서를 완성한 사용자는 사용자가 대학에 입학할 가능성에 관한 코드를 생성할 수 있으며, 이는 대학 관련 제품 또는 서비스를 사용자에게 판매할 기회를 제공할 수 있다. 사용자가 대학 입학 신청서 및 금융 보조 신청서를 완성하면 사용자가 대학에 입학하려고 하는 것을 나타내는 코드와 관련된 신뢰도 값이 더 높이 점프할 수 있다. 이것은 대학을 위한 광고와 같이 그 생활 상태에 타깃화된 그래픽 사용자 인터페이스에서 사용자에게 광고를 제공하는 데 사용될 수 있다.
기입된 정보의 아카이빙
사용자가 정보를 서식에 기입할 때마다, 시스템은 고객필드내용(customerFieldContent)으로 알려진 특정 데이터 저장소 위치 테이블 내에 서식의 최종 버전에 대한 참조를 저장할 수 있다. 특히 서식 전체가 단일 데이터 저장소 위치에 저장되는 것은 아니다. 오히려 서식이나 레코드 로케이터에 대한 참조가 저장된다. 사용자가 이전에 완성된 서식에 특별히 액세스하여 서식 자체를 편집하고 새로운 버전을 완성하지 않는 한, 서식에 저장된 정보는 잠겨져서 다른 사용자 정보가 업데이트될 때 업데이트되지 않는다. 저장된 완성된 서식은 시스템 내에서 사용자 활동의 완전한 아카이브를 완성하기 위해 시간과 날짜가 스탬핑될 수 있다.
공유된 가족 정보 및 그룹 계획/회사 계획 정보
일 실시예에서, 사용자 정보는 공유될 프로필의 일부를 좋아할 수 있는 다른 관련 당사자와 공유될 수 있다. 예를 들어, 배우자, 자녀, 부모, 형제자매 및 기타 가족 구성원은 항목들 중 하나의 항목이 변경되면 보편적으로 업데이트될 수 있는 주소, 전화 번호, 가족 이력 등과 같은 유사한 정보를 공유할 수 있다. 이것은 가족 구성원들 간에 반복적인 정보 입력을 피하고, 공유 정보에 대한 전체적인 업데이트를 허용하고, 가족 구성원이 연방 학생 보조 무료 신청서(Free Application for Federal Student Aid: FAFSA)와 같은 신청서에 협력할 수 있게 해준다. FAFSA 신청서는 학생이 완성해야 할 특정 구획과 부모가 완성할 필요가 있는 기타 구획을 갖는다. 또 다른 예는 대학에 입학 신청을 하는 아이들이 다른 형제자매가 형제자매의 사용자 프로필에 이미 입력한 공유 가족 정보, 예를 들어, 주소, 부모 이름, 직업 등과 같은 정보에 액세스할 수 있다는 것이다. 또한 가족이 이사하면 하나의 가족 구성원에 의해 이루어진 집 주소의 업데이트는 이전에 나열된 동일한 집 주소를 가졌던 동일한 그룹의 다른 가족 구성원들에게도 업데이트되거나 업데이트를 위해 제공될 수 있다. 유사하게, 회사의 여러 직원이 회사의 정부 또는 기타 서류 또는 보고서를 완성하기 위해 협력할 수 있고; 또 다른 예에서 하나의 가족 세대의 건강 레코드 데이터베이스는 잠재적인 유전 건강 정보에 관한 정보를 제2 세대에 제공하기 위해 제2 세대로 전송될 수 있다.
가족 또는 회사 공유 옵션을 실행하기 위해, 각 가족/회사 구성원으로부터의 정보는 데이터베이스의 별도의 보관소에 저장될 수 있고, 데이터베이스는 가족/회사 구성원 간의 공통 정보 사이의 링크를 형성하여 각 구성원이 별도의 정보의 프라이버시를 유지할 수 있게 할 수 있다.
III. 전자 서식 기입
저장된 서식의 선택
사용자가 서식 또는 문서를 완성할 준비가 되면, 사용자는 몇 가지 방법 중 하나의 방법을 선택할 수 있다. 서식 또는 문서가 시스템 서버의 서식 데이터베이스에 저장된 경우, 사용자는 도 9a 및 도 9b에서 웹 기반 애플리케이션 인터페이스(900)의 첨부된 그래픽 사용자 인터페이스에 도시된 바와 같이 문서 카테고리(902) 또는 특정 문서(904)의 목록으로부터 서식을 선택할 수 있다. 또한 사용자는 서치 도구를 사용하여 서식을 서치하거나 또는 카테고리(902)를 통해 브라우징하여 서식 유형(금융, 학술, 건강 관리 등)에 기초하여 서식을 찾을 수 있다.
애플리케이션 확장
일 실시예에서, 도 5의 브라우저 확장 드롭다운 메뉴의 그래픽 사용자 인터페이스의 첨부된 도면에 도시된 바와 같이, 애플리케이션 윈도우에서 보이는 서식을 채우는데 빠른 액세스를 하기 위해 애플리케이션 확장이 제공된다. 확장은 애플리케이션 메뉴 또는 다른 곳에서 아이콘, 메뉴 항목, 보충 또는 다른 방식으로 디스플레이될 수 있으며, 아이콘을 선택할 때 사용자 프로필의 정보를 애플리케이션 윈도우에 디스플레이된 필드에 채우는 옵션이 있는 윈도우가 열린다. 애플리케이션은 인터넷 브라우저, 워드 프로세서, 이미지 뷰어, 스프레드시트 또는 프리젠테이션 소프트웨어일 수 있지만, 이들 예는 본 명세서의 모든 예 및 실시예로서 이것으로 제한되지 않는다.
또 다른 실시예에서, 상기 I절에서 논의된 바와 같이, 애플리케이션 확장은 또한 애플리케이션 윈도우에 디스플레이되는 서식, 문서 또는 웹 페이지로부터 정보를 추출하거나 이를 보충하기 위해 사용될 수 있다. 이 추출된 정보는 사용자의 개인 정보 데이터베이스에 업로드될 수 있다.
또 다른 실시예에서, 애플리케이션 확장은 또한 링크드인(LinkedIn)TM, 페이스북(Facebook)TM 또는 질로우(Zillow)TM 웹 사이트에서와 같은 제3자 웹 사이트를 보는 동안 시스템에 의해 인식되는 서식-필드와 관련된, 사용자 저장된 연락처, CRM, 및/또는 연락처 관련 정보를 디스플레이하고 이를 수정하는데 사용될 수 있다. 이 실시예의 일례에서, 사용자에게는 자신의 링크드인TM 연락처들 중 하나를 보면서 팝업 또는 드롭다운 창이 제시되며, 이에 의해 링크드인TM 또는 링크드인TM의 다른 사용자와 정보를 공유할 필요 없이 이 특정 연락처에 관한 고유하고 개인적인 정보를 보거나, 수정하거나, 또는 자신의 개인용 사용자 데이터베이스에 직접 추가할 수 있다. 본질적으로 사용자는 이 연락처의 사용자 개인 메모로 링크드인 정보를 보강하고, 이 정보를 개인용으로 정보 데이터베이스에 안전하게 저장한다. 다른 예에서, 부동산 비즈니스를 운영하는 것으로 한정된 사용자에게는 질로우닷컴(Zillow.com)TM의 특정 목록을 보면서 팝업 또는 드롭다운 창이 제공되며, 이에 의해 이 특정 특성에 관한 고유하고 개인적인 정보를 보거나 수정하거나 자신의 개인 사용자 데이터베이스에 다시 직접 추가할 수 있다. 이를 통해 부동산 비즈니스 사용자는 비즈니스에서 더욱 효과적일 수 있는 유용한 비즈니스 정보(예를 들어, 특정 특성이 표시된 클라이언트 목록, 상세 목록, 스케줄 제시 등)를 수집할 수 있다.
제3자 애플리케이션 통합
제3자 서비스 제공자는 또한 휴대용 전자 장치 상에서 실행되는 웹 기반 애플리케이션 또는 모바일 애플리케이션과 같은 자기 자신의 애플리케이션에서 시스템에 액세스하는 것을 통합할 수 있다. 예를 들어, 학술 기관에서 운영하는 웹 사이트는 시스템에 대한 액세스를 입학 신청용 신청서에 통합하여, 입학 신청을 로드할 때 사용자는 로그인하고 나서 정보에 액세스하여 웹 사이트를 통해 입학 신청서를 직접 채울 수 있도록 할 수 있다. 또한 인터넷 쇼핑 웹 사이트는 시스템 데이터베이스에 대한 액세스를 통합하여, 사용자가 웹 사이트에서 상품 또는 서비스를 체크아웃하고 구매할 준비가 되면, 버튼, 링크 또는 인증 대화 상자를 통해 사용자가 지불 스크린에 정보를 선택하고 기입할 수 있도록 할 수 있다.
제3자 애플리케이션과 통합하는 것은 사용자에게 추가적인 보안을 제공할 수 있는데, 이는 제3자 서비스 제공자가 사용자의 정보를 보거나 저장할 수 없고, 대신에 체크아웃 시에만 시스템 데이터베이스로부터 정보를 요구하고 나서 거래가 완료되면 정보를 삭제할 수 있도록 구성될 수 있기 때문이다.
애플리케이션은 독립형 제품으로서 또는 웹 기반 제품 및 서비스로서 제공될 수 있다. 일 실시예에서, 애플리케이션은 PDF 기입기(filler) 애플리케이션으로서 제공될 수 있고 여기서 애플리케이션은 PDF(portable document format) 문서에 정보를 채우기 위해 동작한다. 이전에 설명한 바와 같이 PDF 기입기는 웹 기반 애플리케이션이거나 또는 브라우저 확장으로서 통합될 수 있다. 애플리케이션은 온라인에서 찾은 서식 및 문서를 완성하도록 설계된 웹 기반 서식 기입기로 제공될 수도 있다. 추가적으로 이 시스템은 사용자가 서식이나 기타 문서를 완성할 수 있게 하는 스마트 폰, 태블릿 또는 기타 휴대용 전자 장치에서 실행되는 모바일 애플리케이션으로서 제공될 수 있다. 소형 디스플레이 스크린 및 터치스크린 장치를 사용하여 정보를 입력하는 것이 어려울수록 휴대용 전자 장치로 정보를 쉽게 채울 수 있는 능력이 특히 유리하다. 예를 들어, 모바일 장치를 사용하여 구매를 하는 사용자는 종종 작은 스크린에 모든 연락처 정보와 지불 정보를 (이를 기억하는 것 외에) 입력하는 것을 어려워한다. 이러한 전자 상거래 서식 필드를 즉시 완성하는 능력은 모바일 사용자에게 특히 유리할 것이다. 또 다른 예에서, 긴급 진료 또는 응급실 시설을 방문하는 사용자는 여러 서식을 채울 것을 요구받을 수 있으며, 대신에 서식에 액세스하고 본 발명의 시스템을 이용하여 서식 필드를 채우고 온라인으로 서식을 제출하는 웹 사이트를 제공받을 수 있다. 모바일 기반 애플리케이션은 독립형이거나 다른 모바일 애플리케이션 또는 기본 장치 애플리케이션에 통합될 수 있다. 예를 들어, 일 실시예에서, 시스템은 휴대용 전자 장치의 카메라와 통합되어, 사용자가 빈 서식 또는 문서의 사진을 찍을 수 있고, 완성된 문서를 전송하기 전에 시스템을 이용하여 서식 필드를 채울 수 있다.
또 다른 실시예에서, 제3자 애플리케이션은 시스템 및 사용자 프로필과 통합되어 사용자가 제3자 사용자 프로필 내 필드를 갖는 서식을 볼 필요 없이 사용자 프로필 데이터를 시스템으로부터 제3자 사용자 프로필로 부분 전송하거나 또는 전체 전송하는 것을 제공할 수 있다. 예를 들어, 소셜 미디어 서비스 또는 전자 상거래 서비스와 같은 제3자 서비스에 가입하는 사용자는 시스템에서 생성된 사용자 프로필을 제3자 애플리케이션 및 해당 서버 및 데이터베이스로 전송할 것을 요청함으로써 사용자 프로필을 간단히 완성하도록 요구받을 수 있다. 사용자는 사용자 프로필에 해당하는 웹 기반 서식을 보지 않고도 모든 사용자 프로필 정보를 제3자 사용자 프로필로 즉시 전송하는 옵션을 선택하기만 하면 된다. 즉시 전송하는 것은 제3자 애플리케이션에서 서버에 필드 이름 목록을 보내고 서버가 데이터베이스 테이블에 액세스하여 사용자 프로필에 저장된 일치하는 필드 이름에 해당하는 값 또는 값들을 식별하는 것에 의해 완성될 수 있다. 일치하는 필드 값은 제3자 사용자 프로필을 완성하기 위해 제3자 애플리케이션 서버 및 데이터베이스로 다시 전송될 수 있다.
선택 사용자 프로필 정보를 다른 서식, 데이터베이스, 장치 또는 목적지에 자동으로 전송하는 추가적인 방법이 제공될 수 있으며, 정보가 채워지거나 다른 위치로 전송될 때 사용자가 수동으로 서식 필드와 내용을 검토할 필요를 제거할 수 있다.
서식 완성 지시자(form completion indicator)
일 실시예에서, 사용자에게는 사용자 프로필 내의 정보로부터 채워질 수 있는 서식이 얼마나 많은지를 나타내는 서식 완성 지시자가 제공될 수 있다. 서식 완성 지시자는 사용자가 선택할 수 있는 가능한 서식 목록과 함께 디스플레이되어 사용자가 서식 완성 지시자에 기초하여 채우기에 가장 쉬운 서식을 결정할 수 있게 할 수 있다. 이 지시자는 사용자 프로필에 저장된 정보로부터 채워지는 서식의 필드 백분율을 나타내는 기호, 색상 또는 심지어 단지 수치 값일 수도 있다. 서식 완성 지시자는 실시간으로 업데이트되어 사용자가 서식 데이터베이스로부터 서식을 선택하거나 자동으로 채우기 가장 쉽고 수동 입력이 거의 없는 온라인 웹 서식을 선택하는 것을 도와줄 수 있다. 완성 지시자는 또한 제공된 카테고리에서 얼마나 많은 부분이 매핑되었는지 또는 채워지지 않은 필드를 완성하는 데 얼마나 많은 작업이 필요한지를 나타내는 지시자를 사용자에게 제공할 수 있다.
수동 입력 인터페이스
시스템이 정보를 갖는 임의의 필드를 채울 수 있지만, 특정 필드는 값을 가질 수 없거나 다수의 값을 가질 수 있으며, 이 경우 필드는 자동적으로 채워지지 않을 수 있다. 이 경우 필드를 채우려면 사용자가 일부 조치를 취해야 한다. 서식 필드를 채우기 위한 일 실시예는 음성, 터치, 제스처 또는 입력 장치 또는 이들 3개 중 임의의 것의 조합에 의해 보조될 수 있다. 음성 및 터치 입력을 통해 서식에 입력되는 임의의 정보를 수동으로 타이핑할 필요가 없다. 음성 입력은 컴퓨팅 장치의 마이크를 통해 이용될 수 있는 반면, 터치 및 제스처 입력은 터치스크린, 터치패드, 이미지 캡처 장치 또는 모션 캡처 장치를 통해 구현될 수 있다. 입력 장치는 컴퓨팅 장치와 연결된 마우스, 스타일러스 또는 다른 주변 장치를 포함하며, 이에 의해 그래픽 사용자 인터페이스 상에서 선택이 가능할 수 있다.
일 실시예에서, 필드 값을 수동으로 입력하는 것은 팝업 또는 드롭다운 메뉴와 같은 별도의 창을 디스플레이하고 사용자가 말하거나 터치하거나 입력 장치로선택할 수 있는 값을 나타내는 옵션을 디스플레이하여 완성될 수 있다. 상호 작용하는 것은 터치스크린의 필드를 터치하여 창을 생성하고 나서 필드 값 목록으로부터 원하는 값의 이름을 말하는 것과 같은 하나 이상의 별도의 입력 유형을 포함할 수 있다. 서식 입력 필드는 사용자가 서식을 완성하는 데 도움이 되도록 시스템 데이터베이스와 연관된 팁 또는 주석이 있는 창을 디스플레이할 수도 있다. 일 실시예에서, 필드 상의 터치 입력은 음성을 통한 입력을 개시할 수 있는 반면, "터치 및 홀드" 입력은 다수의 가능한 값을 갖는 별도의 윈도우의 디스플레이를 개시할 수 있다.
수동으로 입력할 필요성은 사용자 프로필이 필드 값을 갖지 않을 때마다 또는 심지어 시스템이 하나 이상의 기준에 기초하여 다수의 가능한 값들로부터 가장 적합한 값을 선택하도록 설계될 때에도 발생할 수 있다. 값이 없으면 특정 필드에 값을 수동으로 입력하거나 자동으로 채워진 값을 무시하기 위한 옵션이 사용자에게 제공될 수 있다. 예를 들어, 시스템이 자동으로 입력되어야 하는 나열된 알레르기의 값을 결정하기 위해 "음식 알레르기"라고 명명된 서식 필드가 매우 구체적으로 지정될 수 있도록 사용자는 사용자 프로필(즉, 달걀, 꿀벌 및 고양이)에 다수의 상이한 알레르기를 나열할 수 있다. 시스템은 다른 사용자가 이전의 사용자 입력 데이터를 사용하여 "달걀"이 가장 적합한 후보라고 결정할 수 있다. 그러나 사용자는 필드를 선택하여 별도의 창을 생성하고, 예를 들어 사용자가 꿀로 만든 식품에 알레르기가 있는 경우 "꿀벌" 또는 "꿀"을 목록에 추가함으로써 알레르기 목록 중에서 선택하여 선택을 수정하는 옵션을 제공받을 수 있다. 사용자에게 "알레르기" 필드 이름으로 저장된 필드 값을 갖고 있지 않으면, 사용자는 물리적 키보드 또는 터치스크린 키보드 인터페이스로 필드 값을 수동으로 입력하거나, 하나 이상의 드롭다운 메뉴에서 옵션 목록을 제공하는 카테고리를 선택하거나, 또는 원하는 값을 간단히 말하고 음성 인식 소프트웨어가 음성 명령을 해석하고 적절한 값을 입력하게 하는 것에 의해 필드 값을 입력하라는 프롬프트를 받을 수 있다. 또한 사용자는 서식 필드에 대해 부분 키워드를 말할 수 있고 부분 키워드를 포함할 수 있는 값으로 별개의 창을 디스플레이할 수 있다. 키워드를 가능한 관련 값과 연관시키기 위해 룩업 알고리즘이 제공될 수 있다.
전술한 바와 같이, 터치 및 음성 입력을 위한 하나의 애플리케이션은 특정 서식 필드를 터치하고 나서 필드에 입력되어야 하는 값을 말할 수 있는 능력이 있을 수 있다. 대안적으로 시스템이 필드 이름을 식별할 수 없는 경우 사용자가 먼저 필드 이름을 말할 수 있고, 그러면 시스템이 사용자 프로필로부터 발성된 필드 이름에 대한 값을 채울 수 있다. 필드 이름에 대한 필드 값이 없는 경우 사용자가 필드 값을 말할 수도 있다. 입력된 값이 새로운 값이면 시스템은 나중에 사용하기 위하여 사용자 프로필에 값을 저장할 수 있다. 일례에서, 자동차 보험금 지급 청구서를 채우고 차량 식별 번호(vehicle identification number: VIN)를 입력해야 하는 사용자는 "VIN"이라고 명명된 필드 상자를 터치하고 나서 "VIN 번호" 또는 유사한 명령을 말할 수 있고, 그러면 시스템 데이터베이스는 저장된 VIN 번호를 필드에 채울 수 있다. 또 다른 실시예에서, 하나의 필드에 채울 값을 선택하는 것은 관련 필드에도 값을 채울 수 있다. 예를 들어, 전자 상거래 체크아웃 단계 동안 온라인 판매자는 이러한 이름의 필드를 디스플레이하여 사용자에게 신용 카드를 입력하라는 프롬프트를 표시한다. 사용자는 모바일 터치 장치의 필드를 터치하고 "체이스 비자(Chase Visa)"라는 단어를 말하고 그러면 사용자의 체이스 비자 카드 번호, 이 카드의 이름, 카드 만료일 및 카드 보안 코드(CSV)가 모두 체크아웃 서식의 연관 필드에 채워진다. 사용자에게 유리한 점은 임의의 온라인 판매자에게 임의의 개인 신용 카드 번호를 저장할 필요가 없이도 신속하고 안전한 쇼핑 체크아웃을 경험할 수 있다는 것이다. 또한 사용자 신용 카드가 만료되고 교체되거나 업데이트될 때 사용자가 카드 변경 사항을 업데이트하기 위해 각 판매자 사이트를 방문하는 것을 기억해야 할 필요가 없는데 이는 카드 변경 사항이 모두 하나의 위치에 및 안전하게 시스템 데이터베이스에 저장되기 때문이다.
다른 실시예에서, 필드에 다수의 가능한 값이 있는 경우 사용자는 필드 이름을 터치하거나 말하고 나서 드롭다운 메뉴 등에 디스플레이된 값 목록 중 하나를 터치하거나, 말하거나 마우스 입력으로 선택할 수 있다. 유사하게 다수의 필드는 이름이 같지만 서식의 다른 구획에 있는 경우 사용자는 구획의 이름을 말하고 나서 필드의 이름을 말하면 원하는 특정 필드의 값을 선택할 수 있다. 추가 기능은 서식 필드를 터치하거나 말하고 나서 키워드를 사용하여 값을 서치하는 능력을 포함한다.
제스처, 터치 및 음성 입력 외에도, 필드 값을 수동으로 입력하는 것은 또한 방향 움직임 및 속도를 검출할 수 있는 자이로스코프 또는 가속도계로 구성된 장치에서 특정 유형의 움직임을 통해 이루어질 수 있다. 일 실시예에서, 사용자는 사용자 인터페이스가 특정 필드를 찾거나 채우게 하기 위해 장치(예를 들어, 스마트폰 또는 태블릿)를 흔들 수 있다. 예를 들어, 사용자는 빈 서식을 채우기 위해 장치를 흔들고, 수직 틸트(tilt)와 같은 보다 구체적인 제스처는 특정 필드 이름을 찾아 사용자에 필드 이름에 채울 필드 값에 대한 몇 가지 옵션(예를 들어, 신용 카드 필드 이름 및 사용자가 전자 거래를 위해 선택할 수 있는 다른 신용 카드 목록)과 창을 제공할 수 있다.
다른 실시예에서, 전체 서식 또는 서식의 하나 이상의 필드가 시스템에서 완전히 매핑되거나 및/또는 저장되지 않은 경우, 사용자는 매핑되지 않은 각 필드 이름을 터치하거나 말하고 나서 카테고리, 서브 카테고리 및 특정 카테고리 데이터베이스 필드 목록 중 하나를 터치하거나 말하여 이 서식 필드와 데이터베이스 필드를 연관시킬 수 있다. 또한 시스템은 기계 지능 알고리즘을 사용하여 서식 필드를 데이터베이스 필드로 다수의 사용자 매핑을 수집하고 연관시키고 나서 서식이 있는 연관 필드 매핑을 서식 데이터베이스에 저장함으로써 시스템의 모든 사용자가 사용할 수 있도록 정확하게 매핑된 새로운 서식을 제공할 수 있다. 이 실시예는 시스템 사용자가 모든 시스템 사용자의 이익을 위해 현재 시스템에 없는 새로운 서식을 독립적으로 추가 및 매핑할 수 있게 한다. 추가적으로 이에 의해 시스템 사용자는 모든 시스템 사용자의 이익을 위해 시스템에 필드를 아직 매핑(연관)하지 않은 웹 서식의 데이터베이스 카테고리 필드에 웹 서식 필드를 독립적으로 매핑할 수 있다.
수정 사항 저장하기
일 실시예에서, 시스템이 필드를 채운 후에 사용자가 특정 필드에 대한 필드 값을 수동으로 변경하면 시스템은 변경된 값을 표시하고 새로 입력된 값을 시스템 데이터베이스, 바람직하게는 사용자 프로필의 정보 보관소에 저장할 수 있다. 따라서 사용자는 자신의 프로필을 자동으로 업데이트하면서 서식에 입력되는 정보를 변경할 수 있다.
방법 및 응용
시스템 및 방법을 위한 몇몇 애플리케이션이 위에서 설명되었지만, 시스템 및 방법을 위한 애플리케이션은 이것으로 제한되는 것으로 간주되어서는 안 된다. 시스템 및 방법은 다양한 서식 필드가 있거나 상당한 양의 정보를 필요로 하거나 또는 유사하거나 혼동스러운 이름 및 필드 식별자가 있는 복잡한 서식 및 문서를 완성하는데 특히 적용될 수 있다. 대학 입학 신청서, 대출 신청서, 가족법 문제에 대한 소득 및 지출 신고서, 건강 관리 서식, 및 소기업 소유자를 위해 및 이에 의해 요구되는 많은 서식은 본 명세서에 설명된 예시적인 시스템을 사용하는 것에 의해 (좌절감을 완화하거나 중복성을 줄이는 것은 말할 것도 없고) 시간 절약 및 정보의 정확성을 크게 향상시킬 수 있는 애플리케이션이다.
전자 서식을 획득하고, 분류하고, 기입하는 방법의 일 실시예는 도 12에 흐름도로 도시된다. 제1 단계(202)에서, 정보는 기존 서식, 제3자 API 등과 같은 하나 이상의 정보 소스로부터 얻어진다. 정보는 단계(204)에서 분류되어 정보가 속하는 적어도 하나의 필드를 결정하고 이 정보를 적어도 하나의 필드와 연관시킨다. 복수의 연관 정보는 단계(206)에서 사용자 프로필로 집계되고 하나 이상의 데이터베이스에 안전하게 저장된다. 사용자가 클라이언트 인터페이스들 중 하나를 통해 서식이 완성될 것을 요청하면, 사용자 프로필의 정보는 서식의 서식 필드와 매칭되고, 정보는 단계(208)에서 서식에 채워진다. 단계(210)에서, 사용자가 임의의 서식 필드에 수동으로 값을 입력하고 이 값이 보안 데이터베이스에 현재 저장된 사용자 정보와 다르다면 이러한 새로운 값은 사용자의 보안 데이터베이스에 저장될 수 있다. 새로운 값을 필드의 디폴트 또는 기본 값으로 반영하도록 사용자 프로필을 선택적으로 업데이트할 수 있다.
IV. 컴퓨터로 구현된 실시예
도 13은 본 발명의 방법론의 일 실시예를 구현할 수 있는 컴퓨터/서버 시스템(1300)의 일 실시예를 도시하는 블록도이다. 시스템(1300)은 이 기술 분야에 통상의 지식을 가진 자에게 알려진 바와 같이 명령들을 실행하도록 동작하는 프로세서(1302) 및 메모리(1303)를 포함하는 컴퓨터/서버 플랫폼(1301)을 포함한다. 본 명세서에 사용된 "컴퓨터-판독 가능한 저장 매체"라는 용어는 실행을 위해 프로세서(1302)에 명령을 제공하는데 참여하는 임의의 유형적인 매체, 예를 들어, 디스크 또는 반도체 메모리를 지칭한다. 추가적으로, 컴퓨터 플랫폼(1301)은 복수의 입력 장치(1304), 예를 들어, 키보드, 마우스, 터치 장치 또는 구두 명령으로부터 입력을 수신한다. 컴퓨터 플랫폼(1301)은 휴대용 하드 드라이브, 광학 매체(CD 또는 DVD), 디스크 매체, 또는 컴퓨터가 실행 가능한 코드를 판독할 수 있는 임의의 다른 유형적인 매체와 같은 제거 가능한 저장 장치(1305)에 추가로 연결될 수 있다. 컴퓨터 플랫폼은 인터넷 또는 로컬 공용 또는 사설 네트워크의 다른 컴포넌트에 연결되는 네트워크 자원(1306)에 더 연결될 수 있다. 네트워크 자원(1306)은 명령 및 정보를 네트워크(1307) 상의 원격 위치로부터 컴퓨터 플랫폼으로 제공할 수 있다. 네트워크 자원(1306)에 대한 연결은 802.11 표준, 블루투스
Figure pct00002
또는 셀룰러 프로토콜과 같은 무선 프로토콜을 통해 또는 케이블 또는 광섬유와 같은 물리적 전송 매체를 통해 이루어질 수 있다. 네트워크 자원은 컴퓨터 플랫폼(1301)과 별개의 위치에서 정보 및 실행 가능 명령을 저장하기 위한 저장 장치를 포함할 수 있다. 컴퓨터는 디스플레이(1308)와 상호 작용하며 정보를 사용자에게 출력하고 사용자로부터 추가 명령 및 입력을 요청한다. 그리하여, 디스플레이(1308)는 사용자와 상호 작용하기 위해 입력 장치(1304)로서 더 동작할 수 있다.
V. 추가적인 특징
본 명세서에 개시된 특정 실시예는 특히 클라이언트 종단점을 보호하는 것을 포함하여 데이터, 크리덴셜 및 암호화 키를 안전하게 저장 및 관리하는 방법 및 시스템을 제공한다. 본 설명을 읽은 후에, 다양한 대안적인 구현예에서 설명된 실시예를 구현하는 방식이 명백해질 것이다. 또한, 다양한 실시예가 본 명세서에 기술되었지만, 이들 실시예는 본 발명을 제한하는 것이 아니라, 본 발명을 예시하는 것으로서만 제공되는 것으로 이해된다. 그리하여, 다양한 대안적인 실시예에 대한 이러한 상세한 설명은 첨부된 청구항의 범위 또는 폭을 제한하는 것으로 해석되어서는 안 된다.
공동 계류 중인 미국 특허 출원 번호 14/863,294('294 출원)는 그 전체 내용이 본 명세서에 제시된 것처럼 본 명세서에 병합된다. '294 출원은, 본 명세서에 설명된 바와 같이 데이터의 프래그먼트화, 개별적으로 암호화 및 분산을 수반하는 안전하게 고속으로 데이터를 저장, 액세스, 복구 및 전송하기 위한 시스템 및 방법을 기술한다. 예를 들어, '294 출원에 설명된 바와 같이, 의료 레코드 내의 데이터는 먼저, 예를 들어, 다양한 필드가 논리적으로 관련되지 않도록 해리될 수 있다. 그런 다음 해리된 필드는 서브 필드 또는 부분(프래그먼트)으로 분해될 수 있다. 이 서브-필드는, 그 서브-필드의 내용을 가로 채거나 액세스한다 하더라도 서브-필드의 내용을 쉽게 결정할 수 없도록 난독화될 수 있다. 이러한 서브-필드는 각 서브 필드 또는 프래그먼트에 대해 예를 들어 상이한 암호화 키를 사용하여 개별적으로 암호화될 수 있다. 개별적으로 암호화된 서브-필드는 "샤드화(sharded)"되고 다른 저장 장치 또는 위치에 저장될 수 있다.
도 14는 설명된 프로세스를 수행할 수 있는 예시적인 시스템을 도시하는 '294 출원의 도 1을 재현한 것이다. 그러나, 설명된 바와 같이, 도 14를 참조하면, 프로세스는 일반적으로 클라이언트 장치 또는 종단점(110)에서 개시된 명령 또는 요청에 응답하여 보안 플랫폼(120) 상에서 발생한다. 보안 플랫폼(120)은 암호화된 프래그먼트를 다양한 저장 장치 또는 위치(140 내지 170)에 저장한다. 위치(140)는 장치(140)에 로컬로 또는 국부적으로 연결될 수 있지만, '294 출원에서 설명된 프로세스는 종단점(110)으로부터 플랫폼(120)으로의 링크를 반드시 커버해야 하는 것은 아니다.
공동 계류 중인 미국 특허 출원 번호 14/970,466('466 출원)은 그 전체 내용이 본 명세서에 제시된 것처럼 본 명세서에 병합되고, '294 출원의 프로세스를 거친 데이터의 분산된 데이터(diffracted data)를 검색하기 위한 시스템 및 방법이 기재되어 있다. 도 15는 본 명세서에 설명된 분산된 데이터를 검색하기 위한 시스템을 도시하는 '466 출원의 도 1을 재현한 것이다. 도 15를 참조하여 설명된 바와 같이, 분산된 데이터를 검색하는 것은 종단점(110)에 로컬로 또는 국부적으로 연결된 저장 장치 또는 위치(140)를 수반할 수 있지만, 본 명세서에 설명된 프로세스는 일반적으로 종단점(110)과 서버(120 및 180) 사이의 링크에는 적용되지 않는다.
미국 가특허 출원 번호 62/281,097('097 출원)은 이제 만료되었지만 그 전체 내용이 본 명세서에 제시된 것처럼 본 명세서에 병합된다. '097 출원은 크리덴셜 및 암호화 키를 안전하게 저장 및 관리하기 위한 시스템 및 방법을 설명한다. 도 16은 본 명세서에 설명된 프로세스를 수행할 수 있는 시스템을 도시하는 '097 출원'의 도 1을 재현한 것이다. 도 16을 참조하여 설명한 바와 같이, 크리덴셜 및 암호화 키를 안전하게 저장 및 관리하는 것은 종단점(110)에 로컬로 또는 국부적으로 연결된 저장 장치 또는 위치(140)를 수반할 수 있지만, 본 명세서에 설명된 프로세스는 일반적으로 종단점(110)과 서버(120 및 180) 간의 링크에는 적용되지 않는다.
본 명세서에 설명된 시스템 및 방법에서, '294,'466 및 '097 출원에 설명된 프로세스는 에지에서 구현될 수 있는데, 즉 도 14 내지 도 16에 도시된 클라이언트 종단점(110)에서 구현될 수 있다. 예를 들어, 첨부 부분에 설명된 바와 같이 로컬로 또는 국부적으로 연결된 저장 장치(140)의 상이한 부분에 데이터가 저장되거나 검색될 수 있도록, 또는 복수의 저장 장치(140 내지 170)에 데이터가 저장되고 저장될 수 있도록 애플리케이션이 장치(110)에 로딩될 수 있다. 따라서, 장치(110)의 사용자가 문서, 비디오, 사진 등을 생성하면, 사용자는 문서 또는 파일을 저장하기 위해 애플리케이션을 호출할 수 있다. 이것은 전술한 부분 및 첨부 부분에서 모든 단계들을 수행하여, 저장 장치(140)의 상이한 위치들 또는 전술된 바와 같이 메모리(140 내지 170) 상의 상이한 위치, 및 예를 들어 '294 출원'에서와 같이 분산된 방식으로 프래그먼트들을 저장하는 것을 수반할 수 있다. 유사하게, 애플리케이션은 '466 출원'에 설명된 바와 같이 분산된 데이터 또는 파일의 검색을 수행할 수 있으며 '097 애플리케이션에 설명된 바와 같이 크리덴셜 및 암호화 키의 관리를 시행할 수 있다.
따라서, 데이터가 복수의 저장 장치에 저장될 때, 그 데이터가 이들 장치로 전송되는 것은 프로세스가 저장을 위해 전송 전에 모든 프래그먼트를 개별적으로 암호화하는 것을 통해 또한 보장된다. 다시 말해, 데이터 요소는 전송되기 전에 장치에서 모두 프래그먼트화되고 안전하게 보호된다. 이것의 주요한 장점은 통신 채널을 안전하게 보호할 필요가 없으며 일반적인 "개방" 연결을 사용할 수 있다는 것이다. 예를 들어, 느리고 비싼 TLS 보안 브라우저 전송을 사용하는 대신 더 빠른 비-암호화된 채널을 사용할 수 있다. 데이터 패킷은 안전하게 보호된 프래그먼트를 포함한다. 이것은 브라우저 기반뿐 아니라 무선, FTP, 블루투스 등일 수 있는 모든 유형의 전송에 적용된다.
애플리케이션은 툴바 또는 드롭다운 메뉴에서 버튼으로서 제공되어, 사용자가 도 14 내지 도 16에 도시된 바와 같이 그 장치(110) 상의 문서 또는 파일에 있을 때, 사용자는 연관 애플리케이션이나 웹 브라우저에서 버튼, 아이콘 등을 간단히 눌러 해당 문서를 저장할 수 있도록 할 수 있다. 이 문서 또는 파일은 위에서 설명된 프로세스 및 '294, '466 및/또는'097 애플리케이션에서 설명된 프로세스를 사용하여 저장되었음을 나타내는 방식으로 장치(110) 상에 표시될 수 있다. 사용자가 문서 또는 파일에 다시 액세스하면 위에서 설명된 및 '294, '466 및/또는 '097 애플리케이션에서 설명된 검색 프로세스가 자동으로 수행될 수 있다. 특정 실시예에서, 사용자는 또한 모든 또는 일부의 프래그먼트가 저장되는 곳에 대한 다양한 분산 선호도를 선택할 수 있다.
다른 실시예에서, 예를 들어, 파일에 대한 오른쪽 클릭은 설명된 저장 프로세스들을 선택하는데 사용될 수 있다. 또 다른 실시예에서, 애플리케이션은 이러한 프로세스를 사용하여 파일이 저장되어야 한다는 것을 자동으로 결정할 수 있다. 또 다른 실시예에서, 모든 파일, 특정 파일, 특정 유형의 파일 등에 대한 디폴트가 이러한 프로세스를 사용하도록 설정될 수 있다.
종종, 도 14 내지 도 16에 도시된 바와 같은 장치(110)의 사용자는 궁극적으로 장치(110) 상에 생성된 파일의 적어도 일부를 저장하기 위해 종종 클라우드 저장소라고 지칭되는 일부 원격 저장소 형태를 사용하기를 원할 수 있다. 그러한 클라우드 스토리지 서비스와 연관된 서버(들)에서 실행되는 애플리케이션(들)은 예를 들어 '294 출원'에 설명된 것과 유사한 방식으로 '294, '466 및/또는 '097 출원에 설명된 프로세스를 수행하도록 구성될 수 있다. 그러나, 상기한 바와 같이, 장치(110)와 그러한 서버 간의 링크는 반드시 보안이어야 할 필요는 없으나, 본 명세서에 설명된 바와 같이 설명된 프로세스는 클라우드 또는 중간 종단점으로 데이터를 전송하기 전에 국부적으로 컨텐츠에 먼저 실행될 수 있다. 궁극적으로 예를 들어 클라우드로 가기 전에 많은 중간 "종단점"들이 있을 수 있다. 클라우드에 대한 단일 클라이언트는 단 하나의 토폴로지이다. 예를 들어, 전송 전에 데이터를 안전하게 보호하기 위해 설명된 시스템 및 방법을 사용하여 각각 서로 통신하는 모든 노드들의 네트워크가 있을 수 있다. 그런 다음 프래그먼트를 클라우드 서비스에 분산된 방식으로 저장할 수 있다. 따라서 데이터가 전송 중에 가로채일지라도 이것은 쓸모가 없다.
특정 실시예에서, 애플리케이션은 사용자가 클라우드 저장소 서비스로부터 데이터를 저장 또는 검색하려고 시도할 때 설명된 프로세스를 자동으로 수행하도록 구성될 수 있다. 또한, 애플리케이션은 휴지 상태의 문서 또는 파일, 즉 일정 시간 기간 동안 문서 또는 파일과의 상호 작용이 없는 것이 검출되면 설명된 프로세스가 이 문서를 보호하기 위해 자동으로 실행되도록 구성될 수 있다. 그런 다음 사용자가 문서 또는 파일을 다시 작업하면 적절한 프로세스를 실행하여 문서 또는 파일에 액세스하는 것을 허용할 수 있다.
특정 실시예에서, 설명된 프로세스는 예를 들어 파일 상에서 국부적으로 수행되고 나서, 파일이 예를 들어 클라우드 및/또는 중간 장치로 전송되고 있을 때 다시 수행될 수 있다.
특정 실시예에서, 설명된 프로세스를 사용하여 저장된 문서를 공유 및 협업하는 것은 예를 들어 '097 출원'에 설명된 인증 및 크리덴셜 관리 프로세스를 사용하여 구현될 수 있다. 따라서, 특정 개인에게 액세스 권한이 허가될 수 있으며, 이 액세스 권한은 예를 들어 이들 개인에게 할당된 크리덴셜에 기초하여 생성된 보안 키를 사용하여 관리될 수 있다.
로컬 저장 장치가 USB 드라이브와 같은 안전하지 않은 저장 장치 인 경우에 설명된 프로세스로부터 또 다른 중요한 장점이 얻어진다. 이러한 경우, 설명된 프로세스를 사용하여 데이터를 장치에 저장하면 잘못된 개인이나 개체가 데이터에 액세스하더라도 이를 사용할 수 없게 되는 것을 보장할 수 있다. 특정 실시예에서, 로컬 레벨에서 설명된 프로세스를 수행하도록 구성된 로컬 애플리케이션은 그러한 로컬 저장 장치, 예를 들어 USB 저장 장치 상에 상주할 수 있음에 유의해야 한다.
특정 실시예에서, 로컬 애플리케이션은 또한 전자 메일의 첨부 파일을 보호하도록 구성될 수 있다. 전자 메일을 통해 첨부 파일을 보내는 것은 첨부 문서가 충분한 지식이 있는 임의의 해커에 의해 가로 채고 읽혀질 수 있기 때문에 위험하다. 본 명세서에 설명된 프로세스는 의도된 수신자 이외의 누군가에 의해 읽혀지는 것을 방지하는 방식으로 그러한 첨부 파일에 구현될 수 있다. 일반적으로 로컬 애플리케이션은 전자 메일 트래픽과 상호 작용하지 않거나 전자 메일 자체를 암호화하지 않는다. 오히려 로컬 애플리케이션으로 첨부 파일을 보낸 사람은 첨부하려고 (공용 클라우드 서버로 송신하려고) 의도된 문서에 설명된 프로세스를 실행할 수 있다. 그런 다음 애플리케이션은 이 문서로의 액세스 링크를 생성할 수 있다. 실제 문서 대신 액세스 링크가 수신자에게 전자 메일로 송신될 수 있다. 수신자는 수신한 액세스 링크를 클릭하여 오리지널 문서를 다운로드하고 복호화할 수 있다. 물론 이것은 설명된 프로세스에 따라 수신자 장치가 첨부 파일을 검색할 수 있도록 수신자가 또한 로컬 애플리케이션을 가질 것을 요구할 수 있다.
다른 실시예에서, 전술한 바와 같은 로컬 애플리케이션은 또한 디지털 미디어(문서, 서적, 오디오, 비디오 등) 프레임 또는 구획의 제어된 시퀀스식 "관찰" 또는 "재생"을 허용할 수 있다. 이러한 실시예에서, 도 14 내지 도 16에 도시된 바와 같이, 장치(110)의 권한 있는 및 인증된 가입자 또는 사용자만이 미디어가 디스플레이(또는 재생)되고 있을 때 전송된 별도의 순차 프레임 또는 구획을 검색하고 볼 수 있다. 추가적으로 가입자가 그 다음 프레임 또는 구획으로 진행한 후에는 이전에 재생된 프레임 또는 구획은 설명된 프로세스 또는 영구적으로 삭제된 프로세스를 사용하여 자동으로 다시 저장된다. 그리하여 어느 경우이든 최소 양의 디지털 미디어만이 복호화 및 조립되어 가입자가 소비할 수 있으므로 저작권 침해나 권한 없는 소비를 최소화할 수 있다. 이것은 선택적으로 또한 송신 소스로부터 소비 피드백 메커니즘을 통해 인증된 권한 있는 가입자에게로 더 전송하고 나서 다시 송신 소스로 추가 전송하기 위해 허가된 순차 프레임 또는 구획의 양을 제한하는 것으로 확장될 수 있다. 이 값은 모든 유형의 디지털 미디어를 소비자로부터 일급 비밀 데이터로 보다 안전하게 분배하기 위한 것이다.
따라서, 전송 전에, 이러한 디지털 미디어는 독립형 구획 또는 프레임으로 분해될 수 있고, 그 다음에 이들 구획들 또는 프레임들 각각을 프래그먼트화/암호화/분산화하는 것으로 설명된 프로세스들이 도 14 내지 도 16에 도시된 바와 같이 에지 장치(110)로 전송하기 전에 적용된다. 검색 시, 각 구획 또는 프레임을 구성하는 기본 프래그먼트를 재구성하기 위해 각 구획 또는 프레임을 순차 기술로 한 번에 전송할 수 있다.
본 명세서에 언급된 바와 같이, 도 17과 같이 본 명세서에 재현된 '097 출원서의 도 4는 도 14 내지 도 16에 도시된 바와 같이 클라이언트 장치(110)를 구현하는데 사용될 수 있는 다양한 실시예에 따른 유선 또는 무선 시스템(550)을 도시하는 블록도이다. 따라서, 이 시스템(550)은 본 명세서에서 상세히 기술되지 않을 것이다.
VI. 키 교환 방법론
(IoT 장치와 같은) 새로운 장치가 네트워크에 추가될 때, 이 장치를 인증하는 방식이 필요하다. 본 발명의 다양한 양태는 이 동작을 용이하게 하기 위해 장치의 내장된 키 교환 프로세스를 포함하여 임의의 수의 키 교환 방법론을 통합하는 방법을 제공한다. 이 기능은 예를 들어, 두 장치 간에 데이터 스트리밍을 하는 경우 두 장치 사이에 인증된 통신을 가능하게 한다. 두 장치 간에 통신이 수립되면 키 교환 방법론 및 교환 빈도는 성능 요구 사항에 기초하여 및 예를 들어 데이터 보안 위협 레벨을 포함하나 이로 제한되지 않는 임의의 수의 조건에 응답하여 동적으로 변할 수 있다. 암호화 엔진은 장치들 간에 TLS에 사용되는 예를 들어 디피-헬만(Diffie-Hellman) 프로토콜을 포함하나 이로 제한되지 않는 개인/공개 교환을 포함하는 다른 키 교환 솔루션과 동적으로 상호 동작되고 계층화될 수 있다. 보안 키를 사용하고 주어진 데이터 세트에 대한 키 회전 속도를 최대화하여 보다 높은 레벨의 보안을 달성할 수 있다.
도 18은 본 발명의 다양한 양태에 따라 키들을 교환하는 방법(1800)을 도시하는 흐름도이다. 도 18을 참조하면, 블록(1810)에서, 현재의 암호화 알고리즘 파라미터 및 시드(seed)에 기초하여, 각각의 장치, 예를 들어, 제1 장치 및 제2 장치가 공유 키를 수립할 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 범위를 벗어나지 않고 2개를 초과하는 장치가 이용될 수 있음을 이해할 수 있을 것이다.
블록(1815)에서 제1 장치 상의 데이터세트는 공유된 키를 사용하여 암호화될 수 있고, 블록(1820)에서 제1 장치는 암호화된 데이터를 제2 장치에 전송할 수 있다. 블록(1825)에서, 제2 장치는 공유된 키를 사용하여 데이터세트를 복호화할 수 있다. 블록(1830)에서, 키를 재생성해야 할지 여부를 나타내는 키 재생성 기준이 결정될 수 있다. 블록(1835)에서, 키 재생성 기준은 각각의 데이터 세트에 대해 평가될 수 있다. 블록(1840)에서, 키 재생성 기준이 충족되는지 여부가 결정될 수 있다. 키 재생성 기준이 충족되지 않는다는 결정(1840-아니오)에 응답하여, 블록(1840)에서 키 재생성 기준이 충족될 때까지 블록(1845)에서 키를 재생성해야 할 때를 나타내는 조건이 모니터링될 수 있다. 재생성 기준이 충족된다는 결정(1840-예)에 응답하여, 블록(1850)에서 다음 키에 대한 새로운 암호화 알고리즘 파라미터가 생성될 수 있고, 방법은 블록(1810)에서 계속될 수 있다. 키 재생성 기준은 가능한 암호화 알고리즘 및 이 암호화 알고리즘을 위한 특정 파라미터를 식별할 수 있다.
VII. 암호화된 데이터 전송
본 발명의 다양한 양태에 따르면, 암호화된 데이터는 스트림, 파일 시스템 및/또는 클라우드를 포함하지만 이들로 제한되지 않는 다수의 동시 클라이언트 목적지를 통해 고유한 암호화로 전송될 수 있다. 비디오 플레이어로 복호화된 스트림 형식이나 파일 시스템이나 클라우드에 안전하게 저장된 프래그먼트 세트와 같은 암호화된 데이터는 임의의 개수의 목적지로 보내질 수 있다. 암호화될 항목은 파일(예를 들어, Word 문서, 사진 파일, 가상 컴퓨터 파일 등), 키-값 쌍(예를 들어, JSON과 같은 간단한 문자열, 또는 서식 데이터, 애플리케이션 설정 및 환경 설정을 저장하는 데 적합한 다른 형식), 및 스트림(예를 들어, 비디오 또는 데이터 피드)을 포함할 수 있으나 이들로 제한되지 않는 임의의 개수의 데이터 형식일 수 있다.
본 발명의 다양한 양태에 따르면, 각각의 객체는 더 작은 프래그먼트들로 해체(disassembled)되어, 각각의 객체에 대한 총 전송 시간(T)을 감소시킬 수 있는데, 일부 경우에 전송 시간을 통상적으로 이용 가능한 것보다 최대 8배 내지 15배 더 빠르게 구현할 수 있다. 객체의 프래그먼트는 각 클라이언트에 고유한 키를 사용하여 보안을 증가시키면서 한 번만 암호화될 수 있다. 이 접근법은 암호화된 데이터를 다수의 클라이언트 목적지로 송신하면서도 성능 장점을 제공할 수 있다. 각 목적지는 데이터에 액세스하는 고유한 복호화 키를 가질 수 있다. 하드웨어 자원 요구를 최소화하면서 다수의 목적지로 가는 다수의 보안 출력 스트림을 생성할 수 있다. 컴퓨팅 장치들 간에 데이터를 프래그먼트화, 암호화 및 전송하는 것은 낮은 대기 시간 및 최대 데이터 암호화를 달성할 수 있다. 본 발명의 다양한 양태에 따르면, 이 접근법은 각 클라이언트 사이의 고유한 비밀 키를 유지하는 다수의 클라이언트를 지원하고, 각각의 의도된 클라이언트에 대해 매니페스트(manifest)를 상이하게 암호화하도록 스케일링될 수 있다.
도 19는 본 발명의 다양한 양태에 따라 암호화된 데이터 전송 시퀀스(1900)를 도시하는 시퀀스 다이어그램이다. 도 19를 참조하면, 블록(1910)에서, 각각의 클라이언트(1902, 1903) 상에서 실행되는 클라이언트 소프트웨어는 서버(1901)와 통신하며 키 교환 프로세스를 시작한다. 블록(1915)에서, 서버(1901)는 파일일 수 있는 소스로부터, 및 카메라, 비디오 및/또는 오디오 센서를 포함할 수 있으나 이들로 제한되지 않는 데이터 센서로부터 데이터의 블록, 예를 들어, 비디오 스트림의 하나의 프레임, 오디오 샘플 등을 판독한다. 블록(1920)에서, 서버(1901)는 데이터를 해체하여 데이터 프래그먼트를 생성한다. 블록(1925)에서, 서버는, 다른 데이터 중에서 특히, 각 데이터 프래그먼트에 대한 고유한 암호화 키를 포함하는 클라이언트(1902, 1903) 각각에 대한 매니페스트를 생성한다. 블록(1930)에서, 서버(1901)는 각 클라이언트(1902, 1903)로부터의 키 교환 정보를 사용하여 각 클라이언트(1902, 1903)에 대한 고유한 비밀 키를 생성한다. 블록(1935)에서, 서버(1901)는 각 클라이언트(1902, 1903)에 대한 고유한 비밀 키를 사용하여 매니페스트를 암호화한다.
블록(1940)에서, 서버(1901)는 각각의 클라이언트(1902, 1903)에 암호화된 매니페스트를 전송한다. 이 기술 분야에 통상의 지식을 가진 자라면, 상이한 데이터가 각각의 클라이언트(1902, 1903)로 전송될 수 있고, 그리하여 상이한 매니페스트가 생성되어 서버(1901)에 의해 각각의 클라이언트(1902, 1903)로 송신될 수 있다는 것을 이해할 수 있을 것이다. 서버(1901)는 데이터 프래그먼트를 암호화하고, 블록(1945)에서 암호화된 데이터 프래그먼트를 의도된 클라이언트(1902, 1903)로 전송한다. 블록(1950)에서, 클라이언트(1902, 1903) 상에서 실행되는 클라이언트 소프트웨어는 매니페스트의 수신을 기다리고, 고유한 비밀 키를 사용하여 매니페스트를 복호화한다. 블록(1955)에서, 각각의 클라이언트(1902, 1903)는 서버(1901)에 대한 매니페스트의 수신을 수신확인으로 응답한다. 블록(1960)에서, 각각의 클라이언트(1902, 1903)는 암호화된 데이터 프래그먼트를 청취하고, 매니페스트 내에 포함된 데이터를 사용하여 각 데이터 프래그먼트를 복호화한다. 블록(1965)에서, 각각의 클라이언트(1902, 1903)는 그 다음 매니페스트에 대한 비밀 키 시드를 서버(1901)에 송신한다.
도 19의 시퀀스는 클라이언트로부터 판독된 데이터의 각 블록에 대해 반복될 수 있다. 데이터 프래그먼트는 클라이언트에 의해 임의의 순서로 수신될 수 있으며 올바른 순서로 재조립되고 처리될 수 있다. 서버는 블록(1920)에서 시작하는 모든 데이터의 그 다음 블록에 대해 시퀀스를 반복할 수 있다. 각각의 데이터 블록에 대해, 클라이언트는 대응하는 매니페스트의 수신을 기다릴 수 있다. 서버가 클라이언트로부터 매니페스트의 수신확인을 수신하지 못하면 서버는 수신확인이 수신될 때까지 또는 타임아웃 간격이 만료될 때까지 데이터의 그 다음 블록을 보류할 수 있다. 클라이언트가 불완전하거나 부정확한 매니페스트를 수신하면, 서버는 새로운 비밀 키로 암호화된 현재 매니페스트를 재송신할 것을 통지받을 수 있다. 클라이언트가 불완전하거나 부정확한 데이터 프래그먼트를 수신하면 서버는 데이터의 현재 블록을 재송신할 것을 통지받을 수 있다.
VIII. 데이터 암호화 속도
본 발명의 다양한 양태에 따라, 전처리기는 프래그먼트화 및 암호화 프로세스 전에 큰 파일을 더 작은 조각들로 사전 슬라이싱하거나 분해할 수 있다. 동반하는 후처리기는 복호화 및 프래그먼트 모음(defragmentation) 후에 파일을 재결합할 수 있다. 데이터 객체를 더 작은 프래그먼트로 해체하고 다수의 프로세서 스레드에 걸쳐 개별 프래그먼트들을 암호화함으로써 키 크기를 줄이거나 보안 레벨을 손상시키지 않으면서 속도 장점(예를 들어, 5X 내지 15X)을 얻을 수 있다. 프래그먼트화 및 암호화 전에 큰 파일을 더 작은 조각으로 '슬라이싱'하고, 즉 분해하고 나서 프래그먼트 모음 및 복호화 후 재결합하면 성능을 증가시키고 메모리가 제한된 장치에서 매우 큰 데이터 객체를 처리할 수 있다.
도 20a는 본 발명의 다양한 양태에 따라 암호화 속도를 증가시키기 위해 데이터를 사전 슬라이싱하는 방법(2000)을 도시하는 흐름도이다. 도 20a를 참조하면, 블록(2010)에서 데이터 슬라이싱 기준이 결정될 수 있다. 블록(2015)에서, 데이터 객체는 결정된 슬라이싱 기준에 기초하여 슬라이싱을 위해 평가될 수 있다. 블록(2020)에서, 데이터 객체가 슬라이싱될 수 있는지 여부가 결정될 수 있다. 데이터 객체가 슬라이싱될 수 있다는 결정(2020-예)에 응답하여, 블록(2025)에서, 서버는 데이터 객체를 더 작은 데이터 조각들로 해체하거나 "슬라이싱"할 수 있고, 블록(2030)에서 각각의 데이터 슬라이스는 암호화되어 송신될 수 있다. 블록(2035)에서, 서버는 각각의 데이터 슬라이스를 데이터 프래그먼트들로 해체할 수 있고, 데이터 프래그먼트들은 암호화될 수 있다. 데이터는 하나 이상의 저장 위치에 저장하기 위해 해리 및 분산될 수 있다.
도 20b는 본 발명의 다양한 양태에 따라 데이터 파일을 재결합시키는 방법(2050)을 도시하는 흐름도이다. 도 20b를 참조하면, 블록(2060)에서, 암호화된 데이터 프래그먼트가 복호화될 수 있다. 블록(2065)에서, 복호화된 데이터 프래그먼트는 데이터 슬라이스로 프래그먼트 모음되고 재결합될 수 있다. 블록(2070)에서, 슬라이스들은 데이터 객체로 재결합될 수 있다.
IX. 암호화 키 관리
본 발명의 다양한 양태에 따르면, 시스템은 로컬 운영 시스템 내에 존재하는 키 저장소들에 키들을 분배할 수 있다. 일부 경우에, 예를 들어, 네트워크 중단의 경우, 장치는 원격 사용자와 키 또는 유사한 라이센스 서비스에 액세스하지 못할 수 있다. 원격 서비스는 로그인할 때 사용자이름 및 패스워드와 같은 사용자의 라이센스 크리덴셜을 확인하는 데 사용될 수 있다. 원격 서비스를 이용할 수 없는 경우 클라이언트 소프트웨어는 로컬 장치의 암호화된 키 저장소에 액세스하여 국부적으로 사용자 크리덴셜을 검증할 수 있다. 시스템은 이 로컬 키 저장소를 채워서 네트워크 중단에 대비한 복원을 위한 백업으로 관리할 수 있다.
시스템은 모든 예상된 상태의 기술 능력을 포함하는 키 관리(KM) 소프트웨어를 전달할 수 있다. 그러나 키 관리 서버와의 통신은, 키 관리 서버가 다운되기 때문에 상실되는 것이 아니라 네트워크 중단이나 일부 다른 연결 문제로 인해 원격 장치가 연결될 수 없기 때문에 상실된다. 시스템 클라이언트 소프트웨어가 랩탑이거나 다른 네트워크 가능 컴퓨팅 장치와 같은 장치에서 실행 중이고 키 관리 서버와의 연결이 상실된 경우 클라이언트 소프트웨어는 이 장치의 데이터를 계속해서 암호화/복호화한다. 클라이언트 소프트웨어는 원격 키 관리 서버 연결이 상실된 경우 백업용으로 동작하는 장치에 로컬 키 저장소를 생성할 수 있다. 로컬 키 저장소는 필요한 임의의 추가적인 사용자 크리덴셜을 포함하여 사용자가 필요로 하는 특정 키 또는 키 암호화 키를 유지하도록 구성될 수 있다. 키 저장소 자체도 암호화되어 인증된 사용자에게만 이용 가능할 수 있다.
도 21은 본 발명의 다양한 양태에 따라 암호화 키를 관리하는 방법(2100)을 도시하는 흐름도이다. 도 21을 참조하면, 블록(2110)에서, 키 관리 서버와 연결하는 것이 이용 가능한지 여부가 결정될 수 있다. 키 관리 서버와 연결하는 것이 이용 가능하다는 결정(2110-예)에 응답하여, 블록(2115)에서 클라이언트는 키 관리 서버와 통신하며 암호화 키에 액세스할 수 있다.
키 관리 서버와 연결하는 것이 이용 가능하지 않다는 결정(2110-아니오)에 응답하여, 블록(2120)에서, 클라이언트가 로컬 키 저장소를 이용할 권한을 갖고 있는지 여부가 결정될 수 있다. 클라이언트가 로컬 키 저장소를 이용할 권한을 갖고 있다는 결정(2120-예)에 응답하여, 클라이언트는 로컬 키 저장소로부터 암호화 키에 액세스할 수 있다. 클라이언트가 로컬 키 저장소를 이용할 권한이 없다는 결정(2120-아니오)에 응답하여, 블록(2130)에서 데이터 암호화는 중단될 수 있다.
X. 복합 보안 키
본 발명의 다양한 양태에 따르면, 사용자 및 키 기술은 AND/OR 부울리안 논리(Boolean logic)를 사용하여 복합 키를 지원할 수 있다. 시스템은 동적 표현을 도입하여 복합 키 개념을 확장하여 키의 액세스 요구 사항을 제어한다. 복합 키는 임의의 수의 서브 키를 사용하여 한정할 수 있다. 복합 키가 유효하기 위해서는, 통합 서브 키가 모두 존재하고 올바르고(부울리안 AND) 또는 적어도 하나의 서브 키가 존재하고 올바르게(부울리안 OR) 있어야 한다. 유효한 키를 한정하는 데 사용되는 부울리안 구문의 임의의 조합이 있을 수 있다.
본 발명의 다양한 양태에 따르면, 동적 표현이 키의 액세스 요구 사항을 제어하는데 사용될 수 있다. 키는 부울리안 표현의 임의의 조합을 가져서 키 기능을 제한하거나 제어할 수 있다. 예를 들어, 키의 액세스 표현은 (앨리스 AND (밥 OR 칼(Carl)))으로 설명될 수 있으며, 앨리스가 밥이나 칼 중 어느 한 사람과 동시에 행하는 경우에만 파일을 잠금 해제할 수 있다. 복합 키는 사용자 이름뿐 아니라 지리적 위치, 시계 시간 및 해시 체크섬(hash checksum)을 포함하는 제한 없는 다양한 다른 조건을 더 포함할 수 있다. 예를 들어, (앨리스 AND (밥 OR 칼) AND 액세스시간은 업무 시간에는 동일하다)는 업무 시간에만 제한을 추가할 수 있다. 또한 키 액세스 표현은 예를 들어 보안 위협 레벨이 높은지 여부를 포함하지만 이로 제한되지 않는 외부 조건에 따라 변할 수 있는 동적 조건을 포함할 수 있다. 예를 들어 (앨리스 AND (밥 OR 칼) AND 보안 레벨은 (보통 OR 낮음) 동일하다)는 보안 조건이 보통 또는 낮은 레벨일 때에만 액세스를 허용할 수 있다. 이러한 표현을 통해 응답성이 높은 액세스 제어를 통해 해커 공격 동안 조건이 빠르게 변하는 경우에도 자동으로 데이터를 안전하게 유지할 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 범위를 벗어나지 않고 다른 조합이 사용될 수 있다는 것을 이해할 수 있을 것이다.
도 22는 본 발명의 다양한 양태에 따라 복합 키를 평가하는 방법(2200)을 도시하는 흐름도이다. 도 22를 참조하면, 블록(2210)에서, 시도된 각각의 데이터 액세스에 대해, 보안 키에 대한 액세스 표현이 결정될 수 있다. 예를 들어, 액세스 표현은 부울리안 표현 및/또는 외부 조건의 임의의 조합을 포함할 수 있다. 블록(2215)에서, 임의의 필요한 외부 조건을 포함하여 보안 키에 대한 액세스 표현이 평가될 수 있다. 블록(2220)에서, 액세스 표현 및/또는 외부 조건들이 충족되는지 여부가 결정될 수 있다.
액세스 표현 및/또는 외부 조건들이 충족되지 않는다는 결정(2220-아니오)에 응답하여, 블록(2225)에서 보안 키가 거부될 수 있고 데이터 액세스가 거부될 수 있다. 액세스 표현 및/또는 외부 조건이 충족된다는 결정(2220-예)에 응답하여, 블록(2230)에서 액세스 키가 수용되고 데이터 액세스가 허용될 수 있다.
XI. 데이터 액세스 제한
본 발명의 다양한 양태에 따르면, 암호화된 데이터는 사용자 역할, 복합 키, 지리적 위치, 액세스 시간, 액세스 시간 길이, 다른 키에 대한 액세스 순서를 포함하나 이들로 제한되지 않는 임의의 개수의 액세스 제한을 포함할 수 있다. 그렇지 않은 경우 유효한 사용자 세션이 특정 조건이 충족되지 않을 때 데이터에 액세스하는 것이 제한될 수 있다. 이러한 조건은 임의로 한정되어 임의의 데이터 항목에 할당될 수 있다. 예를 들어, 특정 데이터 항목이 특정 지리적 영역에서 및 특정 시간에서만 사용자에 액세스되어야 하는 경우 시스템은 이러한 조건이 충족되지 않으면 사용자가 이 데이터 파일에 액세스하는 것을 허용하지 않을 수 있다. 시스템은 편의를 위해 특정 "준비된" 제한 유형을 제공할 수 있지만 추가 제한이 추가될 수 있다.
시스템은 데이터 요소 레벨에 액세스 제한을 적용한다. 이 접근법은 예를 들어 사회 보장 번호와 같은 각 데이터 항목이 다른 사회 보장 번호와 다를 수 있는 자기 자신의 액세스 제한 세트를 가질 수 있는 유연성을 최대화할 수 있다. 또한 액세스 제한은 임의적일 수 있으며, 부울리안 표현으로 표현되어 메타데이터로 저장될 수 있다. 모든 액세스 제한은 해커가 제한을 발견하거나 변경하지 못하도록 프래그먼트화, 암호화, 해리 및 분산된다.
도 23은 본 발명의 다양한 양태에 따라 데이터 액세스를 제한하는 방법(2300)을 나타내는 흐름도이다. 도 23을 참조하면, 블록(2310)에서, 데이터에 액세스하라는 요청이 개시될 수 있다. 블록(2315)에서, 액세스 제한 및/또는 데이터에 액세스하는 조건이 결정될 수 있다. 액세스 제한/조건에는 사용자 역할, 복합 키, 지리적 위치, 액세스 시간, 액세스 시간 길이, 다른 키에 대한 액세스 순서가 포함될 수 있지만 이에 국한되지는 않는다. 블록(2320)에서, 액세스 제한 및/또는 조건이 평가될 수 있다. 블록(2325)에서, 액세스 제한/조건이 충족되었는지 여부가 결정될 수 있다.
액세스 제한/조건이 충족되지 않았다는 결정(2325-아니오)에 응답하여, 블록(2330)에서 데이터에 대한 액세스가 거부될 수 있다. 액세스 제한/조건이 충족된다는 결정(2325-예)에 응답하여, 블록(2335)에서 데이터에 대한 액세스가 허용될 수 있다.
XII. 해킹
본 발명의 다양한 양태에 따르면, 신속 검출 기술은, 사용 시, 경고, 키 회전 등을 포함하지만 이로 제한되지 않는 지정된 동작을 트리거할 수 있는 "꿀단지 키"를 지원한다. 꿀단지 키는 해커 및/또는 불법 소프트웨어가 발견할 수 있도록 놓아둔 노출된 키이다.
유효한 액세스 키 및 크리덴셜은 사용자가 시스템에 의해 보호되는 데이터에 적절히 액세스하는 데 필요하다. 신속 검출 알고리즘은 부정확한 키를 사용하여 데이터에 액세스하는 경우 예외 이벤트를 트리거한다. 키는 합법적인 사용자가 강제로 입력하는 "강압 키(duress key)"뿐만 아니라 해커가 찾아서 사용하려고 시도하라고 놓아둔 것일 수 있는 "꿀단지" 키를 포함할 수 있다. 부정확하거나 잘못된 키에 의해 야기된 예외 이벤트를 사용하면 키를 자동으로 회전시키고, 사용자를 차단시키고 보안 담당자에게 경고할 수 있다.
도 24는 본 발명의 다양한 양태에 따라 해킹 공격을 검출하고 응답하는 방법(2400)을 도시하는 흐름도이다. 도 24를 참조하면, 블록(2410)에서, 데이터 액세스 요청이 개시되고 시스템에 의해 수신될 수 있다. 블록(2420)에서, 데이터 액세스 요청으로 제공된 액세스 키는 검증될 수 있다. 예를 들어, 신속 검출 알고리즘이 액세스 키에 적용될 수 있다. 블록(2430)에서, 액세스 키가 요청된 데이터에 대해 유효한지 여부가 결정될 수 있다. 액세스 키가 유효하다는 결정(2430-예)에 응답하여, 블록(2440)에서, 요청된 데이터에 대한 액세스가 허가될 수 있다.
액세스 키가 유효하지 않다는 결정(2430-아니오)에 응답하여, 블록(2450)에서 요청된 데이터에 대한 액세스가 거부될 수 있다. 블록(2460)에서, 응답 프로토콜이 개시될 수 있다. 예를 들어, 응답 프로토콜은 데이터 액세스 요청을 개시한 사용자가 완전히 로그아웃되게 하거나, 요청된 데이터 항목에 대해서만 액세스를 거부하거나, 또는 제한된 데이터 세트에 대해서만 액세스를 허용할 수 있다. 대안적으로 또는 추가적으로, 프로토콜은 무효 액세스 키로 액세스가 시도되었다는 것을 시스템 관리자에게 통지하고 및/또는 암호화 키를 회전시키고 및/또는 시스템을 종료시킬 수 있다.
XIII. 랜섬웨어
본 발명의 다양한 양태에 따르면, 랜섬 방지 암호화 보호는 예를 들어 백업 아카이브를 생성하기 위해 데이터가 조작되기 전에 시스템이 예기치 않게 변경되었는지를 결정하기 위해 시스템에 의해 사용되는 "카나리아 파일(canary file)"을 포함할 수 있다. 이 시스템은 랜섬웨어 공격이 발생할 것이라는 가정을 하고 이에 따라 복구를 위해 정기적인 백업을 수행한다. 그러나, 랜섬웨어 바이러스에 감염된 손상된 파일은 백업되어서는 안 된다. 시스템을 사용하여 사용자의 하드 드라이브를 네트워크에 아카이브하는 기업의 경우 사용자의 하드 드라이브에 걸쳐 분산된 작은 파일인 "카나리아 파일"이 사용된다. 이러한 카나리아 파일 중 임의의 파일이 손실되거나 변경되면 드라이브가 손상된 것을 나타낸다. 백업을 수행하기 전에 시스템은 카나리아 파일을 점검하여 감염된 드라이브가 백업되는 것을 방지할 수 있다(그리고 마지막으로 양호한 백업을 덮어쓸 수 있다). 공격으로부터 복구하려면 감염된 하드 드라이브의 내용을 대체하기 위해 마지막으로 양호한 아카이브를 복호화할 수 있다.
도 25는 본 발명의 다양한 양태에 따라 랜섬웨어 공격을 검출하고 응답하는 방법(2500)을 도시한 흐름도이다. 도 25를 참조하면, 블록(2510)에서, 시스템에 의한 디스크 드라이브의 제1 액세스 시에, 시스템은 하나 이상의 카나리아 파일을 설치할 수 있다. 예를 들어, 알려진 작은 파일은 디스크 드라이브 전체에 걸쳐 분산되어 있을 수 있다. 블록(2520)에서, 디스크 드라이브의 상태 점검은 카나리아 파일들이 유효한지 여부를 검증함으로써 수행될 수 있다. 예를 들어, 설치된 카나리아 파일은 카나리아 파일의 예상 수와 내용과 비교될 수 있다. 카나리아 파일이 누락되거나 변경되면 디스크 드라이브가 손상되었음을 나타내는 것일 수 있다.
블록(2530)에서, 디스크 드라이브가 랜섬웨어에 감염되었는지 여부가 결정될 수 있다. 예를 들어, 시스템은 카나리아 파일들 중 임의의 파일이 누락되거나 변경되었는지 여부를 결정할 수 있다. 디스크 드라이브가 감염되지 않았다는 결정(2530-아니오)에 응답하여, 블록(2540)에서, 디스크 드라이브 내용은 암호화되어 다른 디스크 드라이브에 다른 내용으로 백업될 수 있다.
디스크 드라이브가 감염되었다는 결정(2530-예)에 응답하여, 블록(2550)에서 디스크 드라이브의 백업이 지연될 수 있다. 디스크 드라이브 백업을 지연시키면 디스크 드라이브 내용의 마지막으로 알려진 양호한 사본을 무시하는 것을 방지한다. 블록(2560)에서, 경고는 감염된 디스크 드라이브를 관리자에게 통지하도록 트리거될 수 있다. 블록(2570)에서, 디스크 드라이브 내용은 이전에 백업된 버전으로부터 복원될 수 있다.
XIV. 암호화된 데이터 서치
본 발명의 다양한 양태에 따르면, 사전-색인 데이터에 대한 가속 액세스 레코드(Accelerated Access Record: AAR)는 색인될 데이터와 별도로 저장되고, 분석 및 보고를 제공하기 위해 제3자 소프트웨어에 의해 마이닝(mined)될 수 있다. AAR은 고급 분석 및 보고 기능을 제공하는 제3자 서치 도구에 통합할 수 있는 최적화된 서치 레코드이다. 이러한 서치 레코드는 시스템에 의해 보안 목적으로 다른 서버에 별도로 저장될 수 있다. 또한 시스템 보안 소프트웨어를 실행하는 이 제2 서버는 제3자 액세스 및/또는 제3자 서치 도구를 허용하는 별도의 인증 계층을 가질 수 있다.
도 26은 본 발명의 다양한 양태에 따라 암호화된 데이터를 서치할 수 있는 방법(2600)을 나타내는 흐름도이다. 도 26을 참조하면, 블록(2610)에서, 데이터는 시스템의 디스크 상에 저장된다. 블록(2620)에서, 데이터가 서치 가능해야 할지 여부를 결정하기 위해 데이터가 점검될 수 있다. 데이터가 서치 가능하지 않아야 한다는 결정(2630-아니오)에 응답하여, 블록(2640)에서 시스템은 디스크 내용을 암호화하고 백업할 수 있다.
데이터가 서치 가능하다는 결정(2630-예)에 응답하여, 블록(2650)에서 시스템은 시스템 상의 원격 서버 드라이브에 가속 액세스 레코드(AAR)를 추가할 수 있다. 블록(2660)에서, 데이터가 서치될 때, AAR은 암호화된 내용을 서치하기 위해 액세스될 수 있다.
XV. 데이터 암호화
본 발명의 다양한 양태에 따르면, 시스템에 의해 암호화된 모든 데이터는 가상 암호화 컨테이너(Virtual Cryptographical Container: VCC)라고 불리우는 사용자 한정 가능한 위치 세트로 저장되고 조직될 수 있다. 암호화된 데이터는 VCC 내 다수의 데이터 저장소에 걸쳐 분산될 수 있다. 이러한 VCC는 예를 들어, USB 스틱을 포함하지만 이들로 제한되지 않는 단일 장치로부터 다수의 데이터 센터에 걸쳐 있을 수 있으며, 동적으로 한정할 수 있는 위치를 가질 수 있다. 이러한 VCC를 다른 장치에 권한 없이 재배치하는 것은 시스템에 의해 검출 가능하고, 액세스 및 키 회전을 디스에이블하는 것을 포함하는 임의의 개수의 동작을 트리거할 수 있다.
VCC는 전체적으로 단일 드라이브 상에 존재하거나 또는 다수의 데이터 센터 및 형식에 걸쳐 다수의 드라이브 상에 존재하도록 구성될 수 있다. 이 접근법의 유연성은 암호화된 데이터가 저장되는 방식 또는 위치를 애플리케이션이 신경 쓰지 않도록 저장소를 가상화하는 시스템의 능력에서 비롯된다. 애플리케이션은 시스템과 상호 작용하며 암호화할 데이터를 송신하고 복호화할 데이터를 검색하기만 하면 된다. 시스템은 하나 이상의 저장 위치를 관리할 수 있다. 이 접근법의 일부 장점은 다음을 포함할 수 있다:
Figure pct00003
VCC는 단일 하드 드라이브에 완전히 있어서 다른 하드 드라이브로 안전하게 운반되는 것을 용이하게 할 수 있다. 예를 들어, VCC는 USB 스틱에 배치하고, 시스템이 이 VCC에 액세스하는 데 사용될 시간까지 완전히 암호화된 상태로 유지될 수 있다.
Figure pct00004
VCC는 특정 상황 하에서 그 사용을 제한하는 마커를 가질 수 있다. 예를 들어 VCC는 특정 드라이브나 하드웨어 MAC 주소 또는 일부 다른 시그너처 ID에 위치될 때에만 작동하도록 인코딩될 수 있다. VCC는 특정 지리적 위치 또는 확실한 시간 또는 날짜에 액세스될 때에만 작동하도록 제한될 수 있다. 이러한 VCC 조건이 충족되지 않는 한, 시스템은 데이터를 암호화하거나 복호화할 수 없을 수 있다.
Figure pct00005
VCC는 기본 저장 매체가 무엇인지 및 이 매체에 필요한 특정 API가 무엇인지를 애플리케이션이 알아야 할 것을 제거한다. 이 서비스를 이용할 수 있기 전에 애플리케이션에 통합되어야 하는 고유한 API를 모두 갖는, 예를 들어, 아마존(Amazon) S3 및 MS 아주르(Azure)와 같은 많은 클라우드 데이터 저장소가 있다. 시스템은 직접 장치 저장소를 포함하여 모든 저장 옵션에 단일 API를 제공할 수 있다.
Figure pct00006
복제 및 백업 옵션은 VCC의 사용을 통해 용이해지며 다양한 옵션이 존재할 수 있다. 예를 들어 VCC가 태블릿 컴퓨터와 같은 단일 장치에 전체적으로 저장된 경우 VCC는 주기적으로 중복되어 백업으로서 오프 장치에 저장될 수 있다. VCC가 다수의 저장 위치에 걸쳐 있는 경우 시스템은 각 저장 요청을 실시간으로 병렬 VCC에 복제하도록 구성될 수 있다. 기본 데이터 저장소(예를 들어, 아마존 S3 클라우드)는 시스템과 끊김 없이 작동할 수 있는 자기 자신의 백업 프로세스를 가질 수도 있다.
도 27은 본 발명의 다양한 양태에 따라 암호화된 데이터를 저장하기 위한 가상 암호화 컨테이너를 이용하는 방법(2700)을 나타내는 흐름도이다. 도 27을 참조하면, 블록(2710)에서, 이용 가능한 저장 위치들 각각으로의 경로 이름을 포함하는 셋업 구성 파일이 지정될 수 있다. 저장 위치는 장치의 하드 디스크 드라이브에 있거나, LAN에서 또는 WAN을 통해 원격 클라우드 서비스 종단점에 장착된 드라이브에 있거나, 또는 이들의 조합일 수 있다. 셋업 구성 파일은 다른 시스템 옵션을 지정할 수도 있다.
블록(2720)에서, 시스템은 론칭(launched)될 수 있고, 블록(2740)에서 VCC가 수립될 수 있다. 예를 들어, 시스템은 셋업 구성 파일을 판독하고 후속 액세스를 위해 VCC를 수립할 수 있다. 블록(2750)에서, 시스템은 데이터를 암호화하거나 복호화하기 위해 액세스될 수 있다. 예를 들어 데이터를 암호화하거나 복호화해야 하는 애플리케이션이 시스템에 API 호출을 할 수 있다. 블록(2760)에서, 데이터는 애플리케이션에 의해 요청된 바와 같이 VCC를 통해 암호화되거나 복호화될 수 있다. 예를 들어, 시스템은, VCC에 데이터를 암호화하고 저장하거나 VCC에 저장된 데이터를 검색하고 복호화함으로써 애플리케이션의 요청을 실행할 수 있다.
XVI. 추가 특징
본 발명의 다양한 양태에 따르면, 시스템은 규제 제한에 적응할 수 있는 능력을 갖는 보안 엔진을 포함할 수 있다. 이 시스템은 비-수출 제한된 AES-128 이하의 암호로 구성될 수 있다. 대안적으로 시스템은 FIPS 140-2 라이브러리 또는 외부 암호화 하드웨어 기기를 이용하도록 구성될 수 있다. 이 시스템은 임의의 암호화 암호에 묶여 있지 않아서, 사용자의 필요성과 요구 사항에 따라 적응하고 성장한다. 예를 들어, 강력한 암호 라이브러리를 시스템에 내보낼 수 없는 국가의 사용자는 미국 수출 법에서 허용되는 라이브러리로 구성될 수 있다.
또한, 시스템은 중앙 서버 또는 암호화 기기로서 동작할 수 있을 뿐만 아니라 캡처 시에 데이터를 보호하기 위해 종단점 장치에서 실행할 수 있는 능력을 가질 수 있다. 본 발명에 따르면, 데이터 프래그먼트는 해커가 전송 중인 데이터를 변경할 가능성을 제거하기 위해 수신 시에 위조 검출을 할 수 있다. 시스템은 개별 프래그먼트들이 수신될 때 개별 프래그먼트들을 인증한다. 여러 방법을 사용하여 GCM 기반 AES-256 암호화를 포함하되 이에 국한되지 않는 인증을 수행할 수 있다. 이 인증에 실패한 프래그먼트는 위조된 것으로 식별되어 거부될 수 있다. 구성에 따라 프후시(FHOOSH)는 키 회전, 연결 종료와 같은 다양한 방식으로 또는 프래그먼트를 재송신하는 것에 의해 응답할 수 있다.
다양한 실시예가 상기에서 설명되었지만, 이들 실시예는 단지 예로서 제시된 것일 뿐 본 발명을 제한하려고 의도된 것이 아님을 이해해야 한다. 폭과 범위는 전술한 예시적인 실시예들 중 어느 것에 의해서도 제한되어서는 안 된다. 본 문서가 이 기술 분야에 통상의 지식을 가진 자에게 명백하거나 알려진 기술을 언급할 때, 이러한 기술은 이 기술 분야에 통상의 지식을 가진 자가 현재 또는 미래에 명백하거나 알려져 있는 기술을 포함한다. 또한, 설명된 실시예는 도시된 예시적인 아키텍처 또는 구성으로 제한되지 않지만, 원하는 특징은 다양한 대안적인 아키텍처 및 구성을 사용하여 구현될 수 있다. 본 문서를 읽은 후에 이 기술 분야에 통상의 지식을 가진 자에 명백한 것일 수 있는 바와 같이, 도시된 실시예 및 그 다양한 대안은 도시된 예로 한정되지 않고 구현될 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 설명된 실시예의 원하는 특징을 구현하기 위해 대안적인 기능적, 논리적 또는 물리적 분할 및 구성을 이용할 수 있는 방식을 또한 이해할 수 있을 것이다.
또한, 항목, 요소 또는 구성 요소가 단수로 기술되거나 청구될 수 있지만, 복수는 단수로 제한하는 것이 명시적으로 언급되지 않는 한, 단수형은 복수를 포함하는 것으로 고려된다. 일부 경우에 "하나 이상", "적어도", "그러나 이에 국한되지 않는" 또는 다른 유사한 어구와 같은 확장된 단어 및 어구는 이러한 확장 어구가 없는 경우에 더 좁은 경우가 의도되거나 요구되는 것을 의미하는 것으로 읽혀져서는 안 된다.

Claims (85)

  1. 제1 데이터 객체를 저장하는 방법으로서,
    클라이언트 장치에서, 상기 제1 데이터 객체를 제1 오리지널 레코드 로케이터(original record locator)와 연관된 제1 프래그먼트(fragment) 및 제2 오리지널 레코드 로케이터와 연관된 제2 프래그먼트로 분해하는 단계;
    상기 클라이언트 장치에서, 상기 제1 오리지널 레코드 로케이터를 난독화하여 제1 난독화된 레코드 로케이터를 생성하고, 상기 제2 오리지널 레코드 로케이터를 난독화하여 제2 난독화된 레코드 로케이터를 생성하는 단계;
    상기 클라이언트 장치에서, 제1 암호화 키를 사용하여 상기 제1 프래그먼트를 암호화하고 제2 암호화 키를 사용하여 상기 제2 프래그먼트를 암호화하는 단계; 및
    대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화된 프래그먼트를 복수의 저장 위치 중 적어도 제1 저장 위치에 저장하는 단계를 포함하는, 제1 데이터 객체를 저장하는 방법.
  2. 제1항에 있어서, 상기 제1 데이터 객체는 분해 함수(decomposition function)를 적용하여 분해되는, 제1 데이터 객체를 저장하는 방법.
  3. 제2항에 있어서, 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 상기 분해 함수를 선택하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  4. 제3항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 방법.
  5. 제2항에 있어서, 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  6. 제5항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 하나 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 방법.
  7. 제1항에 있어서, 상기 제1 오리지널 레코드 로케이터에 적어도 부분적으로 기초하여 상기 제1 암호화 키를 결정하고 상기 제2 오리지널 레코드 로케이터에 적어도 부분적으로 기초하여 상기 제2 암호화 키를 결정하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  8. 제7항에 있어서, 상기 제1 암호화 키 및 상기 제2 암호화 키는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 더 결정되는, 제1 데이터 객체를 저장하는 방법.
  9. 제8항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 방법.
  10. 제8항에 있어서, 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  11. 제10항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 이상 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 방법.
  12. 제1항에 있어서, 상기 제1 프래그먼트 및 상기 제2 프래그먼트를 암호화하기 전에 상기 제1 프래그먼트 및 상기 제2 프래그먼트 각각을 난독화하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  13. 제1항에 있어서, 상기 제1 프래그먼트는 상기 제1 암호화 키를 사용하여 상기 제2 암호화 키로 암호화되고, 상기 제2 프래그먼트는 상기 제2 암호화 키를 사용하여 제3 암호화 키로 암호화되며, 상기 제3 암호화 키는 상기 제1 데이터 객체의 제3 프래그먼트를 암호화하는데 사용되는, 제1 데이터 객체를 저장하는 방법.
  14. 제1항에 있어서, 상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각을 난독화하는 단계는,
    상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각을 변경하는 단계; 및
    상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각에 난독화 기능을 적용하는 단계를 포함하는, 제1 데이터 객체를 저장하는 방법.
  15. 제14항에 있어서, 상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각은 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 난독화되는, 제1 데이터 객체를 저장하는 방법.
  16. 제15항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 방법.
  17. 제15항에 있어서, 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  18. 제27항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 하나 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 방법.
  19. 제1항에 있어서, 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화된 프래그먼트를 저장하기 위해 상기 복수의 저장 위치 중 적어도 제1 저장 위치를 식별하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  20. 제19항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 방법.
  21. 제19항에 있어서, 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  22. 제1항에 있어서, 일련의 상기 제1 데이터 객체의 상기 제1 프래그먼트 및 상기 제2 프래그먼트, 상기 제1 암호화 키 및 상기 제2 암호화 키, 상기 제1 난독화된 레코드 로케이터 및 상기 제2 난독화된 레코드 로케이터, 및 상기 복수의 저장 위치 중 적어도 상기 제1 저장 위치의 색인 중 하나 이상을 포함하는 데이터 맵(data map)을 생성하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  23. 제22항에 있어서, 상기 데이터 맵을 암호화하고 상기 암호화된 데이터 맵을 저장하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  24. 제22항에 있어서, 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 상기 데이터 맵의 내용을 변경하는 단계를 더 포함하는, 제1 데이터 객체를 저장하는 방법.
  25. 제24항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 방법.
  26. 제1 데이터 객체를 저장하는 시스템으로서,
    복수의 저장 위치;
    하나 이상의 프로세서를 포함하는 보안 플랫폼; 및
    하나 이상의 프로세서를 포함하는 클라이언트 장치를 포함하고, 상기 클라이언트 장치는,
    상기 제1 데이터 객체를 제1 오리지널 레코드 로케이터와 연관된 제1 프래그먼트 및 제2 오리지널 레코드 로케이터와 연관된 제2 프래그먼트로 분해하는 동작;
    상기 제1 오리지널 레코드 로케이터를 난독화하여 제1 난독화된 레코드 로케이터를 생성하고, 상기 제2 오리지널 레코드 로케이터를 난독화하여 제2 난독화된 레코드 로케이터를 생성하는 동작;
    제1 암호화 키를 사용하여 상기 제1 프래그먼트를 암호화하고, 제2 암호화 키를 사용하여 상기 제2 프래그먼트를 암호화하는 동작; 및
    대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화된 프래그먼트를 상기 복수의 저장 위치 중 적어도 제1 저장 위치에 저장하는 동작을 수행하도록 구성된, 제1 데이터 객체를 저장하는 시스템.
  27. 제26항에 있어서, 상기 제1 데이터 객체를 분해하기 위해, 상기 하나 이상의 프로세서는 분해 함수를 적용하도록 구성된, 제1 데이터 객체를 저장하는 시스템.
  28. 제27항에 있어서, 상기 하나 이상의 프로세서는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 상기 분해 함수를 선택하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  29. 제28항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  30. 제27항에 있어서, 상기 하나 이상의 프로세서는 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  31. 제30항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 하나 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  32. 제26항에 있어서, 상기 하나 이상의 프로세서는 상기 제1 오리지널 레코드 로케이터에 적어도 부분적으로 기초하여 상기 제1 오리지널 레코드 로케이터를 결정하고, 상기 제2 오리지널 레코드 로케이터에 적어도 부분적으로 기초하여 상기 제2 암호화 키를 결정하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  33. 제32항에 있어서, 상기 하나 이상의 프로세서는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 더 기초하여 상기 제1 암호화 키 및 상기 제2 암호화 키를 결정하도록 구성되는, 제1 데이터 객체를 저장하는 시스템.
  34. 제33항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  35. 제33항에 있어서, 상기 하나 이상의 프로세서는 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  36. 제35항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 하나 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  37. 제26항에 있어서, 상기 하나 이상의 프로세서는 상기 제1 프래그먼트 및 상기 제2 프래그먼트를 암호화하기 전에 상기 제1 프래그먼트 및 상기 제2 프래그먼트 각각을 난독화하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  38. 제26항에 있어서, 상기 제1 프래그먼트는 상기 제1 암호화 키를 사용하여 상기 제2 암호화 키로 암호화되고, 상기 제2 프래그먼트는 상기 제2 암호화 키를 사용하여 제3 암호화 키로 암호화되며, 상기 제3 암호화 키는 상기 제1 데이터 객체의 제3 프래그먼트를 암호화하는데 사용되는, 제1 데이터 객체를 저장하는 시스템.
  39. 제26항에 있어서, 상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각을 난독화시키기 위해, 상기 하나 이상의 프로세서는,
    상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터의 각각을 변경하는 동작; 및
    상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터의 각각에 난독화 기능을 적용하는 동작을 수행하도록 구성된, 제1 데이터 객체를 저장하는 시스템.
  40. 제39항에 있어서, 상기 하나 이상의 프로세서는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 상기 제1 오리지널 레코드 로케이터 및 상기 제2 오리지널 레코드 로케이터 각각을 난독화하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  41. 제40항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 시스템
  42. 제50항에 있어서, 상기 하나 이상의 프로세서는 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  43. 제42항에 있어서, 상기 트리거는 상기 제1 데이터 객체, 제2 데이터 객체, 상기 복수의 저장 위치 중 상기 제1 저장 위치, 및 상기 복수의 저장 위치 중 제2 저장 위치 중 하나 이상에 대한 보안 침해를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  44. 제26항에 있어서, 상기 하나 이상의 프로세서는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 대응하는 상기 제1 난독화된 레코드 로케이터와 함께 상기 제1 암호화된 프래그먼트 및 상기 제2 난독화된 레코드 로케이터와 함께 상기 제2 암호화 프래그먼트를 저장하기 위해 상기 복수의 저장 위치 중 적어도 상기 제1 저장 위치를 식별하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  45. 제44항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  46. 제44항에 있어서, 상기 하나 이상의 프로세서는 트리거를 검출한 것에 응답하여 상기 하나 이상의 변수 저장 파라미터를 변경하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  47. 제26항에 있어서, 상기 하나 이상의 프로세서는 일련의 상기 제1 데이터 객체의 상기 제1 프래그먼트 및 상기 제2 프래그먼트, 상기 제1 암호화 키 및 상기 제2 암호화 키, 상기 제1 난독화된 레코드 로케이터 및 상기 제2 난독화된 레코드 로케이터, 및 상기 복수의 저장 위치 중 적어도 상기 제1 저장 위치의 색인 중 하나 이상을 포함하는 데이터 맵을 생성하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  48. 제47항에 있어서, 상기 하나 이상의 프로세서는 상기 데이터 맵을 암호화하고 상기 암호화된 데이터 맵을 저장하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  49. 제47항에 있어서, 상기 하나 이상의 프로세서는 하나 이상의 변수 저장 파라미터에 적어도 부분적으로 기초하여 상기 데이터 맵의 내용을 변경하도록 더 구성된, 제1 데이터 객체를 저장하는 시스템.
  50. 제49항에 있어서, 상기 하나 이상의 변수 저장 파라미터는 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 제1 데이터 객체의 유형, 상기 제1 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 적어도 하나를 포함하는, 제1 데이터 객체를 저장하는 시스템.
  51. 데이터 객체를 검색하는 방법으로서,
    상기 데이터 객체를 검색하고 재구성하는데 필요한 정보의 적어도 제1 부분을 포함하는 데이터 맵을 검색하는 단계;
    상기 데이터 객체를 검색하고 재구성하는데 필요한 상기 정보의 적어도 제2 부분을 동적으로 도출하기 위해 하나 이상의 계산을 수행하는 단계; 및
    복수의 데이터 저장 위치 중 적어도 제1 저장 위치로부터 상기 데이터 객체를 검색하고, 상기 데이터 맵에 포함된 정보 및 하나 이상의 계산을 통해 동적으로 도출된 정보 중 하나 이상에 기초하여 상기 데이터 객체를 재구성하는 단계를 포함하는, 데이터 객체를 검색하는 방법.
  52. 제51항에 있어서, 상기 데이터 객체를 검색하고 재구성하는데 필요한 정보는 일련의 상기 데이터 객체의 복수의 프래그먼트, 상기 복수의 프래그먼트 각각을 암호화하는데 사용되는 암호화 키, 상기 복수의 프래그먼트 각각과 연관된 난독화된 레코드 로케이터, 및 상기 복수의 프래그먼트 각각이 저장된 상기 복수의 저장 위치 중 적어도 상기 제1 위치의 색인을 포함하는, 데이터 객체를 검색하는 방법.
  53. 제51항에 있어서, 상기 하나 이상의 계산은 상기 데이터 맵에 포함되지 않은 상기 데이터 객체를 검색하고 재구성하는데 필요한 상기 정보의 일부분을 동적으로 도출하도록 수행되는, 데이터 객체를 검색하는 방법.
  54. 제51항에 있어서, 상기 하나 이상의 계산은 상기 데이터 객체를 복수의 프래그먼트로 분해하기 위해 적용된 분해 함수를 결정하는 단계; 상기 복수의 프래그먼트 각각과 연관된 난독화된 레코드 로케이터를 결정하는 단계; 상기 복수의 프래그먼트 각각을 암호화하는데 사용된 암호화 키를 계산하는 단계; 및 상기 복수의 프래그먼트 각각이 저장된 상기 복수의 저장 위치 중 적어도 상기 제1 저장 위치를 식별하는 단계를 포함하는, 데이터 객체를 검색하는 방법.
  55. 제51항에 있어서, 상기 데이터 맵의 내용을 변경하는 것은 상기 데이터 객체를 검색하고 재구성하는데 필요한 상기 정보의 상기 제2 부분을 동적으로 도출하기 위해 수행될 필요가 있는 계산의 정도를 변경하고, 상기 데이터 맵의 내용은 사용자이름, 사용자 패스워드, 현재 보안 모델, 상기 데이터 객체의 유형, 상기 데이터 객체의 크기, 하나 이상의 보안 요구 사항, 및 하나 이상의 성능 요구 사항 중 하나 이상에 기초하여 변경되는, 데이터 객체를 검색하는 방법.
  56. 크리덴셜(credential) 및 암호화 키를 저장하고 관리하기 위한 시스템으로서,
    제1 데이터 저장소 및 제2 데이터 저장소;
    상기 제1 데이터 저장소에 저장된 사용자 데이터를 검색하라는 요청을 전송하도록 구성된 클라이언트 장치; 및
    보안 키 플랫폼을 포함하고, 상기 보안 키 플랫폼은,
    상기 제1 데이터 저장소에 저장된 상기 사용자 데이터와 별도로 상기 제2 데이터 저장소에 사용자 크리덴셜 및 데이터 저장소 크리덴셜을 저장하는 동작;
    상기 클라이언트 장치로부터, 상기 제1 데이터 저장소에 저장된 사용자 데이터를 검색하라는 요청을 수신하는 동작;
    사용자 데이터를 검색하라는 요청에 응답하여, 상기 제2 데이터 저장소로부터, 상기 클라이언트 장치의 사용자와 연관된 사용자 크리덴셜, 및 상기 제1 데이터 저장소와 연관된 데이터 저장소 크리덴셜을 검색하는 동작;
    상기 클라이언트 장치의 사용자의 상기 사용자 크리덴셜 및 상기 제1 데이터 저장소의 데이터 저장소 크리덴셜을 사용하여 상기 제1 데이터 저장소로부터 사용자 데이터를 검색하는 동작; 및
    상기 사용자 데이터를 상기 클라이언트 장치에 제공하는 동작을 수행하도록 구성된, 크리덴셜 및 암호화 키를 저장하고 관리하기 위한 시스템.
  57. 제1항에 있어서, 상기 보안 키 플랫폼은 브라우저 유형, 플러그인, 하드웨어 설정 및 지리적 위치 중 하나 이상을 검증하고 레코드하는 것에 의한 것을 포함하여 상기 클라이언트 장치를 등록하도록 더 구성된, 시스템.
  58. 제2항에 있어서, 상기 보안 키 플랫폼은 하나 이상의 도전 질문(challenge question)을 제기하고 상기 하나 이상의 도전 질문에 대한 응답을 저장함으로써 상기 클라이언트 장치를 등록하도록 더 구성된, 시스템.
  59. 제1항에 있어서, 상기 클라이언트 장치는 상기 보안 키 플랫폼에 로그인하려고 시도하도록 더 구성되고, 상기 보안 키 플랫폼은 상기 사용자 크리덴셜 및 상기 데이터 저장소 크리덴셜을 검색하기 전에 및 상기 제1 데이터 저장소로부터 사용자 데이터를 검색하기 위해 상기 사용자 크리덴셜 및 데이터 저장소 크리덴셜을 사용하기 전에 상기 클라이언트 장치를 인증하도록 더 구성된, 시스템.
  60. 제4항에 있어서, 상기 보안 키 플랫폼은 상기 클라이언트 장치를 성공적으로 인증한 것에 응답하여 상기 사용자 크리덴셜을 자동으로 검색하도록 구성된, 시스템.
  61. 제4항에 있어서, 상기 보안 키 플랫폼은 상기 사용자에 의해 제공된 사용자이름, 상기 사용자에 의해 제공된 패스워드, 상기 사용자에 의해 제공되는 적어도 하나의 도전 질문에 대한 응답, 상기 클라이언트 장치의 브라우저 유형, 상기 클라이언트 장치의 플러그인, 상기 클라이언트 장치의 하드웨어 설정, 상기 클라이언트 장치의 지리적 위치, 및 상기 클라이언트 장치가 로그인을 시도하는 인터넷 프로토콜(IP) 주소 중 하나 이상에 기초하여 상기 클라이언트 장치를 인증하도록 구성된, 시스템.
  62. 제1항에 있어서, 상기 사용자 크리덴셜은 제1 패스워드를 포함하는, 시스템.
  63. 제7항에 있어서, 상기 제1 데이터 저장소에 저장된 상기 사용자 데이터는 상기 제1 패스워드를 사용하여 암호화되는, 시스템.
  64. 제7항에 있어서, 상기 제1 패스워드는 제2 패스워드에 대한 액세스를 제어하고, 상기 제1 데이터 저장소에 저장된 상기 사용자 데이터는 상기 제2 패스워드를 사용하여 암호화되는, 시스템.
  65. 제1항에 있어서, 보안 객체 플랫폼을 더 포함하며, 상기 보안 객체 플랫폼은,
    상기 사용자 데이터를 복수의 세그먼트로 분해하는 동작; 및
    상기 분해된 사용자 데이터의 상기 복수의 세그먼트를 상기 제1 데이터 저장소를 포함하는 복수의 데이터 저장소에 걸쳐 저장하는 동작을 수행하도록 구성된, 시스템.
  66. 장치들 간에 인증된 통신을 수행하는 방법으로서,
    제1 장치와 제2 장치 간에 데이터를 스트리밍하기 위한 통신을 수립하는 단계;
    공유 키를 수립하는 단계;
    상기 제1 장치와 상기 제2 장치 간에 상기 공유 키를 교환하는 단계;
    상기 공유 키를 사용하여 상기 제1 장치에 의해 데이터세트를 암호화하는 단계;
    상기 공유 키를 사용하여 상기 제2 장치에 의해 상기 데이터세트를 복호화하는 단계;
    상기 공유 키를 재생성해야 할지 여부를 결정하기 위해 키 재생성 기준을 평가하는 단계;
    상기 공유 키를 재생성해야 한다고 결정한 것에 응답하여, 새로운 공유 키를 생성하는 단계; 및
    상기 새로운 공유 키를 사용하여 상기 제1 장치에 의해 그 다음 데이터세트를 암호화하는 단계를 포함하는, 장치들 간에 인증된 통신을 수행하는 방법.
  67. 제1항에 있어서, 상기 공유 키를 수립하는 단계는 암호화 알고리즘 파라미터 및 암호화 알고리즘을 위한 시드(seed)를 제공하는 단계를 포함하는, 방법.
  68. 제1항에 있어서, 상기 공유 키를 교환하는 단계는 복수의 키 교환 방법을 통합하는 단계를 포함하는, 방법.
  69. 제3항에 있어서,
    상기 키 교환 방법 및 키 교환의 빈도 중 적어도 하나를 동적으로 변화시키는 단계를 더 포함하는, 방법.
  70. 제4항에 있어서, 상기 키 교환 방법 및 키 교환 빈도 중 적어도 하나는 상기 제1 장치 또는 상기 제2 장치의 성능 요구 사항 및 보안 위협 레벨에 기초하여 동적으로 변하는, 방법.
  71. 제1항에 있어서, 상기 공유 키를 재생성해야 할지 여부를 결정하기 위해 키 재생성 기준을 평가하는, 방법.
  72. 제6항에 있어서, 상기 키 재생성 기준은 가능한 암호화 알고리즘 및 상기 암호화 알고리즘을 위한 특정 파라미터를 식별하는, 방법.
  73. 제6항에 있어서, 키 재생성 기준이 충족될 때까지 상기 공유 키를 재생성해야 할 때를 나타내는 조건을 모니터링하는 단계를 더 포함하는, 방법.
  74. 제1항에 있어서, 상기 새로운 공유 키를 생성하는 단계는 상기 공유 키에 대해 새로운 암호화 알고리즘 파라미터를 제공하는 단계를 포함하는, 방법.
  75. 제1항에 있어서,
    보안 키를 이용하고 데이터세트의 키 회전 속도를 최대화하여 높은 보안을 제공하는 단계를 더 포함하는, 방법.
  76. 장치들 간에 인증된 통신을 수행하기 위한 시스템으로서,
    통신 인터페이스; 및
    프로세서를 포함하고, 상기 프로세서는,
    제1 장치와 제2 장치 사이에 데이터를 스트리밍하기 위한 통신을 수립하는 동작;
    공유 키를 수립하는 동작;
    상기 제1 장치와 상기 제2 장치 사이에 상기 공유 키를 교환하는 동작;
    상기 공유 키를 사용하여 상기 제1 장치에 의해 데이터세트를 암호화하는 동작으로서, 상기 제2 장치는 상기 공유 키를 사용하여 상기 데이터세트를 복호화하는, 상기 암호화하는 동작;
    상기 공유 키를 재생성해야 할지 여부를 결정하기 위해 키 재생성 기준을 평가하는 동작;
    상기 공유 키를 재생성해야 한다는 결정에 응답하여, 새로운 공유 키를 생성하는 동작; 및
    상기 새로운 공유 키를 사용하여 상기 제1 장치에 의해 그 다음 데이터세트를 암호화하는 동작을 수행하도록 구성된, 장치들 간에 인증된 통신을 수행하기 위한 시스템.
  77. 제11항에 있어서, 상기 프로세서는 암호화 알고리즘 파라미터 및 암호화 알고리즘을 위한 시드를 제공함으로써 공유 키를 수립하도록 더 구성된, 시스템.
  78. 제11항에 있어서, 상기 프로세서는 상기 공유 키를 교환하기 위한 복수의 키 교환 방법을 통합하도록 더 구성된, 시스템.
  79. 제13항에 있어서, 상기 프로세서는, 상기 키 교환 방법 및 키 교환 빈도 중 적어도 하나를 동적으로 변경하도록 더 구성된, 시스템.
  80. 제14항에 있어서, 상기 키 교환기 방법 및 키 교환 빈도 중 적어도 하나는 상기 제1 장치 또는 상기 제2 장치의 성능 요구 사항과 보안 위협 레벨에 기초하여 동적으로 변하는, 시스템.
  81. 제11항에 있어서, 상기 프로세서는,
    상기 공유 키를 재생성해야 할지 여부를 결정하기 위해 키 재생성 기준을 평가하도록 더 구성된, 시스템.
  82. 제16항에 있어서, 상기 키 재생성 기준은 가능한 암호화 알고리즘 및 상기 암호화 알고리즘을 위한 특정 파라미터를 식별하는, 시스템.
  83. 제16항에 있어서, 상기 프로세서는,
    상기 키 재생성 기준이 충족될 때까지 상기 공유 키를 재생성해야 할 때를 나타내는 조건을 모니터링하도록 더 구성된, 시스템.
  84. 제11항에 있어서, 상기 프로세서는,
    새로운 암호화 알고리즘 파라미터를 제공하여 상기 공유 키를 생성하도록 더 구성된, 시스템.
  85. 제11항에 있어서,
    상기 프로세서는,
    보안 키를 이용하고 데이터세트의 키 회전 속도를 최대화하여 높은 보안을 제공하도록 더 구성된 것을 포함하는, 시스템.
KR1020187032660A 2016-06-13 2017-06-13 사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법 KR20190029509A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662349567P 2016-06-13 2016-06-13
US62/349,567 2016-06-13
US201662350646P 2016-06-15 2016-06-15
US62/350,646 2016-06-15
PCT/US2017/037328 WO2017218590A1 (en) 2016-06-13 2017-06-13 Systems and methods for secure storage of user information in a user profile

Publications (1)

Publication Number Publication Date
KR20190029509A true KR20190029509A (ko) 2019-03-20

Family

ID=60664621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187032660A KR20190029509A (ko) 2016-06-13 2017-06-13 사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법

Country Status (9)

Country Link
EP (1) EP3469512A4 (ko)
JP (1) JP2019521537A (ko)
KR (1) KR20190029509A (ko)
CN (1) CN109154969A (ko)
AU (1) AU2017283544A1 (ko)
CA (1) CA3020743A1 (ko)
PH (1) PH12018502160A1 (ko)
SG (1) SG11201808929PA (ko)
WO (1) WO2017218590A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102274335B1 (ko) * 2020-11-16 2021-07-07 한화생명보험(주) 복수의 상담원을 통한 채팅기반 고객 프로파일 생성 방법 및 장치
US11899814B1 (en) 2022-08-24 2024-02-13 Arthur Hustad Method and system for providing control over storage of and access to user data

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726563B (zh) 2017-10-31 2020-11-03 创新先进技术有限公司 一种数据统计的方法、装置以及设备
CN110378132A (zh) * 2019-06-20 2019-10-25 深圳市掌握时代互联网应用科技有限公司 一种基于logistic混沌映射的探宝用户真实信息加密***
CN110958263B (zh) * 2019-12-13 2022-07-12 腾讯云计算(北京)有限责任公司 网络攻击检测方法、装置、设备及存储介质
CN111740954B (zh) * 2020-05-18 2021-05-11 北京索德电气工业有限公司 电梯主控制器和电梯板卡通信加密方法
CN111865991B (zh) * 2020-07-23 2021-04-30 北京睿知图远科技有限公司 一种用于数据加密中心的动态加密及解密方法
CN112905533B (zh) * 2021-02-05 2023-04-25 优车库网络科技发展(深圳)有限公司 文件提交的管理方法、装置、设备及存储介质
US12010218B2 (en) * 2021-10-29 2024-06-11 Google Llc Managing data availability on encryption key status changes in replicated storage systems
WO2023113772A1 (en) * 2021-12-13 2023-06-22 Hewlett-Packard Development Company, L.P. Suspicious activity notifications via canary files
CN115168690B (zh) * 2022-09-06 2022-12-27 深圳市明源云科技有限公司 基于浏览器插件的资料查询方法、装置、电子设备及介质
CN115544994B (zh) * 2022-12-01 2023-05-05 爱集微咨询(厦门)有限公司 数据推送方法、装置、电子设备以及可读存储介质
CN117544622B (zh) * 2023-11-07 2024-06-21 翼健(上海)信息科技有限公司 一种用户可控的隐私数据授权共享方法、***和介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681017B1 (en) * 1997-09-03 2004-01-20 Lucent Technologies Inc. Simplified secure shared key establishment and data delivery protocols for electronic commerce
US7386878B2 (en) * 2002-08-14 2008-06-10 Microsoft Corporation Authenticating peer-to-peer connections
EA010611B1 (ru) * 2004-02-13 2008-10-30 АйВиАй СМАРТ ТЕКНОЛОДЖИЗ, ИНК. Способ (варианты) и устройство для криптографической обработки данных (варианты)
JP2008103988A (ja) * 2006-10-19 2008-05-01 Fujitsu Ltd 暗号通信システム、装置、方法及びプログラム
US8688986B2 (en) * 2006-12-27 2014-04-01 Intel Corporation Method for exchanging strong encryption keys between devices using alternate input methods in wireless personal area networks (WPAN)
US7769951B2 (en) * 2007-04-10 2010-08-03 Yahoo! Inc. Intelligent caching of user data for real time communications
JP4856743B2 (ja) * 2009-08-06 2012-01-18 株式会社バッファロー 無線通信装置、無線通信システム、および、ネットワーク装置
US8996863B2 (en) * 2010-12-03 2015-03-31 Yacov Yacobi Attribute-based access-controlled data-storage system
US20120266217A1 (en) * 2011-04-15 2012-10-18 Skype Limited Permitting Access To A Network
US10635692B2 (en) * 2012-10-30 2020-04-28 Ubiq Security, Inc. Systems and methods for tracking, reporting, submitting and completing information forms and reports
WO2015157699A1 (en) * 2014-04-10 2015-10-15 Atomized Cloud Technologies LLC Method and system for securing data
SG11201808317XA (en) * 2014-09-23 2018-10-30 Fhoosh Inc Secure high speed data storage, access, recovery, and transmission

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102274335B1 (ko) * 2020-11-16 2021-07-07 한화생명보험(주) 복수의 상담원을 통한 채팅기반 고객 프로파일 생성 방법 및 장치
WO2022103068A1 (ko) * 2020-11-16 2022-05-19 주식회사 엔터프라이즈블록체인 복수의 상담원을 통한 채팅기반 고객 프로파일 생성 방법 및 장치
US11899814B1 (en) 2022-08-24 2024-02-13 Arthur Hustad Method and system for providing control over storage of and access to user data

Also Published As

Publication number Publication date
CA3020743A1 (en) 2017-12-21
WO2017218590A1 (en) 2017-12-21
AU2017283544A1 (en) 2018-11-01
PH12018502160A1 (en) 2019-07-15
CN109154969A (zh) 2019-01-04
EP3469512A1 (en) 2019-04-17
JP2019521537A (ja) 2019-07-25
SG11201808929PA (en) 2018-11-29
EP3469512A4 (en) 2019-12-04

Similar Documents

Publication Publication Date Title
US20170277773A1 (en) Systems and methods for secure storage of user information in a user profile
US20170277774A1 (en) Systems and methods for secure storage of user information in a user profile
KR20190029509A (ko) 사용자 프로필에 사용자 정보를 안전하게 저장하기 위한 시스템 및 방법
US11637703B2 (en) Zero-knowledge environment based social networking engine
US11790118B2 (en) Cloud-based system for protecting sensitive information in shared content
US20230010452A1 (en) Zero-Knowledge Environment Based Networking Engine
AU2018258656B2 (en) Systems and methods for enforcing centralized privacy controls in de-centralized systems
US20170277775A1 (en) Systems and methods for secure storage of user information in a user profile
Fang et al. A survey of big data security and privacy preserving
Reedy Interpol review of digital evidence 2016-2019
US20190205317A1 (en) Systems and methods for secure storage and retrieval of data objects
WO2019086553A1 (en) Privacy management
US11941583B1 (en) Intelligent employment-based blockchain
EP3893430A1 (en) Virtual service provider zones
US11811907B2 (en) Data processing permits system with keys
JP6785808B2 (ja) ポリシー強制遅延
US11157876B1 (en) Intelligent employment-based blockchain
US10445514B1 (en) Request processing in a compromised account
US20230306131A1 (en) Systems and methods for tracking propagation of sensitive data
CN111756684B (zh) 传输关键数据的方法、***和非暂时性计算机可读存储介质
WO2019173774A1 (en) Systems and methods for secure storage and retrieval of data objects
WO2018232021A2 (en) Systems and methods for secure storage of user information in a user profile
Garchery User-centered intrusion detection using heterogeneous data
Wadhwa et al. Security and Privacy Challenges in Big Data
Modi DIPLOMA THESIS ASSIGNMENT

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application