KR20230021642A - 너츠: 유연한 계위 객체 그래프 - Google Patents

너츠: 유연한 계위 객체 그래프 Download PDF

Info

Publication number
KR20230021642A
KR20230021642A KR1020227038535A KR20227038535A KR20230021642A KR 20230021642 A KR20230021642 A KR 20230021642A KR 1020227038535 A KR1020227038535 A KR 1020227038535A KR 20227038535 A KR20227038535 A KR 20227038535A KR 20230021642 A KR20230021642 A KR 20230021642A
Authority
KR
South Korea
Prior art keywords
key
data
nut
group
lock
Prior art date
Application number
KR1020227038535A
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 KR20230021642A publication Critical patent/KR20230021642A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • H04L9/0833Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key
    • H04L9/0836Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP] involving conference or group key using tree structure or hierarchical structure
    • 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/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Vehicle Body Suspensions (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)

Abstract

데이터 및 보호된 저장소 유닛을 저장하기 위한 잠금 노드. 잠금 노드는 복수의 키 맵을 제공하는 입력 섹션을 포함하고, 각각은 입력 섹션에 각기 적용된 복수의 1차 키 중 하나에 상응하고, 각각의 키 맵은 적어도 하나의 메인 키를 포함하고, 가변 잠금 섹션은 입력 섹션에 적용된 1차 키에 상응하는 메인 키 상의 논리 연산으로부터 유도 키를 생성하고, 출력 섹션은 유도 키에 응답하여 데이터를 생성한다.

Description

너츠: 유연한 계위 객체 그래프
관련 출원에 대한 상호 참조
본 출원은 여기 참조에 의해 그 전체가 병합된, 2020년 4월 9일에 출원된 “너츠: 유연한 계위 객체 그래프”로 명명된 미국 가특허 출원 제63/007,636호으로부터 우선권을 주장한다. 본 출원은 또한 전체로 참조에 의해 미국 특허 제10,503,933호 및 제10,671,764호를 병합한다.
컴퓨터 소프트웨어 설계의 데이터 중심 모델은 어디에 사용자 데이터가 어플리케이션에 걸쳐 우선순위가 매겨질 수 있는가이다. 데이터 중심 소프트웨어 설계는 저장소의 지점에 고정될 데이터에 대해 고려할 수 있다. 데이터의 컨테이너리제이션(containerization)은 데이터 중심 설계의 구현예일 수 있다. 얼마나 다양한 개념이 본 개시 내에 구현될 수 있는지를 도시하기 위해, 다른 시각으로부터 일련의 도면은 특정 개념이 분석되는 것을 강조하고 일체형 도면은 어떻게 이들 프로세스 및 구조 중 몇몇이 함께 작동할 수 있는지를 도시한다.
데이터의 컨테이너리제이션은 레이어드된 접근으로 표현될 수 있고, 바람직하다면, 각각의 층은 부분적이거나 전체적으로 이전 층 위에 적층될 수 있거나 그와 연관해서 작동할 수 있다. 제 1 층에 관해 여기 기재된 개념, 방법, 기기, 구현예 및/또는 명세는 집합적으로 변환으로 구조화된 데이터 폴딩 또는 SDFT로 불릴 수 있다. 제 1 층을 포함할 수 있는 제 2 층에 관해 여기 기재된 개념, 방법, 기기, 구현예 및/또는 명세는 집합적으로 암호화된 사용자데이터 전송 및 저장 또는 너츠(NUTS)로 불릴 수 있다. 각각의 층의 임의의 조합은 너트(Nut)로 불리는 데이터를 위한 컨테이너를 구성하도록 부분적으로 또는 전체적으로 배치될 수 있고, 각각의 층은 격리하여 부분적이거나 전체적으로 배치될 수 있다. 이들 두 층의 상호작용 및/또는 인터위빙(interweaving)은 현저하고 및/또는 복잡할 수 있고 그러한 층의 분명한 경계에 관해 도전할 수 있다. 그러므로, 이들 층은 본 명세서에서 함께 표현된다. 그런 후에 너트 컨테이너는 그 안에 포함된 데이터 상의 논리 연산을 허용할 수 있는 다양한 데이터 중심 특성으로 처리될 수 있다. 너트로 불리는 저장소의 유닛에 대해, 어떻게 특정 공통 데이터 지향 논리 연산이 사용자 프라버시, 보안, 편의성 및/또는 역량을 제공하기 위해 재규정되고 재구조화될 수 있는지를 도시하도록, 다양한 구현예가 기재될 수 있다.
다양한 구현예는 다음의 구체적인 기재 및 첨부된 도면으로 기재될 수 있고:
도 1은 다른 암호 키 유형을 표현하도록 사용된 심볼의 표를 도시한다.
도 2는 일반적으로 다른 암호 방법에 의해 수행될 수 있는 데이터 입력, 데이터 출력, 및 논리 연산을 도시하는 단순화된 순서도의 세트를 도시한다.
도 3은 본 개시의 구현예가 기능할 수 있는 일반적인 네트워크 레이아웃의 도시를 나타낸다.
도 4는 본 개시의 구현예가 기능할 수 있는 컴퓨팅 장치의 도시를 나타낸다.
도 5는 전방 모드 또는 정상 작동으로 변환의 도시를 나타낸다.
도 6은 공통 데이터 연산 및 변환 분류의 표를 도시한다.
도 7는 반대 모드에서 변환의 도시를 나타낸다.
도 8은 비가역 변환의 도시를 나타낸다.
도 9는 조건부로 비가역 변환의 도시를 나타낸다.
도 10은 변환 유형의 그룹화된 공통 데이터 연산 및 기능의 표를 도시한다.
도 11은 파이썬 v3에 규정된 코덱의 표를 도시한다.
도 12는 추가 변환 규정을 나열하는 표를 도시한다.
도 13은 변환 가역성 매트릭스를 도시한다.
도 14는 변환 모달 작동 매트릭스를 도시한다.
도 15는 직렬화(serialize) 변환의 구체적인 예시를 나타낸다.
도 16은 다이제스트 변환의 구체적인 예시를 나타낸다.
도 17은 검증으로서도 알려진 반대 모드에서 다이제스트 변환의 구체적인 예시를 나타낸다.
도 18은 에스사이퍼(scipher) 변환의 도시를 나타낸다.
도 19는 살사20(에스사이퍼) 변환의 도시를 나타낸다.
도 20은 살사20(에스사이퍼) 변환의 구체적인 예시를 도시한다.
도 21은 직렬화 및 압축 변환을 위한 명령어 명세의 표 및 그 사용을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 22는 인코드 변환을 위한 명령어 명세의 표 및 그 사용을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 23은 다이제스트 변환을 위한 명령어 명세의 표 및 그 사용을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 24는 에이사이퍼(acipher) 및 디그(dign) 변환을 위한 명령어 명세의 표 및 그 사용을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 25는 유도 변환을 위한 명령어 명세의 표 및 그 사용을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 26은 에스사이퍼 변환(2602)을 위한 명령어 명세의 표 및 그 사용(2604)을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 27은 단계 1이 입력 포맷을 도시하고 단계 2가 출력 포맷을 도시하는 두 개의 단계의 시퀀스에서 에스사이퍼 출력 스트링을 위한 출력 구조 포맷을 도시한다. “헤더”는 출력 메시지 상의 에스사이퍼 변환의 가변 길이 키 값 utf8 인코딩된 파라미터 스트링이다.
도 28은 에스사이퍼 변환의 출력 구조 포맷에서 파라미터 키워드 및 헤더 스트링에 관한 명세의 표를 나타낸다.
도 29는 AEAD 모드 에스사이퍼 변환을 위한 반복적인 임베디드 메시지 캡슐화의 도시를 나타낸다.
도 30은 로그 변환(3002)을 위한 명령어 명세의 표 및 그 사용(3010)을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 31은 표로 나타낸 포맷으로 다양한 변환 구조의 명세를 도시한다.
도 32는 뫼비우스 변환을 위한 명령어 명세의 표를 도시한다. 그 사용이 도시되고 그래픽은 다양한 구조 상에 일어날 수 있는 구조적 변화를 도시한다. 매트릭스는 뫼비우스 변환이 작동할 수 있는 구조 유형/모드 유효 작동을 도시한다.
도 33은 프레스, 클린, 및 키 변환(3302, 3304)을 위한 명령어 명세의 표 및 그 사용(3310)을 나타내는 샘플 변환 명령어의 세트를 도시한다.
도 34는 키 교환 명세 구조 또는 KISS를 위한 표를 도시한다.
도 35는 작동(3502)의 KISS 모드, 키 유형/필드 생성 매핑(3504)을 나타내는 매트릭스 및 키 유형 정의(3506)에 관한 표를 도시한다.
도 36은 TAR의 구조 및 TAR 정의에 관한 예시를 도시한다.
도 37은 어디에 변환 관련된 속성이 지속되는지를 도시하는 블록도 및 속성의 유형 및 위치를 나열하는 표를 도시한다.
도 38은 SDFT 작동 라벨 또는 언라벨(또는 라벨의 반대)에 관한 블록도이다.
도 39는 SDFT 라벨 작동의 순서도를 도시한다.
도 40은 SDFT 언라벨 작동의 순서도를 도시한다.
도 41은 어떻게 TAR 역전이 제네릭 TAR 상에 수행되는지를 도시한다.
도 42는 TAR 역전의 예시를 도시한다.
도 43은 TAR 처리 동안 생성하거나 요구할 수 있는 키 유형 템플릿으로 매핑된 변환에 관한 표를 도시한다.
도 44는 TAR 예시 및 각각으로부터 생성된 키 템플릿을 도시한다.
도 45는 TAR 예시 및 각각으로부터 생성된 키 템플릿 및 입력(put)되거나 생성(gen)되도록 기대된 KISS 구조의 목록을 도시한다. KISS의 목록은 키스택으로도 언급된다.
도 46은 SDFT TAR 처리 내의 키스택 작동의 세 개의 모드를 도시한다: 생성(gen), 입력(put), 및 주입(혼합된).
도 47은 데이터 및 TAR의 라이프 사이클에서 키스택이 어떻게 생성되고 사용될 수 있는지에 관한 도시를 나타낸다.
도 48은 NSstr 구조에 저장된 데이터 상에 발생할 수 있는 작동의 도시를 도시한다.
도 49는 반복적 폴드 데이터에 대한 SDFT 사용의 순서도를 도시한다.
도 50은 반복적 언폴드 데이터에 대한 SDFT 사용의 순서도를 도시한다.
도 51은 SDFT API/라이브러리 및 접근할 수 있는 TAR 정의 파일의 다양한 유형의 도시를 나타낸다.
도 52는 수동 데이터 폴딩을 수행하기 위한 예시적인 파이썬 스크립트를 도시한다.
도 53은 파이썬 스크립트에서 TAR 정의 및 그 사용에 관한 SDFT 예시를 도시한다.
도 54는 단일 통신 세션 내의 동적 TAR의 블록도를 나타낸다.
도 55는 너트 ID를 생성하기 위한 예시적인 프로세스의 순서도를 나타낸다.
도 56은 너트 ID 및 잠금 ID가 너트 내의 어디에 사용될 수 있는지를 나타내는 블록도이다.
도 57은 너트 ID, 경로명, 및 페이로드 데이터 사이의 예시적인 관계를 도시한다.
도 58은 논리 섹션: 너트 잠금 및 너트 부분을 포함하는 너트 또는 잠금 그래프의 구현예에 관한 블록도를 도시한다.
도 59는 세 개의 키홀 잠금 노드를 포함하는 너트에서 너트 잠금의 대안적인 구현예의 블록도를 도시한다.
도 60은 잠금 노드의 내부 데이터 구조의 블록도를 도시한다.
도 61은 도 60에 도시된 잠금 노드의 입력 섹션의 내부 데이터 구조의 블록도를 도시한다.
도 62는 유효한 1차 키가 키홀에 삽입될 수 있을 때, 도 61에 도시된 입력 섹션의 1차 키홀의 내부 데이터 구조의 관계를 도시하는 데이터 흐름 도해를 도시한다.
도 63은 임의의 잠금 노드 및 임의의 암호 키에 관한 키 삽입 프로세스의 순서도를 도시한다.
도 64는 3개의 1차 키가 1차 키홀에 삽입될 수 있는 실시예를 도시한다.
도 65는 도 64에 도시된 예시로부터 이어지는 가변 잠금 복호화 연산의 데이터 순서도를 도시한다.
도 66은 도 64에 도시된 예시로부터 이어지는 가변 잠금 복호화 연산의 데이터 흐름 도해를 도시한다.
도 67은 임의의 잠금 노드에서 가변 잠금 유형 및 그 특성의 표를 도시한다.
도 68은 ORLOCK 복호화 연산의 데이터 흐름 도해를 도시한다.
도 69는 너트 소유자에 의한 ORLOCK 암호화 연산의 데이터 흐름 도해를 도시한다.
도 70은 MATLOCK 복호화 연산의 데이터 흐름 도해를 도시한다.
도 71은 너트 소유자에 의한 MATLOCK 암호화 연산의 데이터 흐름 도해를 도시한다.
도 72는 XORLOCK 복호화 연산의 데이터 흐름 도해를 도시한다.
도 73은 너트 소유자에 의한 XORLOCK 암호화 연산의 데이터 흐름 도해를 도시한다.
도 74는 HASHLOCK 복호화 연산의 데이터 흐름 도해를 도시한다.
도 75는 너트 소유자에 의한 HASHLOCK 암호화 연산의 데이터 흐름 도해를 도시한다.
도 76은 SSLOCK 복호화 연산의 데이터 흐름 도해를 도시한다.
도 77은 너트 소유자에 의한 SSLOCK 암호화 연산의 데이터 흐름 도해를 도시한다.
도 78은 계층 키를 강조하는 너트의 블록도를 도시한다.
도 79는 계층 키가 어떻게 너트 내에 삽입될 수 있는지에 관한 순서도이다.
도 80은 두 개의 역할 및 네 명의 플레이어에 관한 키 기반 허가의 표를 도시한다.
도 81은 각각의 부분이 잠금 노드에 의해 표현될 수 있는 예시에서 너트 부분의 다양성을 나열하는 표이다.
도 82는 일반적인 너트를 위해 규정된 키 기반 허가 접근 역할을 나열하는 표를 도시한다.
도 83은 어떻게 접근 속성 키 세트 잠금해제 키(AAKSUK)로 불리는 너트 접근 제어 접근 키의 최초 세트가 각각의 유효한 1차 키를 위한 접근 키홀에 삽입될 수 있는지에 관한 블록도를 도시한다.
도 84는 외부 잠금 노드로부터 내부 잠금 노드로의 NAC 접근 속성의 전파의 블록도를 도시한다.
도 85는 외부 잠금 노드로부터 내부 잠금 노드로의 NAC 접근 속성의 전파, 및 연결된 잠금 노드의 1차 키홀로의 출력 연결 키의 삽입의 블록도를 도시한다.
도 86은 접근 키홀에 키를 삽입하는 것에 관한 순서도를 도시한다.
도 87은 대안적인 구현예에 관한 키 기반 허가의 표를 도시한다.
도 88은 잠금 노드의 내부 복호화 데이터의 데이터 흐름 도해를 도시한다.
도 89는 너트를 잠금해제하기 위한 순서도를 도시한다.
도 90은 너츠 기반 시스템 및 어떻게 너트에 저장된 문서가 잠금해제될 수 있는지에 관한 구현예의 블록도를 도시한다.
도 91는 홀딩하는 너트의 너트 ID에 의한 너트의 페이로드을 언급하도록 너츠 용어로 공통 사용의 도시를 나타낸다. 여기서 암호 키는 홀딩하는 너트의 너트 ID에 의해 언급될 수 있다.
도 92는 수령인 잠금 모델의 목록의 단순화된 구현예를 도시한다.
도 93은 순서형 잠금 모델의 단순화된 구현예를 도시한다.
도 94는 마스터 키를 갖는 순서형 잠금 모델의 단순화된 구현예를 도시한다.
도 95는 마스터 키를 갖는 잠금 모델의 단순화된 구현예를 도시한다.
도 96은 마스터 키를 갖는 잠금 모델의 단순화된 구현예를 도시한다.
도 97은 안전 금고 잠금 모델의 단순화된 구현예를 도시한다.
도 98은 마스터 키를 갖는 비밀 공유 잠금 모델의 단순화된 구현예를 도시한다.
도 99는 “프리바테그리티(PrivaTegrity)” 유형 잠금 모델의 단순화된 구현예를 도시한다.
도 100은 다중 페이로드가 단일 너트 내에 저장될 수 있는 다중 너트 구성의 단순화된 구현예를 도시한다.
도 101은 다중 페이로드가 단일 너트 내에 저장될 수 있는 다중 너트 구성의 단순화된 구현예를 도시한다.
도 102는 다중 페이로드를 갖는 직접 잠금 모델의 단순화된 구현예를 도시한다.
도 103은 공모 저항 설계를 나타내는 순서형 메시지 패싱의 단순화된 구현예를 도시한다.
도 104는 모듈식 I/O의 일반적 구성요소의 블록도를 나타낸다.
도 105는 MIOR를 사용하는 단순한 읽기 및 쓰기 작동의 도시를 나타낸다.
도 106은 일반적인 MIO 파일 읽기 작동에 수반될 수 있는 데이터 변형 및 전송을 도시한다.
도 107은 어떻게 파일 포맷의 백워드 호환성이 모듈식 I/O을 사용하여 용이해질 수 있는지를 도시한다.
도 108은 어떻게 파일 포맷의 포워드 호환성이 모듈식 I/O을 사용하여 용이해질 수 있는지를 도시한다.
도 109는 어떻게 모듈식 디스플레이가 모듈식 I/O을 사용하여 용이해질 수 있는지를 도시한다.
도 110은 어떻게 모듈식 어플리케이션이 모듈식 I/O을 사용하여 용이해질 수 있는지를 도시한다.
도 111은 두 개의 편집에 걸쳐 그리고 시간에서 세 개의 지점에서 너트 이력에 대한 진보적인 변화를 나타낸다.
도 112는 도 111로부터 이벤트의 코스에 걸쳐 너트 로그에 대한 진보적인 변화를 도시한다.
도 113은 관계 기반 키가 어떻게 앨리스 및 밥의 연락처 카드에 표시될 수 있는지를 도시한다.
도 114는 어떻게 스팸이 잘 알려진 이메일 주소 및/또는 RBK를 사용하여 검출될 수 있는지에 관한 순서도를 도시한다.
도 115는 어떻게 스팸이 익명의 이메일 주소 및/또는 RBK를 사용하여 검출될 수 있는지에 관한 순서도를 도시한다.
도 116은 앨리스-밥 RBK 통신 채널의 결정적 문맥 기반 상태 매트릭스를 도시한다.
도 117은 앨리스-벤더 RBK 통신 채널의 결정적 문맥 기반 상태 매트릭스를 도시한다.
도 118은 벤더-앨리스 RBK 통신 채널의 결정적 문맥 기반 상태 매트릭스를 도시한다.
도 119는 밥에 대해 손상된 시스템에서 RBK의 고립을 도시한다.
도 120은 미리 패키징된 데이터 너트의 블록도를 도시한다.
도 121은 RBK를 사용하여 자동화된 등록 프로세스에서 이벤트의 시퀀스를 기록한다.
도 122는 RBK 및 익명의 이메일 주소를 사용하여 자동화된 등록 프로세스에서 이벤트의 시퀀스를 기록한다.
도 123은 너츠 코어 어플리케이션 및 그의 설명을 나열하는 표를 도시한다.
도 124는 컴퓨터 장치에서 작동하는 너츠 코어 어플리케이션의 블록도를 도시한다.
도 125는 사용자 장치에서 작동하는 너트서버의 블록도를 도시한다.
도 126은 너트서버를 포함하는 내부 구성요소 및 사용자 장치의 환경에 대한 기능적 연결의 블록도를 도시한다.
도 127은 캐칭 메커니즘으로서 NoSQL 데이터 베이스를 사용하는 도 126에 도시된 너트서버의 대안적인 구현예를 도시한다.
도 128은 MIOR 서버 네트워크 레이아웃의 블록도를 나타낸다.
도 129는 MIOR 서버 어플리케이션 레이아웃의 블록도를 나타낸다.
도 130은 MIOR 서버로부터 MIO 모듈을 가져오기 위한 순서도를 도시한다.
도 131는 MIOR 캐시의 구조화를 도시하는 블록도를 도시한다.
도 132는 사용자 장치 환경에 너트 브라우저 어플리케이션의 블록도를 도시한다.
도 133은 사용자 장치 환경에 너트 북 어플리케이션의 블록도를 도시한다.
도 134는 사용자 장치 환경에 너트 처리 어플리케이션 프레임워크의 블록도를 도시한다.
도 135는 너트북을 포함하는 내부 구성요소를 도시하는 블록도를 도시한다.
도 136은 도 135로부터 너트 북 카탈로그 캐시의 내부 구조화를 도시하는 블록도를 도시한다.
도 137은 계위적 패스워드의 구조화를 도시하는 도해를 도시한다.
도 138은 어떻게 메인 패스워드가 도 137의 계위적 패스워드에 따라 개인용 문서를 여는지를 도시한다.
도 139는 어떻게 마스터 패스워드가 도 137의 계위적 패스워드 및 도 138에 문서에 따라 개인용 문서를 여는지를 도시한다.
도 140은 어떻게 메인 및 작업 패스워드가 도 137의 계위적 패스워드에 따라 작업 문서를 여는지를 도시한다.
도 141은 어떻게 마스터 패스워드가 도 137의 계위적 패스워드 및 도 140에 문서에 따라 업무 문서를 여는지를 도시한다.
도 142는 도 135로부터 너트북 키 캐시의 내부 구조화를 도시하는 블록도를 도시한다.
도 143은 어떻게 너트북이 카드 카탈로그를 조망할 수 있는지에 관한 순서도를 도시한다.
도 144는 너츠 기반 서비스의 표를 도시한다.
도 145는 너츠 기반 서비스의 네트워크 레이아웃의 도시를 나타낸다.
도 146은 너트메일 서버의 네트워크 레이아웃의 도시를 나타낸다.
도 147은 RBK를 사용하여 너트 메일과 같은 익명의 이메일 서비스에 대한 자동화된 등록 프로세스에서 이벤트의 시퀀스를 기록한다.
도 148은 너트메일 서버에서 통신 채널을 추가할 때 이벤트의 시퀀스를 기록한다.
도 149는 앨리스와 밥이 너트 메일을 통해 서로에게 이메일을 보낼 때 이벤트의 시퀀스를 기록한다.
도 150은 너트챗 서버의 네트워크 레이아웃의 도시를 나타낸다.
도 151는 너트챗 서버에 의해 호스트된 3개의 챗 세션의 데이터 흐름 도해를 도시한다.
도 152는 너트서버를 가로질러 챗 이력 지속성 및 복제에 관한 데이터 흐름 도해를 도시한다.
도 153은 다른 챗 ID 또는 챗 서비스를 사용하여 3개의 분리된 챗 세션에 관한 데이터 흐름 도해를 도시한다.
도 154는 도 153으로부터 3개의 다른 챗 경로를 사용하여 너트챗 클라이언트에 의해 관리된 경로와 무관한 대화에 관한 데이터 흐름 도해를 도시한다.
도 155는 너트클라우드 서버의 네트워크 레이아웃의 도시를 나타낸다.
도 156은 너트넷 서버의 네트워크 레이아웃의 도시를 나타낸다.
도 157은 너츠의 인터넷(IoN)을 위한 너트허브 서버의 네트워크 레이아웃에 관한 도시를 나타낸다.
도 158는 직접 IoN 네트워크 토폴로지의 도시를 나타낸다.
도 159는 간접 IoN 네트워크 토폴로지의 도시를 나타낸다.
도 160은 도 159로부터 너트허브 및 IoN 장치에 대한 너트서버 허브 및 그의 연결의 도시를 나타낸다.
도 161은 도 160으로부터 너트서버 허브에 너트허브/IoN 인터페이스의 블록도를 도시한다.
도 162는 도 160으로부터 IoN 장치에 너트허브/너트서버/IoN 인터페이스의 블록도를 도시한다.
도 163은 IoN/IoT 장치를 위한 등록 및 구성 프로세스의 순서도를 도시한다.
도 164는 원격 제어 인터페이스가 도 161 및 도 162로부터의 명령어 너트를 어떻게 처리할 수 있는지에 관한 순서도이다.
도 165는 너츠 인증 서버의 네트워크 레이아웃의 도시를 나타낸다.
도 166은 도 165로부터 너츠 인증 서버의 기능을 강조하는 블록도이다.
도 167는 너츠 기반 와이파이/이더넷 라우터의 네트워크 레이아웃의 도시를 나타낸다.
도 168은 메시지가 도 167로부터의 너츠 기반 와이파이/이더넷 라우터에서 어떻게 처리될 수 있는지에 관한 순서도를 도시한다.
도 169는 너츠 기반 와이파이/이더넷 라우터를 위한 장치 카테고리에 관한 표를 도시한다.
도 170은 너츠 기반 와이파이/이더넷 라우터 상의 예시적인 장치 카테고리 속성에 관한 표를 도시한다.
도 171은 어떻게 어플리케이션 랩핑이 자동화된 방식으로 장치 백업 및 복제를 가능하게 하는지에 관한 블록도를 도시한다.
도 172는 두 개의 장치에서 이벤트 처리 서비스(EPS)의 블록도를 도시한다.
도 173은 빅 데이터 서버 상에 저장된 트래킹 쿠키 및 세션 이력을 사용할 수 있는 일반적인 벤더 네트워크의 블록도를 도시한다.
도 174는 도 173으로부터의 빅 데이터 서버 상에 저장되는 것은 물론, 국부적으로 세션 이력의 사본을 기록하도록 앱(App) 너트를 사용할 수 있는 벤더 네트워크 설정에 관한 블록도를 도시한다.
도 175는 도 173 및 도 174로부터 앱 너트를 국부적으로 활용할 수 있는 맥락적 컴퓨팅의 블록도를 도시한다.
도 176은 IoT 장치 및 서비스 제공자를 포함하는 개인용 홈 네트워크 토폴로지의 도시를 나타낸다.
도 177은 벤더에게로 가는 데이터의 흐름을 제어하기 위한 간접 IoN 네트워크 토폴로지에서 두 개의 IoN 장치 및 각각의 서비스 제공자를 포함하는 개인용 홈 네트워크의 도시를 나타낸다.
도 178은 도 177로부터의 너트서버에서 사용자의 프라이버시를 보호하기 위해 발신 IoN 메시지를 자동으로 필터링할 수 있다.
도 179는 다른 페이로드를 홀딩하는 세 개의 다른 너트를 도시한다.
도 180은 두 개의 다른 FHOG 너트에 대한 참조를 포함하는 FHOG 너트를 도시한다.
도 181은 다양한 연락 너트의 관계 그래프를 포함하는 FHOG 너트를 도시한다.
도 182는 시작하는 FHOG 너트로부터 유도된 순회가능한 트리 구조의 예시를 도시한다.
도 183은 시작하는 FHOG 너트로부터 유도된 순회가능한 트리 구조의 예시를 도시한다.
도 184는 시작하는 FHOG 너트로부터 유도된 순회가능한 트리 구조의 GUI 표현의 묘사를 도시한다.
도 185는 더 높은 레벨 FHOG 너트 및 그 결과 트리 구조 및 GUI 표현을 도시한다.
도 186은 관계 FHOG 너트의 예시로 FHOG 너트로부터 유도된 트리 구조를 도시한다.
도 187은 다양한 네트워크 및 저장 모델의 도시를 나타낸다.
도 188은 너트서버의 너트ID 인덱스 및 다양한 너트 ID의 논리적 위치의 예시를 도시한다.
도 189는 각기 고유한 논리 저장 모델과 연결된 구성에서 3개의 너트서버와의 샘플 관계를 도시한다.
도 190은 국부 너트 서버에 의해 제공된 서비스를 사용하는 FHOG 너트의 엔트리를 순회하는 어플리케이션의 순서도를 도시한다.
도 191은 연결된 너트서버 및/또는 너트클라우드의 목록을 가로질러 너트ID에 의해 너트를 위치시키려고 시도하는 너트 서버의 순서도를 도시한다.
도 192는 샘플 너트 컨테이너의 내부 구조를 도시한다.
도 193은 너트 구조의 잠금 노드 구조 및 그의 상응하는 NCL 정의를 도시한다.
도 194는 NCL 정의를 홀딩하는 잠금 노드를 도시한다.
도 195는 그로써 너트의 구조가 저장된 NCL 정의를 사용하여 복제될 수 있는 프로세스를 도시한다.
도 196은 임베디드 NCL 정의를 사용하여 너트를 클로닝(cloning)하거나 소스 너트의 내부 구조를 복제하는 것에 관한 순서도를 도시한다.
도 197은 너트ID에 기반해서 샘플 너트 분류체계를 도시한다.
도 198은 유한 상태 기계(FSM)를 표현하는 샘플 제네릭 상태 표를 도시한다.
도 199는 두 개의 프로세스가 어떻게 너트에서 FSM을 작동할 수 있는지를 도시한다.
도 200은 너트서버(NS)를 설치하는 데에 수반되는 단계를 도시한다.
도 201은 앨리스와 밥 사이에 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 202는 앨리스와 밥 사이에 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 203은 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 204는 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 205는 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 206은 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 207는 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 208은 앨리스와 밥 사이의 관계 너트를 설정하는데에 수반되는 단계를 도시한다.
도 209는 검토 이력 목적을 위한 타임라인을 도시한다.
도 210은 미래로 연장하는 타임라인을 도시한다.
도 211은 너트에서 카르나크 검토의 3개의 다른 변형을 도시한다.
도 212는 너트 부분 정의의 확장된 표이다.
도 213은 이벤트 구동 상태 기계(EDSM)의 표 조망을 도시한다.
도 214는 EDSM 명령 언어를 도시한다.
도 215는 카르나크 명령 언어(CCL)의 예시를 도시한다.
도 216은 계산된 지연에 관한 CCL을 도시한다.
도 217은 CCL을 사용하여 캘린더 이벤트 예시를 도시한다.
도 218은 IoT 장치의 세트를 제어하도록 CCL 사용을 도시한다.
도 219는 IoT 장치의 세트를 제어하도록 CCL 사용을 도시한다.
도 220은 캘린더 모드 CCL의 예시를 도시한다.
도 221은 너츠 환경 내의 CCL의 이벤트 공간을 도시한다.
도 222는 일부 기존 접근 프레임워크를 도시한다.
도 223은 너트가 ABAC를 어떻게 표현하는지를 도시한다.
도 224는 SAF의 기본 요소를 도시한다.
도 225는 SAF의 세부도를 도시한다.
도 226은 역할 분할을 도시한다.
도 227은 다른 그루핑으로 어플리케이션 역할 분할을 연장하는 것을 도시한다.
도 228은 너트를 사용하여 속성 그룹의 표현을 도시한다.
도 229는 다양한 속성 그룹을 사용하여 SAF를 도시한다.
도 230은 세트 및 그룹을 도시한다.
도 231은 종래의 그룹 관리 레이아웃을 도시한다.
도 232은 장치의 시스템의 두 개의 구성을 도시한다.
도 233은 그룹 객체 및 멤버에 대한 관계를 도시한다.
도 234는 그룹 멤버쉽 수락 및 그룹 카탈로그를 도시한다.
도 235는 그룹이 어떻게 카탈로그를 폴링하는지를 도시한다.
도 236은 시스템1 상의 카탈로그의 제 1 세트를 비교하기 위한 순서도를 도시한다.
도 237은 시스템1 상의 카탈로그의 제 2 세트를 비교하기 위한 순서도를 도시한다.
도 238은 카탈로그 폴링 및 동기화의 결과를 도시한다.
도 239는 시스템1 상의 그룹 객체 동기화 프로세스를 도시한다.
도 240은 모두 3개의 시스템을 가로질러 그룹 객체 동기화 프로세스를 도시한다.
도 241은 국부 카탈로그 상태가 객체 동기화 후에 업데이트되는 것을 도시한다.
도 242는 도관을 사용하여 3개의 시스템을 가로질러 규정된 그룹을 도시한다.
도 243은 단일의 그룹을 도시한다.
도 244는 루프백 도관이 단일의 그룹에 대해 어떻게 작동하는지를 도시한다.
도 245는 루프백 도관이 두 개의 시스템 상의 단일의 그룹에 대해 어떻게 작동하는지를 도시한다.
도 246은 두 개의 시스템을 가로지른 단일의 그룹의 개략도를 도시한다.
도 247은 두 개의 다른 그룹을 호스팅하는 시스템의 논리적 상태를 도시한다.
도 248은 그룹 및 동기화에 관해서 너츠 에코시스템의 ICBM 구성요소를 카테고리화한다.
도 249는 너트 및 그 부분의 일부에 관한 표현을 도시한다.
도 250은 그룹, FHOG, 카탈로그, 및 카탈로그 오버라이드 너트의 예시를 도시한다.
도 251은 시스템 1 상의 카탈로그 비교 동안 카탈로그 오버라이드를 처리하는 것에 관한 순서도를 도시한다.
도 252는 그룹이 너트를 사용하여 동기화되는 예시를 도시한다.
도 253은 도 252의 예시에 의해 사용될 너트를 도시한다.
도 254는 너트-기반 그룹 동기화 예시의 최초 단계를 도시한다.
도 255는 그룹 동기화 전이의 제 1 패널 세트를 도시한다.
도 256은 그룹이 너트를 사용하여 동기화되는 예시를 도시한다.
도 257은 어떻게 검증 전용 너트가 그룹을 가로질러 동기화되는지를 도시한다.
도 258은 어떻게 너트가 그룹을 가로질러 동기화되는지를 도시한다.
도 259는 3인 시나리오에서 RBK 용어를 도시한다.
도 260은 다양한 그룹 크기에 관한 데이터 흐름 토폴로지를 도시한다.
도 261은 노드의 임의 네트워크에서 보호 방향성 데이터 흐름에 관한 표기 방법을 도시한다.
도 262는 N→N 데이터 흐름 구성에서 3명의 멤버 네트워크를 도시한다.
도 263은 맞춤식 데이터 흐름 구성에서 3명의 멤버 네트워크를 도시한다.
도 264는 1↔N 구성에서 5명의 멤버 네트워크를 도시한다.
도 265는 맞춤식 구성에서 5명의 멤버 네트워크를 도시한다.
도 266은 맞춤식 구성에서 5명의 멤버 네트워크를 도시한다.
도 267은 미니 너트북이 어떻게 그룹 너트에서 표현되고 저장될 수 있는지를 도시한다.
도 268은 데이터 흐름의 기존 그룹 크로스 매트릭스에 멤버를 추가하는 것을 도시한다.
도 269는 어떻게 공유된 너트에 대한 일련의 비동기 업데이트가 검출되고 해소될 수 있는지를 도시한다.
도 270은 버전 변경에 관한 두 개의 예시를 도시한다.
도 271은 익명의 ID(AID)를 유도하기 위한 일반적인 절차를 도시한다.
도 272는 익명의 ID의 다양한 매핑을 도시한다.
도 273은 3개의 RZ을 도시하는 네트워크 도해이다.
도 274는 RZ의 3개의 모드를 도시한다.
도 275는 RZ의 네트워크 내의 RZ 접근성의 성질을 도시한다.
도 276은 RZ의 네트워크를 도시한다.
도 277은 NSRZ의 3개의 에코그룹을 갖는 네트워크 도해이다.
도 278은 도 277에 네트워크의 논리 연결 도해를 도시한다.
도 279는 다양한 RZ 네트워크 구성을 도시한다.
도 280은 다양한 RZ 네트워크 구성을 도시한다.
도 281은 밥이 그의 여분의 랩탑 상에 일부 업무를 수행하기 위해 앨리스의 아파트를 방문함을 도시한다.
도 282는 앨리스가 밥의 아파트를 방문함을 도시하고 그녀는 그녀의 에코그룹에 접근하기 위해 밥의 실행중인 랩탑을 사용하기를 원한다.
도 283은 분할된 에코그룹이 어떻게 iRZ을 통해 통신할 수 있는지를 도시한다.
도 284는 다중 iRZ 네트워크를 도시한다.
도 285는 밥의 에코시스템의 구성요소를 도시한다.
도 286은 에코그룹과 에코시스템 사이의 차이 중 일부를 도시한다.
도 287은 밥의 에코그룹 GBE의 다양한 구성요소를 도시한다.
도 288은 에코그룹 GBE에 관한 연락처 및 그룹 너트를 도시한다.
도 289는 밥의 에코그룹 GBE에 관한 제 1의 두 개의 카탈로그 너트를 도시한다.
도 290은 밥의 에코그룹 GBE에 관한 제 2의 두 개의 카탈로그 너트를 도시한다.
도 291은 에코그룹 GBE에 관한 FHOG 및 텍스트 너트를 도시한다.
도 292는 밥의 에코그룹 GBE에 관련된 너트의 시스템 위치를 도시한다.
도 293은 두 개의 시스템을 포함하는 밥의 에코그룹 GBE를 도시한다.
도 294는 에코그룹 GBE의 시스템을 도시한다.
도 295는 에코그룹 GBE에 저장된 너트로부터 강조된 정보를 특정한다.
도 296은 GBE 에코그룹에 너트를 설명하는 것을 계속한다.
도 297은 저장 장치 카탈로그의 복제 경로를 도시한다.
도 298은 에코그룹 너트 복제를 도시한다.
도 299는 도 298로부터 예시를 계속한다.
도 300은 클라우드 드라이브 및 플래시 드라이브를 갖는 저장 하위시스템을 도시한다.
도 301은 VM 호스팅 다중 너츠 시스템을 도시한다.
도 302는 서버 에코그룹을 사용하여 다중 에코그룹 호스팅을 도시한다.
도 303은 두 개의 분리 시스템을 가로지르는 두 명의 그룹을 도시한다.
도 304는 서버 에코그룹에 의해 호스트된 두 개의 분리 에코그룹을 가로지른 두 명의 그룹을 도시한다.
도 305는 두 개의 분리 시스템을 가로지른 두 명의 그룹을 도시한다.
도 306은 서버 에코그룹에 의해 호스트된 두 개의 분리 에코그룹을 가로지른 두 명의 그룹을 도시한다.
컨텐츠의 표
Figure pct00001
심볼 및 약어
Figure pct00002
암호 및 일방향 해시
Figure pct00003
네트워크 도해
Figure pct00004
장치 도해
Figure pct00005
변환
Figure pct00006
변환 유형
Figure pct00007
변환 구조
Figure pct00008
변환 감사 기록(TAR)
Figure pct00009
변환으로 구조화된 데이터 폴딩(SDFT)
Figure pct00010
너트 ID
Figure pct00011
잠금 그래프 및 잠금 노드
o 키홀
o 가변 잠금
o 계층
o 너트 접근 제어(NAC)
o 잠금 노드 순회
Figure pct00012
모듈식 I/O
o 읽기 및 쓰기
o 백워드 호환성
o 포워드 호환성
o 디스플레이
o 어플케이션
Figure pct00013
너트 이력
Figure pct00014
너트 로그
Figure pct00015
관계 기반 키(RBK)
Figure pct00016
익명의 관계
Figure pct00017
너츠 코어 어플리케이션
o 너트 서버
o MIOR 서버
o 너트 브라우저/너트 쉘
o 너트 북
Figure pct00018
너츠 기반 서비스
o 너트 메일
o 너트 챗
o 너트 클라우드
o 너트 네트
o 너트 허브
o 너츠 인증 서버
Figure pct00019
너츠 기반 WiFi/이더넷 라우터
Figure pct00020
어플리케이션 랩핑
Figure pct00021
이벤트 처리 서비스
Figure pct00022
맥락적 컴퓨팅
Figure pct00023
FHOG: 유연한 계위 객체 그래프
Figure pct00024
NCL: 너트 구성 언어
Figure pct00025
너트 분류체계
Figure pct00026
유한 상태 기계 (FSM
Figure pct00027
카르나크 검토
Figure pct00028
구조화된 접근 프레임워크(SAF)
Figure pct00029
그룹
Figure pct00030
RBK 키 표기
Figure pct00031
그룹 데이터 흐름
Figure pct00032
버전 마커
Figure pct00033
익명의 식별자
Figure pct00034
랑데부 서버
Figure pct00035
에코그룹 및 에코시스템
Figure pct00036
저장 하위시스템 관리(SSM)
Figure pct00037
다중사용자 그룹
Figure pct00038
결론
심볼 및 약어
다음의 심볼 및 약어는 설명 및 도면에 걸쳐 사용될 수 있다.
(*)으로 표기된 이들은 너츠 특정일 수 있다.:
Figure pct00039
AAKS *접근 속성 키 세트
Figure pct00040
AAKSUK *접근 속성 키 세트 잠금해제 키
Figure pct00041
AAPK *접근 속성 전파 키
Figure pct00042
acipher 비대칭 암호
Figure pct00043
AEAD 연관된 데이터로 인증된 암호화
Figure pct00044
AES 고급 암호 표준; 또한 라인달
Figure pct00045
API 어플리케이션 프로그래밍 인터페이스
Figure pct00046
AKS *접근 키 세트
Figure pct00047
ARK *접근 역할 키
Figure pct00048
BIOS 기본 입력/출력 시스템
Figure pct00049
bz2 bzip2, 버로우즈-휠러 압축 알고리즘
Figure pct00050
CA 인증 기관
Figure pct00051
CAC 암호 접근 제어
Figure pct00052
차차(ChaCha)20 번스타인에 의한 대칭 키 기반 스트림 암호
Figure pct00053
CLI 명령 라인 인터페이스
Figure pct00054
CMAC 암호-기반 메시지 인증 코드
Figure pct00055
코덱(CODEC) 코더/디코더; 문자 데이터를 위한 인코딩 스킴
Figure pct00056
COM 구성요소 객체 모델
Figure pct00057
COR *리더(reader) 클래스; 또는 리더
Figure pct00058
CORBA 공통 객체 요청 브로커 아키텍처
Figure pct00059
COW *작성자 클래스; 또는 작성자
Figure pct00060
CPU 중앙 처리 장치
Figure pct00061
CRC 순환 중복 검사
Figure pct00062
디그(dign) *(명사) 비대칭 개인 키를 사용하여 생성된 디지털 서명 *(동사) 비대칭 개인 키를 사용하여 디지털 서명을 생성함
Figure pct00063
DK *유도 키
Figure pct00064
DRM 디지털 권리 관리
Figure pct00065
DVD 디지털 비디오 디스크
Figure pct00066
DSA 디지털 서명 알고리즘
Figure pct00067
ECC 타원 곡선 암호방식
Figure pct00068
eDK *암호화된 유도 키
Figure pct00069
EPS *이벤트 처리 서비스
Figure pct00070
FIPS 연방 정보 처리 표준
Figure pct00071
HMAC 해시 기반 메시지 인증 코드
Figure pct00072
GPS 위성 위치 확인 시스템
Figure pct00073
GPU 그래픽 처리 장치
Figure pct00074
GUI 그래픽 사용자 인터페이스
Figure pct00075
GUID 전 세계적 단일 식별자
Figure pct00076
gzip GNU 집 압축
Figure pct00077
HKDF HMAC 기반 키 유도 함수
Figure pct00078
ikm 최초 키 물질
Figure pct00079
IMEI 국제 이동국 기기 식별코드
Figure pct00080
IoN 너트 인터넷
Figure pct00081
IoT 사물 인터넷
Figure pct00082
IPC 프로세스 간 통신
Figure pct00083
IPv4 인터넷 프로토콜 버전 4
Figure pct00084
IPv6 인터넷 프로토콜 버전 6
Figure pct00085
I/O 입력/출력
Figure pct00086
ima *“I am a” 또는 “I’m a”의 KISS 필드명 단축형 : KISS 모드를 결정
Figure pct00087
iv 초기화 벡터: 암호 사용을 위한 난수
Figure pct00088
제이슨(JSON) 자바스크립트 객체 표기
Figure pct00089
KBP *키 기반 허가
Figure pct00090
Keccak 샤(SHA)3 해시 집단
Figure pct00091
KISS *키 교환 명세 구조
Figure pct00092
LAN 근거리 통신망
Figure pct00093
잠금(lock) * 변환의 클래스로서 가변 잠금의 실행
Figure pct00094
lzma 램펠-지프-마르코프 체인 알고리즘
Figure pct00095
MAC 매체 접근 제어(w.r.t. 이더넷)
Figure pct00096
MAC 메시지 인증 코드
Figure pct00097
MD5 리베스트에 의한 메시지 다이제스트 #5
Figure pct00098
MIO *모듈식 I/O
Figure pct00099
MIOR *모듈식 I/O 저장소
Figure pct00100
MMS 멀티미디어 메시징 서비스
Figure pct00101
NAC *너트 접근 제어
Figure pct00102
NCS *너츠 인증 서버
Figure pct00103
NFC 근거리 자기장 통신
Figure pct00104
NIST 미국 국립표준기술원
Figure pct00105
NoSQL 비표준 질의 언어; 또한 비관계 표준 질의 언어
Figure pct00106
넌스(nonce) 1회만 사용된 숫자: 암호 사용을 위한 난수
Figure pct00107
NTFS 신기술 파일 시스템 (마이크로소프트)
Figure pct00108
너트(NUTS) *암호화된 사용자 데이터 전송 및 저장
Figure pct00109
OAEP 벨라르 및 로가웨이에 의한 최적 비대칭 암호 패딩
Figure pct00110
OS 운영 체제
Figure pct00111
PBKDF2 RSA에 의한 패스워드 기반 키 유도 함수 #2(PKCS)
Figure pct00112
PGP 프리티 굳 프라이버시
Figure pct00113
PIM 개인 정보 관리자
Figure pct00114
PKCS RSA 연구소에 의한 공개 키 암호방식 표준
Figure pct00115
PKCS1_V1.5 PKCS#1의 버전 1.5
Figure pct00116
PKI 공개 키 인프라스트럭처
Figure pct00117
PSS 개연론에 의거한 서명 스킴
Figure pct00118
PUID 실제 고유 ID
Figure pct00119
QA 품질 보증
Figure pct00120
QUOPRI 인용된 프린트가능한 또는 QP 인코딩
Figure pct00121
RAM 임의 접근 메모리
Figure pct00122
RAT *루트 접근 계층, 너트의 소유자/생성자; 또는 RAT 작성자, 소유자
Figure pct00123
RBAC 역할 기반 접근 제어
Figure pct00124
RBCAC 역할 기반 암호 접근 제어
Figure pct00125
RBK *관계 기반 키
Figure pct00126
ROM 읽기 전용 메모리
Figure pct00127
RSA 리베스트-샤미르-아델먼 공개 키 암호 방식
Figure pct00128
SAC *계층 접근 제어
Figure pct00129
살사(Salsa)20 번스타인에 의한 대칭 키 기반 스트림 암호
Figure pct00130
솔트(salt) 암호 사용을 위한 난수
Figure pct00131
에스사이퍼(scipher) 대칭 암호
Figure pct00132
SCP *구조화된 암호 프로그래밍
Figure pct00133
SCRYPT 퍼시벌에 의한 패스워드 기반 키 유도 함수
Figure pct00134
SDF *구조화된 데이터 폴딩
Figure pct00135
SDFT *변환으로 구조화된 데이터 폴딩
Figure pct00136
샤(SHA) 보안 해시 알고리즘 - Keccak 해시 변형
Figure pct00137
셰이크(Shake) Keccak 해시 변형
Figure pct00138
SMS 단문 메시지 서비스
Figure pct00139
SOAP 단순 객체 접근 프로토콜
Figure pct00140
스팸(SPAM) 원하지 않은 벌크 이메일; 또는 정크 메일
Figure pct00141
SSD 솔리드 스테이트 드라이브
Figure pct00142
SSID 서비스 세트 식별자
Figure pct00143
SSO 싱글 사인온
Figure pct00144
tar 테이프 아카이브 : 테이프 또는 디스크 상에 데이터를 저장하기 위한 유닉스 명령어
Figure pct00145
TAR *변환 감사 기록
Figure pct00146
TOP *변환 구성 원리
Figure pct00147
타인(tine) *포크 상의 날들과 같은, 샤미르의 비밀 공유 쉐어(share)
Figure pct00148
TMX *변환
Figure pct00149
TOP *변환 구성 원리
Figure pct00150
URL 자료 위치 주소
Figure pct00151
UTF 유니코드 변환 형식
Figure pct00152
UTI 균일 유형 식별자
Figure pct00153
UUID 범용 단일 식별자
Figure pct00154
VPN 가상 사설 통신망
Figure pct00155
WAN 원거리통신망
Figure pct00156
와이파이(WiFi) WLAN 프로토콜
Figure pct00157
WLAN 무선 LAN
Figure pct00158
XML 확장성 마크업 언어
Figure pct00159
Zlib zlib 압축 알고리즘
도 1은 본 개시의 기재 및 도면에 걸쳐 사용될 수 있는 암호 키 유형 및 각각의 심볼에 관한 표를 나타낸다. 가변 길이 텍스트 기반 패스워드 또는 패스프레이즈는 심볼(102)에 의해 표현될 수 있다. 심볼(104)은 AES-256 또는 대안적인 암호를 포함하는 대칭 암호에 관한 키를 나타낸다. 심볼(106)은 RSA-2048 또는 대안적인 암호를 포함하는 비대칭 암호에 관한 키 쌍을 나타낸다. 비대칭 키 쌍(106)의 공개 부분은 심볼(108)로서 묘사될 수 있고 비공개 부분은 심볼(110)로서 도시될 수 있다. 해당 기술분야의 당업자는 이들 암호가 잘 공지되고 잘 시험된 알고리즘일 수 있으며, 다른 적합한 방법이 대체될 수 있고, 표준 변경 또는 대안이 소망될 수 있을 때, 이들 방법이 본 개시에 특정될 수 있음을 용이하게 인지할 수 있다.
암호 및 일방향 해시
도 2는 암호의 다양한 유형에 의해 수행될 수 있는 기본 작동을 묘사한다. 암호 모드에 대칭 암호(208)는 암호화된 데이터(206) 또는 암호문을 생성하도록 대칭 키(202) 및 데이터(204)를 수용할 수 있다. 암호 모드에 대칭 암호(208)는 원본 데이터(204)를 생성하도록 동일한 대칭 키(202) 및 암호문(206)을 수용할 수 있다. 대칭 암호의 실행에서, 암호화 및 복호화 방법은 두 개의 분리하여 명명된 함수 호출일 수 있거나 입력의 부분으로서 모드 파라미터를 갖는 단일 호출일 수 있다. 대칭 암호의 특성은 암호화 및 복호화 프로세스가 동일한 비밀 키(202)를 사용할 수 있다는 것이다.
암호화 모드에 비대칭 암호(214)는 암호화된 데이터(212) 또는 암호문을 생성하도록 비대칭 키 쌍(210) 및 데이터(204)의 공개 부분을 수용할 수 있다. 복호화 모드에 비대칭 암호(214)는 원본 데이터(204)를 생성하도록 비대칭 키 쌍(216) 및 암호문(212)의 비공개 부분을 수용할 수 있다. 비대칭 암호의 실행에서, 암호화 및 복호화 방법은 두 개의 분리하여 명명된 함수 호출일 수 있거나 입력의 부분으로서 모드 파라미터를 갖는 단일 호출일 수 있다. 비대칭 암호의 특성은 암호화 및 복호화 프로세스가 키 쌍의 다른 부분을 사용할 수 있다는 것이다. RSA-2048과 같은 실행에서, 공개 키는 수학 관계를 사용하여 비공개 키로부터 유도될 수 있고, 따라서 RSA-2048 비공개 키는 키 쌍과 동기화될 수 있고 공개 키는 그로부터 추출될 수 있다.
사인 모드에 디지털 서명 방법(222)은 디지털 서명(220)을 생성하기 위해 비대칭 키 쌍(216) 및 암호문(218)의 비공개 부분을 수용할 수 있다. 인증 모드에 디지털 서명 방법(222)은 디지털 서명이 암호문(218) 및 비대칭 키 쌍(216)의 비공개 부분을 사용하여 생성되었는지 여부를 인증하도록(224) 비대칭 키 쌍(210), 디지털 서명(220), 및 암호문(218)의 공개 부분을 수용할 수 있다. 디지털 서명 방법의 실행에서, 사인 및 인증 방법은 두 개의 분리하여 명명된 함수 호출일 수 있거나 입력의 부분으로서 모드 파라미터를 갖는 단일 호출일 수 있다. 디지털 서명의 특성은 사인 및 인증 프로세스가 키 쌍의 다른 부분을 사용할 수 있다는 것이다. RSA-2048 키 쌍에 기반한 디지털 서명 방법과 같은 실행에서, 공개 키는 수학적 관계를 사용하여 비공개 키로부터 유도될 수 있고, 따라서 RSA-2048 비공개 키는 키 쌍과 동기화될 수 있고 공개 키는 그로부터 추출될 수 있다. 간결성 및 간명함을 위해, 본 문헌은 디그로서 디지털 서명을 교환적으로 언급할 수 있고; 한 조각의 데이터를 디지털적으로 사인하는 행위는 교환적으로 디그닝(digning)으로서 언급될 수 있고; 디지털적으로 사인된 한 조각의 데이터를 갖는 것은 교환적으로 디그닝된(digned) 것으로 언급될 수 있다.
디지털 서명 방법은 메시지 인증 코드 또는 MAC의 유형일 수 있다. MAC은 데이터 상의 일 방향 해시 알고리즘으로 생성될 수 있다. SHA-512와 같은 해시 방법은 길이에서 512 비트까지일 수 있는 것의 메시지 다이제스트를 생성하도록 데이터 내용을 수용할 수 있다. SHA-512와 같은 방법을 사용하는 MAC의 인증은 한 조각의 데이터 상에 MAC을 재계산하는 것과 제공된 MAC와 균등을 위해 계산된 MAC을 비교하는 것을 수반한다. 입력된 해시 메시지 인증 코드 또는 HMAC로 공지된 기법은 HMAC 값을 생성하도록 데이터 내용을 따라 암호 키의 추가 입력을 받아들일 수 있다.
디지털 서명 방법 및/또는 해싱 방법은 각각의 데이터를 나타낼 수 있는 메시지 다이제스트를 생성하기 위해 본 개시의 다양한 부분에 사용될 수 있다.
네트워크 도해
도 3은 본 개시의 다양한 구현예가 부분적으로 또는 전체적으로 적용될 수 있는 단순화된 네트워크 도해를 나타낸다. 광역 네트워크(WAN)(302)는 사용자 또는 회사에 단순화된 네트워크 클라우드 조망을 제공하도록 함께 작동하는 다양한 텔레커뮤니케이션 센터에서 많은 서버, 라우터, 및 스위칭 시스템을 포함할 수 있는 네트워크 클라우드로서 표현될 수 있다. 클라우드 서비스(304)는 또한 클라우드 저장소 및 클라우드 처리와 같은 네트워크 서비스를 제공할 수 있는 다양한 상업적 시스템을 나타내는 클라우드로서 그림으로 단순화될 수 있고; 이들 서비스는 그 자신의 명세에 대해 실행될 수 있지만 서버 팜, 저장 어레이, 및 라우터의 다수의 예를 포함할 수 있다. 개인용 라우터(306)는 사용자가 가질 수 있는 복수의 네트워크 연결가능한 장치(308-318) 가운데 인터넷에 개별적인 사용자 접근을 부여할 수 있는 WAN(302)에 연결될 수 있다. 사용자는 도해에 묘사된 장치로 한정될 수 없고 동일한 네트워크 상에 또는 인터넷에 걸쳐 다른 장치에 접근하기 위해 라우터를 활용할 수 있는 임의의 장치를 사용할 수 있다. 라우터(306)는 인터넷 서비스 제공자에 전용 라우팅 장치일 수 있거나 라우팅 및/또는 LAN 및/또는 WLAN 능력을 제공하는 조합 장치일 수 있고 게이트웨이로 언급될 수 있다. 기업용 라우터(320)는 기업이 가질 수 있는 복수의 네트워크 연결가능한 장치(302-330) 가운데 인터넷에 기업 사용자 접근을 부여할 수 있는 WAN(302)에 연결될 수 있다. 기업은 도해에 묘사된 장치로 한정될 수 없고 동일한 네트워크 상에 또는 인터넷에 걸쳐 다른 장치에 접근하기 위해 라우터를 활용할 수 있는 임의의 장치를 사용할 수 있다. 라우터(320)는 인터넷 서비스 제공자에 대한 전용 라우팅 장치일 수 있거나 라우팅 및/또는 LAN 및/또는 WLAN 능력을 제공하는 상호연결된 관리된 라우터의 세트일 수 있고, 게이트웨이 및/또는 인트라넷으로 언급될 수 있다. 다양한 구현예에서 여기 기재된 시스템 및 방법이 사용될 수 있고, 본 네트워크 도해의 일부 또는 전부에 적용될 수 있다.
장치 도해
제네릭 컴퓨팅 장치(400)는 도 4에 묘사된다. 처리 유닛(404)은 장치 내에 일부 또는 모든 내부 통신 및 데이터 전송을 용이하게 할 수 있는 시스템 버스(402)에 연결될 수 있다. 단순함을 위한 경우가 아니라면 집합적으로 시스템 버스(402)로 언급될 수 있는 이용가능한 여러 다른 유형의 시스템 버스가 있을 수 있다. 처리 유닛은 GPU 보드 및 블레이드 서버와 같은 다양한 특화된 처리 보드에 발견된 이들과 같은 프로세서의 어레이는 물론 단일 또는 다중 코어 프로세서를 나타낼 수 있다. 시스템 버스에 의해 서비스된 다른 구성요소는 네트워크 어댑터(412); I/O 인터페이스(410); 디스플레이 인터페이스(414); BIOS 프로그램(408)을 저장할 수 있는 읽기 전용 메모리 ROM(406); 실행 중인 운영 시스템(418), 실행 중인 어플리케이션(420) 및/또는 어플리케이션 데이터(422)를 순식간에 저장할 수 있는 휘발성 메모리 RAM(416); 및 설치된 운영 시스템(428), 어플리케이션(430), 및/또는 데이터 파일(432)을 집합적으로 지속적으로 저장할 수 있는 하드 드라이브, SSD, 및 플래쉬 드라이브(426)와 같은 비휘발성 메모리(424)일 수 있다.
전용 컴퓨팅 장치의 모든 구성요소는, 적용가능하고 기능적인 본 개시의 일부 또는 모든 구현예에 대해 필수적이지 않을 수 있다. 예를 들어, 장치는 일부 IoT 장치 상에 발견된 이들로서 임의의 물리적 디스플레이를 갖지 않을 수 있고 I/O 인터페이스도 갖지 않을 수 있고; 라우터 및 게이트웨이는 물리적 하드 디스크의 방식으로 매우 조금 가질 수 있다. 너츠 지원 및 호환성에 관한 필수적인 요구사항은 처리 유닛, 저장소의 일부 형태, 및 시스템 버스를 포함할 수 있는 너츠 호환 소프트웨어를 실행하는 능력일 수 있다.
변환
변환은 컴퓨터 프로그래밍에서 발견된 다수의 공지된 데이터 조작 작동을 구조화하는 바람직한 방법일 수 있다. 너츠는 변환 구성 원리 또는 TOP와 같은 이를 나타낼 수 있다. 또한, 임의의 대칭 데이터 조작 작동은 TOP를 사용하여 분석될 수 있고 변환의 유형으로서 분류될 수 있다. 그런 후에, 변환은 변환으로 구조화된 데이터 폴딩 또는 SDFT로 불릴 수 있는 TOP의 프레임워크 내에 협력하여 작동하도록 카테고리화되고, 정상화되고, 구조화되고, 일체화되고 및/또는 적응될 수 있다. TOP의 통찰력 있는 시각 및/또는 SDFT로 데이터 상의 작동은 개념적으로 더 단순하고 및/또는 프로그램적으로 효율적인 방식으로 실행될 더 양호하고 및/또는 복잡한 데이터 설계를 허용할 수 있다. TOP 및 SDFT는 너츠 구성요소를 위한 바람직한 더 낮은 레벨 실행 메커니즘일 수 있다.
데이터의 변환에 기반한 분석, 방법, 및/또는 구조는 어떻게 그러한 개념을 레이어링하고 그 연관된 방법을 설계하는 것이 모듈식, 휴대가능하고, 저장가능하고 및/또는 자기 서술적인 방식으로 데이터의 용이하고 체계적인 변환을 허용할 수 있는 일체화된 데이터 구조 및 알고리즘 방법의 실행 세트를 규정할 수 있는지를 보여줄 수 있다. 그러한 분석의 레이어링되고 결합하는 성질로 인해, 변환에 관한 설명은 전방 및 후방 참조를 가질 수 있고 특정 특성의 더 양호한 이해를 얻기 위해 리더가 다른 섹션을 참조하는 것을 요구할 수 있다. 변환으로 구조화된 데이터 폴딩(SDFT)은 데이터 구조 및 방법론을 사용하여 변환을 확립하고 변환된 데이터의 저장성, 전달성, 모듈성, 휴대성, 캡슐화 및/또는 시간 호환성을 가능하게 도울 수 있다.
너츠 설계 내에, SDFT는 낮은 레벨 작동의 세트이고 너트를 더 용이하게 구성하도록 기본적인 빌딩 블록이 고려될 수 있다. 그러나, SDFT는 어플리케이션 내의 특정 지루하고 및/또는 반복적인 데이터 변환을 단순화하도록 독립적으로, 부분적으로 또는 전체적으로 사용될 수 있다. SDFT는 컴퓨터 통신 프로토콜이 두 개의 다른 어플리케이션 사이의 동일한 세션 내의 변환 시퀀스 및/또는 변환 파라미터 차이를 동적으로 스위칭하는 것을 가능하게 할 수 있다. 현재, 그러한 단일 세션 동적 스위칭은 비단순 프로그램 훈련일 수 있다. 너트를 확립하기 위해 SDFT를 사용하는 것이 필수적인 요구사항이 아닐 수 있지만, 그 특징은 더 편리하게, 분명하게 그리고 유연하게 너트를 확립하는 것을 도울 수 있다. SDFT는 상태 전이 시퀀스의 가역성 상에 잘 정의된 거동으로 전이 이벤트의 무한 변화를 허용하는 데이터 상태 전이 방법론으로 더 기재될 수 있고, 단순한 문맥 의존 방식으로 필수적인 속성 및 데이터를 지속하는 반복적인 캡슐화 기법을 제공할 수 있다. SDFT는 매일의 프로그래밍 문제의 혼란스러움을 허용하고 받아들이고 이론적 증거가 경험적 증거에 종속적일 수 있는 구조화 원칙의 실용적 세트를 나타낼 수 있다.
도 5는 어떻게 변환 구성 원리가 입력 데이터 소스(502) 및 속성(504)을 요구할 수 있고 변환된 데이터(512) 및 연관된 속성(514)을 출력할 수 있는 데이터 변환(510)으로서 임의의 데이터 연산을 조망할 수 있는지를 도시한다. 임의의 잘 정의된 데이터의 조작, 연산, 전환 및/또는 변형은 변환(510)의 유형으로서 분류될 수 있다. TOP는 모듈식, 휴대가능하고 및/또는 자기 서술적인 방식으로 데이터를 변환하는 방법의 일관된 세트를 체계적으로 구성하는 것을 허용할 수 있다.
도 6에 표는 공통 데이터 연산의 샘플 세트 및 어떻게 그들이 TOP를 사용하여 분류될 수 있는지를 도시한다. 변환은 지각으로 그리고 실제로 전통적으로 분리될 수 있는 기본적인 데이터 연산의 클래스를 포함할 수 있다. 그러한 것은 프로그래머가 암호 및 데이터 압축을 논의할 때, 데이터 연산의 이들 두 개의 클래스가 일반적으로 데이터 상의 두 개의 매우 분리적이고 구분적인 작동으로 간주될 수 있는 경우일 수 있다. TOP의 관점을 통해, 각각의 작동의 알고리즘 차이를 너머서, 이들 작동은 암호 변환 및 압축 변환의 유형으로 간주될 수 있다. 표에서, ‘제이슨 직렬화’는 ‘제이슨’의 작동으로 ‘직렬’ 변환으로서 분류될 수 있고, 따라서 실행가능한 변환 명령어는 ‘serialize json’으로서 언급될 수 있다. 한 조각의 데이터 상의 AES 대칭 암호 암호화 호출은 ‘aes’의 작동으로 ‘에스사이퍼’변환으로서 분류될 수 있고, 따라서 실행가능한 변환 명령어는 ‘scipher aes’으로 언급될 수 있다. 해당 기술분야의 당업자는 표에 나열된 모든 다른 유형의 데이터 연산을 용이하게 인지할 수 있고, 변환 분류 및 작동 카테고리화의 구조화 패턴을 따를 수 있다.
도 7은 전방 모드 또는 가역 작동에서 변환의 도해를 나타낸다. 본 도면은 반대 방향으로 흐르는 데이터 흐름 화살표를 제외하고 도 5와 동일하다. 변환(510)은 블록(710)에 의해 도시된 바와 같이 잘 정의된 가역 알고리즘을 가질 수 있다. 가역 변환(710)은 변환된 데이터 소스(712) 및 속성(714)을 입력으로서 요구할 수 있고 원본 데이터(702) 및 연관된 속성(704)을 출력할 수 있다. 가역 변환과 유사한 개념을 나타낼 수 있는 가역 컴퓨팅으로 불리는 컴퓨팅의 필드가 존재할 수 있다. 각각의 구조화 원칙의 목표에서 일부 차이가 있을 수 있다. 가역 컴퓨팅은, 일반적인 계산의 가능한 에너지 효율성을 위해 작동이 실리콘 층으로 아래로 실행될 수 있는 일반화된 가역 컴퓨팅 언어의 존재를 이론화할 수 있다. 가역 변환은 작성 코드를 최소화, 프로그램 에러를 최소화, 편리한 키 관리, 키 생성을 단순화, 휴대가능한 자기 서술적 데이터를 구조화, 데이터 조작 개념을 정상화, 변환을 수행하는 프로그래밍 언어 독립적인 방법을 도입, 및/또는 복잡한 암호 데이터 구조의 확립을 단순화와 같은 그러나 그로 한정되지 않는 혜택을 위해 TOP를 구체적으로 실행하는 것을 목표로 할 수 있다.
도 8은 비가역 변환의 그림을 이용한 표현을 나타낸다. 전방 모드에서 변환(810)은 변환된 데이터(812) 및 속성(814)를 생성할 수 있는 데이터(802) 및 속성(804) 상에 변환을 수행할 수 있지만, 이들은 조작의 유형에 따라 출력하고, 변환은 입력 상에 수행할 수 있고 비가역 성질일 수 있다. 그러한 비가역 변환은 해시, MAC, 손실된 데이터 압축 및 다른 일 방향 기능 또는 데이터 조작에 의해 예시화될 수 있다. TOP는 그러한 비가역 변환의 특성을 주변적으로 증가시킬 수 있고 가역 변환 특성을 규정할 수 있는 작동을 생성할 수 있는 분석 기법을 도입할 수 있다.
도 9는 조건부로 비가역 변환의 블록도를 나타낸다. 그러한 변환(910)은 잘 정의된 가역 알고리즘을 가질 수 있지만, 가역 작동을 위한 추가 입력 및/또는 속성(914)이 성공하는 것을 요구할 수 있다. 필요한 조건(916)이 충족되면, 그리고 충족될 때, 조건적으로 가역적인 변환(910)은 변환된 데이터 소스(912) 및/또는 속성(914)을 입력으로서 요구할 수 있고 원본 데이터(902) 및/또는 연관된 속성(904)을 출력할 수 있고, 그렇지 않으면 그것은 에러 조건(920)으로 실패할 수 있다. 정확한 키(속성)의 부재가 암호문의 복호화를 방해할 수 있기 때문에, 키를 요구할 수 있는 암호는 조건적으로 가역적인 변환으로 분류될 수 있다.
도 10은 공통 데이터 연산 및 기능 및 각각의 변환 분류를 나열하는 표이다. 해당 기술분야의 당업자는 표에 나열된 데이터 연산 및/또는 기능의 일부 또는 전부를 인지할 수 있다. 예시적인 목적을 위해, 본 문헌에 제시된 물질은 파이썬 버전 3.6으로 불리는 프로그래밍 언어 및 그 구문, 개념, 기능, 및/또는 방법을 참조할 수 있다. 본 개시에 참조된 암호 기능 중 다수는 파이썬 표준, 파이크립토돔(pyCryptodome), 비밀공유 및/또는 파이크립토(pyCrypto) 라이브러리에서 발견될 수 있다. 해당 기술분야의 당업자는 대개의 현대의 프로그래밍 언어 및 그 각각의 라이브러리에서 등가의 구문, 개념, 기능, 및/또는 방법을 발견할 수 있다. ‘디그’는 디지털 서명을 위한 변환이고; 다른 기억술이 본 문헌의 심볼 및 약어 섹션에서 열거될 수 있음을 언급한다. 또한 각각의 변환의 구체적인 기재는 도 12에 표에서 발견될 수 있다.
도 11은 파이썬 v3.6에서 정의된 코덱의 표이다. 본 목록은 현존하는 다수의 코덱, 새로운 코덱의 확산, 및/또는 파이썬 v3.6에 정의된 이들의 제한으로 인해 완벽하지 않을 수 있다. ‘코덱’은 코드/디코드의 축약형이고 컴퓨팅에서 문자 집합에 관한 매핑이다. 문자는 단일 코덱 내에 임의의 그러나 고유한 2진 값에 할당되고; 따라서 완벽한 문자 집합이 단일 코덱을 정의할 수 있다. 소정 코덱 내의 모든 문자가 인간 판독가능하거나 프린트가능한 것은 아닐 수 있다. 코덱의 공통 사용은 다른 언어의 다른 문자 세트의 적절한 표현에 관한 것이다. ‘인코드’ 변환은 소정 데이터 스트링 상의 이들 코덱 인코딩 작동 중 어느 하나를 수행할 수 있다. ‘utf_”로 시작하는 이름을 갖는 코덱은 다수의 인터넷 기반 표준에 관한 국제 문자 집합의 구성 원리일 수 있는 유니코드 변환 포맷(UTF)에 일치하는 이들을 특정할 수 있다.
도 12는 논의된 변환을 나열하는 표이고 따라서 구체적인 기재와는 거리가 있다. 추가 변환은 표에 마지막 6개의 변환에 의해 도시된 바와 같이 TOP를 사용하는 프레임워크 내에 정의될 수 있다: 키, 클린, TAR 그룹, 프레스, 로그, 및 뫼비우스. 이들 추가 변환의 일부는 변환으로 구조화된 데이터 폴딩(SDFT) 라이브러리로 특정될 수 있고, 일부는 언어 특정일 수 있고 및/또는 일부는 너츠 관련된 작동일 수 있다. 이는 레퍼토리를 확장하도록 신규한 변환 유형이 정의되고 분류되는 것을 허용함으로써 TOP의 유연한 성질을 도시할 수 있다. 이러한 유연한 확장 특징은 SDFT 라이브러리가 특징에서 신규한 변환 작동을 허용할 수 있도록 설계에 의한 것이다. 확장 특징은 또한 백워드 호환성을 위해 변환 작동의 더 낡은 버전이 소급적으로 추가되는 것을 허용할 수 있다. 그러한 유연성의 혜택은 더 양호한 시간 호환성의 특성을 획득하는 SDFT 처리된 데이터의 능력일 수 있다. 데이터의 시간 호환성은 시간에서 일부 특징점에서 동일하거나 다른 어플리케이션에 의해 저장된 데이터가 용이하게 처리되는 것을 허용할 수 있는 그러한 특성으로서 정의될 수 있다. 시간 비호환성은 어플리케이션 파일 포맷 버전 차이, 다른 문자 인코딩, 구식 어플리케이션 파일 포맷, 데이터 연산 방법 차이, 데이터 연산 시퀀싱 차이 및/또는 데이터 연산 특정 파라미터 차이로부터 발생할 수 있지만 그로 한정되지 않는다.
도 13은 변환 가역성 매트릭스를 나타낸다. 각각의 변환은 가역, 비가역, 및/또는 조건적으로 가역인 것으로 지시될 수 있다. 그러한 지시를 하는 기준은 실제로 실행된 및/또는 이론적 부족보다는 변환의 이상적 의도에 기반할 수 있다. 다른 경우에, 지시는 임의적일 수 있다. 이는 소스 데이터의 128 비트 길이 해시를 생성할 수 있는 MD4로 불리는 다이제스트 작동에 의해 도시될 수 있다. 해싱 알고리즘에서 원치 않는 특성일 수 있는 충돌에 대한 감수성으로 인해 512-비트 샤(sha)2와 같은 해시 작동에 비해 MD4 해시는 심각하게 약한 해싱 알고리즘으로 간주될 수 있다. TOP 관점은 비가역적 고유한 해시이도록 MD4의 본래 의도 중 하나를 인지하고 그것을 그러한 방식으로 카테고리화하기 위한 것일 수 있다. 그러한 카테고리화는 더 나중 섹션에서 도시될 바와 같이 추가 TOP 분석을 통해 잘 정의된 조작된 가역성 특성을 얻는 것으로부터 이러한 유형의 변환을 배제하지 않을 수 있다. 압축 변환은 특정 압축 작동이 수행되는 것에 기반한 가역 및 비가역 지시 모두에 해당할 수 있다. 다수의 이미지 및/또는 오디오 압축 기법은 샘플링 성질로 인해 비가역성을 나타낼 수 있고; 12 MB 디지털 이미지는 챗 어플리케이션을 통한 효율적인 전달을 위해 360 KB로 아래로 압축될 수 있지만 인간 시지각의 성질로 인해, 이미지의 일반적인 인상은 영구적인 데이터 손실에도 불구하고 적절하게 전달될 수 있다. 그러한 압축된 이미지는 변환 동안 폐기될 수 있는 원본 데이터의 엄청난 양으로 인해 비가역적으로 수정될 수 있다.
가역적 압축 변환은 gzip 압축에 의해 예시화될 수 있고; 2진 데이터 내의 반복적인 비트 패턴을 식별하고 감소시키는 원칙 상에 작동할 수 있지만, 프로세스를 가역하고 전체적으로 원본 데이터를 재생성하기에 충분한 정보를 유지할 수 있다. 조건적으로 가역적 변환은 AES 대칭 암호에 의해 예시화될 수 있고; 평문 및 대칭 키를 수용하고 암호문을 생성하는 원칙 상에 작동할 수 있다. 암호화 프로세스는 원본 평문을 생성하기 위한 키 및 암호문을 취할 수 있다. 따라서, 암호문을 위한 정확한 대칭 키의 제시는 암호문을 해독하거나 암호화 프로세스를 가역하기 위해 충족되어야만 하는 필수 조건일 수 있다.
TOP는 전방 또는 반대와 같은 소정 변환 작동의 방향을 지시할 수 있는 변환 모드를 규정할 수 있다. 변환의 전방 모드는 정상 프로세스 및/또는 조작된 전방 프로세스를 수행할 수 있다. 변환의 반대 모드는 고유한 반대 프로세스 및/또는 조작된 반대 프로세스를 수행할 수 있다. 도 14에 표는 작동의 유형을 나타내는 매트릭스를 도시하고 변환은 변환 모드에 기반해 내부적으로 수행할 수 있다. 참조로서, 표는 ‘직렬화’ 및 ‘병렬화’ 또는 ‘암호화’ 및 ‘복호화’와 같은 흔히 공지된 작동 명칭을 열거한다. 다이제스트 및 디그의 조작된 반대 프로세스: ‘다이제스트’ 및 ‘검증’, ‘사인’ 및 ‘인증’를 언급한다. 변환 데이터 구조와 연관된 다양한 내부 데이터를 지울 수 있는 ‘클린’ 변환에 있어서, 지워진 일시적 데이터를 재생성하기 위한 적합한 추가 데이터 및/또는 원본 데이터 상의 전방 변환 프로세스의 재실행 없이 그러한 지워진 데이터를 회복하는 것은 불가능할 수 있다. ‘키’ 변환은 변환을 수행하는 것에 관련된 키 생성 및/또는 관리 작동을 수행할 수 있다. 그러한 바와 같이, 키 생성의 고유한 무작위 성질로 인해, 유한 시간에서 결정론적 방식으로 그러한 프로세스를 이론적으로 및/또는 알고리즘적으로 가역하는 것은 불가능할 수 있다. 우리가 어떻게 변환이 구조화된 데이터 폴딩(SDF)의 문맥 내에 작동할 수 있는지를 다룰 때,‘키’ 변환의 키 관리 측면은 이후 섹션에서 구체적으로 논의될 것이고; 키 변환의 키 관리 측면은 SDF 문맥에서 성공적인 처리를 위해 적절한 키 구조를 설정하는 특성으로 인해 가역 상대를 조작하기 어려울 수 있다.
도 15는 일련의 세 개의 도해를 도시하고, 그 각각은 가역 변환으로 지시될 수 있는 직렬 변환(1504) 예시를 더 구체화한다. 컴퓨터 프로그래밍에서, 직렬 및/또는 마셜링 기법은 복잡한 언어 특정 내부 데이터 구조를 취할 수 있고 등가의 데이터 스트링 또는 데이터 스트링의 세트(이후로 데이터 스트링으로 언급됨)를 생성하기 위해 선형 방식으로 내용을 체계적으로 해체하고 및/또는 구조화할 수 있다. 데이터 스트링 형태는 영구 저장소, 데이터 전송 및/또는 추가 변환에 더 적합할 수 있다. 정의에 의한 직렬화는 유래하는 언어 또는 그 등가물에 원본 내용을 재구성하는 논리적 방식으로 완벽하게 가역적인 것을 요구할 수 있다. 파이썬 구조(1512)는 등가 제이슨 스트링(1516)을 생성하도록 제이슨 작동(1514)을 사용하여 변환될 수 있고, 가역 프로세스는 양방향 프로세스 흐름 화살표에 의해 도시된 바와 같이 가능할 수 있다. 단순한 트리 데이터 구조는 복잡한 파이썬 데이터 구조를 예시화할 수 있는 (1522)에 도시된다. 직렬 변환(1524)은 (1522)로부터 등가 스트링(1526)을 생성할 수 있다. 이러한 출력 스트링(1526)은 이제 프로그램 진행으로서 저장되고, 전달되고 및/또는 변환될 수 있다.
도 16은 일련의 세 개의 도해를 도시하고, 그 각각은 비가역 변환으로 지시될 수 있는 다이제스트 변환(1606) 예시를 더 구체화한다. 이러한 예시는 속성(1604)으로서 입력 데이터(1612) 및 다이제스트 길이(1614)를 요구할 수 있는 다이제스트 변환(1616)으로서 샤2 해시 작동을 도시한다. 샤2 해시 다이제스트 변환(1616)은 특정된 길이(1618)의 해시를 생성할 수 있다. 파이썬 데이터 스트링(1622) 및 256 비트의 소망하는 다이제스트 길이(1624)는 256 비트 길이 해시 스트링(1628)을 생성하기 위한 샤2 해시 변환(1626)에 대한 입력일 수 있다.
도 17은 검증으로도 알려진 반대 모드에서 다이제스트 변환의 구체적인 예시를 도시한다. TOP에서, 이는 변환의 조작된 역전으로 언급될 수 있다. 다이제스트 변환(1710)은 출력(1708)으로서 다이제스트 스트링 DG1(1712)을 생성될 수 있는 전방 모드 다이제스트 변환(1710)을 수행하기 위해 입력 데이터 D1(1702) 및 속성 A1(1704)로서 수용할 수 있다. 이러한 변환(1720)의 반대 모드는 다이제스트 스트링 DG1(1728)이 검증되었는지(1732) 또는 실패된 검증(1734)인지 여부를 나타내는 플래그 및/또는 값의 출력(1738)으로서 생성할 수 있는 반대 모드 다이제스트 변환(1720)을 수행하기 위한 데이터 D1(1722), 속성 A1(1724) 및 다이제스트 스트링 DG1(1728)을 입력(1736)으로서 수용할 수 있다. 검증(1740)의 프로세스는 입력 D1(1722) 및 A1(1724) 상의 전방 모드 다이제스트 변환(1720)을 수행함으로써 다이제스트 스트링(DG2)(1722)을 수행할 수 있다. 출력 다이제스트 스트링 DG2(1722)는 그런 후에 입력 다이제스트 스트링 DG1(1728)에 대비해 균등성(1730)에 대해 비교될 수 있다. 비교(1738)의 결과는 반대 다이제스트 변환이 성공했는지 아닌지 여부를 나타내도록 일부 형태로 표현될 수 있다. 이러한 방식으로, 이러한 다이제스트 역전의 조작은 어렵고, 시간 소모적이고 및/또는 도달 불가능할 수 있는 그러한 작동의 논리적 가역성을 찾는 임의의 대안에 의존하기보다는 변환의 전방 모드가 재처리되고 출력을 비교하는 것을 요구한다.
도 18, 19, 및 20은 대칭 암호로도 공지된 전방 및 반대 모드에서 에스사이퍼 변환의 구체적인 예시를 도시한다. 전방 모드(1806)에서 에스사이퍼 변환은 출력 암호문(1810) 및/또는 속성(1812)으로서 생성하는 입력 평문(1802) 및 속성(1804)로서 수용할 수 있다. 반대 모드(1826)에서 에스사이퍼 변환은 출력 평문(1822) 및/또는 속성(1812)으로서 생성하는 입력 평문(1830) 및 속성(1832)로서 수용할 수 있다. 도 19는 어떻게 살사20 대칭 암호가 에스사이퍼 변환으로서 작동할 수 있는지를 도시한다. 전방 모드(1906)에서 에스사이퍼 살사20 변환은 출력 암호문(1910)으로서 생성하도록 입력 평문(1902) 및 속성(1904)로서 수용할 수 있다. 전방 모드에서 이러한 특정 암호에 대한 속성은 2진 대칭 키, 키의 길이, 및/또는 솔트 값을 포함할 수 있다. 이러한 살사20 전방(암호화) 실행은 스트리밍 암호일 수 있고 숨겨진 속성 뿐만 아니라 어떠한 추가 출력 속성도 암호화 프로세스 동안 생성될 수 없고, 함수는 자신의 출력 스트링 내에 임베딩될 수 있다. 반대 모드(1926)에서 에스사이퍼 살사20 변환은 출력 평문(1922)으로 생성하도록 입력 암호문(1930) 및 속성(1932)으로서 수용할 수 있다. 반대 모드에서 이러한 특정 암호에 대한 속성은 2진 대칭 키, 키의 길이, 및/또는 솔트 값을 포함할 수 있다. 이러한 살사20 반대 실행(복호화)은 스트리밍 암호일 수 있고 어떠한 추가 출력 속성도 복호화 프로세스 동안 생성될 수 없다. 도 20은 파이썬 v3.6 및 파이크립토돔 라이브러리 기능 내에 표현될 수 있는 바와 같이, 어떻게 살사20 대칭 암호가 샘플 데이터 상의 변환으로서 작동할 수 있는지를 도시한다. 전방 모드(2006)에서 에스사이퍼 살사20 변환은 출력 암호문(2010)으로서 생성하도록 256-비트 대칭 비밀키 및 넌스(솔트로서)를 포함하는 데이터 스트링(2002) 및 속성(2004)을 입력으로서 허용할 수 있다. 파이썬에서, 대칭 키는 ‘바이트’ 데이터유형 스트링으로서 표현될 수 있고, 따라서 키 길이 속성은 키 바이트 스트링 상의 len() 함수에 의해 용이하게 유도될 수 있다. 반대 모드(2026)에서 에스사이퍼 살사20 변환은 출력 평문(2022)으로 생성하도록 256-비트 대칭 비밀키 및 넌스를 포함하는 입력 암호문(2030) 및 속성(2032)으로서 수용할 수 있다. 파이썬에서, 대칭 키는 ‘바이트’ 데이터유형 스트링으로서 표현될 수 있고, 따라서 키 길이 속성은 키 바이트 스트링 상의 len() 함수에 의해 용이하게 유도될 수 있다. 속성(2032)은 원본 평문(2002)을 복구하도록 반대 모드(복호화)에서 암호문(2030)을 적절하게 처리하도록 이러한 조건적으로 가역적 변환을 위해 속성(2004)과 등가이도록 요구될 수 있다.
변환 유형
도 21 내지 도 35에 제시된 다음의 표 및 예시에서, 각각의 변환은 본 표에서 특정된 작동으로 한정되지 않을 수 있고; 임의의 적합한 작동이 TOP를 통해 분석될 수 있고 그런 후에 특정 변환의 작동 능력을 확장하도록 프레임워크에 일체화될 수 있다. 파이썬 v3.6 구문 및 구성은 더 구체적으로 예시를 도시하도록 사용될 수 있다. 등가 데이터 유형, 구조, 구문 및/또는 방법이 발견될 수 있고 해당 기술분야의 당업자에 의해 다른 프로그래밍 언어에서 대체될 수 있다. 일부 경우에, 키/값 옵션은 특정 언어 또는 라이브러리에 관련되지 않을 수 있고, 처리가 등가의 결과를 생성할 수 있는 한에는 필요에 따라 무시되거나 수정될 수 있다.
직렬화/압축 변환
도 21은 직렬 및 압축 변환(2102)을 위한 명령어 명세의 표 및 그 사용(2104)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 표(2102)는 변환명 및 각각의 변환을 위한 허용가능한 작동 유형을 나열한다. 뒤따르는‘=’을 갖는 임의의 칼럼 헤더는 아래에 제시된 값을 나타낼 수 있고 그것은 명령어 구문 구성에서 키/값 포맷으로 표현될 수 있다. ‘입력’및 ‘출력’ 열은 파이썬 v3.6의 문맥 내의 변환/작동에 대해 기대된 데이터 유형/구조를 특정할 수 있다. 예를 들어, 명령어 ‘serialize json sortkeys=t’는 다음의 데이터 조작 시퀀스를 수행할 수 있다: 임의의 파이썬 데이터 구조를 입력으로서 취함, 참으로 설정된 ‘sort_keys’ 플래그로 그 상에 json.dumps()를 수행, 그런 후에 데이터의 직렬화된 버전으로 파이썬 스트링을 출력. 이러한 명령어의 반대 모드는 입력으로서 제이슨 포맷된 파이썬 스트링을 기대하고, 그 상에 json.loads()를 수행하고, 그런 후에 파이썬 데이터 구조를 출력한다. 'sort_keys’ 플래그는 json.dumps() 함수가 오름차순으로 임의의 파이썬 사전 구조의 키를 처리하는 것을 알려준다. 파이썬 v3.6은 키에 의해 처리할 때 사전 구조에 대해 지속적인 처리 순서를 보장하지 않을 수 있고, 따라서 결과 제이슨 스트링은 동일한 데이터 구조 상의 이러한 변환의 다중 작동 사이에 불일치할 수 있다. 직렬 변환 내에서 특정 순서로 키를 소팅하는 것은 동일한 데이터 구조 상의 다중 작동 사이에 출력으로서 동일한 제이슨 스트링을 초래하는 처리 시퀀스에 일관성을 제공할 수 있다. 이는 두 개의 제이슨 스트링이 등가인지 여부를 판단하는 목적을 위해 매우 중요해질 수 있고 그러한 바와 같이, 두 개의 등가의 사전 직렬화 데이터 구조를 나타낼 수 있다.
표(2102)에서 압축 변환은 여러 다른 무손실 압축 작동 또는 가역 압축을 나타낸다. 임의의 비가역 또는 손실 압축 작동은 압축 변환 레퍼토리를 연장할 수 있지만, 가역 변환을 논의하는 목적을 위해, 데이터 크기 감소를 훨씬 너머서 암호 목적을 제공할 수 없는 일 방향 함수를 논의하는 것은 흥미롭지도 건설적이지도 않을 수 있다. TOP 관점에서, 손실 압축은 나중 섹션에서 논의될 다이제스트 변환과 동일한 방식으로 분석되거나 처리될 수 있다. (2104)에서 예시에서, 명령어 ‘compress bz2’는 2진 스트링 입력 상의 bz2 압축을 수행할 수 있고 입력 스트링보다 크기에서 더 작거나 작지 않을 수 있는 2진 스트링 출력을 생성할 수 있다. 일부 데이터는 더 이상 특정 압축 스킴을 사용하여 압축가능하지 않을 수 있고; 이의 예시는 어디에서 bz2 압축된 스트링이 다시 처리될 수 있는가이고 추가 데이터 크기 감소는 달성되지 않을 수 있다.
인코드 변환
도 22는 인코드(2202) 변환을 위한 명령어 명세의 표 및 그 사용(2204)을 나타내는 샘플 변환 명령어의 세트를 나타낸다. 컴퓨터 과학에서 다수의 인코딩 스킴이 있을 수 있고 본 표에서 참조는 모든 공지된 인코딩 스킴을 나타내지 않는다. ‘인코팅=’ 열 하에 열거된 인코딩 스팀은 파이썬 v3.6 및 그 연관된 표준 라이브러리에서 발견될 수 있다. 해당 기술분야의 당업자는 데이터를 조작할 수 있는 어플리케이션에 관련된 문제를 해결하기 위해 모든 이러한 유형의 인코딩에 대해 접근하는 활용성을 인지할 수 있다. ‘코덱(98)’은 이러한 작성의 파이썬 v3.6에서 지원된 코텍의 목록을 언급하고 도 11에 표에 앞서 나열되었다. 변환 명령어 ‘encode strbin utf_8’는 파이썬 스트링을 입력으로서 취할 수 있고, 그것 상에 utf_8 유니코드 인코딩을 수행할 수 있고 파이썬 바이트 스트링으로서 결과를 출력할 수 있다. 변환 명령어 ‘encode utf utf_16’은 파이썬 스트링을 입력으로서 취할 수 있고, 그것 상에 utf_16 유니코드 인코딩을 수행할 수 있고, 파이썬 스트링으로서 결과를 출력할 수 있다. 변환 명령어 ‘encode binascii hex’는 파이썬 바이트 스트링을 입력으로서 취할 수 있고, 그것 상에 16진 인코딩을 수행할 수 있고, 파이썬 스트링으로서 결과를 출력할 수 있다. 변환 명령어 ‘encode base 64’는 파이썬 바이트 스트링을 입력으로서 취할 수 있고, 그것 상에 베이스64 2진 인코딩을 수행할 수 있고, 파이썬 스트링으로서 결과를 출력할 수 있다. 변환 명령어 ‘encode utf_8’은 ‘encode utf utf_8’와 등가이다. 이들 설명은 인코드 변환 명령어 구문에서 허용된 순열의 일관성 및 유형을 도시할 수 있다.
다이제스트 변환
도 23은 다이제스트 변환(2302)을 위한 명령어 명세의 표 및 그 사용(2304)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 표(2302)에 도시된 바와 같은 다이제스트 변환은 3개 유형의 작동을 규정하지만 그들로 한정되지 않는다: 해시(hash), hmac 및/또는 cmac. 변환 명령어 ‘digest hash md5 128’는 소스 데이터 스트링을 입력으로서 취할 수 있고, 그것 상에 MD5 해시 함수를 수행할 수 있고 길이에서 128 비트인 출력 다이제스트 바이트를 생성할 수 있다. 입력 소스 데이터 스트링은 다이제스트 변환 호출 동안 수정될 수 없고 겹쳐쓰기될 수 없으며; 출력 다이제스트 바이트 스트링은 다이제스트 변환 호출로부터 생성된 추가 데이터일 수 있고 분리 메모리 공간으로서 제공될 수 있음에 유념한다. 변환 명령어 ‘digest hash sha2 512’는 소스 데이터 스트링을 입력으로서 취할 수 있고, 그것 상에 샤2 해시 함수를 수행할 수 있고 길이에서 512 비트인 출력 다이제스트 바이트를 생성할 수 있다. 변환 명령어 ‘digest hash shake256 digestlen=332’는 소스 데이터 스트링을 입력으로서 취할 수 있고, 그것 상에 SHAKE256 해시 함수를 수행할 수 있고 길이에서 332 비트인 출력 다이제스트 바이트 스트링을 생성할 수 있다. 변환 명령어 ‘digest hash sha2 256’은 소스 데이터 스트링을 입력으로서 취할 수 있고, 샤2 해시를 사용하여 그것 상에 HMAC 함수를 수행할 수 있고 길이에서 256 비트인 출력 다이제스트 바이트 스트링을 생성할 수 있다. 변환 명령어 ‘digest cmac aes 256’은 소스 데이터 스트링 및 256 비트 대칭 키를 입력으로서 취할 수 있고, AES256 암호를 사용하여 그것 상에 CMAC 함수를 수행할 수 있고 길이에서 128 비트인 출력 다이제스트 바이트 스트링을 생성할 수 있다. 이들 다이제스트 변환 예시 작동 및 유형의 전부는 표준 파이썬 라이브러리 및/또는 파이크립토돔 라이브러리에서 발견될 수 있고 모든 다양한 작동, 유형, 다이제스트 길이, 키 길이 및/또는 이들 샘플 라이브러리의 외부에 이론적이고 및/또는 실행된 관점에서 존재할 수 있는 다른 파라미터를 표현할 수는 없다. 임의의 추가 변형이 TOP를 통해 적절하게 분석될 수 있고 변환 형태로 일체화될 수 있다. 임의의 변환 형태에 관한 그러한 통합은 기존 변환 작동의 리팩토링 및 리테스팅을 요구할 수 있다.
에이사이퍼/디그 변환
도 24는 에이사이퍼 및 디그 변환(2402, 2404, 2406)을 위한 명령어 명세의 표 및 그 사용(2410)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 변환 명령어 ‘acipher pkcs1_oaep 2048’는 바이트 스트링 및 2048 비트 길이 RSA 비대칭 공개 키를 입력으로서 취할 수 있고, 512 비트 샤2 해시를 활용하여 그것 상에 RSA PKCS#1 OAEP 암호 연산을 수행할 수 있고, 길이에서 2048 비트인 암호화된 바이트 스트링을 출력으로서 생성할 수 있다. 변환 명령어 ‘acipher pkcs1_v1_5 3072는 바이트 스트링 및 3072 비트 길이 RSA 비대칭 공개 키를 입력으로서 취할 수 있고, 그것 상에 RSA PKCS#1 v1.5 암호 작동을 수행할 수 있고 길이에서 3072 비트인 암호화된 바이트 스트링을 출력으로서 생성할 수 있다. 이들 에이사이퍼 변환의 반대 모드는 바이트 스트링으로서 암호문 및 원본 평문을 생성하기 위해 적합한 RSA 키의 비공개 부분을 입력으로서 요구할 수 있다.
변환 명령어 ‘dign pkcs1_v1_5 2048’은 바이트 소스 스트링 및 2048 비트 길이 RSA 비대칭 비공개 키를 입력으로서 취할 수 있고, 512 비트 샤2 해시를 활용하여 그것 상에 RSA PKCS#1 v1.5 디지털 서명 작동을 수행할 수 있고, 길이에서 2048 비트인 다이제스트 바이트 스트링을 출력으로서 생성할 수 있다. TOP가 이들 출력을 유사한 기능을 제공하는 것으로 간주할 수 있고 따라서 ‘다이제스트’ 변수 이름에 의해 언급되는 그러한 바이트 스트링을 저장할 수 있기 때문에, 용어 ‘다이제스트 바이트 스트링’은 ‘디지털 서명 바이트 스트링’과 교환적으로 사용될 수 있음을 유념한다. 변환 명령어 ‘dign dss 1024 hashtyp=sha2’는 바이트 소스 스트링 및 1024 비트 길이 DSA 비대칭 비공개 키를 입력으로서 취할 수 있고, 512 비트 샤2 해시를 활용하여 FIPS-186-3 모드에서 그것 상에 DSS 디지털 서명 작동을 수행할 수 있고, 길이에서 1024 비트인 다이제스트 바이트 스트링을 출력으로서 생성할 수 있다. 변환 명령어 ‘dign dss 256’는 바이트 소스 스트링 및 256 비트 길이 ECC 비대칭 비공개 키를 입력으로서 취할 수 있고, 512 비트 샤2 해시를 활용하여 FIPS-186-3 모드에서 그것 상에 DSS 디지털 서명 작동을 수행할 수 있고, 길이에서 256 비트인 다이제스트 바이트 스트링을 출력으로서 생성할 수 있다. 이들 디그 변환의 반대 모드는 다이제스트 바이트 스트링(디지털 서명), 소스 바이트 스트링 및 그것을 인증하기 위해 적합한 비대칭 키의 공개 부분을 입력으로서 요구할 수 있다.
유도 변환
도 25는 유도 변환(2502, 2504, 2506)을 위한 명령어 명세의 표, 및 그 사용(2510)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 샘플 작동 pbkdf2, hkdf, 및 스크립트(scrypt)는 또한 키 유도 함수 및/또는 키 스트레칭 함수로도 알려져 있다. 유도 변환의 기본 기능은 사용자에게 알려질 수 있는 2진 또는 문자 데이터 스트링으로부터 소망하는 길이의 대칭 키 또는 키들을 유도하는 것일 수 있고; 키 유도 함수의 공통 사용은 패스워드 또는 패스프레이즈로부터 적절하게 형성된 대칭 암호 키(들)를 유도하는 것일 수 있다. 변환 명령어 ‘derive pbkdf2 keylen=256 iterations=l00000’는 입력으로서 문자 데이터 스트링(패스워드 또는 패스프레이즈)을 취할 수 있고, 샤2 512-비트 해시 함수, 솔트로서 무작위로 생성된 512 비트 초기화 벡터, 및 100,000까지의 반복 카운트 파라미터 세트를 사용하여 그것 상에 PBKDF2 연산을 수행하고, 그리고 256 비트 길이 바이트 데이터 스트링인 상응하는 대칭 키를 생성할 수 있다. 변환 명령어 ‘derive hkdf keylen=256 numkeys=4’는 입력으로서 바이트 데이터 스트링을 취할 수 있고, 샤2 512-비트 해시 함수, 솔트로서 무작위로 생성된 512 비트 초기화 벡터를 사용하여 그것 상에 HKDF 연산을 수행하고, 그리고 그 각각이 256 비트 길이 바이트 데이터 스트링인 4개의 관련된 대칭 키의 상응하는 세트를 생성할 수 있다. 변환 명령어 ‘derive scrypt keylen=128 mode=login’는 입력으로서 데이터 스트링을 취할 수 있고, 솔트로서 무작위로 생성된 512 비트 초기화 벡터를 사용하여 그것 상에 로그인 모드 스크립트 연산을 수행하고, 그리고 256 비트 길이 바이트 데이터 스트링일 수 있는 상응하는 대칭 키를 생성할 수 있다. 유도 스크립트 변환의 로그인 모드는 표(2506)에 지시된 값에 대한 3개의 파라미터 n. r, 및 p를 설정하기 위한 약칭일 수 있다. 이들 파라미터 값은 스트립트 알고리즘의 작성자의 제안된 설정일 수 있다.
변환을 유도하기 위한 TOP 접근은 바이모달 연산을 제안할 수 있다. 데이터 모드: 변환이 어떠한 키스택(나중 섹션에서 구체적으로 논의됨)과도 맞물릴 수 없고 일부 유형의 데이터 소스 스트링과만 맞물릴 수 있다면, 그것은 이러한 입력 데이터 소스 스트링을 변환할 수 있고 그것을 대칭 키(들)의 형태일 수 있는 변환의 출력으로 교체할 수 있다. 키 모드: 변환이 키스택 및 일부 유형의 데이터 소스와 맞물릴 수 있다면, 그것은 키스택에 존재하는 상응하는 키 소스 물질을 변환할 수 있고 키 소스 물질을 대체할 수 있고 그로써 암호적으로 사용가능한 대칭 키(들)를 유도하고 키스택에 그것을 배치할 수 있다. 이들 구문은 키스택 및 키 관리가 변환 감사 기록 또는 TAR 및 의존적인 변환의 문맥 내에서 논의될 때 나중 섹션에서 더 명료해질 수 있다.
에스사이퍼 변환
TOP를 사용하여, 대칭 암호 작동이 에스사이퍼 변환으로서 분류될 수 있고, 그룹으로서 이들 변환은 개수 및/또는 다양성 모두에서 광범위할 수 있는 연관된 속성의 세트를 나타낼 수 있다. 다음의 세 개의 도면은 어떻게 TOP가 동일한 출력 스트링에 모든 그 속성을 갖는 각각의 에스사이퍼 변환을 체계적으로 정상화하고 캡슐화할 수 있는지를 도시한다. 이러한 유형의 속성 임베딩 기법은 다수 유형의 작동에 대해 다양한 기능 및 라이브러리에서 발견될 수 있다. 그러나, 그러한 임베딩 기법에 대해 매우 드문 넓게 수용된 표준이 있을 수 있다. TOP는 변환으로 구조화된 데이터 폴딩 또는 SDFT로 불리는 특징을 지원하는 구분되는 목적을 위한 모든 에스사이퍼 변환에 적용할 수 있는 일관된 방법론을 제안할 수 있다. 그러한 방법론이 폭넓게 사용된 표준이 될 수 있는지 여부는 본 문헌의 범위 너머에 있을 수 있지만, 리더는 특히 우리가 나중에 TAR 및 SDFT 구성 및 방법을 논의할 때 TOP 프레임워크 내에 그 사용의 가능한 혜택을 인지할 수 있다.
도 26은 에스사이퍼 변환(2602)을 위한 명령어 명세의 표 및 그 사용(2604)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 표는 에스사이퍼 작동의 3개의 유형을 도시한다: aes, 차차20 및 살사20. 이는 공지된 대칭 암호의 완벽한 목록이 아니지만 어떻게 TOP가 그들을 구성하고 그 사용을 제안할 수 있는지를 도시하기 위해 그들의 관련된 다양성을 나타낼 수 있다. 대칭 암호는 다소 그들과 연관된 다음의 속성을 가질 수 있다: 키 길이(keylen), 작동 모드(mode), 솔트 타입(salttyp), 솔트 길이(saltlen), 블록 크기(Block), 암호 작동 타입(type), 및/또는 패딩(pad). 키 길이는 평문으로부터 암호문을 생성하기 위해 암호에 사용될 수 있는 비밀 대칭 키의 길이를 특정할 수 있다. AES 암호에 있어서, 그들은 표에 도시된 바와 같이 적어도 10개의 다른 작동 모드를 가질 수 있다. 대개의 대칭 암호는 특정 유형(iv 또는 넌스) 및 그 사용이 더 양호한 의미 보안을 촉진할 수 있는 특정 솔트 길이의 솔트(무작위 값)의 입력을 요구할 수 있다. 대칭 암호는 적어도 3개의 다른 작동 유형을 제공할 수 있다: 블록, 스트림, 및/또는 AEAD 암호. 더 새로운 모드가 제안될 수 있고 그들은 추가 변환 변형으로서 TOP를 사용하여 일체화될 수 있다. 블록 모드 암호는 패딩 방법론, 패드 위치화, 패드 유형 및/또는 패드 길이를 포함하는 추가 속성을 필요하게 만들 수 있다.
섹션(2604)에 예시에서, 변환 명령어 ‘scipher aes 256 mode=ofb’는 입력으로서 바이트 데이트 스트링 및 256 비트 대칭 키를 취할 수 있고, 제시된 키 및 무작위로 생성된 128 비트 초기화 벡터를 갖는 AES-256 OFB 모드 스트리밍 암호를 사용하여 입력 데이터 스트링을 암호화하고, (나중 섹션에서 논의될) 도 27에 특정된 바와 같은 일관된 키/값 포맷으로 포맷된 출력 바이트 스트링의 헤더에 임베딩된 프로세스에 수반된 암호문 및 모든 연관된 속성으로 구성될 수 있는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘scipher aes 128 mode=gcm’은 입력으로서 바이트 데이터 스트링 및 128 비트 대칭 키를 취할 수 있고, 제시된 키 및 128 비트 넌스를 갖는 AES-256 GCM 모드 AEAD 스트리밍 암호를 사용하여 입력 스트링을 암호화하고, 도 27에 특정된 바와 같은 일관된 키/값 포맷으로 포맷된 출력 스트링의 헤더에 임베딩된 프로세스에 수반된 암호문 및 모든 연관된 속성으로 구성될 수 있는 출력 바이트 스트링을 생성할 수 있다. AEAD는 연관된 데이터로 인증된 암호화에 대한 두문자어이고, 단일 함수 호출 내의 대칭 암호의 암호화 능력에 따라 인증 기능을 임베딩하는 표준화되거나 잘 알려진 방법일 수 있다. 변환 명령어 ‘에스사이퍼 차차20 256’는 입력으로서 바이트 데이터 스트링 및 256 비트 대칭 키를 취할 수 있고, 제시된 키 및 64 비트 넌스를 갖는 차차20 스트리밍 암호를 사용하여 입력 스트링을 암호화하고, 도 27에 특정된 바와 같은 일관된 키/값 포맷으로 포맷된 출력 스트링의 헤더에 임베딩된 프로세스에 수반된 암호문 및 모든 연관된 속성으로 구성될 수 있는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘에스사이퍼 살사20 128’는 입력으로서 바이트 데이터 스트링 및 128 비트 대칭 키를 취할 수 있고, 제시된 키 및 64 비트 넌스를 갖는 살사20 스트리밍 암호를 사용하여 입력 스트링을 암호화하고, 도 27에 특정된 바와 같은 일관된 키/값 포맷으로 포맷된 출력 바이트 스트링의 헤더에 임베딩된 프로세스에 수반된 암호문 및 모든 연관된 속성으로 구성될 수 있는 출력 스트링을 생성할 수 있다.
도 27은 단계 1이 입력 포맷을 도시하고 단계 2가 출력 포맷을 도시하는 두 개의 단계의 시퀀스에서 에스사이퍼 출력 스트링을 위한 출력 구조 포맷을 도시한다. “헤더”는 출력 메시지 상의 에스사이퍼 변환의 가변 길이 키 값 utf8 인코딩된 파라미터 스트링이다. 단계 1에서, 에스사이퍼는 입력으로서 필요에 따라 메시지의 끝에 대개 위치되는 패드 길이의 선택 패딩을 갖는 가변 길이의 메시지 바이트 스트링 ‘메시지’를 수용할 수 있다. 메시지는 선택된 암호에 의해 추천될 수 있는 바와 같이 솔트 값으로 가장될 수 있다. 패딩은 블록 모드 대칭 암호의 필수적인 요구사항일 수 있다. 어떠한 특정 패딩 방법론도 프로그래머에 의해 특정되지 않으면, 디폴트 패딩 방법론이 사용될 수 있고 메시지의 끝에 첨부될 수 있다. 이러한 메시지 및 패딩은 평문으로 언급될 수 있다. 선택된 암호는 이제 입력 평문을 처리할 수 있고, 생성할 수 있고, 출력할 수 있으며, 이는 단계 2에 도시된 바와 같이 암호화된 메시지로 불릴 수 있다. 선택된 에스사이퍼 변환은 이제 키가 파라미터 유형을 나타낼 수 있고 값이 그 각각의 설정을 나타내는 문자 스트링 포맷에 프린트가능한 키/값 쌍으로서 임베딩된 헤더를 준비할 수 있다. 키/값의 세부사항은 다음 섹션에서 논의될 것이다. 일단 헤더 스트링이 생성될 수 있으면, 변환은 헤더 크기로 언급되는 이러한 헤더 스트링의 길이를 계산할 수 있고 2 바이트 길이 무부호 빅엔디언 정수로서 형식화될 수 있다. 2 바이트는 0 내지 216 (65,536)의 값의 범위에 있을 수 있고 이러한 특정 포맷에서 예측가능한 미래에 대해 임의의 대칭 암호에 관한 모든 속성을 설명하기에 충분할 수 있다. 그런 후에, 단계 2는 헤더 크기, 헤더, 및 암호화된 메시지를 포함하는 패킹된 메시지를 생성하도록 진행할 수 있다. 이러한 패킹된 메시지는 에스사이퍼 변환으로부터 실제 출력 스트링일 수 있고, 그러므로 그것은 변환된 데이터와 연관된 모든 속성을 성공적으로 캡슐화되고 임베딩한 것으로 간주될 수 있다. 반대 에스사이퍼 변환의 데이터 흐름은 반대로 이러한 프로세스를 따를 수 있다: 변환 명령어는 매칭 대칭 키를 수행하는 정확한 에스사이퍼 변환을 특정할 수 있고, 패키징된 메시지는 입력으로서 제공될 수 있다. 에스사이퍼 변환은 그런 후에 패키징된 메시지를 언팩킹하고, 헤더에서 발견된 모든 속성을 읽고 저장하고, 그런 후에 암호화된 메시지를 복호화할 준비를 할 수 있다. 대칭 암호는 성공적인 복호화를 전달할 어떠한 결정론적 방법도 갖지 않을 수 있다. 검증 방법은 그러한 결과를 결정하도록 오버레이 방식으로 사용될 수 있다. 기본적인 방법의 예시는 복호화된 메시지로부터 가장된 솔트 값을 추출하고 그것을 헤더로부터 저장된 솔트 값과 비교하는 것일 수 있다. 매칭 솔트 값은 성공적인 복호화를 나타낼 수 있지만 그것을 보장할 수는 없다. AEAD 모드 대칭 암호는 암호화된 메시지 내의 (암호화 전에 또는 후에) 데이터 스트링의 MAC (CMAC, HASH 또는 HMAC)을 임베딩하고 비교를 수행함으로써 이러한 문제를 어느 정도 다룰 수 있다. 더 정교한 방법은 다른 키를 사용하는 메시지의 일부 형태의 디지털로 서명된 해시의 인증을 요구할 수 있다. 나중 섹션에서 도시될 바와 같이, SDFT 및 TAR의 사용은 절차적으로 단순하고 논리적인 방식으로 그러한 정교함을 허용할 수 있다. 이들 해시 기반 방법론의 모두에서, 일반적으로 데이터를 고유하게 특정하는 해싱 스킴에 고유한 취약성으로 인해 복호화 시도의 조건을 완전히 언급하는 것은 결정론적으로 불가능할 수 있다. 하나의 결정론적 방법은 균등을 위해 원본 메시지와 복호화된 메시지를 비교하는 것일 수 있지만, 너무 긴 메시지에 대한 효율성의 상호절충이 있을 수 있다.
도 28은 에스사이퍼 변환의 출력 구조 포맷에서 파라미터 키워드 및 헤더 스트링에 관한 명세의 표를 나타낸다. 본 속성 표에 관해 선택된 키워드는 해당 기술분야의 당업자에게 충분히 자기 서술적이고 및/또는 자기 설명적이다. 속성 값의 예시는 오른쪽 열에 도시된다. 열거된 제 1 속성, 헤더 크기는 16 비트 2진 무부호 빅 엔디언 정수 값으로서 표현될 수 있는 유일한 속성일 수 있고, 헤더에 존재하는 제 1 필드일 수 있다. 이러한 헤더 크기는 프린트가능한 형식에서 본 특정 에스사이퍼 변환의 속성을 설명할 수 있는 이어지는 바이트의 수를 나타낼 수 있다. 속성 형식은 속성 값 범위 및 길이의 가변성을 허용하기 위해 프린트가능하도록 선택될 수 있다. 솔트 값(salt val) 및 MAC 스트링(mac_val)을 포함하는 작동 프로그램에서 2진 스트링으로 자연스럽게 존재할 수 있는 모든 속성 값은 프린트가능한 문자의 선호를 충족하도록 베이스64로 인코딩될 수 있다.
이러한 방식으로, 에스사이퍼 변환의 출력 스트링은 선택된 사이퍼의 상세에 따라 속성의 하나 이상의 캡슐화층을 포함할 수 있다. 도 29는 AEAD 모드 에스사이퍼 변환을 위한 반복적인 임베디드 메시지 캡슐화의 도시를 나타낸다. AEAD 모드 AES 암호는 내부층에서 외부층으로 열거된 다음의 층을 출력할 수 있다. 메시지 준비층(2910)은 적합한 솔트 값(2912)과 조합되고 암호화되는(2914) 평문 메시지를 포함할 수 있다. 이러한 준비된 메시지(2910)는 선택된 AEAD 암호로 암호화될 수 있고 그런 후에 이는 암호 프로세스의 부분으로서 MAC 값 및 추가 데이터(2922)를 추가로 생성할 수 있고, 우리는 이러한 조합된 메시지를 AEAD 암호 출력(2920)로 언급할 수 있다. 이러한 AEAD 암호 출력(2920)은 또한 암호화된 메시지(2934)로 언급될 수 있다. 암호화된 메시지(2934)는 헤더(2932)를 생성하기 위해 도 28로부터 키워드/값 헤더 방법을 사용하여 매개변수화될 수 있는 에스사이퍼 프로세스로부터 연관된 속성을 가질 수 있고 이러한 조합은 에스사이퍼 팩킹된 메시지(2930)로 언급될 수 있다. 이러한 에스사이퍼 팩킹된 메시지(2930)는 에스사이퍼 변환으로 불리는 TAR과 연관될 수 있는 NSstr 구조(2940)의 obj 포인터 또는 변수(2944)로 저장될 수 있는 선택된 에스사이퍼 변환의 출력일 수 있다. NSstr의 구조는 나중 섹션에서 더 완전히 논의될 것이다. 또한, 다른 속성(2942)은 TAR, 키스택, 다이제스트, 및/또는 상태 플래그를 포함하는 NSstr 구조로 불리는 이러한 데이터 저장 유닛에 저장될 수 있다. NSstr의 구조(2940)에 obj 포인터 또는 변수(2944)는 평문 메시지(2914)의 시작점이 될 수 있고, 따라서 반복 경로(2950)가 가능할 수 있고 TAR에 의해 필요에 따라 가능한 많은 내포된 캡슐화에 대한 객체(2944)에 대해 존재할 수 있고, 그것은 그 자체로 NSstr의 구조(2940)의 속성(2942)에 저장될 수 있는 처리일 수 있다.
에스사이퍼 팩킹된 메시지(2930)의 헤더(2932)에서, 대칭 암호의 기재를 포함하는 파라미터, 사용된 모드 및 속성 값은 도 28에 열거된 키워드에 의해 완전하게 그리고 정확하게 설명될 수 있다. 이러한 점에서, TOP 접근은 데이터를 확보하기 위한 비암호 프로세스 및 절차의 난독화 및 은폐에 의존하지 않고 그보다는 암호의 이론적이고 실행된 보안이 변환으로서 사용되는 것에만 의존할 수 있다. 이는 최초 관찰에 대해 현저해보이지 않을 수 있지만, 변환 그 자체의 출력에 임베딩된 데이터 변환의 연관된 세부의 그러한 명료함이 결국 그 자체를 적절하게 그것을 처리하도록 하드웨어에 내장된 프로그램보다는 자기 설명적 데이터에 더 많이 의존할 수 있는 신규한 방법론 및 설계에 부여할 수 있음이 나중에 도시될 수 있다. 이러한 접근은 데이터 저장 과학의 최저층의 일부에서 데이터 상에 작동하는 데이터 중심 설계 및 데이터 중심 모델에 기본적인 프리미티브 중 하나를 제조하는 것을 도울 수 있다. 너츠는 나중 섹션에서 도시될 바와 같이 데이터 중심 설계 및 모델에 크게 의존할 수 있다.
도 30은 로그 변환(3002)을 위한 명령어 명세의 표 및 그 사용(3010)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 잠금 변환은 도 12에 표에 열거된 바와 같은 추가 변환 중 하나이고 도 65-77에 세부에 기재될 바와 같이 너츠로부터 변수 잠금의 구현예일 수 있다. 변수 잠금은 sslock, orlock, matlock, xorlock 및 hashlock을 포함하는 비밀 메시지를 암호로 잠그는 여러 다른 방법을 제시할 수 있다. 변수 잠금의 특징은 정상화되고, 체계적이고, 정돈된 방식으로 비밀 메시지를 암호화하는 프로세스에서 여러 암호 키를 입력하고 사용하는 능력일 수 있다. TOP 접근은 단순하고 종래적인 방식으로 그러한 잠금 기법을 실행하는 컴팩트한 방법을 허용할 수 있다. 섹션(3010)의 예시에서, 변환 명령어 ‘lock orlock 128 numkeys=10 scipherkeylen=128’는 입력으로서 바이트 데이터 스트링 및 10개까지의 128 비트의 동일한 대칭 키를 취할 수 있고, ‘scipher aes 128 mode=eax’ 변환 명령어를 사용하여 입력 스트링을 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘lock matlock 256 numkeys=5’는 입력으로서 바이트 데이터 스트링 및 5개의 256 비트 대칭 키를 취할 수 있고, 각각의 키에 대해 ‘scipher aes 256 mode=eax’ 변환 명령어를 사용하여 입력 스트링을 반복적으로 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘lock sslock 256 numkeys=4 threshold=2’는 입력으로서 바이트 데이터 스트링 및 적어도 두 개의 256 비트 tines256 비밀 공유 키를 취할 수 있고, 공급된 비밀 공유와 샤미르의 비밀 공유 방법의 실행을 사용하여 입력 스트링을 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘lock sslock_b 256 numkeys=6 threshold=3'는 입력으로서 바이트 데이터 스트링 및 적어도 세 개의 256 비트 tinesidxl28 비밀 공유 키를 취할 수 있고, 공급된 비밀 공유와 샤미르 비밀 공유 방법의 실행을 사용하여 입력 스트링을 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘lock xorlock 128 numkeys=6’는 입력으로서 바이트 데이터 스트링 및 6개의 128 비트 대칭 키를 취할 수 있고, 공급된 키 상의 XOR 작동을 반복적으로 수행함으로써 계산된 키를 유도할 수 있고, ‘scipher aes 128 mode=eax’ 변환 명령어를 사용하여 입력 스트링을 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다. 변환 명령어 ‘lock hashlock 192 numkeys=7’는 입력으로서 바이트 데이터 스트링 및 7개의 192 비트 대칭 키를 취할 수 있고 공급된 키의 정돈된 연결 상에 해시를 수행함으로써 계산된 키를 유도할 수 있고 ‘scipher aes 192 mode=eax’ 변환 명령어를 사용하여 입력 스트링을 암호화하고, 암호문 및 연관된 임베디드 속성을 포함하는 출력 스트링을 생성할 수 있다.
각각의 변수 잠금 유형 기재 및 작동의 모드는 도 60으로 시작하는 변수 잠금에 관한 나중 섹션에서 발견될 수 있다. TOP 분석 및 방법은 간명한 논리적 방식으로 이루어질 복수의 암호 키를 잠재적으로 활용하여 복잡한 반복 잠금 변형을 허용할 수 있고 미래에 다른 유형의 잠금 알고리즘의 용이한 확장을 허용할 수 있다. SDFT의 키 관리 측면은 프로그래머가 관련된 용이함을 갖는 그러한 복수의 암호 키를 생성하고 관리하는 것을 허용할 수 있음이 나중에 도시될 수 있다.
도 12, 13 및 14에 제시된 바와 같이, TOP 분석 및 방법은 해당 기술분야의 당업자가 소정 데이터 조작 함수를 취하고 변환 작동 및 유형으로 정상화에 관한 그 적합성을 결정하는 것을 허용할 수 있다. 도 12에 표는 매우 잘 공지된 데이터 조작의 샘플링을 도시할 수 있고 개발자의 넓은 청중에 의해 사용에 적합한 것으로 매우 잘 간주될 수 있다. 그러나, 데이터 조작 함수가 본 표에 발견될 수 없는 그러한 경우에, TOP 방법을 사용하여 SDFT 프레임워크 내에 작동하도록 함수를 분석하고 맞추는 것이 가능할 수 있다: 손실 압축, 비트 스캐터링, 메시지 분산, 삭제 코딩(ECC) 및 메시지 레벨 RAID 인코딩 및 구조화. 그러한 변환 확장의 대개의 경우에, 실제 데이터 조작 함수를 기록하거나 재작성하는 것은 불필요할 수 있다. 실제로, 대개의 환경에서 그를 행하는 것은 역효과를 낳고 절차적으로 취약할 수 있다. 데이터 조작 함수를 포함하는 라이브러리는 변환 라이브러리에 의해 접근될 수 있고 TOP 방법은 개발자가 SDFT 프레임워크 내에 잘 거동하도록 특정 데이터 조작 함수 주위로 정상화 래퍼 함수를 제공하는 것을 허용할 수 있다.
변환 구조, 변환 감사 기록(TAR) 및 변환으로 구조화된 데이터 폴딩(SDFT)
도 31은 표로 나타낸 포맷으로 다양한 변환 구조의 명세를 도시한다. 구조적 정의는 어떻게 구조가 자바스크립트 내에 정의되는지와 유사한 내포된 키 기반 접근에 의존하고; 이는 그 표현이 매우 다양한 프로그래밍 언어에서 용이하게 복제될 수 있고 특정 언어의 상세에 의존하지 않을 수 있도록 의도적 설계 선택일 수 있다. 예를 들어, 파이썬 v3.6은 클래스가 정의되는 것을 허용하는 반면에 자바스크립와 같은 일부 언어는 그럴 수 없고, 그러므로 변환 데이터 구조는 더 넓은 적용성을 위해 그것을 정의하도록 클래스에 의존하지 않을 수 있다. 변환 구조는 잘 정의된 작동 메모리 영역을 제공할 수 있고, 그로써 변환의 입력 및 출력이 준비되고, 처리되고, 및/또는 저장될 수 있다. 전부는 아니지만 대개 변환 작동에서 사용될 수 있는 메인 데이터 저장 장치 또는 구조는 NSstr 구조(3108)로 불린다. 변환 호출과 연관된 NSstr의 적어도 하나의 예가 있을 수 있다. 모든 변환 구조는 그것이 어떤 구조를 나타내는지를 특정하는 “typ”또는 구조 유형 필드를 가질 수 있다. NSstr 구조는 구조 및/또는 데이터의 상태를 특정하는 ‘상태’ 필드를 더 정의할 수 있다. ‘obj’ 또는 객체 필드는 단일 값을 홀딩하거나 메모리의 또 다른 영역을 참조하는 포인터일 수 있다. obj 필드는 대개의 변환에 대한 입력 데이터가 어디에서 발견될 수 있는가일 수 있다. 또한 obj 필드는 대개의 변환의 출력 데이터가 어디에서 발견될 수 있는가일 수 있다. ‘다이제스트’필드는, 존재한다면, obj 필드에 의해 저장되거나 참조된 데이터의 다이제스트를 저장할 수 있다. 다이제스트가 생성될 수 있는 방식은 특정 디그 또는 다이제스 변환 및 변환 명령어에 대한 공급된 파라미터 및/또는 속성에 따를 수 있다. ‘키스택’은, 존재한다면, KISS(나중 섹션에서 논의될 키 교환 명세 구조) 구조의 단일 예일 수 있거나 작동 TAR에 상응하는 미리결정된 순서로 KISS 구조의 목록일 수 있다. 키스택은 기본적으로 특정 변환에 의해 요구될 수 있는 다양한 유형의 비밀 키(들)를 홀딩한다. ‘tar’필드는 NStar 구조(3106)의 예를 가리킬 수 있다.
NStar 구조(3106)는 NStar 구조의 obj 필드에 저장된 입력 데이터에 적용될 수 있는 특정 변환 감사 기록(TAR)을 특정할 수 있다. TAR은 NSstr 데이터의 단일 ‘폴딩’을 생성하도록 정돈되고 잘 거동된 방식으로 NSstr에서 데이터를 처리하도록 지적으로 시퀀싱될 수 있는 논리적 순서로 변환 명령어의 컬렉션일 수 있다. 우리는 NSstr 데이터 구조 상의 TAR을 수행하는 본 프로세스를 ‘라벨’ 함수 호출로서 언급할 수 있다. 반대로, ‘언라벨’ 함수 호출은 가역 변환의 고유한 특성에 의존하는 동일한 TAR을 사용하여 NSstr 구조 내에 하나의 폴딩된 데이터를 ‘언폴드’할 수 있다. 그러므로, 변환의 가역성은 변환으로 구조화된 데이터 폴딩(SDFT)에서 중심 특징이 될 수 있다. SDFT 방법론은 훨씬 더 데이터 상의 조립체 라인 작동 내에 객체를 반복적으로 변환하도록 NSstr 구조 상에 TAR을 사용할 수 있다. 분석이 TAR에 각각의 변환 명령어의 가역 거동 상에 수행될 수 있기 때문에, 임의의 TAR은 그러므로 반대 모드 또는 언라벨 함수 호출 시에 호출될 수 있다. 이러한 토픽은 추가 필수적인 성분이 그러한 작동을 가능하게 할 수 있는 다음의 섹션에 제시될 수 있음에 따라 더 깊게 논의될 수 있다.
NSbin 구조(3102)는 파이썬 v3.6과만 관련되거나 관련되지 않을 수 있는 특정 함수로 역할할 수 있다. 파이썬 v3.6에서, 차이는 데이터의 스트링이 내부에 저장될 수 있는 방식으로 이루어질 수 있다. 그것은 ‘바이트’ 스트링 또는 문자 스트링으로서 저장될 수 있다. 바이트 스트링 데이터형은 변수 내에 홀딩된 정보가 일련의 2진 바이트 데이터일 수 있음을 나타낼 수 있다. 문자 스트링은 변수 내에 홀딩된 정보가 인코딩 스킴의 일부 유형에 인코딩된 문자를 나타내는 일련의 비트일 수 있음을 나타낼 수 있다. 다른 인코딩은 ‘문자’마다 다른 저장 요구사항을 요구할 수 있기 때문에, 파이썬 v3.6은 특정 문자 스트링을 저장하는 방법을 최적 결정하기 위한 정교한 내부 관리 스킴을 채용할 수 있다. 예시는 UTF-8이 각각의 문자를 나타내도록 8 비트 코드 유닛을 사용할 수 있는 반면에 UTF-16이 각각의 문자를 나타내도록 16 비트 길이 코드 유닛을 사용할 수 있는 것일 수 있고; 이들 변형은 언어에서 다수의 문자가 영어 알파벳과는 상당히 다르고 따라서 데이터의 8비트의 순열에 적합하지 않을 수 있는 다른 국제 문자 집합을 전달하기에 적합할 수 있다. 변환의 바람직한 내부 직렬화 방법, TAR 및 SDFT는 제이슨일 수 있고 제이슨은 파이썬 ‘바이트’데이터형을 그 자신 중 하나에 매핑하도록 자체 지원을 가질 수 없다. 전환이 시도되면, 제이슨 함수 호출은 특정 데이터형이 지원될 수 없다는 일부 표시와 함께 갑자기 실패한다. NSbin 구조는 이러한 상황 유형에 대해 구체적으로 설계될 수 있고 임의의 ‘바이트’ 데이터 스트링으로 대체될 수 있고 그러므로 파이썬 가변 제이슨을 호환가능하게 만들 수 있다. ‘바이트’스트링은 베이스64 문자 스트링으로 인코딩될 수 있고 NSbin 구조의 ‘b64’필드 내에 저장될 수 있다. 바이트 스트링 변수는 이제 원본 바이트 데이터를 겹쳐쓰기 하는 이러한 NSbin 구조를 가리키게 할 수 있다. 이들은 등가의 데이터를 나타낼 수 있지만 그들은 다른 인코딩 및 구조에 있을 수 있다. 그러나, 최종 결과는 NSbin 구조가 전체적으로 제이슨 호환가능할 수 있고, 이제 호환가능하지 않은 데이터형으로 인해 오류 없이 제이슨 함수를 사용하여 안전하게 직렬화할 수 있다는 것이다.
TOP 접근에서, NSbin 구조 전환 및 치환에 대한 이러한 ‘바이트’데이터는 도 12 및 도 33으로부터 ‘프레스’변환으로 언급될 수 있다. 파이썬 v3.6에서, 표(3302)에 열거된 바와 같은 프레스 변환은 임의의 유효한 파이썬 구조 또는 변수를 취할 수 있고 매 바이트 스트링을 임의의 바이트 데이터형이 없는 파이썬 구조를 초래할 수 있는 등가의 NSbin 구조로 반복적으로 변환할 수 있다. 해당 기술분야의 당업자는 그러한 데이터 직렬화 오류의 소스를 제거하기 위해 파이썬 v3.6 및 그 제이슨 함수 호출이 아닌 언어에 대해 적합한 프레스 변환을 맞출 수 있다. ‘프레스’의 반대 모드는 ‘디프레스’로 언급될 수 있고 원본의 데이터형을 포함하는 데이터 구조가 복원될 수 있도록 전환 및 치환을 반복적으로 무효화할 수 있다.
NS제이슨 구조(3104)는 전체적으로 제이슨 호환 데이터만을 홀딩하는 특히 유용한 함수로 역할할 수 있다. NSstr(3108)에 대해 규정된 필드에 대해 빠르게 살펴보면, 잠재적 문제, 파이썬 v3.6에서 2진 스트링 형태 또는 바이트 데이터 스트링에서 소스 obj의 다이제스트 값을 잠재적으로 홀딩하는 다이제스트 필드로 인해 제이슨 직렬화에 구조가 직접 제출되었는지를 알려줄 수 있다. 이러한 특정 문제를 위해 우리는 도 12를 다시 언급하고 ‘뫼비우스’변환을 다시 도입한다. 본 기재에서 이러한 점에 앞서 뫼비우스에 관한 임의의 합리적인 정의는 변환 및 TOP 접근의 결합 성질로 인해 리더에게 전체적으로 분명하게 이루어질 수 없음을 유념한다. 도 32에 뫼비우스 변환은 원형으로 그러나 뫼비우스 스트립에서와 같이 약간의 꼬임으로 하나의 형태에서 또 다른 형태로 소정 구조를 변환할 수 있다. 뫼비우스 변환은 NSstr 구조를 NS제이슨과 같은 제이슨 직렬화 구조로 체계적으로 전환함으로써 변환으로 구조화된 데이터 폴딩의 중요한 조력자일 수 있고; 전환의 프로세스는 전환된 데이터에 따라 전체적으로 NSstr에 대한 작동 TAR을 임베딩할 수 있고 그로써 결과 저장가능한 객체에 자기 설명적 특성을 가득 채운다. 뫼비우스는 변환은 종래의 방식으로 SDFT 라이브러리에서 구조화된 데이터 폴딩의 핵심을 수행하는 구현예일 수 있다. 개발자는 뫼비우스 명령어를 배제하는 변환 명령어의 논리적 조합을 수동으로 사용하여 SDF를 수행하는 것을 선택할 수 있지만, 뫼비우스 명령어는 개발자가 SDFT 라이브러리의 외부에 단계를 수행하는 것을 요구할 수 있는 적어도 하나의 추가 논리 단계를 추가할 수 있고: NSstr 데이터 구조를 직렬화하는 능력은 NS제이슨과 같은 또 다른 구조 상에 그리고 그로부터 작동한다. 뫼비우스 변환은 TAR에서 마지막 변환 명령어일 수 있다. 그 기능성 때문에, 이것은 뫼비우스 변환이 위치될 수 있는 유일한 논리적 위치일 수 있다. 뫼비우스 변환이 처리될 때, 그것은 NSstr 구조를 취할 수 있고, NS제이슨 구조로부터 그리고 그 상에 작동할 수 있고, 그로 변환할 수 있다. NSstr 구조에 임베딩된 TAR은 유용하거나 접근가능한 형태로 더 이상 존재할 수 없고, 따라서 뫼비우스 변환은 처리될 소정 TAR의 마지막 변환 명령어일 수 있다. 단순하게, 뫼비우스 변환은 NSstr 구조를 프레스할 수 있고, 제이슨은 그것을 직렬화하고, 그런 후에 그것을 저장되거나, 전송되거나, 제이슨 직렬화되거나, 폴딩될 수 있는 NS제이슨 구조, 또는 그러한 구조 상에 수행될 수 있는 임의의 다른 유효 데이터 연산에 저장할 수 있다. 뫼비우스 변환에 대한 반대 모드가 있을 수 있지만 이러한 변환을 조망하는 또 다른 방식은 그것이 원형 변환임을 언급하는 것이고: 전방 또는 반대 모드와 상관 없이, 그것은 입력 데이터 구조 타입에 따라 특정 데이터 변환을 수행한다. 표(3204)는 NS제이슨이 변형일 수 있는 NSx 구조를 나타낸다. 도 31에 정의된 이들과 다른 추가 변환 구조에 대한 필요가 미래에 발생하고, 그들이 뫼비우스 변환에 수용될 필요가 있을 수 있다면, 본 표는 어떻게 뫼비우스 변환이 NSstr이 아닌 임의의 변환 구조에 대해 거동할 수 있는지를 도시한다. 그것은 SDFT로 실제로 프로그램하지 않고 전체적으로 명확하지 않을 수 있지만, 뫼비우스 변환이 그것을 폴딩할 수 있는 TAR을 홀딩할 수 있는 원본 NSstr 구조로 전환하도록 그것 상에 작동될 수 있지 않다면, 뫼비우스 변환은 복구된 NS제이슨 구조로부터 가능한 어떠한 TAR 처리도 없을 수 있음을 논리적으로 함축할 수 있다. NS제이슨 구조로 이러한 뫼비우스 스핀 사이클을 시작하기 위해, 뫼비우스(역전)는 NSstr 구조를 생성하고, 임베디드 TAR에 접근하고, 반대로 임베디드 TAR을 처리하도록 SDFT 라이브러리로부터 뫼비우스 함수 호출로 시작될 수 있다. 이는 정의에 의해, 반대 모드에서 처리될 제 1 명령어일 TAR에서 뫼비우스 변환 명령어가 킥스타팅 함수 호출에 의해 이미 수행되었을 수 있고, 그로써 그러한 역전 동안 뫼비우스 함수를 1회보다 더 많이 수행하지 않을 수 있기 때문에, 처리 동안 안전하게 무시될 수 있음을 더 함축할 수 있다. 이러한 시퀀싱에서, 반대 모드에서 뫼비우스 변환을 무시하는 실패는 잠재적으로 NSstr을 NS제이슨으로 그리고 반대로 계속적으로 전환하는 뫼비우스 호출의 무한 진동을 생성할 수 있다. 그것은 그러한 작동을 표현하는 우회적인 방식으로 보일 수 있지만 그것은 출력 변환된 데이터에 체계적으로 임베딩될 수 있는 상당히 컴팩트한 양방향 TAR을 생성할 수 있고, 그로써 폴딩된 데이터에 자기 설명적 특성을 가득 채울 수 있다. 이러한 특성은 SDFT 라이브러리의 실행을 지원할 수 있는 임의의 언어 및/또는 작동 시스템을 가로질러 일관된 재생성가능한 방식으로 데이터 상에 작동을 수행하도록 전방 모드 또는 반대 모드 모두에서 훨씬 해석된 스크립 상에 작용될 수 있다는 점에서 신규할 수 있다.
도 33은 프레스, 클린, 및 키 변환(3302, 3304)을 위한 명령어 명세의 표 및 그 사용(3310)을 나타내는 샘플 변환 명령어의 세트를 도시한다. 클린 변환은 NSstr 구조 내에 일시적이거나 임시적인 필드를 삭제할 수 있는 하우스키핑 함수일 수 있다. 특정 변환은 처리 동안 추가적인 임시 필드에 대한 필요를 가질 수 있고 그들을 저장하고 그에 접근하도록 NSstr 구조 내에 추가 필드를 생성할 수 있다. NSstr 구조 내의 그러한 일시적인 필드의 생성 및 사용은 TOP 접근 내의 공존을 분석하고 임의의 다른 변환의 적절한 기능의 간섭을 최소화한 후에 사려깊은 방식으로 이루어질 수 있다. 기능으로 인해 클린 변환에 대한 반대 모드가 없을 수 있고, 그러므로 그것은 안전하게 무시된다 이러한 반대 함축은 NSstr 구조 내에 신규한 일시적 필드를 제안할 때 고려될 수 있고, 필드는 변환의 반대 모드 처리에 존재하지 않을 수 있고, 그러므로 반대로 어떠한 변환도 적절하게 기능하도록 그에 관한 존재에 의존하지 않을 수 있다. 클린 변환의 중요한 기능은 TAR의 처리에 사용된 완전한 키스택의 내부 사본을 삭제하는 것일 수 있거나; 그것은 키스택 내의 비밀 키만을 삭제할 수 있고 KISS 구조를 키홀로 전환할 수 있다. 이는 저장을 위해 준비하기 전에 NSstr을 적절하게 클리닝하는 실패가 특정 TAR 처리에 사용되었을 수 있는 임의의 그리고 모든 암호 키의 저장을 초래할 수 있고, 그것이 폴딩된 데이터와 함께 평문에 무심코 저장될 수 있기 때문에 SDFT TAR 처리에서 가장 중요한 변환 중 하나 일 수 있다. 이러한 상황은 비밀 키를 드러낼 수 있고 폴딩된 데이터 내의 암호화된 데이터의 일부 또는 전부를 손상시킬 수 있고; 이는 데이터를 암호화하는 의도된 목적이 아닐 수 있다.
표(3304)에서, 키 변환이 작동의 일부와 함께 도시된다. 본 변환은 SDFT의 키 관리 기능의 부분일 수 있고 NSstr 구조의 tar 필드를 참조함으로써 키스택 필드 상에 주로 작동할 수 있다. 키 확인 변환은 저장된 TAR를 점검할 수 있고 키 템플릿의 목록을 생성할 수 있다. 키스택이 입력되면, 그것은 적절한 시퀀스에 정확한 키 유형이 입력 키스택에 제공될 수 있는지 여부를 결정하도록 그러한 키 템플릿에 대해 비교될 수 있다. 예를 들어, TAR이 키를 요구할 수 있는 두 개의 키 변환에 대해 두 개의 다른 256 비트 대칭 키를 요구한다면, 그것은 TAR은 키스택이 만일 존재한다면 그러한 키를 포함하도록 기대함을 의미하는 목록에서 ‘대칭 256’의 두 개의 키 템플릿을 생성할 수 있다. 표(3504)는 다양한 키 유형의 일부를 열거한다. 빈 키스택 또는 부분적으로 채워진 입력 키스택은 또한 적절하게 처리될 수 있다. TAR이 일부 키를 요구하는 어떠한 키도 입력되지 않을 수 있을 때, 그때 그것은 ‘키 생성’ 변환을 나타낼 수 있다. SDFT는 키 생성 모드에서 맞물릴 수 있고, 그로써 유도 키 템플릿에 따른 키의 적절한 유형이 생성될 수 있고 obj 필드에 저장된 데이터 상의 TAR 처리 전에 작동 Nsstr 구조로 제출을 위해 키스택에 구성될 수 있다. 부분적 ‘키 생성’ 모드는 부분적으로 채워진 키스택이 입력될 수 있을 때 맞물릴 수 있다. 키 확인 및 생성 변환은 키스택에 부분적으로 공급된 키가 적절한 유형이고 적절한 시퀀스에 있을 수 있는지 여부를 협동적으로 판단할 수 있다. 그런 후에 그것은 결손 키에 대해 적절한 키를 생성하도록 진행할 수 있다. 이러한 프로세스는 SDFT 키스택 관리의 ‘결손 치아(missing teeth)’ 시나리오로 언급될 수 있다. 키 변환을 갖는 TAR의 임의의 예시가 명령한다면, 그것은 TAR을 활용하여 NSstr 구조 상에 SDFT 라이브러리의 적절한 작동에서 너무 기본적인 것으로 간주되어, 프로그래머가 그것을 매 TAR에 위치시키게 하기보다는 라벨/언라벨 작동에서 매 호출에 디폴트에 의해 함축적으로 수행될 수 있기 때문에, 매우 드물 수 있다. 단지 암호 키를 요구할 수 있는 TAR을 처리하는 가능성을 갖음으로써 일관되게, 함축적으로 및/또는 자동으로 적절한 키스택 관리에 대해 함축적으로 확인하게 하기에 충분할 수 있음이 드러날 수 있다. TAR 역전 프로세스는 적절하게 반대 순서로 키스택을 처리할 수 있다. 문제는 어떻게 SDFT가 독립적인 변환에 대해 TAR 그루핑으로 언급되는 그러한 상황을 취급하는지에 대해 나중 섹션에서 논의될 키스택 모드에서 유도 변환의 특성으로 인해 발생할 수 있다.
도 34는 키 교환 명세 구조 또는 KISS에 관한 표를 도시한다. 이러한 구조는 작동의 적어도 두 개의 모드를 가질 수 있다: 키 또는 키홀. 키의 속성은 표에 정의된 필드의 일부 또는 전부에 의해 특정될 수 있고 추가 필드는 필요에 따라 다른 키 속성을 지지하도록 구조를 확장하도록 추가될 수 있다. 임호 작동에 대한 TOP 접근은 그러한 변환에 요구되는 키의 정확한 유형을 특정하는 매칭 키홀을 요구하는 각각의 암호 변환의 관점을 주장하는 것일 수 있다. 속성은 키 자체를 위한 특히 고유 ID, 패스프레이즈 또는 패스워드를 위한 질문 또는 힌트, 키의 기재 등을 포함할 수 있지만 그로 한정되지 않는다. 키 값이 KISS 구조에 존재할 수 있다면, 그것은 단지 키로 언급될 수 있다. 키 값이 KISS 구조에서 분실될 수 있다면, 그것은 키홀로 언급될 수 있다. 이는 ‘ima’필드에서 값에 의해 지시될 수 있다. 필드명은 “I’m a”키/키홀의 축약형일 수 있고 명료함을 위해 그러한 방식으로 읽힐 수 있다. ‘In’으로 명명된 열은 블랭크 KISS 구조를 생성하고 그것을 NSstr 구조의 입력 키스택에 위치시키는 목적을 위해 키를 그것에 삽입하기 위해 요구되는 값을 나타낼 수 있다. ‘Gen’으로 명명된 열은 SDFT 라이브러리 내에 키 생성 변환 동안 자동으로 생성되고 채워질 수 있는 그러한 필드를 나타낼 수 있다. TAR을 수반하는 SDFT 논의에 걸쳐, 모든 키 참조는 적합한 유형의 KISS 구조와 동기화될 수 있다. 키스택은 TAR의 특성이 처리되는 것에 가깝게 상응할 수 있고 특정 형태 및 시퀀스에서 변환 명령어를 스택킹하고 필요한 암호 키를 스택킹하는 이러한 방법이 임의의 입력 데이터가 무한개의 변환 변형, 변환의 파라미터 차이, 및/또는 연속적인 데이터 폴딩을 통해 반복적으로 처리되는 것을 허용할 수 있음은 명백할 수 있다. TOP의 기재에 관한 이러한 점에서, SDFT의 다양한 구성요소의 결합 성질 및 임의의 특정 부분의 완전한 이해가 전체적으로 선형 방식으로 드러날 수 없음을 이해하기 시작할 수 있다.
도 35는 작동(3502), 키 유형/필드 생성 매핑(3504) 및 키 유형 정의(3506)의 KISS 모드에 관한 표를 도시한다. 표(3506)는 SDFT에 의해 인지된 키의 여러 유형을 열거하지만 새로운 키 유형이 필요에 따라 추가되고 일체화될 수 있음에 따라 이들로 한정되지 않을 수 있다. 이들이 잘 공지된 베이스 키 유형을 사용하여 SDFT 라이브러리에 대해 구체적으로 구조화될 수 있기 때문에, 적어도 세 개의 키 유형이 일부 설명을 필요로 할 수 있다. 키 유형 ‘대칭리스트’는 대칭 키의 어레이 또는 목록일 수 있고 단일 KISS 구조 내에 키 값으로서 저장될 수 있다. 이러한 키 유형은 잠금 및 유도로서 그러한 변환을 지지할 수 있지만, 그로 한정되지 않는다. sslock 및 sslock b로 불리는 비밀 공유 잠금 변환은 샤미르의 비밀 공유 알고리즘의 두 개의 다른 실행을 각기 나타낼 수 있다. 잠금 sslock 변환은 256 비트 길이 키에서 내부 인덱스 수 및 키 공유를 포함하는 특정 포맷에서 비밀 공유를 기대할 수 있다. 이는 ‘tines256’ 키 유형으로 SDFT 라이브러리 내에 언급될 수 있다. 잠금 sslock b 변환은 256 비트 길이 키에서 내부 인덱스 넘버 및 키 공유를 포함하는 특정 포맷에서 비밀 공유를 기대할 수 있다. 이는 ‘tinesidx256’ 키 유형으로 SDFT 라이브러리 내에 언급될 수 있다.
표(3502)는 어떠한 특성이 존재할 수 있는 두 개의 모드에서 KISS 구조에 적용할 수 있는지: 키(또는 변환) 또는 키홀을 도시하는 매트릭스이다. 변환(키) 모드에서, KISS 구조는 입력된 다이제스 및/또는 디그를 포함할 수 있는 암호문의 일부 버전을 생성하도록 실제 암호 키를 저장하도록 기대될 수 있다. 그러므로, 그 저장은 정보적으로 사용될 수 있지만 보안 방식으로 지속적으로 저장하기 위해 암호 기능을 사용하여 더 임베딩될 필요가 있다. 키홀 모드에서, KISS 구조는 입력된 다이제스, 디그 및/또는 유도 키를 포함할 수 있는 암호문의 일부 버전을 생성하도록 값으로서 적합한 암호 키를 수용하도록 충분한 세부를 갖도록 기대될 수 있다. 그러므로, 그 저장은 의무적일 수 있고 그것이 키홀로서 키 값을 포함하지 않을 수 있기 때문에 임의의 임베딩 방법론에 의해 더 확보될 필요가 없을 수 있다.
표(3504)는 어느 필드가 의무적이고, 관련된 입력일 수 있는지 및/또는 키 유형에 의해 생성될 수 있는지를 도시하는 매트릭스이다. 표의 검토시에, KISS 구조가 다양한 암호 작동에 속하는 솔트를 홀딩할 수 있는 것이 명백할 수 있다. 이는 에스사이퍼 임베디드 헤더에 대한 논의 관점에서 불필요해 보일 수 있지만 솔트에 관한 그러한 논의는 솔트에 대한 전체 그림을 제시하지 않을 수 있다. 도 37에 도시된 바와 같이, 변환과 연관된 속성(3704, 3714)의 지속성은 여러 데이터 저장 영역(3732, 3734, 3736, 3738) 사이에 분산될 수 있다. 솔트가 생성된 암호문에 관한 어떠한 추가 정보도 드러낼 수 없기 때문에 결과 출력 데이터에 따라 특정 암호 작동에 임베딩될 수 있음을 TOP 접근은 도시할 수 있다. 그러나 우리가 키스택 모드에서 처리된 키 유도 변환을 검토할 때, 우리는 KISS 구조에서 연관된 솔트 값을 저장하는 것이 편리하고 논리적일 수 있음을 발견할 수 있다. 키 유도 함수의 사용의 일반적인 방법은 입력으로서 패스프레이즈를 수용하고, 일부 솔트 값과 조합하고 대칭 키와 같은 그러나 그로 한정되지 않는 적절하게 형성된 암호 키를 생성하는 것일 수 있다. 본 경우에 솔트의 사용은 의미 보안을 위한 것일 수 있다. 그러므로, 결과 비밀 암호 키가 존재할 수 있는 어떠한 합리적 이유를 위해서 서로 다를 수 있기 위해, 동일한 패스프레이즈를 수용할 수 있는 모든 키홀이 다른 솔트를 가질 수 있는 것이 전체적으로 가능할 수 있다. 이러한 유도 키는 일시적인 방식으로 사용될 수 있고 사용 후에 폐기될 수 있고 그로써 그 존재의 증거로서 키홀을 떠날 뿐이다. 키 유도의 제품이 비밀 키로 사용될 수 있어서, 일반적으로 영구적으로 저장될 수 없기 때문에, 그것은 질문을 하게 한다, 우리는 그것을 어디에 저장해야 하는가? TOP는 상응하는 키홀에 그것을 저장할 수 있고, SDFT가 이러한 키홀을 폴딩된 데이터에 따라 저장하고 그로써 동일한 패스프레이즈를 허용할 수 있는 각각의 키홀이 솔트 값의 자체 인스턴스에 적합한 저장소를 가질 수 있는 것을 선호할 수 있다. 프로그래머는 전체적으로 다른 방식으로 외부 방법에 KISS 키홀을 저장할 수 있다. 도 5에서와 동일한 도 37의 상부 상의 단순화된 변환 도해는 TOP 및 SDFT의 다양한 구성요소가 도입될 수 있을 때 도 37의 바닥 상의 도해와 더 유사해진다. 표(3720)는 속성의 배치를 요약한다.
TOP 및 SDFT를 통해 분석되고 이용가능한 구문 및 다양한 변환 명령어에 관해 앞서 많이 기재되었지만, TAR은 실행상 실제로 어떻게 보이는가? 도 36은 TAR의 구조를 도시하고 TAR의 여러 예를 열거한다. 섹션(3602)은 변환 감사 기록 또는 TAR의 일반적인 구조를 특정한다. ‘tar labelOl’선언은 TAR의 명칭 또는 라벨이 바로 그 아래에 정의되는 것을 나타낸다. 모든 TAR 명령어는 TAR 라벨 선언을 따르고 블랭크 라인은 현재의 TAR 정의의 끝을 나타낸다. 그러므로, 다수의 TAR은 단일 텍스트 파일에 선언될 수 있다. TAR 정의 섹션은 그 자체로 라인 상에 TAR 라벨 또는 변환 명령어를 포함할 수 있다. 이는 프로그래밍 언어 컴파일러의 매크로 특징과 유사할 수 있고; 그것은 정의를 TAR 자체에 실제로 복사할 필요 없이 공지된 TAR 구성을 신규한 TAR에 조합하는 편의 특징으로서 사용될 수 있다. 변환 명령어는 소망하는 방식으로 목표 Nsstr 구조를 처리하도록 특정 시퀀스에 삽입될 수 있다. TAR ‘test_a01 ’은 임의의 바이트 데이터형 없이 등가의 구조에 파이썬 데이터 객체를 단지 프레스할 수 있고; 다른 언어에 있어서, ‘프레스’가 언어 및/또는 환경 특정일 수 있기 때문에 그것은 동일한 기능을 수행하거나 수행할 수 없다. TAR ‘test_a02’는 연속적으로 2회의 프레스 변환을 수행한다. 제 2 프레스 변환은 데이터에 어떠한 기능적 변경도 수행할 수 없다. 이는 작업에서 TAR 확장을 나타낸다. TAR ‘test_a07’은 데이터를 프레스하고, 제이슨 스트링에 그것을 직렬화하고, 그런 후에 utf_32 인코딩을 사용하여 바이트 유형 2진 스트링으로 전환할 수 있다. TAR ‘test_a17’는 종료 뫼비우스 변환이 무엇과 유사할 수 있는지를 나타낸다. TAR ‘test_a20’는 데이터를 프레스하고, 제이슨 스트링에 그것을 직렬화하고, utf_8 인코딩된 2진 스트링으로 전환하고, 256 비트 대칭 키를 갖는 차차20을 사용하여 그것을 암호화하고, 그런 후에 결과 2진 암호문 스트링을 베이스64 인코딩된 문자 스트링으로 전환한다. 에스사이퍼 변환에 관한 대칭 키는 256 비트 대칭 키 값을 홀딩하는 단일 KISS 구조를 포함할 수 있는 Nsstr의 키스택에서 기대될 수 있다. 대안은 어떠한 키스택도 제공될 수 없고, 라벨 함수가 적절하게 생성된 무작위 256 비트 대칭 키로 유효 키스택을 생성하도록 진행하고, 에스사이퍼 변환을 수행하도록 그것을 사용하고, 프로그래머가 완료 시에 키스택(따라서 그 안에 키)의 사본을 가져오는 것을 허용하는 것일 수 있다. TAR ‘test_a42’는 TAR 그룹의 예시 및 의존적인 변환을 도시한다: 그것은 데이터를 프레스하고, 제이슨 스트링으로 직렬화하고, 그것을 utf_8에서 인코딩된 2진 스트링으로 전환하고, 키스택에 공급된 패스프레이즈로부터 256 비트 대칭 키를 유도하고, 그런 후에 유도된 대칭 키를 사용하여 데이터 상의 차차20 암호화를 수행한다. 암호가 유도 키에 의존하고; 따라서, 이러한 의존성은 그러한 바와 같이 표시된 이끄는 <tags>로 TAR 내에 그룹핑될 수 있기 때문에, 마지막 두 개의 변환은 영구적인 의존성을 가질 수 있다. 전방 모드에서, 시각적 방식으로 그러한 의존성을 강조하는 것을 제외하고 TAR 정의 내에 TAR 그루핑의 어떠한 명백한 영향도 없을 수 있다. 그러나, TAR 그룹은 TAR 역전에 관한 한 중요한 역할을 할 수 있다. TAR이 TAR 역전 프로세스에 준비될 때, TAR 그룹은 유닛으로서 온전히 유지될 수 있고 그 구성요소는 역전되지 않을 수 있다. 도 41 및 도 42는 TAR 역전의 여러 예시를 도시한다. TAR ‘test_a64’는 5개의 에스사이퍼 변환 및 DSS 디그 변환을 수행할 수 있다. TAR은 특정 순서로 다양한 유형 및 길이의 6개의 키로 채워진 키스택을 기대할 수 있다. TAR ‘test_a64’에 상응할 수 있는 키 템플릿의 단순화된 표현이 섹션(3610)에 도시될 수 있다. 이러한 키 템플릿은 임의의 입력 키스택을 유효화하고 및/또는 TAR의 적절한 처리를 위한 유효 키스택을 생성하도록 함축 키 확인 및/또는 생성 변환에 의해 사용될 수 있다.
도 38은 SDFT 작동 라벨 또는 언라벨(또는 라벨의 역전)에 관한 블록도이다. SDFT에서 두 개의 중심 작동은 ‘라벨’ 및 그의 반대, ‘언라벨’일 수 있다. 라벨 작동은 다음의 아이템: 데이터, TAR, 키스택 및/또는 다른 속성 중 일부 또는 전부를 포함할 수 있는 소정 Nsstr를 처리할 수 있다. 라벨 작동은 (3802) 내에 TAR에 열거된 변환의 시퀀스에 따라 (3802) 내에 소스 데이터를 ‘라벨’ 또는 폴드(3810)할 수 있고 결국 NSstr 구조(3804) 또는 NS제이슨 구조(3806) 내에 구성요소로서 출력을 생성할 수 있다. 언라벨 작동은 임베디드 TAR에 열거된 변환의 역전된 시퀀스에 따라 소스 NSst(3804) 또는 NS제이슨(3806) 구조를 ‘언라벨’ 또는 언폴드(3820)할 수 있다. 도시될 바와 같이, 라벨/언라벨의 대칭은 이러한 설계의 흥미로운 측면일 수 있다. TOP에 걸쳐 사용될 수 있는 용어 및 관점의 일관성을 유념한다. 반대로 라벨 작동은 언라벨과 등가일 수 있다. 이러한 가역성 원칙은 그러한 기능의 분석을 단순화할 수 있을 뿐만 아니라 데이터의 변환에 속하는 더 고차 개념으로 이끌 수 있는 모듈식 조직화 방법에 스며들 수 있다.
도 39는 SDFT 라벨 작동의 순서도를 도시한다. NSx 구조를 고려할 때, 라벨 함수 또는 방법 호출은 본 경우에, ‘x’가 임의의 변환 구조를 나타내는 NSx 내에 임베딩된 호출 및/또는TAR이 제공되는 양 파라미터 중 어느 하나를 활용하여 그 안에 포함된 데이터 상에 다음의 작동을 수행할 수 있다. 키 체크/생성 변환과 유사하게, 뫼비우스 변환은 본 알고리즘에 대해 너무 기본적으로 간주될 수 있어서, 조건이 충족된다면(3906), 임의의 입력 데이터 구조 상에 함축적으로 수행될 수 있다. 라벨은 단지 NSstr 구조 상에 코어 작동을 적절하게 수행할 수 있고 따라서 NSx 구조가 통과된다면, 그것은 NSstr이 아니고, NSstr 구조(3918)로의 전환을 시도할 수 있다. 유효 NSstr(3924)을 생성하는 실패는 적절한 오류 코드(3978)를 상승시킬 수 있고 프로세스(3984)를 갑자기 종료할 수 있다. 그 안의 데이터가 라벨될 수 있거나 폴딩될 수 있는 적어도 3개의 다른 방법이 있을 수 있다: 첫째로, 유효 NSstr 내에, NSstr 구조 내의 데이터 상에 수행하도록 변환 시퀀스를 나타내는 TAR이 포함될 수 있고; 둘째로, TAR 라벨의 명칭은 파라미터로서 라벨 호출로 통과될 수 있고 그로써 NSstr 구조 내의 데이터 상에 수행하도록 변환의 바람직한 세트를 나타낼 수 있고; 셋째로, 맞춤화된 TAR 목록이 라벨 호출에서 소명 명칭을 따라 파라미터로서 통과될 수 있고 그로써 NSstr 구조 내의 데이터 상에 수행할 변환의 바람직한 세트를 나타낸다. TAR(3912)의 준비는 다른 TAR 라벨 참조를 확장하고 및/또는 전방 또는 반대일 수 있는 순회의 모드를 위해 그것을 적절하게 순서화한다. 도 41 및 도 42는 TAR 역전의 여러 예시를 도시한다. 그런 후에 키 확인 변환이 TAR 및 NSstr 구조 상에 효과적으로 수행될 수 있다. 키 확인 변환의 구성요소는 TAR(3930)을 검토함으로써 키 템플릿의 목록을 유도하는 것일 수 있다. TAR을 이용하여, (공백이거나 부분적으로 채워질 수 있는) 입력 키스택 및/또는 키 템플렛, 프로세스는 TAR(3936)의 적절한 순회를 위한 키스택을 구성할 수 있다. 이는 정확한 유형의 결손 키를 생성하고, 적절한 순서로 키를 시퀀싱하고 및/또는 적절한 구조 및 유형에 대해 입력 키를 확인하는 것을 포함할 수 있다. 입력 키 유형 및 상응하는 유도 키 템플릿에서 임의의 미스매치는 적절한 오류 코드(3978)를 상승시키는 것으로 이끄는 오류 조건(3942)을 생성할 수 있고 프로세스(3984)를 갑자기 종료할 수 있다. 프로세스는 이제 적절한 시퀀스(3948)에서 TAR에 각각의 변환 명령어에 걸쳐 반복할 수 있고 NSstr 내에 포함된 데이터 상의 특정된 변환(3954)을 수행할 수 있다. 변환 명령 실행(3960) 동안 마주칠 수 있는 임의의 오류는 적절한 오류 코드(3978)를 상승시킬 수 있고 프로세스(3984)를 갑자기 종료할 수 있다. TAR 시퀀스의 끝이 오류 없이 도달(3948)될 때, 그때 라벨 작동은 성공(3966)으로 간주될 수 있고 프로세스는 적절하게 빠져나올 수 있다(3972).
도 40은 SDFT 라벨 작동의 순서도를 도시한다. 구체적으로 언라벨 프로세스를 특정하기 보다는, 우리는 도 39 및 도 40에 순서도를 비교함으로써 변환의 가역성의 대칭을 도시할 수 있다. 두 개의 순서도 사이에 유일한 차이는 TAR 준비 단계(3912 및 4012)일 수 있다. 매 변환이 양방향 방식으로 잘 거동된 방식으로 수행되도록 TOP를 사용하여 분석되고 구조화될 수 있기 때문에, 언라벨 프로세스는 어떻게 TAR이 표현될 수 있는지를 제외하고 라벨 프로세스와 매우 다를 필요가 없을 수 있다. 그것은 동일한 코드로서 실행될 수 있지만, 반대 플래그가 지시될 수 있을 때 약간의 편차를 가질 수 있고 마주칠 때, TAR의 적절한 반대 시퀀싱을 수행할 수 있다. 파이썬 v3.6에서 그러한 호출은 형태 ‘obj.ravel(... , reverse=True)’를 취할 수 있다. 대칭은 실제 실행된 코드가 훨씬 더 작은 것을 허용하고 및/또는 프로그래밍 오류에 대해 더 적은 기회를 제시할 수 있다. 개념적 혜택은 특정 목적을 위해 신규한 TAR을 구성할 때 사고의 명료함 및 단순함일 수 있고: 프로그래머는 제한 내에서 전체적으로 가역적이도록 적절한 TAR 시퀀스에 의존할 수 있고 어플리케이션의 그러한 부분에 많은 생각을 하지 않아도 될 수 있다. 혜택은, 더 이상 그러한 데이터 조작의 반대 코드를 생성할 필요가 없을 수 있기 때문에, 데이터 변환의 특정 세트를 생성하기 위한 프로그래머의 워크로드가 적어도 절반까지 효과적으로 감소될 수 있다는 것이다. 복잡한 암호화 및 잠금 메커니즘의 빌딩은 매우 많은 수의 암호 키를 활용하는 엄청난 수의 데이터 조작을 요구할 수 있다. 변환 구성 원리(TOP) 방법은 별개의, 오류 가능성이 적은 방식으로 그러한 복잡성에 접근하는 더 응집적이고 일원화된 방법을 달성하는 것을 도울 수 있고; 따라서, 그것은 더 일관적이고, 신뢰가능하며, 보안적이고, 휴대가능하고, 이해가능하고, 포괄적이고, 유연하고, 확장가능하고 및/또는 복잡한 코드 및/또는 데이터를 허용할 수 있지만 그로 한정되지 않을 수 있다.
도 43은 TAR 처리 동안 생성하거나 요구할 수 있는 키 유형 템플릿으로 매핑된 변환에 관한 표를 도시한다. 키 관리에 대한 논의로 되돌아가서, 키 관리의 메인 작동 중 하나는 소정 TAR을 분석하고 소정 TAR의 성공적인 처리에 필수적일 수 있는 각각의 키의 유형 및 명세를 구체화할 수 있는 키 유형 템플릿의 상응하는 목록을 생성하는 것일 수 있다. 표(3506)는 SDFT 내에 규정된 키 유형의 적어도 9개의 유형을 열거한다. 표(4300)는 키 및 상응하는 키 유형 또는 ‘keytyp’를 요구할 수 있는 각각의 변환 작동의 매핑을 도시하고, 그것은 라벨/언라벨 프로세스에 의해 요구될 수 있다. 키 템플릿은 키 길이 또는 ‘keylen’와 같은 그로 한정되지 않는 각각의 키 유형과 연관된 여러 속성을 가질 수 있다. 간결성 및 단순화된 도시를 위해, 우리는 256 비트 길이 대칭 키를 ‘symmetric keylen=256’ 또는 ‘symmetric 256’으로 표현될 수 있는 키 템플릿을 갖는 것으로 지시할 수 있지만 실제 실행에서 조직화된 방식으로 그러한 값을 저장하도록 프로그래밍 언어에서 임의의 이용가능한 구조 메커니즘을 이용할 수 있다. 파이썬 v3.6에서, 키 템플릿에 관해 가능한 구조는 어레이에서 각각의 사전 엔트리가 사전 키에 상응하는 각각의 속성 및 사전에 키와 연관된 값에 상응하는 속성 값을 갖는 단일 키 템플릿을 저장하는 사전의 어레이에 의해 표현될 수 있다. SDFT 내에서, 모든 키 템플릿은 일시적 구조일 수 있고 키 확인 변환을 통해 반복적인 재생성의 대상이 될 수 있고 그러한 키 템플릿을 영구적으로 저장하는 것은 필수적이지 않을 수 있다. 이러한 방식으로, SDFT는 키 유형/구조 비호환성으로 인해 암호 변환을 완전한 실패로 이끌기 전에 처리를 위해 키스택에 삽입되는 임의의 키를 적절하게 분석할 수 있다. TOP 및 SDFT에서 지배적인 주제는 데이터 조작 시퀀스의 난독화가 임의의 민감한 페이로드를 확보하는데 있어서 신뢰가능한 구성요소이지 않을 수 있지만, 그보다는 선택된 암호 및 그 작동 속성 및/또는 특성의 강도로 강등될 수 있다는 관점일 수 있다.
도 44는 TAR 예시 및 각각으로부터 생성된 키 템플릿을 도시한다. 표(4402)에서 왼쪽 열은 TAR 예시 ‘A’를 열거한다. 오른쪽 열은 속성 입력으로서 암호 키를 요구할 수 있는 각각의 변환 명령어에 대해 생성된 키 유형 템플릿을 지시한다. 본 예시에서, TAR ‘A’는 지시된 시퀀스에서 두 개의 암호 키를 요구할 수 있다. 표(4404)에 왼쪽 열은 TAR 예시 ‘B’를 열거한다. 오른쪽 열은 입력으로서 암호 키를 요구하는 각각의 변환 명령어에 대해 생성된 키 유형 템플릿을 지시한다. 본 예시에서, TAR ‘B’는 지시된 시퀀스에서 네 개의 암호 키를 요구할 수 있다. 이러한 프로세스는 TAR로부터 키 템플릿 생성으로 알려질 수 있다.
도 45는 TAR 예시 및 각각으로부터 생성된 키 템플릿 및 입력(put)되거나 생성(gen)되도록 기대된 KISS 구조의 목록을 도시한다. KISS의 목록은 키스택으로도 언급된다. 우리는 도 44로부터 두 개의 예시를 취할 수 있고 라벨/언라벨 호출의 키 관리 측면에서 다음 단계를 도시할 수 있다. 키스택은 (4510)에 의해 도시된 바와 같이 각각의 키 유형 템플릿에 상응하는 KISS 구조의 목록의 형태로 기대되거나 생성될 수 있다. TAR ‘A’처리가 ‘scipher salsa20 256’변환 명령어에 도달할 때, 프로세스는 KISS A1에 의해 지시된 바와 같이 키스택에 입력 256 비트 길이 대칭 키를 발견하는 것을 기대할 수 있다. TAR ‘A’ 처리가 ‘dign dss 1024 digestlen=512’변환 명령어에 도달할 때, 프로세스는 KISS A2에 의해 지시된 바와 같이 키스택에 입력 1024 비트 dsa 키를 찾기를 기대할 수 있다. TAR ‘B’를 위한 KISS 리스트는 유사한 방식으로 수행하도록 읽거나 이해될 수 있다. 어떠한 그러한 기대된 키도 키스택에서 발견될 수 없다면, TAR 처리는 대신에 생성된 키가 발견되기를 기대할 수 있다. 소정 입력된 변환에 대해 임의의 유형의 허용가능한 키를 생성하는 유일한 요구사항이 TAR 내에 그것을 선언할 수 있는 것이기 때문에, 이러한 함축 키 생성은 프로그래머에게 유익할 수 있다. 특정 암호 함수에 대해 특정 키를 생성하기 위해 필요한 어떠한 추가적인 단계도 없을 수 있다. 공백 키스택을 갖는 라벨을 호출하는 것은 출력 NSstr 구조가 TAR에 매칭하고 그 안에 데이터를 홀딩할 수 있도록 적절하게 생성된 키를 갖는 충분히 순응하는 키스택을 홀딩하는 것을 초래할 수 있다. KISS 구조로 구성된 이러한 키스택이 그런 후에 폴딩된 데이터로부터 떨어져 안전한 방식으로 분리하여 저장될 수 있고 및/또는 그것이 일부 방식으로 더 수정될 수 있고 다시 폴딩될 수 있고 암호 변환으로 TAR을 사용하여 확보될 수 있고 따라서 그것을 더 암호화할 수 있는 것은 강력하게 추천되고 권장할 만하다. 키스택의 반복적인 암호화 및 캡슐화는 관리하고 확보하기 위해 많은 암호 키를 취급할 때 유용할 수 있다. TAR ‘B’는 4개의 KISS의 키스택을 생성할 수 있고 키 저장소에 전체 키스택을 안전하게 저장하기에 편리할 수 있지만; 프로그래머는 편의를 위해 단일 키를 사용하여 4개의 키의 키스택을 암호화하기를 원할 수 있다. 이는 신규한 NSstr를 생성하고, 데이터 obj 필드에 4개의 키 키스택을 삽입하고, 적절한 암호 TAR을 픽킹하고 NSstr 구조 상에 라벨 호출을 수행함으로써 달성될 수 있다. 이러한 일련의 단계는 4개의 키 스택을 홀딩하는 폴딩된 NSstr 구조에 대해 잠금 키를 포함하는 단일 KISS 구조를 갖는 키스택을 생성할 수 있다.
도 46은 SDFT TAR 처리 내의 키스택 작동의 세 개의 모드를 도시한다: 생성(gen), 입력(put), 및 주입(혼합된). 섹션(4600)은 키스택(4602)이 TAR 예시 ‘B’의 처리에서 공백일 때 무엇이 발생하는지를 도시한다. 라벨 프로세스는 TAR 예시 ‘B’에 대한 키 유형 템플릿을 취할 수 있고(4508) 동일 유형의 그리고 (4604)에 도시된 바와 같은 키 유형 템플릿에서 발견된 것과 동일한 순서로 적절한 수의 무작위로 생성된 암호 키를 생성한다(4606). 섹션(4610)은 키스택(4612)이 TAR 예시 ‘B’의 처리에 입력(put)(4616)될 때 무엇이 발생할 수 있는지를 도시한다. 라벨 프로세스는 TAR ‘B’(4508)에 대한 키 유형 템플릿을 취할 수 있고 키의 개수, 유형, 및 순서를 유효화하도록 제공된 키스택(4612)에 대해 그것을 확인하고, 그런 후에 그것은 (4614)에 도시된 바와 같이 TAR ‘B’의 처리 동안 그 사용을 허용할 수 있다. 섹션(4620)은 키스택(4622)이 오직 하나의 키가 제공되는, TAR 예시 ‘B’의 처리에 제시될 때 무엇이 발생할 수 있는지를 도시하고, KISS B3 또는 부분적으로 채워진 키스택 또는 ‘결손 치아’ 시나리오로도 언급된다. 라벨 프로세스는 TAR ‘B’(4508)에 대한 키 유형 템플릿을 취할 수 있고, 키의 개수, 유형, 및 순서를 유효화하도록 제공된 키스택(4622)에 대해 그를 확인할 수 있다. 각각의 키 유형 템플릿 대 키스택 엔트리의 반복적 유효화 동안, 임의의 공백 KISS 구조는 특별한 유형의 유효화 실패인 것으로 간주될 수 있고 그러한 키 유형 템플릿에 대한 함축 키 생성 변환으로서 더 이해될 수 있다. 라벨 프로세스는 그런 후에 키스택의 공백 위치에 적절한 유형의 새롭게 생성된 키를 주입할 수 있고(4626) 키 유효화 반복을 계속할 수 있다. 본 단계를 완료할 때, 혼합된 키스택(입력되고 생성된 키의 혼합, 결손 치아 시나리오, 또는 키 주입으로 언급될 수 있음)은 (4624)에 도시된 바와 같이, TAR ‘B’의 처리 동안 제시되고 사용될 수 있다.
도 47은 데이터 및 TAR의 라이프 사이클에서 키스택이 어떻게 생성되고 사용될 수 있는지에 관한 도시를 나타낸다. 데이터 상의 SDFT의 사용(4700)은 특정 TAR(4702)에 의해 규정된 바와 같은 변환의 변수 세트에 따라 순차적 방식으로 반복적으로 변환되는 것을 허용할 수 있다. TAR은 암호 키 유형 분석을 허용하고 따라서 TAR에 의해 요구되는 키의 수 및 유형을 구체화하는 키 템플릿을 생성하는 그러한 방식으로 구조화될 수 있다. 키 템플릿은 그런 후에 모든 또는 일부 필수적인 키가 존재할 수 있는지, 또는 어떤 필수적인 키도 존재할 수 없는지 여부를 입력 키스택의 구성요소(4704)에서 참조할 수 있다. 요구되는 암호 키가 분실될 수 있을 때, 구성요소 프로세스는 사용을 위해 신규한 키를 생성할 수 있다. TAR, 데이터, 및 키스택은 그런 후에 TAR에 따라 구조화된 데이터의 폴딩을 수행하도록 라벨 호출(4706)에 통과될 수 있다. 폴딩된 데이터는 그런 후에 임의의 수단에 의해 저장될 수 있다(4708). 키스택에 키는 분리 보안 위치에 저장될 수 있다(4710). 폴딩된 데이터가 참조될 필요가 있을 때, 어플리케이션은 저장 위치(4712)로부터 그것을 검색할 수 있고, 안전 저장소(4714)로부터 키 또는 키스택을 검색하고, 언라벨 호출(4716)로 폴딩된 데이터 및 키스택을 통과시키고 언라벨 출력 구조(4702)로부터 원본 형태로 데이터에 접근할 수 있다. 이는 변환으로 구조화된 데이터 폴딩의 하나의 완벽한 사이클을 나타낼 수 있다. 변환되거나 폴딩될 임의의 데이터 구조에 관한 많은 다른 경로가 있을 수 있지만, 핵심적으로 이러한 사이클의 일부 형태는 SDFT 내의 원본 데이터를 충분히 검색하기 위해 완료하기에 충분할 수 있다.
키 및/또는 키스택(4710)의 저장은 더 적은 키, 단지 하나의 키 및/또는 다른 키로 그것을 보호하기 위해 암호 TAR을 활용하여 키스택의 폴딩을 수반할 수 있다. 폴딩된 키스택 데이터는 결국 그 자체 폴딩될 수 있는 또 다른 구조의 부분이 될 수 있다. 데이터는 정밀한 단편적 폴딩이 정밀한 단편적 암호화로 유도할 수 있는 내부 데이터 구조를 빌딩하는 캐스케이딩 방식으로 반복적으로 폴딩될 수 있다. 정밀하고, 조직화되며 및/또는 체계적 방식으로 복잡한 암호 데이터 변환을 향하게 하는 이러한 능력은 더 정교한 변환 스킴을 사용하여 민감한 데이터의 보호를 위한 더 양호하고 및/또는 더 단순한 설계로 이끌 수 있다. TAR 구문의 단순함 및 명료함은 작동이 다른 것에 의해 목표 데이터에 대해 수행되는 것에 관한 더 나은 이해로 이끌 수 있다.
SDFT의 중요한 혜택은 (4704) 및 (4714)으로서 소정의 한 조각의 데이터 상에 다양한 암호 작동을 조합하는 문맥 내에 키 관리의 체계적 취급일 수 있다. 프로그래머는 각각의 키를 생성하고 그 저장소를 조작하고 및/또는 그러한 프로세스 동안 시퀀싱하는 미뉴셔에서 해제된 무언가일 수 있다. 암호 함수의 어플리케이션에서, 이들 미뉴셔는 어플리케이션(따라서 프로그래머)이 추적하고, 분석하고, 저장하고 및/또는 사용해야만하는 굉장히 많은 작은 세부사항 또는 속성이 되도록 빠르게 추가될 수 있다. SDFT 방법은 이들 속성이 데이터 및/또는 키스택의 문맥 내에 임베딩되는 것을 허용하고, 그것은 출력 상에 작동하고 그로서 생성되기 때문에, 소정 어플리케이션이 암호 함수의 더 적은 개별적인 속성을 추적하고, 분석하고, 저장하고, 및/또는 사용하게 할 수 있고, 따라서 그것을 폴딩할 수 있는 변환에 따라 폴딩된 데이터의 쌍 결합을 제공할 수 있다. 어플리케이션에서 데이터로의 데이터 조작 명령의 이식은 더 단순한 어플리케이션 및/또는 암호 기능의 더 정교한 사용을 갖는 어플리케이션을 허용할 수 있다. SDFT는 너츠 섹션에서 논의될 바와 같은 구조화된 암호 프로그래밍(SCP) 방법을 표현할 더 나은 대안을 가능하게 할 수 있다.
도 48은 NSstr 구조에 저장된 데이터 상에 발생할 수 있는 작동의 도시를 도시한다. 포인터에 의해 지시되고 및/또는 변수(4802)에 의해 저장된 임의의 데이터는 실증 방법을 사용하여 및/또는 방법/함수 호출(4804)을 사용하여, 직접 NSstr 구조에 캡슐화될 수 있다(4812). 그런 후에, NSstr 구조(4810)는 필요하다면(4816), TAR(4814) 및 그 연관된 속성을 암호화할 수 있다. 속성은 키스택, 다이제스트, 변환 파라미터 및/또는 일시적 변수를 포함할 수 있다. 이는 제공될 수 있는(4810) 속성을 사용하여 안에 포함된 데이터 상에 TAR을 수행하는 SDFT 라벨/언라벨 작동을 통해 NSstr을 처리하기 위해 필요한 정보의 최소 완벽한 세트를 제공할 수 있다. TOP 용어에서, 우리는 이것을 데이터의 폴딩으로서 언급할 수 있다. SDFT의 출력은 동일한 NSstr 구조(4810) 또는 NS제이슨과 같은 NSx 구조로서 회귀할 수 있다. 이러한 출력은 일부 지속적이고 접근가능한 방식으로 저장될 수 있고(4820), 인터 프로세스 커뮤니케이션(IPC) 방법(4840)을 사용하여 또 다른 컴퓨팅 장치에 전송될 수 있고, 및/또는 또 다른 내부 데이터 구조(4830)에 저장될 수 있다. 사이클은 어플리케이션에 나중 지점에서 저장된 데이터(4820 및 4830)에 대해 새롭게 시작할 수 있다. 전송된 데이터(4840)에 대해, 사이클은 그러한 데이터 포켓(4800)의 수용에 의해 시작될 수 있다.
도 49는 반복적으로 데이터를 폴딩하는 SDFT 사용의 순서도를 도시한다. 일련의 단순화된 도해는 N개의 연속적인 데이터 폴딩에 대해 SDFT 라벨 호출을 사용하여 데이터의 체계적인 폴딩을 도시한다. 적어도 데이터(4902) 및 TAR(4904)을 포함하는 NSstr 구조(4900)는 수정되거나 및/또는 더 캡슐화될 수 있는 출력 데이터(4948)를 생성하도록 라벨(4946)을 호출함으로써 폴딩될 수 있는 적어도 데이터(4942) 및 TAR(4944)을 포함하는 NSstr 구조에 수정되고 및/또는 더 캡슐화될 수 있는 출력 데이터(4928)를 생성하도록 라벨(4926)을 호출함으로써 폴딩될 수 있는 적어도 데이터(4922) 및 TAR(4924)을 포함하는 NSstr 구조(4920)에 수정되고 및/또는 더 캡슐화될 수 있는 출력 데이터(4908)를 생성하도록 라벨(4906)을 호출함으로써 폴딩될 수 있다...이러한 프로세스는 필요한 만큼 반복될 수 있다(4950). 이러한 복잡한 일련의 구조화된 데이터 폴딩에서, 임의의 단계에서 임의의 TAR은 일부 텍스트 파일 또는 그 등가물에 저장된 TAR 명령을 단순히 수정함으로써 어플리케이션 코드로부터 분리하여 수정될 수 있음을 유념한다, 각각의 단계에 대한 변환 시퀀스 및/또는 파라미터 변형의 가능성을 갖는 그러한 반복 캡슐화의 SDFT가 없는 등가의 프로그램 표현은 비교적 길고, 오류 가능성이 있고 및/또는 이해하기 어려울 수 있다.
도 50은 반복적으로 데이터를 언폴딩하는 SDFT 사용의 순서도를 도시한다. 일련의 단순화된 도해는 N개의 연속적인 데이터 언폴딩에 대해 SDFT 언라벨 호출을 사용하여 데이터의 체계적인 언폴딩을 도시한다. 그것은 도 49의 흐름의 정확한 반대 시퀀스이고 따라서 그와 같이 이해될 수 있다. 도 39 및 도 40에 앞서 도시된 바와 같이, 언라벨 호출은 TAR의 준비 및 데이터의 상태가 그에 공급된 것을 제외하고 라벨 호출과 동일한 수 있다. 이러한 복잡한 일련의 구조화된 데이터 언폴딩에서, 어떠한 추가 반대 TAR도 언폴딩을 달성하기 위해 필수적일 수 있음을 유념한다. 각각의 폴딩된 데이터를 언라벨하기 위해 필요한 모든 필수적인 TAR은 폴딩된 구성 내에 발견되고 임베딩될 수 있다. NStar 구조(3106)의 더 가까운 검토는 ‘TAR 명령어 확장된 형태의 목록’으로서 정의된 ‘expd’를 도시한다. 이것은 SDFT에서 가역성의 잔인한 특징일 수 있다: TAR 준비 단계(3912 및 4012)의 출력은 라벨 참조 및 임의의 다른 외부 참조 없이 작동가능한 변환 명령어의 완전한 세트를 생성할 수 있고 변환 데이터가 대상이 될 수 있는 변환의 완전한 기재로 간주될 수 있다. 이는 폴딩된 데이터에 대한 TAR 세트의 정적 스냅샷으로서 간주될 수 있고 그로써 적절한 언폴딩이 외부 위치에서 TAR 정의에 대한 임의의 변경 없이 폴딩된 데이터 상에 수행될 수 있음을 확인한다. TAR 정의 파일은 매우 많은 수의 TAR 정의와 함께 시간에 걸쳐 성장할 수 있지만, 작동 TAR 정의의 저장은 (추천된 실행이 아닐 수 있는) 그러한 외부 정의 파일에 대한 변경에 상관없이 가역성을 보존하는 그러한 방식으로 SDFT 프로세스에 의해 저장될 수 있다. 이러한 설계는 더 나은 방식으로 저장된 데이터의 시간 호환성을 취급하는 체계적인 방식을 촉진할 수 있다.
도 51은 SDFT API/라이브러리 및 접근할 수 있는 TAR 정의 파일의 다양한 유형의 도시를 나타낸다. TAR 정의는 텍스트 파일, 너트, 암호화된 파일, 데이터베이스, 서버 프로세스, 및/또는 작동 메모리와 같은 그러나 그로 한정되지 않는 많은 형태로 존재할 수 있다. TAR은 라벨 호출에서 맞춤식 TAR 정의로서 프로그래머에 의해 언제든지 정의될 수 있고 따라서 일시적 TAR일 수 있다. 지속적으로 저장될 수 있는 이들 TAR 정의에 있어서, 도해(5100)는 이들의 다양한 형태를 도시할 수 있지만 도시된 이들에 의해 한정되지 않을 수 있다. 표준 TAR(5102)은 임의의 OS/언어 페어링에 대해 SDFT 라이브러리 설치에 따라 패키지로서 제공될 수 있는 TAR 정의일 수 있다. 은폐된 TAR(5104)은 접근 제한된 위치에만 존재할 수 있고 및/또는 표현된 허가에 의해 접근될 수 있는 맞춤식 TAR 정의일 수 있는 TAR 정의일 수 있다. 이들 사설 네트워크 또는 사용자 정의 어플리케이션 설치 내의 TAR 정의의 바람직한 방법일 수 있다. 은폐된 TAR의 사용은 심지어 라벨의 출력 내에서도 은폐를 유지할 수 있고 TAR의 어떠한 확장된 형태도 TAR 라벨에 의한 그것의 참조를 제외하고 그러한 폴딩된 데이터에서 발견되고 임베딩될 수 없다. 은폐된 TAR로 폴딩된 데이터가 그것을 언폴딩하기 위해 요구되는 변환 세트를 필수적으로 포함하지 않을 수 있기 때문에, 은폐된 TAR을 유지하는 의무는 그러한 그룹의 관리자에게 있다. 은폐된 TAR은 프로그램 내의 데이터 조작 시퀀스를 난독화하는 등가의 방법과 친숙한 듯이 보일 수 있다. 로컬 사용자 TAR(5106)은 사용자의 또는 프로그래머의 계정 권한 하에만 접근될 수 있는 맞춤식 TAR 정의일 수 있는 TAR 정의일 수 있다. 이들은 프로그래머가 후속 시간에 TAR 정의 저장 형태 중 하나에 영구적 추가에 대해 조작할 수 있는 일시적 또는 발전적 TAR일 수 있다. 원격 TAR(5108)은 원격 서버 또는 저장 사이트로부터 허가 접근으로 또는 그것 없이 접근될 수 있는 TAR 정의일 수 있다, 그러한 토폴로지는 제한된 로컬 저장소로 인해 또는 중점적으로 관리된 영역에 키 TAR 정의를 중심화하는 정책으로 인해 필수적일 수 있다. 이는 또한 표준 TAR 정의가 가장 최근 버전일 수 있는지를 알기 위해 계속적으로 확인하는 방법일 수 있다. 보호된 TAR(5110)은 임의의 적합하고, 접근가능한 위치에 위치될 수 있지만 인증된 접근에 대해서만 암호화될 수 있는 TAR 정의일 수 있다. 개별 인증 및/또는 인증 프로세스는 보호된 TAR에 대한 접근을 얻기 위해 성공적으로 순회될 필요가 있을 수 있다. 보호된 TAR의 또 다른 형태는 그에 접근을 얻기 위해 적절한 키(들)를 요구할 수 있는 너트 컨테이너 내에 저장될 수 있다. 임베디드 폴딩된 TAR(5112)은 라벨 호출로부터 폴딩된 데이터에 따라 확장된 TAR 정의일 수 있다.
도 52는 수동 데이터 폴딩을 수행하기 위한 예시적인 파이썬 스크립트를 도시한다. 도 53은 파이썬 스크립트에서 TAR 정의 및 그 사용에 관한 SDFT 예시를 도시한다. 도 52 및 도 53은 SDF가 파이썬 v3.6을 사용하는 더 직선적인 프로그램 접근과 어떻게 다른지에 관한 예시를 함께 도시할 수 있다. 이들 예시적인 파이썬 스트립트는 각각의 방법론을 사용하여 가깝게 각각의 과제에 대해 기본적인 호출 시퀀스에서 주요한 차이를 도시할 수 있다. 우리는 샘플 데이터 세트(5210)로 시작할 수 있다. 데이터 상에 수행하는 작동은 라인(02-06)에 도시된 바와 같은 일반 언어로 표시된 과제(5220)에 특정될 수 있다. 일반적으로 이들은 가독성을 위해 주석 라인으로서 프로그램 그 자체에 들어갈 수 있다. 섹션(5250)은 과제를 수행하기 위한 실제 파이썬 코드를 도시하고 섹션(5260)은 원본 데이터(5210)을 복구하기 위해 과제의 반대 처리를 도시한다.
SDFT를 사용하여, 데이터 세트(5310)는 (5210)과 동일하다. 섹션(5320)은 ‘test_a70’로 라벨링된 TAR 정의로서 과제(5220)를 표현한다. 섹션(5350)은 데이터를 라벨하고 파일에 폴딩된 데이터를 작성한다. 섹션(5360)은 파일로부터 폴딩된 데이터를 읽고 그것을 언라벨한다.
도 52에 대해 파이썬 코드의 18개의 라인 및 도 53에 코드의 단지 8개의 라인이 있다. 데이터 변환의 유형 및 수에서 임의의 변경이 섹션(5250 및 5260)에 영향을 줄 수 있음이 명백할 수 있다. 도 52에 방법은 프로그래머가 여러 변수, 과제의 시퀀스 및/또는 각각의 함수 또는 방법의 적절한 호출을 유지하는 것을 요구한다. (5260)에서 반대 프로세스는 프로그래머가 모든 작동이 정확한 반대 순서로 호출되고, 파라미터가 각각의 함수 또는 방법 호출에 대해 정확한 방식으로 공급되는 것을 확인하는 것을 요구한다. (5220)에서 과제에 대한 임의의 변경은 섹션(5250 및 5260)에 대한 프로그래밍 변경을 초래할 수 있다. (5220)에서 과제에 대한 임의의 추가 변경은 섹션(5250 및 5260)에 대한 추가 프로그램 라인을 초래할 수 있다. 더 많은 일시적 변수가 과제에 대한 이들 추가 및 변경에 대해 필요에 따라 생성되고 사용될 수 있다.
도 53에 SDFT 방법에서, 과제에서 임의의 변경은 TAR(5320)에 직접 반영될 수 있다. 그러므로, 임의의 추가 변환 수정만이 이러한 섹션의 길이를 변경할 수 있다. 라벨 및 언라벨 호출 라인(10 및 14)은 변경되지 않은 채로 남는다. TAR(5320)의 (5360)에서 반대 프로세스는 (5320)에 원본 TAR 정의를 너머서 특정될 필요가 없다. 사실, 섹션(5350 및 5360)은 TAR 정의 라벨이 라벨 방법 호출로 특정되는 라인 10을 제외하고 선택된 임의의 TAR 정의에 대해 영향을 받지 않는 채로 남겨질 수 있다.
과제의 가독성 및 이해력이 수행되는 관점에서, 리더는 섹션(5250 및 5260)에 실제 프로그램 코드보다 TAR(5320)을 선호할 수 있다. (5220)에 특정된 과제는 코드가 아니고 일반적으로 파이썬 코드 내의 주석으로 표현될 수 있다. 섹션(5250 및 5260)에 프로그램 코드에 대한 임의의 변경은 프로그래머에 의해 주석으로 수동으로 조절되어야만 하고 그렇지 않고 또 다른 프로그래머가 부정확한 주석으로 코드를 이해하려 시도했다면, 혼란이 뒤따르고 그 역도 성립한다. TAR(5320)은 명백하고 컴팩트한 방식으로 자기 설명적으로 간주될 수 있다.
섹션(5250)에 라인(15-16)에 의해 저장된 데이터는 어떻게 변환될 수 있었는지를 설명하는 어떠한 임베딩된 메타데이터도 갖지 않는다. 변환 방법론은 실제 코드로서 섹션(5250 및 5260)에 하드웨어에 내장된다. 이러한 방식으로 작성된 임의의 그러한 데이터는 적절한 회수 및 복구에 대해 동일하거나 유사한 코드의 존재에 완벽하게 의존적일 수 있다. 이들 코드 섹션 또는 그 등가물은 항상 회복가능하도록 변환되는 데이터에 대해 항상 유지되어야만 한다. 그것은 은폐된 TAR 방법의 등가물일 수 있다.
섹션(5350)에 라인 11에 의해 저장된 데이터는 폴딩된 데이터로 변환될 수 있는 임베딩되고 확장된 TAR 정의를 포함할 수 있다. 변환 방법론은 폴딩된 데이터와 페어링될 수 있고, 따라서 이송가능하게 할 수 있다. 폴딩된 데이터의 복구성은 그것을 생성한 코드와 독립적으로 간주될 수 있다(5350 및 5360). 폴딩된 데이터에서 임베딩된 TAR 정의를 적절하게 처리할 수 있는 임의의 코드는 원본 데이터를 복구할 수 있다. 이러한 유형의 기능은 더 낡은 폴딩된 데이터가 어떻게 그것이 복구될 수 있을지 자기 설명적이고 따라서 자기 처방적임에 따라 시간에 걸쳐 변환 시퀀스를 변경하는데 있어서 더 나은 시간 호환성을 허용할 수 있다.
도 54는 단일 통신 세션 내의 동적 TAR의 블록도를 나타낸다. TOP 접근에서, 더 높은 수준의 통신 프로토콜은 하나의 컴퓨팅 프로세스에서 또 다른 것으로 변환된 데이터의 통과로서 간주될 수 있다. 변환이 대개의 자주 사용되는 암호 기능 중 다수를 허용할 수 있기 때문에, 그것은 IPC를 위한 보안 메시지를 생성하도록 사용될 수 있다. 이론적으로, 각각의 메시지는 다른 TAR을 사용하여 변환되거나 폴딩될 수 있다. 각각의 다른 TAR 정의는 프로토콜 정의 모뎀 표준에 의해 그 자신의 프로토콜로서 간주될 수 있다. SDFT를 사용하여, TAR은 도 54에 도시된 바와 같이 두 개의 어플리케이션 사이의 폴딩된 메시지별 기반 상에 동적으로 스위칭될 수 있다. 도 51에 도시되고 설명된 바와 같은 TAR의 임의의 혼합이, 각각의 어플리케이션이 이들 TAR 정의 소스에 접근할 수 있는 한에는 사용될 수 있다. 임베디드 암호 변환에서 요구되는 각각의 키에 대한 정확한 키 식별자를 특정하는 키홀로서 KISS 구조와 같은 그러나 그로 한정되지 않는 임베딩되고 폴딩된 메타데이터의 풍부한 집합은 SDFT 기반 통신 프로토콜이 더 정교하고 잠재적으로 더 안전한 수준에서 보안을 제공하는 것을 허용할 수 있다.
SDFT로 불리는 프레임워크를 초래할 수 있는 TOP 분석 및 방법은 저장된 데이터가 그를 생성할 수 있는 자신의 휴대가능한 명령 세트를 포함하는 것을 허용할 수 있다. 이러한 프레임워크는 데이터 폴딩을 정의할 수 있고 조직화된 방식으로 저장된 데이터 내에 임베딩될 수 있는 변환 감사 기록(TAR)으로서 표현가능한 개념적으로 그리고 논리적으로 일관된 가역 변환 처리 방법을 사용하여 데이터를 폴딩하도록 방법론 및/또는 구현예를 제공할 수 있다. 결과 폴딩된 데이터는 그런 후에 일부 방식으로 수정될 수 있고 그런 후에 소망하는 어플리케이션 또는 데이터 형태 결과를 달성하도록 필요에 따라 반복적으로 폴딩될 수 있다. 프로그래밍 언어로서 TAR을 설명하는 것 외에, 그것은 소정 TAR 및/또는 속성 내에 변환 시퀀스의 무한 변형 및/또는 변환 속성의 무한 변형을 허용할 수 있는 간명한 형태로 협력적 데이터 조작의 세트를 표현한다. SDFT는 프로그래밍 언어가 스코핑 개념 및 기법을 사용하여 로컬 변수를 분리하는 방법과 유사한 데이터세트에 대한 가변 스코핑을 허용할 수 있다. TOP를 통해, 프로토콜 변형은 자기 설명적일 수 있는 데이터로 이끌 수 있는 더 높은 개념적 구성에서 조망될 수 있고, 가능하게 프로그래밍 환경에 적응된 이용가능한 DSFT 라이브러리를 통해 방법론에 접근할 수 있는 매우 다양한 어플리케이션으로부터 접근가능하고 판독가능할 수 있다. 또한, 폴딩된 데이터에 채워질 수 있는 이들 특성은 단일 통신 세션 또는 단일 저장된 데이터 객체 내의 프로토콜의 동적 스위칭을 허용할 수 있다. TOP 접근은 너츠 에코시스템에 대한 기본적인 빌딩 블록으로서 그리고 너트의 구성요소에서 활용될 수 있다. 너츠는 SDFT와 완전히 독립적으로 실행될 수 있지만 바람직하지 않을 수 있다.
너트 ID
너츠 설계는 위치에 상관없이 데이터의 식별성을 가능하게 할 수 있다. 이는 보편적 고유 식별자(UUID)를 요구할 수 있지만 중심화의 일부 형태 없이 보장된 방식으로 달성가능하지 않을 수 있고, 따라서 우리는 ID 충돌의 낮은 가능성을 제공하는 충분한 길이 및 엔트로피 특징을 갖는 실제적으로 고유 ID의 개념에 안착할 수 있다. 도 55는 너트 ID(5500)를 생성하기 위한 프로세스의 예시의 순서도를 나타낸다. 여기서 로컬 장치(5502)는 사용자 속성(5504), 환경 속성(5506) 및/또는 랜덤 속성(5508)과 같은 그러나 그로 한정되지 않는 데이터 피스로부터 실제적으로 고유한 ID를 보장하도록 함수를 호출할 수 있는 어플리케이션을 작동할 수 있다. 사용자 속성(5504)은 사용자 로그인 정보, 그룹 ID, 회사 ID, 사용자 ID, 및/또는 사용자 패스워드 해시와 같은 그러나 그로 한정되지 않는 데이터 항목을 포함할 수 있다. 환경 속성(5506)은 MAC 어드레스, IP 어드레스, 장치 정보, 시스템 시간, OS 정보, 디렉토리 경로 및/또는 파일, 원자 시계 동기화된 시간 값, GPS 동기화된 시간 값, 선언된 환경 변수, 스레드 ID, CPU 작동시간, IMEI 번호, 전화 번호, 어플리케이션 이름 및/또는 프로세스 ID와 같은 그러나 그로 한정되지 않는 데이터 항목을 포함할 수 있다. 랜덤 속성(5508)은 세션 카운더, UUID, 클록 주기 카운트, 무작위로 생성된 숫자, 마우스 움직임, 키보드 활동, 파일 시스템 상태, 부분 또는 전체 화면 영역 해시, 프로세스 가동 시간, OS 가동 시간 및/또는 세션 기간과 같은 그러나 그로 한정되지 않는 데이터 항목을 포함할 수 있다. 이들 데이터 조각은 ID 구조(5510)에 모아지고 저장될 수 있고, 이는 그런 후에 제이슨 또는 다른 대안적인 마셜링 기법을 사용하여 직렬화될 수 있다. 그런 후에, 결과 2진 스트링은 (2001년에 NIST에 의해 FIPS PUB 180-2에 공개된 해시 알고리즘의 SHA-2 패밀리로부터)SHA-512 또는 ID 충돌의 가능성을 낮추기 위해 512 비트의 제안된 최소 길이를 갖는 실제적 고유함을 생성할 수 있는 대안적인 해싱 방법과 같은 해싱 알고리즘을 사용하여 해시될 수 있다(5520). 2진 해시는 텍스트 스트링 86개 이하의 문자 길이를 생성할 수 있는 휴대성 및 가독성(5514)을 위한 베이스64(또는 대안적인 인코딩 스킴)으로 인코딩될 수 있다. 인코딩 스킴은 프린트가능하고 인간 판독가능한 형태를 초래할 수 있는 임의의 방법을 포함할 수 있고 텍스트 스트링으로서 복수의 프로그래밍 언어 및 소프트웨어 시스템에 의해 수용될 수 있다. 함수가 호출될 수 있는 양상에 따라, 결과 인코딩된 해시 스트링은 임의의 접근가능한 너트 ID 캐시(5516)에 대한 복제에 대해 확인될 수 있다. ID 값의 충돌이 있다면, 그때 프로세스는, 비충돌 ID가 생성될 수 있고; 충돌이 거의 발생하지 않는 것으로 기대될 수 있을 때까지, 신규한 랜덤 속성(5508)으로 반복될 수 있다. 이러한 논리적 작동의 출력 스트링은 너트 ID(5518)로 불릴 수 있다.
이러한 프로세스는 작동 프로그램 내에 국부적으로 호출될 수 있거나 국부적으로 자리하는 서버 어플리케이션 내에 실행될 수 있거나 원격으로 서빙하는 클라이언트 어플리케이션이 신규한 너트 ID를 요청한다. 서버 모델 실행의 가능한 혜택은 더 낮은 충돌 가능성을 갖는 너트 ID에 대해 확인하도록 기존 너트 ID의 더 큰 캐시에 접근하는 능력일 수 있고 그를 생성할 수 있다. 해시 길이 및 ID 구조(5510)에 적절하게 모아진 데이터 구성요소가 충분한 엔트로피를 제공할 수 없기 때문에, 너트 ID 복제 확인은 의무적이지 않다. IPv4/IPv6 주소를 갖는 인터넷, 도메인, 디렉토리 계위 및 접근 제어 그룹과 같은 일부 또는 모든 디지털 인프라스트럭처에 걸친 구획화의 일반적인 개념이 있을 수 있다. 유사한 방식으로, 너트 ID는 실제적으로 고유할 수 있지만, 그것은 외부 시스템 또는 관계에 의해 구성된 구획의 문맥 내에 사용되는 경향이 있고 따라서 충돌 가능성은 너트 ID의 비트의 소정 길이에서 순열에 의해 제공된 수학적 가능성보다 훨씬 더 작을 수 있다. 다른 길이가 소망될 수 있는 경우에, 그것은 해당 기술분야의 당업자에 의해 모듈식 매개변수화된 방식으로 대안적인 해시 알고리즘으로 SHA-512 해시를 대체함으로써 달성될 수 있다.
실제적으로 고유한 ID가 너트 ID의 형태로 생성될 수 있는 프로세스를 고려할 때, 무엇이 그에 의해 식별될 수 있을까? 너츠 용어에서, 이것은 너트 ID 스탬핑으로 알려질 수 있다. 너트 ID로 지속적으로 스탬핑될 수 있는 너츠 내의 적어도 두 개의 구조가 있을 수 있다: 잠금 노드 및 너트. 잠금 노드에 할당된 너트 ID는 잠금 ID로 불릴 수 있다. 너트에 할당된 너트 ID는 너트 ID로 불릴 수 있다. 잠금 노드는 너트의 내부 빌딩 블록일 수 있다. 잠금 노드는 백(Bag)으로 알려진 페이로드를 보호할 수 있는 자기 포함적, 독립형 잠금 메커니즘일 수 있다. 너트는 하나 이상의 잠금 노드로 구성된 데이터 구조일 수 있다. 그러므로, 너트는 전체적으로 또는 부분적으로 데이터의 임의의 구획 또는 구획들을 홀딩할 수 있다. 너트는 실질적으로 고유한 방식으로 2진 형태로 표현된 일부 또는 모든 연관된 소프트웨어, 데이터 및/또는 하드웨어를 식별하도록 너츠 환경에 걸쳐 사용될 수 있다. 너트 ID 스탬핑의 결과는 모든 너트가 고유하게 식별될 수 있다는 것일 수 있고, 이는 너트 내에 저장된 모든 데이터 구획이 너트가 물리적으로 어디에 위치될 수 있는지에 상관없이 너트 ID에 의해 고유하게 식별될 수 있음을 함축한다.
도 56은 너트 데이터 구조의 단순화된 개략도를 도시한다. 이러한 도해는 너트 데이터 구조 내의 잠금 ID 및 너트 ID의 사용 및 상대적 배치를 강조할 수 있다. 특정 잠금 ID(5614-5622)는 이러한 너트에 할당될 수 있고 그들은 다른 값일 수 있다. 잠금 노드(5604-5612)는 잠금 ID(5614-5622)에 의해 각기 식별될 수 있다. 본 예시와 같은 일반적인 너트 데이터 구조 포맷에서, 너트(5602)는 잠금 그래프로 불리는 데이터 구조와 같은 그래프로 조직화된 잠금 노드의 그룹일 수 있다. 특정 너트(5602)는 잠금 노드의 (5606) 백(5626)에 저장될 수 있는 너트 ID(5634)에 의해 식별될 수 있고 너트 ID는 다른 잠금 노드 백 중 하나 이상에 저장될 수 있는 너트의 페이로드와는 다를 수 있는 잠금 노드의 페이로드로 간주될 수 있다. 모든 잠금 노드(5604-5612) 구조는 백(5624-5632)으로 불리는 페이로드 영역을 포함할 수 있다. 이는 너트와 너트 ID 사이의 관계를 나타내고 그것이 일반적인 너트 컨테이너에 저장된 이들 항목을 어디에서 발견할 수 있는지를 나타낸다.
도 57은 너트 ID, 경로명, 및/또는 페이로드 데이터 사이의 관계의 예시를 도시한다. 너트의 메타데이터, 너트 페이로드 주위의 메타데이터 및/또는 너트 페이로드를 저장하도록 사용될 수 있는 너트에 여러 잠금 노드가 있을 수 있다. 메타데이터 부분은 너트에 다양한 잠금 노드의 백에 저장될 수 있다. (5702)은 두 개의 별개의 너트 페이로드(D1 및 D2)가 있을 수 있는 시나리오를 도시하고, 각각은 각기 너트 ID(A3 및 B1)에 의해 식별된 별개의 너트에 저장된다. 너트 ID가 86개까지의 문자 길이의 텍스트 스트링을 생성할 수 있는 512 비트 해시의 베이64 인코딩일 수 있는 것이 앞서 특정되었음에도, 2-문자 너트 ID가 도시의 목적을 위해 사용된다. 너트(A3 및 B1)는 또한 NTFS 파일 시스템에서 별개의 경로명을 가진다. (5704)는 동일한 파일명을 갖지만 다른 경로명을 갖는 두 개의 별개의 너트를 도시한다. (5706)은 다른 디렉토리에서 동일한 파일명을 갖는 동일한 너트의 두 개의 사본을 도시한다. (5708)은 동일한 디렉토리에 안착한 다른 파일명을 갖는 너트의 두 개의 사본을 도시한다. 이것은 이들 속성의 순열 중 일부 또는 전부에 관한 철저한 열거일 수 없지만 그것은 너트 ID와 같은 각각의 페이로드와 영구적으로 연관된 메타데이터 항목을 갖는 유연성을 보여줄 수 있다.
연관된 너트 ID에 의해 식별될 수 있는 너트 파일 내에 임베딩된 데이터는 이러한 방법론의 신규한 특징을 야기할 수 있다: 메타데이터에서 매개변수화된 규칙에 기반해 동적 파일명을 자동으로 생성하는 능력. 파일명은 수정 일자 및 시간 및/또는 그 날에 관한 작성의 개수와 같은 그러나 그로 한정되지 않는 다른 속성의 포뮬레이팅된 요약은 물론 파일에 관한 정상 식별 스트링을 나타낼 수 있다. 이는 정상적으로 은폐된 속성을 조사할 필요 없이, 디렉토리 브라우징 어플리케이션에서 파일 특징을 살펴볼 필요 없이 정시에 파일 및 그 상태를 식별하는 더 정확하고 편리한 방식을 부여할 수 있다. 또한 파일 시스템마다 다를 수 있는 파일 시스템의 속성 캡처 기능에 의존하지 않고 파일 및 데이터 속성을 파일을 홀딩하는 컨테이너에 임베딩할 수 있다. 예: 사용자가 텍스트 문서를 저장할 수 있는 너트 ID #234를 만들 수 있고, 텍스트 문서는 항상 너트 ID#234로 식별될 수 있지만, 사용자는 "diary_20151115_l.txt"와 같이 기본 이름 + 마지막 수정 날짜 + 당일 쓰기 횟수를 포함하는 동적 파일명을 설정할 수 있다. 같은 날에, 약간 수정한 후 디스크에 저장할 경우 파일명에 "diary_20151115_2.txt"가 표시되고 이전 파일명이 디렉토리에 더 이상 존재하지 않을 수 있다. 이 방법론에서는 저장된 데이터의 일부 상태 정보를 나타내는 새 파일명을 자동으로 생성할 수 있다. 너트 ID의 특징은 실제적으로 고유할 수 있으며 경로명 + 파일명 지정과는 별개일 수 있으므로 외부 참조 없이 이러한 특징을 구현할 수 있다. 이러한 특징의 이점 중 하나는 작업 중인 문서의 이전 상태를 날짜 스탬프로 복사하고 보관하는 자주 사용되는 방법일 수 있다는 것이다. 작성자는 자신이 문서 작업을 수행한 각 날짜에 대한 파일로 채워진 디렉터리를 찾을 수 있다. 동적 파일 이름 방법을 사용하면, 그는 자신이 마지막으로 쓴 날짜 스탬프가 있는 너트 파일 하나만 디렉토리에 가질 수 있다. 수동 방법의 이력(상태) 저장 측면은 이후 섹션에서 설명하는 너트 이력 특징을 사용하여 너트 자체 내에서 보존될 수 있다. 너트 ID는 콘텐츠의 주요 식별이라는 이 개념을 나중에 너트서버에서 분산형 너트에 대한 복제 및 동기화 작업을 수행하는 데 사용할 수 있다.
잠금 그래프 및 잠금 노드
너츠 기술은 구조화된 암호 프로그래밍(SCP)으로 정의될 수 있는 계층화된 통합 모듈식 및/또는 반복 접근 방식으로 데이터의 저장, 보호 및 접근 제어를 처리할 수 있다. 너트의 내부에 관한 전체적인 설계를 설명 및 정의한 후 정의된 각 구조가 이어서 자세히 설명될 수 있다. 일부 특징은 계층화된 방식으로 설명될 수 있고, 그런 후에 개별 특징이 어떻게 함께 작동하는지를 보여 주는 통합 설명이 제공될 수 있다. SDFT는 복잡한 암호화 구조의 구성 및 각각의 폴딩된 데이터 구조와 관련된 속성의 체계적 임베딩을 개선하기 위해 너츠 설계 전반에 걸쳐 활용할 수 있다. SDFT가 어떻게 SCP 설계를 등가의 수동 방법과 비교하여 상대적으로 쉽게 구현할 수 있도록 하는지 여러 구체예에서 확인할 수 있다.
너트의 접근을 제어하는 4개의 다른 방법론이 있을 수 있다: 키홀, 가변 잠금, 계층 접근 제어(SAC) 및/또는 너트 접근제어(NAC). 이러한 방법론의 일부 또는 전체는 부분적으로 또는 전체적으로 너트 내에서 새로운 방식으로 계층화하거나 통합될 수 있으며, 이는 내부화된 및/또는 독립적인 방식으로 참조 모니터링 시스템의 전체 기능을 제공할 수 있다. 이러한 4개의 계층은 모듈화, 배타적 및/또는 연결 가능하도록 설계될 수 있는 잠금 노드라고 하는 복잡한 데이터 구조에 구현될 수 있다.
키홀은 연관된 암호화 키 맵을 가질 수 있는 임의의 개수의 암호 키를 허용할 수 있는 데이터 구조일 수 있다. 구현예는 현재 인식하고 수락할 수 있는 암호화 키 유형으로 제한되지 않는다: 암호, 대칭 키 및 비대칭 키 쌍. 임의의 단순하거나 복잡한 방법 또는 비트 시퀀스를 비밀 키로 지정할 수 있는 임의의 프로세스는 키홀에 통합될 수 있다. 암호화된 키 맵에는 너트 내의 접근 제어의 각 층마다 하나씩 여러 개의 키 세트가 포함될 수 있다: 가변 잠금, SAC 및/또는 NAC.
변수 잠금은 잠금 노드의 데이터를 보호할 수 있는 정규화된 구조에서 다양한 유형의 잠금 메커니즘을 제공할 수 있다. 이러한 변수 잠금은 ORLOCK, MATLOCK, SSLOCK, XORLOCK 및 HASHLOCK을 포함할 수 있다. 본 개시는 사전 정의된 이러한 잠금 유형에 국한되지 않으며, 해당 구조로 정상화될 수 있는 임의의 적절한 잠금 스킴을 수용하기 위해 확장하거나 축소될 수 있다.
계층 접근 제어는 잠금 그래프에 개별 잠금 노드에 대한 침투 접근을 조절할 수 있다. 이러한 특징은 너트 내에서 경사 불투성이라는 특성을 갖게 될 수 있으며, 이 특성은 적절한 접근 특성이 주어진 경우 너트에서 다양한 수준의 메타데이터를 볼 수 있도록 허용하는 능력이 될 수 있다.
너트 접근 제어 또는 NAC는 너트의 내부의 수정 및 인증을 정밀하게 제어하기 위한 역할 기반 암호 접근 제어(RBCAC) 기술을 사용할 수 있다.
구조적 암호 프로그래밍은 다양한 접근 모델을 표현하기 위해 서로 다른 방법론 간에 용이하고 유연한 상호 작용을 허용하는 데이터 구조의 설계일 수 있다. 보안 메커니즘은 암호 데이터 및 관련 암호에 전체적으로 구현될 수 있으므로 참조 모니터와 같은 너트의 접근 제어에 대한 외부 어플리케이션 종속성이 없을 수 있다. 일부 구현예에서, 잠금 노드는 페이로드의 임의 부분에서 필드 수준 데이터를 보호하기 위해 개별적으로 사용될 수 있다. 너트 컨테이너의 내부는 특정 보안 모델을 구현하기 위해 복수의 암호 키를 잠재적으로 사용할 수 있다.
너트는 잠금 노드라고 하는 노드로 구성된 잠금 그래프라고 하는 방향 그래프 데이터 구조일 수 있다. 각각의 잠금 노드는 잠금 ID로 식별될 수 있으며, 이는 너트 ID를 생성하는 동일 기능에 의해 생성될 수 있으므로, 그들 모두는 동일한 특성을 가질 수 있다. 잠금 노드는 잠금 ID에 의해 참조될 수 있는 해시된 배열에 저장될 수 있다. 각 잠금 노드에는 다른 잠금 ID에 연결되는 포인터 또는 널(null) 포인터가 있을 수 있다. 잘 정립된 프로그램 그래프 추출 및 순회 기술을 사용하여, 잠금 노드의 해시된 배열에서 잠금 그래프를 유도할 수 있다. 해당 노드를 가리키는 다른 잠금 노드가 없는 잠금 노드는 키홀 잠금 노드(엔트리 또는 외부 잠금 노드)일 수 있다. 널 포인터를 가질 수 있는 잠금 노드는 잠금 그래프의 단말 잠금 노드일 수 있고 너트의 페이로드 또는 페이로드에 대한 참조를 저장할 수 있다. 잠금 노드에는 다중 잠금 노드가 연결되어 있을 수 있다. 대부분의 경우, 잠금 노드는 잠금 그래프 또는 그 자체에서 이전 잠금 노드로 다시 연결되지 않는다. 원형 링크 참조는 흔하지 않을 수 있지만 이러한 구조가 필요한 경우 사용자 정의 너트에 대한 맞춤형 프로그래밍을 통해 수용될 수 있다.
너트의 기능을 지원하기 위해 여기에 설명된 전부가 아니라면 일부 데이터 구조는 선택한 프로그래밍 언어 내의 복잡한 데이터 구조를 사용하여 실행될 수 있다. SDFT 기능 라이브러리가 선택한 프로그래밍 언어에 대해 사용할 수 있다면, 그것은 임의의 그리고 모든 적용 가능한 복잡한 데이터 구조 또는 하위 부분을 폴딩하고 캡슐화하여 데이터 조작 코드를 최소화하고, 데이터 조작 방법을 명확히 하며 코딩 오류의 가능성을 감소시키고, 모든 폴딩된 데이터 구조에 포함된 묵시적 SDFT 특징을 활용할 수 있도록 용이하게 적용될 수 있다.
본 개시의 데이터 중심 성질로 인해 대부분의 순서도 유형 도해는 데이터 흐름 도해 또는 데이터 순서도라고 하는 데이터 구성 요소와 혼합된 전통적인 순서도 요소의 혼합이 될 수 있음을 유념한다. 또한 잠금 노드 설계층의 결합 성질로 인해 언급을 전방 참조하지 않고 구성 요소의 논리적 작동을 완전히 선형적 방식으로 드러내기가 어려울 수 있으므로 리더의 일부에서 다시 읽기가 필요할 수 있다.
도 58은 너트 또는 잠금 그래프(5800)의 구현예로, 모듈식 잠금 노드의 다중 목적 측면을 채용하는 두 개의 논리적 섹션을 포함한다. 너트 잠금(5802) 및 너트 부품(5804). 잠금 그래프의 너트 잠금(5802) 섹션은 복잡한 암호식으로 연결된 잠금이 하나 이상의 잠금 노드를 사용하여 소정의 너트에 대해 구성되는 것을 허용할 수 있다. 현재 본 개시에서 정의된 5개 유형의 잠금 노드는 다음에 언급된 5개 유형의 가변 잠금에 해당한다: ORLOCK, MATLOCK, SSLOCK, XORLOCK 및 HASHLOCK. 각 잠금 노드 유형은 저장소 영역 및 기타 잠금 노드 메타데이터 및 파라미터에 대한 암호화 키를 보호하기 위해 특정 잠금 노드의 중심에서 활용할 수 있는 가변 잠금 내부 잠금 메커니즘의 유형을 나타낼 수 있다. 도 30에 도시된 잠금 변형은 가변 잠금의 구현예일 수 있으며 잠금 노드의 구축에 사용될 수 있다. 잠금 그래프의 너트 잠금(5802) 부분을 성공적으로 잠금 해제하고 이동하는 것은 잠금 그래프(5800)의 너트 부분(5804) 섹션으로 이끌 수 있다. 너트 부분(5804)을 포함하는 여러 잠금 노드가 있을 수 있다: 헤어(5820), 틱(5822), 실(5824), 비타(5826), 베일(5828), 및/또는 테일(5830). 너트 부분(5804)은 너트 페이로드(5830) 및/또는 메타데이터(5820-5828)를 포함할 수 있다. 잠금 그래프의 너트 부분의 개수 및 유형은 너트가 저장할 수 있는 데이터 유형 및/또는 일부 소망하는 거동 및 특성에 대한 너트의 설계에 따라 달라질 수 있다. 본 예시에서, 키홀 잠금 노드(5806)(5816)를 잠금해제하는 것은 연결된(5818) 잠금 노드(5820)의 1차 키홀에 삽입될 수 있는 적절한 암호 키를 초래할 수 있다. 잠금 노드(5820)를 잠금 해제하는 것은 연결된 잠금 노드(5822)의 1차 키홀에 삽입될 적절한 암호 키를 초래할 수 있다. 잠금 노드(5822)를 잠금 해제하는 것은 연결된 잠금 노드(5824)의 1차 키홀에 삽입될 적절한 암호 키를 초래할 수 있다. 잠금 노드(5824)를 잠금 해제하는 것은 연결된 잠금 노드(5826)의 1차 키홀에 삽입될 적절한 암호 키를 초래할 수 있다. 잠금 노드(5826)를 잠금 해제하는 것은 연결된 잠금 노드(5828)의 1차 키홀에 삽입될 적절한 암호 키를 초래할 수 있다. 잠금 노드(5828)를 잠금 해제하는 것은 연결된 잠금 노드(5830)의 1차 키홀에 삽입될 적절한 암호 키를 초래할 수 있다. 잠금 노드(5830)는 널 포인터에 연결될 수 있으므로 그것은 단말 잠금 노드 또는 이러한 잠금 그래프 또는 너트의 최내부층일 수 있다. 잠금 노드의 잠금 해제는 SDFT 방법(언폴딩)을 사용하여 잠금 노드를 나타내는 폴딩된 데이터 구조의 언라벨을 포함할 수 있다. 각 잠금 노드는 잠금 노드를 잠금 해제하는 작동이 적용 가능한 데이터 구조의 언폴딩과 등가일 수 있는 복수의 폴딩 데이터 구조를 포함한다.
도 59는 논리적 섹션 너트 잠금(5902)과 너트 부분(5904)을 포함하는 잠금 그래프 구현예의 단순화된 너트 개략도(5900)를 도시한다. 본 예시는 4개의 잠금 노드(5908, 5910, 5912 및 5916)로 구성된 너트 잠금(5902)을 살펴본다. 잠금 노드(5908-5912)는 본 너트의 키홀 잠금 노드(5906)일 수 있고, 이는 그 중 일부 또는 전체가 외부의 마주하는 노드일 수 있으며 1차 키라고 하는 외부 암호 키를 허용할 수 있기 때문이다. 사용자는 이러한 키홀 잠금 노드 중 하나 이상에 연관된 1차 키를 가질 수 있다. 페이로드로서 1차 키를 저장하는 너트의 너트 ID는 키 홀 잠금 노드(5906) 중에서 그것이 속하는 해당 키홀을 표시하는 식별자와 자동으로 일치되는 키 ID로 작동할 수 있다. 패스프레이즈 키는 키 ID 또는 식별자로서 질문을 홀딩할 수도 있고 그렇지 않을 수도 있는 텍스트 스트링에 의해 식별될 수 있다. 적절한 키홀 식별자와 명확한 텍스트 너트 메타데이터 부분을 적절한 질문 목록과 함께 사용하여 복잡한 다중 레벨 패스프레이즈를 구성할 수 있다. (5914) 및 (5918)과 같은 잠금 노드 간의 연결은 성공적으로 잠금 해제된 잠금 노드가 식별자를 갖는 출력 키(들)를 생성할 수 있는 것과 유사한 방식으로 열릴 수 있다. 본 특정 예시에서, 키홀 잠금 노드 중 어느 하나를 잠금해제하는 것은 연결된(5914) 잠금 노드(5916)의 키홀에 삽입될 수 있는 적절한 암호 키를 드러낼 수 있다. 이 시점부터, 너트 부분(5904)을 포함하는 노드의 잠금 해제는 너트 부분(5804)에 대해 설명된 프로세스와 유사하게 진행될 수 있다. 본 너트 잠금(5902) 구성은 너트(5900)의 페이로드를 잠금 해제하기 위한 3개의 별개의 경로가 존재할 수 있음을 보여줌으로써 잠금 노드의 빌딩 블록 성질과 그 조합의 유연성을 전달할 수 있고, 각각의 경로는 잠금 해제 프로세스를 진행하기 위해 충족될 다른 조건을 요구한다.
도 60에서, 잠금 노드(6000)는 다음 섹션을 포함하는 데이터 구조일 수 있다: 파라미터(6002), 입력(6006), 키 맵(6008), 가변 잠금(6012), 유도 키(6016), 키 세트(6020), 백(6024) 및/또는 출력(6026). 파라미터 섹션(6002)은 잠금 노드의 메타데이터, 잠금 ID(6030), 키 맵의 암호화된 스트링(6010), 유도 키(6014), 키 세트(6018), 백(6022) 및 잠금 노드에 대한 적절한 접근 역할 키(전방 참조는 도 83 요소(8334)에 대한 논의에 기재될 수 있음)로 생성된 암호화된 스트링의 디그를 홀딩할 수 있다. 설계 원리는 잠금 그래프의 흐름과 유사할 수 있고, 다음 섹션을 여는 데 도움이 되는 키로 유도할 수 있는 각 섹션의 잠금 해제, 그러나 그런 후에 잠금 노드 내의 각 구성 요소가 특정 기능을 제공할 수 있다. 암호화된 스트링상의 디그는 리더(접근 역할)가 복호화 시도 전에 특정 섹션을 인증하는 데 사용할 수 있다. 디그는 적절한 작성자 접근 키 홀더가 디그를 생성했음을 보존하거나 나타내기 위해 일부 수정 사항이 있을 때 섹션의 암호화된 스트링을 사용하여 특정 섹션의 작성자(접근 역할)에 의해 생성될 수 있다. 또한 위에서 언급한 암호화 스트링의 각각은 암호 변환을 포함한 TAR을 사용하여 데이터 구조를 폴딩하도록 SDFT 방법을 사용하여 구현될 수 있다. 본 섹션에서 설명하는 암호화된 스트링의 개수와 다양성을 고려할 때, SDFT 방법은 코딩할 때 프로그래머가 암호로 관련된 속성을 관리하는 부담을 크게 줄일 수 있다.
키홀
도 61에서, 잠금 노드의 입력 섹션(6006)은 두 개의 다른 키홀을 제공할 수 있다: 1차 키홀(6102) 및 접근 키홀(6104). 구조적으로, 1차 키홀(6102)은 4개 다른 키 유형을 포함하는 임의의 수의 암호 키를 허용할 수 있다: 대칭, 비대칭 공개, 비대칭 비공개 및 패스프레이즈. 접근 키홀(6104)은 대칭 키 및/또는 패스프레이즈 키 유형을 허용할 수 있다. 1차 키홀 및 접근 키홀은 도 34에 도시된 대로 하나 이상의 KISS 데이터 구조를 내부적으로 활용할 수 있고, 각각은 키 홀 모드(IMA='keyhole')로 작동하여 키 홀이 허용하는 각 고유 키에 대한 키홀을 나타냅니다.
도 62는 연관된 키 ID, 키 유형 및 키 속성(6206)을 가질 수 있고 1차 키로 지정될 수도 있는 단일 암호 키(6202)를 도시한다. 키 ID는 임의의 식별 스트링일 수 있다. 이 개시에서 언급된 1차 키 및 다른 키는 각각 키 모드(IMA='key')로 작동하는 34에 도시된 바와 같이 KISS 데이터 구조로 내부적으로 표현될 수 있고, 키 및 다른 매칭 속성 필드로 채워진 키→값 필드가 필요에 따라 채워진다. 1차 키홀(6204)은 암호화된 키 맵(6208)을 복호화할 수 있는 1차 키(6202)를 받아들일 수 있다. 복호화된 키 맵(6240)은 다음 세 개의 섹션을 포함하는 구조일 수 있다: 메인 키(6210), 계층 키(6212) 및 접근 키 세트(AKS)(6214). 메인 키 구조(6210)는 메인 키로 불릴 수 있는 대칭 키 또는 타인(tine), 1차 키(6202)에 관한 만료 날짜/시간, 1차 키에 관한 카운트다운 타이머 및/또는 1차 키의 만료 시 작동 명령어를 포함할 수 있다. 대칭 키 또는 타인은 잠금 노드의 가변 잠금에 의해 사용될 수 있다. 키홀 잠금 노드에 있어서, 키 맵 구조는 계층 키(6212) 및/또는 AKS(6214)를 추가로 홀딩할 수 있다. 계층 키(6212)는 잠금 그래프의 계층 잠금 노드에 삽입될 키의 세트를 홀딩할 수 있고, 이들 잠금 노드는 계층 지정으로 식별될 수 있다. AKS(6214)는 키홀 잠금 노드용 자체 접근 키홀(6104)에 삽입될 키의 세트를 홀딩할 수 있다. 암호화된 키 맵(6208)은 메인 키(6210), 계층 키(6212) 및 접근 키 세트(AKS)(6214) 구조를 포함할 수 있는 SDFT 폴딩된 데이터 구조일 수 있다.
도 63은 임의의 잠금 노드 및 임의의 암호 키에 관한 키 삽입 프로세스의 순서도를 도시한다. 단계(6304)는 소정 암호 키 및 연관된 키 ID에 대해 너트에서 일부 또는 모든 나열된 잠금 노드에 걸친 조사일 수 있다. 암호 키가 적절한 키홀에 삽입되면(6304), 단계(6306)는 해당 키에 대한 암호화된 키 맵을 복호화하고 풀려고 시도할 수 있다. 암호화된 키 맵의 복호화 및 풀림은 그러한 구현예에 관한 SDFT 폴딩된 암호화된 키 맵의 언라벨과 등가일 수 있다.
키홀 잠금 노드에 대한 암호화된 키 맵(6208)의 성공적인 잠금 해제 및 풀림 시에, 1) 각 잠금 노드의 파라미터 섹션에서 발견된 계층 지정과 일치하는 각 잠금 노드의 1차 키홀에 계층 키가 삽입될 수 있고, 2) 접근 키 세트(AKS)의 접근 속성 키 세트 잠금해제 키(AAKSUK)는 잠금 노드의 접근 키홀에 삽입될 수 있다. 이러한 1차 키 잠금 해제(또는 언라벨링)는 잠금 노드에 다수의 1차 키가 삽입됨에 따라 발생할 수 있으며, 그 후에 우리는 잠금 노드의 가변 잠금에 의한 가능한 사용을 위해 메인 키의 세트를 집합적으로 구성하는 암호화된(또는 언폴딩된) 키 맵의 세트를 가질 수 있다.
도 64는 3개의 1차 키(6402-6406)가 1차 키홀(6400)에 삽입될 수 있는 실시예를 도시한다. 각 키(→)는 식별 키 ID와 일치할 수 있으며 해시된 어레이 또는 KISS 키홀 구조의 슬롯에 삽입될 수 있다. 키 형식은 대칭, 비대칭 공개, 비대칭 비공개 및 패스프레이즈와 같은 그러나 그로 한정되지 않는 키 형식을 나타낼 수 있다. 너트의 일부 구현예에서, 사용자는 너츠 통합을 위해 적절히 모듈화된 상응하는 암호 방법론을 가질 수 있는 모든 유형의 키를 특정할 수 있다. 이러한 키 암호 방법론은 지문 스캔, 홍채 스캔, 손바닥 인쇄, 음성 인쇄, 필체 패턴, 안면 인식, DNA 특성, 물리적 키 장치, 하드웨어 보안 키, 소프트웨어/하드웨어 기반 영지식 프로토콜 키 및/또는 NFC 키를 포함할 수 있다. RSA-2048에서 사용될 수 있는 것처럼 비대칭 비공개 키가 삽입되면, 공개 및 비공개 부분을 모두 나타낼 수 있고, 공개 부분은 비공개 부분에서 추출될 수 있으며 1차 키의 암호화된 키 맵을 암호화하는 데 사용될 수 있고, 따라서 복호화 연산은 개인 비대칭 키가 제시되는 것을 요구할 수 있다. 하나의 키홀(6402)에 삽입된 하나의 키(→)에 대해 간단히 도시된 바와 같이, 키 유형 암호 방법을 사용하여 암호화된 키 맵(6412)을 복호화하여, 3개의 별개의 키의 세트(6432, 6434 및 6436)를 포함할 수 있는 키 맵 구조(6430)을 드러낼 수 있다. 각각의 키(6404 및 6406)에 대해 이러한 복호화 단계를 수행하여 각각의 상응하는 키 맵 세트(6440 및 6450)를 생성할 수 있다. 각 복호화 단계는 그러한 구현예에 관한 SDFT 폴딩된 구조를 언라벨링하는 것과 등가일 수 있다. 패스프레이즈 키 유형에 있어서, 키는 패스프레이즈일 수 있으며 키 속성은 사용할 패스프레이즈 유도 함수 및 암호화된 키 맵을 복호화할 수 있는 대칭 키를 생성하기 위해 수행할 반복 횟수를 포함하는 함수에 대한 적절한 파라미터를 나타낼 수 있다. SDFT를 활용하는 구현예에 있어서, 그러한 패스프레이즈 속성은 일치하는 속성을 가진 적절한 유도 변환에 접근하기 위해 상응하는 TAR과 일치할 수도 있다. 예제를 잠금 노드 도해(6000)를 갖는 관점에 두기 위해, 입력 섹션(6006)은 1차 키홀(6400)을 포함할 수 있고, 암호화된 키 맵(6010)은 (6410)으로 표현될 수 있고, 키 맵(6008) 섹션은 (6420)으로 표현될 수 있다.
가변 잠금
잠금 노드의 다음 부분은 도 60의 요소(6012)에 도시된 바와 같이 가변 잠금일 수 있다. 가변 잠금은 백(6024)에 저장된 잠금 노드의 내용물을 보호하는 데 도움이 되는 잠금 메커니즘일 수 있다. 가변 잠금은 잠금 노드가 해당 기술분야의 당업자에게 익숙한 여러 다른 유형의 암호 잠금 기술 중 하나를 활용하는 것을 허용할 수 있다. 예를 들어, 이러한 다른 잠금 유형은 ORLOCK, MATLOCK, XORLOCK, HASHLOCK 및/또는 SSLOCK을 포함할 수 있다. 이는 각 잠금 방법의 입력 및/또는 출력을 공통 데이터 흐름 모델에 맞게 정상화하여 수행될 수 있고, 그로써 각 잠금 방법은 서로 원활하게 교체될 수 있다. 유사하게, 1차 키 홀과 키 맵 구조는 변수 잠금으로 흐르는 키 및 키 유형의 개수에 대한 데이터 노멀라이저로서 역할을 할 수 있다. 잠금 노드에는 그것이 어떠한 유형의 가변 잠금을 실행할 수 있는지(6030)를 나타내는 파라미터(6002)의 세트가 각인될 수 있다. 이 값이 설정되면, RAT(너트의 소유자)에 의해 잠금 노드를 재입력 및/또는 재설정하는 것이 가능하더라도, 잠금 노드가 이 설정을 거의 변경하지 않을 수 있다. SDFT 라이브러리는 도 30 및 편의를 위해 본 섹션에서 사용될 수 있는 그 첨부된 명세에 열거된 바와 같이 가변 잠금의 구현예를 기재하지만, 잠금 변환의 사용은 잠금 노드의 본 기능을 수행하기 위해 필수적 요구사항은 아니다.
도 64에 잠금 노드의 순회에 이어서, 여기서 우리는 3개의 메인 키(6432, 6442 및 6452)로 끝냈다. 우리는 도 65에서 가변 잠금이 어떻게 작동하는지를 살펴볼 수 있다. 가변 잠금(6502)은 암호화된 유도 키(eDK)(6504)로서 그것을 암호화하여 유도 키(DK)(6506)를 보호할 수 있다. 일부 또는 모든 메인 키(6432, 6442 및 6452)는 대칭 또는 타인 키 유형일 수 있으며 가변 잠금(6502)에 공급될 수 있다. 잠금 노드 파라미터 섹션(6002 및 6030)에서 특정될 수 있는 가변 잠금 유형에 따라, DK 또는 eDK 상에 암호화/복호화 연산을 수행하기 위해 적절한 가변 잠금 함수가 호출될 수 있다. 도 65는 메인 키(6432, 6442 및 6452)를 사용할 수 있는 가변 잠금(6502)에 의해 DK(6506)에 eDK (6504)의 복호화 연산을 도시한다. 도 66은 메인 키(6432, 6442 및 6452)를 사용하여 가변 잠금(6502)에 의해 eDK (6504)에 DK(6506)의 암호화 연산을 도시한다. SDFT를 사용하는 구현예에서, DK는 데이터 폴딩에 의해 잠금 변환을 사용하는 TAR에 의해 보호되는 데이터일 수 있다; 따라서 이러한 구조를 언폴딩하는 것은 안에 포함된 유도 키를 드러낸다.
도 67에 표는 언급된 가변 잠금의 키 특성의 일부를 요약한다. 용어 변수 잠금이 함축하는 바와 같이, 이러한 모델로 정상화될 수 있는 임의의 잠금 기술은 추가 가변 잠금 유형으로 추가될 수 있다. 대안적으로, 임의의 잠금 기법이 제외될 수도 있다. 도 30에 표는 도 67에 표에 상응할 수 있고, SDFT가 잠금 변환에 가변 잠금 설계를 어떻게 구현하는지를 도시한다.
잠금 노드의 메타데이터 섹션(6030)은 일부 또는 모든 변수 잠금에 수반될 수 있는 공통 구성 요소일 수 있다. (6040-6048)(전방 참조)과 같은 적절한 접근 역할 키(ARK)에 의해 생성될 수 있는 잠금 노드 섹션의 다양한 디그(디지털 서명)가 있을 수 있다. 이러한 모든 디그 중 일부는 루트 접근 계층(RAT) 접근 역할 키, 특히 AKS를 통한 RAT 비공개 키를 보유한 누군가일 수 있는 너트 소유자에 의해 생성할 수 있다. 유효한 1차 키를 가진 모든 사람은 잠금 노드에 걸쳐 다양한 RAT를 인증하여 너트 구성요소가 손상되지 않았는지 확인할 수 있는 RAT 공개 키를 가질 수 있다. 도해에서, 때때로 RAT 공개 키는 RAT 리더 키로 언급될 수 있고 비공개 키는 RAT 작성자 키로 언급될 수 있다. 본 문서의 후반부에서, 너트 접근 제어층에 대한 추가 논의는 이러한 특징을 보다 심도 있게 탐색하고, 구체화하고 및/또는 명료화할 수 있다. SDFT 및 TAR에 대한 섹션에서 앞서 언급했듯이, 암호화된 데이터의 디그는 보호 데이터, 그 디그 및 그것을 생성한 TAR을 임베딩할 수 있는 폴딩된 데이터 구조의 TAR 명세의 일부일 수 있다. 이는 잠금 노드 내에서 SDFT의 체계적 사용이 프로그래머의 워크로드에 유리할 수 있음을 분명히 암시한다.
OR 잠금으로도 알려진, 도 68에 ORLOCK는 메인 키(6808)라는 임의의 개수의 대칭 암호화 키를 수용할 수 있는 가변 잠금이며 AES-256 또는 대안적인 암호와 같은 대칭 암호화 암호를 사용하여 eDK(6806)를 복호화(6814)하도록 체계적으로 시도할 수 있다. 파라미터 섹션(6002)은 SDFT 방법을 사용할 때 이러한 논리 연산에 사용할 암호화 방법 또는 선호하는 TAR을 나타낼 수 있다. eDK의 제 1 성공적인 복호화는 유도 키(DK)(6816)를 생성할 수 있으며, ORLOCK의 성공적인 잠금해제를 초래할 수 있다. 임의의 변수 잠금에서 복호화 시도 전에, eDK(6804)의 디그는 eDK(6806) 및 RAT 리더 키(6802)를 사용하여 인증될 수 있다. 인증이 성공하면(6810), 그때 복호화 프로세스가 계속될 수 있고, 그렇지 않으면 오류(6830)가 발생되고 시도가 중단될 수 있다. 메인 키(6808)는 대칭 256 비트 키와 같은 그러나 그로 한정되지 않는 동일한 키일 수 있다. 이러한 배열에서, OR 잠금의 핵심은 키홀 및 가변 잠금 구조로 분리되고 정상화하여 모듈식으로 만들 수 있다. 폴딩된 구조에서, 인증 단계는 TAR의 일부일 수 있으며 언라벨링의 작용에 의해 묵시적으로 시도될 수 있다.
도 69는 RAT 작성자 또는 너트 소유자의 관점에서 ORLOCK의 암호화 연산을 보여준다. 그것은 임의의 메인 키(6902)를 취할 수 있고, eDK(6908)를 생성하기 위해 적절한 암호를 사용하여 DK(6906) 상에 암호화 연산(6920)을 수행할 수 있다. 그런 다음 RAT 작성자 키(6904), eDK(6908) 및 적절한 디그닝(digning) 알고리즘(6922)을 사용하여, 그것은 잠금 노드 파라미터 섹션(6044)에 저장될 수 있는 eDK(6910)의 디그를 생성할 수 있다. SDFT 방법은 eDK와 함께 컴팩트한 방식으로 이러한 속성 중 다수를 파라미터 섹션에 저장될 단일 데이터 객체에 폴딩할 수 있다. 잠금 노드의 비-RAT 멤버에 대한 암호화 프로세스는 간단할 수 있다; 그들은 어떤 것에 대해서도 인증된 디그를 생성할 수 없기 때문에 잠금 노드의 어플리케이션 메모리 내용을 지울 수 있고, 이는 그들이 해당 내용을 성공적으로 변경할 수 없고 그것을 디그닝할 수 없음을 함축하고, 또는 그들은 이미 복호화된 DK(6908)를 사용하고 잠금 노드의 관련 내용을 암호화할 수 있지만 eDK 디그와 관련될 수 있는 어떠한 것도 변하지 않았으므로 eDK(6910)를 그대로 둘 수 있다. 이는 RAT 작성자만이 DK(6906)의 값을 대체하거나 그것을 다시 입력할 수 있다는 것을 나타낼 수 있다. SDFT 방법을 사용할 때, 잠금 노드의 비-RAT 멤버는 파라미터 섹션에서 eDK를 포함하는 원본 폴딩된 데이터를 남겨두고 DK를 홀딩하는 언폴딩된 구조를 지우는 것을 선택할 수 있다.
마트로시카 잠금, 캐스케이드 잠금, 앤드(AND) 잠금으로도 알려진, 도 70에 MATLOCK은 메인 키(7006)로 불리는 고정된 개수의 대칭 암호화 키를 수용할 수 있는 가변 잠금이고, AES-256 또는 대안적인 암호와 같은 적절한 암호화 암호(7014)를 사용하여 오름차순으로 각각의 메인 키(7008)를 사용하여 eDK(7022)를 성공적으로 복호화(7022)할 수 있다. 파라미터 섹션은 이러한 논리 연산에 사용할 정확한 암호 및 요구될 수 있는 메인 키의 개수, 또는 SDFT 방법을 사용할 때 선호하는 TAR을 나타낼 수 있다. eDK(7022)의 성공적인 순차적 반복 복호화는 DK(7024)를 생성할 수 있으며, MATLOCK의 성공적인 잠금해제를 초래할 수 있다. 임의의 변수 잠금에서 복호화 시도 전에, eDK(7004)의 디그는 eDK(7022) 및 RAT 리더 키(7002)를 사용하여 인증될 수 있다. 인증이 성공하면(7010), 그때 복화화 프로세스가 계속될 수 있고, 그렇지 않으면 오류(7030)가 발생되고 시도가 중단될 수 있다. 이러한 배열에서, 마트로시카 잠금의 핵심은 키홀 및 가변 잠금 구조로 분리되고 정상화하여 모듈식으로 만들 수 있다. 폴딩된 구조에서, 인증 단계는 TAR의 일부일 수 있으며 언라벨링의 작용에 의해 묵시적으로 시도될 수 있다.
도 71은 RAT 작성자 또는 너트 소유자의 관점에서 MATLOCK의 암호화 연산을 보여준다. 그것은 제시된 메인 키(7102)의 일부 또는 모두를 취할 수 있고, 그들을 내림차순으로 정렬할 수 있다(7110). 그런 후에, 그것은 eDK(7122)를 생성하기 위해 적절한 암호를 사용하여 DK(7120) 상에 암호화 연산(7112)을 반복적으로 수행할 수 있다. 그런 다음 RAT 작성자 키(7124), eDK(7122) 및 적절한 디그닝 알고리즘(7118)을 사용하여, 그것은 잠금 노드 파라미터 섹션(6044)에 저장될 수 있는 eDK(7126)의 디그를 생성할 수 있다. SDFT 방법은 eDK와 함께 컴팩트한 방식으로 이러한 속성 중 다수를 파라미터 섹션에 저장될 단일 데이터 객체에 폴딩할 수 있다. 잠금 노드의 비-RAT 멤버에 대한 암호화 프로세스는 간단할 수 있다; 그들은 어떤 것에 대해서도 인증된 디그를 생성할 수 없기 때문에 잠금 노드의 어플리케이션 메모리 내용을 지울 수 있고, 이는 그들이 해당 내용을 성공적으로 변경할 수 없고 그것을 디그닝할 수 없음을 함축하고, 또는 그들은 이미 복호화된 DK(7120)를 사용하고 잠금 노드의 관련 내용을 암호화할 수 있지만 eDK 디그와 관련될 수 있는 어떠한 것도 변하지 않았으므로 eDK(7126)를 그대로 둘 수 있다. 이는 RAT 작성자만이 DK(7120)의 값을 대체하거나 그것을 다시 입력할 수 있다는 것을 나타낼 수 있다. SDFT 방법을 사용할 때, 잠금 노드의 비-RAT 멤버는 파라미터 섹션에서 eDK를 포함하는 원본 폴딩된 데이터를 남겨두고 DK를 홀딩하는 언폴딩된 구조를 지우는 것을 선택할 수 있다.
XOR 잠금으로도 알려진, 도 72에 XORLOCK은 메인 키(7206)로 불리는 고정된 개수(>1)의 대칭 암호 키를 수용할 수 있는 가변 잠금이고, 오름차순으로 각각의 메인 키(7208) 상에 XOR 작동(7224)을 성공적으로 적용함으로써 계산된 키를 생성할 수 있다. 그런 다음, 그것은 AES-256 또는 대안적인 암호와 같은 적절한 암호를 갖는 (7224)에서 계산된 키를 사용하여 eDK(7210)를 복호화(7228)하는 것을 시도할 수 있다. 파라미터 섹션(6030)은 이러한 논리 작업에 사용할 정확한 암호 및 2개보다 많은 키일 수 있는 필요로 할 수 있는 메인 키의 개수, 또는 SDFT 방법을 사용할 때 선호하는 TAR을 나타낼 수 있다. eDK(7210)의 성공적인 복호화는 DK(7212)를 생성할 수 있으며, XORLOCK의 성공적인 잠금해제를 초래할 수 있다. 임의의 변수 잠금에서 복호화 시도 전에, eDK(7204)의 디그는 eDK(7210) 및 RAT 리더 키(7202)를 사용하여 인증될 수 있다. 인증에 성공하면(7220), 그때 암호 해독 프로세스가 계속될 수 있고, 그렇지 않으면 오류(7230)가 발생되고 시도가 중단될 수 있다. 이러한 배열에서, XOR 잠금의 핵심은 키홀 및 가변 잠금 구조로 분리되고 정상화하여 모듈식으로 만들 수 있다. 폴딩된 구조에서, 인증 단계는 TAR의 일부일 수 있으며 언라벨링의 작용에 의해 묵시적으로 시도될 수 있다.
도 73은 RAT 작성자 또는 너트 소유자의 관점에서 XORLOCK의 암호화 연산을 보여준다. 그것은 표시되는 메인 키(7302)의 일부 또는 전부를 취할 수 있고 그들을 오름차순으로 정렬할 수 있다(7320). 그런 다음, 그것은 메인 키(7304) 상에 XOR 작동(7322)을 반복적으로 수행하여, DK(7306)를 암호화(7326)하도록 사용될 수 있는 계산된 키를 생성하여, eDK(7308)를 생성할 수 있다. RAT 작성자 키(7310), eDK(7308) 및 적절한 디그닝 알고리즘(7328)은 잠금 노드 파라미터 섹션(6044)에 저장될 수 있는 eDK(7312)의 디그를 생성하도록 사용될 수 있다. SDFT 방법은 eDK와 함께 컴팩트한 방식으로 이러한 속성 중 다수를 파라미터 섹션에 저장될 단일 데이터 객체에 폴딩할 수 있다. 잠금 노드의 비-RAT 멤버에 대한 암호화 프로세스는 간단할 수 있다; 그들은 어떤 것에 대해서도 인증된 디그를 생성할 수 없기 때문에 잠금 노드의 어플리케이션 메모리 내용을 지울 수 있고, 이는 그들이 해당 내용을 성공적으로 변경할 수 없음을 함축하고, 또는 그들은 이미 복호화된 DK(7306)를 사용하고 잠금 노드의 관련 내용을 암호화할 수 있지만 eDK 디그와 관련될 수 있는 어떠한 것도 변하지 않았으므로 eDK(7312)를 그대로 둘 수 있다. 이는 RAT 작성자만이 DK(7306)를 재입력할 수 있음을 보여줄 수 있다. SDFT 방법을 사용할 때, 잠금 노드의 비-RAT 멤버는 파라미터 섹션에서 eDK를 포함하는 원본 폴딩된 데이터를 남겨두고 DK를 홀딩하는 언폴딩된 구조를 지우는 것을 선택할 수 있다.
도 74에 HASHLOCK 74(해시 잠금이라고도 함)는 메인 키(7406)라는 고정된 개수의 대칭 암호 키를 허용할 수 있는 가변 잠금으로, 특정 순서로(7422) 표시된 메인 키의 일부 또는 전부를 연결하여(7424) 계산된 키를 생성 수 있고, 그런 후에 스트링 상에 해싱 알고리즘(7426)을 적용할 수 있다. 그런 다음, 그것은 AES-256 또는 대안적인 암호와 같은 적절한 암호화 암호를 갖는 계산된 키를 사용하여 eDK(7410)를 복호화(7428)하는 것을 시도할 수 있다. 파라미터 섹션(6030)은 이러한 논리 연산에 사용할 정확한 암호 및 해시, 필요로 할 수 있는 메인 키의 개수, 및/또는 메인 키의 정렬 순서, 또는 SDFT 방법을 사용할 때 선호하는 TAR을 나타낼 수 있다. eDK(7410)의 성공적인 복호화는 DK(7412)를 생성할 수 있으며, HASHLOCK의 성공적인 잠금해제를 초래할 수 있다. 임의의 변수 잠금에서 복호화 시도 전에, eDK(7404)의 디그는 eDK(7410) 및 RAT 리더 키(7402)를 사용하여 인증될 수 있다. 인증에 성공하면(7420), 그때 암호 해독 프로세스가 계속될 수 있고, 그렇지 않으면 오류(7430)가 발생되고 시도가 중단될 수 있다. 이러한 배열에서, 해싱 잠금의 핵심은 키홀 및 가변 잠금 구조로 분리되고 정상화하여 모듈식으로 만들 수 있다. 폴딩된 구조에서, 인증 단계는 TAR의 일부일 수 있으며 언라벨링의 작용에 의해 묵시적으로 시도될 수 있다.
도 75은 RAT 작성자 또는 너트 소유자의 관점에서 HASHLOCK의 암호화 연산을 보여준다. 그것은 표시된 메인 키(7502)를 사용하여 그들을 오름차순으로(7520) 정렬한 다음, 그들을 연결하고(7522) 그런 후에 그것 상에 해시 연산(7524)을 수행하여 계산된 키를 생성할 수 있다. 이러한 계산된 키를 사용하여 DK(7506)를 암호화(7526)하도록 사용될 수 있으며 eDK(7510)를 생성할 수 있다. RAT 작성자 키(7508), eDK(7510) 및 적절한 디그닝 알고리즘(7528)은 잠금 노드 파라미터 섹션(6044)에 저장될 수 있는 eDK(7512)의 디그를 생성하도록 사용될 수 있다. SDFT 방법은 eDK와 함께 컴팩트한 방식으로 이러한 속성 중 다수를 파라미터 섹션에 저장될 단일 데이터 객체에 폴딩할 수 있다. 잠금 노드의 비-RAT 멤버에 대한 암호화 프로세스는 간단할 수 있다; 그들은 어떤 것에 대해서도 인증된 디그를 생성할 수 없기 때문에 잠금 노드의 어플리케이션 메모리 내용을 지울 수 있고, 이는 그들이 해당 내용을 성공적으로 변경할 수 없음을 함축하고, 또는 그들은 이미 복호화된 DK(7506)를 사용하고 잠금 노드의 관련 내용을 암호화할 수 있지만 eDK 디그와 관련될 수 있는 어떠한 것도 변하지 않았으므로 eDK(7512)를 그대로 둘 수 있다. 이는 RAT 작성자만이 DK(7506)를 재입력할 수 있음을 보여줄 수 있다. SDFT 방법을 사용할 때, 잠금 노드의 비-RAT 멤버는 파라미터 섹션에서 eDK를 포함하는 원본 폴딩된 데이터를 남겨두고 DK를 홀딩하는 언폴딩된 구조를 지우는 것을 선택할 수 있다.
비밀 공유 잠금 또는 샤미르의 비밀 공유 스킴이라고도 알려진 도 76의 SSLOCK은 각각이 서로 다른 타인 또는 비밀 공유 쉐어일 수 있는 n개의 메인 키(7606) 중 k개를 수용할 수 있는 가변 잠금이고, 여기서 1>p+1≤k≤n 이고, p+1이 임계값이라고 하는 키의 최소 개수가 될 수 있다. 비밀 키를 복구하기 위해, 복호화된 키 맵(7606)의 일부 또는 모든 타인이 샤미르의 비밀 공유 스킴 또는 대안적인 암호같은 적절한 비밀 공유 암호(7622)에 제공될 수 있다. 일부 또는 모든 타인이 유효하고 그 개수가 충분하면, 복구는 성공적일 수 있다. 그런 다음, 그것은 AES-256 또는 대안적인 암호와 같은 적절한 암호화 암호를 갖는 복구된 비밀 키를 사용하여 eDK(7608)를 복호화(7624)하는 것을 시도할 수 있다. 파라미터 섹션(6030)은 비밀 공유 암호에 대한 쉐어의 개수(n) 및 임계 개수(p+1), 및/또는 SDFT 방법을 사용할 때, 선호하는 TAR뿐만 아니라, 비밀 공유 및 암호화 연산에 사용할 정확한 암호를 나타낼 수 있다. eDK(7608)의 성공적인 복호화는 DK(7610)를 생성할 수 있으며, SSLOCK의 성공적인 잠금해제를 초래할 수 있다. 임의의 변수 잠금에서 복호화 시도 전에, eDK(7604)의 디그는 eDK(7608) 및 RAT 리더 키(7602)를 사용하여 인증될 수 있다. 인증이 성공하면(7620), 그때 복화화 프로세스가 계속될 수 있고, 그렇지 않으면 오류(7630)가 발생되고 시도가 중단될 수 있다. 이러한 배열에서, 비밀 공유 잠금의 핵심은 키홀 및 가변 잠금 구조로 분리되고 정상화하여 모듈식으로 만들 수 있다. 폴딩된 구조에서, 인증 단계는 TAR의 일부일 수 있으며 언라벨링의 작용에 의해 묵시적으로 시도될 수 있다.
도 77은 잠금 노드를 처음으로 암호화할 수 있거나 가변 잠금을 다시 입력하는 프로세스에 있을 수 있는, RAT 작성자 또는 너트 소유자의 관점에서 SSLOCK의 암호화 연산을 보여준다. 새 비밀 암호 키(K)가 생성된(7720) 다음, 파라미터(6030)에 특정될 수 있는 적절한 비밀 공유 방법론을 사용하여 K로부터 소망하는 개수의 쉐어(타인)가 생성될 수 있다. 그런 다음 이러한 타인은 메인 키(7702)로 저장될 수 있다. 단계(7724)에서, 키(K)는 eDK(7706)를 생성하는 DK(7704)를 암호화할 수 있다. RAT 작성자 키(7708), eDK(7706) 및 적절한 디그닝 알고리즘(7726)은 잠금 노드 파라미터 섹션(6044)에 저장될 수 있는 eDK(7710)의 디그를 생성하도록 사용될 수 있다. SDFT 방법은 eDK와 함께 컴팩트한 방식으로 이러한 속성 중 다수를 파라미터 섹션에 저장될 단일 데이터 객체에 폴딩할 수 있다. 잠금 노드의 비-RAT 멤버에 대한 암호화 프로세스는 간단할 수 있다; 그들은 어떤 것에 대해서도 인증된 디그를 생성할 수 없기 때문에 잠금 노드의 어플리케이션 메모리 내용을 지울 수 있고, 이는 그들이 해당 내용을 성공적으로 변경할 수 없고 그것을 디그닝할 수 없음을 함축하고, 또는 그들은 이미 복호화된 DK(7704)를 사용하고 잠금 노드의 관련 내용을 암호화할 수 있지만 eDK 디그와 관련될 수 있는 어떠한 것도 변하지 않았으므로 eDK(7706)를 그대로 둘 수 있다. 이는 RAT 작성자만이 DK(7704)를 재입력할 수 있음을 보여줄 수 있다. SDFT 방법을 사용할 때, 잠금 노드의 비-RAT 멤버는 파라미터 섹션에서 eDK를 포함하는 원본 폴딩된 데이터를 남겨두고 DK를 홀딩하는 언폴딩된 구조를 지우는 것을 선택할 수 있다.
변수 잠금에 대한 설명과 다양한 논리 연산의 도시는 다른 잠금 기술을 정규화하고 모듈화할 수 있는 강건한 데이터 구조를 생성하기 위해, 잠금 노드가 입력 섹션(6006), 암호화된 키 맵(6010), 키 맵(6008), 가변 잠금(6012), 암호화된 유도 키(6014) 및/또는 유도 키(6016)에서 어떻게 1차 키홀(6102)을 채용할 수 있는지를 보여 줄 수 있고, 그래서 하나를 다른 것으로 대체하는 것은 일부 파라미터(6030) 변경 및/또는 재입력을 요구할 수 있다. 다른 잠금 방법의 정규화는 너트에 대한 사용자 1차 키가 그대로 남아 있을 수 있고, 사용자 모르게 다른 너트에 다수의 다른 잠금 기법에서 단일 사용자 1차 키가 사용될 수 있고 어떤 잠금 기술이 특정 너트 페이로드의 보호에 적절하다고 간주될 수 있는지 확인할 수 있다. SDFT 방법이 이러한 복잡한 데이터 구조의 일부를 구현하는데 유리하다는 것을 입증할 수 있는 섹션이 강조되었다. 여기 몇 가지 예가 있다. ORLOCK은 다중 사용자가 잠금 노드의 백에 접근할 수 있도록 허용할 수 있다: 이는 그룹 접근 형태이거나 키 중 하나가 마스터 키를 나타낼 수 있다. MATLOCK, XORLOCK 또는 HASHLOCK은 백을 언라벨하기 위해 특정 개수의 키가 있을 수 있다고 확인할 수 있다: 민감한 기업 비밀은 내용을 보기 위해 두 명의 특정 고위 경영진이 각각의 비밀 키를 제공하는 것을 요구할 수 있다. SSLOCK은 해당 백에 접근하기 위해 최소 개수의 비밀 키를 요구할 수 있다: 기업 결제 시스템은 최소의 권한이 있는 직원에 의해 접근될 수 있지만 단독으로 운영된 수는 없다.
상응하는 키 맵을 갖는 각각의 1차 키홀을 구획화함으로써, 키 맵은 만료 날짜/시간, 카운트다운 타이머 및/또는 만료 동작과 같은 그로 한정되지 않는 1차 키에 대한 속성을 포함할 수 있다. 만료 속성 중 어느 것이든 해제되면, 그때 상응하는 만료 작동이 1차 키 만료 시 수행되도록 설정될 수 있다. 예를 들어, 일반적인 만료 작동은 1차 키의 키 맵을 삭제하는 것일 수 있다. 키 맵을 삭제해도 구획화된 설계로 인해 키홀 잠금 노드의 임의의 다른 등록된 1차 키는 영향을 받지 않을 수 있다. 만료된 1차 키를 다시 삽입하면 일치하는 키 맵이 없기 때문에 더 이상 유효한 키로 인식되지 않을 수 있다. 물론 이러한 1차 키 삭제는 사용되는 가변 잠금의 유형이 사용되는 것과 관련하여 신중하게 수행해야 한다: 삭제는 ORLOCK 및 일부 SSLOCK에 대해 허용될 수 있지만, 해당 잠금 노드에 대한 로크아웃(lock-out) 상황이 발생할 수 있으므로 MATLOCK, XORLOCK 및 HASHLOCK에 대해 역효과를 낳을 수 있다.
다양한 방식과 층으로 내용을 보호하는 목적을 위해 다수의 암호화 기법을 활용할 수 있는 복잡한 데이터 구조의 상호 작용은 암호 작동 마다 요구되고 및/또는 생성되는 일반적으로 매우 많은 수의 가변 속성으로 인해 구현 세부사항에 상당한 도전을 일으킬 수 있다. 그것은 SDFT의 유용성과 엘레강스가 빛을 발하는 그러한 환경에 있을 수 있고 이러한 구현 도전을 극복하는데 도움이 되는 편리한 구성 방법과 구조를 제공할 수 있다. 예를 들어, 데이터의 단일 인증된 암호화에는 어딘가에 저장될 다음의 속성을 요구할 수 있다: 키 유형, 키 길이, 암호 유형, 암호 모드, 초기화 벡터, 키 ID, 패딩, 패딩 유형, 패딩 길이, 블록 길이, 디지털 서명 또는 입력된 MAC 스트링(다이제스트), 다이제스트에 대한 매칭 키 ID, 다이제스트 길이, 다이제스트 키 길이, 다이제스트 방법. 따라서 이제까지 제시된 잠금 노드 명세에서 설명된 각 암호화 연산으로 이를 곱하고(잠금 노드는 이후 섹션에서 설명할 여러 더 많은 구성요소를 가질 수 있음), 그것은 추적해야 하는 엄청난 수의 속성일 수 있다. 많은 경우, 어플리케이션 프로그래머와 설계자는 이러한 난해함 및 도전을 인식하고 몇몇 암호화 방법 및 연관된 속성 값을 선택하여 구현 전반에 걸쳐 전면적 방식으로 그들을 사용함으로써 코딩 프로세스를 단순화하는 것을 선택할 수 있다. 이러한 단순화를 통해 더 적은 보안, 더 적은 유연성, 더 적은 특징, 더 적은 비호환성, 유지하거나 수정하기가 어려울 수 있는 컴퓨터 코드와 같은 원치않은 결과가 발생할 수 있다.
계층
도 78은 계층 키 사용을 강조하는 너트(잠금 그래프)의 블록도를 도시한다. 너트 부분(7804) 섹션에서 각 잠금 노드에는 계층 ID가 할당될 수 있다. 잠금 노드(7820-7824)는 계층 ID 'A'이고, 잠금 노드(7826)는 계층 ID ‘B’이고, 잠금 노드(7828)는 계층 ID 'C'이고, 잠금 노드(7830)은 계층 ID 'D’이다. 계층 지정은 임의적일 수 있지만 프라이버시 민감성에 의해 여러 너트 부분을 함께 그룹화하는 패턴을 따를 수 있다: 계층이 깊을수록 잠금 노드에 포함된 데이터의 민감도가 더 높아질 수 있다. 계층 접근 제어(SAC)의 정밀한 사용에 의해, 너트의 경사 불투명성을 구현할 수 있다. 도시의 목적을 위해, 도 78에 묘사된 계층 ID는 단순한 문자이지만 실제로는 너트 ID(도 55로부터 실제적으로 고유한 ID)와 같은 그러나 그로 한정되지 않는 식별가능한 스트링의 임의의 세트일 수 있다.
너트 잠금(7802)을 포함하는 임의의 잠금 노드에 계층이 할당될 수 있다. 너트(7806)의 키홀 잠금 노드가 적절하게 잠금해제되거나 언라벨되면, 3개까지의 키 세트(7842)를 포함하는 키 맵(7840)을 드러낼 수 있다(도 62과 유사). 본 섹션에서는 계층 키(7850)(6212) 및 이러한 키가 잠금 그래프 내에서 어떻게 기능하는지에 대해 중점적으로 다룬다. 본 예에서, 우리는 4개의 계층 키(7852, 7854, 7856, 7858)를 발견할 수 있고, 이 키는 각각 'A, B, C, D'에 상응할 수 있다. 각 계층 키는 연관된 계층 ID와 함께 계층 키(7850) 섹션에 저장될 수 있다. 우리는 각 계층 키가 어떻게 사용될 수 있는지를 도시하는, 도 79에 나와 있는 순서도를 따를 수 있다. 일부 또는 모든 계층 키가 일치하는 잠금 노드의 1차 키홀에 삽입되면 프로세스가 완료될 수 있으며 우리는 잠금 그래프의 순회가 너트 잠금 섹션(7802)을 너머서 계속되도록 기다릴 수 있다.
계층 키는 너트 부분(7804) 섹션에서 일부 또는 모든 잠금 노드에 도시된 바와 같은 MATLOCK 가변 잠금과 함께 작동할 수 있다. SDFT 방법을 사용할 때, MATLOCK은 수반되는 섹션의 선호되는 TAR에서 'lock matlock' 변환에 의해 지시될 수 있다. 각 계층 키는 해당 잠금 노드에 대한 MATLOCK에 의무적인 키일 수 있다(* 도79에). 잠금 노드 출력 연결 키 또는 계층 키를 분실하면, 그때 MATLOCK의 정의에 따라 특정 잠금 노드가 잠금 해제되지 않을 수 있다. 따라서 그 수준을 넘는 더 깊은 층의 일부 또는 전부도 열리지 않을 수 있다. 어떤 계층 키가 1차 키의 키 맵(7840)에 저장될 수 있는지를 제어함으로써, 너트 소유자는 누군가 잠금 그래프(7860)를 얼마나 멀리 정확하게 관통할 수 있는지를 명시적으로 제어할 수 있다. 계층 접근 제어층은 너트 접근 제어층과 독립적으로 작동할 수 있으며 가변 잠금 방법과 함께 작동할 수 있다.
SAC 및 키홀이 작동할 수 있는 방법은 다중 키가 (7806)과 같은 키홀 잠금 노드에 제시된다면, 다중 키 맵(7840)이 드러날 수 있고, 가능하게, 다중 계층 키 세트(7850)가 다양한 잠금 노드에 삽입될 수 있음을 함축할 수 있다. 단일 계층 ID의 계층 키는 동일한 키일 수 있으므로, MATLOCK 을 활용하는 잠금 노드에 동일한 키를 삽입하면 해당 ID에 하나의 키가 삽입될 수 있으며, 기본적으로 키홀에서 동일한 키를 여러 번 겹쳐 쓸 수 있다. 이는 계층 키의 추가 접근 속성 특징일 수 있다.
계층 키 및 너트 접근 제어(다음 섹션에서 설명)는 모두 추가 접근 속성 특징 또는 특성을 나타낼 수 있다. 접근 수준이 다른 1차 키를 잠금 그래프의 1차 키홀에 삽입하면 모든 유효한 삽입된 키의 접근 수준의 조합이나 연합을 나타낼 수 있는, 잠금 그래프의 접근 수준을 초래할 수 있다. 본 특징의 하나의 강력한 사용은 매우 특정 수준의 잠금 그래프에 대한 접근을 얻기 위해 1차 키의 조합이 필요할 수 있는 세그먼트화된 방식으로 소정 잠금 그래프에 대한 키의 분배에서 일 수 있다. 이는 1차 키가 해당 키 홀더에 대한 소정 접근의 완전한 그림을 제공하는 작동 모드와 대조될 수 있다.
너트 접근 제어
너트 접근 제어 또는 NAC는 가변 잠금 및 계층 접근 제어와 독립적으로 작동하는 암호 데이터 구조를 사용하는 접근 제어 방법이다. NAC는 역할 기반 접근 제어(RBAC)와 암호 접근 제어(CAC)의 조합을 사용할 수 있고, 이를 우리는 역할 기반 암호 접근 제어(RBAC) 또는 키 기반 허가(KBP)라고 한다. NAC 속성 키 세트는 단일 잠금 노드의 내부에 국부화될 수 있지만 연관된 잠금 노드에 걸쳐 키 홀더가 일관된 수준의 접근가능성을 허용할 수 있는 잠금 그래프의 나머지 부분을 따라 NAC 속성을 전파하는 잠금 노드에 메커니즘이 있을 수 있다. 이러한 NAC 속성은 외부 소스에서 삽입되었을 수 있는 1차 키의 잠금 해제 또는 언라벨된 키홀 잠금 노드에서 발견할 수 있다. 계층 키와 마찬가지로 NAC 키는 추가 접근 속성 특징을 나타낼 수 있다.
KBP는 디지털 서명(dign)을 생성하고 그들을 RSASSA-PSS(벨레어 및 로가웨이에 의해 본래 발명된 확률적 서명 스킴에 기반한 부록을 갖는 RSA 확률적 서명 스킴)와 같은 알고리즘을 사용하여 데이터의 스트링 상에 비대칭적으로 인증하는 것과 같은 공개 키 암호화의 잘 알려진 특징을 사용하여 사용될 수 있다. KBP의 기본 전제는 비공개/공개 키 쌍을 고려하여, 비공개 키 홀더(작성자)는 작성자의 비공개 키를 사용하여 데이터 구획 상에 디지털 서명(dign)을 생성할 수 있고, 그런 후에 공개 키 홀더(리더)는 디그가 데이터의 구획 상에 작성자에 의해 생성되었음을 인증하도록 리더에 의해 소유된 작성자의 공개 키를 사용할 수 있다. 인증에 실패하면, 그때 무언가 공개 키, 데이터 또는 디그의 구획, 또는 그들의 일부 또는 전부와 같은 것이 손상되었을 수 있다. 작성자는 그의 매 수정 시에 대상 데이터 구획 상에 업데이트된 디그를 생성할 책임이 있으며 리더는 데이터 구획을 "판독"하거나 해독하기 전에 디그 및 대상 데이터 구획을 인증할 책임이 있다. 본 프로세스를 통해 그가 상대의 비공개 키(작성자)를 가진 누군가가 생성하거나 수정한 무언가를 읽을 수 있는 리더임을 합리적으로 확인할 수 있다. 역할 기반 암호 접근 제어(RBCAC)에서는 정의된 각 접근 역할에 대해 비대칭 키 쌍이 있을 수 있으며 역할의 "작성자"가 키의 비공개 부분을 얻고 역할의 "리더"가 키의 각각의 공개 부분을 가질 수 있다. 데이터세트를 기능별로 분리하고 다른 키 쌍을 사용하여 각 기능 데이터세트를 디그닝함으로써, 접근 역할은 정확하게 정의될 수 있고 적절한 키 부분을 분배하여 다양한 키 홀더에게 할당될 수 있다. 너츠의 RBCAC는 하나 이상의 대칭 키를 정의된 역할의 비대칭 키 쌍과 결합하여 대상 데이터세트에 걸쳐 추가 제어층을 제공하는 것을 허용할 수 있다. 결합된 대칭 키의 홀더는 해당 역할의 대상 데이터세트를 복호화하고 읽을 수 있다. 이러한 결합된 대칭 키는 eKS에서 가변 잠금 및 후속 키의 잠금해제에 의해 드러난 대칭 키에 의해 암호화의 최상부 상의 대상 데이터세트를 암호화할 수 있다. 대안적으로, 결합된 대칭 키의 존재는 eKS로부터 드러난 암호화 키의 사용을 무효화할 수 있으며 대상 데이터세트를 대칭적으로 암호화하는 유일한 키일 수 있다. 이러한 대안은 1회를 초과하여 암호화되지 않으므로 이는 대량의 대상 데이터세트에 대해 바람직할 수 있다. 결합된 대칭 키는 목표 데이터세트에 대한 읽기 접근을 제어하는 데 사용할 수 있다.
NAC의 구현예에서 SDFT의 사용은 매우 코딩을 현저하게 단순화할 수 있다. 암호화 및 디그는 수행할 기능에 적합한 논리적으로 응집된 TAR에 내장될 수 있으며 SDFT의 언라벨링 프로세스는 그러한 작업의 세부 처리를 상당히 자동화할 수 있다. TAR과 연관된 임의의 국부화된 속성은 대상 데이터와 함께 폴딩되거나 또 다른 TAR과 더 폴딩되어 보호 및 저장을 단순화할 수 있다.
도 80에 표는 키 기반 허가가 어떻게 리더, 작성자 및 검증자라는 세 개의 정의된 역할 및 5개의 역할 플레이어: A, B, V, X 및 Y와 함께 작동할 수 있는지에 관한 예시를 보여준다. 결합된 대칭 키(S)를 소유하는 모든 역할 플레이어는 대칭 키(S)를 사용하여 데이터를 암호화하거나 해독할 수 있다. 작성자 클래스(COW), X 및 Y,는 비대칭 비공개 키(R)를 사용하여 암호화된 데이터에 대한 디그를 만들 수 있다. 비대칭 공개 키(U)를 사용하여, 리더 클래스(COR), A 및 B,는 암호화된 데이터에 대해 COW로부터의 누군가에 의해 해당 디지털 서명이 생성되었는지 확인할 수 있으며, 대칭 키(S)를 사용하여 데이터를 해독할 수 있다. 그러므로, 유효한 디그를 생성할 수 있는 능력은 당신이 데이터를 수정할 수 있음을 함축하고 모든 다른 리더가 유효한 작성자에 의해 디그를 생성하였다는 것을 인증할 수 있음을 함축한다. 정의된 역할 수는 소유자가 원하는 접근 제어 단위(granularity)에 따라 다르지만 정의된 역할의 일부 또는 전부는 도 80에 설명된 방법론을 사용할 수 있다. 비대칭 공개 키(U)만을 갖는 역할 플레이어는 검증자로 알려질 수 있다; 검증자는 전체 너트를 순회할 수는 있지만 역할 클래스에 해당하는 목표 데이터를 해독할 수는 없다. 예를 들어, COR 검증자는 디그 상에 COW 공개 키를 사용하여 적절한 COW 역할 플레이어가 너트의 페이로드를 적절히 수정했다는 것만 인증할 수 있지만 복호화 키(S)의 사본이 없기 때문에 페이로드를 해독할 수는 없다.
NAC는 콘텐츠의 가시적이고 수정 가능한 측면에 정밀하게 영향을 주고 제어하여 잠금 노드의 측면을 제어할 수 있다. 도 81에 표시된 표는 너트의 일부 부분을 열거하지만 소망에 따라 더 많거나 적은 부분을 포함할 수 있다: 모발, 틱, 실, 비타, 얼굴, 테일 및/또는 베일. 이 표에는 너트 로그 및 너트 이력에 대한 일부 전방 참조가 있을 수 있으며, 이는 본 문서의 뒷부분에서 자세하게 설명된다. 각 행은 잠금 노드를 나타낼 수 있으며 너트 부분을 정의하는 데이터는 해당 잠금 노드의 백에 홀딩될 수 있다. 백 불투명성으로 명명된 열은 잠금 노드의 백의 암호 모드를 도시하고, 이는 잠금 노드의 메타데이터에 의해 제어될 수 있다. 백 불투명성이라고 하는 메타데이터 설정에 따라 백을 암호화하거나 암호화하지 않을(클리어) 수 있다. 도 81의 표에 있는 너트 부분의 일부 또는 전부가 소정 너트에 있으면, 잠금 노드로 나타낼 수 있는 각 너트 부분은 잠금 노드 연결 포인터 및 연결 키를 사용하여 위에서 아래로 순서대로 연결될 수 있다. 각 너트 부분의 백 불투명성과 관련하여 이 표의 열 아래 순회를 너트의 경사 불투명성이라고 할 수 있다. 적절한 외부 1차 키의 홀더는 결과적으로 잠금 노드의 가변 잠금을 해제하여 너트에 접근할 수 있다. 1차 키의 SAC 설정에 따라 키 홀더는 너트로 얼마나 멀리 이동하는지 제한할 수 있다. NAC는 각 너트를 어느 1차 키가 허용될 수 있는지, 결합된 대칭 암호 키의 신중한 배치에 의해 각각의 너트를 읽고, 수정하고, 및/또는 인증하는 능력, 비대칭 키 쌍의 정밀한 사용, 및 디지털 서명 방법을 사용하는 것에 영향을 줄 수 있다.
도 82는 일반적인 너트에 대해 규정될 수 있고 이용가능한 키 기반 허가 접근 역할을 나열하는 표를 도시한다. 너트 소유자의 요구에 따라 접근 역할이 더 많이 또는 더 적게 정의될 수 있으므로 본 목록에 의해 접근 역할이 제한되지 않을 수 있다. 표에는 식별이 가능한 너트의 4개 섹션이 나열되어 있지만, 이에 국한되지 않는다: 베일, 비타, 테일, 올(ALL). 올 섹션은 다른 접근 역할에서 명시적으로 다루지 않은 어느 것이든 언급할 수 있다. 이는 키 맵 상의 디그, eDK 및/또는 별도의 접근 역할을 나타내는 키 쌍에 의해 특정되지 않은 암호화된 백과 같은 그러나 그로 한정되지 않는 잠금 노드의 내부 작업 중 일부 또는 전부를 수반할 수 있다. 본 설명에서, 키 쌍은 비대칭 키 쌍 및 결합된 대칭 키 쌍을 포함할 수 있다. 결합된 대칭 키의 존재는 접근 클래스 검증자 역할의 존재에 따를 수 있다. 올 비공개 키의 홀더는 루트 접근 계층(RAT) 또는 너트의 소유자로 불릴 수 있다. 각각의 1차 키는 인증 목적을 위한 RAT 리더 공개 키의 사본을 포함할 수 있는 키 맵을 가질 수 있다. 베일은 문서와 같은 너트의 페이로드를 홀딩하는 잠금 노드의 백에 홀딩될 수 있다. 이 키 쌍은 자주 사용되었기 때문에 특별히 작성자 클래스(COW) 및 리더 클래스(COR)로 명명될 수 있다. 이 키 쌍은 어느 1차 키가 너트의 페이로드를 수정할 수 있는지를 제어할 수 있다. 유사한 방식으로 너트 로그는 너트의 비타 부분의 백에 홀딩될 수 있고 로거(logger)/로그 리더 키 쌍으로 제어할 수 있다. 너트 이력은 너트의 테일 부분의 백에 홀딩될 수 있으며 히스토리언(Historian)/이력 리더 키 쌍에 의해 제어될 수 있다. 각 접근 역할 클래스에 대한 검증자 역할은 연관된 디그를 인증하기 위해 해당 역할과 연관된 적어도 하나의 공개 키에 접근할 수 있다. 검증자 역할은 접근할 수 없는 접근 역할 클래스와 연관되고 결합된 대칭 키가 있을 수 있음을 함축할 수 있다. 유지 프로세스는 너트 부분의 유효성, 일관성 및/또는 진정성을 확인하기 위해 너트 내에 정의된 검증자 역할의 조합에 접근할 수 있지만 보호된 데이터의 내용을 읽을 수는 없다. 키 페어링은 이러한 세트로 제한되지 않으며 요구 사항에 따라 확장하거나 축소될 수 있다. 잠금 노드의 암호화 및/또는 암호화되지 않은 모든 스트링은 자신의 특정 키 쌍에 의해 그 위에 생성된 디그를 가질 수 있으며, 잠금 그래프의 모든 잠금 노드는 이러한 수준의 특수성을 사용하여 접근 제어 단위를 극도의 수준으로 이끌 수 있다; 그러나 그러한 극도의 수준의 접근 제어 단위는 그러한 너트에 대한 접근 제어의 효과를 저하시킬 수 있다.
잠금 노드의 파라미터 섹션은 적용할 디지털 서명 알고리즘 및 비대칭 키의 길이(RSA-2048에 대해 최소 2,048 비트로 디폴트)를 지정할 수 있다. 대안적으로, SDFT 사용은 특정 TAR이 그러한 선호를 나타내도록 허용할 수 있으며 대신에 TAR 라벨은 파라미터 섹션에 저장될 수 있다. 너트의 페이로드를 홀딩할 수 있는 잠금 노드의 암호화된 백은 RAT 작성자 키를 사용하여 RAT 작성자에 의해 디지털로 서명되지 않고 RAT 작성자를 포함할 수 있는 COW 접근을 갖는 키 홀더에 의해 디지털로 서명되야 한다. 1차 키 홀더는 키홀 잠금 노드의 키 맵에 접근 키 세트와 상응하는 접근 속성 전파 키(AAPK)를 통해 RAT 리더 키에 접근할 수 있다; 이 RAT 리더 키는 모든 정당한 1차 키 홀더가 RAT 권한의 구역에 있을 수 있는 잠금 노드 내의 임의의 디그를 인증하게 할 수 있다(예: RAT 작성자 키에 접근할 수 있는 1차 키 소유자에 의해 예시화됨). 임의의 RAT 디그를 인증하는 것에 대한 임의의 실패는 해당 스트링 또는 폴딩된 데이터가 손상되었을 수 있거나 RAT 리더 키가 유효하지 않을 수 있거나 1차 키가 더 이상 유효하지 않을 수 있거나 언급된 이유 중 일부 또는 전부를 함축할 수 있다. 너트의 무결성이 훼손되었을 수 있고 암호 해독 시도가 성공하지 못할 수 있거나 손상된 데이터가 나타날 수 있으므로 어플리케이션은 본 경고를 표시하고 그 이상으로 진행하지 못할 수 있다.
도 83은 너트가 NAC 접근 키의 초기 세트를 어떻게 이루는지 도시한다. 키홀 잠금 노드(8300)로 시작하여, 1차 키(8304)가 1차 키홀(8306)에 삽입될 수 있으며, 키 맵 구조(8310)를 드러낼 수 있는 암호화된 키 맵을 복호화하거나 언폴딩할 수 있다. 대칭일 수 있는 접근 속성 키 세트 잠금해제 키(AAKSUK)(8314)로 구성된 키의 세트를 포함할 수 있는 접근 키 세트(AKS)(8312)가 있을 수 있다. 각 개별 AAKSUK 대칭 키는 도 82에 도시된 접근 역할에 상응할 수 있다. 그런 다음 AKS에 각 AAKSUK는 초기 1차 키홀(8306)과 동일한 잠금 노드(8300)의 동일한 입력 섹션(8302)의 접근 키홀(8320)에 삽입될 수 있다; 따라서 키 맵(8310)은 자체 접근 키홀(8320)을 공급할 수 있는 AKS(8312)의 키의 세트를 홀딩할 수 있다. 이는 키홀 잠금 노드(외부의 마주하는 잠금 노드)의 특별한 특징일 수 있으며 대부분의 경우 내부 잠금 노드에는 적용되지 않을 수 있다. 접근 키홀(8320)에서, 각각의 적절하게 삽입된 AAKSUK(8314)는 접근 역할 설명(8332), 접근 역할 키(ARK)(8334) 및/또는 접근 속성 전파 키(AAPK)(8336)를 포함하는 상응하는 접근 속성 키 세트(AAKS)(8330)를 드러내기 위해 복호화하거나 언폴딩할 수 있다. ARK(8334)는 주어진 역할에 해당하는 키 쌍 부분을 특정할 수 있다: 공개(리더) 또는 비공개(작성자). AAPK(8336)는 다음 연결된 잠금 노드의 접근 키홀에 AAKSUK로서 역할을 할 수 있는 대칭 키일 수 있다. AAKSUK의 집합은 1차 키의 NAC 접근 속성 및 궁극적으로는 잠금 노드에서의 접근를 정의할 수 있는 AAKS의 세트를 구성할 수 있다. 본 도해에서 AAAKS(8330)은 RAT 비공개 키 및 COW 키를 포함하므로 너트 소유자의 접근 속성을 특정할 수 있다. AAKSUK의 추가 속성 특징(그로써, NAC의 추가 속성 특징)이 본 도해에 도시된다; 각 1차 키(8304)에 대해 AKS(8312)가 있을 수 있으며, 이는 1차 키홀(8306)에 삽입될 수 있어서, AAKSUK(8314)를 접근 키홀(8320)에 삽입할 때마다 부가될 수 있다. 동일한 AAKSUK는 단지 접근 키홀에 의해 기존 것을 겹쳐쓸 수 있을 뿐이고, 이는 제시된 1차 키의 일부 또는 전부가 처리되었을 때 고유 AAKS의 연합으로 이끌 수 있다. 이는 접근 속성이 다른 1차 키가 동시에 삽입될 때 누적되는 접근 속성 효과를 초래할 수 있다.
도 84는 AAPK를 사용하여 잠금 그래프의 나머지 잠금 노드에 걸쳐 NAC 속성을 어떻게 전파하는지를 도시한다. 키홀 잠금 노드(8400)가 적절하게 잠금 해제되었을 수 있으며 일부 또는 모든 AKS(8402)가 접근 키홀(8404)에 삽입되었을 수 있고, 이는 AAKS(8420)를 초래할 수 있다. 그런 다음 접근 속성 전파 키(AAPK)(8424)가 다음 연결된 잠금 노드의 접근 키홀(8432)에 삽입될 수 있다. 이는 키홀 잠금 노드의 접근 키홀이 채워지는 방식과 유사할 수 있지만, 키는 자신의 1차 키홀에서 발견되거나 그렇지 않을 수도 있는, AKS가 아닌 연결된 잠금 노드에서 비롯됨에 유념한다. 내부 잠금 노드의(8430) 1차 키홀(미도시)은 RAT 접근 수준 키를 제외하고 키 맵에 공백 AKS를 가질 수 있다. 이러한 전파 방법을 따름으로써 1차 키의 접근 속성은 잠금 그래프에서 모든 열려 있는 잠금 노드에 존재할 수 있다. 접근 역할이 COW와 같이 동일하더라도 잠금 노드 내에서 그 자신의 사용을 위해 생성되는 AAKS의 다른 세트를 갖는 것과 같은 잠금 노드는 일부 또는 전부 또는 그 내부 제어 메커니즘을 분리하고 국부화할 수 있다. AAKSUK 및 AAPK 대칭 키조차 그들이 적절하게 매핑될 수 있는 한 다를 수 있다. 전체 잠금 노드에 대해 AAKS의 완전한 세트를 RAT에 할당하고 해당 잠금 그래프에 걸쳐 적절하게 전파되는 것이 잘 정의된 너트의 전제가 될 수 있다. 참고로, RAT 공개 키로 암호화할 수 있는 AAPK 및 ARK의 완전한 세트가 있을 수 있으며 잠금 노드의 파라미터 섹션에 저장될 수 있어서, 잠금 노드를 다시 입력할 필요가 있을 때 RAT만이 그것을 드러낼 수 있다.
도 85는 외부 잠금 노드(8500)로부터 내부 잠금 노드(8530)로 AAPK를 사용하여 접근 속성의 전파를 도시한다. 도해는 연결된 노드의 1차 키홀(8550) 및 접근 키홀(8560)에 공급하기 위해 다양한 키가 어디에서 비롯되는지를 도시한다. 출력 섹션(8510)은 연결된 잠금 노드(8530)의 1차 키홀(8550)에 대한 연결 대칭 키(8512)를 표시할 수 있다. AAPK(8522)는 연결된 잠금 노드(8530)의 접근 키홀(8560)에 삽입(8524)될 수 있다.
도 86은 이전 섹션에 예제를 사용하여 자세히 다루었던 접근 키홀에 키를 삽입하는 순서도를 도시한다.
도 87은 대안적인 구현예에 관한 키 기반 허가의 표를 도시한다. 본 표는 쓰기 비대칭 키 쌍(UW, RW)과 인스턴스 데이터별 암호화 대칭 키(Sn)를 더 정의함으로써, 도 80에 제시된 표에 대해 확장될 수 있다. 도 80으로부터 3개의 키는 디그 대칭 키 쌍(UD, RD)과 디폴트 데이터 암호화 대칭 키(S0)로서 대안적으로 표현될 수 있다. 추가 키는 ARK가 쓰기 전용 접근 역할을 정의하게 할 수 있고, 이는 잠금 노드의 백에 쓸 수 있지만 백의 임의의 다른 부분을 읽을 수 없는 것이다. 쓰기 전용 역할은 키 RD, UD, UW 및 Sn에 접근할 수 있다. 쓰기 전용 역할이 잠금 노드의 백에 메시지(Tn)를 저장하려 할 때, 단일 인스턴스 대칭 암호화 키(Sn)를 생성하여 (Tn)을 암호화하여, 암호화한 메시지(En)를 생성할 수 있다. 그런 다음, 단일 인스턴스 대칭 암호화 키(Sn)는 키(Uw)를 갖는 비대칭 암호를 사용하여 암호화되어 암호화된 키(Kn)를 생성할 수 있다. 이제 En 및 Kn 모두가 잠금 노드의 백 안에 저장할 수 있다. 쓰기 전용 역할은 RD 키를 사용하여 디그를 생성하고 그를 저장할 수도 있다. 메시지 인증은 간결함과 조직적 단순성을 위해 이러한 정보를 포함하고 자동으로 폴딩하는 인증 SDFT TAR 시퀀스의 적절한 어플리케이션에 의해 대안적으로 또는 추가적으로 수행될 수 있다. 이러한 TAR 시퀀스는 임의의 키 입력 MAC 변환을 사용하는 메시지 인증의 대안적 방법을 허용할 수 있다. 일단 쓰기 전용 역할 플레이어가 쓰기를 수행하고 Sn의 메모리 내 인스턴스가 파괴되면, 쓰기 전용 역할이 비대칭 비공개 키(RW)를 소유하지 않을 수 있으므로 역할 플레이어는 더 이상 Sn 키에 접근하여 메시지(En)를 해독할 수 없다. 리더 및 작성자 역할과 같이 비대칭 비공개 키(RW)의 사본을 가질 수 있는 이들 접근 역할만이 Sn을 얻기 위해 암호화된 키(Kn)를 해독할 수 있으며, 그를 사용하여 암호화된 메시지(En)에서 작동하여 원본 메시지(Tn)를 얻을 수 있다. 인증 방법론은 머클(Merkle) 트리가 수많은 개별 메시지를 포함하는 페이로드에 대해 보다 효율적으로 인증하는 프로세스를 구성하도록 작동하는 방식과 유사한 해시 또는 디그 체이닝을 추가로 포함할 수 있다. 쓰기 전용 역할 접근는 로컬 시스템에 의해 작동하는 잠금 노드 상의 이전 메시지의 비인증된 절단 또는 덮어쓰기를 방지할 수는 없지만; 그러나 너츠 에코시스템은 너트 이력, 복제 및 동기화 특징을 다양한 협력적인 방식으로 맞물리게함으로써 이러한 발생을 방지하거나 강조하는 것을 도울 수 있다. 이는 너트서버 및 검토 제어 모듈에 대한 섹션에서 나중에 논의될 것이다.
도 87에 표에 제시된 쓰기 전용 및 검증자의 제한된 역할 능력은 컴퓨터 시스템 보안 내에서 만연하는 "신의 키”난제와 관련된 일부 문제를 완화하는 데 도움이 될 수 있다. 이것은 일 경우에, 가깝게 시스템(들)의 유지, 업그레이드, 수리, 설치 및/또는 문제 해결을 위해 시스템 관리자에게 "신의 키(God Key)" 또는 시스템 또는 시스템의 세트에 대한 모든 접근 자격증명을 부여하는 잘 알려진 일종의 문제일 수 있다. 적절한 보안 권한 검사를 갖춘 매우 능력있고 경험있는 시스템 관리자가 상대적으로 적기 때문에 업계에서는 기술적 능력과 높은 수준의 보안 권한을 자동으로 상호 연관시키는 경향이 있을 수 있다. 이러한 유형의 관행은 두 당사자 간의 신뢰 수준이 다른 사람이 감지할 수 없거나 의도적으로 다른 당사자와 관계를 숨길 수 있는 일방적인 방식으로 시간이 지남에 따라 변경될 수 있는 신뢰 관계의 동적 특성을 해결하지 못할 수 있다. 쓰기 전용 및 검증자 접근 역할의 신중한 사용에 의해, 전송 중이거나 저장된 데이터에 대한 무단 접근로부터 페이로드를 항상 보호할 수 있다. 이러한 두 개의 접근 역할의 적용은 각 측면을 보다 적절하고 독립적으로 완벽하게 관리하기 위해 기관이 기술 능력과 보안 권한의 결합된 성질을 분리할 수 있게 한다. 쓰기 전용 역할은 개인 및 프로세스가 취급의 증거로 너트의 로그 구성요소에 추가하는 것을 허용하지만 페이로드를 읽거나 로그를 편집하는 것을 허용하지 않을 수 있다. 추가적으로, 쓰기 전용 역할은 디그 키 모두에 접근할 수 있으며 인증 스트링을 생성하고 이를 검증할 수 있다. 검증자 역할은 개인 및 프로세스가 페이로드에 대한 접근을 허용하지 않고 내부 일관성 및 진정성에 대해 너트를 확인하게 할 수 있다. 잠금 노드는 NoSQL 또는 RDBMS와 같은 그러나 그로 한정되지 않는 임의의 데이터베이스 시스템 내에서 체계적으로 수정, 적응 및 삽입되어 필드, 레코드, 테이블 및/또는 데이터베이스 레벨에서 그러한 단위의 접근 제어를 수행할 수 있다. 컴팩트함, 유연성, 특징 및/또는 독립성은 잠금 노드가 어플라이언스 자체에 내장된 접근 게이트웨이로서 컴퓨터화된 어플라이언스에서 존재할 수 있게 한다. 이 문제는 너트의 인터넷에 관한 이후 섹션에서 더 자세히 논의될 수 있다.
NAC 특징은 대상 페이로드에서 취해질 수 있는 동작에 대한 순열의 완벽한 집합을 포함할 수 있다. NAC 구현에 따라 허용된 작동의 단순한 교차 참조 매트릭스는 다음과 같이 도시될 수 있다:
작동 읽기 쓰기 검증
읽기 리더 작성자 리더
쓰기 작성자 쓰기전용 쓰기전용
검증 리더 쓰기전용 검증자
리더 및 작성자 역할은 잠금 노드의 백 내에 포함된 디그를 검증하거나 인증하는 내포된 능력을 가질 수 있다.
잠금 노드에 대한 세 개의 보호 방법을 요약하면: 가변 잠금, 계층 접근 제어 및/또는 너트 접근 제어이다. 가변 잠금은 주로 일부 데이터 내용을 전달하는 데 사용될 수 있는 잠금 노드의 백을 보호할 수 있다. 계층 접근 제어는 사용자가 잠금 그래프 계층에 얼마나 깊게 침투할 수 있는지를 정의할 수 있다. 너트 접근 제어는 너트의 어느 부분이 사용자에 의해 수정, 조망, 작성 및 디지털 서명될 수 있는지를 지정할 수 있다. 이러한 층 중 일부 또는 전부는 잠금 노드의 키홀 메커니즘 내에 포함되거나 폴딩된 키 세트로 제어될 수 있다. 키홀 메커니즘은 다양한 함수에 대해 광범위한 암호화 키가 삽입되고 처리되는 것을 허용할 수 있는 유연한 엔트리 방식일 수 있다. 이러한 구성 요소 중 일부 또는 전부가 함께 및/또는 개별적으로 작동하여 접근 제어의 다양한 세트를 제공할 수 있고, 이는 매 너트마다 맞춰질 수 있으며, 콘텐츠 보호를 위해 소망되는 잠금 거동을 나타내도록 모듈식으로 구성할 수 있다. 잠금 노드의 모듈성은 또한 반복적이고 컴팩트한 모듈식 설계로 인해 여러 개의 복잡한 잠금 구조를 간단하게 구축할 수 있다. 완전히 잠금 해제하고 너트를 활용하기 위해 많은 다른 알고리즘을 사용할 수 있지만, 메커니즘을 시작하기 위한 정보는 너트의 잠금 노드 내에 완전히 저장될 수 있는 암호화 데이터 부분으로 표시될 수 있으므로 접근 제어 메커니즘은 휴대가 가능하며 임의의 외부 참조 모니터와 무관하게 페이로드와 함께 이동할 수 있다. 이러한 메커니즘은 구현을 단순화하고 내부 코딩 및/또는 데이터 세부사항의 복잡성을 보다 잘 관리할 수 있도록 다양한 SDFT 방법 및 구조에 의해 추가로 구현될 수 있다.
너트의 접근 제어 모델은 의무적 접근 제어(중심화됨), 임의 접근 제어(사용자 중심), 및 다른 것의 조합일 수 있다. 이 모델은 접근 특성의 일부 또는 전체를 자체 내에 저장함으로써, 소유자가 쉽게 이동할 수 있도록 너트별 접근 수준을 직접 설정하는 방식에 있어 임의 접근 제어 모델과 유사할 수 있다. 또한 일부 또는 모든 의무적 접근 제어 모델을 수용할 수 있으며 키홀, 가변 잠금 및 기타 메커니즘에 의해 제공되는 유연성으로 인해 이러한 환경의 일부 또는 전부에 통합될 수 있다. 또한, 그것은 너츠에 대해 신규할 수 있는 경사 불투명성, 추가 접근 속성 및/또는 모듈식 잠금 노드 연결과 같은 그러나 그에 한정되지 않는 다른 특성을 나타낼 수 있다.
잠금 노드 순회
이제 우리는 전체 잠금 노드를 순회할 수 있고 어떻게 모든 것이 그 방식을 따라 드러나는지 살펴볼 수 있다. 도 88은 잠금 노드(8800) 내의 복호화 데이터 흐름을 보여 주는 단순화된 도해를 도시한다. 도 62, 도 78, 도 83, 도 84, 도 85 및 도 88과 같은 잠금 노드 잠금해제 프로세스에 대한 이러한 결합되고 통합된 묘사에 수반된 다른 도면의 요소에 대한 참조가 이루어진다. 참조는 다른 요소 번호로 번호가 매겨진 동일한 잠금 노드 섹션에 대해 이루어질 수 있지만 동일한 섹션이 접근의 드릴 다운 유형으로 검토되는 다른 조망을 나타낼 수 있다. 잠금 노드 잠금 해제 프로세스에 요구될 수 있는 논리 연산의 시퀀싱은 효율성 및/또는 다른 목적을 위해 더욱 최적화할 수 있다. 잠금 노드(결과적으로 잠금 그래프 또는 너트)의 잠금 해제의 프로세스는 잠금 노드에 대한 접근 권한 및 복호화 키를 얻기 위한 1차 키의 사용, 잠금 노드의 인증, 잠금 그래프에 걸친 접근 권한의 전파, 변수 잠금의 논리적 작동 및/또는 저장된 데이터의 복호화와 같은 그러나 그로 한정되지 않는 본 예시에서 기재될 수 있는 이들 단계를 수반할 수 있다; 이들 단계는 필요에 따라 확장, 축소 또는 재정렬될 수 있다. 적절하다면, 잠금 그래프 및 잠금 노드 내의 특정 메커니즘은 SDFT 방법의 적절한 어플리케이션을 통해 혜택을 얻을 수 있다.
1차 키(8804)는 입력 섹션(8806)에 삽입될 수 있고 각각의 1차 키는 연관된 암호화 방법을 사용하여 일치하는 암호화된 키 맵(8810)을 복호화하고 키 맵(8808)구조에 그것을 풀려고 시도할 수 있다. 각각의 키 맵(6240)은 가변 잠금(8812)에 의해 사용할 수 있는 메인 키(6210)를 생성할 수 있다. 각 키 맵(7840)((6240)과 등가) 내에서 계층 키(7850)의 세트가 될 수 있으며 각각의 계층 키(예: 7852-7858)는 각각의 입력 섹션의(8302) 1차 키홀(8306)에 잠금 그래프의 일치하는 계층 잠금 노드(예: 7820-7830)에 삽입될 수 있다(본 예에서, (7852-7858)과 같은 계층 키는 (8304)에 1차 키와 등가일 수 있다); (7820-7830)과 같은 계층 지정된 잠금 노드는 MATLOCK을 채용할 수 있고, 이를 열기 위해 최소 두 개의 키가 필요할 수 있다; (7852)와 같은 계층 키 및 출력 섹션(8510 또는 8826)에서 발견될 수 있는(8512)와 같은 출력 연결 키. 키홀 잠금 노드(8300)에 있어서, 각 키 맵(8310) 내에서 접근 키 세트(AKS)(8312)로 불리는 접근 속성 키 세트 잠금 해제 키(AAKSUK)(8314)의 세트가 될 수 있으며 각각의 AAKSUK 키는 현재의 키홀 잠금 노드(8300)의 입력 섹션(8302) 접근 키홀(8320)에 삽입될 수 있다. 이러한 방식으로 접근 속성 전파 키(AAPK)(8336)의 세트가 얻어지면, 그들(8522)(8336에 해당)은 다음 연결된 잠금 노드의(8540) 접근 키홀(8560)에 삽입될 수 있다. 이제 우리는 접근 역할 키(ARK)(8334)가 포함될 수 있는 접근 속성 키 세트(AAKS)(8332)를 가질 수 있다. ARK는 전체 잠금 그래프에 대한 1차 키의(8304) 접근 역할을 정의할 수 있다. (8840-8848)과 같은 다양한 잠금 노드 섹션의 디그는 이러한 ARK를 사용하여 인증될 수 있다. 잠금 ID 및 메타데이터(8840)의 디그는 RAT 공개 ARK(8344)(이는 NAC 명세에서 설명한 바와 같이 RAT 비대칭 키 쌍의 공개 부분일 수 있음) 및 섹션(8830)에 특정된 인증 알고리즘을 사용하여 인증될 수 있다. 인증을 위해, 섹션(8830)은 상응하는 디그(8840) 및 RAT 공개 ARK(8344)에 따라 인증 알고리즘에 제출될 수 있다. 인증에 실패하면, 그때 섹션(8830)이 손상되었을 수 있으며 잠금 노드 잠금 해제 프로세스에서 오류가 발생하여 처리가 중지될 수 있다. 성공적으로 인증되면, 암호화된 키 맵(8842)의 각 디그는 유효한 삽입된 1차 키에 해당하는 각 암호화된 키 맵에 대해 인증될 수 있다. 인증을 위해, 각각의 eKM(8810)은 상응하는 디그(8842) 및 RAT 공개 ARK(8344)에 따라 인증 알고리즘에 제출될 수 있다. 인증에 실패하면, 그때 eKM이 손상되었을 수 있으며 잠금 노드 잠금 해제 프로세스에서 오류가 발생하여 처리가 중지될 수 있다. 모든 적절한 eKM이 성공적으로 인증되면, 그때 암호화된 유도 키(8844)의 각 디그가 인증될 수 있다. 인증을 위해, 각각의 eDK(8814)는 상응하는 디그(8844) 및 RAT 공개 ARK(8344)에 따라 인증 알고리즘에 제출될 수 있다. 인증에 실패하면, 그때 eDK가 손상되었을 수 있으며 잠금 노드 잠금 해제 프로세스에서 오류가 발생하여 처리가 중지될 수 있다. 모든 적절한 eDK가 성공적으로 인증되면, 그때 암호화된 유도 키(8846)의 각 디그가 인증될 수 있다. 인증을 위해, 각각의 eKS(8818)는 상응하는 디그(8846) 및 RAT 공개 ARK(8344)에 따라 인증 알고리즘에 제출될 수 있다. 인증에 실패하면, 그때 eKS가 손상되었을 수 있으며 잠금 노드 잠금 해제 프로세스에서 오류가 발생하여 처리가 중지될 수 있다. 모든 적절한 eKS가 성공적으로 인증되면, 그때 암호화된 유도 키(8848)의 각 디그가 인증될 수 있다. 인증을 위해, 각각의 e백(8822)은 상응하는 디그(8848) 및 COR ARK(8348)에 따라 인증 알고리즘에 제출될 수 있다. 인증에 실패하면, 그때 e백이 손상되었을 수 있으며 잠금 노드 잠금 해제 프로세스에서 오류가 발생하여 처리가 중지될 수 있다. 적절한 모든 e백이 성공적으로 인증되면, 그때 본 잠금 노드는 완전히 인증된 것으로 간주될 수 있다. e백은 리더 클래스(COR) 접근 역할 키(8348)를 사용하여 인증될 수 있음을 유념한다. 이것은 너트의 페이로드를 홀딩하는 잠금 노드에는 참을 홀딩할 수 있지만, 해당 백에 있는 메타데이터를 홀딩하는 잠금 노드의 경우에는 그렇지 않고, RAT 공개 ARK를 사용하여 그것을 인증할 수 있다. 그런 다음 잠금 노드의 파라미터 섹션(8830)에 표시된 가변 잠금 유형에 따라, 키 맵(8808)의 메인 키(7844)의 세트를 사용하여 각 암호화된 유도 키 스트링(eDK)(8814) 상에 적절한 가변 잠금 알고리즘(8812)이 시도될 수 있다. eDK(8814)를 복호화하여 가변 잠금(8812)을 성공적으로 잠금해제하면 하나 이상의 유도 키(DK)(8816)가 발생할 수 있다. 각각의 유도 키는 파라미터(8802)에 저장될 수 있는 상응하는 암호화된 키 세트 스트링(eKS)(8818)을 복호화할 수 있다. eKS를 해독하면 출력 섹션(8826) 구조 및 백 키를 홀딩할 수 있는 상응하는 키 세트(8820) 구조가 생성될 수 있다. 키 세트(8820) 구조에서 발견될 수 있는 출력 연결 키(들)는 출력 섹션(8826)에 저장될 수 있으며 연결된 잠금 노드(8530)의 1차 키홀에 삽입될 수 있는 키로 기능할 수 있다. 백 키는 적절한 암호를 사용하여 파라미터 섹션에 저장될 수 있는 암호화된 백 스트링(e백)(8822)을 복호화할 수 있다. 복호화된 백은 너트(잠금 그래프)의 페이로드, 페이로드에 대한 메타데이터, 너트의 메타데이터, 백의 메타데이터, 이러한 데이터 및/또는 다른 데이터의 조합과 같은 그러나 그로 한정되지 않는 데이터를 홀딩할 수 있다. 백 메타데이터는 백(8824)이 너트 부분 또는 너트 페이로드를 홀딩하는지 여부를 나타낼 수 있다. 백이 너트 부분을 홀딩하면, 그것이 어느 너트 부분을 나타낼 수 있는지, 다른 적합한 너트 부분 메타데이터 및/또는 다른 데이터를 나타낼 수 있다. 백이 너트의 페이로드를 홀딩하면, 저장된 데이터가 실제 데이터인지 또는 해당 데이터에 대한 참조인지 여부, 그렇다면 그것은 어떠한 유형의 참조인지, 어떠한 참조가 위치될 수 있는지 및/또는 그것은 어디에 위치하는지를 나타낼 수 있다.
너트를 잠금 해제하기 위해 잠금 그래프의 각 잠금 노드에 대해 이러한 일련의 단계를 반복할 수 있다. 도 89는 너트 잠금해제의 일반 순서도를 도시한다. 대부분의 단계는 이전 예시에서 자세히 설명되었을 수 있지만 일부 단계는 더 명료하게 할 필요가 있을 수 있다. 단계(8902) - 잠금 노드를 적절한 순회 레벨로 구성: 잠금 노드는 목록 유형 구조에 행 기반 형태로 저장될 수 있으므로 각 잠금 노드 내에 저장될 수 있는 연결 정보를 사용하여 잠금 그래프의 실제 토폴로지를 추출하고 구성할 수 있다. 일단 그래프를 구성하고 나면, 잠금 노드가 적절한 순서로 이동할 수 있도록 그래프 레벨을 적절히 할당하기 위해 하나 이상의 추가 패스를 수행할 수 있다. 단계(8908) - 일부 또는 모든 패스프레이즈 기반 키홀에 대해 프롬프트: 입력 섹션을 처리하는 동안, 패스프레이즈 기반 키홀이 공백 키(패스프레이즈)와 마주치면 패스프레이즈에 대해 프롬프트될 수 있다. 이러한 디폴트 거동은 다른 함수를 호출하거나 임의의 공백 패스프레이즈 키홀을 우회하도록 수정할 수 있다. 순서도에 임의의 논리적 단계 또는 프로세스가 발생할 수 있으며 이로 인해 프로세스가 중단될 수 있는 오류를 포함할 수 있고, 상위 수준의 순서도이므로 이들은 구체적으로 특정되지 않는다: 예를 들어, 작동을 시도하는 임의의 프로세스는 실패하여 알고리즘을 중지시킬 수 있다. 순서도의 나머지 부분은 이전 예시의 경로를 따를 수 있다.
도 90은 너츠 기반 시스템이 너트에 포함된 문서를 어떻게 여는지를 도시한다. 전방 참조가 도입된다. 너트북(9000)은 너트를 사용하는 데이터 컬렉션 구성 어플리케이션일 수 있으며 패스워드, 암호 키 및/또는 인증서의 컬렉션을 저장 및 구성할 때 기본적으로 개인 PKI로서 역할을 할 수 있다. (9002 및 9004)와 같은 파일 심볼은 도해에 걸쳐 너트 파일을 나타내는 데 사용될 수 있다. 너트북 시스템 내에 메인 너트북 접근 키 너트(9002)가 있을 수 있으며, 이는 어플리케이션에서 일부 최소한의 기능을 얻기 위해 잠금 해제될 수 있다. 키는 너트(9002) 내에 저장될 수 있으며 메인 너트북 키로 불릴 수 있으며, 너트(9002) 자체로의 잠금해제 메커니즘은 패스프레이즈를 포함할 수 있다. 본 구성에서 너트를 홀딩하는 임의의 문서에 접근하기 위해, 문서 접근 키가 필요할 수 있는 바와 같이, 메인 너트북 키(9002) 및 문서 접근 키(9004)와의 계위 키 관계가 있을 수 있다. 따라서 문서 접근 키(9004)를 열고 접근하기 위해 메인 너트북 키(9002)가 필요한 바와 같이 계위를 설정할 수 있다. 문서 접근 키를 홀딩하는 너트는 너트 ID#33(9016)일 수 있다. 따라서, 페이로드(9020)에 저장될 수 있는 키는 키 ID#33으로 언급될 수 있다: 문서 접근 키 및 그것을 홀딩하는 너트의 너트 ID는 모두 동일한 ID(이 경우 #33)로 참조될 수 있다. 문서(9040)는 너트 ID#44(9036)를 갖는 너트(9030)에 저장될 수 있다. 유사하게, 문서는 문서 #44로 언급될 수 있다. 사용자가 문서 #44를 열기로 결정할 때, 1차 키홀(9032)의 키홀 중 하나가 이를 열기 위해 키 ID #33이 필요할 수 있음을 지정할 수 있다. 너트 #33(9004)은 너트북에서 요청될 수 있으며, 이를 열려면 너트(9004)를 열어야 할 수도 있다. 해당 너트를 열기 위해, 너트(9002)를 열어야 할 수 있다. 사용자가 너트북(9002)에 대한 패스프레이즈로 너트북을 이미 초기화했으며 너트(9002) 및 너트북이 메인 너트북 키를 메모리에 캐시했다고 가정한다. 그런 다음, 너트(9004)를 열면 너트북의 문서 수준 접근를 위한 추가 패스프레이즈만 필요할 수 있으며, 일단 그것이 열리면, 너트 잠금 해제의 캐스케이드가 발생하여 결국 복호화된 문서 #44(9050)가 드러날 수 있다. 너트북은 세션 중에 가져오는 문서를 신속히 처리하기 위해 제한된 시간 동안 문서 접근 키를 캐시할 수 있지만 비활성, 최대 절전 모드, 화면 잠금, 시간 초과 및/또는 명시적 잠금과 같은 특정 이벤트는 문서 접근을 위해 패스프레이즈를 다시 입력해야 할 수 있다. 본 섹션은 너트북 어플리케이션 및 계위적 패스워드 개념을 도입하며, 이에 대해서는 이후 섹션에서 더 논의될 수 있다. 단일 문서를 여는 데 필요할 수 있는 일련의 단계는 여러 단계일 수 있지만 사용된 논리의 일부 또는 전체는 잠금 노드 및 반복 프로세스에 기반할 수 있으며 대부분의 단계는 사용자에게 은폐될 수 있다. 결과적으로 데이터 일부가 (9030)과 같이 너트에 저장될 수 있으며 일부 또는 모든 환경에서 보안이 일관될 수 있다.
도 91은 그를 홀딩하는 너트의 너트 ID로 너트의 페이로드를 지칭하기 위해 너츠 용어에 공통 사용을 도시한다. 여기에서 그것은 키 #33에 대해 태그가 지정된 키홀(9124)이 너트 ID #33(9112)를 갖는 너트(9110)를 어떻게 실제로 찾는지를 도시하고, 그것은 너트 #33이 키홀(9124)에 삽입될 수 있는 단일 키(9114)를 홀딩할 것으로 기대할 수 있다. 이러한 도해와 예시 중 다수에서, 너트가 파일에 저장될 수 있는다면. 너트 파일의 파일명은 대부분의 작동에서 거의 언급되지 않을 수 있음을 언급하는 것은 흥미로울 수 있다.
다음 도해의 세트는 가변 잠금 및 잠금 노드 연결을 사용하는 잠금 노드 및 잠금 그래프 모델의 유연성과 표현성을 강조할 수 있는 잠금 그래프의 다양한 예시적인 구현예를 도시한다.
도 92는 수령인 잠금 모델의 목록의 단순화된 구현예이다: 임의의 하나의 키(9210)는 너트(9290)의 페이로드를 운반하는 잠금 노드에 도달할 수 있는 ORLOCK 잠금 노드(9220)를 잠금해제할 수 있다. 단순함을 위해, 잠금 노드는 자물쇠 모양으로 표현될 수 있지만 실제로는 완벽하게 작동하는 잠금 노드로서 너트에 대한 일부 메타데이터를 저장할 수 있다.
도 93은 순차적 잠금 모델의 단순화된 구현예이다: 키(9310)가 먼저 제시되고 키(9320)가 두 번째로 제시되며, 이는 너트(9390)의 페이로드에 대한 접근을 허용할 수 있다. MATLOCK 잠금 노드(9312)는 단일 키가 필요한 반면, MATLOCK 잠금 노드(9322)는 키(9320) 및 잠금 노드(9312)로부터의 연결 키가 모두 필요할 수 있다.
도 94는 마스터 키가 있는 순차적 잠금 모델의 단순화된 구현예를 도시한다: 키(9410)가 먼저 제시된 다음 키(9420)가 두 번째로 제시되고, 이는 너트(9490)의 페이로드에 대한 접근을 허용할 수 있다. 또는 마스터 키(9430)가 ORLOCK 잠금 노드(9432)에 직접 제시될 수 있으며, 이는 페이로드(9490)에 대한 접근을 허용할 수 있다. ORLOCK 잠금 노드(9432)는 연결 키 또는 마스터 키로 잠금을 해제할 수 있다.
도 95는 마스터 키를 갖는 잠금 모델의 단순화된 구현예를 도시한다: 키(9510) 또는 마스터 키(9520)가 함께 제시되거나 별도로 제시될 수 있으며, 이는 너트(9590)의 페이로드에 대한 접근을 허용할 수 있다.
도 96은 마스터 키를 갖는 잠금 모델의 단순화된 구현예를 도시한다: 키(9610) 또는 마스터 키(9620)가 함께 제시되거나 별도로 제시될 수 있으며, 이는 너트(9690)의 페이로드에 대한 접근을 허용할 수 있다. 잠금 그래프(9632)에서 MATLOCK 위치는, 너트에 대한 특정 계층 제어가 있을 수 있으며 그것은 일부 너트 메타데이터를 저장하는 너트 부분일 수 있음을 나타낼 수 있다.
도 97은 안전 금고 잠금 모델의 단순화된 구현예를 도시한다: 키(9710) 및 은행 키(9712)가 함께 제시되며, 이는 너트(9790)의 페이로드에 대한 접근을 허용할 수 있다.
도 98은 마스터 키가 있는 비밀 공유 잠금 모델의 단순화된 구현예이다: 키(9810)의 세트에서, 비밀 공유 임계값을 충족하거나 초과하는 여러 키가 함께 제시되고, 이는 너트(9890)의 페이로드에 대한 접근을 허용할 수 있다. 또는, 마스터 키(9820)가 ORLOCK 잠금 노드(9822)에 직접 제시될 수 있고, 이는 페이로드(9890)에 대한 접근을 허용할 수 있다. 키홀/키 맵 구조는 SSLOCK 잠금 노드(9812)에서 활용되는 비밀 공유 스킴에 필요할 수 있는 타인을 은폐할 수 있기 때문에, 키(9810)는 패스프레이스, 대칭 키 및/또는 비대칭 키의 임의 조합일 수 있다.
도 99는 "프리바테그리티(PrivaTegrity)" 유형 잠금 모델의 단순화된 구현예이다: 사용자 키(9920)가 ORLOCK(9922)에 제공되어 페이로드(9990)에 대한 접근을 허용할 수 있다. 또는, 9개의 키(9910)가 MATLOCK(9912)에 함께 제시되어, 너트(9990)의 페이로드에 대한 접근을 허용할 수 있다. "프리바테그리티" 모델은 데이비드 차움에 의해 2016년 초에 제안되어, 이는 사용자에게 알려진 키를 사용하여 안전하게 메시지를 전송할 수 있는 텍스트 메시지 시스템을 구현했지만, 9개 관할 구역 모두가 해당 내용이 중요하며 법적으로 보증될 수 있다는 데 동의하는 경우에 그리고 그러한 경우에만 특정 메시지에 대한 법률 집행 접근을 부여하기 위해, 9개의 국제재판 관할구역이 보유한 9개까지의 다른 키를 수반할 수 있는 공동(collusionary) 백 도어 시스템을 가질 수 있다.
도 100은 단일 너트 내에 다중 페이로드를 저장할 수 있는 다중 너트 구성의 단순화된 구현예이다: 사용자 키(10010) 또는 마스터 키(10012)는 계층 접근 제어에 따라 하나의 페이로드 또는 두 개의 페이로드에 접근할 수 있다. 마스터 키(10020)는 잠금 그래프를 통한 순회 경로 때문에 페이로드(10092)에만 접근할 수 있다. 이러한 잠금 그래프는 함께 작동하는 모듈식 잠금 노드 및 접근 제어층의 유연성을 보여줄 수 있다. 이 단일 너트 내에서 개별 데이터 구획은 부분적으로 또는 전체적으로 다른 방식으로 보호될 수 있다. 마스터 키(10012 및 10020)가 같을 경우, 두 개의 페이로드에 대한 키 홀더 접근을 허용할 수 있다.
도 101은 다중 너트 구성의 단순화된 구현예이다: 사용자 키(10110) 중 어느 하나는 계층 접근 제어에 따라 세 개의 페이로드 중 일부 또는 모두에 접근할 수 있다. SSLOCK(10122)를 위한 키(10120)는 잠금 노드 연결로 인해 페이로드(10194)에만 접근할 수 있다. 이러한 잠금 그래프는 함께 및/또는 개별적으로 작동하는 모듈식 잠금 노드 및 접근 제어층의 유연성을 보여줄 수 있다. 이 단일 너트에서 개별 데이터 구획은 다른 방식으로 보호될 수 있다. 본 개시의 유연한 성질로 인해 잠금 구성의 변화가 무한히 허용될 수 있다.
도 102는 다중 페이로드가 있는 직접 잠금 모델의 단순화된 구현예이다: 본 잠금 그래프는 일반적인 선형 토폴로지가 아닌 너트에 대한 플랫 토폴로지를 나타낼 수 있다. ORLOCK(10212)는 5개의 다른 잠금 노드에 연결하는 데 필요한 다중 연결 키를 구현하는 여러 방식이 있을 수 있다는 점에서 흥미로운 노드일 수 있다. 일 구현예에서, ORLOCK 노드(10212)의 출력 섹션은 5개의 출력 키를 포함할 수 있다. 또 다른 구현예에서, 출력 연결 키 맵은 키홀에 키 맵으로 내장될 수 있고 그런 후에 출력 섹션으로 전파할 수 있다. 또한, 계층 키는 어느 키가 다양한 노드에 접근할 수 있는지에 관해 역할을 수행할 수도 있다.
도 103은 순차적 메시지 전달 예시의 단순화된 구현예를 도시한다: 그것은 너트 및 관계 기반 키(RBK, 전방 참조)를 사용한 공모 방지 설계일 수 있다. 미스터 데이터(10310)는 각각 앨리스, 밥, 찰리 및 대니와 관계를 맺고 있을 수 있다. 일부 또는 모든 참가자가 서로 알고 있을 수 있다. 그의 관계는 각 개인과의 관계 기반 키를 가짐으로써 상징화될 수 있다. 미스터 데이터는 각 개인에게 일련의 비밀 명령을 보내려 할 수 있지만, 참가자 간에 공모하여 미리 엿보는 가능성 없이 특정 순서로 메시지를 읽기를 원할 수 있다. 따라서, 미스터 데이터는 각각의 특정 내용물에 이들 4개의 너트를 구성할 수 있다. 앨리스(10320)에게 전송된 너트는 앨리스와 미스터 너트 사이의 RBK 세트를 사용하여 잠글 수 있으므로 앨리스만이 열 수 있다. 내부(10320)는 앨리스를 위한 메시지 및 밥을 위한 키(KBob)일 수 있다. 그녀는 자신의 메시지를 읽고 밥에게 키(KBob)를 보낼 수 있다. 밥(10330)에게 보낸 너트는 MATLOCK를 채용할 수 있으며, 이는 두 개의 키를 동시에 사용해야만 열 수 있다: 밥과 미스터 데이터 사이의 밥의 RBK 키 및 앨리스로부터의 키(KBob). 내부(10330)는 밥을 위한 메시지 및 찰리를 위한 키(KCharlie)일 수 있다. 그는 메시지를 읽고 찰리에게 키(KCharlie)를 보낼 수 있다. 찰리(10340)에게 보낸 너트는 MATLOCK를 채용하고, 동시에 두 개의 키를 사용해야만 열 수 있다: 찰리와 미스터 데이터 사이의 찰리의 RBK 및 밥으로부터의 키(KCharlie). 내부(10340)는 찰리를 위한 메시지 및 대니를 위한 키(KDanny)일 수 있다. 그는 메시지를 읽고 대니에게 키(KDanny)를 보낼 수 있다. 대니(10350)에게 전송된 너트는 MATLOCK를 채용할 수 있으며, 이는 두 개의 키를 동시에 사용해야만 열 수 있다. 대니와 미스터 데이터 사이의 대니의 RBK 키 및 찰리로부터의 키(KDanny). 내부(1035)는 대니를 위한 메시지일 수 있다. 그는 메시지를 읽을 수 있으며 메시지를 순서화하는 미스터 데이터의 계획은 효과가 있을 수 있다.
사이버 보안 분야에서, '백 도어' 특징은 주제를 둘러싼 다양한 대화 시 부정적인 의미를 불러낼 수 있다. 일반적으로, 백 도어 메커니즘은 어플리케이션 수준에서 구현될 수 있으며, 이 경우 해당 어플리케이션에 의해 처리되는 데이터에 제한 없이 접근할 수 있다. 이러한 유형의 어플리케이션 수준 접근은 해당 백 도어 엔트리에 대한 접근 권한을 얻은 당사자에 따라 해당 어플리케이션에서 처리하는 데이터의 보안을 심각하게 훼손하는 것으로 해석될 수 있다. 이러한 상황에서 타협 가능성이 있다는 인식은 그러한 어플리케이션이 주로 자체 어플리케이션 메모리 내에서 암호화되지 않은 데이터를 처리하므로 백 도어 사용자에게 평문 데이터에 대한 접근을 잠재적으로 부여할 가능성이 있다는 확산으로 인해 잘 발견될 수 있다. 너츠와 특히 너트의 잠금 모델에서, 일부는 너트에 백 도어의 유형으로서 마스터 키를 사용하는 것으로 볼 수 있다; 그러나 너트의 모든 잠금 모델에서, 모든 도어(키홀)는 전면 도어로, 너트에 접근하려면 적절한 암호 키가 필요하기 때문에, 그것은 기술적으로 상당히 다를 수 있다. 너츠 API 또는 임의의 너츠 관련 어플리케이션 구현예는 어플리케이션 수준에서 설계된 백 도어가 없을 수 있다. 너트에 이용가능한 마스터 키 엔트리를 가져야 하는 정당하게 바람직한 이유는 여러 가지가 있을 수 있지만, 모든 그러한 엔트리는 비밀 키로만 정의될 수 있으며 잠금 노드의 입력 섹션을 간략하게 검토함으로써 바로 확인할 수 있다. 그러므로 너츠 관련 어플리케이션 내에 백 도어 유형 기능을 설치하려고 하는 임의의 어플리케이션은 너트의 대상 세트에 대한 마스터 키에 먼저 접근한 후에만 설치할 수 있으며, 마스터 키가 유효한 너트에만 적용될 수 있다. 이는 너트의 보안에 대한 데이터 중심 접근의 유연성, 구획화, 보호 및/또는 복원력을 보여 줄 수 있다.
너츠에 대한 접근 제어의 일부 또는 모든 방법에서, 캡슐화된 데이터 구조 내에서 암호 키를 은폐하는 패턴이 수반될 수 있으며, 그 언폴딩은 대상 데이터세트에 접근할 수 있는 다른 키를 드러낼 수 있다. 본 개시에 도시된 구현예에서, 이러한 키 은폐 방법의 대부분은 데이터 캡슐화 및/또는 데이터 폴딩 방법을 사용할 수 있다. 접근 키를 은폐하는 방법은 구현자가 선호하거나 각 너트에 매개 변수화된 설정일 수 있다. 이러한 방법은 데이터 폴딩, 데이터 캡슐화, 속성 기반 암호화, 기능 암호화, 참조 모니터의 권한 부여 토큰, 또는 암호화 메커니즘을 해독하거나 잠금 해제하는 접근 자료와 함께 제공될 때 후속 접근 키의 선택적 암호화 공개를 제공할 수 있는 임의의 다른 방법을 포함할 수 있다. 본 개시에서 입증적인 구현예는 단순하고 직접적인 역학 및 잘 알려진 특성에 대해 선택되었을 수 있다. 다른 등가의 메커니즘은 구현예의 특정 측면을 간소화하거나 보다 효율적으로 만들 수 있지만, 여전히 핵심적으로 동일한 기능을 제공할 수 있고, 접근 속성에 대한 접근을 제어하는 기능은 대상 데이터 세트에 대한 접근에 정밀성을 허용하며 디폴트에 의해 임의의 참조 모니터와 독립적일 수 있다. 방법론을 드러내는 임의의 등가의 접근 속성은 너트의 내용물에 대해 동일한 수준의 보호를 제공하도록 이제까지 도시된 방법을 대체할 수 있다.
이는 너트 컨테이너와 그 내부 작동에 관한 섹션을 결론지을 수 있다. 내부 메커니즘은 직접 구현될 수도 있고 그러한 구현의 코딩 및 관리를 용이하게 할 수 있는 SDFT 방법의 사용에 의해 구현될 수도 있다. 너트의 페이로드는 너트가 궁극적으로 무엇을 보호할 수 있는가, 어느 것이 텍스트 파일, 바이너리 어플리케이션, 이미지 파일, 원격 시스템에 대한 접근 키, 실행가능한 스크립트, 컴퓨터 간 연결을 안전하게 설정하기 위한 자격증명, 전체 데이터베이스, 운영 체제, 기타 너트에 대한 링크, 스트리밍 데이터 및/또는 텍스트 메시지와 같은 그러나 그로 한정되지 않는 임의의 저장가능한 디지털 데이터일 수 있는가 일 수 있다. 풍부한 구성 가능한 메타데이터를 통해 무엇을 보유하고 있는지 설명할 수 있는 너트의 능력 때문에, 공통 파일 유형의 표준 목록은 그 홀딩 능력에 크게 못 미치칠 수 있다. 잠금 노드 아키텍처는 페이로드가 너트에 걸쳐 있을 수 있으므로 논리 컨테이너 크기가 무제한일 수 있다. 솔리드 스테이트 너츠 호환 칩 또는 회로가 이용가능할 수 있다면, 물리적 장치를 너트 자체로 전환할 수 있으므로 장치는 키 홀더에 의해서만 접근될 수 있다. 이러한 일련의 장치는 적절한 인증으로만 작동할 수 있는 전체 네트워크 및 인트라넷을 구성할 수 있다. 모듈식 잠금 노드 설계의 유연한 성질로 인해 너트에 대한 잠금 구성의 변형이 무한할 수 있다. 다음 섹션에서, 일반적인 서비스 및 방법이 어떻게 확장, 개선 및 재설계되어 일반 사용자가 이용할 수 없을 듯한 능력을 제공하는지를 보여 주기 위해. 보안 저장소의 기초로 너트를 사용할 수 있는 다양한 시스템 및/또는 방법이 소개될 수 있다.
모듈식 I/O
프로그래머는 데이터를 프로그램에 적절하게 가져와 실행 중인 메모리 공간에서 변환하여 계산하고 및/또는 편집한 후 영구적으로 적절하게 저장하는 데 상당한 노력을 기울일 수 있다. 이러한 어플리케이션 개발의 모드의 저열한 부산물은 파일 포맷 및 다양한 버전의 종국적 노후화에 관한 것일 수 있다. 자신의 데이터를 소유, 보유 및 제어하는 것은 유용하고 훌륭한 목표이지만 제대로 읽지 못한다면 그것이 무슨 소용인가? 포맷을 읽고, 포맷을 쓰고, 읽은 데이터에 대해 작업을 수행하고, 읽은 데이터를 표시하는 능력은 일반적인 프로그램의 기본 구성 요소 중 일부를 구성할 수 있다. 모듈식 I/O(MIO)는 접근하는 사람은 누구나 사용할 수 있는 모듈식 구성 요소의 저장소로 이러한 논리적 작업을 모듈화하는 시스템 및/또는 방법일 수 있다. MIO의 부산물은 사용자가 이전 버전의 파일 읽기 및 쓰기 루틴에 접근하여 이전 버전의 파일을 읽을 수 있도록 하는 파일 포맷 변환 모듈을 생성하는 능력일 수 있다. 이는 백워드 호환성이라고 할 수 있다. 포워드 호환성의 개념이 제공될 수도 있지만 이 기능의 유용성은 어플리케이션 모듈을 설계할 수 있는 프로그래머의 기술에 따를 수 있다. 일부 또는 모든 모듈이 너트에 캡슐화될 수 있고, 따라서 각각의 모듈의 인증, 보호 및/또는 접근 제어가 디폴트에 의해 존재할 수 있다는 것은 MIO 시스템의 바람직한 구현예일 수 있다. 도 104는 모듈식 I/O의 일반적인 구성 요소를 도시한다. 요소(10450)는 MIO 구성 요소를 저장 및 구성하는 서버 프로세스인 모듈식 I/O 저장소(MIOR)일 수 있다. MIOR은 이러한 모듈에 대한 지능형 캐시 역할을 할 수 있는 로컬 및/또는 원격 서버 유형 어플리케이션으로 구현될 수 있다. 다른 구현예에서, MIOR은 로컬 장치에 로컬 캐시를 가질 수 있어서 일반적으로 요청되는 MIO 모듈을 보다 원활하게 사용할 수 있다. 파일(10404)에 대해 읽고 및/또는 쓸 수 있는 일반적인 어플리케이션(10402)은 개념적으로, 프로그래밍 방식으로 파일을 읽고(10406) 쓸(10408) 수 있는 모듈로 분할될 수 있다. 파일(10404)은 어플리케이션(10402)에 특정할 수 있는 특정 포맷 "A"으로 포맷될 수 있다. 유사하게, 본 도면은 상응하는 데이터 파일(10412 및 10420) 및 "B" 및 "C"일 수 있는 특정 형식에 대해 MIOR(10450)에 저장될 수 있는, 각각의 읽기 및 쓰기 모듈(10414, 10422, 10416 및 10424)을 갖는 다른 두 어플리케이션(10410 및 10418)을 도시한다. MIOR은 어플리케이션을 위한 다른 작업 및 절차를 수행할 수 있는 다른 모듈을 포함할 수 있다. (10426-10432)에 나와 있는 파일 변환 모듈은 각각의 라벨에 지정된 대로 하나의 파일 형식에서 다른 파일 형식으로 변환을 수행할 수 있다: 모듈 변환_A_B(10426)는 파일 읽기 모듈(10406)에 의해 파일 포맷 "A"에서 어플리케이션의 메모리로 읽은 데이터를 가져온 다음, 메모리 구조를 파일 읽기 모듈 파일_읽기_B(10414)에 의해 생성할 수 있는 메모리 구조와 유사한 메모리 구조로 변환할 수 있다.
모듈식 I/O: 읽기 및 쓰기
도 105는 MIOR(10500)을 사용하는 단순한 읽기 및 쓰기 작동을 도시한다. 파일 포맷 "A"로 저장될 수 있는 파일을 처리할 수 있는 어플리케이션(10502)은 MIOR(10500)로부터 파일 읽기 모듈 파일_읽기_A(10506)를 요청하여 포맷 "A"로 포맷된 파일 F_A(10504)를 읽을 수 있다. 모듈(10506)이 발견되면 앱_A(10502)로 전송(10510)될 수 있으며, 이때 앱_A(10502)가 설치되어 파일 F_A(10504) 상에 파일 읽기 모듈 파일_읽기_A(10506)를 실행할 수 있다. 모듈 파일_읽기_A(10506)는 파일 F_A(10504) 상에 파일 읽기를 수행할 수 있으며 파일 F_A(10504)의 내용을 나타낼 수 있는 내부 메모리 구조를 구성할 수 있다. 파일 F_A(10504)의 내용을 나타낼 수 있는 이러한 메모리 구조는 그런 후에 호출 어플리케이션 앱_A(10502)로 전송될 수 있다. 전송이 성공적으로 완료되면 앱_A(10502)는 실행 중인 메모리 공간에 있을 수 있는 파일 F_A(10504)의 내용으로 계속 기능을 수행할 수 있다. 다른 구현예에서, 파일 읽기 모듈(10506)과 어플리케이션 모듈(10502)이 모두 동일한 내용을 공유하는 기능이 있는 경우, 일단 파일 읽기 모듈 파일_읽기_A(10506)이 파일 내용을 읽으면, 메모리 구조를 앱_A(10502)로 전송할 필요가 없다.
어플리케이션 앱_A(10502)가 파일 형식으로 돌아가 파일 F_A(10504)의 수정된 내용을 저장할 준비가 될 때, MIOR에 연락할 수 있으며 파일_쓰기_A(10508)로 불리는 파일 포맷 "A"에 대한 파일 쓰기 모듈을 요청할 수 있다. 모듈(10508)을 수용(10512)할 시에, 앱_A가 설치될 수 있고, 읽기 프로세스로서 어플리케이션 메모리 구조를 전송하기 위한 동일한 방법을 사용하여 그를 실행할 수 있다. 쓰기 모듈(10508)은 수정된 파일 F_A(10520)를 생성할 수 있는 영구 저장소에 대해 쓰기 작업을 수행할 수 있다. 읽기 및 쓰기 모듈(10506 및 10508)에 대한 MIOR에 대한 요청은 어플리케이션 개발자가 적절하다고 판단하는 임의의 순서에 따라 수행될 수 있다. 일 구현예에서, 필수 I/O 작동의 일부 또는 전부를 어플리케이션에 의해 수행할 수 있음을 보장하여, 나중에 임의의 원치 않는 실패를 방지할 수 있기 위해, 어플리케이션은 진행하기 직전에 관련 I/O 모듈의 일부 또는 전부를 요청할 수 있다. 또 다른 구현예에서, 이전에 실행된 어플리케이션에 의해 이전에 가져온 모듈의 로컬 캐시 MIOR이 있을 수 있으며, 이는 요청 및 가져오기 절차를 신속하게 처리하기 위해 유지될 수 있다.
공유 메모리 세그먼트, 메모리 매핑 파일, 데이터베이스, 프로세스 간 메시지, 바이너리 메모리 덤프 파일, 및/또는 변환된 메모리 덤프와 같은 그러나 이로 한정되지 않는 통상의 기술자에게 두 개 이상의 논리적 프로세스 사이에 메모리 구조를 전송 및/또는 공유하는 다수의 방법이 있을 수 있다. MIO 시스템에서 어플리케이션 메모리 전송의 바람직한 방법은 프로세스 사이에 변환된 메모리 덤프를 사용하는 것일 수 있다. 제이슨 읽기 및 쓰기 함수는 2진 데이터를 인식하도록 수정될 수 있으며, 그들을 베이스64 인코딩 또는 다른 바이너리-텍스트 인코딩 스킴으로 그리고 그로부터 자동으로 변환할 수 있다. 도 106은 일반적인 MIO 파일 읽기 작동에 수반될 수 있는 데이터 변형 및 전송을 도시한다. MIO 읽기 모듈 파일_읽기_A(10604)는 실행 중인 메모리(10606)로 포맷 "A" 에 F_A(10602)로 명명된 파일을 읽을(10620) 수 있다. 따라서, 파일(10602)의 관련 내용은 어플리케이션 메모리 구조(10606)에서 표현(10630)될 수 있다. 어플리케이션 메모리는 제이슨 호환 데이터 구조(10606)에 저장될 수 있으며 제이슨 쓰기 함수 호출을 사용하여 텍스트 형식(10610)으로 마셜링될 수 있다. 선택적으로, 제이슨 출력은 추가 보안을 위해 너트 컨테이너(10608)에 임베딩될 수 있다. 따라서, 어플리케이션 메모리(10606)는 변환되어 읽기 모듈(10604)의 외부에 저장되었을 수 있다. 그런 다음, 너트(10608)가 열리고 앱_A(10612)에 의해 메모리로 읽히고 제이슨 읽기가 데이터 구획(10610) 상에 수행될 수 있다. 따라서, 데이터를 앱_A의(10614) 실행 메모리로 재구성한다. 데이터 전송 방법(10622 및 10624)은 명령 라인 인수(argument), 프로세스 간 메시지 및/또는 데이터 파일(들)을 포함할 수 있지만 이로 한정되지 않는다. 읽기 어플리케이션 및/또는 데이터 처리 어플리케이션은 다른 기계, 동일한 기계, 별도의 스레드 또는 개별 코어 상의 개별 프로세스일 수도 있거나; 어플리케이션은 실행 중인 코드를 즉시 수정할 수 있는 동적 능력이 있는 로컬 또는 원격 기계의 단일 논리 프로세스일 수 있다.
모듈식 I/O: 백워드 호환성
어플리케이션은 수명 동안 개선을 갖는 버전 변경을 통해 점진적으로 변경될 수 있다. 이러한 버전 변경 중 다수는 사용자의 작업을 저장하는 데 사용되는 저장 파일의 포맷 변경이 포함될 수 있다. 역사적으로, 이것은 두 가지 문제로 유도할 수 있다: 부담 및 쇠퇴. 부담은 제품 라인의 수명 동안 모든 포맷 변경에 대한 모든 버전에 백워드 호환성 기능을 추가하여 소프트웨어가 팽창될 때일 수 있다. 이는 다수의 포맷 버전 변경이 수반될 수 있다. 또한 어플리케이션에서 처리할 수 있는 다른 제3자 또는 오픈 포맷이 있다면, 더 많은 소프트웨어 팽창을 초래할 수 있다. 도 105는 어떻게 어플리케이션이 사용할 수 있는 임의의 포맷의 임의의 버전에 있어서, MIOR에서 모듈식 읽기 및 쓰기 모듈이 이용가능하다면, 임의의 과도한 팽창 없이 파일을 읽고 처리할 수 있는지를 도시한다. 또한, 도 105는 어떻게 더 새로운 읽기 및 쓰기 모듈이 MIOR에 독립적으로 추가될 수 있는지, 그리고 MIOR과 통신할 수 있는 모든 어플리케이션이 임의의 프로그램 수정 없이 추가 포맷 모듈에 접근할 수 있는지를 도시한다. 이러한 더 새로운 모듈은 동일한 어플리케이션 제품 라인에 대해 다른 버전의 파일 포맷을 읽을 수 있는 능력일 수 있고, 어플리케이션 개발자를 포함하여 임의의 누군가에 의해 작성된 제3자 파일 포맷을 읽고 쓸 수 있는 호환 모듈일 수 있다.
도 107은 어플리케이션 앱_B(10702)의 버전이 더 최신이고 데이터 파일의 상응하는 더 새로운 포맷 버전 "B"를 사용할 수 있지만 사용자가 파일 포맷(10704)의 이전 버전 "A"를 읽고 쓰려는 경우의 백워드 호환성을 도시한다. 이러한 경우, (10708 및 10710)과 같은 데이터 변환 모듈이 생성되어 MIOR(10700)에 저장될 수 있다. 변환 모듈은 하나의 포맷으로 읽고 또 다른 포맷을 생성할 책임이 있을 수 있다: 이러한 예시에서, 변환 모듈(10708)은 “A” 포맷된 파일로 읽고 그것을 “B” 포맷된 파일로 변환할 수 있다; 변환 모듈(10710)은 “B” 포맷된 파일로 읽고 그것을 “A” 포맷된 파일로 변환할 수 있다. 파일 F_A(10704)가 앱_B(10702)에 표시될 수 있고, 이 경우 파일이 메타데이터로부터 호환되지 않는 포맷일 수 있으며 "A"를 읽는 데 필요할 수 있는 읽기 모듈 시퀀스에 대해 MIOR(10700)에 요청하는 것을 진행할 수 있고, "B" 파일을 생성할 수 있다. MIOR(10700)은 다음 모듈을 앱_B(10702)로 전송하여 응답할 수 있다: 파일_읽기_A(10706), 파일_쓰기_A(10712), 변환_A_B(10708) 및 변환_B_A(10710). 앱_B(10702)는 파일 F_A(10704) 상의 파일_읽기_A(10706)를 호출하고, 그런 후에 파일_읽기_A(10706)는 변환_A_B(10708)를 호출하고 "A" 형식으로 메모리 구조를 모듈(10708)로 전송할 수 있고, 그런 후에 모듈(10708)은 수신된 데이터를 "B" 형식으로 변환하여 앱_B(10702)로 전송할 수 있다. 앱_B가 수정된 데이터를 "A" 포맷으로 파일 F_A에 다시 저장할 준비가 되면, 변환_B_A(10710)를 호출하고 형식 "B"로 메모리 구조를 모듈(10710)로 전송할 수 있고, 그런 다음 변환_B_A(10710)는 메모리 구조를 형식 "A" 로 변환하고 파일_쓰기_A(10712)를 호출하고 메모리 구조를 "A" 형식으로 전송할 수 있고, 그런 다음 파일_쓰기_A(10712)는 형식 "A"로 수정된 내용을 파일 F_A(10714) 고쳐 쓰고 파일 포맷 "A"로 파일 쓰기를 포맷할 수 있다. 보다 복잡한 예시는 여러 변환 모듈을 순서대로 호출해 적절한 이전 포맷 버전으로 반복 변환 프로세스를 수행하거나 개발자가 이러한 요청을 간소화하기 위해, 변환_B_F 및 변환_F_B와 같이 자주 사용되는 버전 변경 컨버터 모듈을 추가한 경우를 들 수 있다.
소프트웨어 팽창은 간단한 계산으로 설명할 수 있다: 인기있는 어플리케이션이 5번의 주요 개정, 각기 10년 동안 3개의 주요 버전 변경을 갖는 3개의 운영 체제에 걸쳐 3개의 파일 포맷 버전을 거쳤다고 가정한다. 또한, 이러한 변경 사항 중 매번 하나의 변경은 어플리케이션에 대해 다른 버전의 I/O 루틴을 요구할 수도 있다고 가정해본다. 이는 어플리케이션의 최신 버전이 135개까지의 버전의 I/O 기능을 자체 내에서 수행하게 할 수 있다. 이러한 상황이 극단적인 경우일 수 있으므로 시간에 걸쳐 어플리케이션에서 백워드 호환성을 유지하기 위해 생성될 수 있는 프로그램 코드의 확산을 이해할 수 있다. 이러한 특성은 소프트웨어의 부담 속성으로 언급할 수 있다.
지속적으로 업데이트되는 모듈을 갖는 적절히 유지 관리되는 MIOR(10700)이 저장소에 추가되는 것은 이력 I/O 포맷 라이브러리 역할을 할 수 있으며 사용자가 향후 언제든지 이전 버전의 데이터 파일에 접근하게 할 수 있다: 이는 소프트웨어 및 데이터 포맷의 노후화에 관한 문제를 다룰 수 있다. 어플리케이션이 더 이상 생산, 판매 및/또는 유지되지 않을 경우, 더 새로운 운영 체제 버전에서 실행하게 할 수 있는 더 새로운 버전이 출시되지 않을 수 있기 때문에 사용 수명이 크게 단축될 수 있다. 어플리케이션이 호환되지 않아 모뎀 컴퓨터에서 더 이상 실행할 수 없는 경우, 어플리케이션에 의해 포맷된 데이터 파일은 접근하기 어려울 수 있다. 영리한 사용자와 개발자는 이러한 문제에 대한 다양한 해결책을 발견했을 수 있지만 그러한 부분에 대해 많은 노력 및/또는 전문적인 지식이 필요할 수 있다. MIOR을 사용하는 것은 적어도 한 명의 개발자가 현재 존재하지 않는 어플리케이션과 연관될 수 있는 모듈을 유지하며, 그가 다양한 운영 체제의 최신 버전과 호환될 수 있는 새로운 버전의 모듈을 정기적으로 추가할 수 있는 것을 요구할 수 있다. 이러한 유형의 정기 관리는 자동화된 장치 테스트 도구와 자동 생성 OS 유형 및 적절한 버전의 모듈을 적시에 사용하여 자동화할 수 있다. 업데이트된 모듈은 MIOR에 삽입될 수 있으며 MIOR에 접근할 수 있는 모든 사람이 개발자의 작업을 통해 혜택을 받을 수 있다; 특정 MIOR이 인터넷 상의 모든 사용자에 의해 접근가능할 수 있다면, 인터넷 상의 일부 또는 모든 사용자는 사용자가 하위 수준 문제와 이러한 문제를 자동으로 해결하기 위해 호출할 수 있는 프로세스에 대해 잘 알고 있지 않아도 자동으로 그로부터 혜택을 받을 수 있다. 소프트웨어의 백워드 및 포워드 호환성 문제는 소프트웨어의 노후화 속성이라고 할 수 있다.
모듈식 I/O: 포워드 호환성
사용자는 그가 몇 년 전에 어플리케이션을 구입, 설치 및/또는 사용했지만 몇 년 동안 어플리케이션의 후속 업그레이드를 구입하지 않은 상황을 경험할 수 있다. 그러나, 어플리케이션은 여전히 그를 위해 작동할 수 있지만 이전 버전의 어플리케이션과 호환되는 파일 형식만 읽고 쓸 수 있다. 어플리케이션의 최신 버전은 이전 시점에 추가 기능이 있는 더 새로운 파일 포맷을 도입했을 수 있다. 이러한 상황에서 사용자에게 두 가지 문제가 발생할 수 있다: 1) 어플리케이션의 버전은 최신 포맷 버전으로 포맷된 파일을 읽지 못할 수 있다. 2) 이러한 어플리케이션에서 최신 형식을 읽을 수 있는 다른 프로그램은 이전에 포맷된 데이터에 접근하지 못할 수 있다. 첫 번째 문제에 대한 해결 방법은 포워드 호환성 읽기 작업이라고 할 수 있고, 그로써 이전 어플리케이션이 모듈 세트를 MIOR에서 직접 로드하여, 데이터에 대한 점진적 변환을 수행할 수 있고, 이 경우 그는 이전 프로그램을 사용하여 더 새로운 버전으로 포맷된 파일을 읽을 수 있다. 두 번째 문제에 대한 해결 방법은 포워드 호환성 쓰기 작업이라고 할 수 있고, 그로써 이전 어플리케이션이 모듈 세트를 MIOR로부터 직접 로드하여, 데이터에 대한 점진적 변환을 수행할 수 있고, 이 경우 그는 이전 프로그램를 사용하여 더 새로운 버전으로 포맷된 파일을 쓸 수 있다. 포워드 호환성을 염두에 두고 개발된 프로그램을 사용하면 기능 손실을 최소화하거나 전혀 없이 MIOR을 사용하여 이러한 유형의 전환을 쉽고 원활하게 수행할 수 있다. 보다 최신 포맷 버전에서 제공되는 더 새로운 기능은 덜 복잡한 어플리케이션 구성에 최적으로 매핑되거나 원시 데이터만으로 대체되어 사용자가 나중에 수정할 수 있다. 도 108은 이러한 두 가지 논리적 연산을 예시와 함께 도시한다.
포워드 호환성 읽기 작업: 앱_A(10802)는 버전 "A"로 포맷된 파일과 호환되지만 사용자는 새로운 파일 포맷 "C"를 읽기 원할 수 있다. 이러한 요청은 MIOR(10800)으로 전달될 수 있으며, 다음과 같은 회기적 변환을 수행할 수 있는 모듈의 시퀀스로 응답할 수 있다: 파일_읽기_C(10806), 변환_C_B(10808) 및 변환_B_A(10810). 모듈 파일_읽기_C(10806)는 버전 "C"로 포맷될 수 있는 파일 F_C(10804)를 읽을 수 있다. 그런 후에 모듈(10806)은 회귀 변환 함수 변환_C_B(10808)를 호출하고 메모리 구조를 모듈에 전송할 수 있다. 모듈 변환_C_B(10808)는 메모리에 있는 데이터에 대한 변환을 수행할 수 있으며 어플리케이션의 이전 파일 포맷 버전인 포맷 "B"와 호환되는 메모리 구조를 생성할 수 있다. 그런 다음, 모듈(10808)은 회귀 변환 함수 변환_B_A(10810)를 호출하고 메모리 구조를 모듈에 전송할 수 있다. 모듈 변환_B_A(10810)는 메모리의 데이터에 대한 변환을 수행할 수 있으며 이전 어플리케이션 앱_A와 호환가능한 소망하는 파일 포맷인, 포맷 “A”와 호환되는 메모리 구조를 생성할 수 있다. 모듈(10810)은 포맷 "A"에서 메모리 구조를 호출 어플리케이션 앱_A(10802)로 전송할 수 있으며 앱_A는 그것을 처리할 수 있다. 따라서 어플리케이션을 수정하지 않고 이전 버전의 어플리케이션에서 더 새로운 버전의 파일 형식을 읽을 수 있다.
포워드 호환성 읽기 작업: 앱_A(10840)는 버전 "A"로 포맷된 파일과 호환되지만 사용자는 원래 능력 너머에 있는 새로운 파일 포맷 "C"를 읽기 원할 수 있다. 이러한 요청은 MIOR(10800)로 전달될 수 있으며, 다음과 같은 회기적 변환을 수행할 수 있는 모듈의 시퀀스로 응답할 수 있다: 파일_쓰기_C(10816), 변환_B_C(10814) 및 변환_A_B(10812). 앱_A(10840)는 변환_A_B(10812)를 호출하고 메모리 구조를 그에 전송할 수 있다. 모듈 변환_A_B(10812)는 메모리에 데이터에 대한 변환을 수행하고, 포맷 "B"와 호환가능한 메모리 구조를 생성할 수 있다. 그런 다음, 모듈(10812)은 회귀 변환 함수 변환_B_C(10814)를 호출하고 메모리 구조를 그에 전송할 수 있다. 모듈 변환_B_C(10814)는 메모리에 있는 데이터에 대한 변환을 수행하고 포맷 "C"와 호환되는 메모리 구조를 생성할 수 있다. 그런 다음, 모듈(10814)은 파일 쓰기 함수 파일_쓰기_C(10816)를 호출하고 메모리 구조를 모듈에 전송할 수 있다. 모듈 파일_쓰기_C(10816)는 소망하는 파일 포맷 버전인, 버전 "C"로 포맷될 수 있는 파일 F_C(10818)를 읽을 수 있다. 따라서 어플리케이션을 수정하지 않고 이전 버전의 어플리케이션에서 새 버전의 파일 포맷을 작성할 수 있다.
본 개시는 도시된 두 가지 예시에 의해 제한되지 않는다. 변환 모듈은 임의의 운영 체제에서 어플리케이션에 대한 파일 포맷의 일부 또는 모든 버전에 접근하도록 생성될 수 있다. 변환 모듈은 해당 어플리케이션 제품 라인 내의 변환으로 제한되지 않을 수 있지만 다른 어플리케이션 제품 라인을 가로질러 변환을 수행하도록 작성할 수 있다. 변환 모듈은 파일에서 데이터베이스, 데이터베이스에서 파일, 파일에서 데이터 스트림, 데이터 스트림에서 파일, 파일에서 웹 페이지, 웹 페이지에서 파일, 파일에서 클라우드 저장소, 클라우드 저장소에서 파일 및/또는 다른 것과 같은 그러나 그로 한정되지 않는 다른 포맷으로의 데이터의 변환을 포함할 수 있다.
모듈식 I/O: 디스플레이
도 109는 MIOR 디스플레이 모듈의 도해를 도시한다. 어플리케이션 앱_A(10902)는 파일 F_A(10904)로부터 데이터를 메모리로 성공적으로 읽어들인 경우, 모듈 디스플레이 A(10908)의 기능을 사용하여 파일 F_A(10904)의 내용을 사용자에게 표시하게 할 수 있다. 디스플레이 모듈에서, 모듈의 기능 측면은 어플리케이션, 데이터 내용 및/또는 개발자의 설계에 따라 매우 크게 달라질 수 있다. 일부 모듈은 어플리케이션 메모리의 데이터에 디스플레이 모듈이 직접 접근할 수 있게 하는 공유 메모리 방법을 사용하도록 설계될 수 있으며, 다른 모듈은 데이터를 디스플레이 모듈로 전송하여 표시할 수 있다. 디스플레이 모듈의 다른 구현예는 화면 포맷 명령 및/또는 표시할 데이터 유형에 대한 템플릿일 수 있고 이는 가능하게 편집이 포함될 수 있다. 디스플레이 기능의 모듈화는 호출 프로그램이 상대적으로 변경되지 않도록 하면서 다양한 하드웨어 및 OS 플랫폼에 대한 맞춤형 디스플레이 모듈을 생성하게 할 수 있다.
너트북 섹션에서 나중에 논의된 컬렉션 아키텍처의 카탈로그는 모듈식 디스플레이의 경량화를 사용할 수 있다. 다른 데이터세트의 컬렉션을 처리, 표시 및/또는 편집하기 위해 매우 더 큰 단일 어플리케이션을 구축하는 대신에, 너트북은 MIOR 아키텍처를 광범위하게 사용하여 너트의 페이로드의 유형에 기반한 단편적 맞춤이 검토되는 것을 허용할 수 있다.
모듈식 I/O: 어플리케이션
도 110에서, MIOR(11000)은 (11022)와 같은 모듈식 어플리케이션 모듈을 저장할 수 있다. 너트브라우저(11020)(전방 참조)는 대부분의 파일 및 디렉터리 브라우저와 모양과 거동이 유사한 어플리케이션일 수 있지만, 너트를 인식하고 너트의 광범위한 메타데이터를 확인하여 이에 대한 조치를 취할 수 있다. 너트의(11030) 메타데이터(11002)에는 보호 및 저장할 수 있는 페이로드 유형과 관련된 정보가 포함될 수 있다. 사용자가 너트브라우저(11020)에서 너트를 선택하고 더블 클릭하여 열면, 너트브라우저는 너트를 열고 메타데이터를 읽어 파일을 여는 데 필요한 모듈을 파악할 수 있다. 메타데이터는 어플리케이션 버전, 파일 포맷 버전 및/또는 디스플레이 버전과 같은 그러나 그로 한정되지 않는 데이터를 포함할 수 있다. 그런 다음, 너트브라우저는 MIOR(11000)에 요청(11004)하여 어플리케이션 앱_A(11022), 파일_읽기_A(11024) 및 디스플레이_A(11026)를 찾는다. MIOR(11000)은 일부 또는 모든 모듈을 반환할 수 있으며 앱_A(11022)는 너트브라우저(11020)에 의해 호출될 수 있다. 일단 앱_A가 실행되면, 너트(11030)에 저장될 수 있는 너트 페이로드 F_A(11028)의 내용을 읽기 위해 파일_읽기_A(11024)를 호출할 수 있다. (11024)에서 호출 모듈 앱_A(11022)로 메모리 구조를 전송한 후, 사용자에게 데이터 F_A(11028)를 보여주기 위해 디스플레이 모듈 디스플레이_A(11026)를 호출할 수 있다.
모듈식 I/O 어플리케이션 모듈은 그들이 무엇을 보유하고 연산하는가 라는 점에서 매우 크게 다를 수 있다: 일부 구현예에서, 그것은 복잡한 논리적 컴퓨팅 모듈일 수 있고, 또 다른 구현에서, 그것은 전체 소프트웨어 설치 패키지를 저장할 수 있다; 또 다른 구현에서, I/O, 디스플레이 및/또는 어플리케이션 기능의 일부 또는 모든 측면을 포함할 수 있으며; 또 다른 구현예에서, 원격으로 사용자 환경의 재시작을 시작할 수 있는 제네시스 너트를 포함하는 정보를 포함할 수 있다. 모듈식 I/O 어플리케이션 모듈의 기능은 이러한 경우로만 한정되지 않는다.
읽기, 쓰기, 디스플레이 및/또는 어플리케이션과 같은 모듈식 I/O 특징은 MIOR 또는 컨테이너 수준에서 접근 제어 메커니즘과 중첩되어 적절한 권한을 가진 사용자만 접근할 수 있다. 이러한 접근 제어 메커니즘은 접근 제어 정책, 소유권 요구사항, 및/또는 보수(remunerative) 목적을 위한 DRM 메커니즘이 포함될 수 있지만 이에 한정되지 않는다. 대부분의 접근 제어는 모듈이 저장될 수 있는 너트 컨테이너의 속성에서 나올 수 있다. 본 개시가 더 구체적으로 논의됨에 따라, 이러한 MIOR 요청이 유도되는 메커니즘에 대해 명확하게 할 수 있다. 데이터 파일 또는 해당 내용이 보안 너트 컨테이너 내에 캡슐화될 수 있는 경우, 너트의 내용에 대해 이용가능한 여러 수준의 메타데이터가 있을 수 있고, 이러한 메타데이터는 그를 생성한 어플리케이션 버전, 디스플레이 버전, 파일 포맷 버전, 크기, 생성 시간, 마지막 수정 시간, 작성자, 파일 유형 및/또는 요약과 같은 그러나 그로 한정되지 않는 데이터 포맷의 세부사항을 특정할 수 있다. OS 버전, 어플리케이션 버전, 하드웨어 구성 및/또는 버전과 같은 환경 속성은 너트를 여는 어플리케이션에 의해 제공될 수 있다. 환경, 데이터 컨텐츠 및/또는 요청된 작업에 대한 이러한 정보의 조각을 사용하여, MIOR은 적절한 모듈을 찾고 작업 또는 오류 메시지를 충족하기 위해 모듈의 세트 중 어느 하나로 회신할 수 있다. 이러한 모듈식 I/O 모듈은 동일한 기계 상에, 다른 기계를 가로질러, 다른 칩 또는 코어를 가로질러, 네트워크 및 컴퓨팅 장치 상의 논리 프로세스(들)를 실행하는 다른 모드를 가로질러 단일 또는 개별 프로세스로 작동할 수 있다. 이러한 모듈을 통해 노후화, 부담, 적응성, 호환성 및/또는 유연성의 문제가 부분적으로 또는 전체적으로 다루어질 수 있다.
너트 이력
너트 컨테이너는 페이로드의 이력을 저장하도록 구조화될 수 있다. 이력의 형태는 주기적 스냅샷, 점진적 델타, 완전한 이벤트 시퀀스 또는 3개의 또는 임의의 다른 보관 방법의 임의의 조합을 포함할 수 있다. 이력 형식은 저장되는 데이터의 유형, 어플리케이션 및/또는 데이터의 선호 및 설계에 따라 달라질 수 있다. 너츠 에코시스템에는 이러한 데이터 이력 보관의 모드를 지원하는 방법 및 시스템이 포함될 수 있다. 이러한 3개의 보관 방법은 해당 기술분야의 당업자에게 알려진 잘 확립된 방법일 수 있다. 너트 이력의 물리적 위치는 테일이라고 하는 너트 부분에 있을 수 있고(도 81), 그 불투명성은 너트 부분에 의해 제어될 수 있다.
도 111은 문서의 두 개의 편집 세션을 커버하는 세 개의 시점에서 이력 구조에 대한 점진적인 변화를 보여주는 단순화된 너트 개략도를 도시한다. 시간 T1에서, 너트(11102)는 데이터 D1(11110)을 저장할 수 있으며 이력은 공백(11112)일 수 있다. 사용자는 시간 T2에서 데이터 D1(11110)을 편집(11126)하고 새 버전 D2(11114)를 생성할 수 있다. 어플리케이션은 스냅샷 보관 방법을 사용할 수 있으며, 너트의 이력 섹션(11116)의 T1(11118)에서 데이터의 스냅샷으로 데이터 D1(11110)의 원본 버전을 저장할 수 있다. 이후, 사용자는 시간 T3에서 데이터 D2(1111)를 편집(11128)하여 새 버전 D3(11120)을 생성할 수 있다. 어플리케이션은 스냅샷 보관 방법을 사용할 수 있으며, 너트의 이력 섹션(11122)의 시간 T2(11124)에서 데이터의 스냅샷으로서 데이터 D2(11114)의 이전 버전을 저장할 수 있다.
시간 T3에서, 이력 섹션(11122)은 이제 이전 버전의 데이터 D3(11120)에 대한 두 개의 별개의 스냅샷(11118 및 11124)을 홀딩할 수 있다. 너트의 이력(11122)은 회귀를 허용하여, 언제든지 간단한 이력 추출 방법을 사용하여 사용자가 원하는 대로 찾아보거나 추출할 수 있거나, 이를 통해 완전히 새로운 문서를 생성할 수 있다. 가까운 데이터에 대해 적절한 이력 증가를 설정하기 위해 이력 섹션의 유형, 빈도 및/또는 수명을 제어할 수 있는 너트 메타데이터 파라미터가 있을 수 있다. 일부 텍스트 문서의 경우, 델타 보관 방법을 사용하면 크기가 상대적으로 작기 때문에 일부 또는 모든 변경사항을 영구적으로 저장하는 것이 실제적일 수 있다. 이렇게 하면 너트는 그 후에 언제든지 저장된 문서의 일부 또는 모든 버전을 생성할 수 있다. 바이너리 문서는 어플리케이션에 따라 스냅샷 또는 델타로 보관될 수 있다. 특정 이벤트 구동 어플리케이션은 이벤트 시퀀스의 완전한 세트를 해당 이력으로 보관할 수 있다. 너트 이력은 너트 자체 내에 보관될 수 있으며 외부 프로그램 및/또는 저장 시스템과는 독립적일 수 있음을 유념한다. 너츠 환경에서 페이로드 유형에 이용가능한 보관 방법이 있을 수 있고, 임의의 페이로드는 이력적으로 이러한 방식으로 보관될 수 있다.
너트 로그
너트 컨테이너는 너트의 이벤트 로그를 저장하도록 구조화될 수 있다. 컴퓨터 프로세스는 너트를 읽고, 조작하고, 쓸 수 있으므로 너트 자체 내에서 너트에 대해 수행된 논리적 연산에 대한 감사 추적을 생성하고 남길 수 있다. 감사 추적은 기본적으로 객체의 관점에서 객체별로 존재할 수 있다. 따라서, 너트 이력과 너트 로그 사이에, 데이터 객체에서 시작된 이후의 이벤트의 기록을 나중에 다시 검토할 수 있도록 단일 컨테이너에 저장할 수 있다. 너트 아카이브의 정확성, 내용 및/또는 단위는 너트에서 작동하는 어플리케이션 개발자에 의한 이러한 기능의 체계적이고 방법론적 사용에 따를 수 있다. 너트 로그의 물리적 위치는 비타라는 너트 부분에 있을 수 있고(도 81), 그 불투명성은 너트 RAT로 제어할 수 있다.
도 112는 단순화된 너트 개략도를 도시하고, 이는 너트에서 발생하는 두 개의 이벤트를 커버하는 세 개의 시점에 걸쳐 이벤트 로그 구조에 대한 점진적인 변화를 보여준다. 본 예시는 너트 이력에 대한 도 111로부터의 시나리오를 계속할 수 있다. 시간 T1에서, 너트(11102)는 데이터 D1(11110)를 홀딩할 수 있으며 해당 로그(11212)는 이벤트 E1에 대한 하나의 로그 엔트리(11218)를 홀딩할 수 있고, 이는 너트(11102)가 시간 T1에서 생성되었음을 나타낼 수 있다. 사용자는 시간 T2에서 데이터 D1을 편집(11226)하여 너트(11104)에 데이터 D2(11114)의 새 버전을 생성할 수 있다. 편집 어플리케이션은 요소(11222)에 의해 지시될 수 있는 바와 같이 T2에서 이벤트 로그 엔트리를 너트 로그(11216)에 기록할 수 있다. 이후, 사용자는 시간 T3에서 데이터 D2(1111)를 편집(11228)하여 새로운 버전 D3(11120)을 생성할 수 있다. 편집 어플리케이션은 요소(11224)에 의해 지시될 수 있는 바와 같이 T3에서 이벤트 로그 엔트리를 너트 로그(11230)에 로그할 수 있다. T3에서, 로그 섹션(11230)은 이제 3개의 별개의 이벤트 로그 엔트리(11218, 11222 및 11224)를 홀딩할 수 있다. 너트의 로그(11230)는 언제든지 간단한 로그 추출 방법을 사용하여 사용자가 원하는 대로 찾아보고 추출할 수 있으며, 이는 너트에 대한 감사를 허용할 수 있다. 너트에 대해 합리적이고 적절한 로그 증가를 설정하기 위해 로그 섹션의 유형, 빈도 및/또는 수명을 제어하는 너트 메타데이터 파라미터가 있을 수 있다.
시스템 관리자와 어플리케이션 개발자는 둘 이상의 어플리케이션이 데이터 객체를 수정하는 데 수반될 경우, 시스템에서 버그 및 오류를 추적하는 데 관련된 작업과 노력을 알고 있을 수 있고, 이는 (그들이 적어도 이들 어플리케이션에 접근할 수 있다면) 그들이 일부 또는 모든 기여 어플리케이션의 이벤트 로그를 검토해야 할 수 있고, 논의되는 객체에 속하는 이벤트 로그 엔트리를 필터링한 다음, 아마도 객체에서 발생한 순서대로 이벤트를 수동으로 재구성해야 할 수 있기 때문이다. 너트 로그를 사용하여, 이벤트 로그의 컬렉션, 필터링 및 재구성은 객체의 관점에서 객체 수준에서 이미 수행될 수 있다. 또한 너트의 메타데이터는 객체 소유자가 원하는 이벤트 로그 메시지의 단위의 수준을 작동 어플리케이션에 특정할 수 있다. 이러한 단위는 다양한 수준의 질의를 추적하기 위해 간단한 수준부터 상세한 디버그 레벨까지의 범위에 있을 수 있다. 민감한 최상위 비밀 페이로드는 접근 이력에 대한 감사 추적을 수행하기 위해 가장 세부적인 수준의 이벤트 로그 세부사항을 요구할 수 있다. 요컨대, 이는 해당 객체가 요구하는 객체별 기반 단위별 레벨 상의 어플리케이션에 의해 객체의 감사가능한 과거를 제어하는 일관되고 맞춤화된 방법일 수 있다. 용어 일관성이란 이용가능한 기록 기능의 일관된 설계와 작동을 나타낼 수 있으며 용어 맞춤화는 설계가 수용할 수 있는 객체별 선호를 나타낼 수 있다.
관계 기반 키(RBK)
어떻게 관계 기반 키(RBK)를 설정하는지에 대한 설명은 암호화 도구를 수동으로 사용할 수 있는 모든 이에게 친숙해야 한다. 밥과 앨리스는 개인적으로 통신하고자 할 수 있으며, 따라서 임의로 생성된 비대칭 암호 키(공개 부분만)를 서로 교환할 수 있으며, 암호화된 메시지와 문서를 교환하기 위해 PGP 또는 그의 등과물과 같은 도구에서 그것을 사용할 수 있다. 밥과 앨리스에 의한 키 쌍의 보호 및 관리는 전적으로 그들에게 달려 있을 수 있다. 이는 각각 관계를 제대로 설정하고, 유지하고, 활용하기 위한 신중하고 힘든 작업일 수 있고, 이는 아마도 앨리스와 밥이 암호 상에 프라이머 또는 두 개, 키의 적절한 사용 및/또는 보호를 요구할 것이다. 이러한 유형의 키 교환은 밥 또는 앨리스가 중심화된 디렉터리 또는 신뢰할만한 웹을 통해 확립된 공개 키 인증서를 갖지 못할 때 발생할 수 있다. 이는 또한 두 참가자 중 한 사람이 완전히 비공개인 통신 채널을 만들어 추가적인 프라이버시층이 필요하다고 느끼는 경우에도 발생할 수 있다.
앨리스와 밥과 같은 사람들에 있어서 RBK가 디폴트 통신 방법이라면, 어떤 일이 일어날까? 어떤 결과가 발생할 수 있으며, 고통 없는 방식으로 이러한 일이 일어나게 하려면 무엇이 필요할 수 있을까? RBK의 설정, 유지 및/또는 사용에 대한 체계적 측면을 자동화할 수 있다. 어떻게 체계적으로 달성될 수 있는지에 관한 세부사항을 조사하기 전에, RBK의 일관된 적용의 특징과 결과를 탐구하는 것은 건설적일 수 있다.
관계 기반 키의 특성
Figure pct00160
두 당사자 간의 신뢰 수준은 동적으로 조정 가능한 파라미터일 수 있다. 이는 두 당사자 간의 실생활 관계의 관찰일 수 있다: 신뢰는 상대적일 수 있다. 그것은 이벤트 및 커뮤니케이션에 기반해 시간이 지남에 따라 상승하고 하강할 수 있다.
Figure pct00161
신뢰 수준의 일방적 조정. 관계에 있는 당사자 중 어느 쪽이든 상대방에 대해 통지하지 않고 마음대로 관계의 신뢰 수준을 일방적으로 변경할 수 있다.
Figure pct00162
관계 채널 건정성은 메시지 문맥에서 확인할 수 있다. 시스템 및 키는 누구에게든 때때로 손상될 수 있다. RBK의 디폴트 사용은 어느 쪽이든 통신 내용을 검사할 수 있으며 다른 사람의 시스템이나 키가 손상될 가능성을 확인할 수 있다. 가장 단순한 경우, RBK 암호화 없는 밥이 보낸 메시지가 가능하게 손상된 것에 관한 신호일 수 있다.
Figure pct00163
관계의 진정한 성질은 시간에 걸쳐 평가될 수 있다. 비정상적인 성질의 메시지가 RBK를 통해 전송되고 보내는 사람의 키가 손상되지 않은 경우, 보내는 당사자가 관계의 성질을 변경했을 수 있다.
Figure pct00164
관계를 잃는 것은 영구적이며 관계의 일부 또는 전부가 상업적 및/또는 의미 있는 가치를 잃을 수 있다. 일방적으로, 어느 한 쪽은 메시지를 차단하거나 RBK 세트를 삭제하여 관계를 차단할 수 있다. 관계 채널의 이러한 논리적 작동은 각 사용자가 결정적이고 일방적인 메시지 차단 능력을 가짐을 나타낸다.
Figure pct00165
당사자들은 상호 우호적인 기본 규칙을 엄격히 준수해야 하거나, 관계를 잃을 위험을 감수할 수 있다-기본 규칙은 시간이 지남에 따라 변할 수 있다. 묵시적 기본 규칙의 위반은 디지털식으로 말하자면, 영구적 방식으로 관계의 일방적 차단을 초래할 수 있다.
Figure pct00166
그것은 디지털 암호화 형식으로, 실세계 관계의 보다 가까운 표현을 허용할 수 있다. 가장 널리 사용되는 형태의 공개 키 암호화는 사람들이 관계를 형성하는 방식과 반대되는 중심화된 모델일 수 있다. RBK는 탈중앙집중화될 수 있으며 사적인 방식으로 공개 키 암호화를 사용할 수 있다.
Figure pct00167
하위 버전의 분리. 밥의 환경 상의 RBK의 하위 버전은 밥 및 RBK 채널에 대해 분리될 수 있고, 그는 그의 연락처, 즉, 앨리스로 확립할 수 있다. 앨리스의 환경에 대한 손상은 밥 및 그들의 상호 이력적 코뮈니케를 갖는 그녀의 채널에 대해 분리될 수 있다. 앨리스에 관한 일부 또는 모든 다른 관계 채널이 안전할 수 있으며 밥의 환경을 파괴한 해커에 의해 침해되지 않을 수 있다.
개인 정보 관리자 또는 PIM은 컴퓨터 소프트웨어에서 잘 알려진 어플리케이션 개념일 수 있다. 이는 개인의 사용을 위한 생산성 및 조직적 도구를 제공할 수 있는 다양한 기능의 혼합으로 널리 정의될 수 있다. PIM은 캘린더, 주소록, 연락처 관리, 패스워드 키퍼, 노트, 이메일 관리자, 채팅 기능, 프로젝트 관리, 주요 관리자, 계산기, 작업 목록 및/또는 활동 로거로서 그러나 그로 한정되지 않는 그러한 도구를 제공할 수 있다. PIM은 이러한 기능의 임의의 조합이거나 단일 기능만을 제공할 수 있다. PIM은 국부적으로 분리된 방식으로 또는 단독으로 PIM 웹 서버에서 또는 그 조합으로 작동하도록 설계될 수 있다. 향후 논의에서, 주소록 또는 채팅 또는 이메일 관리자와 같은 PIM의 그러한 기능에 대한 참조는 제공물의 일부로 이러한 기능 중 어느 하나를 제공하거나 단독 기능일 수 있는 PIM인 것으로 이해될 수 있다.
도 113은 주소록의 일부 또는 모든 관계에 대해 일관된 방식으로 RBK를 지원하기 위해, 앨리스와 밥 사이의 디지털 주소록 엔트리가 어떻게 구조화되는지를 보여준다. 앨리스의 주소록(11310)은 그녀의 PIM에서 제공하는 기능일 수 있으며, 두 개의 엔트리를 가진다: 그녀 자신에 대한 엔트리(11320) 및 밥의 정보에 대한 엔트리(11330). 앨리스 자신의 엔트리에서, 그녀는 자신의 기본 연락처 데이터(11322)와 일부 개인 데이터(11324)를 열거했을 수 있다. 앨리스의 주소록 엔트리(11320)는 앨리스의 시스템에 있는 너트 파일의 페이로드로 확보될 수 있다. 밥의 연락처 카드(11330) 상에, 앨리스는 그의 이름 이메일 주소와 같은 밥에 관한 일부 연락처 정보(11332)를 가질 수 있다. 밥의 주소록 엔트리(11330)는 앨리스의 시스템 상의 너트 파일의 페이로드로 확보될 수 있다. 밥의 주소록(11350)은 그의 PIM에서 제공하는 기능일 수 있으며, 두 개의 엔트리를 가진다: 그 자신의 엔트리(11360) 및 앨리스의 정보에 관한 엔트리(11370). 밥의 자신의 엔트리(11360)에서, 그는 자신의 기본 연락처 데이터(11352) 및 일부 개인 데이터(11354)를 열거했을 수 있다. 밥의 주소록 엔트리(11360)는 밥의 시스템 상의 너트 파일의 페이로드로 확보될 수 있다. 앨리스의 연락처 카드(11370) 상에서, 밥은 그녀의 이름 및 이메일 주소와 같은 앨리스에 관한 일부 연락처 정보(11372)를 가지고 있을 수 있다. 앨리스의 주소록 엔트리(11370)는 밥의 시스템 상의 너트 파일의 페이로드로 저장되고 확보될 수 있다. 앨리스와 밥이 서로 RBK를 설정하기로 결정하면, 둘 사이에 사적인 양방향 통신 채널을 설정하기로 결정할 수 있다. 앨리스는 비대칭 키 쌍(11334 및 11336)을 생성하고, 밥의 주소 카드(11330) 하에 그들을 저장하고 키(11334)의 공개 부분을 밥에게 전송(11344)하여 프로세스를 시작할 수 있다. 전송 프로세스(11344)는 패스프레이즈로 보안된 너트, 종이에 작성된 메시지, 밥에게 전화 통화, 전세계에 알려진 밥의 공개 키를 사용한 메시지, 또는 해당 기술분야의 당업자에게 잘 알려진 보안 키 교환 프로토콜의 임의의 버전에 의해 수행될 수 있다. 밥이 내부에 키(11334)가 있는 본 메시지를 수신하면, 그는 앨리스에게 사적으로 메시지를 보내기 위해 키(11334)로서 앨리스의 주소 카드 엔트리(11370)에 그것을 저장할 수 있다. 그런 다음, 밥은 비대칭 키 쌍(11374 및 11376)을 생성하고, 앨리스의 주소 카드(11370) 하에 그들을 저장하고, 메시지를 암호화하기 위해 앨리스가 그에게 보낸 공개 키(11334)를 사용하여 앨리스에게 키(11374)의 공개 부분을 전송(11346)한다. 앨리스가 이러한 메시지를 받으면, 밥의 메시지에 대한 그녀의 비공개 키(11336)를 사용하여 밥으로부터의 메시지를 복호화할 수 있다. 그녀는 내부에 키(11374)를 추출할 수 있고, 사적으로 밥에게 메시지를 보낼 수 있도록 키(11374)로서 밥의 주소 카드 엔트리(11330)에 그것을 저장할 수 있다. 그녀는 카드(11330)로부터의 키(11374)로 암호화된 밥을 위한 확인 메시지를 생성하고 그것을 임의의 작동 중인 통신 매체를 통해 밥에게 보낼 수 있다. 밥이 메시지를 받은 다음, 카드(11370)로부터의 키(11376)로 그것을 복호화할 수 있으며 그의 RBK 세트가 확립되고 앨리스와 활성 상태인 것으로 표시를 할 수 있다.
앨리스와 밥 사이의 이러한 RBK 설정에서의 단계는 자동화될 수 있으며 단일 동작 버튼이나 명령어로 시작될 수 있다. 이는 너트북이 연락처 컬렉션을 관리하는 방법에 대한 작동 기반이 될 수 있으며 본 문헌에서 나중에 너트북 섹션에서 논의될 수 있다. 프로세스는 PIM의 각각의 주소록에 일부 또는 모든 연락처 카드에 대해 밥 또는 앨리스에 의해 독립적으로 반복될 수 있다. 끝으로, 각각의 개인은 연락처의 각각에 대해 RBK 채널을 확립할 수 있으며, 이는 관계의 각각에 대한 비공개 통신 채널로 간주될 수 있다. 캐시가 앨리스와 밥 사이의 공통의 친구라면, 밥과의 캐시의 RBK 관계는 앨리스와의 캐시의 RBK 관계와 다를 수 있으며 RBK 구성은 이러한 현실을 반영할 수 있다.
이제 우리는 RBK와 그 시스템의 체계적 사용의 문맥을 정의했을 수 있다, 앨리스나 밥을 위해 무엇을 할 수 있는가? RBK를 일관되게 사용하여 두 개체 사이에 메시지를 보내면 통신 채널 건전성을 모니터링할 수 있다. 실제적 사용의 예시는 스팸 메일 감소일 수 있다. 상당한 양의 글로벌 인터넷 대역폭 및 데이터 저장소가 악성 및/또는 상업적 종류에 의한 스팸 이메일에 의해 채워질 수 있음이 추정될 수 있다. 우리는 많은 사람들이 그러한 양의 스팸을 환영하지 않을 것이라고 감히 추측할 수 있다. 스팸을 줄이기 위한 일반적인 방법 중 일부는 콘텐츠 패턴 인식, 도메인 제외, 주소 제외에 기반한 필터링 기술을 사용하고 및/또는 법 집행에 의해 대용량 스팸 서버를 실제로 해체하는 것에 의한 것일 수 있다. RBK 암호화가 통신의 디폴트 방식일 수 있는 모드에서, 스팸은 더 결정적 방식으로 감지될 수 있다.
RBK와 같은 프로세스를 자동화하는 방식에 있어 주요 장애물 중 하나는 사용자 친화적, 사용자 접근가능한 및/또는 사용자 제어가능한 개인 공개 키 인프라스트럭처(PKI) 어플리케이션이 상당히 부족하다는 것이다. 사용에 따른 너트북은 PKI 갭을 채우려 시도할 수 있을 수 있다. 그것은 원활한 방식으로 이러한 정보를 저장, 조작 및 접근할 수 있도록 유연하고 안전하며 및/또는 사용자 제어 가능한 방법을 제공할 수 있다. 도 114는 이제 RBK 통신 채널을 확립할 수 있는 앨리스와 밥 사이의 스팸을 감소시키기 위한 순서도를 도시하고, 그것은 통신의 디폴트 방법일 수 있으며 그들은 잘 알려진 공개 이메일 주소를 사용하고 있을 수 있다. 이메일이 앨리스와 밥 사이에 RBK를 통해 암호화되면, 그때 그것은 아마도 앨리스로부터 밥에게로의 유효한 이메일일 수 있고, 그 역도 성립한다(11414). 어느 한 개인이 RBK로 암호화되지 않은 다른 사람으로부터의 이메일을 받으면, 그때 그것은 대개 거의 스팸일 수 있으며 필터링되어 스팸 휴지통(11412)에 저장될 수 있다.
도 115는 이제 RBK 통신 채널을 확립할 수 있는 앨리스와 밥 사이의 스팸을 감소시키기 위한 순서도를 도시하고, 그것은 통신의 디폴트 방법일 수 있으며 그들은 공개되지 않은 사적인 이메일 주소-익명의 이메일 주소를 사용하고 있을 수 있다. 이메일이 앨리스와 밥 사이에 RBK를 통해 암호화되면, 그때 그것은 아마도 앨리스로부터 밥에게로의 유효한 이메일일 수 있고, 그 역도 성립한다(11514). 어느 한 개인이 RBK로 암호화되지 않은 다른 사람으로부터의 이메일을 받으면, 그때 그것은 대개 거의 스팸일 수 있으며 필터링되어 스팸 휴지통(11512)에 저장될 수 있다. 본 예시는 비공개 이메일 주소의 설정이 앨리스와 밥 사이에서만 사용될 수 있어서 서로에게 RBK 암호화 메시지를 보낼 수 있으므로 RBK 채널 개념을 이메일 주소 수준으로도 확장할 수 있다고 가정할 수 있다. 우리는 이러한 유형의 통신 채널-지향성 이메일 주소를 익명 이메일 주소로 정의할 수 있다.
익명 이메일 주소를 통해 RBK를 지속적으로 사용할 수 있는 앨리스와 밥 사이의 통신 채널은 관계 자체의 건전성를 결정하기 위해 분석될 수 있는 특정 특성을 나타낼 수 있다. 우리는 도 115에 기재될 수 있는 바와 같이 디폴트에 의해 채널로부터 일부 또는 모든 암호화되지 않은 스팸 메시지를 이미 제거했을 수 있다. 이제 우리는 적절한 RBK 암호화 메시지의 문맥을 살펴볼 수 있다. 도 116에 표는 앨리스-밥 통신 채널의 건전성에 대한 결정적 문맥 기반 상태 매트릭스를 열거한다. 그것은 그들의 관계에 어떤 일이 일어날 수 있는지 파악하기 위해, 앨리스에 의한 내용의 정성적 평가를 요구할 수 있다. 이것은 앨리스에 대한 그의 메시지를 통해 알 수 있는 바와 같이 밥의 행동에 기반으로 하는 앨리스의 일방적인 행위 매트릭스를 보여준다.
도 116에 열거된 마지막 증상은 밥의 역할이 웹 벤더에 의해 대체될 때 흥미로운 시나리오를 야기할 수 있다: 즉, 앨리스가 벤더와의 익명의 RBK 통신 채널을 설정했을 수 있다. 도 117에 표는 앨리스-벤더 통신 채널의 건전성에 대한 결정적 문맥 기반 상태 매트릭스를 열거한다. 이제, 앨리스는 이러한 벤더가 익명의 이메일 주소 및 RBK 세트의 채널 식별가능한 측면을 통해 그녀의 정보를 스패머에게 판매했는지 여부를 추적할 수 있다. 명확한 감사 추적을 통해 벤더의 마케팅 부서의 내부 작업에 대한 투명성의 수준을 제공할 수 있다. 이러한 유형의 벤더 책임은 일반 사용자들에 의한 그러한 체계적으로 구체화된 방식으로 전례 없는 것일 수 있다. 벤더가 그녀에게 연락할 수단을 영원히 잃을 수도 있기 때문에, 벤더가 앨리스의 신뢰를 위반하게 되는 결과는 비참할 수도 있다. 실제로, 익명의 이메일 주소 및/또는 RBK를 적절하고 일관되게 사용하면 앨리스가 상점에서 나와 다시는 돌아오지 않는 것의 디지털 등가물을 허용할 수 있다: 이는 벤더가 고객의 개인 정보를 악용하지 못하도록 막는 데 도움이 될 수 있다.
도 118은 벤더의 관점에서 앨리스-벤더 통신 채널의 결정적 문맥 기반 상태 매트릭스를 도시한다. 채널 특성은 벤더가 비즈니스를 보호하고 가능하게 고객을 보호하기 위해 그가 취할 수 있는 동일한 유형의 일방적인 조치를 허용할 수 있다. 벤더에 의한 이러한 방법의 사용은 프라이버시 및 데이터 보안에 대한 그의 평판을 가능하게 향상시킬 수 있다. 또한 벤더가 고객 데이터의 대량의 무분별한 재판매에 개입해서는 안 된다는 것이 묵시적으로 언급될 수 있다.
도 119는 RBK를 사용하여 사용자 시스템 상에서 민감한 데이터의 손상을 분리하는 것을 어떻게 돕는지를 그래픽 표현으로 도시한다. 밥(1191)은 앨리스(11910) 및 데이브(11920)와의 RBK 채널을 가질 수 있다. 밥은 트로이 목마 웹 사이트를 클릭하여 키 로거 또는 그에 상응하는 악의적인 프로그램으로 감염되었을 수 있고 뒤이은 해커는 너트북과 같은 RBK를 위한 보안 데이터 저장소에 침투할 수 있었을 것이다. 그 결과, 일부 또는 모든 연락처가 포함된 밥의 RBK 세트가 손상되었을 수 있다(11900). 밥은 자신의 친구 중 일부 또는 전부에게 연락을 취할 수 있으며, 이러한 위반 사실을 통지하거나, 그의 친구 중 일부는 밥과의 비공개 채널을 사용해 그들에게 보내진 스팸 메시지로부터 밥이나 그의 시스템에 문제가 있음을 이미 추론했을 수 있다. 우리가 앨리스가 RBK 세트의 일부 또는 전부를 저장할 수 있는 그녀의 너트북(11910)을 살펴보면, 그녀는 그녀의 RBK 세트를 밥(11912)이 손상된 것으로 표시할 수 있으며 밥이 그의 시스템에서 바이러스를 제거하기 위해 함께 조치를 취할 때마다 새로운 RBK 세트를 생성할 수 있다. 이는 앨리스에 대한 손상의 범위일 수 있으며, 그것은 그녀가 설정한 다른 RBK 관계에는 퍼지지 않는다. 이는 그녀가 그녀의 연락처를 갖는 익명의 전자 메일 주소를 지속적으로 사용하는 경우 특히 그러하다. 앨리스는 해커로부터 스팸을 수신할 수 있지만 그녀가 채널을 손상 또는 삭제된 것으로 표시하면 스팸은 자동으로 무시될 수 있다. 밥이 준비되면, 앨리스는 RBK에 관한 새로운 세트 및 새로운 익명의 이메일 채널을 생성하고 사적으로 디지털 대화를 계속할 수 있다. 데이브에 대한 프로세스는 그의 RBK 저장소(11920)에 대해 동일하다.
익명의 관계
지난 수십 년 동안 인터넷 상에 형성되어 견고해졌을 수 있는 디지털 관계 토폴로지 및 규칙은 부자연스럽고 비현실적일 수 있다. 익명성은 강력한 관계 구성일 수 있으며, 약국에 가서 개인 용품을 구매하고, 레스토랑에 가서 식사를 하고, 승차를 위해 잡기 힘든 택시를 부르고, 및/또는 항의 집회에 나서는 것과 같은 그러나 그로 한정되지 않는 대개의 일상적인 상호작용을 통해 매일 즐길 수 있는 관계 수준일 수 있다. 이러한 물리적 현실과는 반대로, 인터넷 상의 거의 모든 벤더는 그들이 앨리스로부터 얻을 수 있는 개인 정보의 일부 또는 전부를 포함하여 앨리스가 정확히 누구인지 알고 싶어할 수 있다. 다수의 벤더 자체는 직접 전화번호를 공개하지 않아 비교적 익명성을 유지할 수 있고, 이메일, 트랜잭션 시스템 및/또는 원격 콜 센터에 원격으로 아웃소싱된 고객 서비스 담당자를 통해 고객에게 서비스를 제공할 수 있다. 익명성의 가장 일반적인 사용은 해커와 같이 숨기고 싶어하는 사람들에 의한 것일 수 있다. 현재 인터넷에서 익명을 유지하고 싶어하는 사람들을 위한 다수의 가짜 페르소나 생성 웹사이트가 있을 수 있지만, 그들은 매우 힘든 방식으로 익명성을 유지해야만 하고 의도적으로 속이기 위해 양심적인 결정을 내려야 할 수 있다. RBK 및 익명의 이메일 주소의 사용은 일반적인 사용자에 대해 인터넷 상의 이러한 익명성의 불균형에 대해 부분적 동등함을 가져올 수 있으며, 그들이 가짜 페르소나 및 일상적인 이중성에 의존할 필요 없이 벤더와 그리고 서로 함께 보다 의미있는 양방향 관계를 갖게 할 수 있다.
도 120은 미리 패키징된 개인 데이터 너트의 단순화된 개략도를 도시한다. 너트는 개인(12000)에 대한 구체적인 개인 정보를 저장할 수 있다. 다른 목적을 위해 이러한 개인 정보의 다른 하위 집합을 미리 패키징하는 것을 자동화할 수 있다. (12010)은 단지 이름과 이메일 주소만 포함하는 단순한 개인 데이터 너트가 될 수 있다. 익명의 개인 데이터 너트(12020)는 대체 이메일 주소만 표시할 수 있다. 쇼핑 개인 데이터 너트(12030)는 쇼핑 웹 사이트에서 품목을 구매하는 데 일반적으로 필요한 정보 필드를 포함할 수 있다. 마스터 정보(12000)에서 이러한 데이터 하위 집합의 생성은 단순한 규칙 및 필터를 통해 수행될 수 있으며 인터넷 상의 등록 프로세스 동안 요구에 따라 생성될 수 있다. 벤더 또는 서비스가 데이터 너트를 수락하든 그렇지 않든, 다른 수단에 의해 필요할 때 정보를 정확한 필드에 삽입하도록 이용가능할 수 있다. 사용자가 익명의 이메일 서비스를 이용하는 경우(전방 참조), (12020)과 같은 데이터 너트는 설정된 특정 관계를 위해 동적으로 생성된 익명의 이메일 주소를 제공할 수 있다.
도 121은 너트를 사용하여 자동화된 등록 프로세스에서 이벤트의 시퀀스를 기록한다. 인터넷 상의 벤더는 개인 데이터 너트를 사용 및 수락할 수 있으며 RBK 채널이 자동화된 방식으로 고객과 구축되도록 허용할 수 있다. 사용자는 벤더의 웹 사이트를 방문하여 등록(12100)하기를 원할 수 있다. 사용자는 너트북이 벤더의 웹 사이트에 자동으로 등록하도록 지시하여 프로세스를 시작하고 등록 사이트의 URL을 입력할 수 있다. 너트북은 벤더가 그녀를 등록(12102)시키길 원할 수 있는 정보를 가져오기 위해 벤더에게 문의할 수 있다. 너트북은 벤더가 요청하고 그녀에게 미리 보기를 표시할 수 있는 그녀의 개인 정보의 하위 집합을 구성할 수 있다. 그녀는 등록을 위해 요청한 정보가 수락 가능하고, 너트북이 관련 정보를 수집했을 수 있으며, 프로세스를 계속 진행할 수 있다고 결정할 수 있다(12104). 너트북은 미리 본 정보가 포함된 미리 패키징된 너트를 추출하여 생성할 수 있으며 이를 벤더의 사이트로 전송할 수 있다. 벤더는 등록 요청을 수락할 수 있으며 사전 패키징된 너트(12106)에 지정된 사용자의 이메일 주소로 문의를 보낼 수 있다. 사용자는 특정 URL로 이동하여 캡차(12108) 또는 가능한 다른 형태의 검증을 입력하도록 요청함으로써 자신이 장난삼아 등록을 하고 있는 웹 봇이 아닐 수 있다는 증거를 제공하도록 요청하는 이메일 상의 벤더의 문의를 받을 수 있다. 캡차가 성공적으로 입력되면, 벤더는 요청이 개인으로부터 온 것일 수 있고 사용자와 함께 자동 생성된 로그인 자격증명, 로그인 키 및/또는 RBK 세트를 진행할 수 있음에 만족할 수 있다. 사용자의 너트북은 벤더를 위한 엔트리 카드, 관련 웹 정보, 로그인 자격증명, 로그인 키 및/또는 RBK 세트(12112)를 자동으로 생성할 수 있다. 등록 프로세스는 프로세스의 몇 가지 지점에서 사용자 상호 작용으로 수행할 수 있다: 초기화, 개인 데이터 패키지 검토/편집, 및/또는 인간 검증. 로그인 이름 선택, 패스워드, 개인 정보 입력 및/또는 벤더를 위한 패스워드 키퍼에서 엔트리를 생성하는 번거로움이 요구되지 않으며 자동화되어 있을 수 있다. 그녀의 너트북이 활성화될 때, 너트북이 자동으로 로그인하도록 지시하면 자동으로 로그인되므로 그녀는 완전히 인증된 모드로 벤더에 즉시 접근할 수 있다. 본 프로세스는 임의의 벤더가 사용자와 벤더 모두의 가능한 이익을 위해 본 방법론을 채택함으로써 수행될 수 있음에 유념한다. 사용자와 벤더의 번거로움을 덜면 데이터베이스 및 그들 사이에 더 많은 트랜잭션의 가능성을 위해 사용자로부터 보다 정확한 정보를 얻을 수 있다.
도 122는 너트 및 익명의 이메일 주소를 사용하여 자동화된 등록 프로세스에서 이벤트의 시퀀스를 기록한다. 인터넷 상의 벤더는 너트를 사용하고 수락할 수 있으며 익명의 이메일 주소를 사용하여 자동화된 방식으로 RBK 채널이 고객과 함께 확립되게 할 수 있다. 사용자는 벤더의 웹 사이트를 방문하여 등록(12200)하기를 원할 수 있다. 사용자는 너트북이 벤더의 웹 사이트에 자동으로 등록하도록 지시하여 프로세스를 시작하고 등록 사이트의 URL을 입력할 수 있다. 너트북은 벤더가 그녀를 등록(12202)시키길 원할 수 있는 정보를 가져오기 위해 벤더에게 문의할 수 있다. 벤더는 익명 등록을 수락하여 너트북이 너트메일 서비스에 연락할 수 있으며 그녀의 계정으로 한 쌍의 익명의 이메일 주소를 요청할 수 있다. 너트북은 벤더 등록으로 보낼 데이터의 미리 보기를 구성하고 표시할 수 있으며, 여기에는 새로 생성된 익명의 이메일 주소를 포함할 수 있다. 그녀는 등록을 위해 요청한 정보를 수용할 수 있을 것으로 결정하고, 너트북은 계속 진행할 수 있다(12204). 너트북은 미리 본 정보가 포함된 미리 포장된 너트를 생성하여 벤더의 사이트로 보낼 수 있다. 벤더는 등록 요청을 수락할 수 있으며 사전 패키징된 너트(12206)에 지정된 사용자의 새로운 익명의 이메일 주소로 문의를 보낼 수 있다. 사용자는 특정 URL로 이동하여 캡차(12208) 또는 가능한 다른 형태의 검증을 입력하도록 요청함으로써 자신이 장난삼아 등록을 하고 있는 웹 봇이 아닐 수 있다는 증거를 제공하도록 요청하는 익명의 이메일 주소 상의 벤더의 문의를 받을 수 있다. 캡차가 성공적으로 입력되면, 벤더는 요청이 개인으로부터 온 것일 수 있고 사용자와 함께 자동 생성된 로그인 자격증명, 로그인 키 및/또는 RBK 세트를 진행할 수 있음에 만족할 수 있다. 사용자의 너트북은 벤더를 위한 엔트리 카드, 관련 웹 정보, 로그인 자격증명, 로그인 키, 익명의 이메일 주소 및/또는 RBK 세트(12212)를 자동으로 생성할 수 있다. 등록 프로세스는 프로세스의 몇 가지 지점에서 사용자 상호 작용으로 수행할 수 있다: 초기화, 개인 데이터 패키지 검토/편집, 및/또는 인간 검증. 로그인 이름 선택, 패스워드, 개인 정보 입력, 이메일 주소 생성 및/또는 벤더를 위한 패스워드 키퍼에서 새로운 엔트리를 생성하는 번거로움이 요구되지 않으며 자동화되어 있을 수 있다. 너트북이 활성화되면, 너트북이 그녀가 자동으로 로그인하도록 지시하면 그렇게 되기 때문에, 그녀는 완전하게 인증된 모드에서 벤더에 원활하게 접근할 수 있다. 본 프로세스에서는 개인 사용자 정보가 요구하지 않을 수 있으며, 생성된 이메일 주소는 이러한 관계를 위해 특별히 생성된 것으로, 이는 사용자와 벤더 사이의 관련 이메일만 이러한 익명 이메일 주소로 도착할 수 있음을 암시한다. 다양한 너트 기반 서비스는 나중에 논의될 수 있으므로 그들 중 일부 또는 전부는 익명 등록을 제공한다.
RBK 및 익명 이메일 주소를 사용하여 설정할 수 있는 통신 채널은 RBK를 통해 모든 것을 암호화하는 디폴트 모드로 인해 결정적 방식으로 스팸을 최소화할 수 있다. 또한 관련될 수 있는 당사자에게 채널의 양방향 제어를 제공하여 관계에 대한 상호 존중 및 그 묵시적 경계가 있을 수 있다. 이러한 묵시적 관계 경계로부터의 일탈은 관계 변화 이벤트를 정확히 보여주며, 질의에서부터 결정적 방식으로 함께 관계에 역할하는 것에 이르기까지 일방적인 반응을 일으킬 수 있다. 밥 또는 앨리스의 데이터를 변경하려고 하는 제3자의 경우, 익명 이메일 주소의 정확한 쌍을 검색하는 것 외에도 제3자가 암호화한 메시지 및 문서도 해독해야 할 수 있다.
자동 등록을 허용하고 처리할 수 있는 웹사이트는 연령 필터링과 같은 그러나 그로 한정되지 않는 부가 서비스를 추가할 수 있다. 부모는 미리 패키징된 너트를 자녀의 장치의 너트서버 상에 보관하여 성별, 연령 및/또는 일반적인 위치와 같은 그러나 그로 한정되지 않는 일부 일반적인 식별 특징을 나타낼 수 있다. 이러한 미리 패키징된 너트는 너트를 수용할 수 있는 임의의 아동 친화적이거나 부모에게 사전 승인된 웹 사이트에 자녀를 자동으로 등록하도록 사용될 수 있다. 벤더는 주류 사이트, 담배 사이트, 영화 미리 보기 사이트, 성인 컨텐츠 사이트 및/또는 총기 사이트와 같은 그러나 그로 한정되지 않는 그들이 제공할 수 있는 이러한 정보 및 서비스에 기반해 접근 시도를 수락 또는 거부할 수 있다. 또한, 인터넷 활동 로깅 너트는 자녀의 활동 및 디지털 위치를 모니터링하기 위해 자녀의 장치의 너트서버 상에 구성될 수 있다. 인터넷 사용에 대한 제한은 가정에서 일부 또는 모든 장치에 걸쳐 이러한 너트를 사용하여 부모가 관리할 수 있으므로 장치 전환이 자녀의 일일 누적 인터넷 사용량에 중요하지 않다. 특정 웹 사이트에 대한 차단 또는 입장은 장치 자체에서 및/또는 너츠 기반 와이파이 라우터 상의 특정 구성 설정과 함께 이러한 아동 식별 너트를 사용하여 수행할 수 있다(전방 참조).
너츠 코어 어플리케이션
도 123의 표는 너츠 코어 어플리케이션 세트를 포함할 수 있는 어플리케이션을 열거한다. 이러한 어플리케이션은 너츠 기술을 활용하는 대부분의 시스템에 상주할 수 있으며, 도 124에 작동 컴퓨팅 장치의 단순화된 도해에 도시된 바와 같은 너트 파일을 취급할 수 있다. 앞서 언급한 바와 같이, 이러한 어플리케이션의 일부 또는 전부는 본 개시에 이전에 논의된 자료에 의해 이미 참조되었을 수 있다. 이러한 어플리케이션은 잠금 노드, 잠금 그래프, 너트 부분, 너트 이력, 너트 로그, MIO, MI OR, 너트 ID, RBK, 경사 불투명성 및/또는 익명의 관계와 같은 그러나 그로 한정되지 않는 너츠의 코어 기능 함수 및 능력의 일부 또는 전부에 대한 의존성으로 인해 본 개시에 더 앞서 자세히 설명될 수 없었다. 이러한 코어 어플리케이션의 일부 또는 전부는 일반 파일로 구현될 수 있지만 이에 국한되지 않는 저장소의 기본 유닛으로 너트를 사용하는 것을 선호할 수 있다. 이는 이러한 시스템이 터치, 저장 및/또는 조작하는 일부 또는 모든 데이터에 디폴트에 의해 높은 수준의 보안 및 접근 제어가 적용될 수 있음을 함축한다. 잠금 노드 설계에 사용되었을 수 있는 설계 철학은 반복, 통합, 독립성 및/또는 식별성에 대한 개념일 수 있으며, 이는 독자가 보다 완벽하게 이들 코어 어플리케이션을 이해하는 데 도움이 될 수 있다.
너츠 코어 어플리케이션: 너트 서버
너트 서버는 도 125에 사용자 장치의 단순화된 도해에 개략적으로 도시될 수 있다. 너트서버가 너츠 호환가능한 환경을 구성하고 유지하기 위해 백그라운드에서 수행할 수 있는 여러 키 기능이 있을 수 있다. 너트서버(12510)는 사용자 컴퓨팅 장치(12500)의 어플리케이션 공간에서 작동할 수 있다. 본 장치는 너트 파일(12522)을 보관할 수 있는 일부 저장소(12520)를 가질 수 있다. 너트서버는 너트북(12512), 너트브라우저(12514) 및/또는 장치 OS를 포함한 다른 어플리케이션(12516)을 포함하는 다양한 어플리케이션과 함께 열려 있는 API 및 통신 채널을 제공할 책임이 있다. 너트서버는 너트서버(12530)를 실행 중이고 가능하게 너트클라우드(12540)와 연결 중인 사용자에게 속한 다른 장치와의 외부 연결을 유지하는 책임을 질 수 있다. 너트서버는 사용자 장치(12500)의 파일 시스템에 대한 대체물이 아니고, 그보다는 로컬 운영 체제 및 파일 시스템을 통해 작동하여, 임의의 너트 파일에 접근하고 그를 처리할 수 있다.
도 126은 너트서버의 주요 내부 부분과 그 기능에 관한 단순화된 도해를 도시한다. 사용자 장치는 하드웨어 및 소프트웨어를 관리하는 운영 체제(12600)를 가질 수 있다. 장치는 네트워크 인터페이스(12602) 및 OS(12600)를 통해 실행되는 연관된 드라이버에 의해 서비스되는 외부 통신을 가질 수 있다. 또한, 장치에는 OS(12600)에 의해 부착되고 관리될 수 있는 파일 시스템(12604)을 가질 수 있다. 파일 시스템 상에 저장될 수 있는 것은 MIOR(12610)의 데이터 저장소이며 사용자 데이터는 너트(12606 및 12608)에 포함될 수 있다. OS(12600)는 다수의 어플리케이션이 실행할 수 있는 어플리케이션 환경으로도 작동할 수 있고, 도해에 나와 있는 다음을 포함한다: 너트서버(12620), 너트북(12642), 너브브라우저(12644), MIOR 서버(12646) 및 다른 앱(12648). 너트서버(12640)는 또 다른 장치 상에 실행 중일 수 있지만 어플리케이션 인터페이스(12636)는 이러한 통신도 처리할 수 있다.
너트서버(12620) 내에, 너트서버에 대한 인증을 수행하고 키 캐시를 유지할 수 있는 모듈(12622)이 있을 수 있다. 너트서버가 시작할 때, 임의의 너트의 임의의 보안층을 자세히 살펴볼 임의의 권한이 없을 수 있다. 사용자 및/또는 하드웨어는 너트서버 인증 모듈(12622)이 특정 키 세트에 대해 접근하게 하는 것을 허용할 수 있는 필요한 인증을 제공할 수 있다. 이것은 키 세트를 홀딩하는 패스프레이즈 보호된 너트를 갖고 사용자에게 패스프레이즈를 제공하도록 요청하고, 너트를 열고 페이로드에 키 세트를 보호된/보호되지 않은 메모리로 캐싱하는 것만큼 간단하거나; 그것은 다수의 컴퓨팅 장치에서 볼 수 있는 보안 하드웨어 제공된 키일 수도 있거나; 그것은 사용자가 제공할 수 있는 USB 키와 같은 그러나 그로 한정되지 않는 하드웨어 토큰일 수도 있다. 키 세트는 로컬 장치에 설치될 수 있는 너트 서버 인증 키 및/또는 각각의 너츠 코어 어플리케이션에 대한 키를 최소로 포함한다. 구성적 목적 및 효율성을 위해 너트서버에 의해 유지될 수 있는 캐시(12624)가 있을 수 있다. 캐시의 일부는 너트 ID의 인덱스(12626)일 수 있다. 본 인덱스는 사용자가 국부적으로 그리고 원격으로 추적하려는 일부 또는 모든 너트 ID를 포함될 수 있다. 인덱스에서 너트 ID를 조회하면 너트 ID가 어디에서 발견될 수 있는지를 나타낼 수 있다. 캐시(12624)의 또 다른 부분은 자주 접근되는 너트에 대해 메모리에 너트 캐시(12628)를 유지하도록 강등될 수 있다.
너트서버는 동일한 너트 ID(12630)를 갖는 2개 이상의 컨텐츠를 동기화할 책임이 있을 수 있다. 너트서버가 적절하게 인증되고 사용자가 소유한 일부 또는 모든 너트에 접근할 수 있는 충분한 키를 가질 수 있으면, 그때 그것은 다양한 너트를 열어 내용을 검사하고 관리할 수 있다. 각각의 너트는 마지막 업데이트 또는 수정의 버전 번호와 타임스탬프를 보유할 수 있다. 너트 상에 업데이트가 발생하면, 너트서버에 이를 통보하거나 너트서버가 이를 통보할 수 있고, 그런 다음 업데이트를 기록하고 인덱스(12626)를 조회하여 업데이트된 너트의 사본이 존재할 수 있는 일부 또는 모든 위치를 국부적으로 또는 원격으로 볼 수 있다. 그런 다음 영향을 받는 너트에 대한 변경 사항을 체계적으로 전파하고 동기화(12630)하기 시작할 수 있다. 이 프로세스는 너트 ID, 버전 번호, 내부 디그, 이력 및/또는 로그와 같은 그러나 그로 한정되지 않는 각 너트에 포함된 메타데이터로 인해 다소 단순할 수 있다. 최신 버전은 다양한 수정 기준이 충족될 경우 단순히 기존 버전을 덮어쓰기 할 수 있다. 너트 서버는 동기화 업데이트의 수행 여부에 대해 너트의 경사 불투명성에 의해 허용되는 조망가능한 메타데이터에 의존할 수 있으므로, 너트 서버가 너트를 부분적으로 또는 전체적으로 자세히 살펴볼 수 있는 것은 불필요할 수 있다. 충분한 평문 메타데이터는 논의되는 너트에 대한 키가 없는 너트서버에 의해 일부 너트가 동기화되는 것을 허용할 수 있다. 버전 포킹(forking) 또는 분기의 가능성이 있는 경우, 사용자는 어느 버전을 현재 버전으로 할지를 결정하는 것이 수반될 수 있다. 복제 기능(12630)은 너트서버를 자세히 살펴보는 것을 허용하여, 이러한 유형의 변경사항을 사용자 제어 장치에 걸쳐 자동으로 전파할 수 있다. 그녀가 자신의 장치에 다중 너트서버를 설치하고 연결할 수 있을 때(12630)에서 제공된 기능은 사용자를 위한 개인 너트클라우드를 구성할 수 있다. 그녀는 자동화된 방식으로 자신의 장치 중 어느 것에서든 동기화되고 및/또는 복제된 너트를 즐길 수 있다. 보다 복잡한 버전 문제가 발생하거나 너트의 특정 이력 버전이 요청될 수 있을 때, 검토 제어 모듈(12632)이 이러한 요청을 처리할 수 있다. 그것은 너트에 의해 사용되는 특정 버전 델타 방법을 활용할 수 있으며 보다 세밀한 단위의 버전 제어를 수행하여 원하는 버전의 너트를 생성할 수 있다. 이러한 너트 버전 델타 방법 및 너트의 내용 읽기/쓰기 방법은 로컬 MIOR에 존재하거나 존재하지 않을 수 있어서 필요할 때 이러한 함수를 공급하는 MIOR 인터페이스(12634)가 있을 수 있다.
접근 너트는 웹 사이트 로그인, 데이터베이스 로그인, 기업 시스템, 개인 장치, 소프트웨어 시스템, 다른 너트, 너트서버, 이메일 시스템, 채팅 시스템, 및/또는 비밀 패스키를 요구하는 임의의 디지털 시스템 및/또는 로그인 ID를 포함하지만 이에 한정되지 않는 다른 시스템 또는 컨테이너에 대한 인증 자격증명을 포함할 수 있는 보안 너트로 정의할 수 있다. 너트서버는 해당 기능에 접근할 수 있도록 다른 어플리케이션을 위한 어플리케이션 인터페이스(12636)를 제공할 수 있다. 너트서버는 해당 어플리케이션 유형 및 설치 세부사항에 따라 식별될 수 있으며 추가적으로 너트 ID로서 할당될 수 있다. 사용자 장치에 대한 너츠 구성 파일은 원격 및/또는 로컬 너트서버와 같이 그러나 이에 국한되지 않는 알아야 할 필요가 있는 각 어플리케이션에 대한 정보를 홀딩하는 접근 너트를 찾을 수 있는 파일 시스템(12604)에 구성 디렉토리 또는 영역을 가리킬 수 있다. 예를 들어, 로컬 너트서버(12620) 구성 디렉토리는 너트 ID, 원격 너트서버(12640)를 위한 유형 및/또는 접근 키를 포함하는 접근 너트를 홀딩할 수 있다. 이러한 접근 너트를 성공적으로 여는 것은 로컬 너트서버(12620)에 원격 너트서버(12640)와 연락을 시도할 충분한 정보를 제공할 수 있고 그로 신뢰할 수 있는 통신 채널을 열고 너트를 서로에게 전송할 수 있도록 인증할 수 있다. 비슷한 방식으로, 너트 서버가 상호 작용할 수 있는 다양한 어플리케이션에 대한 구성 너트가 있을 수 있다. 접근 너트는 너트이기 때문에 피어(peer) 너트서버 사이에 동기화 상태를 유지하고, 복제되고 및/또는 전파될 수 있다.
너트서버의 작동 방식에 대한 본 설명으로부터, 너트 내부의 반복 설계 접근은 그들을 구성 및 인증하도록 연관된 어플리케이션 및 데이터를 저장하고 접근하는 방식으로 확장될 수 있다. 민감한 데이터는 가능한 한 너트에 저장할 수 있다. 그러한 단순한 언급의 결과는 너트의 빌트인 기능과 너트서버에서 제공하는 기능을 고려할 때 매우 큰 영향력을 가진다. 인증되지 않은 너트서버는 내부 접근 권한이 없는 너트를 복제, 전파 및/또는 동기화하기에 충분한 기능을 제공할 수 있다. 이는 너트의 경사 불투명성 특성으로 인해 발생할 수 있다: 드러내지 않는 메타데이터를 구성하는 다수의 너트 부분은 평문으로 저장될 수 있으며 너트서버에 의해 너트 상에 수행될 많은 통상적 유지 작업을 위한 충분한 정보를 제공할 수 있다. 너트에 확립될 수 있는 보안 특징으로 인해, WAN 또는 인트라넷에 걸친 어플리케이션 사이에 너트를 전송하기 위한 통신 채널의 보안은 덜 중요할 수 있다.
접근 너트를 사용하는 이러한 사용 방법은 소프트웨어 설계, 프로그래밍 및/또는 사용과 연관된 수많은 문제를 해결할 수 있다. 예를 들어, 소프트웨어 개발자들의 골칫거리는 테스트 데이터베이스 또는 테스트 앱 서버와 같은 테스트 시스템으로 엔트리를 신속히 처리하도록 코드를 개발하는 과정에 있을 때, 코드에 로그인 및 패스워드를 하드코딩(hardcode)하는 경우일 수 있다. 테스트 및 개발의 QA 및 생산 모드로의 전환은 최소로 테스트될 해당 단계 바로 전에 코드에 추가 인증 절차에서 추가함으로써 수행될 수 있다. 접근 너트를 사용하여, 초기 단계에서 개발 프로그램에 그를 통합할 수 있으며 프로세스는 전혀 변경할 필요가 없으며 오직 접근 너트만 변경될 것이다. 관리자는 개발자, QA 엔지니어 및/또는 생산 사용자에 대해 적절한 접근 너트를 할당하고 생성할 수 있다. 이러한 접근 너트는 각각의 너트북 컬렉션에 완벽하게 통합되며 그들이 별도로 로그인하지 않아도 어플리케이션 리소스에 연결하는 것을 허용할 수 있다. 관리자는 실제로 접근 너트에 대한 소유권을 유지하고 필요에 따라 그를 변경할 수 있으며 너트서버는 결국 그를 복제 및/또는 동기화할 수 있어서, 최종 사용자는 결코 그로 인해 번거울 필요가 없고, 그로써 프로젝트 관리자는 사용자와 어플리케이션 사이의 관계를 원격으로 안전하게 관리할 수 있다. 접근 너트의 효과적 사용은 임의의 사용자가 싱글 사인 온(SSO)을 위해 시스템을 구성하는 것을 허용할 수 있다: 로컬 너트서버 및 그 밖에 모든 것에 대한 SSO 온은 필요한 경우 자동으로 인증될 수 있다. 계위 패스워드(전방 참조)는 접근 및 정보의 특정 하위 집합에 대한 추가 보안을 허용할 수 있다.
도 127은 너트 캐시(12628)가 NoSQL 데이터베이스(12728)의 기능에 의해 대체될 수 있는 너트서버의 대안적인 구현예이다. NoSQL 데이터베이스는 객체 지향 데이터베이스의 하위 집합인 것으로 일부에 의해 간주될 수 있으며, 그 중 대부분은 테이블 구조가 아닐 수 있는 너트 유사 컨테이너를 처리하는 데 매우 효율적이다. 카우치베이스와 같은 일부 NoSQL 데이터베이스는 일부 작업을 수행하기 위해 너트서버에 의해 사용될 수 있는 빌트인 복제 및 다른 특징을 제공할 수 있다.
너츠 코어 어플리케이션: MIOR 서버
모듈식 I/O 저장소 또는 MIOR은 도 128에 도시된 바와 같이 서버 기반 서비스일 수 있다. 이는 MIO 시스템 및 방법의 일반적인 구현예일 수 있다. 컴퓨팅 장치(12810)에는 자체 로컬 MIOR 캐시(12812)를 갖는 장치 상에 실행되는 로컬 MIOR 서버를 가질 수 있다. 요청이 로컬 MIOR 서버에 의해 충족되지 않을 경우, 잘 알려진 인터넷 기반 MIOR 서버(12820) 또는 미러(12830)에 도달할 수 있다. 각각의 캐시(12822 및 12832)는 요청에 적합한 MIO 모듈을 검색할 수 있다. 발견된 경우, 사용자의 컴퓨팅 장치 상의 원래 MIOR 서버로 되돌려 보낼 수 있다. 요청된 모듈이 인터넷 상의 제 1 MIOR 서버(12820)에서 발견되지 않을 경우, MIOR 서버(12820)는 그를 찾기 위해 인터넷 상의 다른 MIOR 서버에 도달할 수 있다. 원래 요청은 함께 구성할 수 있는 캐스케이딩 요청의 개수에 대한 타임아웃 또는 캐스케이드 제한을 가질 수 있다. 일부 구현에서, 요청은 적절하다면, 차단 모드에서 보다는 비동기식으로 수행될 수 있다.
본 프로세스에 대한 보다 면밀한 검토는 도 129에 도시될 수 있다. 어플리케이션(12918)은 메모리로 너트 파일(12908)을 읽어야 할 필요가 있을 수 있는 로컬 장치(12910) 상에 실행될 수 있다. 너트(12908)는 MIOR 서버(12914)로부터의 페이로드에 대해 읽기 및 쓰기 모듈의 특정 세트를 필요할 수 있음을 나타낼 수 있다. 어플리케이션은 로컬 MIOR 서버(12914)에 연락할 수 있고, 너트를 위한 읽기 및 쓰기 모듈을 요청할 수 있다. MIOR 서버(12914)는 해당 모듈을 갖고 있는지 확인하기 위해 로컬 MIOR 캐시(12916)를 살펴볼 수 있다. 발견되면, 로컬 시스템 또는 네트워크 상의 모듈 또는 모듈의 위치에 관한 정보를 갖는 어플리케이션에 회신할 수 있다. 발견되지 않으면, MIOR 서버(12914)는 WAN(12900) 또는 MIOR 서버의 다른 네트워크를 가로질러 (12920)과 같은 더 큰 MIO 저장소로부터 그를 요청하기 위해 연락할 수 있다. MIOR 서버(12920)는 다양한 모듈에 대한 인터넷으로부터의 서비스 요청에 최적화된 전용 서버일 수 있다. 일단 MIOR 서버(12922)가 MIOR 서버(12914)로부터 요청을 받으면, 해당 모듈에 대한 로컬 MIOR 캐시(12924)를 확인할 수 있다. 발견된 경우, 요청에 있는 모듈과 함께 MIOR 서버(12914)에 회신할 수 있다. 미발견된 경우, 해당 모듈을 찾아서 피어 그룹에 있는 다른 MIOR 서버에 연락할 수 있다. 그 동안, "찾기는 실패했지만 계속 검색 중" 메시지를 MIOR 서버(12914)로 다시 보낼 수 있다. 원격 요청이 요청된 모듈과 함께 돌아오면, 로컬 MIOR 서버(12914)는 로컬 MIOR 캐시(12916)에 그를 저장하기 전에 그를 인증할 수 있다. 항상 그렇듯이, 어플리케이션(12918)이 모듈을 인스턴스화하고 사용할 때가 되면, 정상 너츠 내부 메커니즘을 사용하여 내용을 인증할 수도 있다.
도 130은 MIOR 서버로부터 MIO 모듈을 가져오기 위한 순서도를 도시한다. 원격 MIOR 서버와 로컬 MIOR 서버 사이의 인증은 원하는 경우 세션 키 또는 익명 계정을 통해 확립될 수 있다. 직원이 기업으로부터 접근 너트에 가능하게 접근 키를 가질 수 있다면, 기업이 주문식으로 개발된 소프트웨어를 사용하여 직원에 대해 MIOR 네트워크의 광범위한 배포를 사용하고자 하지만, 직원은 단지 주문형 모듈을 열고 인증할 수 있을 뿐이고, 따라서 소유 정보는 상대적으로 개방적인 서비스 플랫폼 상에 지속적으로 보호될 수 있는 바와 같이, 더 높은 수준의 서비스는 주문식으로 입력된 너트를 갖는 배타적 모듈에 대한 접근을 포함할 수 있다.
MIOR 캐시의 내부 구성에 대한 일반적인 구현예는 도 131에 도시된다. 캐시(13100)는 교차 참조되고 인덱싱될 수 있는 다양한 모듈에 대한 특정 참조를 포함할 수 있는 인덱스(13110)의 세트를 가질 수 있다. MIOR의 구조는 이러한 구현예에 국한되지 않지만 이러한 조직적 구조 및 기술의 일부 또는 전부를 포함할 수 있다. 모든 모듈이 너트에 저장될 수 있으므로 마스터 너트 ID 인덱스(13112)는 모듈의 일부 또는 전체 너트 ID 및 캐시의 해당 위치가 포함될 수 있다. 파일 I/O 모듈 인덱스(13114)는 기재로써 해당 유형의 모듈 중 일부 또는 전부 및 너트 ID를 열거할 수 있다. 파일 어플리케이션 모듈 인덱스(13118)는 기재로써 해당 유형의 모듈 중 일부 또는 전부 및 너트 ID를 열거할 수 있다. 파일 디스플레이 모듈 인덱스(13120)는 기재로써 해당 유형의 모듈 중 일부 또는 전부 및 너트 ID를 열거할 수 있다. 컬렉션 모듈 인덱스(13116)는 기재로써 컬렉션에 속하는 모듈 중 일부 또는 전부 및 너트 ID를 열거할 수 있다. 캐시의 효율적 검색을 허용하도록 확립된 다른 인덱스가 있을 수 있다. 컬렉션 그룹(전방 참조)(130-13150)은 관련 모듈이 어떻게 함께 그룹화될 수 있는지를 시각적으로 보여주도록 도해로 도시된다. 컬렉션 그룹화 방법은 너트북 작동에서 중요한 역할을 할 수 있다.
너츠 코어 어플리케이션: 너트 브라우저/너트 쉘
도 132는 MIOR 브라우저 어플리케이션의 도해를 나타낸다. 너트브라우저는 핵심적으로 너트쉘 명령 라인 인터페이스(CLI) 어플리케이션의 기능의 최상부 상에 실행되는 그래픽 사용자 인터페이스(GUI)일 수 있다. 일반적으로 알려진 쉘 프로그램은 다른 것들 가운데 배시(bash) 쉘, csh, cmd.exe, 도스 쉘일 수 있다. 일반적으로 알려진 파일 관리자 프로그램은 윈도우즈 익스플로러, 애플의 파인더 및 다른 것들일 수 있다. 이 두 프로그램의 사용자 직면 행동은 공통으로 알려진 상대방과 매우 유사할 수 있다; 그러나 너트브라우저와 너트쉘이 너트를 인식하고 모든 너트 파일에 저장될 수 있는 풍부한 메타데이터를 활용하기 위해 보다 완전하게 그들을 처리할 수 있다는 것이 차이점이다. 모든 너트 파일은 두 가지 방법으로 식별될 수 있다: 즉, 표면적으로 '*.nut' 파일명 확장자 및/또는 너트로서 내용의 더 깊은 프로빙(probing). 대부분의 파일 시스템은 파일명 확장 방법을 수용한다. 너트 읽기 시도는 *.nut 파일이 실제로 너트인지 확인하려고 시도할 때 또는 신뢰할 수 없는 소스에서 로컬 시스템에 새 파일을 도입할 때 사용될 수 있다.
맥 OS, 윈도우즈 및/또는 리눅스와 같은 대부분의 대중적인 운영 체제는 파일명 확장자, 매직 넘버, 균일 유형 식별자(UTI), 파일 시스템 속성 및/또는 다른 것을 포함하는 파일 유형을 식별하기 위해 여러 가지 방법을 사용할 수 있다. 파일명이 변경될 경우 콘텐츠 유형과 인식 사이의 링크가 분리될 수 있기 때문에 파일명 확장이 가장 표면적인 방법일 수 있다. 매직 넘버 및 UTI는 컴팩트하지만 파일 헤드에 포함된 메타데이터의 제한된 형식일 수 있으며, 컨텐츠가 어떤 형식인지를 교차 참조하기 위해 파일 유형의 인덱스에 접근해야 할 수 있다. 이러한 파일 유형의 인덱스는 OS, 파일 시스템 또는 기타 외부 시스템에 존재할 수 있다. 파일 시스템 속성은 파일 시스템의 인덱싱 메커니즘 내에서 해당 인스턴스에 부착될 수 있는 파일 객체의 속성으로 표현될 수 있다. 이러한 정보는 그를 기록하고 인지할 수 있는 파일 시스템/운영 체제 조합의 도메인 내에서만 유효하다. 너트 메타데이터는 페이로드의 유형뿐 아니라 페이로드를 읽고 쓰고 디스플레이하고 및/또는 실행하는 방법도 특정할 수 있다. 그것은 컨텐츠를 성공적으로 처리하는 데 필요할 수 있는 다양한 모듈의 버전의 일부 또는 전부를 특정할 수 있다. 실제로, 윈도우즈 레지스트리 엔트리 및/또는 맥 OS 속성 목록과 같은 그러나 이에 국한되지 않는 컨텐츠를 처리하기 위해 임의의 그리고 모든 외부 참조 테이블에 대한 일부 또는 모든 종속성을 제거할 수 있다. 이는 너트가 컨텐츠에 접근하는 데 요구될 수 있는 필수 구성 요소를 자가 기술하고 규정하는 것을 허용할 수 있으며 MIOR 서버가 접근 시에 부족할 수 있는 임의의 구성 요소를 자동 설치하는 것을 허용할 수 있다.
너트브라우저/너트 쉘은 임의의 선택된 너트의 메타데이터를 읽을 수 있으며, MIOR 서버에 접근(13250)하여 너트의 콘텐츠 상에 적절한 어플리케이션을 열고, 디스플레이하고 및/또는 실행하도록 시도할 수 있다. 사용자가 너트서버(13240)에 적절하게 인증하면, 너트브라우저/너트쉘은 필수적인 접근 너트의 일부 또는 전부에 접근하여(13234) 심지어 더 너트를 적절하게 열 수 있다. 사실상, 너트브라우저/너트쉘은 너트를 적절하게 처리할 수 있는 임의의 어플리케이션과 전혀 다르게 작동할 수 없다.
로컬 시스템에서 사용할 수 있는 영구 저장소에 따라, 너트브라우저/너트쉘은 너트 ID가 다를 수 있는 한 동일한 파일명의 다중 너트가 동일한 저장소에 존재하는 것을 허용할 수 있다. 데이터베이스 및 객체 파일 시스템과 같은 일부 저장 시스템은 파일명에 민감하지 않을 수 있다. 대부분의 클라우드 기반 저장 시스템에서, 너트 ID 식별 방법은 전통적인 경로명 방법보다 더 기본적으로 적합할 수 있다.
너츠 코어 어플리케이션: 너트북
너트북의 개략도가 도 133에 도시된다. 이제, 일반적인 너트 처리 어플리케이션은 유사한 구성 요소와 친숙해 보일 수 있다; 그것은 도 134에 더 일반화된 너트 처리 프레임워크의 토대를 형성하며, 도 132에 너트브라우저 어플리케이션이 작동할 수 있는 방법과 유사하게 작동할 수 있다. 너트북은 너트서버(13334) 및 MIOR 서버(13332)에 대한 필수 인터페이스를 가질 수 있다. 그것은 (13322) 및 (13324)에 표시된 바와 같이 제공되는 기능을 제공하기 위해 필요에 따라 MIOR 모듈(13326-13330)을 처리할 수 있다. 너트북의 주요 기능은 카드 카탈로그라고 하는 캐시(13336)의 조직화된 세트를 유지하는 것일 수 있다. 너트북은 도 135에 도시된 바와 같은 데이터의 컬렉션으로 구성된 전자 카드 카탈로그일 수 있다. 너트북은 일반적인 개인 정보 관리자에서 볼 수 있는 기능 중 일부를 제공할 수 있다. 왜 너트북은 카드 카탈로그인가? 여기 그것이 타당한 다양한 이유의 목록이 있다:
Figure pct00168
사용자는 임의 데이터 세트를 수집, 처리 및 구성하는 용이한 방법이 없을 수 있다.
Figure pct00169
일반적으로, 그것은 스프레드시트, 텍스트 파일 또는 단순 데이터베이스에서 비공식적으로 수행할 수 있다.
Figure pct00170
저장소가 컬렉션에 항목마다 데이터 파일을 포함할 수 있는 안전한 방식으로 다른 데이터 컬렉션을 획득, 구성 및/또는 분류할 수 있는 용이하게 접근가능한 일반 유틸리티가 없을 수 있다.
Figure pct00171
PKI 인증서, 연락처 카드, RBK 세트, 웹 로그인, 야구 통계, VPN 로그인 및 자격증명, 차량 이력, DVD 컬렉션, 스탬프 컬렉션, 도서 컬렉션, 아동의 의료 기록 등... 이러한 데이터는 다른 데이터 또는 카드의 다른 컬렉션으로 간주될 수 있다.
Figure pct00172
너트는 사용 및 운반이 용이한 안전한 방법으로 각 유형의 항목을 안전하게 저장할 수 있다.
Figure pct00173
그러므로, 너츠가 너트로 원활하게 작동하도록 하는 데 필요한 암호화 키의 일부 또는 전부를 저장할 수도 있다.
Figure pct00174
너트북 어플리케이션 내에서 너트 아이디 및 임의의 선택적 검색 인덱스 메타데이터를 인덱싱하여 이러한 카드 컬렉션에 접근할 수 있다.
Figure pct00175
너트서버는 특정 중요한 카드 유형을 인식하고 있으며 다수의 작업에서 처리 우선순위를 정할 수 있다.
Figure pct00176
멀티 너트서버 환경에 존재할 수 있는 너트는 용이한 이송을 위해 항목마다 단일 파일로 패키지되는 디폴트에 의해 복제, 동기화, 로깅, 전체 이력, 암호화 및/또는 접근 제어를 할 수 있다.
너트북은 이용가능한 하드웨어에 따라 보호되거나 보호되지 않는 메모리의 형태로 키 캐시(13520)를 포함할 수 있다. 키 캐시는 만료, 만료 시간 및/또는 만료 이벤트 전에 사용할 수 있는 횟수와 같은 그러나 그로 한정되지 않는 적절한 속성을 갖는 자주 사용되는 접근 키를 저장할 수 있다. 메인 카탈로그 캐시(13550)는 추적될 수 있는 너트의 마스터 너트 ID 인덱스를 가질 수 있다. 캐시는 PKI 인증서(13562), 연락처 카드(13564), 너트서버 접근 카드(13566), 문서 제어 카드(13568) 및/또는 임의의 다른 정의된 컬렉션(13570)과 같은 그러나 그로 한정되지 않는 다른 데이터 컬렉션으로 구성될 수 있다. 이러한 컬렉션은 너트북 및 이용가능한 하드웨어의 구성에 따라 메모리에, 데이터베이스에, 파일 시스템 또는 다른 저장 메커니즘 상에 저장될 수 있다. 데이터베이스 및 파일 시스템 저장소는 네트워크 인터페이스를 통해 국부적으로 접근될 수 있는 한 원격으로 위치될 수 있다. 도 136은 너트북 카탈로그 캐시가 구성되는 방법의 레이아웃의 예일 수 있다.
너트북에 저장된 데이터는 PIM, 패스워드 키퍼, PKI 인증서 관리자, 키 링, 주소록, 필기용 앱, 레시피 북, CD 컬렉션 인덱스, 스탬프 컬렉션 인덱스, 책 컬렉션 인덱스, 의료 기록 및/또는 컬렉션으로 표현될 수 있는 임의의 다른 데이터 세트의 집합체일 수 있다. 일반 사용자를 위한 현재의 기술 수준은 기능적인 디지털 형식으로 그들 삶의 서로 다른 조각을 디지털적으로 구성하도록 다양한 선택을 제공할 수 없다. 주소록 앱은 매우 다양할 수 있지만, 원활하고 용이한 상호 호환성은 부족할 수 있다. 대부분의 현명한 사용자는 주소록에 민감한 패스워드를 저장하지 않을 수 있으며 그러한 특정 목적을 위해 패스워드 키퍼 앱을 평가 및 사용할 수 있다. 심지어 단지 이들 두 개의 단순한 앱, 주소록 및 패스워드 키퍼에 대해서조차, 사용자가 다른 것들 가운데 운영 체제 호환성, 동기화, 클라우드 풋프린트, 백업, 웹 브라우저 통합과 같은 특징을 고려한다면, 의사 결정 매트릭스는 여러 차원에 의해 확장되었을 수 있다. 암호 키퍼와 주소록 사이의 양호한 통합이 보장되지 않을 수 있다. 사용자가 가족의 의료 기록, 자동 서비스 기록, 주택 유지관리 일정, 아이들의 수업과 관련된 학교 로그인, 애완동물 수의학적 기록, 디지털 장치 정보 및/또는 다른 데이터 컬렉션을 추적하길 원하면, 각 데이터 유형에 대해 다른 앱을 사용하여 다양한 포맷으로 그것을 수행해야 할 수 있다. 스프레드시트의 공통 용도는 그러한 서로 다른 데이터 집합을 구성하는 데 있으며 사용자를 위한 범용 데이터베이스로서 역할을 할 수 있다. 너트북은 사용자가 너트 양식에 일부 또는 모든 유형의 정보를 체계적으로 저장하도록 허용할 수 있으며, 임의의 너트 순응 어플리케이션에 데이터 사용을 통합할 수 있다. 적절하게 형성되고 식별될 수 있는 데이터는 정의된 구조를 이용하는 앱에 의해 기능할 수 있다. 너츠 환경의 특징의 일부 또는 전부는 보안, 동기화, 복제, 백업 및/또는 비노후화와 같은 그러나 그로 한정되지 않고 너트북에 모든 너트에 대해 이용가능할 수 있다.
비노후화 및/또는 시간 호환성은 MIOR을 사용하는 중요한 특성일 수 있다. MIOR에 따라 너트북 내에 컬렉션을 이용함으로써, 사용자는 여러 가지 이점을 얻을 수 있다: 그들이 생성할 수 있는 데이터는 그들의 것일 수 있고, 그것은 안전할 수 있으며, 그들은 무기한으로(또는 너츠가 활성 상태이고 지원될 수 있는 한) 그들의 데이터에 접근할 수 있다는 합리적 기대를 가질 수 있다. 또한, 너트북은 데이터베이스 사용자의 세계와 파일 사용자의 세계 사이의 가교 역할을 할 수 있다. 그것은 파일 포맷으로 저장된 기록의 형식으로 데이터베이스의 혜택을 제공할 수 있다. 특정 컬렉션에 대한 읽기/쓰기 기능을 위한 MIO 모듈은 사용자가 염두에 두고 있을 수 있는 특정 컬렉션의 세부사항을 캡처하는 것과 관련된 필드의 구성된 명세 세트일 수 있지만 그것은 이러한 모델에만 국한되지 않을 수 있다. 일부 구현예에서, 읽기/쓰기 모듈은 다양한 데이터베이스에 대한 인터페이스일 수 있으며 호출 어플리케이션에 대한 필드 매핑 및 변환 기능을 제공할 수 있다. 다른 구현예에서, 그것은 소프트웨어 회사로부터의 라이센스 키를 사용하여 페이로드의 소유 바이너리 포맷을 복호화하는 읽기/쓰기 모듈일 수 있다. 모듈이 데이터에 접근하도록 사용될 수 있는 방식의 다양성은 매우 다양할 수 있으며 어플리케이션 개발자의 목표에 따라 많은 순열을 가질 수 있다. 특정 컬렉션의 기본 구조는 단순한 미리 기존 템플릿에서 시작하는 프로그래밍 지식이 거의 없는 사용자에 의해 맞춤화될 수 있다. 새롭고 유용한 컬렉션은 개인적인 용도로 로컬 MIOR에 추가할 수 있으며 너트 파일을 통해 다른 사람들과 공유될 수 있다. 또한 그것은 일부 승인 프로세스 후에 누구에 의해서든 사용을 위해 인터넷 MIOR 서버에 제출될 수 있다.
우리는 너트북의 동기 및 설계 목표의 일부를 다루었을 수 있기 때문에, 우리는 어떻게 너트북이 PKI로서 역할할 수 있는지, 그리고 궁극적으로는 일반 사용자에게 SSO 수준의 서비스를 제공할 수 있는지에 초점을 맞출 수 있다. 도 137은 계위 패스워드의 개념을 간략하게 설명한다. 너츠 용어에서, 패스워드는 패스프레이즈와 등가일 수 있고, 이는 너트가 두 가지 형식을 모두 허용할 수 있으며 임의의 패스워드 대신에, 사용자는 하드웨어 토큰, 인코딩된 바이너리 키 또는 비밀 키를 제공할 수 있는 임의의 다른 방법을 사용할 수 있기 때문이다. 패스워드 및, 2중 인증, 로그인 규칙, 사용자 지정 암호 규칙, 사용자 정의 웹 페이지 및/또는 하드 토큰과 같은 그러나 그로 한정되지 않는 패스워드와 연관된 차별점의 잡초같은 확산은 빠르게 통제불능 상태에 빠질 수 있고, 사용자를 많은 웹 사이트에 걸쳐 패스워드를 매우 쉽게 기억하는 것에 의지하는 정신 상태에 남겨둠으로써 사용자는 고객을 위해 그들의 시스템을 더 안전하게 하려는 개별 벤더의 노력에 대항할 수 있다. 너츠에 대해 선호되는 해법은 효과적인 SSO 접근을 허용하기 위해 가능한 한 적은 수의 패스워드를 사용하는 것이고, 계위적 암호는 이러한 접근을 포함할 수 있다. 너트서버 및 너트북에 대한 기본 인증을 허용하는 메인 패스워드(13710)가 있을 수 있다. 메인 암호는 키 캐시(13520)에 캐시될 수 있는 키를 포함하는 너트를 열 수 있으며 세션 또는 미리결정된 이벤트의 종료 후 자동 삭제되도록 구성될 수 있다. 이러한 메인 키는 대부분의 너트서버 및 너트북 기능을 효과적으로 사용하기에 충분할 수 있다. 쇼핑(13714), 업무(13716), 파이낸스(13718) 및/또는 커뮤니케이션(13712)과 같은 그러나 그로 한정되지 않는 제 2 수준 패스워드가 있을 수 있다. 이러한 패스워드는 유효한 메인 패스워드를 입력한 후에만 입력될 수 있으므로 암호의 계위적 구조를 존중할 수 있다. 이러한 제 2 수준은 사용자가 데이터의 다른 그룹에 대해 서로 다른 보안을 구분하고 분리하도록 허용할 수 있다. 제 2 수준에 각각의 패스워드는 사용자가 노출을 제어할 수 있도록 키 캐시(13520)에서 다른 수명을 갖도록 구성할 수 있다. 예를 들어, 사용자는 은행 컬렉션 카드에 인터넷 은행 계좌 로그인 정보를 가질 수 있고 1회 사용 수명을 가진 파이낸스 키로 이를 보호할 수 있다. 그런 다음, 그는 은행 카드에 저장된 로그인 및 패스워드에 접근하여 은행 웹 사이트에 접근하고자 할 때마다 파이낸스 패스워드를 입력해야만 할 수도 있다. 각 은행 카드 내에서, 웹사이트 패스워드는 무작위로 생성되어 엔트로피를 극대화할 수 있고 너트북에 의해 자동 로그인 사용을 위해 저장될 수 있다. 추가되는 더 많은 수준이 있을 수 있지만 이는 사용자 정보의 복잡성과 그녀가 얼마나 많이 암기하고자 하는가에 따라 다르다. 계위적 패스워드의 일부 또는 전부를 우회할 수 있는 마스터 패스워드(13720)가 있을 수 있다. 마스터 패스워드는 최대한 보호하기 위해 신중하게 선택되거나 임의로 생성될 수 있으며 안전한 장소에 보관될 수 있다. 이러한 계위적 패스워드 방법론을 사용하여, 사용자는 추측하기는 어렵지만 단지 기억해야 할 암호의 개수가 줄어들기 때문에 사용자에 의해 더 쉽게 기억할 수 있는 패스워드의 세트를 단지 신중하게 선택해야 할 수 있고, 이는 그녀가 SSO 접근의 기반을 형성할 수 있다.
도 138은 개인 문서 너트(13806)를 열기 위한 패스워드 엔트리 프로세스를 보여준다. 본 문헌은 메인 수준 키로만 보호될 수 있어서, 메인 패스워드(13710)를 입력하여 메인 키에 접근하여 너트 서버(13804)에 인증하는 것은 개인 문서(13806)를 홀딩하는 있는 너트를 열기에 충분할 수 있다. 도 139에서, 마스터 패스워드(13720) 루트는 메인 패스워드 루트와 정확히 같을 수 있다.
도 140은 어떻게 제 2 수준 패스워드(13716)에 의해 보호된 업무 문서가 열릴 수 있는지를 도시한다. 메인 패스워드(13710)는 메인 키에 접근하기 위해 공급될 수 있으며, 그런 후에 업무 문서 너트(14010)를 잠금해제할 수 있는 업무 수준 키(14008)에 접근하기 위해 업무 패스워드가 입력될 수 있다. 도 141에, 마스터 패스워드(13720) 잠금 해제 루트는 여전히 단일 단계 접근일 수 있는 도 139와 동일하게 유지할 수 있고, 따라서 마스터 패스워드는 보다 안전한 방식으로 생성될 수 있다.
도 142는 너트북 키 캐시(13520)의 더 구체적인 도해를 도시한다. 너트서버(14210)과 연결된 키를 위해 분할된 섹션이 있을 수 있으며 다양한 카드 컬렉션 14230에서 사용할 수 있도록 분할된 섹션이 있을 수 있다.
도 143은 어떻게 너트 북이 카드 카탈로그를 조망할 수 있는지에 관한 프로세스 순서도를 도시한다.
유지된 소유권이란 다른 소유주의 너트의 혼합에 관련된 개념이다. 앨리스가 아크메 컴퍼니에서 새로운 직업을 구하고 그들 모두는 너츠 기반 어플리케이션을 사용하여 각각의 연락처 및/또는 디지털 키를 구성하는 세부사항을 관리한다고 가정해 본다. 추가로, 아크메는 너트를 사용하여 접근 너트를 제어하고 부서별 및/또는 직원 접근 수준별로 회사 문서를 신중하게 잠글 수 있다. 앨리스가 고용될 때, 아크메의 HR 부서는 앨리스에게 일반 기업 접근 너트를 발급할 수 있다: 그것은 앨리스가 내부 기업 연락처 목록, 고객 목록 및/또는 다양한 기업 문서와 같은 정보를 조회할 수 있게 하는 접근 너트일 수 있다. 아크메의 너츠 시스템은 직원의 특정 접근 너트 및 기업 마스터 키로 잠근 래핑(wrapping) 너트에 페이로드 사본을 래핑하여 너트에 저장할 수 있는 민감한 문서에 대해 접근하도록 사용자 정의 및/또는 구성되었을 수 있다. 이러한 기업 너트에 대한 소유권(RAT)은 항상 아크메일 수 있다. 마찬가지로, 앨리스의 개인적인 너트는 항상 그녀를 RAT로 가지고 있을 수 있다. 암호화된 방식으로 소유자를 명확하게 정의하는 능력을 통해 각각의 너트가 너츠 환경 내에서 각각의 소유자에 의해 적절히 취급되는 것을 허용할 수 있다. 너트의 이러한 소유권 특성은 앨리스가 사용하는 유지하는 임의의 장치 상에서 그녀의 너트를 아크메의 너트와 함께 하도록 허용한다. 동일한 사항이 앨리스의 장치 상의 아크메의 너트에도 적용될 수 있다. 앨리스와 아크메 모두는 각각의 접근 너트의 수명을 비교적 짧은 기간으로 설정할 수 있다. 예를 들어, 외부 시스템에 저장된 너트 상에서 수명은 60일로 설정될 수 있다. 그러므로, 60일마다, 키는 그들에 의해 소유된 너트의 각 소유자에 의해 갱신될 수 있거나 그들을 관리하는 외부 너트서버에 의해 자동으로 삭제할 수 있다. 적절한 너트 서버가 적절한 접근 너트에 삭제 명령을 보내고 소유자의 영향을 받는 너트 일부 또는 전체를 체계적으로 삭제하도록 인코딩될 경우, 삭제가 강제로 발생할 수 있다. 그로써, 각각의 당사자는 직간접적으로 또는 간접적으로 외부 시스템에서 그들의 너트 대한 통제를 유지하는 능력을 가질 수 있다. 따라서, 앨리스가 이직하면, 그녀는 회사 데스크탑에 사본을 남겨 둔 개인 연락처 정보가 60일 이내에 자동으로 삭제될 수 있다는 것을 알 수 있다. 동일한 사항이 앨리스의 개인 장치에 남아 있는 아크메 소유의 너트에도 적용될 수 있다: 갱신된 접근 너트가 없으면, 시스템 상에 더 이상 연결된 너트가 없다. 너트의 이러한 유형의 혼합은 둘 이상의 분리된 연락처 목록과 재택 근무를 위해 보안 대책의 다른 세트를 저울질하는 오래된 문제를 해결하는 것으로 간주될 수 있다. 이제 앨리스는 그녀의 개인적 너트북을 자신의 개인적이고 전문적인 삶에서 연락처의 주요 원천으로서 항상 사용할 수 있으며, 그것이 안전하다는 것을 합리적으로 확신할 수 있다.
또 다른 구현예에서, 너트북 연락처 카드는 지인에 관한 개인 정보가 포함된 외부 너트에 대한 참조를 전달하거나 그를 임베딩할 수 있다. 밥으로부터의 외부 너트는 앨리스가 아닌 밥에 의해 소유될 수 있다. 밥은 앨리스에게 자신에 관한 미리 패키징된 제한된 상세한 연락처 너트를 발송하여 앨리스의 너츠 환경에서 그 소유권을 유지할 수 있다. 밥에 관한 앨리스의 너트북 엔트리는 이러한 너트를 밥에 관한 그녀의 연락처 엔트리에 직접 또는 참조에 의해 임베딩할 수 있다. 밥이 새로운 우편 주소, 새로운 직장 주소, 전화 번호 또는 다른 관련 정보와 같은 자신에 관한 일부 또는 모든 정보를 변경할 때마다, 그는 업데이트를 앨리스에 대해 미리 패키징된 연락처 너트로 임의의 이용가능한 수단에 의해 보낼 수 있고, 일단 앨리스의 너트서버가 이를 인지하면, 앨리스의 너트북에 있는 밥에 관한 카드에 적합한 임베딩된 외부 너트를 자동으로 업데이트할 수 있다. 그런 다음, 앨리스의 너트북은 연락처 어플리케이션을 실행하여 업데이트된 카드를 처리할 수 있고, 이는 밥에 관한 앨리스의 카드에서 업데이트로 유도할 수 있다. 이러한 마지막 단계는 밥에 관한 앨리스의 카드 엔트리가 밥의 정보에 관한 지난 이력을 결코 잃지 않고 그녀가 원할 때, 밥의 정보에 대한 다양한 이력 변경사항을 추적할 수 있음을 확인할 수 있다. 이러한 단계 중 일부 또는 모두는 잘 확립되고 신뢰할 수 있는 RBK 관계에 대한 개입 없이 자동으로 발생할 수 있다. 이는 앨리스의 신뢰할 수 있는 RBK 관계 중 일부 또는 전부가 수동 개입이 거의 없거나 전혀 없이 업데이트된 연락처 정보를 가질 수 있다는 것을 의미할 수 있으며, 이는 앨리스와 그녀의 친구들 각각에 대해 시간과 노력을 크게 절약하게 할 수 있다. 앨리스가 99개의 RBK 연락처를 갖고 50개의 업데이트가 발생할 수 있는 경우, 단지 50개의 변경만이 영향을 받는 사람들 자신에 의해 시작되어야만 하고, 나머지는 각각의 영향을 받는 각 사람의 너트서버에 의해 자동으로 처리될 수 있다. 기존의 주소록 설정에서, 50개의 업데이트는 영향을 받는 개인에 의한 50개의 업데이트, 99명의 친구에게 변경 사항을 알리는 50개의 통지가 될 수 있고, 99명의 친구의 각각은, 50개의 업데이트가 수반될 수 있는 100명의 사람들에 의해 소비된 집합적 시간에 따라 낳을 수 있는 거의 10,000개의 이벤트 내의 사본 오류의 일부 수준과 함께 자신의 주소록에 대해 50개까지의 업데이트를 할 수 있다. 이러한 구현예는 중심화된 서비스를 통해 해결할 수 있지만 이러한 서비스는 제한된 개인 정보 보호, 접근, 소유권 및/또는 제어를 제공할 수 있다. 너츠 해법은 가능한 탈중앙집중화를 강조하는 한편, 개인 정보 보호, 이력, 감사 추적 및/또는 소유권의 높은 수준을 일관되게 유지하려고 시도할 수 있다.
너츠 기반 서비스
너츠 기반 서비스는 너트 사용을 인터넷과 같은 더 넓은 네트워크로 확장하여 너트는 다중 원격 당사자 사이에 활용될 수 있다. 도 144에 표는 너츠가 지원하고 제공할 수 있는 다양한 웹 기반 서비스의 예시를 열거하고 도 145는 이러한 서비스에 대한 단순화된 네트워크 레이아웃을 도시한다. 일부 또는 모든 서비스는 최소 수준이 제한과 함께 무료로 제공되는 다중 계층 서비스 패키지를 제공할 수 있다. 상위 계층 패키지에 대한 지불은 별도로 구매한 서비스 크레딧 바우처를 통해 직접 또는 익명으로 이루어질 수 있다. 일부 또는 모든 서비스는 다양한 수준으로 익명으로 사용될 수 있다.
너츠 기반 서비스: 너트메일
도 146에 도시된 너트메일 서버는 등록된 사용자 중 일부 또는 모든 메시지를 너트를 통해 전달하는 웹 기반 전자 메일 서비스이다. 또한, 그것은 자동 등록, 익명 등록, 익명 채널 및/또는 RBK 기반 통신을 지원할 수 있다. 서버는 너트북 및/또는 너트서버 앱과 상호 작용할 수 있다. 너트메일은 이메일을 관리, 편집, 표시, 작성, 전송 및/또는 수신할 수 있게 하는 사용자 장치 상에 실행할 수 있는 클라이언트 구성 요소를 가질 수 있다.
도 147은 자동화된 방식으로 너트메일 상에 익명 등록을 설정하는 과정을 보여준다. 사용자는 이메일 주소, 텍스트 가능한 전화 번호 및/또는 웹 브라우저와 같은 그러나 그로 한정되지 않는 선호하는 바람직한 기존의 연락 방법을 포함할 수 있는 미리 패키징된 너트로 서버에 연락할 수 있다(14700). 서버는 요청을 수락하고(14702) 바람직한 연락 방법을 사용하여 사용자에게 요청을 보낼 수 있다(14704). 사용자는 요청으로부터 요구되는 정보를 입력할 수 있으며 서버는 (14706)에서 암호화 방법의 최대 엔트로피를 채용할 수 있는 무작위로 생성된 로그인 ID와 패스워드를 생성할 수 있다. 서버는 또한 사용자와 서버/관리자 사이의 일부 또는 모든 통신에 사용될 수 있는 사용자와의 RBK 쌍을 생성할 수도 있다. 사용자는 자신의 연락처 정보에 관한 카드에 그녀의 너트북에 로그인 자격증명과 RBK 쌍을 저장할 수 있다(14708). 따라서, 사용자는 주로 자동화된 방식으로 너트메일 서버에 익명으로 등록될 수 있다(14710).
등록 프로세스 동안 생성된 로그인 ID 및 RBK는 너트메일 서버와 통신하는 사용자에 의해서만 사용될 수 있다; 이러한 방식으로, 그것은 사용자와 서버 사이의의 비공개 채널로 간주될 수 있다. 사용자가 너트메일을 역시 사용할 수 있는 또 다른 사람과 통신하고자 할 때, 통신 채널은 도 148에 도시된 바와 같이 너트메일 서버 상에 그 사람과 설정해야 할 필요가 있을 수 있다. 통신 채널은 한 쌍의 무작위로 생성된 이메일 에일리어스를 포함할 수 있고, 이는 에일리어스로서 각각의 사용자의 등록된 계정에 첨부된다. 너트메일 서버는 관계의 익명성을 더 잘 유지하기 위해 일단 통신 채널이 설정되고 검증되면, 이러한 에일리어스 쌍을 추적하지 않을 수 있다. 이러한 에일리어스는 채널에 두 참가자만 사용할 수 있다는 점에서 RBK와 기능이 유사할 수 있다. 에일리어스 생성의 무작위적인 성질은 인터넷을 통해 이메일을 전송하는 동안 참가자의 신원에 대해 아무런 힌트도 주지 않을 수 있다. 이메일 내용 자체는 RBK 방법으로 보호되는 너트에 포함되어 페이로드를 더 보호할 수 있다. 이는 원치 않는 스팸 및/또는 제3자 이메일 스니핑을 일부 또는 전부 최소화할 수 있는 관계 기반 방법 및 난독화의 2개의 분리층을 제공할 수 있다. 일단 통신 채널이 제대로 설정되면, 이메일 교환은 도 149에 도시된 바와 같이 상당히 표준일 수 있다.
너트메일 서버 이면의 보안 근거는 다음과 같이 요약될 수 있다:
Figure pct00177
익명 등록은 손상된 서버를 의미하고, 등록된 사용자 및/또는 이메일 내용에 대해 거의 드러내지 않을 수 있다.
Figure pct00178
RBK 암호화된 너트 내에서 이메일의 캡슐화는 콘텐츠 보안의 또 다른 독립층을 제공할 수 있다. 해킹된 서버는 너트에 의해 보호되는 메시지만 보여줄 수 있다.
Figure pct00179
에일리어스 쌍을 사용하는 너트메일 통신 채널은 이메일 메타데이터를 난독 처리할 수 있다.
Figure pct00180
서버는 영구적으로, 채널을 검증할 수 있을 만큼 긴 시간 동안만 에일리어스 페어링 데이터를 저장할 수 없다.
Figure pct00181
서버는 매우 짧은 시간 동안 이메일 메시지를 저장할 수 있다. 그것은 사용자가 구성할 수 있지만 디폴트는 적어도 2개의 사본이 서버 외부에 또는 미리 구성된 기간 후에 존재할 수 있는 사용자의 너트메일 클라이언트나 너트서버로부터의 정보를 수신한 후에 메시지가 삭제되는 것일 수 있다.
Figure pct00182
이메일에 관한 짧은 이력은 서버가 매우 작은 장기 데이터 저장 요구사항을 갖도록 허용할 수 있다.
Figure pct00183
무작위로 생성된 로그인, 에일리어스, 패스워드 및/또는 RBK는 이용 가능한 데이터 엔트로피를 완전히 사용하여 보안을 강화할 수 있다.
너트북의 통합된 용이함 없이 너트메일 서버를 사용하는 것은 그것이 가능함에도, 쉽지 않을 수 있다. 로그인 ID, 암호 및/또는 에일리어스는 최대 엔트로피 방법을 사용하여 생성될 수 있으며 무작위 문자의 긴 스트링의 뒤섞임처럼 보일 수 있다. 관계와 에일리어스 쌍 사이에 1:1 상응이 있을 수 있어서, 사용자가 추적해야 하는 에일리어스의 개수가 매우 빠르게 많아질 수 있다. 본 통신 방법의 혜택은 참가자에 의해 생성된 데이터가 그 자체로 쓸모가 없을 수 있고, 일부 의미는 대상으로 하는 데이터 감시 및/또는 정교한 재구성 기법을 통해서만 추출될 수 있다는 것이다.
너트메일 서버의 데이터 저장 요구사항은 일반 이메일 서버와 다를 수 있다: 지속적으로 사용자당 훨씬 적은 공간을 사용할 수 있다. 사용자의 너트서버 또는 너트메일 클라이언트가 적어도 2개의 이메일 사본이 너트메일 서버의 외부에 존재한다고 나타낼 때, 너트메일 서버는 그 이메일 너트를 영구적으로 삭제할 수 있다. 이러한 유형의 단순 규칙은 채널에 각각의 참가자가 각기 최소한 코뮈니케의 두 개 이상의 사본을 확립하도록 허용할 수 있다. 너트메일 서버는 각각의 등록된 클라이언트의 너트서버가 장기 저장 공간을 가능한 한 많이 오프로드하는 것을 레버리지함으로써, 사용자별로 자신의 진행 중인 저장 요구 사항을 줄일 수 있다. 각각의 사용자가 자신의 너트메일 클라이언트/너트서버 시스템 상의 이전 이메일을 다운로드하고 복제했을 수 있으므로, 너트메일 서버는 등록된 사용자에 대한 새로운 이메일 메시지만을 가질 수 있다.
너츠 기반 서비스: 너트챗
너트챗은 너트에 기반한 익명 채팅 서비스일 수 있다. 그것은 다음과 같은 채팅 특징을 제공할 수 있다:
Figure pct00184
익명 등록, 쌍별 무작위 에일리어스 및/또는 RBK를 지원할 수 있다.
Figure pct00185
익명성을 위해 로컬 너트챗 허브 전화 번호를 제공할 수도 있다.
Figure pct00186
동시 휴대전화 및 비휴대전화 채팅을 지원할 수 있다.
Figure pct00187
SMS/MMS 및 인터넷 기반 채팅 세션을 동시에 지원할 수 있다.
Figure pct00188
너트메일 서버와 유사한 이력 특징을 지원할 수 있다.
Figure pct00189
채팅 이력은 각각의 연락처 엔트리 저장소에 저장되거나 너트에 저장될 수 있으며 전화 번호나 채팅 주소만이 아닌 대상 연락처 엔트리에 의해 참조될 수 있다.
Figure pct00190
채팅 이력은 너트챗 서비스의 필요 없이 개인 사용을 위해 영구적으로 저장될 수 있다.
Figure pct00191
너트챗은 너트에 포함되어 있을 수 있는 채팅 메시지에 대한 특화된 서비스이다.
Figure pct00192
무작위로 생성된 로그인, 에일리어스, 패스워드 및/또는 RBK는 이용 가능한 데이터 엔트로피를 완전히 사용하여 보안을 강화할 수 있다.
Figure pct00193
메시지 전달을 보장하고 가상 채팅 세션을 표시하기 위해 통신 루트를 다중화할 수 있다.
네트워크 도해의 예시는 도 150에 너트챗 서버에 대해 도시된다. 등록 절차는 너트메일 서버에 의해 채용된 방법과 유사할 수 있으며 사용자를 위한 익명 특징의 일부 또는 전부를 제공할 수 있다. 사용자 장치 상에 실행 중인 너트 기반 너트챗 클라이언트가 있을 수 있으며, 기본 데이터 흐름 구성은 도 15에 3명의 참가자 사이의 채팅 세션에 대해 도시된다. 중앙(15100)에서 코디네이터로서 역할을 하는 너트챗 서버와의 표준 텍스트 메시지 전달 토폴로지일 수 있다. 너트챗은 너트에 기반할 수 있기 때문에, 세션의 전체 채팅 이력은 너트에 저장될 수 있으며, 따라서 적절하게 구성된 경우 너트서버 복제/전파/동기화 특징을 자동으로 활용할 수 있다. 너트서버는 채팅 세션에서 실시간 상호 작용의 성질로 인해 보다 적시 방식으로 처리할 수 있도록 너트채트 너트의 우선 순위를 지정하도록 구성할 수 있다. 도 151을 자세히 보면, 동일한 채팅 너트가 다중 위치에 존재함을 보여준다; 그것은 채팅 토폴로지가 복수의 물리적 위치에서 데이터 상태를 원활하게 동기화하는 것과 같음을 보여준다. 도 152는 사용자의 너트서버를 사용하여 너트챗 세션을 복제할 수 있는 프로세스의 데이터 흐름의 예시이다. 각각의 채팅 참가자가 너트(15122-15126)에 채팅 세션 이력의 일부 또는 전부를 저장할 수 있기 때문에, 너트서버(15238)는 (15242)와 같은 피어 너트서버를 가로질러 이러한 너트에 변경사항을 전파할 수 있다. 이러한 체계적 방식으로 데이터를 적절히 동기화함으로써, 사용자가 그의 장치 #4(15240) 상에 너트챗 클라이언트(15260)를 가져올 때, 그는 장치 #2 상에 남겨둔 것과 동일한 세션 이력을 볼 수 있으며 너트챗 서버는 어떤 경우에도 장치 #4를 최신 상태로 가져오는 데 관여하지 않았다. 채팅 세션이 시작될 때, 그리고 각각의 너트챗 클라이언트에 의해 채널의 어느 한 쪽 상의 채팅 너트를 검토하여 비동기화된 것으로로 결정할 수 있을 때, 최신 버전으로 업데이트된 세션을 가져오기 위해 강제 동기화 절차가 자동으로 시작될 수 있다(채팅 이력의 분류는 기본적으로 너트 이력으로도 알려진 페이로드의 새로운 상태로 표시될 수 있다). 예를 들어 앨리스는 밥과의 오랫동안 익명의 너트챗 채널을 갖고 있을 수 있지만, 어떻게든 그녀는 스마트폰 상에 세션 이력을 저장하고 있는 채팅 너트를 분실하거나 삭제했을 수 있다. 그녀가 밥과의 이러한 너트챗 세션을 다시 시작하고 너트챗 서버를 통해 연락할 수 있을 때, 서버는 앨리스와 밥 모두에게 세션의 버전 번호를 받을 수 있으며 그것은 밥이 앨리스보다 최신 버전의 세션을 가지고 있을 수 있음을 나타낼 수 있다. 그 시점에서, 밥의 채팅 너트의 사본은 자동으로 요청될 수 있으며 너트챗 서버를 통해 앨리스에게 전송될 수 있으며 앨리스의 너트챗 클라이언트는 그 자신의 것으로 밥의 세션 이력을 받아들일 수 있으며 채팅 세션은 이력 및 그로써 그 문맥에 대한 공통 보기로 계속될 수 있다. 이 시나리오에서는 너트챗 서버에 의해 사용되는 저장은 매우 적을 수 있고 최종 사용자가 그들의 제어 하에 세션 정보의 일부 또는 전체를 저장할 수 있다. 일단 채팅 세션 버전이 동기화되면, 이후 서로에게 보낸 채팅 메시지는 전체 이력이 아닌 세션에서 새로운 채팅 메시지를 보유하는 너트에만 포함될 수 있으며, 각각의 끝에 너트챗 클라이언트는 각기 누적 채팅 세션을 업데이트해야 할 책임이 있으므로 진행 중인 채팅 세션에서 데이터 전송의 크기를 줄일 수 있다.
또한, 앨리스의 너트북은 밥에 관한 연락처 엔트리에서 참조하여 채팅 너트 및 이메일 너트를 참조하거나 가리킬 수 있어서, 밥과의 관련 이력 커뮤니케이션 중 일부 또는 전부가 밥의 정보 하에 인덱싱될 수 있고, 이는 앨리스의 통제 하에 저장된 관계에서 문맥에 관한 체계적 분석을 가져올 수 있다.
너트챗 클라이언트는 신뢰성, 중복 및/또는 난독화를 위해 경로 무관 채팅 세션을 수반할 수 있는 대화에 관여할 수 있다. 도 153은 3개까지의 다른 채팅 서비스 및/또는 채팅 ID를 사용할 수 있는 밥과 앨리스 사이의 3개의 개별 채팅 세션에 대한 비전형적인 데이터흐름 패턴을 보여준다. 때때로, 이러한 유형의 분리 및 구분은 관련될 수 있는 당사자들에게 소망되고 편리할 수 있다. 다른 시간에서, 그것은 다른 참가자의 선택에 의해 사용자에게 강제될 수도 있다: 예를 들어, 밥은 채팅 서비스 B의 계정만 원할 수 있으므로 앨리스는 밥과 채팅하기 위해 서비스 B에 로그인을 생성해야 할 수 있다. 그러나, 너트챗 클라이언트가 다른 채팅 서비스와 인터페이스할 수 있는 범위까지, 그것은 대화로 불릴 수 있는 도 154에 도시된 바와 같은 경로와 무관한 채팅 세션으로 응집되도록 동일한 두 사람 사이에 있는 다중 개별 채팅 세션을 허용할 수 있다. 채팅 너트는 메시지의 기본 매체가 될 수 있으므로 일부 또는 모두가 버전 번호를 가지고 있을 수 있고 너트의 사본은 3개의 채팅 세션 경로의 일부 또는 모두에 동시에 보내질 수 있다. 다른 너트챗 클라이언트에 처음에 도달하는 어느 채팅 너트든 처리될 수 있고 다른 채팅 너트는 무시될 수 있다(또는 너트서버 너트 병합에 의해 병합되고 그런 후에 폐기될 수 있음). 때때로, 전송 제한으로 인해, 채팅 너트는 전송 플랫폼에 적합한 간결하고 안전한 텍스트 메시지로 변환될 수 있다. 이러한 방법에서, 대화는 다중 경로를 거쳐 보존될 수 있고 오직 가장 최신 버전만이 각각의 참가자에게 보여질 수 있으며 프로세스는 개별 채팅 서비스 공급자의 저장소 및/또는 구성 기능에 의존하지 않고 그들의 전송 메커니즘에만 의존할 수 있다. 중복 경로는 대화 동안 전송 장애를 최소화하거나 거의 제거할 수 있다. 각각의 전송 서비스가 보관할 수 있는 이력은 메시지별 기반으로 너트에 의해 보호되므로 내용물이 불투명해질 수 있으므로 쓸모가 없을 수 있다. 전송 메커니즘은 이메일 서버, ftp 서버, 네트워크 파일 시스템, 포인트 투 포인트 연결, 와이파이 프로토콜, 블루투스 프로토콜 및/또는 임의의 다른 디지털 전송 방법과 같은 그러나 그로 한정되지 않는 너트가 전달될 수 있는 임의의 채널일 수 있다. 너트의 동기화 특징은 적어도 2명의 작성자 및 사용자가 너트에 접근하기 위한 공통 방법을 포함하도록 구성된 공유가능 너트를 사용하여 채팅 세션이 단독으로 관여하도록 허용할 수 있다. 본 구현예는 얼마나 상대적으로 단순하게 그것이 채팅 시스템의 기능을 분리하는 한편, 서비스와 독립적으로 사용자 데이터를 보호하고 사용자에 의한 전송 메커니즘의 전반적인 신뢰성을 강화하는지를 보여 줄 수 있다.
너츠 기반 서비스: 너트클라우드
너트클라우드는 도 155에 도시된 바와 같이 임의의 너츠 사용자에게 이용가능한 인터넷 기반 저장소 서버일 수 있다. 너트클라우드는 익명 등록, 쌍별 무작위 에일리어스 및/또는 RBK를 지원할 수 있다. 그것은 개인 너트서버와 완벽하게 통합되어 개인 너츠 네트워크의 범위와 가용성을 확장할 수 있다. 너트클라우드는 너트를 저장할 수 있으며, 그 저장소 및 대역폭 제한은 서비스 계층 수준 및 사용자가 구성할 수 있는 정책에 영향을 받을 수 있다. 너트클라우드 계정은 다른 너츠 기반 서비스와 상호 작용하여 보다 영구적인 저장소 및/또는 접근 가능한 저장소를 제공할 수 있다: 즉, 그것은 너트메일 및/또는 너트챗 메시지를 백업할 수 있다.
서비스의 기본 수준에서, 그것은 일반적인 개인 용도를 위한 충분한 수준의 저장소와 대역폭을 제공할 수 있다. 그 주요 목적은 인터넷 상의 임의의 접근 포인트로부터 너트에 저장된 데이터의 접근을 용이하게 하는 것일 수 있다. 그것은 너트서버와 완벽하게 통합되어 집에서 그리고 이동 중에 앨리스의 데이터의 일부 또는 전부를 동기화할 수 있다.
개인 너트서버와 함께 너트클라우드는 임의의 인터넷 기반 중앙 관리되는 클라우드 서비스로서 동일하거나 더 높은 수준의 동기화를 제공할 수 있다; 그러나 대중적인 무료로 이용가능한 클라우드 동기화 서비스와 달리, 너트클라우드는 완벽한 익명성, 사용자에 의해 통제되는 개인 정보 보호, 전체 이력, 전체 감사 추적 및/또는 안전한 데이터 소유권을 제공할 수 있다.
너츠 기반 서비스: 너트넷
너트넷은 도 156에 도시된 바와 같이 너츠 사용자에게 이용가능한 너트넷 기반 웹서버일 수 있다. 너트넷은 익명 등록, 쌍별 무작위 에일리어스 및/또는 RBK를 지원할 수 있다. 너트넷은 너트를 저장할 수 있으며, 그 저장소 및 대역폭 제한은 서비스 계층 수준 및 사용자가 구성할 수 있는 정책 설정에 영향을 받을 수 있다. 너트넷 계정은 다른 너츠 기반 서비스와 상호 작용하여 보다 영구적인 저장소 및/또는 접근 가능한 저장소에 접근할 수 있다: 예를 들어, 그것은 너트 클라우드 및/또는 너트 서버로부터 너트를 가져올 수 있다.
너트에 저장된 웹 페이지 콘텐츠를 공유하여 사용자는 누가 콘텐츠를 볼지를 제어할 수 있고 그것은 암호화 수준에서 수행될 수 있다. 개인은 게시된 페이지를 보기 위해 콘텐츠 소유자와 함께 RBK 쌍을 가질 수 있다. 누군가는 이것이 반사회적 소셜 네트워크, 사적인 소셜 네트워크 및/또는 인증된 소셜 네트워크일 수 있다고 말할 수 있다. 그것은 콘텐츠에 대한 키 중 어느 것도 갖지 못할 수 있기 때문에, 너트넷 서버 또는 다른 권한이 없는 제3자는 콘텐츠 중 어느 것도 상관할 수 없다. 콘텐츠가 너트에 저장 및 보관되는 한, 소유자는 그에 대한 통제를 유지할 수 있다. 또한, 너트를 국부적으로도 복제 및 동기화하도록 구성될 수 있다면, 소유자는 로컬 너트 저장소에 있는 자신의 포스팅과 관련된 일부 또는 모든 이력을 볼 수 있다. 개인은 가까운 친구 및 가족 가운데 사진 및 비디오를 공유하는 것이 사적인 문제일 수 있으며, 제3자가 작성자의 인지 및/또는 승인 없이 사용을 위해 사본을 소유할 권리를 가질 수 없다고 판단하는 때가 있을 수 있다. 너트넷은 사용자의 그룹 내에서 개인 정보가 요구되는 이러한 상황에 대해 생성될 수 있다.
전문 사진사는 잠재 고객이 방대한 양의 세부 사항과 함께 저작권으로 보호되는 사진을 볼 수 있도록 비공개 웹 페이지를 개설하고 누가 키를 발급받을 것인지 그리고 얼마나 오래 그럴 것인지를 제어할 수 있다. 웹페이지 너트는 사진사를 위한 감사 추적을 생성하기 위해 사진 상에 일부 또는 모든 활동을 기록할 수 있다. 프로젝트 관리자는 프로젝트의 구성원 사이의 활동을 조정하기 위해 비공개 웹 페이지를 개설할 수 있다. 보안 측면에서, 너트에 설정된 접근 제어로 인해 등록 프로세스가 필요하지 않을 수 있지만 그것은 너트넷 서버에서 구성 및 구획화 기능으로서 사용될 수 있다.
너츠 기반 서비스: 너트 허브
현재, 사물 인터넷(IoT)이 어떻게 통신하고 및/또는 기능하는지에 대해 보편적으로 인정되는 표준이 없을 수 있다. IoT는 빌트인 네트워킹 능력을 가질 수 있고 사용자가 다양한 개인용 컴퓨팅 장치에서 원격으로 제품의 기능을 제어하고 모니터링할 수 있는 하드웨어 제품의 성장 중인 분야일 수 있다. 많은 IoT 제품은 때때로 제품 사용자 모르게 수집 및 분석할 수 있도록 센서로부터의 일정한 데이터 스트림을 제조 공급업체로 다시 보낼 수 있다. 이러한 IoT 장치의 일부 또는 전부의 작동 모드는 제품이 개인의 가정의 가장 사적인 공간을 위해 의도될 있기 때문에 데이터 수집 범위와 방법에 기반한 많은 개인 정보 침해 문제를 일으킬 수 있다. 일부 사용을 얻는 IoT 프레임워크는 그들의 제품군을 위해 IoT 하드웨어 벤더에 의해 공급될 수 있다. 너트허브는 너트 인터넷(IoN)으로 불리는 너츠 호환 IoT 유형 장치에 의해 생성될 수 있는 너트 기반 메시지의 처리를 용이하게 하기 위한 패킷 포워딩 서비스일 수 있다. 도 157 상의 네트워크 도해에 도시된 바와 같이, Ion은 집에서 당신의 Ion 호환 장치와 안전하게 비공개로 통신하기 위한 너츠 기반 표준일 수 있다. 너트허브 상의 최저 서비스 계층은 임의의 너츠 기반 서비스로 등록된 계정을 가진 누구나에게 이용가능할 수 있다. 계정은 익명일 수 있다. 너트허브는 너트와 동작할 수 있으며 일정량의 메시지를 대기시킬 수 있다. 너트허브는 추가 저장소에 접근하기 위해 너트클라우드 및/또는 너트서버와 원활하게 상호 작용할 수 있다.
너트허브 토폴로지는 여러 가지 방식으로 작동하도록 구성할 수 있다. 직접 토폴로지는 도 158에 도시되고, 여기서 사용자의 가정에 있는 모든 IoN 장치는 IoN 벤더 서버(15804), 너트허브(15802) 및/또는 사용자 제어 장치(15806, 15822 및 15824)에 대해 독립적인 연결을 구성할 수 있다. 이러한 토폴로지는 벤더가 당신의 가정에서 장치에 보다 직접 접근할 수 있도록 하며 사용자는 각각의 장치의 필터링 능력의 정도까지만 발신 너트 패킷을 필터링할 수 있다: 이는 오늘날 IoT 장치에 의해 사용되는 지배적인 통신 방법일 수 있다.
바람직한 너트허브 토폴로지는 도 159에 도시된 바와 같이 간접적인 것일 수 있다. 일부 또는 모든 IoN 장치는 LAN(15920)을 떠난 후에 다음 너트허브(15902)로 이동하기 전에 지정된 너트서버 허브(15930)를 통해 통신할 수 있다. 이러한 토폴로지는 앨리스의 편안한 수준에 따라 그녀의 집을 떠나는 IoN 메시지에 대한 필터링 규칙의 섬세한 튜닝을 허용할 수 있다. 너트서버 허브 장치(15930)는 데스크탑 PC, 특수 용도 장치를 포함할 수 있거나 심지어 와이파이 라우터(15920)의 일부일 수 있다. 지정된 너트서버 허브(15930)가 꺼져 있거나 이용가능하지 않으면, 어떤 IoN 장치도 외부 세계와 통신할 수 없다.
너트서버 허브의 구성이 도 160에 도시된다. 친숙한 너트서버(15930) 내에서, 너트허브/IoN 인터페이스(16032)로 불리는 구성 요소가 있을 수 있다. 이러한 모듈은 너트허브(15902), IoN 장치(15922) 및/또는 다른 너트서버 허브(16052)와 통신하는 작업을 담당한다. 인터페이스 모듈(16032)은 IoN 기기 및 IoN 제어 장치, 모두로부터 IoN 너트 메시지를 기록, 대기, 전달, 중계, 처리 및/또는 필터링할 수 있다.
너트허브/IoN 인터페이스의 상세도가 도 161에 도시된다. 인터페이스(16032)는 이러한 7개의 기능 중 일부 또는 전부, 또는 다른 추가 기능을 포함할 수 있다. IoN 장치 인덱스(16112)는 사용자가 등록한 IoN 장치의 일부 또는 전부를 추적할 수 있다. Ion 장치 인증(16114)은 IoN 장치로 그리고 그로부터의 메시지를 인증하고 암호화할 수 있다. 인터페이스는 사용자의 메시지 필터 및 규칙(16116)을 추적할 수 있다. 메시지 로거(16118)는 일부 또는 모든 IoN 메시지를 영구 저장소에 기록할 수 있다. 메시지 큐(16120)는 전달할 수 없는 메시지를 임시로 저장할 수 있다. 장치 키 캐시(16122)는 IoN 메시지를 인증하고 암호화하기 위한 일부 또는 모든 접근 키를 저장할 수 있으며, 사용 가능한 경우 보호 메모리 하드웨어 내에 구현될 수 있다. 원격 제어 인터페이스(16124)는 IoN 장치 특정 기능이 원격으로 활성화되는 것을 허용할 수 있는 모듈일 수 있다.
임의의 IoN 장치 상의 너트허브/너트서버/IoN 인터페이스의 상세도가 도 162에 도시된다. 인터페이스(16210)는 이러한 7개의 기능 일부 또는 전부, 또는 다른 추가 기능을 포함할 수 있다. 너트 인덱스(16212)는 IoN 장치를 운영하고 관리하는 것과 관련된 장치에 저장된 너트의 일부 또는 전부를 추적할 수 있다. 인증 모듈(16214)은 장치로의 및/또는 그로부터 벤더, 너트허브 및/또는 너트서버 허브로의 메시지를 인증하고 암호화할 수 있다. 인터페이스는 사용자의 메시지 필터 및 규칙(16216)을 추적할 수 있다. 메시지 로거(16218)는 일부 또는 모든 IoN 메시지를 영구 저장소에 기록할 수 있다. 메시지 큐(16220)는 전달할 수 없는 메시지를 임시로 저장할 수 있다. 장치 키 캐시(16222)는 IoN 메시지를 인증하고 암호화하기 위한 일부 또는 모든 접근 키를 저장할 수 있으며, 사용 가능한 경우 보호 메모리 하드웨어 내에 구현될 수 있다. 원격 제어 인터페이스(16224)는 IoN 장치 특정 기능이 원격으로 활성화되는 것을 허용할 수 있는 모듈일 수 있다. IoN 장치는 하드웨어 제한으로 인해 사용자 지정 필터링을 위한 기능의 제한된 세트를 가질 수 있다. 또한 기록하고 대기할 수 있는 메시지의 양을 제한할 수 있는 저장소 제한이 있을 수 있다. 그러므로, 이력 및 감사 추적이 중요한 경우, 사용자는 도 159에 도시된 바와 같은 간접 IoN 토폴로지를 사용하도록 강력하게 권고받을 수 있고, 이는 그가 너트서버 허브에 의해 제공될 수 있는 향상된 기능에 접근하도록 허용할 수 있다. 이러한 인터페이스(15922)는 IoN/IoT 특정 장치로 제한되지 않으며, 개발자가 장치를 위해 인터페이스를 생성할 수 있고 IoN 장치의 작동 모드를 따른다면, 어떤 컴퓨팅 장치든 유사한 인터페이스를 가질 수 있다; 부가적으로, 장치 상에 실행되는 너트서버의 버전을 가질 수 있는 임의의 장치는 IoN 장치 자체로서 역할을 할 수 있다.
앨리스가 새로운 IoN 장치를 구입할 때, 그녀는 그녀의 네트워크에 그를 추가하고 구성해야 할 수 있다. 도 163 상의 순서도는 앨리스가 새로운 IoN 장치를 자신의 너츠 기반 네트워크에 올바르게 등록하기 위해 취할 수 있는 단계를 보여준다. IoN 장치를 구성하는 방법은 앨리스의 너트북을 통해 RBK 관계를 설정하는 것일 수 있다. 단계(16302 및 16304)는 너트서버 허브가 너트북에 장치 특정 정보를 중계할 수 있도록 허용하고, 차례로, 너트북은 IoN/IoT 장치 카탈로그 카드를 생성하고 모델, 버전 및/또는 시리얼 번호를 입력하고, RBK 페어를 생성하고 너트서버 허브를 통해 IoN 장치로 그를 돌려 보낸다. IoN 장치에 대한 카탈로그 카드를 생성하는 행위는 해당 너트에 대한 너트 ID를 생성할 수 있는 너트를 생성할 수 있다; 그러므로, IoN 장치는 이후에 카탈로그 카드 너트의 너트 ID로 각인될 수 있다. 이러한 단계는 당신의 홈 네트워크에서 새로운 장치를 위한 IP 주소를 고르는 것과 유사할 수 있지만 너트 ID를 사용하는 잠재적인 이점은 광범위할 수 있다. IoN 장치에 대해 지정된 너트 ID는 또한 실제 IP 주소 및/또는 위치와 상관없이 장치를 참조하는 영구적인 방식으로서 사용될 수도 있다. IoN 장치는, 새로운 너트 ID가 새로운 소유자나 동일한 소유자에 의해 장치 상에 직접 각인될 수 있도록 공장 조건으로 재설정될 수 있다.
IoN 카탈로그 카드가 앨리스의 너트북에 저장되면, 구성 프로세스는 단계(16306)로 진행할 수 있으며 그것은 장치의 구성 데이터를 복호화하고, 그를 디스플레이하고 및/또는 설정하는 데 필요한 MIO 구성 요소가 있는지 여부를 확인할 수 있다. 일단 구성 화면 상에 적절한 설정이 이루어지면, 앨리스는 장치에 대해 IoN 카탈로그 카드에 설정을 저장하고 그를 너트서버 허브 인터페이스에 제출하여 IoN 장치(16314)로 보낼 수 있다. 장치는 구성 너트를 수신하고, 그를 인증하고, 디코딩하고, 유효화하고, 그런 후에 변경 사항을 내부 시스템에 적용할 수 있다. 일단 완료되면, 그것은 상태를 나타내는 너트서버 허브에 너트를 되돌려 보낼 수 있다. 앨리스는 이러한 장치를 모니터링하고 있을 수 있으며 자동으로 그로부터 메시지를 볼 수 있다.
IoN 장치는 일부 또는 모든 메시지가 너트일 수 있고 따라서 디폴트에 의해 동일한 수준의 개인정보 보호 및 너트의 제어가 허용될 수 있는 모드에서 작동할 수 있다. 너트는 MIO 구성요소를 활용할 수 있으므로, 장치에 대한 소프트웨어 구성, 펌웨어 및/또는 소프트웨어 업데이트는 동일한 MIOR 메커니즘을 통해 제출될 수 있으며 구식이 될 가능성이 낮다. 너트허브는, 필요한 경우, 모든 것이 모니터링, 기록 및/또는 제어될 수 있고 IoN 장치에 의해 수집될 수 있는 일부 또는 모든 발신 정보가 사용자의 개인 정보 보호 선호를 존중하도록 필터링될 수 있음을 사용자가 확인하도록 구성될 수 있다. 이러한 구현예에서, 너츠 코어 철학은 물리적 장치로 확장되어서, 당신이 소유한 장치가 특정 시간 또는 항상 당신의 통제 하에 있고 그것이 생성하는 일부 또는 모든 데이터 역시 당신 것일 수 있다. 이러한 시나리오에서, MIO 및 그 기능의 파워는 명백할 수 있고, 이는 적절한 MIO 구성 요소를 갖는 임의의 데이터 포맷이 많은 소유 프로토콜과 달리 사용자에 의해 점검될 수 있기 때문이다.
이는 우리를 (16124) 및 (16224)에 도시된 원격 제어 인터페이스로 불리는 중요한 모듈로 가져올 수 있다. 이는 사용자 또는 벤더가 IoN/IoT 장치와 대화하고 우리가 명령 너트로 언급하는 원격으로 명령에 따라 그것을 작동하게 할 수 있는 방법이 될 수 있다. RBK 인증 명령 너트가 처리될 수 있으며 장치 소유자(RAT)는 장치 상에 이용가능한 임의의 명령을 실행할 수 있다. 이러한 인증 요구사항은 사용자가 벤더의 접근 권한을 조정하여 벤더와의 관계를 완전히 제어하는 것을 허용할 수 있다. 사용자는 장치 공급업체가 장치, 장치의 하위 집합에 대해 완전히 접근하게 하고 및/또는 접근할 수 없도록 할 수 있다. 이는 진입 지점으로서 IoN/IoT 장치를 사용하여 앨리스의 홈 네트워크에 대해 비인증된 접근을 방지할 수 있다: 각각의 IoN/IoT 접근 지점은 이제 너츠 기반 보안으로 강화될 수 있다. 어떻게 너트가 전파되고 인트라넷 및/또는 인터넷을 따라 전송될 수 있는지에 관한 광범위한 성질에 대해 우리가 언급한 바와 같이, 기본적으로 IoN 명령 너트는 IoN 장치에 대한 적절한 루트가 있을 수 있는 어느 곳으로부터든 전송될 수 있다. 도 164에 순서도는 원격 제어 인터페이스가 어떻게 명령 너트를 처리할 수 있는지를 도시한다.
너트허브 및 원격 제어 인터페이스의 성질은 연결이 가능한 어느 곳으로부터든 일부 또는 모든 너츠 호환 장치를 완벽하게 제어할 수 있는 앨리스의 능력을 야기할 수 있다. 그것은 RBK 쌍으로 표현되는 앨리스의 너트북 관계에 의해 제어되는 동안 사용자 지정 메시지를 보낼 수 있는 보안 프로토콜을 나타낼 수 있다. 그것은 모든 앨리스의 IoN 장치에 대해 그녀를 위한 중심화된 보기를 나타낼 수 있지만 탈중앙집중화된 방식으로 설치, 구성 및/또는 유지될 수 있다. 앨리스가 자신의 너트를 제어하면, 그녀는 장치의 일부 또는 전부를 제어할 수 있다. 이는 앨리스가 너츠의 SSO 기능을 사용하기로 결정할 때 그녀가 패스프레이즈를 매우 신중하게 선택하거나 하드웨어 기반 키를 사용해야만 하는 또 다른 이유일 수 있다. 그러한 구현예에서, 벤더의 역할은 하드웨어 제조자의 역할로 축소될 수 있고 앨리스에게 속하고 앨리스의 집의 사적 영역에 위치될 수 있는 개인 장치의 초대받지 않은 원격 관리자의 역할로 축소되지 않는다. 너츠 환경의 보안은 현재 IoT 프로토콜보다 더 일원화되고, 강화되고, 및/또는 사용자 제어가능한 장벽을 나타낼 수 있으며, 이는 제조자(개발자)의 선호 사항 및/또는 장점에 편향될 수 있다.
너츠 기반 서비스: 너츠 인증 서버
너트서버 프로세스 및 프로토콜의 무결성은 그것이 예상한 대로 거동할 수 있다는 신뢰를 주는 데 필수적일 수 있으므로, 지속적으로 너트서버 설치를 유효화하도록 너츠 인증 서버(NCS)가 있을 수 있다. 도 165에 도시된 바와 같이, NCS는 어느 너츠 사용자에게든 이용가능할 수 있고 익명 등록, 쌍별 랜덤 에일리어스 및/또는 RBK를 지원할 수 있다. 그것은 최상위 수준이 "인증된 너츠"인 것으로서 NCS 회사에 의한 공식 인증인 서비스의 계층화된 수준을 가질 수 있다. NCS의 주요 기능은 너트의 적절한 삭제에 대해 너트서버를 모니터링하고 및/또는 너트서버 프로토콜, 거동 및/또는 프로세스로 비인증된 변조를 검출하는 것일 수 있다. 영리한 프로그래머는 조사를 식별하고 그를 우회할 수 있기 때문에, 어떻게 익명 등록이 작동하는지에 관한 아키텍처는 너트서버로의 NCS 조사가 거의 검출되지 않도록 할 수 있다. 그것은 사용자가 자신의 너트서버에 대해 활성화하도록 선택할 수 있는 자발적인 수준의 서비스일 수 있다. 대상 너트서버에 테스트 너트를 주입하고 특정 작동이 너트서버 프로토콜에 따라 그들에 적용될 수 있었는지 여부를 감지하기 위해, NCS에 의해 개시된 자동화된 절차가 있을 수 있다. 높은 수준의 서비스에서, 검사자의 적극적인 참여는 원격 너트서버의 상태에 관한 보다 더 철저한 평가를 허용할 수 있다.
벤더는 너츠 인증 수준 테스트에 참여하여, 고객에게 알려질 수 있고 고객이 그들의 너트가 규정에 따라 취급될 수 있음을 확인할 수 있는 너트서버 컴플라이언스의 수준을 지속적으로 유지할 수 있다. 테스트 프로세스는 고객 모르는 사이에 고객의 너츠 환경에 대한 임의의 비인증된 수정을 강조할 수도 있다. 고객 측에서, 너츠 시스템 및 방법론을 사용하고 있지만 "인증된 너츠"가 아닐 수 있는 임의의 벤더는 너트를 처리하는 것에 대한 정책에 대해 더 많은 질의를 필요로 할 수 있다. 사용자는 공개적으로 이용가능한 NCS 데이터베이스 상의 룩업 테이블과 인터페이스하도록 너트서버 및/또는 너트북을 구성하여 온라인 벤더와 연락하기 전에 인증 상태 또는 인증 부족을 평가할 수 있다.
도 166에서, NCS(16520)는 원격 벤더 너트서버(또는 개인 너트서버)(16620-16624)의 거동을 평가할 수 있게 하는 기능을 수행할 수 있다. 만료 무결성 프로빙(16602)는 너트가 시스템에 주입될 수 있고(16604) 만료 시간 후 해당 시스템 상의 존재에 대해 원격 제어 인터페이스(16610)에 의해 조사될 수 있는 방법일 수 있다. 예를 들어, 만료된 너트가 원격 너트서버 상에 발견되면, 너트서버는 규정을 준수하지 않는 것일 수 있으며 "인증된 너츠"가 아닐 수 있다. 장기간 주입 테스트(16608)는 더 오랜 시간 동안 지속적으로 너트서버를 테스트할 수 있다. 결과 분석 및 인증(16606)은 다양한 주입 테스트에 대한 원격 너트서버의 준수를 평가할 수 있으며 너트서버 설치를 등급화할 수 있다. 설치된 너트서버 및 패치 버전을 확인하는 것은 너트서버가 업데이트되고 규정을 준수하는지 확인하는 데 필수적이다. 오래된 버전은 너츠 보안 프로토콜의 느슨한 유지를 나타내고 및/또는 승인되지 않은 사용자 정의 수정이 이루어졌을 수 있으므로 채택이 느려질 수 있다. 테스트는 또한 다양한 민감한 이진 코드 세그먼트의 해시 서명을 확인하고 및/또는 익명의 인터넷 주소로부터 주입하는 것을 포함하지만 그로 한정되지 않을 수 있다. NCS 서비스에 너트서버를 익명으로 등록하는 것은 RBK가 보다 안전한 방법으로 보다 심도 있는 테스트를 위해 설정될 수 있음을 보장한다.
NCS는 충분한 지식과 리소스를 가지고 어떤 개인이나 그룹이 결국 NCS에 의한 테스트를 회피할 수 있기 때문에 너트 서버가 손상되지 않았음을 보장하지 않는다. 현장 점검은 더 높은 수준의 너츠 인증을 초래한다. 일반 사용자의 경우, 최고 수준에서 인증되지 않은 임의의 상용 너트서버를 사용하지 않는 것이 바람직한 정책일 수 있다. 개인 너트서버와 관련되는 경우, 그에 관련되기 전에, NCS로부터 자동 무료 테스트의 기본 수준이 최소 요구 사항일 수 있다.
와이파이/이더넷 라우터를 위한 너츠 기반 네트워킹
도 167은 개인용 너츠 기반 와이파이/이더넷 라우터(16710)를 위한 네트워크 레이아웃의 구현예를 도시한다. 라우터는 대체 프로토콜로서 사용 너트 기반 메시징뿐만 아니라 와이파이 통신에 수반될 수 있는 일반 프로토콜을 사용하여 작동할 수 있다. 너츠 와이파이 라우터는 임의의 IoN 장치처럼 설치되고 구성될 수 있고, 그로써 소유자는 그와 RBK 관계를 설정하고 너트북을 통해 정보를 IoN 카탈로그 카드에 저장할 수 있다. 구성 프로세스 동안, 사용자는 카탈로그 카드 엔트리에 의해 표현되는 장치의 대부분을 가지고 있을 수 있으므로, 그녀는 너트 ID로 라우터에 대한 접근을 허용하기를 원하는 일부 또는 모든 장치를 등록할 수 있다. 원본 너트 메시지는 발신 장치의 너트 ID를 포함할 수 있고 그러므로 접근을 위해 등록 목록에 대해 적절히 점검될 수 있다. 그런 후에, 라우터는 다양한 장치와 그 자체 사이에 관계를 설정하도록 지시될 수 있으며, 따라서 그것은 너트 메시지의 내용에 대한 안전한 통신을 허용할 수 있다. 너츠 와이파이 라우터의 메시지를 처리하기 위한 순서도가 도 168에 도시된다. 등록된 장치에 의해 라우터를 통과할 수 있는 일부 또는 모든 메시지는 인증될 수 있다. 단계(16818)는 너츠 기반 라우터 상에 이용가능할 수 있는 흥미로운 특징을 보여준다. 등록되지 않은 장치는 RBK를 사용하지 않는 접근을 위해 라우터에 연락할 수 있다. 이러한 경우, 그것은 와이파이 접근의 다른 카테고리에 대한 대역폭 할당 및 제한에 대해 소유자가 지정한 구성 설정을 조회할 수 있다: 등록된 IoT 및/또는 게스트. 등록된 장치는 요청된 사용 유형 및 대역폭에 대한 제한 없이 설정될 수 있다. IoT/IoN 장치는 자체 카테고리를 가질 수 있으며 등록된 장치와 동일한 수준의 인증을 요구할 수 있지만 그룹으로서 별도로 관리할 수 있다. 도 169 상의 표는 라우터를 통해 접근할 수 있는 정의된 카테고리와 접근의 유형을 보여준다. 게스트 장치는 일반 프로토콜을 사용하여 접근할 수 있지만 제약이 있다. 카테고리 기반 속성 제한에 대한 샘플 구성이 도 170에 도시된다. 소유자는 만료, 대역폭, 총 대역폭, 카테고리 유형의 최대 연결, 목적지 및/또는 메시지 모드와 같은 그러나 그로 한정되지 않는 장치별 제한을 지정할 수 있다. 이러한 방식으로, 게스트 장치는 특정 제한 내에서 미상의 너츠 와이파이 라우터를 통해 인터넷 접근을 할 수 있는 한편, 인증된 너츠 인트라넷은 너츠 수준 보안 방법으로 보호될 수 있다. 이러한 방법론은 와이파이 통신의 프레임워크 내에서 개별적으로 관리할 수 있는 채널 카테고리를 효과적으로 생성할 수 있다.
사용자의 일부 또는 모든 등록된 장치는 이제 식별을 위해 내부적으로 할당된 IP 주소와 독립적일 수 있지만 그보다는 카탈로그 카드에 너트 ID에 의해서이다. 이것은 보다 보편적인 방식으로 일부 또는 모든 네트워크를 가로질러 데이터 및 하드웨어를 보다 가시적이고 기능적으로 만들기 위한 너츠의 속성일 수 있다. 라우터는 등록된 장치의 너트 ID에 대해 매핑된 동적 IP 주소 할당을 추적할 수 있다. 향후 반복 및 다른 구현예에서, 하드웨어 제조자는 너트 ID가 다양한 장치 상의 이더넷 인터페이스에 접근하기 위해 IP 주소 및/또는 MAC 주소와 함께 사용될 수 있도록 허용할 수 있다. 장치 식별 너트 ID는 PC 상의 OS 설치에 시스템 이름을 할당하는 것과 동일한 것으로 간주될 수 있지만 체계적이고 실제적으로 고유할 수 있으므로, 시스템에 이더넷 카드를 변경하거나 추가하는 것은 새로운 IP 주소 및/또는 MAC 주소를 나타날 수 있지만, 장치와 연관된 너트 ID를 변경할 수는 없을 수 있다.
자녀들의 인터넷 접근에 대한 부모의 감시는 장치 및 사용자 수준보다는 또는 그에 추가하여 너츠 기반 와이파이 라우터를 사용하여 라우터 수준에서 모니터링되고 제한될 수 있다. 등록된 장치 트래픽을 포함할 수 있는 메시지 너트는 부모 선호에 따라 트래픽을 더 필터링하는 데 사용할 수 있는 사용자 식별 정보를 포함할 수 있다.
너트를 사용한 어플리케이션 래핑
클라우드 서비스, 앱 스토어 및/또는 연관된 앱의 출현과 개발은 다양한 장치를 가로질러 앱의 모듈화 및/또는 전송성의 일부 형태를 허용해왔을 수 있다. 그러나, 이는 데스크탑 또는 랩탑 컴퓨터에서는 그렇지 않을 수 있다. 그들 상에 실행되는 대부분의 어플리케이션은 수동 설치 및/또는 유지를 요구할 수 있다. 이것은 기계 설정의 용이함을 위해 시스템 관리자가 미리 선택된 앱 패키지의 혼합을 사용자 지정 설치 팩에 롤업하는 잘 유지 관리된 기관 환경에 대해서도 참일 수 있다. 또는, 그들은 컴퓨터로 스와핑될 수 있는 디스크 상에 복제된 사전 설치 어플리케이션을 생성할 수 있다. 실행 중인 환경에 있어서, 개인 및/또는 관리자가 특정 장치 상에 설치될 수 있는 모든 프로그램을 모니터링하고 권한을 부여하기가 매우 어렵고 힘들 수 있다. 매우 엄격한 계정 규칙은 사용자에 있어서 생산성이 저하되거나 시스템 부서에 있어서 직원 요구 사항이 증가할 수 있다.
잘 구성된 너트로 래핑된 어플리케이션은 이러한 문제의 다수를 해결할 수 있다. 로컬 운영 체제는 너트 래핑된 어플리케이션만 실행하는 것을 허용하도록 수정될 수 있다. 그 함축은 매우 많을 수 있다. 이것은 승인되지 않고 점검되지 않은 어플리케이션의 일부 또는 모든 비인증된 설치 및 실행을 방지할 수 있다. 정책은, 관리되는 기관 환경에서 접근 키의 집중화된 관리에 의해 강제될 수 있다. 네이키드(naked) 바이너리의 실행을 수반할 수 있는 바이러스 감염 벡터는 크게 감소할 수 있다. 너트서버 복제 및 동기화 특징은 일부 또는 모든 장치를 가로질러 설치된 소프트웨어의 새로운 버전을 용이하게 전파하는 것을 허용할 수 있다. 적절하게 래핑된 너트는 성공적인 동기화 시에 원격 제어 인터페이스를 사용하여 자가 설치하도록 원격으로 명령을 받을 수 있다. 장치 환경 백업 및 복제는 도 171에 도시된 바와 같이 너트서버를 사용하여 자동화될 수 있다. 컴퓨팅 장치(17100)는 실패할 수 있는 장치에 대한 너트의 백업을 저장할 수 있다. 새로운 장치(17140)를 설치할 준비가 되면, 올바르게 설치해야 할 어플리케이션은 너트서버(17144) 및 그의 접근 키일 수 있다. 그런 후에, 정확한 키를 가진 어느 하나의 컴퓨팅 장치로부터의 복제 명령은 장치 1에서 장치 2로의 일부 또는 모든 관련 너트의 복사를 개시하고 그런 후에, 일부 또는 모든 너트 래핑된 어플리케이션의 필요한 설치를 수행할 수 있다.
표면적으로, 이러한 방법은 하드 드라이브를 복제하거나 잘 조달된 설치 스크립트를 갖는 것과는 달라보이지 않을 수 있지만 상당한 차이가 있을 수 있다. 너트 래핑된 어플리케이션은 어플리케이션의 사양일 있으며 특정 바이너리 자체가 아닐 수 있다. 바이너리는 기관 MIOR에 저장될 수 있고 그런 후에, MIO 메커니즘은 너트 래핑 어플리케이션 사양의 여는 프로세스 동안 이어받을 수 있어서, 교체할 수 있는 원래 장치와 동일하거나 그렇지 않을 수 있는 장치의 현재 운영 체제에 대한 어플리케이션의 정확한 버전을 가져올 수 있다. MIOR의 이러한 사용은 이기종 운영 체제 및/또는 하드웨어를 포함하는 컴퓨팅 환경 내에서 어플리케이션 버전을 제어하는 방식일 수 있다. 너츠 기술의 사용은 실제로 이러한 프로세스의 일부 또는 전부가 인터넷 어디에서나 발생하는 것을 허용할 수 있으므로, 새로운 기계는 원격으로 기관을 대신하여 설치되고 유지될 수 있다.
이러한 예시는 일주일간 출장을 다니는 영업사원일 수 있고, 그는 고객 미팅에서 사용하려는 20개의 맞춤형 프레젠테이션 및 기밀 고객 보고서가 담긴 랩탑을 도난당했을 수 있다. 회사가 너츠를 활용하고 있다고 가정했을 때, 영업 사원은 가장 가까운 컴퓨터 상점을 방문하여 시스템 관리자의 안내에 따라 교체용 랩탑을 구입할 수 있다. 그런 다음, 그는 랩탑 상의 인터넷에서 다운로드한 표준 너트서버를 설치할 수 있다. 관리자는 그에게 이메일을 통해 제네시스 너트로 불리는 특별히 암호화된 접근/설치 너트를 보낼 수 있고, 영업사원은 웹 브라우저 기반의 기업 이메일 페이지에서 이러한 제네시스 너트를 자신의 새로운 랩탑에 다운로드할 수 있다. 관리자는 그에게 전화를 걸어 영업 사원에게 제네시스 너트를 잠금해제할 수 있는 비밀 패스프레이즈를 말해 줄 수도 있다. 일단 로컬 너트서버/너트브라우저를 사용하여 잠금해제되면, 제네시스 너트는 인터넷을 통해 필요한 프로세스의 일부 또는 전부를 개시할 수 있어서, 기업 서버와의 가장 최근 동기화로부터 영업 사원의 분실 랩탑으로부터의 어플리케이션 및 데이터를 복제할 수 있다. 백업 데이터의 양에 따라 몇 분에서 몇 시간 내에, 영업 사원은 그의 새로운 랩탑 상에 재설치된 일부 또는 모든 연락처, 앱, 및/또는 데이터 너트와 완전히 작동가능할 수 있고 그것은 기업 MIOR이 적절히 시드되고 유지되는 한 다른 브랜드의 랩탑 및 다른 운영 체제 상에서 수행될 수 있다. 이러한 복제 노력과 병행하여, 관리자는 절도범이 인터넷에 연결하여 랩탑을 시작할 경우에 한해서, 그에 저장된 회사 소유의 너트의 일부 또는 전부에 대해 도난당한 랩탑에 자체 삭제 명령을 전송할 수 있다. 이는 랩탑 상의 너트가 이미 기업 너트 만료 정책으로 개별적으로 보호될 수 있으므로 예방 조치일 수 있다.
또 다른 구현예에서, 하드웨어 임베디드 너트서버는 접근가능한 소스 너트서버 및 MIOR 서버를 포함하는 네트워크에 연결할 수 있는 초기화되지 않은 컴퓨팅 장치에 통합될 수 있다. 제네시스 너트가 장치 상에 로딩될 수 있고 접근될 수 있으며, 이는 OS, 드라이버, 어플리케이션, 어플리케이션 구성 데이터 및/또는 사용자 데이터를 포함하는 초기화되지 않은 컴퓨팅 장치 상에 컴퓨팅 환경의 완전한 설치로 유도할 수 있는 프로세스를 개시할 수 있다. OS의 선택은 접근가능한 MIOR 캐시의 장치 및 컨텐츠의 검사 시에 사용자의 재량일 수 있다. 어플리케이션은 사용자가 다른 너트에 접근할 때 점진적으로 설치하거나 소스 너트서버에 사용자의 너트에 접근하는 데 필요한 어플리케이션의 전체 목록을 쿼리하여 한 번에 모두 설치할 수 있다.
이벤트 처리 서비스(EPS)
너트허브는 IoN/IoT 장치 및 너트서버와의 너트 기반 통신을 허용할 수 있다. 이벤트 처리 서비스(EPS)는 도 72에 도시된 바와 같이 이벤트를 생성하거나 이에 반응하기를 원하는 IoN 장치 및 어플리케이션에 의해 생성될 수 있는 이벤트를 보관하기 위한 코디네이터로서 기능할 수 있다. 일부 또는 모든 이벤트가 너트 내에 포함될 수 있으므로, 임의의 이벤트는 장치 사이에 이동할 수 있는 경로가 있는 한 임의의 네트워크를 통해 전달될 수 있다. 이는 사용자가 로컬 및 원격 IoN/IoT 장치 및/또는 너트서버 시스템에서 원하는 이벤트를 모니터링하는 것을 허용할 수 있다. 사용자가 로컬 및/또는 원격 장치 상에 스케줄된 이벤트 또는 임시 이벤트를 트리거하는 것을 허용할 수 있다. 원하는 경우, 이벤트는 사용자 장치의 일부 또는 전체를 통해 복제될 수 있다. EPS는 원격 제어 인터페이스와 함께 동작하여 장치 특정 명령이 이벤트에 기반해 시작되는 것을 허용할 수 있다. 도 172은 장치(17200) 상의 로컬 캘린더 어플리케이션(17208)이 로컬 EPS(17204)를 통해 시간 지정된 이벤트를 트리거하여, 장치(17210) 상의 너트서버(17212)에 의해 도달할 수 있는 IoN 장치(17220) 상에 실행될 수 있는, 시나리오를 구현할 수 있다. 로컬 EPS(17204)는 대상 IoN 장치(17220)에 접근할 수 있는 또 다른 EPS(17214)에 이벤트를 중계할 수 있다. 그런 다음, EPS(17214)는 이벤트/명령을 로컬 너트서버(17212)에 중계하고, 그런 후 IoN/IoT 인터페이스를 사용하여 이벤트/명령 너트를 IoN 장치(17220)로 전달할 수 있다. 이벤트/명령 너트의 수용 시에, IoN 장치(17220)는 원격 제어 인터페이스를 통해 명령을 인증한 후에 실행할 수 있다. 이러한 이벤트의 예시는 일정에 따라 원격 서버를 시작하고, 일정에 따라 이메일을 전송하고, 시스템 상태에 관한 채팅 메시지를 전송하고, IoN 호환 커피 머신에서 아침에 커피를 추출하고, 스마트 온도 조절 장치의 온도 설정을 변경하고 및/또는 커피가 추출을 완료한 후에 추운 겨울 아침 20분 동안 차를 데우는 것과 같이 달라질 수 있으나 그로 한정되지 않는다.
EPS는 이벤트 너트 저장 영역(17216 및 17206)에서 실행 중인 각각의 장치 상에 수신하고 생성된 과거의 이벤트를 저장할 수 있다. 이는 통신 및 장치 실패에 대한 이벤트 대기열은 물론 이벤트 저장소로 사용될 수 있다. 사용자 또는 관리자는 나중에 이러한 이벤트를 찾아보고 그 이후에 임의의 사용을 위해 그를 분석할 수 있다. 또한 너트클라우드 계정을 가진 사용자는 이에 대해 그녀의 이벤트를 복제하여 이벤트는 모든 인터넷 접근으로부터 보여질 수 있다. 일부 또는 모든 이벤트는 보호된 너트일 수 있으며 사용자에 의해 소유될 수 있다. 너트허브는 EPS의 대기 기능을 이용하기 위해 그와 원활하게 상호 작용할 수 있다.
EPS 및 그 저장소를 이용하는 어플리케이션의 예시는 홈 알람 시스템이 배터리로 작동되는 센서 중 일부가 배터리 충전이 낮은 상태일 수 있음을 경고하기 시작하는 경우일 수 있다. 홈 알람 시스템은 수반될 수 있고 알람 유지 회사와의 서비스 콜을 요청할 수 있는 유닛을 특정하는 낮은 배터리 이벤트를 발생시킬 수 있다. 알람 회사는 이메일을 통해 사용자에게 문제에 대해 서비스할 수 있는 다양한 시간을 제안하고 사용자는 다른 시간을 제안하거나 제안된 시간을 수락할 수 있다. 수락 시, 알람 회사 및 사용자 장치 상의 캘린더 모두는 자동으로 약속 정보로 업데이트될 수 있다. 경보 시스템은 알람 회사와 제한된 RBK 관계를 맺을 수 있고, 따라서 안전한 방식으로 주택 소유자의 암묵적 승인을 통해 진단을 수행할 수 있다.
앱 너트와의 문맥적 컴퓨팅
검색 습관, 검색 기록, 장치 사양, 웹 시청 습관, 쇼핑 경향, 블로그 콘텐츠, 소셜 네트워크, 비즈니스 네트워크, 이메일 콘텐츠, 문자 메시지, 사진 및/또는 심지어 DNA에 관한 디지털화된 분석과 같은 그러나 그로 한정되지 않는 웹 기업에 의한 사용자의 디지털 부산물의 일부 또는 모든 측면에 대한 뻔뻔한 영토 침해가 있을 수 있다. 이러한 사용자에 의해 생성된 데이터의 압도적인 다수는 해당 데이터를 생성한 사용자에 의해 소유, 접근, 검토, 변경, 삭제 및/또는 통제될 수 없다. 너츠 기술은 앱 개발자가 사용자에 의해 생성된 데이터를 저장하는 것을 더 용이하게 하고, 그들 자신의 사용 및 보관을 위해 사용자에게 사본을 제공하는 것을 더 용이하게 할 수 있다. 그것은 사용자 지정을 허용하기 위해 MIO를 통해 콘텐츠 포맷에 따라 다를 수 있는 공통 보안 컨테이너를 제공할 수 있다. 매우 드문 웹 서비스 벤더는 사용자의 디지털 풋프린트의 대부분의 측면을 포괄할 정도로 일반적이다: 예를 들어, 아마존은 당신의 쇼핑 선호도의 일부만을 알고 있으며 구글은 당신의 검색 기록 중 일부만 알고 있다. 따라서, 웹 벤더는 일반적으로 그들이 제공하는 서비스에 기반해 개인의 습관에 관한 부분적 조각을 조합할 수 있다. 사용자의 디지털 위치 및 활동 중 일부 또는 전부를 수집할 수 있는 가장 좋은 방법은 사용자를 위해 사용자에 의한 것일 수 있다. 벤더 및 사용자 앱에 대한 일반적인 네트워크 레이아웃은 도 173에 나와 있고, 여기서 벤더는 로컬 브라우저 기반 쿠키를 사용하여 사용자 또는 그의 현재 세션에 태그를 지정할 수 있고 빅 데이터 수집 서버를 사용하여 앱로부터 그리고 앱 상의 일부 또는 모든 활동을 기록할 수 있다.
사용자가 자신의 보관 및 사용을 위해 너트에 있는 자신의 세션에 대한 전체 기록을 제공할 수 있는 앱과 상호 작용한다면, 사용자는 결국 도 174에 도시되는 바와 같이 디지털 활동의 다양한 측면을 수집할 수 있다. 이러한 세션 이력은 도 175에 도시된 바와 같이 사용자에게 더 많은 편의를 제공하기 위해 분석이 문맥 의존 앱에 의해 수행될 수 있는 문맥을 제공할 수 있다. 어플리케이션은 세션 이력을 앱 너트(17414)에 저장할 수 있으며, 이는 차례로 사용자에게 적절한 혜택을 제공할 수 있도록 사용자가 설치한 일부 또는 다른 모든 앱에 의해 사용될 수 있다. 문맥의 적절한 분석은 사용자가 수행하려는 작업의 본질을 유도할 수 있다. 회계 앱(17524)은 사용자가 수행한 결제 및 당좌예금 활동의 일부 또는 전부를 위해 앱 너트(17414)에 세션을 기록할 수 있다. 이러한 세션 이력을 읽을 수 있는 패턴 인식 앱(17520)은 이를 분석하고 월별 청구서에 대해 지불하기 위해 취해야할 이력 단계를 추천할 수 있으며, 사용자를 대신하여 취할 수 있는 조치의 미리 보기를 제시할 수 있다. 사용자가 분석에 동의하는 경우, 사용자 이름 아래의 다양한 계정을 사용하여 관련 청구서의 일부 또는 전부를 자동으로 지불하기 위해 이러한 단계를 실행할 수 있다. 이러한 너트 앱은 그녀가 너트클라우드(17500)를 통해 그녀의 너트를 동기화하면, 인터넷을 통해 사용자에게 이용가능할 수 있다.
앱 너트에 의해 저장된 문맥의 또 다른 유용한 측면은 반복 가능한 절차에 관한 것일 수 있다. 이는 이전 명령이 요구에 따라 선택적 재실행을 위해 저장되는, 개발자가 좋아할 수 있는 명령 라인 인터페이스 사이에서 공통 특징이다. 앱 너트는 거의 모든 호환 앱 상에 사용자에 대해 요구에 따라 동일한 유형의 절차 리콜을 제공할 수 있다. 문맥 저장 여행 앱은 사용자에 의한 웹 상의 최초 검색 후에, 앱 너트에서 제안된 여행에 대한 요구 사항의 본질을 제공할 수 있다. 나중에, 사용자는 문맥 의존 여행 검색 앱을 사용하여 정제된 요구 사항을 재실행하여 자동으로 바람직한 여행 아웃렛의 일부 또는 전부에 대해 이러한 검색을 재개할 수 있다. 이는 각각의 여행 웹 사이트에서 다양한 양식을 다시 입력하는 데 소요되는 시간을 줄일 수 있으며 일부 또는 모든 옵션의 자동 요약을 생성할 수 있다. 또한, 프로세스는 사용자에 의해 완전히 제어될 수 있고 일부 또는 모든 민감한 정보가 너트북에 저장될 수 있기 때문에, 그녀가 마일리지 혜택 및/또는 회원 자격을 맺고 있는 벤더에 대한 문의는 문맥 의존 여행 검색 앱에 의해 적절히 적용되어 그녀에게 가장 개인화되고 의미 있는 결과를 얻을 수 있다. 사용자가 벤더에게 잠시 또는 항상 자신의 민감한 디지털 정보의 일부 또는 전부에 대해 전적으로 규제 없이 접근하게 하지 않고 완벽하게 그를 신뢰하지 않는다면, 이러한 유형의 심도 있는 문맥 의존 검색은 단일 벤더 의해 수행되는 것은 거의 불가능하다; 이는 평균적 디지털 감수성의 사용자에게 있어서 매우 의심스러운 제안일 수 있다.
또 다른 구현예에서, 도 176은 그녀가 가정에서 일상 생활 중에 구독할 수 있는 사용자의 IoN/IoT 장치 및 다양한 유틸리티 및 서비스에 대한 네트워크 레이아웃을 도시한다. 어떤 단일 회사도 사용자의 전체 가정 생활을 디지털 방식으로 수집할 수 없다. 그러나, 일부 또는 모든 그녀의 장치가 앱 너트를 생성했고 그녀가 다양한 디지털 문맥을 분석할 수 있는 앱을 갖고 있으면, 사용자는 이를 수행할 수 있다. 에너지 절약 문맥 의존 앱은 가정에서 다양한 전자 기기의 전기 사용을 분석하고 이를 전기 회사의 피크 및 비피크 속도와 결합하여, 그녀를 대신하여 앱에 의해 자동으로 실행될 수 있는 에너지 절약 수단을 제안할 수 있다. 그것은 과거로부터 상황의 세트를 인지할 때, 각 장치에 관한 그녀의 개인적 사용 습관을 분석하여, 그녀를 위해 편리한 조합을 조정할 수 있다. 정기적으로 자가 진단을 실행하여 결함이 있는 부분 또는 차선의 작동 판독이 드러나면, IoN/IoT 장치는 그녀에게 유지 요구사항을 알려 줄 수 있다.
장치 소유자에 의해서라기보다는 제조업자 및/또는 잠재적 불법 해커에 의해 전적으로 제어될 수 없는 다양한 환경 센서를 포함한 IoT 장치와의 보안 문제가 있을 수 있다. 도 177은 두 개의 IoN 장치 및 각각의 제조자의 네트워크 레이아웃의 예시를 보여준다. 앱 너트(17734 및 17744)가 각각의 IoN 장치(17730 및 17740)에 의해 생성될 때, 그것은 너트서버(17722)에 의해 로컬 저장소(17724)에 국부적으로 보관될 수 있다. 이러한 보관된 앱 너트는 나중에 사용자가 제3자가 수집하는 것이 부적절하다고 판단되는 민감한 정보를 제거하기 위해 제조자에게 전송하기 전에 사용자가 검토 및 필터링할 수 있다. 도 178에서, 문맥 분석 앱(17808)은 실수로 제3자에게 개인 정보를 노출시키는 것을 최소화하기 위해 그녀의 IoN/IoT에 의해 생성된 메시지의 일부 또는 전부의 특화된 정기적 필터링을 제공한다. 이러한 방식으로, 제3자는 각 소유자가 허용할 수 있는 범위까지만 판매되는 각 장치에서 일부 데이터를 여전히 수집할 수 있고; 그러므로, 일반 구매자가 그들에게 제공하고자 하는 개인 정보를 추론할 수 있다.
FHOG: 유연한 계위 객체 그래프
다층으로 암호화식으로 표현된 보안 메커니즘을 포함하는 너트 컨테이너는 FHOG 또는 유연한 계위 객체 그래프로 불릴 수 있는 임의의 논리적 그루핑의 저장 및/또는 너트ID의 매핑을 허용할 수 있고, 여기서 각각의 너트ID는 FHOG너트를 포함하는 임의의 저장가능한 디지털 데이터를 홀딩하는 너트 컨테이너의 식별 또는 참조를 나타낼 수 있다. 도 179는 “*.nut” 파일로 표현되는 3개의 다른 너트의 도시를 나타낸다. "C1.nut"(17900)는 비정형 연락처 너트를 나타낼 수 있으며, 페이로드는 개인에 관한 데이터 및 연락처 세부를 포함할 수 있다. 페이로드의 "유형"으로 표시된 필드는 이를 나타내기 위해 "연락처"로 표시될 수 있다. “P1.nut”(17910)는 비정형 워드 너트를 나타낼 수 있고, 페이로드는 마이크로소프트 워드 텍스트 에디터에 대해 포맷된 문서를 포함할 수 있다. 페이로드의 "유형"으로 표시된 필드는 이를 나타내기 위해 "워드 문서"로 표시될 수 있다. “F1.nut”(17920)는 비정형 FHOG너트을 나타낼 수 있고, 페이로드는 너트ID 및 다른 속성을 포함할 수 있다. 페이로드의 "유형"으로 표시된 필드는 이를 나타내기 위해 "fhog"로 표시될 수 있다.
도 180은 사용하여 "FHOGl.nut"이라는 파일에 저장된 FHOG 너트(18000)를 도시하고, 너트ID=f21, 유형=fhog 및 FHOG는 FHOG에 열거된 각각의 너트ID의 너트 페이로드 유형의 표시와 함께 너트ID(18002)의 목록을 포함한다. FHOG 목록에 너트ID 엔트리는 너트ID 및 유형으로 제한되지 않을 수 있다. 속성의 적절한 조합은 입력한 너트ID별로 FHOG 목록에 보관할 수 있고, 이는 권한이 있는 어플리케이션에 의해 FHOG의 취급을 더 용이하게 할 수 있다. 너트ID 필드는 FHOG에 대한 1차 인덱스가 될 수도 있고 아닐 수도 있다. 소정 너트ID에 대한 FHOG 매핑 엔트리는 또한 그것이 나타낼 수 있는 해당 ID에 적합할 수 있는 바와 같이, (키, 값) 쌍으로 식별되는 변수 속성의 형태를 취할 수 있고, 따라서 FHOG는 테이블 형태, 키-값 형태 또는 그의 임의의 조합으로 구성될 수 있다. 로컬 및/또는 전역 참조의 임의의 조합은 상대적 및/또는 국지적 식별자가 참조로 사용되면서 내재되어 있을 수 있는 자명한 주의 사항 및 단점을 지닌 절대적 및/또는 상대적 방식으로 객체를 식별하도록 사용될 수 있다. 참조는 너트ID, 경로명, 클라우드 저장 기반 식별자, 일련 번호, URL, IP 주소, 및 MAC 주소를 포함하지만 이에 국한되지 않는다. FHOG(18002)는 2개의 에지 또는 링크로 연결된 2개의 레벨과 3개의 노드(18010, 18020 및 18030)의 단순한 트리 그래프를 도시할 수 있다. 제네릭 그래프(18040)는 선형 그래프로 오인될 수 있고, 여기서 헤드는 (18020) 또는 (18030)일 수 있고, 너트 f21(18000)에 의한 FHOG 목록(18002)으로의 너트 f1(18020) 및 f3(18030)의 계위적 캡슐화는 암묵적으로 링크(18012 및 18014)를 특정할 수 있다. 너트 f1(18020) 및 f3(18030)은 FHOG(18002)에 "유형" 필드로 표시될 수 있는 바와 같이 FHOG 너트 유형이다. 그러나, 너트 f1의 실제 너트 유형은 FHOG(18002)를 가로지르고 너트(18020)을 검색하고 가시적인 메타데이터를 브라우징하고 및/또는 “F1.nut” 파일 또는 컨테이너에 적절한 키를 제시하여 f1로의 허용된 접근을 얻음으로써만 더 확인될 수 있다.
FHOG(18002)는 텍스트 데이터, 데이터베이스 테이블, NoSQL 객체, 연결된 목록, 어레이, 해시 어레이, 다른 복잡하고 및/또는 단순한 데이터 저장 유형과 같은 그러나 그로 한정되지 않는 다양한 데이터 구조로 표현될 수 있다. FHOG(18002)에 대한 어플리케이션 접근은 최소로 FHOG 너트(18000)에 대한 읽기 접근을 의미할 수 있지만 반드시 동일한 접근 어플리케이션이 해당 FHOG에 나열된 너트에 대해 동일한 수준의 접근을 할 수 있음을 의미하는 것은 아닐 수 있다. 각각의 너트 컨테이너는 자체 보안 메커니즘을 가질 수 있으므로, 너트 fl(18020) 및 f3(18030)과 같은 각각의 연결된 FHOG 너트는 연결된 너트의 페이로드로의 추가 가시성을 얻기 위해 동일하고 및/또는 다른 자격증명(또는 외부 입력 키)의 제시를 요구할 수 있다. 접근 어플리케이션이 연결된 너트에 최소로 요구되는 정확한 입력 키를 제공할 수 없다면, 그러한 접근은, 본 개시에서 이전에 구체화된 바와 같이 완전히 독립적이고 암호화적인 방식으로 연결된 너트의 접근 보안 메커니즘에 의해 차단될 수 있다. 접근 어플리케이션이 연결된 너트에 정확한 입력 키를 표시한다면, 그러한 접근은 SAC, NAC, 가변 키홀, 가변 잠금 및 무한 가변 잠금 노드 그래프 조합과 같은 그러나 그로 국한되지 않는 본 개시에서 이전에 구체화된 바와 같이 완전히 독립적이고 암호화적인 방식으로 연결된 너트 내의 직장에서 다른 보안 메커니즘에 의해 여전히 일부 정도로 제한될 수 있다. 각각의 너트 내에 독립적으로 구현된 암호화 보안 접근의 이러한 속성은: 1) 동일한 대상 너트 및/또는 그 파생 FHOG 그루핑으로부터 유도된 접근 조합 그래프의 무한 순열을 나타내도록 무작위 FHOG를 허용하고, 2) 너트 컨테이너가 안에 데이터에 대한 자가 포함된 보호 엔드포인트로서 간주되는 것을 허용하여, 참조 모니터와 독립적이며 동시에 임의의 디지털 환경을 가로질러 데이터 객체와 함께 휴대가능한 방식으로 구성된 접근 정책을 강제할 수 있는 캡슐화에 의한 객체층에서의 보안인 것으로 사이버 보안에서 해당 기술분야의 당업자에게 공지된 엔드포인트 보호에 대한 종래의 관념을 일축할 수 있다. 너트에 의해 구현될 수 있는 것과 같이, 자체 엔드포인트로서 역할을 할 수 있는 데이터의 그러한 관점은 엔드포인트로서의 데이터(DaaE) 및/또는 선언적으로 데이터는 엔드포인트이다(DitE)로서 언급될 수 있다.
도 181은 FHOG(18102)를 특정하는 FHOG 너트 f8(18100)를 도시한다. FHOG에 나열된 너트 ID 중 일부는 동일한 FHOG 내에 나열된 다른 너트ID에 대한 링크를 갖음을 나타낼 수 있다. 링크 속성의 사용은 이러한 FHOG를 조직적 FHOG로 플래그할 수 있고, 여기서 FHOG 너트ID 사이의 관계는 (18130)에 도시된 바와 같이 독립형 그래프 형태로 표현될 수 있다. 이러한 예시에서, 그래프(18130)는 연락처 사이의 조직적 계위를 보여주는 연락처 너트를 포함할 수 있다. 파일 시스템, 가상 파일 시스템, NAS, 분산 파일 시스템 및 클라우드 파일 시스템과 같은 그러나 이에 국한되지 않는 종래의 파일 구성 시스템은 여러 가지 이유와 제약 때문에 그래프(18130)에 도시된 것과 같이 객체의 조직적 표현의 생성을 용이하게 허용하지 않을 수 있다. 이러한 환경 제약 조건 중 하나는 너트ID와 같은 그러나 그로 한정되지 않는 실제로 고유한 방식으로 데이터를 일관되게 식별하는 능력의 부재일 수 있다. 자체 PUID 또는 너트ID로 너트 컨테이너에 태그를 지정하는 것은 다른 시스템이 특정 너트ID를 갖는 너트에 저장된 데이터의 소정 식별 가능한 조각에 대한 절대 참조를 사용하는 것을 허용할 수 있다. 절대 참조의 긍정적인 특성은 임의의 추가 조회 없이 소정 너트ID(그러므로, 너트ID 및 그 보호된 컨텐츠)에 직접 접근하고 및/또는 그를 직접 요청하는 것의 일반적인 단순함일 수 있고, 추가적인 다운스트림 부정적인 결과를 최소화하는 가능성을 나타낼 수 있다. 너트ID와 같은 그러나 그로 한정되지 않는 절대 참조의 생성 및 사용에 대한 또 다른 관점은 범용 네임스페이스 내에서 데이터 식별자를 암시적으로 정의하여 알려진 유니버스 내에서 임의의 그리고 모든 가능한 컴퓨팅 및 저장 환경을 잠재적으로 포함하는 것에 관한 것일 수 있다. 또한, 이러한 범용 식별자는 과거, 현재 및/또는 미래의 임의의 시간 기간에 걸쳐 고유성을 그 자신에 부여할 수 있고, 그로써 이러한 범용 식별자는 시간과 공간 모두에서 객체를 식별할 수 있다. 종래의 경로명 기반 계위 파일 시스템에서, 절대 참조 대신 상대 경로명을 사용하는 임의의 그리고 모든 FHOG 목록이 파일의 경로명의 재명명으로 업데이트되어야 하므로, 파일을 한 디렉토리에서 다른 디렉토리로 이동하는 것은 경로명에 의해 FHOG 목록을 생성하려는 시도를 악화시킬 수 있다; 이는 하나의 디렉토리에서 또 다른 것으로의 단순 파일 재배치로부터 기인하는 관련 파일에 대한 업데이트의 캐스케이드를 초래할 수 있다. 일부 파일 시스템은 다중 아이노드(inode)가 해당 파일 시스템 내의 동일한 논리 파일을 가리키는 하드 링크와 같은 옵션을 나타낼 수 있다. 이러한 하드 링크를 사용하는 제한 요인은 일반적으로 아이노드가 즉각적인 하드웨어 및/또는 운영 환경으로 국부화될 수 있다는 것이다. 반대로, 종래의 계위적 경로명 기반 파일 시스템 내에 저장된 너트의 재배치는 절대 참조로 그를 참조하는 FHOG 너트의 리팩터링이 필요하지 않고, 그로써 FHOG 목록이 모든 운영 환경 및/또는 시간 기간에 걸쳐 일관되고 구체적이며 및/또는 관련성 있게 유지되는 것을 허용할 수 있다. 파일을 식별하는 전체 경로명 방법은 컴퓨팅 환경 내에서 데이터의 구획을 위치시키는 널리 채택된 종래의 방법일 수 있다. 벤더에 특정된 내부 메커니즘이 클라이언트 계위 경로명에 내부 고유 식별자에 대해 태그를 지정하고, 따라서 클라우드 저장 네트워크의 숨겨진 부분 내에 선형 파일 시스템에서 작동하는 일부 클라우드 기반 저장 시스템이 있을 수 있다. 그러나, 이러한 벤더 특정 선형 파일 식별 스킴에 대한 클라이언트 노출은 특정 벤더에 의해 공급된 시스템에 수반된 긴밀한 통합으로 인해, 벤더에 의해 제한되고 및/또는 클라이언트에게 충분히 호소하지 못할 수 있고 및/또는 다른 클라우드 저장 벤더 시스템을 가로질러 통합 난점을 나타낼 수 있다. 하나의 디렉토리에서 또 다른 디렉토리로의 파일의 이동은 국부적으로 고유한 식별자를 변경하는 효과를 가질 수 있고, 따라서 임의의 방식으로 파일을 영구적으로 식별하는 것을 더 어렵게 만들 수 있다. 그들을 고유하게 식별하려는 시도에서 개별적으로 유지되는 참조 시스템에서 파일의 내용을 인덱싱하고 해싱하는 일부 종래의 방법은 또한 임의의 내용 변경 및/또는 파일 재배치에 의해 참조 시스템 인덱스에 필요한 재해싱 및 재인덱싱으로 인해 명백한 약점을 나타낼 수 있다. 너트ID와 같은 그러나 그로 한정되지 않는 범용 네임스페이스에서 충분한 길이(너트ID에 대해 제안되는 512 비트의 시작 길이)의 실제적으로 고유 식별자는 범용 네임스페이스 식별자의 성질이 로컬 경로명이나 로컬 참조와 독립적이기 때문에 이러한 추가 유지에서 시스템을 면제시킬 수 있고, 그러므로 변경된 참조와 연관된 종래의 난점 중 다수를 우회할 수 있다. 또한, FHOG는 참조 기반 파일 시스템으로 간주될 수 있고, 여기서: 1) 객체의 물리적 저장 및/또는 위치는 범용 네임스페이스와 같은 그러나 이에 국한되지 않는 대형 네임스페이스 내에서 루팅될 수 있는 객체의 식별 특성과 독립적일 수 있습고; 2) 객체 내용의 수정은 식별 특성에 영향을 주지 않을 수 있고; 그리고 3) FHOG에 대한 사용자의 접근 권한은 FHOG에서 참조된 객체의 각각에 대한 사용자의 접근 권한과 독립적일 수 있고, 이는 각각의 참조된 객체가 독립적인 암호화 접근 제어를 나타내는 자체 너트 컨테이너에 표현될 수 있기 때문이다.
도 182는 일반적인 파일 시스템의 종래의 디렉토리 구조와 유사한 계위 트리를 형성하는 FHOG 너트 f1(18210) 및 f3(18220)을 도시한다. (18244) 및 (18264)로 표현된 너트 p1은 페이로드에 워드 문서를 포함할 수 있으며 메타데이터에서 "프로젝트 계획"으로 명명될 수 있다. 너트(c1, c2 및 c3)는 (18250), (18252), (18254), (18270), (18272), 및 (18274)에 의해 도시되는 바와 같이 연락처 너트일 수 있다. FHOG f1은 프로젝트에 할당된 세 명의 멤버를 갖는 특정 프로젝트 p1을 포함하는 너트ID의 조직화된 컬렉션을 나타낼 수 있다. FHOG f1에 대한 읽기 접근이 주어질 수 있는 임의의 사용자/프로세스는 적어도 너트ID p1 및 f3를 볼 수 있다. 나열된 너트의 각각의 소유자(들)(루트 접근 계층 또는 RAT 수준 입력 키 홀더)에 의해 접근을 허용하는 것이 구체적으로 가능하지 않다면, FHOG f1에 의해 허용된 접근 제어는 FHOG에 나열된 너트 중 어느 하나에 의해 이전되거나 상속되는 것으로 가정되지 않는다. 목록의 각각의 너트는 사용자/프로세스에 의한 공개 시도 시에 자신의 접근 제어를 제공하고 강제할 수 있다. 목록의 각각의 너트는 다른 RAT 수준 소유자와 함께 존재할 수 있다. 예를 들어, 프로젝트 계획 p1(18244)은 민감한 세부 사항을 포함할 수 있고 따라서 더 엄격한 제어를 나타낼 수 있고, 일반적인 FHOG f1 뷰어로부터의 접근을 보호할 수 있다. 또한 프로젝트 계획 p1에 대한 이러한 사용자 정의 제한은 p1 너트(18244)를 참조하는 임의의 다른 FHOG 너트에 나타날 수 있다. 너트 p1은 보호된 환경 내에서 프로젝트 그룹 키 및 특정 데스크탑 컴퓨터를 포함하는 다중 요소 인증 방법으로만 접근을 허용하도록 구성되었을 수 있다. 이는 임의의 소정 FHOG 너트를 가로질러 일관되지만 무한히 사용자 지정이 가능한 접근 제어 모델 및 고유한 내부자 위협 보안 위험을 나타낼 수 있는 임의의 중심화된 인증 포털과 독립적인 개별 너트를 저장하는 임의의 이종 환경에 걸쳐 그 구성요소 너트를 나타낼 수 있다.
도 183은 일반적인 파일 시스템에서 종래의 디렉토리 구조와 유사한 계위 트리를 형성하는 FHOG 너트 f2(18310) 및 f4(18320)를 도시한다. (18344) 및 (18364)로 표현된 너트 p2는 페이로드에 워드 문서를 포함할 수 있으며 메타데이터에서 "프로젝트 계획"으로 명명될 수 있다. 너트(c1 및 c2)는 (18254), (18270), (18370), 및 (18372)에 의해 도시되는 바와 같이 연락처 너트일 수 있다. 연락처 너트는 도 182로부터 너트(18250, 18252, 18270 및 18272)에 의해 특정된 것과 동일한 너트일 수 있다. FHOG f2는 프로젝트에 할당된 두 명의 멤버를 갖는 특정 프로젝트 p2를 포함하는 너트ID의 조직화된 컬렉션을 나타낼 수 있다. FHOG f2 및 f4는 어떻게 너트ID의 무작위 컬렉션이 연락처(c1 및 c2)의 이들과 동일한 절대 너트ID를 참조하는 다른 FHOG 너트로 형성되는지를 보여 줄 수 있다. 연락처 너트 c1(18350)은 너트ID c1을 참조하는 다수의 FHOG 너트를 가질 수 있다. 너트 c1의 물리적 표현이 어디에 저장되든 상관없이, 그에 대한 참조는 너트 c1을 포함하는 모든 FHOG 내에서 참조에 동일하고 변경되지 않을 수 있다. 너트 c1이 너트로서 영구히 삭제된다면, c1에 대한 FHOG 엔트리가 진부할 수 있고, FHOG 사용자/프로세스에 의해 소망된다면 업데이트를 요구할 수 있다. 일부 구현예에서, 너트 기반 환경에서 너트의 삭제를 처리하는 대안적인 방법은 분산되고 탈중앙집중화된 환경에서 시간이 지남에 따라 범용 식별자를 갖는 내재된 복잡성을 해결하기 위해 묘석 기법의 사용을 요구할 수 있고, 이는 "삭제된" ID가 분할 복구 시 다시 나타날 수 있고 새로운 ID 및/또는 부활된 ID로 자신을 나타날 수 있기 때문이다.
FHOG 너트의 사용은 동일한 너트의 무작위 그룹핑을 무한 개의 방식으로 허용할 수 있으며, FHOG 너트의 공유, 전송 및/또는 복제는 수신자가 웹 기반 클라우드 파일 관리 시스템, NAS 장치, 분산 파일 시스템, 운영 체제 및 종래의 파일 시스템과 같은 그러나 그로 한정되지 않는 중앙 저장소 또는 소스를 참조할 필요 없이 구성요소 너트ID에 대한 동일한 조직적 보기를 이용하도록 허용할 수 있다. 너츠 에코시스템의 복제 측면은 단일 사용자가 너츠가 작동할 수 있는 모든 그녀의 컴퓨팅 환경에 걸쳐 FHOG 내의 너트ID의 특정 그룹핑에 대한 동일한 보기를 이용하도록 허용할 수 있다.
도 184는 GUI 설정에서 FHOG 너트 f2(18310) 및 f4(18320)의 도시를 나타낸다. FHOG 너트 f2는 (18462)로 도시될 수 있고, FHOG 너트 f4는 (18466)로 도시될 수 있고, 워드 너트 p2는 (18464)로 도시될 수 있다. 윈도우(18462)에서 아이콘(18464)을 더블 클릭하는 것은 너트 p2(18468)에 저장된 실행 가능한 메타데이터를 사용하여 p2의 페이로드로 워드 어플리케이션이 열리도록 할 수 있다. 윈도우(18462)에서 아이콘(18466)을 더블 클릭하는 것은 너트 c1(18470) 및 너트 c2(18472)에 두 개의 프로젝트 멤버를 표시하는 또 다른 FHOG GUI 윈도우(18474)를 생성할 수 있다. 본 예시 내에 나타난 거동은 사용자/프로세스가 각각의 너트 p2 및/또는 피트에 대한 적어도 읽기 접근을 할 수 있는 경우에만 가능할 수 있다.
도 185는 FHOG 목록(18512) 내에 너트ID f1(18560) 및 f2(18580)를 나열하는 FHOG 너트 f5(18510)의 도시를 나타낸다. FHOG f5는 (18530) 및 (18550)에 도시된 바와 같이 FHOG f1 및 f2의 계위적 조망 상의 더 높은 층을 생성할 수 있다. (18530)에서 모든 너트ID의 조직화에 대한 무작위 추가층은 임의의 특정 시퀀스에서 수행될 수 있다. 일부 리눅스 파일 시스템 소프트/하드 링크와 달리, 너트ID는 로컬 환경 내의 너트로 제한되지 않을 수 있으며, 더 중요하게, 개별 너트의 물리적 재배치는 그들을 참조할 수 있는 임의의 FHOG를 반드시 구식으로 만들지 않을 수 있다. 요소(18540)는 아이콘으로 표현된 FHOG f1(18560) 및 FHOG f2(18580)를 갖는 FHOG 너트 f5의 GUI 도시를 보여준다.
도 186은 추가 FHOG(18610, 18612, 18614, 18616, 18618 및 18620)를 포함하는 FHOG 너트 f2(18600)의 확장된 변형을 보여준다. 특히, FHOG f8(18620)은 관련 프로젝트 멤버 및 그들의 상사 3 레벨 업의 조직 트리를 포함하는 조직 FHOG(18630)의 예시를 보여 줄 수 있다. (18660)은 조직 FHOG(18630)의 GUI 표현을 도시할 수 있다. 종래의 파일 시스템은 기본적으로 내장된 형태로 조직 FHOG와 같은 데이터 구조를 용이하게 처리하지 못할 수 있으며, 일반적으로 단일 및 다중 루팅된 계위 그래프 구조의 조합을 허용하지 않을 수 있다. FHOG에서, 임의의 그래프 구성에 멤버 너트ID가 표현될 수 있으며, 각각은 각각의 너트ID, 그로써 그에 의해 참조될 수 있는 각각의 너트별 보안 접근 제어에 대한 가정이 없는 일관된 방식으로 동일한 접근 방법을 사용하여 접근될 수 있다. 너트당 모든 접근 제어는 해당 너트의 구성에 의해서만 단독으로 제공될 수 있다.
도 186은 또한 FHOG 너트ID f12(18616) 및 f15(18618)의 예시를 보여준다. 너트 f12는 주로 프로젝트 p2와 연관된 채팅에 대한 참조를 홀딩할 수 있다. 이러한 채팅 참조는 채팅 너트 및 그 각각의 너트ID 및/또는 프로젝트 p2와 관련된 다른 채팅 서비스 및 세션에 대한 접근 너트의 너트ID를 가리킬 수 있다. 너트 fl5는 주로 프로젝트 p2와 연관된 이메일에 대한 참조를 홀딩할 수 있다. 이러한 이메일 참조는 이메일 너트 및/또는 그 각각의 너트ID, 프로젝트 p2와 관련된 다른 이메일 서비스 및 세션에 대한 접근 너트의 너트ID, 및/또는 프로젝트 p2와 관련된 다른 이메일 소스에 대한 참조를 가리킬 수 있다. FHOG 너트 f2(18600)에 의해 표현된 데이터의 조직화는 프로젝트 p2의 많은 측면이 그들이 물리적으로 어디에 있든 관계없이 FHOG에 의해 참조된 소스 데이터 객체를 불필요하게 복제하지 않고 논리적으로 그룹화되도록 허용할 수 있다. 그러므로, 어떠한 이유로든 소스 객체의 복제가 소망되면, 너트 컨테이너에 의한 이러한 소스 객체의 캡슐화는 그에 너츠 에코시스템의 모든 복제 및 동기화 특징을 불어넣을 수 있다.
도 187은 여러 네트워크를 도시하고, 여기서 예시적인 저장 엔드포인트는 랩탑 저장소(18762), 데스크탑 저장소(18752), 스마트폰 저장소(18740), 데이터베이스 서버 저장소(18772), 기업 네트워크(18710) 내의 네트워크 부착된 저장소(NAS)(18712), WAN 또는 인터넷(18700)을 직접 마주하는 NAS(18720), 및 클라우드 저장소 플랫폼(18730)을 지원하는 임의의 NAS(18732)와 같은 그러나 그로 한정되지 않는 바와 같이 도시된다. 랩탑(18760), 데스크탑 컴퓨터(18750) 및 스마트폰(18740)은 사설 LAN(18780)에 추가로 네트워크화될 수 있다. 이러한 저장 엔드포인트 중 어느 하나는 소프트웨어 및/또는 하드웨어 기반 RAID 구성, 분산 파일 시스템, 객체 저장 시스템, 분산 저장 시스템, 하이브리드 저장 시스템, 중복 제거 저장 시스템, 소프트웨어 정의 저장 시스템, 백업 저장 시스템, 중복 저장 시스템, 아카이브 저장 시스템 및 디지털 데이터의 논리 유닛을 저장할 수 있는 임의의 저장 시스템을 대표할 수 있지만 그로 한정되지 않지만, 논리 저장 유닛이 정의될 수 있다.
너츠 에코시스템 내에서, 논리적 위치는 저장소의 논리 유닛의 식별자를 참조하여 순차적 방식으로 저장소의 논리 유닛을 저장하고 검색하는 방법이 있는 한, 이전 단락에서 설명된 바와 같이 저장소 엔드포인트의 임의의 하나 또는 그의 조합으로 정의될 수 있다. 예를 들어, 너트 컨테이너는 저장소의 논리 유닛일 수 있고 그의 너트ID는 식별자일 수 있다. 식별자가 너트ID로부터 물리적 너트 컨테이너로 해소될 수 있는 방법은 도 188에 도시된 바와 같이 너트서버 너트ID 인덱스(18812)를 통해 수행될 수 있다. 너트서버 NS1(18810)은 너트ID의 목록 및 각각의 논리적 위치를 포함하는 너트ID 인덱스(18812)를 관리할 수 있다. 너트 c1(18822), c2(18824) 및 c3(18826)은 위치 L1(18820)에 저장될 수 있다; 너트 f1(18832), f2(18834) 및 C1(18822)은 위치 L2(18830)에 저장될 수 있다; 너트 p1(18842) 및 p2(18844)는 위치 L3(18840)에 저장될 수 있다. 너트ID 인덱스(18812)는 너트ID 및, 너트서버 NS1가 수신할 수 있는 가장 최근 업데이트로서 발견될 수 있는 각각의 위치를 열거할 수 있다. 너츠 에코시스템의 복제 성질로 인해, 너트ID c1(18822)과 같은 너트는 다중 논리 위치 L1(18814) 및 L2(18816)에 저장될 수 있다. 이러한 경우, 너트서버 NS1은 가장 효율적인 방식으로 최적화 규칙을 적용하여 너트 c1을 검색할 수 있다; 예를 들어, 위치 L1(18820)은 NS1(18810)에 의해 직접 접근가능한 SSD 드라이브일 수 있는 반면 위치 L2(18830)는 네트워크 접근가능 저장 장치일 수 있고, 그러므로 가능하게 L1을 너트 c1을 검색하는 상대적으로 더 효율적인 방법으로 만들 수 있다.
도 189는 3개의 너트서버 NS1(18900), NS2(18910) 및 NS3(18920) 및 각각의 논리 저장 위치 L1(18904) L2(18914) 및 L3(18926)을 보여준다. 논리적 위치 L3(18926)은 클라우드 저장 플랫폼(18924)에 의해 서비스될 수 있고, 여기서 NS3(18920)은 사전 등록되고 우리가 L3(18926)로 지정할 수 있는 일부 저장 공간에 할당될 수 있다.
너트서버는 함께 네트워크화될 수 있고 서로 통신하여 서로의 존재를 알 수 있다. 너트서버는 사용자가 원하는 임의의 네트워크 토폴로지를 형성하도록 구성될 수 있고 각각의 너트서버-너트서버 연결은 공유 접근 너트에 대해 접근하기 위해 적절한 입력 키를 제시함으로써 서로 인증을 요구할 수 있다. 본 실시예에서, NS1(18900)은 NS2(18910)에 네트워크화될 수 있으므로, 각각의 너트서버는 너트ID 요청을 전송하고 서로 메시지와 너트를 수신할 수 있다. 유사하게, NS2(18910)는 NS3(18920)에 네트워크화될 수 있다. 이러한 특정 토폴로지에서, 클라이언트 어플리케이션은 NS1(18900)과 통신할 수 있고 너트ID p1을 요청할 수 있다. NS1은 차례로, 내부 너트ID 인덱스(18902) 내에서 너트ID p1를 조회하여 그곳에 나열되지 않음을 알 수 있다. 그런 다음, NS1은 쿼리할 수 있는 임의의 다른 너트서버를 가질 수 있는지를 검토하여 NS2(18910)에 연결을 가질 수 있음을 확인할 수 있다. 그런 다음, NS1은 NS2로 너트ID p1에 대한 요청을 보내고, NS2는 너트ID 인덱스(18912)에서 너트ID p1을 조회하여 위치 L2(18914), 국부적으로 접근가능한 저장 유닛(18952),에 위치될 수 있음을 찾을 수 있다. 그러면, NS2는 위치 L2(18914)에서 너트 p1을 검색하고 NS1(189000), 요청자로 그를 보내도록 진행할 수 있다. NS1과 통신하는 클라이언트 어플리케이션로부터 이뤄진 요청 유형에 따라, NS1은 방금 수신된 너트 p1의 사본을 로컬 저장소 위치 L1(18904)에 저장하거나 저장하지 않을 수 있고 NS1은 너트ID 인덱스(18902)에 엔트리를 저장하거나 저장하지 않을 수 있다. 너트서버는 일관된 방식으로 거동할 수 있지고, 그로써 로컬 환경 내의 모든 너트ID를 인덱싱하지만 이는 필수 요구 사항이 아닐 수 있고, 이는 이론적으로, 모든 너트ID 인덱스가 동적으로 그리고 로컬 저장소를 체계적으로 이동함으로써 스크래치로부터 그리고 진행 중인 클라이언트 너트ID 요청 및 쿼리로부터 재구성될 수 있기 때문이다. 클라이언트 어플리케이션은 NS3(18920)과 통신할 수 있고 너트ID f2를 요청할 수 있다. 이 경우, NS3은 NS2에 요청을 보내고, 차례로, NS2는 NS1에 요청을 보낼 수 있다. NS1에서 위치 L1로부터의 너트 f2를 검색할 시에, NS2는 NS3으로 이를 전달할 수 있으므로 원래 클라이언트 어플리케이션은 너트 f2의 사본을 받을 수 있다. 위치 L3에 NS3에 의해 국부적으로 너트 f2를 저장하는 것은 NS3와 통신하는 임의의 어플리케이션에 의해 너트 f2에 대한 다음 요청을 신속하게 처리할 수 있게 하고, 그로써 로컬 캐시 및/또는 복제본 저장소 역할을 할 수 있다. 너츠 에코시스템의 복제, 동기화 및/또는 병합 측면으로 인해, 국분적으로 저장된 너트에 대한 임의의 수정은 연결된 너트서버에 걸쳐 이러한 변경의 전파를 초래하고, 그로써 결국 그러한 에코시스템에 걸쳐 모든 너트의 사본 가운데 특정 너트의 내용물에 관한 일관된 상태(최종 일관성)를 생성할 수 있다.
도 190은 너트서버 요청에 의해 FHOG 너트를 이동하는 순서도를 도시한다. 어플리케이션은 열린 FHOG 너트(19010-19014)를 이동하거나 탐색할 수 있으며, 각각의 FHOG 리스팅은 너트ID에 의한 것일 수 있고, 어플리케이션은 로컬 너트서버(NS)로부터의 참조(19016)만을 사용하여 특정 너트ID C1을 요청할 수 있다. 너트서버 NS에 대한 가져오기 요청이 성공하거나 그렇지 않을 수 있다(19020). 그런 다음, (19020)의 결과에 따라 어플리케이션에 의해 더 처리될 수 있다.
도 191은 너트ID를 가져오기 위한 클라이언트 요청을 처리하는 너트서버의 순서도를 도시한다. 너트ID C1에 대한 요청은 너트서버 NS(19110)에 의해 수신될 수 있다. 너트ID C1이 너트서버 NS(19112)의 로컬 너트ID 인덱스에서 발견되면, 너트 C1이 검색되어 요청자에게 보내지거나, 너트서버 NS(19144)에 대해 이뤄진 요청 유형에 따라 너트 C1의 위치 정보를 요청자에게 보낼 수 있다. 너트ID C1이 너트서버 NS(19112)의 로컬 너트ID 인덱스에서 발견되지 않으면, 너트서버 NS는 너트서버 및 너트클라우드 계정(집합적으로 NSC)(19114)를 통과한다. 너트서버 NS가 (19120)에 연결할 수 있는 각각의 NSC에 대해, 그것은 너트ID C1을 연결하고 요청하는 것을 시도할 수 있다(19122). 너트 C1이 NSC(19130)에 의해 발견되면, NS는 너트 C1(19132)(또는 그것에 대한 참조)을 받을 수 있고 너트 C1 정보를 요청자(19144)에게 돌려보낼 수 있다. 너트서버 NS는 원래 이뤄질 수 있는 요청(19140)의 유형에 따라 너트 C1(19142)의 위치를 갖는 자체 로컬 너트ID 인덱스를 업데이트할 수 있고 그렇지 않을 수도 있다. 또한, 너트서버 NS는 원래 이뤄질 수 있는 요청의 유형에 따라 요청자에게 정보를 성공적으로 전달(19144)할 시에 너트 C1의 로컬 사본을 보관하거나 보관하지 않을 수 있다.
이미지 파일, 소프트웨어 이미지, 대형 데이터베이스 쿼리, 대형 아카이브 및/또는 비디오와 같은 그러나 이에 국한되지 않는 대형 페이로드를 홀딩하는 너트를 가져오는 요청은 너트서버 대 너트서버, 너트클라우드 대 너트서버, 클라이언트 대 너트서버 사이에 데이터를 효율적으로 전송하는 대안적인 방법을 요구할 수 있다. 대안적인 방법은 다중스레드 메시지 전송, 우선 순위가 낮은 메시지 전송, 스트리밍, 더 작은 논리 단위로 분리, 제어가능한 원격 보기, 외부 논리 저장소에 대한 일시적인 직접 접근, 임시 사용자 지정 접근 너트를 통한 외부 논리 저장소에 대한 직접 접근 등을 포함할 수 있지만 이에 국한되지 않는다. 요청 컴퓨터가 가져올 수 있는 너트를 유지하는 데 필요한 메모리가 충분하지 않으면, 원하는 너트에 대해 발생되는 임의의 물리적 전송이 발생하기 전에 적절한 오류 메시지와 함께 요청은 실패할 수 있다. 다양한 속성의 너트를 효율적 방식으로 할당 및 저장하도록 너트서버의 네트워크가 구성될 수 있다. 저장소 엔드포인트는 너트 유형 및 너트 유형 및/또는 우선 순위에 의한 상대적 할당을 특정할 수 있는 논리적 위치 프로파일 너트에 의해 표현될 수 있다. 그러므로, 소정 너츠 에코시스템 내에 각각의 접근가능한 저장소 엔드포인트는 높은 우선 순위 너트의 사본을 하우징할 수 있으며 특정 저장 엔드포인트는 이미지 및/또는 비디오와 같은 대형 페이로드 너트에 대해 지정될 수 있다. 또한, 공간이 소정 장치 내에서 프리미엄에 있는 경우, 최근 사용된 기준으로 너트를 유지하는 선호가 있을 수 있고 일단 충분한 사본 수준이 검증되면, 더 오래되고 사용된 너트를 폐기할 수 있다. 대안적인 전송 방법은 온라인 스트리밍 및 원격 보기와 같은 그러나 그로 한정되지 않는 대형 페이로드에 적용할 수 있다. 각각의 저장 장치는 콘텐츠, 보안 수준, 크기 및/또는 원산지와 같은 그로 한정되지 않는 바와 같이 그것이 어떤 객체 유형을 저장할 수 있는지를 한정하는 제약 프로파일을 더 가질 수 있다.
논리적 위치 너트 및/또는 FHOG를 사용하여 저장 할당의 관리를 계층화하는 이러한 방법론은 클라우드 저장 플랫폼, NAS, 하드 드라이브, 플래시 드라이브, 데이터베이스, 소프트웨어 정의된 저장 시스템 분산된 파일 시스템 및 RAID 시스템과 같은 그러나 그로 한정되지 않는 임의의 규정가능한 로컬 저장 위치를 가로질러 작동할 수 있는 자체 최적화 저장 네트워크를 허용할 수 있다. 그러므로, FHOG는 그러한 플랫폼을 가로질러 저장된 너트ID를 참조할 수 있지만 클라우드 플랫폼, 내부 업무 저장 시스템, 개인 저장 장치 및 제거가능한 저장 장치로 한정되지 않는다. 본 개시의 더 나중 섹션에서, 저장 관리의 대안적인 수단은 특정 상황에서 뛰어난 유연성을 제공할 수 있는 카탈로그 및/또는 그룹에 의해 연결될 수 있다.
사용자의 관점에서, FHOG는 코어 너츠 어플리케이션을 실행할 수 있는 임의의 컴퓨터 상에 조직화된 데이터에 대한 일관된 보기를 제시할 수 있다. 너트에 저장된 FHOG는 보안, 복제, 이력, 로그, 최종 일관성 및/또는 다중 사용자 접근 및 편집과 같은 그러나 그로 한정되지 않는 너츠 에코시스템 내의 너트의 작동 특징을 상속받을 수 있다. 사용자는 쉽게 자신의 휴대용 컴퓨터에서 FHOG의 로컬 사본을 열고, 그러한 너트의 더 용이한 오프라인 보기 및/또는 수정을 허용하기 위해 FHOG 및 하위 FHOG 내의 일부 또는 모든 참조 너트ID의 로컬 사본을 체계적으로 요청할 수 있다.
FHOG 너트는 해당 잠금 노드 내에서 개정 이력 및/또는 이벤트 로그로 구성될 수 있다. FHOG의 개정 이력을 추적하는 것은 사용자/프로세스가 필요에 따라 이전 버전의 FHOG를 보고 및/또는 복구하게 할 수 있다. 또한, 대상 너트를 검색할 시에 그리고 충분한 접근으로, FHOG의 이전 버전이 이동되는 것과 동일한 시간 기간에 일치하도록 너트의 상응하는 이력 버전이 보여질 수 있는 바와 같이, FHOG의 이전 버전을 이동하는 동안, 관련 이력 파라미터가 대상 FHOG 엔트리에 적용될 수 있다. 너트 컨테이너에서 발견될 수 있는 바와 같이 그리고 이전에 개시된 것과 같은 그러한 이력 특징을 사용하여, FHOG 및 나열된 너트의 전체 이력 상태를 보는 것이 가능해질 수 있고, 이는 그 개시가 임의의 별개로 작동하는 기록 또는 백업 시스템 및 저장소와 독립적이기 때문이다.
NCL: 너트 구성 언어
도 192는 너트ID n23, 파일명 “N1.nut”, 및 NCL 너트001 및 일부 페이로드를 갖는 샘플 너트 컨테이너(19200)를 도시하고; 또한, 너트 n23은 다양한 조합으로 4개까지의 키(19202, 19204, 19206 및 19208)를 수용하도록 구성될 수 있다. 너트 n23(19220)의 부분 분해도는 다음의 방식으로 범용 키홀 및 가변 잠금을 작동할 수 있는 4개의 잠금 노드 잠금 그래프 구성을 보여 줄 수 있다: 잠금 노드(19232)는, 복호화하고 다음 잠금 노드(19234)에 대한 출력 키(19240)를 드러내기 위해, 키 중 적어도 하나가 잠금 노드(19232)의 범용 키홀에 제시되어야만 하는 키(19222) 및 키(19224)에 대해 설정된 두 개의 키 홀과 함께 ORLOCK 가변 잠금으로 구성될 수 있고; 잠금 노드(19234)는 복호화하고 다음 잠금 노드(19236)에 대한 출력 키(19242)를 드러내기 위해, 적어도 두 개의 키 모두가 잠금 노드(19234)의 범용 키홀에 제시되어야만 하는 키(19226) 및 드러난 키(19240)에 대해 설정된 적어도 두 개의 키홀과 함께 MATLOCK 가변 잠금으로 구성될 수 있고; 잠금 노드(19236)는 복호화하고 페이로드를 홀딩하는 다음 잠금 노드(19238)에 대한 출력 키(19244)를 드러내기 위해, 키 중 적어도 하나가 잠금 노드(19236)의 범용 키홀에 제시되어야만 하는 키(19228) 및 키(19242)에 대해 설정된 두 개의 키 홀과 함께 ORLOCK 가변 잠금으로 구성될 수 있고; 잠금 노드(19238)는 복호화하고 백 섹션 내의 페이로드를 드러내기 위해, 적어도 하나의 출력 키(19244)를 사용함으로써 접근하는 것을 허용할 수 있는 임의의 가변 잠금으로 구성될 수 있다. 우리는 다음 섹션에서, 왜 잠금 노드(19238)가 계층 수준 접근 제어를 수용하기 위해 MATLOCK으로 구성될 수 있는지를 도시할 것이다.
도 193은 계층 접근 제어(SAC) 및 너트 접근 제어(NAC)를 포함하는 너트 컨테이너 내에서 작동할 수 있는 접근 제어의 추가층을 드러내도록 도 192로부터 동일한 너트 n23을 도시한다. 상응하는 입력 키를 삽입하는 키홀(19302) 및/또는 키홀(19304) 중 어느 하나에 대한 키홀의 성공적인 복호화는 SAC 키 및/또는 NAC 키를 홀딩하는 복호화된 키맵을 드러낼 수 있다. 그러한 드러난 SAC 및 NAC 키는 상응하는 잠금 노드 부분에 삽입될 수 있다: SAC 키는 잠금 노드 L30(19334) 및/또는 L50(19338)과 같이 일치하는 계층 수준으로 태그가 지정된 잠금 노드의 범용 키홀에 직접 삽입될 수 있다. NAC 관련된 노출된 AAKS 키는 잠금 노드 L20(19332)의 접근 키홀에 삽입될 수 있으며 잠금 노드 그래프를 따라 접근 속성 키를 전파하는 AAPK 방법을 사용할 수 있고, 및/또는 NAC 관련된 노출된 AAKS 키는 잠금 노드 L50(19338)과 같은 대상 잠금 노드의 접근 키홀에 직접 삽입될 수 있고, 및/또는 임의의 노출된 AAKS 키는 너트 잠금 노드 그래프에 걸쳐 그들에 의해 제어될 수 있는 잠금 노드 부분에 직접 삽입될 수 있다. 잠금 노드 L30(19334)의 범용 키홀에 대한 키 요구사항을 다시 논의하면, 이제 SAC의 추가 접근 제어는 MATLOCK을 성공적으로 열기 위해 적어도 3개의 키를 최소로 수락하기 위해 잠금 노드 L30(19334)를 요구할 수 있다: 외부 입력 키(19306), 노출된 출력 키(19320), 잠금 노드 L20(19312)의 일치하는 입력 키에 대한 범용 키홀로부터 키맵의 복호화에 의해 노출된 계층 ‘a’에 대한 SAC 키. 유사한 방식으로, 페이로드 잠금 노드 L50(19318)는 이제 백 섹션에서 페이로드를 성공적으로 복호화하기 위해 적어도 2개의 키를 요구하도록 구성된 MATLOCK 가변 잠금을 요구할 수 있다: 노출된 출력 키(19324), 잠금 노드 L20(19312)의 범용 키홀로부터 키맵의 복호화에 의해 노출된 계층 ‘b’에 대한 SAC 키. 그러므로, SAC 구성된 잠금 노드(L30, L50)는 각각의 계층 수준에 대한 상응하는 SAC 접근 키를 적절하게 노출하는 외부 키에 의해서만 성공적으로 복호화될 수 있다.
잠금 노드 L50(19338)의 백 상에 구성된 NAC는 세분화된 암호 접근 제어가 잠금 노드의 백 섹션에 '데이터’ 상에 위치되는 것을 허용할 수 있다. NAC는 대상 데이터 및/또는 너트의 임의의 다른 부분에 대해 읽기, 쓰기, 확인 및 쓰기 전용 권한의 임의의 조합을 허용할 수 있다. 그러므로, 특정 NAC 접근 권한이 관련 잠금 노드(들)의 접근 키홀에 접근 역할 키(ARK)의 형식으로 외부 키 홀더에 부여되지 않으면, (19330)에 모든 잠금 노드(L20, L30, L40, 및 L50)를 성공적으로 이동하는 것은 트래버서가 잠금 노드(L50)의 백에 있는 데이터에 접근하는 것을 성공적으로 허용하지 않을 수 있다.
"너트OOl" (19352)로 라벨링된 너트 구성 언어(NCL) 세그먼트는 SAC 및 NAC 층을 포함하는 (19330)에 의해 도시된 바와 같이 잠금 그래프 구성을 체계적으로 구성하는 방법을 설명할 수 있는 컴퓨터 해석가능한 언어를 보여줄 수 있다. 라인 1은 라벨 너트001을 갖는 새로운 NCL 너트 구성을 선언한다. 라인 2은 페이로드(payload)라는 잠금 노드를 선언하며; 너트의 베일의 부분으로 그 기능을 나타내고; matlock의 가변 잠금으로 잠금 노드를 구성하며; 'b'로 계층 접근 제어 레벨 sac을 설정하고 잠금 노드의 백 섹션 상에 NAC 제어기를 위치시킨다. 라인 3은 메타데이터라는 잠금 노드를 선언하고; 너트의 테일의 부분으로 그 기능을 나타내고; orlock의 가변 잠금으로 잠금 노드를 구성하고; 그리고 페이로드 잠금 노드에 대한 링크를 논리적으로 그리고 암호로 생성한다. 라인 4는 게이트라는 잠금 노드를 선언하고; 너트의 헤어의 부분으로서 그 기능을 나타내고; Matlock의 가변 잠금으로 잠금 노드를 구성하고; ‘a’로 계층 접근 제어 수준 Sac을 설정하고, 메타데이터 잠금 노드에 대한 링크를 논리적으로 그리고 암호로 생성한다. 라인 5는 1차라는 잠금 노드를 선언하고; 너트의 너트잠금의 부분으로 그 기능을 나타내며, orlock의 가변 잠금으로 잠금 노드를 구성하고; 게이트 잠금 노드에 대한 링크를 논리적으로 그리고 암호로 생성한다. 라인 6은 1차 잠금 노드에서 the_rat이라는 새로운 크랙(암호화 역할 기반 접근 제어 키 사양)을 선언한다. 라인 7은 페이로드 잠금 노드의 백 섹션 상의 확인 접근을 제공하는 NAC 제어기에 대한 1차 잠금 노드에 페이로드 검증(payload_verify)이라는 새로운 크랙을 선언한다. 라인 8은 페이로드 잠금 노드의 백 섹션 상의 쓰기 전용 접근을 제공하는 NAC 제어기에 대한 1차 잠금 노드에 페이로드 쓰기 전용(payload_writeonly)이라는 새로운 크랙을 선언한다. 라인 9는 페이로드 잠금 노드의 백 섹션 상의 리더 접근을 제공하는 NAC 제어기에 대한 1차 잠금 노드에 페이로드 리더(payload_reader)라는 새로운 크랙을 선언한다. 라인 10은 페이로드 잠금 노드의 백 섹션 상의 작성자 접근을 제공하는 NAC 제어기에 대한 1차 잠금 노드에 페이로드 작성자(payload_writer)라는 새로운 크랙을 선언한다.
(19352)의 라인 2-5의 제 1 그룹은 잠금 노드 사이에 논리적-암호적 링크를 갖는 잠금 노드 그래프를 구성하는 데 충분한 정보를 제공할 수 있고; 각각의 잠금 노드가 역할을 할 수 있는 잠금 노드의 유형/부분을 특정하고; 잠금 노드가 계층 수준에 속하는지 여부를 특정하고; 잠금 노드에 이름을 지정하고; 각각의 잠금 노드에 대한 가변 잠금 유형을 설정하고; 특정 잠금 노드 섹션에 임의의 하위 잠금 노드 NAC 제어기를 설정한다. 그러한 구조적 및 설명적 언어를 사용하여, 임의의 무작위 잠금 노드 그래프 토폴로지가 표현될 수 있다. “link=” 파라미터는 다중 잠금 노드에 대한 다중 링크를 생성하기 위해 하나보다 많은 잠금 노드를 특정할 수 있다. 페이로드에 소망되고 및/또는 필요하다고 간주되면, 동일한 방법이 "sac" 및 "nac" 파라미터에 대해 적용할 수 있다.
라인 6-10(19370)은 그러한 세분화된 역할 기반 접근 제어 기능을 제공하는 암호 키를 사용하여 완벽하게 작동하는 NAC 제어 메커니즘을 구성하는 데 충분한 정보를 제공할 수 있다. 라인 6에 루트 접근 계층(RAT) 선언은 너트의 소유자 및/또는 소정의 그러한 RAT 접근 수준에 의해서만 완전히 수정가능한 잠금 노드 섹션 상의 NAC 제어기의 완전한 세트를 특정할 수 있다. 부가적으로, the_rat라고 하는 크랙의 선언은 너트 내에 작동하는 CRBAC 특징이 있을 수 있음을 인지하도록 너트에서 모든 잠금 노드를 디폴트하여, 그로써 기본적으로 너트를 완전한 NAC 모드에 위치시킬 수 있다. 너트에서 완전한 NAC 모드의 함축은 모든 비소유자(비-rat) 키 키맵이 키맵, AAKS, 모든 비 페이로드 구조 상의 디스털 서명 및 유도 키와 같은 그러나 이에 국한되지 않는 너트의 모든 잠금 노드 내에서 모든 RAT 제어된 데이터 구조에 대해 적어도 확인 접근으로 시드되는 것을 요구할 수 있다. 잠금 노드 순회가 유효한 RAT 작성자의 유효한 데이터 상에 계속됨을 합리적으로 확신하기 위해 다양한 내부 구조를 성공적으로 복호화하고 인증하기 위해 리더 접근이 포함될 수 있다. 외부 입력 키가 이러한 너트(19300)의 특정 잠금 노드의 특정 키홀에 삽입될 수 있는 경우, 키 삽입 작동은 삽입되는 키가 페이로드라는 잠금 노드의 백에 대한 확인 및 읽기 접근으로서 주어져야 함을 나타내는 페이로드 리더와 같은 크랙 설정을 특정할 수 있다. 이러한 세분화된 접근 제어 표현의 암호화 역학은 본 명세서의 NAC 개시에 완전히 구체화되었다.
특정 NCL 지시는 도면에 드문 예시에 의해 제한되지 않을 수 있지만 본 개시에서 발견되는 너트를 구성하는 임의의 특징을 설명하는 임의의 지시를 포함하도록 확장될 수 있다. 도면에 개시된 NCL 작동의 원리는 해당 기술의 당업자가 모뎀 해석 컴퓨터 언어 프로그래밍 기법을 사용하여 프로그램 너트 구성 시퀀스를 구조화된 구문 구동 포맷으로 체계적으로 변환하는 전체 의도를 추론하는 것을 허용하기에 충분할 수 있다.
도 194는 NCL 정의가 잠금 노드 L40(19400)으로서 너트 내에 저장될 있는 위치를 클로즈업한 뷰를 도시한다. 백 섹션(19410)은 NCL을 홀딩할 수 있고; 따라서 NCL은 잠금 노드 L40의 페이로드가 될 수 있다. 너트(19300)는 컴팩트한 NCL 형태로 자체 구조적 정의를 전달할 수 있으며, NCL 정의는 어떻게 NAC가 너트를 포함하는 다양한 잠금 노드의 특정 하위 섹션 상에 표현되고, 할당되고 및/또는 추진되는지에 대한 사용자 지정 정보를 제공할 수도 있다. NCL에 의해 표현가능한 너트 구성의 개수는 잠금 노드 그래프의 무한 순열과 유사하게 무한할 수 있다. NCL 정의를 활용하여 암호 접근 제어를 완전히 특정할 뿐 아니라 구조적으로 재생성하는 방법에 대한 정보를 전달하는 너트와 같은 데이터 구조는 보다 간단한 어플리케이션을 허용한다: 내장된 NCL은 이용가능한 다양한 너트 구성에 대한 세부 사항을 갖는 서비스 어플리케이션에 부담을 주지 않고 매우 복잡한 너트 구성의 정밀한 재생성을 허용할 수 있다. 너트를 구성하고, 생성하고 및 재생성하는 NCL 방법은 자체에 소정 페이로드에 대한 특정 보안 및 공유 목적을 위한 사용자 및/또는 IT 담당자에 의한 너트 구성의 용이한 맞춤화를 부여할 수 있다. NCL 주입에 의해 제공된 혜택은 새로운 너트 구성을 수용하고 접근하도록 인증된 사용자 측 어플리케이션이 재생성 방법을 알아야 할 필요가 있는 너트 구성을 선험적으로 알 필요가 없고; 사용자 측 어플리케이션이 유효한 NCL 선언을 성공적으로 처리할 수 있는 경우, 사용자 측 어플리케이션은 추가 프로그래밍 없이 무한히 다양한 너트 구성을 재생성할 수 있다는 것이다. 내장된 NCL을 갖는 너트는 프로세스를 '가르치거나' '지시’하여 자신과 같은 또 다른 데이터 구조를 생성할 수 있는 데이터 구조일 수 있다.
NCL 정의는 (19400)에서와 같이 자체 잠금노드에 저장될 수 있고, 이는 NCL 지시를 읽는 것으로부터 작동 프로세스(그로써 간접적으로 작동 사용자)를 제한하고, 그로써 프로세스가 너트의 구조를 형성한 대로 정확하게 복제하는 것을 금지하는 잠금 노드 또는 백 NAC 접근 제한을 가진다. 이러한 유형의 NCL 읽기 금지는 특정 너트 구조 복제를 더 어렵게 만들고 및/또는 키 ID를 숨기기 위해 소망될 수 있다. NCL은 잠금 노드의 범용 키홀 섹션 내에 있는 키홀에 대해 요구되는 키 ID를 나타낼 수 있다. 임의의 너트 구성에 대한 구체적인 순회/분석이 프로그래밍 방식으로 가능할 수 있음에도 너트 구성이 너트의 수명 동안 동적으로 변경되고, 개선되고 및/또는 확장될 수 있기 때문에 NCL을 생성하지 않고 원래 너트 구조를 결정하는 것은 불가능할 수 있다.
도 195는 내장된 NCL 정의 너트OO1(19502)를 갖는 너트 n23(19500)이 NCL 너트OO1를 추출하고 그를 처리하여 너트 n41(19530)을 생성함(19510)으로써 구조를 어떻게 복제할 수 있는지에 관한 도해를 도시한다. 프로세스(19510)는 NCL 너트OO1(19512)의 사본을 자체 내에 다시 임베딩하도록 지시될 수도 있고 그렇지 않을 수도 있지만, 디폴트는 다른 접근자에 의해 더 용이하게 영구화하는 것을 돕도록 그렇게 하는 것일 수 있다. 새로운 너트 n41(19560)는 너트 n23(19500)과 동일한 잠금 노드 그래프와 함께 일 수 있다. 그러나, 그러한 완전한 비트 복제는 키 값, 참조, 암호화된 내용, 솔트, IV, 해시 및/또는 소스 너트 n23(19500) 내에 구성된 암호 보호의 다층에 대한 디지털 서명과 같은 그러나 그로 한정되지 않는 모든 내부 값을 복제할 수도 있기 때문에, 내장된 NCL을 사용하여 너트의 구조적 사본을 생성하는 것은 물리적 "N1.nut" 파일을 복제하고 사본을 "N2.nut"로 명명하는 것과 동일하지 않을 수 있다. NCL을 사용하여 중복 너트 구조를 생성하는 것은 소스 너트와 다른 내부 값을 가진 너트를 생성할 수 있고, 따라서 내부 데이터 및 NCL 정의의 다양한 보호 메커니즘의 난독화 및/또는 보안을 더 제공할 수 있다.
도 196은 그 안에 포함된 NCL 정의를 갖는 소스 너트로부터 복제 너트 구조를 생성하는 순서도를 도시한다. 요구되는 키(19610)를 사용하여 소스 너트를 성공적으로 연 후, 어플리케이션은 NCL 정의에 대한 포인터 또는 소스 너트(19620)에서 그의 사본을 가져올 수 있다. 그런 다음, 각각의 NCL 구성 라인을 처리하여 새로운 너트 구조(19630)를 형성할 수 있다. (19352)에 의해 도시된 것과 같은 NCL 구성 라인의 처리는 해당 기술분야의 당업자에 의해 일반적으로 잘 알려진 종래의 명령 라인 처리 기법 후에 그리고 본 문헌에서 앞서 구체화된 바와 같은 SDFT 방법론의 사용을 수반할 수 있는 잠금 노드 구성 방법에 관한 지식으로 모델링될 수 있다. 일단 새로운 너트가 생성되면, 어플리케이션에 의해 지시된 바와 같이 소스 너트의 특정 내용이 새로운 너트에 복사될 수 있다; 소스 너트의 클론은 너트ID, 메타데이터, 로그, 이력, 페이로드 및 식별가능한 키ID(19650 및 19660)와 같은 그러나 이로 한정되지 않는 바와 같이 소스 너트에서 발견된 일부 또는 모든 백을 새로운 너트에 복사할 수 있다.
NCL 정의에 의한 너트 구조의 복제는 정적 프로그래밍 선언에 의해서라기 보다는 유연한 파라미터 수단에 의해 너트 생성의 정확한 방법을 전달하는 편리한 방식을 제공할 수 있다. 본 방법은 보다 군더더기 없이 효율적인 프로그램으로 유도할 수 있는 프로그램 방식으로 다른 너트 구조를 하드 코딩하는 데 드는 시간과 비용 부담을 줄일 수 있으며, NCL은 텍스트로 표현될 수 있기 때문에, NCL은 그렇게 하도록 프로그램된 어플리케이션에 의해 요구에 따라 동적으로 생성될 수 있고, 그로써 필요로 할 수 있는 바와 같은 새로운 다양한 너트 구조를 허용할 수 있다. NCL은 구성가능한 잠금 그래프의 무한한 변이를 발현할 수 있다. NCL을 포함하는 이전에 저장된 너트를 열고 판독하는 어플리케이션은 해당 구조에 대한 사전 지식 없이 내장된 NCL을 사용하여 구조를 정확하게 복제할 수 있다. NCL은 보다 양호한 구조적 암호 프로그래밍(SCP) 표현을 허용할 수 있고, 따라서 어플리케이션 프로그래머에게 그를 더 용이하게 할 수 있다.
자신의 원래 NCL 정의를 홀딩하는 너트 컨테이너는 시간이 지남에 따라 구조적으로 수정될 수 있으며 그에 관한 사용은 원래 NCL 정의에서 벗어날 수 있다. 그러한 경우에, 너트 컨테이너의 원래 구조는 NCL 정의에 의해 정확하게 설명될 수 있으며 필요한 경우 재생성될 수 있다. 너트 구조에 대한 점진적 수정은 NCL 정의에 대한 상응하는 업데이트에 언급되거나 언급되지 않을 수 있다. 그러나, NCL 정의 변경의 개정 이력을 보유하도록 구성된 너트는 원래 정의를 포함한 NCL 정의의 이전 버전을 포함할 수 있다.
NCL은 충분히 텍스트처럼 표현할 수 있으므로, 텍스트 파일, 너트 또는 임의의 다른 저장 메커니즘 내에 복수의 NCL 정의를 저장하는 것이 편리할 수 있다. 그러한 NCL 정의의 참조 저장소는 너츠 API를 사용하여 너츠 호환 어플리케이션에서 접근가능할 수 있는 표준 구조의 표준 세트로서 역할을 할 수 있다. 각각의 너츠 호환 프로그래밍 설치는 맞춤식 너트 구조를 위한 추가 NCL 정의 저장소를 가질 수 있다. NCL 정의는 MIOR 내에서 그룹으로서 또는 개별적으로 저장되고 참조가능할 수 있으며 MIOR 제공된 특징의 모든 이점을 얻을 수 있다. 표준 견과류 구조의 더 새로운 버전을 제공하려는 기업은 기업 너츠 에코시스템을 사용하도록 구성된 임의의 그리고 모든 어플리케이션에 의한 용이한 접근을 위해 기업 MIOR 상에 그를 공개할 수 있다. 일부 긴밀하게 통합된 환경에서, 각각의 생성된 너트 내에 전체 NCL을 임베딩하지 않는 것이 바람직할 수 있지만 MIOR 메커니즘을 통해 쿼리될 수 있는 너트의 메타데이터에 NCL 참조를 포함할 수 있다. MIOR-NCL 통합의 이러한 방법의 혜택은 새로운 너트 구성이 접근할 수 있고 기업이 판단했을 수 있는 가장 최근 버전의 너트 구조를 사용할 수 있다는 것이다.
자기 설명적 데이터 구조의 종래적 정의는 XML, 제이슨 및 SQL과 같은 그러나 그로 한정되지 않는 키 값 기반 계위 데이터 정의 언어에 의해 예시화될 수 있다. 데이터 구조 구성이 현재 운영 구조와 다를 수 있는 초기 생성에 원래 데이터 구조를 복제하기 위해 사용할 수 있는 정보를 직접 보유할 수 있도록 허용하는 것은 종래적이지 않고 및/또는 정통적이지 않은 것으로 간주될 수 있다. 추가적으로, NCL은 기재되는 동일한 데이터 구조 상에 암호 세분화된 접근 보안의 체계적 구조화를 허용할 수 있다. NCL의 한 가지 의도는 사용자/프로세스에게 네트워크 연결성 및/또는 선택적 중심화된 서비스에 대한 접근에 상관없이 필요한 시간에 그리고 사용자가 선택한 장치에서 독립적이고, 탈중심화되고, 및/또는 분산화된 방식으로 페이로드(들)의 민감성에 의해 요구될 수 있는 형태로 페이로드(들)를 보호하고 및/또는 구성하는 데 필요한 임의의 맞춤화된 너트 구조를 생성하는 자유를 허용하는 것이다.
너트 분류체계
도 197은 너트ID에 기반한 샘플 너트 분류체계를 도시한다. 너트ID는 PUID(실제로 고유한 ID)일 수 있고, 너트ID는 자신을 포함하는 임의의 디지털적으로 참조가능하고 및/또는 식별가능한 항목을 나타낼 수 있다. 도면은 너트ID 카테고리의 샘플 분할 및 그것이 나타낼 수 있는 너트ID 데이터 유형의 다양한 하위 카테고리를 보여 줄 수 있다. 루트에서, 이러한 너트ID 카테고리 트리(19700)는 '자원'(19710), '제어(FSM)'(19720)(유한 상태 모델) 및 '자산'(19730)의 세 개의 하위 카테고리를 포함하는 '너트ID'일 수 있다. 하위 카데고리의 제 3 수준은 이들 각각을 더 세분화된 하위-하위-카테고리 등으로 더 세분화한다. 본 도시는 너트ID가 임의의 디지털 자산, 자원 및/또는 제어를 나타낼 수 있음을 보여 줄 수 있다. 너트 분류체계는 임의의 그리고 모든 디지털적으로 참조가능한 항목을 포함하도록 확장될 수 있다. 그러므로 적어도 이러한 이유로, 본 개시는 다른 ID, 데이터 구조, 데이터베이스, 시스템, 네트워크, 장치, 파일, 파일 시스템 등과 같은 그러나 이에 국한되지 않는 임의의 디지털적으로 참조가능한 항목을 지칭하기 위해, 다른 유사한 용어 가운데 ID, 너트ID 및 식별자를 혼용하여 사용할 수 있다.
유한 상태 기계 (FSM)
도 198은 유한 상태 기계(FSM)를 표현하는 샘플 제네릭 상태 표를 도시한다. 상태 열 S는 시스템이 S0, S1, S2,...와 같이 있을 수 있는 다양한 상태를 나타낼 수 있다. 조건 열 Cx는 FSM이 상태 S3에 있을 때와 같은 상응하는 상태로 전이할 수 있을 시에 정의하는 단순하고 및/또는 복잡한 조건(들)을 나타낼 수 있고, 조건 C3=거짓을 충족하는 것은 FSM이 상태 S3인 것을 계속함을 의미할 수 있는 반면에, 조건 C3=참을 충족하는 것은 FSM이 작동 A3를 수행하고 작동 A3를 수행한 결과가 상태 S3을 S4로 전이하는 참을 생성할 수 있지만; A3을 수행한 결과가 거짓이면, FSM은 S3에서 S2로 전이할 수 있다. FSM의 많은 다른 유형이 있을 수 있지만 모든 FSM에서 1차 목표는 하나의 알려진 상태에서 설정된 프로세스나 알고리즘으로의 순차적 전이를 연결하는 것일 수 있다. 전기 엔지니어링의 분야는 진리표와 같은 그러나 그로 한정되지 않는 FSM의 광범위한 이용을 사용할 수 있다. 서버, 다중 스레드 및/또는 대규모 병렬 프로그래밍은 다중 프로세스를 제어하기 위해 많은 FSM의 이용을 요구할 수 있다. 랩리듀스 기술은 그 기술의 기본적인 빌딩 블록으로서 FSM 기법을 사용할 수 있다. FSM 상에 작동하는 프로세서는 실행 중인 메모리, 데이터베이스, 공유 메모리, 네트워크 드라이브 및/또는 기타 프로세스를 포함하는 위치에 FSM을 보유할 수 있다.
FSM은FSM의 상태를 너트를 포함하는 그러나 그로 한정되지 않는 안전하고 휴대가능한 컨테이너에 저장함으로써 보관되고 작동될 수 있다. 너트의 페이로드는 FSM을 편리하고, 휴대가능하며, 안전하고, 복제된 방식으로 보관할 수 있다.
도 199는 두 개의 프로세스 A(19900) 및 B(19910)가 신뢰, 보호, 출처, 인증, 프라이버시 및 지속성을 포함하는 방식으로 너트(19920)의 페이로드/백(19922)에 임베딩된 FSM(19924)을 어떻게 작동시킬 수 있는지를 도시한다. 프로세스 A(19900)는 어플리케이션을 작동하고 있을 수 있으며 FSM(19924)에서 상태 전이를 나타낼 수 있고, 이는 그런 후에 프로세스 B(19920)로 저장되고, 보관되고(19902), 전송되고 및/또는 복제될 수 있다(19914). 프로세스 B(19920)는 프로세스 A(19900)와 동일하거나 다른 어플리케이션을 작동할 수 있고 FSM(19924)에서 상태 전이를 나타낼 수 있고, 이는 그런 후에 프로세스 A(19900)로 저장되고, 보관되고(19912), 전송되고 및/또는 복제될 수 있다(19904). 두 개의 프로세스 사이의 FSM 전이의 사이클은 일부 지점에서 터미널 상태가 도달되거나 프로세스가 중단될 때까지 계속할 수 있다. 그러므로, 단일 너트는 해당 너트 내의 FSM에 따라 부분적으로 작동하는 두 개 이상의 독립적인 프로세스를 결합하도록 기능할 수 있는 적어도 하나 이상의 FSM을 홀딩할 수 있고; 또한, 너트에서 FSM은 너트의 문맥 내에 전적으로 머물 수 있는 완전히 포함하는 일련의 상태 및/또는 동작을 특정할 수 있거나, 프로세서의 내부 작동 상태, 다른 프로세스, 실행 중인 프로세스의 운영 체제/환경, 외부 이벤트, 다른 너트, 너트에 다른 FSM, 다른 FSM 등과 같은 그러나 그로 한정되지 않는 너트의 외부에 다른 외부 요소와 상호작용할 수 있다. 너트에 FSM의 보안은 너트 컨테이너에 의해 제공되는 보안의 성질로 인해 일관되고 지속적인 품질에 관한 것일 수 있고, 이러한 보안은 적절한 접근 키 없이 FSM 너트의 FSM에 적절하게 접근할 수 없는 프로세스의 암호 제한 때문에 주로 FSM 너트를 처리하는 문맥 내에서 그러한 FSM 너트를 처리하는 프로세스로 전파할 수 있다.
너트의 지속적이고 및/또는 복원적인 특성은 너트에 FSM이 임의의 지점에서 상태를 복구하고 처리 어플리케이션의 내부 상태와 상관없이 처리를 계속할 수 있게 할 수 있다. 그러므로, 프로세서 또는 프로세서의 세트는 다수의 FSM 너트 상에 작동할 수 있고, 그로써 단일 또는 다중 통신 네트워크에서 작동하는 단일 또는 다중 장치를 가로질러 완전히 독립적이고 복원적인 방식으로 직렬로 및/또는 병렬로 다수의 FSM으로서 효과적으로 작동할 수 있다.
도 200은 각각의 컴퓨터에 앨리스(20000) 및 밥(20010)이 너트서버(NS), 너트브라우저 및/또는 랑데부 서버(RZ)의 구현을 어떻게 설치하는지 도시하는 단계의 시퀀스를 보여준다. 너트서버 + 랑데부 서버의 조합은 본 개시의 나중 부분에 도시된 바와 같이 NSRZ에 의해 또는 단순히 NS로서 지시될 수도 있다. 앨리스(20000)에 대한 설치 프로세스는 NSID, 앨리스NSID(20002)로 불리는, 설치되는 NS 시스템에 대해 너트ID를 생성하도록 앨리스의 시스템(20000)을 최소로 요구할 수 있다. 그런 다음, 단계(20004)는 너트ID=앨리스ID로 앨리스에 대해 연락처 너트 Na를 생성하고 엘리스에 대한 이메일 주소, 앨리스메일을 최소로 저장할 수 있다. 밥(20010)에 대한 설치 프로세스는 NSID, 밥NSID(20012)로 불리는 설치되는 NS 시스템에 대한 너트ID를 생성하도록 밥의 시스템(20010)을 최소로 요구할 수 있다. 그런 다음, 단계(20014)는 너트ID=밥ID으로 밥에 대해 연락처 너트 Nb를 생성할 수 있고 밥에 대한 이메일 주소, 밥메일을 최소로 저장할 수 있다. 이러한 각각의 시스템이 도 200에서와 같이 설정됨과 함께, 앨리스와 밥은 관계 너트로 불리는 너트에서 관계 FSM을 활용하여 RBK 기반 관계를 생성할 준비가 되어 있을 수 있다.
도 201 내지 도 208은 앨리스와 밥 사이에 관계 너트를 설정하는 단계를 보여준다. RBK를 통한 관계는 연관된 명세 섹션과 함께 도 113 내지 도 119에서 다루어질 수 있다. 관계 너트에 내장된 FSM을 사용하여 설치된 너츠 시스템으로 두 당사자 사이의 RBK 관계를 설정하는 단순한 방법이 도시될 수 있다. 이러한 단순한 예시에서, 그것은 각 당사자에 대해 정의된 키홀에 의해 너트의 공유를 허용하기에 충분할 수 있다. 그러한 공유된 구성에서 발견된 임의의 너트는 다른 NS가 이용가능하고 그러한 공유된 너트를 수신할 준비가 되면, 수정 시에 너트서버/RZ(NS)에 의해 "푸시"될 자격이 있을 수 있다. 많은 효율성 단계 및/또는 추가 특징 단계가 이러한 단순한 예시 방법을 개선하기 위해 도입될 수 있지만 그것은 이러한 작동을 수행하는 데에 FSM의 전체 기술을 보여주기에 충분하다.
앨리스는 NS가 설치된 랩탑(20100)을 갖고 있고 자신의 연락처 너트 Na(20102)를 직접 설정했다. 밥은 NS가 설치된 랩탑(20110)을 갖고 있고, 자신의 연락처 너트 Nb(20112)를 설정했다. 앨리스는 관계 너트 Nd(20108)에 의해 너츠를 사용하여 밥과의 관계를 설정하기로 결정한다. 앨리스는 시스템(20100) 상의 너트북이 앨리스가 시스템(20100)에 너트북 주소록에서 밥에 관해 알기 원하는 적어도 밥의 이메일 주소, "밥메일", 앨리스가 선택한 패스워드 "bobpw", 및 연락처 이름 "밥"을 제공함으로써 관계 너트 Nd(20108)를 생성하도록 지시한다. 앨리스의 너트북 및 너트서버는 페이로드에 적어도 그의 이름, 이메일 주소 및 그들 사이에 RBK의 그녀의 측, 이러한 관계의 문맥 내에서 밥에 대해 다뤄지고 및/밥과 공유되는 너트를 암호화도록(잠그도록) 사용된 밥 투(to) 앨리스 비대칭 키 쌍[KuBA, krBA]을 포함하는 앨리스의 주소록(너트북)에서 밥에 대한 로컬 연락처 너트 Nc를 생성하도록 조정한다. 너트 Nc는 앨리스만이 자신의 연락처 너트 Na(20102)에 접근 키(들)를 사용하여 그에 접근하도록 입력될 수 있거나, 앨리스 따라서 Nc에 의해 그렇게 소망된다면, 또 다른 접근 너트는 공유된 너트가 아닐 수 있다. 앨리스의 너트서버/너트북은 키 KuBa를 사용하는 앨리스에 관한 키홀, 밥이 관계 너트 Nd에서 추가 키홀을 생성하는 접근과 함께 패스워드 "bobpw"를 사용하는 밥을 위한 패스워드 키홀, 앨리스의 관점과 밥의 관점에서 관계 상태에 관한 FSM을 포함하는 페이로드, 밥의 이름, 밥의 이메일, 앨리스의 이름, 앨리스의 이메일, 키 kuBA를 포함하는 관계 너트 Nd(20108)를 생성할 수 있다. 이러한 관점에서, 너트 nd에서 관계 FSM은 발송자 상태 필드(20106)에 대해 상태 1 “수동 발송”으로 표시될 수 있고, 그런 후에 너트 Nd는 닫혀지고 저장될 수 있다. 앨리스의 너트북은 kBA (kuBA, krBA)에 대해 키 ID를 인덱싱할 수 있다.
단계 #1: 관계 너트 Nd는 밥메일 및 앨리스메일 이메일 주소를 포함하는 RZ 평문 메타데이터 래퍼 데이터와 함께 랑데부 서버 RZ(20130)에 제출될 수 있다. 단계 #2: RZ(20130)은 관계 너트 Nd를 밥메일 및 CC:로 주소가 지정된 이메일에 첨부로서 엘리스메일에 보낼 수 있고 그를 RZ(20122)에 대한 이메일 호스트에 보낼 수 있다. 단계 #3: RZ 이메일 호스트는 밥의 이메일 호스트(20124) 및 CC:에 대한 이메일을 앨리스의 이메일 호스트(20120)에 중계한다. 단계 #4: 각각의 이메일 호스트는 메일을 (20100)과 (20110) 상의 메일 클라이언트로 중계한다. 밥과 앨리스는 밥에 대한 관계 초대 암호가 "bobpw"일 수 있음을 앨리스가 밥에게 전달하는 대역외 통신을 한다. 이러한 비밀의 대역외 교환은 디피-헬만 기반 방법과 같은 그러나 그로 한정되지 않는 임의의 표준 키 교환 방법에 의해 대체될 수 있고, 따라서 초대 수락 프로세스가 훨씬 더 자동화하는 것을 허용할 수 있지만; 사전-양자 알고리즘에 의존하는 임의의 키 교환 방법은 양자 암호화의 개선으로 취약하거나 안전하지 않을 수 있고, 이 경우에 이용가능하면 및/또는 이용가능할 때 사후-양자 기반 키 교환 방법을 사용하는 것이 권장될 수 있다. 밥은 첨부된 관계 초대 너트 Nd(20118)로 앨리스로부터의 이메일을 본다. 밥은 이메일 첨부 Nd를 너트브라우저 너트 드롭 영역으로 끌어다 놓는다. 너트북이 너트 nd를 열기 시작하고 밥이 키 홀에 대한 패스워드를 입력하게 할 수 있다. 밥은 패스워드 “bobpw”를 입력할 수 있고 너트북은 앨리스로부터의 관계 요청을 수용하는 프로세스를 시작할 수 있다. 밥의 너트북 및 너트서버는 페이로드에 적어도 그녀의 이름, 이메일 주소, 및 키 kuBA 및 그들 사이에 RBK의 그녀의 측, 이러한 관계의 문맥 내에서 앨리스에 대해 다뤄지고 및/앨리스와 공유되는 너트를 암호화도록(잠그도록) 사용된 밥 투 앨리스 비대칭 키 쌍[KuBa, krBA]을 포함하는 밥의 주소록(너트북)에서 앨리스에 대한 로컬 연락처 너트 Nf를 생성하도록 조정한다. 너트 Nf는 밥만이 자신의 연락처 너트 Nb(20112)에 접근 키(들)를 사용하여 그에 접근하도록 입력될 수 있거나, 밥 따라서 Nb에 의해 그렇게 소망된다면, 또 다른 접근 너트는 공유된 너트가 아닐 수 있다. 앨리스의 이름, 이메일 및 키는 kuBA는 앨리스로부터의 열린 관계 초대 너트 Nd로부터 비롯될 수 있다. 너트북은 키 kuAB를 Nd 페이로드에 기록하고, 페이로드에 관계 FSM에서 목표 상태(20116)를 5 "수신/정리"로 설정할 수 있으며, 그가 너트를 열기 위해서도 사용할 수 있는 키 kuAB를 사용하여 Nd에서 그 자신에 대한 키홀을 추가할 수 있고; 그런 후에 너트북을 닫고 Nd를 저장할 수 있다. 밥의 너트북은 kBA 및 kAB (그가 이제까지 접근할 수 있는 어느 부분이든)에 대한 키 ID를 인덱싱할 수 있다.
밥의 너트서버(20110)는 너트 Nf 및 Nd가 수정되었거나 새로운 것임을 판단할 수 있다. 너트 Nf에 있어서, 너트서버는 국부적으로 너트ID 및 버전 마커를 인덱싱하는 것에 불과할 수 있다. 너트 Nd에 있어서, 너트서버는 너트ID 및 버전 마커를 인덱싱하고 앨리스 연락처(20114)에 관련된 너트 Nd에 키홀이 있을 수 있음을 확인할 수 있다. 밥의 너트서버는 너트 Nd를 RZ(20130)으로 전송하고 RZ은 그를 앨리스의 너트서버(20100)로 직접 중계할 수 있다. 앨리스의 너트북은 새로 받은 너트 Nd를 기존의 약간 오래된 사본과 동기화하고 병합할 수 있다. 이 경우, 너트 Nd의 두 버전을 모두 평가하고 오래된 사본을 새로운 것으로 대체하기로 결정할 수 있다. 앨리스의 너트북은 밥 투 앨리스 키 krBA를 사용하여 관계 너트 Nd를 열 수 있고, 그로써 밥이 그를 보냈을 수 있다는 일부 표시를 가질 수 있다. 너트 Nd의 성공적 열림은 너트 Nd를 보낸 사람이 참으로 밥일 수 있다는 위안을 더 줄 수 있다. 앨리스의 너트북은 발송자 상태가 "수동 발송"에 있을 수 있고 대상 상태가 "수신/정리"로 설정될 수 있음을 인지할 수 있다. 너트북은 키 kuAB를 밥 Nc(20104)에 대한 그녀의 연락처 너트에 복사할 수 있고; 키 kAB (kuAB 및 krAB)를 인덱싱할 수 있고; 패스워드 “bobpw”로 밥에 대한 Nd에 키홀을 삭제할 수 있고; 발신자 상태를 6 “정리/승인”으로 표시할 수 있고; 너트 Nd 및 Nc를 닫고 저장할 수 있다.
앨리스의 너트서버(20100)는 너트 Nf 및 Nd가 수정되었음을 판단할 수 있다. 너트 Nc에 있어서, 너트서버는 국부적으로 너트ID 및 버전 마커를 인덱싱할 수 있다. 너트 Nd에 있어서, 너트서버는 밥 연락처(20104)에 관련된 너트 Nd에 키홀이 있을 수 있음을 확인할 수 있다. 앨리스의 너트서버는 너트 Nd를 RZ(20130)으로 전송하고 RZ은 그를 밥의 너트서버(20110)로 직접 중계할 수 있다. 밥의 너트북은 새로 받은 너트 Nd를 기존의 약간 오래된 사본과 동기화하고 병합할 수 있다. 이 경우, 너트 Nd의 두 버전을 모두 평가하고 오래된 사본을 새로운 것으로 대체하기로 결정할 수 있다. 밥의 너트북은 앨리스 투 밥 키 krBA를 사용하여 관계 너트 Nd를 열 수 있고, 그로써 앨리스가 그를 보냈을 수 있다는 일부 표시를 가질 수 있다. 너트 Nd의 성공적 열림은 밥에게 너트 Nd를 보낸 사람이 참으로 앨리스일 수 있다는 위안을 더 줄 수 있다. 밥의 너트북은 발송자 상태가 "정리/승인”에 있을 수 있고 대상 상태가 "수신/정리"로 설정될 수 있음을 인지한다. 너트북은 대상 상태를 7 "활성"으로 표시하고; 너트 Nd를 닫고 저장할 수 있다.
밥의 너트서버(20110)는 너트 Nd가 수정되었음을 판단할 수 있다. 너트 Nd에 있어서, 너트서버는 앨리스 연락처(20114)에 관련된 너트 Nd에 키홀이 있을 수 있음을 확인할 수 있다. 밥의 너트서버는 너트 Nd를 RZ(20130)으로 전송하고 RZ은 그를 앨리스의 너트서버(20100)로 직접 중계할 수 있다. 앨리스의 노트북은 새로 받은 너트 Nd를 기존의 약간 오래된 사본과 동기화하고 병합할 수 있다. 이 경우, 너트 Nd의 두 버전을 모두 평가하고 오래된 사본을 새로운 것으로 대체하기로 결정할 수 있다. 앨리스의 너트북은 밥 투 앨리스 키 krBA를 사용하여 관계 너트 Nd를 열 수 있고, 그로써 밥이 그를 보냈을 수 있다는 일부 표시를 가질 수 있다. 너트 Nd의 성공적 열림은 너트 Nd를 보낸 사람이 참으로 밥일 수 있다는 위안을 더 줄 수 있다. 앨리스의 너트북은 발송자 상태가 "정리/승인”에 있을 수 있고 대상 상태가 "활성"으로 설정될 수 있음을 인지한다. 너트북은 발신자 상태를 8 "활성"으로 표시할 수 있고; 너트 Nd를 닫고 저장할 수 있다.
따라서, 앨리스와 밥의 관계는 활성인 것으로 간주되고 두 참가자에 의해 인정될 수 있고 통신의 직접적이고 안전하고 비공개 루트가 RZ을 통해 가능할 수 있다. 앨리스와 밥 사이에 공유된 너트는 사용자 개입 없이 (본 개시에 앞서 논의된 방법에 따라) 자동으로 관리, 복제, 동기화 및 병합될 수 있으며, 그로써 참가자 사이에 RBK 키의 안전한 교환을 포함하는 관계 확인 프로세스의 동적 상태 변화를 설정하고 조정하도록 너트 페이로드에 임베딩된 FSM 메커니즘을 사용하여 각각의 공유된 너트 기반으로 안전한 종단간 양방향 통신 채널을 효과적으로 생성할 수 있다.
도 202는 관계가 설정된 후 너트 동기화가 어떻게 작동하는지 보여준다. 이메일 서버(20220, 20222 및 20224)가 너트 기반 관계에서 두 사용자 사이의 통신에 대해 더 이상 필요하지 않을 수 있다. RBK 키 ID를 포함하는 정보, 각각의 로컬 연락처 Nc(20204) 및 Nf(20214), 관계 너트 Nd, (20200) 및 (20210)에 대한 각각의 기계 식별자는 각각의 너트서버(20200 및 20210) 및 RZ(20230)이 기본적인 방식으로 다양한 참가자에 대해 입력된 적절한 너트를 라우팅하기에 충분할 수 있다. 네트워크 라우팅 및/또는 데이터 배포의 해당 기술분야의 당업자는 도 201 및 도 202에 도시된 예시의 모든 단계에서 효율성을 극대화하기 위한 수많은 기존 방법을 찾을 수 있다. 그러나 가장 잔인한 수준에서, 도 201과 도 202에 도시된 예시는 최적화되지 않은 효율성에도 불구하고 사실상 지능형 라우팅이 없는 브로드캐스트 네트워크에서 작동할 수 있다. 도 202에 라우팅 방법은 앨리스 또는 밥의 통제 밖의 이메일/중계 서버로의 데이터 복제 및 유출을 최소화할 수 있다. RZ은 최소 캐시된 너트를 홀딩하는 작동 모드로 디폴트되지만 캐시된 모든 너트는 각각의 생성자에 의해 디폴트에 의해 보호될 수 있고 RZ은 디폴트에 의해 그들에 대해 키를 홀딩하지 않을 수 있다. 이는 너트 Nd의 총 3개의 사본을 초래하여 도 202의 구성에 (20200), (20210) 및 (20230) 사이에 존재할 수 있다. 비교에서, 도 201의 최초 관계 너트 초대 구성은 최초 너트 Nd의 최소 9개의 사본을 초래할 수 있다. 앨리스 로컬 Nd, (20100)상의 앨리스 이메일 클라이언트 캐시, RZ 로컬 사본(20130), RZ 이메일 클라이언트 캐시(20130), RZ 이메일 호스트 사본(20122), 앨리스 이메일 호스트 사본(20120), 밥 이메일 호스트 사본(20124), 밥 이메일 클라이언트 캐시(20110), 및 (20110) 상에 밥 로컬 사본. 사본 9개의 카운트는 그를 캐시하는 것을 선택할 수 있고 앨리스나 밥의 통제 너머에 있을 수 있는 다양한 이메일 호스트 사이에 임의의 중계 메일 서버를 고려하지 않을 수 있다.
도 203은 관계 너트의 페이로드의 데이터 필드 레이아웃을 도시한다. 표(20300)는 패스워드 키홀을 나타내는 1차 1 키홀에 의해 나타내는 바와 같이 원래 초기 초대에 샘플 필드를 배치한다. 발신자 및 대상 상태 필드는 관계 FSM을 포함한다. RBK 필드는 관계의 각각의 참가자에 대해 비대칭 키 집합 세트의 쌍이 저장될 수 있는 위치일 수 있다. 표(20310)는 패스워드 키홀이 더 이상 존재하지 않고 모든 입력이 주로 RBK에 의해 구동될 수 있는 설정된 '활성' 관계에 샘플 필드를 배치한다.
도 204는 관계 설정 프로세스의 순서도를 도시한다. 도 203으로부터의 테이블에 필드 및 도 201의 요소를 참조하여, 본 순서도는 앨리스에 의해 시작된 앨리스와 밥 사이의의 관계를 설정하기 위해 너트 Nd를 사용하여 관계 FSM을 구동하는 데 필요한 초기 기본 단계를 도시할 수 있다. 단계(20480) 후에, 프로세스는 도 205 및 도 206을 참조하여 진행하고, 이는 앨리스(발신자)와 밥(대상)의 관점에서 관계 너트 Nd에서 관계 FSM을 나타내고 진행 중인 각각의 해당 상태를 나타낸다.
도 207은 관계를 설정하기 위한 너트서버/너트북에서 너트를 캐치하는 순서도를 도시한다. 순서도는 관계 너트가 (20706)에서 현재 어떤 상태인지 그리고 그것이 무엇으로 전이될지(20712)를 식별하도록 일치하는 관계 FSM 조건에서 사용될 수 있는 넓은 단계를 도시한다.
도 208은 설정된 관계에 대한 너트 동기화의 안정 상태를 도시한다. 일단 발신자와 대상 모두에 대해 관계가 활성 상태로 간주되면, 보안 너트의 자유로운 흐름이 관계 참가자 사이에 자유롭게 통과할 수 있다. 랑데부 서버(20830)는: 브리징 IPv4/IPv6 환경, 영지식 캐싱, 효율적인 라우팅, 보호된 환경에 대한 게이트웨이, 오프라인 캐싱, 그룹 데이터 배포 등을 포함하지만 이에 국한되지 않는 여러 가지 이유로 유용할 수 있다. 소망될 때 그리고 환경이 충분한 최소 작동 요구사항을 충족할 때, 앨리스 및 밥의 장치는 RZ(20830)과 같은 중간기 없이 서로 직접 연결할 수 있고, 따라서 아마도 너트 컨테이너의 전송에서 이용가능한 고유한 데이터 보호 특성의 최상부 상의 데이터의 더 안전한 전송, 및 장치 사이의 데이터의 더 전용이고 효율적인 전송을 가능하게 할 수 있을 것이다.
도 201 내지 도 208에서, 앨리스와 밥은 너트 Nd의 페이로드에 임베딩된 단일 관계 FSM에서 상태 전이를 활용하여, 단일 관계 너트 Nd를 사용하여 단일 관계를 설정한다. 이러한 관계 설정 방법은 앨리스와 밥이 필요에 따라 별도의 다른 관계 너트를 통해 두 번째, 세 번째 및/또는 임의의 횟수의 개별 관계를 생성하는 것을 제한하지 않는다. 초기 조건이 기존 관계와 같은 그러나 이에 국한되지 않는 바와 같이 다를 수 있기 때문에, 제 2 관계 및 뒤이은 관계에 대해 역학이 약간 변경될 수 있고, 따라서 기존 너트 전송 경로는 NS-RZ 네트워크에 대한 접근을 통해 레버리지될 수 있다; 기존 RBK를 사용하여 뒤이은 관계 너트에 대한 설정을 준비하는 것은 따라서 더이상 참가자에게 전달될 수동 패스워드를 요구하지 않고, RBK를 도입하는 것을 새로운 관계와 관련된 특정 RBK로 대체할 수 있다. 앨리스와 밥 사이의 다중 관계의 전형적인 예시는 예시화될 수 있다: 1) 앨리스와 밥은 같은 부서의 동료일 수 있으며 그들 중 하나 또는 둘 모두가 원격으로 작업할 때 작업 파일을 공유할 필요가 있을 수 있고, 그래서 그들은 그들 사이에 "작업" 관계 너트를 설정하고 그러한 작업 파일을 공유하기 위해 이러한 관계를 사용할 수 있다; 2) 앨리스와 밥은 직장 밖에서 사교적으로 친해지고 개인 이메일 및 전화 번호를 교환하기로 결정하지만, 업무 밖에서 BBQ 야유회에 대한 개인적인 초대와 BBQ 이후의 사진을 공유하기를 소망할 수도 있고 그래서 그들은 그들 사이에 “개인적” 관계 너트를 설정하고 그러한 개인 파일을 공유하기 위해 이러한 관계를 이용할 수 있다. 각각의 대상 연락처 페이로드(앨리스의 너트북 관점의 밥 및 밥의 너트북 관점의 앨리스)는 그들 사이의 각각의 관련된 관계 너트에 대해 개별적이지만 특유한 섹션을 가지도록 보강될 수 있다. 그러므로, 그러한 관계의 임의의 개수는 이러한 방법을 사용하여 지지될 수 있다.
관계 너트의 삭제 및/또는 관계 너트의 FSM에서 "고스트"의 적절한 관계 상태 설정은 관계를 종료하기에 충분할 수 있다. 삭제 작업은 사용자의 의도에 대한 임의의 직접적인 단서를 주지 않고 상대방으로부터의 임의의 들어오는 통신을 무시하기 위한 보다 영구적이고 효과적인 방법이 될 수 있다. 관계 상태를 ‘고스트’로 변경하는 것은 관계가 일부 이유로 악화되어 상대방이 더 이상 의사 소통을 하기를 원하지 않는 관계에서 상대방에게 단서를 줄 수 있다. 그러나, 일반적인 관계 너트는 양쪽 모두에게 동일한 페이로드에 대한 읽기 및 쓰기 권한을 제공하기 때문에, 대상 및 발송자 상태는 상대방에 의한 소망하는 상태의 소망하지 않는 변경을 방지하기 위해 적절한 RBK에 의해 보호될 수 있다. 이러한 보호는 적절한 RBK 키를 사용하여 각각의 관계 상태 필드 값에 대한 단순한 디지털 서명에 의해 실행되고, 그러므로 정확한 당사자만이 이를 수정할 수 있으며 이에 대한 인증되지 않은 변경에 대한 임의의 시도는 발견되고 수정될 수 있다.
카르나크 검토
도 209는 검토 이력 목적을 위한 타임라인을 도시한다. 과거(20900)는 시간점(tp1, tp2 및 tp3)에 의해 지시될 수 있다. 과거에 각각의 시점에서, 우리가 너트의 ‘이력’(20904) 부분 또는 섹션으로서 집합적으로 언급할 수 있는 검토 이력 델타(20902)가 있을 수 있다. 시점(t0)에 의해 지시된 현재(20910)는 페이로드(20912)의 현재 상태를 반영할 수 있고, 시간(20914)에 걸친 이력 델타 또는 검토의 누적 집계(합계)를 나타낼 수 있다.
도 210은 미래로 연장하는 타임라인을 도시한다. 미래(21020)는 시간점(tf1, tf2 및 tf3)에 의해 지시될 수 있다. 미래에 각각의 시점에서, 우리가 너트의 ‘페이트’(21024) 부분 또는 섹션으로서 집합적으로 언급할 수 있는 가능한 미래 이벤트(21022)가 있을 수 있다. '이력' (21004)와 '페이트'(21024)의 조합을 카르나크 검토라고 부를 수 있다. 너트의 이력 및 로그 섹션의 적용 범위는 연관된 명세 섹션과 함께 도 111 내지 도 112에서 다루어질 수 있다.
기존의 컴퓨터 과학에서, 데이터 객체의 과거, 현재 및 미래가 별도의 저장 위치에서 발견되고, 별도의 프로세스와 어플리케이션에 의해 처리되며, 및/또는 데이터의 이러한 적어도 3개의 단계를 통합하는 구성 원칙 없이 광범위하게 상이한 메커니즘으로 실행될 수 있다. 카르나크 검토는 데이터의 적어도 3개의 단계를 데이터의 모든 조각이 과거, 현재 및/또는 미래를 가질 수 있는 응집적인 구성 원칙으로 통합할 수 있다. 컴퓨터 과학은 백업 시스템, 아카이브 시스템, 소스 코드 제어 시스템 및 검토 제어 시스템과 같은 그러나 그로 한정되지 않는 과거를 구성하는 메커니즘으로 가득한 것일 수 있다. 컴퓨터 공학은 캘린더, 작업 관리자, 이벤트 스케줄러, 배치 스케줄러 및 크론 작업과 같은 그러나 이로 국한되지 않는 가능한 미래 이벤트를 실행하고 기록하는 여러 가지 방법을 가질 수 있다. 크로나크 검토는 단일 데이터 객체가 그 자체를 연대순으로 기록하고, 현재 상태를 홀딩하고 및/또는 그 자체 상에 또는 그 대신에 일원화된 방식으로 가능한 미래 이벤트를 스케줄링하는 것을 허용할 수 있다. 이는 어떻게 우리가 데이터를 지난 시간뿐만 아니라 지나갈 시간에서 깊이를 갖는 것으로 보는지에 있어 상당한 관점 이동일 수 있다. 카르나크 검토는 어플리케이션 중심 접근이라기 보다는 데이터 중심 접근으로 인해 종래 기술과 현저한 기술적 차이를 나타낼 수 있다. 카르나크 검토는 데이터의 관점에서 분산되고 탈중앙집중적이며 본질적으로 안전한 방식으로 일원화된 방식으로 데이터의 연속적인 타임라인을 처리하는 것을 허용할 수 있다.
도 211은 너트에서 카르나크 검토의 3개의 다른 변형을 도시한다. (21110)은 도 58에 의해 원래 표시되고 설명된 너트일 수 있다. 잠금 노드(21112)는 이러한 너트의 이력을 유지하는 너트의 테일 부분일 수 있다. 너트(21120)에서, 테일(21122) 및 페이트(21124)로 구성된 별도의 잠금 노드가 있을 수 있다. 이는 잠금 그래프 또는 너트의 이력(21190) 및 이벤트(21192)에 상응한다. 너트(21130)에서, 테일 및 페이트 파트는 카르나크(21194)라는 단일 잠금 노드(21132)로 조합될 수 있다. 카르나크 검토의 구현예는 이러한 3개의 변형에 의해 제한되지 않을 수 있고 잠금 그래프 구성의 무한 순열의 하위 집합을 상속할 수 있고, 하위 집합 그 자체는 무한일 수 있다.
도 212는 너트 부분 정의의 확장된 표이다. 도 81에 원래 너트 부분 표는 페이트(21204) 및 카르나크(21206) 부분을 포함하도록 확장될 수 있다.
도 213은 이벤트 구동 상태 기계(EDSM)의 표 조망을 도시한다. 이벤트 구동 상태 기계(21300)는 작동 모드와 관련하여 특정한 제한을 갖는 특정 유형의 FSM 일 수 있다. 구문 S1, S2, S3(21310)은 이벤트(21330)의 조합으로 각각 트리거될 수 있고, “완료”의 디폴트 이벤트는 각각의 구문을 처리하는 완료 시에 발생될 수 있고 및/또는 “완료”의 디폴트 이벤트는 디폴트 트리거에 의해, 임의의 다른 이벤트 조합의 부재에서, 평가될 시퀀스(21310)에 다음 구문일 수 있다. EDSM의 이러한 차이는 카르나크 검토의 미래 이벤트의 처리에서 중요할 수 있다.
도 214는 EDSM 명령 언어를 도시한다. 너트의 페이트는 제네릭 EDSM 명령 언어의 설명적이지만 제한적이지 않은 예시에서 규정될 수 있다. 해당 기술분야의 당업자는 본 예시에 기본 구조 및 의도를 이해하여 보다 정교한 어휘 및 문법적 기법을 적용하여 EDSM 명령 언어를 보다 특징이 풍부하고 유연하게 만들 수 있다. 섹션(21400)은 "완료" 이벤트가 발생되고 이벤트(E1)가 조건 C11(21402)과 같을 수 있을 때 처리될 수 있고, 그런 후에, 구문 S1(21404)을 실행하고 구문 S1의 완료 시에, 구문 S1(21406)의 실행의 종료 조건에 기반해서 참 또는 거짓 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21410)은 "완료" 이벤트가 발생되고 이벤트(E1)가 조건 C11과 같고 이벤트 E2가 조건 C22(21412)와 같을 수 있을 때 처리될 수 있고, 그런 후에, 구문 S2(21414)를 실행하고 구문 S2의 완료 시에, 값이 거짓 값을 갖는 "완료" 이벤트를 반환하거나 구문 S2(21416)의 실행의 종료 조건에 기반해 이벤트 E3을 발생시킨다. 섹션(21420)은 "완료" 이벤트가 발생되고 이벤트 E3가 조건 C33(21422)와 같을 때 처리될 수 있고, 그런 후에 구문 S3(21424)을 실행하고 구문 S1의 완료 시에, 구문 S3(21426)의 실행의 종료 조건에 기반해서 0 또는 -1의 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21430)은 "완료" 이벤트가 발생되고 이벤트(E4)가 조건 C44(21432)와 같을 수 있을 때 처리될 수 있고, 그런 후에, 구문 S4, S5, S6(21434)을 실행하고 구문의 완료 시에, 구문 S6의 실행의 종료 조건의 디폴트 값을 갖는 "완료" 이벤트를 반환한다. EDSM 명령 언어의 이러한 유형에 대한 대안적인 용어는 카르나크 명령 언어(CCL)일 수 있다.
도 215는 카르나크 명령 언어의 예시를 도시한다. 섹션(21500)은 "완료" 이벤트가 발생되고 시스템 클록이 현지 시간으로 정오와 같을 수 있을 때 처리될 수 있고, 그런 후에 구문 S1을 실행하고 구문 S1의 완료 시에, 구문 S1의 실행의 종료 조건에 기반해서 '완료' 또는 '오류'의 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21510)은 "완료" 이벤트가 발생되고 마지막 구문이 완료할 때 처리될 수 있고, 그런 후에 구문 S2를 실행하고, 구문 S2의 완료 시에, 구문 S2의 실행의 종료 조건의 디폴트 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21510)의 트리거 이벤트는 순차적인 구문의 논리 그룹에서 순차적으로 다음 구문을 단지 처리하는 것과 논리적으로 동일할 수 있다. 섹션(21540)은 "완료" 이벤트가 발생되고 시작 이벤트가 조건 삭제될 때 처리될 수 있고, 그런 후에, 구문 S1(21434)을 실행하고 구문 S1의 완료 시에, 구문 S1의 실행의 종료 조건의 디폴트 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21530)은 "완료" 이벤트가 발생되고 1 클록 세컨드가 통과할 때 처리될 수 있고, 그런 후에 구문 S2를 실행하고, 구문 S2의 완료 시에, 구문 S2의 실행의 종료 조건의 디폴트 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21550)은 "완료" 이벤트가 발생되고 2 클록 세컨드가 통과할 때 처리될 수 있고, 그런 후에 구문 S3을 실행하고, 구문 S3의 완료 시에, 구문 S3의 실행의 종료 조건의 디폴트 값을 갖는 "완료" 이벤트를 반환한다. 섹션(21500, 21510 및 21520)은 현지 시간으로 11:00에 이러한 방식으로 시퀀싱할 수 있고: 그것은 현지의 정오가 아닐 수 있으므로, 구문 S1을 건너뛰고, "완료" 이벤트를 발생시키고, “완료”이벤트가 발생되고 마지막 구문이 완료되었기 때문에((21500)에서 괄호로 표시된 전체 EDSM 라인) 구문 S2를 실행하고, 구문 S2로부터 반환값의 값을 갖는 "완료" 이벤트를 발생시키고, “완료”이벤트가 발생되고 마지막 구문이 완료되었기 때문에((21510)에서 괄호로 표시된 전체 EDSM 라인) 구문 S3를 실행하고, 구문 S3 실행으로부터 반환 값에 기반해 “완료”값 또는 오류를 갖는 "완료" 이벤트를 발생시킨다.
섹션(21540, 21530 및 21550)은 실행 시 이러한 방식으로 그들 자체를 시퀀싱할 수 있다: 실행이 시작되었기 때문에, 시작 이벤트를 발생시키고, 시작 이벤트가 감지되었기 때문에 구문 S1을 실행하고, "완료" 이벤트를 발생시키고, 이벤트는 1초 동안 처리를 일시 중지하고, "완료" 이벤트가 발생되고 대기 이벤트가 감지되었기 때문에 구문 S2를 실행하고, 구문 S2로부터 반환값의 값을 갖는 "완료" 이벤트를 발생시키고, 이벤트는 2초 동안 처리를 일시 중지하고, "완료" 이벤트가 발생하고 대기 이벤트가 감지되었기 때문에 구문 S3을 실행하고, 구문 S3 실행의 반환 값의 값을 갖는 "완료" 이벤트를 발생시킨다. 이러한 2개의 예시에 명백하게 기재된 바와 같이, 대괄호 { } 안에 있는 명령은 이벤트 제한이 있는 하나의 논리적 구문으로서 간주될 수 있다. 종래의 작업 스케줄링 또는 프로그래밍 언어의 것에 대한 이러한 EDSM 명령 언어 또는 CCL의 일부 차이점은 순차적으로 다음 구문을 처리하는 단순한 증분 단계조차 임의의 이벤트 조건에 의해 제한될 수 있고, 매 구문 또는 구문의 논리적 그룹핑은 심지어 "완료" 이벤트를 발생시키는 논리 구문의 완료와 함께 적어도 하나의 이벤트로 묶일 수 있다는 것이다.
도 216은 계산된 지연에 관한 CCL을 도시한다. 종래의 프로그래밍 언어는 처리 매니페스트에 따라 프로세서의 타이밍 클록에 의해 실제로 허용되자마자 다음 구문으로 넘어갈 수 있다. 구문의 지연된 실행은 특화된 디버깅 환경에서 그들을 실행하는 경우를 제외하고는 프로그래밍 언어의 익숙한 특징이 아닐 수 있고, 실행 특성은 어플리케이션으로부터 외부로 또는 특화된 타이밍 라이브러리를 주입하여 제어될 수 있다. CCL은 구문 능력별 빌트인 이벤트 처리로 인해 체계적 지연 특징을 고유하게 제공할 수 있다. 라인(21600)은 10 MHz 속도로 실행하는 인텔 8086에 대한 대상 CPU 변수를 나타낸다. 라인(21602)는 현재 실행 중인 프로세서 사양 대 대상 CPU 사양에 대한 상대적 나노초 지연 값을 계산한다. 이러한 계산된 지연 값은 실제 작동 조건에 존재할 수 있는 OS 오버헤드 및/또는 실행의 시간에 기계의 부하로 인해 이론상으로만 정확할 수 있다. 그러나, 개발자가 구문당 5초로 처리를 늦추길 원한다면, 그는 단지 5초로 지연을 설정하면 될 수 있다. 그 이후의 매 구문(21610, 21620 및 21630)은 구문 실행 전에 균일한 지연을 유효화하도록 트리거 이벤트로서 적어도 대기 지연 ns_나노초(wait delay ns_nanoseconds)를 가질 수 있다. 대안적으로, 마커로 주석 처리된 바와 같이, 지연은 재생 중인 상대 CPU의 사이클 카운트와 같은 형태로 나타날 수 있다.
도 217은 CCL을 사용하여 캘린더 이벤트 예시를 도시한다. 라인(21700)은 RZ이 eRZ 모드에 있을 수 있는 너트서버/랑데부 서버를 실행할 수 있는 프로세스 상에서만 실행하도록 CCL 코드에 대한 조건을 설정한다. 이러한 조건은 제한된 수의 너트서버, 본 경우에, 단일 프로세스에 의해 처리될 특정 이벤트를 제한하기 위해 보증될 수 있다. 너트에서 캘린더는 여러 개의 사용자 장치에 걸쳐 복제되고 배포될 수 있다. 캘린더의 미래 약속 및/또는 리마인더가 너트의 카르나크로 코딩될 수 있다면, 그때 기계 모드 특정 제한 없이, 캘린더 너트의 복제를 보유한 모든 사용자의 장치는 거의 동시에 동일한 이벤트를 트리거할 수 있고, 따라서 이벤트가 사용자 너츠 에코시스템 내의 복제의 개수에 의해 곱해지도록 할 수 있다: 분산되고 탈중앙집중화된 환경에서 전적으로 소망하지 않는 거동. RZ의 eRZ 모드는 본 개시의 나중 섹션에서 논의될 수 있다. 그러므로, 유효한 이러한 조건(eRZ)으로, 본 예시에 구문은 단일 eRZ 에코시스템에서 한 번만 실행할 수 있다. 독립적으로 처리된 복제 너트의 곱셈 효과를 피하기 위해 필요에 따라 다른 제어가 적용될 수 있다. 구문(21710)은 2020년 1월 6일에 부인의 생일에 대해 사용자에게 리마인더 텍스트를 보낼 수 있다. 구문(21720)은 앞으로 매달의 첫 번째 수요일에 정오 직원 회의에 관한 캘린더 약속을 삽입할 수 있다. 구문(21730)은 36.5시간을 대기한 후, 배포 목록에 너트에 포함된 이메일을 보낼 수 있다. 시스템이 재부팅할 때 구문(21740)이 트리거될 수 있고, 15분을 대기하고 그런 후에 너트의 페이로드에서 어플리케션이나 스크립트를 실행할 수 있다.
도 217에 예시는 모든 포괄적인 분류 체계가 언제든지 또는 어느 곳에서든지 임의의 너트ID의 통합을 허용한다는 점에서 너트ID와 같은 그러나 그로 한정되지 않는 범용 식별자를 활용하는 일부 이점을 가리킬 수 있다. 구문(21730)은 단순히 일부 너트ID를 갖는 너트에 저장된 사전 작성된 이메일 내용을 참조한다. 이러한 너트 이메일은 국부적으로 발견될 수도 있고 그렇지 않을 수도 있지만 사용자의 에코시스템이 접근가능한 저장 위치 가운데 그것을 위치시키는 한에는, 그것은 가져와 전송될 수 있다. 이러한 맥락에서, 너트ID는 OS, FS, 네트워크 등에 관계없이 임의의 그리고 모든 디지털 환경을 이동할 수 있다. 구문(21740)에서, '페이로드 실행('execute_payload') 명령은 '너트 실행(일부너트ID)('execute nut(someNutlD)') 명령으로 대체될 수 있고, 실행가능한 너트는 임의의 실행가능한 페이로드를 홀딩할 수 있지만 실행가능한 너트에 대한 접근은 실행가능한 너트의 소유자에 의해 시간에 걸쳐 변경될 수 있는 실행가능한 너트의 구성된 암호 접근 제어에 기반해 허용되거나 허용되지 않을 수 있다.
CCL은 임의의 너트에 주입될 수 있으므로, 임의의 페이로드는 너트 컨테이너의 보안으로 모두 보호되는 맞춤식 작동가능한 이벤트 캘린더를 가질 수 있다. 너트의 페이트 부분은 별도의 잠금 노드에 배치될 수 있고, 그로써 작동 환경에서 더 높은 위험을 야기하는 실행가능한 것으로 간주될 수 있으므로 자체 보안 제한에 영향을 줄 수 있다. 너트의 다양한 부분 및 측면을 제어하는 변형 접근 제어 구성의 과잉은 민감한 환경 및/또는 민감한 데이터/문서에서 매우 도전적인 보안 시나리오를 다루기에 충분할 수 있다. 문서와 함께 CCL의 단순한 사용은 그 자체의 이벤트 약속과 함께 나타나는 너트에 저장된 문서일 수 있으므로, 그러한 너트의 수신자는 마감과 연관된 문서를 그들의 개인 캘린더에 수동으로 삽입할 필요가 없고. 단순히 제안된 가능한 미래 이벤트를 자신의 캘린더 너트에 받아들일 수 있다: 자기 지정 문서. 무작위 마감의 쇄도가 일반적일 수 있는 법률 및 회계 분야에서, 자기 지정 문서의 보안 공유는 관련된 모든 참가자에 대해 캘린더 관리의 부담을 완화시킬 수 있다. 예를 들어, 특허 분야에서는 우선일 및 출원 기한은 적시 방식으로 수행해야 하는 법적 업무의 관리 요소 중 일부일 수 있고, 법무팀과 고객에 대해 관할 특허청에 의해 공유되는 자기 지정 문서는 기한에 관한 타이밍 및 관리를 크게 용이하게 할 수 있다. 너트ID 및 너트를 사용하는 추가된 혜택은 특허청에 의한 가출원의 확인에 의해 12개월의 제출 기한이 고객의 캘린더에 자동으로 삽입될 수 있고, 가출원 확인의 원래 사본을 보관하는 자기 지정 너트의 너트ID가 캘린더 일정 엔트리에서 직접 참조될 수 있고, 그로써 사용자가 가까운 미래 이벤트에 대해 캘린더를 브라우징할 때, 마우스의 한 번 또는 두 번 클릭으로 원본 문서를 참조할 수 있게 하고 검색하지 않고 세부사항을 살펴볼 수 있게 한다.
도 218 및 도 219는 IoT 장치의 세트를 제어하기 위한 CCL 사용을 도시한다. 도 218은 IoT 너트의 페이로드이다. 도 219는 도 218의 IoT 너트의 CCL이다. IoT 너트(21800)의 페이로드는 사용자에게 관심의 4개의 IoT 장치를 보여줄 수 있다: 1층 서모스탯(21810), 2층 서모스탯(21820), 실외 온도계(21830), 및 실외 풍속계(21840). 각각의 IoT 장치의 다양한 측정 및/또는 지표가 이러한 단일 페이로드에 보관할 수 있다. '현재(current)'로 표시된 온도 측정치와 같은 그들 중 일부는 각각의 IoT 장치에서 전송되는 측정치일 수 있다. '온도 세트' 라인은 IoT 장치 제어 파라미터를 나타낸다.
CCL(21900)은 기계 이름 조건으로 시작할 수 있고, 그로써 한 번에 하나의 기계에서 하나의 프로세스 하에서만 CCL을 작동시키기 위해 특정 기계의 순서화된 계위를 특정한다. 이러한 계위의 순회는 소망하는 기계가 도달가능할 수 있는지 아닌지에 따라 달라질 수 있다. 현재 기계가 ‘IoT마스터’로 명명되면, 그때 CCL이 실행될 수 있다. 현재 시스템의 이름이 'ERZ'으로 명명되고 ‘IoT마스터’가 사용자의 너츠 에코시스템 내에 도달가능하지 않다면, 그때 CCL 등이 실행될 수 있다. 기본적으로, 조건은 자동 페일오버로서 역할을 할 수 있는 한편 복제된 너트 환경에서 중복 처리를 최소화할 수 있다. 기본적으로, 조건은 자동 페일오버로서 역할을 할 수 있는 한편 복제된 너트 환경에서 중복 처리를 최소화할 수 있다. 구문(21910)은 너트서버 및/또는 OS에서 ‘IoT_thermostat01_from’으로 명명된 이벤트를 캐치하여 이벤트 값을 ‘msg’ 및 ‘value’ 변수로 저장한 다음, 이벤트로부터 ‘msg’와 일치하는 페이로드 텍스트를 편집하고 해당 라인을 ‘msg’+’‘+’value’이 제공된 이벤트로 대체할 수 있다. ‘IoT_thermostat01_from’ 이벤트는 1층 서모스탯에 상응하므로 반환되는 ‘msg’는 ‘서모스탯 1층 현재 온도:’이고 '값'은 ‘68F’일 수 있다. 편집 페이로드 명령은 '서모스탯 1층 현재 온도:'로 시작하는 라인과 일치할 수 있고 전체 라인을 ‘서모스탯 1층 현재 온도: 68F’로 대체할 수 있으므로, 1층 서모스탯으로부터 현재 온도 측정치를 71F에서 68F로 업데이트한다. 구문(21920)은 구문(21910)과 유사한 논리를 작동하지만 ‘IoT_thermostat02_from’ 이벤트에 있어서, 본 경우에 2층 온도계에 상응한다. 구문(21930)은 구문(21910)과 유사한 논리를 작동하지만 ‘IoT_outdoor_temp’ 이벤트에 있어서, 본 경우에 실외 온도계에 상응한다. 따라서, 3개의 온도 관련 IoT 장치 모두는 이러한 구문에 의해 모니터링될 수 있다. 유사한 구문이 실외 풍속계에 대해서 주기적으로 모니터링하도록 추가될 수 있다.
구문(21940)은 프로세스에 의해 페이로드 수정이 식별될 수 있을 때 트리거될 수 있으며 수정된 텍스트 라인을 반환한다. 그런 다음, 1층 및 2층 온도계 각각에 대한 '세트' 라인을 찾는 일련의 텍스트 검색을 실행한다. 일치가 발견될 때, 수정된 텍스트의 전체 라인의 값이 일치하는 이벤트 발생에 대한 값으로 전송될 수 있다. 예를 들어, ‘IoT_thermometer01_to’이벤트가 ‘서모스탯 1층 온도 세트: 75F’의 값으로 발생되면, 그때 1층 온도계는 로컬 네트워크를 통해 해당 이벤트를 캐치하고 목표 온도를 70F에서 75F로 설정하고, 따라서 1층의 히터를 켤 수 있다. IoT 장치에 대한 제어 명령은 이러한 예시에 도시된 이들로만 제한되지 않을 수 있다.
도 220은 캘린더 모드 CCL의 예시를 도시한다. CCL은 이전 예시에서 구성과 같은 프로그래밍 언어를 사용하지 않고도 공통 캘린더 일정 업무에서 프로그래밍의 부담을 덜기 위해 달력 모드를 지원할 수 있다. 라인(22000)은 이러한 CCL 세그먼트를 'US' 방식 날짜/시간 관례를 사용하여 캘린더 모드 해석 규칙에 따라 처리되도록 설정한다. 라인(22002)은 작동 시간대를 ‘CST’로 설정한다. 라인(22004)은 CCL에서 이전 이벤트를 삭제함을 나타낸다. 이는 카르나크 검토의 이력 부분 내의 과거 이벤트의 기억에 영향을 미치지 않을 수 있고, 따라서 라인(22004)은 과거에 일어났는지를 완전히 지우지 않을 수 있다. 구문의 어휘, 구문론 및 문법이 자기 설명적일 수 있으므로, 모든 샘플 구문이 일반 사용자에 의해 쉽게 이해될 수 있다. 해당 기술분야의 당업자는 그런 일정을 정할 수 있는 포맷의 다양성을 확장하기 위하여 자연 언어 처리 기법을 적용할 수 있다. 그러한 캘린더링 CCL은 법적 기한 예시에 대해 그리고 학교와 같은 그러나 이에 국한되지 않는 임의의 기관에 대해 유용할 수 있고, 그로써 정기적 강의 및 활동 일정이 훨씬 더 효율적인 방법으로 교직원과 학생들에게 전파될 수 있다. CCL은 이전에 나타난 구문을 폐지 또는 취소하고 대체 구문을 제공할 수 있는 명령을 포함할 수 있다. 그러한 경우, 너트의 캘린더 페이로드의 구현은 실제 캘린더 이벤트와 함께 캘린더 이벤트를 생성한 구문의 사본을 저장할 수 있고, 그로써 특정 구문에서 발생하는 그러한 이벤트를 취소하는 것이 용이하게 식별되고 수정될 수 있다. 해당 기술분야의 당업자는 CCL 구성에 적용될 수 있는 무수한 모뎀 캘린더링 기법을 도입할 수 있고, 그로써 캘린더의 편집을 훨씬 더 특징 풍부하게 한다.
도 221은 너츠 환경 내의 CCL의 이벤트 공간을 도시한다. 어플리케이션, 프로세스, 스레드, 장치, 네트워크, OS, 클라우드 서버, 클라우드 저장소, IoT 장치는 정의된 너츠 에코시스템의 범위 내에서 참여 너트서버(22166)에 의해 캐치가능한 이벤트를 생성할 수 있다. 너츠 에코시스템은 너트ID를 기반으로 실행할 수 있으므로, 인터넷 모드(iRZ)의 랑데부 서버를 통해 전송하는 이벤트는 인터넷을 통해 이벤트를 중계할 수 있다. 그러한 이벤트 트래픽이 너무 정체되면, 이벤트를 효율적으로 전달하고 다른 RZ 너트 트래픽을 정체시키지 않기 위해 이벤트 중계 서버가 도입되고 활용될 수 있다. 이벤트 메시지 및 값은 평문으로 전송될 수 있지만 소망하는 방법이 아닐 수 있다. 이벤트 메시지에 대한 보안은 너트에 그들을 묶고 너트를 발송하여 제공될 수 있다. 그러나, 경량 IoT 장치는 너트를 처리할 불충분한 처리 및 메모리 용량을 가질 수 있다. 이러한 경우에, IoT 장치로 암호화된 세션은 사용자의 너츠 에코시스템 내에서 ‘IoT마스터’에 의해 지정된 장치에 의해 관리될 수 있고, 이는 경량 형식으로 보안 메시지를 전송하기 위해 SDFT와 유사한 프로토콜을 활용하고 및/또는 IoT 제조자에 의해 제공된 경량 암호화된 프로토콜을 사용할 수 있다.
구조화된 접근 프레임워크(SAF)
도 222는 일부 기존 접근 프레임워크를 도시한다. 마하잔 "분산 컴퓨팅"으로부터의 도해(22200 및 22210)는 접근 제어 및 접근 권한에 대한 종래의 접근 및 프레임워크를 도시한다. (22200)은 OS, FS, 활성 디렉토리, 네트워크 접근 제어, 웹 로그인, 웹 기반 인증 시스템 등과 같은 그러나 그로 한정되지 않는 다양한 형태로 자신을 구현할 수 있는 참조 모니터로 불리는 제네릭 어플리케이션을 사용하여 주체에 의해 보호된 객체에 대한 제한 접근에 대한 어플리케이션 중심 접근을 보여줄 수 있다. 참조 모니터는 주체를 인증하고 시스템의 다양한 객체 및 자원에 대해 토큰 및/또는 세션 기반 접근 권한을 나눔으로써 자산(객체) 보호의 임의의 그리고 모든 측면을 책임질 수 있다. (22210)은 보호 도메인에 접근 권한의 세트를 구성하는 종래의 방식을 보여 줄 수 있다. (22220)은 송 등으로부터의 속성 기반 접근 제어(ABAC)의 예시를 보여 줄 수 있다. ABAC는 접근될 주체, 환경 및 객체와 연관된 다양한 속성 상에 작동하는 어플리케이션 또는 참조 모니터일 수 있다. 본 예시는 주체가 보호된 객체에 접근하려고 할 때 다중 속성의 논리적 조합 상에 작동하는 ABAC 어플리케이션을 보여줄 수 있다. 이러한 도면에 모든 방법은 중심화된 접근 관리의 형태로 연합할 수 있는 프로그램 접근에 의존한다. 이는 일반적으로 작업자의 전문가 수준의 역량과 경험을 요구할 수 있는 그러한 접근 제어 참조 모니터를 운영하고 관리하는 복잡성과 민감성으로 인한 것일 수 있다. 그러나, 다수의 집중화된 시스템은 권한 있는 사용자가 그를 고용하는 조직에 반하는 목적을 위해 그의 접근 권한을 남용할 수 있는 전형적인 내부자 위협 위험을 야기할 수 있다.
도 223은 너트가 ABAC를 어떻게 표현하는지를 도시한다. 단일 개체 페이로드(22306)를 보호하는 송 등으로부터의 ABAC(22300)는 요구되는 속성을 수집하고 어플리케이션의 메모리에서 ABAC(22304) 규칙에 의해 논리적 프로그램 작동을 수행함으로써 접근 제어를 수행할 수 있다. 제 위치에서(22304) ABAC 규칙을 충족할 시에, ABAC 시스템(22300)은 객체(22306)에 대한 접근을 갖는 주체를 나타낼 수 있다. 너트 구조(22310)는 동일한 컨테이너 내부에 있을 수도 있는 페이로드(22316)를 보호하기 위해 순수한 암호화 데이터(22312 및 22314)로서 ABAC 규칙을 너트 컨테이너에 직접 암호로 인코딩할 수 있다. 가변 잠금 형식, 유연한 잠금 그래프 및 너트의 다른 암호식으로 표현된 보호 특징은 임의의 무작위 ABAC 보호 도메인 및 규칙이 휴대가능하고 탈중앙집중화된 방식으로 보호될 객체 상에 직접 인코딩되는 것을 허용할 수 있다. 동일한 ABAC 규칙의 두 개의 표현 사이에 상당한 차이는 (22300)은 주체가 집중화된 접근 시스템에 접근하는 것을 요구하고, 시스템은 보호 하에 있는 모든 객체의 모든 규칙을 알고 있는 반면에 너트 구현(22310)에서, 특정 객체(22316)에 대한 특정 규칙이 그에 첨부될 수 있고 이를 보호하는 ABAC 규칙은 임의의 환경에서 항상 페이로드(22316)를 보호할 수 있다는 것을 유념한다; 그러므로, (22300)과 같은 참조 모니터는 접근 제어 환경의 범위 내에서만 효과적일 수 있는 반면, 너트 컨테이너(22310)는 적대적이고 및/또는 우호적인 모든 임의의 환경을 가로질러 및/또는 그 내에서 페이로드(22316)의 동일한 보호 특성을 나타낼 수 있음이 이해될 수 있다.
접근 자격증명, 키 및/또는 토큰을 보유한 너트 컨테이너의 조직화된 구성은 구조화된 접근 프레임워크(SAF)의 형성을 허용할 수 있고, 그로써 프로그램 접근 제어 방법을 활용하는 임의의 접근 제어 방법론은 대체 및/또는 보충될 수 있다. 보안 프레임워크는 임의 접근 제어(DAC), 의무적 접근 제어(MAC), 역할 기반 접근 제어(RBAC), 속성 기반 접근 제어(ABAC), 정책 기반 접근 제어(PBAC), 및 비상 접근 제어(브레이크 글래스)와 같은 그러나 그로 한정되지 않는 자산을 보호하기 위해 협동적으로 작동하는 접근 제어 모델의 무작위 조합을 허용할 수 있다. 보안 데이터에 대한 너츠 접근은 보호층으로서 데이터 자체에 대한 보안 경계를 부착함으로써 데이터가 엔드포인트로 처리될 수 있는(엔드포인트로서의 데이터, DaaE) 데이터 경계 접근 제어(DPAC)로 언급될 수 있다. 너츠에서, DPAC는 암호 데이터만을 사용하여 실행될 수 있으며 참조 모니터로부터 완전한 분리에서 작동될 수 있다.
도 224는 SAF의 기본 요소를 도시한다. 식별(22400)은 접근 유도 방법(22420)에 대한 속성(22410)을 나타내고, 방법은 접근 키(22430)를 생성하고, 이는 접근 프로세서(22440)에 제출되고 그에 의해 작동되어, 제한된 자산(22460)에 대해 접근을 가능하게 할 수 있는 접근 키(22450)를 초래한다. 식별자(22400)는 다른 PUID, 사용자, 연락처, 장치, 시스템, 그룹, 프로세스, 네트워크 등을 포함하는 주체를 언급할 수 있는 임의의 PUID일 수 있다. 속성(22410)은 로그인, 패스프레이즈, 생체인식 정보, 장치 식별자, PIN, 카드, 토큰, 앱, 속성 유도 함수(ADF), 접근 키를 포함할 수 있다. 접근 유도 방법(22420)은 계정 조회, 키 유도 함수(KDF), PIN 매칭, 역할 유도, 생체인식 키 유도, 임시 속성, 환경 속성, 장치 ID 키 속성, 하드웨어 키 핸드셰이크, 보안 OS 부트스트랩을 포함할 수 있다. 접근 키(22430 및 22450)는 암호 키, 토큰(접근 키로부터 유도), 패스프레이즈를 포함할 수 있다. 접근 프로세서(22440)는 규칙, 정책 및 다른 제약의 적용을 포함한다; 자산에 대한 인증된 접근을 결정하기 위해 제약을 부여하는 속성의 조합, 접근 '잠금'. 자산(22460)은 자산, 계정, 객체, 데이터, 장치, 및 네트워크를 포함하는 보호될 대상일 수 있다.
도 225는 SAF의 세부도를 도시한다. SAF는 사용자에 대한 접근 너트 내에 특정된 사용자 ID(22500)에 의해 실행될 수 있다. 사용자 ID는 또한 로그인 ID 및/또는 종래의 인증 시스템에 의해 생성된 임의의 다른 디지털 식별자일 수 있다. 속성(22510)은 사용자 ID에 의해 표현될 수 있고 및/또는 운영 환경으로부터 사용자 ID를 대신하여 인증 프로세스에 의해 수집될 수 있다. 종래의 인증 시스템은 사용자 ID가 PIN, 패스프레이즈 및/또는 USB 키(22510)를 요구할 수 있고, 그런 후에 속성은 KDF, PIN 매처, 및 하드웨어 키 핸드셰이크와 같은 그러나 이에 국한되지 않는 실행 중인 접근 제어 프로세스 내에서 접근 유도 방법(22520)에 의해 더 처리될 수 있다. 너트의 범용 키홀은 PIN, 패스프레이즈 및 생체인식 정보와 같은 그러나 그로 한정되지 않는 접근 속성을 수용하고 속성(22510) 상의 각각의 키홀에 의해 특정된 적절한 접근 유도 방법(22520)을 수행하여 접근 키(22530)를 생성한다. 일부 경우에, 접근 키는 별도의 프로세스 및/또는 하드웨어에 임베딩된 외부 접근 유도 방법에 의해 생성될 수 있고, 따라서 너트 키홀은 해당 속성에 상응하는 접근 키만을 허용할 수 있다. 종래의 접근 제어 시스템은 제한된 객체(22566)에 대한 키, 자격증명, 토큰(22550)을 포함하는 접근을 생성하기 위해 공급된 접근 키(22530) 상에 프로그램 접근 프로세서(22540)를 활용할 수 있다. 너트는 자산/객체(22566)에 접근하기 위한 접근 키를 생성하는 특정 접근 프로세서 접근 모델(22540)을 표현하기 위해 그래프 형태(22562 및 22564)로 잠금 노드의 내부 구성을 활용할 수 있다. 대안적으로, 특정 접근 프로세서 접근 모델(22562)의 부분 또는 전체를 형성하는 잠금 노드의 임의의 하위 집합은 너트의 잠금 그래프의 내부 부분으로부터 추출되어 별도의 너트로 외부화될 수 있고, 각각의 너트의 페이로드는 자산을 홀딩하는 너트의 것을 포함하는 다른 너트에 대한 접근 키를 홀딩할 수 있다.
도 226은 역할 분할을 도시한다. 시나리오(22600)는 두 개의 논리 그룹을 나타낼 수 있다: 사용자(22602) 및 허가(PRM)(22604). 첫 번째 예시에서 사용자 U1은 U1 접근 너트로 표현될 수 있고, 적절한 잠금 해제 시에, 페이로드는 다양한 허가 너트(P1, P5 및 Pn)에 대한 접근 키를 노출할 수 있다. 노출된 U1 접근 키에 의해 접근가능한 각각의 허가 너트는 각기 홀더가 보호 도메인 내에서 특정 제한된 작동을 수행하는 것을 허용할 수 있는 허가 키를 노출할 수 있다. 다른 사용자 U2...Un(22602)은 유사한 방식으로 처리될 수 있다.
시나리오(22610)는 세 개의 논리적 그룹을 보여준다: 사용자(22612), 접근 역할(22614) 및 허가(PLM)(22616). 첫 번째 예시에서, 사용자 U1은 U1 접근 너트로 표현될 수 있고, 적절한 잠금 해제 시에, 페이로드는 다양한 허가 너트(P1, R5 및 Pn)에 대한 접근 키를 노출할 수 있다. 노출된 U1 접근 키에 의해 접근가능한 각각의 접근 역할 너트는 각기 다양한 허가 너트(P3 및 Pn)에 대한 접근 키를 노출할 수 있다. 노출된 역할 너트 접근 키에 의해 접근가능한 각각의 허가 너트는 각기 홀더가 보호 도메인 내에서 특정 제한된 작동을 수행하는 것을 허용할 수 있는 허가 키를 노출할 수 있다. 다른 사용자 U2...Un(22612)은 유사한 방식으로 처리될 수 있다.
시나리오(22620)는 사용자 그룹(22622) 및 허가 그룹(22626) 사이의 k 역할 분할(22624)을 나타낼 수 있다. 각각의 수준의 역할 분할은 이전 예시 시나리오에서와 유사한 방식으로 처리될 수 있다. 시나리오(22630)는 역할 분할(22634)의 조합이 사용자 그룹(22632)과 허가 그룹(22636) 사이에 삽입될 수 있음을 나타낼 수 있다. 이러한 시나리오는 RBAC의 임의의 복잡한 표현이 접근 키를 홀딩하는 너트 컨테이너의 구성을 사용하여 부분적으로 또는 전체적으로 암호 방식으로 실행될 수 있음을 보여 줄 수 있다.
도 227은 다른 그루핑으로 어플리케이션 역할 분할을 확장한다. 무작위 속성 그룹(22700)은 접근자 속성의 컬렉션으로부터 형성될 수 있다. 이러한 속성 그룹은 역할 분할(22710), 장치 분할(22720) 및 다른 속성 분할(22730)과 같은 그러나 그로 한정되지 않는 무작위 분할로 요구에 따라 및/또는 소망에 따라 더 연결될 수 있다. 허가(22740)의 유니버스로부터, 허가의 무작위 그룹이 형성될 수 있고, 각각의 허가는 단일 속성, 속성 그룹, 허가 그룹, 역할 분할, 단일 분할, 장치 분할, 속성 분할을 포함하는 다른 그룹과 무작위 방식으로 상호연결될 수 있다. 이러한 접근 제어 모델의 성공적인 루트 순회는 하나 이상의 허가 키 및/또는 접근을 생성하는 것을 초래할 수 있다. 그러한 복잡한 접근 제어 모델은 종래적으로 구축할 수 있지만, 이는 복잡한 처리 및 사전 공식화 및 규칙과 조합의 그러한 유연성 및 다양성으로 가능할 수 있는 복잡한 다수의 순열의 사전 분석을 요구할 수 있다. 이는 중심화된 어플리케이션에 논리를 임베딩하는 종래의 방법론으로 인한 것일 수 있고, 그로써 그것은 그러한 접근 규칙의 모든 순열을 처리하도록 요구될 수 있다. 너트를 사용하여, 각각의 접근 규칙 사용이 하나 이상의 제한된 객체에 대한 접근을 대상으로 하는 하나의 사용자 허가 조합에 대해 정확하게 분석되고 구조화될 수 있고, 그로써 접근 규칙은 접근 너트, 접근 키 및 허가 너트의 특정 순서로 그들 자신을 물리적으로 나타낼 수 있다. 너트를 사용하는 구조화된 접근 프레임워크는 암호 방식으로 실행 가능한 무한히 다양한 접근 규칙의 표현을 허용할 수 있다.
도 228은 너트를 사용하여 속성 그룹의 표현을 도시한다. 속성 그룹(22800)은 속성 그룹 속성lO(22810)으로 표현될 수 있고, 여기서 너트(a11, a12, a13, 및 a14)는 모두 접근 키를 생성할 수 있는 너트 및/또는 접근자 방법일 수 있다. 속성 lO에 의해 생성된 접근 키는 도 226 및 도 227에 도시된 바와 같이 분할 구성에서 또 다른 속성 그룹 속성20(22820)에 연결될 수 있다. 속성20은 또 다른 속성30 속성 그룹(22830)에 연결될 수 있다. (22840)은 너트(al2 및 al3)에 의해 생성된 접근 키를 위한 키홀, 가변 잠금 섹션, 및 페이로드(22842)에 저장된 a24 접근 키를 보여주는 단순한 너트(a24)의 도면을 보여 줄 수 있다. 예를 들어, (a21)이 읽기 허가 너트(a31)에 대한 접근 키를 홀딩하고 (a24)가 쓰기 허가 너트(a34)에 대한 접근 키를 홀딩했을 때, 임의의 사용자 또는 (a31) 및 (a34)에 성공적으로 접근하는 ID는 읽기 및 쓰기 허가 키를 생성할 수 있으며, 이는 a31 및 a34 접근 키에 대한 키홀을 갖는 보호된 너트 객체l에 삽입될 때, 삽입된 각기 각각의 접근 키가 객체1 너트를 잠그는 마지막 시간에서 읽기 및 쓰기 NAC 암호 접근 허가를 나타내도록 NAC 세분화된 접근 제어로 적절히 구성되었을 수 있다면, 객체l의 페이로드에 RW 접근을 생성할 수 있다. 읽기 및 쓰기 접근 허가의 그러한 추가 거동은 NAC 암호 메커니즘의 추가 특징에 의해 허용될 수 있다.
도 229는 다양한 속성 그룹을 사용하여 SAF를 도시한다. 사용자 속성 그룹(22910)에서 사용자 앨리스는 일급 비밀 수준 승인을 갖는 회사의 부사장일 수 있고, 역할 그룹(22900)에서 VP 역할 너트에 대한 접근 키, 승인 수준 그룹(22930)에 일급 비밀 승인 너트, 및 앨리스에 대한 사용자 접근 키를 생성할 수 있는 그룹(22910) 내의 앨리스 접근 너트에 그녀의 자격증명과 접근 키를 삽입할 수 있다. VP 역할 너트에 접근하는 것은 VP 역할 접근 키를 생성할 수 있다. 일급 비밀 승인에 접근하는 것은 일급 비밀 승인 접근 키를 생성할 수 있다. 앨리스의 행동에 의해 이제까지 따라서 생성된 세 개의 키는 일급 비밀 승인 접근 키, VP 역할 접근 키 및 앨리스 접근 키를 포함한다. 이러한 세 개의 키는 앨리스가 회사 건물의 보안 영역 내에서 장치 그룹(22920)으로부터 보안 PC1 상에 접근을 수행하는 것을 더 요구할 수 있기 때문에, 앨리스가 접근 키 너트(22940)를 여는 것을 허용하기에 충분하지 않을 수 있다. 앨리스가 보안 PC1 상에 접근을 수행했다면, 장치 그 자체는 장치 접근 키를 나타낼 수 있고, 따라서 그것은 앨리스가 경영자 일급 비밀 접근 너트(22940)를 성공적으로 열 시에 접근 키(22942)에 접근하는 것을 허용할 수 있다. 유사한 방식으로, 그녀가 보안 PC2로부터 그에 접근하고 그룹(22910)에서 접근 너트를 성공적으로 열 수 있으면, 캐롤에 의해 비밀 문서 너트(22950)는 접근될 수 있고, 비밀 문서(22950)는 열릴 수 있다. 너트 컨테이너를 사용하는 접근 제어 모델의 이러한 구성은 안에 임의의 환경에서 동일한 보호 특성을 나타낼 수 있고, 그의 임의의 조합 없이, 너츠 에코시스템 환경은 접근 및 객체 너트를 생성했을 수 있다. 또한, 실시예에 사용된 각각의 너트는 일부 통신 방법을 통해 직접적으로 및/또는 간접적으로 접근 너트서버/RZ에 의해 검색되고 발견될 수 있는 한, 너츠 환경을 가로질러 동일한 및/또는 다른 위치에 저장될 수 있다.
(22900, 22910, 22920 및 22930)과 같은 그러나 그로 한정되지 않는 임의의 접근 너트는 각기 출력으로서 적어도 하나의 접근 토큰 및/또는 접근 키를 생성하는 적어도 하나의 접근 너트에 의해 및/또는 참조 모니터 시스템에 의해 표현될 수 있다. 접근 너트는 환경 접근 제어 및/또는 하드웨어 가능한 접근 제어를 통해 접근을 제어함으로써 더 보호될 수 있다. 복수의 접근 너트를 포함하는 구조화된 접근 프레임워크는 대개의 접근 제어 시스템과 용이하게 일체화할 수 있고 암호 데이터 구조를 사용하여 다양한 접근 제어 모델을 표현하도록 구성될 수 있다.
그룹
도 230은 세트 및 그룹을 도시한다. 수학에서, 요소의 세트는 세트 S(23000)로 표현될 수 있다. 그래픽으로, 세트 S(23000)는 (23002)로 표현될 수 있다. 분산되고 탈중앙집중식 환경에서 그룹을 설명하고 특정하는 목적을 위한 너츠 용어에서, 그룹 GID1(23010)은 세트 S와 유사한 방식으로 정의될 수 있고 그래픽 표현은 (23012)와 같을 수 있다. 그룹 GID1의 요소 또는 멤버는 ID1, ID2 및 ID3과 같은 그러나 그로 한정되지 않는 ID로 지칭될 수 있다.
도 231은 종래의 그룹 관리 레이아웃을 도시한다. 디렉토리 서비스 어플리케이션 및/또는 시스템(23110)은 생성, 속성, 멤버쉽 변경, 삭제 및 서비스 쿼리를 포함하는 그룹에 대한 작업을 허용할 수 있다. 디렉토리 서비스에 의해 규정된 환경의 멤버(23122)는 각각의 추가 속성과 함께 ID로서 디렉토리 서비스에 의해 메모리 및/또는 저장소에 홀딩될 수 있다. 디렉토리 서비스에 의해 정의된 환경의 정의된 그룹(23124)은 각각의 추가 속성과 함께 그룹 ID 또는 GID로서 디렉토리 서비스에 의해 메모리 및/또는 저장소에 홀딩될 수 있다. 디렉토리 서비스에 의해 정의된 환경의 그룹 멤버쉽(23126)은 각각의 추가 속성과 함께 GID-ID 매핑으로서 디렉토리 서비스에 의해 메모리 및/또는 저장소에 홀딩될 수 있다. 관리자 및/또는 진행자(MC)(23100)는 유지, 운영 및 관리 기능을 포함하는 작업을 수행하기 위해 디렉터리 서비스 메모리에 접근할 수 있다. 디렉터리 서비스의 특정 기능에 의해 그렇게 하도록 구체적으로 허용되지 않는 한, 시스템을 통한 사용자는 일반적으로 관리자/MC와 동일한 접근 권한을 가질 수 없다. 디렉토리 서비스에 접근하는 각각의 시스템은 ID 및 그룹 멤버쉽에 관한 쿼리를 보낼 수 있다. 또한, 디렉토리 서비스는 외부 시스템 및/또는 데이터로뿐만 아니라 자체 메모리 공간 내에 특정 접근으로부터 다양한 ID, 그룹 및 그룹 멤버를 제한할 수 있는 접근 제어 모델과 결합되거나 그를 포함할 수 있다. 많은 디렉터리 서비스는 중심화된 성질에 관한 것일 수 있다. 디렉토리 서비스의 가용성은 기술적으로 더 나은 서비스를 위해 분산될 수 있지만, 유지 관리 및 다른 그룹 관련 작업을 위해 여전히 권한이 있는 관리자 모델에 의존할 수 있다.
도 232는 장치의 시스템의 두 개의 구성을 도시한다. 시스템MC(23202), 시스템1(23204), 시스템2(23206) 및 시스템3(23208)은 통신 네트워크(23200)를 통해 통신하여 (23210)에 도시된 바와 같이 논리적 통신 경로를 설정하게 할 수 있다. 본 개시의 목적을 위해, (23210)이 구현될 수 있는 방식은 개시된 그룹핑 방법론과 거의 또는 전혀 관련이 없을 수 있다.
도 233은 그룹 객체 및 멤버에 대한 관계를 도시한다. 다음 도면에서 그룹 객체의 도시는 너트 컨테이너의 보호와 함께 또는 그 없이 적용될 수 있지만 보안상의 이유로 너트의 사용이 바람직할 수 있다. 그 자신 MCID(23302), ID1, ID2 및 ID3에 대한 멤버 ID 정보를 홀딩하는 시스템MC(23300)를 사용하는 MC는 GID1 버전 0(VO)의 컨테이너 ID를 갖고 필요에 따라 추가 속성과 함께 그룹 멤버(ID1, ID2 및 ID3)의 목록을 홀딩하는 그룹 GID1을 참조하는 유형 그룹의 그룹 객체 GID1(23320)을 생성할 수 있다(23310). 그런 후에, 시스템MC(23300)은 그룹 객체 GID1(23320)의 사본을 각각의 그룹 멤버 시스템, 시스템1(23330), 시스템2(23340) 및 시스템3(23350)에 보낼 수 있다(23312). 시스템1(23330) 상의 사용자1(ID1)은 그룹 객체 GID1(23334)의 사본을 수락하고 ID1(23332) 상의 자신의 연락처 정보와 함께 메모리 및/또는 영구 위치에 그를 저장할 수 있다. 시스템2(23340) 상의 사용자2(ID2)는 그룹 객체 GID1(23344)의 사본을 받아들일 수 있고, ID2(23342) 상의 자신의 연락처 정보와 함께 메모리 및/또는 영구 위치에 그를 저장할 수 있다. 시스3(23350) 상의 사용자3(ID3)은 그룹 객체 GID1(23354)의 사본을 수락하고 ID3(23352)의 자신의 연락처 정보와 함께 메모리 및/또는 영구 위치에 그를 저장할 수 있다.
도 234는 그룹 멤버쉽 수락 및 그룹 카탈로그를 도시한다. 시스템1(23430) 상의 사용자1(ID1)은 그의 초대 상태를 특정하는 라인 상의 속성 중 하나를 '수락' 상태로 설정하고 그룹 객체의 내용(23434)의 버전 변경을 GID1 vO(23334)로부터 GID1 v1로 표시함으로써 그룹 객체의 멤버쉽 초대를 수락할 수 있고, 시스템1은 그룹 ID GID1을 참조하고 GID1 v1 및 NID7과 같은 그러나 그로 한정되지 않는 그룹에 의해 공유될 데이터 객체 ID를 열거하는 카탈로그(23436) CAT1 v1을 생성할 수 있고, 여기서 NID7은 시스템1 상의 로컬 데이터 객체일 수 있다. 시스템2(23440) 상의 사용자2(ID2)는 그의 초대 상태를 특정하는 라인 상의 속성 중 하나를 '수락' 상태로 설정하고 그룹 객체의 내용(23444)의 버전 변경을 GID1 vO(23344)로부터 GID1 v2로 표시함으로써 그룹 객체의 멤버쉽 초대를 수락할 수 있고, 시스템2는 그룹 ID GID1을 참조하고 GID1 v2 및 NID8과 같은 그러나 그로 한정되지 않는 그룹에 의해 공유될 데이터 객체 ID를 열거하는 카탈로그(23446) CAT2 v1을 생성할 수 있고, 여기서 NID8은 시스템2 상의 로컬 데이터 객체일 수 있다. 시스템3(23456)의 사용자3(ID3)은 그의 초대 상태를 특정하는 라인 상의 속성 중 하나를 '수락' 상태로 설정하고 그룹 객체의 내용(23454)의 버전 변경을 GID1 vO(23354)로부터 GID1 v3로 표시함으로써 그룹 객체의 멤버쉽 초대를 수락할 수 있고, 시스템3은 그룹 ID GID1을 참조하고 GID1 v3 및 NID9와 같은 그러나 그로 한정되지 않는 그룹에 의해 공유될 데이터 객체 ID를 열거하는 카탈로그(23456) CAT2 v3을 생성할 수 있고, 여기서 NID9는 시스템3 상의 로컬 데이터 객체일 수 있다. 각각의 그룹 너트(23532, 23542 및 23552)에 대한 버전 마커 변경은 그들을 vO, v1, v2, v3로 표현하는데 있어서 일련의 변경을 나타내지 않는다. GID1 vO는 공통 시작 상태일 수 있지만 페이로드를 약간 다르게 변경하는 각각의 시스템은 버전 변경을 (23534)에 대해 v0→v1으로부터, (23544)에 대해 v0→v2로부터 그리고 (23554)에 대해 v0→v3으로부터 이루어지게 할 수 있다.
도 235는 그룹이 어떻게 카탈로그를 폴링하는지를 도시한다. 이제 각각의 시스템은 그들 각각이, 그들이 속한 그룹과 관련하여 그들 각각이 유지 관리할 수 있는 카탈로그를 가질 수 있음을 인지할 수 있지만, 유지의 빈도 및/또는 실사는 전적으로 시스템의 구성 및/또는 현재 부하에 달려있을 수 있다. 그러므로, 간헐적으로 각각의 시스템은 카탈로그 업데이트에 대해 그룹의 다른 멤버를 '폴링(poll)'할 수 있고 및/또는 그들에게 자신의 카탈로그를 보낼 수 있다. 시스템1(23530)은 시스템2와 시스템3으로 카탈로그 CAT1 v1(23536)의 사본을 보냄으로써 시스템2(23540) 상의 그룹 ID2와 시스템3(23550) 상의 ID3의 다른 멤버를 '폴링'할 수 있다. 각각의 시스템은 방금 받은 카탈로그를 받고 저장할 수 있다. 시스템2(23540)는 시스템1과 시스템3으로 카탈로그 CAT2 v1(23546)의 사본을 보냄으로써 시스템1(23530) 상의 그룹 ID1과 시스템3(23550) 상의 ID3의 다른 멤버를 '폴링'할 수 있다. 각각의 시스템은 방금 받은 카탈로그를 받고 저장할 수 있다. 시스템3(23550)은 시스템1과 시스템2로 카탈로그 CAT3 v1(23556)의 사본을 보냄으로써 시스템1(23530) 상의 그룹 ID1과 시스템2(23540) 상의 ID2의 다른 멤버를 '폴링'할 수 있다. 각각의 시스템은 방금 받은 카탈로그를 받고 저장할 수 있다. 본 섹션에 설명된 '카탈로그 폴링' 프로세스는 그룹 멤버 사이에 다양한 다른 카탈로그 버전의 사본을 배포한 최종 결과가 달성되는 한에는, 기본적인 방식 및/또는 임의의 다른 방식으로 수행될 수 있다. 카탈로그 폴링이 카탈로그를 밀어내기 및/또는 동일한 단일 절차로 카탈로그를 요청/쿼리하기, 단지 카탈로그를 요청/쿼리하기 및/또는 쿼리에 응답하기 및/또는 그의 임의의 조합을 포함할 수 있기 때문에, 폴링의 종래의 의미는 ‘카탈로그 폴링’과 동일한 것으로 해석되지 않을 수 있다. 카탈로그 폴링은 요청자가 임의의 시스템으로부터 응답을 기대하도록 요구하거나 요구하지 않을 수 있다; 일부 구현예에서, 바람직한 방법은 요청자가 응답을 기대하지 않고 임의의 수신된 카탈로그를 기대하는 경향이 있을 수 있다. 추가적으로, 너트를 사용할 때, 카탈로그 폴링은 너트에서 임의의 민감한 데이터의 불투명성을 유지하도록 돕기 위해 두 개의 다른 랑데부 서버 RZ 사이에 카탈로그 너트의 임의의 전송과 함께 전송될 카탈로그 너트의 눈에 보이지 않는 부분의 평문 요약 메타데이터의 형성을 요구할 수 있다. 랑데부 서버는 캐싱, 푸싱 데이터, 유지 기능 및 스마트 라우팅을 포함한 추가 효율성 특징을 제공할 수 있다.
도 236은 시스템1 상의 카탈로그의 제 1 세트를 비교하기 위한 순서도를 도시한다. 시스템1(23600) 상의 프로세스는 둘 모두가 공통 그룹 ID GID1을 참조하는 시스템 2로부터 방금 수신된 카탈로그 CAT2 V1(23620)과 국부적으로 존재하는 카탈로그 CAT1 v1(23610) 사이에 다음의 카탈로그 비교(23630)를 수행할 수 있다. CAT2 v1(23620)이 CAT1 v1(23610), 즉, NID8 및 GID1 v2로부터 누락할 수 있는 (따라서 차이를 야기함) 페이로드에 두 개의 항목을 가질 수 있음을 확인한 후. 그런 다음, 프로세스는 첫 번째로 보낸 시스템2로부터 두 개의 항목을 요청할 수 있고, 그런 후에 자체 카탈로그 CAT1에서 누락한 두 개의 항목을 추가하고 '보류'로 각각의 항목과 함께 상태 속성을 표시하고(23634), 그런 후에 CAT1의 버전 마커를 v2로 수정한 후(23612), 프로세스는 방금 처리된 카탈로그 CAT2 v1을 폐기할 수 있다. '보류' 상태 하에 누락한 항목을 자체 카탈로그 CAT1에 다시 추가하는 단계(23634)는 프로세스가 동일한 누락 항목을 반복적으로 요청하는 것을 차단할 수 있다. 로컬 카탈로그에 나열된 객체 ID에 대한 '보류' 상태는 로컬 시스템이 해당 객체를 아직 수신하지 못했음을 나타낸다. 이는 어떻게 카탈로그 CAT1 v1 자체가 CAT2 v2와 동기화되어 CAT1 v1(23610)에서 CAT1 v2(23612)로 전이하는지를 보여 줄 수 있다.
도 237은 시스템 1 상의 카탈로그의 제 2 세트를 비교하기 위한 순서도를 도시한다. 시스템l(23700) 상의 프로세스는 둘 모두 공통 그룹 ID GID1을 참조하는, 시스템3에서 방금 수신된 카탈로그 CAT3 v1(23720)과 국부적으로 존재하는 최근에 업데이트된 카탈로그 CAT1 v2(23710) 사이에 다음의 카탈로그 비교(23730)를 수행할 수 있다. CAT3 v1(23720)이 페이로드에 CAT1 v2(23710), 즉 NID9 및 GID1 v3으로부터 누락한(따라서 차이를 야기함) 페이로드에 두 개의 항목을 가질 수 있음을 확인한 후. 그런 다음, 프로세스는 첫 번째로 보낸 시스템3으로부터 두 개의 항목을 요청할 수 있고, 그런 후에 자체 카탈로그 CAT1에서 누락한 두 개의 항목을 추가하고 '보류'로 각각의 항목과 함께 상태 속성을 표시하고(23734), 그런 후에 CAT1의 버전 마커를 v3로 수정한 후(23712), 프로세스는 방금 처리된 카탈로그 CAT3 v1을 폐기할 수 있다. '보류' 상태 하에 누락한 항목을 자체 카탈로그 CAT1에 다시 추가하는 단계(23734)는 프로세스가 동일한 누락 항목을 반복적으로 요청하는 것을 차단할 수 있다. 로컬 카탈로그에 나열된 객체 ID에 대한 '보류' 상태는 로컬 시스템이 해당 객체를 아직 수신하지 못했음을 나타낸다. 이는 어떻게 카탈로그 CAT1 v2 자체가 CAT3 v1과 동기화되어 CAT1 v2(23710)에서 CAT1 v3(23712)로 전이하는지를 보여 줄 수 있다.
도 236과 도 237에 기재된 프로세스는 각각이 도 235에 그룹 멤버 가운데 카탈로그 폴링 프로세스 동안 수신된 카탈로그로 각기 시스템2 및 시스템3에 의해 수행될 수 있다.
도 238은 카탈로그 폴링 및 동기화의 결과를 도시한다. 세 개의 시스템의 상태 및 각각의 카탈로그 및 그룹 객체는 도 238처럼 보일 수 있다. 요청된 보류 데이터 객체는 여전히 보류 중이고 세 개의 개별 동기화 프로세스로부터 요청자에게 다시 실제 데이터 객체로 다시 응답을 기다리는 중일 수 있음을 유념한다. 결국 각각의 시스템에 의해 각각의 요청된 데이터 객체는 국부적으로 수신되고 저장되어 동기화할 준비를 할 수 있다.
도 239는 시스템1 상의 그룹 객체 동기화 프로세스를 도시한다. 시스템1(23900)은 앞서 설명된 카탈로그 동기화 프로세스의 일부로서 시스템2에서 요청된 데이터 오브젝트 GID v2(23920)를 수신할 수 있고, 시스템1(23900)의 프로세스는 둘 모두 동일한 객체 ID GID1을 가질 수 있는 시스템2에서 방금 수신된 그룹 객체 GID1 v2(23920)와 국부적으로 존재하는 그룹 객체 GID1 v1(23910) 사이에 다음 그룹 객체 비교(23930)를 수행할 수 있다. 동일한 너트ID=GID1을 갖는 두 개의 데이터 객체의 버전 마커는 다를 수 있고, 이때 (23910)은 v1일 수 있고 (23920)은 v2일 수 있고, 따라서 평가(23930)는 단계(23932)로 진행하고, 동일한 너트ID 그러나 다른 버전 마커를 갖는 두 개의 그룹 객체 사이에 이력 병합이 수행될 수 있다. 종래의 데이터 객체는 너트처럼 그와 이동할 수 있는 국부화된 이력에 접근할 준비가 되어 있지 않을 수 있어서, 이러한 경우 그룹 객체 GID1이 너트라면, 그때 이력 프로세스의 병합은 각각의 그룹 객체 버전의 임베딩된 수정 기록(카르나크 수정본)을 사용하여 잘 이해될 수 있음을 이해하는 것은 더 용이할 수 있다. 이력을 함께 병합하여 조합되고 업데이트된 그룹 객체 GID1 v4(23912)를 생성한 후, GID1 v2에 대한 CAT1 v3에 엔트리가 삭제되고 GID1 V1에 대한 엔트리가 v4로 업데이트되어 CAT1 v4를 초래할 수 있다. 이는 어떻게 카탈로그 GID1 v1 자체가 GID1 v2와 동기화하여 (및/또는 합병하여) GID1 v1(23910)에서 GID1 v4(23912)로 전이하는지를 보여 줄 수 있다.
도 240은 모두 3개의 시스템을 가로질러 그룹 객체 동기화 프로세스를 도시한다. 이전 도 239는 시스템1(24000)에서 (24034), (24044) 및 (24064)에 대한 프로세스를 설명했다. (24054)와 함께 (24064) 시에 동일한 프로세스가 실행되어 다양한 GID1 버전 가운데 모든 차이점을 통합한 동기화된 GID1 v5 그룹 객체(24074)를 생성할 수 있다. 거의 동시에, 시스템2(24002) 및 시스템3(24004)은 각각 너트ID=GID1으로 그룹 객체의 다양한 버전에 대해 동일한 동기화를 수행하여, 각기 동일한 그룹 객체 GID1 v5(24074)에 도달할 수 있고; 그러므로 각각의 시스템은 동일한 버전 마커 v5를 갖는 그룹 객체 GID1을 홀딩하는 것을 초래한다. 유사한 방식으로, 모든 요청이 충족되면 데이터 객체 NID7, NID8 및 NID9가 각기 각각의 시스템 상에 동기화될 수 있다; 그러나, 본 경우에, 상응하는 시스템으로부터만 비롯되는 각각의 NIDx 데이터 객체의 배타성으로 인해, 동기화 프로세스는 단지 각각의 로컬 카탈로그에서 NIDx 상태를 업데이트하고 수신된 NIDx를 국부적으로 저장하는 것을 포함할 수 있다.
도 241은 로컬 카탈로그 상태가 객체 동기화 후에 업데이트되는 것을 도시한다. 각각의 요청된 그룹 객체 버전 및 데이터 객체가 동기화될 수 있음에 따라, 시스템1, 시스템2 및 시스템3은 로컬 카탈로그를 v3에서 v5로 전이할 수 있다. 각각의 시스템의 그룹 ID GID1에 대한 최종 카탈로그는 그들 각각이 다른 너트ID 및 다른 카탈로그 ID를 가질 수 있음에도 이제 동기화할 수 있다.
무작위 그룹을 형성하고, 소개하는 것만을 결정하고 그룹 멤버가 될 수 없는 MC에 의해 그룹 멤버를 초대하고, 각각의 그룹 멤버에 의해 그룹 멤버쉽 초대를 수락하고, 각각의 그룹 멤버의 시스템에 의해 로컬 그룹 카탈로그를 생성하고, 통신 네트워크를 통해 시스템을 가로질러 그룹 카탈로그를 폴링하고, 각각의 멤버 시스템에서 그룹 객체를 동기화하고, 각각의 멤버 시스템에서 공유된 데이터 객체를 동기화하고, 상태 전이로서 로컬 그룹 카탈로그를 업데이팅하는 단계를 포함하는 본 방법이 구성될 수 있고, 집합적으로 ‘그룹 작동’으로 언급될 수 있다. 그룹 작동의 그러한 시퀀스는 분산된 복제, 분할 복원, 분할 힐링, 분할 공차, 중앙 관리자가 없는 비공개 그룹, 다중 당사자 관계 및 데이터 공유의 형성, 단일 관계 및 데이터 공유의 형성, 하나 또는 여러 장치 가운데 공유, 익명 그룹 형성 및 그룹이 분산되고 탈중앙집중화된 식별자의 문맥에서 실제로 무엇인지를 재정의하는 것과 같은 그러나 그로 한정되지 않는 분산되고 탈중앙집중화된 환경에서 일부 기대되지 않은 혜택을 나타낼 수 있다. 또한, 설명된 그룹 작동의 전부는 너트 컨테이너를 사용하여 수행될 수 있어서 그룹에 걸쳐 일관적이고 편재적 보안층을 제공할 수 있다. 그룹에 대한 접근 방법은 익명 방식으로 그룹 키 분배를 요구할 수 있다. 키 분배 방법은 사용자 지정 데이터 흐름을 요구할 수 있다. 이러한 특징은 본 문서에서 나중에 개시될 수 있다. 전체 카탈로그가 아닌 카탈로그 델타만 전송하는 것, 랑데부 서버에 의한 카탈로그 및 평문 메타데이터의 캐싱과 같은 그러나 이로 한정되지 않는 이러한 기재된 프로세스의 다수의 특정 측면에서 효율성이 추출될 수 있다.
도 242는 도관을 사용하여 3개의 시스템을 가로질러 규정된 그룹을 도시한다. 루프백 도관은 복제, 동기화, 병합, 이질적인 시스템을 가로질러 그룹의 종내 일관된 상태를 향해 그룹의 이종의 상태의 순차적 전이를 용이하게 하는 목적을 갖는 논리 그룹 내에서 공유 객체의 쿼리 및 폴링을 포함하는 메커니즘의 집합체로서 간주될 수 있다. 도 242는 그룹 및 루프백 도관(24230)을 사용하여 대안적인 심볼릭 표현으로 이전 세 개의 시스템 예시를 재구성한다. 그룹 GID1은 멤버의 집합에서 그룹 지정에 의해 정의될 수 있지만 동일한 그룹(24240)을 참조하는 그룹 카탈로그의 콜렉션에 의해 표현가능한 논리적 루프백 도관에 의해 가능해질 수 있다. 그룹 ID에 관한 지식을 갖는 시스템은 그것이 그룹의 부분일 수 있음을 결정하기 위한 시스템에 관한 최소한의 충분 조건일 수 있다. 이는 세 개의 시스템을 가로질러 그룹을 동기화하는 것보다 더 앞서 단계를 검토할 때 명백할 수 있다. 단지 GID1의 존재를 앎으로써, 시스템은 그룹 GID1을 참조하는 카탈로그를 생성하고 따라서 그것이 통신할 수 있는 임의의 그리고 모든 시스템을 가로질러 해당 그룹 ID에 대해 카탈로그 폴링을 수행할 수 있다. 그룹에 원치 않는 침입자를 방지하기 위한 제어는 초대된 그룹 멤버를 나열하는 복제된 그룹 객체를 사용하는 것일 수 있다. 침입자를 더 저지하는 또 다른 제어는 각각의 멤버에 의해 접근 키를 요구하는 너트 컨테이너에 그룹 개체를 캡슐화하는 것이다. 너트의 페이로드로 임베딩된 카탈로그는 원치 않는 피커를 더 단념시킬 수 있다. 그룹의 동기화에 사용되는 모든 데이터 객체에 대해 보안 너트 컨테이너를 체계적으로 활용함으로써, 보안 환경은 공간 및 시간에 걸쳐 위로 데이터 수준으로부터 새로운 특성을 나타낼 수 있다.
도 242에 규정된 그룹의 궁금한 특성은 분할 복원에 관한 것일 수 있다. 그룹 GID1은 초대 대상자 수락 거부, 또는 완전한 수락, 또는 그 사이의 임의의 횟수에 관계 없이 그룹으로 작동할 수 있다. 그룹 GID1의 임의의 비-교차 하위집합은 서로 독립적으로 작동하고 자체 하위집합을 동기화할 수 있다. 임의의 두 개의 하위집합이 병합하거나 교차할 때, 결합된 하위집합은 유닛으로서 작동하고 자체 동기화할 수 있다. 그룹의 모든 요소가 최종적으로 서로 통신할 때, 완전한 그룹이 결국 일관된 상태에 도달할 수 있다. 이는 분할에 대한 그룹의 복원을 보여 줄 수 있다. 시스템 또는 시스템의 하위 집합(그룹의 멤버)이 하드웨어 실패, 회선 실패, 시스템 중지, 다른 무선 네트워크에 걸친 시스템 이동, 무선 전송 실패 및 어플리케이션 재시작과 같은 그러나 그로 한정되지 않는 시간의 기간 동안 통신 네트워크로부터 연결해제될 때, 분할이 발생할 수 있다. 이러한 분할로부터 복구하는 능력은 파티션 힐링으로 언급될 수 있다.
도 243은 단일의 그룹을 도시한다. 한 명의 멤버만 갖는 그룹은 다중 멤버 그룹과 유사한 방식으로 작동할 수 있다. 시스템별 로컬 카탈로그를 사용하는 루프백 도관("카탈로그 통과"라고 함)은 단일 그룹이 소유하거나 접근할 수 있는 다중 시스템을 관리 및/또는 동기화하기 위해 단일 그룹에 도움이 될 수 있다. 따라서, 본 개시에 정의된 바와 같은 그룹은 복수의 멤버뿐만 아니라 멤버당 다중 시스템의 관리를 용이하게 할 수 있다. 단일 멤버 ID1(24308)을 갖는 그룹 GID21은 GID21(24304)에 대한 루프백 도관을 정의했을 수 있고 그 자체와 일부 공유 데이터 객체를 가질 수 있다(24306). ID1 연락처 및/또는 접근 정보는 시스템l(24310) 상에 발견될 수 있다. 본 예시에 모든 데이터 객체는 보안 환경에서 보호되지 않는 파일일 수 있다. 보안 및 무결성이 중요한 경우, 모든 데이터 객체는 너트 컨테이너로 교체될 수 있고, 이 경우 너트ID=ID1을 갖는 너트는 본 예시에 사용된 모든 다른 너트에 대해 적어도 하나의 접근 키를 홀딩할 수 있다. 그룹 데이터 객체 GID21(24314)는 단일 자기 동일 멤버 ID1을 홀딩할 수 있고 그룹 참조 및 버전 마커는 GID21 V1이 될 수 있다. 그룹 GID21을 참조하고 카탈로그 ID/버전 마커 CAT21 v1을 갖는 카탈로그 객체(24316)는 GID21에서 자신과 공유하는 데이터 객체의 ID의 목록, 즉 그룹 객체 GID21 v1, 데이터 객체 NID22 및 NID23을 홀딩할 수 있다.
도 244는 루프백 도관이 단일의 그룹에 대해 어떻게 작동하는지를 도시한다. S1(24450)의 시스템1(24410)은 그룹 GID21에 대한 카탈로그 CAT21(24416)에 대해 그 자체 상에 카탈로그 폴링을 수행할 수 있다. 시스템은 그것이 동일한 시스템임을 인식할 수 있으므로, 그 자체는 상태 S2에 표시된 바와 같이 카탈로그 CAT21(24416)의 사본을 보낼 수도 있고 보내지 않을 수도 있다. 시스템1이 카탈로그 CAT21(24416)의 사본을 생성해서 그 자신에게 보내면, 그것은S2(24460)와 같이 보일 수 있다. 카탈로그 CAT21(24416)의 두 개의 사본을 병합하고 동기화하는 것은 상태 S3(24470)를 생성할 수 있다. 이러한 경우에, CAT21 사본에서 차이점이 발견되지 않았으므로, 버전 마커는 v1에서 변경되지 않을 수 있다. 시스템1 처리는 그러한 자기 동일 루프백 사례에 대해 더 효율적이고 특정하게 구성될 수 있지만, 주요한 강조점은 3개의 멤버의 그룹을 동기화하도록 도시된 동일한 역학이 여전히 적용할 수 있고 가장 조잡한 방법을 활용하더라도 최종적으로 일관된 그룹 상태를 생성하는 데 효과적일 수 있다는 것일 수 있다. 이러한 단일 그룹에 도시된 거동은 그룹의 루프백 도관(24430)의 기계적 본질을 정의할 수 있다.
도 245는 루프백 도관이 두 개의 시스템 상의 단일의 그룹에 대해 어떻게 작동하는지를 도시한다. ID1(24520)에 의해 표시되는 사용자는 두 개의 시스템, 시스1(24500) 및 시스템15(24510)를 가질 수 있다. 본 예시는 어떻게 시스템1 상에 수정된 공유 데이터 객체 NID22가 단일 그룹에 대한 루프백 도관을 사용하여 시스템15로 전파되고, 그로써 두 개의 시스템 사이에 최종적으로 일관된 상태로 그룹을 동기화하는지를 보여준다. 도 244로부터 시스템1의 상태 S3(24470)에서 시작하여, 사용자는 시스템1(24500) 상에 데이터 객체 NID22(24542)의 내용을 수정하고 저장할 수 있고 따라서 버전을 v2에서 v3으로 변경하고 카탈로그 GID21(24532)의 NID22 엔트리에 대해 “NID22 v2”에서 “NID22 v3”으로 적절한 업데이트를 할 수 있고, 이는 너트ID=CAT21로 카탈로그 CAT21의 내용이 변경되게 하므로 CAT21의 버전 마커를 v1에서 v2로 변경한다. 시스템15의 시작 상태는 또한 도 244로부터 시스템1의 상태 S3(24470)과 닮았다고 가정한다. 주기적으로, 상태 S1(24550)에서 시스템15(24510)은 카탈로그 CAT21 v1일 수 있는 그것이 가지고 있는 것과는 다른 임의의 카탈로그 버전에 대해 임의의 시스템 서비스 그룹 GID21으로부터 요청함으로써 카탈로그 폴링을 수행할 수 있다. 시스템1(24500)은 요청을 받을 수 있고 상태 S1(24550)과 같이 너트ID=CAT21(24532)로 카탈로그 CAT21 v2의 사본을 시스템15로 전송함으로써 응답할 수 있다. 시스템15는 너트ID=CAT22(24530)를 갖는 CAT21 v1과 너트ID=CAT21(24532)를 갖는 CAT21 v2 사이의 카탈로그 비교를 수행하여 NID22 v3을 느락할 수 있음을 확인하고 따라서 "NID22 v3, 보류 중"에 대한 엔트리와 함께 너트ID=CAT22(24530)를 갖는 CAT21에 카탈로그 엔트리를 첨부하고, 이는 CAT21 v1(24534)의 내용을 변경하게 하여 v1에서 v3으로 CAT21에 대한 새로운 버전 마커를 생성한다(24534). 시스템15(24550)이 누락 NID22 v3을 결정할 수 있을 때, 시스템1(24500)에서 NID22 v3(24532)의 사본을 요청할 수 있고 그런 후에 최종적으로 상태 S2(24560)로 그것을 가져올 수 있다. 그런 후에, 시스템15가 NID22 v2(24540)를 NID22 v3(24542)와 병합 및 동기화하여 NID22 v3(24542)를 생성하고 NID22 v2를 폐기할 수 있고, 이는 NID22에 대한 수정만이 사용자에 의해 시스템1 상에 이루어졌을 수 있기 때문에 적절할 수 있다. 시스템 15 상에 NID22를 병합 및 저장한 후, 시스템15는 "NID22 v3"에 대해 너트ID=CAT22 엔트리 "NID22 v3, 보류 중"으로 카탈로그 CAT21을 업데이트하고 "NID22 v2"에 대한 엔트리를 제거하고 시스템 상에 발생된 이벤트를 반영할 수 있다. 카탈로그 엔트리 수정(24534)은 너트ID=CAT22로 CAT21의 내용을 변경하므로 상태 S3(24570)에서 다른 버전 마커 v224536를 요구할 수 있다. 효과적으로, 너트ID=CAT22(24536)로 자체 카탈로그에 대해 이뤄진 변경 시스템15가 너트ID=CAT21(24532)로 시스템1의 카탈로그처럼 보이도록 카탈로그 엔트리와 동기화되었을 수 있기 때문에, 이는 너트ID=CAT21(24532)를 갖는 카탈로그 CAT21과 동일한 카탈로그 ID CAT21 v2일 수 있다. 버전 마커는 v1, v2 및 v3과 같이 순차적으로 보일 수 있지만 순차적 버전 변경을 나타내지는 않지만 고유 컨텐츠를 나타내는 고유 마커로 역할함을 유념한다; 버전 마커의 구현은 내용의 해시일 수 있지만 해시에 국한되지는 않을 수 있다. 분산 비동기 환경에서 시퀀싱은 동기화를 수행할 때 도전을 야기하고, 그러므로 이러한 예시에서 사용된 내용 병합 및 동기화 방법 중 다수는 카르나크 검토를 갖는 너트를 사용하지 않고 용이하게 가능해질 수 없다. 상태 S3(24570)에서, 단일 그룹 GID21은 두 개의 시스템, 시스템1 및 시스템 15 사이에 일관된 상태에 있을 수 있고, 사용자 ID1은 어디에 모든 공유 데이터 객체가 그룹 객체 GID21, 데이터 객체 NID22 및 각각의 시스템 상의 각각의 로컬 카탈로그 객체를 포함하여 동일한 상태로 있을 수 있는지를 제어할 수 있고; 그러므로 본 예시는 어떻게 다중 시스템에 걸쳐 단일 그룹에 대한 루프백 도관이 그룹에 대한 최종 일관성을 달성하는지를 보여 줄 수 있다.
도 246은 두 개의 시스템을 가로지른 단일의 그룹의 개략도를 도시한다. 그룹이 그룹 ID에 의해 정의될 수 있고 각각의 구성원이 카탈로그 ID라는 그룹 ID에 의해 형성된 하위 그룹을 나타내는 조망이 형성될 수 있고, 그러므로 그룹은 각각의 멤버가 장치, 프로세스, 시스템, 가상 기계, 네트워크 등과 같은 그러나 그로 한정되지 않는 고유한 작동 유닛을 나타내는 카탈로그의 컬렉션일 수 있는 멤버의 컬렉션일 수 있다.
도 247은 두 개의 다른 그룹을 호스팅하는 시스템의 논리적 상태를 도시한다. 도 242 그룹 GID1, 세 명의 멤버의 그룹, 및 도246 그룹 GID21, 단일 그룹으로부터 예시에 그룹은 시스템1(24700)의 관점으로부터 도 247에 도시된 상태로서 국부적으로 표현될 수 있다. 도 247의 요소는 두 개의 표현 사이에 상응하는 부분을 도시하도록 라벨링될 수 있다. 본 예시에서, 시스템1(24700)은 두 개의 그룹 및 두 개의 그룹 객체(24710 및 24720), 두 개의 루프백 도관 및 두 개의 카탈로그(24712 및 24722) 및 사용자 ID1(24702)에 대해 공유된 데이터 객체(24750, 24752, 24754, 24756, 및 24758)를 포함한다. 그러한 구성을 사용하여, 시스템은 다른 그룹 및 도관을 포함하는 임의의 유형의 식별자를 포함하는 임의의 개수의 그룹 및 루프백 도관을 호스팅할 수 있다. 그러나 혼합된 ID 유형의 무작위 그룹핑은 기대하지 않은 및/또는 소망하지 않은 거동으로 유도할 수 있음에 따라 밀접한 분석을 요구할 수 있다. 사용자와 시스템에 가장 유용할 듯이 보이는 그러한 무작위 구성을 제한하는 것은 너츠 시스템 GUI 및/또는 처리 시스템의 범위일 수 있다.
도 248은 그룹 및 동기화에 관해서 너츠 에코시스템의 ICBM 구성요소를 카테고리화한다. 식별(24800)은 객체, 데이터, 시스템, 사용자, 토큰, 네트워크, IoT 장치, 장치, 스트림 등과 같은 그러나 그로 한정되지 않는 디지털로 표현가능할 수 있는 임의의 것을 나타내는 임의의 ID 및/또는 너트ID일 수 있다. 도관(24810)은 하나의 시스템 내에서 및/또는 다중 시스템을 가로질러 ID의 그룹 및 상응하는 객체의 동기화를 방법을 통해 용이하게 하는 임의의 카탈로깅 데이터 객체일 수 있고, 도관은 루프백 도관, 카탈로그, 카탈로그 너트, 카탈로그 테이블, 및 카탈로그 객체를 포함할 수 있다. 본드(24820)는 ID 및/또는 상응하는 접근 자격증명의 임의의 그룹핑일 수 있고, 이는 무작위적이지만 소망하는 논리적 그룹핑을 형성하도록 함께 작동할 수 있고, 그룹핑의 멤버가 아닐 수 있는 다른 ID로부터 논리 그룹에 대한 접근을 제한할 수 있고, 본드 및/또는 상응하는 접근 자격증명은 그룹 객체, 그룹 너트, 접근 키, 패스프레이즈, 그룹 키, RBK, 및 그룹 테이블을 포함할 수 있다. 맵(24830)은 디렉토리, 목록, FHOG너트, 아이노드, 네트워크 룩업 테이블 및 객체의 인덱스를 포함하는 논리적으로 함께 그룹핑된 ID의 임의의 컬렉션일 수 있다. 객체, 도관, 본드 및 맵(ICBM)은 함께 ID의 이종 그룹을 가로질러 그리고 유니버설 네임스페이스에서 단일 시스템 내지 다중 시스템 및/또는 네트워크를 가로질러 분산되고 탈중앙집중화된 방식으로 분산되고 탈중앙집중화된 환경에서 데이터의 조직화 및/또는 관리를 촉진하는 개념 및/또는 실행가능한 데이터 구조 및 방법을 형성할 수 있다. 모든 ICBM 구성 요소가 너트 및/또는 너츠 방법을 사용할 수 있을 때, ICBM은 임베딩된 보안, 긴급 보안, 상속된 보안, 휴대가능한 보안, 맞춤형 보안, 통합된 보안, 이력 룩백, 시간 호환성, 미래 이벤트 스케줄링, 공간 비관련성, 시스템 중복 및 네트워크 분할 복원으로 한정되지 않는 거동 및/또는 특성을 더 촉진할 수 있다.
도 249는 너트 및 그 부분의 일부에 관한 표현을 도시한다. 라벨링된 요소(24900)는 다른 너트 도해를 나타낼 수 있다. 본 도면은 너트의 적어도 세 개의 부분을 가리킨다: 메타데이터(24904), 범용 키홀(24902) 및 페이로드(24906). 본 개시의 이전 섹션으로부터, 이러한 세 개의 너트 부분이 단일 잠금 노드 너트 또는 비순환 방향 그래프 레이아웃에 상호연결된 다수의 잠금 노드를 갖는 복잡한 너트 구조로서 표현될 수 있음이 명백할 수 있다. 세 개의 섹션으로 된 직사각형 박스는 다음의 몇몇 섹션 및 도면을 이용할 수 있고, 상단 박스는 너트의 메타데이터를 나타내고, 중간 박스는 너트의 범용 키홀을 나타내고, 하단 박스는 너트의 페이로드를 나타낼 수 있다.
도 250은 그룹, FHOG, 카탈로그, 및 카탈로그 오버라이드 너트의 예시를 도시한다. 그룹 객체는 직사각형의 3개의 섹션으로 된 박스를 사용하여 그룹 너트(25000)로 표현될 수 있고, 상단 박스(25002)는 그룹 ID 너트ID=GID 및 너트 유형=그룹을 포함하는 메타데이터를 나타낼 수 있고, 중간 박스(25004)는 키홀 ID, 키홀 사용자, 키홀에 대해 인코딩된 접근을 포함하는 범용 키홀을 나타낼 수 있고; 하단 박스(25006)는 멤버 ID, 멤버 특정 그룹 접근 키, 멤버에 대해 인코딩된 접근, 멤버의 그룹 관리자 상태를 포함하는 그룹 멤버의 목록을 나타낼 수 있고; 다른 너트 부분(25008)이 있을 수 있고, 이는 명시적으로 언급되거나 언급되지 않을 수 있지만 너트 유형이 비타 또는 이벤트 로그, 테일 또는 이력, 페이트 또는 가능한 미래 이벤트, 및/또는 카르나크 검토(이력 및 페이트)를 포함하는 것으로 간주되는 것에 따라 암시될 수 있다. FHOG 객체는 직사각형의 3개의 섹션으로된 박스를 사용하여 FHOG 너트(25010)로 표현될 수 있고, 상단 박스(25012)는 FHOG ID 너트ID=FID 및 너트 유형=FHOG를 포함하는 메타데이터를 나타낼 수 있고, 중간 박스(25014)는 키홀 ID, 키홀 사용자, 및 키홀에 대해 인코딩된 접근을 포함하는 범용 키홀을 나타낼 수 있고; 하단 박스(25016)는 너트ID, 너트ID별 버전 마커, 엔트리의 상태, 너트ID의 너트 유형, 너트ID에 의해 표현된 객체의 크기를 포함하는 매핑의 목록을 나타낼 수 있고; 다른 너트 부분(25018)이 있을 수 있고, 이는 명시적으로 언급되거나 언급되지 않을 수 있지만 너트 유형이 비타 또는 이벤트 로그, 테일 또는 이력, 페이트 또는 가능한 미래 이벤트, 및/또는 카르나크 검토(이력 및 페이트)를 포함하는 것으로 간주되는 것에 따라 암시될 수 있다. 카탈로그 객체는 직사각형의 3개의 섹션으로된 박스를 사용하여 카탈로그 너트(25020)로 표현될 수 있고, 상단 박스(25022)는 카탈로그 ID CAT1, 너트ID=CID, 멤버 GA 및 너트 유형=카탈로그를 포함하는 메타데이터를 나타낼 수 있고, 중간 박스(25024)는 키홀 ID, 키홀 사용자, 키홀에 대해 인코딩된 접근을 포함하는 범용 키홀을 나타낼 수 있고; 하단 박스(25026)는 너트 ID, 너트ID별 버전 마커, 엔트리의 상태, 너트ID의 너트 유형, 너트ID에 의해 표현된 객체의 크기를 포함하는 카탈로그의 목록을 나타낼 수 있고; 다른 너트 부분(도해에 미도시)이 있을 수 있고, 이는 명시적으로 언급되거나 언급되지 않을 수 있지만 너트 유형이 비타 또는 이벤트 로그, 테일 또는 이력, 페이트 또는 가능한 미래 이벤트, 및/또는 카르나크 검토(이력 및 페이트)를 포함하는 것으로 간주되는 것에 따라 암시될 수 있다. 카탈로그 오버라이드 객체는 직사각형의 3개의 섹션으로된 박스를 사용하여 카탈로그 오버라이드 너트(25030)로 표현될 수 있고, 상단 박스(25032)는 카탈로그 오버라이드 너트ID=COV, 카탈로그 ID CAT1, 그룹 ID GID 및 너트 유형=CATOVR를 포함하는 메타데이터를 나타낼 수 있고, 중간 박스(25034)는 키홀 ID, 키홀 사용자, 키홀에 대해 인코딩된 접근을 포함하는 범용 키홀을 나타낼 수 있고; 하단 박스(25036)는 시스템의 물리적 제한 및/또는 시스템의 제어 사용자(들)의 바람직한 제한에 의해 정의된 바와 같은 로컬 시스템에 적용가능할 수 있는 제한 및/또는 제약을 나타낼 수 있고; 다른 너트 부분(도해에 미도시)이 있을 수 있고, 이는 명시적으로 언급되거나 언급되지 않을 수 있지만 너트 유형이 비타 또는 이벤트 로그, 테일 또는 이력, 페이트 또는 가능한 미래 이벤트, 및/또는 카르나크 검토(이력 및 페이트)를 포함하는 것으로 간주되는 것에 따라 암시될 수 있다.
도 251은 시스템 1 상의 카탈로그 비교 동안 카탈로그 오버라이드를 처리하는 것에 관한 순서도를 도시한다. 본 순서도는 (25030)과 같은 카탈로그 오버라이드 프로세스가 카탈로그 비교 프로세스를 실행하는 임의의 시스템에 의해 어떻게 처리되는지를 도시하도록 시스템 1에 대해 도 237의 순서도를 수정한다. 순서도 단계(23730, 23732 및 23734)는 단계(25120, 25122, 25124, 25126, 25128 및 25130)에 의해 대체될 수 있다. 대체된 단계에서, 동일한 그룹 ID GID1 및 카탈로그 ID CAT1을 참조하지만 다른 카탈로그 버전 v1 및 v2를 갖는 두 개의 카탈로그의 비교는 CAT1 v1 (25122)와 비교되는 바와 같이 CAT1 v2으로부터 각각의 누락한 항목에 걸쳐 반복된다. 각각의 누락한 엔트리에 대해, 단계(25124)는 카탈로그 오버라이드 너트가 시스템1 상에 존재하는지 여부를 확인한다. 소정 그룹, 카탈로그, 시스템 또는 그의 임의의 다른 조합에 적용할 수 있는 하나 이상의 카탈로그 오버라이드 너트가 있을 수 있다. 조합된 오버라이드 제한 및 제약(25126)은 카탈로그 CAT1 v1으로부터 제공될 수 있는 다양한 속성을 고려할 때, 누락한 항목이 본 시스템 시스템1으로부터 제한될 수 있는지 또는 그렇지 않을 수 있는지를 판단하기 위해, 구할 수 있는 누락한 엔트리에 접근할 수 있다. 카탈로그 오버라이드가 시스템1로부터의 누락한 엔트리를 제한한다면, 다음 단계가 다음 누락 엔트리(25122)에 대해 반복한다. 누락한 엔트리 항목이 조합된 카탈로그 오버라이드에 의해 제한되지 않는다면, 시스템1은 누락한 엔트리(25128)에 의해 참조되는 객체 또는 너트에 대해, CAT1 v1이 비롯되는 시스템3을 요청할 수 있다. 다음 단계(25130)는 누락한 엔트리 너트ID, 버전 마커 및 적어도 '보류'의 상태를 첨부함으로써 로컬 카탈로그 너트ID=CAT1 카탈로그 ID CAT1 v2 그룹 ID GID1을 업데이트할 수 있고, 그런 후에 (23712)에 최종으로 도시된 바와 같이 카탈로그 CAT1 v3에 대해 너트ID=CAT1에 대한 새로운 버전 마커를 생성할 수 있다.
카탈로그 오버라이드는 그룹, 장치, 사용자, OS, 파일 시스템, 네트워크, IoT 장치, ID 등과 같은 그러나 그로 한정되지 않는 임의의 레벨에 존재하고 강제될 수 있다. 임의의 카탈로그 ID 및/또는 그룹 조합은 카탈로그 오버라이드에 의해 참조될 수 있다. 소정 카탈로그 엔트리 평가에 대해 적용가능할 수 있는 모든 카탈로그 오버라이드가 조합될 수 있고, 복수의 적용가능한 카탈로그 오버라이드의 조합된 제약 및/또는 제한은 로컬 시스템 환경으로의 가능한 포함에 대해 평가될 수 있는 카탈로그 엔트리에 적용될 수 있다. 카탈로그 오버라이드에 대한 실제적 필요는: 낮은 대역폭, 작은 용량, 고가의 대역폭과 같은 그러나 이에 국한되지 않는 제한된 특성을 갖는 모바일 장치; 제한된 객체에 대해 사용자 정의된 시스템, 여기서 제한은 크기, 유형, 시스템 용량, 규정 제한, 시스템 효율성, 중복 고려사항 및 소유권을 포함할 수 있고; 제한된 객체에 대해 사용자 정의된 그룹; 물리적 및/또는 작위적 제한이 있는 저장 시스템; 제한이 있는 계정; 및 적절하고 및/또는 소망되는 바와 같은 다른 것과 같은 그러나 그로 한정되지 않는 제한된 장치 및/또는 시스템에 대해 존재할 수 있다.
도 252 내지 도 258 모두는 공통 예시에 관련되고, 여기서 그룹은 너트를 사용하여 동기화된다. 도 252는 예시에 의해 사용될 일부 너트를 레이아웃한다. 정의된 (25202)와 같은 그룹 너트 G1 v5(25200)는 그룹 너트 G1의 범용 키홀 섹션에 키홀을 가질 수 있고, 여기서 키홀 ID ‘KA’는 RAT 접근(루트 접근 계층, 일명 소유자)을 가질 수 있는 사용자 A에 대해 구성될 수 있다. 키홀 ‘KGA’는 사용자 A가 그룹을 대신하여 사용할 RBK 키 세트를 제공할 수 있는 ‘GA’의 사용자 A의 그룹 멤버 ID에 대해 구성될 수 있으며, 멤버 ‘GA’는 또한 그룹 G1의 관리자로 설정될 수도 있다. 유사한 방식으로, 사용자 A(또는 사용자 A가 아닐 수 있는 MC)가 그룹 너트를 생성했을 때, 그들은 그룹 멤버쉽 ID 및 각각의 속성을 구성하여 멤버에 대해 그리고 MC의 익명성에 대해 익명화의 수준을 제공할 수 있고; 그룹의 멤버가 그룹 너트 G1을 포함하는 그룹 G1 너트에 대한 미래 접근을 위해 연락처에 특정 RBK 세트를 저장할 수 있도록, 그룹 멤버 RBK 세트가 제공될 수 있다. 그룹 멤버 RBK의 적절한 홀딩은 나중 섹션에서 더 논의될 수 있지만 본 예시의 목적을 위해, 그룹 멤버 RBK의 비밀은 MC와의 멤버의 관계에 의해 알려진 RBK 키 세트로 비대칭 키 세트의 비공개 부분을 암호화함으로써 비공개로 유지될 수 있다. 그룹 너트의 수락 후에, 멤버는 그의 공개 그룹 멤버 키 부분을 사용하여 그의 비공개 그룹 멤버 키 부분을 재암호화할 수 있고, 그로써 그룹 멤버와 MC의 소개 관계와 관련되는 임의의 잔존 잔해물을 제거할 수 있다. 단지 MC에 의해 잠재적 그룹 멤버에게 대역외 패스프레이즈를 전달함으로써 소개가 발생할 수 있고, 그룹 멤버의 RBK 세트는 멤버의 키홀과 연관된 키 맵에 의해 노출되는 동일한 패스프레이즈 또는 또 다른 키에 의해 암호화될 수 있음을 유념한다. 그룹 너트 관리자 GA는 그룹 너트 멤버쉽 수락 상태를 정기적으로 검토하고, 각각의 멤버가 그룹 초대 및 그룹 멤버 RBK 세트를 사용하여 재암호화된 그들의 RBK 세트를 수락했을 때, 'KA', 'KB 및 'KC' 와 같은 초대 키홀을 삭제할 수 있다. 그러한 정리를 수행함으로써, 결국 그룹 너트는 그룹 멤버를 초대하는 데 사용되었던 원래 사용자 ID의 적은 잔재를 가질 수 있고 각각의 멤버에 대해 그룹 지향 ID를 갖은 채 남아 있을 수 있고, 따라서 그룹 수준에서 익명화의 수준을 달성할 수 있다. 모든 이러한 이력 델타 및/또는 이벤트의 잔재는 그룹 너트의 비타 및/또는 카르나크 부분에 기록될 수 있지만 MC 및/또는 그룹 관리자는 너트를 구성하는데 이용가능한 특징을 사용함으로써 그룹의 나머지로부터 저들 부분의 불투명성을 제어하는 적절한 권한을 가질 수 있다. 본 예시의 목적을 위해, 그룹 너트 G1은 단지 ID 및 버전 “G1 v5”를 사용하여 컴팩트하게 표현될 수 있다(25204).
정의된 (25212)와 같은 카탈로그 너트 A:C1 v5(25210)는 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 구성원에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GA만이 RAT 접근을 가질 수 있고 다른 두 명의 멤버 GB 및 GC만이 카탈로그 너트 A:C1 v5에 대한 읽기 접근을 가질 수 있다. 너트(25212)의 메타데이터 섹션은 적어도 너트ID=A:C1, 유형 카탈로그, 카탈로그 ID=C1, 그룹 ID G1, 멤버 GA 및 버전 마커 v5를 설정한다. 페이로드 섹션은 버전 v5, 유형=그룹 및 너트 G1이 국부적으로 저장될 수 있음을 나타내는 '로컬'의 상태를 포함하는 너트ID=G1에 대한 오직 하나의 카탈로그 엔트리를 홀딩한다. 본 예시의 목적을 위해, 카탈로그 너트 A:C1 v5는 단지 ID 및 버전 “A:C1 v5”를 사용함으로써 컴팩트하게 (25214)로 표현될 수 있고 단순히 “G1 v5”로 카탈로그 엔트리만을 나열할 수 있다.
정의된 (25222)와 같은 카탈로그 너트 B:C1 v5(25220)은 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 멤버에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GB만이 RAT 접근을 가질 수 있고 다른 두 명의 멤버 GA 및 GC만이 카탈로그 너트 B:C1 v5에 대한 읽기 접근을 가질 수 있다. 너트(25222)의 메타데이터 섹션은 적어도 너트ID=B:C1, 유형 카탈로그, 카탈로그 ID=C1, 그룹 ID G1, 멤버 GB 및 버전 마커 v5를 설정한다. 페이로드 섹션은 버전 v5, 유형=그룹 및 너트 G1이 국부적으로 저장될 수 있음을 나타내는 '로컬'의 상태를 포함하는 너트ID=G1에 대한 오직 하나의 카탈로그 엔트리를 홀딩한다. 본 예시의 목적을 위해, 카탈로그 너트 B:C1 v5는 단지 ID 및 버전 “B:C1 v5”를 사용함으로써 컴팩트하게 표현될 수 있고(25224), 단순히 “G1 v5”로 카탈로그 엔트리만을 나열할 수 있다.
정의된 (25232)와 같은 카탈로그 너트 C:C1 v5(25230)은 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 멤버에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GC만이 RAT 접근을 가질 수 있고 다른 두 명의 멤버 GA 및 GB만이 카탈로그 너트 C:C1 v5에 대한 읽기 접근을 가질 수 있다. 너트(25232)의 메타데이터 섹션은 적어도 너트ID C:C1, 유형 카탈로그, 카탈로그 ID=C1, 그룹 ID G1, 멤버 GC 및 버전 마커 v5를 설정한다. 페이로드 섹션은 버전 v5, 유형=그룹 및 너트 G1이 국부적으로 저장될 수 있음을 나타내는 '로컬'의 상태를 포함하는 너트ID=G1에 대한 오직 하나의 카탈로그 엔트리를 홀딩한다. 본 예시의 목적을 위해, 카탈로그 너트 C:C1 v5는 단지 ID 및 버전 “C:C1 v5”를 사용함으로써 컴팩트하게 (25234)로 표현될 수 있고 단순히 “G1 v5”로 카탈로그 엔트리만을 나열할 수 있다.
도 253은 예시에 의해 사용될 일부 너트를 레이아웃한다. 정의된 (25302)와 같은 카탈로그 너트 A: C1 v7(25300)은 도 252로부터 카탈로그 너트 A:C1 v5(25212)의 미래 수정된 버전일 수 있다. 이제 페이로드 섹션은 "G1 v5” 외에 여러 추가 국부적으로 저장된 엔트리, 즉 FHOG F1 v1, 텍스트 너트 N4 v1 및 데이터 너트 N6 v1을 홀딩 수 있다. 본 예시의 목적을 위해, 카탈로그 너트 A:C1 v7은 단지 ID 및 버전 “A:C1 v7”을 사용함으로써 컴팩트하게 표현될 수 있고(25304), 단순히 G1 v5”, “F1 v1”,”N4 v1” 및 “N6 v1”로 카탈로그 엔트리만을 나열할 수 있다.
정의된 (25312)와 같은 FHOG 너트 F1(25310)은 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 멤버에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GA만이 RAT 접근을 가질 수 있고 다른 두 명의 멤버 GA 및 GB만이 FHOG 너트 F1 v5에 대한 읽기 및 쓰기 접근을 가질 수 있다. FHOG 너트 페이로드는 워드 문서 너트 N1 v1, 채팅 너트 N3 v1, ntO1 너트 N5 v5(ntO1은 사용자 지정 데이터 유형을 나타낼 수 있음), FHOG 너트 F8 v8 및 그룹 너트 G7 v3를 포함하는 너트ID의 맵을 나열할 수 있다. 본 예시의 목적을 위해, FHOG 너트 F1 v1은 단지 ID 및 버전 “F1 C1 v7”을 사용함으로써 및/또는 단순히 “N1 v1”, “N3 v1”,”N5 v5”, “F8 v8” 및 “G7 v3”으로서 맵 엔트리의 나열로 컴팩트하게 표현될 수 있다(25314).
정의된 (25322)와 같은 데이터 너트 N4 v1(25320)은 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 멤버에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GA에만 RAT 접근 권한을 갖고 멤버 GB에는 읽기 접근 권한이 주어지며 멤버 GC는 데이터 너트 N4 v1에 대한 검증 전용 접근이 주어질 수 있다. 너트(25322)의 메타데이터 섹션은 적어도 너트ID=N4, 유형 ‘텍스트’, 및 버전 마커 v1을 설정한다. 페이로드 섹션에는 텍스트를 홀딩할 수 있다. 본 예시의 목적을 위해, 데이터 너트 N4 v1은 단지 ID 및 버전 “N4 v1”을 사용하여 컴팩트하게 표현될 수 있다(25324).
정의된 (25332)와 같은 데이터 너트 N6 v1(25330)은 단지 그룹 할당된 그룹 사용자 ID(GA, GB, GC) 및 그룹 멤버 키 ID(KGA, KGB, KGC)만을 사용하여 각각의 그룹 멤버에 대한 범용 키홀 섹션에 키홀을 가질 수 있다. 이러한 키홀 구성은 그룹 멤버 또는 그 임의의 하위 집합에 의해서만 이러한 너트에 대한 접근을 제한한다. 또한, 멤버 GA만 RAT 접근을 갖고 멤버 GB는 읽기 및 쓰기 접근이 주어지며 멤버 GC는 데이터 너트 N4 v1에 대한 접근이 주어지지 않을 수 있다(키홀의 부재). 너트(25332)의 메타데이터 섹션은 적어도 너트ID=N6, 유형 ‘데이터, 및 버전 마커 v1을 설정한다. 페이로드 섹션은 일부 텍스트를 홀딩할 수 있다. 본 예시의 목적을 위해, 데이터 너트 N6 v1은 단지 ID 및 버전 “N6 v1”을 사용하여 컴팩트하게 표현될 수 있다(25334).
도 254는 너트-기반 그룹 동기화 예시의 최초 단계를 도시한다. 도 252 및 도 253에 정의된 너트의 컴팩트한 표현이 다음 몇몇 도해에 사용될 것이다. 도 254는 도시된 바와 같이 너트 구성을 갖는 3개의 시스템 A, B 및 C를 도시한다. 처음에, 세 개의 시스템 모두가 동기화될 수 있으며 각기 로컬 카탈로그 너트(25402, 25422 및 25432)를 갖는 그룹 G1(25400, 25420 및 25430)의 멤버가 될 수 있다. 시스템 A는 또한 국부적으로 머무는 너트 F1, N4 및 N6을 가질 수 있으며 다양한 시점에서 그룹 G1과 그것을 공유하기로 결정한다. 본 예시는 어떻게 너트 F1, N4 및 N6을 로컬 너트 A:C1 v5(25402)에 추가하는(그로써 종내 그것을 A:C1 v7(25410)으로 수정함으로써 그룹 G1과 저들 너트를 공유하도록 의도함) 시스템 A가 그룹 G1을 동기화하여, 너트를 사용하여 모두 3개의 그룹 멤버 시스템 A, B 및 C을 가로질러 종내 일관적이게 되도록 할 수 있는지를 도시할 수 있고, 여기서 각각의 시스템에 대한 각각의 로컬 카탈로그는 C1:A v7(25410)과 닮을 수 있다.
도 255는 그룹 동기화 전이의 제 1 패널 세트를 도시한다. 패널(25500, 25502 및 25504)는 세 개의 시스템 모두를 일관된 상태로 나타낼 수 있으므로 그룹 G1은 일관될 수 있다. 패널(25510): 시스템 A는 너트 N4 v1 및 F1 v1을 생성한다. 패널(25520): 시스템 A는 N4 v1 및 F1 v1에 대한 카탈로그 엔트리를 로컬 카탈로그 너트 A:C1 v5에 추가함으로써 너트 N4 및 F1을 그룹 G1과 공유하고, 그로써 그 내용을 수정하고, 그로써 새로운 버전 마커 v7을 생성한 다음, A:C1 v7으로서 그룹 G1에 대해 수정된 로컬 카탈로그를 저장한다.
패널(25530, 25532, 25534): 각각의 시스템은 그룹 G1에 대해 카탈로그 ID C1에 대한 카탈로그에 대해 다른 두 개의 시스템을 쿼리함으로써 그룹 G1에 대해 카탈로그 C1에 대한 카탈로그 폴링을 수행할 수 있다; 다른 두 개의 시스템은 각각 로컬 카탈로그의 사본을 회신하고, 그로써 각각의 시스템은 그룹 G1의 각각의 멤버에 상응하는 3개의 카탈로그 모두를 보유 및/또는 수신한다. 해당 기술분야의 당업자에게 알려진 세 개의 시스템의 네트워크에서 그러한 정보를 전달하고 전송하는 훨씬 더 효율적인 방법이 있을 수 있지만, 이러한 실시의 요점은 데이터 요청 및 전송의 가장 조잡한 방법을 사용하더라도, 그룹 동기화는 너트를 사용하여 그룹 및 루프백 도관에 의해 충분히 잘 달성될 수 있으며, 너트의 적절한 사용은 안전하지 않은 전송 네트워크에서도 편재하는 프라이버시를 제공할 수 있다는 것이고; 실제로, 본 예시에서, 하나의 시스템에서 또 다른 시스템으로 너트의 모든 전송은 평문으로 수행될 수 있으며, 너트 페이로드의 보안 및 프라이버시는 각각의 멤버 및/또는 시스템이 모르는 사이에 완전히 손상되지 않은 채로 유지될 수 있다. 각각의 카탈로그가 각각의 시스템에 의해 수신된 후에, 각각의 시스템은 각각의 수신된 카탈로그를 자체 로컬 카탈로그와 병합하는 프로세스를 시작할 수 있으며, 이는 패널(25540, 25542 및 25544)을 초래할 수 있다.
패널(25540): 시스템 A 상에, 로컬 카탈로그 A:C1 v7의 시스템 B로부터의 카탈로그 B:C1 v5와의 병합은 카탈로그 B:C1 v5를 폐기하고 카탈로그 A:C1 v7을 유지하는 것을 초래할 수 있고, 그런 후에 카탈로그 A:C1 v7의 시스템 C로부터의 카탈로그 C:C1 v5와의 병합은 카탈로그 C:C1 v5를 폐기하고 카탈로그 A:C1 v7을 유지하는 결과를 초래할 수 있고, 따라서 시스템 A 상에 결과 병합된 로컬 카탈로그는 A:C1 v7이 될 수 있다. 패널 25542: 시스템 B 상에, 로컬 카탈로그 B:C1 v5의 시스템 A로부터의 카탈로그 A:C1 v7과의 병합은 “(F1 v1)” 및 “(N4 v1)”로서 카탈로그 B:C1 v5를 카탈로그 A:C1 v7으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v6으로 표시하고, 카탈로그 B:C1 v6를 저장하는 것을 초래하고, 그런 다음 카탈로그 B:C1 v6의 시스템 C로부터의 카탈로그 C:C1 v5와의 병합은 카탈로그 C:C1 v5를 폐기하고 카탈로그 B:C1 v6을 유지하는 것을 초래하고, 따라서 시스템 B 상에 결과 병합된 로컬 카탈로그는 B:C1 v6가 될 수 있다. 본 예시에서, 새로운 엔트리 주위의 괄호는 프로세스가 원래 시스템에서 저들 너트 ID 및 버전을 요청하고 카탈로그 엔트리 상에 "보류"의 상태를 입력했을 수 있음을 나타낼 수 있다. 패널(25544): 시스템 C 상에, 로컬 카탈로그 C:C1 v5의 시스템 A로부터의 카탈로그 A:C1 v7과의 병합은 “(F1 v1)” 및 “(N4 v1)”로서 카탈로그 B:C1 v5를 카탈로그 A:C1 v7으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v6으로 표시하고, 카탈로그 B:C1 v6를 저장하는 것을 초래하고, 그런 다음 카탈로그 B:C1 v6의 시스템 B로부터의 카탈로그 B:C1 v5와의 병합은 카탈로그 B:C1 v5를 폐기하고 카탈로그 C:C1 v6을 유지하는 것을 초래하고, 따라서 시스템 C 상에 결과 병합된 로컬 카탈로그는 C:C1 v6가 될 수 있다.
패널(25552 및 25554): 시스템 B와 C는 각각 시스템 A로부터 요청된 너트 N4 v1 및 F1 v1을 수신한다. 패널(25562 및 25564): 시스템 B와 C는 각각 수신된 너트 F1 v1 및 N4 v1을 국부적으로 저장하고, (그룹 G1에 대해 로컬 카탈로그 C1이 요청했음을 유념한다), 각각의 수신된 너트에 대한 카탈로그 엔트리를 "보류"에서 "로컬"로 업데이트하여 로컬 카탈로그 버전이 v6에서 v7로 변경되게 할 수 있고, 따라서 각각의 시스템 B와 C에서 결과 상태는 패널(25562 및 25564)에 관한 것일 수 있다. 요청된 너트가 로컬 시스템에 존재하지 않기 때문에, 각각의 시스템 B와 C는 단지 수신된 너트의 볼 수 있는 메타데이터를 읽고 카탈로그 엔트리를 업데이트할 수 있다; 그러나 각각의 시스템은 그룹 키를 추가로 삽입하기로 결정하고 수신된 너트가 참으로 그룹을 위한 것이고 변조되지 않았음을 인증할 수 있다. 이러한 특정 경우에, 시스템 B와 C 모두는 F1 v1(25312)에 대한 RW 접근을 할 수 있고, 따라서 각각은 그 인증을 검증할 수 있다; N4 v1(25322)에 있어서, 시스템 B는 읽기 접근을 하고 그를 검증할 수 있는 한편, 시스템 C는 검증 전용 접근을 할 수 있고 그를 검증할 수 있다. 이들 두 개의 패널은 이제 패널(25560)에 도시된 바와 같이 시스템 A와 동기화될 수 있으며, 이는 패널(25520)이후로 효과적으로 변경되지 않았을 수 있다. 각각의 시스템의 로컬 카탈로그는 동일한 카탈로그 엔트리를 가질 수 있고, 각각의 시스템은 너트 G1 v5, F1 v1 및 N4 v1의 로컬 사본을 가질 수 있으므로, 그룹의 일관성이 달성될 수 있다. 본 예시에 로컬 카탈로그는 상대 멤버 시스템과 다른 버전 마커를 가질 수 있지만 동일한 그룹 ID의 동일한 카탈로그 ID를 특정한다. 본 예시에서, 그룹, 도관 및 너트를 사용하여, 그룹의 단일 멤버가 그룹과 새로운 너트를 공유할 수 있으며, 결과적으로 모든 멤버 시스템이 일관된 상태를 달성하고, 따라서 그룹은 일관된 상태로 간주될 수 있음을 보여 줄 수 있다.
PUID를 사용하는 분산 및 탈중앙집중화된 시스템에서 삭제는 종래의 FS 아이노드 삭제보다 다소 더 주의를 요구할 수 있다. 분산 시스템의 분할 이벤트는 분할 복구 동안 이전에 삭제된 ID가 다시 나타나게 할 수 있다. 이러한 경우에, 비석(삭제된 ID의 존재가 참조될 수 있는 일종의 표기법)이 FHOG, 카탈로그 및 그룹과 같은 그러나 그로 한정되지 않는 맵에서 추적될 필요가 있을 수 있다. 분산된 탈중앙집중화된 시스템에 걸쳐 비석을 유지하기 위해 처리 및 공간의 효율성을 극대화하는 다수의 방법이 있을 수 있다. 너츠 유형 특징을 갖는 진실로 분산되고 탈중앙집중화된 시스템의 혜택은 시스템 와이드 비석을 유지하는 것이 노력할 가치가 있는지 여부를 결정하기 위해 그러한 특징이 부족한 시스템에 대해 평가될 수 있다. 범용 네임스페이스에서 운영은 ID, 및 생성, 활성, 삭제, 비활성, 재활용, 삭제 취소, 보관, 말삭, 부활 및 침해로 말삭(멸각)을 포함하는 각각의 객체에 대해 수행된 작동 및/또는 작동의 상태를 확장하는 것을 요구할 수 있고; 각각의 상태 및/또는 작동의 구체적인 정의는 구현 및 목적 및 제한에 따라 달라질 수 있고; 상태 및/또는 작동의 더 작은 하위 집합만이 구현을 위해 필요할 수 있다.
도 256은 도 255로부터 예시를 계속한다. 본 예시는 그룹에서 공유된 객체의 수정이 일관성을 달성하기 위해 그룹 멤버 가운데 어떻게 전파되는지를 보여 줄 수 있다. 시스템 A, B, C의 상태를 선택하고, 여기서 도 255는 그들을 남겨두고, 우리는 먼저 패널(25602)로 시작하고, 여기서 시스템 B는 국부적으로 저장된 FHOG너트 F1 v1을 F1 v2로 수정할 수 있다. 시스템 B가 구성될 때(25612), 너트 F1에 대한 읽기/쓰기 접근이 주어졌기 때문에, 이러한 수정 작동이 허용될 수 있다. 패널(25612): 시스템 B가 그룹 G1 B:C1 v7에 대해 로컬 카탈로그 C1을 수정할 수 있고, FHOG F1 v1에 대한 엔트리를 “F1 v2”로 업데이트하면, 로컬 카탈로그에 대한 새로운 버전 마커가 v7에서 v8로 변경되어 카탈로그 너트 B:C1 v8을 초래한다. 패널(25620, 25622 및 25624): 각각의 시스템은 로컬 카탈로그의 사본을 서로 교환할 수 있으며, 이는 이러한 세 개의 상태를 초래할 수 있다.
패널(25632): 시스템 B 상에, 로컬 카탈로그 B:C1 v8의 시스템 A로부터의 카탈로그 A:C1 v7과의 병합은 카탈로그 A:C1 v7을 폐기하고 카탈로그 B:C1 v8을 유지하는 것을 초래할 수 있고, 그런 후에 카탈로그 B:C1 v8의 시스템 C로부터의 카탈로그 C:C1 v7과의 병합은 카탈로그 C:C1 v7을 폐기하고 카탈로그 B:C1 v8을 유지하는 것을 초래할 수 있고, 따라서 시스템 B 상에 결과 병합된 로컬 카탈로그는 B: C1 v8이 될 수 있다. 패널(25630): 시스템 A 상에, 로컬 카탈로그 A:C1 v7의 시스템 B로부터의 카탈로그 B:C1 v8과의 병합은 “(F1 v2)”로서 카탈로그 A:C1 v7을 카탈로그 B:C1 v8으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v8로 표시하고, 카탈로그 A:C1 v8을 저장하는 것을 초래하고, 그런 다음 카탈로그 A:C1 v8의 시스템 C로부터의 카탈로그 C:C1 v7과의 병합은 카탈로그 C:C1 v7을 폐기하고 카탈로그 B:C1 v8을 유지하는 것을 초래하고, 따라서 시스템 A 상에 결과 병합된 로컬 카탈로그는 B:C1 v8이 될 수 있다. 본 예시에서, 새로운 엔트리 주위의 괄호는 프로세스가 원래 시스템에서 저들 너트 ID 및 버전을 요청하고 카탈로그 엔트리 상에 "보류" 상태를 입력했음을 나타낼 수 있다. 패널(25634): 시스템 C 상에, 로컬 카탈로그 C:C1 v7의 시스템 B로부터의 카탈로그 B:C1 v8과의 병합은 “(F1 v2)”로서 카탈로그 B:C1 v7을 카탈로그 A:C1 v8로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v8로 표시하고, 카탈로그 C:C1 v8을 저장하는 것을 초래하고, 그런 다음 카탈로그 C:C1 v8의 시스템 A로부터의 카탈로그 A:C1 v7과의 병합은 카탈로그 A:C1 v7을 폐기하고 카탈로그 C:C1 v8을 유지하는 것을 초래하고, 따라서 시스템 C 상에 결과 병합된 로컬 카탈로그는 C:C1 v8이 될 수 있다.
패널(25640 및 25644): 시스템 A와 C는 각각 시스템 B로부터 요청된 너트 F1 v2를 수신하고, 기존의 너트 F1 v1을 수신된 너트 F1 v2와 병합하여 병합된 너트 F1 v2를 생성하고, 그를 국부적으로 저장한다. F1(25312)에 있어서, 시스템 A가 RAT(소유자)일 수 있고 인증을 용이하게 검증할 수 있고, 시스템 C는 F1에 대한 읽기/쓰기 접근을 할 수 있고 인증을 용이하게 검증할 수 있다. 패널(25650 및 25654): 시스템 B와 C는 각각 병합된 너트 F1 v2에 대한 카탈로그 엔트리를 "보류"에서 "로컬"로 업데이트하여 로컬 카탈로그 버전을 v8에서 v9로 변경하게 하고, 따라서 각각의 시스템 A와 C에서 결과 상태는 패널(25650 및 25654)에 관한 것이 될 수 있다. 이들 두 개의 패널은 이제 패널(25652)에 도시된 바와 같이 시스템 B와 동기화될 수 있으며, 이는 패널(25612) 이후로 효과적으로 변경되지 않았을 수 있다. 각각의 시스템의 로컬 카탈로그는 동일한 카탈로그 엔트리를 가질 수 있고, 각각의 시스템은 너트 G1 v5, F1 v2 및 N4 v1의 로컬 사본을 가질 수 있으므로, 그룹의 일관성이 달성될 수 있다. 본 예시에 로컬 카탈로그는 상대 멤버 시스템과 버전 마커를 가질 수 있지만 동일한 그룹 ID의 카탈로그 ID를 특정한다. 본 예시는 그룹, 도관 및 너트를 사용하여, 그룹의 단일 멤버가 그룹과 공유된 너트를 수정할 수 있으며, 결과적으로 모든 멤버 시스템이 일관된 상태를 달성하고, 따라서 그룹은 일관된 상태로 간주될 수 있음을 보여 줄 수 있다.
도 257은 어떻게 검증 전용 너트가 그룹을 가로질러 동기화되는지를 도시한다. 도 257는 도 256로부터 예시를 계속한다. 본 예시는 어떻게 그룹에 공유된 너트의 수정이 일관성을 달성하기 위해 그룹 멤버 가운데 전파하는지를 도시하고, 여기서 일부 멤버는 공유된 너트에 대한 읽기 및/또는 쓰기 접근으로부터 제한될 수 있다. 시스템 A, B, C의 상태를 선택하고, 여기서 도 256은 그들을 남겨두고, 우리는 먼저 패널(25700)로 시작하고, 여기서 시스템 A는 국부적으로 저장된 텍스트 너트 N4 v1를 N4 v2로 수정할 수 있다. 이러한 수정 작업은 시스템 A가 구성될 때(25322), 너트 F1의 RAT 소유자이기 때문에 허용될 수 있다. 패널(25710): 시스템 A가 그룹 G1 A:C1 v9에 대해 로컬 카탈로그 C1을 수정할 수 있고, 텍스트 너트 N4 v1에 대한 엔트리를 “N4 v2”로 업데이트하면, 로컬 카탈로그에 대한 새로운 버전 마커가 v9에서 v10으로 변경되어 카탈로그 너트 A:C1 v10을 초래할 수 있다. 패널(25720, 25722 및 25724): 각각의 시스템은 로컬 카탈로그의 사본을 서로 교환할 수 있으며, 이는 이러한 세 개의 상태를 초래할 수 있다.
패널(25730): 시스템 A 상에, 로컬 카탈로그 A:C1 v7의 시스템 B로부터의 카탈로그 B:C1 v8과의 병합은 카탈로그 B:C1 v8을 폐기하고 카탈로그 A:C1 v10을 유지하는 것을 초래할 수 있고, 그런 후에 카탈로그 A:C1 v10의 시스템 C로부터의 카탈로그 C:C1 v9와의 병합은 카탈로그 C:C1 v9을 폐기하고 카탈로그 A:C1 v10을 유지하는 결과를 초래할 수 있고, 따라서 시스템 A 상에 결과 병합된 로컬 카탈로그는 A:C1 v10이 될 수 있다. 패널(25732): 시스템 B 상에, 로컬 카탈로그 B:C1 v8의 시스템 A로부터의 카탈로그 A:C1 v10과의 병합은 “(N4 v2)”로서 카탈로그 B:C1 v8를 카탈로그 A:C1 v10으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v9로 표시하고, 카탈로그 B:C1 v9를 저장하는 것을 초래하고, 그런 다음 카탈로그 B:C1 v9의 시스템 C로부터의 카탈로그 C:C1 v9과의 병합은 카탈로그 C:C1 v9을 폐기하고 카탈로그 B:C1 v9을 유지하는 것을 초래하고, 따라서 시스템 B 상에 결과 병합된 로컬 카탈로그는 B:C1 v9이 될 수 있다. 본 예시에서, 새로운 엔트리 주위의 괄호는 프로세스가 원래 시스템에서 저들 너트 ID 및 버전을 요청하고 카탈로그 엔트리 상에 "보류" 상태를 입력했음을 나타낼 수 있다. 패널(25734): 시스템 C 상에, 로컬 카탈로그 C:C1 v9의 시스템 A로부터의 카탈로그 A:C1 v10과의 병합은 “(N4 v2)”로서 카탈로그 C:C1 v9를 카탈로그 A:C1 v10으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v10으로 표시하고, 카탈로그 C:C1 v10을 저장하는 것을 초래하고, 그런 다음 카탈로그 C:C1 v10의 시스템 B로부터의 카탈로그 B:C1 v8과의 병합은 카탈로그 B:C1 v8을 폐기하고 카탈로그 C:C1 v10을 유지하는 것을 초래하고, 따라서 시스템 C 상에 결과 병합된 로컬 카탈로그는 C:C1 v10이 될 수 있다.
패널(25742 및 25744): 시스템 B와 C는 각각 시스템 A로부터 요청된 너트 N4 v2를 받을 수 있다. 시스템 B만 너트 N4 v2(25322)에 대한 읽기 접근을 가질 수 있어서, 인증하기 위해 그룹 키를 N4 v2에 삽입할 수 있다; 성공적인 인증 시에(시스템 B는 너트에서 페이로드를 열고 읽을 수 있다), 너트를 닫은 다음, 로컬 너트 N4 v1을 방금 인증된 N4 v2로 교체하는 것을 진행할 수 있다; 최신 버전이 유지될 수 있다는 추가 보증이 요구되면, 시스템 A는, 너트가 시스템 A에 대한 그러한 접근을 허용하도록 구성되었다면 최신 버전을 결정하도록 로그 및/또는 카르나크 검토를 순회하려고 시도할 수 있다. 시스템 C는 너트 N4 v2(25322)에 대한 검증 전용 접근만 할 수 있어서, 그룹 키를 N4 v2에 삽입하여 그를 검증할 수 있다; 성공적인 인증 시에(단순히 너트 N4 v2를 열려는 시도는 삽입된 키에 대한 검증 알림을 초래할 수 있고 페이로드가 인증되었지만 너트의 어떠한 다른 부분도 접근되지 못할 수 있다), 너트를 닫은 다음, 로컬 너트 N4 v1을 방금 인증된 N4 v2로 교체하는 것을 진행할 수 있다; 어느 버전 v1 또는 v2이 최신인가에 관해 어떠한 추가 보증도 너트 N4 v2 상에 시스템 C에 의해 이루어지지 않을 수 있다; 마지막 수정 시간을 나타내는 너트에 평문 메타데이터가 있을 수 있다면, 그것은 그러한 결정을 하도록 비교될 수 있다.
패널(25752 및 25754): 시스템 B와 C는 각각 너트 N4 v2에 대한 카탈로그 엔트리를 “보류”에서 “로컬”로 업데이트할 수 있어서, 로컬 카탈로그 버전이 시스템 B의 경우 v9에서 vlO으로, 시스템 C의 경우 vlO에서 v11로 변경되게 할 수 있고, 따라서 각각의 시스템 B와 C의 결과 상태는 패널(25752 및 25754)에 관한 것일 수 있다. 이들 두 개의 패널은 이제 패널(25750)에 도시된 바와 같이 시스템 A와 동기화될 수 있으며, 이는 패널(25710)이후로 효과적으로 변경되지 않았을 수 있다. 각각의 시스템의 로컬 카탈로그는 동일한 카탈로그 엔트리를 가질 수 있고, 각각의 시스템은 너트 G1 v5, F1 v2 및 N4 v2의 로컬 사본을 가질 수 있으므로, 그룹의 일관성이 달성될 수 있다. 본 예시에 로컬 카탈로그는 상대 멤버 시스템과 버전 마커를 가질 수 있지만 동일한 그룹 ID의 카탈로그 ID를 특정한다. 본 예시는 그룹, 도관 및 너트를 사용하여, 그룹의 단일 멤버가 그룹과 공유된 너트를 수정할 수 있으며, 결과적으로 모든 멤버 시스템이 일관된 상태를 달성하고, 따라서 그룹은 일관된 상태로 간주될 수 있음을 보여 줄 수 있다.
도 258은 어떻게 너트가 그룹을 가로질러 동기화되는지를 도시한다. 도 258은 도 257로부터 예시를 계속한다. 본 예시는 어떻게 그룹에 공유된 너트의 추가가 일관성을 달성하기 위해 그룹 멤버 가운데 전파할 수 있는지를 보여 줄 수 있고, 여기서 일부 멤버는 공유된 너트 상의 그들에 대해 구성된 어떠한 키홀도 갖지 않을 수 있다. 시스템 A, B, C의 상태를 선택하고, 여기서 도 257은 그들을 남겨두고, 우리는 먼저 패널(25800)로 시작하고, 여기서 시스템 A는 국부적으로 저장된 데이터 너트 N6 v1를 생성할 수 있다. 이 작동은 시스템 A가 너트 N6(25324)의 RAT 소유자임을 나타낼 수 있다. 패널(25810): 시스템 A가 그룹 G1 A:C1 v10에 대해 로컬 카탈로그 C1을 수정할 수 있고, 데이터 너트 N6 v1에 대한 엔트리를 첨부하면, 로컬 카탈로그에 대한 새로운 버전 마커가 v10에서 v11로 변경되어 카탈로그 너트 A:C1 v11을 초래한다. 패널(25820, 25822 및 25824): 각각의 시스템은 로컬 카탈로그의 사본을 서로 교환할 수 있으며, 이는 이러한 3개의 상태를 초래할 수 있다.
패널(25830): 시스템 A 상에, 로컬 카탈로그 A:C1 v11의 시스템 B로부터의 카탈로그 B:C1 v10과의 병합은 카탈로그 B:C1 v10을 폐기하고 카탈로그 A:C1 v11을 유지하는 것을 초래할 수 있고, 그런 후에 카탈로그 A:C1 v11의 시스템 C로부터의 카탈로그 C:C1 v11와의 병합은 카탈로그 C:C1 v11을 폐기하고 카탈로그 A:C1 v11을 유지하는 결과를 초래할 수 있고, 따라서 시스템 A 상에 결과 병합된 로컬 카탈로그는 A:C1 v11이 될 수 있다. 패널(25832): 시스템 B 상에, 로컬 카탈로그 B:C1 v10의 시스템 A로부터의 카탈로그 A:C1 v11과의 병합은 “(N6 v1)”로서 카탈로그 B:C1 v10을 카탈로그 A:C1 v11으로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v11로 표시하고, 카탈로그 B:C1 v11을 저장하는 것을 초래하고, 그런 다음 카탈로그 B:C1 v11의 시스템 C로부터의 카탈로그 C:C1 v11과의 병합은 카탈로그 C:C1 v11을 폐기하고 카탈로그 B:C1 v11을 유지하는 것을 초래하고, 따라서 시스템 B 상에 결과 병합된 로컬 카탈로그는 B:C1 v11이 될 수 있다. 본 예시에서, 새로운 엔트리 주위의 괄호는 프로세스가 원래 시스템에서 저들 너트 ID 및 버전을 요청하고 카탈로그 엔트리 상에 "보류" 상태를 입력했음을 나타낼 수 있다. 패널(25834): 시스템 C 상에, 로컬 카탈로그 C:C1 v11의 시스템 A로부터의 카탈로그 A:C1 v11과의 병합은 “(N6 v1)”로서 카탈로그 C:C1 v11을 카탈로그 A:C1 v11로부터의 엔트리로 업데이트하고, 카탈로그를 버전 v12로 표시하고, 카탈로그 C:C1 v12를 저장하는 것을 초래하고, 그런 다음 카탈로그 C:C1 v12의 시스템 B로부터의 카탈로그 B:C1 v10과의 병합은 카탈로그 B:C1 v10을 폐기하고 카탈로그 C:C1 v12를 유지하는 것을 초래하고, 따라서 시스템 C 상에 결과 병합된 로컬 카탈로그는 C:C1 v12가 될 수 있다.
패널(25842 및 25844): 시스템 B와 C는 각각 시스템 A로부터 요청된 너트 N6 v1을 받을 수 있다. 시스템 B는 N6 v1(25332)에 대한 읽기/쓰기 접근을 할 수 있어서, 단순히 그를 국부적으로 저장할 수 있다; 더 많은 보증이 소망된다면, 시스템 B는 그룹 키를 N6 v1에 삽입하여 그를 인증할 수 있다; 성공적인 인증 시에(시스템 B는 너트에 페이로드를 열고 읽을 수 있다), 너트를 닫은 다음, 그를 저장하는 것을 진행할 수 있다. 시스템 C는 너트 N6 v1에 구성된 어떠한 키홀도 갖지 않을 수 있으므로, 유일한 대안은 너트를 단순히 수락하고 그를 국부적으로 저장하는 것이고, 그룹 카탈로그 내에 포함은 그것이 국부적으로 사본을 보관하기에 충분할 수 있음을 알 수 있다.
패널(25852 및 25854): 시스템 B와 C는 각각 너트 N6 v1에 대한 카탈로그 엔트리를 “보류”에서 “로컬”로 업데이트할 수 있고, 이는 로컬 카탈로그 버전이 시스템 B의 경우 v11 에서 vl2로, 시스템 C의 경우 vl2에서 v13으로 변경되게 할 수 있고, 따라서 각각의 시스템 B와 C에 결과 상태는 패널(25852 및 25854)에 관한 것일 수 있다. 이들 두 개의 패널은 이제 패널(25850)에 도시된 바와 같이 시스템 A와 동기화될 수 있으며, 이는 패널(25810)이후로 효과적으로 변경되지 않았을 수 있다. 각각의 시스템의 로컬 카탈로그는 동일한 카탈로그 엔트리를 가질 수 있고, 각각의 시스템은 너트 G1 v5, F1 v2, N6 v1 및 N4 v2의 로컬 사본을 가질 수 있으므로, 그룹의 일관성이 달성될 수 있다. 본 예시에 로컬 카탈로그는 상대 멤버 시스템과 다른 버전 마커를 가질 수 있지만 동일한 그룹 ID의 동일한 카탈로그 ID를 특정할 수 있다. 각각의 시스템은 그룹에 공유된 너트의 일부에 대해 전체 접근하거나, 부분 접근하거나 어떠한 접근도 할 수 없을 수 있다. 본 예시는 그룹, 도관 및 너트를 포함하는 기법을 사용하여, 그룹의 단일 멤버(또는 비멤버 MC)가 그룹과 너트를 공유할 수 있고, 특정 멤버에 대한 접근 구성을 변화시키지만, 결과적으로 모든 멤버 시스템이 일관된 상태를 달성하고, 따라서 그룹은 일관된 상태로 간주될 수 있음을 보여 줄 수 있다.
그룹의 현재 이용가능한 멤버 사이에 일관된 상태를 유지하기 위해 그룹 및/또는 루프백 도관이 다른 멤버 가운데 데이터 객체로서 전달되는 FSM으로 간주될 수 있다. 그룹 너트, 카탈로그 너트 및 FHOG 너트와 같은 그러나 그로 한정되지 않는 그룹의 구성요소 및 루프백 도관에 대해 너트 컨테이너를 활용하는 것은 FSM 상태의 안전한 교환을 허용할 수 있다. 그룹 너트는 또한 익명으로 각각의 구성원에게 그룹 키 세트의 보안 키 분배를 용이하게 할 수 있다. 그룹 및 루프백 도관은 ID가 있는 임의의 프로세스, 사용자 또는 자산에 의해 단일 그룹에서 N명의 멤버로 너트ID 세트의 임의의 논리적 그룹핑의 무작위 생성을 허용할 수 있다. 그룹 및 루프백 도관은 동기화, 공유, 분할 복원, 비동기화, 키 분배, 보안(너트 사용 시), 적용가능성 및 다양성을 포함하는 향상된 특징으로 인해 일부 구현예에 대해 임의의 두 개의 너트 ID 사이에 RBK를 사용하여 암호 관계를 형성하는 바람직한 방법일 수 있다. 밥과 관계를 설정하는 앨리스의 이전 FSM 예시는 앨리스가 MC이고 밥을 그룹에 초대하는 멤버일 수 있는 두 개의 그룹으로 바람직하게 표현될 수 있다. 너트에 걸쳐 지속적으로 실행된 그룹은 멤버 사이에 모든 통신에 대해 종단 간 암호화를 제공하여 멤버의 무작위 세트에 대한 안전한 논리 네트워크를 효과적으로 생성할 수 있다. 임의의 디지털 ID는 생성, 소개, 시작, 분배, 유지, 운영, 해지, 초대 및 공유를 포함하는 그룹 관련된 작동을 수행하도록 허용될 수 있고; 이러한 작동의 일부 또는 전부는 디지털 ID에 의해 독립적으로 그리고 소망되지 않는다면, 외부 접근 제어 시스템으로부터 상응된 권한 없이 수행될 수 있다. 그룹은 ID 및 관련 데이터의 애드혹 및/또는 영구 집단의 목적을 위해 이동가능한, 탈중앙집중식 및/또는 분배가능한 FSM의 형태로 자급식 마이크로 접근 제어 모델을 구성할 수 있다. 분할된 네트워크는 그룹 및 루프백 도관의 방법에 기반이 되는 운영 가정일 수 있으므로, 통신 그룹 멤버의 동적으로 변경되는 무작위 하위집합은 장기간 격리된 상태로 작동하는 멤버를 포함하는 표준이 될 수 있다.
RBK 키 표기
도 259는 3명의 시나리오에서 RBK 용어를 도시한다. 도 259는 캐롤을 혼합에 추가함으로써 도 113으로부터 RBK 예시에 대해 확장할 수 있다. 그것은 3개의 별개의 관계(25950)를 가진 3인 네트워크를 보여 줄 수 있고, 여기서 그들은 모두 서로를 알고 있을 수 있다: 앨리스-밥, 밥-캐롤, 및 캐롤-앨리스. 본 도면은 특정 주소록 및 RBK 구성 요소를 나타내는 정확하고 간결한 표기법을 소개할 수 있다. 섹션(25940)은 사용된 표기 방법 및 각각의 샘플을 읽고 이해하는 방법을 정의할 수 있다. 간결성을 위해, 본 예시는 사용자 이름의 첫 글자인 밥에 대해 B, 앨리스에 대해 A, 캐롤에 대해 C를 사용한다. 각각의 개인은 너트북을 가질 수 있고, 그들은 그들 자신에 대한 연락처 너트 및 사용자별 너트북마다 총 3개의 연락처 너트에 대한 그들의 연락처를 유지할 수 있다; 본 도면은 각각의 사용자의 고유한 연락처 너트를 표시하지 않을 수 있으므로 총 6개의 연락처 너트만이 표시될 수 있고 RBK 섹션만이 도시될 수 있다. RBK는 그들에 대해 방향성 측면을 가질 수 있고 화살표를 사용하여 나타낼 수 있다. 키 식별자(KID)는 생성 시 새로 형성된 암호 키에 생성되고 할당된 너트ID일 수 있고 및/또는 KID는 암호 키를 저장하도록 생성되고 및/또는 사용된 너트 컨테이너의 너트ID일 수 있다. 현실적으로, 그럴 만한 양호한 이유가 없다면, KID를 재사용하는 것은 나쁜 실행일 수 있다. 그러나, 너트를 사용하여 키를 접근 너트에 저장한다면, 너트의 너트ID는 특정 키 회전, 생성 및/또는 일련의 생성 방법 및 임의의 필요한 파라미터 설정과 함께 안에 저장된 시드 키에서 생성될 수 있는 일련의 관련 키를 표시할 수 있다.
밥이 앨리스에게 텍스트 너트를 보내려고 할 때, 그는 그의 연락처 너트(25922)에서 앨리스에 대한 연락처 너트를 조회할 수 있고‘BAB→A.U’에 의해 표시되는 바와 같고 ‘BAB→A’의 KID를 갖는 "밥에 대한 앨리스 너트북 연락처로부터 초래할 수 있는 밥 투 앨리스 공개 키”를 사용할 수 있다. 앨리스만이 비공개 키를 가질 수 있기 때문에 밥이 앨리스에게 보낼 때, 앨리스만이 그것을 읽을 수 있기 때문에, 밥의 너트북에서 앨리스에 대한 연락처 너트는 "BAB→A” 키의 비공개 부분을 전달하지 않을 수 있다. 상황은 너트북(25912)에서 밥에 대한 앨리스의 연락처에서 미러링될 수 있다. 연락처 너트의 RBK 부분의 나머지는 관계의 각각에 대한 사용자 사이에 RBK 키 설정의 동일한 유형을 반영할 수 있다.
RBK 사용의 이러한 방법 및 임의의 두 개의 연락처 또는 ID 사이의 너트북 내에 형성된 관계는 또한 일반화된 그룹과 관련하여 개념적 값일 수 있다. 이러한 표기법은 그룹 데이터 흐름 및 그룹 키 분포에 대해 다음 섹션에서 광범위하게 사용될 수 있다.
그룹 데이터 흐름
도 260은 다양한 그룹 크기에 관한 데이터 흐름 토폴로지를 도시한다. 그룹을 형성 및/또는 유지하는 데에서 너트의 사용은 멤버들 사이의 안전한 데이터 교환을 허용할 수 있다. 그룹 너트의 사용은 그룹의 멤버쉽을 설정하고 그룹 키를 안전하게 분배하도록 활용될 수 있다. 그룹의 일반적인 개념은 (25950)과 유사한 "n:n"(n 대 n으로 읽음) 관계 네트워크의 디폴트 거동을 허용할 수 있고, 여기서 그래프의 에지의 개수는 형성되는 관계의 개수와 등가인 n(n-1)/2로 계산될 수 있다. 방향성 유동을 사용하여 양방향 에지를 표현하는 것은 에지 개수를 n(n-1)로 두 배가 되게 할 수 있다. 그 자체에 데이터를 보내는 멤버의 루프 흐름을 포함하는 것은 에지의 개수를 n2로 증가시키고, 이는 데이터 흐름의 사각형 크로스 매트릭스라고 하는 사각형 매트릭스로서 그래프로 표현될 수 있다. 그룹에서 1:1 기반한 암호 관계의 사용은 멤버 가운데 공유된 객체의 정확하고 및/또는 인증가능한 귀인에 특히 유용하다. 벨-라파둘라 및 비바 무결성 접근 모델과 같은 그러나 그로 한정되지 않는 n:n 그룹 통신 네트워크가 소망되지 않은 시나리오가 있을 수 있다. 본 섹션에서 정의될 수 있는 바와 같은 그룹 데이터 흐름은 그룹 너트 내의 RBK를 사용하여 n명의 멤버의 그룹 내에서 방향성을 갖는 무작위 통신 네트워크 토폴로지를 구성하는 일반화된 형태일 수 있다.
그룹 네트워크(26000)는 2↔2 네트워크를 나타내는 양방향 데이터 흐름을 갖는 2개의 ID 네트워크를 표시할 수 있고; RBK 측면에서, 본 네트워크는 4개의 방향성 관계로 표현될 수 있다: A→A, B→B, A→B, B→A. 임의의 노드는 자신에게 메시지를 전송하여 그 자신 상에 각각의 노드에 대한 루프백 에지를 암시할 수 있음을 언급한다. 너트의 NAC 모델은 쓰기 전용 CRBAC에 의해 그러한 모델에서 루프백 에지의 제한을 용이하게 할 수 있다. 그룹 네트워크(26010)는 1→N 네트워크를 나타내는 방향 데이터 흐름을 갖는 3개의 ID 네트워크를 나타낼 수 있고; RBK 측면에서, 본 네트워크는 5개의 방향 관계로 표현될 수 있다: 3개의 루프백 에지, C→B 및 C→A. 그룹 네트워크(26020)는 M→N 네트워크를 나타내는 방향 데이터 흐름을 갖는 5개의 ID 네트워크를 나타낼 수 있고; RBK 측면에서, 본 네트워크는 13개의 방향성 관계로 표현될 수 있다: 5개의 루프백 에지, A→B, A→E, A→C, A→D, B→A, B→D, B→C 및 B→E. 그룹 네트워크(26030)는 1↔N 네트워크를 나타내는 양방향 데이터 흐름을 갖는 5개의 ID 네트워크를 나타낼 수 있다; RBK 측면에서, 본 네트워크는 n(n-l)=20개의 방향 관계로 표현될 수 있다. 그룹 네트워크(26040)는 (n-l)→2 네트워크를 나타내는 방향 데이터 흐름을 갖는 3개의 ID 네트워크를 나타낼 수 있다; RBK 측면에서, 본 네트워크는 5개의 방향 관계로 표현될 수 있다: 3개의 루프백 에지, A→C 및 B→C. 그룹 네트워크(26050)는 (N-M)→(N-M) 네트워크를 나타내는 방향 데이터 흐름을 갖는 5개의 ID 네트워크를 나타낼 수 있고; RBK 측면에서, 본 네트워크는 11개의 방향성 관계로 표현될 수 있다: 5개의 루프백 에지, D→A, C→A, E→A, D→B, C→B 및 E→B. 본 예시 네트워크는 네트워크 그룹 내의 데이터 흐름이 방향성, 대상 노드 및/또는 다른 무작위 요소에 의해 어떻게 제한될 수 있는지를 보여준다.
도 261은 노드의 무작위 네트워크에서 보호 방향성 데이터 흐름을 위한 표기 방법을 도입한다. 그룹 너트는 페이로드에 포함된 그룹 FSM에 대한 보호를 제공할 수 있고 페이로드는 확장하여 그룹 멤버 사이에 키 세트를 제어하는 데이터 흐름의 크로스 매트릭스를 포함할 수 있다. 페이로드에서 데이터 흐름의 크로스 매트릭스는 다음과 같이 표현될 수 있다: 각각의 멤버에는 그룹에서 다른 멤버의 각각에 대해 별개의 키세트를 보유하는 "미니-너트북" 또는 간결한 주소록이 할당될 수 있고, 그로써 N명의 멤버에 대한 N개의 미니 주소록을 효과적으로 생성하고, 여기서 각각의 미니 주소록은 멤버 자체를 위한 것을 포함하는 N개 엔트리 또는 RBK 키 세트를 포함하고, 따라서 그룹에서 N명의 멤버에 대한 데이터 흐름의 크로스 매트릭스는 NxN 매트릭스가 된다. 효과적으로, 각각의 미니 주소록 엔트리는 데이터 흐름의 사각형 크로스 매트릭스에 요소에 의해 표현될 수 있으며, 각각의 행은 그 자신을 포함한 그룹의 멤버를 다루기 위해 해당 멤버에 대한 완전한 미니 주소록을 형성할 수 있다. 본 문맥 내에서, (26100)으로 도시된 표기 방법은 RBK 구성요소가 어떻게 N개의 미니 주소록을 포함하는 NxN 매트릭스에 표현될 수 있는지를 지적할 수 있다. 그룹 너트는 ID A를 ID GA로 매핑하여 다른 그룹 구성원에게 익명성의 일부 형태를 제공할 수 있으므로 우리는 GA=A, GB=B, GC=C 등을 동일시할 수 있다. 제안되는 방식으로 표기법(26110)을 읽음으로써, 둘 중 어느 방향에서든 임의의 두 명의 멤버 사이의 임의의 RBK 구성요소가 데이터 흐름의 NxN 크로스 매트릭스의 문맥에서 정확하게 기재될 수 있다. 비대칭 키 세트의 공개 부분을 나타내는 "U", 비대칭 키 세트의 비공개 부분을 나타내는 "R", 및 대칭 키를 나타내는 "S"를 사용하는 규칙을 유념한다. 표기법은 방향성, 관련된 두 명의 멤버, 키 유형, 키 부분, 그가 속한 미니 주소록, 해당 연락처 하에 보관될 수 있는 멤버 및 키의 생성자를 간결하게 포함한다. "X"의 생성자는 그것이 공유 비밀로 간주되어 참가자 사이에 공통으로 간주되기 때문에 양 참가자로부터 은폐를 요구할 수 없는 대칭 키일 수 있음을 나타낸다; 대칭 키를 사용하는 단점은 부인하지 않고 및/또는 인증가능한 귀인이 나타날 때 잘 알려질 수 있다.
도 262는 N→N 데이터 흐름 구성에서 3명의 멤버 네트워크를 도시한다. N→N 양방향 구성에서 3개 멤버 네트워크(26200)가 도시될 수 있다. 데이터 흐름의 교차 매트릭스는 (26210)에 도시된 표에 의해 표현될 수 있다. 표의 각각의 행은 해당 행에 이름이 지정된 멤버에 대한 미니 너트북 또는 미니 주소록(앞으로 "주소록" 또는 "북")으로 볼 수 있다: 표(26210)는 3개의 행 또는 3개의 주소록, 멤버 A, B, C에 대해 각각 하나의 주소록을 갖고, 각각의 주소록은 3개의 연락처 엔트리(앞으로 “연락처”), 멤버 A, B, C에 대해 각각 하나를 홀딩할 수 있고, 따라서 3명의 멤버에 대한 데이터 흐름의 3x3 크로스 매트릭스로서 그 자체를 나타낸다. 행(26220)은 3개의 연락처를 보유한 A의 주소록을 나타낼 수 있다: 자신에게 메시지를 전달하기 위한 A→A(26222), B에게 메시지를 전달하기 위한 A→B(26224), C에게 메시지를 전달하기 위한 A→C(26226). 북 A(26222)의 연락처 A는 자신으로부터 A(자신)에게 메시지를 보내도록 사용된 북 A의 연락처 A에 위치된 A로부터 초래하는 대칭 키로 읽히는 적어도 하나의 대칭 키 AA:AA↔A.S를 포함할 수 있다. 자신에게 메시지를 보내기 위한 비대칭 키를 만드는 것에 관한 가능성은 대부분의 상황에서 비효율적이고 불필요할 수 있다. 북 A(26224)에서 연락처 B는 여러 개의 키를 포함할 수 있다: BA:BA→B.U는 A에서 B로 메시지를 보내도록 사용된 북 A의 연락처 B에 위치된 B로부터 초래하는 공개 키를 읽고; BA:AB→A.U는 B에서 A로 메시지를 보내도록 사용된 북 A의 연락처 B에 위치된 A로부터 초래하는 공개 키를 읽고; BA:AB→A.R은 B에서 A로 메시지를 보내도록 사용된 북 A의 연락처 B에 위치된 A에서 초래하는 비공개 키로 읽고; BA:XA↔B.S는 A와 B 사이의 메시지를 교환하도록 사용된 북 A의 연락처 B에 위치된 공통 대칭 키를 읽는다. 북 A(26226)에 연락처 C는 여러 개의 키를 포함할 수 있다: BA:BA→B.U 는 A에서 B로 메시지를 보내도록 사용된 북 A의 연락처 B에 위치된 B로부터 초래하는 공개 키를 읽고; BA:AB→A.U는 B에서 A로 메시지를 보내도록 사용된 북 A의 연락처 B에 위치된 A에서 초래하는 공개 키를 읽고; BA:AB→A.R 은 B에서 A로 메시지를 보내도록 사용되는 북 A의 연락처 B에 위치된 A에서 초래하는 비공개 키를 읽고; BA:XA↔B.S는 A와 B 사이에 메시지를 교환하도록 사용된 북 A의 연락처 B에 위치된 공통 대칭 키를 읽는다. 요약해서, 그룹 너트에 포함된 주소록을 사용하는 멤버 A는 자신을 포함하는 각각의 다른 멤버에 대한 연락처 엔트리를 가질 수 있고, 여기서 멤버 A가 암호로 제어되는 방식으로 둘 중 어느 방향으로든 연락처 멤버와 대화하는 것을 허용할 수 있는 키 구성요소가 저장될 수 있다.
행(26230 및 26240)은 각기 멤버 B 및 C에 대한 주소록을 나타낼 수 있고 행(26220)과 유사한 방식으로 읽힐 수 있지만 크로스 매트릭스 위치의 차이를 설명한다. 따라서, 그룹 G(26210)의 각각의 멤버는 자신을 포함하는 그룹의 모든 멤버에 대한 연락처 엔트리를 각각 포함하는 정의된 주소록을 가지고 있다고 말할 수 있고, 멤버가 암호로 제어되는 방식으로 둘 중 어느 방향으로든 임의의 다른 연락처 멤버와 대화하는 것을 허용할 수 있는 키 구성요소가 저장될 수 있다.
그룹 G에 멤버의 주소록은 단순히 그룹 초대 프로세스 동안 각기 할당될 수 있는 멤버 특정 그룹 키를 사용하여 다른 멤버로부터 은폐될 수 있다. 본 멤버 특정 그룹 키는 카탈로그 너트, FHOG 너트, 데이터 너트 등을 포함하는 그룹 내의 그룹 너트 및 다른 공유된 너트를 잠금해제하도록 멤버에 의해 사용된 동일한 키일 수도 아닐 수도 있다. 그것은 생성 시에 그룹 MC 및/또는 관리자가 그룹 너트에 모든 키에 완전한 접근을 할 수 있는 경우일 수 있다. 그런 후에, 각각의 멤버는 MC 및/또는 관리자로부터 앞으로 더 잘 은폐하도록 선택한 키로 주소록을 재암호화할 수 있다. 그룹 생성자가 원본 크로스 매트릭스 데이터 흐름 RBK의 사본을 보관하지 않는다면, 일단 그룹에 주소록이 생성자에게 접근가능하지 않은 키를 사용하여 멤버에 의해 재암호화되면, 해당 주소록의 원래 키는 앞으로 비공개로 유지할 수 있다.
도 263은 사용자 정의 데이터 흐름 구성에서 3명의 멤버 네트워크를 도시한다. 시작 기반으로 (26200) 및 (26210)을 사용하여, 멤버 A와 B 사이의 양방향 데이터 흐름이 삭제 및/또는 허용되지 않으면, 그것은 도해(26300)와 유사할 수 있다. A→B 방향 흐름은 연락처 엔트리(26324)로 표현될 수 있고, 그것은 A에서 B로 메시지를 더 이상 암호화 및/또는 복호화할 수 없도록 삭제될 수 있다. B→A 방향 흐름은 연락처 엔트리(26332)에 의해 표현될 수 있고, 그것은 B에서 A로 메시지를 더 이상 암호화하고 및/또는 복호화할 수 없도록 삭제될 수 있다. 따라서 양방향 데이터 흐름 A↔B가 제거될 수 있고 데이터 흐름의 크로스 매트릭스는 사용자 지정된 데이터 흐름 패턴을 반영할 수 있다.
도 264는 1↔N 구성에서 5명의 멤버 네트워크를 도시한다. 5개의 노드 그룹의 데이터 흐름의 크로스 매트릭스는 표 형식(26410)으로 표현될 수 있고, 모든 멤버는 귀인 및 방향성으로 서로 비공개로 통신할 수 있다.
도 265는 사용자 지정 구성에서 5명의 멤버 네트워크를 도시한다. 도 264의 5개의 노드 그룹은 (26500)에 도시된 바와 같이 데이터 흐름 A↔B 및 C↔E를 제한하도록 사용자 지정될 수 있다. 이러한 제한은 표시된 대로 4개의 연락처를 삭제하여 데이터 흐름(26510)의 교차 매트릭스에 반영될 수 있다.
도 266은 고객 지정 구성에서 5명의 멤버 네트워크를 도시한다. 도 265의 5개의 노드 그룹은 (26600)에 도시된 바와 같이 데이터 흐름을 제한하도록 사용자 지정될 수 있다. 이러한 제한은 도시된 바와 같이 다양한 연락처(매트릭스 요소), 키 부분 및/또는 키 세트를 삭제하여 데이터 플로우(26610)의 크로스 매트릭스에 반영될 수 있다. 데이터 흐름의 크로스 매트릭스에서 선택 방향성 RBK의 선택적 삭제는 임의의 무작위 방향성 데이터 흐름이 N명의 멤버의 임의의 크기 그룹에 대해 구성되는 것을 허용할 수 있다. 각각의 미니 주소록 연락처 엔트리(매트릭스 요소)는 임의의 두 멤버 사이에 데이터흐름 상에 읽기/쓰기/쓰기 전용/검증 전용 접근 권한을 포함하는 세부 접근 제어를 달성하기 위해 NAC 수준 단위를 구현할 수 있다.
도 267은 미니 너트 북이 어떻게 그룹 너트에서 표현되고 저장될 수 있는지를 도시한다. 표(26700)은 도 262로부터의 것과 동일하다. 표에 키의 단순한 재배열은 (26710)에 도시된 표를 초래한다. 다시, 각각의 행은 멤버에 대한 미니 주소록 또는 미니 너트북을 나타낸다. (26712)는 A에 대한 주소록일 수 있고, 여기서 그것은 3개의 연락처 엔트리 A, B, 및 C를 가질 수 있다. 키 KGA는 표(26700)에 도시되지 않을 수 있지만 그룹의 다른 멤버로부터 A의 주소록을 숨기는 목적을 위해 이전에 특정되었을 수 있다. 각각의 연락처 엔트리는 키 KGA로 암호화될 수 있고, 이는 암호화되지 않은 그룹에 저장되지 않거나 전혀 저장되지 않을 수 있다. KGA는 A가 이러한 그룹 너트에 접근할 수 있도록 허용된 동일한 키일 수 있고, 및/또는 그것은 A의 범용 키홀을 여는 것으로부터 노출된 키일 수 있고, 그로써 키 맵이 드러날 수 있다. 그런 다음, 본 그룹과 관련된 데이터 흐름의 크로스 매트릭스로부터의 모든 다른 키 구성 요소는 “대칭”, “공개 키로” 및 “키 쌍으로부터”로 명명된 열 하에 구성될 수 있다. 둘 중 어느 하나의 표 형태는 그룹 너트의 페이로드 내부에 저장을 위한 편리한 프로그램 데이터 구조에 용이하게 저장될 수 있다.
도 268은 데이터 흐름의 기존 그룹 크로스 매트릭스에 멤버를 추가하는 것을 도시한다. 멤버 A가 본 그룹 G 표(26800)를 생성하고 멤버 B가 그룹 멤버쉽에 멤버를 추가할 수 있게 하는 그룹 관리자로서 멤버 B를 구성했다고 가정한다. 멤버 B에 대해 이러한 유형의 접근이 멤버 B에 대해 구성될 수 있는 한 가지 방식은 멤버 B에게 그룹 너트 G에 대한 읽기/쓰기 접근을 부여하는 것일 수 있고, 따라서 멤버 B는 그룹 멤버쉽 목록 및/또는 데이터 흐름 표의 그룹 크로스 매트릭스를 포함하는 페이로드에 대한 편집 작업을 수행할 수 있다. 본 예시(26810)는 멤버 B가 그룹에서 다른 멤버의 각각과 너트 기반 관계(2명의 그룹)를 설정했을 수 있고, 그로써 멤버 B는 그 자신과 다른 멤버 사이에 RBK 세트를 포함하는 그룹 키를 가질 수 있다고 가정한다. 이러한 관계 RBK는 도면에서 B→ARBK, B→CRBK, 및 B→DRBK로 표시될 수 있고, 그들은 각각의 멤버의 미니 주소록에 새로운 멤버 D에 대한 각각의 카탈로그 엔트리를 암호화하도록 사용될 수 있다. 이러한 초기화 키는 그들이 그룹 너트 페이로드에 대한 쓰기 접근에 대해 구성되면 그리고 그러해야만, KGA, KGB, KGC 및 KGD와 같은 각각의 그룹 접근 키로 각각의 멤버에 의해 나중에 교체될 수 있다. 멤버 B는 새로운 멤버 D를 추가하고 뒤이어, 새로운 멤버 D와 자신, B를 포함한 멤버의 나머지 사이의 데이터 흐름의 증분 크로스 매트릭스를 확립하기 위해 필요한 모든 키 세트를 생성한다. 표(26810)에서, 대칭, 공개 키로 및 키 쌍으로부터에 대한 표기법은 저들 키에 대한 생성자가 멤버 D로부터 일 수 있음을 언급할 수 있고, 실제로 멤버 B는 그가 멤버 D를 그룹에 초대하는 시점에 그들 모두를 생성했을 수 있다.
추가 그룹 관리자를 할당하는 또 다른 구현예는 자신의 멤버 그룹 키를 사용하여 암호화된 관리자 키로서 할당된 관리자에게 주어질 수 있는 관리자 키로 멤버 그룹 키의 또 다른 사본을 암호화하는 것일 수 있다. 각각의 멤버의 그룹 키에 접근하는 관리자는 모든 멤버의 매트릭스 요소를 복호화 및 편집하고 해당 멤버의 그룹 키를 사용하여 그를 암호화할 수 있다. 본 방법은 그룹에 대해 0명 이상의 관리자를 허용할 수 있다. MC는: 처음에 그룹을 함께 모으는 데에만 수반되고, 앞으로 관리자가 되도록 한 명 이상의 그룹 멤버를 할당하고; 2) 그룹 멤버가 되고 그룹 관리자 중 한 명이 되는 것을 유지하고; 3) 그룹 멤버가 되지만 또 다른 멤버에게 관리자 역할을 할당하는 것을 결정할 수 있다. 관리자 역할을 남겨 두고 그룹을 형성하는 것이 전제적으로 가능할 수 있고, 이 경우에 미래에 그룹 특성을 수정하기가 매우 어려울 수 있고 동일한 멤버 사이에 임의의 다른 배열에 영향을 주기 위해 새로운 그룹을 생성하는 것을 요구할 수 있다. 데이터 흐름의 크로스 매트릭스는 컴팩트한 암호 방식으로 N명의 멤버의 무작위 네트워크에서 방향 흐름을 구성하고 제어하기 위한 프레임워크를 제공할 수 있다. 그룹 G의 멤버는 동일한 멤버쉽을 가진 다른 그룹을 형성할 수 있지만 소망된다면 데이터 흐름 구성의 다른 크로스 매트릭스를 가질 수 있다. 데이터 흐름 관리의 방향성 측면은 멤버 사이의 소망되는 흐름에 따라 특정 키의 은폐 및/또는 제거를 요구할 수 있으므로, 각각의 멤버는 데이터 흐름 키를 가질 수 있는 멤버에 대해 구성된 키홀로 공유된 너트만을 생성할 수 있고, 그로써 멤버가 누구에 대한 너트를 입력할지 및/또는 너트가 누구에 의해 열릴지를 한정하고; 또한, 키홀이 너트 내에서 어떤 접근이 허용되는지를 더 한정하도록 NAC와 유사한 미세 접근 제어로 데이터 흐름의 크로스 매트릭스가 확장될 수 있다. 또한, 데이터가 너트를 통해 공유된다면, 각각의 너트는 임의의 그룹 메커니즘과 독립적으로 작동할 수 있는 너트의 NAC 특징을 사용하여 미세 CRB AC에 영향을 미치도록 소유자/생성자에 의해 구성될 수 있다.
버전 마커
이 명세서의 다양한 섹션에서, 버전 마커가 사용되었지만, SDFT 및 너트 컨테이너의 최저층으로부터 초래하여 그러한 객체에 작용하는 시스템으로 긴급 편재적 보안을 통합하는 분산 및 탈중앙집중화된 환경에서 적용 가능하며 요구되는 목적 및 특성에 대해서는 더 충분히 설명되지 않았다. 한 번에 단일 사용자에 의해 단일 시스템 상에 문서를 다르게 반복한다는 것을 나타내기 위해 제품 버전 번호를 사용하는 것은 상당히 흔하다. 공유 문서가 있는 다중사용자 환경에서, 연속성의 개념이 그 효과성을 빠르게 잃고 수정을 둘러싼 그리고 그에 관한 다른 속성이 고려되는 것이 요구될 수 있다. 다음 도면에 모든 예시는 잘 알려진 해싱 방법의 다양한 유형에 의해 실행될 수 있지만 일부 구현예에 대해 선호되는 방법은 인증가능한 귀인 특성으로 인해 디지털 서명(dign)일 수 있다. 버전 마커로 변형 및/또는 해시를 사용할 때, 하나 대 또 다른 하나 사이에 연속성의 어떠한 관점도 추론하는 용이한 방법이 없을 수 있다. 유일하게 신뢰가능하게 측정가능한 특성은 차이에 관한 것일 수 있다 - 하나의 디그는 다른 것과 다른가? 차이는 원본 재료가 다를 수 있음을 나타낼 수 있다. 이론적으로, 충돌 가능성이 임의의 해싱 또는 디그 방법으로 존재할 수 있지만, 가능성은 해시의 길이, 디그 키의 크기 및/또는 솔팅의 존재를 포함하는 인자에 따라 매우 작을 수 있다.
버전 마커에 대한 참조가 있을 수 있는 어느 곳에서든, 다음 방법은 그대로 또는 필요에 따라 변형과 함께 적용할 수 있다. 이러한 방법 중 모두가 아니라면 대부분은 해당 기술분야의 당업자에게 잘 알려져 있을 수 있지만 모든 구성 요소가 어떻게 작동하는지에 대한 보다 완전한 설명을 제공할 수 있도록 여기서 제공된다. 너트의 특별한 특성 중 하나는 이 너트가 페이로드를 전달할 뿐만 아니라 이력 검토를 포함할 수 있는 카르나크 검토를 전달할 수 있다는 것일 수 있다. 너트는 필요하면 언제든지 연장될 수 있는 상당한 시작 길이의 너트ID로 불리는 PUID를 가질 수 있다. 머클 트리와 같은 그러나 이에 국한되지 않는 더 효율적으로 차이를 알아차리는 프로세스를 구성하기 위해 각각의 이력 검토를 구성하는 여러 가지 변형이 있을 수 있지만, 본 예시의 목적을 위해, 검토 엔트리 당 단순한 2개의 디그가 고려될 수 있다. 각각의 검토 이력 델타는 델타 디그(DD) 및 요약 디그(DS)과 함께 카르나크 검토에 저장될 수 있으며, 여기서 요약 디그는 디그(델타 디그 + 이전 요약 디그)일 수 있고, 그로써 모든 이전 검토의 이력 관점에서 디그의 빠른 표시를 제공한다. 본 예시는 필요에 따라 요약 디그(DS), 너트ID, 페이로드, 카르나크 검토, 페이로드 디그(DP) 및 다른 속성을 사용할 수 있다.
도 269는 어떻게 공유된 너트에 대한 일련의 비동기 업데이트가 검출되고 해소될 수 있는지를 도시한다. 표(26910)는 너트ID=NID로 공유된 너트, 적어도 3명의 멤버 앨리스, 밥, 및 캐롤의 그룹에 대해, 시간 T1에서 각각의 사용자에 대해 너트 NID의 로컬 사본에 대해 DS=DS1을 나타내는 너트 페이로드 검토 이력으로 1명의 사용자가 구성하는 1개의 변경 시나리오를 통해 작동한다. 시간 T2에서, 앨리스는 너트 NID의 페이로드를 수정하여 검토 델타가 너트의 검토 이력에 삽입되게 하고, 최종 델타 및 요약 디그 DS2=dign(DD+DSl)에 대해 DD를 생성하고, 너트에 수정된 페이로드를 저장하고, DS2, 마지막 수정의 날짜/시간, 및 업데이트의 사용자 ID를 포함하는 속성을 갖는 너트의 평문 메타데이터를 업데이트한다. 그런 후에, 앨리스의 프로세스가 수정된 너트 NID를 저장하고 NUT서버는 NID가 그룹에 대해 공유 객체임을 결정하고, 따라서 그룹에 대해 카탈로그 너트를 업데이트하고, 카탈로그 폴링을 수행할 수 있다. 그런 후에, 밥과 캐롤의 시스템 그 자체는 카탈로그 폴링을 수행하여 앨리스가 가지고 있을 수 있고 앨리스의 시스템으로부터 요청할 수 있는 NID DS2의 새로운 버전을 식별한다. 시간 T3에서(공교롭게도), 밥과 캐롤은 앨리스의 너트 NID DS2를 받아 NID DS1의 자신의 사본과 그것을 병합하는 프로세스를 시작한다. 본 시나리오에서, 밥과 앨리스의 각각의 시스템은 다음의 병합/동기화 단계를 수행할 수 있다: 밥의 로컬 NID DS1의 버전 마커는 방금 받은 앨리스의 NID DS2와 다를 수 있고, 프로세스는 두 개의 너트를 모두 열고 DS1의 DS로 검토 엔트리를 찾을 수 있는지 여부를 확인하기 위해 앨리스의 너트의 이력을 브라우징하기 시작할 수 있다. 발견되면, 밥의 너트는 앨리스의 너트보다 더 오래된 것일 수 있고, 프로세스는 밥의 너트를 앨리스의 너트로 간단히 대체하여 밥이 NID DS2의 로컬 사본을 보유하게 되므로 그의 시스템은 이제 동기화될 수 있다. 그러나, DS1이 앨리스의 너트의 이력에 발견되지 않는다면, 프로세스는 앨리스의 너트가 밥의 너트보다 더 오래된 것인지 확인하기 위해 밥의 너트의 이력에서 DS2를 찾을 수 있다. 발견된다면, 그것이 앨리스의 NID DS2보다 더 새로울 수 있기 때문에, 프로세스는 앨리스의 너트를 바로 폐기하고 밥의 너트 NID DS1을 유지할 수 있다. DS2가 밥의 너트의 이력에 발견되지 않으면, 프로세스는 너트 NID의 밥의 버전과 앨리스의 버전 사이에 동일한 DS 값을 갖는 공통 이력 엔트리를 찾기 위해 시간에서 되돌아본다. 공통 DS 값이 발견되지 않거나 각각의 이력에서 더 깊은 곳에서 발견될 수 있으면, 양 이력의 완전한 병합이 검토되는 각각의 델타에 대해 범용 타임스탬프를 사용하여 시작할 수 있고(제 1 경우에, 그것은 하나 또는 둘 모두의 이력의 개시로부터 시작할 수 있고, 다른 경우에, 그것은 공통 DS가 발견되는 것으로부터 시작할 수 있음); 임의의 업데이트 충돌은 CRDT 방법(충돌 없는 복제 데이터유형), 깃(Git) 유사 방법, 나중 시간에 인증된 사용자에 의해 수동으로 방문될 수 있는 페이로드 자체 내의 텍스트 충돌 주석을 포함할 수 있는 너트의 메타데이터에 의해 지시될 수 있는 바와 같이 바람직한 방법에 의해 자동으로 해소될 수 있고; 전체 병합이 완료되면, 페이로드는 병합 이력으로부터 재구성될 수 있고; 이력의 병합은 각각의 델타에 대해 DS의 재계산을 요구할 수 있고(디그의 계산이 더 많은 CPU 사이클을 취할 수 있으므로, DS는 단순한 해싱 방법으로 계산될 수 있는 반면에, 디그로서 DD를 유지하고, 그로써 데이터의 출처는 보존함), 이는 DS3과 같은 DS2와는 다른 DS를 초래할 수 있다(본 예시가 이러한 기준에 맞지 않을 수 있으므로 우리는 이를 간단히 논의할 수 있다). 캐롤의 시스템이 너트 NID DS1 및 NID DS2를 병합하는 동일한 프로세스를 수행할 때, 그녀의 시스템은 NID DS2만 보유하게 되므로, 시간 T4에서, 그룹의 세 명의 멤버 모두는 NID DS2를 동기식으로 보유할 수 있다.
완전한 병합이 발생하고 DS3가 밥의 시스템에 의해 계산될 수 있을 때, 그것은 NID의 새로운 버전, 즉, NID DS3로 간주될 수 있고 시스템이 동기화를 달성할 때까지 카탈로그 폴링 프로세스가 다시 시작할 수 있다. 이전 예시에서, 세 명의 멤버 모두는 동일한 버전 NID DS1로 시작했을 수 있고, 그래서 병합 상황이 발생하지 않았을 수 있다.
표(26920)는 너트ID=NID로 공유된 너트, 적어도 3명의 멤버 앨리스, 밥, 및 캐롤의 그룹에 대해, 시간 T1에서 각각의 사용자에 대해 너트 NID의 로컬 사본에 대해 DS=DS1을 나타내는 너트 페이로드 검토 이력으로, 지연된 수신자 시나리오를 갖는 1명의 사용자가 구성하는 2개의 변경을 통해 작동하고, 캐롤의 시스템은 현재 오프라인이거나 네트워크의 도달의 밖에 있을 수 있다. 시간 T2에서, 앨리스는 NID DS1을 제 1 수정하여 NID DS2를 생성할 수 있다. 시간 T3에 의해, 밥의 시스템은 앨리스의 시스템과 동기화되어 이제 NID DS2를 보유할 수 있지만 캐롤은 여전히 오프라인 상태에서 원래의 NID DS1을 유지할 수 있다. 시간 T4에서, 밥은 NID DS2에 대해 제 2 변경을 하여 NID DS3을 생성할 수 있다. 시간 T5에 의해, 밥의 시스템은 앨리스의 시스템과 동기화되어 NID DS3를 보유하고 캐롤은 여전히 오프라인 상태일 수 있다. 시간 T6에서, 앨리스는 오프라인 상태일 수 있고, 캐롤은 온라인 상태일 수 있고, 카탈로그에 대해 밥의 시스템을 폴링할 수 있고, 밥으로부터 NID DS3을 요청할 수도 있고, 밥으로부터 NID DS3를 받을 수 있고, 그녀의 DS DS1이 NID DS3의 최근 이력에서 발견됨을 발견할 수 있고, 그녀의 NID DS1을 NID DS3으로 단순히 대체할 수 있고, 따라서 세 명의 멤버 모두가 이제 동기화될 수 있다.
도 270은 버전 변경에 관한 두 개의 예시를 도시한다. 표(27000)는 도 269에서 발견된 바와 같이 동일한 시작 시나리오로 작동할 수 있고, 여기서 시간 T1에서, 세 명의 멤버 모두는 NID DS1을 가지고 있을 수 있고 알고 있을 수 있다. 시간 T2에서, 밥과 앨리스는 각각 NID DS1의 사본에 대해 로컬 변경을 하여, 앨리스에 대한 DS2 및 밥에 대한 DS3을 생성할 수 있다. 시간 T3에서, 캐롤은 밥에 대해 카탈로그 폴링을 수행할 수 있고 밥으로부터 DS3을 요청할 수 있고 그런 후에, DS1을 DS3으로 교체할 수 있다; 밥은 아무것도 하지 않는다; 앨리스가 밥을 폴링하고 밥에게 DS3을 요청했을 수 있고, 그런 후에, 앨리스는 DS3을 DS2와 병합하여 DS4를 생성할 수 있다. 시간 T4에서, 밥은 앨리스를 폴링할 수 있고 DS4를 수신하고 DS4보다 더 오래된 것일 수 있으므로 DS3을 대체할 수 있다; 캐롤은 앨리스를 폴링할 수 있고 DS4를 요청할 수 있고 그런 후에 DS4를 받을 수 있고, 그런 후에 이는 그녀의 시스템이 DS3을 DS4로 대체하게 할 수 있다. 따라서, 그룹은 이제 시간 T5에서 동기화될 수 있다.
표(27010)은 도 269에 나와 있는 것과 동일한 시작 시나리오로 작동할 수 있고, 여기서 시간 T1에서, 세 명의 멤버 모두는 NID DS1을 가지고 있을 수 있고 알고 있을 수 있다. 시간 T2에서, 밥과 앨리스는 NID DS1의 사본을 로컬 변경할 수 있고, 앨리스에 대해 DS2 및 밥에 대해 DS3을 생성한다. 시간 T3에서, 캐롤은 밥에 대해 카탈로그 폴링을 수행할 수 있고 밥으로부터 DS3을 요청하고 그런 후에 DS1을 DS3으로 교체할 수 있고; 앨리스가 밥을 폴링하고 밥으로부터 DS3을 요청한 후에, 앨리스는 DS3을 DS2와 병합하여 DS4를 생성할 수 있고; 밥은 그의 너트 NID DS3을 다시 수정하여 DS5를 생산할 수 있다. 시간 T4에서, 밥은 캐롤을 폴링할 수 있고 결국 폐기되는 DS3을 수신할 수 있고, 그런 후에 그는 앨리스를 폴링하고 DS4를 수신할 수 있고; 앨리스는 밥을 폴링하고, DS5를 수신할 수 있고, 캐롤은 앨리스를 폴링하고 DS4를 요청할 수 있고 그런 후에 DS4를 수신할 수 있고, 그런 후에 이는 그녀의 시스템이 DS3를 DS4로 대체하게 할 수 있다. 시간 T5에서, 앨리스는 수신된 DS5를 DS4와 병합하여 DS6를 생성할 수 있고; 밥은 수신된 DS4를 DS5와 병합하여 DS6를 생성할 수 있고; 앨리스는 아무것도 하지 않는다. 시간 T6에서, 밥과 앨리스는 서로 폴링하고 아무 것도 하지 않고; 캐롤은 밥을 폴링하고 DS6을 요청할 수 있고, 그런 후에 DS6을 수신할 수 있고 더 새로울 수 있으므로 DS4를 DS6으로 교체할 수 있다. 따라서, 그룹은 이제 시간 T7에서 동기화될 수 있다.
본 예시는 메모리에 버전 마커를 유지하는 상대적으로 낮은 오버헤드로 동기화를 달성하기 위해, 어떻게 비연속 버전 마커가 그룹 및 카탈로그 너트의 메커니즘을 활용하여 카르나크 검토를 갖는 너트와 함께 사용될 수 있는지를 도시한다. 데이터의 그러한 전달에 적용할 수 있는 많은 다른 효율성이 있을 수 있지만 가장 단순한 통신 방법에서조차, 본 동기화 방법은 만족스럽게 동기화를 수행할 수 있다.
익명의 식별자
프라이버시는 익명의 식별자라 할 수 있는 식별자에 대한 익명의 참조를 생성하여 시스템에 걸쳐 일부 정도로 달성될 수 있다. 시스템의 네트워크에서, 시스템 및/또는 사용자는 이론적으로 공간 및 시간에 걸쳐 고유성을 유지할 수 있기 때문에 PUID 형태로 그들 자신과 다른 사람에게 보다 유의미해질 수 있는 비공개 특정 식별자를 유지하고자 할 수 있다. 접근 제어는 식별자를 유지하는 데에도 도움이 될 수 있다.
시스템의 정보 및/또는 민감한 속성을 외부화할 때, 해당 용도에 맞는 익명화 방법을 사용하여 내부적으로 알려진 식별자를 마스킹하는 것이 신중할 수 있다. 본 개시의 구현예는 단기간(세션 솔트, 넌스 또는 IV) 및 장기간(공통 또는 공지된 솔트)을 포함하는 다른 유형의 익명화 방법의 사용을 요구할 수 있다. 도 271은 익명의 ID(AID)를 유도하기 위한 이례적인 절차를 도시한다. (27110)은 또한 익명 식별자가 원래 식별자를 마스킹하기 위해 어떻게 다중 반복을 수행할 수 있는지를 보여 줄 수 있다.
단기간 익명화는 세션이 끝날 때 폐기될 수 있는 세션 기반 솔트, 넌스 또는 IV를 요구할 수 있다. 장기간 익명화는 공통 또는 공지된 솔트를 요구할 수 있고, 이는 안전한 방식으로 저장되고 및/또는 일관되고 및/또는 재생가능한 방식으로 운영 환경으로부터 전달가능할 수 있다. 보호된 네트워크 및/또는 시스템의 외부에서 데이터 교환에 관여할 때, 다른 것들 가운데 키 ID, 너트ID, 네트워크 이름, 그룹 ID는 공통 솔트의 사용을 보장하기에 충분히 민감한 것으로 간주될 수 있다. 이러한 장기간 솔트는 사용자의 선택 및/또는 개발자의 선택에서 각각의 특정 용도에 대해 익명 ID를 도출하기 위해 일관된 방식으로 적용될 수 있다. 랑데부 서버(RZ)와 같은 그러나 그로 한정되지 않는 데이터 교환 및 인덱싱 서버는 익명 ID를 광범위하게 사용하여 사용자의 비공개 식별자에 대해 공유되는 것으로부터 중립성을 더 유지할 수 있다. 그러나, RZ와 같은 일부 포인트 시스템이 수령인에게 데이터를 실제로 전송하기 위해 하드 IP 주소를 요구할 수 있으므로, 네트워크 및/또는 하드웨어 통신에 관한 한, 그러한 마스킹 노력에는 특정 제한이 있을 수 있다. 도 272는 익명 ID의 다양한 매핑을 도시한다. 표(27200, 27210 및 27220)는 어떻게 너트서버 ID가 외부 RZ과 같은 외부 시스템에 익명화될 수 있는지를 보여주지만, 매우 특정할 수 있는 일부 IP 매핑이 있을 수 있음을 보여준다.
랑데부 서버
도 273은 3개의 RZ을 도시하는 네트워크 도해이다. 랑데부 서버(RZ)는 적어도 3개의 다른 모드에서 그 자신을 나타낼 수 있다: iRZ, eRZ 및 RZ. 도 274는 RZ의 3개의 모드를 도시한다. iRZ은 다른 eRZ/iRZ에 의해 접근가능할 수 있는 인터넷 RZ일 수 있고 독립형 모드(27400)에서 작동될 수 있다. RZ 모드로 작동 중인 RZ는 너트서버(NS)(27410)와 페어링될 수 있다. eRZ는 동일한 에코그룹/에코시스템(27420) 내의 다른 eRZ/RZ에 의해 접근가능할 수 있는 에코그룹/에코시스템 RZ일 수 있다. 도 275는 RZ의 네트워크 내의 RZ 접근성의 성질을 도시한다. RZ은 특정 모달 계위 iRZ-eRZ-RZ에서 서로 통신하고 네트워크하는 것을 선호할 수 있음이 본 도면으로부터 명백할 수 있다.
도 276은 RZ의 네트워크를 도시한다. RZ의 다양한 모드는 RZ 네트워크를 활용하여 다른 수준의 계위로 자체 구성함으로써 일종의 효율성 기능을 수행할 수 있다. 계위를 갖지 않는 RZ의 네트워크는 RZ과 NS 사이의 순수한 피어 투 피어 통신으로 유도할 수 있고, 그런 후에 이는 RZ 호스트당 네트워크 연결, 통신 및/또는 워크로드의 방어되지 않는 정체로 유도할 수 있다. NS 및 RZ(NSRZ)의 네트워크의 전반적인 설계는 서로 정보를 푸시하기보다는 조회(폴링)를 권장하기 위한 것일 수 있다. 엄격한 규칙은 아니지만 그러한 격려는 전체적으로 네트워크 상의 부담을 완화시키고 네트워크의 각각의 수준에서 자체 조직 및/또는 자체 유지를 촉진할 수 있다. 3개의 NSRZ을 포함하는 에코그룹(27602)은 도시된 바와 같이 계위로 일부 바람직한 제형에 따라 자체 구성하고, 여기서 RZ 모드에 NSRZ(27602)은 eRZ 모드에 NSRZ(27604)에서 RZ에 주로 문의할 수 있다. RZ 모드에 NSRZ(27606)은 eRZ 모드에 NSRZ(27604)에서 RZ에 주로 문의할 수 있다. (27604)의 eRZ은 동일한 에코그룹의 iRZ(27632) 및 다른 eRZ(27622)을 마주하는 인터넷에 대한 다중 연결을 유지할 수 있다. eRZ(27622)은 iRZ(27634)에 대해 연결할 수도 있다. iRZ의 네트워크는 자체(27630)의 네트워크 및/또는 다른 독립형 iRZs(27642 및 27640)을 가로지른 네트워크를 유지할 수 있다.
도 276에 실제적 신(sheen)을 가로놓으며, 앨리스는 집에서 세 대의 개인용 컴퓨팅 장치 가운데 구축된 너츠 에코그룹을 가질 수 있고, 여기서 (27614)는 무선 태블릿이고 (27616)은 무선 랩탑이며 (27612)는 메인 라우터 포트에 연결된 이더넷 케이블을 갖는 데스크탑일 수 있다. 앨리스는 NSRZ의 에코그룹에 대한 eRZ으로서 역할을 하는 자격을 위해 데스크탑, 랩탑, 그런 후에 태블릿을 우선하는 것을 선호할 수 있다. 이러한 선호는 다른 인자 가운데 각각의 장치의 능력, 연결성, 안정성, 용량에 관한 그녀의 인식 때문일 수 있다. RZ은 기초적인 자기 구성 거동을 허용하는 단순한 합의 프로토콜과 페어링된 자체 검토 방법으로 부여받을 수 있다. 앨리스의 태블릿(27614)은 메인 라우터에 대해 와이파이 범위를 벗어날 수 있고 그러므로 랩탑이 적어도 제 2 와이파이 어댑터를 가질 수 있다면, 범위 내에 있을 수 있는 그녀의 랩탑 RZ이 블루투스 또는 직접 와이파이와 같은 그러나 그로 한정되지 않는 통신의 대안적 수단을 사용하여 임시로 중계 서비스가 태블릿으로부터의 메시지를 중계하고 및/또는 처리하는 것을 허용할 수 있는 지점에서 그녀의 eRZ 데스크탑(27612)과 통신할 수 없다. 본 구성은 그녀의 NSRZ이 그녀의 문의를 가능한 한 만족시키도록 함으로써 그녀의 에코그룹으로부터 인터넷 iRZ으로의 통신 및 질의를 제한한다. 앨리스의 eRZ(27612)가 응답할 수 없는 그러한 쿼리만이 외부 iRZ(27640)으로 중계될 수 있다. 데스크탑이 충돌하면, 앨리스의 랩톱은 그녀의 데스크탑이 더이상 도달가능하지 않음을 결정할 때, 에코그룹의 eRZ으로서 자동으로 인수한다. 이러한 자기 구성 거동은 eRZ 계위 선호 및/또는 다른 동적 방법에 관한 앨리스의 설정으로 인한 것일 수 있다.
밥의 에코그룹(27600)은 4개의 장치(27602, 27604, 27606 및 27622)를 포함할 수 있다. 그의 집 내에서, 장치는 (27600)에 도시된 바와 같이 자체 구성될 수 있다. 그러나, 그는 랩탑(27622)을 갖고 여행 중일 수 있고, 현재 그는 분할된 에코그룹(27620)에서 운영 중일 수 있다. 그의 랩탑(27622)은 그의 집 eRZ에 연결을 시도할 수 있지만 인터넷 서비스 공급자의 NAT 및/또는 다른 제약으로 인해 실패할 수 있다. 그러한 지점에서, 그의 랩탑은 어떠한 다른 장치도 도달가능하지 않기 때문에, 하나의 장치의 에코그룹에 대한 eRZ 역할을 해야만 하므로 도달가능한 iRZ(27634)에 연결할 수 있다고 선언할 수 있다. 밥의 자체 에코그룹 내에 임의의 공유된 문서는 그룹 너트 및 루프백 도관을 사용하여 그러한 분열된 에코그룹에서조차 결국 동기화할 수 있음을 유념한다.
iRZ은 협력하고, 로드 밸런싱, 지리적 커버리지, 벤더 SLA 계약, 및 네트워크 세그먼트화와 같은 그러나 이에 국한되지 않는 다른 목적을 위해 iRZ 그룹(27630)을 형성할 수 있다. iRZ 그룹은 또한 관련 인자 및 속성을 사용하여 적절할 때, 자기 구성 측면을 향유할 수 있다. RZ의 자기 구성 측면은 장치 또는 NSRZ ID의 우선순위 목록만큼 단순할 수 있거나, 시스템의 네크워크 및 네트워크에 대한 자동화된 동적 성능 모니터를 가질 수 있는 만큼, 그리고 주기적으로 및/또는 네트워크 실패, 시스템 실패, 로드 밸런싱, 로드 공유, 해킹 공격, 및 네트워크 수정을 포함하는 관련 이벤트에 응답해서 동적으로 전개될 수 있는 고효율성 구성에서 유도하는 복잡한 일련의 분석을 처리하는 것만큼 복잡할 수 있다.
도 277은 NSRZ의 3개의 에코그룹을 갖는 네트워크 도해이다. 인터넷/WAN(27700)은 iRZ 서비스(27710), 사설 LAN(27720)을 통한 앨리스의 NSRZ 에코그룹(27722), 사설 LAN(27740)을 통한 두 개의 장치(27744 및 27742)를 포함하는 캐롤의 NSRZ 에코그룹, 사설 LAN(27730)을 통해 두 개의 장치(27732 및 27734)를 포함하는 밥의 NSRZ 에코그룹과 같은 다양한 위치에서 다양한 시스템을 가로질러 디지털 연결 연결성을 제공할 수 있다.
도 278은 도 277에 네트워크의 논리 연결 도해를 도시한다. (27800)에서 시나리오는 밥(27812), 앨리스(27832) 및 캐롤(27842)에 대해 각각의 에코그룹에서 장치로부터 연결을 수신하는 랑데부 서버(27822)를 보여줄 수 있다. 밥과 앨리스의 에코그룹은 더 큰 IP 주소 공간을 허용하는 TCP/IP의 IPv6 모드에서 작동할 수 있는 반면에, 캐롤의 에코그룹 장치는 주로 IPv4 환경에서 작동한다. 더 큰 IP 주소 공간에 대한 요구가 원래 설계될 때 구상되지 않을 수 있지만, 인터넷에 연결된 장치의 폭발적 증가로 인해, 더 많은 IP 주소에 대한 필요성은 IPv6로서 IP 주소의 확장 및 재구성을 필요로 할 수 있다; 그러나, 기대된 가용 수명보다 더 긴 수명을 갖는 다수의 기존 장치, 어플리케이션, 네트워크 및 시스템으로 인해 채택은 매우 느려질 수 있고 따라서 IPv6로의 전이를 지연시킨다. 이는 제안된 시작 길이가 적어도 512 비트일 수 있는 너트ID의 형식에서 다소 긴 PUID를 생성하는 것을 권장하는 기여 예시 중 하나일 수 있다.
iRZ(27822)는 IPv6 및 IPv4와 같은 다양한 TCP/IP 운영 환경을 연결하기 위한 조력자 역할을 할 수 있다. 일반적으로, IPv4 네트워크는 NAT 환경에서 작동할 수 있고, 여기서 라우터는 단일 인터넷 주소를 로컬 주소의 세트에 매핑하여 주소를 보존하고 및/또는 로컬 네트워크 구성을 은폐한다. NAT 환경에서, 특별한 구성 변경이 그러한 접근을 허용하기 위해 로컬 라우터에서 이루어지지 않는다면, 사용자 장치는 일반적으로 수신 연결 요청을 받지 못할 수 있다. 따라서, 그러한 경우에, iRZ는 NAT 뒤에서 작동하는 장치에 대한 아웃바운드 연결 수신 지점으로서 역할을 하고, 라우터는 연결 요청을 처리하도록 구체적으로 구성되지 않는다. IPv6 네트워크에 있어서, RZ은 인터넷을 통해 다양한 분산된 네트워크에 걸쳐 데이터를 교환하는 공통 연결 지점으로서 역할을 여전히 수행할 수 있고, RZ은 IPv4, NAT 환경 및 방화벽과 같은 그러나 그로 국한되지 않는 제한된 네트워크에 대한 브리징 메커니즘 역할을 할 수 있다. 인터넷을 통해 연결하고 통신하는 다양한 제한을 갖는 네트워크의 다양성으로 인해, iRZ에 의해 제공되는 것과 같은 공통 연결 수신 지점의 그룹 또는 그룹들이 필요할 수 있다. (27850)의 시나리오는 어떻게 IPv6 장치 및/또는 네트워크가 직접 연결하는지를 보여 줄 수 있지만; 로컬 인터넷 접근 제공자에 관한 제약은 그러한 직접 IPv6 작동이 발생하는 것을 허용하거나 그렇지 않을 수 있고, 이러한 경우에, 작동의 모드는 NAT 뒤에서 작동하는 것과 다르지 않을 수 있다.
도 279 내지 도 284는 다양한 RZ 네트워크 구성을 도시한다. 도 279는 앨리스 에코그룹(27910) eRZ 장치(27912) 및 밥 에코그룹(27940) eRZ 장치(27942)로부터 인터넷 필드 연결에 단일 iRZ(27900)을 보여준다. 앨리스는 현재 그녀의 에코그룹에 단일 장치를 가질 수 있다. 밥은 그의 에코그룹에 두 개의 장치를 가질 수 있고 제 2 장치(27980)는 eRZ(27942)에 연결하는 RZ 모드에서 실행 중일 수 있다. 도 280은 밥 에코그룹의 부분(28030)으로서 작동하지만 아마도 밥이 일부 볼 일을 보기 때문에 그의 메인 에코그룹(28040)으로부터 분할된 밥의 휴대폰(28032)을 추가한다. 밥 에코그룹의 두 개의 별개의 부분은 그들이 밥 에코그룹으로 불리는 동일한 그룹의 부분일 수 있기 때문에 밥 에코그룹을 동기화하는 목적을 위해 데이터를 교환하기 위해 iRZ(28000)에 모일 수 있다. iRZ의 책임은 너트ID를 인덱싱, 너트를 캐싱, 및 효과적인 방식으로 그러한 데이터 전송을 용이하게 하도록 라우팅 테이블을 동적으로 구축하는 것을 포함한다. 랑데부 서버는 임의의 클라이언트의 너트를 열 수 없도록 의도적으로 설계될 수 있고; RZ는 유지 및 운영 그리고 (클라이언트 호스팅된 iRZ에 대해) 아마도 제한된 클라이언트 접근의 목적을 위해 접근할 수 있는 키 및 너트를 저장할 수 있지만, 일반적으로 그러한 키를 에스크로하거나 그들에 접근할 수 없기 때문에 클라이언트 너트를 열 수 없다. 그러므로, RZ가 통신 책임을 수행하는 데 필요한 정보의 상당 부분은 너트로부터의 평문 메타데이터 및 너트와 함께 전송될 수 있는 임의의 추가 래퍼 정보에서 유도될 수 있다.
도 281은 밥이 그의 여분의 랩탑 상에 일부 업무를 수행하기 위해 앨리스의 아파트를 방문하는 것에 관한 것이다. 앨리스의 유일한 장치(28112)는 iRZ(28100)에 연결된 앨리스 에코그룹을 작동할 수 있다. 밥이 앨리스의 와이파이 환경에서 그의 랩탑을 부팅할 때(그녀는 이미 그에게 와이파이 접근 코드를 제공했을 수 있음), 랩탑(28122)에서 NSRZ는 즉각적인 로컬 네트워크에 다른 장치 중 어느 것도 위치시킬 수 없으므로, eRZ 모드에서 밥 에코그룹 NSRZ를 작동하기 시작할 수 있다 (우리는 그가 VPN을 통해 LAN으로 터널링하는 경우를 고려하지 않을 수 있다.) 그런 다음, eRZ(28122)는 iRZ에 연결하고, 그의 에코그룹의 분할을 실행하는 가정용 장치로 인터넷을 통해 밥 에코그룹 카탈로그에 대해 폴링할 수 있다. 충분한 시간이 주어진다면, 밥이 앨리스의 아파트에서 그의 랩탑(28122) 상에 그의 에코그룹을 가로질러 공유된 너트에 대해 행한 임의의 수정은 결국 그의 분할된 에코그룹(28140)에 대한 접근을 동기화하고, 따라서 그의 에코그룹의 모든 장치는 결국 일관될 수 있다. 이것은 또한 밥이 와이파이 기능을 껐기 때문에 전화 통신사의 데이터 네트워크를 통해 동기화할 수 있는 그의 휴대폰(28130)을 포함한다.
도 282는 앨리스가 밥의 아파트를 방문하는 것에 관한 것이고 그녀는 그녀의 에코그룹에 접근하기 위해 밥의 작동중인 랩탑을 사용하기를 원한다. 밥은 그의 랩탑(28280) NSRZ가 자신의 에코그룹(28260)과 함께 앨리스 에코그룹(28270)의 세션을 호스팅하도록 허용하는 서버 에코그룹(28250)을 구성할 수 있다. 서버 에코그룹은 하나 이상의 장치를 가로질러 호스팅할 수 있는 다른 에코그룹의 더 상위 레벨 그룹핑일 수 있다.
도 283은 분할된 에코그룹이 어떻게 iRZ을 통해 통신할 수 있는지를 도시한다. 두 개의 세그먼트(28312 및 28370)로 분할될 수 있는 앨리스 에코그룹은 논리 연결(28392 및 28394)을 사용하여 공통으로 연결된 iRZ(28300)을 통해 그룹 및 루프백 도관 작동 및/또는 데이터를 전달함으로써 단일 에코그룹(28390)으로서 효과적으로 계속 기능할 수 있다. 논리적 연결(28394)은 iRZ(28300)에 물리적으로 도달하기 전에 장치(28342)를 통해 실제로 순회할 수 있다. 세 개의 세그먼트(28320, 28330 및 28340)로 분할될 수 있는 밥 에코그룹은 논리 연결(28382, 28384 및 28380)을 사용하여 공통으로 연결된 iRZ(28300)를 통해 그룹 및 루프백 도관 작동 및/또는 데이터를 전달함으로써 단일 밥 에코그룹으로서 효과적으로 계속 기능할 수 있다. 앨리스와 밥의 에코그룹의 각각은 본 방법론에 의해 각각의 그룹에 걸쳐 독립적으로 동기화할 수 있다.
도 284는 다중 iRZ 네트워크를 도시한다. 앨리스 에코그룹은 일부 이유로 다른 iRZ(28404)에 연결할 수 있지만, 그러한 iRZ의 그러한 네트워크는 서로 연결되고, 따라서 앨리스가 에코그룹 분할(28412 및 28470)을 가로질러 동기화를 유지할 수 있게 한다. 이론상 이러한 모든 연결은 너트 컨테이너의 안전한 성질로 인해 암호화되지 않은 메시지 세션을 사용할 수 있지만, 심층 이점으로 일부 방어를 얻기 위해 이용가능한 전송 보안 프로토콜을 계속 사용하는 것이 신중할 수 있다.
에코그룹 및 에코시스템
도 285는 밥의 에코시스템의 구성요소를 도시한다. 너츠 에코시스템은 너츠 어플리케이션을 호스팅하고, 너트를 저장하고, 너트 및/또는 그러한 장치에 걸쳐 통신하기 위해 요구되는 통신 네트워크를 처리하기 위해 요구되는 물리적 구성 요소를 포함할 수 있다. 본 도면은 밥의 에코시스템을 포함할 수 있는 그의 장치 중 적어도 4개를 보여 줄 수 있다.
도 286은 에코그룹과 에코시스템 사이의 차이 중 일부를 도시한다. 밥의 에코시스템은 (28600)으로 논리적으로 표시될 수 있고, 밥에 대한 연락처 너트(28610)(그의 메인 접근 너트로서 역할을 함), 장치, 어플리케이션, 및 그의 에코시스템(2812, 28614, 28616, 28618 및 28620)을 포함하는 시스템이 있을 수 있다. 에코시스템 도해는 논리적으로 그들을 연결하고 장치 가운데 통신을 허용할 수 있는 네트워크 토폴로지를 도시할 수 있다. 밥의 에코그룹 GBE는 (28650)과 같이 논리적으로 도시될 수 있고, 여기서 밥에 대한 연락처 너트(28660)(그의 메인 접근 너트로서 역할을 함), 멤버(8664, 28662, 28666, 28668)로서 시스템 장치의 너트ID의 각각을 갖는 그룹 GBE에 대한 그룹 너트(28670), 및 그룹 너트 GBE(28670) 내에 데이터 흐름의 임베딩된 크로스 매트릭스에 의해 구성되고 설명될 수 있는 이러한 구성요소 사이에 존재할 수 있는 통신 경로를 도시하는 도해가 있을 수 있지만, 동일한 에코그룹에 NSRZ의 컬렉션의 자기 구성 측면의 결과일 가능성이 크다. 밥의 에코시스템과 에코그룹 사이에 비제한적인 차이는 그룹 너트, 그룹 멤버, 데이터 흐름의 그룹 크로스 매트릭스, 및 루프백 도관을 포함하는 그룹 방법의 포함일 수 있다.
도 287은 밥의 에코그룹 GBE의 다양한 구성요소를 도시한다. 수학적 세트 표기법에서, 밥의 GBE 에코그룹은 (28700)에 도시된 바와 같이 표현될 수 있고, 여기서 (28702)는 수학식 형식의 세트 멤버쉽일 수 있고, (28704)는 세트 그래픽 형태일 수 있다. 패널(28710)은 그룹에 대한 그래픽 표기법으로 밥의 에코그룹 GBE(28712), 루프백 도관(28714) 및 공유된 데이터 객체(28716)를 도시한다. 그룹 상의 섹션에서 앞서 언급된 바와 같이, 논리적 루프백 도관은 그룹의 멤버를 가로질러 그리고 시스템의 각각을 가로질러 그룹 카탈로그의 컬렉션에 의해 가능해질 수 있다. 패널(28720)은 다음의 몇몇 도면에서 부분을 취할 수 있는 여러 개의 너트를 나타낼 수 있다. 너트ID=BOBID를 갖는 밥에 대한 연락처 너트(28730), 그룹 GBE에 대해 너트ID=GBE를 갖는 밥의 에코그룹에 대한 그룹 너트(28740), 그룹=GBE에 대한 카탈로그=C1에 대해 너트ID=CN1을 갖는 NSID1(시스템1)에 대한 그룹 카탈로그 너트, 그룹=GBE에 대한 카탈로그=C1에 대해 너트ID=CN2를 갖는 NSID2(시스템2)에 대한 그룹 카탈로그 너트, 그룹=GBE에 대한 카탈로그=C1에 대해 너트ID=CN3을 갖는 NSID3(시스템3)에 대한 그룹 카탈로그 너트, 그룹=GBE에 대한 카탈로그=C1에 대해 너트ID=CN4를 갖는 NSID4(시스템4)에 대한 그룹 카탈로그 너트, 너트ID=F1를 갖는 FHOG 너트(28750) 및 너트ID=N3를 갖는 텍스트 너트(28752)일 수 있다.
도 288은 에코그룹 GBE에 관한 연락 및 그룹 너트를 도시한다. 너트의 3개의 부분 박스 표현이 상부에서 바닥의 순서로 메타데이터인 부분, 범용 키홀, 및 페이로드를 갖는 이러한 여러 개의 도면에 사용할 수 있다. 그에 관한 밥의 연락처 너트(28800)는 (28802)에서 보다 세부사항으로 채워질 수 있다. 에코그룹 GBE에 대한 밥의 그룹 너트(28810)는 (28812)에서 더 구체화될 수 있다. 도 289는 밥의 에코그룹 GBE에 관한 제 1의 2개의 카탈로그 너트를 도시한다. 그룹 GBE에 대한 카탈로그 C1에 대한 시스템1(NSID1) 카탈로그 너트 CN1(28900)은 (28902)에 더 구체화될 수 있으며, NSID1은 이러한 카탈로그 너트의 RAT 소유자(28904)로 설정될 수 있고 모든 다른 것들은 읽기 접근만을 할 수 있음을 유념한다. 그룹 GBE에 대한 카탈로그 C1에 대한 시스템2(NSID2) 카탈로그 너트 CN2(28910)는 (28912)에 더 구체화될 수 있으며, NSID2는 이러한 카탈로그 너트의 RAT 소유자(28914)로 설정될 수 있고 모든 다른 것들은 읽기 접근만을 할 수 있음을 유념한다. 도 290은 밥의 에코그룹 GBE에 관한 제 2의 2개의 카탈로그 너트를 도시한다. 그룹 GBE에 대한 카탈로그 C1에 대한 시스템3(NSID3) 카탈로그 너트 CN3(29000)은 (29002)에 더 구체화될 수 있으며, NSID3은 이러한 카탈로그 너트의 RAT 소유자(29004)로 설정될 수 있고 모든 다른 것들은 읽기 접근만을 할 수 있음을 유념한다. 그룹 GBE에 대한 카탈로그 C1에 대한 시스템4(NSID4) 카탈로그 너트 CN4(29010)은 (29012)에 더 구체화될 수 있으며, NSID4는 이러한 카탈로그 너트의 RAT 소유자(29014)로 설정될 수 있고 모든 다른 것들은 읽기 접근만을 할 수 있음을 유념한다. 도 291은 에코그룹 GBE에 관한 FHOG 및 텍스트 너트를 도시한다. FHOG 너트 F1(29100)은 (29102)에서 더 자세히 설명될 수 있으며, 이러한 FHOG 너트는 정상적인 데이터 너트처럼 그리고 카탈로그 너트가 아닌 것처럼 거동할 수 있음을 나타내는 '너트' 모드(29104)로 설정될 수 있다. 텍스트 너트 N3(29110)은 (29112)에 더 자세히 설명되어 있으며, 그룹의 모든 멤버는 읽기/쓰기 접근을 할 수 있고 밥은 RAT일 수 있음을 유념한다.
도 292은 밥의 에코그룹 GBE에 관련된 너트의 시스템 위치를 도시한다. 각각의 시스템에 대한 각각의 그룹 카탈로그는 자신의 너트ID를 가질 수 있고, 그로써 그것을 공유된 너트로서 포함될 자격을 갖게 하지만, 임의의 경합 조건을 일으키지 않는 것에 관해 해당 기능을 가능하게 할 때, 주의가 요구될 수 있음에 유념한다. 밥의 에코그룹 GBE는 도 245의 그룹 예시를 닮을 수 있고, 두 개의 시스템을 가로질러 단일 그룹은 동기화를 달성하는 반면에, 밥의 에코그룹 예시에서, 네 개의 시스템이 있을 수 있다. 그것은 참으로 동일한 문제이고 동일한 방식으로 해결될 수 있지만, 어떻게 사용자에 대한 시스템의 세트가 그들을 다른 유형의 그룹과 구별하기 위해 '에코그룹'으로서 구성될 수 있는지를 보여주기 위해 여기에 적용된다.
저장 하위시스템 관리(SSM)
도 293은 두 개의 시스템을 포함하는 밥의 에코그룹 GBE를 도시한다. 밥의 에코그룹 GBE(29300)는 두 개의 시스템, Sys1(29310) 및 Sys2(29320)을 포함할 수 있고, 통신하는 네트워크(29330)에 접근할 수 있다. 저장 하위시스템 관리(SSM)는 그룹 너트 및 루프백 도관의 조합을 적용하여, 에코그룹의 멤버일 수 있는 적어도 하나의 시스템에 의해 관리되는 저장 유닛으로 작동하는 하나 이상의 이질적인 저장 유닛을 동기화하는 방법일 수 있다.
도 294는 에코그룹 GBE의 시스템을 도시한다. 이들 두 개의 시스템, SYS1(29400) 및 SYS2(29450)는 CPU, RAM, 하드 드라이브, 네트워크 어댑터, 디스크 컨트롤러, 그래픽 카드, OS, FS 등을 포함하는 종래의 컴퓨팅 장치를 표현할 수 있다. 본 예시에서, SYS1 및 SYS2는 그룹 GBE의 멤버일 수 있고 도시된 것과 같이 일관된 상태일 수 있다.
SYS1(29400)은: RAM, CPU, OS, RAM 또는 디스크에서 임시 저장 영역 ‘tempdev1’, 및 eRZ 모드(외부 Rz)에서 실행하는 너트서버/RZ(NSRZ)(29410)를 포함하는 어플리케이션 실행 섹션(29430)을 포함하는 여러 개의 논리 섹션을 가질 수 있고, 메모리에, 너트북 연락처(29432)의 세트 및 그룹 너트 GBE 및 두 개의 섀도우 카탈로그 너트(29434) C1A 및 C2A가 저장되고 인덱싱될 수 있고; 영구 저장 매체 드라이브 HSN1(29420)은 적어도 두 개의 개별 논리 저장 영역(LSA) LSA11(29422) 및 LSA12(29440)을 가질 수 있다. 논리 저장 영역 LSA11(29422)은 식별, 카탈로그, 카탈로그 오버라이드 및 하드웨어 특성을 포함하는 저장 매체를 대표할 수 있는 너트를 저장할 수 있다. 논리 저장 영역 LSA12(29440)는 로컬 OS, FS 및 NSRZ과 같은 다른 앱에 의해 요청될 수 있는 바와 같이 너트 및 다른 파일을 저장할 수 있다. 이상적으로, LSA11에서 카탈로그 C1A(29426)는 LSA12(29440)의 상태를 정확하고 일관되게 반영하는 것을 목표로 할 수 있지만, 일관성이 없는 상황이 발생할 수 있으므로, HSN1(29420)과 같은 그러나 그로 한정되지 않는 저장 장치가 초기화될 때, 시스템(29400)은 하나 이상의 일관성 검사를 실행하고, 및/또는 LSA12의 상태를 반영하도록 카탈로그 너트 C1A를 수정하고, 및/또는 LSA12의 내용으로부터 C1A를 완전히 재구축할 수 있고, 그로써 C1A에서 너트 LSA12를 정확하게 반영하는 것은 C1A의 상태를 LSA12의 상태와 일치시키는 것을 유지할 수 있다.
SYS1(29450)은: RAM, CPU, OS, RAM 또는 디스크에 임시 저장 영역 ‘tempdev2’, 및 RZ 모드(내부 RZ)에서 실행하는 NSRZ(29460)을 포함하는 어플리케이션 실행 섹션(29480)을 포함하는 여러 개의 논리 섹션을 가질 수 있고, 메모리에, 너트북 연락처(29482)의 세트 및 그룹 너트 GBE 및 두 개의 섀도우 카탈로그 너트(29484) C1A 및 C2A가 저장되고 인덱싱될 수 있고; 영구 저장 매체 드라이브 HSN1(29470)은 적어도 두 개의 개별 논리 저장 영역(LSA) LSA21(29472) 및 LSA22(29490)을 가질 수 있다. 논리 저장 영역 LSA21(29472)은 식별, 카탈로그, 카탈로그 오버라이드 및 하드웨어 특성을 포함하는 저장 매체를 대표할 수 있는 너트를 저장할 수 있다. 논리 저장 영역 LSA22(29490)는 로컬 OS, FS 및 NSRZ과 같은 다른 앱에 의해 요청될 수 있는 바와 같이 너트 및 다른 파일을 저장할 수 있다. 이상적으로, LSA21에서 카탈로그 C2A(29476)는 LSA22(29490)의 상태를 정확하고 일관되게 반영하는 것을 목표로 할 수 있지만, 일관성이 없는 상황이 발생할 수 있으므로, HSN2(29470)와 같은 그러나 그로 한정되지 않는 저장 장치가 초기화될 때, 시스템(29450)은 하나 이상의 일관성 검사를 실행하고, 및/또는 LSA22의 상태를 반영하도록 카탈로그 너트 C2A를 수정하고, 및/또는 LSA22의 내용으로부터 C2A를 완전히 재구축할 수 있고, 그로써 C2A에서 너트 LSA22를 정확하게 반영하는 것은 C2A의 상태를 LSA22의 상태와 일치시키는 것을 유지할 수 있다.
도 295는 에코그룹 GBE에 저장된 너트로부터 강조된 정보를 특정한다. 너트는 메타데이터, 범용 키홀 및 페이로드 섹션을 포함하는 3개의 부분 박스를 사용하여 콤팩트한 형태(29500) 및 강조된 형태(29502) 둘 모두로 표현될 수 있다. 너트BOBID(29500)는 둘 중 어느 한 시스템 상에서든 그의 너트북에 그 자신에 대해 밥의 자신의 연락처 너트일 수 있고, (29502)로서 더 구체화될 수 있다. 접근 너트 ANID(29510)는 키ID=KGSG(29512)를 갖는 접근 키를 홀딩할 수 있다.
SYS1(29520)에 대한 서버 연락처 너트는 키 KSYS1을 홀딩할 수 있고 [U,R](비대칭 키 쌍 KSYS1의 공개 및 비공개 부분을 읽음), SYS1이 저장 유닛 SD1에 대한 저장 관리자일 수 있음을 특정하고, 임시 디렉토리 또는 장치 ‘tempdev1’를 사용하여 일시적 객체를 저장하도록 지정될 수 있다. SYS2(29530)에 대한 서버 연락처 너트는 키 KSYS2를 홀딩할 수 있고 [U,R](비대칭 키 쌍 KSYS2의 공개 및 비공개 부분을 읽음), SYS2가 저장소 유닛 SD2에 대한 저장소 관리자일 수 있음을 특정하고 임시 디렉토리 또는 장치 'tempdev2'를 사용하여 일시적 객체를 저장하도록 지정될 수 있다. 저장소 관리자 파라미터는 로컬 NSRZ가 특정된 바와 같이 0개 이상의 저장 장치를 관리할 수 있음을 나타낼 수 있고; NSRZ 프로세스가 지시된 저장 장치에 대한 너트의 1차 리더/작성자일 수 있음을 나타낼 수도 있다; 추가 저장 장치는 서버에 대해 이용가능할 수 있지만 로컬 NSRZ 서버에 의해 사용되도록 구성되지 않았을 수 있음을 유념한다.
SD1(29540)에 대한 저장 연락처 너트는 HSN1으로서 적어도 하드웨어 장치 ID, BP1의 로컬 기본 경로, 장치 접근 키 SDK1를 나타낼 수 있고, 너츠 환경에서 카탈로그 너트 C1A에 의해 표현될 수 있다. SD2(29550)에 대한 저장 연락처 너트는 HSN2으로서 적어도 하드웨어 장치 ID, BP2의 로컬 기본 경로, 장치 접근 키 SDK2를 나타낼 수 있고, 너츠 환경에서 카탈로그 너트 C2A에 의해 표현될 수 있다. 장치 ID는 하드웨어 및/또는 에코그룹 GBE의 작동 환경 내에서 장치를 고유하게 식별할 수 있는 식별 데이터 인코딩된 정보의 임의의 조합일 수 있다. 로컬 기본 경로는 NSRZ가 너트를 저장 및/또는 관리하기 위해 사용할 위치 경로를 나타낼 수 있다. 이러한 위치 경로는 로컬 파일 시스템 및/또는 운영 체제에 의해 허용될 수 있는 포맷일 수 있다. 카탈로그 파라미터는 드라이브가 저장할 수 있는 카탈로그를 특정할 수 있고, 이러한 카탈로그의 조합은 카탈로그가 참조하고 처리 NSRZ에 의해 마지막 업데이트될 때 알려진 바와 같이 그룹의 문맥 내에서 장치에 의해 보유되는 것으로 현재 알려질 수 있는 전부를 포함할 수 있다. 로컬 저장 장치가 읽기 및/또는 쓰기 접근을 위한 키(들)를 요구하는 하나 이상의 활성화된 운영 하드웨어/소프트웨어 암호화층을 가질 수 있다면, 하나 이상의 장치 키는 이용가능할 수 있다.
CL1(29560)에 대한 클라우드 드라이브 저장 연락처 너트는 클라우드 계정 정보, 로그인 및 패스워드(또는 임의의 요구되는 자격증명), SYS1, 그런 후에, SYS2로서 클라우드 드라이브 저장 관리자의 우선순위 목록을 나타낼 수 있고, 너츠 환경에서 카탈로그 너트 CLA에 의해 표현될 수 있다. 카탈로그 파라미터는 클라우드 드라이브가 저장할 수 있는 카탈로그를 특정할 수 있고, 이러한 카탈로그의 조합은 카탈로그가 참조하고 처리 NSRZ에 의해 마지막 업데이트될 때 알려진 바와 같이 그룹의 문맥 내에서 클라우드 의해 보유되는 것으로 현재 알려질 수 있는 전부를 포함할 수 있다.
도 296은 GBE 에코그룹에 너트를 설명하는 것을 계속한다.
그룹 GBE(29600)에 대한 그룹 너트(29602)는 멤버가 BOBID, SYS1, SYS2 및 접근 너트 ANID일 수 있음을 나타낸다. 접근 너트 ANID는 밥이 시스템 연락처 너트, 저장 연락처 너트, 및 접근 너트와 같은 그러나 그로 한정되지 않는 GBE 에코그룹의 민감한 요소를 노출하는 것을 요구하지 않고 사용자의 더 넓은 관중 및/또는 프로세스(임의의 식별가능한 자산)에 대한 공유된 객체 및 다른 객체에 대한 접근을 부여하는 역할을 할 수 있다.
그룹 GBE에 대한 카탈로그 C1에 대한 카탈로그 너트 C1A(29610)는 그룹 너트 ID GBE 및 FHOG 너트 ID F1에 대한 카탈로그 엔트리를 홀딩할 수 있고; 또한, 카탈로그 너트 C1A는 저장 관리자 특정일 수 있고 저장 너트 SD1(29542)의 '카탈로그' 파라미터에 의해 지시되는 바와 같이 저장 장치 SD1 상에 물리적으로 위치될 수 있고 일반적인 공유된 너트에 대한 것과 다를 수 있는 복제 경로를 가질 수 있고; 카탈로그 C1A는 저장 장치에 '페어링'된 것으로 간주될 수 있다. C1A의 사본은 단일 NSRZ 시스템 내의 하나보다 많은 위치에 존재할 수 있다: 1) LS A11(29422)에 저장 장치(29426)에 대한 영구 기원 카탈로그, 2) 로컬 저장 관리자의 (NSRZ) 실행 메모리(29436)에 섀도우 카탈로그, 3) NSRZ에 의한 너트에 대해 정상 저장 영역에 영구적인 '복제'(29446). C1A의 이러한 사본의 목적은 다음 예시에서 드러날 수 있다.
그룹 GBE에 대한 카탈로그 C2에 대한 카탈로그 너트 C1A(29620)는 그룹 너트 ID GBE 및 FHOG 너트 ID F1에 대한 카탈로그 엔트리를 홀딩할 수 있고; 또한, 카탈로그 너트 C2A는 저장 관리자 특정일 수 있고 저장 너트 SD2(29552)의 '카탈로그' 파라미터에 의해 지시되는 바와 같이 저장 장치 SD2에 물리적으로 위치될 수 있고 일반적인 공유된 너트에 대한 것과 다를 수 있는 복제 경로를 가질 수 있고; 카탈로그 C2는 저장 장치에 '페어링'된 것으로 간주될 수 있다. C2의 사본은 단일 NSRZ 시스템 내의 하나보다 많은 위치에 존재할 수 있다: 1) LSA21(29472)에 저장 장치(29476)에 대한 영구 기원 카탈로그, 2) 로컬 저장 관리자의 (NSRZ) 실행 메모리(29486)에 섀도우 카탈로그, 3) NSRZ에 의한 너트에 대해 정상 저장 영역에 영구적인 '복제' (29496). C2A의 이러한 사본의 목적은 다음 예시에서 드러날 수 있다.
카탈로그 너트 CLA(29630)는 문자, 목적 및 거동에서 C1A(29610)에 대한 상응할 수 있지만, 클라우드 드라이브 CL1(29560)과 관련될 수 있다.
그룹 GBE에 대한 카탈로그 CL에 대한 카탈로그 너트 CLA(29630)는 그룹 너트 ID GBE 및 FHOG 너트 ID F1에 대한 카탈로그 엔트리를 홀딩할 수 있고; 또한, 카탈로그 너트 CLA는 저장 관리자 특정일 수 있고 저장 너트 CL1(29562)의 '카탈로그' 파라미터에 의해 지시되는 바와 같이 클라우드 드라이브 상에 어디에든 물리적으로 위치될 수 있고 일반적인 공유된 너트에 대한 것과 다를 수 있는 복제 경로를 가질 수 있고; 카탈로그 CLA는 특정 클라우드 드라이브에 대해 '페어링'된 것으로 간주될 수 있다. CLA의 사본은 단일 NSRZ 시스템 내의 하나보다 많은 위치에 존재할 수 있다: 1) 클라우드 드라이브 상의 클라우드 드라이브에 대한 영구 기원 카탈로그, 2) 로컬 저장 관리자의 (NSRZ) 실행 메모리에 섀도우 카탈로그, 3) 로컬 시스템에 NSRZ에 의한 너트에 대해 정상 저장 영역에 영구적인 '복제'. CLA의 이러한 사본의 목적은 다음 예시에서 드러날 수 있다.
FHOG 너트 F1(29640)은 ICBM에서 'M'으로서 역할을 할 수 있고, 여기서 그것은 식별(GBE), 도관(GBE에 관한 카탈로그), 본드(모든 그러한 키 및 키홀!) 및 맵(FHOG F1 및/또는 카탈로그). F1은 "카탈로그" 모드에 있을 수 있기 때문에 페이로드는 카탈로그와 유사한 엔트리를 나열하고, 이는 이러한 GBE 그룹과 같은 복제된 환경에서 “자신의 테일을 추적하는”상황을 방지하도록 너트 F1의 카르나크 특징을 제한할 수 있다. 저장 장치 카탈로그가 일반적인 복제 너트와 다른 복제 경로를 가질 수 있기 때문에, C1A, C2A 또는 CLA 카탈로그 중 어느 것도 나열되지 않을 수 있음을 유념한다. GBE와 같은 정상 너트 유형 ID는 C2A(29622), C1A(29612) 및 FHOG F1(29642)와 같은 그룹 카탈로그 모두에 입력될 수 있다. (29400)의 이러한 GBE 구성에서, FHOG F1은 그룹 멤버 가운데 너트를 공유하도록 “카탈로그”로서 작동할 수 있다. 텍스트 너트 N10(29650) 및 채팅 너트 N23(29660)은 본 예시의 목적에 대한 단순한 데이터 너트일 수 있다.
도 297은 저장 장치 카탈로그의 복제 경로를 도시한다. 분산 및 탈중앙집중화된 환경에서, 고려해야 할 중요한 인자는 어떻게 시스템 실패하고 및/또는 반복된 방식으로 실패로부터 복구하는지 일 수 있다. 실패는 통신에서의 임의의 손실, 서버의 운영 용량, 하드웨어 실패, 시스템 과부하, 소프트웨어 이상을 포함할 수 있다. 실패는 손상된 데이터, 분할, 그룹에 비동기화된 상태, 상태의 손실, 이벤트의 손실 및 트랜잭션을 포함하는 문제로 유도할 수 있다. 일관되고 반복가능하고 및/또는 신뢰가능한 방법을 통해 시스템의 상태를 유래하는 것이 유용할 수 있다. 네트워크된 시스템의 그룹의 이상적인 현재 상태가 무엇인지에 관계없이, 비동기 및/또는 동시 실패 및/또는 실패의 각각의 유형으로부터 신뢰가능한 복구의 무작위성으로 인해, 증분적 및/또는 이용가능한 상태유지(statefulness)의 접근은 분산 및 탈중앙집중화된 시스템의 그룹에 대해 허용가능하고 및/또는 유용한 수준의 최종 일관성으로 유도할 수 있다. 그룹 및 루프백 도관은 구성 멤버의 증분적 가용성에 기반해 종국에 일관된 시스템을 용이하게 하도록 메커니즘을 제공할 수 있다. 영구 저장소를 제공하기 위한 물리적 저장 장치의 추가는 그룹 가운데 공유된 객체를 복제할 수 있어야 한다는 추가된 요구사항을 갖는 시스템 상태의 기원을 향해 복잡한 인자를 추가할 수 있다. 그러한 인자의 균형을 맞추는 방법은 저장 장치 카탈로그 및 그들을 복제하는 특정 스타일을 활용하는 다양한 예측으로 개시될 수 있다.
(29700)과 같은 시스템을 초기화하여, 너트의 세트를 홀딩하는 LSA12(29740)와 같은 그러나 그로 한정되지 않는 영구 저장소는 LSA12 상에 저장된 너트 ID의 인덱스를 확립하도록 NSRZ(29710)에 의해 체계적으로 이동될 수 있다. 프로세스는 LSA12(29740)의 C1A(29746)의 사본 또는 LSA11(29722)의 C1A(29726)의 사본 또는 NSRZ 메모리(29734)에서 C1A(29736)의 사본을 찾아, 자신의 너트ID 인덱스를 비교하고 1) 발견된 C1A의 더 정확한 버전을 선택하고, 2) 생성된 너트ID 인덱스 및 SD1 및 SYS1에서 발견된 정보로부터 완전히 새로운 C1A를 구축하고, 3) 카탈로그 및 FHOG를 순회하고 생성된 너트ID 인덱스를 상호 참조하고 인지되지 않은 너트를 인지한 후에 그를 보장할 수 있는 너트ID만을 포함함으로써 (29720) 상에서 발견된 기존 C1A를 업데이트할 수 있다. 그러나, 일단 C1A 카탈로그가 사용을 위해 생성, 업데이트 및/또는 식별될 수 있으면, 사본은 저장 장치 SD1(29720)에 대한 영구 기원 저장 장치 카탈로그(29726)로서 LSA11(29722)에 배치될 수 있다(29750). 영구 기원 카탈로그(29726)의 섀도우 카탈로그(29736)는 C1A(29726)의 사본으로서 생성되고 C1A(29736)로서 (29734)에 위치될 수 있거나(29752), 기존의 C1A(29736)를 C1A의 새로운 사본으로 교체할 수 있다(29752). 그런 다음, 섀도우 카탈로그가 SYS1 NSRZ LSA12(29740)의 정상 너트 저장 영역에 복사되거나 저장될 수 있다(또는 기존 사본을 덮어쓸 수 있다)(29754). 따라서, 저장 장치 SD1(29720)에 너트 LSA12(29740)의 저장의 세 개의 예측 저장 장치 카탈로그 C1A 모두에 대해 로컬 기원 경로가 정의될 수 있다. 이러한 유형의 기원 경로는 SD1 LSA12에 저장된 너트의 가장 상태유지적 표현인 것으로 C1A의 정확성을 보장할 수 있다.
일부 구현에서, C1A(29736)의 섀도우 카탈로그를 업데이트하는 선호되는 방법은 수정 시에 기원 카탈로그 C1A(29726)를 복사하는 것일 수 있다. 따라서, 저장 장치를 관리하는 NSRZ 시스템에 의한 것을 제외하고 어떠한 다른 시스템(또는 NSRZ)도 C1A 카탈로그를 업데이트할 수 없는 것이 바람직할 수 있고, 바람직한 경로는 (29726)을 업데이트하고 (29736)에 복사한 후에, (29746)에 복사하는 것일 수 있다. 이러한 경우, NSRZ(29710)이 수정할 수 있는 유일한 C1A는 (29726)일 수 있고, C1A(29726)는 LSA12(29740)의 상태 변경에 의해서만 수정될 수 있고, 그로써 항상 일관된 기원 경로를 통해 저장 영역 LSA12의 상태의 일관된 보기를 나타낼 수 있다. 섀도우 카탈로그 C1A(29736)의 또 다른 목적은 NSRZ 처리를 위해 C1A(29726)의 효율적인 인메모리 사본을 제공하는 것일 수 있다. 섀도우 카탈로그 C1A(29736)의 또 다른 목적은 너트ID, 그룹 ID, 캣(Cat)ID 및 버전 마커를 포함하는 카탈로그의 식별 특징의 임의의 조합에 관한 카탈로그의 쿼리에 다른 연결된 NSRG 준비 응답(29760)을 제공하는 것이다. 반면에, SYS1이 NSRZ를 쿼리하고 그룹 GBE 캣ID C2에 대한 카탈로그에 관해 SYS2의 NSRZ를 쿼리하면, SYS2는 카탈로그 C2A의 사본을 보냄으로써(29770) 응답할 수 있다(29738). C2A(29738)의 기존 및 방금 수신된 버전은 차이점에 대해 비교될 수 있고 처리될 수 있다(간략히 논의됨). 그런 다음, 기존 C2A(29738)는 새롭게 수신된 것으로 단순히 교체될 수 있고, 따라서 SYS1이 이러한 카탈로그 C2A 상의 저장 관리자가 아닐 수 있기 때문에, SYS1 상의 C2A의 '읽기 전용' 사본으로 효과적으로 간주될 수 있다. 그런 다음, C2A(29738)의 사본이 정상 너트 저장 LSA12(29740)에 C2A(29748)로서 저장될 수 있다(29772)(또는 기존을 대체할 수 있다). 누락한 카탈로그 엔트리가 C2A 카탈로그 비교에서 발견되면, 해결의 적어도 두 개의 경로가 있을 수 있다: 1) 누락한 엔트리 중 어느 것도 C2A를 제외하고 SYS1에 저장된 너트와 관련될 수 없고, 그런 후에 차이 처리는 완전할 수 있고; 2) 적어도 하나의 참조가 카탈로그 C2A가 아닌 카탈로그 및/또는 FHOG를 포함하는 SYS1에 알려진 너트에 의해 행해질 수 있고, 그런 후에 각각의 누락한 엔트리의 각각의 너트ID는 SYS2에 대해 쿼리되어 각각의 사본 및 각각의 카탈로그 및/또는 FHOG 참조를 요청할 수 있고, 언급된 누락한 너트ID는 '보류'의 상태로 누락한 너트ID/버전 마커에 대해 또 다른 엔트리를 추가함으로써 업데이트될 수 있다. 예를 들어, FHOG F1(29740)이 너트 모드에 있고 F1 v2에 대해 SYS2에서 수정되었을 수 있고 SYS1 C2A에 의해 알려진 버전은 F1 v1일 수 있다고 가정한다. SYS2는 C2A v2를 알고 있고 SYS1은 C2A v1을 알고 있다. SYS1 NSRZ가 캣ID C2 그룹 GBE와 관련된 카탈로그에 대해 SYS1을 쿼리하면 SYS2는 C2A v2의 사본으로 응답할 수 있다. SYS1은 C2A v2에 대해 기존 C2A v1을 비교하고 카탈로그 엔트리에서 F1 v2를 누락할 수 있음을 발견할 수 있다. SYS1은 모든 카탈로그, FHOG 및 너트ID 인덱스를 스캔할 수 있고, 1) FHOG F1을 인지하지만 버전 v1을 갖고 있음을 확인할 수 있고, 2) F1은 F1 v1으로서 카탈로그 C1A에 의해 참조될 수 있다. 그러므로, 하나 또는 둘 모두의 이유로, SYS1은 SYS2에게 F1 v2의 사본을 요청하고 메모리 공간에 그러한 요청을 메모할 수 있다. SYS2가 SYS1에 F1 v2를 보낼 때, SYS1은 요청된 것으로서 F1 v2를 인지하고 그를 처리하기 시작할 수 있다. 우리는 F1이 너트 모드에 있을 수 있다고 가정했기 때문에, SYS1은 카탈로그에서 카탈로그 및/또는 FHOG가 아닌 임의의 다른 너트처럼 F1을 처리할 수 있다. SYS1은 F1 v1을 F1 v2와 동기화(병합)할 수 있고, F1 v2를 초래할 수 있고, 따라서 LSA12에서 F1 v1을 F1 v2로 대체할 수 있다. F1 v2를 LSA12에 저장하는 것은 C1A에 대한 기원 경로 스핀 사이클이 시작하는 것을 트리거하여, LSA11에서 기원 저장 장치 카탈로그 C1A의 업데이트된 버전을 초래하고, 이는 섀도우 카탈로그 C1A의 업데이트 또는 덮어쓰기로 유도하고, 이는 LSA12에 C1A의 사본을 덮어 쓰도록 섀도우 카탈로그의 사본으로 유도한다. 이는 SYS1와 SYS2 모두를 가로질러 C2A, SYS1과 SYS2 모두를 가로질러 F1 v2, F1 v2를 참조하는 SYS1 상의 C1A의 모두 3개의 사본에 대해 SYS1의 동기화된 상태를 나타낼 수 있고, 그러므로 멤버 SYS1과 SYS2 사이의 그룹 GBE의 상태는 일관된 것으로 간주될 수 있다. 본 예시의 구성에서, FHOG F1은 두 개의 다른 NSRG을 운영하는 두 개의 다른 관리 시스템 SYS1 및 SYS2 상에 두 개의 물리적으로 다른 저장 장치 SD1 및 SD2 상의 두 개의 다른 카탈로그 C1 및 C2 사이의 참조 브리지로서 작동할 수 있지만, 그룹 GBE에 그룹 멤버쉽 및 FHOG F1에 공통 맵에 의해 결합될 수 있고, 따라서 둘 중 어느 한 모드에서 FHOG F1에 대한 임의의 변경은 결국 그룹 멤버를 동기화시키는 것을 향한 방향으로 구성할 수 있다. 본 예시는 너트 F1에서 변경이 그룹 GBE에 걸쳐 복제한다는 것을 보여 줄 수 있다. F1 v2의 복제 경로는 NSRZ 프로세스가 쿼리를 구성할 수 있는 방식으로 주로 C1A처럼 저장 장치 카탈로그에 대한 복제 경로와는 미묘하게 다를 수 있다: 카탈로그처럼 작동하는 카탈로그 및/또는 너트에 대해 쿼리할 때, NSRZ 프로세스는 너트ID, 캣ID, 그룹 ID, 버전 마커 및/또는 다른 식별 속성의 임의의 조합을 사용할 수 있는 반면에, 카탈로그와 다른 너트에 대해 쿼리할 때, NSRZ 프로세스는 너트ID 및/또는 버전 마커의 사용으로 제한되는 것을 필수적이지는 않지만 선호할 수 있음을 유념한다.
기원 저장 장치 카탈로그의 경로 및 뒤이은 예측은 개시된 바와 같이 단계적으로 수행될 수 있거나 NSRZ에 의해 수반되는 모든 단계를 수반하는 원자 트랜잭션으로서 보다 효율적으로 수행될 수 있지만, 상관없이, 각각의 작동은 결국 수행될 수 있다. 다른 저장 장치의 다른 카탈로그를 가로질러 공통 FHOG를 도입함으로써, 온라인이든 아니든, 저장 장치의 내용에 대해 이루어지는 변경을 허용하는 것이 가능할 수 있음을 유념한다. 본 예시에서, SD1이 오프라인이라면, F1 v2는 SD2 상에 SYS2에 의해 여전히 수정되었을 수 있다. SD1이 다시 온라인 상태가 되고 동기화를 시작할 때, F1 v2 변경은 SYS2에서 SD1로 흐를 수 있고, 따라서 오프라인 장치에 저장된 객체에 대한 변경이 그룹에서 '대기'되는 것을 효과적으로 허용하는 한편, 온라인 상태이고 작동 중인 그룹의 나머지에 대한 완전한 유용성을 여전히 허용할 수 있다.
카탈로그의 기원 경로는 적시성보다 정확한 표현을 중요시할 수 있는 소싱의 우선 순위를 나타낼 수 있다: 1) 저장 장치, 객체를 홀딩하는 영구 저장은 격리 상태에서 초기화할 때 일시적 저장보다 바람직할 수 있고, 2) 저장 장치 카탈로그, 순차적 방식으로 저장 장치 중지는 반드시 그룹을 가로질러 객체의 일부의 가장 최근에 ‘대기’ 상태가 아닐 수 있는 중지 전에 마지막 상태를 반영하는 초기화 시에 객체 홀딩의 정확한 표현을 나타낼 수 있고; 3) 섀도우 카탈로그는 다른 그룹 멤버가 다른 시스템에 다른 저장 장치의 전체 또는 부분 상태를 알게 할 수 있다. 일부 구현예에서, 상태 변경의 바람직한 경로는 그룹을 가로질러 정확성 및 일관성을 위해 카탈로그의 기원 경로를 유지하기 위해 가능한 한 저장 장치에서 또는 그에 가깝게 시작하는 것일 수 있다. 카탈로그는 구성, 복제, 복원, 중복, 적시성, 가용성, 세그먼트화, 라우팅, 로드 공유, 객체 공유, 보안 등과 같은 그러나 그로 한정되지 않는 다음의 목적을 위해 객체의 너트ID를 직접 및/또는 간접적으로(맵을 통해) 교차 나열할 수 있다.
도 298은 에코그룹 너트 복제를 도시한다. 본 예시는 어떻게 너트 N10을 생성하는 SYS1이 디스크 드라이브 HSN1 상의 LSA12 상에 그를 저장하고, 그런 후에 에코그룹 GBE과 N10을 공유할 수 있는지를 도시하는 이전 예시를 확장할 수 있고, 이는 N10이 다른 서버 SYS2에 의해 관리된 다른 장치 HSN2 상에 다른 논리 저장 영역 LSA22로 복제되는 것을 초래할 수 있고, 이는 그룹 GBE의 멤버이도록 발생할 수 있고, 따라서 이러한 프로세스는 새롭게 공유된 너트 N10에 특히 관련된 그룹 GBE의 모든 멤버를 가로질러 궁극적인 일관성에 영향을 줄 수 있고; 이러한 프로세스는 SYS1으로부터 SYS2로 새로운 너트 N10를 복제하는 것, 또는 더 광범위하게 에코그룹 너트 복제로 해석될 수 있다.
도 298에서, 우리는 카탈로그 모드에 있을 수 있는 정의된 바와 같은(29642) FHOG로 돌아갈 수 있다. 밥은 NSRZ(29810)를 사용하여 SYS1(29830) 상의 메모리에 너트 N10(29850)을 생성하고, 어느 것이 SYS1 연락처 너트(29520)에 따라 SD1(29820)이도록 발생하는지를 관리할 수 있는 NSRZ의 디폴트 저장 장치에 그를 저장할 수 있다. 그런 후에, 로컬 NSRZ(29810)은 SD1 저장 장치를 관리할 수 있다. NSRZ는 LSA11(29822)에서 SDL의 카탈로그 너트 C1A(29826)을 검토하고 FHOG의 '카탈로그' 모드에서 작동하는 본 장치의 (그룹 GBE의) 디폴트 카탈로그에 대해 공유된 너트를 매핑할 수 있는 FHOG F1(29642)가 있음을 발견할 수 있다. 그런 후에, NSRZ은 SD1 상에 방금 저장된 너트 N10 v1에 대한 엔트리를 추가함으로써 FHOG F1을 업데이트할 수 있고(29852), F1에 대한 새로운 버전 마커 v2를 생성할 수 있다. F1 v2을 닫고 저장하는 것은 NSRZ가 메모리에 카탈로그 중 어느 하나가 FHOG F1을 매핑했는지 여부를 검색하도록 트리거할 수 있다. SYS1 NSRZ는 섀도우 카탈로그 C2A(29838)가 F1 v1을 참조함을 발견할 수 있지만, SYS1이 C2A의 저장 장치인 SD2를 관리하지 않을 수 있으므로 이를 무시할 수 있다. SYS1 NSRZ는 섀도우 카탈로그 C1A(29836)가 '로컬' 상태에 F1 v1을 참조한다는 것을 발견할 수 있어서, '로컬' 상태에서 F1 v2를 갖는 카탈로그 엔트리를 저장 장치 카탈로그 C1A(29826)에 추가하고 수정된 버전 마커 C1A v2(29826)와 함께 LSA11(29822)에 이를 다시 저장할 수 있다. 본 작업은 앞서 설명된 바와 같이 저장 장치 카탈로그 업데이트의 기원 경로를 트리거하여, C1A v2(29836) 및 C1A v2(29846)로서 C1A v2(29826)의 사본을 갖게 한다. SYS1에서, F1 v2는 F1을 참조하는 모든 카탈로그 및/또는 FHOG에 의해 그리고 SYS1의 관리 하에 동기화될 수 있다.
도 299는 도 298로부터 예시를 계속한다. 일부 주기적 간격에서 및/또는 일부 트리거 이벤트에 의해, RZ 모드에서 SYS2의 NSRZ(29960)(내부 RZ, 그러므로 eRZ를 쿼리, 요청 및/또는 폴링할 수 있음)는 "그룹=GBE에 대해 모든 카탈로그를 전송"을 요청함으로써 SYS1 상의 eRZ(29910)에 대한 카탈로그 폴링을 수행할 수 있다. 이러한 폴링 방법은 단순화하고 비효율적이며 지나치게 광범위할 수 있고, 그러한 폴링을 향상시키는 잘 알려진 방법이 많이 있을 수 있지만 본 예시에 있어서, 충분히 요점을 보여줄 수 있다. 그러한 지점에서, eRZ(29910)은 카탈로그 C1A v2(29936) 및 C2A v1(29938)의 사본을 RZ(29960)로 보냄으로써 응답할 수 있다. SYS2의 RZ(29960)는 SYS1에서 tempdev2 저장 영역으로 카탈로그를 수신하고, 그런 후에 NS 프로세스(29960)를 사용하여 그들을 처리하기 시작할 수 있다. NSRZ(29960)은 SD2 및 SYS2 연락처 너트를 통해 관리될 수 있으므로 SYS1에서 수신된 카탈로그 C2A v1을 무시하고 삭제할 수 있다; SYS2는 C2A 카탈로그에 대한 기원 소스일 수 있다. SYS1으로부터 C1A v2를 SYS2의 로컬 C1A v1(29986)과 비교하면, NSRZ(29960)은 F1 v2가 로컬 카탈로그 C1A v1(29986)에 누락할 수 있음을 확인할 수 있다. C1A는 SYS2 관리를 받지 않을 수 있으므로, NSRZ는 (29986) 및 (29996)으로 C1A v1을 C1A v2로 단순히 대체할 수 있다. NSRZ(29960)은 너트ID 인덱스를 확인하고 섀도우 카탈로그 C2A v1(29988) 역시 F1을 참조하고 C2A가 SYS2의 책임임을 확인할 수 있다. C2A v1(29988)에서 F1의 버전 대 C1A v2로부터 누락한 F1 v2를 확인하여, NSRZ(29960)은 그런 후에 SYS1 NSRZ(29910)으로부터 누락한 너트 F1 v2를 요청하고, 실행 중인 메모리에 요청을 기록할 수 있다. SYS1(29910)의 NSRZ는 SYS2로 F1 v2의 사본을 SYS2로 다시 보냄으로써 쿼리에 응답할 수 있다. F1 v2는 요청된 바와 같이 SYS2의 NSRZ에 의해 및/또는 너트ID 인덱스를 확인하고 SYS2 책임일 수 있는 C2A에서 참조되는 F1을 발견함으로써 인지될 수 있다. NSRZ(29960)은 수신된 F1 v2를 카탈로그처럼 취급하여 처리할 수 있고(FHOG F1은 카탈로그 모드에 대해 구성될 수 있음), 이를 국부적으로 존재하는 F1 v1에 대해 비교할 수 있고 SYS1으로부터 요청할 수 있는 N10 v1을 누락할 수 있음을 발견할 수 있고, 메모리에 요청을 기록할 수 있다. SYS1은 SYS2에 N10 v1의 사본을 보냄으로써 쿼리에 응답할 수 있다. SYS2는 N10을 예상하고 이를 LSA22에 그를 저장할 수 있고, 그런 후에 N10을 참조하여 관리할 수 있는 모든 FHOG 및 카탈로그를 찾아서, LSA22에서 F1 v1을 초래할 수 있다. F1 v1(29990)은 N10 v1 '로컬'에 대한 엔트리를 추가하여 업데이트될 수 있고 앞서 설명된 바와 같은 저장 장치 카탈로그 업데이트의 기원 경로를 트리거하는 LSA22에 저장되어, C2A v2(29986) 및 C2A v2(29996)으로 C2A v2(29976)의 사본을 갖게 될 수 있다. SYS2에서, F1 v2는 F1을 참조하여 모든 카탈로그 및/또는 FHOG에 의해 동기화될 수 있고 SYS2의 관리 하에 있을 수 있고, F1 v2는 N10 v1에 대한 참조를 포함할 수 있고, N10 v1도 국부적으로 저장될 수 있고, 따라서 그룹 GBE는 일관될 수 있다.
본 예시는 어떻게 FHOG F1이 동일한 그룹 내에 두 개의 다른 시스템을 가로질러 두 개의 다른 저장 장치 상에 두 개의 다른 카탈로그 사이에 참조 브리지로서 작동하여, 그룹 내에서 데이터 너트의 복제를 달성하여 상태를 일관되게 유지하는지를 보여 줄 수 있다. C1A는 또 다른 시스템 SYS2에 (메모리 및/또는 로컬 저장소에) 자체의 섀도우 사본을 가질 수 있고, 이는 그것이 SYS2가 멤버일 수 있는 그룹 GBE에 관심이 있을 수 있고; 또한, SYS2에서, C1A는 SYS2에 의해 관리될 수 없기 때문에 국부적으로 수정가능한 카탈로그가 아닐 수 있고, 따라서 SYS2에서, C1A는 수신되자마자, C1A의 더 최근 버전에 의해 교체될 수 있기 때문이다. C1A는 시스템 SYS1에 (메모리 및/또는 로컬 저장소에) 자체의 섀도우 사본을 가질 수 있고, 이는 그것이 SYS1이 멤버일 수 있는 그룹 GBE에 관심이 있을 수 있고; 또한, SYS1에서, C1A는 SYS1에 의해 관리될 수 있기 때문에 국부적으로 수정가능한 카탈로그일 수 있고, 따라서 SYS1에서, C1A는 카탈로그 엔트리에 나열된 로컬 객체의 상태 변경에 의해 업데이트될 수 있다. 방금 변경된 로컬 객체를 참조하는 FHOG 너트와 같은 그러나 이에 국한되지 않는 임의의 맵 객체 역시 동일한 상태 변경에 의해 업데이트될 수 있다.
에코그룹 GBE에 대한 그룹/루프백 도관은 오프라인 저장 장치를 분할된 시스템으로 처리하는 것을 허용하여, 로컬 저장 장치에 적용할 수 있도록 자동 최종 일관성의 특징을 촉진할 수 있다. 저장 장치에 적용되는 이러한 분할 힐링의 방법은 저장 장치가 하나의 시스템에서 또 다른 시스템으로 이동되는 것을 허용할 수 있고 서버 및 저장 연락처 너트에 대한 약간의 업데이트로 호스트 시스템의 NSRZ에 의해 관리될 수 있다. 예시는 플래시 드라이브와 같은 그러나 그로 한정되지 않는 제거가능한 저장 장치일 수 있다(그것은 이론적으로 임의의 저장 장치가 호스트 시스템으로부터 물리적으로 '제거'할 자격이 있고 및/또는 비활성화될 수 있고, 따라서 임의의 저장 장치가 '제거가능'으로 간주될 수 있다는 것이다).
저장 장치 연락처 너트에 적절한 카르나크 검토를 추가함으로써, 저장 장치의 소유자에 의해 미리구성된 자동 응답에 영향을 줄 수 있다: 저장 장치 연락처 너트에 위치된 가능한 미래 이벤트(페이트)의 카르나크 검토 엔트리는 호스트에 플래시 드라이브 삽입에 의해 트리거될 수 있고, 이는 호스트 NSRZ가 플래시 드라이브에 대해 인증된 호스트가 아니라면, 플래시 드라이브가 데이터를 깨끗이 지울 수 있음을 특정할 수 있고, 따라서 데이터 유출로부터 보호할 수 있다. 플래시 드라이브는 장치의 또 다른 부분 및/또는 저장 장치의 보호된 영역/칩에서 자신의 저장 장치 연락처 너트를 저장할 수 있고, 이는 호스트 NSRZ에서 인식되지 않을 때 삭제되도록 선호의 평문 메타데이터에서 지시할 수 있다. 도시하기에 지나치게 많을 수 있으므로, 최종 일관성의 그룹/루프백 도관 방법의 일부 실제적 함축은 다음의 시나리오에 의해 도시될 수 있지만, 본 개시는 이들에 의해 한정되지 않을 수 있다. 밥은 랩탑을 갖고 출장 중이고 그가 삽입된 채로 남겨둔 홈 데스크탑 및 전원이 켜져 있고 작동 조건에 있는 데스트탑에 연결된 플래시 드라이브 상의 너트를 브라우징하기 원한다. 밥의 랩탑 NSRZ 및 저장 장치는 플래시 드라이브의 내용을 국부적으로 반영하는 최근 섀도우 카탈로그를 이미 가질 수 있다. 밥은 노트 너트에 이번 출장 동안 했던 기록을 저장하기 원할 수 있고 플래시 드라이브 상에 그를 저장되게 할 수 있다: 그는 랩탑 상의 너트에 기록을 저장하고 그룹에 관한 저장 장치로서 플래시 드라이브를 포함하는 그룹과 그를 공유하고, 그런 후에, 그룹의 최종 일관성 메커니즘은 랩탑이 iRZ 서버 또는 임의의 다른 수단을 통해 그의 홈 컴퓨터와 통신할 수 있을 때마다, 집에 데스크탑에 연결된 플래시 드라이브로 다시 노트 너트의 복제를 허용한다. 밥이 출장으로 떠난 동안, 10대 아들은 학업을 위해 플래시 드라이브가 필요하고 단지 밥의 플래시 드라이브를 쥐고 자신의 랩탑에 그를 삽입하여 그의 표준 NSRZ 프로세스를 실행한다: 1) 아들의 랩탑의 로컬 NSRZ는 플래시 드라이브를 인식하지 못할 수 있고, 너트에 접근하는 임의의 키가 없을 수도 있어서, 그것은 밥의 아들에게 플래시 드라이브를 지워야만 하는지 재촉할 수 있고; 2) 플래시 드라이브 저장 장치 카탈로그 상의 평문 메타데이터는 로컬 NSRZ가 그를 인지하지 못할 시에 삭제에 관한 선호를 나타낼 수 있음을 아들의 랩탑의 로컬 NSRZ가 발견할 수 있고, 따라서 플래시 드라이브 내용이 깨끗하게 지워져서 밥의 데이터 손실 방지 선호가 존중된다. 밥은 에코그룹에 대해 너트 저장으로서 주로 제 2 드라이브를 할당하는 그의 홈 오피스에 데스크탑 상에 듀얼 하드 드라이브 설정을 사용할 수 있고, 그는 그를 연결해제하고 에코 그룹의 멤버 시스템이기도 한 추가 디스크 컨트롤러로 지하에 서버에 그를 설치하기를 원한다: 서버가 로컬 장치로서 인지되는 그를 수용하고 자동 구성하는 한에는, 밥은 데스크탑으로부터 하드 드라이브를 연결해제하고 서버에 그를 연결하고 재부팅하며, NSRZ 및 에코그룹 정보에 의한 자동 구성은 서버가 드라이브를 인지하고, 로컬 너트 저장으로서 그를 관리하기 시작하고, 밥으로부터 임의의 추가 개입 없이 드라이브를 끌어내는 데스크탑을 포함하는 다른 메커니즘 상의 에코그룹에 이용가능해지기에 충분할 수 있다. NSRZ 서버는 관리된 저장 장치(들) 대신에 작동할 수 있고 각각의 그러한 관리된 저장 장치가 직접 및/또는 간접 방식으로 그룹의 멤버일 수 있는 시스템일 수 있는 것처럼 거동하게 할 수 있기 때문에, 저장 장치를 관리하도록 에코그룹을 구성하는 SSM 방법론은 임의의 저장 장치 및/또는 서비스가 주로 제거가능한 드라이브로서 처리되는 것을 허용할 수 있다. 그러므로, SSM 방법은 이러한 구현예에서 예시된 바와 같이 그룹 및 루프백 도관의 거동에서 발견될 수 있는 분산 및 탈중심화된 특징의 전부 또는 일부를 상속할 수 있다. 임의의 구성가능한 장치 및/또는 IoT, 클라우드 서버, 클라우드 계정 등을 포함하는 서비스로 확장할 수 있는 SSM의 대안적인 조망은 적어도 하나의 식별을 포함하는 적어도 하나의 다른 식별과 암호 관계를 형성하는 적어도 하나의 식별로서 그를 간주하는 것일 수 있고, 이는 식별 가운데 데이터 동기화를 허용할 수 있는 그룹 및 루프백 도관의 조합을 운영한다.
도 300은 클라우드 드라이브 및 플래시 드라이브를 갖는 SSM을 도시한다. 이전에 구성된 밥의 에코그룹 GBE의 SYS1 및 SYS2의 SSM은 도해된 바와 같이 저장 장치에 클라우드 드라이브 CL1(30022) 및 플래시 드라이브 FD1(30072)를 추가하여 책임을 관리할 수 있다. 클라우드 드라이브 CL1(30022)는 접근 너트 CL1(30024)(및 본 구성에서 다른 사본), 기원 경로 저장 장치 카탈로그 CLA(30026)(및 본 구성에 다른 사본) 및 SD1 및 CL1에 대한 저장 관리자가 되도록 SYS1 서버 연락처 너트에 대한 적절한 수정을 포함한다. 클라우드 드라이브가 읽기 및 쓰기 접근을 제공할 수 있는 한, NSRZ는 그를 임의의 다른 저장 장치처럼 취급할 수 있다. 그러한 구성으로부터 추출되는 효율성은 다수일 수 있지만, 본 예시는 에코그룹에 SSM을 구성함으로써 제공될 수 있는 바와 같은 그러한 특징을 실행하기 위해 요구되는 최소를 도시한다. 플래시 드라이브 FD01(30072)은 저장 장치 연락처 너트 FD1(30074)(및 본 구성에 다른 사본), 기원 경로 저장 장치 카탈로그 FDA(30076)(및 본 구성에 다른 사본), 및 SD2 및 FD1에 관한 저장 관리자가 되도록 SYS2 서버 연락처 너트에 대한 적절한 수정을 포함한다. 플래시 드라이브가 SYS2에 삽입될 때, FD1의 저장 관리자가 되도록 SYS2 서버 연락/접근 너트를 재구성하는 자동화된 구성 프로세스도 있을 수 있고 이는 FD1이 에코그룹과 동기화되게 하는 프로세스를 시작한다. 서버 연락처 너트 SYS2에 대한 수정은 에코그룹을 가로질러 복제하고 따라서 그룹 및 운영 멤버에게 플래시 드라이브 FD1의 현재 상태와 위치를 알릴 수 있고; 이러한 궁극적으로 일관된 (복제/동기화) 거동은 분산 및 탈중심화된 환경에서 현저하게 소망되는 특징일 수 있고, 그 함축은 복원, 중복, 복구력, 상태유지, 독립성, 가용성, 원격 간접 검사, 보안, 분할 복원, 증분적 분할 힐링, 데이터 손실 최소화, 시스템 데이터 완전성, 자동 구성력, 프로세스 단순성, 프로세스 일관성, 유연한 구성력 및 유기적 확장성을 포함한다. 용어 유기적은, 멤버가 일관되고 원활한 방식으로 그룹에 추가됨에 따라, 그룹을 포함하는 방법이 저장, 처리, 통신, 거리, 시스템 특징, 데이터 복원과 같은 그러나 그로 한정되지 않는 증가하여 더 큰 용량을 나타내는 너츠 기반 시스템을 허용하는 문맥에서 사용될 수 있다. 너츠 에코그룹에 너트북 엔트리는 사용자, 그룹, 하드웨어, 계정, 네트워크, IoT 장치, 서버, 랩탑, 저장 장치, 라이센스, 소프트웨어, 프로세스, 데이터, 데이터베이스 등과 같은 그러나 그로 한정되지 않는 에코그룹의 부분일 수 있는 임의의 자신을 안전하게 식별할 수 있고, 그러한 특징은 자기 설명적 시스템으로 간주될 수 있다.
기록은 FDA(30058)와 같은 기원 저장 장치 카탈로그의 복제에 의해 생성된 다중 사본 상에 이루어질 수 있다. 그러한 사본은 중복, 복원, 데이터 완전성, 데이터 손실 방지, 재현성, 가용성, 지원 루프백 도관 활동, 호환성, 자체 설명용이성, 및 영구 저장으로부터의 재생 상태의 여러 특징에 의해 구동될 수 있다. DNA가 생존하기 위해 유기체에 모든 또는 대부분의 세포에서 완전하도록 요구된다는 점에서, 생물 유기체가 유사한 데이터 완전성 특성을 나타낼 수 있다는 발견이 이루어질 수 있다. 에코그룹에서 저장 하위시스템 관리(SSM)의 구성은 각기 공통 에코그룹의 멤버에 의해 관리될 수 있는 하나 이상의 물리적으로 및/또는 논리적으로 고유한 저장 유닛을 가로질러 데이터 객체를 복제하고 및/또는 동기화하도록 그룹 및 루프백 도관에 의해 운영된 데이터 공유 스킴에 내재한 데이터 동기화 및 복제 특징을 사용하는 것을 허용한다. 또한, SSM은 논리 저장 유닛이 공통 그룹의 멤버인 것을 요구하거나 그렇지 않을 수도 있다.
다중사용자 그룹
본 개시에서 논의된 특징 중 일부를 검토하면: 그룹/루프백 도관은 임의의 크기의 논리 그룹의 생성을 허용할 수 있고; 저장 하위시스템 그룹은 저장 장치를 통합하여 그룹의 멤버가 될 수 있고; 그룹 멤버는 사용자, 프로세스, 시스템, 장치, 계정 등에 걸쳐 있을 수 있고; 각각의 그룹 멤버는 그룹 또는 시스템의 컬렉션을 가질 수 있다. 개별적으로 및/또는 신중하게 결합된 방식으로 다중 그룹을 호스팅하는 시스템에 대한 필요가 있을 수 있다. 종래적으로 다중사용자 또는 다중시스템 호스팅으로 언급될 수 있다.
도 301은 VM 호스팅 다중 너츠 시스템을 도시한다. 가상 머신 호스트(VMH)는 자체 내에 가상 기계(VM)의 다중 인스턴스를 가상으로 호스팅할 수 있는 강력한 서버일 수 있고, 각각의 VM은 독립적으로 작동할 수 있다. 다양한 특징을 갖는 여러 종류의 VMH 및 VM이 있을 수 있다. VM 호스트(30100)는 다중 VM, VM1(30120), VM2(30130), VM3(30140) 및 VM4(30150)이 호스팅되는 것을 허용할 수 있는 하이퍼바이저 프로세스(30110)를 운영할 수 있고, 각각의 VM은 NSRZ 프로세스를 실행하는 너츠 시스템의 인스턴스일 수 있다. 이러한 VM 너츠 시스템은 동일한 그룹의 부분, 일부 그룹의 부분 및/또는 자체 그룹의 부분일 수 있다. 개별적인 NSRZ의 세트는 로드 밸런싱, 가용성, 용량, 공격 완화, 및 중복을 허용하기 위해 단일의 논리적 너트서버/RZ 그룹으로서 작동하도록 구성될 수 있다. VM NSRZ는 임의의 독립형 NSRZ 인스턴스처럼 거동하고 취급될 수 있다.
도 302는 서버 에코그룹을 사용하여 다중 에코그룹 호스팅을 도시한다. 앨리스의 윈도우즈 10 머신 WinlO(30200)의 시스템은 멤버로서, 적어도, SYS앨리스 로 명명된 앨리스의 에코그룹 GAE(30230) 및 SYSBOB로 명명된 밥의 에코그룹 GBE(30240)를 갖는 앨리스의 서버 에코그룹 SEA(30220)로 구성된 eRZ 모드(30210)에서 NSRZ를 실행할 수 있고, 그 각각은 저장 장치 유닛 SD0(30250)으로서 앨리스 SEA(30220)의 서버 에코그룹에 의해 관리될 수 있는 시스템 Win10(30200) 디스크 드라이브의 단일 저장 장치 상에 할당된 고유한 논리 저장 영역, GAE에 대한 SD1(30260) 및 SD2(30270)에 접근하도록 SEA 그룹에 의해 구성될 수 있다. 할당된 논리 저장 유닛 SD1 및 SD2는 파일 시스템 및 WinlO(30200) 상에 작동하는 운영 체제의 조합에 의해 허용되는 분할, 파일, 디렉토리 및/또는 임의의 논리 디스크 영역일 수 있다. 서버 에코그룹의 조직 구조는 운영 NSRZ가 이를 인식하고 호스팅된 에코그룹 가운데 메모리 공간, 스레드 및 프로세스의 안전한 분할에 적절하게 관여하는 것을 요구할 수 있다. 서버 에코그룹을 호스팅하고 운영하는 NSRZ는 별개의 프로세스 및/또는 스레드를 초래하고, 관리하고 조정할 수 있고, 각각의 프로세스 및/또는 스레드는 호스팅된 에코그룹 각각을 실행할 수 있다. 서버 에코그룹을 호스팅하고 운영하는 NSRZ는 멀티태스킹 모드에서 작동할 수 있고, 각각의 호스팅된 에코그룹은 폴링 큐에 적층될 수 있고 자체 메모리 공간으로서 그러한 경향이 있지만, 다중 프로세서 또는 스레드를 활용할 수 있는 단일 프로세스에 의해 관리될 수 있다. 임의의 구성에서, NSRZ를 호스팅하는 서버 에코그룹은 하나의 호스팅된 에코그룹에서 다른 에코그룹으로 암호 비밀의 유출을 허용하지 않도록 주의한다.
서버 에코그룹 호스팅의 예시는 도 282에 도시될 수 있고, 여기서 밥의 랩탑(28280)은 밥의 에코그룹(28260) 및 앨리스의 에코그룹(28270) 모두가 동시에 실행하도록 구성된 밥에 대한 서버 에코그룹에 서비스하는 NSRZ를 운영할 수 있다(28250).
도 303은 두 개의 분리 시스템을 가로지르는 두 명의 그룹을 도시한다. 별개의 물리적 하드웨어 상에 실행하는 앨리스 앨리스SYS(30300) 및 밥 밥SYS(30320)에 대해 각각 하나씩 두 개의 시스템이 도시된다. 두 명의 멤버, 앨리스 및 밥을 갖는 그룹 GAB(30340)이 설정될 수 있고, 여기서 각각의 멤버의 너트북에 대한 연락처 너트가 도시될 수 있다: 앨리스A(30310)는 앨리스 너트북에서 그녀 자신에 관한 앨리스 자신의 연락처 너트일 수 있고, 밥A(30312)은 앨리스 너트북에서 밥의 연락처 너트일 수 있고, 밥B(30330)은 밥 너트북에서 그 자신에 대한 밥의 자신의 연락처 너트일 수 있고, 앨리스B(30332)는 밥 너트북에서 앨리스의 연락처 너트일 수 있다. 이는 가장 가능하게 양 시스템에 의해 인터넷에 접근가능한 iRZ를 활용하는 두 개의 물리적으로 분리된 시스템을 가로질러 너트를 공유하기 위한 일반적인 사용자 대 사용자 그룹 설정일 수 있다. 그룹 GAB(30340)는 앨리스, 밥 또는 더 이상 그룹 GAB의 부분이 아닌 소개하는 MC에 의해 처음에 설정되었을 수 있다.
도 304는 서버 에코그룹에 의해 호스트된 두 개의 분리 에코그룹을 가로지른 두 명의 그룹을 도시한다. 단일 시스템(30400) 상의 서버 에코그룹 SEA(30420)에 의해 호스팅된 앨리스 SYS앨리스 GAE(30430) 및 밥 SYS밥 GBE(30440)에 대해 각각 하나씩 두 개의 에코그룹이 도시된다. 두 명의 멤버, 앨리스 및 밥을 갖는 그룹 GAB(30480)가 설정될 수 있고, 각각의 멤버의 너트북에 대한 연락처 너트가 도시될 수 있다. 앨리스A(30432)는 앨리스 너트북에서 그녀 자신에 관한 앨리스 자신의 연락처 너트일 수 있고, 밥A(30434)은 앨리스 너트북에서 밥의 연락처 너트일 수 있고, 밥B(30442)은 밥 너트북에서 그 자신에 대한 밥의 자신의 연락처 너트일 수 있고, 앨리스B(30444)는 밥 너트북에서 앨리스의 연락처 너트일 수 있다. 이는 단일 서버 에코그룹에 의해 호스팅된 두 개의 고유한 에코그룹 모두를 가로질러 너트를 공유하기 위한 일반적인 사용자 대 사용자 그룹 설정일 수 있고, 서버 에코그룹의 NSRZ(30410)는 iRZ와 유사한 각각의 호스팅된 에코그룹으로부터의 RZ 요청을 서비스할 수 있다. 그룹 GAB(30480)는 앨리스, 밥 또는 더 이상 그룹 GAB의 부분이 아닌 소개하는 MC에 의해 처음에 설정되었을 수 있다. 이러한 시나리오는 도 282에 (28250)에 도시된 구성에 적용될 수 있다.
도 305는 두 개의 분리 시스템을 가로지르는 두 명의 그룹을 도시한다. 본 구성은 도 303에 도시된 구성을 확장할 수 있고, 밥은 앨리스에게 앨리스의 에코그룹 NSRZ(30502) 상의 그룹 GAB에 공유된 너트에 그가 접근하는 것을 허용하도록 요청했을 수 있다. 앨리스는 그녀의 너트북에서 밥2A(30514)에 대한 새로운 연락처 너트를 생성하고 밥이 그에 접근하도록 그를 구성할 수 있고(이는 밥에게 패스프레이즈를 갖는 밥2A로의 키홀을 제공하는 것만큼 단순할 수 있다), 그런 다음 앨리스는 밥2에 대한 일부 로컬 공간을 갖는 그룹 GAB의 멤버로서 밥2A를 추가할 수 있다(이는 크기 제약을 갖는 밥2 디렉토리만큼 단순할 수 있다). 이는 밥에게 앨리스의 에코그룹 시스템 상의 그룹 GAB 내의 공유된 너트에 대한 접근을 제공할 수 있다. 또한, 밥은 그에게 더 많은 공간을 할당하도록 앨리스에게 요청할 수 있고, 그래서 그는 자신의 에코그룹 상에 이용가능한 일부 너트에 접근할 수 있다. 앨리스는 밥2가 밥2A 연락처(30514)와 밥의 에코그룹의 부분 및/또는 전체 밥 에코그룹(앨리스와 밥이 동일한 가족 내에서와 같이 서로 많이 신뢰하지 않는다면 권장되지 않음) 사이에 그룹 GBB(30542)를 형성하는 것을 허용할 수 있다. 대량의 비디오 영화 컬렉션을 포함하는 밥의 완전한 에코그룹에 의해 압도되는 것으로부터 자신의 앨리스SYS 시스템의 가능한 침입을 용이하게 하고, 격리하고 및/또는 제한하도록, 앨리스는 특정 유형 및/또는 크기의 너트로 제한된 FHOG 밥2(30544) 내에서만 운영하도록 밥2를 제한할 수 있다. 또한, 앨리스SYS에서 작동하는 다른 카탈로그 오버라이드는 그러한 대형 너트 또는 너트의 세트가 시스템에 자동으로 복제되는 것을 제한할 수 있다.
도 306은 서버 에코그룹에 의해 호스트된 두 개의 분리 에코그룹을 가로지른 두 명의 그룹을 도시한다. 본 구성은 도 304에 도시된 구성을 확장할 수 있고, 밥은 앨리스에게 앨리스의 에코그룹 GAE(30630) 상의 그룹 GAB(30680)에 공유된 너트에 그가 접근하는 것을 허용하도록 요청했을 수 있다. 앨리스는 그녀의 너트북에서 밥2A(30636)에 대한 새로운 연락처 너트를 생성하고 밥이 그에 접근하도록 그를 구성할 수 있고(이는 밥에게 패스프레이즈를 갖는 밥2A로의 키홀을 제공하는 것만큼 단순할 수 있다), 그런 다음 앨리스는 밥2에 대한 일부 로컬 공간을 갖는 그룹 GAB의 멤버로서 밥2A를 추가할 수 있다(이는 크기 제약을 갖는 밥2 디렉토리만큼 단순할 수 있다). 이는 밥에게 앨리스의 에코그룹 시스템 GAE 상의 그룹 GAB 내의 공유된 너트에 대한 접근을 제공할 수 있다. 또한, 밥은 그에게 더 많은 공간을 할당하도록 앨리스에게 요청할 수 있고, 그래서 그는 자신의 에코그룹 상에 이용가능한 일부 너트에 접근할 수 있다. 앨리스는 밥2가 밥2A 연락처(30636)와 밥의 에코그룹 GBE의 부분 및/또는 전체 밥 에코그룹 GBE(앨리스와 밥이 동일한 가족 내에서와 같이 서로 많이 신뢰하지 않는다면 권장되지 않음) 사이에 그룹 GBB(30682)를 형성하는 것을 허용할 수 있다. 대량의 비디오 영화 컬렉션을 포함하는 밥의 완전한 에코그룹에 의해 압도되는 것으로부터 자신의 앨리스SYS 시스템의 가능한 침입을 용이하게 하고, 격리하고 및/또는 제한하도록, 앨리스는 특정 유형 및/또는 크기의 너트로 제한된 FHOG 밥2(30638) 내에서만 운영하도록 밥2를 제한할 수 있다. 또한, 앨리스SYS에서 작동하는 다른 카탈로그 오버라이드는 그러한 대형 너트 또는 너트의 세트가 시스템에 자동으로 복제되는 것을 제한할 수 있다.
서버 에코그룹은 중심화한 권한에 의존하지 않고 정밀하게 제어되는 방식으로 개별 에코그룹의 혼합을 허용할 수 있다. 개별 시스템 및/또는 사용자의 무작위 그룹에 의한 필요에 따른 애드혹 보안 그룹 생성의 혜택은 내부자 위협 완화, 랜섬웨어 복원, 데이터 손실 방지, 기밀 데이터 구획화, 제어된 방식으로 기밀 데이터 공유, 공급 체인 보호, 일관된 방법, 확장성, 자동화, 관리 병목 현상, 낮은 오버헤드, 양방향 데이터 업데이트, 동시 데이터 업데이트, 비동기 데이터 업데이트, 처리 능력의 더 나은 활용, 저장 공간 및 디지털 장치를 포함하여 다수일 수 있다.
결론
구체화될 수 있는 다양한 구현예 및 시나리오는 데이터가 그를 생성한 사용자에게 속하고 사용자가 정밀하게 노출을 제어할 수단을 가질 수 있다는 코어 너츠 철학에 기반할 수 있다. 본 설계는 대안적 암호 방법, 다른 길이의 키, 다른 데이터 변환 및/또는 다른 잠금 메커니즘과 같은 그러나 그로 한정되지 않는 변형 및/또는 대안을 수용할 만큼 충분히 유연할 수 있다. SDFT는 프로그래머에게 가장 낮은 수준에서 데이터를 변환하는 유용한 툴세트를 제공할 수 있고, 너츠 구조 및 다른 복잡한 암호화 구조를 구성하기 위한 구조화된 암호화 프로그래밍을 가능하게 하는 데 도움이 될 수 있다. SDFT는 유연하고 일반화된 방식으로 변환 명령과 쌍을 이루는 데이터의 이동성을 허용할 수 있다. 너츠의 다양한 구현예는 기존의 조직 및 보안 인프라에 맞게 사용자 정의되거나 단일 사용자를 위한 독립형 설치일 수 있다. 데이터의 유형성은 너츠가 제안할 수 있는 중요한 철학일 수 있고, 사용자가 단순한 방식으로 그들이 생성할 수 있는 데이터를 저장, 조작 및/또는 검토하는 능력을 구현할 수 있는 한편, 가장 정교한 관리형 시스템에 적합한 특징을 제공할 수 있다. 결론적으로, 너츠는 개별 사용자에게 디지털 작업과 데이터를 구성하는 최근의 방법에 대한 대안을 제공할 수 있다.
게다가, 본 개시의 부분은 시스템의 그룹에 적용할 수 있는 너츠 시스템 및 방법의 유용성을 증가시킬 수 있다. 전반적인 설계 철학의 목표는 사용자 개별성을 유지하고 안전하고 관리가능하며 복원적인 방식으로 사용자의 디지털 자산에 대해 제어하는 것인 한편, 다른 사용자에 의한 시스템 사용 및 구성의 애드혹 성질에 관여하고 그에 대해 고려한 것이다. 통합을 염두에 두고 계층화된 일관성 있는 방법을 도입하는 것은 임의의 기존 시스템에 기술의 너츠 세트의 더 용이한 전체 통합을 허용할 수 있다. 무엇보다도, 이러한 개시는 일반 개인 사용자에게 고급 기관에서만 사용할 수 있는 방식으로 디지털 환경을 제어하고 보호할 수 있는 가장 정교한 방법을 제공할 수 있다. 확장이 중요할 수 있지만 너츠 관점에서, 확장은 단일 시스템으로 그리고 더 가능하게 단일 데이터 객체로 시작할 수 있고, 모든 디지털 시스템에 있어서, 결국 디폴트에 의해 적대적일 수 있는 이종 환경에서 적절한 작업을 위해 안전한 데이터에 의존할 수 있다. 보안은 데이터 객체가 더 많은 능력을 부여받도록 허용할 수 있고, 이는 데이터 개체가 신뢰되는 방식으로 그들 대신에 작업을 수행하도록 서비스를 요청하는 것을 고무시킴으로써, 데이터는 보다 자율적이고, 자립적이고, 자기 구성 및/또는 자기 인식적이게 될 수 있다. 결론적으로, 데이터의 적절한 보안은 생래적으로 보안 시스템을 생성하고 구성하기 위한 토대일 수 있고, 데이터 객체의 보안 특성은 프랙탈 보안으로 불리는 더 큰 사용 규모에서 출현할 수 있다.

Claims (136)

  1. 적어도 하나의 메모리;
    상기 적어도 하나의 메모리에 저장된 복수의 잠금 노드(너트(nut)), 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 및
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 상기 1차 키의 각각에 대해 키 맵을 포함하고, 상기 적어도 하나의 접근 속성 키는 상기 너트 내에 상응하는 상기 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고; 그리고
    상기 적어도 하나의 메모리에 저장된 적어도 하나의 유연한 계위 객체 그래프(FHOG) 노드를 포함하고, 상기 적어도 하나의 FHOG 노드는:
    복수의 FHOG 키 맵을 포함하는 FHOG 입력 섹션, 상기 FHOG 키 맵의 각각은 각기 복수의 1차 FHOG 키 중 상응하는 하나로 암호화되고, 상기 FHOG 키 맵은 복수의 메인 FHOG 키를 포함하고;
    FHOG 암호화된 유도 키를 포함하는 FHOG 가변 잠금 섹션, 상기 FHOG 암호화된 유도 키는 상기 FHOG 입력 섹션에 적용된 상기 복수의 1차 FHOG 키에 상응하는 상기 복수의 메인 FHOG 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 그리고
    암호화된 참조 세트를 포함하는 FHOG 출력 섹션을 포함하고, 상기 암호화된 참조 세트는 상기 FHOG 유도 키로 복호화되도록 구성되고, 상기 참조 세트는 상기 너트를 포함하는 참조 기반 파일 시스템을 집합적으로 규정하는 상기 너트의 각각에 대한 참조를 포함하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 데이터를 구조화하기 위한 시스템.
  2. 제 1항에 있어서,
    디지털 자원에 대한 적어도 하나의 참조는 상기 디지털 자원과 연관된 적어도 하나의 속성을 포함하는, 데이터를 구조화하기 위한 시스템.
  3. 제 1항에 있어서,
    디지털 자원에 대한 적어도 하나의 참조는 또 다른 디지털 자원에 대한 적어도 하나의 참조를 참조하는 적어도 하나의 속성을 포함하는, 데이터를 구조화하기 위한 시스템.
  4. 제 1항에 있어서,
    상기 잠금 노드 중 하나의 상기 입력 섹션은 상기 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는, 데이터를 구조화하기 위한 시스템.
  5. 제 1항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 데이터를 구조화하기 위한 시스템.
  6. 제 5항에 있어서,
    상기 너트에 상기 잠금 노드의 상기 적어도 하나의 계층 키 및 상기 입력 섹션은 상기 너트의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는, 데이터를 구조화하기 위한 시스템.
  7. 제 1항에 있어서,
    상기 너트의 적어도 하나의 잠금 노드의 상기 출력 섹션은 복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 로그 섹션을 저장하는, 데이터를 구조화하기 위한 시스템.
  8. 제 1항에 있어서,
    상기 데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 상기 적어도 하나의 접근 역할 키를 조합하는 것을 더 포함하는, 데이터를 구조화하기 위한 시스템.
  9. 제 7항에 있어서,
    상기 적어도 하나의 로그 섹션은 암호화된 형태로 저장되는, 데이터를 구조화하기 위한 시스템.
  10. 제 7항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 로그된 것과 로그되지 않은 것을 제어하는, 데이터를 구조화하기 위한 시스템.
  11. 제 7항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 적어도 하나의 로그에 세부의 레벨을 제어하는, 데이터를 구조화하기 위한 시스템.
  12. 제 7항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 로그의 유형을 제어하는, 데이터를 구조화하기 위한 시스템.
  13. 제 12항에 있어서,
    상기 로그의 유형은 상기 너트를 수반하는 처리 이벤트를 수반하는 로그 엔트리를 포함하는, 데이터를 구조화하기 위한 시스템.
  14. 제 12항에 있어서,
    상기 로그의 유형은 상기 너트에 상기 잠금 노드 중 적어도 하나에서 상기 데이터를 수반하는 이력 검토 엔트리를 포함하는, 데이터를 구조화하기 위한 시스템.
  15. 제 7항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 로그 엔트리를 생성하는 방법을 제어하는, 데이터를 구조화하기 위한 시스템.
  16. 제 1항에 있어서,
    상기 참조 세트는 너트 식별자의 목록을 포함하는, 데이터를 구조화하기 위한 시스템.
  17. 제 1항에 있어서,
    상기 참조 세트는 너트 페이로드 유형의 목록을 포함하는, 데이터를 구조화하기 위한 시스템.
  18. 제 1항에 있어서,
    상기 파일 시스템은 상기 너트의 물리적 위치와 독립적으로 규정되는, 데이터를 구조화하기 위한 시스템.
  19. 제 1항에 있어서,
    상기 1차 FHOG 키와 연관된 허가는 각각의 참조된 너트의 상기 1차 키와 연관된 상기 허가로부터 독립적인, 데이터를 구조화하기 위한 시스템.
  20. 제 1항에 있어서,
    상기 FHOG 출력 섹션은 상기 FHOG 유도 키로 복호화하도록 구성된 다른 암호화된 데이터를 더 포함하는, 데이터를 구조화하기 위한 시스템.
  21. 적어도 하나의 프로세서에 의해, 적어도 하나의 메모리에서 데이터 저장 구조에 접근하는 단계, 상기 데이터 저장 구조는 적어도 하나의 다른 데이터 저장 구조를 생성하도록 상기 데이터 저장 구조에서 특정된 시퀀스에서 수행될 복수의 구성 명령어를 포함하는 적어도 하나의 명령어 필드를 포함하고;
    상기 적어도 하나의 프로세서에 의해, 상기 특정된 시퀀스에서 복수의 구성 명령어를 실행하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 상기 실행에 의해 생성된 상기 적어도 하나의 다른 데이터 저장 구조를 저장하거나 그에 접근하는 단계를 포함하고,
    상기 적어도 하나의 명령어 필드에 포함된 상기 복수의 구성 명령어 내의 적어도 하나의 구성 명령어의 상기 실행은 상기 적어도 하나의 다른 데이터 저장 구조 내에 그리고 그에 의해 완전히 작동가능한 적어도 하나의 암호 접근 제어층을 구성하는, 데이터 저장 구조를 구성하기 위한 방법.
  22. 제 21항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 적어도 하나의 다른 데이터 저장 구조의 적어도 하나의 명령어 필드에 상기 적어도 하나의 명령어 필드를 복사하는 단계를 더 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  23. 제 21항에 있어서,
    상기 접근은 적어도 하나의 다른 데이터 저장 구조를 생성하도록 라이브러리에 특정된 시퀀스에서 수행될 복수의 구성 명령어의 상기 라이브러리로부터 상기 적어도 하나의 명령어 필드에 상기 복수의 구성 명령어를 가져오는 단계를 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  24. 제 21항에 있어서,
    상기 적어도 하나의 암호 접근 제어층은 적어도 하나의 암호 가변 잠금층을 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  25. 제 21항에 있어서,
    상기 적어도 하나의 암호 접근 제어층은 적어도 하나의 암호 계층 접근 제어층을 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  26. 제 21항에 있어서,
    상기 적어도 하나의 암호 접근 제어층은 적어도 하나의 암호 역할 기반 접근 제어층을 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  27. 제 21항에 있어서,
    상기 데이터 저장 구조는:
    상기 적어도 하나의 메모리에 저장된 복수의 잠금 노드(너트)를 포함하고, 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 그리고
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 상기 1차 키의 각각에 대해 키 맵을 포함하고, 상기 적어도 하나의 접근 속성 키는 상기 너트 내에 상응하는 상기 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 데이터 저장 구조를 구성하기 위한 방법.
  28. 제 27항에 있어서,
    상기 잠금 노드 중 하나의 상기 입력 섹션에 의해, 상기 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는 단계를 더 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  29. 제 27항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 데이터 저장 구조를 구성하기 위한 방법.
  30. 제 29항에 있어서,
    상기 너트에 상기 잠금 노드의 상기 적어도 하나의 계층 키 및 상기 입력 섹션에 의해, 상기 너트 내의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는 단계를 더 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  31. 제 27항에 있어서,
    상기 너트의 적어도 하나의 잠금 노드의 상기 출력 섹션에서, 복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 로그 섹션을 저장하는 단계를 더 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  32. 제 27항에 있어서,
    데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 상기 적어도 하나의 접근 역할 키를 조합하는 단계를 더 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  33. 제 31항에 있어서,
    적어도 하나의 로그는 암호화된 형태로 저장되는, 데이터 저장 구조를 구성하기 위한 방법.
  34. 제 31항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 로그된 것과 로그되지 않은 것을 제어하는, 데이터 저장 구조를 구성하기 위한 방법.
  35. 제 31항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 적어도 하나의 로그에 세부의 레벨을 제어하는, 데이터 저장 구조를 구성하기 위한 방법.
  36. 제 31항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 로그의 유형을 제어하는, 데이터 저장 구조를 구성하기 위한 방법.
  37. 제 36항에 있어서,
    상기 로그의 유형은 상기 너트를 수반하는 처리 이벤트를 수반하는 로그 엔트리를 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  38. 제 36항에 있어서,
    상기 로그의 유형은 상기 너트에서 상기 데이터를 수반하는 이력 검토 엔트리를 포함하는, 데이터 저장 구조를 구성하기 위한 방법.
  39. 제 31항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 로그 엔트리를 생성하는 방법을 제어하는, 데이터 저장 구조를 구성하기 위한 방법.
  40. 제 21항에 있어서,
    생성될 때, 상기 적어도 하나의 다른 데이터 저장 구조는:
    적어도 하나의 메모리에 저장된 복수의 잠금 노드 (너트)를 포함하고, 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 그리고
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 1차 키의 각각에 대해 키 맵을 포함하고, 적어도 하나의 접근 속성 키는 너트 내에 상응하는 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 데이터 저장 구조를 구성하기 위한 방법.
  41. 적어도 하나의 메모리;
    적어도 하나의 페이로드 섹션; 및,
    페이로드와는 다른 적어도 하나의 카르나크 섹션;을 포함하는 상기 적어도 하나의 메모리에 저장된 데이터 저장 구조;를 포함하고, 각각의 카르나크 섹션은 적어도 하나의 카르나크 검토를 포함하고, 각각의 카르나크 검토는:
    데이터 구조의 적어도 하나의 섹션의 과거 검토,
    상기 데이터 저장 구조의 과거 이벤트 로그,
    상기 카르나크 섹션에 대한 관심의 이벤트의 과거 이벤트 로그, 및
    적어도 하나의 이벤트가 트리거될 때 처리하도록 구성된 적어도 하나의 명령어를 포함하는 가능한 미래 이벤트 중 적어도 하나이고, 상기 적어도 하나의 명령어를 처리하는 결론은 적어도 하나의 구성가능한 이벤트를 일으키는, 데이터를 구조화하기 위한 시스템.
  42. 제 41항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    상기 데이터 저장 구조;
    상기 시스템에 접근가능한 또 다른 데이터 저장 구조;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스;
    상기 적어도 하나의 페이로드 섹션;
    상기 적어도 하나의 카르나크 섹션; 및
    상기 시스템의 작동 시스템 중 적어도 하나 상에 작동하는, 데이터를 구조화하기 위한 시스템.
  43. 제 41항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    상기 시스템의 외부에 생성된 적어도 하나의 이벤트;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트 중 적어도 하나에 응답하는, 데이터를 구조화하기 위한 시스템.
  44. 제 41항에 있어서,
    상기 적어도 하나의 구성가능한 이벤트는:
    상기 시스템에 대한 내부 이벤트; 및
    상기 시스템에 대한 외부 이벤트 중 적어도 하나이고;
    상기 적어도 하나의 명령어를 처리하는 결론은:
    반환값 없음;
    반환값;
    상기 적어도 하나의 명령어의 성공적인 처리에 상응하는 반환값; 및
    상기 적어도 하나의 명령어의 성공적이지 않은 처리에 상응하는 반환값 중 적어도 하나를 반환하는, 데이터를 구조화하기 위한 시스템.
  45. 제 41항에 있어서,
    상기 데이터 저장 구조는:
    상기 적어도 하나의 메모리에 저장된 복수의 잠금 노드(너트)를 포함하고, 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 및
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 1차 키의 각각에 대해 키 맵을 포함하고, 적어도 하나의 접근 속성 키는 너트 내에 상응하는 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 데이터를 구조화하기 위한 시스템.
  46. 제 45항에 있어서,
    상기 잠금 노드 중 하나의 상기 입력 섹션은 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는, 데이터를 구조화하기 위한 시스템.
  47. 제 45항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 데이터를 구조화하기 위한 시스템.
  48. 제 47항에 있어서,
    상기 너트에 상기 잠금 노드의 상기 적어도 하나의 계층 키 및 상기 입력 섹션은 상기 너트 내의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는, 데이터를 구조화하기 위한 시스템.
  49. 제 45항에 있어서,
    복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 카르나크 섹션은 상기 너트의 적어도 하나의 잠금 노드의 상기 출력 섹션에 저장되는, 데이터를 구조화하기 위한 시스템.
  50. 제 45항에 있어서,
    상기 적어도 하나의 접근 역할 키는 상기 데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 조합되는, 데이터를 구조화하기 위한 시스템.
  51. 제 49항에 있어서,
    상기 적어도 하나의 카르나크 섹션은 암호화된 형태로 저장되는, 데이터를 구조화하기 위한 시스템.
  52. 제 49항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 섹션에서 로그된 것과 로그되지 않은 것을 제어하는, 데이터를 구조화하기 위한 시스템.
  53. 제 49항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 검토에 세부의 레벨을 제어하는, 데이터를 구조화하기 위한 시스템.
  54. 제 49항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 카르나크 검토의 유형을 제어하는, 데이터를 구조화하기 위한 시스템.
  55. 제 54항에 있어서,
    상기 카르나크 검토의 유형은:
    상기 너트를 수반하는 처리 이벤트를 수반하는 로그 엔트리;
    상기 너트에서 상기 데이터를 수반하는 과거 검토 엔트리;
    상기 너트 상에 작동하는 가능한 미래 이벤트 엔트리;
    처리 시스템에 접근가능한 또 다른 데이터 저장 구조 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 작동 시스템 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 외부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리 중 적어도 하나를 포함하는, 데이터를 구조화하기 위한 시스템.
  56. 제 49항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 카르나크 검토를 생성하는 방법을 제어하는, 데이터를 구조화하기 위한 시스템.
  57. 적어도 하나의 프로세서에 의해, 각각의 그룹 멤버에 적어도 하나의 상응하는 키를 분배하는 적어도 하나의 그룹 관리자 및 적어도 하나의 관리자 키에 의해 그룹 멤버의 사각형 크로스 매트릭스를 생성하는 단계, 상기 사각형 크로스 매트릭스는 각기 각각의 행 멤버 및 각각의 열 멤버를 갖는 복수의 요소를 포함하고;
    상기 적어도 하나의 프로세서에 의해, 키의 조합과 각각의 사각형 크로스 매트릭스 요소를 채우는 단계, 상기 채우는 단계는:
    어디에서 상기 행 멤버와 상기 열 멤버가 동일한지를 포함하는 상기 행 멤버 및 상기 열 멤버 사이의 암호화된 양방향 데이터 흐름을 위해 사용되는 적어도 하나의 키를 생성하는 단계;
    상기 열 멤버로부터 상기 행 멤버로 암호화된 양방향 데이터 흐름을 위해 사용되는 적어도 하나의 키를 생성하는 단계; 및
    상기 행 멤버로부터 상기 열 멤버로 암호화된 양방향 데이터 흐름을 위해 사용된 적어도 하나의 키 부분을 복사하고 위치시키는 단계; 중 적어도 하나를 포함하고,
    상기 적어도 하나의 프로세서에 의해, 상기 사각형 크로스 매트릭스의 적어도 하나의 선택 크로스 매트릭스 요소로부터 적어도 하나의 선택 키를 제거하고, 그로써 상기 적어도 하나의 선택 크로스 매트릭스 요소에 상응하는 그룹 멤버의 쌍 사이에 적어도 하나의 선택 방향에서 암호화된 데이터 흐름을 제한하는 단계;
    상기 적어도 하나의 프로세서에 의해, 각각의 행에 상응하는 각각의 그룹 멤버에 대해 상기 적어도 하나의 상응하는 키로 복호화되도록 크로스 매트릭스 요소의 각각의 행을 구성하는 단계;
    상기 적어도 하나의 프로세서에 의해, 적어도 하나의 관리자 키에 의해 복호화되도록 각각의 그룹 멤버에 대해 각각의 적어도 하나의 상응하는 키의 사본을 구성하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 상기 적어도 하나의 그룹 관리자에 의해 복호화되도록 상기 적어도 하나의 관리자 키를 구성하는 단계;를 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  58. 제 57항에 있어서,
    상기 적어도 하나의 그룹 관리자는 적어도 하나의 그룹 멤버를 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  59. 제 57항에 있어서,
    상기 분배는:
    상기 그룹 멤버 중 적어도 하나에 대해 상기 적어도 하나의 상응하는 키를 생성하는 단계; 및
    상기 적어도 하나의 관리자 키를 생성하는 단계 중 적어도 하나를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  60. 제 57항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 적어도 하나의 그룹 멤버의 상기 적어도 하나의 상응하는 키로 상기 적어도 하나의 관리자 키의 사본을 암호화함으로써 상기 적어도 하나의 그룹 관리자와는 다른 상기 그룹 멤버로부터 적어도 하나의 제 2 그룹 관리자를 할당하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  61. 제 57항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 적어도 하나의 관리자 키를 사용하여 상기 적어도 하나의 그룹 관리자에 의해 상기 그룹에 신규 멤버를 추가하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  62. 제 57항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 그룹 멤버의 상기 적어도 하나의 상응하는 키로 복호화되도록 구성된 각각의 그룹 멤버 키에 분배하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  63. 제 57항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 각각의 그룹 멤버 및 상기 적어도 하나의 그룹 관리자에 대해 입력된 데이터 저장 구조에 모든 키를 저장하는 단계를 더 포함하고, 상기 데이터 저장 구조는:
    적어도 하나의 메모리에 저장된 복수의 잠금 노드(너트)를 포함하고, 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 및
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 상기 1차 키의 각각에 대해 키 맵을 포함하고, 상기 적어도 하나의 접근 속성 키는 상기 너트 내에 상응하는 상기 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  64. 제 63항에 있어서,
    잠금 노드 중 하나의 입력 섹션에 의해, 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  65. 제 63항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  66. 제 65항에 있어서,
    적어도 하나의 계층 키 및 너트에 잠금 노드의 입력 섹션에 의해, 너트 내의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  67. 제 63항에 있어서,
    상기 너트의 적어도 하나의 잠금 노드의 상기 출력 섹션에서, 복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 카르나크 섹션을 저장하는 단계를 더 포함하고, 상기 적어도 하나의 카르나크 섹션은:
    적어도 하나의 카르나크 검토를 포함하고, 각각의 카르나크 검토는:
    상기 너트의 적어도 하나의 섹션의 과거 검토,
    상기 너트의 과거 이벤트 로그,
    상기 카르나크 섹션에 대한 관심의 이벤트의 과거 이벤트 로그, 및
    적어도 하나의 이벤트가 트리거될 때 처리하도록 구성된 적어도 하나의 명령어를 포함하는 가능한 미래 이벤트 중 적어도 하나이고, 상기 적어도 하나의 명령어를 처리하는 결론은 적어도 하나의 구성가능한 이벤트를 일으키는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  68. 제 67항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    상기 너트;
    상기 시스템에 접근가능한 또 다른 데이터 저장 구조;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스;
    적어도 하나의 페이로드 섹션;
    적어도 하나의 카르나크 섹션; 및
    상기 시스템의 작동 시스템 중 적어도 하나 상에 작동하는, 데이터를 구조화하기 위한 시스템.
  69. 제 67항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    시스템의 외부에 생성된 적어도 하나의 이벤트;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트 중 적어도 하나에 응답하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  70. 제 63항에 있어서,
    데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 상기 적어도 하나의 접근 역할 키를 조합하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  71. 제 67항에 있어서,
    상기 적어도 하나의 카르나크 섹션은 암호화된 형태로 저장되는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  72. 제 67항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 섹션에서 로그된 것과 로그되지 않은 것을 제어하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  73. 제 67항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 검토에 세부의 레벨을 제어하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  74. 제 67항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 카르나크 검토의 유형을 제어하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  75. 제 74항에 있어서,
    상기 카르나크 검토의 유형은:
    상기 너트를 수반하는 처리 이벤트를 수반하는 로그 엔트리;
    상기 너트에서 상기 데이터를 수반하는 과거 검토 엔트리;
    상기 너트 상에 작동하는 가능한 미래 이벤트 엔트리;
    처리 시스템에 접근가능한 또 다른 데이터 저장 구조 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 작동 시스템 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 외부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리 중 적어도 하나를 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  76. 제 67항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 카르나크 검토를 생성하는 방법을 제어하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  77. 제 63항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 그룹 멤버의 상기 적어도 하나의 상응하는 키로 복호화되도록 구성된 각각의 그룹 멤버 너트에 분배하는 단계를 더 포함하는, 그룹에서 데이터 흐름을 암호로 제어하는 방법.
  78. 처리 그룹 멤버 대신에 제 1 시스템에 메모리에 적어도 하나의 프로세서에 의해, 상기 제 1 시스템을 포함하는 적어도 하나의 제 2 시스템으로부터, 적어도 하나의 그룹 객체의 적어도 하나의 그룹 식별자를 참조하는 적어도 하나의 카탈로그 객체를 수신하는 단계, 상기 그룹 객체는:
    적어도 하나의 그룹 식별자, 및
    상기 처리 그룹 멤버를 포함하는 적어도 하나의 멤버를 포함하고,
    상기 적어도 하나의 카탈로그 객체는:
    적어도 하나의 카탈로그 식별자, 및
    적어도 하나의 그룹 식별자, 및
    적어도 하나의 그룹의 상기 적어도 하나의 멤버와 적어도 하나의 공유된 데이터 객체에 대한 적어도 하나의 참조를 포함하고, 그리고
    상기 적어도 하나의 공유된 데이터 객체는:
    적어도 하나의 데이터 객체 식별자,
    적어도 하나의 페이로드,
    검토의 이력,
    적어도 하나의 버전 마커, 및
    병합 방법을 나타내는 적어도 하나의 속성을 포함하고;
    상기 적어도 하나의 프로세서에 의해, 로컬 카탈로그 객체에서 발견되지 않은 공유된 데이터 객체 식별자의 목록을 생성하는 동일한 적어도 하나의 카탈로그 식별자, 및 적어도 하나의 그룹 식별자를 갖는 적어도 하나의 로컬 카탈로그 객체와 수신된 적어도 하나의 카탈로그 객체를 비교하는 단계;
    상기 적어도 하나의 프로세서에 의해, 상기 제 1 시스템을 포함하는 상기 적어도 하나의 제 2 시스템으로부터 상기 공유된 데이터 객체 식별자의 목록에 상기 적어도 하나의 공유된 데이터 객체를 수신하는 단계;
    상기 적어도 하나의 프로세서에 의해, 동일한 적어도 하나의 데이터 객체 식별자를 갖는 로컬 데이터 객체와 수신된 적어도 하나의 공유된 데이터 객체를 동기화하고, 상기 적어도 하나의 데이터 객체 식별자의 버전을 갖는 동기화된 데이터 객체를 생성하고 상기 동기화된 데이터 객체를 국부적으로 저장하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 상기 동기화된 데이터 객체의 상기 적어도 하나의 데이터 객체 식별자의 상기 버전을 참조하는 상기 적어도 하나의 로컬 카탈로그 객체에 적어도 하나의 카탈로그 엔트리를 업데이트하는 단계를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  79. 제 78항에 있어서,
    상기 적어도 하나의 공유된 데이터 객체에 대한 상기 적어도 하나의 참조는 상기 적어도 하나의 공유된 데이터 객체의 적어도 하나의 버전 마커를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  80. 제 78항에 있어서,
    상기 로컬 데이터 객체는 상기 제 1 시스템에 대해 적어도 하나의 국부적으로 접근가능한 영구 저장소에 위치되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  81. 제 78항에 있어서,
    상기 로컬 데이터 객체는 상기 제 1 시스템의 적어도 하나의 메모리에 위치되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  82. 제 78항에 있어서,
    상기 적어도 하나의 로컬 카탈로그 객체는 상기 제 1 시스템을 포함하는 상기 적어도 하나의 제 2 시스템의 적어도 하나의 국부적으로 접근가능한 영구 저장소에 위치되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  83. 제 78항에 있어서,
    상기 적어도 하나의 로컬 카탈로그 객체는 상기 제 1 시스템을 포함하는 상기 적어도 하나의 제 2 시스템의 적어도 하나의 메모리에 위치되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  84. 제 78항에 있어서,
    상기 적어도 하나의 로컬 카탈로그 객체는 상기 수신된 적어도 하나의 카탈로그 객체에 의해 대체되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  85. 제 78항에 있어서,
    적어도 하나의 로컬 카탈로그는 카탈로그로서 작동하는 적어도 하나의 맵 객체를 참조하고; 그리고 상기 적어도 하나의 맵 객체는:
    적어도 하나의 맵 식별자,
    적어도 하나의 그룹 식별자, 및
    상기 적어도 하나의 그룹의 상기 적어도 하나의 멤버와 적어도 하나의 공유된 데이터 객체에 대한 적어도 하나의 참조를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  86. 제 85항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 동기화된 데이터 객체의 상기 적어도 하나의 데이터 객체 식별자의 상기 버전을 참조하는 카탈로그로서 작동하는 적어도 하나의 로컬 맵 객체에 적어도 하나의 맵 엔트리를 업데이트하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  87. 제 78항에 있어서,
    상기 동기화는:
    상기 동기화된 데이터 객체로서 제 1 데이터 객체를 생성하는 단계;
    상기 동기화된 데이터 객체로서 제 2 데이터 객체를 생성하는 단계;
    더 관련된 데이터 객체로부터 병합 방법을 선택함으로써 상기 동기화된 데이터 객체를 생성하고, 선택된 병합 방법을 사용하여 상기 제 1 데이터 객체의 이력과 상기 제 2 데이터 객체의 이력을 병합하고, 병합된 이력으로부터 현재의 페이로드를 재구성하고, 상기 현재의 페이로드 및 상기 병합된 이력으로 상기 더 관련된 데이터 객체의 페이로드 및 히스토리를 업데이트하고, 덜 관련된 데이터 객체를 폐기하는 단계 중 적어도 하나를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  88. 제 87항에 있어서,
    상기 선택은 상기 제 1 및 제 2 데이터 객체의 각각으로부터 속성 중 적어도 하나의 조합을 비교함으로써 상기 제 1 및 제 2 데이터 객체 중에 있는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  89. 제 78항에 있어서,
    상기 적어도 하나의 카탈로그 객체의 상기 수신, 상기 비교, 상기 적어도 하나의 공유된 데이터 객체의 상기 수신, 상기 동기화, 및 각각의 적어도 하나의 그룹의 각각의 적어도 하나의 멤버의 각각의 적어도 하나의 시스템에 대한 상기 업데이트를 간헐적으로 수행하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  90. 제 78항에 있어서,
    상기 제 1 시스템은 상호연결된 객체 참조에 의해 단독으로 카탈로그로서 작동하는 간접적으로 처리하는 관련된 접근 객체, 카탈로그 객체, 및 맵 객체를 포함하는 처리 그룹 멤버 대신에 처리를 더 수행하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  91. 제 78항에 있어서,
    상기 적어도 하나의 카탈로그 객체의 상기 수신, 상기 비교, 상기 적어도 하나의 공유된 데이터 객체의 상기 수신, 상기 동기화, 및 적어도 하나의 시스템을 포함하는 보안 네트워크에 걸쳐 각각의 적어도 하나의 그룹의 각각의 적어도 하나의 멤버에 대한 각각의 적어도 하나의 시스템에 대한 상기 업데이트를 간헐적으로 수행하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  92. 제 78항에 있어서,
    상기 그룹 객체에 상기 적어도 하나의 멤버는:
    또 다른 식별가능한 그룹 객체;
    식별가능한 영구 저장 시스템;
    식별가능한 사용자;
    식별가능한 프로세스;
    상기 제 1 시스템을 포함하는 식별가능한 시스템;
    식별가능한 네트워크;
    식별가능한 하드웨어 시스템;
    식별가능한 데이터베이스 시스템;
    식별가능한 데이터 객체;
    디지털 ID(identity) 중 적어도 하나에 대한 참조인, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  93. 제 78항에 있어서,
    상기 적어도 하나의 공유된 데이터 객체는 객체 참조를 포함하는 맵 객체인, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  94. 제 78항에 있어서,
    상기 그룹 객체는 상기 그룹 멤버 가운데 공유하는 보안 데이터를 위한 키 분배 방법을 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  95. 제 94항에 있어서,
    상기 키 분배 방법은 그룹에서 데이터 흐름을 암호로 제어하는 것을 포함하고, 상기 제어하는 것은:
    적어도 하나의 프로세서에 의해, 각각의 그룹 멤버에 적어도 하나의 상응하는 키를 분배하는 적어도 하나의 그룹 관리자 및 적어도 하나의 관리자 키에 의해 그룹 멤버의 사각형 크로스 매트릭스를 생성하는 단계, 상기 사각형 크로스 매트릭스는 각기 각각의 행 멤버 및 각각의 열 멤버를 갖는 복수의 요소를 포함하고;
    적어도 하나의 프로세서에 의해, 키의 조합과 각각의 사각형 크로스 매트릭스 요소를 채우는 단계, 상기 채우는 단계는:
    어디에서 상기 행 멤버와 상기 열 멤버가 동일한지를 포함하는 상기 행 멤버 및 상기 열 멤버 사이의 암호화된 양방향 데이터 흐름을 위해 사용되는 적어도 하나의 키를 생성하는 단계;
    상기 열 멤버로부터 상기 행 멤버로 암호화된 양방향 데이터 흐름을 위해 사용된 적어도 하나의 키를 생성하는 단계; 및
    상기 행 멤버로부터 상기 열 멤버로 암호화된 양방향 데이터 흐름을 위해 사용된 적어도 하나의 키 부분을 복사하고 위치시키는 단계; 중 적어도 하나를 포함하고,
    상기 적어도 하나의 프로세서에 의해, 상기 사각형 크로스 매트릭스의 적어도 하나의 선택 크로스 매트릭스 요소로부터 적어도 하나의 선택 키를 제거하고, 그로써 상기 적어도 하나의 선택 크로스 매트릭스 요소에 상응하는 그룹 멤버의 쌍 사이에 적어도 하나의 선택 방향에서 암호화된 데이터 흐름을 제한하는 단계;
    상기 적어도 하나의 프로세서에 의해, 각각의 행에 상응하는 각각의 그룹 멤버에 대해 상기 적어도 하나의 상응하는 키로 복호화되도록 크로스 매트릭스 요소의 각각의 행을 구성하는 단계;
    상기 적어도 하나의 프로세서에 의해, 적어도 하나의 관리자 키에 의해 복호화되도록 각각의 그룹 멤버에 대해 각각의 적어도 하나의 상응하는 키의 사본을 구성하는 단계; 및
    상기 적어도 하나의 프로세서에 의해, 상기 적어도 하나의 그룹 관리자에 의해 복호화되도록 상기 적어도 하나의 관리자 키를 구성하는 단계;를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  96. 제 95항에 있어서,
    상기 적어도 하나의 그룹 관리자는 적어도 하나의 그룹 멤버를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  97. 제 95항에 있어서,
    상기 분배는:
    상기 그룹 멤버 중 적어도 하나에 대해 상기 적어도 하나의 상응하는 키를 생성하는 단계; 및
    상기 적어도 하나의 관리자 키를 생성하는 단계 중 적어도 하나를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  98. 제 95항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 적어도 하나의 그룹 멤버의 상기 적어도 하나의 상응하는 키로 상기 적어도 하나의 관리자 키의 사본을 암호화함으로써 상기 적어도 하나의 그룹 관리자와는 다른 상기 그룹 멤버로부터 적어도 하나의 제 2 그룹 관리자를 할당하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  99. 제 95항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 적어도 하나의 관리자 키를 사용하여 상기 적어도 하나의 그룹 관리자에 의해 상기 그룹에 신규한 멤버를 추가하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  100. 제 95항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 그룹 멤버의 상기 적어도 하나의 상응하는 키로 복호화되도록 구성된 각각의 그룹 멤버 키에 분배하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  101. 제 78항에 있어서,
    각각의 객체는 데이터 구조이고, 상기 데이터 구조는:
    적어도 하나의 메모리에 저장된 복수의 잠금 노드(너트)를 포함하고, 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 그리고
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 상기 1차 키의 각각에 대해 키 맵을 포함하고, 상기 적어도 하나의 접근 속성 키는 상기 너트 내에 상응하는 상기 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 상기 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  102. 제 101항에 있어서,
    잠금 노드 중 하나의 입력 섹션에 의해, 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  103. 제 101항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  104. 제 103항에 있어서,
    적어도 하나의 계층 키 및 너트에 잠금 노드의 입력 섹션에 의해, 너트 내의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  105. 제 101항에 있어서,
    상기 너트의 적어도 하나의 잠금 노드의 상기 출력 섹션에서, 복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 카르나크 섹션을 저장하는 단계를 더 포함하고, 상기 적어도 하나의 카르나크 섹션은:
    적어도 하나의 카르나크 검토를 포함하고, 각각의 카르나크 검토는:
    너트의 적어도 하나의 섹션의 과거 검토,
    상기 너트의 과거 이벤트 로그,
    상기 카르나크 섹션에 대한 관심의 이벤트의 과거 이벤트 로그, 및
    적어도 하나의 이벤트가 트리거될 때 처리하도록 구성된 적어도 하나의 명령어를 포함하는 가능한 미래 이벤트 중 적어도 하나이고, 상기 적어도 하나의 명령어를 처리하는 결론은 적어도 하나의 구성가능한 이벤트를 일으키는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  106. 제 105항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    상기 너트;
    상기 시스템에 접근가능한 또 다른 데이터 저장 구조;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스;
    상기 적어도 하나의 페이로드 섹션;
    상기 적어도 하나의 카르나크 섹션; 및
    상기 시스템의 작동 시스템 중 적어도 하나 상에 작동하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  107. 제 105항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    시스템의 외부에 생성된 적어도 하나의 이벤트;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트 중 적어도 하나에 응답하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  108. 제 101항에 있어서,
    데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 상기 적어도 하나의 접근 역할 키를 조합하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  109. 제 105항에 있어서,
    적어도 하나의 카르나크 섹션은 암호화된 형태로 저장되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  110. 제 105항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 섹션에서 로그된 것과 로그되지 않은 것을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  111. 제 105항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 적어도 하나의 카르나크 검토에 세부의 레벨을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  112. 제 105항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 카르나크 검토의 유형을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  113. 제 112항에 있어서,
    카르나크 검토의 유형은:
    상기 너트를 수반하는 처리 이벤트를 수반하는 로그 엔트리;
    상기 너트에서 상기 데이터를 수반하는 과거 검토 엔트리;
    상기 너트 상에 작동하는 가능한 미래 이벤트 엔트리;
    처리 시스템에 접근가능한 또 다른 데이터 저장 구조 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 작동 시스템 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 외부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리 중 적어도 하나를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  114. 제 105항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 카르나크 검토를 생성하는 방법을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  115. 제 101항에 있어서,
    상기 적어도 하나의 프로세서에 의해, 상기 그룹 멤버의 상기 적어도 하나의 상응하는 키로 복호화되도록 구성된 각각의 그룹 멤버 너트에 분배하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  116. 제 78항에 있어서,
    각각의 카탈로그 객체 및 각각의 맵 객체는 데이터 구조이고, 상기 데이터 구조는:
    적어도 하나의 메모리에 저장된 복수의 잠금 노드 (너트), 상기 잠금 노드의 각각은:
    복수의 키 맵을 포함하는 입력 섹션, 상기 키 맵의 각각은 각기 복수의 1차 키 중 상응하는 하나로 암호화되고, 상기 키 맵은 복수의 메인 키를 포함하고;
    암호화된 유도 키를 포함하는 가변 잠금 섹션, 상기 암호화된 유도 키는 상기 입력 섹션에 적용된 상기 복수의 1차 키에 상응하는 상기 복수의 메인 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 및
    암호화된 데이터를 포함하는 출력 섹션을 포함하고, 상기 암호화된 데이터는 상기 유도 키로 복호화되도록 구성되고;
    상기 너트의 적어도 하나의 키홀 잠금 노드는 적어도 하나의 접근 속성 키를 포함하는 1차 키의 각각에 대해 키 맵을 포함하고, 상기 적어도 하나의 접근 속성 키는 상기 너트 내에 상응하는 상기 1차 키에 기반해서 역할 기반 접근 제어를 제공하도록 구성되고; 그리고
    상기 잠금 노드 중 적어도 하나는 상기 잠금 노드 중 또 다른 하나에 대한 1차 키인 출력 키를 제공하고; 그리고
    상기 적어도 하나의 메모리에 저장된 적어도 하나의 유연한 계위 객체 그래프(FHOG) 노드를 포함하고, 상기 적어도 하나의 FHOG 노드는:
    복수의 FHOG 키 맵을 포함하는 FHOG 입력 섹션, 상기 FHOG 키 맵의 각각은 각기 복수의 1차 FHOG 키 중 상응하는 하나로 암호화되고, 상기 FHOG 키 맵은 복수의 메인 FHOG 키를 포함하고;
    FHOG 암호화된 유도 키를 포함하는 FHOG 가변 잠금 섹션, 상기 FHOG 암호화된 유도 키는 상기 FHOG 입력 섹션에 적용된 상기 복수의 1차 FHOG 키에 상응하는 상기 복수의 메인 FHOG 키 상의 논리 연산으로부터 유도 키로 복호화되도록 구성되고; 그리고
    암호화된 참조 세트를 포함하는 FHOG 출력 섹션을 포함하고, 암호화된 참조 세트는 FHOG 유도 키로 복호화되도록 구성되고, 참조 세트는 너트를 포함하는 참조 기반 파일 시스템을 집합적으로 규정하는 너트의 각각에 대한 참조를 포함하고;
    각각의 키 맵은 적어도 하나의 접근 속성 키를 포함하고, 상기 입력 섹션은 적어도 하나의 암호화된 접근 역할 키를 더 포함하고, 상기 적어도 하나의 암호화된 접근 역할 키는 상기 적어도 하나의 접근 속성 키에 의해 복호화되도록 구성되고, 적어도 하나의 접근 역할 키는 데이터 상의 적어도 하나의 작동을 가능하게 하도록 구성되고, 상기 적어도 하나의 접근 역할 키는 특정 키 맵을 초래하는 지정된 1차 키와 연관된 허가에 기반하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  117. 제 116항에 있어서,
    디지털 자원에 대한 적어도 하나의 참조는 상기 디지털 자원과 연관된 적어도 하나의 속성을 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  118. 제 116항에 있어서,
    디지털 자원에 대한 적어도 하나의 참조는 또 다른 디지털 자원에 대한 적어도 하나의 참조를 참조하는 적어도 하나의 속성을 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  119. 제 116항에 있어서,
    상기 잠금 노드 중 하나의 상기 입력 섹션에 의해, 상기 잠금 노드의 또 다른 하나에 대한 적어도 하나의 접근 키를 제공하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  120. 제 116항에 있어서,
    상기 잠금 노드 중 하나에 대한 적어도 하나의 키 맵은 적어도 하나의 계층 키를 포함하고, 상기 적어도 하나의 계층 키는 하나의 잠금 노드와는 다른 적어도 하나의 잠금 노드에 대한 다른 키 맵을 복호화하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  121. 제 120항에 있어서,
    상기 너트에 잠금 노드의 상기 적어도 하나의 계층 키 및 상기 입력 섹션에 의해, 상기 너트 내의 어느 잠금 노드가 특정 지정된 1차 키에 대해 접근가능한지를 제어하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  122. 제 116항에 있어서,
    데이터 상에 허용된 모든 규정된 작동의 연합을 형성하도록 다른 제공된 적어도 하나의 접근 역할 키와 논리 연산에서 상기 적어도 하나의 접근 역할 키를 조합하는 단계를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  123. 제 116항에 있어서,
    상기 너트의 적어도 하나의 잠금 노드의 출력 섹션에서, 복수의 다른 어플리케이션을 가로질러 상기 너트의 접근에 관련된 데이터를 저장하는 적어도 하나의 카르나크 섹션을 저장하는 단계를 더 포함하고, 상기 적어도 하나의 카르나크 섹션은:
    적어도 하나의 카르나크 검토를 포함하고, 각각의 카르나크 검토는:
    상기 너트의 적어도 하나의 섹션의 과거 검토,
    상기 너트의 과거 이벤트 로그,
    상기 카르나크 섹션에 대한 관심의 이벤트의 과거 이벤트 로그, 및
    적어도 하나의 이벤트가 트리거될 때 처리하도록 구성된 적어도 하나의 명령어를 포함하는 가능한 미래 이벤트 중 적어도 하나이고, 상기 적어도 하나의 명령어를 처리하는 결론은 적어도 하나의 구성가능한 이벤트를 일으키는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  124. 제 123항에 있어서,
    상기 적어도 하나의 가능한 미래 이벤트는:
    상기 너트;
    시스템에 접근가능한 또 다른 데이터 저장 구조;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스;
    적어도 하나의 페이로드 섹션;
    상기 적어도 하나의 카르나크 섹션; 및
    상기 시스템의 작동 시스템 중 적어도 하나 상에 작동하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  125. 제 123항에 있어서,
    적어도 하나의 가능한 미래 이벤트는:
    시스템의 외부에 생성된 적어도 하나의 이벤트;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트 중 적어도 하나에 응답하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  126. 제 123항에 있어서,
    상기 적어도 하나의 카르나크 섹션은 암호화된 형태로 저장되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  127. 제 123항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 섹션에서 로그된 것과 로그되지 않은 것을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  128. 제 123항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 상기 적어도 하나의 카르나크 검토에 세부의 레벨을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  129. 제 123항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 생성하는 카르나크 검토의 유형을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  130. 제 129항에 있어서,
    상기 카르나크 검토의 유형은:
    상기 너트를 수반하는 이벤트를 처리하는 것을 수반하는 로그 엔트리;
    상기 너트에서 상기 데이터를 수반하는 과거 검토 엔트리;
    상기 너트 상에 작동하는 가능한 미래 이벤트 엔트리;
    처리 시스템에 접근가능한 또 다른 데이터 저장 구조 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 적어도 하나의 명령어의 상기 처리로부터 분리된 프로세스 상에 작동하는 가능한 미래 이벤트 엔트리;
    시스템의 작동 시스템 상에 작동하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 외부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리;
    상기 시스템의 내부에 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리; 및
    시간의 기간의 지남에 의해 생성된 적어도 하나의 이벤트에 응답하는 가능한 미래 이벤트 엔트리 중 적어도 하나를 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  131. 제 123항에 있어서,
    상기 너트에 저장된 적어도 하나의 파라미터는 카르나크 검토를 생성하는 방법을 제어하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  132. 제 116항에 있어서,
    상기 참조 세트는 너트 식별자의 목록을 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  133. 제 116항에 있어서,
    상기 참조 세트는 너트 페이로드 유형의 목록을 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  134. 제 116항에 있어서,
    상기 파일 시스템은 상기 너트의 물리적 위치와 독립적으로 규정되는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  135. 제 116항에 있어서,
    상기 1차 FHOG 키와 연관된 허가는 각각의 참조된 너트의 상기 1차 키와 연관된 상기 허가로부터 독립적인, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
  136. 제 116항에 있어서,
    상기 FHOG 출력 섹션은 상기 FHOG 유도 키로 복호화하도록 구성된 다른 암호화된 데이터를 더 포함하는, 적어도 하나의 루프백 도관을 작동시킴으로써 그룹에서 공유된 데이터 객체를 동기화하는 방법.
KR1020227038535A 2020-04-09 2021-03-26 너츠: 유연한 계위 객체 그래프 KR20230021642A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063007636P 2020-04-09 2020-04-09
US63/007,636 2020-04-09
PCT/US2021/024356 WO2021206934A1 (en) 2020-04-09 2021-03-26 Nuts: flexible hierarchy object graphs

Publications (1)

Publication Number Publication Date
KR20230021642A true KR20230021642A (ko) 2023-02-14

Family

ID=78006697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227038535A KR20230021642A (ko) 2020-04-09 2021-03-26 너츠: 유연한 계위 객체 그래프

Country Status (8)

Country Link
US (2) US11558192B2 (ko)
EP (1) EP4133397A4 (ko)
KR (1) KR20230021642A (ko)
AU (1) AU2021251041A1 (ko)
CA (1) CA3173624A1 (ko)
IL (1) IL296952A (ko)
TW (1) TW202145753A (ko)
WO (1) WO2021206934A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720663B2 (en) * 2014-09-15 2023-08-08 eData Platform, Corp. Login methodology
US11417155B2 (en) * 2019-09-10 2022-08-16 Ford Global Technologies, Llc On-board data request approval management
FR3110988B1 (fr) * 2020-05-29 2024-02-02 Sangle Ferriere Bruno Procédé et système pour mettre à jour des fichiers
US11815943B1 (en) * 2020-06-05 2023-11-14 State Farm Mutual Automobile Insurance Company Systems and methods for processing using directed acyclic graphs
US11693948B2 (en) * 2020-08-04 2023-07-04 International Business Machines Corporation Verifiable labels for mandatory access control
US20220141221A1 (en) * 2020-11-05 2022-05-05 T-Mobile Innovations Llc Smart Computing Device Implementing Network Security and Data Arbitration
CN112492580B (zh) * 2020-11-25 2023-08-18 北京小米移动软件有限公司 信息处理方法及装置、通信设备及存储介质
US20220286295A1 (en) * 2021-03-08 2022-09-08 Bloom Protocol, Llc Systems, methods, and storage media for selective graph-based disclosure of a computer data structure
US11349924B1 (en) * 2021-04-07 2022-05-31 Dell Products L.P. Mechanism for peer-to-peer communication between storage management systems
JP2022189454A (ja) * 2021-06-11 2022-12-22 株式会社日立製作所 ファイルストレージシステム、及び管理情報ファイル回復方法
GB2608437A (en) * 2021-07-02 2023-01-04 Worldr Tech Limited Systems and methods for implementing intelligent loading of data
US11936785B1 (en) 2021-12-27 2024-03-19 Wiz, Inc. System and method for encrypted disk inspection utilizing disk cloning techniques
US11888824B2 (en) * 2021-12-31 2024-01-30 Huawei Technologies Co., Ltd. Methods, apparatuses, and computer-readable storage media for secure end-to-end group messaging among devices using dynamic grouping
US11841859B1 (en) * 2022-01-28 2023-12-12 Options Clearing Corporation Distributed data storage framework
CN114866244B (zh) * 2022-03-14 2024-02-23 杭州云象网络技术有限公司 基于密文分组链接加密的可控匿名认证方法、系统及装置
CN114780083B (zh) * 2022-06-17 2022-10-18 之江实验室 一种知识图谱系统的可视化构建方法及装置
CN115061982B (zh) * 2022-08-15 2022-10-25 四川科瑞软件有限责任公司 基于案件自定义的关系图构建方法、系统、终端及介质
CN115580866B (zh) * 2022-12-07 2023-03-17 江苏云舟通信科技有限公司 无线通信数据同步加密系统

Family Cites Families (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870474A (en) 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
JPH08263438A (ja) 1994-11-23 1996-10-11 Xerox Corp ディジタルワークの配給及び使用制御システム並びにディジタルワークへのアクセス制御方法
US5715403A (en) 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US7690043B2 (en) 1994-12-19 2010-03-30 Legal Igaming, Inc. System and method for connecting gaming devices to a network for remote play
US5933501A (en) 1996-08-01 1999-08-03 Harris Corporation `Virtual` encryption scheme combining different encryption operators into compound-encryption mechanism
US6249866B1 (en) 1997-09-16 2001-06-19 Microsoft Corporation Encrypting file system and method
US6324650B1 (en) 1998-03-16 2001-11-27 John W.L. Ogilvie Message content protection and conditional disclosure
US6205549B1 (en) 1998-08-28 2001-03-20 Adobe Systems, Inc. Encapsulation of public key cryptography standard number 7 into a secured document
US6185684B1 (en) 1998-08-28 2001-02-06 Adobe Systems, Inc. Secured document access control using recipient lists
US6823068B1 (en) 1999-02-01 2004-11-23 Gideon Samid Denial cryptography based on graph theory
DE19906450C1 (de) 1999-02-16 2000-08-17 Fraunhofer Ges Forschung Verfahren und Vorrichtung zum Erzeugen eines verschlüsselten Nutzdatenstroms und Verfahren und Vorrichtung zum Entschlüsseln eines verschlüsselten Nutzdatenstroms
US6976168B1 (en) 1999-07-23 2005-12-13 Mcafee, Inc. System and method for adaptive cryptographically synchronized authentication
US6845449B1 (en) 1999-07-23 2005-01-18 Networks Associates Technology, Inc. System and method for fast nested message authentication codes and error correction codes
US20110208567A9 (en) 1999-08-23 2011-08-25 Roddy Nicholas E System and method for managing a fleet of remote assets
US20020184485A1 (en) 1999-12-20 2002-12-05 Dray James F. Method for electronic communication providing self-encrypting and self-verification capabilities
US20050015608A1 (en) 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
GB0023409D0 (en) 2000-09-22 2000-11-08 Integrated Silicon Systems Ltd Data encryption apparatus
US6862354B1 (en) 2000-09-29 2005-03-01 Cisco Technology, Inc. Stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key stream
US7010570B1 (en) 2000-10-16 2006-03-07 International Business Machines Corporation System and method for the controlled progressive disclosure of information
EP1334583A2 (en) 2000-10-26 2003-08-13 General Instrument Corporation Enforcement of content rights and conditions for multimedia content
WO2002051058A2 (en) 2000-12-19 2002-06-27 At & T Wireless Services, Inc. Synchronization of encryption in a wireless communication system
US20020178162A1 (en) * 2001-01-29 2002-11-28 Ulrich Thomas R. Integrated distributed file system with variable parity groups
US7136859B2 (en) 2001-03-14 2006-11-14 Microsoft Corporation Accessing heterogeneous data in a standardized manner
US7043637B2 (en) 2001-03-21 2006-05-09 Microsoft Corporation On-disk file format for a serverless distributed file system
US6981138B2 (en) 2001-03-26 2005-12-27 Microsoft Corporation Encrypted key cache
US7185205B2 (en) 2001-03-26 2007-02-27 Galois Connections, Inc. Crypto-pointers for secure data storage
AU2002307015A1 (en) 2001-03-27 2002-10-08 Microsoft Corporation Distributed, scalable cryptographic access control
US7359517B1 (en) 2001-10-09 2008-04-15 Adobe Systems Incorporated Nestable skeleton decryption keys for digital rights management
US20030074482A1 (en) 2001-10-16 2003-04-17 Christensen Erik B. Composable messaging protocol
US8059815B2 (en) 2001-12-13 2011-11-15 Digimarc Corporation Transforming data files into logical storage units for auxiliary data through reversible watermarks
US7137553B2 (en) 2001-12-31 2006-11-21 Digital Data Research Company Security clearance card, system and method of reading a security clearance card
US7487365B2 (en) 2002-04-17 2009-02-03 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
JP4111923B2 (ja) 2003-01-22 2008-07-02 株式会社リコー データ形式可逆変換方法、画像処理装置、データ形式可逆変換用プログラム及び記憶媒体
US7181016B2 (en) 2003-01-27 2007-02-20 Microsoft Corporation Deriving a symmetric key from an asymmetric key for file encryption or decryption
US7197512B2 (en) 2003-03-26 2007-03-27 Microsoft Corporation Type bridges
US7653876B2 (en) 2003-04-07 2010-01-26 Adobe Systems Incorporated Reversible document format
US7389529B1 (en) 2003-05-30 2008-06-17 Cisco Technology, Inc. Method and apparatus for generating and using nested encapsulation data
US7480382B2 (en) 2003-09-30 2009-01-20 Microsoft Corporation Image file container
US7421741B2 (en) 2003-10-20 2008-09-02 Phillips Ii Eugene B Securing digital content system and method
US20050086661A1 (en) * 2003-10-21 2005-04-21 Monnie David J. Object synchronization in shared object space
US7243157B2 (en) 2004-02-20 2007-07-10 Microsoft Corporation Dynamic protocol construction
JP2005259015A (ja) 2004-03-15 2005-09-22 Ricoh Co Ltd 文書開示装置、文書開示システム、プログラム及び記憶媒体
US20050213511A1 (en) 2004-03-29 2005-09-29 Merlin Mobile Media System and method to track wireless device and communications usage
JP2005341316A (ja) 2004-05-27 2005-12-08 Sony Corp 情報処理システムおよび方法、情報処理装置および方法、並びにプログラム
US7587433B2 (en) 2004-06-01 2009-09-08 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US8306920B1 (en) 2004-07-28 2012-11-06 Ebay Inc. Method and system to securely store customer data in a network-based commerce system
US7711120B2 (en) 2004-07-29 2010-05-04 Infoassure, Inc. Cryptographic key management
IL164571A0 (en) 2004-10-14 2005-12-18 Yuval Broshy A system and method for authenticating and validating the validating the linkage between input filesand output files in a computational process
US7441185B2 (en) 2005-01-25 2008-10-21 Microsoft Corporation Method and system for binary serialization of documents
WO2006103777A1 (ja) 2005-03-30 2006-10-05 Fujitsu Limited 構造化データ変換方式
US8694788B1 (en) 2005-04-29 2014-04-08 Progressive Casualty Insurance Company Security system
US8832047B2 (en) 2005-07-27 2014-09-09 Adobe Systems Incorporated Distributed document version control
US7945784B1 (en) 2005-08-19 2011-05-17 Adobe Systems Incorporated Method and system to perform secret sharing
JP2007142591A (ja) 2005-11-15 2007-06-07 Matsushita Electric Ind Co Ltd 暗号管理方法
US7593548B2 (en) 2005-12-15 2009-09-22 Microsoft Corporation Secure and anonymous storage and accessibility for sensitive data
US20070177583A1 (en) 2006-01-31 2007-08-02 Microsoft Corporation Partial message streaming
US8561127B1 (en) 2006-03-01 2013-10-15 Adobe Systems Incorporated Classification of security sensitive information and application of customizable security policies
US20080248782A1 (en) 2006-04-07 2008-10-09 Mobitv, Inc. Providing Devices With Command Functionality in Content Streams
CA2546148A1 (en) 2006-05-09 2007-11-09 Nikolajs Volkovs Method, system and computer program for polynomial based hashing and message authentication coding with separate generation of spectrums
US20080091606A1 (en) 2006-10-12 2008-04-17 William Grecia Proprietary encapsulated session container with embedded features for a post transferred option for electronic commerce along with a system for distribution and user access
US20080097786A1 (en) 2006-10-18 2008-04-24 Rohit Sachdeva Digital data security in healthcare enterprise
US8219821B2 (en) 2007-03-27 2012-07-10 Netapp, Inc. System and method for signature based data container recognition
US7779139B2 (en) 2007-04-30 2010-08-17 Microsoft Corporation Normalization of binary data
US8656159B1 (en) 2007-10-11 2014-02-18 Adobe Systems Incorporated Versioning of modifiable encrypted documents
JP4818345B2 (ja) 2007-12-05 2011-11-16 イノヴァティヴ ソニック リミテッド セキュリティーキー変更を処理する方法及び通信装置
US7996672B1 (en) 2007-12-05 2011-08-09 Adobe Systems Incorporated Support for multiple digital rights management systems for same content
US8145794B2 (en) 2008-03-14 2012-03-27 Microsoft Corporation Encoding/decoding while allowing varying message formats per message
US8621222B1 (en) 2008-05-30 2013-12-31 Adobe Systems Incorporated Archiving electronic content having digital signatures
US8826005B1 (en) 2008-08-21 2014-09-02 Adobe Systems Incorporated Security for software in a computing system
US9996567B2 (en) 2014-05-30 2018-06-12 Georgetown University Process and framework for facilitating data sharing using a distributed hypergraph
US20100174664A1 (en) 2009-01-05 2010-07-08 Blackrock Institutional Trust Company, N.A. ETF Trading in Secondary Market Based on Underlying Basket
US20100173610A1 (en) 2009-01-05 2010-07-08 Qualcomm Incorporated Access stratum security configuration for inter-cell handover
US8978091B2 (en) 2009-01-20 2015-03-10 Microsoft Technology Licensing, Llc Protecting content from third party using client-side security protection
US10169599B2 (en) 2009-08-26 2019-01-01 International Business Machines Corporation Data access control with flexible data disclosure
US8831228B1 (en) 2009-08-28 2014-09-09 Adobe Systems Incorporated System and method for decentralized management of keys and policies
US8468345B2 (en) 2009-11-16 2013-06-18 Microsoft Corporation Containerless data for trustworthy computing and data services
EP2348450B1 (en) 2009-12-18 2013-11-06 CompuGroup Medical AG Database system, computer system, and computer-readable storage medium for decrypting a data record
US8397068B2 (en) 2010-04-28 2013-03-12 Microsoft Corporation Generic file protection format
WO2012047756A1 (en) 2010-10-04 2012-04-12 Avocent System and method for monitoring and managing data center resources incorporating a common data model repository
HU230908B1 (hu) 2011-03-25 2019-02-28 Tresorit Kft. Eljárás és rendszertechnikai elrendezés csoportmegosztások kezelésére elosztott adattárolási, különösen P2P környezetben
US9077525B2 (en) 2011-06-24 2015-07-07 Microsoft Technology Licensing, Llc User-controlled data encryption with obfuscated policy
US9378380B1 (en) 2011-10-31 2016-06-28 Reid Consulting Group System and method for securely storing and sharing information
US9390228B2 (en) 2011-10-31 2016-07-12 Reid Consulting Group, Inc. System and method for securely storing and sharing information
JP5917713B2 (ja) 2011-12-30 2016-05-18 インテル・コーポレーション クラウドベースのリアルタイムappプライバシーダッシュボード
US9215223B2 (en) 2012-01-18 2015-12-15 OneID Inc. Methods and systems for secure identity management
US8739308B1 (en) 2012-03-27 2014-05-27 Amazon Technologies, Inc. Source identification for unauthorized copies of content
US9116906B2 (en) 2012-06-12 2015-08-25 Sap Se Centralized read access logging
EP2867791A4 (en) 2012-07-02 2016-02-24 Intel Corp ASYNCHRONOUS DISTRIBUTED COMPUTER-BASED SYSTEM
US9285981B1 (en) 2012-07-16 2016-03-15 Wickr Inc. Discouraging screen capture
US20140195804A1 (en) 2012-10-12 2014-07-10 Safelylocked, Llc Techniques for secure data exchange
US8972750B2 (en) 2012-12-19 2015-03-03 Adobe Systems Incorporated Method and apparatus for securing transfer of secure content to a destination
US9397830B2 (en) 2012-12-30 2016-07-19 Raymond Richard Feliciano Method and apparatus for encrypting and decrypting data
US20140245025A1 (en) * 2013-02-22 2014-08-28 Spideroak Inc. System and method for storing data securely
US10769296B2 (en) 2013-12-10 2020-09-08 Early Warning Services, Llc System and method of permission-based data sharing
US9767317B1 (en) 2014-03-25 2017-09-19 Amazon Technologies, Inc. System to provide cryptographic functions to a markup language application
GB2513260B (en) 2014-06-27 2018-06-13 PQ Solutions Ltd System and method for quorum-based data recovery
US20160028735A1 (en) 2014-07-28 2016-01-28 Max Planck Gesellschaft zur Förderung der Wissenschaften e.V. Private analytics with controlled information disclosure
AU2015346644A1 (en) * 2014-11-12 2017-06-29 Reid Consulting Group System and method for securely storing and sharing information
US9129095B1 (en) 2014-12-19 2015-09-08 Tresorit, Kft Client-side encryption with DRM
US9871772B1 (en) 2015-03-17 2018-01-16 The Charles Stark Draper Laboratory, Inc. Cryptographic system for secure command and control of remotely controlled devices
WO2016154001A1 (en) 2015-03-20 2016-09-29 Rivetz Corp. Automated attestation of device integrity using the block chain
US10515409B2 (en) 2016-03-23 2019-12-24 Domus Tower, Inc. Distributing work load of high-volume per second transactions recorded to append-only ledgers
US10303673B2 (en) * 2015-05-11 2019-05-28 Apple Inc. Hierarchical data storage
US10613938B2 (en) 2015-07-01 2020-04-07 Actifio, Inc. Data virtualization using copy data tokens
US10243744B2 (en) 2016-06-21 2019-03-26 The King Abdulaziz City For Science And Technology Residue message authentication code
CN117692170A (zh) * 2016-09-15 2024-03-12 美商纳兹控股有限责任公司 通信方法和设备、折叠数据的方法和系统以及计算机
US11341259B2 (en) 2018-12-12 2022-05-24 Spideroak, Inc. Managing group authority and access to a secured file system in a decentralized environment
US11341261B2 (en) 2019-04-05 2022-05-24 Spideroak, Inc. Integration of a block chain, managing group authority and access in an enterprise environment

Also Published As

Publication number Publication date
AU2021251041A1 (en) 2022-10-27
US20210320794A1 (en) 2021-10-14
EP4133397A1 (en) 2023-02-15
US20230171101A1 (en) 2023-06-01
IL296952A (en) 2022-12-01
WO2021206934A1 (en) 2021-10-14
CA3173624A1 (en) 2021-10-14
TW202145753A (zh) 2021-12-01
US11558192B2 (en) 2023-01-17
EP4133397A4 (en) 2024-04-10

Similar Documents

Publication Publication Date Title
US11558192B2 (en) NUTS: flexible hierarchy object graphs
AU2022200795B2 (en) Encrypted userdata transit and storage
EA040905B1 (ru) Зашифрованный транзит и хранение пользовательских данных
IL293412B1 (en) Transfer and storage of encrypted user data
NZ791988A (en) Encrypted userdata transit and storage